Penetration testing – Work 4

Tehtävä 4

h4 Tiedustelua

Tee ja raportoi:

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.

Analyysi ja selittäminen on tärkeää. Toki tarvitaan ote snifferin lokista, komento ja ote sen tulosteesta, mutta ne eivät riitä ilman selitystä.

 

Raportti:

Tetävässä käytin Windows 10 läppäriä, jonne on asennettu VMWare Workstation Pro 15 virtuaalinen ympäristö. Ympäristö koostui Kali linuxista (hyökkääjä) ja Metasploitable 2 Ubuntu linuxista (hyökkättävä). Molemmat koneet olivat samassa virtuaaliverkossa. Käytin Kali linux konetta Windows 10 -isännästä SSH-yhteydellä MobaXtermi ohjelmaa käyttäen.

Skannasin virtuaaliverkkoa ilman porttiskannausta koska pitänyt selvittää IP-osoitteet

nmap -v -sn 192.168.142.0/24

Aktiivisia IP-osoiteita oli kolme:

192.168.142.2 – VMWare NAT

192.168.142.133 – Kali linux

192.168.142.134 – Kohde kone

Tehtävän kysymykset ja vasaukset

Kysymys a: nmap TCP connect scan -sT

TCP connect scan on oletusarvoinen TCP-skannaustyyppi, kun SYN-skannaus ei ole vaihtoehto. Sitä tehtään silloin, kun käyttäjällä ei ole raakapakettien käyttöoikeuksia (nmap sudo oikeuksilla) tai hän tarkistaa IPv6-verkkoja. Tämä on sama korkean tason järjestelmäkutsu, jota verkkoselaimet, P2P-asiakkaat ja useimmat muut verkkokäyttöiset sovellukset käyttävät yhteyden muodostamiseen. (Nmap.org)

Sama komento suoritettuna sudo oikuksilla, ei tuonnut paljon muuta informaatiota. Ainoana erona oli kohdekoneen MAC osoite

Laitoin verkkonifferin päälle Kali linux -koneella ennen nmap-komennon suorittamista. Nmap on alkanut skannamaan portteja kohdekoneella, jotka todennäköisemmin suorittavat palvelua 80, 443, 3306, jne.

Skannaus toimii näin. Portille lähetetään SYN paketin. Jos vastauksena tuli RST, ACK pakerri, niin portilla ei ole palvelua (katso portti 443 kuvassa). Jos palvelu löytyy, niin se palauttaa SYN, ACK, jonka jälkeen nmap lähettää ACK pyyntö takasin, johon vastauksena tulee SSH banner string (SSH-1.99-OpenSSH_3.1p1\n). Sen jälkeen kun yhteys on muodostettu nmap tappaa yhteyden lähettämällä RST paktin

 

Kysymys b: nmap TCP SYN “used to be stealth” scan, -sS (tätä käytetään skannatessa useimmin)

TCP SYN Scan voidaan suorittaa nopeasti skannaamalla tuhansia portteja sekunnissa nopeassa verkossa, jota häiritsevät palomuurit eivät estä. SYN-skannaus on suhteellisen huomaamaton ja vaivalloinen, koska se ei koskaan viimeistele TCP-yhteyksiä. Se toimii myös kaikkia yhteensopivia TCP-pinoja vastaan. SYN skannaus pitää suorittaa sudo oikeuksilla (katso linkki)

Filteröin Wiresharkissa vain portin 25 skannausta. Kuvästä näkee, että TCP SYN skannaus lähettää SYN paketin ja jos on saanut vastauksena SYN, ACK paketin, niin lopettaa yhteyden RST paketilla.

 

Kysymys c: nmap ping sweep -sn

Disable port scanning. Host discovery only käskee Nmapia olemaan suorittamatta porttiskannausta hostin löydön jälkeen ja tulostamaan vain käytettävissä olevat hostit, jotka vastasivat Nmapille. Tätä kutsutaan usein “ping-skannaukseksi”

