Patrik Sulander
z) Lue artikkelit ja katso videot, tee kustakin muistiinpanot (muutama ranskalainen viiva per artikkeli/video). Tässä z-kohdassa ei tarvitse tehdä mitään kokeita koneella.€ Santos et al: The Art of Hacking (Video Collection):
€ Santos et al: The Art of Hacking (Video Collection):
- Aktiivinen tiedustelu on ensimmäinen ja tärkein vaihe ketjussa. Ilman sitä seuraavat vaiheet eivät onnistuisi.
- Aktiivisessa tiedustelussa lähetetään dataa kohde verkkoon.
- Porttien skannaus voidaan huomata lokeista, mutta se on eriasia valvooko kukaan niitä.
- Nmap hyvä porttiskanneri, mutta silläkin on heikkouksia.
- Masscan nopein skanneri.
Lyon 2009: Nmap Network Scanning:
- Nmap list scan (-sL) Luetteloi IP-osoitteet, kääntää DNS-osoitteet ja skannaaja pysyy “stealthissa”.
- Käyttöjärjestelmien ja palveluiden skannaus eivät niin näkymättömiä.
- Nmapissa toimii monet eri formaatit –> 6.209.24.0/24 voisi olla myös ilmoitettu 6.209.24.0-255 muodossa.
- Filtered tila –> Palomuuri/reititin blokannut näkyvyyden sorkkimiselta (ei voida todeta onko portti auki/käytössä. Voi hidastaa skannausta huomattavasti, jos halutaan varmistaa että portti todella suodattaa sorkkijat pois eikä filtered tila johdu esimerkiksi vain huonosta yhteydestä.
- Open – Palvelu kuuntelee porttia aktiivisesti.
- Closed – Saavutettavissa, mutta mikään rajapinta ei kuuntele kyseistä porttia. Voi olla hyödyllistä skannata kyseistä porttia myöhemmin muutosten vuoksi.
-sS(TCP SYN scan) – Oletus, nopea ja suosituin tekniikka porttien skannaukseen. Hyvin huomaamaton (ei suorita TCP- yhteyttä kohteeseen)-sT(TCP connect scan) – Yleisesti käytössä kun ylempi (SYN) skannaus ei ole käytössä esimerkiksi heikkojen käyttöoikeuksien vuoksi. Vie enemmän aikaa (lähettää enemmän paketteja) ja suorittaa TCP-yhteyden loppuun asti, jonka seurauksena voi jättää jälkiä lokeihin. Jotkut “säälittävät” palvelut voivat jopa kaatua tämän yhteyskokeilun seurauksena.-sU(UDP scans) – Tekniikassa lähetetään UDP-paketteja jokaiseen porttiin ja näin hyödynnetään UDP-palveluiden tuktimiseen. UDP palveluita on laajasti käytössä (DNS, SNMP, DHCP yleisimmät palvelut). Skannaus hitaampaa ja vaikeampaa, mutta yleisesti nämä portit unohdetaan helpommin hyökkäyksiltä ja näin voivat antaa enemmän työkaluja hyökkääjälle. Tekniikassa haastavinta on tehdä se nopeasti. Monesti porteilta ei tule mitään vastausta takaisin (time outs).
a) Miten nmap toimii? Tee nmapilla seuraavat testit, sieppaa liikenne snifferillä (wireshark) ja analysoi tulokset. Tee testit mahdollisimman suppeasti, jotta analysointi on helpompaa. Esimerkiksi skannaa vain yksi portti yhdestä koneesta, jos ominaisuuden esittely ei hyöydy laajemmasta skannauksesta. Selitä myös, miksi nmap lähettää tuollaisia paketteja. Käytä nmap:ia normaalisti sudo:n kanssa. Kannattaa tietysti aloittaa lukemalla man-sivulta tai Nmap Reference Guidesta, mitä noilla toiminnoilla on ylipäänsä tarkoitus tehdä. Porttiskannaa ainoastaan omaa konetta omassa verkossa ja harjoitusmaaleja.
Tässä a-kohdassa jokainen alakohta edellyttää siepattujen pakettien analyysia.
- Ensiksi loin virtual boxissa uuden NAT verkon (“testiverkko”), johon kiinnitin “Kalikoneeni” ja “Maalikoneeni”. Varmistin yhteyden koneiden välillä pingaamalla. Aloittaessani huomasin sieppaavani “vähän” liikaakin liikkuvaa tietoa, jonka seurauksena molemmat koneeni kaatuivat (tehtäviä tehdessä olin porukoilla tekemällä näitä “hieman” heikolla läppärilläni). Kokeilin uudestaan ja suodatin wiresharkin keräämään tietoja vain tästä yhdestä IP-osoitteesta (ip.addr eq 10.0.2.4). Noniin toivotaan, että lähtisi pelittämään –> wiresharkissa ainakin pingaamalla näkyy pelkästään juuri tämän ICMP-protokollan echo (ping) reply ja request pyynnöt. Tajusin myös ettei tuolla juuri luomassa maalikoneessa ole mitään portteja tai muuta auki… Päätin kokeilla HackTheBoxin koneita, jos tästä saisi hieman enemmän irti. Kirjauduin hacktheboxiin –> access –> latasin connection paketin –> sudo openvpn Pakki.ovpn –> nyt näen ip addr komennolla uuden verkkolaitteen “tun0” ja olen onnistuneesti HTB verkossa. Siirryin “active machines” välilehdelle ja valitsin “toivottavasti” helpoimman koneen “Academy”. Testasin yhteyttä pingaamalla konetta –> ping 10.10.10.215 ja homma pelittää. Kokeilin vielä (samanlailla kuin maalikoneesta) wiresharkilla kerätä tietoja pingauksesta ja oikeat tiedot sain sieltäkin ylös. Sitten tehtäviin.

