etikus hackelés: szolgáltatások azonosítása az nmap segítségével
Tartalomjegyzék
az etikus hackelés előző bejegyzésében röviden ismertetjük az IP-címek és aldomainek felsorolásának különböző lehetőségeit az etikus hackelési folyamat végrehajtása során. Ha tetszett, hogy “ez nagyon biztonságos, mert ki fogja tudni, hogy ez az aldomain létezik” (hogy bár nem tudja elhinni, ez gyakoribb, mint amilyennek látszik), ne hagyja ki, hogy a “ki fogja tudni, hogy ezt a szolgáltatást ebben a portban ilyen furcsa számmal tettem”…
röviden, ebben a bejegyzésben megpróbáljuk megnézni, hogyan lehet leltárt készíteni a nyitott portokról egy IP-ben vagy IP-tartományban, és még a technológiát is azonosítani egy nyitott port alatt, amikor ez lehetséges. Alapvetően ez a bejegyzés egy fantasztikus és nélkülözhetetlen eszköz, az nmap használatára fog összpontosítani. Bár ez egy olyan eszköz, amelyet általában a Linuxban használnak (és természetesen szerepel a referenciakészletben, amelyet ezekben a bejegyzésekben használok, Kali), más operációs rendszerek összeállításai már megtalálhatók.
mielőtt munkához látnánk, figyelmeztetni szeretnénk, hogy az nmap egy összetett és teljes eszköz, rengeteg opcióval, paraméterrel stb.; Ez a bejegyzés nem az eszköz használatának kézikönyve, hanem ismét bevezetés annak megértéséhez, hogy a szolgáltatások az etikus hackelés fázisaként azonosíthatók-e a sebezhetőségek felderítése előtt. Ha többet szeretne megtudni az eszközről, javasoljuk, hogy olvassa el a kézikönyvet.
a nyílt forráskódú nmap eszköz lehetővé teszi hálózati és portvizsgálatok elvégzését, egyetlen célállomás, tartomány, IP-lista beolvasását… TCP, UDP, ICMP, SCTP kérések stb.alapján. különböző szkennelési technikákat tartalmaz. Általában javasoljuk, hogy frissítsen néhány ismeretet a szállítási protokollokról, például emlékezzen arra, hogyan működik a TCP kapcsolat létrehozása a tárgyalással három lépésben: először SYN típusú hívás az ügyféltől egy portra, először válasz, ha a port zárva van, vagy SYN-ACK, ha nyitva van, majd az ACK az ügyféltől a kiszolgálóig a folyamat befejezéséhez. Az Nmap az ilyen típusú üzenetekre támaszkodva határozza meg, hogy egy port figyel-e vagy sem a célállomáson. Néha ezt nem lehet használni, vagy a távoli szerver észleli, és vannak más alternatívák a szkenneléshez.
Általános szintaxis
nmap { }
első Vizsgálatunk
a következő parancsot hajthatjuk végre:
nmap 45.33.49.119
mi nem tesz semmilyen közvélemény-kutatás, így használja az alapértelmezett közvélemény-kutatás, TCP SYN. az nmap SYN-t küld, és feltételezi, hogy a port nyitva van, ha ACN SYN-t kap. Az opcióknak Nincs további paramétere, rendeltetési helyként pedig egyetlen IP van. Ez a parancs a következőhöz hasonló eredményt ad nekünk:
Starting Nmap 7.70 ( https://nmap.org ) at 2019-10-01 18:12 CESTNmap scan report for ack.nmap.org (45.33.49.119)Host is up (0.19s latency).Not shown: 993 filtered portsPORT STATE SERVICE22/tcp open ssh25/tcp open smtp70/tcp closed gopher80/tcp open http113/tcp closed ident443/tcp open https31337/tcp closed EliteNmap done: 1 IP address (1 host up) scanned in 10.86 seconds
néhány másodperc múlva visszaadja az adott IP-n lévő nyitott portok listáját, beleértve az SSH-t, az SMTP-kiszolgálót, a webkiszolgálót és egy lehetséges hátsó nyílást (https://www.speedguide.net/port.php?port=31337).
sok esetben ez egyszerűen az elemzés első pontja, bár például az FTP szerver mögött lévő szoftver, SSH stb., teljesen frissül, és nincsenek ismert sebezhetőségek. Elindíthat például egy brute force támadást egy szótárral az SSH-n vagy az FTP-n, amely megpróbál hozzáférni (hatalmas számú ilyen típusú szerver van alapértelmezett vagy nem biztonságos hitelesítő adatokkal).
vannak olyan automatikus eszközök (botok), amelyek alapvetően folyamatosan vizsgálják az IP-k széles skáláját, felismerhető nyitott portokat keresve, például adatbázis (MongoDB, MySQL, PostgreSQL stb.), és amikor egy nyitott portot észlelnek, automatikusan megpróbálnak bejelentkezni az alapértelmezett hitelesítő adatokkal. Például tipikus LAMP / WAMP telepítések esetén gyökér / hozzáférés a mySQL porthoz. Alapvetően hatalmas számú adatbázist feltörtek előzetes emberi beavatkozás nélkül. Ez akkor is életképes, ha egy másik portban nyitva van, mivel sok esetben azonosítható, hogy az 5555-ös port “félrevezetni”, valamit mondani, egy MySQL a szolgáltatás ujjlenyomatán keresztül, mivel többet fogunk látni előre.
röviden: Nagyon veszélyes alapértelmezés szerint hitelesítő adatokat hagyni a webszervereken, útválasztókon, FTPs-en, SSHs-en, adatbázisokon … mert senkinek sem kell mániája, egy bot lesz.
az első paraméter
ha szeretnénk némi információt kapni arról, hogy az nmap hogyan szerezte meg ezeket az információkat, növelhetjük a nyomokat a-v (verbose) vagy-vv paraméterrel, ahol láthatjuk, hogy az nmap SYN parancsokat adott ki, és egyes esetekben RESET-et kapott (zárt port ), más SYN-ACK-ban (nyitott port), másokban pedig nincs válasz (“szűrt”), ami megértetheti velünk, hogy egy tűzfal leállítja a kérésünket:
PORT STATE SERVICE REASON22/tcp open ssh syn-ack ttl 5325/tcp open smtp syn-ack ttl 5370/tcp closed gopher reset ttl 5280/tcp open http syn-ack ttl 53113/tcp closed ident reset ttl 52443/tcp open https syn-ack ttl 5331337/tcp closed Elite reset ttl 53
az IP-k tartományának növelése a
nmap 192.168.10.0/24 (subred completa)nmap 192.168.10.1-20 (20 IPs)nmap 192.168.10.*nmap 192.168.10.1 192.168.10.2 192.168.10.3
beolvasásához vagy például képzelje el, hogy az IP-ket a kezdeti felsorolásból gyűjtöttük össze, és van egy fájlunk, amelyben a különböző IP-k fülekkel vagy sortörésekkel vannak elválasztva (soronként egy IP vagy tartomány). Betölthetjük a fájlt az-iL (input list) paraméterrel, és így beolvashatjuk a teljes IP-készletet. Lehetővé teszi például bizonyos specifikus IP –k kizárását a –exclude vagy-excludefile segítségével.
a beolvasandó portok meghatározása
manuálisan meghatározhatjuk a beolvasni kívánt portokat. Ha például egy alhálózaton a 80-as, 443-as és 8080-as porton keresünk webszervereket, akkor ezt a-p paraméterrel tehetjük meg:
nmap -p 80,443,8080 192.168.10.0/24
arra is kérhetjük az nmap-et, hogy szkennelje be az ” N ” (egész) leggyakoribb portokat; például az IP-tartomány 25 leggyakoribb portjának beolvasására:
nmap --top-ports 25 192.168.10.0/24
ilyen választ kap:
PORT STATE SERVICE21/tcp closed ftp22/tcp open ssh23/tcp closed telnet25/tcp closed smtp53/tcp open domain80/tcp open http110/tcp closed pop3111/tcp open rpcbind135/tcp closed msrpc139/tcp open netbios-ssn143/tcp closed imap199/tcp closed smux443/tcp closed https445/tcp open microsoft-ds587/tcp closed submission993/tcp closed imaps995/tcp closed pop3s1025/tcp closed NFS-or-IIS1720/tcp closed h323q9311723/tcp closed pptp3306/tcp closed mysql3389/tcp closed ms-wbt-server5900/tcp open vnc8080/tcp closed http-proxy8888/tcp closed sun-answerbook
kérhetjük, hogy az összes TCP, UDP és SCTP Port (lassabb) a-p – azonosítóval legyen beolvasva:
nmap -p- 192.168.10.0/24
operációs rendszerek és szolgáltatások azonosítása
mint látjuk, az nmap lehetővé teszi számunkra, hogy észleljük az IP-n vagy egy tartományon figyelő portokat. Később azt is meglátjuk, hogyan lehet meghatározni más felmérési technikákat. Ezenkívül az nmap lehetővé teszi számunkra, hogy megpróbáljuk azonosítani, milyen technológiát (termék, verzió stb.) egy nyitott port, vagy akár a szerverre telepített operációs rendszer mögött van, az-O és-sV paraméterekkel. Ez az észlelés azon válaszok “aláírásán” (ujjlenyomatán) alapul, amelyeket a szolgáltatás bizonyos hívásokra ad.
nmap -O -sV 192.168.10.5
PORT STATE SERVICE VERSION22/tcp open ssh OpenSSH 6.7p1 Raspbian 5+deb8u3 (protocol 2.0)53/tcp open domain ISC BIND 9.9.5 (Raspbian Linux 8.0 (Jessie based))80/tcp open http Apache httpd 2.4.10 ((Raspbian))111/tcp open rpcbind 2-4 (RPC #100000)139/tcp open netbios-ssn Samba smbd 3.X - 4.X (workgroup: WORKGROUP)445/tcp open netbios-ssn Samba smbd 3.X - 4.X (workgroup: WORKGROUP)4567/tcp open http Jetty 9.4.8.v201711215900/tcp open vnc RealVNC Enterprise 5.3 or later (protocol 5.0)MAC Address: B8:27:EB:CD:FE:89 (Raspberry Pi Foundation)Device type: general purposeRunning: Linux 3.X|4.XOS CPE: cpe:/o:linux:linux_kernel:3 cpe:/o:linux:linux_kernel:4OS details: Linux 3.2 - 4.9Network Distance: 1 hopService Info: Host: RASPBERRYPI; OS: Linux; CPE: cpe:/o:linux:linux_kernel
ebben az esetben nem csak azt tudjuk, hogy ez a gép bizonyos nyitott portokkal rendelkezik. Azt is elmondja nekünk, hogy ez egy Raspbian-t futtató málna (amellyel például brute force tesztet végezhetünk egy “pi” felhasználóval, aki az alapértelmezett felhasználó), valamint a különböző portok verzióit, amelyek hallgatják, hogy ez az információ felhasználható legyen a biztonsági rések kihasználására a nem javított verziók felett stb.
további lekérdezési technikák használata
alapértelmezés szerint az nmap a SYN-t használja lekérdezési technikaként. Ez egy gyors és nem túl tolakodó / kimutatható technika, de néha, de összesen 12 különböző technikát támogat, amelyeket paraméterként definiálhatunk, amint azt az eszköz felhasználói kézikönyvében láthatjuk.
ha például UDP-hívások alapján akarunk beolvasni, akkor a következő típusú hívást kezdeményezhetjük:
nmap -sU 192.168.10.5
sebezhetőségek keresése az nmap
segítségével bár vannak “kényelmesebb” és speciális eszközök a sebezhetőségek keresésére, mint például a Nessus, vagy olyan csomagok, mint a Metasploit, amelyek különféle eszközöket egyesítenek, az nmap lehetővé teszi számunkra a sebezhetőségi elemzés elvégzését is.
ehhez Lua szkriptek sorozatát használja, amelyek a gépünk egyik útvonalán helyezkednek el (Kali esetében a / usr / share / nmap / scripts / könyvtárban), és amelyek a –script vagy annak megfelelője-sC segítségével hívhatók meg .
a szkriptek egy vagy több kategóriába tartozhatnak, ezért megkérhetjük az nmap-et, hogy értékelje például egy Kategória összes szkriptjét egy gazdagép ellen. Van néhány különösen érdekes kategória, például a “vuln” (szkriptek, amelyek a rendeltetési hely sebezhetőségének felderítésére szolgálnak), “exploit” stb.
például, ha a sérülékenységi kategóriájú szkripteket egy gazdagép ellen szeretnénk beolvasni:
nmap --script vuln scanme.nmap.org
PORT STATE SERVICE22/tcp open ssh80/tcp open http| http-csrf: | Spidering limited to: maxdepth=3; maxpagecount=20; withinhost=scanme.nmap.org| Found the following possible CSRF vulnerabilities: | | Path: http://scanme.nmap.org:80/| Form id: cse-search-box-sidebar|_ Form action: https://nmap.org/search.html|http-dombased-xss: Couldn't find any DOM based XSS. | http-enum: | /images/: Potentially interesting directory w/ listing on 'apache/2.4.7 (ubuntu)' | /shared/: Potentially interesting directory w/ listing on 'apache/2.4.7 (ubuntu)'| http-slowloris-check: | VULNERABLE:| Slowloris DOS attack| State: LIKELY VULNERABLE| IDs: CVE:CVE-2007-6750| Slowloris tries to keep many connections to the target web server open and hold them open as long as possible. It accomplishes this by opening connections to the target web server and sending a partial request. By doing so, it starves the http server's resources causing Denial Of Service.| Disclosure date: 2009-09-17| References:| https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2007-6750|_ http://ha.ckers.org/slowloris/|_http-stored-xss: Couldn't find any stored XSS vulnerabilities.9929/tcp open nping-echo31337/tcp open Elite
mint láthatjuk, a szkript potenciális sebezhetőséget észlelt a Slowloris szolgáltatásmegtagadási támadás alapján. Ha elemezzük a fent említett útvonalon lévő szkripteket, látjuk, hogy pontosan létezik egy, amely kihasználja ezt a biztonsági rést, az úgynevezett http-slowloris. Ha további információt szeretnénk a szkriptről, elindíthatjuk a következő parancsot:
nmap --script-help http-slowloris
elmagyarázza, hogyan működik a szkript, hogyan kell elindítani (ez is lehetséges az nmap –rel a –script és a-script-args segítségével) stb. Megkaphatjuk például az összes olyan szkript leírását is, amely sebezhetőségeket keres:
nmap --script-help vuln
például elindíthatunk egy bizonyos típusú összes szkriptet is. Például, ha egy adott gazdagépen SMB protokollon keresztül szeretnénk átvizsgálni a biztonsági réseket:
nmap --script smb-* 192.168.10.5
például felmérhetjük a teljes hálózatunk sebezhetőségét is, kiválasztva egy adott szkriptet egy tartomány ellen. A-script paraméter
nmap --script-help vuln
nmap --script
röviden, az nmap érdekes lehetőségeket is tartalmaz a sebezhetőségek felmérésére, sőt a kihasználások elindítására is, bár vannak más eszközök is, amelyeket erre a célra használnak.
egyéb érdekes lehetőségek
amint azt már említettük, az nmap-nek számos lehetősége van, és lehetetlen megpróbálni még egy kis százalékot is lefedni egy bejegyzésben. Valójában van egy hivatalos, közel 500 oldalas Nmap könyv… de mindenesetre megpróbálunk itt kommentálni néhányat, amelyek érdekesnek tűnnek.
mint már említettük, az nmap-nek számos lehetősége van, és lehetetlen megpróbálni még egy kis százalékot is lefedni egy bejegyzésben. Valójában van egy hivatalos, közel 500 oldalas Nmap könyv… de mindenesetre megpróbálunk itt kommentálni néhányat, amelyek érdekesnek tűnnek.
- az eszköz lehetővé teszi a beolvasási eredmény feldolgozható kimeneti fájlban történő generálását, például XML formátumban,- oX vagy-oN gombbal .
- ha széles IP-tartományokat vizsgálunk, letilthatjuk a DNS fordított felbontási kísérletét a-n paraméterrel.
- egy parancs végrehajtása során a “V” gomb megnyomásával növelhetjük a konzolon megjelenített információk szintjét (bőbeszédűség).
- ha van egy tűzfalunk, amely megvág minket, megpróbálhatjuk a-Pn-t.
röviden, megpróbáltunk kidolgozni egy “rövid” bevezetőt az nmap-hez, mint eszköz a nyitott portok és szolgáltatások azonosítására egy gazdagépen vagy IP-tartományon. A későbbi bejegyzésekben más módszereket fogunk látni a sebezhetőségek észlelésére.
minden kész?
ideje hatékonyabban kezelni a dokumentumokat