君子藏器于身待时而动,安全不露圭角覆盂之安。
——AnonySec
前言
Metasploit已被渗透测试人员广泛使用并广为人知。当使用Metasploit进行命令控制,如不进行加密传输,就会让防御者在网络流量分析时,轻松发现和提取攻击者的网络活动行踪。
所以,网络流量加密传输就成为了必选项。
Metasploit流量分析
Shell payload
起初先用payload windows/x64/shell/bind_tcp
进行交互,这是一个cmd shell
。
在上图可以看到,当命令控制时,网络数据包是以明文形式发送和接收的。安全设备在记录的同时,还会触发告警,从而被发现。
Meterpreter Payload
接下来看下payload windows/x64/meterpreter/bind_tcp
,这是一个高级shell。
在进入session后,让我们检查流量。
这是建立连接与执行命令的过程。虽然说命令执行的过程已经进行了加密处理,继续进行活动,防御者也不会发现有价值的数据,但可以观察到每个数据都包含MZ标头
和DOS模式异常
。
在大多数情况下,安全设备也会检测到此活动,触发警报。这就意味着这台主机的权限就会失去。
Metasploit反取证
Stage Encoder
在不使用额外模块的情况下,如何进行再次加密?
这里使用enablestageencoding
与stageencoder
,把发送的stage
进行编码,编码方式较多,这里选用的是x86/shikata_ga_nai
。
1 | msf5 exploit(multi/handler) > set enablestageencoding true |
再次查看数据包,相同阶段的数据已编码,数据已经无法识别。
TLS
TLS通常是逃避网络检测的选项之一,metasploit同样也提供了payload windows/x64/meterpreter_reverse_https
,进行建立TLS加密传输。
reverse_https
使用的是metasploit创建的自签名证书建立的TLS通信。
虽然说数据是加密的,但不代表不会进行验证。
要使用不同的证书,可以购买,也可以使用自签名。但metasploit的auxiliary/gather/impersonate_ssl
模块就可以解决这个问题,创建不同的伪证书。
reverse_https
的高级选项中有handlersslcert
设置。
将impersonate_ssl
输出的pem格式证书路径载入。
1 | msf5 exploit(multi/handler) > set handlersslcert /Users/anonysec/.msf4/loot/20200807180153_default_112.80.248.75_112.80.248.75_pe_628298.pem |
RC4 payload
RC4,Rivest Cipher 4,是一种密钥长度可变的流加密算法,属于对称加密的分支。详情 RC4 Wiki
这是metasploit支持的一种加密算法。
下面来看payload windows/x64/meterpreter/bind_tcp_rc4
的数据包。
数据包已经完全进行了加密传输处理,所有的命令控制都已经进行了隐藏。防御者只能发现这是TCP的流量,但没有任何有用的信息。
需要注意:RC4PASSWORD 记得更改!
1 | msfvenom -p windows/x64/meterpreter/bind_tcp_rc4 rc4password=Admin@1qaz LPORT=53 -f exe > x64bind_rc4.exe |