- TCP connect scan -sT
- 1. sudo nmap –top-ports 10 -sT 10.10.10.215
- 2. –top-ports 10, halusin vähentää porttien skannauksen 10:een suosituimpaan, jotta saisin pidettyä tämän selkeänä.
- 3. Skannausta käytetään yleisesti kun huomaamattomampi “SYN -skannaus” ei ole käytössä. Tässä skannauksessa nmap yrittää ottaa yhteyttä kohteeseen.
- 4. Tarkastelin aluksi “three-way handshake” 1. client (SYN-paketti)2.kohde (SYN/ACK-paketti)3. client (ACK) onnistuneita yhteyskokeiluja ja tämä onnistui esimerkiksi porttiin 80 (http) ja tuloksissa näemmekin, että portti on “open” tilassa.
- 5. 80 ja 22 portti Open, muut portit näyttivät olevan closed (mikään sovellus ei kuuntele kyseistä porttia, mutta niihin saadaan yhteys).
- 6. Closed porttien kohdalla kohdekone lähetti RST/ACK -paketteja vastaukseksi. RST(reset) paketilla kohdekone tiedoittaa, että yhteys on päättynyt ja sulkee TCP-istunnon.

- TCP SYN “used to be stealth” scan, -sS (tätä käytetään skannatessa useimmin)
- 1. TCP SYN -skannaus
- 2. sudo nmap –top-ports 10 -sS 10.10.10.215
- 3. Ensimmäisenä huomasin, että skannaukseen meni vain 0.65 sekuntia eli todella nopea (vertailuna top 100 meni 1,1 sekuntia).
- 4. Wiresharkissa huomasin, kun seurasin tuloksia järjestyksessä, että ensin koneemme pingasi kohdekonetta, sen jälkeen koneemme suoraan lähetti ACK-paketin johon kohde vastasi RST-paketilla. Tämä vaikutti oudolta, mutta oletin että se johtui jo aikaisemmasta yhteyskokeilusta.
- 5. Seuraavassa vaiheessa järjestelmämme lähettikin, jokaiseen kohdeporttiin SYN-kutsun.
- 6. Kohde vastasi suljettuihin portteihin RST/ACK paketeilla ja avoimeen (80) porttiin SYN/ACK -paketilla.
- 7. Siihen tulokset wiresharkissa loppuivatkin. Eli koneemme ei vastannut enään kohdekoneen viesteihin tai yrittänyt muodostaa yhteyttä ACK-paketilla. Tämän takia tätä tekniikkaa “pidettiin” huomaamattomampana.

