H4 Tiedustelua
Aktiivinen tiedustelu (Active Recon)
Tehtävänanto: https://terokarvinen.com/2021/penetration-testing-course-2021-autumn/#h4-tiedustelua
Sisällysluettelo
- H4 Tiedustelua
- z) Tiivistä
- a) - m) Tee ja raportoi: Nmap
- Alkutoimet
- a) nmap TCP connect scan -sT
- b) nmap TCP SYN scan -sS
- c) nmap ping sweep -sn
- d) nmap don’t ping -Pn
- e) nmap version detection -sV
- f) nmap porttien valinta -p1-100, –top-ports 5, -p-
- g) nmap ip-osoitteiden valinta
- h) nmap output files -oA foo
- i) nmap version scanning -sV
- j) nmap OS fingerprinting, version detection, scripts, traceroute, -A
- k) nmap ajonaikaiset toiminnot
- l) sudo nmap
- m) nmap vertailu
- d)[sic] Ninjojen tapaan
- e) - f)[sic] Tee ja raportoi: UDP-skannaus
- h) - j)[sic] Tee ja raportoi: muita aktiivisen tiedustelun työkaluja
z) Tiivistä
€ Santos et al: The Art of Hacking
https://learning.oreilly.com/videos/the-art-of/9780135767849/9780135767849-SPTT_04_00/
- Onnistunut tiedustelu on vaatimus muiden hyökkäyksen vaiheiden (Mitre Att&ck taktiikoiden) toteuttamiseen
- Tiedusteluun liittyy enumeraatio, arvojoukon järjestetty listaaminen (ts. kohteen tietojen kerääminen ja järjestely)
- Enumeraatio cheat-sheet pentestaukseen: https://hausec.com/pentesting-cheatsheet/#_Toc475368976
- Aktiivinen tiedustelu aka skannausvaihe jättää jälkiä logeihin mutta se ei tarkoita että niitä välttämättä huomattaisiin
- Metodologia auttaa oikeisiin kohteisiin järjestelmiin ja palveluihin keskittymisessä
- Passiivisessa vaiheessa löydettyjen porttien porttiskannaus
- Nmap, monipuolisin, käytetyin ja stabiilein työkalu https://nmap.org
- Masscan, nopein skanneri, jos skannattavaa riittää
- Udprpotoscanner UDP-porttien skannaukseen
- Verkkopalveluiden arviointi
- Haavoittuvuusskannaus joka tulisi tehdä tiedusteluvaiheen lopuksi
- Äänekäs vaihe joka hälyttää IDS:n (Intrusion Detection System) jos sellaisia käytössä
- Passiivisessa vaiheessa löydettyjen porttien porttiskannaus
- Nmap demo
nmap -sS -vv -T4 -A localhost
-Pn
treat all host as online-p <port ranges>
- Masscan demo
masscan -80,443 localhost/24 --rate=10000
- kykenee skannaamaan koko Internetin yhden portin osalta 3:ssa minuutissa!
- UDP proto scanner demo
./udp-proto-scanner.pl localhost/24
- Kuinka priorisoida verkkopalveluita: EyeWitness
- https://github.com/ChrisTrunce/EyeWitness
- Ottaa kuvakaappauksen ja header-informaation verkkopalveluista
- EyeWitness demo, käy läpi ip_list.txt tiedostoon tallennetut osoitteet portit 80 (http) ja 443 (https)
nmap -sT -t4 --open -p80,443 192.168.3.0/24
cat ip_list.txt
./EyeWitness.py --web -f ip_list.txt
Lyon 2009: Nmap Network Scanning: Chapter 1. Getting Started with Nmap
https://nmap.org/book/nmap-overview-and-demos.html Gordon Lyon aka Fyodor Vaskovich on kirjoittanut tuon menestyneen kirjan lisäksi nmapin.
Tapahtumaympäristö
- Kirja alkaa tunkeutumistestausta tekevän Felixin kuvauksella, joka saa tehtäväkseen uuden MMORPG:n (massive multi-player online role-playing game) palomuurin ulkopuolelta tulevan tunkeutumistestauksen.
- Ensimmäiseksi suoritetaan tiedustelua ja network discovery: mitä ip-osoitteita kohde käyttää, mitä palvelimia heillä on ja mitä palveluja niissä pyörii, yleisen verkkotopologian ja palomuuri/filtteröintiasetusten selvittäminen.
- Kohdeyritys oli kertonut etukäteen verkot jotka se halusi testattavaksi: 6.209.24.0/24 ja 6.207.0.0/2, yhteensä 1280 osoitetta.
nmap -sL 6.209.24.0/24 6.207.0.0/22
nmap list scan enumeroi jokaisen IP:n verkkoblokissa ja tekee reverse-DNS lookupin. Tämä tehdään piiloutumisen takia ja kohteesta varmistumisen takia.- Kohteen varmistumisen jälkeen tehdään äänekkäämpi skanni jonka on tarkoituskin herättää kohdeyrityksen huomio. Jos skanneja ei huomata se kertoo tietoturva-aukoista.
Äänekäs skanni
nmap -sS -p- -PE -PP -PS80,443 -PA3389 -PU40125 -A -T4 -oA avatartcpscan-%D 6.209.24.0/24 6.207.0.0/22
Flägien selitteet
-sS
SYN scan aka default scan.-sSU
lisää UDP:n skanniin-p-
=-p1-65535
= kaikkien porttien skannaus 1-65535. Default skannaa 1000 tavallisinta porttia.-PE -PP -PS80,443 -PA3389 -PU40125
discovery types / ping types. Välttää käyttämättömien osoitteiden skannauksen. Lähettää ICMP echo request (-PE) ja timestamp request (-PP) paketit, TCP SYN paketit portteihin 80 ja 443 (-PS80,443), TCP ACK paketit portteihin 3389 (-PA3389) ja UDP paketit porttiin 40125 (-PU40125).-
Jos nmap saa vastauksen yhteenkään porteista se olettaa että osoitteen palvelin pystyssä.
-A
Advanced ja Aggressive ominaisuudet kuten OS:n ja palveluntunnistus. Vastaa-sV -sC -O --traceroute
joka tarkoittaa: version tunnistaminen, Nmap default skriptien ajaminen, kohde OS:n tunnistaminen ja traceroute.-A
-flägiin voi liittää vielä lisää ominaisuuksia.-T4
säätää timing aggressiiviselle tasolle (4/5), vastaa komentoa-T aggressive
. Oman ja kohdeverkon yhteyden pitää olla kohtalaisen nopea ja varma flägiä käytettäessä.oA avatartcpscan-%D
printtaa tulokset kaikkiin tiedostoihin (normal, XML, grepable)avatartcpscan-<päivämäärä>.<tiedostomuoto>
. Tiedostotyypit .nmap, .xml ja .gnmap. Päivämäärä muotoa kkppvv. Tulokset ja virheilmoitukset printtautuu tiedostojen lisäksi konsoliin.-
6.209.24.0/24 6.207.0.0/22
kohdeyrityksen verkkoblokit CIDR-notaatiossa. Myös muoto6.209.24.0-255 6.207.0.0-1023
mahdollinen. - Tällaisessa massiivisessa skannissa menee helposti pari tuntia.
Tulokset, ensimmäinen kone
Nmap scan report for fw.corp.avataronline.com (6.209.24.1)
(The 65530 ports scanned but not shown below are in state: filtered)
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 3.7.1p2 (protocol 1.99)
| ssh-hostkey: 1024 7c:14:2f:92:ca:61:90:a4:11:3c:47:82:d5:8e:a9:6b (DSA)
|_2048 41:cf7d:839d:7f66:0ae1:8331:7fd4:5a97:5a (RSA)
|_sshv1: Server supports SSHv1
53/tcp open domain ISC BIND 9.2.1
110/tcp open pop3 Courier pop3d
113/tcp closed auth
143/tcp open imap Courier Imap 1.6.X - 1.7.X
3128/tcp open http-proxy Squid webproxy 2.2.STABLE5
Device type: general purpose
Running: Linux 2.4.X|2.5.X
OS details: Linux Kernel 2.4.0 - 2.5.20
Uptime 3.134 days
Ensimmäisen koneen analyysi
- Reverse DNS name
fw.corp.avataronline.com (6.209.24.1)
kertoo että kyseessä on todennäköisesti palomuuri yritysverkkoon. - Suurin osa porteista filtered-tilassa, nmap blokattu palomuurin sääntöjen toimesta: deny-by-default.
- Vaikka SunRPC (port 111) olisi jäänyt auki jollakin, palomuuriasetukset estäisivät yhteyden siihen.
- SSH:n voisi sallia vain tietyille osoitteille, ssh:ta vastaan voi yrittää Ncrack brute force network authentication crackeria: https://nmap.org/ncrack/.
- Myös portissa 53 mahdollisesti haavoittuva palvelu ISC BIND, joka on todennäköisesti tarkoitettu joka tapauksessa vain sisäverkon käyttöön ja näkyvissä ulospäin vahingossa. Sitä vastaan voi jatkaa tiedustelua zone transfer requesteilla, intrusive querieilla ja cache poisoningilla. IP spoofaamalla windowsupdate.microsoft.com tai toinen latauspalvelin hyökkääjä voi huiputtaa sisäisen käyttäjän ajamaan troijalaisen sisäverkossa olevalla koneella ja päästä palomuurin taakse.
- Porteissa 110 ja 143 olevat palvelut POP3 ja IMAP ovat sähköpostihakupalveluita, joilla ei ole portin 53 tapaan syytä olla tällä palvelimella. Ne voivat myös välittää postia tai tunnistetietoja kryptaamattomina. Käyttäjien tulisi käyttää VPN:ää katsoakseen spostinsa sisäverkosta. Palvelut tulisi myös salata SSL:llä, jolloin nmap olisi listannut ne ssl/pop3 ja ssl/imap. Brute forcettaminen näitä palveluita vastaan on paljon SSH:ta helpompaa.
- Squid proxy viimeisessä auki olevassa portissa 3128 todennäköisesti myös sisäverkon käyttöön. Felix kokeilee voiko proxyä hyväksikäyttämällä ottaa yhteyttä muihin sivuihin internetissä sekä sisäverkkoon.
- Kyseessä on Linux-palvelin joka on ollut pystyssä vain kolme päivää.
Tulokset, toinen kone
Nmap scan report for dhcp-23.corp.avataronline.com (6.209.24.23)
(The 65526 ports scanned but not shown below are in state: closed)
PORT STATE SERVICE VERSION
135/tcp filtered msrpc
136/tcp filtered profile
137/tcp filtered netbios-ns
138/tcp filtered netbios-dgm
139/tcp filtered netbios-ssn
445/tcp open microsoft-ds Microsoft Windows XP microsoft-ds
1002/tcp open windows-icfw?
1025/tcp open msrpc Microsoft Windows msrpc
16552/tcp open unknown
Device type: general purpose
Running: Microsoft Windows NT/2K/XP
OS details: Microsoft Windows XP Professional RC1+ through final release
Host script results:
|_nbstat: NetBIOS name: TRACYD, NetBIOS user: <unknown>, NetBIOS MAC: 00:20:35:00:29:a2:7f (IBM)
|_smbv2-enabled: Server doesn't support SMBv2 protocol
| smb-os-discovery:
| OS: Windows XP (Windows 2000 LAN Manager)
|_ Name: WORKGROUP\JOHND
Toisen koneen analyysi
- Windows XP kone. MS RPC haavoittuvuudet tekevät siitä patchaamattomana helpon maalin.
- Porteissa default state closed ei ole deny-by-default, vaikka portit 135-139 onkin filtteröity.
- Avoinna olevat portit 445 ja 1025 on kaksi esimerkkiä epätoimivasta porttisuodatuksesta.
- Tunnistamaton avoin 16552 todennäköisesti MS Messenger Service. Jos deny-by-default, nämä haavoittuvat portit olisivat kiinni.
- DCOM RPC exploit yksi esimerkki tällaisia Windows-koneita vastaan.
Muu analyysi
- Enemmänkin mahdollisesti haavoittuvia Windows-koneita verkossa.
- Tuotantoverkossa Ciscon reititin joka toimii rudimentaarisena palomuurina järjestelmiin.
- Rudimentaarinen reititin blokkkaa privileged 1-1024 portit, joka jättää haavoittuvia SunRPC ja muita palveluita saavutettavaksi verkossa.
- Useita palvelimia jotka nimetty clust-* ja joilla useita portteja auki joita nmap ei tunnista, todennäköisesti pelimoottorin daemoneita.
- avataronline.com on Linux-palvelin jossa Apache ja 80 ja 443 portit auki. Se käyttää haavoittuvaa OpenSSL-kirjastoa.
Lopputulos
- Ennen seuraavaa päivää Felix on saanut privileged accessin sisä- ja tuotantoverkossa.
Matrix
- Seuraavaksi vuorossa “esimerkki” alkuperäisestä Matrix-elokuvasta missä Trinity pingaa Matrixin sisäverkkoa
10.0.0.0/8
edistyneen hakkerointitekniikan “hyppää pilvenpiirtäjän katolta moottoripyörän selässä toiseen pilvenpiirtäjään ja vedä vartijoita turpaan” jälkeen. - Sitten Trinity ajaa
nmap -v -sS -O 10.2.1.3
mikä tarkoittaa verboosia TCP SYN scan (default scan) ja OS:n tunnistusta osoitteeseen 10.2.1.3. - 10.2.1.3 host on AIX 3.2 jolla on tusina portteja auki, joka mainitaan tietoturvakatastrofiksi ja joka äkkiseltään kieltämättä kuulostaa Metasploitable nyrkkeilysäkin veroiselta vastukselta, kaverilta joka ei varmasti lyö takaisin.
- Trinity ajaa kuitenkin saman komennon 10.2.2.2 koneeseen jolla on vain ssh-portti auki, joka valitaan maaliksi.
- Heikommalle hakkerille valinta vaikuttaa järjettömältä ssh:n ollessa moderni turvallinen protokolla. Tuohon aikaan portissa oli ilmeisesti nykyisin hyvin tunnettu haavoittuvuus. Kohdetta vastaan ajetaan assembly-koodilla oleva exploit ja Trinity muuttaa koneen root salasanan “Z10N0101”.
- Ja loggaa roottina sisään ja sulkee varavoimalähteet kaupungissa 27 korttelin alueelta.
Takaisin todellisuuteen
- Kirjoittaja kertoo kuinka valitsi nmapin työkalukseen suuren Internet yrityksen tietoturvajohtajana.
- Ongelma 100k koneen pitäminen turvallisina, kirjoitti nmap-diff työkalun nmap-skannauksen tuloksena syntyneiden tiedostojen muutoksille.
- Felixin esimerkkitarinan IP-osoitteet olivat oikeasti Yhdysvaltain armeijan ja tarinan opetus että ole varovainen ketä skannailet.
Lyon 2009: Nmap Network Scanning: Chapter 15
https://nmap.org/book/man.html Silmäile (ei tarvitse lukea kokonaan, 40 liuskaa pitkä)
Port Scanning Basics
https://nmap.org/book/man-port-scanning-basics.html opettele, mitä tarkoittavat: open, closed, filtered; muuten vain silmäily
- Open: portti hyväksyy TCP-yhteydet, UDP-datagrammit tai SCTP-assosiaatiot.
- Closed: portti on saavutettavissa mutta siellä ei ole vastaanottavaa palvelua. Kertoo että host pystyssä ja osa OS:n tunnistusta.
- Filtered: nmap ei osaa kertoa onko portti auki koska pakettisuodatus estää tavoittamasta porttia. Suodatuksen voi tehdä palomuuri (laite tai softa) tai reititin. Nmap yrittää useita kertoja filtteröityä porttia varmuudeksi, ettei kyse ole ruuhkasta verkkoyhteydessä.
Port Scanning Techniques
https://nmap.org/book/man-port-scanning-techniques.html (opettele, mitä ovat: -sS -sT -sU; muuten vain silmäily)
- Flägi
-sS
(TCP SYN scan) joka tuli jo aiemmin esille tiivistelmissä on default skanni joka voidaan suorittaa nopeasti tuhansiin portteihin sekunnissa nopeissa verkoissa. Myös huomaamaton koska ei suorita TCP-yhteydenottoa loppuun asti ja kertoo portin tilan: avoin, suljettu vai filtered. Monet Unix-järjestelmien palvelut kirjaavat tämänkin syslogiin ja joskus error messagen kera. - Flägi
-sT
(TCP connect scan) on defaultti silloin kun TCP SYN scan ei ole mahdollinen, kun käyttäjällä ei ole raw packet oikeuksia. Yhteys toteutetaan connect system callilla jota mm. selaimet käyttävät. Se on osa ohjelmointirajapintaa Berkeley Sockets API. Tämä skanni suorittaa kolmiportaisen TCP-yhteydenoton joka vie pidemmän aikaa ja kohdekoneet todennäköisemmin loggaavat sen. IDS voi huomata sen myös. - Flägi
-sU
(UDP scans) skannaa UDP-portteja, joita käyttävät mm. DNS(53), SNMP(161/162) ja DHCP(67/68). UDP-skannaus on hitaampaa ja hankalampaa kuin TCP-skannaus, jotkut auditoijat jättävät sen huomioimatta. Flägi voidaan liittää TCP-porttien skannauksen kanssa samaan komentoon. Tavallisimpiin portteihin kuten 53 ja 161 lähetetään protokolla-spesifi payload vastausmahdollisuuksien parantamiseksi. Useimpiin portteihin lähtee tyhjä paketti ellei –data, –data-string tai –data-length optiota ei ole määritelty. Jos vastausta kohteesta ei tule, määritellään portti open|filtered.-sV
versiontunnistusflägi auttaa erottamaan onko portti todella auki vai kiinni. UDP-skannin nopeuttamiseksi voi skannata monta hostia samaan aikaan, skannata suositut portit ekana, palomuurin takaa skannaus ja käyttää –host-timeout hitaiden hostien skippaamiseen.
Man Nmap
Silmäile (ei tarvitse lukea kokonaan)
- Löytyy netistä esim. https://linux.die.net/man/1/nmap
- Ja tietysti komennolla
man nmap
Linuxissa missä nmap asennettuna.
a) - m) Tee ja raportoi: Nmap
https://nmap.org/book/man-port-scanning-techniques.html 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.
Alkutoimet
Käynnistetään harjoitteluympäristö: VB Host-only virtuaaliverkon koneet hyökkääjä Kali ja kohdemaalit NullByte ja Metasploitable2, ja katsotaan käynnistettäessä että kaikilla käytössä vain Host-only adapterit. Pingataan hyökkääjällä Googlea että ollaan varmasti irti Internetistä:
┌──(kali㉿kali)-[~]
└─$ ping 8.8.8.8
ping: connect: Network is unreachable
tmux
https://www.man7.org/linux/man-pages/man1/tmux.1.html
Asennettuna valmiiksi Kalissa. Otetaan terminaalin monistaja tmux (terminal multiplexer) käyttöön:
tmux
#ctrl+b avaa alakulmaan komentokehotteen, bindataan ctrl+b viimeksikäytettyyn ikkunaan:
:bind-key C-b last-window
Control+b
tmux komennot annettaan ctrl+b + komento, esim. kaikki pikanäppäinkomennot näkee ctrl+b ja ?, tai esim. sen hetkinen ikkuna jaetaan kahtia ctrl+b ja !. Komentoja on kymmenittäin, ne voi katsoa man tmux
tai tmuxissa ctrl+b ja ? tai esim. ylläolevasta linkistä. Oleellista on että CTRL + b aktivoi tmuxin. Tmuxin voi myös splitata useaan rinnakkaiseen paneliin kuten terminaattorin, joka vaikuttaa tärkeältä tekemisen ymmärrettävyyden kannalta alkuvaiheessa itselleni. Splittaillaan Kalin terminaali neljään lohkoon tmuxilla, ctrl+b ja “ jakaa terminaalin vertikaalisesti, ctrl+b ja % horisontaalisesti, ja ctrl+b ja o vaihtaa paneelien välillä, ctrl+b ja ; palaa edelliseen paneeliin.
WireShark
https://www.wireshark.org/download/docs/Wireshark%20User%27s%20Guide.pdf
WireShark on asennettuna Kaliin sekä GUI että komentoriviversiona tshark. Käynnistetään WireShark GUI koska se vaikuttaa helpommalta hahmottaa aluksi. Ylläoleva PDF-manuaali vaikuttaa myös hyvältä verkkosivudokumentaatioihin verrattuna, selaimessa aukeavassa PDF:ssä mukavampi typografia ja laajeneva sivunavi, sekä koko 300+ sivuinen dokkari auki jos tarvitsee hakea jotain spesifiä findilla.
Avataan WireShark ja kaapataan “any” rajapinnasta. WireSharkin default on eth0, mutta meidän pitää kaapata sisäverkon liikennettä joten se ei sovellu. Huomataan heti alkuun että Kali lähettää DHCP requestin 192.168.233.2 koneelle joka vastaa DHCP ACK. Muistan että tuo kone oli yksi niistä netdiscovery
skannauksen löytämistä. Kyseessä on siis ilmeisesti verkon DHCP-palvelin. Lisäksi ilman manuaalisesti generoitua liikennettä siellä näkyy menevän myös ARP verkkokysely kahdesta lähteestä jotka alkavat PcsCompu_. ARP-kyselyt kohdistuvat 192.168.233.2 DHCP palvelimeen.
Nauhoitus & skannaus
Että kaikkien tmux paneelien komennot ja tulosteet tulisivat nauhalle todennäköisesti nauhoitus olisi pitänyt aloittaa ennen multiplexaamista. Nauhoitetaan paneelien tulosteet omikseen kekseliäästi panel1-4 tiedostoihin, paneelit ylhäältä alas ja vasemmalta oikealle ja numeroiden (tässä järjestykssä tmux vaihtaa paneeleita ctrl+b ja o, koskan tässä järjestyksessä olin ne varmasti jakanut): script -fa panel1
jne.
John the Ripper harjoitusta tehdessä seurasin surullista opetusvideota missä opettajan piti tehdä jatkuvasti komentoja uudestaan koska hän ei tallentanut komentojen tulosteita mihinkään. Joskus huono esimerkki on vähintään yhtä opettavainen kuin hyvä.
Katsotaan toimiiko logiikka kuten ajattelin, ajetaan panel4:ssä ls | less
ja nähdään että home-kansioon on tullut neljä uutta tiedostoa, mutta tsekataan onko niissä sama sisältö cat panel1
ja cat panel4
. Panel1 tiedostoon ei ole tullut panel4:ssä ajettuja tiedostoja. Panel4 puolestaan menee ikuiseen looppiin koska se tulostaa sisältönsä ja lisää tulosteen sisältöön ja tulostaa sisältönsä ja lisää tulosteen sisältöön jne… whooops. Tapetaan se, tuhotaan se ja tehdään uusi samanniminen tiedosto ja aloitetaan alusta, koska logiikka toimi.
Sillä välin WS:ssä on lähtenyt ICMPv6 Router Solicitation MAC-osoitteesta toiseen, dokumentoin mahdollisia jatkoajatuksia varten.
Alright, tarkistetaan skannailtava verkko: nmap 192.168.233.0-255 -oA initialscan
verkkopeite -255 muodossa ihan huvin ja urheilun kannalta. Avataan initialscannin tulokset cat initialscan.nmap | less
.
Verkon asukkaat
- Metasploitable löytyy edelleen 192.168.233.3, siellä on vähintään toistakymmentä porttia auki.
- Kali on 192.168.233.5 edelleen ja siellä on kaikki skannatut 1000 porttia closed joka nyt tiedetään että ei vastaa deny-by-defaulttia! Eli onneksi emme ole verkossa.
- Nullbyte on osoitteessa 192.168.233.6 ja sillä on portit 80, 111 ja 777 auki kuten viimeksikin. Myös sen 997 muuta skannattua porttia on closed joka ei vastaa deny-by-defaulttia.
- Sitten oli se WireSharkissa mutta ei näissä nmap-tuloksissa näkynyt 192.168.233.2 todennäköinen DHCP-palvelin.
a) nmap TCP connect scan -sT
https://nmap.org/book/man-port-scanning-techniques.html
Aloitetaan viimein harjoitukset. Luetaan mitä jo tiivistettiin TCP connect skannista:
- Flägi
-sT
(TCP connect scan) on defaultti silloin kun TCP SYN scan ei ole mahdollinen, kun käyttäjällä ei ole raw packet oikeuksia. Yhteys toteutetaan connect system callilla jota mm. selaimet käyttävät. Se on osa ohjelmointirajapintaa Berkeley Sockets API. Tämä skanni suorittaa kolmiportaisen TCP-yhteydenoton joka vie pidemmän aikaa ja kohdekoneet todennäköisemmin loggaavat sen. IDS voi huomata sen myös.
Jatketaan skanneja tmuxin neljännessä paneelissa. Skannataan oletettua DHCP-palvelinta 192.168.233.2, DHCP käyttää tosin UDP-protokollaa, mutta kokeillaan.
$ nmap -sT 192.168.233.2
Starting Nmap 7.91 ( https://nmap.org ) at 2021-11-20 08:22 EST
Note: Host seems down. If it is really up, but blocking our ping probes, try -Pn
Nmap done: 1 IP address (0 hosts up) scanned in 0.08 seconds
ja WireSharkissa:
10 507.231050340 192.168.233.5 192.168.233.2 TCP 76 50080 → 80 [SYN] Seq=0 Win=64240 Len=0 MSS=1460 SACK_PERM=1 TSval=963567443 TSecr=0 WS=128
11 507.231258921 192.168.233.2 192.168.233.5 ICMP 72 Destination unreachable (Protocol unreachable)
12 507.231314500 192.168.233.5 192.168.233.2 TCP 76 58774 → 443 [SYN] Seq=0 Win=64240 Len=0 MSS=1460 SACK_PERM=1 TSval=963567444 TSecr=0 WS=128
13 507.231404349 192.168.233.2 192.168.233.5 ICMP 72 Destination unreachable (Protocol unreachable)
Eli kohdetta ei tavoiteta ja Nmap ja WireShark antavat saman tuloksen.
No kokeillaan sitten jotain “järkevämpää”, skannataan Nullbyte 192.168.233.6 samalla tavalla. Nonniin, skannattavia porttejahan oli defaulttina se 1000 nmapissa ja siltä WireSharkin tulokset kieltämättä näyttävätkin. Selataan tulosten alkuun ja löydetään sieltä TCP-handshake HTTP:lle. Kokeillaan sama komento nyt porttispesifisti http 80 porttiin. Klikataan punaista neliötä WS:ssa ja lopetataan nauhoitus ja aloitetaan uusi klikkaamalla sinistä hain evää. Continue without saving menee without sanomattakin.
Skannaus
nmap -sT 192.168.233.6 -p 80 -oA nmapConnectScan1
Tulokset
Nmap
│┌──(kali㉿kali)-[~]
│└─$ nmap -sT 192.168.233.6 -p 80 -oA nmapConnectScan1
│Starting Nmap 7.91 ( https://nmap.org ) at 2021-11-20 08:42 EST
│Nmap scan report for 192.168.233.6
│Host is up (0.00061s latency).
│PORT STATE SERVICE
│80/tcp open http
│Nmap done: 1 IP address (1 host up) scanned in 13.09 seconds
WS
GUI WS:n tulosten järkevä tekstimuodossa copy-pastaaminen vaikuttaa sen verran työläältä että käytetään screenshottia.
Analyysi
Neljätoista riviä, joista porttiin 80 kohdistunut odotettu TCP-handshake tapahtuu riveillä 1, 3 ja 5.
- Kali lähettää TCP-yhteydenoton Nullbytelle [SYN]
- Vaikka spesifioin portin 80 nmap lähettää WS:n tokalla rivillä myös 443 TCP-handshaken ekan vaiheen [SYN]. Arvailua: tämä liittynee johonkin nmapin varmistukseen jos http-yhteydenotto ei mene läpi kokeilee kenties https:ää?
- Sitten Nullbyte vastaa ekaan porttiin 80 tulleeseen kyselyyn** [SYN, ACK]
- Porttiin 40296 RST, ACK Kalista Nullbyteen (???)
- Sitten Kali lähettää ACK eli kolmivaiheisen TCP-kättelyn vikan vaiheen Nullbytelle [ACK]
- RST, ACK Kalista Nullbytelle (???)
- ARP
- ARP
- ARP
- ARP
- TCP handshake käänteisesti Nullbytestä Kalille [SYN]
- -“- [SYN, ACK]
- -“- [ACK]
- RST, ACK Kalista Nullbytelle (???)
Rivit 4, 6 ja 14 jotka ovat RST, ACK Kalista Nullbyteen tai toistepäin, on värjätty punasella. ARP-kyselyt välissä on pinkillä. HTTPS-porttiin lähtenyt TCP eka vaihe on harmaalla. Ja varsinaiset TCP-handhaket vihreällä. Analyzy –> Expert Information värikoodit löytyvät kyllä manuaalista, mutta varsinaista selitystä näille pakettien väreille ei heti löydy.
Klikkaamalla WS:ssä yksittäisiä paketteja avautuu 3-5 pudotusvalikkoa paketista riippuen:
- Frame ja framen nro ja framen bittimäärä
- Tämän alta löytyy mm Coloring Rule Name ja String
- Linux cooked capture v1
- Internet Protocol / Address Resolution Protocol (IPv4/request)
- Mm. IP-paketin checksum, source ja destination
- Transmission Control Protocol / VSS Monitoring Ethernet trailer
- TCP pakettien checksum, source ja destination portit
- VSS Monitoring Ethernet trailer
Nämä ovat OSI-layerin tai TCP/IP-pinon kerroksia. Alimpana on Ethernet-frame ja ylimpänä TCP-paketti. Linux cooked capture ja VSS Monitoring Ethernet trailer vaativat lähempää tutustumista.
- Linux cooked capture (SLL) https://wiki.wireshark.org/SLL
- Libcap pseudo-protocolla *any lähteistä kaapatessa
- link layer header ei välttämättä käytössä tai käytettävissä näissä lähteissä
- SLL = sockaddr_ll
- Käsittääkseni sijoitettava peruskerrokseen eli link layeriin
- VSS Monitoring Ethernet trailer
Sama sudona
Muistetaan tässä vaiheessa että komennot piti ajaa sudona, kokeillaan uudestaan muuttuvatko tulokset (kyllä muuttuvat, kaikilta osin):
sudo nmap -sT 192.168.233.6 -p 80 -oA nmapConnectScan2
Tulokset & analyysi
Nmap
│┌──(kali㉿kali)-[~]
│└─$ sudo nmap -sT 192.168.233.6 -p 80 -oA nmapConnectScan2
│Starting Nmap 7.91 ( https://nmap.org ) at 2021-11-20 10:50 EST
│Nmap scan report for 192.168.233.6
│Host is up (0.00039s latency).
│PORT STATE SERVICE
│80/tcp open http
│MAC Address: 08:00:27:FF:7E:C8 (Oracle VirtualBox virtual NIC)
│Nmap done: 1 IP address (1 host up) scanned in 13.18 seconds
Eli toisin kuin sudottomassa versiossa saadaan MAC-osoite.
WireShark
6 riviä aiempaan 14:sta verrattuna.
- Ensin ARP-kysely MAC-osoitteesta alkuosa PcsCompu_ joka on yhteistä kaikille VB-verkon laitteille ja loppuosa ifconfigin perusteella meikämandoliinon.
- Sitten vastaus yllä näkyvästä MAC-osoitteesta että ip kuuluu tälle laitteelle.
- Sitten TCP handshake, tässä hyökkääjä Kali terve [SYN]
- Terve tässä kohde Nullbyte, sain viestisi [SYN, ACK]
- Kali kuittaa [ACK]
- Vikalla rivillä jälleen [RST, ACK] Kalilta Nullbytelle, joka tarkoittaa että TCP sessio päättyy.
b) nmap TCP SYN scan -sS
Luetaan jälleen omat muistiinpanot ekana:
- Flägi
-sS
(TCP SYN scan) joka tuli jo aiemmin esille tiivistelmissä on default skanni joka voidaan suorittaa nopeasti tuhansiin portteihin sekunnissa nopeissa verkoissa. Myös huomaamaton koska ei suorita TCP-yhteydenottoa loppuun asti ja kertoo portin tilan: avoin, suljettu vai filtered. Monet Unix-järjestelmien palvelut kirjaavat tämänkin syslogiin ja joskus error messagen kera.
Aloitetaan tällä kertaa heti sudona ja yhteen porttiin. Eli sama maali kuin edellisessä, miten tulokset eroavat kiinnostaa.
sudo nmap -sS 192.168.233.6 -p 80 -oA nmapSynScan1
Nmap
Nmapin tulokset vastaavat täysin yhteydenottoskannauksen vastaavia, saamme portin tilan ja siellä pyörivän palvelun ja kohteen MAC-osoitteen, aikaakin kului suurinpiirtein saman verran, molemmat n. 13s.
WireShark
WS:n tulokset ovat riville 4 saakka samanlaisia, eli
- Terve tässä Kali
- Terve tässä Nullbyte, sain viestisi
- mutta viides rivi lopettaa yhteyden [RST] ilman [ACK] osuutta sekä TCP-kättelyssä että lopetusviestissä.
c) nmap ping sweep -sn
https://linuxhint.com/nmap_ping_sweep/
Ping sweeppejähän ollaan tehty jo monta kertaa, tehdään sama uudestaan WireSharkilla seuraten mutta yhteen osoitteeseen ja analysoidaan tulokset.
Nmap
│┌──(kali㉿kali)-[~]
│└─$ sudo nmap -sn 192.168.233.6 -oA nmapSweep1
│[sudo] password for kali:
│Starting Nmap 7.91 ( https://nmap.org ) at 2021-11-20 11:44 EST
│Nmap scan report for 192.168.233.6
│Host is up (0.00083s latency).
│MAC Address: 08:00:27:FF:7E:C8 (Oracle VirtualBox virtual NIC)
│Nmap done: 1 IP address (1 host up) scanned in 13.14 seconds
WireShark
WireSharkissa näkyy vain aiemmista kohdista tuttu ARP-kysely Kalilta johon Nullbyte vastaa.
Samma på hel lokal nät
Tulokset olivat niin epäjännittäviä että tehdään sama uudestaan koko aliverkolle, kesto n. 15 sek.
│┌──(kali㉿kali)-[~]
│└─$ sudo nmap -sn 192.168.233.6-255 -oA nmapSweep2
│Starting Nmap 7.91 ( https://nmap.org ) at 2021-11-20 11:52 EST
│Nmap scan report for 192.168.233.6
│Host is up (0.00024s latency).
│MAC Address: 08:00:27:FF:7E:C8 (Oracle VirtualBox virtual NIC)
│Nmap scan report for 192.168.233.7
│Host is up (0.00026s latency).
│MAC Address: 0A:00:27:00:00:08 (Unknown)
│Nmap done: 250 IP addresses (2 hosts up) scanned in 14.95 seconds
No nyt rupesi jännittämään: Metasploitablea ei löydy .3:sta ja uusi .7 osoite ilmestynyt. The. What. Hups, väärä osoiteavaruus! verkon loppu .6-255 –> oikeaan .0-255 muotoon ja uudestaan. Maksaisikohan tällainen pieni nro-virhe tosimaailmassa testausta suorittaessa työpaikan, vapauden ja paljon rahaa? Ehkäpä siirrytään takaisin käyttämään aliverkkopeitteitä CIDR-notaatiossa ipv4/n.
Nmap
Kokeillaan uudestaan:
│Nmap scan report for 192.168.233.2
│Host is up (0.00046s latency).
│MAC Address: 08:00:27:AA:79:EC (Oracle VirtualBox virtual NIC)
│Nmap scan report for 192.168.233.3
│Host is up (0.00025s latency).
│MAC Address: 08:00:27:9E:70:CB (Oracle VirtualBox virtual NIC)
│Nmap scan report for 192.168.233.6
│Host is up (0.0013s latency).
│MAC Address: 08:00:27:FF:7E:C8 (Oracle VirtualBox virtual NIC)
│Nmap scan report for 192.168.233.7
│Host is up (0.00019s latency).
│MAC Address: 0A:00:27:00:00:08 (Unknown)
│Nmap scan report for 192.168.233.5
│Host is up.
│Nmap done: 256 IP addresses (5 hosts up) scanned in 28.07 seconds
Tulokset ovat kiinnostavia koska -sn
flägillä nmap kykenee löytämään DHCP-palvelimen (192.168.233.2) ja tuntemattoman .7 palvelimen jota jo ennätimme kauhistella ylempänä. Tämähän vastaa netdiscovery
komennon tuloksia, että nyt löytyy näitä VB:n ja sisäverkon toimintaan liittyviä palvelimia päällä olevien kolmen virtuaalikoneen lisäksi.
WireShark
WS näkyy 520 riviä ARP-kyselyitä. Vastauksia lukuunottamatta sourcena on Kali. Host 192.168.233.7 pyydetään kertomaan monta kertaa ja monta kertaa se myös kuittaa itsensä Kalille.
d) nmap don’t ping -Pn
No ping sweep skannaa portit mutta ei tarkista onko ne verkossa eikä pingaa niitä eikä odota vastauksia. Koska kokeilee portteja ajetaan vain Metasploitablea vastaan.
nmap -Pn 192.168.233.3 -oA nmapNoPing2
Vastauksena saadaan terminaalissa tuttu listaus toistakymmentä Metasploitable2:sen palveluja open statuksella, mutta WireSharkin 2025 riviä ovat kiinnostavampia.
- Ensin Kali tekee kahdella ekalla rivillä ARP-kyselyn määriteltyyn ip-avaruuteen eli tapauksessamme Metasploitable2:sen ipv4:seen.
- Vastauksen ARP-kyselyyn tokalla rivillä saatuaan se rupeaa tykittämään TCP [SYN] yhteydenottoja sen tunnetuimpiin 1000 porttiin.
- Metasploitable parka vastaa Kalista lähteneeseen [SYN] kyselyyn portista 3306 (MySQL) rivillä 13:sta [SYN, ACK], kymmenen riviä Kalin [SYN] yhteydenoton jälkeen rivillä 3. Siinä välissä olevat rivit ovat Kalin tykittämiä muita TCP [SYN] yhteydenottoja muihin portteihin.
- Rivistä 14 eteenpäin Metasploitable kuittailee yhteydenottoja päättyneeksi [RST, ACK] ensimmäisenä juuri portti 3306. Tämä ei ole tavallinen TCP-handshake, joten Kalin kyselyssä täytyy olla jotain joka saa Metasploitablen vastaamaan näin. https://medium.com/@informationsecurity/nmap-pn-no-ping-option-analysis-d9aaa95be5b0
e) nmap version detection -sV
esimerkki yhdestä palvelusta yhdessä portissa riittää
Version tunnistus. Palataan Nullbyten skannailuun ja ajetaan Nullbyten http:tä vastaan, jonka versio on edellisissä skanneissa jäänyt tunnistamatta.
Nmap
│┌──(kali㉿kali)-[~]
│└─$ sudo nmap -sV 192.168.233.6 -p 80 -oA nmapVdetect1
│[sudo] password for kali:
│Starting Nmap 7.91 ( https://nmap.org ) at 2021-11-20 15:45 EST
│Nmap scan report for 192.168.233.6
│Host is up (0.00037s latency).
│PORT STATE SERVICE VERSION
│80/tcp open http Apache httpd 2.4.10 ((Debian))
│MAC Address: 08:00:27:FF:7E:C8 (Oracle VirtualBox virtual NIC)
│Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
│Nmap done: 1 IP address (1 host up) scanned in 19.92 seconds
WireShark
- Melkein 100 riviä paketteja. Alkaa ARP-kyselyllä, missä Kali kysyy Nb:n MAC-osoitetta vastaavaa IP:tä ja Nb vastaa.
- Rivillä 9 ja 10 sama Nb:ltä Kalille.
- Lukuisia TCP HTTP paketteja Kalilta Nb:lle
- ja vastauksia niihin Nb:ltä Kalille
f) nmap porttien valinta -p1-100, –top-ports 5, -p-
Skannataan jälleen Metasploitablea koska siellä enempi portteja auki.
│└─$ sudo nmap 192.168.233.3 -p1-100 -oA nmapPortSel1
│Starting Nmap 7.91 ( https://nmap.org ) at 2021-11-20 16:07 EST
│Nmap scan report for 192.168.233.3
│Host is up (0.00036s latency).
│Not shown: 94 closed ports
│PORT STATE SERVICE
│21/tcp open ftp
│22/tcp open ssh
│23/tcp open telnet
│25/tcp open smtp
│53/tcp open domain
│80/tcp open http
│MAC Address: 08:00:27:9E:70:CB (Oracle VirtualBox virtual NIC)│
│Nmap done: 1 IP address (1 host up) scanned in 13.24 seconds
Skannaa selvästi vain portit 100 asti koska loput Metasploitablen tunnistetut portit puuttuvat listasta. WS alkaa jälleen ARP-kyselyllä. Nmap ei tee kyselyitä järjestyksessä yhdestä sataan vaan täysin mielivaltaisesti, todennäköisesti palveluiden yleisyyteen perustuen. Ensin tervehditään 80, sitten 23, 25, 21, 22 ja 53. Kaikki yleisiä tuttuja portteja.
Haetaan vahvistusta hypoteesille kysymällä 5 suosituinta porttia:
│└─$ sudo nmap 192.168.233.3 --top-ports 5 -oA nmapTopPorts5
│Starting Nmap 7.91 ( https://nmap.org ) at 2021-11-20 16:16 EST
│Nmap scan report for 192.168.233.3
│Host is up (0.00035s latency).
│PORT STATE SERVICE
│21/tcp open ftp
│22/tcp open ssh
│23/tcp open telnet
│80/tcp open http
│443/tcp closed https
│MAC Address: 08:00:27:9E:70:CB (Oracle VirtualBox virtual NIC)
│Nmap done: 1 IP address (1 host up) scanned in 13.23 seconds
Eli sama listaus https:ää lukuuntottamatta, mutta sehän on 443 joka on enemmän kuin 100. Joten selvästi hypoteesi piti paikkansa, portteja tervehditään suosituimmuusjärjestyksessä.
WS tuottaa 20 riviä ja alkaa ARP-keselyllä ja sisältää myös ARP-kyselyn DHCP-palvelimelle 192.168.233.2 ja DHCP-paketin DHCP-palvelimelle ja takaisin. Ajetaan sama komento uudestaan onko kyseessä ihan tarkoituksenmukainen toiminto. Nyt tuo DHCP-pakettien lähettely uupuu joten se oli vain ilmeisesti sattuma nauhoituksessa, ARP-kyselyt pysyvät samoina.
Loput paketit ovat TCP-paketteja [SYN], [SYN, ACK], [RST, ACK] ja [RST ] mutta ei pelkkä [ACK] ja tästä voimme päätellä että TCP-kättelyä ei saateta loppuun.
Kaikki portit
Vielä lopuksi skannataan kaikki Metasploitablen portit:
sudo nmap 192.168.233.3 -p- -oA nmapAllPorts
Tulokset ovat mielenkiintoisia sillä jos katsotaan 1000 tunnetuinta porttia skannaukset Metasploitablelle ja verrataan tuloksia huomataan että avonaisia portteja löytyy vielä enemmän kuin aluksi skannattiin. WireShark kertoo että paketteja on lähetetty skannauksessa yli 13 tuhatta.
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) https://www.digitalocean.com/community/tutorials/understanding-ip-addresses-subnets-and-cidr-notation-for-networking
Aloitetaan uusi työpäivä. Päästetään Kali tässä vaiheessa nettiin ipcalcin hakemiseksi muiden koneiden ja host-only verkkokortin ollessa pois päältä. Aiemmin ollaan käytetty verkkopalveluita ip:den laskemiseen mutta katsotaan tarjoaako ipcalc jotain uutta. Ollaan myös jo kokeiltu kantapään kautta että väärä ip-osoite mutta verkkomaski CIDR-notaatiossa antaa nmapilla samat tulokset kuin oikea alku- ja loppuosoite, mutta väärä alkuosoite ei. Joten pääteltiin että turvallisempaa käyttää CIDR-notaatiota jos tekee virheen IP:ssä.
sudo apt-get update
sudo apt-get install ipcalc -y
Ja sitten Kali irti netistä. Katsotaan että kaikilla koneilla on host-only adapteri käytössä ja käynnistetään jälleen Kali ja kohteet Nullbyte & Metasploitable. Ei vara venettä kaada ping 8.8.8.8
unreachable hyvä.
Eli ilmeisesti tarkoitus tässä tehtävässä on vain laskea verkko eikä käyttää sitä nmapilla. Lasketaan verkko neljällä tavalla (päädyttiin kokeilemaan useampaa, tulokset alla): oikein ja väärin sekä CIDR-notaatiolla että alku- ja loppuosoitteella.
Oikein verkkomaski CIDR-notaatiolla
└─$ ipcalc 192.168.233.0/24
Address: 192.168.233.0 11000000.10101000.11101001. 00000000
Netmask: 255.255.255.0 = 24 11111111.11111111.11111111. 00000000
Wildcard: 0.0.0.255 00000000.00000000.00000000. 11111111
=>
Network: 192.168.233.0/24 11000000.10101000.11101001. 00000000
HostMin: 192.168.233.1 11000000.10101000.11101001. 00000001
HostMax: 192.168.233.254 11000000.10101000.11101001. 11111110
Broadcast: 192.168.233.255 11000000.10101000.11101001. 11111111
Hosts/Net: 254 Class C, Private Internet
Väärin verkkomaski CIDR-notaatiolla
Tulokset ovat samat komento ja Address pl. mutta verkon koko ja min ja max pysyvät samoina.
└─$ ipcalc 192.168.233.5/24
Address: 192.168.233.5 11000000.10101000.11101001. 00000101
... # samat tulokset
Väärin verkkomaski desimaalimuodossa 255.255.255.0
Sama tulos ylläolevaan komennon muoto pl.
└─$ ipcalc 192.168.233.5/255.255.255.0
... # samat tulokset
Oikein alku- ja loppuosoitteella
Huomataan että ipcalc ei hyväksy nmapin hyväksymää muotoa: 192.168.233.0-255
. Ipcalc haluaa oikean alku- ja loppuosoitteen, joka kuulostaa turvallisemmalta kuin seuraavat n-osoitetta mikä ilmeisesti on nmapin logiikka? Koeillaan:
└─$ ipcalc 192.168.233.0 192.168.233.255
INVALID NETMASK
INVALID MASK1: 192.168.233.255
Binääri ja hexadesimaalimuodossa
Ei, selviää että ipcalc laskee verkkomaskeja, ja tarvitsee verkkomaskin, ei ip-rangea. Verkkomaski voitaisiin varmaan antaa ipcalcille vielä ainakin binäärimuodossa ja mahdollisesti hexadesimaaleina https://www.pawprint.net/designresources/netmask-converter.php. Kokeillaan. Binääri ei mene läpi yhteen pötköön eikä pisteillä eroteltuna, mutta hexadesimaalit toimivat: ipcalc 192.168.233.0/0xffffff00
, tulokset samat kuin yllä.
Nmap & WS
Vilkaistaan vielä mitä nmap todella tekee kun sille antaa väärän ip-rangen.
└─$ nmap 192.168.233.5-255
Starting Nmap 7.91 ( https://nmap.org ) at 2021-11-21 06:43 EST
Nmap scan report for 192.168.233.5
Host is up (0.00096s latency).
All 1000 scanned ports on 192.168.233.5 are closed
Nmap scan report for 192.168.233.6
Host is up (0.0010s latency).
Not shown: 997 closed ports
PORT STATE SERVICE
80/tcp open http
111/tcp open rpcbind
777/tcp open multiling-http
Nmap done: 251 IP addresses (2 hosts up) scanned in 16.33 seconds
Ensin se tekee ARP-kyselyitä ja aloittaa kuten arvattiin seuraavana tulevasta koneesta 192.168.233.6. Katsotaan mikä on viimeinen kysely, sen pitäisi olla että pysyisimme omalla verkkoalueellamme aiempien tulosten HostMax: 192.168.233.254. Ja se se vaikuttaa olevan nopealla silmäilyllä.
Luetaan vielä nmapin ip-rangeista mitä -255 todella tarkoittaa: https://nmap.org/book/man-target-specification.html
CIDR notation is short but not always flexible enough. For example, you might want to scan 192.168.0.0/16 but skip any IPs ending with .0 or .255 because they may
be used as subnet network and broadcast addresses. Nmap supports this through octet range addressing. Rather than specify a normal IP address, you can specify a
comma-separated list of numbers or ranges for each octet. For example, 192.168.0-255.1-254 will skip all addresses in the range that end in .0 or .255, and
192.168.3-5,7.1 will scan the four addresses 192.168.3.1, 192.168.4.1, 192.168.5.1, and 192.168.7.1. Either side of a range may be omitted; the default values are
0 on the left and 255 on the right. Using - by itself is the same as 0-255, but remember to use 0- in the first octet so the target specification doesn’t look like
a command-line option. Ranges need not be limited to the final octets: the specifier 0-255.0-255.13.37 will perform an Internet-wide scan for all IP addresses
ending in 13.37. This sort of broad sampling can be useful for Internet surveys and research.
Kyseessä siis octet range addressing joka skippaa kaikki .0 ja .255 osoitteet kun ip-range annetaan muodossa 192.168.233.0-255
. Eli alkuperäinen oletus että skannasimme oman rangemme yli oli väärä.
h) nmap output files -oA foo
Mihin kukin tiedostotyyppi sopii?
Tätähän ollaan käytetty paljon ja tosiaan ennätettiin jo nmapin dokumentaatiosta lukea että tiedostot ovat normal, grepable ja xml ja tiedostotyypit .nmap, .gnmap ja .xml. Arvataan että gnmap on tiedon etsintään ja xml tiedon esittämiseen. Luetaan dokumentaatio: https://nmap.org/book/man-output.html
XML-muoto on ohjelmistojen parsereille ja käännettävissä HTML:ksi ja vietävissä tietokantoihin. Nmapissa on oikeasti viisi tiedostomuotomahdollisuutta mutta interaktiivinen jää hämäräksi ja viidettä en nopealla silmäilyllä löytänyt. Grepablessa on eniten informaatiota riveittäin ja normal output on se mitä ollaan ite käytetty josta virallisessa dokumentaatiossa sanotaan seuraavaa:
sCRiPt KiDDi3 0utPUt for users who consider themselves <-r4d
Noice. Ei mitään hajua mitä loppuosa tarkoittaa mutta se on varmaan tarkoituskin. Pysytään tässä tiedostomuodossa, se on selvästi meikäläisen tarpeisiin riittävä.
i) nmap version scanning -sV
Tämä versioskannaushan jo käytiin ainakin teorian tasolla läpi, tarkastetaan omat muistiinpanot. Jeps, sekä teoriassa (Lyon 2009 alaotsikot Flägien selitteet ja Port Scanning Techniques) että käytännössä (Tee ja raportoi: Nmap ja alakohta e) nmap version detection -sV).
j) nmap OS fingerprinting, version detection, scripts, traceroute, -A
Tämä myös esiteltiin mielestäni teoriassa, tarkastetaan muistiinpanot. Alaotsikosta “Flägien selitteet” löytyy:
- -A Advanced ja Aggressive ominaisuudet kuten OS:n ja palveluntunnistus. Vastaa -sV -sC -O –traceroute joka tarkoittaa: version tunnistaminen, Nmap default skriptien ajaminen, kohde OS:n tunnistaminen ja traceroute. -A-flägiin voi liittää vielä lisää ominaisuuksia.
Katsotaan Nmap tuloste -A flägillä Nullbyteä vastaan:
└─$ nmap 192.168.233.6 -A -oA aggressiveScan 2 ⨯
Starting Nmap 7.91 ( https://nmap.org ) at 2021-11-21 07:34 EST
Nmap scan report for 192.168.233.6
Host is up (0.00088s latency).
Not shown: 997 closed ports
PORT STATE SERVICE VERSION
80/tcp open http Apache httpd 2.4.10 ((Debian))
|_http-server-header: Apache/2.4.10 (Debian)
|_http-title: Null Byte 00 - level 1
111/tcp open rpcbind 2-4 (RPC #100000)
| rpcinfo:
| program version port/proto service
| 100000 2,3,4 111/tcp rpcbind
| 100000 2,3,4 111/udp rpcbind
| 100000 3,4 111/tcp6 rpcbind
| 100000 3,4 111/udp6 rpcbind
| 100024 1 34001/udp6 status
| 100024 1 34349/udp status
| 100024 1 43950/tcp status
|_ 100024 1 60877/tcp6 status
777/tcp open ssh OpenSSH 6.7p1 Debian 5 (protocol 2.0)
| ssh-hostkey:
| 1024 16:30:13:d9:d5:55:36:e8:1b:b7:d9:ba:55:2f:d7:44 (DSA)
| 2048 29:aa:7d:2e:60:8b:a6:a1:c2:bd:7c:c8:bd:3c:f4:f2 (RSA)
| 256 60:06:e3:64:8f:8a:6f:a7:74:5a:8b:3f:e1:24:93:96 (ECDSA)
|_ 256 bc:f7:44:8d:79:6a:19:48:76:a3:e2:44:92:dc:13:a2 (ED25519)
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 20.46 seconds
Saatiin jopa rpcinfo jollaista ei ole aiemmin nähty, joka kertoo portissa olevista ohjelmista, ja SSH-hostkey eri muodoissa (DSA, RSA, ECDSA, ED25519)
WireSharkissa puolestaan 2500 riviä paketteja. Aggressiivinen verrattuna yli 100 kertaa pienimpiin pakettimääriin toisilla flägeillä.
k) nmap ajonaikaiset toiminnot
(man nmap: runtime interaction): verbosity v/V, help ?, packet tracing p/P, status s (ja moni muu nappi)
Katsotaan man nmap: runtime interaction ja kohdat:
- verbosity v/V
- help ?
- packet tracing p/P
- status s
RUNTIME INTERACTION
During the execution of Nmap, all key presses are captured. This allows you to interact with the program
without aborting and restarting it. Certain special keys will change options, while any other keys will
print out a status message telling you about the scan. The convention is that lowercase letters increase
the amount of printing, and uppercase letters decrease the printing. You may also press ‘?’ for help.
v / V
Increase / decrease the verbosity level
d / D
Increase / decrease the debugging Level
p / P
Turn on / off packet tracing
?
Print a runtime interaction help screen
Väärin yrittämistä
Statuksesta manuaalissa ei ollut mainintaa. Kokeillaan jollakin isolla skannilla jossa kestää vähän aikaa. Rämpytetään ajon aikana ctrl+v, saadaan:
└─$ nmap 192.168.233.0/24 -A -oA aggNet1
Starting Nmap 7.91 ( https://nmap.org ) at 2021-11-21 07:50 EST
Stats: 0:00:02 elapsed; 0 hosts completed (0 up), 256 undergoing Ping Scan
Ping Scan Timing: About 32.62% done; ETC: 07:50 (0:00:04 remaining)
Stats: 0:00:04 elapsed; 0 hosts completed (0 up), 256 undergoing Ping Scan
Parallel DNS resolution of 3 hosts. Timing: About 0.00% done
Stats: 0:00:05 elapsed; 0 hosts completed (0 up), 256 undergoing Ping Scan
Parallel DNS resolution of 3 hosts. Timing: About 0.00% done
Stats: 0:00:08 elapsed; 0 hosts completed (0 up), 256 undergoing Ping Scan
Parallel DNS resolution of 3 hosts. Timing: About 0.00% done
Stats: 0:00:12 elapsed; 0 hosts completed (0 up), 256 undergoing Ping Scan
Parallel DNS resolution of 3 hosts. Timing: About 0.00% done
Stats: 0:00:12 elapsed; 0 hosts completed (0 up), 256 undergoing Ping Scan
Parallel DNS resolution of 3 hosts. Timing: About 0.00% done
Stats: 0:00:13 elapsed; 0 hosts completed (0 up), 256 undergoing Ping Scan
Parallel DNS resolution of 3 hosts. Timing: About 0.00% done
Stats: 0:00:22 elapsed; 253 hosts completed (3 up), 3 undergoing Service Scan
Service scan Timing: About 42.31% done; ETC: 07:50 (0:00:08 remaining)
#... lisää rivejä lopuksi
wc -l aggNet1.nmap
kertoo että yhteensä 145 riviä tuotti tämä skanni ja tiedosto avaamalla cat aggNet1.nmap | less
näyttää ettei tuo ajon aikainen verbositeetin kasvattaminen tallennu tuloksiin.
Kokeillaan uudestaan ctrl+d:llä:
└─$ nmap 192.168.233.0/24 -A -oA aggNet1
Starting Nmap 7.91 ( https://nmap.org ) at 2021-11-21 07:56 EST
Stats: 0:00:01 elapsed; 0 hosts completed (0 up), 256 undergoing Ping Scan
Ping Scan Timing: About 15.23% done; ETC: 07:56 (0:00:11 remaining)
Stats: 0:00:03 elapsed; 0 hosts completed (0 up), 256 undergoing Ping Scan
Ping Scan Timing: About 79.39% done; ETC: 07:56 (0:00:01 remaining)
# ...etc
Näyttää täysin samalta. Hmm. Kokeillaan sitten ctrl+p. Tällä kertaa älytään käyttää isoa P:tä, eli shift+p…
Oikein yrittämistä
└─$ nmap 192.168.233.0/24 -A -oA aggNet2
Starting Nmap 7.91 ( https://nmap.org ) at 2021-11-21 07:59 EST
Packet Tracing disabled.
Packet Tracing disabled.
# ...etc, kunnes älytään iskea pikku p
Packet Tracing enabled.
NSOCK INFO [64.1690s] nsock_trace_handler_callback(): Callback: READ TIMEOUT for EID 5722 [192.168.233.3:2121]
NSE: TCP 192.168.233.5:41426 > 192.168.233.3:2121 | CLOSE
NSOCK INFO [64.1780s] nsock_iod_delete(): nsock_iod_delete (IOD #181)
NSOCK INFO [64.1780s] nsock_iod_new2(): nsock_iod_new (IOD #183)
NSOCK INFO [64.1780s] nsock_connect_ssl(): SSL connection requested to 192.168.233.3:2121/tcp (IOD #183) EID 5753
NSOCK INFO [65.1800s] nsock_trace_handler_callback(): Callback: SSL-CONNECT TIMEOUT for EID 5753 [192.168.233.3:2121]
NSE: TCP 192.168.233.5:41430 > 192.168.233.3:2121 | CONNECT
NSE: TCP 192.168.233.5:41430 > 192.168.233.3:2121 | CLOSE
NSOCK INFO [65.1800s] nsock_iod_delete(): nsock_iod_delete (IOD #183)
NSOCK INFO [65.1800s] nsock_iod_delete(): nsock_iod_delete: SSL shutdown failed ((null)) on NSI 183
NSOCK INFO [65.2310s] nsock_iod_new2(): nsock_iod_new (IOD #184)
NSOCK INFO [65.2310s] nsock_connect_tcp(): TCP connection requested to 192.168.233.3:5432 (IOD #184) EID 5760
NSOCK INFO [65.2320s] nsock_trace_handler_callback(): Callback: CONNECT SUCCESS for EID 5760 [192.168.233.3:5432]
NSE: TCP 192.168.233.5:53300 > 192.168.233.3:5432 | CONNECT
NSE: TCP 192.168.233.5:53300 > 192.168.233.3:5432 | 00000000: 00 00 00 08 04 d2 16 2f /
# ... etc *
Okei, kokeillaan uudestaan verbose oikein:
└─$ nmap 192.168.233.0/24 -A -oA aggNetVerbose1
Starting Nmap 7.91 ( https://nmap.org ) at 2021-11-21 08:03 EST
Verbosity Decreased to 0.
Verbosity Decreased to 0.
Verbosity Decreased to 0.
Verbosity Increased to 1.
Verbosity Increased to 2.
Verbosity Increased to 3.
Verbosity Increased to 4.
Completed Ping Scan at 08:03, 3.11s elapsed (256 total hosts)
Initiating Parallel DNS resolution of 3 hosts. at 08:03
Completed Parallel DNS resolution of 3 hosts. at 08:04, 13.02s elapsed
DNS resolution of 3 IPs took 13.03s. Mode: Async [#: 1, OK: 0, NX: 0, DR: 3, SF: 0, TR: 9, CN: 0]
Nmap scan report for 192.168.233.0 [host down]
Nmap scan report for 192.168.233.1 [host down]
Nmap scan report for 192.168.233.2 [host down]
Nmap scan report for 192.168.233.4 [host down]
Nmap scan report for 192.168.233.7 [host down]
Nmap scan report for 192.168.233.8 [host down]
# ... etc * ad nauseam
Nyt kun verbositeettia oli oikeasti kasvatettu, myös rivejä tallennettuun tiedostoon tuli yli kolminkertainen määrä: 485. Kun tiedoston printtaa cat aggNetVerbose1.nmap | less
näkyy että siellä on kaikki sama materiaali ‘Nmap scan report…’ riviltä lähtien kuin mitä terminaalissakin nähtiin.
Kokeillaan se debug oikein: shift+d. Kestää yli minuutin ja tavaraa tulee debug-level 5:lla aivan jäätävästi. 10998 riviä tallentuu tiedostoon. Siitä debuggailemaan.
Kokeillaan vielä se mainittu status s vaikka sitä ei löytynyt manuskasta. Aina kun ajon aikana painaa s nmap vastaa mitä tekemässä:
#... etc
Parallel DNS resolution of 3 hosts. Timing: About 0.00% done
Stats: 0:00:15 elapsed; 0 hosts completed (0 up), 256 undergoing Ping Scan
Parallel DNS resolution of 3 hosts. Timing: About 0.00% done
Stats: 0:00:26 elapsed; 253 hosts completed (3 up), 3 undergoing Service Scan
Service scan Timing: About 88.46% done; ETC: 08:16 (0:00:01 remaining)
Stats: 0:00:27 elapsed; 253 hosts completed (3 up), 3 undergoing Service Scan
Service scan Timing: About 88.46% done; ETC: 08:16 (0:00:01 remaining)
#... etc
l) sudo nmap
Miten nmap toiminta eroaa, jos sitä ajaa ilman sudoa? Suorita ja analysoi esimerkki.
Tämä tehtiin ensimmäisessä vaiheessa, kts. kohta a) nmap TCP connect scan -sT.
m) nmap vertailu
vertaile -sV vs -A kestoa (ja lähetetyn datan määrää jos osaat; time, nethogs, wireshark). Käytä harjoitusmaalina metasploitable2.
Molemmat komennothan on jo ajettu ja analysoitu (-sV kohdassa e), -A kohdassa j)) , aloitetaan vertailemalla niiden raportoituja tuloksia. Maalina olisi pitänyt käyttää Metasploitablea, mutta olen käyttänyt molemmissa harjoituksissa Nullbyteä, joten toivottavasti se kelpaa. Huomataan kuitenkin kauhuksi että kaikki päivän harjoitukset ja myös -A flägi on tehty ilman sudoa. Ajetaan se uudestaan, kaapattujen pakettien määrä WireSharkissa ei vähene, vaan on edelleen se n. 2500. -sV flägi on kuitenkin alkuperäisessä testissä ajettu vain yhtä porttia vastaan, joten sekin joudutaan ajamaan uudestaan.
sudo nmap -sV 192.168.233.6 -oA aggDiff2
tuottaa 2157 pakettia WS:ssa, joten hieman vähemmän liikennettä kuin -A. Molemmat kuitenkin tuhansittain paketteja.
-sV
└─$ sudo nmap -sV 192.168.233.6 -oA aggDiff2
Starting Nmap 7.91 ( https://nmap.org ) at 2021-11-21 08:29 EST
Stats: 0:00:07 elapsed; 0 hosts completed (0 up), 1 undergoing ARP Ping Scan
Parallel DNS resolution of 1 host. Timing: About 0.00% done
Nmap scan report for 192.168.233.6
Host is up (0.00097s latency).
Not shown: 997 closed ports
PORT STATE SERVICE VERSION
80/tcp open http Apache httpd 2.4.10 ((Debian))
111/tcp open rpcbind 2-4 (RPC #100000)
777/tcp open ssh OpenSSH 6.7p1 Debian 5 (protocol 2.0)
MAC Address: 08:00:27:FF:7E:C8 (Oracle VirtualBox virtual NIC)
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 20.03 seconds
-A
└─$ sudo nmap 192.168.233.6 -A -oA aggDiff1
[sudo] password for kali:
Starting Nmap 7.91 ( https://nmap.org ) at 2021-11-21 08:26 EST
Nmap scan report for 192.168.233.6
Host is up (0.00043s latency).
Not shown: 997 closed ports
PORT STATE SERVICE VERSION
80/tcp open http Apache httpd 2.4.10 ((Debian))
|_http-server-header: Apache/2.4.10 (Debian)
|_http-title: Null Byte 00 - level 1
111/tcp open rpcbind 2-4 (RPC #100000)
| rpcinfo:
| program version port/proto service
| 100000 2,3,4 111/tcp rpcbind
| 100000 2,3,4 111/udp rpcbind
| 100000 3,4 111/tcp6 rpcbind
| 100000 3,4 111/udp6 rpcbind
| 100024 1 34001/udp6 status
| 100024 1 34349/udp status
| 100024 1 43950/tcp status
|_ 100024 1 60877/tcp6 status
777/tcp open ssh OpenSSH 6.7p1 Debian 5 (protocol 2.0)
| ssh-hostkey:
| 1024 16:30:13:d9:d5:55:36:e8:1b:b7:d9:ba:55:2f:d7:44 (DSA)
| 2048 29:aa:7d:2e:60:8b:a6:a1:c2:bd:7c:c8:bd:3c:f4:f2 (RSA)
| 256 60:06:e3:64:8f:8a:6f:a7:74:5a:8b:3f:e1:24:93:96 (ECDSA)
|_ 256 bc:f7:44:8d:79:6a:19:48:76:a3:e2:44:92:dc:13:a2 (ED25519)
MAC Address: 08:00:27:FF:7E:C8 (Oracle VirtualBox virtual NIC)
Device type: general purpose
Running: Linux 3.X|4.X
OS CPE: cpe:/o:linux:linux_kernel:3 cpe:/o:linux:linux_kernel:4
OS details: Linux 3.2 - 4.9
Network Distance: 1 hop
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
TRACEROUTE
HOP RTT ADDRESS
1 0.43 ms 192.168.233.6
OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 22.56 seconds
Vertailu
Aggressive optiolla saadaan traceroute, palvelimen käyttämät avaimet ssh-portissa ja rpcinfo portista 111. Todella pintapuolisesti analysoiden: -A on äänekkäämpi ja perusteellisempi ja hieman kookkaampi kestoltaan ja pakettimääriltään.
d)[sic] 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?
Apachen varmaan voi asentaa Kalille samaan virtuaalikoneeseen nmapin kanssa, en näe mitään etua asentaa uutta masiinaa tätä tehtävää varten. Suljetaan koneet ja etsitään ohje Apachen asentamiseksi: https://terokarvinen.com/2008/install-apache-web-server-on-ubuntu-4/.
Päästetään Kali nettiin asennuksen ajaksi.
sudo apt-get update
sudo apt-get install apache2 -y
# otetaan Kali pois netistä ja host-only
Otetaan FF:ssa force https pois päältä: https://stackoverflow.com/posts/54559584/revisions. Käynnistetään apache ja katsotaan että se on oikeasti päällä:
sudo service apache2 restart
sudo systemctl status apache2
firefox "http://localhost"
Apachen default page aukeaa selaimessa. Sitten pitää selvittää missä sen logi-tiedostot sijaitsevat. https://blog.codeasite.com/how-do-i-find-apache-http-server-log-files/
Apache loggaa kaikki requestit. Debianin/Kalin logi löytyy /var/log/apache2/access.log
. Jaetaan terminaali tmux ctrl+b ja “ ja ruvetaan loggaamaan logitiedostoa reaaliajassa toisessa paneelissa, näyttää defaulttina vikat 10 riviä.
└─$ sudo tail -f /var/log/apache2/access.log
[sudo] password for kali:
::1 - - [21/Nov/2021:09:00:49 -0500] "GET / HTTP/1.1" 200 3380 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Firefox/78.0"
::1 - - [21/Nov/2021:09:00:50 -0500] "GET /icons/openlogo-75.png HTTP/1.1" 200 6040 "http://localhost/" "Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Firefox/78.0"
::1 - - [21/Nov/2021:09:00:50 -0500] "GET /favicon.ico HTTP/1.1" 404 487 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Firefox/78.0"
Vaihdetaan ctrl+b ja o toiseen paneeliin skannausta varten ja käynnistetään WS. Huomataan että kyllä access.logiin tulee materiaalia ja meidän ip, mutta toisaalta koska apache ja skannaaja käyttää samaa ip:tä esimerkissä on hankala suoraan sanoa kummasta kyse.
e) - f)[sic] Tee ja raportoi: UDP-skannaus
e)[sic] Tavallisimmat/kiinnostavimmat UDP-palvelut
Mitkä ovat tavallisimmat tai kiinnostavimmat palvelut, joita UDP-skannauksella voisi löytää? ( tässä alakohdassa vain vastaus viitteineen, ei tarvita testiä tietokoneella)
Aiemmin tiivistelmässä alakohdassa “Port Scanning Techniques” tuli esiin että mm. palvelut DNS(Domain Name Server, 53), SNMP(Simple Network Management Protocol, 161/161) ja DHCP(Dynamic Host Configuration Protocol, 67/68) käyttävät UDP:tä. Lisäksi esim. NTP (Network Time Protocol, 123) ja Xbox Network Gaming Service (88) käyttävät UDP:tä.
Top 10 UDP porttia ovat pienimmästä suurimpaan: 53, 67, 123, 135, 137-138, 161, 445, 631, 1434
f)[sic] UDP-skannauksen hankaluus ja epäluotettavuus
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)
Myös tähän kysymykseen ennätettiin aloittaa vastausta “Port Scanning Techniques” otsikon alla:
- UDP-skannaus on hitaampaa ja hankalampaa kuin TCP-skannaus, jotkut auditoijat jättävät sen huomioimatta. Flägi voidaan liittää TCP-porttien skannauksen kanssa samaan komentoon. Tavallisimpiin portteihin kuten 53 ja 161 lähetetään protokolla-spesifi payload vastausmahdollisuuksien parantamiseksi. Useimpiin portteihin lähtee tyhjä paketti ellei –data, –data-string tai –data-length optiota ei ole määritelty. Jos vastausta kohteesta ei tule, määritellään portti open|filtered. -sV versiontunnistusflägi auttaa erottamaan onko portti todella auki vai kiinni. UDP-skannin nopeuttamiseksi voi skannata monta hostia samaan aikaan, skannata suositut portit ekana, palomuurin takaa skannaus ja käyttää –host-timeout hitaiden hostien skippaamiseen.
Stackexchangesta poimittua jatkoa:
- UDP connectionless protokolla joka ei odota vatauksia kyselyihin.
Lisää Nmapissa UDP:n käytöstä: https://nmap.org/book/scan-methods-udp-scan.html
h) - j)[sic] Tee ja raportoi: muita aktiivisen tiedustelun työkaluja
h)[sic] ffuf
Lähdekoodi: https://github.com/ffuf/ffuf Ohjeita: https://codingo.io/tools/ffuf/bounty/2020/09/17/everything-you-need-to-know-about-ffuf.html hakemistojen kokeilu riittää
Katsotaan ensin orientoiva video: https://www.youtube.com/watch?v=iLFkxAmwXF0. Tallennetaan muistiinpanot:
sudo apt update
sudo apt install ffuf
ffuf -h
nano wordlist # admin test test123 panel
# SecLists listojen hakemiseen
ffuf -u http://localhost -w ./wordlist
ffuf -u http://localhost -w ./wordlist -recursion
ffuf -u http://localhost -w ./wordlist -recursion -e .bak
ffuf -u http://localhost/W1 -w ./wordlist:W1 -e .bak
Koska video sukeltaa syvemmälle toiminnallisuuksiin katsotaan toinen video josta toivottavasti selviäisi paremmin mistä on kyse: https://www.youtube.com/watch?v=aN3Nayvd7FU
- Käytetään siis brute force / fuzzing
- Käyttää urlia/wordlistaa
- Output JSON/CSV
- Korvaa burp intruder ja dirsearch
- Käytetään sisällön etsimiseen ja hyökkäyspinta-alan kasvattamiseen ja esim. APIen bugien etsintään
- Wordlistojen käyttö, SecLists mainitaan jälleen
- -w flägi kertoo wordlistan, -u flägi urlin, -o output-tiedoston default JSON, voi muuttaa .txt, replay-proxy, -x
Okei, palataan takaisin ekaan videoon.
ffuf -u http://localhost/FUZZ -w ./wordlist -s | tee ./outfile.txt
Ja luetaan sitten Basic Usage: What is Directory Brute Forcing? Okei, aloitetaan viimein. Ja SecLists
sudo apt-get install ffuf
sudo apt -y install seclists
SecLists ei ole Kalissa valmiina joten ne pitää ladata netistä. Se on 385MB paketti. Testiesimerkki ffufissa tehdään codingoa vastaan verkossa, se tuntuu vähän kiusalliselta joten otetaan Kali pois verkosta ja kokeillaan jos keksittäisiin soveltaa omia koneita vastaan virtuaalisessa omassa sisäverkossa. Katsotaan wc -l ..small-txt
ja huomataan että siinäkin on jo 87664 riviä eli salasanaa. Käytetään sitä.
Ajetaan ffuf Nullbyteä vastaan pienimmällä ja turvallisimmalla small.txt listalla ja printataan tulokset ffuftest.txt
└─$ ffuf -u 192.168.233.6 -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-small.txt -o ffuftest.txt
Encountered error(s): 1 errors occurred.
* Keyword FUZZ defined, but not found in headers, method, URL or POST data.
hmmm.. https://github.com/ffuf/ffuf/issues/227 Saattaa olla että käytetyttä sanalistassa on ongelma. Kokeillaan selättämiseksi omaa sanalistaa. Ei ole siitä kiinni, sama ongelma. Kyseessähän on tosiaan url, joten kokeillaan kohteena Metasploitablea. Puuttui /FUZZ kohdeurlin lopusta.
└─$ ffuf -u http://192.168.233.3/FUZZ -w ./wordlist.txt 1 ⨯
/'___\ /'___\ /'___\
/\ \__/ /\ \__/ __ __ /\ \__/
\ \ ,__\\ \ ,__\/\ \/\ \ \ \ ,__\
\ \ \_/ \ \ \_/\ \ \_\ \ \ \ \_/
\ \_\ \ \_\ \ \____/ \ \_\
\/_/ \/_/ \/___/ \/_/
v1.3.1 Kali Exclusive <3
________________________________________________
:: Method : GET
:: URL : http://192.168.233.3/FUZZ
:: Wordlist : FUZZ: ./wordlist.txt
:: Follow redirects : false
:: Calibration : false
:: Timeout : 10
:: Threads : 40
:: Matcher : Response status: 200,204,301,302,307,401,403,405
________________________________________________
test [Status: 301, Size: 318, Words: 21, Lines: 10]
:: Progress: [4/4] :: Job [1/1] :: 0 req/sec :: Duration: [0:00:00] :: Errors: 0 ::
Okei, kokeillaan sitten sitä small.txt tiedostoa.
ffuf -u 192.168.233.3/FUZZ -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-small.txt -o ffuftest.txt
joka tuottaa 87664 erroria. Ermm. Palataan asiaan syssymmällä tunnin esimerkkien jälkeen.
i)[sic] nikto
https://www.kali.org/tools/nikto/
Nikto is a pluggable web server and CGI scanner written in Perl, using rfp’s LibWhisker to perform fast security or informational checks.
Features:
Easily updatable CSV-format checks database
Output reports in plain text or HTML
Available HTTP versions automatic switching
Generic as well as specific server software checks
SSL support (through libnet-ssleay-perl)
Proxy support (with authentication)
Cookies support
Ok.
sudo apt install nikto
nikto -h
nikto -host 192.168.233.3
- Nikto v2.1.6
---------------------------------------------------------------------------
+ Target IP: 192.168.233.3
+ Target Hostname: 192.168.233.3
+ Target Port: 80
+ Start Time: 2021-11-21 12:28:50 (GMT-5)
---------------------------------------------------------------------------
+ Server: Apache/2.2.8 (Ubuntu) DAV/2
+ Retrieved x-powered-by header: PHP/5.2.4-2ubuntu5.10
+ The anti-clickjacking X-Frame-Options header is not present.
+ The X-XSS-Protection header is not defined. This header can hint to the user agent to protect against some forms of XSS
+ The X-Content-Type-Options header is not set. This could allow the user agent to render the content of the site in a different fashion to the MIME type
+ Uncommon header 'tcn' found, with contents: list
+ Apache mod_negotiation is enabled with MultiViews, which allows attackers to easily brute force file names. See http://www.wisec.it/sectou.php?id=4698ebdc59d15. The following alternatives for 'index' were found: index.php
+ Apache/2.2.8 appears to be outdated (current is at least Apache/2.4.37). Apache 2.2.34 is the EOL for the 2.x branch.
+ Web Server returns a valid response with junk HTTP methods, this may cause false positives.
+ OSVDB-877: HTTP TRACE method is active, suggesting the host is vulnerable to XST
+ /phpinfo.php: Output from the phpinfo() function was found.
+ OSVDB-3268: /doc/: Directory indexing found.
+ OSVDB-48: /doc/: The /doc/ directory is browsable. This may be /usr/doc.
+ OSVDB-12184: /?=PHPB8B5F2A0-3C92-11d3-A3A9-4C7B08C10000: PHP reveals potentially sensitive information via certain HTTP requests that contain specific QUERY strings.
+ OSVDB-12184: /?=PHPE9568F36-D428-11d2-A769-00AA001ACF42: PHP reveals potentially sensitive information via certain HTTP requests that contain specific QUERY strings.
+ OSVDB-12184: /?=PHPE9568F34-D428-11d2-A769-00AA001ACF42: PHP reveals potentially sensitive information via certain HTTP requests that contain specific QUERY strings.
+ OSVDB-12184: /?=PHPE9568F35-D428-11d2-A769-00AA001ACF42: PHP reveals potentially sensitive information via certain HTTP requests that contain specific QUERY strings.
+ OSVDB-3092: /phpMyAdmin/changelog.php: phpMyAdmin is for managing MySQL databases, and should be protected or limited to authorized hosts.
+ Server may leak inodes via ETags, header found with file /phpMyAdmin/ChangeLog, inode: 92462, size: 40540, mtime: Tue Dec 9 12:24:00 2008
+ OSVDB-3092: /phpMyAdmin/ChangeLog: phpMyAdmin is for managing MySQL databases, and should be protected or limited to authorized hosts.
+ OSVDB-3268: /test/: Directory indexing found.
+ OSVDB-3092: /test/: This might be interesting...
+ OSVDB-3233: /phpinfo.php: PHP is installed, and a test script which runs phpinfo() was found. This gives a lot of system information.
+ OSVDB-3268: /icons/: Directory indexing found.
+ OSVDB-3233: /icons/README: Apache default file found.
+ /phpMyAdmin/: phpMyAdmin directory found
+ OSVDB-3092: /phpMyAdmin/Documentation.html: phpMyAdmin is for managing MySQL databases, and should be protected or limited to authorized hosts.
+ OSVDB-3092: /phpMyAdmin/README: phpMyAdmin is for managing MySQL databases, and should be protected or limited to authorized hosts.
+ 8726 requests: 0 error(s) and 27 item(s) reported on remote host
+ End Time: 2021-11-21 12:29:18 (GMT-5) (28 seconds)
---------------------------------------------------------------------------
+ 1 host(s) tested
Eli nikto käyttää default porttina http:tä (80) ja kerää kaikenlaista infoa verkkosivusta ja sen palvelimesta.
j)[sic] Pizza fantasia
jokin valitsemasi tiedustelutyökalu, esimerkiksi EyeWitness, wpscan, openvas tai jokin muu.
Että saadaan tehtävät kunnialla ajoissa maaliin, täytetään fantasiapizza jo edellisviikolla tehdyllä Legionilla. Katsotaan jos muiden kurssien jälkeen jää aikaa vielä jatkaa tämän viikon harjoitusta palautusajan jo päätyttyä mutta ennen seuraavaa tuntia, kuten viime viikolla John the Ripperin kanssa.
Nessus
EDIT: Jatketaan harjoitusta palautusajan jälkeen ennen tuntia. Valitaan Tenablen Nessus-haavoittuvuusskanneri joka on siis oma VM koska se löytyi tästä mielenkiintoisesta dokumentista, missä asennetaan myös Kali ja Metasploitable: https://www.exploit-db.com/docs/english/44040-the-easiest-metasploit-guide-you%E2%80%99ll-ever-read.pdf. Täällä on enemmän asiaa Nessuksesta yleisesti, mikä, miksi, miten, kenelle: https://www.cs.cmu.edu/~dwendlan/personal/nessus.html
- Ladataan Nessuksen OVA-tiedosto VB:ia varten, vaatii nykyisin rekisteröitymisen. Tai kuvittellaan että ladataan, nykyisin paljon on muuttunut dokumentaation kirjoittamisen (2018) jälkeen.
Nessus Network Monitor, Tenable.sc, Log Correlation Engine, Tenable.ot, Tenable Virtual Appliances, and Web Application Scanning now require authentication to download.
Via dolorosa, Nessuksen asentaminen
- Dokumentaatiossa käytetään Tenable Virtual Appliance 4.7.0, joka vaatisi tunnukset, joiden saamisessa tuntuu kestävän. Rekisteröityminen on hankala jossa ei voi valita oikeita vaihtoehtoja kuten omaa maata, joten rekisteröitymisessä joutuu huijaamaan.
- Tenable Core + Nessus löytyisivät .ova-tiedostona ilman kirjautumista: https://www.tenable.com/downloads/tenable-appliance?loginAttempted=true
- Vaihdetaan kuitenkin taktiikkaa ja katsotaan asennusohjeet Kalille odotellessa tilin hyväksytyksi tulemista, odotukset sen suhteen ei ole korkealla koska oikeita tietoja tosiaan lomakkeessa ei kyennyt antamaan.
- Ohjeet Kali-installaatioon: https://www.tenable.com/blog/getting-started-with-nessus-on-kali-linux
- Step 1: aktivointikoodia ei tarvitse ostaa mutta sen saa ilmaiseksi koekäyttöön, se meillä nyt on.
- Step 2: Käynnistetään vaihetta varten Kali ja päästetään se nettiin ja lataamaan Nessus Debian 64bit https://www.tenable.com/downloads/nessus, hyväksytään lisenssi.
- Step 3: käynnistetään terminaali, mennään /Dowloads kansioon ja ajetaan
dpkg -i Nessus-10.0.1-debian6_amd64.deb
. - Käynnistetään Nessus Nessuksen asennuksen jälkeisten omien terminaaliin tulostuvien ohjeiden mukaisesti. Otetaan tätä ennen kuitenkin Kali pois verkosta ja host-only verkkokortti tilalle.
- Välihuomio, kaikki kolme ohjetta jota nyt on seurattu Nessuksen asentamiseksi ovat vanhentuneita. Ohjeet ovat vuosilta -14, -17 ja -18. Kaksi ohjeista on Nessuksen omaa.
/bin/systemctl start nessusd.service
- Vaatii sudo-passulla toimen autentikoinnin etenemiseksi.- Step 4:
firefox "https://localhost:8834/"
heittää SSL varoituksen, katsotaan mitä dokumentaatio sanoo, no seurattavan dokumentaation linkit ovat ylimalkaisia eivätkä osoita oikeaan paikkaan, kuinkas muutenkaan. Ohitetaan riski kuten seurattava ohje sanoo että soppii tehä. - Päästään Nessus Deploy vaiheeseen selaimessa, valitaan Essentials, Professional, Manager ja Managed Scanner väliltä. ?-ikoni kertoo että Essentials oikea vaihtoehto.
- Syötetään aktivointikoodi, annetaan käyttäjänimi ja generoidaan salasana, rekisteröidään, mennään takaisin, valitaan offline rekisteröityminen, kopioidaan challenge code, mennään omalla netissä olevalla koneella annettuun osoitteeseen, sivu ei aukea, sivu aukeaa viimein reilun minuutin odottelun jälkeen mutta sen syöttökenttien arvot ovat eri kuin mitä Nessus itse ohjeisti, suljetaan Kali, päästetään se nettiin rekisteröitymistä varten, odotetaan lisää ohjeita, valmistellaan passi ja luottokortti kirjekuoreen tenablelle lähettämistä varten, otetaan kuva kaikista sormenpäistä ja kasvoista kolmesta eri kuvakulmasta, lisätään dna-näyte sylki-, hius- ja veriformaatissa ja viedään koko hoito postiin. En muista milloin joku olisi ollut yhtä hankalaa tietokoneella kuin Nessuksen asentaminen.
- Kali on nyt Nessuksen rekisteröimistä varten netissä ja Nessus lataa eeeerittäin hitaan oloisesti tarvittavia lisäosia. Jos tuntuu että elämä on liian kivaa ja haluaa haaskata pari tuntia suosittelen Nessuksen asentamista! Ei jätä myöskään kovin turvallista fiilistä asentamisesta. Lisäksi tämä ilmaisversio on käytössä lähes yhtä kauan kuin sen asentaminen vaatii.
- Viimein asennus on valmis. Nessus aukeaa selaimessa osoitteeseen: “https://localhost:8834/#/scans/folders/my-scans” Otetaan Kali jälleen pois netistä ennen skannien aloittamista. Käynnistetään sen sijaan tuttu ympäristö eli host-only verkko ja sen koneet hyökkääjä Kali ja maalit Metasploitable2 ja Nullbyte.
Nessuksen käyttö
ping 8.8.8.8
# Käynnistä nessus
/bin/systemctl start nessusd.service # annetaan sudo pw
firefox "https://localhost:8834/" # kirjaudutaan luoduilla tunnareilla
Nessus käyttää GUI:ta.
- Annetaan kohteeksi “Targets” koko verkko 192.168.233.0/24.
- Nessus alkaa Submitin painamisen jälkeen etsiä hosteja verkosta.
- Klikataan jotakin kohteista, vaikka tunnettua Metasploitablea 192.168.233.3, jolloin Nessus aloittaa uuden kohdennetun (ja huomattavan hitaan) skannin kohteeseen ja menee eri näkymään.
- Asennuksen jälkeen itse käyttöliittymä ei alkukauhistuksen jälkeen “Hui, GUI!” vaikuta lainkaan hullummalta. Skannit tallentuvat automaattisesti kansioihin “My Scans” ja sieltä sen tulokset voi käytä tarkastamassa uudestaan. Myös muutaman kymmenen minuutin pyöriminen ohjelmassa saa hahmottamaan tärkeimmät sisällöt. Initial scan oli nopea, mutta seuraava tarkempi skanni kestää 6 minuuttia. Legioniin verrattuna aluksi Nessus ei kysellyt mitään kuinka aggressiivisesti skannit ajellaan tai muita konfiguraatioita, vaan ne pitää tehdä itse. Konfigurointi tehdään skannispesifisti ja konfiguroitavaa riittäisikin ja Nessuksen saa mm. tekemään automatisoituja skanneja ja lähettämään sähköpostinotifikaatioita niistä.
- Lisäksi ylänavista löytyy välilehdet Scans jossa ollaan tällä hetkellä ja Settings jossa voi säätää kaikki Nessuksen asetukset.
- Nopeasti käyttöliittymää selatessa tulee tunnelma että tosiaan paljon ominaisuuksia ja paljon niistä on kytketty pois päältä ilmaisversiossa. Nessus vaikuttaa hiotulta ammattilaistyökalulta jonka käytöstä pitäisi maksaa. Varmaan tämä tekee jonkun elämän tosi mukavaksi mutta ei tähän ehkä paljoa halua aikaa haaskata jos tätä ei työkseen rupea käyttämään.
Kohdennetun skannin tulokset
Metasploitablen skannauksessa kesti 6 minuuttia, eli huomattavasti nmap aggressiivisimpiakin skanneja kauemmin.
- Tulee hieno yhteenveto skannista ja haavoittuvuuksista.
- Haavoittuvuusvälilehdellä on tieto haavoittuvuuksista kriittisyysjärjestyksessä.
- Remediations tarjoaa ratkaisuja! Tämä on mielestäni uutta mitä ei aiemmissa työkaluissa ole tullut vastaan. Olkoonkin että haavoittuvuuksia oli 66 ja korjausehdotuksia 3.
- Vulnerability Priority Rating (VPR Top Threats) välilehti on Nessuksen oma ranking-järjestelmä haavoittuvuuksille. Haavoittuvuuksia klikkaamalla niistä saa lisää tietoa.
- History-välilehdeltä löytyy tehdyt vastaavat skannit.
Yhteenvetona ihan jännittävä lisä. WireSharkilla työkalun toiminnan seuraaminen jäi vielä seuraavaan kertaan.