jueves, 17 de enero de 2013

BlackHole Exploit Kit 2.0 Parte III.


Inauguramos el primer post del año con un pequeño análisis de una web maliciosa que contiene Blackhole 2.0. Este Kit esta muy difundido a nivel mundial y en este caso es utilizado para infectar a los usuarios con un worm keylogger. 
Como en otras oportunidades utilizaremos Malzilla + peepdf + Ollydbg + Dirbuster + HexFlex + un cafe...


Sitio analizado en V.T.


Descarga con malzilla del primer Script malicioso.




ver (/scriptsJS/exploit-01.txt) de muestra




var a = 08:40:4!:59:!25:!25:59:97:........................mas datos...............!03!02:!!!:46:!06:97:!!4:34:4!:59";

a=a.replace(/!/g,1)[sp](":"); 

 <- color="#ff0000" font="font" nbsp="nbsp">var a se reemplaza el "!" por un "1" y 
reemplaza ":" por un "espacio"

Nos queda

18 97 114 32 80 108 117 103 ....mas datos....105 110 68 101 116 101

A simple vista se trata de valores ASCII

ver (/scriptsJS/exploit-02.txt) de muestra

estos datos lo pasamos de ascii a text



Análisis en V.T. del .JS



Voy a cargar la siguiente parte en Malzilla para forzarle al servidor que me descargue un PDF.



Así obtenemos un PDF con el exploit.



Análisis del PDF en VT



El PDF lo analizaremos con la herramienta peepdf, que nos permitirá observar los objetos alojados dentro del el, en búsqueda de elementos maliciosos.

Cmd  peepdf.py -f -i XXXX.pdf

-f force para evitar errores 
-i interactivo, es decir queda cargado el pdf para mas cmds.

Vemos que el objeto 63 contiene JavaScript 




lo copiamos a un .txt con el cmd

object 64 > script-01.txt (ver /scriptsJS/script-01.txt en muestra)









Tiene dos variables con datos "a" y "rawd2"



a='4E@73J4A1648@..............mas datos..............53J3M3M41@"
s="";
z=a;
str="Str";
str+="i";
str+="ng";
ss=(k)?dsa(str):12;
ff='fro12harCode';
pp="par";
ss=ss[(k)?ff[cr4]('1','m')[cr4]('2','C'):0];
k('zz='+ss(107));
k((k)?"pp+='seInt'":12);
q=t[pp];
xz=a.length;
for(i=0;xz>i;i=2+i){
i2=i+1;
if (z[i]!='@')
if(event.name===vcx)s+=(ss(q(z[i]+z[i2],25+1)));
}


El código esta ofuscado y si lo cargamos en malzilla va a fallar.

Pero arreglándolo queda:


s="";
z=a;
xz=a.length;
for(i=0;xz>i;i=2+i){
i2=i+1;
if (z[i]!='@')
s+=(String.fromCharCode(parseInt(z[i]+z[i2],25+1)));

}
document.write(s);


 (ver /scriptsJS/script-02.txt en muestra)


Lo cargamos en Malzilla






Ejecutamos el Script, y gracias al document.write(s) obtenemos la salida.





 (ver /scriptsJS/script-03.txt en muestra)



 var padding;
 var bbb, ccc, ddd, eee, fff, ggg, hhh;
 var pointers_a, i;
 var x = new Array();
 var y = new Array();
 var _l1="4c20600f0517804a3c20600f0f63804aa3eb804a3020824a6e2f804a41414141260000000000000000000000000000001239804a6420600f000400004141414141414141"+rawd2.split('').reverse().join('').replace(/;
 /g,'');


Aquí vemos que se utiliza la variable rawd2 que vimos arriba, a la cual se le realiza un reverse.join.replace.



Tomamos solo una parte del .JS


var rawd2 ="CARGAR AQUI LOS DATOS DE RAWD2";
var _l1= rawd2.split('').reverse().join('').replace(/;/g,'')
document.write(_l1);











El resultado lo pasamos de hexadecimal a texto.






