Журнал LinuxFormat - перейти на главную

LXF161: Аудит сети NMap

Материал из Linuxformat
Версия от 04:41, 6 октября 2018; Olkol (обсуждение | вклад)

(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск


Ау­дит безо­пас­но­сти се­ти. Как по­боль­ше уз­нать об уда­лен­ном ком­пь­ю­те­ре

Содержание

Nmap: Ска­ни­ру­ем Паутину

Вни­ма­ние Иго­ря Штом­пе­ля при­влек­ло кросс­плат­фор­мен­ное при­ло­же­ние, с по­мо­щью ко­то­ро­го вы уз­нае­те мно­гое...

(thumbnail)
Наш эксперт.Игорь Штом­пель каждый день открывает в Linux что-то новое и использует его где только возможно. А Unity ему в этом ничуть не мешает.

Игорь Штом­пель каждый день открывает в Linux что-то новое и использует его где только возможно. А Unity ему в этом ничуть не мешает. Мно­гих поль­зо­ва­те­лей вол­ну­ют во­про­сы се­те­вой безо­пас­но­сти. Одним из ин­ст­ру­мен­тов ее дости­жения яв­ля­ет­ся про­грам­ма Nmap, но­вая вер­сия ко­то­рой вы­шла недав­но. Мы рас­ска­жем, как на­чать с ней ра­бо­тать.

Зна­ком­ст­во с Nmap

Nmap (http://nmap.org/) – это сво­бод­ное (доступ­но на усло­ви­ях ли­цен­зии GNU GPLv2) кросс­плат­фор­мен­ное про­грамм­ное обес­пе­чение, ко­то­рое по­зво­ля­ет осу­ще­ст­в­лять ис­сле­до­вание и ау­дит се­те­вой безо­пас­но­сти. Плат­фор­мы, на ко­то­рых мо­жет ра­бо­тать Nmap – Linux, се­мей­ст­во BSD (Free-, Net-, Open-), Mac OS X, Solaris, Windows и ряд дру­гих. Хо­тя се­го­дня про­грам­ма доступ­на для раз­лич­ных опе­ра­ци­он­ных сис­тем, пер­во­на­чаль­но она соз­да­ва­лась для сис­тем се­мей­ст­ва *NIX.

Ис­то­рия соз­дания Nmap та­ко­ва. Ее ав­тор Гор­дон Лай­он [Gordon Lyon] был недо­во­лен воз­мож­но­стя­ми доступ­ных на тот мо­мент (вто­рая по­ло­ви­на 90-х гг.) се­те­вых сканеров безо­пас­но­сти (SATAN, Strobe от небе­зыз­ве­ст­но­го Джу­лиа­на Ас­сан­жа [Julian Assange] и дру­гих). Он пы­тал­ся мо­ди­фи­ци­ро­вать су­ще­ст­вую­щие про­грам­мы, но ре­зуль­тат его не уст­раи­вал. По­сле это­го Лай­он ре­шил сам на­пи­сать про­грамм­ное обес­пе­чение, ко­то­рое бы об­ла­да­ло все­ми необ­хо­ди­мы­ми ему воз­мож­но­стя­ми.

Что же это за воз­мож­но­сти, ко­то­рые бы­ли необ­хо­ди­мы бу­ду­ще­му раз­ра­бот­чи­ку Nmap? Все до­воль­но про­сто: ему не тре­бо­ва­лось ниче­го необыч­но­го, хо­тя по тем вре­ме­нам, на­вер­но, это и бы­ло необыч­но: под­держ­ка всех ви­дов сканиро­вания, бы­ст­рая ра­бо­та. Имен­но это­го он не мог по­лу­чить от су­ще­ст­вую­щих к мо­мен­ту на­ча­ла раз­ра­бот­ки Nmap се­те­вых сканеров безо­пас­но­сти.

Итак, по­ста­вив ука­зан­ные тре­бо­вания во гла­ву уг­ла, Лай­он раз­ра­ба­ты­ва­ет свою про­грам­му, поль­зу­ет­ся ею и сперва тес­ти­ру­ет ее са­мо­стоя­тель­но, а за­тем пе­ре­да­ет Nmap в элек­трон­ный жур­нал Phrack (где 1 сен­тяб­ря 1997 го­да был опуб­ли­ко­ван ис­ход­ный код: http://www.phrack.org/issues.html?issue=51&id=11#article). С тех пор Nmap про­дол­жа­ет свое раз­ви­тие, успел по­лу­чить ши­ро­кое рас­про­странение в со­от­вет­ст­вую­щей сфе­ре безо­пас­но­сти ин­фор­ма­ци­он­ных тех­но­ло­гий, а для мно­гих стал неза­менимым ин­ст­ру­мен­том ау­ди­та и сканиро­вания Всемирной паутины.

Ус­та­нов­ка Nmap

21 мая 2012 го­да был пред­став­лен но­вый ре­лиз Nmap – шес­тая вер­сия. В ре­по­зи­то­ри­ях Ubuntu 12.04 (имен­но в ней мы бу­дем осу­ще­ст­в­лять всю ра­бо­ту со сканером) доступ­на только старая вер­сия, 5.21, что и по­нят­но: ведь опе­ра­ци­он­ная сис­те­ма бы­ла вы­пу­ще­на в ап­ре­ле. По­это­му уста­но­вим Nmap 6 в Ubuntu 12.04 из ар­хи­ва с ис­ход­ным ко­дом.

За­гру­зить дан­ный ар­хив мож­но со спе­ци­аль­ной страницы офи­ци­аль­но­го сай­та Nmap (http://nmap.org/download.html). Вер­сия Nmap, доступ­ная на мо­мент на­пи­сания ста­тьи – 6.01. Мы за­гру­зи­ли со­от­вет­ст­вую­щий ар­хив: nmap-6.01.tar.bz2. Те­перь про­из­ве­дем уста­нов­ку.

Ско­пи­руй­те ар­хив Nmap 6.01 в ка­та­лог на­зна­чения, где вы бу­де­те осу­ще­ст­в­лять уста­нов­ку. Да­лее из­вле­ки­те фай­лы из ар­хи­ва:

$ bzip2 -cd nmap-6.01.tar.bz2 | tar xvf -

По­сле удач­но­го за­вер­ше­ния вы­пол­не­ния ко­ман­ды вы уви­ди­те но­вый ка­та­лог – nmap-6.01. Пе­рей­дем в не­го:

$ cd nmap-6.01

Да­лее про­из­ве­дем кон­фи­гу­ри­ро­ва­ние стан­дарт­ным ./configure.

В слу­чае ус­пеш­но­го за­вер­ше­ния кон­фи­гу­ри­ро­ва­ния вы уви­ди­те при­мер­но то, что по­ка­за­но на рис. 1.

Ос­та­лось осу­ще­ст­вить сбор­ку про­грам­мы –

$ make

и, ко­неч­но, ее ус­та­но­вить (не за­будь­те по­лу­чить пра­ва су­пер­поль­зо­ва­те­ля):

$ sudo make install

В ито­ге в вы­во­де этой ко­ман­ды вы долж­ны уви­деть сле­дую­щее:

NMAP SUCCESSFULLY INSTALLED

Вот и все – уста­нов­ка за­вер­ши­лась успеш­но, и Nmap го­тов к ис­поль­зо­ванию.

Нов­ше­ст­ва Nmap 6

Ска­жем несколь­ко слов о нов­ше­ст­вах, ко­то­рые вклю­чи­ла шес­тая вер­сия Nmap. Ос­нов­ные боль­шие из­менения за­тро­ну­ли шесть об­лас­тей (http://nmap.org/6/#6changes): под­держ­ку NSE-скрип­тов (спе­ци­аль­ные скрип­ты на ба­зе Nmap Scripting Engine, ко­то­рые по­зво­ля­ют ав­то­ма­ти­зи­ро­вать стан­дарт­ные дей­ст­вия при сканиро­вании); улуч­шение сканиро­вания web-сер­ви­сов; пол­ная под­держ­ка IPv6; но­вая ути­ли­та nping; усо­вер­шен­ст­во­вание Zenmap; уве­ли­чение ско­ро­сти сканиро­вания.

Да­дим под­роб­но­сти. Так, чис­ло NSE-скрип­тов, по сравнению с Nmap 5, уве­ли­че­но с 59 до 348. Под­держ­ка сканиро­вания web-сер­ви­сов по­зво­ля­ет по­лу­чить ин­фор­ма­цию о па­ра­мет­рах web-сер­ве­ра (техники кэ­ши­ро­вания, под­держ­ка HTTP и т. д.). Кро­ме то­го, ко­ли­че­­ст­во NSE-скрип­тов для сканиро­вания web-сер­ви­сов воз­росло с 6 до 54. Реа­ли­за­ция пол­ной под­держ­ки IPv6 по­зво­ля­ет про­из­во­дить сканиро­вание с по­мо­щью raw-па­ке­тов пор­тов сис­тем, ис­поль­зую­щих IPv6. Но­вая ути­ли­та nping ори­ен­ти­ро­ва­на на ана­лиз при­шед­ших па­ке­тов и вре­мени их при­хо­да, а так­же под­дер­жи­ва­ет раз­лич­ные се­те­вые про­то­ко­лы, для ко­то­рых по­зво­ля­ет генери­ро­вать со­от­вет­ст­вую­щие про­из­воль­ные па­ке­ты. Гра­фи­че­­ский ин­тер­фейс Zenmap по­лу­чил но­вую функ­цио­наль­ность – на­при­мер, поя­ви­лись ло­ка­ли­за­ции ин­тер­фей­са (в том чис­ле под­держ­ка русско­го язы­ка) и воз­мож­но­сти по фильт­ра­ции хостов. В но­вом ре­ли­зе Nmap так­же по­вы­си­лась ско­рость сканиро­вания. В ча­ст­но­сти, был пе­ре­пи­сан код сис­те­мы трас­си­ров­ки, с це­лью дости­жения вы­со­кой про­из­во­ди­тель­но­сти ра­бо­ты и реа­ли­за­ции но­вых воз­мож­но­стей рас­па­рал­ле­ли­вания опе­ра­ций для движ­ка NSE и сис­те­мы оп­ре­де­ления вер­сий.

Сканиро­вание с Nmap

Nmap об­ла­да­ет бо­га­тым ар­се­на­лом воз­мож­но­стей по по­лу­чению ин­фор­ма­ции об уда­лен­ном ком­пь­ю­те­ре, локаль­ной се­ти и т. д. Це­лой книги не хва­тит, что­бы опи­сать все ме­то­ды ра­бо­ты с про­грам­мой. Но на­чи­нать с че­го-то на­до, и мы начнем с про­сто­го – раз­бе­рем фор­мат ко­ман­ды nmap, ко­то­рый ис­поль­зу­ет­ся для сканиро­вания:

nmap [Тип(ы) ска­ни­ро­ва­ния] [Оп­ции] [Цель]

Здесь на­звание [Тип(ы) сканиро­вания] го­во­рит са­мо за се­бя, о типах под­робнее да­лее; [Оп­ции] – спе­ци­аль­ные оп­ции, ко­то­рые спе­ци­фи­ци­ру­ют сканиро­вание (не яв­ля­ют­ся обя­за­тель­ны­ми); [Цель] – цель сканиро­вания (на­при­мер, локаль­ная пет­ля 127.0.0.1).

Пре­ж­де чем пе­рей­ти непо­сред­ст­вен­но к изу­чению сканиро­вания с по­мо­щью Nmap, об­ра­тим ва­ше внимание на важ­ный мо­мент. Все оп­ции, на­чи­наю­щие­ся с -s, от­но­сят­ся к осу­ще­ст­в­лению сканиро­вания:

» -sP – пинг-сканиро­вание; » -sV – по­лу­чить ин­фор­ма­цию о вер­сии сер­ви­сов; » -sU – UDP-сканиро­вание; » -sO – сканиро­вание про­то­ко­лов; » -sS/-sT/-sA/-sW/-sM – раз­лич­ные ви­ды TCP SYN-сканиро­вания; » -sN – TCP Null-сканиро­вание; » -sF – FIN-сканиро­вание; » -sX – Xmas-сканиро­вание. Неко­то­рых из при­ве­ден­ных ме­то­дов мы опишем попод­роб­нее.

Для на­ча­ла осу­ще­ст­вим пинг-сканиро­вание, при­ме­няе­мое для оп­ре­де­ления доступ­но­сти це­ли сканиро­вания. В от­ли­чии от ути­ли­ты ping, от­прав­ляю­щей так на­зы­вае­мые «эхо-за­про­сы» на осно­ве про­то­ко­ла ICMP, ко­то­рые неред­ко бло­ки­ру­ют­ся на ис­сле­дуе­мых хостах, Nmap от­прав­ля­ет по умол­чанию ACK-па­ке­ты на порт 80. ACK – это флаг па­ке­та про­то­ко­ла TCP, ко­то­рый при­зван со­об­щать о том, что пре­ды­ду­щий па­кет был по­лу­чен. Итак, про­из­ве­дем сканиро­вание:

$ sudo nmap -sP scanme.nmap.org

Ска­ни­руе­мый узел ока­зал­ся дос­ту­пен.

Кста­ти, про­ска­ни­ро­вать не­сколь­ко ма­шин мож­но, на­при­мер, таким образом:

$ sudo nmap -sP 192.168.0.1, 20-25

В дан­ном слу­чае бу­дут про­ска­ни­ро­ва­ны 7 IP-ад­ре­сов (192.168.0.1 и, со­от­вет­ст­вен­но, в этом же ад­рес­ном диа­па­зо­не с 20 по 25).

Есть и дру­гие спо­со­бы:

$ sudo nmap -sP 192.168.0.*

$ sudo nmap -sP 192.168.0.1/24

Об­ра­ти­те внимание, что для пинг-тес­ти­ро­вания мож­но вос­поль­зо­вать­ся до­полнитель­ны­ми оп­ция­ми (бо­лее пол­ный пе­ре­чень досту­пен в страницах ру­ко­водств):

» -PA [спи­сок пор­тов] – от­прав­ка ACK-па­ке­тов; » -PE – пин­го­вание с ис­поль­зо­ванием эхо-за­про­сов на ба­зе про­то­ко­ла ICMP; » -PN – про­пустить об­на­ру­жение хостов, счи­тать все хосты ра­бо­таю­щи­ми; » -PO [спи­сок про­то­ко­лов] – пин­го­вание с ис­поль­зо­ванием про­то­ко­ла IP; » -PR – ARP-пин­го­вание; » -PS [спи­сок пор­тов] – от­прав­ка SYN-па­ке­тов (SYN – это флаг TCP-па­ке­та, ко­то­рый ин­фор­ми­ру­ет о на­ча­ле TCP-со­единения); » -PU [спи­сок пор­тов] – UDP-пин­го­вание. Про­ве­дем сканиро­вание без ис­поль­зо­вания оп­ций, что по­зво­лит нам по­лу­чить ин­фор­ма­цию о за­пу­щен­ных сер­ви­сах и от­кры­тых пор­тах на це­ли сканиро­вания. В ка­че­­ст­ве це­ли сканиро­вания мы восполь­зу­ем­ся сай­том, ко­то­рый раз­ра­бот­чи­ки Nmap реа­ли­зо­ва­ли и пре­доста­ви­ли спе­ци­аль­но для трениров­ки в ис­поль­зо­вании про­грам­мы – scanme.nmap.org:

$ nmap scanme.nmap.org

Кста­ти, ес­ли во вре­мя сканиро­вания на­жи­мать ка­кую-нибудь кла­ви­шу (за ис­клю­чением функ­цио­наль­ных – F1 и т. д.), то мож­но уви­деть ин­фор­ма­цию о те­ку­щем со­стоянии про­цес­са сканиро­вания (см. рис. 2).

В вы­во­де мы ви­дим, что на це­ли сканиро­вания от­кры­ты пор­ты 22, 25, 80 и 9929, на ко­то­рых за­пу­ще­ны со­от­вет­ст­вую­щие сер­ви­сы (ssh, smtp, http, nping-echo). Кста­ти о сер­ви­се, ра­бо­таю­щем на пор­ту 9929: он пред­на­зна­чен для ис­сле­до­вания ра­бо­ты но­вой ути­ли­ты nping, о ко­то­рой мы упо­ми­на­ли вы­ше.

Еще несколь­ко слов о пре­ды­ду­щем вы­во­де Nmap. Ус­лов­но го­во­ря, в нем мы уви­де­ли три столб­ца:

» PORT – ин­фор­ма­ция о но­ме­ре пор­та и про­то­ко­ле;

» STATE – со­стояние пор­тов (open – от­крыт, т. е. па­ке­ты на этом пор­ту бу­дут при­нимать­ся и об­ра­ба­ты­вать­ся со­от­вет­ст­вую­щим сер­ви­сом; closed – ника­кой сер­вис на пор­ту не ра­бо­та­ет, но порт мо­жет быть от­крыт; filtered – порт за­крыт фильт­ром, на­при­мер, бранд­мау­эром, ко­то­рый, воз­мож­но, его бло­ки­ру­ет, и по­это­му нель­зя точ­но оп­ре­де­лить, за­крыт порт или от­крыт; unfiltered оз­на­ча­ет, что пор­ты об­слу­жи­ва­ют па­ке­ты, ко­то­рые от­прав­ля­ет Nmap, но по­следний не оп­ре­де­лил, от­кры­ты они или за­кры­ты.);

» SERVICE – на­звание сер­ви­са.

Да­вай­те по­пы­та­ем­ся оп­ре­де­лить опе­ра­ци­он­ную сис­те­му. Для это­го в Nmap доступ­на оп­ция -O:

$ nmap -O scanme.nmap.org

Но, вы­полнив эту ко­ман­ду, мы не по­лу­чи­ли же­лан­но­го ре­зуль­та­та – за­пуск Nmap вы­пол­нял­ся без прав су­пер­поль­зо­ва­те­ля, необ­хо­ди­мых при ис­поль­зо­вании ме­то­дов иден­ти­фи­ка­ции опе­ра­ци­он­ной сис­те­мы на осно­ве ре­зуль­та­тов сканиро­вания с ис­поль­зо­ванием про­то­ко­лов TCP/IP (“TCP/IP fingerprinting (for OS scan) requires root privileges”).

По­вто­рим по­пыт­ку:

$ sudo nmap -O scanme.nmap.org

Те­перь сканиро­вание за­вер­ши­лось удач­но.

Nmap по­зво­ля­ет осу­ще­ст­вить сканиро­вание сра­зу несколь­ких це­лей. Для при­ме­ра, мо­ди­фи­ци­ру­ем ко­ман­ду, ко­то­рую мы от­да­ва­ли вы­ше, до­ба­вив в ка­че­­ст­ве до­полнитель­ной це­ли локаль­ную:

$ sudo nmap -O scanme.nmap.org 127.0.0.1

В вы­во­де этой ко­ман­ды мы уви­дим, как по­ка­за­но на рис. 3, услов­но, два от­че­та, по ка­ж­дой це­ли сканиро­вания.

На уда­лен­ных хостах име­ет­ся ряд ню­ан­сов оп­ре­де­ления опе­ра­ци­он­ных сис­тем, и для это­го пре­ду­смот­ре­ны до­полнитель­ные оп­ции. Ска­жем, с оп­ци­ей --osscan-limit –

$ sudo nmap -O --osscan-limit scanme.nmap.org

– Nmap не бу­дет оп­ре­де­лять опе­ра­ци­он­ные сис­те­мы тех це­лей сканиро­вания, ко­то­рые не име­ют как минимум од­но­го от­кры­то­го и од­но­го за­кры­то­го пор­та. По ут­вер­ждению раз­ра­бот­чи­ка про­грам­мы, оп­ре­де­ление опе­ра­ци­он­ной сис­те­мы будет бо­лее эф­фек­тив­но имен­но в та­ком слу­чае. Про­пуск при сканиро­вании не удов­ле­тво­ряю­щих это­му усло­вию це­лей по­зво­ля­ет оп­ти­ми­зи­ро­вать про­цесс сканиро­вания. На­при­мер, при сканиро­вании боль­шо­го ко­ли­че­­ст­ва це­лей та­ким об­ра­зом мож­но со­кра­тить вре­мя сканиро­вания без ущер­ба для его ка­че­­ст­ва.

Nmap мо­жет «уга­ды­вать» ре­зуль­та­ты сканиро­вания, за­дей­ст­во­вав оп­ции --osscan-guess или --fuzzy:

$ sudo nmap -O --osscan-guess scanme.nmap.org

Та­кое сканиро­вание эф­фек­тив­но в си­туа­ци­ях, когда Nmap не мо­жет точ­но оп­ре­де­лить опе­ра­ци­он­ную сис­те­му на це­ли сканиро­вания. В ре­зуль­та­те про­грам­ма вы­во­дит про­цент со­от­вет­ст­вия «уга­дан­ной» опе­ра­ци­он­ной сис­те­мы ре­аль­ной.

В си­туа­ции, когда необ­хо­ди­мо точ­ное со­от­вет­ст­вие, мож­но за­дей­ст­во­вать оп­цию --max-os-tries, ко­то­рая по­зво­ля­ет за­дать мак­си­маль­ное ко­ли­че­­ст­во по­пы­ток оп­ре­де­ления опе­ра­ци­он­ной сис­те­мы на це­ли сканиро­вания:

$ sudo nmap -O --max-os-tries 10 scanme.nmap.org

Де­ло в том, что по умол­чанию Nmap в «бла­го­при­ят­ных» усло­ви­ях для сканиро­вания со­вер­ша­ет две по­пыт­ки, а в «небла­го­при­ят­ных» – пять. При ма­лом ко­ли­че­­ст­ве по­пы­ток Nmap мо­жет про­пускать неко­то­рые ре­зуль­та­ты сканиро­вания, ко­то­рые при по­сле­дую­щих по­пыт­ках по­мог­ли бы в оп­ре­де­лении опе­ра­ци­он­ной сис­те­мы.

Об­щую ин­фор­ма­цию о це­ли сканиро­вания мы нау­чи­лись по­лу­чать в ви­де за­пу­щен­ных сер­ви­сов и от­кры­тых пор­тов. Те­перь ис­сле­ду­ем, ка­кие вер­сии сер­ви­сов за­пу­щен­ных на ин­те­ре­сую­щей на це­ли. Для это­го восполь­зу­ем­ся оп­ция­ми -sV.

Итак, по­лу­чим ин­фор­ма­цию о вер­си­ях сер­ви­сов на це­ли сканиро­вания:

$ sudo nmap -sV scanme.nmap.org

Как вид­но из рис. 4, на це­ли сканиро­вания за­пу­ще­ны сер­ви­сы OpenSSH 5.3p1, Apache 2.2.14 и, по всей ве­ро­ят­но­сти, сто­ит опе­ра­ци­он­ная сис­те­ма Ubuntu. По крайней ме­ре, точ­но из­вест­но, что на це­ли сканиро­вания ра­бо­та­ет опе­ра­ци­он­ная сис­те­ма Linux: см. в вы­во­де Service Info: OS:.

Пе­рей­дем к сле­дую­ще­му ви­ду сканиро­вания. Об­ра­тим внимание чи­та­те­лей на то, что ряд важ­ных сер­ви­сов мо­жет ра­бо­тать по про­то­ко­лу UDP (на­при­мер, DNS, RPC и дру­гие). По­сколь­ку UDP-сканиро­вание scanme.nmap.org у нас про­шло неудач­но (про­грам­ма про­дол­жа­ла ра­бо­тать, а вы­во­да, со­от­вет­ст­вен­но, не бы­ло, при­чем про­дол­жи­тель­ное вре­мя), мы ре­ши­ли про­сканиро­вать локаль­ный ад­рес:

$ sudo nmap -sU 127.0.0.1

Вы­полнение ко­ман­ды за­вер­ши­лось успеш­но, и мы уви­де­ли вы­вод с ин­фор­ма­ци­ей о пор­тах и со­от­вет­ст­вую­щих сер­ви­сах.

Еще один ме­тод по­лу­чил на­звание сканиро­вания про­то­ко­лов. Де­ло в том, что про­то­ко­лы транс­порт­но­го уров­ня сте­ка TCP/IP име­ют но­ме­ра. Так, в по­ле с на­званием protocol па­ке­та IP со­дер­жит­ся ин­фор­ма­ция о за­го­лов­ке па­ке­та и но­ме­ре про­то­ко­ла, со­от­вет­ст­вен­но, транс­порт­но­го уров­ня. Nmap от­прав­ля­ет на цель сканиро­вания па­ке­ты с но­ме­ра­ми про­то­ко­лов, и ес­ли со­от­вет­ст­вую­щие от­ве­ты по­лу­че­ны, то про­то­кол на це­ли сканиро­вания досту­пен. Восполь­зу­ем­ся оп­ци­ей -sO для осу­ще­ст­в­ления дан­но­го ти­па сканиро­вания:

$ sudo nmap -sO 127.0.0.1

В вы­во­де мы уви­дим, что ряд про­то­ко­лов досту­пен: это ICMP (но­мер 1), TCP (6), UDP (17).

Рас­смот­рим неко­то­рые воз­мож­но­сти, ко­то­рые мо­гут рас­ши­рить и де­та­ли­зи­ро­вать про­цесс сканиро­вания тех или иных це­лей. Nmap по­зво­ля­ет спе­ци­фи­ци­ро­вать пор­ты, ко­то­рые необ­хо­ди­мо про­сканиро­вать. Для это­го су­ще­ст­ву­ет оп­ция -p:

$ sudo nmap -p 1-100 scanme.nmap.org

Здесь мы сканиру­ем толь­ко те пор­ты на уда­лен­ном хосте, ко­то­рые нас ин­те­ре­су­ют. Об­ра­ти­те внимание, что на­чаль­ное или конеч­ное зна­чение диа­па­зо­на пор­тов мо­жет быть опу­ще­но (весь диа­па­зон воз­мож­ныых зна­чений – от 1 до 65535). При­ве­дем при­мер без на­чаль­но­го зна­чения:

$ sudo nmap -p -100 scanme.nmap.org

В дан­ном слу­чае бу­дут сканиро­вать­ся пор­ты с 1 по 100. А вот при­мер с про­пу­щен­ным конеч­ным зна­чением диа­па­зо­на пор­тов:

$ sudo nmap -p 1- scanme.nmap.org

Про­сканиро­ва­ны бу­дут пор­ты с 1 по 65535, т. е. пол­ный диа­па­зон пор­тов. Пол­ный диа­па­зон пор­тов мож­но так­же про­сканиро­вать, ука­зав сле­дую­щее:

$ sudo nmap -p- scanme.nmap.org

Диа­па­зон пор­тов мож­но ука­зать так­же с по­мо­щью квад­рат­ных ско­бок:

$ sudo nmap -p [-23] scanme.nmap.org

Бу­дут про­сканиро­ва­ны пор­ты с но­ме­ра­ми от 23 и менее.

А как быть в си­туа­ции, когда необ­хо­ди­мо про­сканиро­вать от­дель­ный порт? По­зво­ля­ет ли это де­лать Nmap? Конеч­но! По­ми­мо ука­зания диа­па­зо­на пор­тов, в Nmap можно спе­ци­фи­ци­ро­вать от­дель­ные пор­ты. На­при­мер, порт 80:

$ sudo nmap -p 80 scanme.nmap.org

При сканиро­вании TCP/UDP-пор­тов Nmap по­зво­ля­ет спе­ци­фи­ци­ро­вать про­то­кол. Для TCP необ­хо­ди­мо ука­зы­вать пе­ред но­ме­ром пор­та T:, а для UDP – U:. При­ве­дем при­мер:

$ sudo nmap -p T:21,80,U:137 scanme.nmap.org

Мы спе­ци­фи­ци­ро­ва­ли как TCP пор­ты 21 и 80, а 137 – как UDP. До­пус­ти­мо ука­зы­вать и диа­па­зон пор­тов:

$ sudo nmap -p T:21-23,U:137

В этом слу­чае пор­ты с 21 по 23 будут ­сканироваться в качестве TCP-пор­тов.

И еще, об­ра­ти­те внимание на то, что ес­ли не ука­зан оп­ре­де­ли­тель про­то­ко­ла (T: или U:), то порт бу­дет сканиро­вать­ся для всех про­то­ко­лов.

Вме­сто чи­сло­вых зна­чений пор­ты мо­гут быть спе­ци­фи­ци­ро­ва­ны и по име­нам, ко­то­ры­ми они обо­зна­че­ны в фай­ле nmap-services. Это файл на­хо­дит­ся в ка­та­ло­ге /usr/share/nmap. Про­смот­реть его со­дер­жи­мое вы мо­же­те, на­при­мер, так:

$ less /usr/share/nmap/nmap-services

Рас­смот­рим при­ме­ры сканиро­вания с ука­занием имен пор­тов вме­сто ука­зания их но­ме­ров. Восполь­зу­ем­ся дву­мя по­следними при­ве­ден­ны­ми вы­ше при­ме­ра­ми. Для пер­во­го у нас по­лу­чит­ся сле­дую­щее:

$ sudo nmap -p T:ftp,http,U:netbios-ns

а для вто­ро­го –

$ sudo nmap -p T:ftp,ssh,telnet,U:netbios-ns

Как ви­дим, к со­жа­лению, во вто­ром слу­чае, как и во­об­ще при ис­поль­зо­вании имен вме­сто но­ме­ров пор­тов, ука­зы­вать диа­па­зон пор­тов не по­лу­ча­ет­ся.

Кро­ме то­го, вы мо­же­те ис­поль­зо­вать сим­во­лы ? и * при спе­ци­фи­ци­ро­вании имен про­то­ко­лов. Тра­ди­ци­он­но, сим­вол ? оз­на­ча­ет один про­пу­щен­ный сим­вол, а * – мно­же­ст­во. При­ве­дем при­мер:

$ sudo nmap -p T:htt? scanme.nmap.org

В вы­во­де мы уви­дим пор­ты, пол­ное имя ко­то­рых – http. Для на­ше­го слу­чая со scanme.nmap.org это пор­ты 80 и 8080.

Рас­смот­рим дру­гой при­мер:

$ sudo nmap -p T:htt* scanme.nmap.org

В этом слу­чае вы­вод бу­дет го­раз­до бо­лее об­шир­ным. В нем мы уви­дим сле­дую­щие пор­ты: 80 – http, 280 – http-mgmt, 443 – https, 591 – http-alt, 593 – http-rpc-epmap, 8000 – http-alt, 8008 – http, 8080 – http-proxy, 8443 – https-alt. Итак, как ви­дим, Nmap вы­вел пор­ты, име­на ко­то­рых на­чи­на­ют­ся с htt.

На этом мы за­вер­шим рас­смот­рение ра­бо­ты с Nmap. Во вто­рой час­ти уро­ка мы по­го­во­рим о ра­бо­те с гра­фи­че­­ски­­ми обо­лоч­ка­ми для Nmap (на­при­мер, Zenmap, Umit), ути­ли­те hping3.

За­клю­чение

Nmap – мощ­ное сред­ст­во ис­сле­до­вания Се­ти, доступ­ное для раз­лич­ных плат­форм, а что ка­са­ет­ся Linux, то во мно­гих ди­ст­ри­бу­ти­вах из ре­по­зи­то­ри­ев. Прав­да, с но­вой вер­си­ей Nmap ре­по­зи­то­рии иногда от­ста­ют. Од­на­ко уста­нов­ка про­грам­мы не со­став­ля­ет про­блем и осу­ще­ст­в­ля­ет­ся доста­точ­но тра­ди­ци­он­но.

В це­лом, Nmap пре­достав­ля­ет бо­га­тые воз­мож­но­сти по сканиро­ванию Се­ти, а са­мо сканиро­вание осу­ще­ст­в­ля­ет­ся бы­ст­ро. При­ме­няя те или иные оп­ции, мож­но оп­ти­ми­зи­ро­вать про­цесс сканиро­вания – в ча­ст­но­сти, со­кра­тить его вре­мя и по­лу­чить толь­ко ин­те­ре­сую­щую ин­фор­ма­цию.

На­стоя­тель­но ре­ко­мен­ду­ем ис­поль­зо­вать Nmap ис­клю­чи­тель­но в ис­сле­до­ва­тель­ских или ра­бо­чих це­лях, со­гла­со­вав ис­поль­зо­вание про­грам­мы со все­ми за­ин­те­ре­со­ван­ны­ми ли­ца­ми, а так­же ис­клю­чи­тель­но в рам­ках дей­ст­вую­ще­го за­ко­но­да­тель­ст­ва. Сле­дует учитывать и то, что, на­при­мер, мно­гие про­вай­де­ры в до­го­во­рах со свои­ми абонен­та­ми за­пре­ща­ют про­из­во­дить сканиро­вание Се­ти. |

Персональные инструменты
купить
подписаться
Яндекс.Метрика