2015. november 6., péntek

Penetration Testing on metasploitable 2 - Validation phase - Tcp port 22 - SSH service

Nézzük a következő szolgáltatást.

Nmap:
22/tcp    open  ssh         OpenSSH 4.7p1 Debian 8ubuntu1 (protocol 2.0)
Nessus:
OpenVAS:
Az openvas nem talált semmi számottevő vagy értékelhető információt erről a szolgáltatásról.
Nexpose:
A két szkenner kritikusnak találta a dolgot. Nézzük meg közelebbről, hogy miért:
 Nexpose:


Ez ugyanaz a hiba, De van még más is: A 7.0 alatti verziók kritikus sérülékenységgel rendelkeznek.
A user felhasználóval be lehet távolról jelentkezni, mert a jelszava alapértelmezett, könnyen kitalálható.
Megoldás a verzió problémára:



Amennyiben áthatolás tesztelés a feladat, akkor a Core Impact-hoz van használható exploit hozzá. Amennyiben nincs Core Impactunk, akkor az exploit db-n is van használható kód:
Itt is három különböző probléma áll fenn: Az egyik, hogy az openssl random szám generátora rosszul működik, emiatt a kulcsok kitalálhatóak. A második probléma, hogy a 7.0  előtti openssh verzióban sok egyéb más hiba van.  A harmadik pedig, hogy a user felhasználónak kitalálható a jelszava.

Az első problémára a megoldás, hogy fel kell telepíteni egy korszerűbb openssl csomagot és újra kell generálni a kulcsokat. A második problémára a megoldás, hogy az openssh csomagot frissíteni kell a gépen.
Végül a harmadik hibát úgy lehet javítani, hogy a gyenge jelszót lecseréli a user felhasználó.

Offsec laborban volt egy gép ami ugyanezzel a hibával rendelkezett, elvileg egyszer már sikerült ezt a problémát megoldani akkor. A rend kedvéért megoldom itt is és Core Impact-al is megpróbálom kihasználni a hibát. Gyakorlásnak jó lesz.

Amit még itt is el kell végezni az a default loginok tesztelése. Ha a user felhasználó user jelszóval rendelkezett, akkor meg kell próbálni más default felhasználói fiókokat alapértelmezett jelszavakkal.
A jelszó tesztelés egy külön körben lesz, úgyhogy ezzel itt most nem foglalkozom. 
A login brute force-ot a hydrával lehet a legkényelmesebben elvégezni, a módszer ugyanaz és a usernév jelszó file is:
/usr/share/metasploit-framework/data/wordlists/unix_users.txt
/usr/share/metasploit-framework/data/wordlists/unix_passwords.txt
ez tartalmilag megegyezik ezzel:
/usr/share/wfuzz/wordlist/fuzzdb/wordlists-user-passwd/unix-os/unix_users.txt
/usr/share/wfuzz/wordlist/fuzzdb/wordlists-user-passwd/unix-os/unix_passwords.txt

Penetration Testing on metasploitable 2 - Validation phase - Tcp port 21 - FTP service

A táblázatunkban az első vizsgálandó szervíz a 21-es porton futó ftp szolgáltatás. Mielőtt belemerülénénk a vizsgálódásba nézzük meg, hogy az egyes eszközök segítségével milyen információhoz jutottunk:

Nmap:
21/tcp    open  ftp         vsftpd 2.3.4
Nessus:

OpenVAS:

Nexpose:
Igazából három különböző kockázatot érzékeltek a szkennerek. (A nessust fogom mindig alapként használni, mert áttekinthetőbb a riport amit készít, és a másik két szkennernél csak azokat a jelzéseket hozom fel, ami bővebben kifejti a hibát illetve más hibát fed fel.)

Az első és a legkritikusabb kockázat, hogy van egy hátsó ajtó a rendszerben. Ezt a Nexpose nem ismerte fel(...) viszont a nessus és az openvas igen.

Nmap-al is ellenőrizhetjük:
A nessushoz tartozó plugint is ráengedhetjük kézzel is:
Metasploitban is ban hozzá használható modul:
Ezen a ponton célszerűnek látszik a shadow file kidumpolása:
Erre le kell futtatni egy john-the-rippert, hátha talál a felhasználói nevekhez jelszavakat.

Exploitdb-n is rá tudunk keresni a problémára, ha az előzőek nem hoztak volna eredményt:
Securityfocus is egy jó hely a keresésre:
Kali linuxon a searchsploit is egy kereső amivel próbálkozhatunk:
A CVE Details adatbázisban is rákerestem, de ott nincs fent a hiba...