-sn:llä tehty oletusisäntäetsintä koostuu oletuksena ICMP-kaikupyynnöstä, TCP SYN:stä porttiin 443, TCP ACK:sta porttiin 80 ja ICMP-aikaleimapyynnöstä. Kun etuoikeutettu käyttäjä suorittaa sen, kohteen portteihin 80 ja 443 lähetetään vain SYN-paketteja (yhteyspuhelun avulla). Kun etuoikeutettu käyttäjä yrittää skannata kohteita paikallisessa ethernet-verkossa, ARP-pyyntöjä käytetään, ellei –send-ip ole määritetty. Vaihtoehto -sn voidaan yhdistää mihin tahansa etsintäanturityyppiin (-P*-valinnat) joustavuuden lisäämiseksi.

Koska -sn skannaus skannaa IP osoitteita, sille annetaan skannattavan IP-osoitevaruuden esimerkiksi:

$ nmap -sn 192.168.142.130-139

$ nmap -sn 192.168.142.0/24

Wireshark näyttää, että Nmap lähettää Broadcastilla (kaikille verkossa oleville koneille) ARP paketin, jossa kysyy kenellä on tietty IP-osoite. Outoa, koska ohjeissa sanotaan ICMP paketista. Siellä myös sanotaan , että lokaaliverkossa skannausta tehdän ARP:lla. Teen skannausta virtuaalisessa LAN verkossa. Ilman sudoa Nmap lähettää löytyneelle konelle TCP SYN paketin, ili tekee kädenpuristuksen ja lopettaa yhteyden RST, ACK paketilla.

Sudon kanssa Nmap ei lähetä mitään paketteja havaittuun koneeseen.

 

Kysymys d: nmap don’t ping -Pn

nmap -Pn (dontät ping) Tämä vaihtoehto ohittaa isännän etsintävaiheen kokonaan. Oikea isäntähaku ohitetaan kuten luetteloskannauksessa, mutta sen sijaan, että Nmap pysäyttäisi ja tulostaa kohdeluettelon, se jatkaa pyydettyjen toimintojen suorittamista ikään kuin jokainen kohde-IP olisi aktiivinen.

kun skanataan tiettyä IP-osoitetta, niin Nmap skannaa 100 porttia.

Kun skannataan IP-osoiteiden avaruutta, niin Nmap skannaa kaikia koneita listassa

Wireshark näyttää, että ensin se yrittää kysyä DNS:ää, kenellä on skannattavat IP-osoitteet.

Sitten se alkaa skannata portteja lähettämällä TCP ACK paketteja.

 

Kysymys e: nmap version detection -sV (esimerkki yhdestä palvelusta yhdessä portissa riittää)

Service and Version Detection Nmap raportoi noin 2 200 tunnetun palvelun nmap-palvelutietokannan avulla, että kyseisellä portilla toimii tietty palvelu.

Päätin skaanata portta 80. Nmap tunnisti, että portilla toimii Apache 2.2.8 ((Ubuntu) DAV/2)

Wiresharkissa näkee, että tavallisen TCP käden puristuksen jälkeen Nmap alkaa lähettämään palvelulle HTTP GET ja POST pyyntöjä

Paketissa 63 tuli vastaus 404 Not Found. Paketissa lukee HTTP palvelimen versio

 

Kysymys f: nmap porttien valinta -p1-100, –top-ports 5, -p-

Port Selection Data and Strategies Oletusarvoisesti Nmap skannaa kunkin pyydetyn skannausprotokollan 1 000 suosituinta porttia. Tämä kaattaa noin 93 % TCP-porteista ja 49 % UDP-porteista.

nmap – 1-100 (Port range), skannaa kaikki portit tietyssä välissä.

Wiresharkista näkee, että Nmap skannaa portit 1 -100. Eli just ne portit, mitka käyttäjä tahtoo skaannata.

nmap –top-ports 5  (Port scan the top x ports)

Skannaa yleisimmät portit.

nmap -p-   ( Port scan all ports) range 1-65536

 

Kysymys g: nmap ip-osoitteiden valinta; luettelo, verkkomaskilla 10.10.10.0/24, alku- ja loppuosoitteella 10.10.10.100-130 (ipcalc auttaa ymmärtämään, miten verkkomaskia tulkitaan)

