mercredi 15 novembre 2017

Le malware Bad Rabbit ( vilain lapin )




I.    Introduction


Ce malware apparu le 24 octobre 2017, s'attaque aux réseaux des entreprises via une fausse mise à jour d'Adobe Flash que l'utilisateur doit lancer manuellement (il n'y a pas directement d'exploit utilisé pour sa  diffusion),Lorsque celui-ci est lancé, il explore le réseau interne de l'entreprise à la recherche de partages SMB ouverts et tente un brute force sur ceux qui ne sont pas ouverts à l'aide d'une liste de logins et mots de passe codés en dur dans le malware.

II.          Dictionnaires de Login/Password


Cela est intéressant, car le dictionnaire est assez simple , nous mettons ici une partie

Dictionnaire des logins

"Administrator" "Admin"  "Guest" "User" "User1" "user-1" "Test" "root" "buh" "boss" "ftp" "rdp" "rdpuser" "rdpadmin" "manager" "support" "work" "other user" "operator" "backup" "asus" "ftpuser" "ftpadmin" "nas" "nasuser" "nasadmin" "superuser" "netquest" "alex"

Disctionnaire des Password

"god" "sex" "secret" "love" "321" "123321" "uiop" "zxcv" "zx321" "zx123" "zxc" "qwerty123" "qwerty" "qwert" "qwer "qwe321""qwe123" "qwe" "777" "77777" "55555" "111111" "password" "test123" "admin123Test123" admin123" " "user123" "User123"

il essaie de diffuser ces fichiers sur les ordinateurs du réseau comme décrit via une attaque brute de force sur les partages administratifs (\\ computername \ admin $) avec une liste d'identifiants codés en dur (vu au dessus tirer des dictionnaires)

III.     Les hashs de BadRabbit


Mais la partie qui nous intéresse ici est les hashs utilisé dans ce malware . Vu les analyses disponible sur d'autre site le bloc correspondant à l'analyse des processus contient des hashs 

dont voici la liste incluse dans le malware utiliser pour l'identification des processus.

Hash
Nom du processus
0x4A241C3E
dwwatcher.exe
0x923CA517
McTray.exe
0x966D0415
dwarkdaemon.exe
0xAA331620
dwservice.exe
0xC8F10976
mfevtps.exe
0xE2517A14
dwengine.exe
0xE5A05A00
mcshield.exe

Nous avons construit une implémentation de la fonction de Hash en C à partir de l'analyse des différent élément disponible

Si on regarde les processus concerné

Dwwatcher.exe

Le processus est appelé "Dr.Web Scanning Watcher" appartient au logiciel Dr.Web Anti-Virus de Doctor Web (www.drweb.com).

McTray.exe

Le processus est appelé  "McAfee Security Agent Taskbar Extension" ou "McTray Application" appartient au logiciel "McAfee Common Framework" ou "McAfee System Tray" de la compagnie McAfee (www.mcafee.com).

dwarkdaemon.exe

Le processus est appelé "Dr.Web Anti-Rootkit Server" appartient au logiciel "Dr.Web Anti-Virus" ou "Dr.Web® Anti-Rootkit Scanning Daemon" de la compagnie Doctor Web (www.drweb.com).

dwservice.exe

Le processus est appelé "Dr.Web Control Service" ou "DrWeb appartient au logiciel Dr.Web Security Space" ou "Dr.Web KATANA" ou "Dr.Web Antivirus" pour Windows ou "Dr.Web Antivirus pour Windows" de Doctor Web (www.drweb. com).

mfevtps.exe

Le processus est "McAfee Process Validation Service" appartient au logiciel "SYSCORE" ou à un service de protection de confiance de "McAfee Validation" ou à "SYSCORE.14.1.0.484.x64" ou "McAfee VirusScan Enterprise" de McAfee (www.mcafee.com).

dwengine.exe

Le processus est appelé "Dr.Web Scanning Engine" appartient au logiciel "Dr.Web® Anti-Virus Scanning Engine" ou "Dr.Web® Anti-Virus" de Doctor Web (www.drweb.com).

mcshield.exe

Le processus est appelé "On-Access Scanner service" ou "McAfee On-Access Scanner service" ou "NT On-Access Scanner service" ou "McAfee Scanner service"
appartient au logiciel "VSCORE.14.0.0.349.x86" ou "VSCORE" ou "Anti-Malware Core" ou "McAfee VirusScan Enterprise" ou "VSCORE.14.0.0.435.x86" ou "VirusScan" ou "VSCORE.14.0.0.423.x86" ou "McAfee On-Access Scanner" ou "VirusScan (Enterprise, ASaP & Retail.)" ou "VSCORE.13.3.2.116.x86" ou "McAfee AntiSpyware Enterprise" ou "VSCORE.14.0.0.384.x86" ou "VSCORE.13.3.2.101.x86" ou "VSCORE.14.0.0.433.x86" ou "McAfee McShield" ou "McAfee AntiSpyware Enterprise Module" ou "McAfee Virtual Technician" ou "VSCORE.13.3.0.139.x86" ou "McAfee Anti-Spyware" de la compagnie McAfee (www.mcafee.com) ou Network Associates (nai.com).

en gros les hash concerné servent à identifier la présence d'un anti-virus de type
www.mcafee.com ou www.drweb.com

Revenons à l'algorithme de la fonction utilisé par "BadRabbit", elle est identique à celle du malware dans la catégorie Ransomware  (Petya/Notpetya) . La seul différence est la valeur initialisation qui est dans le cas de Petya  0x12345678 et dans le cas de BalRabbit et simplement l'inverse 0x87654321.

Nous mettons l'exemple du code en C de notre programme reproduisant la fonction

DWORD CalcCustomHashBadRabbit(const char* pszProcessName)
{
            DWORD dwHash = 0x87654321;

            int iCurPos;
           
            char   cTmpVal;
            char* pbyEncCaract=NULL;
             
            DWORD dwFramePos;
            int iCountCycle = 0;

            unsigned int  uiProcessNameLen = strlen(pszProcessName);
            do
            {
                        iCurPos = 0;
                        if (uiProcessNameLen)
                        {
                                   dwFramePos = iCountCycle;
                                   do
                                   {
                                      pbyEncCaract = (char*)&dwHash + (dwFramePos & 0x0000003);
                                      cTmpVal = (*pbyEncCaract ^ LOBYTE(pszProcessName[iCurPos++])) - 1;
                                      dwFramePos++;
                                      *pbyEncCaract = cTmpVal;
                                   } while (iCurPos < uiProcessNameLen);
                        }
                        iCountCycle++;
            } while (iCountCycle < 3);

            return dwHash;
}

Dont voici le résultat dans un petit programme EzAnalyzeHashMalwareBadRabbit.exe



 
















I.    Conclusion


L'algorithme de hash n'est pas en soit nouveau, mais différant des fonction de hash basé sur des rotations de bit et de là il est assez simple de mettre en commun l'algorithme de hash sous la forme suivant:

DWORD CalcCustomHash(const char* pszProcessName,DWORD dwVectorInit)

ou le paramètre dwVectorInit est la valeur initialisation 0x12345678 ou 0x87654321  à suivre si d'autre malware utilise ce type de fonction de hash dans d'autre malware
et avec d'autre vecteur d'initialisation.