- ping sweep -sn
- 1. “ping scan” – disable port scan, eli ei porttiskannausta
- 2. sudo nmap -sn 10.10.10.215
- 3. Tällä saadaan selville nopeasti onko kohdekone/koneet ylhäällä. Koneemme lähettää kohteeseen echo (ping) requestin, SYN- paketin porttiin 443 , ACK-paketin (80) porttiin ja timestamp requestin. Kohde koneelta saadaan RST ja RST/ACK -paketteja takaisin.
- don’t ping -Pn
- 1. Tämä komento määrittelee skannauksen, siten että kaikki kohteet määrittellään olevan ylhäällä, eikä kohdetta pingata. Eli skipataan suoraan tiedustelu onko hosti ylhäällä ja suoritetaan skannaus joka tapauksessa.
- 2.sudo nmap -Pn 10.10.10.215
- 3. Wiresharkilla huomataan, että komennolla koneemme aloittaa suoraan SYN-pakettien lähettämisellä kohteeseen.
- version detection -sV (esimerkki yhdestä palvelusta yhdessä portissa riittää
- 1. Kohteessamme 80 portti oli open tilassa, joten yritin käyttää tätä tekniikkaa kyseiseen porttiin.
- 2. sudo nmap -p 80 -sV 10.10.10.215
- 3. Selvästi pisin skannaus, vaikka kyseessä oli vain yksi portti (9.46 sekuntia).
- 4. Tuloksista saamme selville näppärästi http-palvelun Apache, versionimen ja jopa että se on ubuntulla pyörivä versio.
- 5. Wireshark keräsi paljon tietoa, muunmuassa HTTP-protokollan get-requesteja ja kokonaisia three-way handshake tapahtumia eli koneeni muodostaa yhteyden kohdekoneen kanssa.

b) Nmap:n toimintoja. Kokeile, anna esimerkit, selitä tulokset ja käyttötarkoitus. Seuraa aina snifferillä, tarvittaessa perustele analyysisi siepatulla liikenteellä.
- porttien valinta -p1-100, –top-ports 5
- 1. Ylempänä olemmekin käyttänyt kyseistä –top-ports toimintoa, jolla voimme rajata skannauksen suosituimpiin (esim 5) porttiin.
- 2. sudo nmap -p1-100 -sT 10.10.10.215
- 3. Toiminnolla skannataan kaiki portit 1-100 välillä. 2 porttia vain oli auki (22 ja 80).
- 4. Tavallisesti -p toiminnolla, skannaus suoritetaan 1000 porttiin.
- ip-osoitteiden valinta, verkkomaskilla 10.10.10.0/24, alku- ja loppuosoitteella 10.10.10.100-130 (ipcalc auttaa ymmärtämään, miten verkkomaskia tulkitaan)
- 1. http://jodies.de/ipcalc
- 2. TIpcalc avulla tulkitaan, että komennolla sudo nmap -sn 10.10.10.0/24, ping skannattaisiin kaikki koneet 10.10.10.1 – 10.10.10.254 välillä (254).
- 3. Eli tuon ip-osoitteen tilalla voitaisiin käyttää myös “10.10.10.0-255”
- 4. 10.10.10.100-130 skannattaisiin kaikki koneet kyseisten (100-130) välillä.
- 5. Kokeilin komentoa “sudo nmap -sn 10.10.10.0/24”
- 6. Tulos ilmoittaa kaikista koneista, jotka ovat ylhäällä 10.10.10.0-255 välillä.
- 7. Wiresharkkiin muodostui tottakai paljon informaatiota noin monesta eri osoitteesta.
- 8. Tulokset samoja, kun aikaisemmassa tutkimassamme -sn tehtävässä. (“Koneemme lähettää kohteeseen echo (ping) requestin, SYN- paketin porttiin 443 , ACK-paketin (80) porttiin ja timestamp requestin. Kohde koneelta saadaan RST ja RST/ACK -paketteja takaisin”).
- output files -oA foo
- 1. Tulostaa tiedot kolmessa eri “pää”formaatissa.
- 2. Kokeilin komentoa “sudo nmap -p 80 -sS 10.10.10.215 -oA testitulokset
- 3. Tulokset skannauksesta oli tallennettu 3 eri formaatissa “testitulokset” nimellä.

- version scanning -sV
- 1. Tämä on jo testattu ylempänä.
- OS fingerprinting, version detection, scripts, traceroute -A (miksei mnemonic ole –and-kitchen-sink?)
- 1. Käyttöjärjestelmä voidaan todeta käyttämällä kohdekoneen vastauksen TCP/IP pinojen sormenjälkiä. Nmap vertailee tuloksia sen “nmap-os-db” tietokannan yli 2,600 OS sormenjälkeen ja katsoo onko mätsääviä tuloksia, tulostaen käyttöjärjestelmän tiedot jos löytyy mätsäävä kohde (en keksinyt “mätsäävälle” parempaa sanaa). Jos nmap ei pysty tunnistamaan käyttöjärjestelmää, mutta muuten olosuhteet ovat hyvin (portteja on löydetty esimerkiksi), nmap antaa mahdollisuuden lähettää käyttöjärjestelmästä tietoja (jos olet varma käyttöjärjestelmästä) ja näin seuraaville käyttäjille nmap pystyy tarkemmin todentamaan kyseisen käyttöjärjestelmän.
- 2. Parametrillä “-A” nmap suorittaa käyttöjärjestelmän- ja version havaitsemisen (-o, -sV), skriptien skannaamisen(-sC) ja tracerouten(–traceroute) jäljittää osotteiden reitin hostien välillä. Parametristä käytetään myös nimeä “aggressive”.
- 3. En ymmärtänyt tätä muistisääntö vertailua.
- 4.Kokeillaan komentoa “sudo nmap -A 10.10.10.215”
- 5. Kaikki yllä luetellut toiminnot saivat tuloksia (mitään skriptiä emme kyllä ajaneet tässä).

