Comme nous l’avions promis dans l’un de nos précédents articles de blog sur les kits d’exploitation (Nuclear EK), nous allons examiner plus en profondeur l’Angler Exploit Kit. Angler EK est probablement le kit d’exploitation le plus sophistiqué actuellement utilisé par les cybercriminels. Il est à l’origine de solutions que d’autres kits d’exploitation ont commencé à utiliser plus tard, comme la détection antivirus et les fichiers d’amorçage cryptés. En outre, Angler a tendance à être le plus rapide à intégrer les derniers zero days, tels que le zero day Adobe Flash (CVE-2015-0311) d’il y a quelques semaines, et il emploie une technique d’obscurcissement unique en son genre. Enfin, Angler exécute le malware déposé depuis la mémoire, sans jamais avoir à écrire sur le disque dur ; cette technique unique parmi les kits d’exploitation rend extrêmement difficile sa détection par les technologies antivirus traditionnelles, qui s’appuient sur l’analyse du système de fichiers.
Bien qu’Angler soit le kit d’exploitation le plus avancé dans le paysage actuel des menaces, les clients de Websense sont protégés contre cette menace grâce à ACE, notre moteur de classification avancé, aux étapes suivantes :
- Étape 2 (leurre) – ACE dispose d’une détection pour les sites Web compromis.
- Étape 3 (Redirection) – ACE a une détection pour le code injecté qui redirige l’utilisateur vers la page d’exploitation.
- Étape 4 (Kit d’exploitation) – ACE a une détection pour le code malveillant qui tente d’exécuter cette cyberattaque.
- Etape 5 (Fichiers Dropper) – ACE dispose d’une détection pour les fichiers binaires associés à cette attaque
Obfuscation
La page d’atterrissage d’Angler se compose de quatre parties de base. Premièrement, il y a du texte anglais visible, qui est utilisé pour faire croire à la victime du kit d’exploitation qu’elle a navigué sur une page légitime. Deuxièmement, elle contient diverses routines de désobstruction pour dissimuler les véritables scripts malveillants. Ces scripts se trouvent dans les balises de classe p et sont codés en base64. Le décodage des chaînes base64 révèle le code obfusqué du kit d’exploitation. Enfin, la page de destination contient plusieurs chaînes cryptées, qui contiennent diverses URL menant aux différents exploits (Flash, Silverlight, Internet Explorer) inclus dans le kit.
Échantillons de la page d’atterrissage d’Angler
Code d’exploitation désobfusé
Une fois la page d’atterrissage désobfusée, la véritable nature du code est révélée. Angler, tout comme Nuclear et divers autres kits d’exploitation, utilise une deuxième couche d’obfuscation très basique pour rendre la détection par les produits de sécurité encore plus difficile.
Il utilise également la détection antivirus en plus de détecter diverses solutions de virtualisation (VMWare, VirtualBox, Parallels) ainsi qu’un proxy de débogage web appelé Fiddler, largement utilisé par les chercheurs en sécurité. La mise en œuvre de ces mesures rend très difficile l’observation et l’investigation de ce kit d’exploitation dans la nature, car la plupart des chercheurs en sécurité s’appuient souvent sur ces outils.
Détection de divers fichiers .sys et .dll qui appartiennent à des logiciels AV et de virtualisation
Détection deVMWare, VirtualBox, Parallels ainsi que du proxy de débogage web Fiddler
La caractéristique la plus unique de Angler est l’utilisation de ces chemins URL cryptés. Il utilise un simple chiffrement basé sur la transposition (en termes simples : brouiller les lettres) pour chiffrer et déchiffrer ces données.
La routine de déchiffrement est intégrée dans la partie obfusquée du kit d’exploitation.
La routine de décryptage telle que trouvée dans le kit
La routine de décryptage formatée et commentée
Nous allons utiliser un exemple très simple pour démontrer le fonctionnement du décryptage. Supposons que notre texte chiffré (données cryptées) est « TEER CSURH TO PLTAOEL IX TP » et que notre clé de décryptage est « OBFUSCATE ». Ce que fait Angler, c’est qu’il prend l’ordre alphabétique des lettres de la clé et réarrange le texte chiffré en fonction de cela. Par exemple:
OBFUSCATE → 6,2,5,9,7,3,1,8,4
Cela nous donne l’ordre des lettres dans le texte chiffré. En utilisant cela, nous pouvons facilement le décrypter en réorganisant les lettres.
Exemple de décryptage
Et enfin les espaces blancs sont supprimés de la chaîne décryptée . Évidemment, il s’agit d’une forme extrêmement rudimentaire de cryptage et il serait très facile de la craquer même sans la clé si (comme dans l’exemple ci-dessus) le texte en clair était composé de mots réels. Cependant, Angler utilise des URL hautement aléatoires, de sorte que ce type de cryptage est plus que suffisant pour cacher la vraie nature de ces chaînes et les chemins URL réels de divers produits de sécurité.
Le reste du code déobfusqué suit les modèles habituels des kits d’exploitation : il y a diverses routines de détection de plugin et de vérification de version afin que le kit d’exploitation » sache » quel(s) exploit(s) lancer sur la cible. Il y a également un certain nombre de routines de construction de shellcode, car Angler utilise un shellcode à plusieurs étapes, où plusieurs étapes sont codées et décodées par les étapes précédentes. Il inclut également une clé de cryptage/décryptage codée en dur pour le fichier dropper.
Clé de cryptage pour la charge utile
Multi stage Shellcode
Dropper
Si l’exploit réussit, la charge utile d’Angler est déposée sur le système de la victime. Pendant que la charge utile voyage à travers le réseau, elle est toujours cryptée et est décryptée plus tard par le shellcode de l’étape finale. Cette technique est utilisée pour rendre la détection du dropper malveillant très difficile pour les systèmes de détection d’intrusion (IDS) traditionnels. Comme nous l’avons déjà mentionné, Angler utilise des droppers « sans fichier », ce qui signifie qu’ils sont exécutés directement depuis la mémoire. Le dropper utilisé par Angler s’appelle Bedep, qui n’est en fait qu’un téléchargeur – c’est-à-dire qu’il n’est pas malveillant en soi, mais il est utilisé pour télécharger et exécuter différents logiciels malveillants.
La charge utile consiste en une combinaison de shellcode et de la DLL Bedep. Si les premiers octets de la charge utile sont « 909090 » (NOPs ou No Operations en assemblage x86), la DLL sera chargée depuis la mémoire, sinon elle sera écrite sur le disque comme un fichier dropper normal. Le shellcode est responsable de l’exécution de la DLL à partir de la mémoire.
Le shellcode résout des API telles que kernel32.dll et wininet.dll
Summary
Le kit d’exploitation Angler est sans aucun doute l’un des kits d’exploitation les plus dangereux qui existent dans la nature aujourd’hui. Il dispose de diverses techniques dans son arsenal pour déjouer les méthodes de détection traditionnelles telles que :
- Unique Obfuscation
- Détection des antivirus/logiciels de virtualisation
- Encryptage de la charge utile
- Infections sans fichier
En outre, Angler est souvent le premier à adopter les derniers exploits, qui incluent de temps en temps des zero days. La nature en constante évolution d’Angler met également en évidence la nécessité de solutions de sécurité qui offrent une protection sur l’ensemble de la chaîne de mise à mort au lieu de se concentrer sur une seule étape de celle-ci.