Nmap:” Hacker eszköz ” biztonsági szakemberek számára
írta Justin Hutchens
az “etikus hacker” fogalma mindig is ironikus volt. Az etikus hackelés és a támadó biztonság fejlődő trendjei az információbiztonsági iparágat a világ egyik leginkább önfenntartó iparágává alakították.
a sérülékeny információs eszközök védelmére használt szoftverek és eszközök ugyanazok az eszközök, amelyek felhasználhatók ezek kihasználására. Talán fordítva van. Talán azokat az eszközöket, amelyeket kizárólag az információs eszközök kiaknázására hoztak létre, most felhasználják azok védelmére. Azt hiszem, ez egy örökké tartó vita, amely valójában csak egy újabb példája annak ,hogy ” mi volt előbb…a tyúk vagy a tojás?”
ennek az esszének a célja nem a szándék filozófiai kérdésének megvitatása. A szándékaim szerényebbek. Csupán arra törekszem, hogy igazoljam egy olyan eszköz fontosságát, amelyet következetesen rosszindulatú hacker szoftverként jelöltek meg. Az eszköz, amelyre utalok, a Network Mapper, vagy röviden az nmap. Akár egy őrült szélhámos ügynök, aki hajlamos a globális forradalom felbujtására, akár egy hálózati biztonsági szakember (remélhetőleg az utóbbi, nem pedig az előbbi), az nmap-nek állandó helyet kell kapnia az eszköztárban. Talán ahelyett, hogy kritizálnánk egy rendkívül funkcionális hálózati eszközt, felelősségre kellene vonnunk az egyéneket tetteikért, és el kellene gondolkodnunk a jól ismert Benjamin Parker figyelmeztetésen…”a nagy hatalom nagy felelősséggel jár.”Néhány ellenkező állítás ellenére az nmap nem rosszindulatú szoftver. És azt hiszem, az egyetlen oka annak, hogy gyakran így címkézik, az a nagyon lenyűgöző képességeinek listája. Annak ellenére, hogy kárt okozhat, az nmap minden bizonnyal fontos szerepet játszhat a hálózati infrastruktúra professzionális környezetben történő biztosításában.
az Nmap az évek során folyamatosan fejlődött egy egyszerű szkennelési segédprogramból egy teljes körű penetrációs tesztelési platformmá. Használható a biztonsági ellenőrzési folyamat minden lépésében, beleértve a hálózat felfedezését, a port szkennelését, a szolgáltatások felsorolását, a sebezhetőségek feltérképezését és még a kizsákmányolást is. Ebben a cikkben az nmap képességeit fogom megvitatni, mivel azok a penetrációs tesztelési folyamat minden egyes lépésére vonatkoznak.
telepítés és előkészítés
nyilvánvaló, hogy az nmap használata előtt fontos, hogy az Ön által használt rendszeren legyen egy működőképes verzió. Alapértelmezés szerint az nmap már telepítve van a legtöbb penetrációs tesztelő és hálózati biztonsági operációs rendszeren, mint például a Kali-Linux, a Backtrack, a DEFT, a Node-Zero, A Security Onion és az NST. Ugyanakkor szinte bármilyen választott platformra is betölthető. Az Nmap könnyen telepíthető az összes általánosan használt operációs rendszerre, beleértve a Windows, Linux és OSX rendszert. Van még dokumentáció a telepítéshez homályosabb platformokon, beleértve a BSD-t, a Solarist, az Aix-t és az AmigaOS-t. A telepítőcsomagok és a telepítés végrehajtására vonatkozó utasítások ezen rendszerek bármelyikén megtalálhatók a http://nmap.org/book/install.htmloldalon.
Zenmap – grafikus felület
az nmap hagyományos parancssori felületén kívül van egy grafikus kezelőfelület is, az úgynevezett Zenmap. A Zenmap a korábban tárgyalt különféle penetrációs tesztelési platformokba is integrálva van. Alapértelmezés szerint azonban nincs telepítve a Kali-Linuxban (az a platform, amelyet ehhez az oktatóanyaghoz fogok használni). Szerencsére az installation repository-ban van, és könnyen telepíthető egyetlen paranccsal:
apt-get install zenmap
a Zenmap point-and-click felülete nem csak hatékonyan egyszerűsíti az egyébként bonyolult parancsokat igénylő dolgokat, hanem rendkívül hasznos eszköz lehet az nmap használatának megtanulására is. Ez használ ‘profilok’ menteni általánosan használt szkennelési konfigurációk későbbi módosítás és / vagy használat. Vessen egy pillantást a Zenmap felület képére, amelyet az 1. ábra mutat be, és röviden kitérünk az egyes összetevőkre.
1. ábra. Zenmap grafikus felület
az első komponens a Célmező (1. ábra. A). Ebben a mezőben adhatja meg azokat a távoli rendszereket, amelyek ellen vizsgálatot szeretne futtatni. Megadhat egyetlen IP-címet (például 192.168.1.1), megadhatja az IP-címek szekvenciális tartományát (például 192.168.1.0-255) vagy a CIDR jelöléssel megadhatja a kívánt alhálózatot (például 192.168.1.0/24). A második komponens a Profil mező (1.ábra. B). A mező jobb oldalán található legördülő nyílra kattintva több előre konfigurált profilt láthat a szkenneléshez. A profilok lehetővé teszik a gyakran használt szkennelési konfigurációk mentését későbbi felhasználás céljából. Saját profilokat is létrehozhat, amelyek ezután megjelennek ebben a listában (ezt a cikk későbbi részében tárgyaljuk). A harmadik komponens a parancs mező (1. ábra. C). Ez a mező jelzi azt a parancsot, amelyet el kell küldeni a háttérprogramnak. Az ezen a területen megjelenő parancs elindításához egyszerűen kattintson a Szkennelés gombra. A mező értékét közvetlenül is módosíthatja, azonban a rendszer automatikusan kitölti a Célmező és a kiválasztott profil értékei alapján. Ha még nem ismeri az nmap programot, akkor nagyon figyeljen erre a mezőre, mivel így jobban megértheti a megfelelő szintaxist és a különböző nmap parancsok használatát. A negyedik komponens a gazdagép / szolgáltatás lista (1. ábra. D). Miután elvégezte a vizsgálatokat, az információk ebben a listában kerülnek feltöltésre. Ha a Hosts gombot választotta, az összes felfedezett host IP-cím fel lesz sorolva. Ha pedig a szolgáltatások gombot választotta, akkor az összes felfedezett hálózati szolgáltatás fel lesz sorolva. A végső komponens (1. ábra. E) az, ahol rendezheti az összes olyan információt, amelyet az összes elvégzett vizsgálat előállított. Az Nmap Kimenet lap pontosan azt a kimenetet jeleníti meg, amely akkor lenne megadva, ha a parancsot a parancssori felületről adta volna meg. A portok / gazdagépek lap tartalma attól függően változik, hogy kiválasztotta-e a Hosts vagy Services gombot a listához. Ha a Hosts gombot választja, akkor a portok/Hosts fül alatt található információk tükrözik azokat a szolgáltatásokat, amelyeket a listában aktívan kiemelt IP-címen azonosítottak. Ellenkező esetben, ha a szolgáltatások gomb van kiválasztva, a portok/gazdagépek lapon található információk azonosítják az összes olyan gazdagépet, amelyről megállapították, hogy rendelkezik a listában kiemelt szolgáltatással. A topológia lap grafikus ábrázolást nyújt a hálózat logikai topológiájáról, amely magában foglalja az összes szkenneléssel felfedezett gazdagépet. A visszaadott TTL (Time-To-Live) értékeket fogja használni a gazdagépek logikai orientációjának megjelenítéséhez, egymáshoz képest. A gazdagép részletei lapon található a kiválasztott gazdagépről felfedezett információk nagy része. Ezek az információk magukban foglalják a MAC-címeket, az IP-címeket, a nyitott portokat, az azonosított szolgáltatásokat, az operációs rendszer adatait és az összegyűjtött további információkat. Végül a beolvasások lap megadja a munkamenet során végrehajtott vizsgálatok előzményeit.
a képernyő tetején több különböző legördülő menü jelenik meg, amelyek tartalmazzák a szkennelést, az eszközöket, a profilt és a súgót. A Súgó menü magától értetődő. A Szkennelés menü Új szkennelések létrehozását, szkennelések mentését vagy a korábban mentett szkennelések megnyitását tartalmazza. Az Eszközök menü néhány további funkciót tartalmaz, amelyek segítségével a beolvasások során gyűjtött információk rendezhetők és rendezhetők. A Profil menü lehetőséget kínál új szkennelési profilok létrehozására vagy a meglévő profilok szerkesztésére.
most röviden megvitatjuk, hogyan lehet új profilt létrehozni, majd elindítani a vizsgálatot az adott profil használatával. Az induláshoz válassza a profil legördülő menüt, majd válassza az “új profil vagy parancs” lehetőséget.”Ez megnyit egy profil konfigurációs felületet, amely a 2.ábrán látható.
2. ábra. Zenmap Profile Editor
az első fül (profil fül) lehetővé teszi a profil egyedi nevének és leírásának létrehozását. Az összes többi lapon megadhatja a szkennelés során használt különböző konfigurációkat. Amint az a 2. ábrán látható szkennelés lapon látható, a szkennelési profil létrehozása olyan egyszerű, mint az engedélyezni kívánt opciók négyzetének bejelölése, az értékek megadása, hogy ezek az opciók hatékonyan alkalmazhatók legyenek, vagy a legördülő menü előre meghatározott lehetőségei közül választhat. Ha nem biztos abban, hogy a funkció vagy a megfelelő használata bármely opció itt, akkor vigye az egérrel, és a Súgó oszlop a jobb oldalon a képernyő automatikusan feltölti információt, hogy mi az adott opció nem, és a megfelelő értékeket és szintaxist minden kért beviteli mezők. A beolvasási konfiguráció minden kisebb módosításával a tetején lévő parancs mező ennek megfelelően módosul. Ez a funkció teszi Zenmap rendkívül hatékony eszköz a tanulás, hogyan kell használni nmap parancsokat helyesen. Miután beállította a szkennelési beállításokat tetszés szerint, kiválaszthatja a képernyő jobb felső sarkában található szkennelés gombot egyszeri használatra, vagy kiválaszthatja a Módosítások mentése a jobb alsó sarokban. A Módosítások mentése gomb elmenti a profilt az első lapon megadott névvel konfigurációk majd azonnal vagy később használható, ha név szerint választja ki a fő Zenmap felület profil legördülő menüjéből. Bár a Zenmap nagyon erős, ne engedje, hogy mankóvá váljon, amely megakadályozza az nmap parancssori funkcióinak megtanulását. Bár a Zenmap számos funkciót képes végrehajtani, még mindig vannak korlátai, és nem olyan erős, mint az nmap. Az nmap hatékony és teljes körű használatához fontos, hogy a parancssori felületet is megismerjük.
Hálózati felfedezés
a penetrációs tesztelési folyamat első lépése, amelyet megvitatunk, a hálózati felfedezés. A hálózati információs rendszerek biztonságának értékelése előtt először meg kell határoznia, hogy mit értékel. Számos különböző módja van annak, hogy az Nmap segítségével felfedezze a hálózaton lévő gazdagépeket. Ebben a részben azt fogjuk megvitatni, hogyan kell az Nmap-et használni az OSI modell 2-es, 3-as és 4-es rétegeiben történő gazdagép-felderítéshez, és megvitatjuk az egyes modellek előnyeit és hátrányait is. Egy példa a 2. réteg felderítésére szolgáló parancsra itt látható:
nmap-PR-SN 192.168.1.0-255
a -PR
kapcsoló megadja az ARP pinget. Ez a layer 2 ARP (Address Resolution Protocol) csomagokat használja a megadott tartományon belüli élő gazdagépek azonosítására. Ezt úgy teszi, hogy ARP sugárzási kérelmet küld az egyes azonosított IP-címekre. Ha van egy élő állomás a hálózaton az egyik ilyen IP-címmel, akkor az állomás ARP-választ küld a szkennelő rendszernek az IP-címével és a megfelelő 2.réteg MAC-címével. Az Nmap összegyűjti az összes élő gazdagép válaszát, majd visszaadja a felfedezett gazdagépek listáját. Az -sn
kapcsolóval kérhető, hogy az nmap ne végezzen portvizsgálatot. Ez megakadályozza a további forgalom továbbítását, túl azon, ami a 2.réteg gazdagép-felderítési sweep végrehajtásához szükséges. A 2. réteg felfedezése azért hatékony, mert mindhárom lehetőség közül a leggyorsabb. Ezt azonban korlátozza az a tény, hogy csak olyan gazdagépek ellen hajtható végre, amelyek ugyanazon a helyi hálózaton vannak, mint a vizsgálatot végző rendszer.
távoli gazdagépek esetén a 3.vagy a 4. réteg felfedezését kell használnia. Egy példa a 3. réteg felderítésére használható parancsra:
nmap-PE-sn 109.74.11.0-255
ez a parancs egy sor ICMP visszhang kérést küld a lista minden 3.réteg IP-címére. Az Nmap összegyűjti az összes beérkezett ICMP visszhang választ, és visszaadja az összes élő állomás listáját. Ez a felderítési vizsgálat lassabb, mint az ARP ping végrehajtása, de a távoli hálózatok gazdagépeinek eredményeit adja vissza.
végül tegyük fel, hogy olyan távoli rendszereket próbál felfedezni (így nem használhatja a 2.réteget), amelyek olyan tűzfal mögött vannak, amely az összes bejövő ICMP forgalmat csökkenti (így nem használhatja a 3. réteget). A probléma megoldásához felfedezést kell végrehajtania a szállítási rétegben (4.réteg). Számos különböző módja van annak, hogy a 4. rétegű vizsgálatok segítségével felderítést hajtson végre. Az egyik hatékony módszer az UDP ping használata. Példa egy UDP ping parancsra:
nmap-PU53-sn 109.74.11.0-255
ez a parancs DNS-kiszolgálói állapotkérések sorozatát generálja az egyes cél IP-címekhez. Egy sor DNS-lekérdezési válasz érkezik az élő gazdagépektől, majd az nmap visszaadja ezeket az eredményeket. Mivel a DNS egy általánosan használt szolgáltatás az UDP 53-as porton, lehetséges további élő gazdagépek azonosítása ezzel a technikával, amelyek úgy vannak konfigurálva, hogy ne reagáljanak az ICMP forgalomra. Az ICMP ping sweepek másik hatékony 4. réteg alternatívája a TCP ACK ping használata. Erre példa az alábbiakban látható:
nmap-PA80-sn 109.74.11.0-255
ez a parancs egy sor kéretlen ACK-választ küld a megadott portra az IP-tartomány összes gazdagépéhez. Mivel ezek az ACK-csomagok nem voltak összefüggésben a kialakult kommunikációs vonallal, az élő gazdagépek TCP RST csomaggal válaszolnak, jelezve, hogy a kommunikációt meg kell szakítani. Az Nmap ezeket a válaszokat az élő gazdagépek jelzéseként gyűjti össze, majd visszaadja azok listáját.
portszkennelés és Szolgáltatásszámlálás
most, hogy felfedeztük azokat az aktív IP-címeket a hálózaton, amelyek ellen penetrációs tesztet hajtunk végre, meg kell határoznunk az egyes rendszerek nyitott portjait és az azokon futó szolgáltatásokat. A távoli rendszerek TCP portjainak beolvasása az nmap legalapvetőbb funkciója. A célrendszer TCP-vizsgálatának végrehajtásához használja a basic parancsot:
nmap 109.74.11.34
a többi Nmap parancshoz hasonlóan ez is használható több állomás ellen szekvenciális sorozat használatával (192.168.1-255) vagy CIDR jelölés (192.168.1.0/24). Ez a szabványos nmap parancs 1000 általánosan használt TCP porton végez vizsgálatot. Alternatív megoldásként megadhat egyetlen beolvasandó portot a-p kapcsolóval, amelyet a beolvasni kívánt port száma követ.
nmap 109.74.11.34-p 21
ez a fenti parancs a megadott rendszer 21-es TCP portját vizsgálja. A portok sorozatát a-p kapcsolóval is beolvashatja, majd felsorolhatja a kívánt portokat, vesszővel elválasztva őket.
nmap 109.74.11.34-p 80,443
ez a parancs a célrendszer 80-as és 443-as portjait vizsgálja. A -p
kapcsolóval beolvashat egy sor portot, amelyet a tartomány első értéke, egy kötőjel, majd a tartomány utolsó értéke követ.
nmap 109.74.11.34-p 0-100
a fenti parancs az első 100 portot vizsgálja. A cél összes 65 536 TCP-portjának vizsgálatához használja a következő parancsot:
nmap 109.74.11.34-p 0-65535
TCP ACK-vizsgálat segítségével azonosíthatja a szűrt portokat. Ehhez használja a-sA kapcsolót. Ezután megadhat egy portot vagy portok sorozatát. Egyetlen port specifikáció sem vizsgálja meg a szokásos 1000 portot. Ez visszaadja a szűrt portok listáját. Egy példa erre a parancsra alább látható:
nmap 109.74.11.34-sA
a Behatolásvizsgálók és a biztonsági szakemberek néha csak a célrendszereken nyitott TCP portokat keresnek. Az UDP-szolgáltatások figyelmen kívül hagyása miatt az ember teljesen figyelmen kívül hagyhatja a kirívó sebezhetőségeket, amelyek könnyen kompromisszumhoz vezethetnek. Az UDP-szolgáltatások célrendszeren történő kereséséhez használja a következő parancsot:
nmap 109.74.11.34-su
mivel az UDP-szolgáltatások nem ugyanúgy kapcsolatorientáltak, mint a TCP-szolgáltatások, ez hosszabb ideig tart, mint egy tipikus TCP-vizsgálat. Az UDP-vizsgálatok befejezéséhez szükséges idő csökkenthető bizonyos portok beolvasásával. A portokat ugyanúgy adhatja meg, mint a TCP-vizsgálatoknál.
nmap 109.74.11.34-sU-p 69
a fenti parancs az UDP 69 portot vizsgálja, amely a TFTP (Trivial File Transport Protocol) általánosan használt portja. Lehetőség van az egyes szolgáltatások verziószámának és verziószámának azonosítására is. Ehhez használja a-sV kapcsolót.
nmap 109.74.11.34-sv
ez a parancs a szalaghirdetés és a szonda-válasz elemzés kombinációját használja a szolgáltatás és a verziószám azonosításához minden beolvasott porton. Hasonló technikák alkalmazásával az is lehetséges, hogy az nmap megpróbálja meghatározni a célon futó operációs rendszert. Ehhez használja a -O
kapcsolót.
nmap 109.74.11.34-O
miután elkészült, vagy pozitív azonosítást ad vissza az operációs rendszerről, vagy megadja a legjobb találgatást, majd a többi lehetséges operációs rendszer listáját.
Advanced Scanning Techniques
van egy gyakori probléma, amellyel gyakran találkozhat, amikor penetrációs tesztet végez közepes vagy nagy méretű vállalati hálózatok ellen. A legtöbb vállalat és szervezet manapság biztonságosabbá vált, és valószínűleg tűzfalak vagy behatolásérzékelő rendszerek állnak közted és a beolvasni kívánt rendszerek között. Az ilyen rendszerek beolvasásához néhány fejlettebb szkennelési technikát kell alkalmaznunk. A tűzfalak és/vagy behatolásérzékelő rendszerek esetleges megkerülésének egyik módja az Nmap-be integrált hagyományos lopakodó szkennelési technikák használata. Az egyik alkalmazható módszer egy lassabb időzítési sablon használata. Időzítés sablonok tartomány -T0
(paranoid scan) egészen a -T5
(Insane scan). Minél alacsonyabb az időzítési sablon értéke, annál lassabb lesz a vizsgálat. A lassabb vizsgálatokat kevésbé valószínű, hogy behatolásérzékelő rendszerek jelzik. Egy példa a paranoid scan lenne:
nmap 109.74.11.0-255-T0
egy másik technika, hogy lehet használni, hogy elfedje a vizsgálat, hogy az árvíz a hálózat további csali forgalmat a -D
kapcsolót. Ez a funkció lehetővé teszi, hogy több címet adjon meg a forgalom hamisításához, vagy használhatja az RND opciót a véletlenszerű címek forgalmának hamisításához.
nmap 109.74.11.0 – 255-D RND:5
a célrendszerek hagyományos TCP portvizsgálatának végrehajtása mellett a fenti parancs 5 véletlenszerű cím forgalmát is meghamisítja, hogy elhomályosítsa a tényleges szkennelési forgalmat. Egy másik használható technika az átvitt kérések csomaghosszának változtatása. Egyes behatolásérzékelő rendszerek és tűzfalak az aláírási csomagok hossza alapján eldobják a csomagokat. Ennek elkerülése érdekében megadhatja az adatok hosszát a --data-length
kapcsolóval, majd a csomag méretét a bájtok számában.
nmap 109.74.11.0-255 — data-length 15
ez a parancs az összes szkennelési forgalmat 15 bájt hosszúságú csomagokban küldi el. Bár ez hasznos lehet egyes aláíráson alapuló behatolásérzékelő rendszerek elkerülése érdekében, a szokatlan, meghatározott csomaghosszúságú csomagok következetes küldése anomálián alapuló behatolásérzékelő rendszereket jelölhet meg. A hálózati behatolásérzékelő rendszerek akkor is megjelölik a forgalmat, ha egymás után csatlakozik egy meghatározott hálózati tartományon belüli rendszerekhez. A --randomize-hosts
kapcsolóval elkerülheti a beolvasások egymás utáni végrehajtását.
nmap 109.74.11.0-255 — randomize-hosts
ez a fenti parancs véletlenszerűen átvizsgálja a tartomány minden gazdagépét, ahelyett, hogy sorrendben hajtaná végre őket (109.74.11.0, majd 109.74.11.1, majd 109.74.11.2 stb.). Bár nem tudja meghamisítani az IP-címét (mert nem kapná meg a nyitott portok meghatározásához szükséges válaszokat), meghamisíthatja a MAC-címét. Ehhez használhatja a — spoof-mac kapcsolót, amelyet egy szállítói azonosító, egy adott MAC-cím vagy 0 követ.
nmap 109.74.11.0-255 –spoof-mac 0
a 0 argumentumként történő használata véletlenszerű MAC-címet fog alkalmazni a szkennelési forgalomra. Az egyik utolsó technika, amelyet érdemes megemlíteni, az-f kapcsoló fragmentumcsomagokra történő használata.
nmap 109.74.11.0-255-f
a csomagok töredezettsége a szkennelési forgalom adatterhelését több csomagra osztja, lehetővé téve a tartalomellenőrző behatolásérzékelő rendszerek vagy tűzfalak könnyebb megkerülését. Bár ezek a technikák hatékonyak lehetnek a tűzfal mögött nyilvánosan elérhető szerverek szkennelésére, általában nem elegendőek a belső hálózaton lévő gazdagépek szkenneléséhez. Míg bizonyos nyilvánosan hozzáférhető szerverek elérhetők lesznek a szkenneléshez, a belső infrastruktúra nagy része mélyebb lesz a hálózaton belül, és nem olyan könnyen elérhető. Tekintsük a 3. ábrán látható diagramot. Ez egy egyszerű példa a vállalati hálózatok közös konfigurációjára.
3. ábra. Közös hálózati konfiguráció
a probléma, amellyel itt találkozunk, az, hogy a belső hálózat egy belső tűzfal mögött fekszik, amely a külső tűzfalhoz képest szigorúbb szabályokat tartalmaz a behatolási forgalomra vonatkozóan. Ez a belső tűzfal valószínűleg blokkolja a bejövő forgalmat a távoli címekről az interneten; azonban lehetséges, hogy a DMZ rendszerei képesek kommunikálni a belső rendszerekkel. Annak érdekében, hogy ezeket a belső rendszereket be tudjuk szkennelni, a DMZ rendszereit a nevünkben kell működtetni. Megbeszéljük több különböző módon, hogy ezt, hogy tartalmazza proxy szkennelés, zombi szkennelés és FTP ugrál szkennelés.
valószínűleg a legegyszerűbb módja annak, hogy átvizsgálja a belső rendszerek segítségével egy proxy lánc. Tegyük fel, hogy a DMZ-n belül hozzáférést szereztünk egy proxy szolgáltatáshoz egy nyílt hozzáférésű proxy szolgáltatás megkeresésével, egy proxy szolgáltatás brutális kényszerítésével a hydra-val vagy egy proxy szolgáltatás telepítésével egy már veszélyeztetett gépen. Miután beállította a rendszert, hogy a forgalmat ezen a proxyn keresztül irányítsa, az nmap-vizsgálatokat teljes kapcsolatvizsgálattal végezheti el (-sT
).
nmap 10.1.1.0-255-sT
ha nem áll rendelkezésre proxy szolgáltatás, van néhány okos módja annak, hogy a DMZ-n belüli gépeket kihasználhassa a belső rendszerek szkennelési eredményeinek eléréséhez. Ennek egyik módja a zombi szkennelés használata, amelyet tétlen szkennelésnek is neveznek. Annak érdekében, hogy a belső LAN-on lévő rendszerek ellen zombi szkennelést hajtsunk végre, találnunk kell egy életképes zombi gazdatestet a DMZ-n belül. A zombi gazdagép bármely viszonylag tétlen rendszer, amely inkrementális IPID szekvenálást használ. Annak érdekében, hogy megtaláljuk a zombi host, tudjuk használni egy Nmap script, hogy átvizsgálja a DMZ egy olyan rendszer, amely megfelel ennek a leírásnak.
nmap –script ipidseq 109.74.11.0-255
ez a parancsfájl csomagsorozatot küld minden gazdagépnek, és nyomon követi az összes kapott válasz IPID-számát. Ezután elemzi ezeket az IPID-számokat, hogy az egyes rendszereket véletlenszerű sorrendbe sorolja, minden nulla, vagy növekményes. Lásd a 4. ábrát egy inkrementális rendszer kimenetének példájára.
4. ábra. Zombie host található IPID szekvencia Script
miután megszerezte az IP-címet a zombi rendszer, készek vagyunk, hogy megpróbálja a zombi scan. Mielőtt foglalkozna a vizsgálat végrehajtásával, röviden megvitatom a vizsgálat működését. Lásd az 5. ábrát arról, hogy mi történik, amikor egy zombi szkennelést végeznek egy nyitott port ellen.
5. ábra. Zombie scan nyílt porton
először is, az nmap scanner egy kéretlen SYN/ACK csomag küldésével határozza meg a zombie rendszer aktuális IPID értékét. Mivel a zombi rendszer eredetileg nem küldött SYN csomagot kapcsolat létrehozására, a zombi ezután egy RST csomaggal válaszol a szkennerünkre. Szkennelési rendszerünk ezután az RST csomag IPID-jét használja referenciapontként. Ezután a szkennelő rendszerünk ezt azonnal követi egy hamis SYN csomaggal, amelyet a célrendszernek küldünk a zombi rendszer forrás IP-címével. Mivel a forrás IP-címe egy a DMZ-en belül, ez a csatlakozási kérelem nagyobb valószínűséggel képes átjutni a tűzfalon. Ha a cél megkapja a csomagot, és a cél port nyitva van, akkor a cél visszaad egy SYN/ACK csomagot a zombi rendszernek (aki úgy gondolja, hogy elküldte az eredeti SYN csomagot). Mivel ez a SYN / ACK csomag a kontextuson kívül érkezik, a zombi rendszer ezután egy RST csomaggal válaszol a célrendszerre, ezáltal eggyel növeli IPID értékét. Végül a szkennerünk egy utolsó SYN/ACK csomagot küld a zombi rendszernek. A zombi ezt követő első válasza még egyszer növeli az IPID-t. Tehát, ha a távoli rendszer célzott portja nyitva van, a végső ipid érték két számmal magasabb lesz, mint az eredeti érték. Alternatív megoldásként a 6. ábra szemlélteti, hogy mi történik, amikor a célrendszer portja zárva van.
6. ábra. Zombie scan zárt port Ellen
ha a célrendszer portja zárva van, a zombi rendszer nem kap kéretlen választ a céltól, ezért nem kezdeményezhető RST csomag küldése a célnak. Tehát, ha a végső RST válasz IPID értéke csak eggyel nőtt, akkor arra következtethetünk, hogy a port zárva van, mert nem küldtek SYN/ACK választ a zombi rendszernek az RST válasz kiváltására. Ellenkező esetben, ha a végső IPID érték kettővel nőtt az eredeti értékhez képest, akkor arra a következtetésre juthatunk, hogy a célrendszer portját meg kell nyitni, mert válaszolnia kellett a zombinak, amely a zombi rendszer IPID értékét növelő választ váltotta ki.
bár ez rendkívül bonyolultnak tűnhet; ne ijedj meg a leírástól, mivel az nmap szinte minden munkát elvégez helyetted. A zombi vizsgálat tényleges végrehajtásához csak egy egyszerű parancsot kell megadnia.
nmap-sI 192.168.199.132-Pn 192.168.199.130
a -sI
kapcsoló azt mondja az nmap-nek, hogy a következő IP-címet használja zombi-állomásként (192.168.199.132). A -Pn
kapcsoló megakadályozza, hogy az nmap egy kezdeti ICMP pinget hajtson végre a célrendszeren a vizsgálat megkísérlése előtt. Tehát a parancs végső IP-címe azonosítja a célrendszert. A parancs kimenete a 7. ábrán látható.
7. ábra. Zombie scan zárt port Ellen
meg kell jegyezni, hogy az IP-tartomány, amelyet a zombi vizsgálat bemutatására használtam, a belső hálózatom privát tartománya. Ahhoz, hogy ez hatékonyan működjön egy távoli hálózat ellen, az eredeti forgatókönyv szerint, mind a DMZ, mind a belső hálózat rendszereinek nyilvánosan irányítható IP-tartományokon kell lenniük. Ha a belső hálózat egy NAT (Network Address Translation) kiszolgáló mögötti privát tartományon van konfigurálva, akkor az nmap szkenner nem tudja elküldeni a hamisított SYN csomagot a belső címre a távoli helyről.
a DMZ-n belüli rendszerek használatának másik módja a belső hálózaton lévő gazdagépek beolvasásának megkísérlése az FTP bounce használata. Néhány régi FTP-kiszolgáló támogatja a fájlok harmadik fél rendszerére történő továbbításának képességét. Ha felfedezett egy FTP-kiszolgálót a DMZ-ben, amely lehetővé teszi a névtelen bejelentkezést, vagy ha brute kényszerítette a hydra-t, tesztelheti az FTP-kiszolgálót annak megállapítására, hogy támogatja-e az FTP-visszapattanást. Ehhez használja az ftp-bounce szkriptet.
nmap –script ftp-bounce –script-args
ftp-bounce.username=anonymous,
ez a parancs az nmap parancsfájlt használja felhasználónév és jelszó argumentumokkal az FTP szerver ellen. Miután elkészült, ez a vizsgálat jelzi, hogy lehetséges-e az FTP visszapattanása vagy sem. Ha a parancsfájl azt jelzi, hogy az FTP bounce működik, akkor az FTP-kiszolgáló segítségével portvizsgálatot végezhet a hálózat más rendszerei ellen. A 8. ábra bemutatja, hogyan működik ez.
8. ábra. FTP bounce scan
a szkenner megkísérel bináris adatokat küldeni az FTP bounce funkción keresztül a célrendszerbe egy kijelölt porton. Ha az adatokat továbbítják, az FTP-kiszolgáló ezt visszaadja a szkennernek, jelezve, hogy a célrendszer portja nyitva van. Az FTP visszafordulási vizsgálat végrehajtásához használja a -b
kapcsolót.
nmap-b ftpuser::21 10.1.1.128-255
ebben a parancsban a -b
függvény az “ftpuser” felhasználónév és a PassW0rd
jelszó használatával egy FTP bounce szkennelést hajt végre a 192.168.11.201-es FTP szerveren a 21-es TCP porton. A fenti ábrán leírt műveleteket ezután az egyes célállomásokon lévő közös 1000s portok mindegyikével szemben végrehajtjuk 10.1.1.128 – tól 10.1.1.255-ig.
biztonsági rések leképezése és kihasználása az NSE
használatával miután felfedezte az élő gazdagépeket a célhálózaton, és sikerült felsorolnia a nyitott portokat és/vagy az azokon futó szolgáltatásokat, elkezdheti a biztonsági rések tesztelését és kihasználását. Az újonnan integrált NSE (Nmap Scripting Engine), számos előre telepített szkriptek, hogy jön a standard Nmap telepítést. Ezeknek a szkripteknek sokféle funkciója van az alapvető információgyűjtéstől (például a már tárgyalt kettőtől), a sebezhetőség feltérképezésétől, a brutális kényszerítéstől, a szolgáltatás megtagadásától, sőt a távoli kizsákmányolástól. Ezek a parancsfájlok az nmap telepítési könyvtárában találhatók. A Kali-Linuxban a /usr/share/nmap/scripts/
címen találhatók. A parancsfájlok közötti böngészéshez és a velük való munka megkezdéséhez használja a következő parancsokat:
cd /usr/share/nmap/scripts/
ls
a cd
parancs megváltoztatja a könyvtárat az NSE szkriptek helyére, a ls
parancs pedig megjeleníti a könyvtár tartalmát. Ezután bármelyik parancsfájlt megtekintheti a cat
paranccsal, majd a megtekinteni kívánt parancsfájl nevével. A bemutató céljából a ftp-vuln-cve2010-4221.nse
– et fogjuk használni. A parancsfájl tartalmának megtekintéséhez használja a következő parancsot:
cat ftp-vuln-cve2010-4221.nse
9. ábra. NSE szkript tartalma
a 9. ábra mutatja a szkript tartalmát. Ha a szkript tartalmának tetejére lép, több hasznos információt fog látni, amelyek tartalmazzák a szkript leírását, a további források listáját referenciaként, valamint a szkript megfelelő használatát és szintaxisát. Azonban ezeknek a szkripteknek a rendezése a könyvtárban, valamint egy adott funkciót végrehajtó szkript megkeresése nagyon unalmas lehet. Véleményem szerint itt ragyog át a Zenmap (a korábban tárgyalt grafikus felület). Annak bemutatásához, hogy a Zenmap felület mennyire hasznos lehet az NSE szkriptek használatakor, nyissa meg újra a parancssorból a következő paranccsal:
zenmap
majd válassza ki a profil legördülő menüt, majd kattintson az “új profil vagy parancs.”Miután megnyílt a Profilszerkesztő, válassza a szkriptek fület a képernyő tetején. A 10. ábra a Zenmap parancsfájl-kezelőfelület képét jeleníti meg.
10. ábra. Zenmap Scripting Interface
az összes elérhető Nmap script listája a képernyő bal oldalán található. Ezek közül bármelyiket kiválaszthatja, hogy szerepeljen az nmap parancsban. Egyes szkriptek argumentumokat igényelnek a helyes futtatáshoz. A Post authentication szkriptek gyakran igényelnek felhasználónevet és jelszót bizonyos hálózati szolgáltatásokhoz. A 10. ábrán látható példában argumentumok adhatók meg a MySQL szolgáltatás ellen végrehajtandó brute force támadás konfigurálásához. A parancsfájl argumentumait is könnyedén átadhatja az értékek megadásával az argumentumok ablakban. Ezek az argumentumok automatikusan feltöltődnek a generált nmap parancsban. A felső középső ablak a kiválasztott szkript leírását, a megfelelő használatot és szintaxist, sőt a szkript funkcióinak leírására szolgáló kategóriákat is tartalmazza. Ezek a kategóriák különösen hasznosak lehetnek, ha egy adott típusú feladatot próbál végrehajtani, például a sebezhetőség elemzését. Miután elindított egy NSE szkriptet egy nmap paranccsal, látni fogja az eredményeket a szokásos Nmap kimenetben. Brute force szkriptek esetén a kimenet megmutatja, hogy a brute force támadás sikeres volt-e, és ha igen, megjeleníti a felfedezett felhasználónevet és jelszót. Sérülékenységi szkriptek esetén a kimenet jelzi, hogy a biztonsági rés jelen van-e a célrendszer(ek) en. A kizsákmányoló szkriptek esetében a kimenet információt nyújt a hasznos teherről, amelyet később a célrendszerbe szállítottak.
Scripting with Nmap
a saját integrált szkriptmotorja mellett az nmap számos kimeneti opciót is támogat, amelyek megkönnyítik a hagyományos szkriptnyelvek használatát a kimeneti elemzés elvégzéséhez. Két kimeneti formátum, amelyek hasznosak lehetnek a szkriptek számára, a greppable output (-oG
) és az XML output (-oX
). Az XML hatékony lehet olyan magasabb szintű szkriptnyelveknél, amelyek XML elemzéshez importálható modulokkal rendelkeznek, a greppable kimenet pedig a bash shell parancsfájlokkal együtt használható az nmap eredmények elemzésének egyszerűsítésére. Annak bemutatására, hogy ez a kimeneti funkció hogyan használható a szkripteléssel együtt, áttekintünk egy egyszerű 4 soros bash shell szkriptet, amely a 11.ábrán látható az nmap szkennelés eredményeinek elemzéséhez.
11. ábra. Nmap Result Analysis bash Script
Vegyünk egy olyan forgatókönyvet, amelyben az nmap szkennelés már egy nagyon nagy hálózaton történt, és a szkennelés kimenetét greppable formátumban mentették egy networkscan-be.txt fájl. Tegyük fel, hogy a hydra segítségével brute force támadást akarunk végrehajtani a hálózat összes FTP-szolgáltatása ellen, de nem akarjuk pazarolni azt az időt, amelyre a 21-es port újbóli beolvasásához lenne szükség a teljes hálózaton. Ez az egyszerű szkript kibontja az összes olyan rendszert, amelynek meghatározott portja nyitva van. Az első sor egy portszámot kér a felhasználótól. A második sor ezután hozzárendeli a felhasználói bemenet értékét a’ port ‘ változóhoz. A harmadik sor jelzi a felhasználónak, hogy az összes nyitott porttal rendelkező rendszer fel lesz sorolva. Végül, az utolsó parancs az, ahol grep ki az eredményeket az nmap greppable kimenet. A szkript a grep paranccsal kibontja az összes sort a kimeneti fájlból, amely a megadott portra hivatkozik. Ez magában foglalja azokat a sorokat, amelyek felsorolják a port minden egyes példányát, ahol a port nyitva van, zárt vagy szűrt. Ezután egy másik grep függvényre továbbítja a kimenetet, amely csak azokat az eseteket vonja ki, amelyekben a megadott port nyitva van. Ezt a kimenetet ezután a cut függvényhez vezetik, amely egy szóköz karaktert határoz meg határolóként, majd kiadja a második mezőt. Ezzel a szkriptünk kiadja az IP-címet minden olyan rendszerhez, amelynek a megadott portja nyitva van. A 12.ábra a szkript kimenetét mutatja.
12. ábra. Nmap Result Analysis Script Output
bár ez egy nagyon egyszerű szkript, azt mutatja, hogy milyen egyszerű lehet információt kinyerni a greppable kimeneti formátumból. Miután megszerezte, ez az összegyűjtött információ könnyen felhasználható további szkriptek készítéséhez. Ezt fel lehet használni, mint egy kiindulási pont, hogy végre néhány más későbbi feladat ellen minden rendszer, amely azonosította, hogy egy adott port nyitva.
egy All-In-One penetrációs tesztelő eszköz
a különböző képességek kombinálásával egyszerűen elvégezhető egy teljes penetrációs teszt az nmap használatával. Tagadhatatlan, hogy az nmap a funkciók és képességek lenyűgöző listájával egy igazán hatékony eszköz. Az évek előrehaladtával valószínűleg még erőteljesebbé válik, mivel egyre több ember járul hozzá ehhez a projekthez. Mint egy gyerek az apja fegyverével, az nmap veszélyes eszköz lehet rossz kezekben. De ha helyesen használják, felbecsülhetetlen értékű eszköz lehet a hálózati infrastruktúra biztonságának biztosításához. Mindig használd okosan és jól.
A szerzőről
Justin Hutchens jelenleg hálózati sebezhetőségi elemzést, behatolásérzékelést és digitális kriminalisztikát végez egy nagyvállalati hálózat számára, több mint 33 000 hálózati rendszerrel. Számos különböző szerepet töltött be az informatika területén, beleértve a hálózattervezést, a rendszerfejlesztést, az adatbázis-adminisztrációt és a hálózati biztonságot. Jelenleg a Backtrack és a Kali-Linux operációs rendszerek penetrációs tesztelését is oktatja. Jelenleg informatikai alapképzéssel és több szakmai tanúsítvánnyal rendelkezik, többek között a CISSP (Certified Information System Security Professional), a CEH (Certified Ethical Hacker), az ECSA (EC-Council Certified Security Analyst) és a CHFI (Computer Hacking Forensic Investigator).