Target Specification. Käytetään kaun halutaan skaannata tiettyä verkkoa tai IP-osoitteiden avaruutta

 

Kysymys h: nmap output files -oA foo. Mihin kukin tiedostotyyppi sopii?

Output. Nmap tarjoaa ulostulon viidessä eri muodossa. Oletusarvoa kutsutaan interaktiiviseksi ulostuloksi, ja se lähetetään vakiolähtöön (stdout). Siellä on myös normaali lähtö, joka on samanlainen kuin interaktiivinen, paitsi että se näyttää vähemmän tietoa ja varoituksia ajon aikana, koska sen odotetaan jäsentävän tarkistuksen päätyttyä, eikä interaktiivisesti.

XML-tulostus on yksi tärkeimmistä tulostustyypeistä, koska se voidaan muuntaa HTML-muotoon, jäsentää helposti ohjelmilla, kuten Nmap GUI, tai tuoda tietokantoihin.

Kaksi muuta tulostustyyppiä ovat tavallisia piirrettäviä tulosteita. joka sisältää suurimman osan kohdeisäntätiedoista yhdellä rivillä ja sCRiPt KiDDi3 0utPUt käyttäjille, jotka tunnistavat itsensä |<-r4d.

nmap -oA tulostaa kolmessa päämuodossa kerralla.

Nmap tulostanut output kolmeen eri tiedostoon.

XML tarjoaa vakaan muodon, jonka ohjelmisto jäsentää helposti.

gnmap formattia on helppo käsitellä komentorivillä yksinkertaisilla Unix-työkaluilla, kuten grep, awk, cut ja diff.

nmap formatti on hyvin samanlainen kuin interaktiivinen tulos, ja se lähetetään valitsemaasi tiedostoon. Se eroaa interaktiivisesta lähdöstä useilla tavoilla, jotka johtuvat odotuksesta, että tämä tulos analysoidaan skannauksen päätyttyä, eikä interaktiivisesti.

 

Kysymys k: nmap ajonaikaiset toiminnot (man nmap: runtime interaction): verbosity v/V, help ?, packet tracing p/P, status s (ja moni muu nappi)

Nmap-toiminnon aikana kaikki näppäinpainallukset tallennetaan. Näin voit olla vuorovaikutuksessa ohjelman kanssa keskeyttämättä ja käynnistämättä sitä uudelleen. Tietyt erikoisnäppäimet muuttavat asetuksia, kun taas kaikki muut näppäimet tulostavat skannauksesta kertovan tilaviestin. (Nmap.org Runtime Interaction)

Käynnistin verkon skannauksen ja painoin ? -merkin. Ruudulle tuli Help -menu interaktiivisille komennoille.

v/V – Laajentaa ja pienentää kuvausta kannauksesta

 

d/D – Nostaa ja laskee Debug tasoa. Se tulostaa pakettien

p/P – Laittaa päälle ja pois päältä pakettien seurannan

 

Kysymys l: normaalisti ‘sudo nmap’. Miten nmap toiminta eroaa, jos sitä ajaa ilman sudoa? Suorita ja analysoi esimerkki.

Ilman sudoa Nmap skannaa:    TCP Connect (-sT)

Sudon kanssa Nmap skannaa: TCP SYN Stealth (-sS)

Lopuksi syy siihen, miksi nmap pysäyttää tarkistuksen, johtuu siitä, että IMCP Type 8 (echo a.k.a ping) ei palauta ICMP Type 0:ta (kaikuvastaus). Tämä komento ohittaa pingin ja jatka skannausta (StackExchange)

Sudon kanssa Nmap ei suorita TCP kädenpuristusta loppuun vaan keskeyttää sen RST paketilla

 

Kysymys m: nmap, vertaile -sV vs -A kestoa (ja lähetetyn datan määrää jos osaat; time, nethogs, wireshark). Käytä harjoitusmallina metasploitable2.

Nmap -A Enables OS detection, version detection, script scanning, and traceroute (Stationx. Nmap cheatsheet)

Nmap -A kestää on kaksi kertaa pidempään ja tuottaa kaksi kertaa enemmän verkkoliikennettä kuin -sV, muta myös antaa enemmän informaatiota kohdekoneesta.

 