Esta es la URL con la cual se descarga el Payload del BHEK.





Análisis del ejecutable en V.T. con un indice muy bajo en detecciones.






Lo cargamos en Ollydbg.


Parchamos la función IsDebuggerPressent que tiene el Crypter.




BP en WriteProcessMemory para realizar el dump.





Vemos que lo dumpeado esta compactado con UPX.




realizamos un upx -d dump.exe para descomprimirlo.



Análisis del dump sin UPX


Strings interesantes:


"open"
00401F80   DD about_du.00418EC4                      UNICODE "SOFTWARE\Classes\Applications\iexplore.exe\shell\open\command"
0040202C   DD about_du.0040DE4C                      UNICODE "KERNEL32"
00402034   DD about_du.0040DE68                      UNICODE "NTDLL"
004020E0   DD about_du.00418FF8                      UNICODE "127.0.0.1"
004020E8   DD about_du.00419010                      UNICODE "N/A"
004020EC   DD about_du.004137F8                      UNICODE "*.*"
004020F0   DD about_du.0040D81C                      UNICODE "x65"
0040225C   DD about_du.004170FC                      UNICODE "Unknown (?)|n/a|?"
00402264   DD about_du.0041712C                      UNICODE "Win95, OSR2"
0040226C   DD about_du.00417150                      UNICODE "Win95"
00402274   DD about_du.00417160                      UNICODE "Win98, SE"
00402278   DD about_du.00417178                      UNICODE "Win98"
0040227C   DD about_du.00417188                      UNICODE "WinME"
00402280   DD about_du.004171A0                      UNICODE "Win2000, Data Center"
00402284   DD about_du.004171D0                      UNICODE "Win2000, Advanced"
00402288   DD about_du.004171F8                      UNICODE "Win2000"
0040228C   DD about_du.0041720C                      UNICODE "WinXP"
00402290   DD about_du.0041721C                      UNICODE "WinServer 2003, Enterprise"
00402294   DD about_du.00417258                      UNICODE "WinServer 2003, Data Center"
00402298   DD about_du.00417294                      UNICODE "WinServer 2003, Web Edition"
0040229C   DD about_du.004172D0                      UNICODE "WinServer 2003, Standard"
004022A0   DD about_du.00417308                      UNICODE "WinServer 2003"
004022A4   DD about_du.0041732C                      UNICODE "Win"
004022A8   DD about_du.00417338                      UNICODE "WinServer 2008"
004022AC   DD about_du.0041735C                      UNICODE "Vista"
004022B4   DD about_du.00412FEC                      UNICODE "Unknown"
004022C4   DD about_du.00416CF4                      UNICODE "n/a"
004022C8   DD about_du.00416CD4                      UNICODE "WScript.Shell"
004022D0   DD about_du.00417370                      UNICODE "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProductName"
004022D4   DD about_du.0041308C                      UNICODE "RegRead"
00402354   DD about_du.004140B4                      UNICODE "Torrent"
00402360   DD about_du.00419730                      UNICODE "\uTorrent\uTorrent.exe /DIRECTORY "
00402368   DD about_du.0041977C                      UNICODE " /HIDE"
00402370   DD about_du.0041397C                      UNICODE "open"
004023A4   DD about_du.0041701C                      UNICODE "{ENTER}"

