Des cybercriminels ciblent les développeurs via de faux entretiens d'embauche dans le but de les pousser à installer une porte dérobée en Python,
une méthode qui exploite la confiance du développeur dans le processus de candidature
Une nouvelle campagne, baptisée “Dev Popper”, vise les développeurs de logiciels avec de faux entretiens d’embauche dans le but de les tromper et de les inciter à installer un cheval de Troie Python à distance (RAT). Les développeurs sont invités à effectuer des tâches supposément liées à l’entretien, telles que le téléchargement et l’exécution de code depuis GitHub, dans le but de rendre l’ensemble du processus légitime. Cependant, l’objectif des acteurs de la menace est de faire en sorte que leurs cibles téléchargent un logiciel malveillant qui collecte des informations système et permet un accès à distance à l’hôte. Selon les analystes de Securonix, la campagne est probablement orchestrée par des cybercriminels nord-coréens, bien que les connexions ne soient pas suffisamment solides pour l’attribution.
L'ingénierie sociale est une tactique avancée utilisée par les cybercriminels pour manipuler les individus afin qu'ils divulguent des informations confidentielles ou effectuent des actions qu'ils n'auraient normalement pas faites. L'objectif de l'attaquant est de tromper l'utilisateur pour qu'il se compromette à son insu ou compromette son lieu de travail. Contrairement aux méthodes de piratage traditionnelles qui reposent sur l'exploitation, l'ingénierie sociale cible les vulnérabilités humaines en exploitant la manipulation psychologique. Cette méthode joue sur les traits humains fondamentaux tels que la confiance, la peur ou le désir d'être simplement utile.
Dans le cas de la campagne d'attaque Dev Popper que Securonix a observée, une autre forme d'ingénierie sociale a été observée ; elle consiste à cibler des groupes professionnels spécifiques tels que les développeurs de logiciels. Cette technique, bien qu'elle ne soit pas extrêmement répandue en ce moment, est toujours d'actualité et Securonix rappelle qu'elle a été signalée à plusieurs reprises dans le passé par des cybercriminels nord-coréens.
En résumé, les attaquants organisent de faux entretiens d'embauche pour les développeurs en se faisant passer pour des recruteurs légitimes. Au cours de ces entretiens frauduleux, les développeurs sont souvent invités à effectuer des tâches qui impliquent le téléchargement et l'exécution de logiciels à partir de sources qui semblent légitimes, telles que GitHub. Le logiciel contenait une charge utile Node JS malveillante qui, une fois exécutée, compromettait le système du développeur.
Cette méthode est efficace car elle exploite l'engagement professionnel et la confiance du développeur dans le processus de candidature, où le refus d'exécuter les actions de l'intervieweur pourrait compromettre l'opportunité d'emploi. Les attaquants adaptent leur approche pour paraître aussi crédibles que possible, souvent en imitant de vraies entreprises et en reproduisant des processus d'entretien réels. Cette apparence de professionnalisme et de légitimité donne à la cible un faux sentiment de sécurité, ce qui facilite le déploiement de logiciels malveillants sans éveiller les soupçons.
Chaîne d’infection en plusieurs étapes
Les attaquants prennent contact en se faisant passer pour des employeurs cherchant à pourvoir des postes de développeurs de logiciels. Pendant l’entretien, les candidats sont invités à télécharger et à exécuter ce qui est présenté comme une tâche de codage standard à partir d’un dépôt GitHub. Le fichier est une archive ZIP contenant un package NPM, qui comprend un fichier README.md ainsi que des répertoires frontend et backend.
Dans le répertoire Backend se trouve un seul fichier JavaScript qui, à première vue, semble être un simple extrait de code utilisant Mongoose, un paquetage Node.js qui permet la modélisation d'objets MongoDB dans un environnement asynchrone.
Cependant, un examen plus approfondi révèle une énorme ligne de code hautement obscurci lorsque l'on fait défiler la page vers la droite. Un exemple de la taille de cette ligne peut être vu en regardant la barre de défilement dans la figure ci-dessus.
Le fait de retirer le code JavaScript de imageDetails.js et de le placer dans son propre fichier permet de l'analyser un peu plus facilement. Le code est obscurci en utilisant plusieurs couches d'obscurcissement, y compris base64 et des substitutions de variables.
Une fois que le développeur exécute le package NPM, un fichier JavaScript obfusqué (“imageDetails.js”) caché dans le répertoire backend est activé, exécutant des commandes ‘curl’ via le processus Node.js pour télécharger une archive supplémentaire (“p.zi”) depuis un serveur externe.
Le fichier « .npl » est techniquement un fichier Python, sans extension, et utilise un point de départ « . » pour indiquer au système d'exploitation qu'il s'agit d'un fichier caché. Selon les paramètres du système d'exploitation, ce fichier peut être caché ou non à la vue de l'utilisateur.
Le fichier contient une charge utile base64 importante et utilise une combinaison de manipulation et de décodage de chaînes pour exécuter le code Python caché à l'intérieur. Le codage Base64 et la logique XOR sont utilisés pour le contenu de la chaîne cachée. Celle-ci est ensuite exécutée en tant que code Python à l'aide de exec().
L'archive contient donc la charge utile de l'étape suivante, un script Python obscurci (« npl ») qui fonctionne comme un RAT.
Exécution de code Python
Securonix explique que la première chaîne de code décodée s'exécute et recueille des informations sur le système et le réseau d'un ordinateur infecté, puis envoie ces données à un serveur distant :
- Type de système d'exploitation
- le nom d'hôte
- Version du système d'exploitation
- Nom d'utilisateur de l'utilisateur connecté
- Un identifiant unique pour l'appareil (uuid) généré par hachage de l'adresse MAC et du nom d'utilisateur.
La deuxième chaîne décodée et exécutée est beaucoup plus longue que la première et contient beaucoup plus de fonctionnalités. Une fois exécuté, le script fonctionne de la même manière qu'un RAT (Remote Access Trojan), permettant à l'attaquant d'interagir à distance avec la machine de la victime. Après avoir analysé la partie décodée du script, Securonix a observé les capacités suivantes :
- Création de réseaux et de sessions : Utilisé pour les connexions persistantes : Cette fonction permet d'établir des connexions TCP persistantes, y compris la structuration et l'envoi de données au format JSON.
- Interaction avec le système de fichiers : Contient des fonctions permettant de parcourir les répertoires et de filtrer les fichiers sur la base d'extensions spécifiques et de répertoires à exclure. Il peut également localiser et potentiellement exfiltrer des fichiers qui ne correspondent pas à certains critères (tels que la taille et l'extension du fichier).
- Exécution de commandes à distance : Le script contient plusieurs fonctions qui permettent l'exécution de commandes et de scripts de l'interpréteur de commandes du système. Il s'agit notamment de parcourir le système de fichiers et d'exécuter des commandes de l'interpréteur de commandes.
- Traitement et transmission des données : Fonctionnalité d'encodage des données sur une connexion TCP établie. Elle gère la réception des données, le décodage des différents codages de caractères et la gestion des erreurs de transmission et des dépassements de délai.
- Exfiltration et téléchargement : Pour l'exfiltration, le script Python est capable d'envoyer des fichiers à un serveur FTP distant avec la possibilité de filtrer les fichiers en fonction de leur extension. D'autres fonctions permettent d'automatiser ce processus en collectant des données à partir de divers répertoires d'utilisateurs tels que Documents et Téléchargements.
- Enregistrement du presse-papiers et des frappes au clavier : Le script comprend des fonctionnalités permettant de surveiller et d'exfiltrer le contenu du presse-papiers et les frappes au clavier.
Les recommandations de Securonix
Lorsqu'il s'agit d'attaques par ingénierie sociale, il est essentiel de maintenir un état d'esprit axé sur la sécurité, en particulier dans des situations intenses et stressantes telles que les entretiens d'embauche. Les attaquants à l'origine des campagnes DEV#POPPER en abusent, sachant que la personne à l'autre bout du fil est très distraite et beaucoup plus vulnérable. En matière de prévention et de détection, l'équipe de recherche sur les menaces de Securonix recommande ce qui suit :
- Sensibiliser les gens au fait qu'ils sont la cible d'attaques d'ingénierie sociale, tout comme la technologie est exploitée. Il est essentiel de rester très vigilant et d'assurer une sécurité continue, même dans les situations de stress intense, pour prévenir le problème.
- En cas d'exécution de code, il convient de surveiller les répertoires de stockage des logiciels malveillants, en particulier les activités liées aux scripts dans les répertoires inscriptibles dans le monde entier. Dans le cas de cette campagne, les acteurs de la menace se sont installés dans des sous-répertoires trouvés dans le répertoire %APPDATA% de l'utilisateur.
- Surveiller l'utilisation de langages de script autres que les langages par défaut, tels que Python, sur des terminaux et des serveurs qui ne devraient normalement pas les exécuter. Pour ce faire, il convient d'exploiter des journaux supplémentaires au niveau du processus, tels que Sysmon et PowerShell, afin d'élargir la couverture de détection des journaux.
Conclusion
Bien que les auteurs de l'attaque Dev Popper ne soient pas connus, la tactique consistant à utiliser des appâts pour infecter des personnes avec des logiciels malveillants est toujours répandue, et il convient donc de rester vigilant face aux risques.
Les chercheurs notent que la méthode « exploite l'engagement professionnel et la confiance du développeur dans le processus de demande d'emploi, où le refus d'exécuter les actions de l'intervieweur pourrait compromettre l'opportunité d'emploi », ce qui la rend très efficace. Les pirates nord-coréens ont utilisé la tactique de la « fausse offre d'emploi » dans de nombreuses opérations au fil des ans pour compromettre leurs cibles sur diverses plateformes.
Source : Securonix
Et vous ?
Quelle est votre opinion sur l’utilisation d’offres d’emploi comme appât pour propager des logiciels malveillants ? Pensez-vous que cette tactique est efficace et pourquoi ?
Comment les développeurs peuvent-ils se protéger contre de telles attaques ? Avez-vous des conseils spécifiques pour vérifier l’authenticité des offres d’emploi et des entretiens ?
Quelles mesures pensez-vous que les entreprises devraient prendre pour renforcer la sécurité des candidats lors du processus de recrutement ?
Quelles autres méthodes d’ingénierie sociale avez-vous rencontrées dans le domaine de la cybersécurité ? Partagez vos expériences ou vos connaissances.
Pensez-vous que l’attribution des attaques à des acteurs de la menace spécifiques est importante ? Pourquoi ou pourquoi pas ?
Partager