Kysymys d: Ninjojen tapaan. Piiloutuuko nmap-skannaus hyvin palvelimelta? Vinkkejä: Asenna Apache. Aja nmap-versioskannaus -sV omaan paikalliseen weppipalvelimeen. Etsi Apachen lokista tätä koskevat rivit. 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. Vapaaehtoinen lisäkohta: jääkö Apachen lokiin jokin todiste nmap-versioskannauksesta? UDP-skannaus. “Mulla olis vitsi UDP:sta, mutta en tiedä menisikö se perille”

 

Minullakin on vitsi TCP:sta, jos se ei mene perille, niin toistan sen.

Asensin Apache palvelimen näiden ohjeiden mukaan. Käynnistin Nmap -sV . Avasin lokit /var/log/apache2/access.log

Lokeista näkee, että palvelimelle tuli useampi GET pyyntö ja yksi POST eri HTTP versiolla. Kahteen Apache vastasi 200 OK, mikä on hyväksytty vastaus. Lokista näkee, että pyyntöjä lähettynyt Nmap Searching Engine, eli jälkejä jää.

Wireshark verkon kuuntelija näyttää myös vastaukset ja suurin osa niistä 404 Not found. Nmap lähettää brute force menetelmällä eri HTTP kutsut ja saadusta 200 Ok vastauksesta päättää mikä HTTP-palvelimen versio toimii portilla 80.

Yksi Nmapin pyynnöistä sai vatsuksena palvelimen version Apache/2.4.53 (Debian)

 

Kysymys e: Mitkä ovat tavallisimmat tai kiinnostavimmat palvelut, joita UDP-skannauksella voisi löytää? (tässä alakohdassa vain vastaus viitteineen, ei tarvita testiä tietokoneella)

UDP protokollalla toimivat DNS, SNMP, DHCP (rekisteröidyt portit 53, 161/162 ja 67/68) ovat kolme yleisintä, sanotaan Nmap.org sivustossa.

 

Kysymys f: Miksi UDP-skannaus on hankalaa ja epäluotettavaa? Miksi UDP-skannauksen kanssa kannattaa käyttää –reason flagia? (tässä alakohdassa vain vastaus viitteineen, ei tarvita testiä tietokoneella)

UDP Scan (-sU)

–reason flagi näytä syy, miksi portti on tietyssä tilassa, sama tulos kuin -vv (StationX. Nmap Cheat sheet) Voi olla hyödyllistä ymmärtää syy, miksi portti on merkitty avoimeksi, suljetuksi tai suodatetuksi ja miksi skannatava kone on merkitty eläväksi. Jotkut portit voivat olla tilassa open|filtered, se on ongelma UDP skannauksessa, koska avoimet UDP-portit vastaavat harvoin tyhjiin pyyntöihin. Reason flagi näyttää syyn, josta voi saada selville mikä on portin oikea tila

 

Kysymys g: Vapaaehtoinen bonuskohta: näytä esimerkki onnistuneesta UDP-skannauksesta, sekä jonkin UDP:n erityisominaisuuden takia epäonnistuneesta tai harhaanjohtavan tuloksen antavasta UDP-skannauksesta.

 

Aktiivista tiedustelua. Mihin tämä työkalu on tarkoitettu? Kokeile tätä työkalua omaan harjoitusmaaliin ja selitä tulokset:

Kysymys h: fuff (hakemistojen kokeilu riittää, vapaaehtoisena bonuksena muutakin)

Fuff tai “Fuzz Faster you Fool” on avoimen lähdekoodin web-fuzzing-työkalu, joka on tarkoitettu elementtien ja sisällön löytämiseen verkkosovelluksista tai verkkopalvelimista.

Käynnistin FFUF skannamaan Metasploitable 2 konetta. Parametrina FFUF ohjelmalle pitää antaa kohdekoneen IP-osoite tai FQDN ja sanalistan, jolla se etsii hakemistot web-palvelimella.

Tuloksena FFUF löysi mm seuraavat hakemistot:

phpMyAdmin – Koneella on asennettu PHP ja mySQL

phpinfo