USB spreader running"
004044A8   DD about_du.0041A0EC                      UNICODE "[autorun]"
004044AC   DD about_du.0041A104                      UNICODE "flood stopped"
004044B0   DD about_du.0041A124                      UNICODE "SYN packets sent"
004044B4   DD about_du.0041A14C                      UNICODE "Software\Kazaa\LocalContent"
004044B8   DD about_du.0041A188                      UNICODE "Software\Microsoft\Windows\CurrentVersion\Uninstall\eMule"
004044BC   DD about_du.0041A200                      UNICODE "Variant of Bff BOT"
004044C0   DD about_du.0041A22C                      UNICODE "HERE-IS-ACTIVEX-GUID"
004044C4   DD about_du.0041A25C                      UNICODE "SOFTWARE\MICROSOFT\Windows NT\CurrentVersion\DigitalProductId"
004044C8   DD about_du.0041A2DC                      UNICODE "TCanvas"
004044CC   DD about_du.0041A2F0                      UNICODE "Error Ending Process"
004044D0   DD about_du.0041A320                      UNICODE "YuklenenDizin"
004044D4   DD about_du.0041A340                      UNICODE "Dosyalar"
004044D8   DD about_du.0041A358                      UNICODE "InstalledApplications"
004044DC   DD about_du.0041A388                      UNICODE "Apocalypse"
004044E0   DD about_du.0041A3A4                      UNICODE "WindowManager"
004044E4   DD about_du.0041A3C4                      UNICODE "Variant of Apocalypse RAT"
004044E8   DD about_du.0041A3FC                      UNICODE "bps1.exe"
004044EC   DD about_du.0041A414                      UNICODE "bhookpl.dll"
004044F0   DD about_du.0041A430                      UNICODE "bnfa.exe"
004044F4   DD about_du.0041A448                      UNICODE "drvloadn.dll"
004044F8   DD about_du.0041A468                      UNICODE "drvloadx.dll"
004044FC   DD about_du.0041A488                      UNICODE "VNCHooks.dll"
00404500   DD about_du.0041A4A8                      UNICODE "xr4tdwa.exe"
00404504   DD about_du.0041A520                      UNICODE "SOFTWARE\Microsoft\Active Setup\Installed Components"
00404508   DD about_du.0041A590                      UNICODE "shutdown.exe"

0046E529   ASCII "1o",0
0046E89C   ASCII "MSVBVM60.DLL",0
0046E8AC   ASCII "EVENT_SINK_GetID"
0046E8BC   ASCII "sOfNames",0
0046E8C6   ASCII "MethCallEngine",0
0046E8D6   ASCII "EVENT_SINK_Invok"
0046E8E6   ASCII "e",0
0046E8EA   ASCII "Zombie_GetTypeIn"
0046E8FA   ASCII "fo",0
0046E8FE   ASCII "EVENT_SINK2_Rele"
0046E90E   ASCII "ase",0
0046E914   ASCII "EVENT_SINK_AddRe"
0046E924   ASCII "f",0
0046E928   ASCII "DllFunctionCall",0
0046E93A   ASCII "Zombie_GetTypeIn"
0046E94A   ASCII "foCount",0
0046E954   ASCII "EVENT_SINK_Relea"
0046E964   ASCII "se",0
0046E968   ASCII "EVENT_SINK_Query"
0046E978   ASCII "Interface",0
0046E984   ASCII "__vbaExceptHandl"
0046E994   ASCII "er",0
0046E998   ASCII "ProcCallEngine",0
0046E9A8   ASCII "EVENT_SINK2_AddR"
0046E9B8   ASCII "ef",0

Por lo visto en los strings, estimo que el malware utiliza los medios removibles USB y las redes P2P para difundirse.


En el análisis dinámico:

Se observa que se copia a la carpeta:


C:\Documents and Settings\User\Application Data\rubber.exe

Modifica el registro para asegurarse la persistencia en el sistema

LM\Software\Microsoft\Windows\CurrentVersion\Run\Windows Defender REG_SZ 118 "C:\Documents and Settings\User\Application Data\rubber.exe"



Genera el archivo Java, el cual resulta ser un log del keylogger.





Accediendo a Hotmail.

 Revisando el archivo Java... se puede observar los eventos del teclado que fueron registrados por el malware.




Update




Revisión del sitio malicioso con DirBuster.

Directories found during testing:

Dirs found with a 200 response:

/joomla/
/
/joomla/dummy/
/joomla/www/
/joomla/freely/
/joomla/massive/
/joomla/sequences/
/joomla/universities/
/joomla/www/admin/
/joomla/www/admin/cleans/
/joomla/www/admin/cleans/tmp/
/joomla/sequences/kcaptcha/
/joomla/sequences/templates/
/joomla/www/admin/cleans/tmp/2/
/joomla/sequences/templates/css/
/joomla/sequences/templates/img/
/joomla/sequences/templates/js/