Talán  ezért nem találta meg a Nexpose, holott a metasploitban még modul is van hozzá.
Mindegy, ez egy Validált (nem false pozitív) létező hiba. Elérhető exploit csak a metasploitban van rá, illetve a nessus nasl szkriptjével lehetne még esetleg szórakozni vele.
A hiba kihasználhásával nem kell itt különösebben foglalkozni, elég ha azt meg tudjuk állapítani, hogy a hiba valós és elérhető hozzá exploit. Így a hiba a nagyon súlyos kategóriába esik, mivel a gépen a támadó azonnal root jogot képes szerezni. Ez a hiba mindenképpen javítandó és minél sürgősebben.

A második probléma(?) hogy az anonymous elérés engedélyezve van. Ez nem biztos, hogy valós probléma, mert lehet, hogy ez egy anonymous ftp szerver és pont ez a cél. Mindenesetre, hogy ez false pozitívnak számít-e azt az alkalmazás dönti el. Az, hogy mi célból funkcionál a szolgáltatás.

A harmadik probléma, hogy cleartext-ben mennek az adatok. Ha ez csak egy anonym ftp szerver és senki nem lép fel rá a neten keresztül (az adat feltőltés biztonságos csatornán történik) és publikus adatok vannak rajta publikálva, akkor ez is false pozitív. Amennyiben bármilyen érzékeny adat (pl jelszó) közlekedik a hálózaton, akkro ez az adattól függően vagy közepesen súlyos vagy súlyos probléma is lehet akár. Ez az adott adat érzékenységétől függ.

Azt meg kell még nézni, hogy írás joga van-e az anonymous ftp usernek. Illetve, hogy mihez van olvasási joga. (Valószínűleg, ha ez exploitálható lenne akkor azt már rég észlelték volna, de egy ellenőrzést megér)

A táblázatban ezt a szolgáltatást Unsafe-re állítjuk (nem biztonságos) és a kockázatot a legmagasabbra vesszük. Súlyos vagy kritikus és piros színnel jelöljük, hogy a menedzserek is lássák, hogy itt valami nagyon nem jó. És a kritikus kockázat mellett a másik két problémát is fel kell tüntetni.

A kritikus probléma megoldására a javasolt megoldás a teljes verzió csere. Patch nincs a problémára és work-around megoldások sem. A szolgáltatást azonnal le kell állítani és egy másik verziójú ftp daemont kell feltelepíteni a gépre. A másik két észrevétel alkalmazás függő. Ha szükséges az anonymous elérést le kell tiltani, illetve ha érzékeny adatok közlekednek a hálózaton, akkro az egész szolgáltatást le kell cserélni olyanra ami rejtjelezi a csatornát. (scp, sftp, stb)

Ha a feladat áthatolás tesztelés, akkor a hiba segítségével további (belső hálózaton lévő) gépek támadása válik lehetségessé. A fertőzött gépre telepíteni kell egy saját hátsó ajtót és utána mehet a belső hálózat feltérképezése és további célpontok utáni kutatás. (Amennyiben ez szkópja a vizsgálatnak)

Mivel az ftp user ftp jelszóval működik, célszerű lehet más default felhasználók és default jelszavak tesztelése az ftp protokoll alatt. A loginok tesztelését egy későbbi fázisban fogom elvégezni, egyben a többi login teszteléssel (ssh, telnet, stb) 
ftp login tesztelése metasploittal:

Ez egy kicsit lassan fut, úgyhogy hydrával csináltam meg inkább:
Ennél a szolgáltatásnál van még egy probléma: Lehetséges a login brute forcolás, vagyis tömeges belépési kísérletekkel lehet elérasztani a rendszert. Ez ellen lehet lokálisan fail2ban-al, vagy globálisabb szinten IDS,IPS rendszer működtetésével védekezni.

Penetration Testing on metasploitable 2 - Automated Scanners - Nexpose

A következő sérülékenység vizsgáló eszköz a Nexpose. első lépésben hozzunk létre egy site bejegyzést:


Állítsuk be a Sitehoz az ip címet:
Állítsuk be a Template-nél a Full audit-ot és mentsük el.
Ha a Save & Scan-t választjuk, akkor el is indul a vizsgálat:
A sor végén találunk egy download log gombot,:
Ha rákattintunk felajánlja hogy elmentsük a fájlt vagy megnyissuk:
A logban meg tudjuk nézni, hogy hol tart a folyamat. Azt is meg tudjuk nézni, hogy a nexpose milyen nmap parancsot használt a felderítéshez:
Ha lefut a scan a státuszban láthatjuk, hogy Completed successfully:
Miután lefutott készítsünk egy reportot a talált hibákról:
Válasszuk ki az elsőt: Audit report.
Válasszuk ki a megfelelő site-ot (Select site gomb alul)
Ezután válasszuk ki a vizsgálatot (szkennelést):
Adjunk meg egy nevet a reportnak:
Mentsük el a Save & Run reporttal:
A reportot meg tudjuk nézni a View reports fülön:
A Vulnerabilities menüben meg tudjuk nézni a sérülékenységeket tételesen:
A program azt is meg tudja állapítani, hogy a sérülékenységhez létezik-e exploit illetve hogy a metasploitba integrált exploit létezik-e.
A keletkezett riportot mentsük el később még használni fogjuk.
Ok, a szkennelésnek ezzel a részével végeztünk. (A nexpose-nál nem minden portot derített fel a program. Ezzel csak akkor érdemes foglalkozni, ha az adott porton a másik két szkennerrel és egyéb módon se találtunk problémát, akkor meg lehet nézni, hogy ha a nexpose port listájába felvesszük és megint lefuttatjuk a vizsgálatot, akkor találunk-e valamit.

A szkennerek vizsgálatai nem 100%-osak. Nessus és OpenVAS esetén a nasl szkripteket kézzel is le tudjuk futtatni, ha kézzel akarjuk ellenőrizni egy-egy probléma meglétét.

A Nexpose olyan hibákat is kimutatott amire az egyes komponensekből következtetett. Nem a port szkennelése alapján, hanem pl az operációs rendszer verziószáma alapján is felsorol hibákat. El kell dönteni, hogy ezzel foglalkozunk-e szkópja-e ez a vizsgálatnak. Amennyiben csak a külső portok vizsgálata a szkóp, akkor ezzel nem foglalkozunk, csak megjegyezzük, hogy egyébként érdemes lenne egy credentialed ellenőrzést is lefuttatni a hostra mert lehetnek rajta egyéb hibák amiket külső szkenneléssel nem lehet detektálni. 

A következő lépés, hogy a szolgáltatásokon egyesével végigmegyünk és meghatározzuk a kockázati szintjét illetve adunk egy javaslatot, hogy az adott hibát hogyan lehet kiküszöbölni. Kummuláljuk a hibákat és a végső riportban csak azokat tüntetjük fel, ami releváns és a legsúlyosabb problémát okozza.

A szolgáltatásokon a port szeknneléskor készített táblázat alapján megyünk egyesével végig és megnézzük, hogy az adott szolgáltatás mennyire biztonságos, hány különféle probléma van vele és milyen javításokat javasolunk a hiba elhárítására.

Penetration Testing on metasploitable 2 - Automated Scanners - OpenVAS

A következő automata szkenner amit meg fogok nézni az az OpenVAS. Én a Kali 2.0-s telepítést használtam, de le lehet tölteni virtuális gépet is (OpenVAS- Demo-8) Azzal is hasonló eredményt lehet elérni.

Első lépésben a szkennelés paramétereit kell beállítani. Vegyünk fel egy új port listát:
Configuration -> Port List, a csillag jellel tudunk új listát felvenni:

Írjuk be a portok listáját a Nessus-nál használt szintaktikával: T:21,22,23,...U:53,68,69,...
Nyomjuk meg a Create Portlist gombot így elmentettük az új listánkat.

Ez után készítsünk egy új szkennelő konfigurációt (pluginok listája)
Configuration -> Scan Configs: Csillag (New Scan Config)
Mentsük el, majd a villáskulcs ikon kiválasztásával editáljuk a pluginek listáját:
Még nem teljesen világos, hogy pontosan melyik plugin mit csinál, de később majd pontosítom ezt az információt. Mivel ez a Nessus-ból lett forkolva, alég hasonlóak a pluginok.
Vegyünk fel egy új targetet. Configuration -> Targets csillag jel (New Target)



 Amikor ez is kész van készítsünk egy új taskot. Scan Management -> Tasks. Csillag jel (New Task)
Scan targets opciónál válasszuk ki az általunk készített targetet és a Scan Config-nál is azt a konfigot amit erre a feladatra készítettünk. Amennyiben az általunk készített konfig nagyon lassú lenne, akkor válasszuk helyette a Full and very deep beállítást.
 Indítsuk el a szkennelést. A Scan Management -> Reports alatt tudjuk nézni, hogy hány sebezhetőséget talált a program és hány százaléknál jár a szkennelés.

Ha rákattintunk a Date oszlopban lébő elemre részletesen meg tudjuk nézni, hogy a szkenner éppen mit csinál.

Egy Full and very deep konfigurációval is sikerült jónéhány hibát megtalálni:
 
A kimenetet mentsük el későbbi felhasználásra.