- ajonaikaiset toiminnot (man nmap: runtime interaction): verbosity v/V, help ?, packet tracing p/P, status s (ja moni muu nappi)
- 1. Suorittaessa nmappia, jokainen näppäin on käytettävissä, joten voidaan vuorovaikuttaa nmapin kanssa jopa kesken skannauksen.
- 2. v/V, pienellä v:llä kesken suorittamisen ( ajoin komennon sudo nmap -A 10.10.10.215), saadaan enemmän tulostetta ja tietoja eri vaiheista ja yhteyskokeiluista.
- 3. help ?, avaa helpparin, jossa näkyy kaikki komennot joita mahdollista suorittaa kesken skannauksen.

- 4.p/P, isolla P:llä voit lopettaa reitin jäljittämisen.
- 5. status s, kaikilla muilla näppäinpainauksilla näkyviin tulee status boxi, jossa näkyy esimerkiksi aika, skannauksen tyyppi, paljonko skannaukseen suunnilleen menee vielä aikaa, paljonko on mennyt aikaa, prosentteina skannauksen kulku ja mitä ollaan jo skannattu.
- normaalisti ‘sudo nmap’. Miten nmap toiminta eroaa, jos sitä ajaa ilman sudoa? Suorita ja analysoi esimerkki.
- 1.Kokeilin komentoja “nmap -sS 10.10.10.215” ja “sudo nmap -sS 10.10.10.215”
- 2.-sS ei onnistu ilman sudoa…
- 3. Kokeillaan pingausta -sn

- 4.Erona sudolla kone lähettää myös ICMP-protokollan echo (ping) requestin, sekä suoraan ACK-paketin porttiin 80.
- vertaile -sV vs -A kestoa (ja lähetetyn datan määrää jos osaat; time, nethogs, wireshark)
- 1. sudo nmap -sV 10.10.10.215
- =55 sekuntia ja 2737 eri datapakettia.
- 2. sudo nmap -A 10.10.10.215
- =62 sekuntia ja 2900 datapakettia.
- 3. En ole ihan varma mistä voisin tutkia oikeasti liikkuvan datan määrää.
c) Ninjojen tapaan. Aja nmap-versioskannaus -sV omaan paikalliseen weppipalvelimeen. Weppipalvelimeksi sopii esim ‘python3 -m http.server’ tai oma apache. Piiloutuuko nmap-skannaus hyvin palvelimelta? Vinkki: wiresharkissa “http” on kätevä filtteri, se tulee siihen yläreunan “Apply a display filter…” -kenttään. Nmap-ajon aikana p laittaa packet tracing päälle.
- sudo python3 -m http.server –> pystytin oman webbipalvelimen
- localhost:8000, näemme että palvelin on toiminnassa.
- Wiresharkilla aloin kuuntelemaan lo (loopback) verkkolaitetta eli paikallista ympäristöäni, jossa web-palvelin toimi tällä hetkellä (127.0.0.1). Suodatin vielä sen kuuntelemaan vain http:ta “http”
- Ajoin nmap-versioskannauksen omaan paikalliseen webbipalvelimeen komennolla: “sudo nmap -p 8000 -sV 127.0.0.1”
- skannaus löysi palvelun ja sen version –>

6.Wiresharkilla näemme nmapin lähettävän “GET” pyyntöjä eli se pyytää palvelimelta eri tietoja joihinkin se vastaa “OK”:lla ja joitain tiedostoja ei löydy. Joiden avulla nmap vertailee tietokantaansa dataa ja etsii oikeaa versiokokonaisuutta.
7. Piiloutuuko nmap-skannaus hyvin palvelimelta? Yritin etsiä webbipalvelimen kehittäjätyökalun “network” välilehden avulla, saisinko tietoa että juuri nmap on lähettänyt get-pyyntöjä. En kylläkään löytänyt mitään… nmap ilmeisesti piiloutuu hyvin palvelimelta tai sitten en osaa vain etsiä tietoa oikeasta paikasta.

