Ceci est un échantillon de cheval de Troie capable de contourner la grande majorité des antivirus et des sandboxes
Ci-dessous, je vais expliquer les technologies employées par ce cheval de Troie, en abordant les deux aspects : le shellcode et le chargeur.
Section du chargeur
1. Anti-sandbox
Il est bien connu que la détection anti-sandbox conventionnelle repose sur des opérations visant le processeur, la mémoire, le disque dur de l'hôte, etc. Cependant, je pense personnellement que cette approche n'est pas idéale, car certains antivirus ou sandboxes cloud détectent les fonctions anti-sandbox et surveillent des API sensibles, ce qui peut conduire à se faire repérer. Mon idée est donc de détecter les raccourcis du bureau, comme ceux des logiciels couramment utilisés (QQ, WeChat, DingTalk), afin d'échapper aux sandboxes cloud.
2. Surcharge de ntdll et appel dynamique des API
Le mécanisme de détection des antivirus classiques consiste à poser des hooks sur certaines API sensibles. Grâce aux techniques de surcharge de ntdll et d'appel dynamique d'API, nous pouvons contourner ces hooks et mettre en œuvre nos fonctionnalités. La surcharge de ntdll consiste à charger le ntdll.dll d'origine depuis le répertoire système et à remplacer la section de code (.text) de ntdll hookée dans le processus courant par le code d'origine. L'appel dynamique d'API consiste à parcourir la table d'exportation de la DLL cible, à faire correspondre le nom de la fonction à l'aide d'un hash, à obtenir l'adresse de la fonction cible puis à l'exécuter via un pointeur.
3. Séparation du shellcode et du chargeur
Outre l'encodage pour contourner les antivirus, le shellcode peut également être séparé du chargeur : si le shellcode n'est pas dans l'exe, les antivirus auront beaucoup de mal à détecter un problème.
Section shellcode
Méthode d'utilisation
Commencez par utiliser encode.cpp pour chiffrer le shellcode. Si vous écrivez le shellcode dans l'exe, veuillez le placer dans le tableau mac_shellcode de Unseparation_shellcode.cpp. Si vous souhaitez réaliser une séparation des paramètres, vous pouvez exécuter directement l'exe compilé + le shellcode
Merci d'avoir lu
Version anglaise
Ceci est un échantillon de cheval de Troie capable de contourner la grande majorité des antivirus et des sandboxes. Ci-dessous, j'expliquerai les technologies employées par ce cheval de Troie, en me concentrant à la fois sur le shellcode et le chargeur.
Section du chargeur
1. Anti-sandbox
Il est bien connu que la détection conventionnelle des fonctions anti-sandbox repose sur des opérations portant sur le processeur, la mémoire, le disque dur de l'hôte, etc. Cependant, je pense personnellement que cette approche n'est pas idéale, car certains antivirus ou sandboxes cloud surveillent les fonctions anti-sandbox et gardent un œil sur les API sensibles, ce qui peut conduire à une détection. Mon idée est donc de détecter les raccourcis du bureau, comme ceux des logiciels couramment utilisés tels que QQ, WeChat et DingTalk, afin d'échapper aux sandboxes cloud. 
2. Surcharge de ntdll et appel dynamique des API
Le mécanisme de détection des antivirus classiques consiste à poser des hooks sur certaines API sensibles. Par conséquent, nous pouvons contourner les hooks et atteindre nos objectifs en utilisant les techniques de surcharge de ntdll et d'appel dynamique d'API. La surcharge de ntdll consiste à charger le ntdll.dll d'origine depuis le répertoire système et à remplacer la section de code (.text) de ntdll hookée dans le processus courant par le code d'origine. L'appel dynamique d'API consiste à parcourir la table d'exportation de la DLL cible, à faire correspondre le nom de la fonction à l'aide d'un hash, à obtenir l'adresse de la fonction cible puis à l'exécuter via un pointeur.
3. Séparation du shellcode et du chargeur
Outre l'encodage pour contourner les antivirus, le shellcode peut également être séparé du chargeur. Si le shellcode n'est pas inclus dans le fichier exe, il devient très difficile pour les antivirus de détecter le moindre problème.
La section shellcode subit principalement un traitement d'obfuscation multicouche impliquant XOR, RC4, base64 et MAC. Le résultat final est au format d'adresse MAC, tirant parti de la tolérance de Windows pour les chaînes au format MAC.
Méthode d'utilisation
Commencez par utiliser encode.cpp pour chiffrer le shellcode. Si vous écrivez le shellcode dans un fichier exe, veuillez le placer dans le tableau mac_shellcode de Unseparation_shellcode.cpp. Si vous souhaitez obtenir une séparation des paramètres, vous pouvez exécuter directement l'exe compilé + le shellcode.
Merci d'avoir lu.