Очень часто бывает нужно просканировать неких сайт на наличие уязвимых демонов. Лучшей программой лично я по праву считаю Nmap. И в этой статье я расскажу про принципы с работы с ней. В этой статье я не расскажу про все способности нмапа, а только про сканирование портов. Обычное сканирование можно производить указав IP адрес(ип сайта можно узнать на domaintools.com) в аргументы для Nmap, например nmap 115.898.0.125. Результат будет примерно таким: user@desktop ~ $ nmap 115.898.0.125 Starting nmap 3.75 ( http://www.insecure.org/nmap/ ) at 2006-12-11 23:21 MSK Interesting ports on gate.localnet (115.898.0.125): (The 1658 ports scanned but not shown below are in state: closed) PORT STATE SERVICE 21/tcp open ftp 22/tcp open ssh 80/tcp open http 443/tcp open https Nmap run completed -- 1 IP address (1 host up) scanned in 0.555 seconds При этом программа просто пытается соединится с портами, что может быть легко обнаружено. Менее заметным является SYN-сканирование, когда вместо настоящего соединения посылается только SYN-пакет. nmap -sS 115.898.0.125 desktop ~ # nmap -sS 115.898.0.125 Starting nmap 3.75 ( http://www.insecure.org/nmap/ ) 2006-12-11 23:21 MSK Interesting ports on gate.localnet (115.898.0.125 ): (The 1658 ports scanned but not shown below are in state: closed) PORT STATE SERVICE 21/tcp open ftp 22/tcp open ssh 80/tcp open http 443/tcp open https MAC Address: 00:11:2F:F4:4B:55 (Asustek Computer) Nmap run completed -- 1 IP address (1 host up) scanned in 0.405 seconds Однако, самую полную информацию о сканируемом хосте можно узнать, использую запрос nmap -sS -v -v -O 115.898.0.125 desktop ~ # nmap -sS -v -v -O 115.898.0.125 Starting nmap 3.75 ( http://www.insecure.org/nmap/ ) at 2006-12-11 23:31 MSK Initiating SYN Stealth Scan against gate.localnet (115.898.0.125 ) [1663 ports] at 23:31 Discovered open port 80/tcp on 115.898.0.125 Discovered open port 21/tcp on 115.898.0.125 Discovered open port 443/tcp on 115.898.0.125 Discovered open port 22/tcp on 115.898.0.125 Discovered open port 873/tcp on 115.898.0.125 The SYN Stealth Scan took 0.08s to scan 1663 total ports. For OSScan assuming port 21 is open, 1 is closed, and neither are firewalled Host gate.localnet (115.898.0.125) appears to be up ... good. Interesting ports on gate.localnet (115.898.0.125): (The 1658 ports scanned but not shown below are in state: closed) PORT STATE SERVICE 21/tcp open ftp 22/tcp open ssh 80/tcp open http 443/tcp open https MAC Address: 00:11:2F:F4:4B:55 (Asustek Computer) Device type: general purpose Running: Linux 2.4.X|2.5.X|2.6.X OS details: Linux 2.4.18 - 2.6.7 OS Fingerprint: TSeq(Class=RI%gcd=1%SI=2E7845%IPID=Z%TS=1000HZ) T1(Resp=Y%DF=Y%W=16A0%ACK=S++%Flags=AS%Ops=MNNTNW) T2(Resp=N) T3(Resp=Y%DF=Y%W=16A0%ACK=S++%Flags=AS%Ops=MNNTNW) T4(Resp=Y%DF=Y%W=0%ACK=O%Flags=R%Ops=) T5(Resp=Y%DF=Y%W=0%ACK=S++%Flags=AR%Ops=) T6(Resp=Y%DF=Y%W=0%ACK=O%Flags=R%Ops=) T7(Resp=Y%DF=Y%W=0%ACK=S++%Flags=AR%Ops=) PU(Resp=Y%DF=N%TOS=C0%IPLEN=164%RIPTL=148%RID=E%RIPCK=E%UCK=E%ULEN=134%DAT=E) Uptime 24.662 days (since Fri Jan 13 07:38:30 2006) TCP Sequence Prediction: Class=random positive increments Difficulty=3045445 (Good luck!) TCP ISN Seq. Numbers: FC47E005 FC966A63 FC61563D FBC11ADD FC5E53A5 FBBE2AA2 IPID Sequence Generation: All zeros Nmap run completed -- 1 IP address (1 host up) scanned in 2.340 seconds На основании анализа поведения системы программа делает предположение о типе операционной системы, запущенной на хосте.
Code: Сканирование с Nmap. =================== Введение -------- Иногда, перед хакером встает такая проблема: Он получил задание сломать какой-то сервак за вполне реальные деньги, он долго искал уязвимость на web,пробовал php и sql-иньекции, изучал скрипты которые стоят на сайте, но все безрезультатно :( казалось бы ВСЕ ,надежды не осталось, хакер не сломает заказанный сайт и не получит бабки ,но тут на помощь взломщику приходит сетевой сканнер NMAP .... Многие говорят "Nmap это офигенная тулза, я юзаю только ее", а на самом деле никто из этих выскочек не умеет пользоваться, этим по истине офигенным сканнером. Что бы ты смог понять, как это сделать, в этой статье я подробно расскажу весь процесс установки и последующего сканирования сканером.Итак, поехали! Установка ------------- Для начала нашей задумки тебе придется обзавестись хорошим и быстро-канальным шеллом, это будет нашей с тобой площадкой, где мы выгрузим наш сканнер, настроим и запустим.Ниже я привел несколько ресурсов, где ты сможешь найти себе шелл: grex.cyberspace.org m-net.arbornet.org www.freeshell.org www.nyx.net После того как ты получил shell-аккаунт, приступаем к работе. Заходим на шелл,идем в папку tmp (туда обычно разрешена запись), командой: cd /tmp. Следующий шаг заливка самого nmap'a к себе на шелл. Сам сканнер лежит здесь – http://freshmeat.net/redir/nmap/7202/url_tgz/nmap-4.11.tgz. Проверь, какая качалка стоит у тебя на шелле(wget,curl,lynx/links,fetch) и после этого заливай.Например #wget http://freshmeat.net/redir/nmap/7202/url_tgz/nmap-4.11.tgz Как видишь, сканнер находится в архиве(.tgz), поэтому после заливки тебе нужно его разархивировать, командой: #tar xvzf nmap-4.11.tgz. Выполнил? Красавец, дальше нужно его собрать командой : #./configure, Если сборка сканнера прошла без проблем(а я думаю что это так),будем запускать его командой make, ждем .. и последняя команда make install.ВСЕ!Сканнер готов к работе...Теперь перейди в папку куда ты залил свой сканнер, если ты следовал моим указаниям, то сканнер находится в папке tmp ( cd /tmp/nmap-4.11 ) .Можешь выполнить вот эту команду #nmap --help и узнать синтаксис сканера. Вообщем с установкой все. Теперь разберемся в опциях nmap. Опции ------ У nmap большое количество различных опций, большинство которых могут комбинироваться друг с другом, что и делает этот сканнер многофункциональным и одним из лучших сканнеров.Приведу наиболее нужные и полезные для сканирования: ======================================= -sT (scan TCP) - использовать метод TCP connect(). Наиболее общий метод сканирования TCP-портов. Функция connect(), присутствующая в любой ОС, позволяет создать соединение с любым портом удаленной машины. Для того, чтобы использовать данный метод, пользователь может не иметь никаких привилегий на сканирующем хосте. ========================================================================================================================= -sS (scan SYN) - Сканирование скрытно от фаера. Этот метод часто называют "полуоткрытым" сканированием, поскольку при этом полное TCP-соединение с портом сканируемой машины не устанавливается. ========================================================================================================================= -sP (scan Ping) - ping-"сканирование".(Думаю тут объяснения не нужны.) ======================================================================================================================= -sV (scan Version) - включение режима определения версий служб, за которыми закреплены сканируемые порты. После окончания сканирования будет получен список открытых TCP и/или UDP-портов. Без этой опции в списке напротив каждого порта будет указана служба, которая обычно использует данный порт. При включенной опции будет запущена подсистема определения версий служб, которая проведет последовательное тестирование этих портов с целью определения типов и версий служб, за которыми закреплены обнаруженные порты. ======================================================================================================================= -sI <zombie_хост[:порт]> (scan Idle) - позволяет произсести абсолютно невидимое сканирование портов. Атакующий может просканировать цель, не посылая при этом пакетов от своего IP-адреса. Вместо этого используется метод IdleScan, позволяющий просканировать жертву через так называемый хост-"зомби". Кроме абсолютной невидимости, этот тип сканирования позволяет определить политику доверия между машинами на уровне протокола IP. Листинг результатов показывает открытые порты со стороны хоста-"зомби". Таким образом, можно просканировать цель с использованием нескольких "зомби", которым цель может "доверять", в обход файрволлов и пакетных фильтров. Такого рода информация может быть самой важной при выборе целей "первого удара". Мы подготовили статью с описанием этого метода, Вы можете ознакимиться с ней здесь. Вы можете указать конкретный порт для проверки изменения IPID на хосте-"зомби". В противном случае Nmap будет использовать номер порта по умолчанию для "tcp ping". ========================================================================================================================= -sR (scan RPC) - использовать RPC-сканирование. Этот метод используется совместно с другими методами сканирования и позволяет определить программу, которая обслуживает RPC-порт, и номер ее версии. Для этого все открытые TCP/UDP-порты хоста затопляются NULL-командами оболочки SunRPC, после чего определяются RPC-порты и закрепленные за ними программы. Таким образом, вы легко получаете информацию, которую могли бы получить с помощью команды 'rpcinfo -p', даже если portmapper сканируемого хоста закрыт файрволлом или TCP-wrapper'ом. ==================================================================================================================== -sW (scan Window) - использовать метод TCP Window. Этот метод похож на ACK-сканирование, за исключением того, что иногда с его помощью можно определять открытые порты точно так же, как и фильтруемые/нефильтруемые. Это можно сделать, проверив значение поля Initial Window TCP-пакета, возвращаемого хостом в ответ на посланный ему запрос, ввиду наличия определенных особенностей обработки данного поля у некоторых ОС. Список уязвимых операционных систем включает в себя по крайней мере несколько версий AIX, Amiga, BeOS, BSDI, Cray, Tru64 UNIX, DG/UX, OpenVMS, Digital UNIX, FreeBSD, HP-UX, OS/2, IRIX, MacOS, NetBSD, OpenBSD, OpenStep, QNX, Rhapsody, SunOS 4.X, Ultrix, VAX и VxWorks. Для более подробной информации смотрите архив nmap-hackers. ======================================================================================================================== -p <диапазон(ы)_портов> (ports) - эта опция указывает Nmap, какие порты необходимо просканировать. Например, '-p23' означает сканирование 23 порта на целевой машины. Если указано выражение типа '-p 20-30,139,', Nmap будет сканить порты с номерами с 20 по 30 включительно, 139 . ========================================================================================================================= -o(Operating system detection) - эта опция позволяет определить операциоку сканируемого хоста с помощью метода отпечатков стека TCP/IP. ========================================================================================================================= -PP - использует пакет ICMP "timestamp request (code 13)" для определения активных хостов. ========================================================================================================================= -b <ftp_relay хост> (bounche scan) - использовать атаку "Прорыв через FTP". Интересной "возможностью" протокола FTP (RFC 959) является поддержка "доверенных" (proxy) ftp-соединений. Другими словами, с доверенного хоста source.com можно соединиться с ftp-сервером target.com и отправить файл, находящийся на нем, на любой адрес Internet! Заметим, что данная возможность известна с 1985 года (когда был написан этот RFC). Nmap использует эту "дыру" для сканирования портов с "доверенного" ftp-сервера. Итак, вы можете подключиться к ftp-серверу "над" файрволлом и затем просканировать заблокированные им порты (например 139-й). Если ftp-сервер позволяет читать и записывать данные в какой-либо каталог (например /incoming), вы также можете отправить любые данные на эти порты. Аргумент, указываемый после '-b', представляет собой URL сервера ftp, используемого в качестве "доверенного". Формат URL следующий: имя_пользователя:пароль@сервер:порт. Адрес сервера нужно указать обязательно, остальное можно не указывать. ============================================================================================================================ -I (Ident scan) - использовать reverse-ident сканирование. Протокол Ident (RFC 1413) позволяет вскрыть имя пользователя (username) процесса, использующего TCP, даже если этот процесс не инициализировал соединение. Так, например, вы можете подключиться к порту http и затем использовать identd для поиска на сервере пользователя root. Это может быть сделано только при установлении "полного" TCP-соединения с портом сканируемой машины (т.е. необходимо использовать опцию '-sT'). Nmap опрашивает identd сканируемого хоста параллельно с каждым открытым портом. Естественно, этот метод не будет работать, если на целевом хосте не запущен identd. ======================================================================================================================= -oN <имя_файла> (output Normal) - записывает результаты сканирования в указанный файл в удобной для пользователя форме. ======================================================================================================================= --resume <имя_файла> - если вы прервали сканирование сети нажатием комбинации <Ctrl C>, то вы можете продолжить его, используя эту опцию, если результаты сканирования записывались в лог-файл с помощью опций '-oG' или '-oN'. В этом случае запустите Nmap с указанием этой опции и имени файла, в который производилась запись предыдущего сеанса. При этом никаких других опций указывать не нужно, поскольку при возобновлении сканирования будут использоваться опции, указанные в предыдущем сеансе. Nmap продолжит сканирование с адреса, следующего за последним "завершенным". ======================================================================================================================== -v (verbose output) - использовать режим "подробного отчета". Эту опцию рекомендуется использовать в любых случаях, поскольку при этом Nmap подробно сообщает о ходе выполнения текущей операции. Для получения лучшего эффекта можно указать ее дважды. Ну а если вы укажете еще опцию '-d', то от скроллинга экрана у вас может закружиться голова. ========================================================================================================================= Как я уже сказал ,опций у этого сканнера много, но я расписал самые распрстроненные на мой взгляд. Сканинг -------- Допустим у нас есть сайт, который мы хотим просканировать(если у тебя нет такого, то беги в google и вводи в поисковике следующее: .pl -покажет огромный список польских сайтов, .jp -то же самое только японские, .de -немцы и тд. ), пусть это будут немцы ;)Итак теперь у меня есть сайт - www.target.de. Можно выполнить команду - nmap www.target.de и запустить сканнер, но особо нужных нам результатов мы не получим т.к. сканнер выдаст нам только список открытых и закрытых портов, это конечно нужная информация о сервере, но я предлагаю пойти немного другим путем. Для начала пропингуем сервер и узнаем его ip.Выполняем: #ping www.target.de Мы узнали ip сервера, пусть будет xx.xx.xx.76,значит диапазон, по которому сканим будет xx.xx.xx.1 - xx.xx.xx.254. Итак, сканнер мы установили, опции узнали , ip пропинговали, что теперь нам мешает начать сканить? Да ни чего! Даем такую команду: #nmap -p 110 -sV xx.xx.xx.* Отсюда следует то, что мы говорим сканнеру, что сканируем все диапазоны ip, по 110 порту(-p 110) с определением версий служб (-sV), за которыми закреплен сканируемый порт. Попробуем еще кое-что: #nmap -o -p 22,23,110,80 xx.xx.xx.1/35 Тут мы даем сканнеру команду, что бы он сканил диапазон айпишников с xx.xx.xx.1 по xx.xx.xx.35, с определением операционки (-o),по 22,23,110,80 портам. Можно выполнить следующую команду, на мой взгляд полезную: #nmap -sV -o -SS xx.xx.xx.* Как видишь, мы добавили новую опцию (если ты читал раздел опции, то она для тебя неновая) -sS ,которая означает что мы сканим скрыто от фаервола, с определением операционки и версий служб. Заключение ----------- Вобщем, комбинировать можно как угодно, главное грамотно суметь оценить результат, так что пробуй добавлять новые опции, экспериментируй, и в дальнейшем ты сможешь юзать это сканнер без всяких манов или доков и будешь знать все опции наизусть... ============================================================================================================================= l1s, Ru24 Security team. мдас...
PHP: Starting Nmap 4.11 ( http://www.insecure.org/nmap ) at 2007-03-28 юх тЁхь* (ыхЄю) pcap_open_live(ppp0, 104, 0, 20) FAILED. Reported error: Error op ╤шёЄхьх эх єфрхЄё* эрщЄш єърчрээюх єёЄЁющёЄтю. (20). Will wait 5 etry. pcap_open_live(ppp0, 104, 0, 20) FAILED. Reported error: Error op ╤шёЄхьх эх єфрхЄё* эрщЄш єърчрээюх єёЄЁющёЄтю. (20). Will wait 2 retry. Call to pcap_open_live(ppp0, 104, 0, 20) failed three times. Repo or opening adapter: ╤шёЄхьх эх єфрхЄё* эрщЄш єърчрээюх єёЄЁющёЄтю There are several possible reasons for this, depending on your op LINUX: If you are getting Socket type not supported, try modprobe ecompile your kernel with SOCK_PACKET enabled. *BSD: If you are getting device not configured, you need to reco el with Berkeley Packet Filter support. If you are getting No su ctory, try creating the device (eg cd /dev; MAKEDEV <device>; or SOLARIS: If you are trying to scan localhost and getting '/dev/l e or directory', complain to Sun. I don't think Solaris can supp calhost scans. You can probably use "-P0 -sT localhost" though. бесит эта фишка nmap 4.11