Source: Medium (Deriv Tech). Un article de Shantanu dévoile « BeaverTail », une campagne sophistiquée mêlant ingénierie sociale (LinkedIn) et dépôt GitHub piégé pour compromettre des développeurs sous couvert d’un test technique.

– Le leurre: un faux recruteur (« Tim Morenc, CEDS ») d’une fausse entreprise « DLMind » (org GitHub dlmind-tech) propose un rôle d’« Innovative AI Engineer » et demande de cloner et exécuter un projet Next.js « MEDIRA ». L’exécution (npm install / node run dev/build) déclenche un backdoor caché.

– Stage 0 – Backdoor initial: deux fichiers du projet (auth/config/index.js et auth/routes/cities.js) appellent un C2 encodé en Base64 qui pointe vers loopsoft[.]tech:6168/defy/v8. Au démarrage de auth/server.js, le C2 renvoie un HTTP 404 dont le corps JSON contient un JavaScript malveillant exécuté avec les privilèges Node.js, livrant le Stage 1.

– Stage 1 – InfoStealer JavaScript: code fortement obfusqué (multi-couches, Base91 à alphabets multiples) et multi-plateforme (Windows/Linux/macOS). Capacités: vol des secrets (.env, clés API, portefeuilles crypto), vol des identifiants et cookies navigateurs, surveillance du presse-papiers (500 ms), keylogger et captures d’écran, fingerprinting système, anti-VM. Backdoor persistant via Socket.IO vers 172[.]86[.]89[.]10:4382, exfiltration vers 88[.]218[.]0[.]78:1224 et 172[.]86[.]89[.]10:4382. Déploie automatiquement un runtime Python embarqué (p.zi/p5.zip, extraction vers C:\Users{user}\winrar\python.exe selon config api[.]npoint[.]io) puis télécharge un downloader Python caché (~/.nlq).

– Stage 2 – Downloader Python (/.nlq, 64 couches reverse→base64→zlib): installe requests si besoin, contacte 88[.]218[.]0[.]78:1224 pour récupérer deux charges (/.n2/way et ~/.n2/pow). Sous macOS, seul le premier payload est exécuté.

– Stage 3A – RAT Python (~/.n2/way, 64 couches) : enregistre l’hôte (88[.]218[.]0[.]78:1224/keys), puis ouvre un socket TCP (88[.]218[.]0[.]78:2243) offrant 8 commandes: shell distant, auto-destruction Python, export du keylogger (Windows), déploiement du stage /brow vers /.n2/bow, exfiltration de fichiers, kill de Chrome/Brave, déploiement d’un hijacker AnyDesk (/.n2/adc), scan massif des .env (C:→G:). Sous Windows, keylogger via pyWinhook/pyperclip/pythoncom.

– Stage 3B – Persistance « Tsunami » (~/.n2/pow, 128 couches): installe Python 3.11.0 si absent (python[.]org ou plus de 100 miroirs chiffrés), ajoute la lib cryptography, met en place une triple persistance: script Startup (Windows Update Script.pyw), tâche planifiée « Runtime Broker » (binaire camouflé), exclusions Windows Defender (dont msedge.exe, mentionnée pour XMRig), et une boucle d’élévation UAC insistante (toutes les 10–20 min) jusqu’à acceptation.

– Stage 4 – Hijacker AnyDesk (~/.n2/adc): installe AnyDesk si manquant (95[.]164[.]17[.]24:1224/any), modifie service.conf avec des identifiants de backdoor (hash/salts fournis), envoie la config modifiée à 95[.]164[.]17[.]24:1224/keys, redémarre AnyDesk et s’auto-supprime, offrant un accès GUI persistant non suspect.

IOC principaux:

  • Domaines: loopsoft[.]tech; api[.]npoint[.]io; ip-api[.]com
  • IP/Ports: 88[.]218[.]0[.]78:1224,2243; 172[.]86[.]89[.]10:4382; 95[.]164[.]17[.]24:1224
  • URLs (exemples défangés): hxxp://loopsoft[.]tech:6168/defy/v8; hxxp://88[.]218[.]0[.]78:1224/uploads | /pdown | /client/3/603 | /payload/3/603 | /brow/3/603 | /keys | :2243; hxxp://172[.]86[.]89[.]10:4382/(api/service/process/… | api/service/makelog | upload); hxxp://95[.]164[.]17[.]24:1224/any | /keys
  • Chemins/fichiers: ~/.nlq; ~/.n2/way; ~/.n2/pow; ~/.n2/adc; %TEMP%\p.zi; %TEMP%\p5.zip; %APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup\Windows Update Script.pyw; tâche planifiée « Runtime Broker »; process « Node.js JavaScript Runtime »
  • Hashes (SHA-256, échantillons): ~/.nlq b59187e7…; ~/.n2/way 9daa4de8…; ~/.n2/pow 006c6a04…; ~/.n2/adc ffed818b…; %TEMP%\p5.zip 99502507…
  • Signatures AnyDesk injectées: ad.anynet.pwd_hash=967adedc…; ad.anynet.pwd_salt=351535af…; ad.anynet.token_salt=e43673a2…