--------------------------------
Files found during testing:

Files found with a 200 responce:

/joomla/api.php
/joomla/autoupdate.php
/joomla/bhadmin.php
/joomla/config.php
/joomla/contents.php
/joomla/cron_check.php
/joomla/cron_checkdomains.php
/joomla/cron_update.php
/joomla/move_logs.php
/joomla/cron_updatetor.php
/joomla/readme.txt
/joomla/tr_count.dat
/joomla/massive/ap1.php
/joomla/massive/ap2.php
/joomla/massive/field.swf
/joomla/massive/flash.swf
/joomla/sequences/browser.php
/joomla/massive/getJavaInfo.jar
/joomla/universities/9acc100786
/joomla/universities/file9acc100786
/joomla/sequences/db.php
/joomla/sequences/files.php
/joomla/massive/java.jar
/joomla/massive/score.swf
/joomla/sequences/java.dat
/joomla/sequences/js.php
/joomla/massive/spn.jar
/joomla/massive/spn2.jar
/joomla/massive/spn3.jar
/joomla/sequences/lang.php
/joomla/sequences/data.dat
/joomla/sequences/logs.php
/joomla/sequences/sc.php
/joomla/sequences/template.php
/joomla/sequences/threads.php
/joomla/sequences/words.dat
/joomla/universities/tmp.gz
/joomla/sequences/templates/auth.php
/joomla/sequences/templates/block_config.php
/joomla/sequences/templates/blocked_stat.php
/joomla/sequences/templates/browsers_bstat.php
/joomla/sequences/templates/browsers_stat.php
/joomla/sequences/templates/countries_bstat.php
/joomla/sequences/templates/countries_stat.php
/joomla/sequences/templates/domainEdit.php
/joomla/sequences/templates/domains.php
/joomla/sequences/templates/exploits_bstat.php
/joomla/sequences/templates/exploits_stat.php
/joomla/sequences/templates/fileEdit.php
/joomla/sequences/templates/css/main.css
/joomla/sequences/templates/files.php
/joomla/sequences/templates/global_bstat.php
/joomla/sequences/templates/global_stat.php
/joomla/sequences/templates/main_stat.php
/joomla/sequences/templates/menu.php
/joomla/sequences/templates/oses_bstat.php
/joomla/sequences/templates/oses_stat.php
/joomla/sequences/templates/referers_bstat.php
/joomla/sequences/templates/img/refresh.gif_Zone.Identifier_$DATA
/joomla/sequences/templates/js/datepicker.js
/joomla/sequences/templates/referers_stat.php
/joomla/sequences/templates/js/form.js
/joomla/sequences/templates/ruleEdit.php
/joomla/sequences/templates/security.php
/joomla/sequences/templates/js/wysiwyg.js
/joomla/sequences/templates/settings.php
/joomla/sequences/templates/threadEdit.php
/joomla/sequences/templates/js/main.js
/joomla/sequences/templates/threads.php
/joomla/sequences/templates/threads_bstat.php
/joomla/sequences/templates/threads_stat.php
/joomla/sequences/templates/versions.php

Files found with a 502 responce:

/joomla/freely/.php
/joomla/freely/applications-ability_year_inputted.php
/joomla/freely/phrases-students-standards.php





Admin Panel del BHEK









Muestras: http://www.mediafire.com/?o7vwm75zlwu7ztm


password = infected


Eso es todo por el momento.


@Dkavalanche 2013   






In my eyes, 
Indisposed, 
In disguise 
As no one knows. 
Hides the face, 
Lies the snake, 
And the sun 
In my disgrace.

2 comentarios:

nonroot (c) 1983/2013 dijo...

Felicitaciones!, que buen trabajo.

@Dkavalanche dijo...

Gracias nonroot, estoy alagado por su comentario.

Saludos!

 Hola, me mudé a medium .... nos vemos!!! FELIZ 2022!!!