d) UDP-skannaus. “Mulla olis vitsi UDP:sta, mutta en tiedä menisikö se perille”. Etsi tarvittaessa itse lähteet.
- Mitkä ovat tavallisimmat tai kiinnostavimmat palvelut, joita UDP-skannauksella voisi löytää? = DHCP, SNMP (TCP/IP-verkkojen hallinnassa käytettävä tietoliikenneprotokolla. Protokollan avulla voidaan kysellä verkossa olevan laitteen tilaa tai laite voi itsenäisesti antaa hälytyksiä.) ja DNS palvelut ovat yleisimmät UDP-protokollaa käyttävät palvelut.
- Miksi UDP-skannaus on hankalaa ja epäluotettavaa? = Tekniikassa haastavinta on tehdä se nopeasti. Monesti porteilta ei tule mitään vastausta takaisin (time outs), joten skannauksen ajamiseen menee todella paljon aikaa(plussana vielä Linux-tyyli limittaa pakettien lähettämisen yhteen per sekunti skannauksessa. Vastauksena voi tulla myös monesti open | filtered, joka ei anna yhtään enempää varmuutta portin tilasta.
- Miksi UDP-skannauksen kanssa kannattaa käyttää –reason flagia? Tulostaa Nmapin johtopäätöksen portin tilaan liittyen (info). Auttaa selventämään portin tiloja, erityisesti lukuisten ICMP unreachable errorien ja harvojen vastaus viestien varalta.
e) Avaa yhteys HackTheBoxin verkkoon ja osoita, että yhteys toimii. Varmista esimerkkiosoitteella, että olet yhteydessä oikeaan HackTheBox maaliverkkoon. Voit esimerkiksi tarkistaa ipcalc:lla, että kyseessä on yksityinen IP. Kokeilla pingillä, että osoite vastaa vain, kun VPN-tunneli on päällä. Kokeilla surffata jotain sivua, joka näkyy vain tuolta maaliverkosta. Ja tietysti, että kaikki toimii odotetulla tavalla.
f) Tiedustele aktiivisesti HackTheBoxin verkko. Analysoi tulokset. Käytä nmap-porttiskanneria. Seuraa koko ajan porttiskannerin toimintaa snifferillä, kuten tshark tai wireshark. HTB:n ratkaisut yhdessä sovitun salasanan taakse, jotta emme spoilaa toisten kilpailua. Tämä on laaja tehtävä, koska analysoitavaa on paljon. Pelkät komentojen tulosteet ilman analyysia eivät riitä, pääpaino on tulosten selittämisellä ja tulkinnoillasi.
Nämä kaksi ylempää tehtävää ovat tämän linkin takana (HUOM vaatii salasanan): HTB-tehtävät
Yhteenveto:
Tehtäviin meni aikaa noin 15 tuntia. Olen muutenkin todella hidas sisäistämään asioita ja tässä tuli paljon uutta asiaa. En halunnut vain käyttää eri toimintoja vaan myös ymmärtää niiden tarkoituksen. Olen kyllä tyytyväinen, että yksi osa-alue käytiin näin tarkasti läpi, koska en ollut siis ikinä ennen käyttänyt edes kyseistä skannaajaa. Voi sitten tulevaisuudessa skannailla luottavaisemmin mielin.
Lähteet:
€ Santos et al: The Art of Hacking (Video Collection) Luku 4, Luettu 20.11.2020:
https://learning.oreilly.com/videos/the-art-of/9780135767849/9780135767849-SPTT_04_00
Lyon 2009: Nmap Network Scanning: Luettu 20.11.2020:
https://nmap.org/book/man-port-scanning-techniques.html
https://nmap.org/book/man.html
https://nmap.org/book/man-port-scanning-basics.html
https://nmap.org/book/man-port-specification.html
https://nmap.org/book/man-nse.html
https://nmap.org/book/man-runtime-interaction.html
Nmap usage list, Luettu 20.11.2020:
https://svn.nmap.org/nmap/docs/nmap.usage.txt
3-way handshake, luettu 21.11.2020:
Tero Karvinen – Kurssisivu, Luettu 20.11.2020:
http://terokarvinen.com/2020/tunkeutumistestaus-kurssi-pentest-course-ict4tn027-3006-autumn-2020/
IP Calculator, Luettu 22.11.2020:
Nmap – cheat sheet, Luettu 22.11.2020::