hackplayers (Français)

L’une des meilleures options de post-exploitation dont dispose un attaquant est de laisser un Meterpreter communiquer avec le serveur C&C via une connexion HTTP inversée. Mais comment le détecter, comment voir s’il y a des PC infectés dans notre réseau local qui utilisent cette charge utile ?
Le blog de Didier Stevens donne une réponse à cette question. Pour ce faire, il a analysé le trafic d’un client Meterpreter en mode http inverse, observant qu’il adresse régulièrement des requêtes HTTP au serveur Metasploit pour vérifier s’il dispose de commandes prêtes à être exécutées. Voici à quoi ressemble ce type de trafic :

En examinant plus avant le code source du protocole HTTP inversé de Metasploit, la requête HTTP POST du client comporte toujours une charge utile RECV de 4 octets avec une URI présentant le motif suivant : 4 ou 5 caractères alphanumériques, un trait de soulignement, et 16 caractères alphanumériques. Les 16 caractères alphanumériques sont choisis au hasard, et les 4 ou 5 caractères alphanumériques sont une sorte de checksum.
Et pour le détecter avec Snort, Didier nous fournit la règle suivante :

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

Cette règle Snort concerne le trafic du réseau interne vers l’extérieur. Vous devez modifier la règle si vous voulez détecter uniquement le trafic interne.
Vous pouvez voir ici un exemple d’alerte :

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

Ce qui n’est pas codé en dur, mais paramétré avec une variable, c’est la chaîne de l’agent utilisateur. Par défaut, c’est « Mozilla / 4.0 (compatible ; MSIE 6.1 ; Windows NT) ».
Cette chaîne a l’air tout à fait normale mais pourtant elle ne l’est pas : « MSIE 6.1 » est assez rare (selon Wikipedia, il n’existe pas de version 6.1 d’Internet Explorer) et « Windows NT » sans numéro de version est également rare.
Combinés, ils forment un modèle avec lequel vous pouvez également identifier facilement le trafic Metasploit Meterpreter, mais c’est une option qui peut être modifiée, donc ce n’est pas fiable à 100%.
Cependant, si vous voulez l’implémenter également, voici les règles:

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

.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *