hackplayers (Italiano)

Una delle migliori opzioni post-exploitation che un attaccante ha è quella di far comunicare un Meterpreter con il server C&C attraverso una connessione HTTP inversa. Ma come possiamo rilevarlo, come possiamo vedere se ci sono PC infetti nella nostra LAN che stanno usando questo payload?
Il blog di Didier Stevens dà una risposta a questo problema. Per farlo, ha analizzato il traffico di un client Meterpreter in modalità http inversa, osservando che fa regolari richieste HTTP al server Metasploit per controllare se ha comandi pronti per essere eseguiti. Questo è l’aspetto di questo tipo di traffico:

Esaminando ulteriormente il codice sorgente del protocollo HTTP inverso di Metasploit, la richiesta HTTP POST del client ha sempre un payload RECV a 4 byte con un URI con il seguente schema: 4 o 5 caratteri alfanumerici, un underscore e 16 caratteri alfanumerici. I 16 caratteri alfanumerici sono scelti a caso, e i 4 o 5 caratteri alfanumerici sono una sorta di checksum.
E per rilevarlo con Snort, Didier ci fornisce la seguente regola:

# 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;)

Questa regola Snort è per il traffico dalla rete interna verso l’esterno. Devi cambiare la regola se vuoi rilevare solo il traffico interno.
Qui puoi vedere un esempio di avviso:

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

Quello che non è hard-coded, ma parametrizzato con una variabile, è la User Agent String. Per default, è “Mozilla / 4.0 (compatibile; MSIE 6.1; Windows NT)”.
Questa stringa sembra abbastanza normale ma non lo è: “MSIE 6.1” è abbastanza raro (secondo Wikipedia, non esiste Internet Explorer versione 6.1) e “Windows NT” senza numero di versione è anche raro.
Combinati formano un modello con cui si può anche identificare facilmente il traffico di Metasploit Meterpreter, ma è un’opzione che può essere modificata, quindi non è affidabile al 100%.
Comunque, se volete implementarlo anche voi, ecco le regole:

# 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;)

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *