Héritier de Zeus: pourquoi le cheval de Troie IcedID est dangereux pour les clients des banques

Les experts de Group-IB ont analysé le cheval de Troie attaquant les clients des banques américaines et rendu publics les résultats d'une analyse approfondie du format de données de configuration dynamique avec des scripts Python et des informations sur les serveurs CnC.

image

En novembre 2017, une équipe de chercheurs d'IBM X-Force a publié un rapport sur un nouveau cheval de Troie - IcedID , qui s'adresse principalement aux clients des banques américaines. Le bot possède de nombreuses fonctionnalités du célèbre logiciel malveillant Zeus, notamment: le téléchargement et l'exécution de modules, la collecte et la transmission de données d'authentification au serveur, des informations sur le périphérique infecté et la réalisation d'une attaque man-in-the-browser (MITB). Malgré le fait que dans sa fonctionnalité, le nouveau cheval de Troie s'est avéré similaire à d'autres banquiers populaires - Trickbot, GOZI, Dridex, qui attaquent activement les clients des banques, IcedID utilise un format binaire non standard pour stocker les données de configuration. Une autre caractéristique distinctive de ce logiciel malveillant est la possibilité de déployer un serveur proxy directement sur la machine infectée pour mener une attaque MITB.

Texte: Ivan Pisarev, spécialiste de l'analyse des malwares Group-IB

Immédiatement, IcedID n’est pas aussi répandu que les autres chevaux de Troie, mais il dispose désormais de suffisamment de fonctionnalités pour atteindre ses objectifs, dont le vol des informations d’identification de la victime est le principal. Cela peut être réalisé de plusieurs manières, à partir du vol banal de fichiers et d'entrées de registre sur un ordinateur infecté, et se terminant par l'interception et la modification du trafic du navigateur crypté (attaque man-in-the-browser).

Dans le cas d'IcedID, des données ont été volées dans des comptes: Windows Live Mail, Windows Mail, RimArts, Poco Systems Inc, IncrediMail, The Bat! et Outlook. L'attaque MITB est effectuée à l'aide d'un serveur proxy, qui récupère un cheval de Troie sur un appareil infecté, passant ainsi tout le trafic réseau par lui-même et le modifiant. IcedID dispose également d'un module de traitement des commandes du serveur qui vous permet de télécharger et d'exécuter le fichier à distance (par exemple, dans le cas à l'étude, l'échantillon a chargé le module VNC, dont le code de programme a des sections de code similaires avec IcedID).

L'utilisation d'un serveur proxy pour MITB est un comportement atypique pour ce type de cheval de Troie. Le plus souvent, les logiciels malveillants sont intégrés dans le contexte du navigateur et redirigent les appels de fonction des bibliothèques standard vers ses fonctions de gestionnaire (exemple: WinHttpConnect () , InternetConnect () , InternetReadFile () , WinHttpReadData () , etc.). Auparavant, l'astuce proxy était déjà utilisée dans GootKit .

IcedID a été distribué à l'aide d'un autre malware, Emotet (il est actuellement souvent utilisé comme chargeur de démarrage, bien qu'il possède des fonctionnalités avancées) et comprenait déjà au début une longue liste de méthodes modernes de vol de données utilisateur.

Le cheval de Troie a maintenant des mécanismes anti-analyse plutôt faibles (cryptage de chaîne, en-tête corrompu) et n'a pas de méthodes de détection de VM. Du point de vue du chercheur, les logiciels malveillants sont toujours en cours de développement et ces mécanismes de protection seront ajoutés ultérieurement.

Le système de cyberintelligence Threat Intelligence Group-IB n'a pas détecté de ventes IcedID sur les forums thématiques, ce qui signifie soit l'émergence d'un nouveau groupe dans le domaine des chevaux de Troie bancaires, soit la vente du cheval de Troie via des canaux privés. Les objectifs du bot, à en juger par les données de configuration dynamiques (ci-après dénommées configs), se trouvent principalement aux États-Unis.

Liste des buts
Chase
Charles Schwab
Bank of America
USAA
American express
Wells fargo
Capital one
Banque commerciale TD
Banque TD
Banque centrale
US Bank
Union Bank of California
Amazon
PNC Online Banking
Synovus
BB&T Bank
Citibank
eBanking
Huntington
ashanalyzer
Commerce électronique
JPMorgan Chase
Cibc
Régions OnePass
Banque de chêne post
Comerica
Découvrir la banque
Keybank
Frost cash manager
Hsbc
Rbc
Halifax
Verizon Wireless
Lloyds bank
Banque M&T
Virwox
ADP

Cet article comprend une analyse détaillée du cheval de Troie, une analyse approfondie du format des configurations dynamiques avec des scripts Python et des informations sur CnC.

Partie technique


Description générale du travail du cheval de Troie


Initialement, la section .data du cheval de Troie est cryptée. Tout d'abord, après l'avoir démarré, il décrypte la section selon l'algorithme:

image

Les variables initial_seed et size_seed sont situées au début de la section de données (les 8 premiers octets de la section), après quoi des données chiffrées de taille octets de taille sont trouvées. La fonction make_seed () est une fonction unique de générateur de nombres pseudo-aléatoires ( PRNG) pour IcedID, à laquelle nous reviendrons plus d'une fois. Vous pouvez trouver la version Python de la fonction ici .

Initialement, le bot contient des chaînes cryptées. Pour faciliter l'analyse, un script a été décodé pour IDA Pro pour décrypter les chaînes (vous devez insérer l'adresse de la fonction de décryptage dans votre échantillon).

L'étape suivante consiste à ajouter un gestionnaire d'exceptions à l'aide de la fonction SetUnhandledExceptionFilter () . Si une exception se produit pendant le fonctionnement de l'application, elle redémarre simplement.

Après avoir ajouté un gestionnaire d'exceptions, le cheval de Troie collecte des informations sur le système infecté:

  1. Version du système d'exploitation
  2. Numéro de build du système d'exploitation
  3. Version du Service Pack
  4. Capacité du système
  5. Type d'OS