TTPs observés:

  • Ingénierie sociale via LinkedIn et faux recruteur; dépôt GitHub privé comme vecteur de « test technique »
  • Backdoor Node.js caché et exécution de payload livré en réponse 404
  • Vol massif d’identifiants et crypto-wallets, keylogging, screenshots, clipboard hijacking
  • C2 WebSocket/Socket.IO et exfiltration HTTP multi-endpoints
  • Déploiement multi-étages JavaScript→Python, anti-VM, camouflage de process
  • Persistance agressive (Startup, tâche planifiée, exclusions Defender, boucle UAC)
  • Détournement d’AnyDesk par modification de service.conf et installation distante

Type d’article: analyse de menace technique visant à documenter une campagne multi-étages, ses capacités, et fournir des IOCs détaillés.

🧠 TTPs et IOCs détectés

TTP

Ingénierie sociale via LinkedIn et faux recruteur; dépôt GitHub privé comme vecteur de « test technique »; Backdoor Node.js caché et exécution de payload livré en réponse 404; Vol massif d’identifiants et crypto-wallets, keylogging, screenshots, clipboard hijacking; C2 WebSocket/Socket.IO et exfiltration HTTP multi-endpoints; Déploiement multi-étages JavaScript→Python, anti-VM, camouflage de process; Persistance agressive (Startup, tâche planifiée, exclusions Defender, boucle UAC); Détournement d’AnyDesk par modification de service.conf et installation distante

IOC

{‘domains’: [’loopsoft.tech’, ‘api.npoint.io’, ‘ip-api.com’], ‘ips_ports’: [‘88.218.0.78:1224’, ‘88.218.0.78:2243’, ‘172.86.89.10:4382’, ‘95.164.17.24:1224’], ‘urls’: [‘hxxp://loopsoft.tech:6168/defy/v8’, ‘hxxp://88.218.0.78:1224/uploads’, ‘hxxp://88.218.0.78:1224/pdown’, ‘hxxp://88.218.0.78:1224/client/3/603’, ‘hxxp://88.218.0.78:1224/payload/3/603’, ‘hxxp://88.218.0.78:1224/brow/3/603’, ‘hxxp://88.218.0.78:1224/keys’, ‘hxxp://172.86.89.10:4382/api/service/process/…’, ‘hxxp://172.86.89.10:4382/api/service/makelog’, ‘hxxp://172.86.89.10:4382/upload’, ‘hxxp://95.164.17.24:1224/any’, ‘hxxp://95.164.17.24:1224/keys’], ‘file_paths’: [’/.nlq’, ‘/.n2/way’, ‘/.n2/pow’, ‘/.n2/adc’, ‘%TEMP%/p.zi’, ‘%TEMP%/p5.zip’, ‘%APPDATA%/Microsoft/Windows/Start Menu/Programs/Startup/Windows Update Script.pyw’, ’tâche planifiée « Runtime Broker »’, ‘process « Node.js JavaScript Runtime »’], ‘hashes’: {’/.nlq’: ‘b59187e7…’, ‘/.n2/way’: ‘9daa4de8…’, ‘/.n2/pow’: ‘006c6a04…’, ‘/.n2/adc’: ‘ffed818b…’, ‘%TEMP%/p5.zip’: ‘99502507…’}, ‘anydesk_signatures’: {‘ad.anynet.pwd_hash’: ‘967adedc…’, ‘ad.anynet.pwd_salt’: ‘351535af…’, ‘ad.anynet.token_salt’: ’e43673a2…’}}


🔗 Source originale : https://medium.com/deriv-tech/how-a-fake-ai-recruiter-delivers-five-staged-malware-disguised-as-a-dream-job-64cc68fec263