Cobaltstrike

news2024/12/12 6:58:53

在这里插入图片描述

Cobaltstrike

  • 資源
    • JFrame 图形用户界面
    • mxGraph
  • 数据请求
  • stageless beacon http通信协议 数据加密过程分析
  • Scalar 运行时
  • Aggressor Script Event Queue 客户端通讯
  • 登录验证 用户管理
  • 外部监听
    • 添加監聽
  • Beacon 内容构建 PE解析
  • Payload Generator负载生成Dialog动作
    • 选择Listener动作
    • Generate 动作
    • 解析PE(Portable Executable)文件格式
    • powershell 生成
  • DNS相关
  • Profile 相关
  • 杂项
    • 图标相关
  • checksum
  • Cobalt strike渗透测试先进威胁战术
  • Cobalt Strike 介绍
    • 使用注意事项
    • 功能集架构
  • credentials
  • Port Scan
      • 信息收集模块System Profiler
      • user-exploitation工具
      • 报告功能
    • 安装和更新
      • Cobalt Strike 系统要求
        • java环境
      • 运行「更新」程序
    • 团队服务器与客户端
      • Linux下启动teamserver和客户端
      • Windows下启动teamserver 和客户端
  • 分布式和团队行动
    • 攻击模块 生成木马
    • 客户端靶机上线
    • 用户接口
      • 工具条
      • 会话和目标以图形可视化可视化展示
        • 目标表
    • 用户驱动攻击
      • 获取主机的桌面截图
      • 键盘记录
      • 端口扫描
      • 文件管理
      • Virtual Network Computing 远程 VNC
      • 浏览器代理
      • 任务处理
    • 插件加载-权限提升
    • 插件脚本管理器
      • Ladon
      • 添加提权脚本
    • sleep 指令间隔时间
    • 命令执行
    • 目标信息总结表(自动记忆保存)
    • 用mimikatz抓取主机上的密码信息
    • 凭证信息
    • 查看主机的文件和文件夹结构信息
    • 横向移动
    • argue参数污染
  • Listener(监听器)
    • Foreign Listeners (外部监听器)
    • Pivot Listeners
  • Beacon
    • Beacon 的安全特性
      • 生成 Beacon 负载的两种方式
      • stager下载stage
      • stage准备check in
      • 从Team Server下载任务
      • 返回任务结果
    • Beacon的工作原理
    • Beacon 的生成模式
      • stage (有阶段)
      • stageless (无阶段)
    • Beacon 的通信模式
      • 异步式通信:
      • 交互式通信(Sleep 0):
    • Beacon 的分类
      • HTTP Beacon 和 HTTPS Beacon
      • SMB Beacon
        • 隐蔽点对点通信
        • 作为 Payload 通信
    • 派生一个 SMB Beacon
      • DNS Beacon
        • DNS 的查询方式
          • 迭代查询:
          • 递归查询:
      • TCP Beacon
  • C2 profile / C2 拓展文件
    • Profile包含内容
      • 语句与参数
      • 语句
      • 编码与加密
      • 伪造与混淆
      • 调试运行 C2lint
    • 调用方法
    • Malleable C2 Profile
      • 配置示例
        • 使用 Profile 文件修改Beacon内存特征
        • 修改HTTP流量特征
  • 消除流量特征 隐匿防溯源
    • 基础特征
      • TeamServer默认启动端口50051
      • http请求
  • cs默认profile
  • C2 拓展文件 实例
      • https ssl证书指纹信息
  • 生成新的SSL证书文件
      • dns异常返回值
    • 强特征
      • chechsum8
      • ja3/ja3s
  • CDN+域前置+云函数
    • 服务器前置
  • 英文名词翻译对照表
  • 命令快查
  • beacon命令
  • 快捷键
  • UDRL
  • Beacon 对象文件 BOF
    • go函数添加用户
    • 动态函数
    • 入口
  • CrossC2 linux 上线支持
  • 红队Swing-Cobalt strike二次开发专题
  • 原版 Cobalt Strike 4.5
    • jar包反编译破解
  • "cobaltstrike.auth"许可证
    • license 白嫖
    • 拔掉暗桩
      • exit函数都注释掉
      • 初始环境效果
  • Cobalt strike_Beacon重构
  • Beacon分析
    • beacon payload的加载过程
      • beacon loader
        • 静态分析
    • stageless Beacon 内存特征
      • 内存段是rwx权限
      • 内存中有 beacon 字符串
      • 内存中有 ReflectiveLoader 字符串
    • stageless Beacon https 生成分析
      • 选择payload
      • 点击保存
      • 上线&心跳get请求
      • teamserver 处理请求
    • Beacon C2Profile
      • 客户端分析
        • exportBeaconStage 方法
      • Beacon 端分析
      • 展示图
    • Beacon 结果回传流程分析
      • Beacon 接收与处理
      • 结果回传
  • SharpBeacon
  • 重构后 4.x - Beacon 适配的功能
    • windows平台
    • linux和mac平台
    • C2profile
  • 重构思路
    • 跨平台
    • 功能免杀
    • 代码部分
      • sysinfo包
      • packet包
      • config.go
      • 命令的执行
      • shell、run、execute
        • powershell
      • powerpick命令
      • powershell-import
      • execute-assembly
  • 堆内存加密
  • 字符集
  • 参考资料 文章 与 资源