L'application crée un descripteur de sécurité: D: (A ;; GA ;;; WD) (A ;; GA ;;; AN) S: (ML ;; NW ;;; S-1-16-0) , puis alloue de la mémoire pour l'enregistrement des informations pendant le fonctionnement du cheval de Troie. Exemple de chaînes enregistrées (les chaînes ont été obtenues à l'aide d'un script dans l'IDA):

  1. E | C | IN | INS | ISF | CP% u
  2. I | C | IN | INT | CI | % u
  3. W | C | IN | INT | CI | CRLL

IcedID peut prendre plusieurs paramètres. Parmi eux:

  • --svc = - enregistre la chaîne du paramètre dans le registre par clé avec le nom IcedID_reg ("* p *") , où IcedID_reg (str) est la fonction de génération du nom de la clé à partir de la chaîne str (l'algorithme de génération des noms de clé de registre sera décrit plus loin), après quoi le cheval de Troie accède à un événement avec le nom Global \ <% Chaîne de caractères aléatoires%> . En cas d'erreur, le bot crée une copie de son processus avec le paramètre / w = . Si cela n'a pas pu être fait, cela crée une valeur dans le registre:

HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ Run \ <% Une chaîne de longueur 9 à partir de caractères aléatoires de l'alphabet [az]%>

assurant ainsi une persistance dans le système. Cette clé est destinée au lancement initial du cheval de Troie.

  • / u - par défaut, le malware essaie de s'exécuter en tant qu'administrateur de domaine (en utilisant le programme runas ). Si cet indicateur est présent, le cheval de Troie n'effectue pas cette opération et crée simplement sa copie dans le répertoire C: \ Users \ <% username%> \ AppData \ Local \ <% Une chaîne de longueur 9 à partir de caractères aléatoires de l'alphabet [az]%> avec le nom <% Une chaîne de longueur 9 à partir de caractères aléatoires de l'alphabet [az]%>. Exe , et écrit le chemin d'accès au fichier dans le registre, assurant ainsi une persistance dans le système.

HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ Run \ <% Une chaîne de longueur 9 à partir de caractères aléatoires de l'alphabet [az]%>

Il semble que cette clé soit utilisée lors de la mise à jour d'un banquier. Avant de redémarrer le cheval de Troie «s'endort» pendant 5 secondes.

  • / c - avant d'exécuter des fonctions malveillantes, le cheval de Troie «s'endort» pendant 5 secondes
  • / w = - enregistre une chaîne du paramètre dans le registre par clé avec le nom IcedID_reg ("* p *")

Après avoir traité les paramètres, l'application accède au registre et extrait les données de configuration dynamiques qui contiennent des adresses CnC, ainsi que des injections Web. Le format de stockage des données dans le registre est décrit dans les sections suivantes.

Après avoir accédé au registre, le programme crée un thread qui, une fois toutes les 5 ou 10 minutes (selon l'indicateur interne), contacte CnC afin de recevoir des commandes. Ici, il convient de noter le mécanisme non standard de «s'endormir» du bot entre les appels à CnC: les développeurs n'ont pas utilisé la fonction Sleep () standard, ils ont plutôt créé un événement dans un état sans signal et sans l'appeler dans l'état signal, appelez la fonction WaitForSingleObject () . Fonction de création de flux d'appels CnC:

image

L'analogue de la fonction Sleep () dans IcedID:

image

La longue période d'accès au serveur, ainsi que la «fonction sommeil» non standard sont très probablement conçues pour contrecarrer l'analyse.

SSL est utilisé pour masquer le trafic entre le serveur et l'application.

Après avoir démarré le thread, le bot «lève» le serveur proxy sur la machine locale afin de traiter le trafic sur la machine infectée.

Le protocole de communication du serveur et du périphérique infecté sera abordé dans les sections suivantes. Cependant, il convient de noter que le malware à la commande du serveur peut mettre à jour les configurations, démarrer et arrêter le serveur VNC, exécuter les commandes cmd.exe, télécharger des fichiers.

Interaction entre IcedID et le serveur CnC


La liste des adresses CnC est stockée dans le corps du banquier sous forme cryptée, ainsi que dans le registre sous forme de configuration dynamique. L'interaction entre le serveur et le cheval de Troie est réalisée à l'aide du protocole HTTPS. Envoie des données au serveur avec des requêtes POST, utilise GET pour recevoir des données.

La chaîne de requête du serveur est la suivante:

<% CnC%> /forum/viewtopic.php?a=<%Integer%>&b=<%Long integer%> & d = <% Integer%> & e = <% Integer%> & <% Autres données%>

Valeur du champ:

  • a - type de demande, ce champ peut prendre des valeurs:
    ValeurAction
    0,1Envoyer des informations sur une machine infectée
    2,3Envoyer d'autres données au serveur
    4Obtenez la dernière version des configurations dynamiques et mettez-les dans le registre en utilisant la clé avec le nom IcedID_reg ("* cfg1")
    5Obtenez la dernière version des configurations dynamiques et mettez-les dans le registre en utilisant la clé avec le nom IcedID_reg ("* cfg0")
    6Obtenez la dernière version des configurations dynamiques et mettez-les dans le registre en utilisant la clé avec le nom IcedID_reg ("* rtd") (adresses CnC)
    7Obtenez la dernière version du module VNC
    8Obtenez la dernière version du bot
  • b - ID de bot
  • d - drapeau
  • e - constante, située directement dans le code bot

De plus, les valeurs de champ dépendent du champ "a". Si c'est 0 ou 1, alors la requête ressemble à ceci:

POST /forum/viewtopic.php?a=<%0 ou 1%> & b = <% BotID%> & d = <% Integer%> & e = <% Constant%> & f = <% Cfg1 Checksum%> & g = <% Cfg0 Somme de contrôle%> & h = <% Rtd Somme de contrôle%> & r = <% VNC Somme de contrôle%> & i = <% Temps de demande%> HTTP / 1.1
Connexion: fermer
Type de contenu: application / x-www-form-urlencoded
Longueur du contenu:

Le corps de la demande contient des informations sur la machine infectée. Les informations sont fournies sous forme de:

k = <% String%> & l = <% String%>% j = <% Integer%> & n = <% Integer%> & m = <% String%>

Où:

  • k - nom de l'ordinateur en UNICODE
  • l - membre de domaine dans UNICODE
  • m - Informations système:
    1. Version du système d'exploitation
    2. Numéro de build du système d'exploitation
    3. Version du Service Pack
    4. Capacité du système
    5. Type d'OS

Si le champ est 2 ou 3, la requête ressemble à ceci:

POST /forum/viewtopic.php?a=<%3 ou 2%> & b = <% BotID%> & d = <% Integer%> & e = <% Constant%> HTTP / 1.1
Connexion: fermer
Type de contenu: application / octet-stream
Longueur du contenu:

Sinon, la demande est la suivante:

GET /forum/viewtopic.php?a=<%4-8%>&b=<%BotID%>&d=<%Integer%>&e=<%Constant%>&o=<%Object checksum%>
HTTP / 1.1
Connexion: fermer

Type de contenu: application / x-www-form-urlencoded
Longueur du contenu:

Des exemples de requêtes sont présentés dans les figures ci-dessous. En-tête du package lors de l'accès au serveur:

image

Corps du message:

image

Le cheval de Troie peut recevoir des commandes du serveur. Les commandes sont représentées sous forme de valeurs entières. Toutes les commandes arrivent au bot sous forme de chaînes dont les paramètres sont séparés par le symbole «;». Le programme peut traiter 23 commandes:

L'équipeValeur
0Ne fait rien (probablement à l'avenir, des fonctionnalités seront ajoutées)
1Mettez à jour la valeur avec la clé de registre nommée IcedID_reg ("* cfg0")
2Mettez à jour la valeur avec une clé de registre nommée IcedID_reg ("* cfg1")
3Mettez à jour la valeur de la clé de registre avec le nom IcedID_reg ("* rtd")
4Téléchargez le fichier, enregistrez-le dans le répertoire AppData et exécutez
5Exécutez le programme, le nom et les arguments de début sont des paramètres
6Obtenez des informations sur l'exécution des processus, notamment: PID et nom du processus
7Éteignez l'ordinateur avec les informations, comme paramètres de fonction:
SHTDN_REASON_FLAG_PLANNED
SHTDN_REASON_MINOR_INSTALLATION
SHTDN_REASON_MAJOR_APPLICATION
8Écrivez la valeur dans le registre (le nom est généré sur la base de l'algorithme décrit ci-dessous)
9Lisez la valeur dans le registre (le nom est généré en fonction de l'algorithme décrit ci-dessous)
10Supprimez la clé du registre (le nom est généré sur la base de l'algorithme décrit ci-dessous)
11Exécutez le module avancé de traitement des commandes à partir du serveur
12Arrêtez le module étendu pour le traitement des commandes à partir du serveur
13Mettre à jour le module VNC (situé dans le répertoire% TEMP%)
14Obtenez une liste de fichiers sur le bureau d'un appareil infecté
15Téléchargez le fichier, enregistrez-le sous le nom <% Chaîne de caractères aléatoires%>. Tmp et exécutez-le avec la clé \ u . Il semble que cette commande soit nécessaire pour mettre à jour la version du bot sur un appareil infecté.
16Supprimer un fichier dont le nom contient une chaîne (fourni en paramètre)
17Lancez le module de distribution réseau. La distribution se produit en copiant et en lançant le bot dans le répertoire Windows sur un autre appareil à l'aide du protocole LDAP.
18Obtenir les données du journal des robots
19Définissez l'événement d'accès au serveur sur l'état d'alarme
20Obtenez des informations de compte pour les applications suivantes: Windows Live Mail, Windows Mail, RimArts, Poco Systems Inc, IncrediMail, The Bat! et Outlook
21Modifier l'intervalle entre les appels du serveur
22Obtenez le chemin de la variable d'environnement, téléchargez le fichier et enregistrez-le le long de ce chemin
21Téléchargez le fichier dans le répertoire AppData, exécutez-le avec les paramètres / t = <% Handle de l'événement spécialement généré%> / f = <% Handle 2 de l'événement spécialement généré%> . Après avoir converti les événements en état d'alarme, le fichier téléchargé est supprimé du répertoire AppData

Si la commande est exécutée avec succès, le cheval de Troie envoie la chaîne "True" au serveur, sinon "False".

Dans le cas de la réception d'une commande pour lancer le module de commandes avancées, l'application envoie deux octets au serveur, après quoi elle attend une réponse. Le premier octet reçu du serveur correspond à la commande étendue de la table:

L'équipeValeur
5Démarrez un thread exécutant les commandes cmd.exe sur la machine infectée.
6Démarrez le serveur VNC. Dans le cas à l'étude, le serveur VNC a été présenté comme une bibliothèque DLL, qui avait un algorithme de cryptage de chaîne similaire.
7Exécutez la commande du tableau ci-dessus. Pour recevoir une commande normale, le cheval de Troie envoie deux caractères au serveur, notifiant au serveur qu'il est prêt en acceptant un bot de commande.

Un serveur VNC peut être démarré de deux manières possibles (selon l'indicateur interne):

  1. Utilisation de la fonction CreateProcessA () avec le paramètre kernel32 rundll32.exe, Sleep -s <% param%>
  2. Utilisation de la fonction CreateProcessA () avec le paramètre svchost.exe -s <% param%>

<% param%> est 16 octets dans la représentation sous forme de chaîne, remplis comme suit:

image

Immédiatement après le démarrage, le module VNC vérifie la présence du commutateur -s , après quoi il lit le paramètre passé et vérifie la condition:
paramValue[0] == paramValue[1] ^ (paramValue[3] | (paramValue[2] << 16)) 

et l'utilisation de la fonction DuplicateHandle () crée une copie du handle de socket pour une interaction supplémentaire avec le serveur.

Le paramètre StartupInfo de la fonction CreateProcessA () contient le nom du Desktop'a: Default <% flag%> par défaut . De plus, avant l'appel de fonction, l'adresse du module VNC est placée dans le paramètre ProcessInformation :

image


Comme le montre la liste, IcedID dispose d'une large gamme de capacités pour un contrôle complet de la machine infectée. Même si l'opérateur rencontre le problème de l'absence de toute fonction, il va simplement télécharger un autre programme à l'aide d'un cheval de Troie et effectuer les tâches qui lui sont assignées. Par exemple, fin décembre 2017, nous avons enregistré la distribution de TrickBot par ce banquier.

Informations de configuration


Génération de noms pour les entrées de registre


Toutes les données de configuration que le programme reçoit du serveur sont stockées dans le registre du périphérique infecté (à l'exception du module VNC, qui est stocké dans le répertoire% TEMP% au format tmp% 0.8X01.dat ).

Les noms des clés de registre qui stockent les données de configuration qui nous intéressent sont calculés à l'aide de la fonction suivante:

image

Comme vous pouvez le voir sur la figure, le nom de la clé est une valeur de hachage MD5 provenant de deux variables - str et computerSeed . Le type de données stockées dans la variable de registre dépend de la valeur de la première variable. Par exemple, avec une valeur variable de * cfg0 ou * cfg1, la clé de registre stocke les injections Web, avec une valeur de * rtd la clé stocke une liste CnC.

computerSeed est une variable unique à l'utilisateur. Il est calculé en fonction du SID de l'utilisateur. Le script fournit une version python du calcul de cette variable.

Chemin d'accès complet aux entrées de configuration dans le registre:

HKEY_CLASSES_ROOT \ CLSID \ <% Valeur MD5 au format: {% 0.8X-% 0.4X-% 0.4X-% 0.4X-% 0.4X% 0.8X}%>

L'algorithme décrit ci-dessus est précisément l'algorithme de génération du nom IcedID_reg () , qui a été mentionné à plusieurs reprises ci-dessus.

Nous avons trouvé les valeurs de chaîne suivantes qui sont impliquées dans la génération de noms de registre d'informations importantes pour le banquier:

  • * cfg0 - contient une liste commune d' injections Web
  • * cfg1 - contient une liste d'adresses et de chaînes pour voler complètement les données de la page
  • * rtd - une liste d'adresses CnC
  • * bc * - notifie l'état du module pour le traitement des commandes étendues à partir du serveur. Si cette entrée est dans le registre - le module est en cours d'exécution
  • * p * - enregistre les paramètres de démarrage avec les touches --svc = et / w =

Structure de stockage des fichiers de configuration dynamiques


Les configurations dynamiques sont stockées dans le registre sous forme cryptée. Le serveur VNC, qui se trouve dans le répertoire% TEMP%, est chiffré de la même manière.

Deux algorithmes sont utilisés pour le chiffrement des données: l'algorithme de cheval de Troie propriétaire et le RC4. Schéma d'algorithme de déchiffrement:

image

Passons de la théorie à la pratique. Données initialement chiffrées après lecture du registre:

image

Après avoir reçu les données, le malware les déchiffre en utilisant son propre algorithme:

image

Et encore une fois, nous rencontrons la fonction make_seed () !

Après le décryptage, nous avons (faites attention aux adresses - il est décrypté dans la même section de la mémoire):

image

Après le deuxième déchiffrement en mémoire, nous voyons ce qui suit:

image

Une fois les données décompressées et analysées. Il est à noter qu'avant de libérer des données, les données sont à nouveau cryptées à l'aide de RC4 - protection contre l'analyse dynamique de l'application.

La structure de données supplémentaire dépend du type de données de configuration. Par exemple, les données de configuration avec le préfixe rtd sont stockées au format:

 typedef struct CNCStruct { char signedMD5sum[128]; int checksum; BStrings cnc[N]; } CNCStruct; typedef struct BStrings { int length; char str[length]; } BStrings; 

Liste des adresses CnC dans une étude:

image

Avant d'accéder aux adresses CnC à partir de la liste reçue, le bot vérifie la signature numérique. La clé publique pour vérifier la signature est stockée dans le corps du bot sous forme cryptée. Après la procédure de vérification de signature, l'application «écrase» la clé publique, d'abord avec des données aléatoires, puis avec des zéros:

image

Les configurations avec le préfixe cfg sont stockées au format:

 typedef struct CfgStruct { int checksum; int elements_count; char config[]; } CfgStruct; 

Dans le cas étudié, nous avons vu les données suivantes:

image

Les données sont stockées dans un format binaire unique, qui sera discuté plus tard.

Vous pouvez voir l'algorithme pour générer des clés de registre et décrypter les données de configuration dans un script .

Algorithme d'analyse des données de configuration


Après avoir déchiffré les données, le programme les analyse et les enregistre sous la forme d'une liste liée, qui participe ensuite à l'analyse du trafic sur le périphérique infecté (MITB). Tout d'abord, les données sont divisées en blocs qui ont une structure:

 typedef struct BaseBlock { int size; char type; char global_flag; char data[size - 6]; } BaseBlock; 

La structure du champ de données dépend de l'indicateur de type . L'indicateur dans cette structure indique ce qui se passe lorsqu'une chaîne est trouvée dans l'URL / le corps de la demande. Le champ peut prendre les valeurs suivantes:

DrapeauValeur
0x10Remplacement partiel du corps de la page, en tant que paramètres - balises entre lesquelles il est nécessaire de remplacer, ainsi que la valeur par laquelle le corps sera remplacé
0x11.0x13Remplacement partiel du corps de la page, en tant que paramètres - la partie de la page qui doit être remplacée, ainsi que la valeur par laquelle le corps sera remplacé
0x12Remplacement du corps pleine page
0x20Vol du corps de la page. En tant que paramètres - balises, entre lesquelles se trouve une section de page d'intérêt
0x21Vol de pleine page
0x22Vol complet du corps de la page, le corps est enregistré dans le registre
0x2ERechercher dans le corps de la page des lignes avec les balises 0x40 et 0x41, en cas de détection - vol du corps de la page
0x30Demander le blocage
0x31Faites une capture d'écran de la page
0x32,0x33Rediriger vers une autre page (le chemin d'accès à la page est l'un des paramètres). De plus, le paramètre est la chaîne <% Registry Salt%> # <% URL%> , le bot accède à <% URL%> , charge les données à partir de là, puis les enregistre dans le registre à l'aide de la clé IcedID_reg (<% Registry Salt%>)
0x34Rediriger vers une autre page (le chemin d'accès à la page est l'un des paramètres)
0x40,0x41Chaînes de corps dans le corps de la page
0x51Ignorer la page
0x60Enregistrez la valeur de la variable dans le registre (remplace le corps de la page par "True" ou "False" selon le résultat de la commande, le nom est généré en fonction de l'algorithme décrit ci-dessus)
0x61Démontrer une variable du registre (le nom est généré sur la base de l'algorithme décrit ci-dessus)
0x62Supprimer une variable du registre (remplace le corps de la page par "True" ou "False" selon le résultat de la commande, le nom est généré en fonction de l'algorithme décrit ci-dessus)
0x63Exécutez le module avancé de traitement des commandes à partir du serveur (remplace le corps de la page par «Vrai» ou «Faux» selon le résultat de la commande)
0x64Enregistrez le corps de la page dans la mémoire du bot (remplace le corps de la page par "True" ou "False" selon le résultat de la commande)
La structure du champ de données si le type est 0x40 ou 0x41:

 typedef struct ConfigBlock { BStrings patterns[N]; int(0); } ConfigBlock; 

Sinon, la structure du champ:

 typedef struct BaseBlock { int typeSizeStr; string urlStr; int flagSize; char flag[flagSize]; int firstOptStrSize; char firstOptStr[firstOptStrSize]; int secondOptStrSize; char secondOptStr[secondOptStrSize]; int thirdOptStrSize; char thirdOptStr[thirdOptStrSize]; } BaseBlock; 

Examinons de plus près l'un des exemples de blocs:

image

Tout d'abord, faites attention au champ "Type de bloc de configuration" dans le bloc "Informations communes du bloc de configuration". Il s'agit de 0x11, ce qui signifie que lorsqu'un utilisateur charge une page dont l'URL relève de la règle d'expression régulière ^ [^ =] * \ / wcmfd \ / wcmpw \ / CustomerLogin $ , la ligne <body (deuxième argument) est remplacée par la ligne < body style = "display: none;" (troisième argument).

Dans la mémoire de l'application, une liste liée est créée pour chaque type. L'algorithme d'analyse des listes chaînées est présenté dans la figure ci-dessous sous la forme d'un écran IDA Pro. Vous pouvez voir le script Python pour les pars des données de configuration ici .

image

Informations CnC


Après plusieurs mois de suivi du développement d'IcedID, nous avons trouvé de nombreux domaines que le cheval de Troie a inclus dans la liste des configurations dynamiques de la section CnC. Nous représentons les domaines sous forme de correspondance (e-mail à partir duquel l'enregistrement a eu lieu → domaine):
MailDomaines
davidphugley@jourrapide.compercalabia.com
borrespons.com
divorough.com
eyrannon.com
britically.com
joshuastaube@dayrep.commanismay.com
deterhood.com
marrivate.com
greatoric.com
phonetarif.com
CynthiaTHeller@grr.labinncu.net
PatriceAAdams@grr.laarcadyflyff.com
LindaJRowan@dayrep.comyutlitsi.com
SeanHumphreys@pokemail.neturnachay.com
RuthFThigpen@pokemail.netoksigur.net
FlorenceTButler@pokemail.netrfisoty.com
FreidaDDelgado@pokemail.neturnisim.net
TinaLHobson@grr.lacupicratings.com
ElisaRTucker@pokemail.netfreegameshacks.net
DaleKMontes@pokemail.netgordondeen.net
patrickggutierez@dayrep.compauvresloo.com
dismissey.com
euphratt.com
detrole.com
JustineRBoatner@pokemail.netlumpyve.com
MatthewAPerkins@grr.lagooblesooq.com
fzlajsf.net
JosephLSmith@grr.lanewpctoday.com
triodgt.com
DominicNDecker@pokemail.netonsunga.net
MarcellaBCraighead@pokemail.netrybatas.com
KellyJMaldonado@grr.lanetocraze.net
irtazin.net

Examinons maintenant de plus près les utilisateurs auprès desquels les domaines ont été enregistrés:

Informations sur les inscrits
Courriel davidphugley@jourrapide.com :

  • Registraire: PDR Ltd. d / b / a PublicDomainRegistry.com
  • Nom: David P. Hugley (inscrit, administrateur, technicien)
  • Rue: 2453 Round Table Drive (inscrit, administrateur, technicien)
  • Ville: Hamilton (inscrit, administrateur, technicien)
  • État: Ohio (inscrit, administrateur, technicien)
  • Postal: 45011 (inscrit, administrateur, technicien)
  • Pays: États-Unis (inscrit, administrateur, technicien)
  • Téléphone: 15138878784 (inscrit, administrateur, technicien)

Courriel joshuastaube@dayrep.com :

  • Registraire: PDR Ltd. d / b / a PublicDomainRegistry.com
  • Nom: Joshua S. Taube (inscrit, administrateur, technicien)
  • Organisation:
  • Rue: 2173 Kyle Street (inscrit, administrateur, technicien)
  • Ville: Hay Springs (inscrit, administrateur, technicien)
  • État: Nevada (inscrit, administrateur, technicien)
  • Postal: 69347 (inscrit, administrateur, technicien)
  • Pays: États-Unis (inscrit, administrateur, technicien)
  • Téléphone: 13086385612 (inscrit, administrateur, technicien)

Envoyez un courriel à CynthiaTHeller@grr.la :

  • Registraire: Eranet International Limited
  • Nom: Cynthia Heller (titulaire, administrateur, facturation, technologie)
  • Organisation:
  • Rue: 396 Tennessee Avenue (inscrit, administrateur, facturation, technologie)
  • Ville: Southfield (inscrit, administrateur, facturation, technologie)
  • État: MX (inscrit, administrateur, facturation, technologie)
  • Postal: 48034 (inscrit, administrateur, facturation, technologie)
  • Pays: États-Unis (inscrit, administrateur, facturation, technologie)
  • Téléphone: 12482469621 (inscrit, administrateur, facturation, technologie)

Courriel PatriceAAdams@grr.la :

  • Registraire: Eranet International Limited
  • Nom: Patrice Adams (inscrit, administrateur, facturation, technologie)
  • Organisation
  • Rue: 3997 Marietta Street (inscrit, administrateur, facturation, technologie)
  • Ville: Cazadero (inscrit, administrateur, facturation, technologie)
  • État: JL (inscrit, administrateur, facturation, technologie)
  • Postal: 95421 (inscrit, administrateur, facturation, technologie)
  • Pays: États-Unis (inscrit, administrateur, facturation, technologie)
  • Téléphone: 17076322681 (inscrit, administrateur, facturation, technologie)

Envoyez un courriel à LindaJRowan@dayrep.com :

  • Registraire: Eranet International Limited
  • Nom: Linda Rowan (titulaire, administrateur, facturation, technologie)
  • Organisation:
  • Rue: 1908 Luke Lane (inscrit, administrateur, facturation, technologie)
  • Ville: Elk City (inscrit, administrateur, facturation, technologie)
  • État: EK (inscrit, administrateur, facturation, technologie)
  • Postal: 73644 (inscrit, administrateur, facturation, technologie)
  • Pays: États-Unis (inscrit, administrateur, facturation, technologie)
  • Téléphone: 15802259140 (inscrit, administrateur, facturation, technologie)

Envoyez un courriel à SeanHumphreys@pokemail.net :

  • Registraire: Eranet International Limited
  • Nom: Sean Humphreys (inscrit, administrateur, facturation, technologie)
  • Organisation:
  • Rue: 4661 Kincheloe Road (inscrit, administrateur, facturation, technologie)
  • Ville: Portland (inscrit, administrateur, facturation, technologie)
  • État: EL (inscrit, administrateur, facturation, technologie)
  • Postal: 97205 (inscrit, administrateur, facturation, technologie)
  • Pays: États-Unis (inscrit, administrateur, facturation, technologie)
  • Téléphone: 16384273711 (inscrit, administrateur, facturation, technologie)

Envoyez un courriel à RuthFThigpen@pokemail.net :

  • Registraire: Eranet International Limited
  • Nom: Ruth Thigpen (titulaire, administrateur, facturation, technologie)
  • Organisation
  • Rue: 765 Michael Street (inscrit, administrateur, facturation, technologie)
  • Ville: Houston (inscrit, administrateur, facturation, technologie)
  • État: DK (inscrit, administrateur, facturation, technologie)
  • Postal: 77021 (inscrit, administrateur, facturation, technologie)
  • Pays: États-Unis (inscrit, administrateur, facturation, technologie)
  • Téléphone: 17137485876 (inscrit, administrateur, facturation, technologie)

Courriel FlorenceTButler@pokemail.net :

  • Registraire: Eranet International Limited
  • Nom: Florence Butler (titulaire, administrateur, facturation, technologie)
  • Organisation:
  • Rue: 4554 Par Drive (inscrit, administrateur, facturation, technologie)
  • Ville: Lompoc (inscrit, administrateur, facturation, technologie)
  • État: JL (inscrit, administrateur, facturation, technologie)
  • Postal: 93436 (inscrit, administrateur, facturation, technologie)
  • Pays: États-Unis (inscrit, administrateur, facturation, technologie)
  • Téléphone: 198058660048 (inscrit, administrateur, facturation, technologie)

Courriel FreidaDDelgado@pokemail.net :

  • Registraire: Eranet International Limited
  • Nom: Freida Delgado (titulaire, administrateur, facturation, technologie)
  • Organisation:
  • Rue: 4439 Burning Memory Lane (inscrit, administrateur, facturation, technologie)
  • Ville: Philadelphie (inscrit, administrateur, facturation, technologie)
  • État: BX (inscrit, administrateur, facturation, technologie)
  • Postal: 19115 (inscrit, administrateur, facturation, technologie)
  • Pays: États-Unis (inscrit, administrateur, facturation, technologie)
  • Téléphone: 12153306416 (inscrit, administrateur, facturation, technologie)

Envoyez un courriel à TinaLHobson@grr.la :

  • Registraire: Eranet International Limited
  • Nom: Tina Hobson (titulaire, administrateur, facturation, technologie)
  • Organisation:
  • Rue: 3960 Woodridge Lane (inscrit, administrateur, facturation, technologie)
  • Ville: Memphis (inscrit, administrateur, facturation, technologie)
  • État: TN (inscrit, administrateur, facturation, technologie)
  • Postal: 38110 (inscrit, administrateur, facturation, technologie)
  • Pays: États-Unis (inscrit, administrateur, facturation, technologie)
  • Téléphone: 19012994734 (inscrit, administrateur, facturation, technologie)

Envoyez un courriel à ElisaRTucker@pokemail.net :

  • Registraire: Eranet International Limited
  • Nom: Elisa Tucker (titulaire, administrateur, facturation, technologie)
  • Organisation
  • Rue: 3316 Corbin Branch Road (inscrit, administrateur, facturation, technologie)
  • Ville: Johnson City (inscrit, administrateur, facturation, technologie)
  • État: TN (inscrit, administrateur, facturation, technologie)
  • Postal: 37601 (inscrit, administrateur, facturation, technologie)
  • Pays: États-Unis (inscrit, administrateur, facturation, technologie)
  • Téléphone: 14234332211 (inscrit, administrateur, facturation, technologie)

Courriel DaleKMontes@pokemail.net :

  • Registraire: Eranet International Limited
  • Nom: Dale Montes (inscrit, administrateur, facturation, technologie)
  • Organisation:
  • Rue: 2719 Norman Street (inscrit, administrateur, facturation, technologie)
  • Ville: Los Angeles (inscrit, administrateur, facturation, technologie)
  • État: JL (inscrit, administrateur, facturation, technologie)
  • Postal: 90008 (inscrit, administrateur, facturation, technologie)
  • Pays: États-Unis (inscrit, administrateur, facturation, technologie)
  • Téléphone: 13232919311 (inscrit, administrateur, facturation, technologie)

Courriel patrickggutierez@dayrep.com :

  • Registraire: PDR Ltd. d / b / a PublicDomainRegistry.com
  • Nom: Patrick G. Gutierez (inscrit, administrateur, technicien)
  • Organisation:
  • Rue: 1146 Mount Olive Road (inscrit, administrateur, technicien)
  • Ville: Atlanta (inscrit, administrateur, technicien)
  • État: Géorgie (inscrit, administrateur, technicien)
  • Postal: 30328 (inscrit, administrateur, technicien)
  • Pays: États-Unis (inscrit, administrateur, technicien)
  • Téléphone: 16789874672 (inscrit, administrateur, technicien)

Courriel JustineRBoatner@pokemail.net :

  • Registraire: Eranet International Limited
  • Nom: Justine Boatner (inscrit, administrateur, facturation, technologie)
  • Organisation:
  • Rue: 2875 Kemper Lane (inscrit, administrateur, facturation, technologie)
  • Ville: Kearns (inscrit, administrateur, facturation, technologie)
  • État: YT (inscrit, administrateur, facturation, technologie)
  • Postal: 84118 (inscrit, administrateur, facturation, technologie)
  • Pays: États-Unis (inscrit, administrateur, facturation, technologie)
  • Téléphone: 18019026902 (inscrit, administrateur, facturation, technologie)

Envoyez un courriel à MatthewAPerkins@grr.la :

  • Registraire: Eranet International Limited
  • Nom: Matthew Perkins (inscrit, administrateur, facturation, technologie)
  • Organisation:
  • Rue: 2507 Locust Street (inscrit, administrateur, facturation, technologie)
  • Ville: Ellaville (inscrit, administrateur, facturation, technologie)
  • État: QZ (inscrit, administrateur, facturation, technologie)
  • Postal: 31806 (inscrit, administrateur, facturation, technologie)
  • Pays: États-Unis (inscrit, administrateur, facturation, technologie)
  • Téléphone: 12299379022 (inscrit, administrateur, facturation, technologie)

Envoyez un courriel à JosephLSmith@grr.la :

  • Registraire: Eranet International Limited
  • Nom: Joseph Smith (inscrit, administrateur, facturation, technologie)
  • Organisation:
  • Rue: 2808 Ruckman Road (inscrit, administrateur, facturation, technologie)
  • Ville: Oklahoma City (inscrit, administrateur, facturation, technologie)
  • État: EK (inscrit, administrateur, facturation, technologie)
  • Postal: 73102 (inscrit, administrateur, facturation, technologie)
  • Pays: États-Unis (inscrit, administrateur, facturation, technologie)
  • Téléphone: 14058506091 (inscrit, administrateur, facturation, technologie)

Courriel DominicNDecker@pokemail.net :

  • Registraire: Eranet International Limited
  • Nom: Dominic Decker (inscrit, administrateur, facturation, technologie)
  • Organisation:
  • Rue: 1169 Golden Ridge Road (inscrit, administrateur, facturation, technologie)
  • Ville: Gloversville (inscrit, administrateur, facturation, technologie)
  • État: NY (inscrit, administrateur, facturation, technologie)
  • Postal: 12078 (inscrit, administrateur, facturation, technologie)
  • Pays: États-Unis (inscrit, administrateur, facturation, technologie)
  • Téléphone: 15187485876 (inscrit, administrateur, facturation, technologie)

Envoyez un courriel à MarcellaBCraighead@pokemail.net :

  • Registraire: Eranet International Limited
  • Nom: Marcella Craighead (titulaire, administrateur, facturation, technologie)
  • Organisation:
  • Rue: 1659 Lilac Lane (inscrit, administrateur, facturation, technologie)
  • Ville: Savannah (inscrit, administrateur, facturation, technologie)
  • État: QZ (inscrit, administrateur, facturation, technologie)
  • Postal: 31401 (inscrit, administrateur, facturation, technologie)
  • Pays: États-Unis (inscrit, administrateur, facturation, technologie)
  • Téléphone: 19125956971 (inscrit, administrateur, facturation, technologie)

Envoyez un courriel à KellyJMaldonado@grr.la :

  • Registraire: Eranet International Limited
  • Nom: Kelly Maldonado (inscrit, administrateur, facturation, technologie)
  • Organisation: NA
  • Rue: 4391 Ben Street (inscrit, administrateur, facturation, technologie)
  • Ville: Albany (inscrit, administrateur, facturation, technologie)
  • État: NY (inscrit, administrateur, facturation, technologie)
  • Postal: 12207 (inscrit, administrateur, facturation, technologie)
  • Pays: États-Unis (inscrit, administrateur, facturation, technologie)
  • Téléphone: 15182623616 (inscrit, administrateur, facturation, technologie)


Enfin, considérez la chronologie du changement des adresses IP de domaine. Toutes les adresses IP ont été ajoutées au tableau depuis novembre 2017:

Tableau d'adresses IP
DomaineIPPaysVu pour la première fois dans la nature
gooblesooq.com185.127.26.227RU07/11/2017
irtazin.net185.127.26.227RU07/11/2017
netocraze.net185.5.251.33RU07/11/2017
triodgt.com185.5.251.33RU07/11/2017
newpctoday.com185.5.251.33RU07/11/2017
fzlajsf.net185.127.26.227RU25/11/2017
netocraze.net185.48.56.139Nl27/11/2017
triodgt.com185.48.56.139Nl27/11/2017
newpctoday.com185.48.56.139Nl29/11/2017
netocraze.net185.22.65.17KZ01/12/2017
triodgt.com185.22.65.17KZ01/12/2017
newpctoday.com185.22.65.17KZ01/12/2017
gordondeen.net185.127.26.227RU11/11/2017
netocraze.net46.148.26.106UA11/11/2017
arcadyflyff.com46.148.26.106UA12/12/2017
cupicratings.com46.148.26.106UA12/12/2017
freegameshacks.net185.127.26.227RU12/12/2017
newpctoday.com46.148.26.106UA12/12/2018
onsunga.net107.150.99.20CN12/12/2017
oksigur.net107.150.99.20CN12/12/2017
rfisoty.com107.150.99.20CN12/12/2017
rybatas.com107.150.99.20CN12/12/2017
urnachay.com107.150.99.20CN12/12/2017
rfisoty.com46.148.26.106UA24/01/2018
rybatas.com185.127.26.227RU24/01/2018
urnachay.com185.127.26.227RU24/01/2018
yutlitsi.com185.127.26.227RU24/01/2018
urnisim.net185.127.26.227RU24/01/2018
oksigur.net185.127.26.227RU26/01/2018
urnachay.com109.234.35.121RU31/01/2018
oksigur.net109.234.35.121RU31/01/2018
yutlitsi.com109.234.35.121RU1/2/2018
urnisim.net109.234.35.121RU1/2/2018
divorough.com46.148.26.106UA21/02/2018
percalabia.com109.234.35.121RU22/02/2018
borrespons.com46.148.26.106UA26/02/2018
britically.com46.148.26.106UA26/02/2018
eyrannon.com109.234.35.121RU26/02/2018
deterhood.com109.234.35.121RU1/3/2018
greatoric.com109.234.35.121RU1/3/2018
manismay.com46.148.26.106UA1/3/2018
marrivate.com109.234.35.121RU1/3/2018
moindal.com46.148.26.106UA1/3/2018
phonetarif.com46.148.26.106UA1/3/2018
moindal.com185.169.229.119CH05/03/2018
dismissey.com46.148.26.106UA04/03/2018
euphratt.com109.234.35.121RU04/04/2018
percalabia.com46.148.26.11UA04/03/2018
deterhood.com46.148.26.11UA24/04/2018
eyrannon.com46.148.26.11UA24/04/2018
greatoric.com46.148.26.11UA24/04/2018
marrivate.com46.148.26.11UA24/04/2018
euphratt.com46.148.26.11UA25/04/2018
borrespons.com185.48.56.134Nl5/7/2018
britically.com185.48.56.134Nl5/7/2018
dismissey.com185.48.56.134Nl5/7/2018
divorough.com185.48.56.134Nl5/7/2018
rfisoty.com185.48.56.134Nl5/7/2018
detrole.com109.236.87.25Nl08/05/2018
manismay.com185.48.56.134Nl08/05/2018
phonetarif.com185.48.56.134Nl13/05/2018
binncu.net46.148.26.106UA17/05/2018
urnisim.net46.148.26.11UA17/05/2018
urnachay.com46.148.26.11UA18/05/2018
yutlitsi.com46.148.26.11UA18/05/2018
oksigur.net46.148.26.11UA21/05/2018
greatoric.com5.187.0.158DE22/05/2018
marrivate.com5.187.0.158DE22/05/2018
percalabia.com5.187.0.158DE22/05/2018
urnachay.com5.187.0.158DE22/05/2018
yutlitsi.com5.187.0.158DE22/05/2018
lumpyve.com185.48.56.134Nl24/05/2018
urnisim.net5.187.0.158DE27/05/2018
borrespons.com85.143.202.82RU06/07/2018
manismay.com85.143.202.82RU06/07/2018
phonetarif.com85.143.202.82RU06/07/2018
rfisoty.com85.143.202.82RU06/07/2018
borrespons.com212.83.61.213DE20/06/2018
manismay.com212.83.61.213DE20/06/2018
rfisoty.com212.83.61.213DE20/06/2018
lumpyve.com212.83.61.213DE20/06/2018
phonetarif.com212.83.61.213DE20/06/2018


Après avoir étudié les données présentées, nous pouvons résumer que tous les domaines sont enregistrés pour le courrier généré à l'aide du service de courrier temporaire. Le titulaire fictif est situé aux États-Unis, tandis que les domaines eux-mêmes sont situés en Russie, en Ukraine, aux Pays-Bas, en Chine, au Kazakhstan et en Allemagne (récemment, il y a eu une tendance à «déplacer» les domaines en Ukraine et en Allemagne). Tous les domaines se trouvent dans les zones de domaine "com" et "net". L'alphabet qui compose le domaine comprend uniquement les lettres de l'alphabet anglais. Côté CnC, le serveur Web OpenResty est levé.

Conclusion


Malgré «l'antiquité» des chevaux de Troie de type Zeus, leur pertinence ne tombe pas. En conséquence, IcedID apparaît dans l'arène des chevaux de Troie destinés aux clients des banques. Bien que le banquier disposait déjà d'une longue liste d'opportunités au départ, il continue de s'améliorer: les méthodes de déballage deviennent de plus en plus compliquées et la liste des objectifs s'allonge. Très probablement, à l'avenir, le programme malveillant acquerra des mécanismes anti-analyse, et le serveur CnC donnera sélectivement des injections Web aux appareils infectés. Dans l'intervalle, les chevaux de Troie ne satisfont pas à toutes les exigences de leurs «utilisateurs», comme en témoigne l'utilisation de TrickBot en décembre dernier avec IcedID.

Group-IB sait tout sur la cybercriminalité, mais raconte les choses les plus intéressantes.

La chaîne Telegram pleine d'action (https://t.me/Group_IB) sur la sécurité des informations, les pirates et les cyberattaques, les hacktivistes et les pirates Internet. Enquêtes sur la cybercriminalité sensationnelle par étapes, cas pratiques utilisant les technologies du Groupe IB et, bien sûr, recommandations sur la façon d'éviter de devenir une victime sur Internet.

Groupe de chaînes YouTube -IB
Photowire Group-IB sur Instagram www.instagram.com/group_ib
Nouvelles brèves Twitter twitter.com/GroupIB

Group-IB est l'un des principaux développeurs de solutions pour détecter et prévenir les cyberattaques, détecter les fraudes et protéger la propriété intellectuelle dans un réseau dont le siège est à Singapour.

Source: https://habr.com/ru/post/fr418189/


All Articles