Quand les gens discutent des dernières techniques d’attaques, ils assument souvent que ces techniques sont la prérogative exclusive des attaquants sophistiqués. Toutefois, ces attaques sont démocratisées très rapidement. Pour illustrer ceci, cette semaine nous allons analyser un logiciel classé « potentiellement non-désiré » qui utilise une chaîne de techniques « vivre de la terre » pour éviter d’être bloqué par les AVs.
Vivre de quoi exactement?
Un attaque « vivant de la terre » (living-off-the-land or LoL) est une attaque qui utilise les ressources qui sont déjà présentes sur l’ordinateur victime pour réaliser ses actions malicieuses au lieu de charger des logiciels additionnels. Par exemple, pour téléchargement la composante principale du maliciel, au lieu d’utiliser un binaire comme étage de téléchargement, une attaque LoL peut plutôt passer une série de commande au logiciel Powershell qui est déjà présent sur le système et utiliser dans le cadre de l’administration normale. De ce sens, lorsque l’attaquant est en terre étrangère (c.a.d. la machine victime), il se nourrit de ce que la terre peut offrir (c.a.d. utilise les programmes déjà présents) au lieu d’apporte sa propre nourriture (c.a.d. charger des outils d’attaques/binaires malicieux).
Cette méthodologie d’attaque est souvent utilisée dans les attaques avancées puisque c’est une manière de contourner les défenses1. Pour faire une histoire couter, les programmes présents sur l’ordinateur pouvant être abusés (connus sous le nom de LoLbins) sont des programmes connus pour être légitimes. Par exemple, plusieurs des LoLbins les plus dangereux sont des composantes du systèmes d’exploitation utilisés pour l’administration système. De ce fait, les programmes pouvant être abuses ne sont pas détectés comme malicieux par les programmes anti-virus et ne seront pas non plus bloqués par les systèmes de liste d’applications permises. Il est nécessaire d’ajouter des couches de protections supplémentaires (comme le service de surveillance de sécurité de CYDEF2) pour détecter et ultimement stopper ces menaces.
Chaîne LoL
Pendant notre processus de surveillance quotidien, nous avons détecté la présence de DriverPackNotifier. Ce programme est un logiciel « potentiellement non-désiré » générique de type « optimisation de pilotes ». Le modèle d’affaire de ce type de logiciel est de présenter aux usagers des messages d’alarmes leur disant que leur ordinateur a besoin de mises à jour et que, en payant l’opérateur du logiciel, ces (fausses) erreurs seront corrigées. Dans l’absolu, ce type de menace est plutôt bénin. Malgré cela, le logiciel est identifié par un assez grand nombre de solutions de cyber sécurité :
https://www.virustotal.com/gui/file/0659388dba26d26eada6d82ed38f22fb2b0a264d1cc4667cce7f4523c72d59be/detection
Donc, ils doivent quand même travailler fort pour éviter la détection et mettre en œuvre leur modèle d’affaires. Voici la séquence de techniques LoL utilisées (les identifiants de processus ont été identifiés par couleur pour rendre la lecture plus facile).
Process Creation
Child
PID:14080
Image:mshta.exe
Path:C:\Windows\SysWOW64
CommandLine:“C:\WINDOWS\System32\mshta.exe” “C:\Users\[CONFIDENTIEL]\AppData\Roaming\DriverPack Notifier\bin\Tools\run.hta” “–relaunch” “true” “–run” “startup”
Company:Microsoft Corporation
Product:Internet Explorer
Description:Microsoft (R) HTML Application host
Parent
PID:13996
Image:DriverPackNotifier.exe
Path:C:\Users\[CONFIDENTIEL]\AppData\Roaming\DriverPack Notifier
Command:“C:\Users\[CONFIDENTIEL]\AppData\Roaming\DriverPack Notifier\DriverPackNotifier.exe” –relaunch true –run startup
La première étape est l’utilisation de l’engin d’application HTML pour Windows. C’est essentiellement une manière de créer des applications complètes en utilisant du HTML dynamique ainsi que les différents langages de script web pouvant être interprétés par Internet Explorer. Ceci peut être utile pour la création d’interface d’aide HTML, ou, apparemment, pour exécuter du code qui serait bloqué par l’AV.
Process Creation
Child
PID:14888
Image:cmd.exe
Path:C:\Windows\SysWOW64
CommandLine:“C:\Windows\System32\cmd.exe” /C powershell -NonInteractive -NoLogo -NoProfile -ExecutionPolicy Bypass “Get-Content ‘C:\Users\[CONFIDENTIEL]\AppData\Roaming\DriverPack Notifier\temp\ps.kl651x9e.mp0tj.cmd.txt’ -Wait | Invoke-Expression” > “C:\Users\[CONFIDENTIEL]\AppData\Roaming\DriverPack Notifier\temp\ps.kl651x9e.mp0tj.stdout.log” 2> “C:\Users\[CONFIDENTIEL]\AppData\Roaming\DriverPack Notifier\temp\ps.kl651x9e.mp0tj.stderr.log”
Company:Microsoft Corporation
Product:Microsoft® Windows® Operating System
Description:Windows Command Processor
Version:10.0.18362.449 (WinBuild.160101.0800)
Parent
PID:14080
Image:mshta.exe
Path:C:\Windows\SysWOW64
Command:“C:\WINDOWS\System32\mshta.exe” “C:\Users\[REDACTED]\AppData\Roaming\DriverPack Notifier\bin\Tools\run.hta” “–relaunch” “true” “–run” “startup”
Process Creation
Child
PID:8420
Image:powershell.exe
Path:C:\Windows\SysWOW64\WindowsPowerShell\v1.0
CommandLine:powershell -NonInteractive -NoLogo -NoProfile -ExecutionPolicy Bypass “Get-Content ‘C:\Users\[CONFIDENTIEL]\AppData\Roaming\DriverPack Notifier\temp\ps.kl651x9e.mp0tj.cmd.txt’ -Wait | Invoke-Expression”
Company:Microsoft Corporation
Product:Microsoft® Windows® Operating System
Description:Windows PowerShell
Version:10.0.18362.1 (WinBuild.160101.0800)
Parent
PID:14888
Image:cmd.exe
Path:C:\Windows\SysWOW64
Command:“C:\Windows\System32\cmd.exe” /C powershell -NonInteractive -NoLogo -NoProfile -ExecutionPolicy Bypass “Get-Content ‘C:\Users\[CONFIDENTIEL]\AppData\Roaming\DriverPack Notifier\temp\ps.kl651x9e.mp0tj.cmd.txt’ -Wait | Invoke-Expression” > “C:\Users\[CONFIDENTIEL]\AppData\Roaming\DriverPack Notifier\temp\ps.kl651x9e.mp0tj.stdout.log” 2> “C:\Users\[CONFIDENTIEL]\AppData\Roaming\DriverPack Notifier\temp\ps.kl651x9e.mp0tj.stderr.log”
La deuxième étape est de lancer cmd à partir du programme mshta pour appeler une exécution Powershell. De manière notable, la liste de commande qui est exécutée n’est pas sous la forme d’un fichier script .PS1, ce qu’on s’attendrait d’un usager normal, mais provient d’un fichier .txt passé à la méthode invoke-expression.
Process Creation
Child
PID:12256
Image:csc.exe
Path:C:\Windows\Microsoft.NET\Framework\v4.0.30319
CommandLine:“C:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe” /noconfig /fullpaths @”C:\Users\[CONFIDENTIEL]\AppData\Local\Temp\ltgfk0hg.cmdline”
Company:Microsoft Corporation
Product:Microsoft® .NET Framework
Description:Visual C# Command Line Compiler
Version:4.8.3752.0 built by: NET48REL1
Parent
PID:8420
Image:powershell.exe
Path:C:\Windows\SysWOW64\WindowsPowerShell\v1.0
Command:powershell -NonInteractive -NoLogo -NoProfile -ExecutionPolicy Bypass “Get-Content ‘C:\Users\[CONFIDENTIEL]\AppData\Roaming\DriverPack Notifier\temp\ps.kl651x9e.mp0tj.cmd.txt’ -Wait | Invoke-Expression”
File Creation
PID:12256
Image:csc.exe
Path:C:\Windows\Microsoft.NET\Framework\v4.0.30319
Target File
Extension:dll
Name:ltgfk0hg.dll
Path:C:\Users\[CONFIDENTIEL]\AppData\Local\Temp
Finalement, le code Powershell appelle le compilateur de ligne de commande .NET pour générer un nouveau composant malicieux sous la forme d’une DLL.
Conclusion
En résumé, pour vendre leur service de fausse maintenance Windows, les opérateurs du logiciel ont utilisés les techniques MITRE ATT&CK T1218.005 (Signed Binary Proxy Execution: Mshta), T1059.003 (Command and Scripting Interpreter: Windows Command Shell), T1059.001 (Command and Scripting Interpreter: PowerShell) et T1027.004 (Obfuscated Files or Information: Compile After Delivery). Que pensez-vous qu’un attaquant ayant des motivations plus fortes serait prêt à faire?
Si vous êtes préoccupé du fait que votre arsenal actuel de solutions de cyber sécurité ne pourrait pas attraper ce type d’attaque, contactez-nous3 et demandez comment CYDEF peut vous aider à attraper des activités malicieuses qui contournes les outils de sécurité traditionnels.