hackplayers (Português)

Uma das melhores opções pós-exploração que um atacante tem é deixar um Meterpreter comunicar com o servidor C&C através de uma ligação HTTP invertida. Mas como podemos detectá-lo, como podemos ver se existem PCs infectados na nossa LAN que estão a utilizar esta carga útil?
O blogue de Didier Stevens dá uma resposta a esta questão. Para o fazer, analisou o tráfego de um cliente Meterpreter em modo http inverso, observando que este faz pedidos HTTP regulares ao servidor Metasploit para verificar se tem comandos prontos a serem executados. Este é o aspecto deste tipo de tráfego:
<

<

<

br>Further reviewing the source code of Metasploit’s reverse HTTP protocol, the client’s HTTP POST request has always a 4-byte RECV payload with a URI with the following pattern: 4 ou 5 caracteres alfanuméricos, um sublinhado, e 16 caracteres alfanuméricos. Os 16 caracteres alfanuméricos são escolhidos aleatoriamente, e os 4 ou 5 caracteres alfanuméricos são uma espécie de checksum.
E para o detectar com Snort, Didier fornece-nos a seguinte regra:

# Snort rules by Didier Stevens (http://DidierStevens.com)# 2015/05/01 - 2015/05/10# Thanks to Nathan Fowler for helping out with performance optimization# I start numbering my rules at SID 1618000alert tcp $HOME_NET any -> $EXTERNAL_NET $HTTP_PORTS (msg:"Metasploit Meterpreter"; flow:to_server,established; content:"RECV"; http_client_body; depth:4; fast_pattern; isdataat:!0,relative; urilen:23<>24,norm; content:"POST"; pcre:"/^\/{4,5}_{16}\/$/Ui"; classtype:trojan-activity; reference:url,blog.didierstevens.com/2015/05/11/detecting-network-traffic-from-metasploits-meterpreter-reverse-http-module/; sid:1618008; rev:1;)

br> Esta regra de Snort é para tráfego da rede interna para o exterior. É necessário alterar a regra se quiser detectar apenas tráfego interno.
Aqui pode ver um exemplo de alerta:

Metasploit Meterpreter 05/11-22:26:31.236007 192.168.174.1:54949 -> 192.168.174.137:80TCP TTL:64 TOS:0x0 ID:21177 IpLen:20 DgmLen:212 DF***A**** Seq: 0x1B677291 Ack: 0x861008DD Win: 0x7680 TcpLen: 20

br> O que não é codificado, mas parametrizado com uma variável, é a String do Agente Utilizador. Por defeito, é “Mozilla / 4.0 (compatível; MSIE 6.1; Windows NT)”.
Esta string parece bastante normal mas não é: “MSIE 6.1” é bastante raro (de acordo com a Wikipedia, não existe Internet Explorer versão 6.1) e “Windows NT” sem número de versão também é raro.
Combinados formam um padrão com o qual se pode também identificar facilmente o tráfego do Metasploit Meterpreter, mas é uma opção que pode ser alterada para que não seja 100% fiável.
No entanto, se também o quiser implementar, aqui estão as regras:

# Snort rules by Didier Stevens (http://DidierStevens.com)# 2015/04/30# I start numbering my rules at SID 1618000#alert tcp $HOME_NET any -> $EXTERNAL_NET $HTTP_PORTS (msg:"Metasploit User Agent String"; flow:to_server,established; content:"User-Agent|3a| Mozilla/4.0 (compatible\; MSIE 6.0\; Windows NT 5.1)|0d 0a|"; http_header; classtype:trojan-activity; reference:url,blog.didierstevens.com/2015/03/16/quickpost-metasploit-user-agent-strings/; sid:1618000; rev:1;)alert tcp $HOME_NET any -> $EXTERNAL_NET $HTTP_PORTS (msg:"Metasploit User Agent String"; flow:to_server,established; content:"User-Agent|3a| Mozilla/4.0 (compatible\; MSIE 6.1\; Windows NT)|0d 0a|"; http_header; classtype:trojan-activity; reference:url,blog.didierstevens.com/2015/03/16/quickpost-metasploit-user-agent-strings/; sid:1618001; rev:1;)#alert tcp $HOME_NET any -> $EXTERNAL_NET $HTTP_PORTS (msg:"Metasploit User Agent String"; flow:to_server,established; content:"User-Agent|3a| Mozilla/4.0 (compatible\; MSIE 7.0\; Windows NT 6.0)|0d 0a|"; http_header; classtype:trojan-activity; reference:url,blog.didierstevens.com/2015/03/16/quickpost-metasploit-user-agent-strings/; sid:1618002; rev:1;)alert tcp $HOME_NET any -> $EXTERNAL_NET $HTTP_PORTS (msg:"Metasploit User Agent String"; flow:to_server,established; content:"User-Agent|3a| Mozilla/4.0 (compatible\; MSIE 7.0\; Windows NT 6.0\; Trident/4.0\; SIMBAR={7DB0F6DE-8DE7-4841-9084-28FA914B0F2E}\; SLCC1\; .N|0d 0a|"; http_header; classtype:trojan-activity; reference:url,blog.didierstevens.com/2015/03/16/quickpost-metasploit-user-agent-strings/; sid:1618003; rev:1;)alert tcp $HOME_NET any -> $EXTERNAL_NET $HTTP_PORTS (msg:"Metasploit User Agent String"; flow:to_server,established; content:"User-Agent|3a| Mozilla/4.0 (compatible\; Metasploit RSPEC)|0d 0a|"; http_header; classtype:trojan-activity; reference:url,blog.didierstevens.com/2015/03/16/quickpost-metasploit-user-agent-strings/; sid:1618004; rev:1;)#alert tcp $HOME_NET any -> $EXTERNAL_NET $HTTP_PORTS (msg:"Metasploit User Agent String"; flow:to_server,established; content:"User-Agent|3a| Mozilla/5.0 (Windows\; U\; Windows NT 5.1\; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/4.0.221.6 Safari/525.13|0d 0a|"; http_header; classtype:trojan-activity; reference:url,blog.didierstevens.com/2015/03/16/quickpost-metasploit-user-agent-strings/; sid:1618005; rev:1;)alert tcp $HOME_NET any -> $EXTERNAL_NET $HTTP_PORTS (msg:"Metasploit User Agent String"; flow:to_server,established; content:"User-Agent|3a| Mozilla/5.0 (compatible\; Googlebot/2.1\; +http://www.google.com/bot.html)|0d 0a|"; http_header; classtype:trojan-activity; reference:url,blog.didierstevens.com/2015/03/16/quickpost-metasploit-user-agent-strings/; sid:1618006; rev:1;)#alert tcp $HOME_NET any -> $EXTERNAL_NET $HTTP_PORTS (msg:"Metasploit User Agent String"; flow:to_server,established; content:"User-Agent|3a| Mozilla/5.0 (compatible\; MSIE 10.0\; Windows NT 6.1\; Trident/6.0)|0d 0a|"; http_header; classtype:trojan-activity; reference:url,blog.didierstevens.com/2015/03/16/quickpost-metasploit-user-agent-strings/; sid:1618007; rev:1;)

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *