君子藏器于身待时而动,安全不露圭角覆盂之安。
——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 |