資源


ssh_help.txt
ssh_details.txt
bhelp.txt
bdetails.txt
default.rpt
ua.txt



.cobaltstrike.beacon_keys
CobaltstrikePro.store
default.profile
sleepmask.x86.o 
ssl.store
beacon.dll
beacon.x64.dll
dlls.x86.txt
dlls.x64.txt
httpsstager64.bin
artifact64.exe
sleepmask.x64.o
template.x64.ps1

JFrame 图形用户界面

Swing工具包中的一个顶级容器,通常用于创建窗口。

public class WindowsExecutableDialog implements DialogListener, SafeDialogCallback {
   
   protected JFrame dialog = null;

BufferedImage bufferedImage = ImageIO.read(CommonUtils.resource(string_res));

mxGraph


import org.example.graph.Route;



this.component = new _B(this.graph);
 protected NetworkGraph graph = new NetworkGraph();

数据请求

public TeamSocket(Socket socket) throws Exception
public Object readObject()
public void writeObject(Object object)

class Request implements Serializable


public Reply(String call, long  callback_ref, Object reply)


ServerUtils.getSocks(this.resources).deregister(this);
public static BeaconSocks getSocks(Resources resources)
this.tunnels.deregister(manageUser);
BeaconTunnelClient beaconTunnelClient = (BeaconTunnelClient)iterator.next();

stageless beacon http通信协议 数据加密过程分析

public static AsymmetricCrypto beacon_asymmetric()

cs具体的通信包结构 实现beacon。
rsa 公私钥
序列化存储在.cobaltstrike.beacon_keys 里

public static KeyPair generateKeys()
public AsymmetricCrypto(KeyPair var1) throws NoSuchAlgorithmException, NoSuchPaddingException


public class QuickSecurity extends BaseSecurity
public abstract class BaseSecurity

Scalar 运行时

public class Scalar implements Serializable
public class ObjectValue implements ScalarType
public class NullValue implements ScalarType

Aggressor Script Event Queue 客户端通讯

public static AsymmetricCrypto beacon_asymmetric()


PivotGraph pivotGraph = new PivotGraph(this.client);
return this.function.evaluate(fname, scriptInstance, stack);

Scalar scalar = this.callme.evaluate(this.function, this.getScriptEnvironment().getScriptInstance(), this.getScriptEnvironment().getCurrentFrame());