tikiwiki – TikiWiki CMS

FFUF työkalu antaa kuvan mitä hakemistoja on web-palvelimella ja mitkä tiedostot ovat siellä.

 

Lähteet:

Codingo: Everything you need to know about FFUF

FFUF: GitHub

GeeksForGeeks. ffuf – Fast Web Fuzzer Linux Tool Written in Go

Konko Maji. ffuf Writeup — a Tryhackme room

Kysymys i: nikto

NIKTO on havoittuvuuksien skanneri. Nikto suorittaa yli 6000 testiä verkkosivustoa vastaan. Se skanna palvelimien tietoturva-aukkoja ja väärät konfiguratiot.

Käynnistin sen vain -host parametrilla. Tuloksena nikto ilmoittanut löytäneensä vahan version Apache palvelimesta, sen havoittuvuuksia, phpMyAdmin ja phpinfo. Nikto myös selitti havaintojaan, mikä auttaa tulosten tulkinnassa.

Lähde:

Hacker Target. Nikto Website Scanner

Kysymys j: Pizza fantasia: jokin valitsemasi tiedustelutyökalu, esimerkiksi EyeWitness, wpscan, openvas, nucleus tai jokin muu.

Päätin kokeilla Nessus työkalua. Nessus on web sovellus. Se käyttää Nmapin kaltaisia tekniikoita haavoittuvuuksien etsimiseen ja raportoimiseen, jotka sitten esitetään mukavassa käyttöliittymässä.

Asensin Nessus ohjelman TryToHackMe sivustoilla olevien ohjeiden mukaan. Pitänyt ensin rekisteröityä ja saada aktivointikoodin (Essentials versio). Latasin ohjelmapaketin Nessus-10.1.2-ubuntu1110_amd64.deb Tenablen virallisilta sivuilta: https://www.tenable.com/downloads/nessus

Sitten avasin paketi ja käynnistin sovelluksen.

$ mkdir Nessus

$ cd Nesus

$ sudo dpkg -i Nessus-10.1.2-ubuntu1110_amd64.deb

$ sudo /bin/systemctl start nessusd.service

Sen jälkeen avasin sen selaimessa https://localhost:8834/ jossa viimeistelin asennusta ja konfiguraatiota. Asennusvelho pyytää aktivoida sovelluksen aktivointikoodilla.

Nessus ohjelman asennus kestänyt useita minuutteja. Asennus vaatii noin 5 GB vapaata tilaa kovalevyllä. Ensimmäinen asennusyritys Kali linux koneelle kaatui, koska siellä ei ollut tarpeeksi tilaa.

Lopulta sain sen asennettua. Sovellus pyytänyt syöttää verkkoavaruuden, minkä pitää skannata. Syötin Metasploitable 2 koneen IP-osoitteen. Skannaus tkei yhteensä 69 havaintoa, joista 7 oli kriittisiä ja 4 korkean tason havoittuvuuksia. Raportin skannauksesta voidaan exportoida XML muotoon tai tietokantaan. Nessus on lisännyt tuloksiin kriittisenä havoittuvuutena myös käyttöjärjestelmän loppunut tuki, mitä mikään muu käyttämäni skanneri ei tehnyt.

Nessus on tehokkain ja helppokäyttöisin skanneri mitä tähän asti olen nähnyt. Sillä on helppoa skannata suurempia verkkoja ja tulokset on helppoa käsitellä ja tulkita. Se sopii suuremille yrityksille, joiden verkkoissa on satoja koneita. Nessus Essentials lisenssi antaa skannata vain rajoitetun määrän IP-osoitteita (16)

 

Lähteet:

TryToHackMe. Nessus

Tenable. Video

Tenable Documentation. Create and Manage Scans

Nmap.org

Wireshark. Display Filters

Stack Exchange. Why do I need root privileges to send a raw packet from a UNIX machine?

StationX. Nathan House. Nmap Cheat Sheet

TechTarget. Address Resolution Protocol (ARP)

StackExchange: different behavior: “sudo nmap” vs just “nmap”?

TechDhee. How To Install Apache on Kali Linux

GeekUnitevsity. The reason flag