Aktiivinen tiedustelu ja nmap - Tunkeutumistestaus viikkotehtävä 4
TLDR
Tässä tehtävässä syvennyin aktiivisen tiedustelun maailmaan, sekä nmapin käyttöön. Otin yhteyden Hack The Boxin verkkoon, sekä tein tiedustelua siellä olevasta koneesta
Lue artikkelit ja tee muistiinpanoja - Tehtävä Z
€ Santos et al: The Art of Hacking (Video Collection): [..] 4.3 Surveying Essential Tools for Active Reconnaissance
- Aktiivisessa tiedustelussa lähetetään paketteja kohdejärjestelmään, jotta nähdään minkälaisia palveluita kohdejärjestelmän porteissa on saatavilla
- Porttiskannauksesta jää jälkiä kohdejärjestelmään
- Nmap suosituin, masscan nopein
- Nmapilla voi myös tutkia suoraan haavoittuvuuksia scriptien avulla
Lyon 2009: Nmap Network Scanning: Chapter 1. Getting Started with Nmap
- Nmapilla valtava määrä eri ominaisuuksia joita käyttää skannatessa
- -p- toimii lyhenteenä kaikkien 65535 portin skannaamiselle
- Nmap skannauksen tuloksen tulostaminen tiedostoon äärimmäisen kannattavaa, mikäli tietoa tarvitsee tutkia lähemmin
Silmäile (ei tarvitse lukea kokonaan, 40 liuskaa pitkä): Lyon 2009: Nmap Network Scanning: Chapter 15 Nmap Reference Guide
-
- Open - Portti on avoin, eli siellä on jokin palvelu kuuntelemassa ja vastaanottamassa paketteja ulkopuolisista pyynnöistä
- Closed - Portti vastaanottaa, sekä vastaa nmapin pakettiin, mutta siellä ei ole sovellusta tai palvelua käynnissä.
- Filtered - Palomuuri tai muu vastaava filteri estää ulkopuolisen pääsyn porttiin, joten nmap ei voi määritellä onko portti auki vai kiinni
-
-
-sS (TCP SYN scan)
- Oletusvaihtoehto skannauksessa ja suosituin vaihtoehto
- Toimii todella nopeasti
- Melko huomaamaton, sillä skannaus ei suorita TCP yhteyttä loppuun
- Skannaus suorittaa vain ensimmäiset kaksi osaa kolmen kohdan kättelystä
-
-sT (TCP Connect scan)
- Oletus, mikäli SYN skannausta ei saatavilla
- Käyttää samaa Connect pyyntöä kuin esimerkiksi selaimet
- Kestää kauemmin, kuin SYN skannaus ja suuremmalla todennäköisyydellä jää näkyviin kohdejärjestelmän lokeihin
-
-sU (UDP scans)
- Nimensä mukaan skannaa udp portteja
- Skannaaminen yleisesti ottaen hitaampaa, sekä hankalampaa kuin TCP skannaus
- Kuitenkin kannattavaa, sillä useat palvelut toimivat udp porttien kautta
- Voi ajaa -sS kanssa samaan aikaan
-
man nmap
- -sV on versioskannaus. Näyttää versiot porteilla kuuntelevista palveluista
- -oA tulostaa skannauksen tulokset kolmeen eri formaattiin. Tavallinen, grepattava sekä xml muodot
Miten nmap toimii? - Tehtävä A
Tehtävänä oli tutkia nmapin toimintaa, sekä napata jollakin snifferillä nmapin lähettämiä paketteja. Käytin snifferinä wiresharkia ja skannaukset tein Metasploitable 2 harjoitusmaaliin.
$ sudo nmap -sT -v -p 80 192.168.56.101 #Huom. ip osoitteet ovat todennäköisesti erilaiset lukijalle
- -v
- Tarkoittaa verbosea. Komento siis kertoo ajon aikana mitä tapahtuu
- -sT
- Aikaisemmin mainittu TCP connect skannaus
- -p
- Määrittää portin joka skannataan
Kuvasta näemme, että nmap lähetti paketin haluttuun ip osoitteeseen, sai sieltä vastauspaketin ja lähetti vielä varmistuksen takaisin kohteelle, että palautuva paketti on vastaanotettu. [SYN] tarkoittaa lähetettyä pakettia. [SYN, ACK] tarkoittaa palautuvaa vastausta lähetettyyn pakettiin ja [ACK] tarkoittaa varmistusviestiä kohteelle, että palautuspaketti tuli perille.
Lähemmällä tarkastelulla nähdään, että nmap käytti porttia 60004
lähettääkseen kyselyn kohdejärjestelmän portille 80
Ennen ensimmäisessä kuvassa nähtyjä paketteja nmap oli lähettänyt pyynnön selvittääkseen millä mac osoitteella on kyseinen ip osoite paikallisessa verkossa. Tästä kuvasta näkyi kysymys, sekä vastaus
$ sudo nmap -sS -v -p 80 192.168.56.101
- -sS
- TCP SYN skannaus. Ei lähetä viimeistä ACK pakettia kuten -sT lähettää
Lopputulos skannaukselle on muuten samanlainen kuin ensimmäisessä, mutta viimeisen kohdan ACK sijaan sieltä löytyi [RST]. Tutkin hieman paketin lisätietoja, ja sieltä löytyi Transmission control protocol kohdan flags alasvetovalikosta, että nmap oli lähettänyt reset flagin kohdejärjestelmälle. Reset flagi tarkoittaa yhteyden nollaamista. Tämän flagin avulla nmap katkaisee yhteyden skannattavaan porttiin ACK paketin lähettämisen sijasta.
$ sudo nmap -sn -v 192.168.56.0/24
- -sn (No port scan)
- Ping sweep
- Käytetään, jotta löytää verkossa olevia hosteja
- 192.168.56.0/24 määrittelee nmapin etsimään hosteja koko 192.168.56.0 verkosta. Käytännössä sama, kuin 192.168.56.0-255
Komennossa olisin voinut pitää osoitteen samana, ja nmap olisi palauttanut tuloksen, että hosti on verkossa. Päätin kuitenkin kokeilla koko verkon kattavaa vaihtoehtoa, jotta näen kuinka se toimii. Nmap palautti pitkän listan, jossa oli jokainen pääte aina nollasta 255 asti, ja tiedon oliko ip osoitteella verkossa olevaa hostia. Wiresharkilla kaapattu liikenne on täynnä arp pyyntöjä nmapilta. Eli samanlaisia kuin aikaisempien skannauksien alussa olleet “Kenellä tämä osoite on? Kerro se kyselevälle osoitteelle” pyyntöjä.
$ sudo nmap -Pn -v 192.168.56.101
- -Pn (No ping)
- Jättää hostien etsimisen välistä
- Oletuksena nmap ajaa raskaampia skannauksia kuten porttiskannaukset tai käyttöjärjestelmän selvittämiset vain löydettyihin hosteihin
- -Pn vaihdoehtoa käytettäessä, jos kohteeksi laittaa useamman hostin esimerkiksi /24 verkkomaskin avulla, nmap ajaa raskaat skannaukset kaikkiin osoitteisiin
- -Pn ei siis välitä siitä, onko osoitteessa oikeasti joku hosti käynnissä
Ajoin komennon kuitenkin vain metasploitable 2 osoitteeseen. Liikennettä tarkastellessa wiresharkista näky oli karu. Nmap on pommittanut metasploitable 2 osoitetta valtavalla määrällä paketteja. Skannauksessa ei määritelty, mitä portteja halutaan etsiä, joten Nmap skannaa automaattisesti tuhat suosituinta porttia. Tällä ajokerralla, kun kohteena oli vain yksi hosti, näytti lopputulema koostaan huolimatta samalta, kuin -sS skannauksessa. Nmap lähettää SYN paketin, saa vastauksena SYN ACK paketit avoinna olevalta portilta ja vastaa niihin RST paketilla, jossa on reset flag asetettuna.
Tässä myös näemme, kuinka kohdejärjestelmä vastaa RST ACK mikäli portissa ei ole sovellusta tai palvelua kuuntelemassa
$ sudo nmap -v -sV -p 80 192.168.56.101
- -sV (Version detection)
- Versioskannaus
- Näyttää mikä versio portissa olevasta sovelluksesta tai palvelusta on käytössä
Nmap kertoo, että portissa 80 on apache httpd 2.2.8 palvelu kuuntelemassa. Wiresharkilla liikennettä tarkastellessa huomasin mielenkiintoisia asioita.
Nmap lähettää erinäisiä GET
sekä POST
http kutsuja apachelle. Http kutsujen headeristä olettaisin nmapin saavan selville, mikä palvelu on käytössä.
Nmapin toimintoja - Tehtävä B
Seuraavaksi oli vuorossa tutkia nmapin eri toimintoja.
- Porttien valinta
- -p1-100 skannaa portit ykkösen ja 100 väliltä.
- –top-ports5 skannaa viisi yleisimmin käytössä olevaa porttia
- Ip-osoitteiden valinta
- Valinnan voi tehdä joko verkkomaskin (/24 tms) avulla, tai määritellä loppuosoitteet itse (192.168.56.100-200)
- Verkkomaskin avulla voi määritellä lyhyemmällä kirjoittamisella esimerkiksi koko verkon laajuisen skannauksen
- Output files
- -oA tulostaa nmap skannauksen tulokset kolmeen eri muotoon
- gnmap eli greppable nmap. Tulostaa joka kohdan omalle riville joten etsiminen grepin avulla helppoa
- nmap eli sama tuloste kuin ruudulla näkyy komennon ajon jälkeen
- xml muoto joka on helppo viedä ulkoisiin palveluihin
- -sV Versioskannaus
- Kertoo porteilla kuuntelevien palveluiden versiot
- Hyödyllistä tiedustelussa, sillä ohjelmisto voi olla haavoittuvainen, mikäli sitä ei ole pidetty ajantasalla
-
Ajonaikaiset toiminnot
- v näppäintä painamalla ajon aikana voi lisätä nmapin verbositettiä (kertoo tarkemmin mitä on tekemässä)
- Vastavuoroisesti
shift+v
vähentää verbositeettia, mikäli ei halua ylimääräistä tulostetta ruudulleen - ? tulostaa näytöllä ajonaikaisen help ruudun
- Lisätietoja löytää nmapin sivuilta
-
-A
- Agressive mode
- Ajaa versioskannauksen, käyttöjärjestelmäskannauksen, skriptiskannauksen
- Sudolla vai ilman
- Nmapia ajetaan normaalisti sudon kanssa, jotta kaikki ominaisuudet ovat käytettävissä
- Ajoin -A komennon uudestaan ilman sudoa ja huomasin, ettei nmap voinut tehdä TCP SYN skannausta vaan suoritti TCP Connect skannauksen
- -sV versus -A kesto
- -A kesti 21.87 sekuntia ajaa ja -sV kesti 11.43 sekuntia
- -sV ei suorita skriptejä eikä käyttöjärjestelmän skannausta ja on siksi nopeampi
Ninjojen tapaan - Tehtävä C
Seuraavaksi vuorossa oli kokeilla nmapia omaan paikalliseen webbipalvelimeen. Käytän tässä tehtävässä python3 -m "http.server"
komentoa apuna
$ sudo nmap -vvv -sV -p8000 localhost
Ajoin versioskannauksen paikalliseen python palvelimeen. Skannaus ei piiloutunut hyvin, sillä nmap teki GET pyynnön nmaplowercheck1619369011
endpointiin.
GET pyyntöä tutkittaessa HTTP headereista user agent
kohdasta paljastui pyynnön tekijäksi nmap
UDP skannaus - Tehtävä D
- Mitkä ovat tavallisimmat tai kiinnostavimmat palvelut, joita UDP-skannauksella voisi löytää?
- DNS, SNMP ja DHCP (portit 53, 161/162 ja 67/68) Lähde nmapin dokumentaatio
- Miksi UDP-skannaus on hankalaa ja epäluotettavaa?
- UDP skannauksessa avoimet portit harvoin vastaavat “tyhjin kutsuihin” Lähde nmapin dokumentaatio
- Porttia varten täytyy olla juuri oikealle palvelulle tarkoitettu payloadi kutsussa, jotta palvelu vastaa Lähde nmapin dokumentaatio
- Miksi UDP-skannauksen kanssa kannattaa käyttää –reason flagia?
- –reason flagi tarjoaa selityksen, miksi portin tilaksi on määritelty se mikä tulosteessa on
UPD skannaus vei moninkertaisen ajan verrattuna aikaisempiin ~21 sekunnin kestoisiin skannauksiin.
Avaa yhteys Hack the Boxin verkkoon - Tehtävä E
Tätä tehtävää varten täytyy ladata hack the boxin sivuilta oman käyttäjän vpn paketti. Latauksen jälkeen paketti ajetaan sudo openvpn <tiedoston nimi>
komennolla.
Komennon ajamisen jälkeen käynnistin eläköityneen Time
boksin ja menin firefoxilla sen ip-osoitteeseen.
Yhteys siis toimii oikein!
Tiedustele aktiivisesti HTB konetta - Tehtävä F
Viimeisenä vuorossa oli suorittaa aktiivista tiedustelua johonkin HTB järjestelmässä olevaan koneeseen. Suoritin testini edellisessä kohdassa mainitsemaani Time koneeseen.
$ sudo nmap -sV -sS -vvv 10.10.10.214 -oA scan
Skannauksen tulos näytti kaksi avoinna olevaa porttia. 22 sekä 80. Portti 80 olikin jo oletettavissa, sillä ip-osoitteesta löytyi webbisivu. Versioskannaus myös paljasti, että Openssh versio on 8.2p1 ja Apachen versio on 2.4.41. Uusin apachen versio kirjoitushetkellä on 2.4.46. Pikaisella haulla Exploit db:stä kyseisestä versionumerosta ei löytynyt haavoittuvuuksia. Tarina toistui myös, kun etsin openssh versiolla mahdollisia haavoittuvuuksia.
Tutkimista voisi myöhemmin jatkaa esimerkiksi Dirbusterin avustuksella, jotta voisi löytää mahdollisia piilotettuja sivuja.