- PVSM.RU - https://www.pvsm.ru -
Всем привет!
Предлагаю вам перевод второй части книги "Metasploit Penetration Testing Cookbook [1]". Перевод первой части можно прочитать тут [2].
В этой главе мы рассмотрим:
Сбор информации является основным шагом на пути тестирования на проникновение. Этот шаг осуществляется с целью собрать, как можно больше информации о целевой системе. Чем больше мы знаем о цели, тем больше у нас шансов взломать ее. Во время сбора информации главной целью является сбор данных о целевой системе: ip-адрес, предоставляемые услуги, открытые порты и т.п… Есть три основных способа сбора информации:
В этой главе мы будем анализировать различные пассивные и активные приемы сбора информации.
Whois, dig и nslookup — эти программы представляют из себя три самых основных и простых шага для получения первичной информации о цели.
Начнем с whois. Давайте быстро проанализируем www.packtpub.com. Вывод может быть большой, но мы будем акцентировать внимание только на самом главном:
root@bt:~# whois www.packtpub.com
Domain Name: PACKTPUB.COM
Registrar: EASYDNS TECHNOLOGIES, INC.
Whois Server: whois.easydns.com
Referral URL: http://www.easydns.com
Name Server: NS1.EASYDNS.COM
Name Server: NS2.EASYDNS.COM
Name Server: NS3.EASYDNS.ORG
Name Server: NS6.EASYDNS.NET
Name Server: REMOTE1.EASYDNS.COM
Name Server: REMOTE2.EASYDNS.COM
Status: clientTransferProhibited
Status: clientUpdateProhibited
Updated Date: 09-feb-2011
Creation Date: 09-may-2003
Expiration Date: 09-may-2016
Простой поиск по whois дал нам некоторые сведения о целевой системе. Информация включает в себя DNS-сервера, дату создания, дату истечения срока и т.п. Поскольку информация была получена не от целевой системы, а из сторонних источников, следовательно эта техника называется «пассивным сбором информации».
Другой способ «пассивно» получить информацию — обращение к DNS-записям. Наиболее распространенным приемом является использование команды dig, которая поставляется по умолчанию в UNIX. Посмотрим, как dig справится со своей задачей:
root@bt:~# dig www.packtpub.com
; <<>> DiG 9.7.0-P1 <<>> www.packtpub.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 1583
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 6, ADDITIONAL: 1
;; QUESTION SECTION:
;www.packtpub.com. IN A
;; ANSWER SECTION:
www.packtpub.com. 1200 IN CNAME packtpub.com.
packtpub.com. 1200 IN A 83.166.169.228
;; AUTHORITY SECTION:
packtpub.com. 1200 IN NS remote1.easydns.com.
packtpub.com. 1200 IN NS ns2.easydns.com.
packtpub.com. 1200 IN NS ns6.easydns.net.
packtpub.com. 1200 IN NS ns3.easydns.org.
packtpub.com. 1200 IN NS ns1.easydns.com.
packtpub.com. 1200 IN NS remote2.easydns.com.
;; ADDITIONAL SECTION:
ns3.easydns.org. 5951 IN A 64.68.192.10
Запрос к DNS-записям выявил более подробную информацию. Из вывода трудно определить первичный DNS, или в некоторых случаях основной почтовый сервер или
root@bt:~# nslookup www.packtpub.com
Server: 220.226.6.104
Address: 220.226.6.104#53
Non-authoritative answer:
www.packtpub.com canonical name = packtpub.com.
Name: packtpub.com
Address: 83.166.169.228
Nslookup выдала более подробную информацию о цели, такую как IP-адрес, IP сервера и т.п. Пассивные техники могут выявить некоторые интересные сведения о цели, которые облегчат тестирование на проникновение.
Dig можно использовать для поиска SPF [4] (Sender Policy Framework) записей. SPF-записи, это такие записи, которые определяют политику отправки почты в домене, то есть серверы, которые отвечают за отправку почты от его (домена) имени. SPF-записи публикуются в текстовом формате. Они несут ответственность за то, чтобы зарегистрированные пользователи домена, не были атакованы фишинговыми письмами.
Давайте узнаем еще больше о пассивном сборе информации.
Использование сторонних веб-сайтов
Мы использовали встроенные команды для поиска информации о цели. Однако, существуют сайты, выполняющие аналогичные операции. Они специально предназначены для этих целей:
Описанные выше приемы знает каждый специалист по безопасности, но есть некоторые методы, которыми специалисты пренебрегают, из-за их непопулярности. Они также могут дать нам хорошие результаты, как и предыдущие приемы. Методы, которые будут обсуждаться дальше включают в себя более глубокий анализ цели. Эти методы не требуют использование Metasploit, но так как сбор информации важное звено в пен-тестировании, мы также обсудим и это.
Рассмотрим три техники:
Zone Transfer специальный метод используемый DNS-сервером для обмена записями (authoritative records) домена между несколькими серверами. Метод отвечает за передачу массовых списков доменной информации между первичными и вторичными серверами. Неправильно настроенный DNS-сервер может отвечать на запросы клиента и передавать информацию о запросах домена.
Рассмотрим следующий пример в котором запрос dig ns1 [6].example.com example.com axfr возвратит список IP-адресов с именами хостов соответственно:
Этот запрос показал нам десять имен хостов, из которых восемь являются уникальными для example.com. Можем видеть, что имена хостов достаточно хорошо описаны, чтобы дать представление о запущенных сервисах.
Анализ SMTP заголовка может стать для нас еще одним источником информации. Он может дать нам информацию о mail-сервере, его IP-адресе, версии и т.п. Единственный недостаток этого метода заключается в том, что нам нужно знать e-mail цели. Следующий скриншот показывает часть заголовка отправленного письма от цели:
Тщательный анализ заголовка показывает IP-адрес mail-сервера - 83.166.169.248. Также видно, что mail-сервер использует ESMTP [7], а клиент использует IMAP сервис. Это дополнительная информация поможет нам в дальнейшем.
Последний метод - Google dorks. Этот метод может работать лишь в некоторых случаях, но его обязательно нужно использовать, так как никогда не знаешь, какая секретная информация найдется. Google сканеры находят/индексируют файлы, документы предназначенные для внутреннего пользования.
Например, выполните следующие поисковые запросы в Google:
Кроме того, мы можем использовать другие запросы для поиска результатов в Google.
Шутки с dorks
johnny.ihackstuff.com [10] является наиболее полным руководством по Google dorks. Там вы можете найти наиболее полный список dorks, которые могут выявить множество скрытой информации о вашей цели.
Сканирование портов является активным методом сбора информации. Также включает в себя более глубокий поиск информации о цели. Nmap является одним из самых мощных и априорных инструментов у специалистов по безопасности.
Запустить nmap из Metasploit очень легко. Для этого откройте msfconsole и введите nmap, чтобы получить список опций поддерживающихся в nmap:
msf > nmap
Здесь мы сфокусируемся на четырех типах сканирования, таких как TCP connect scan, SYN stealth scan, UDP scan и ACK scan. Различные типы сканирования могут быть объединены в один.
TCP connect [-sT] — наиболее простой и общий тип сканирования в nmap.
msf > nmap -sT -p1-10000 192.168.56.102
[*] exec: nmap -sT -p1-10000 192.168.56.102</pre>
<pre>Starting Nmap 5.51SVN ( http://nmap.org ) at 2011-10-19 00:03 IST
Nmap scan report for 192.168.56.102
Host is up (0.0058s latency).
Not shown: 9997 closed ports
PORT STATE SERVICE
135/tcp open msrpc
139/tcp open netbios-ssn
445/tcp open microsoft-ds
MAC Address: 08:00:27:34:A8:87 (Cadmus Computer Systems)
Как видим, мы передали -sT параметр, который выполняет TCP connect сканирование. Параметр -p задает диапазон портов, которые мы хотим просканировать.
SYN scan [-sS] — считается тихим/невидимым типом сканирования, так как он не устанавливает полное подключение/связь между целью и сканером. Таким образом его еще называют «полуоткрытым» сканированием.
msf > nmap -sS 192.168.56.102
[*] exec: nmap -sS 192.168.56.102
Starting Nmap 5.51SVN ( http://nmap.org ) at 2011-10-19 00:17 IST
Nmap scan report for 192.168.56.102
Host is up (0.0019s latency).
Not shown: 997 closed ports
PORT STATE SERVICE
135/tcp open msrpc
139/tcp open netbios-ssn
445/tcp open microsoft-ds
MAC Address: 08:00:27:34:A8:87 (Cadmus Computer Systems)
Параметр -sS указывает nmap использовать SYN scan. Оба вывода TCP connect и SYN scan схожи в большинстве случаев. Разница состоит в том, что SYN scan трудно обнаружить межсетевым экранам и Intrusion Detection Systems [11] (IDS). Однако, современным фаерволам не представляет труда его обнаружить.
UDP scan [-sU] — техника сканирования, которая позволяет обнаружить открытые UDP порты у цели. 0-byte UDP-пакеты отправляются на целевую машину и если в ответ отправляются ICMP сообщения о недоступности порта, значит порт закрыт. В противном случае — порт открыт. UDP scan может быть использован след. образом:
msf >nmap -sU -p9001 192.168.56.102
Эта команда будет проверять открыт ли порт 9001 на 192.168.56.102 или нет. Кроме того, мы можем выполнить UDP scan на весь диапазон портов, изменив оператор -р.
ACK scan [-sA] — специальный тип сканирования, который показывает, какие порты фильтруются фаерволом, а какие нет. ACK scan отправляет TCP ACK фреймы на удаленный порт. Если ответа не последовало, значит порт сканируется фаерволом. Однако, если цель возвратила RST пакет (connection reset — сброс соединения), то порт не фильтруется:
msf > nmap -sA 192.168.56.102
[*] exec: nmap -sA 192.168.56.102</pre>
<pre>Starting Nmap 5.51SVN ( http://nmap.org ) at 2011-10-19 00:19 IST
Nmap scan report for 192.168.56.102
Host is up (0.0011s latency).
Not shown: 999 filtered ports
PORT STATE SERVICE
9001/tcp unfiltered tor-orport
MAC Address: 08:00:27:34:A8:87 (Cadmus Computer Systems)
Вывод показывает, что все порты на целевой системе фильтруются, кроме 9001 порта.
Как правило, пен-тестеры тратят не достаточно много времени на сканирование, но хорошая проверка может дать достаточно много хороших результатов. Так как информация собранная здесь, ляжет в основу тестирования на проникновение, следовательно нам нужно хорошо знать типы сканирования.
Узнать больше о типах сканирования можно из русского перевода руководства Nmap: "Различные приемы сканирования портов [12]".
Есть некоторые дополнительные возможности, предоставляемые Nmap, кроме сканирования портов. Они могут помочь нам получить больше информации о цели. Одним из наиболее широко используемых параметров является определение операционной системы (operating system identification) [-O]:
msf > nmap -O 192.168.56.102
[*] exec: nmap -O 192.168.56.102</pre>
<pre>Starting Nmap 5.51SVN ( http://nmap.org ) at 2011-10-19 02:25 IST
Nmap scan report for 192.168.56.102
Host is up (0.0014s latency).
MAC Address: 08:00:27:34:A8:87 (Cadmus Computer Systems)
Device type: general purpose
Running: Microsoft Windows XP|2003
Другая, широко используемая опция в Nmap это определение версии [-sV] различных открытых портов на целевой системе. Опция может быть использована с любым типом сканирования.
msf > nmap -sT -sV 192.168.56.102
[*] exec: nmap -sV 192.168.56.102
Starting Nmap 5.51SVN ( http://nmap.org ) at 2011-10-19 02:27 IST
Nmap scan report for 192.168.56.102
Host is up (0.0011s latency).
Not shown: 997 closed ports
PORT STATE SERVICE VERSION
135/tcp open msrpc Microsoft Windows RPC
139/tcp open netbios-ssn
445/tcp open microsoft-ds Microsoft Windows XP
MAC Address: 08:00:27:34:A8:87 (Cadmus Computer Systems) Service Info: OS: Windows
Видим, что добавилась дополнительная колонка Version, в которой выводятся различные версии служб, работающих на целевой машине.
Очень важно оставаться анонимным во время сканирования. Потому, что Firewall или IDS смогут выявить ваш IP-адрес, если не применять меры предосторожности. Одной из таких функций в Nmap является Decoy (приманка) [-D].
Опция Decoy добавляет дополнительную информацию в лог-файлы, создавая таким образом впечатление, что целевую систему атакуют несколько объектов одновременно. Итак, если добавить в Decoy два IP-адреса, то в логах будет показано, что атака осуществляется с трех разных IP. Одним из них будет ваш, а два других будут поддельными, например:
msf > nmap -sS 192.168.56.102 -D 192.134.24.34,192.144.56.21
Однако, добавлять слишком много значений в опцию -D не нужно, так как это может повлиять на результаты сканирования. Поэтому следует использовать ограниченное число адресов.
Metasploit Framework содержит более 350 различных вспомогательных модулей, каждый из которых выполняет определенные задачи. Здесь мы будем обсуждать сканер вспомогательных модулей (scanner auxiliary modules).
Чтобы использовать вспомогательные модули, мы должны сделать три простых шага:
Посмотрим доступные модули в Metasploit Framework, выполнив след. команду:
root@bt:~# cd /pentest/exploits/framework3/modules/auxiliary/scanner && ls
Чтобы начать использовать модули, нам нужно запустить msfconsole. Для начала найдем модули сканирования портов, доступных во фреймворке:
msf > search portscan
Matching Modules
================
Name Disclosure Date Rank Description
---- --------------- ---- -----------
auxiliary/scanner/portscan/ack normal TCP ACK Firewall Scanner
auxiliary/scanner/portscan/ftpbounce normal FTP Bounce Port Scanner
auxiliary/scanner/portscan/syn normal TCP SYN Port Scanner
auxiliary/scanner/portscan/tcp normal TCP Port Scanner
auxiliary/scanner/portscan/xmas normal TCP "XMas" Port Scanner
Список содержит некоторые основные питы сканирования, которые мы уже обсуждали (см. выше). Давайте начнем с простого SYN scan.
Чтобы использовать модуль, начнем с трех шагов.
Активируем модуль:
msf > use auxiliary/scanner/portscan/syn
msf auxiliary(syn) >
Теперь посмотрим, какие опции доступны. Для этого выполним команду show options:
msf auxiliary(syn) >show options
Module options (auxiliary/scanner/portscan/syn):
Name Current Setting Required Description
---- --------------- -------- -----------
BATCHSIZE 256 yes number of hosts to scan per set
INTERFACE no The name of the interface
PORTS 1-10000 yes Ports to scan
RHOSTS yes target address range or CIDR
SNAPLEN 65535 yes The number of bytes to capture
THREADS 1 yes The number of concurrent threads
TIMEOUT 500 yes The reply read timeout in milliseconds
В первом столбце перечислены все необходимые параметры. Столбец "Required" сообщает, какие параметры необходимо задать. RHOSTS содержит диапазон IP-адресов, которые хотим проверить. Давайте зададим в RHOSTS IP-адрес нашей цели:
msf auxiliary(syn) > set RHOSTS 192.168.56.1
RHOSTS =>192.168.56.1
Теперь модуль готов для SYN сканирования. Мы также может задать диапазон портов, которые хотим сканировать:
msf auxiliary(syn) > set PORTS 1-500
И наконец последний шаг, это запуск:
msf auxiliary(syn) > run
Настройка и управление количества потоков во вспомогательных модулях может значительно повысить эффективность.
msf auxiliary(syn) > set THREADS 10
На сейчас, мы изучили базовые способы сканирования портов. Сканирование портов распространяется и на ряд других инструментов, которые существенно повысят сбор информации о цели.
Nessus является одним из наиболее широко используемых сканеров уязвимостей. Он сканирует цель и создает детальный отчет о ней. Nessus является очень полезным инструментом во время тестирования на проникновение. Вы можете использовать GUI версию Nessus, или использовать его из консоли Metasploit. В этой книге (статье) мы в первую очередь сосредоточимся на работе с Nessus в msfconsole.
Сначала подключим БД к Metasploit для сохранения промежуточных результатов. О процессе запуска и подключения базы данных в Metasploit было рассказано в предыдущей главе [2] (статье). После подключения БД, следующей задачей является загрузка плагина Nessus.
Важно!
Обратите особое внимание на то, что Rapid7 прекратила поддержку MySQL в последней версии Metasploit (v4.6.0-dev). Поэтому команда db_driver уже не нужна. Теперь будет использоваться только PostgreSQL. И следовательно такие команды как: db_driver, db_connect не нужны. Но если пользуйтесь старой версией, тогда читайте дальше.
Для подключения БД и загрузки Nessus, выполним след. команды:
msf > db_connect msf3:8b826ac0@127.0.0.1:7175/msf3
msf > load nessus
[*] Nessus Bridge for Nessus 4.2.x
[+] Type nessus_help for a command listing
[*] Successfully loaded plugin: nessus
После успешного подключения, мы должны связать его с сервером:
msf > nessus_connect root:toor@localhost ok
[*] Connecting to https://127.0.0.1:8834/ as root
[*] Authenticated
Дополнительный параметр ok, сообщает Nessus о том, что сервер запущен в доверенной сети.
Мы можем проверить список доступных пользователей в Nessus, введя команду nessus_user_list.
Добавить нового пользователя можно с помощью команды nessus_user_add. А с помощью команды nessus_policy_list, можно посмотреть список имеющихся политик на сервере.
Процесс сканирования в Nessus достаточно просто. Давайте произведем быстрое сканирование цели, используя след. команду:
msf > nessus_scan_new 1 testscan 192.168.56.102
[*] Creating scan from policy number 1, called "testscan" and scanning 192.168.56.102
[*] Scan started. uid is 9d337e9b-82c7-89a1-a194-4ef154b82f624de2444e6ad18a1f
После того, как сканирование завершено, следующей задачей будет вывод списка, который сгенерировал Nessus:
msf > nessus_report_list
[+] Nessus Report List
ID Name Status
---- ------
9d337e9b-82c7-
89a1-a19-4ef154b82 testscan completed
f624de2444e6ad18a1f
Колонка "ID" отображает отчет, который был сгенерирован в результате нашей проверки. Произведем импорт отчета:
msf > nessus_report_get 9d337e9b-82c7-89a1-a1944ef154b82f624de2444e6ad18a1f
[*] importing 9d337e9b-82c7-89a1-a1944ef154b82f624de2444e6ad18a1f
После того, как отчет был импортирован, мы можем проанализировать его, чтобы найти уязвимые места на целевой системе. Для этого выполним след. команду:
msf> hosts -c address, vuls, os_name
В предыдущем рецепте, мы обсуждали Nessus в качестве сканера уязвимостей. В этом рецепте мы рассмотрим еще один сканер уязвимостей - NeXpose.
NeXpose является популярным инструментом Rapid7, который выполняет сканирование уязвимостей и импортирует результаты в БД Metasploit'a. Использование NeXpose похож на Nessus. Давайте быстро посмотрим, как работать с ним. Более глубокое изучение NeXpose отставляю на вас.
Для того, чтобы запустить сканер в msfconsole, нужно сначала подключить БД к Metasploit, а затем загрузить плагин NeXpose и подключить его к БД. Выполним след. команды:
msf > db_connect msf3:8b826ac0@127.0.0.1:7175/msf3
msf > load nexpose
msf > nexpose_connect darklord:toor@localhost ok
[*] Connecting to NeXpose instance at 127.0.0.1:3780 with username darklord...
Теперь мы можем сканировать цели и генерировать отчеты. Есть две команды поддерживаемые в NeXpose: nexpose_scan и nexpose_discover.
Запустим быстрое сканирование цели:
msf > nexpose_discover 192.168.56.102
[*] Scanning 1 addresses with template aggressive-discovery in sets of 32
[*] Completed the scan of 1 addresses
Посмотрим результаты сканирования:
msf > hosts -c address,os_name,os_flavor
Hosts
=====
address os_name os_flavor
------- ------- ---------
192.168.56.102 Microsoft Windows XP
msf >
После того, как информация собрана, последним шагом будет импорт результатов. Посмотрим, как это делается.
Для импорта результатов сканирования, выполните след. команду:
msf > db_import nexposelist.xml
[*] Importing 'Nexpose XML (v2)' data
[*] Importing host 192.168.56.102
[*] Successfully imported /root/nexposelist.xml
В предыдущих рецептах мы изучали несколько техник получения информации о цели. Во время пен-тестирования, нам может понадобится поделиться информацией с коллегами. Поэтому всю имеющуюся у нас информацию можно добавить в общий доступ. В этом нам поможет Dradis Framework [13]. Он обладает некоторыми особенностями, которые делают его отличным инструментом для добавления информации в общий доступ:
Примечание: про установку Dradis Framework в BT, можно прочитать здесь [14].
Чтобы запустить Dradis Framework в BackTrack'e, выполним след. команду:
root@bt:~# cd /pentest/misc/dradis
root@bt:/pentest/misc/dradis# ./start.sh
После выполнения команды запустим фреймворк через браузер, для этого в адресной строке введите:
https://127.0.0.1:3004
Давайте начнем наш эксперимент с Dradis. Framework позволяет создавать древовидную структуру для доменов и под-доменов. Это дает нам четкое представление о структуре и помогает логически хранить информацию. Dradis также предоставляет возможность создать полный отчет и систематизировать его.
Framework содержит пять важных опций: add branch, import from file, export, add note и note categories.
Давайте создадим новый отчет. Процесс создания отчета простой и начинается с добавления хостов и под-хостов.
Опция add branch позволяет добавлять IP-адреса или имена доменов. После того, как добавлен домен верхнего уровня, мы также можем добавить его под-домены. Следующим шагом будет добавление информации о них.
Опция add note позволяет нам добавлять собранную информацию о результатах сканирования из Nmap, Nessus и т.п.
Note categories помогает нам выбрать среду, в которой получили информацию. Различные опции включают в себя Brup scan, Nessus scan, NeXpose, Nmap и т.д. Вы можете выбрать подходящую опцию, которая будет использоваться для генерации отчета.
На след. рисунке показана информация о выполненном Nmap сканировании диапазона IP-адресов 192.168.56.1/24. В левой колонке содержатся данные о доступных целях, а в правой отчет о них:
Следующее, что можно сделать в Dradis Framework — импорт существующего отчета или экспорт созданного отчета.
Import from file позволяет нам с гибкостью импортировать ранее созданные результаты сканирования с различных сканеров. Также можно импортировать несколько результатов сканирования в единый отчет.
Опция export позволяет генерировать полные отчеты о различных доменах и под-доменах в один файл. Отчет может быть экспортирован либо в XML, либо в HTML-формат, а также в виде проекта или пользовательского отчета.
Продолжение следует…
Автор: levinkv
Источник [15]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/linux/24723
Ссылки в тексте:
[1] Metasploit Penetration Testing Cookbook: http://www.amazon.com/Metasploit-Penetration-Testing-Cookbook-Abhinav/dp/1849517428
[2] тут: http://habrahabr.ru/post/165409/
[3] хостинг: https://www.reg.ru/?rlink=reflink-717
[4] SPF: http://ru.wikipedia.org/wiki/Sender_Policy_Framework
[5] www.kloth.net: http://www.kloth.net
[6] ns1: http://habrahabr.ru/users/ns1/
[7] ESMTP: http://ru.wikipedia.org/wiki/SMTP
[8] www.target: http://www.target
[9] www.target.com: http://www.target.com
[10] johnny.ihackstuff.com: http://johnny.ihackstuff.com/
[11] Intrusion Detection Systems: http://ru.wikipedia.org/wiki/%D0%A1%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B0_%D0%BE%D0%B1%D0%BD%D0%B0%D1%80%D1%83%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F_%D0%B2%D1%82%D0%BE%D1%80%D0%B6%D0%B5%D0%BD%D0%B8%D0%B9
[12] Различные приемы сканирования портов: http://nmap.org/man/ru/man-port-scanning-techniques.html
[13] Dradis Framework: http://dradisframework.org/
[14] здесь: http://guides.dradisframework.org/install_on_backtrack.html
[15] Источник: http://habrahabr.ru/post/165691/
Нажмите здесь для печати.