 scalar = this.execute();




public Scalar evaluate(ScriptEnvironment scriptEnvironment)
functionCallRequest.CallFunction();



public void run()
抓取 事件
_A grabEvent = this.grabEvent();

登录验证 用户管理


public ManageUser(TeamSocket teamSocket, Resources resources, Map map)

if (ManageUser.this.client.isConnected())

this.mine = Thread.currentThread();
Request request = (Request)this.teamSocket_client.readObject();
public void process(Request request) throws Exception


外部监听

payload_str.equals("windows/foreign/reverse_http")
CommonUtils.print_warn("Listeners: listeners.remove: isBeacon: "
public class Listeners implements ServerHook
public void call(Request request, ManageUser manageUser)
ServerHook serverHook = (ServerHook)this.calls.get(request.getCall());
serverHook.call(request, a.manageUser);


this.resources.broadcast("listeners", this.buildListenerModel(), true);
dll_path =  commonUtils.systemRootPath + "beacon.dll";

protected byte[] patchSleepMask(byte[] var1, String s) 
beaconDLL.originalDLL = this.exportBeaconStage(i, s, b, bb, dll_path);



添加監聽

byte[] bytes = ArtifactUtils.XorEncode(this.listener.export("x86"), "x86");

return beaconPayload.exportBeaconStageHTTP(this.getPort(), this.getCallbackHosts(), false, false);
if (!"windows/beacon_http/reverse_http".equals(select_payload_str)





public static boolean validate(Map map)
this.client.getConnection().call("listeners.create", CommonUtils.args(var3, this.options), this);
if (request.is("listeners.create"
this.resources.call(manageUser, request.derive("beacons.start", CommonUtils.args(map)));



public Scalar evaluate(String s, ScriptInstance scriptInstance, Stack stack) {
   

s = commonUtils.systemRootPath + "sleepmask." + this.arch + ".o"; 
webServer = new WebServer(i, true, profile.getSSLKeystore(), profile.getSSLPassword());
((BeaconSetupC2)object).start();
byte[] bytes = SleevedResource.readResource(s);


public WebServer getWebServer(int port) throws IOException
this.put("NumberOfRvaAndSizes", (long)this.readInt());
protected void parse32() throws Exception

public class PEParser



BeaconDLL beaconDLL = this.export(x86orx64, 0, (AggressorClient)null);
public BeaconDLL export(String x86orx64, int i, AggressorClient aggressorClient)
BeaconPayload beaconPayload = new BeaconPayload(this, aggressorClient, x86orx64, i);
protected byte[] patchSleepMask(byte[] patchSleepMask_bytes, String s) {
   
byte[] beacon_sleep_bytes = this.Beacon_sleep_bytes(s);
String beacon_sleep_mask_str = this.aggressorClient.getScriptEngine().format("BEACON_SLEEP_MASK", stack);

Beacon 内容构建 PE解析

public class BeaconConstants



DataDirectory.1.VirtualAddress
DataDirectory.0.VirtualAddress


 this.put("Import." + i + ".RVAFunctionAddressList", readInt_long);

ReflectiveLoaderInfo reflectiveLoaderInfo = ReflectiveDLL.getReflectiveLoaderInfo(peParser, bytes);

getReflectiveLoaderInfo

Payload Generator负载生成Dialog动作



public void actionPerformed
private static Scalar runCode
protected Scalar execute()
public Scalar evaluate
(new PayloadGeneratorDialog(this.client)).show();
sc_listener_stagers("listener", "Listener:", this.client);

JTextField
setEditable(false) 方法,将文本字段设置为不可编辑
JButton 添加一个 ActionListener

选择Listener动作

public static ScListenerChooser ListenersWithStagers
protected ScListenerChooser
public static List getListenersWithStagers

Generate 动作

JButton jButton = this.action_noclose(button_name_str);



public JButton action_noclose(final String button_name_str) 
new Thread(new Runnable()
dialogListener.dialogAction(actionEvent, DialogManager.this.options);



public void dialogAction(ActionEvent actionEvent, Map map)
this.stager = scListener.getPayloadStager(is_64 ? "x64" : "x86");
return Stagers.shellcode(this, this.getPayload(), bit_str);

public static byte[] shellcode(ScListener scListener, String payload_str, String bit_str)
GenericStager genericStager = stagers.resolve(scListener, payload_str, bit_str);


   public byte[] generate() {
   
      try {
   
         InputStream inputStream = CommonUtils.resource(this.getStagerFile());
         byte[] bytes = CommonUtils.readAll(inputStream); 


    public static final byte[] readAll(InputStream inputStream)
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(inputStream.available());

public String getStagerFile()
src\main\java\org\example\stagers\httpstager64.bin

解析PE(Portable Executable)文件格式

public class PEParser


this.report("header." + string);


int hereint = this.here();

   public int here() throws IOException {
   
      return this.original.length - this.content.available();
   }

powershell 生成

public String PowerShellCompress(byte[] bytes)

DNS相关

Profile 相关

Profile profile = Loader.LoadProfile( "default.profile");
Loader loader = new Loader(profilename_str, stringBuffer.toString(), profile);
profile.addParameter(".sleeptime", "60000");




public ListenerConfig(Profile profile,ScListener scListener)

profile.getInt(".watermark");

杂项

DialogUtils.showError
 CommonUtils.print_info
 MudgeSanity.logException
 MudgeSanity.systemDetail

public static String getServerPassword(Resources resources, String nick)


public boolean isRegistered(String str)

public class LoggedEvent implements Serializable, Scriptable, Transcript, Loggable, Informant

图标相关

硬编码

package org.example.Aggressor.windows;

public class Processes extends AObject implements Callback, TablePopup, TableModelListener


checksum

public static long checksum8



public long checksum()

Cobalt strike渗透测试先进威胁战术

在这里插入图片描述

Cobalt Strike 介绍

Cobalt Strike 是一款 美国Red Team开发的 商业GUI框架式 优秀的渗透测试工具协作平台 简称CS

主要用于执行有目标的红队行动攻击和模拟高级威胁者对手的后渗透行动。

可以利用网络漏洞获取主机权限后、从一个强大的图形界面控制所有的活动。

Cobalt Strike 前身名为 Armitage(一个MSF的社区版图形化界面工具)
因此可见,Cobalt Strike 与 Metasploit 的兼容性十分良好.
Cobaltstrike大家可以理解其为Armitage的商业版。

Metasploit(MSF)是一个免费的、开源的可下载的框架,旨在方便渗透测试,它是由 Ruby 语言编写的模板框架,具有很好的扩展性,
便于渗透测试人员开发、使用和定制工具模板

早期版本CobaltSrtike依赖Metasploit框架,
而现在Cobalt Strike已经不再使用MSF而是作为单独的平台使用.

在这里插入图片描述


扩展性很强,整合各种平台,独立的框架,不依赖于其他框架提供了丰富的第三方接口,
可以添加私人定制的自定义功能插件 来丰富CS的功能以及攻击效率。



在这里插入图片描述
①Cobalt Strike可以使用AggressorScripts脚本来加强自身,使其更加丰满,能够扩展菜单栏,视图Beacon命令行,提权脚本等;
②Cobalt Strike通信配置文件是Malleable C2,你可以修改CS的通讯特征,Beacon payload的一些行为;
③Cobalt Strike可以引用其他的通讯框架ExternalC2
ExternalC2是由Cobalt Strike提出的一套规范/框架,它允许黑客根据需要对框架提供的默认HTTP(S)/DNS/SMB C2 通信通道进行扩展。

 拥有多种协议主机上线方式
 Cobalt Strike可以生成不同类型的shellcode,用于与目标系统建立通信和控制。 

 核心组件是 Beacon,一个可以在内存中执行的动态链接库(DLL)。

    它集成了
    多模式端口监听、
    远程控制、
    信息收集(获取一些系统信息,比如系统版本,Flash版本,浏览器版本)、
    服务扫描、
    内网渗透、
    快速内网提权、
    自动化溢出、
    java执行(自动检测Java版本并利用已知的exploits绕过security)、
    端口转发、
    横向移动、
    进行长久权限维持、
    凭据导出、
    socket代理、
    数据渗出、
    office攻击、
    生成exe、powershell恶意木马文件、
    文件捆绑、
    托管网页攻击、
    浏览器攻击、
    网站克隆(可记录受害者提交的数据)、
    发起社工钓鱼攻击、等功能。



可以调用Mimikatz等其他知名工具并且可以作为团队服务使用
因此广受网络安全人员喜爱。

项目官网:https://www.cobaltstrike.com

使用注意事项


    
    流量特征很明显,
	蓝队成员在流量中发现相关特征   那么基本也就宣告了个权限的丢失,
    而且还有可能被疏远反制。
    
    需要对CS进行一些修改
    和对VPS的地址进行保护,
    
    尽可以降低被发现后造成权限丢失和被溯源反制的事情发生概率,
    加大蓝队的溯源难度。

功能集架构

在这里插入图片描述

credentials

logonpasswords 在view——>credentials里可以看到抓取到的账号密码

Port Scan

portscan 169.254.95.0-169.254.95.255 1-1024,3389,5000-6000 arp/icmp 1024

Intrumentation & Telemetry  「终端行为采集 Agent & 云端行为分析引擎」
Instrumentation 
指的应该是安装在目标主机上的各类日志收集与监控类工具
Telemetry 
指的应该是将这些监控类工具所产出的各位监测日志进行归一化、汇聚到一个统一分析引擎并等待引擎的研判结果这类的过程。


 

一场深思熟虑的对目标的攻击始于
侦查。

信息收集模块System Profiler

是一个 web 应用
用于客户端的攻击面。从侦查流程中收集的信息会帮助你分析以及做出最好的选择。

进行的信息收集主要已钓鱼为主,利用一个钓鱼网站,
当点击了之后会根据useragent等传输信息来判断一些基础的信息,记录点击者ip地址和目标。


 





在这里插入图片描述

在这里插入图片描述

Local URI不需要改动
Local Host写成服务器ip地址
Local Port可以更改,
Redirect URL是代表重定向到另一个网页,以便于更好地隐藏自己
在这里插入图片描述
这里可以查看配置过的 网址
在这里插入图片描述
查看日志
在这里插入图片描述在这里插入图片描述
在这里插入图片描述


武器化。
将一个后渗透 payload 与一个文档或在目标上执行
此 payload 的漏洞利用相结合。
Cobalt Strike 提供将普通的文档转为武器化 Artifacts 的选项。
Cobalt Strike 还提供以多种形式导出后渗透payload、Beacon 的选项,可以结合此工件集以外的 artifacts 使用。


投递。
使用 Cobalt Strike 的网络钓鱼工具 
武器化文档发送到目标网络中的一个或多个人。
Cobalt Strike 的网络钓鱼工具将保存的电子邮件重新用于像素级完美的钓鱼。

异步通信。
使用 Cobalt Strike 的 Beacon 来控制你的目标网络。
这个后渗透 payload 使用一种低频次且慢速的模式,高级威胁中的恶意软件常使用这种模式。 
Beacon 会通过 DNSHTTPHTTPS等方式回连(团队服务器)。
Beacon 还可以经过常见的代理配置回连至多个主机来避免阻塞。

想要检验目标的攻击溯源分析能力,
可以使用 Beacon 的 C2 扩展语言功能。
此功能中,通过对Beacon 重新编程、让流量看上去像一些知名的恶意软件或者融入正常流量。

https://github.com/rsmudge/Malleable-C2-Profiles/tree/master/crimeware
GitHub 开源 C2 拓展文件项目中的 crimeware 文件夹,就是通过配置 C2 拓展文件、让 Beacon 的流量特征看上去像Zeus、Asprox 等知名恶意软件。可以达到掩盖、伪装 Beacon 行动的目的。

在这里插入图片描述

Beacon 优越的自动化
基于命名管道和 TCP sockets 之上的对等通信模式可帮助攻击者进入受害者网络,
然后继续进行主机发现
抓取信任关系和证书、密码哈希、访问令牌和 Kerberos 票据等凭据进行横向移动。
 




user-exploitation工具

来展示有实际意义的业务风险。

Cobalt Strike 的工作流程使得在受害系统内部署键盘记录器或截屏工具非常简单。

使用 Browser Pivoting 去获取到受害目标Internet Explorer 上记录的网站的访问权限。
这个 Cobalt Strike 独有的技术在大多数站点都可以生效,并且可以绕过双因素验证。

在这里插入图片描述

报告功能

Cobalt Strike 的报告功能重建了 Cobalt Strike 客户端的参与度。
可以提供给网络管理员一个活动时间表,这样他们可以在他们的监控设备(比如一些流量监测系统)中发现攻击痕迹。
可以将 Cobalt Strike生成的高质量报告作为独立报告提交给客户或将其用作正式文档的附录。

贯穿上面的所有步骤,你需要去了解目标环境、目标防御情况,以及在资源有限的前提下选择最好的方
法来达成后渗透目标。

这个过程就是规避。

提供开箱即用的规避方案不是 Cobalt Strike 的目标。
Cobalt Strike 提供的是极大的灵活性,在配置和执行攻击行动的选项等方面都具有很大的灵活性,这使
得此软件适用于各种环境和目标。

Cabaltstrike3.13版本


3.13版本文件架构如下



│ Scripts 用户安装的插件 
│ Log 每天的日志 
│ c2lint 检查profile的错误异常 
│ cobaltstrike 
│ cobaltstrike.jar 客户端程序 
│ icon.jpg LOGO 
│ license.pdf 许可证文件 
│ readme.txt 
│ releasenotes.txt 
│ teamserver 服务端程序 
│ update 
│ update.jar 更新程序 
└─third-party 第三方工具,里面放的vnc dll

在这里插入图片描述

安装和更新

Strategic Cyber 责任有限公司发行了适用于 Windows、Linux 和 MacOS X 的 Cobalt Strike 软件包。
要安装 Cobalt Strike,只需将其存档解压到你的操作系统上。

Cobalt Strike 系统要求

java环境

Oracle Java 1.8,Oracle Java 11, 或 OpenJDK 11。
如果你的系统上装有防病毒产品,请确保在安装 Cobalt Strike 前将其禁用。

开启Cobaltstrike teamserver和运行GUI界面均需要Java环境。

运行「更新」程序

发行套件包含 Cobalt Strike 启动器、支持文件和更新程序。
不包含 Cobalt Strike 程序本身。你必须运行更新程序才能下载 Cobalt Strike 产品。
在这里插入图片描述

使用你的 license key 更新你的团队服务器和客户端软件这两个组件。
Cobalt Strike 按单个用户授权。团队服务器不需要单独的 license。

团队服务器与客户端

CS组件分为客户端(Client)与服务端(Teamserver)。
cobaltstrike.jar是客户端,teamserver是服务端

服务器组件,也就是团队服务器,是 Beacon payload 的控制器,
也是 社会工程功能的托管主机。
团队服务器还存储由 Cobalt Strike 收集的数据,并管理日志记录。
必须在受支持的 Linux 系统上运行。

服务端是一个,客户端可以有多个
团队可进行分布式协团操作。
可以让多个攻击者同时连接到团体服务器,共享信息。

要启动一个团队服务器,使用 Cobalt Strike Linux 安装包中的 teamserver 脚本文件。

当团队服务器启动,
它会发布团队服务器的 SSL 证书的 SHA256 hash。你需要给你的团队成员分发这个 hash。

当你的团队成员连接团队服务器时,在身份验证至团队服务器前、他们的 Cobalt Strike 客户端会询问他们是否承认这个 hash 。
这是抵御中间人攻击的重要保护措施。

Linux下启动teamserver和客户端

①cd切换到Cobaltstrike目录下

②执行命令 启动服务器端

 chmod +x teamserver

运行 teamserver


  ./teamserver <host/teamserver_ip> <teamserver_password> [/path/to/c2.profile] [YYYY-MM-DD] 
团队服务器的启动命令包含两个必填的参数和两个选填的参数。
第一个必选参数是团队服务器的外部可达 IP 地址。

Cobalt Strike 使用这个值作为它的功能使用的默认主机地址。

第二个必选参数是密码,你的团队成员将使用此密码从自己 Cobalt Strike 客户端登录认证连接至 Cobalt Strike 团队服务器。

第三个参数是选填的,这个参数指定一个「C2 拓展文件」



第四个参数也是选填的。
此参数以 YYYY-MM-DD 的日期格式指定结束日期。

团队服务器会将这个结束日期嵌入到它生成的每个 Beacon stage 中。
Beacon payload 在此日期后将拒绝运行,并且在此日期后
如果这个 Beacon payload 醒来也会自动结束(对应 Beacon 会话中的 exit 选项)。
 

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

③执行如下命令即可看到GUI界面

Javaw -Dfile.encoding=UTF-8 
-javaagent:CobaltStrikeCN.jar 
-XX:ParallelGCThreads=4 -XX:+AggressiveHeap 
-XX:+UseParallelGC -jar cobaltstrike.jar

在这里插入图片描述

Windows下启动teamserver 和客户端

①下载keytool.exe并将其复制到Cobaltstrike文件夹下,链接:

http://www.onlinedown.net/soft/614989.htm

②切换到Cobaltstrike目录执行如下命令:

Keytool.exe 
-keystore ./cobaltstrike.store 
-storepass 123456 
-keypass 123456 
-genkey 
-keyalg RSA 
-alias cobaltstrike
-dname "CN=Major Cobalt Strike, OU=AdvancedPenTesting, O=cobaltstrike, L=Somewhere, S=Cyberspace, C=Earth"

③执行命令

./teamserver.bat 8.8.8.8 123456


8.8.8.8为你的服务器外网IP123456为Coabltstrike的客户端密码。

在这里插入图片描述

这样,服务端的Cobalt Strike部署完成。

④双击cobaltstrike.bat,连接对话框填写服务器外网IP和teamserver密码,即可登入:

在这里插入图片描述

在 Host (主机)字段指定你的团队服务器的地址。
团队服务器 默认开启50050端口 ,用来给客户端连接使用,
没有必要修改这个默认端口。

除外还需要备用一个监听端口用来接收shell
部分vps做有安全策略,需要手动开启防火墙上的端口策略

User 字段填写你的昵称,当你进入团队服务器之后会显示此昵称。

可以将此字段更改为
你的外号、称呼或幻想的黑客名号(如 Snowden 斯诺登)。

Password 字段填写团队服务器的共享密码。


按下 Connect 按钮来连接到 Cobalt Strike 的团队服务器。


如果这是你第一次连接至此团队服务器


Cobalt Strike 会询问你是否承认这个团队服务器的 SHA256
hash。如果你承认,那么按 OK 

然后 Cobalt Strike 的客户端就会连接到这个团队服务器。

CobaltStrike 也会在未来的连接中记住这个 SHA256 hash。
你可以通过 
Cobalt Strike→ Preferences → Fingerprints 来管理这些团队服务器的 hash。

在这里插入图片描述

团队服务器 记住你的信息。

从连接对话框左手边选择一个团队服务器的profile(连接信息),
使用它的信息填充此连接对话框的字段。

你也可以通过 CobaltStrike → Preferences → Team Servers 来管理此列表。

在这里插入图片描述

登录成功后,可以看到如下界面,
主要有 cs基本设置、视图、攻击、报表等功能
在这里插入图片描述

分布式和团队行动

使用 Cobalt Strike 来协调红队的分散行动。

使用一个或更多的远程主机分阶段的筹划 Cobalt Strike 基
础设施。

启动团队服务器并让你的团队与其建立连接。
在这里插入图片描述
一旦连接至一个团队服务器,你的团队将:
使用相同的会话
分享主机、捕获的数据和下载的文件
通过一个共享的事件日志交流

Cobalt Strike 客户端可能会连接到多个团队服务器。

通过 Cobalt Strike → New Connection (新建
连接)来初始化一个新的连接。

当连接到多个团队服务器,一个切换条会出现在你 Cobalt Strike 窗口
的底部

在这里插入图片描述
「钓鱼」、「攻击」、「后渗透」、「长控(持久性)」。

这样的命名可以反映此团队服务器在一场红队行动中的作用。架构多台团队服务器,
分解整个攻击链,这是分布式行动模型的基本思想。

这个切换条允许你在活跃的 Cobalt Strike 团队服务器实例之间切换。

每一个团队服务器有它自己的按钮。

在一个按钮上点击右键、选择重命名来使这个按钮的名称能够反映这台团队服务器在你行动中的作用。
这个按钮名称也用于在 Cobalt Strike 活动报告中标识团队服务器。

当连接到多个团队服务器,

Cobalt Strike 会汇总所有它连接的团队服务器的监听器。
这种聚合允许你从一台团队服务器发送引用了托管在另一台团队服务器上恶意网站的钓鱼邮件。

在你行动的末期,Cobalt Strike 的报告功能会查询所有你连接到的团队服务器、合并这些数据来描述一个完整的事件。

攻击模块 生成木马

HTA木马文件、
office宏病毒文件、
各种语言版本的payload、
USB/CD利用自动播放运行的木马文件、
捆绑器、
可执行Payload-exe等
在这里插入图片描述
在这里插入图片描述

  • 生成一个分阶段的可执行文件
    在这里插入图片描述
  • 有exe和dll格式的选择
    在这里插入图片描述
  • 添加一个监听器:
    在这里插入图片描述
  • 选择一种payload listener
    在这里插入图片描述
  • 设置端口
    在这里插入图片描述
  • 点击生成
    在这里插入图片描述

客户端靶机上线

在这里插入图片描述目标上线意味着我们已经可以执行目标服务器的系统命令,操作主机的信息收集、以及内网横向穿透。

用户接口

Cobalt Strike 用户接口分为两部分。

接口的顶部是会话或目标的视觉化展示。
接口的底部展示了每个你与之交互的 Cobalt Strike 功能或会话的标签页。
你可以点击这两部分之间的区域、按你的喜好重新调整这两个区域的大小。
在这里插入图片描述

工具条

Cobalt Strike 顶部的工具条提供访问 Cobalt Strike 常用功能的快捷方式。
熟悉此工具条按钮会提升你使用 Cobalt Strike 的效率。
在这里插入图片描述

会话和目标以图形可视化可视化展示

Cobalt Strike 有多种可视化展示,这些不同的设计是为了帮助你的行动中的不同部分。

你可以通过工具条或 Cobalt Strike → Visualization (可视化)菜单在不同的可视化形式之间切
换。

在这里插入图片描述
切换回来
在这里插入图片描述

右键点击目标,可以对它进行各种各样的攻击和手段
在这里插入图片描述

目标表

目标表展示了 Cobalt Strike 的数据模型中的目标。
此目标表展示了每个目标的 IP 地址,它的 NetBIOS名称,以及你或者你的团队成员给目标标记的一个备注。

每个目标最左侧的图标表示了它的操作系统。
带有闪电的红色图标表示此目标具有一个与之通信的 Cobalt Strike Beacon 会话。

在这里插入图片描述
点击表头字段( address )来排序主机。
高亮一行并右击来打开一个菜单,此菜单有针对这台主机的操作选项。
按住 Ctrl + Alt ,然后通过点击来选择和取消选择某台主机。
这个目标表对于横向移动和理解你的目标网络很有用。

用户驱动攻击

获取主机的桌面截图

屏幕截图
右键 --> Explore --> Screenshot 或者 beacon 中输入 Screenshot 截图
在这里插入图片描述

截图的查看在 View --> Screenshots 中查看

键盘记录

在 Process List 选项卡中,最底下一层有 Log Keystrokes 选项。其对具体的进程进行键盘的使用记录。

端口扫描

右键 --> Explore --> Port Scan。在跳出的界面中设置扫描的一些参数。

命令:portscan <ip 或者 ip 段(- 表示段)> <port 或者 port 段,具体的用逗号连接> <协议类型 arp|icmp > <最大线程数>

文件管理

右键 --> Explore --> File Browser 查看靶机的文件系统。可以增删改查。

Virtual Network Computing 远程 VNC

X86注入进程的desktop
case46,x86 desktopVNC远程桌面(注入进程),不建议用vnc
在这里插入图片描述

右键 --> Explore --> Desktop(VNC) 可以远程控制靶机电脑
http传输,速度非常慢,而且可能连不上

浏览器代理

右键 --> Explore --> Browser Pivot。选择一个靶机来进行浏览器代理。
成功后,在 beacon 框中有代理的 ip 地址和端口。

任务处理

beacon 中输入 jobs 可以查看目前运行了哪些在执行命令。
jobkill <JID> 终止一个任务。

插件加载-权限提升

Access-Elevate

在这里插入图片描述

插件脚本管理器

Ladon

探测多网卡主机
Ladon 10.10.168.100/24 MS17010
Ladon枚举远程主机网卡信息 OXID定位多网卡主机

Cobalt Strike 可通过它的 Aggressor Script 语言来为其编写脚本。
Aggressor Script 是 Armitage 的Cortana 脚本语言的精神继任者,虽然这两者并不兼容。

通过 Cobalt Strike → Script Manager 来对脚本进行管理。

github上面下载优质的cs插件Script,点击load上传本地的插件cna格式的脚本文件
在这里插入图片描述
在 Cobalt Strike 内有一个默认的脚本,定义了展示在 Cobalt Strike 控制台的所有弹出菜单和格式信息。
在这里插入图片描述</

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2258107.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Noise2Noise图像去噪

✨✨ 欢迎大家来访Srlua的博文&#xff08;づ&#xffe3;3&#xffe3;&#xff09;づ╭❤&#xff5e;✨✨ &#x1f31f;&#x1f31f; 欢迎各位亲爱的读者&#xff0c;感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢&#xff0c;在这里我会分享我的知识和经验。&am…

基于SpringBoot和PostGIS的全球城市信息管理实践

目录 前言 一、业务需求介绍 1、功能思维导图 二、业务系统后台实现 1、Model层实现 2、业务层的实现 3、控制层的实现 三、前端管理业务的实现 1、全球城市列表的实现 2、详情页面实现 3、实际城市定位 四、总结 前言 在全球化和信息化时代背景下&#xff0c;城市作…

Cocos Creator 开发微信小游戏分包

作为以后端选手,吭哧吭哧的好不容易用cocos开发了一款小游戏, 上传的时候发现包太大了,主包超过4M; 我不是选小游戏分包了吗? 怎么还超? 分包的方案: 功能裁剪资源压缩主包迁移WASM分离 1. 功能裁剪 项目设置中引擎管理器中 功能裁剪里面有很多个引擎,我们剔除掉没用的引…

计算机网络之NAT、代理服务、内网穿透、内网打洞

个人主页&#xff1a;C忠实粉丝 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 C忠实粉丝 原创 计算机网络之NAT、代理服务、内网穿透、内网打洞 收录于专栏【计算机网络】 本专栏旨在分享学习计算机网络的一点学习笔记&#xff0c;欢迎大家在评论区交流讨论…

【论文阅读】相似误差订正方法在风电短期风速预报中的应用研究

文章目录 概述&#xff1a;摘要1. 引言2. 相似误差订正算法&#xff08;核心&#xff09;3. 订正实验3.1 相似因子选取3.2 相似样本数试验3.3 时间窗时长实验 4. 订正结果分析4.1 评估指标对比4.2 风速曲线对比4.3 分风速段订正效果评估4.4 风速频率统计 5. 结论与讨论 概述&am…

【Rust 学习笔记】Rust 基础数据类型介绍——数组、向量和切片

博主未授权任何人或组织机构转载博主任何原创文章&#xff0c;感谢各位对原创的支持&#xff01; 博主链接 博客内容主要围绕&#xff1a; 5G/6G协议讲解 高级C语言讲解 Rust语言讲解 文章目录 Rust 基础数据类型介绍——数组、向量和切片一、数组、向量和…

爬虫学习案例3

爬取美女图片 优美图库地址 一页图片 安装依赖库文件 pip install selenium requests beautifulsoup4import time import requests import random from bs4 import BeautifulSoup from selenium import webdriver from selenium.webdriver.chrome.service import Service fr…

ubuntu检测是否已安装nvidia驱动以及产品类型

nvidia-sminvidia-smi 是 NVIDIA 提供的一个命令行工具&#xff0c;用于查看和管理 NVIDIA GPU 的状态。当你运行 nvidia-smi 命令时&#xff0c;它会显示当前系统中所有 NVIDIA GPU 的状态信息&#xff0c;包括 GPU 的使用率、温度、内存使用情况等。 有8个GPU nvcc -V查看c…

使用pyinstaller打包pyqt的程序,运行后提示ModuleNotFoundError: No module named ‘Ui_main‘

环境&#xff1a;windowpython3.9pyqt6 使用pyqt UI编辑器生成了main.ui &#xff0c;main.ui编译成了Ui_main.py main.py 使用当前目录下的Ui_main.py。 打包过程没报错&#xff0c;运行报错。 错误如下: 解决方法&#xff1a;pyinstaller -Fw main.py --paths. 使…

MySQL | 尚硅谷 | 第16章_变量、流程控制与游标

MySQL笔记&#xff1a;第16章_变量、流程控制与游标 文章目录 MySQL笔记&#xff1a;第16章_变量、流程控制与游标第16章_变量、流程控制与游标 1. 变量1.1 系统变量1.1.1 系统变量分类1.1.2 查看系统变量 1.2 用户变量1.2.1 用户变量分类1.2.2 会话用户变量 1.2.3 局部变量1.2…

【环境搭建】Jeecg-Boot v3.5.0 Docker搭建

前言 最近需要复现JeecgBoot的SQL注入漏洞&#xff0c;必须要搭建JeecgBoot v3.5.0这个版本才行&#xff0c;DockerHub没人push这个版本的&#xff0c;相关博客也比较少&#xff0c;所以自己来搭建&#xff0c;记录一下过程。 前置环境 Ubuntu 20.04Docker version 27.3.1do…

Certimate自动化SSL证书部署至IIS服务器

前言&#xff1a;笔者上一篇内容已经部署好了Certimate开源系统&#xff0c;于是开始搭建部署至Linux和Windows服务器&#xff0c;Linux服务器十分的顺利&#xff0c;申请证书-部署证书很快的完成了&#xff0c;但是部署至Windows Server的IIS服务时&#xff0c;遇到一些阻碍&a…

【学一点儿前端】本地或jenkins打包报错:getaddrinfo ENOTFOUND registry.nlark.com

问题 今天jenkins打包一个项目&#xff0c;发现报错了 error An unexpected error occurred: “https://registry.nlark.com/xxxxxxxxxx.tgz: getaddrinfo ENOTFOUND registry.nlark.com”. 先写解决方案 把yarn.lock文件里面的registry.nlark.com替换为registry.npmmirror.…

Linux:软硬链接

目录 一、概念 软链接 硬链接 二、原理 硬链接 软链接 三、使用场景 硬链接 软链接 一、概念 软链接 在当前目录下&#xff0c;有一个普通文件a.txt。 ln -s a.txt a_soft.link结论&#xff1a; 软链接是一个文件。 观察inode_id&#xff0c;发现软链接有着独立…

Java 实现给pdf文件指定位置盖章功能

Java 实现给pdf文件指定位置盖章功能 开发中遇到一个需求, 需要给用户上传的的pdf文件, 指定位置上盖公章的功能, 经过调研和对比, 最终确定实现思路. 这里是使用pdf文件中的关键字进行章子的定位, 之所以这样考虑是因为如果直接写死坐标的话, 可能会出现因pdf大小, 缩放, 盖章…

SparkSQL与Hive的整合

文章目录 SparkSQL与Hive的整合1.1. Spark On Hive1.1.1. Hive的准备工作1.1.2. Spark的准备工作1.1.3. Spark代码开发1.1.4. Spark On Hive案例 1.2. Hive On Spark1.3. SparkSQL命令行1.4. SparkSQL分布式查询引擎1.4.1. 开启ThriftServer服务1.4.2. beeline连接ThriftServer…

借助Dynamsoft的批量条码扫描,推动无人机仓储管理新高度

随着企业规模扩大和供应链变得越来越复杂&#xff0c;库存管理已成为仓库运营商面临的一项重大挑战。传统技术主要依赖于人工&#xff0c;而现在正被无人机和条形码识别等先进技术所取代。这些创新可以提高库存跟踪的准确性和效率&#xff0c;同时最大限度地减少人为错误并优化…

web网页连接MQTT,显示数据与下发控制命令

web网页连接MQTT&#xff0c;显示数据与下发控制命令 零、前言 在完成一些设备作品后&#xff0c;常常会因为没有一个上位机用来实时检测数据和下发命令而苦恼&#xff0c;在上一篇文章中提到了怎么白嫖阿里云服务器&#xff0c;并且在上面搭建了属于自己的web网站。那么现在…

数学学院项目开发总结

数学学院项目开发总结 学生成长平台 后端:技术栈gogingorm 负责内容:入团申请审核后端部分 前台 学生入团申请表单的提交根据审核状态判断不同的跳转页面 后台 活动的创建和关闭和信息提交和审核时间的管理 表单的审核流转: 班级审批基本信息审批 - > 学生会纪权部道…

flutter编译e: Daemon compilation failed: null java.lang.Exception错误解决

文章目录 错误描述解决方法修复步骤1. 清理项目缓存2. 检查项目路径一致性3. 强制禁用增量编译4. 更新依赖项5. 检查 Kotlin 和 Gradle 插件版本6. 删除 Kotlin 编译器守护进程7. 重新编译项目 错误描述 flutter应用编译时报如下错误e: Daemon compilation failed: null java.…