Aktiivinen tiedustelu

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

Tehtävänanto

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

  • Port Scanning Basics

    • 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
  • Port Scanning Techniques

    • -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

1stscan

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.

lastack

Lähemmällä tarkastelulla nähdään, että nmap käytti porttia 60004 lähettääkseen kyselyn kohdejärjestelmän portille 80

arp

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ää

-sS

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.

reset

$ 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ä.

pingsweep

$ 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

rstack

$ 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ä

port80

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ä.

headers

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

1-100

top-5

  • 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

/24

50

  • 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

-oA

  • -sV Versioskannaus
    • Kertoo porteilla kuuntelevien palveluiden versiot
    • Hyödyllistä tiedustelussa, sillä ohjelmisto voi olla haavoittuvainen, mikäli sitä ei ole pidetty ajantasalla

-sV

  • 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

-A

  • 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

sudovaiei

eisudo

  • -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.

servers

GET pyyntöä tutkittaessa HTTP headereista user agent kohdasta paljastui pyynnön tekijäksi nmap

headers

UDP skannaus - Tehtävä D

  • Mitkä ovat tavallisimmat tai kiinnostavimmat palvelut, joita UDP-skannauksella voisi löytää?
  • Miksi UDP-skannaus on hankalaa ja epäluotettavaa?
  • Miksi UDP-skannauksen kanssa kannattaa käyttää –reason flagia?
    • –reason flagi tarjoaa selityksen, miksi portin tilaksi on määritelty se mikä tulosteessa on

udpreason

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.

time

onlinejsonparser

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

nmaptime

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.

Linkkejä