16.03.2016 @ 12:56 Применение некоторых средств автоматизации Open Source Intelligence (OSINT) geotweet, intrigue-core, OSINT, spiderfoot, сбор информации Не секрет, что рекогносцировка в контексте тестирования на проникновение, аналогично другим областям, проводится на первоначальном этапе: как для точного попадания в цель необходимо знать её координаты, так и для успешного тестирования на проникновение необходимо знать архитектуру и особенности исследуемой цели – будь это целевой сервер, либо виртуальная проекция человека, например, аккаунт в социальной сети. В данной статье речь пойдёт о программных средствах, позволяющих автоматизировать данный этап. В специализированном дистрибутиве Kali Linux средства сбора информации представлены в разделе Information Gathering, но целью данной статьи является освещение некоторых, интересных с точки зрения автора средств, связанных со сбором информации из открытых источников и не входящих по умолчанию в Kali Linux 2.0. В данной статье рассматриваются: SpiderFoot – браузерная утилита автоматизации сбора данных; Intrigue-core – фреймворк для сбора данных, имеющий свой API; Geotweet – средство поиска меток геолокации аккаунтов twitter (и не только). 1. Обзор инструмента комплексного сбора данных SpiderFoot. SpiderFoot – утилита, предназначенная для автоматизации сбора разведывательной информации о цели (представленной IP-адресом, или доменным именем). В отличие от своего аналога Maltego, интерфейс SpiderFoot доступен в браузере. Установка: Сначала устанавливаем зависимости: pip install lxml netaddr M2Crypto cherrypy mako Скачиваем архив с официального сайта, разархивируем и запускаем: ./sf.py Интерфейс доступен по адресу http://127.0.0.1:5001 Описание режимов работы: SpiderFood имеет 3 варианта запуска сканирования цели: 1. По заданному кейсу (3 подвида): «All» – включаются все имеющиеся модули, соответственно, с получением всей информации о цели. «Footprint» – режим сбора информации, основанный на предоставляемой интернетом информации о цели. «Investigate» – режим сбора информации о подозрительных вредоносных IP (например, полученных из логов). 2. По необходимым получаемым данным (например, по «Account on External Site» и/или «Hosting Provider» и т.д.). 3. По модулям («SHODAN», «Spider» и т.д.). Пример сканирования: Режим: By Use Case, Footprint Название: «Footprint — pentestit.ru» Цель: pentestit.ru Через некоторое время (как позволит мощность машины и скорость соединения, но мне пришлось прервать процесс спустя 6 часов) сканирование завершится (его также можно прервать вручную): Как в процессе сканирования, так и после его завершения доступны его результаты. На рисунке на вкладке «Status» – сводная диаграмма из найденных сущностей: Перейдя на вкладку «Browse», можно подробнее ознакомиться с найденными сущностями, такими как аккаунты на сторонних сайтах, IP-адресах, email-адресах и другими: При клике по выбранной категории сущностей, например, Email Address, отображаются найденные сущности, которые можно отфильтровать для вывода только уникальных значений (кнопка Unique Data View): Пример найденных публичных репозиториев: Пример найденного связанного контента с сайта pastebin.com: Найденные ссылки на связанные страницы социальных сетей: URL адреса, имеющие поля для ввода пароля: Разумеется, это не полный список того, что можно найти с помощью данного средства. Перейдя по вкладке «Graph», можно настроить отображение графа с визуальным представлением результатов сканирования (в данном случае был выбран форсированный режим упорядочивания – кнопка «F»), также доступно сохранение результатов в файл: Как можно заметить, данная утилита имеет неплохие возможности как в задачах автоматизированного сбора информации о цели, так и визуального представления полученной информации, благодаря удобному интерфейсу. Также, возможен запуск приложения на выделенном сервере, что заметно улучшит скорость работы в случаях сканирования многих целей. 2. Обзор инструмента комплексного сбора данных Intrigue-core. Intrigue-core является API фреймворка для проведения комплексного сбора информации о цели. Наличие подмодулей сканирования таких как nmap и masscan позволяют ему охватывать сразу два этапа тестирования на проникновение – Reconnaissance и Scanning. Установка: Процесс установки не быстрый, т.к. загружаются дополнительные компоненты. На сайте разработчика имеется инструкция для установки, однако с первого раза по ней установка не удалась, видимо, по причине того что программа выпущена в альфа-версии. Приведу ниже последовательность команд (все действия поводились на Kali Linux 2.0), которые привели к успешному запуску приложения. Необходимо внести поправки в файл конфигурации Redis-сервера (закомментировать строку «port 0»): gedit /etc/redis/redis.conf Запустить сервис: service redis-server start Теперь, после перезагрузки команда netstat –lntp отобразит работающий Redis-сервер по адресу 127.0.0.1:6379. Далее обновляемся и ставим необходимые модули (некоторые могут быть уже установлены): apt-get -y update && apt-get -y upgrade apt-get install git-core apt-get install libpq-dev postgresql postgresql-server-dev-9.4 apt-get install nmap zmap apt-get install git gcc make libpcap-dev Затем устанавливаем необходимый модуль сканера masscan: cd /opt git clone https://github.com/robertdavidgraham/masscan cd masscan make make install Завершающий этап: gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 curl -sSL https://get.rvm.io | bash -s stable source /etc/profile.d/rvm.sh rvm install ruby-2.2.0 rvm use 2.2.0@core --create git clone https://github.com/intrigueio/intrigue-core.git core cd intrigue-core bundle install bundle exec rake migrate Для запуска достаточно набрать foreman start из директории приложения, однако, если ничего не запустится (вероятность велика), то необходимо поправить файл (который в логах консоли с ошибкой Syntax Error): gedit /var/lib/gems/2.1.0/bundler/gems/censys-83dab46e0534/lib/censys.rb На строке 58 привести код к виду: payload = { "query" => :keyword } При повторном запуске ошибки синтаксиса уже не будет, но появится сообщение «database locked». Для исправления ситуации необходимо перезагрузить систему и при помощи sqlitebrowser открыть базу данных: /opt/intrigue-core/db/intrigue.db, и закрыть. После этих манипуляций приложение запускается корректно и web-интерфейс доступен по адресу 127.0.0.1:7777: Также с приложением можно работать посредством командной строки (запуском core-cli.rb с параметрами), но в данной статье рассматривается только работа через браузер. Описание: Task – здесь можно выбрать тип задачи (45 наименований), также здесь отображаются текущие и уже выполненные задания. Scan – запуск одного из двух видов сканирования: «обнаружение» или «поиска субдоменов». Entities – все найденные сущности. Admin – настройки программы (API-ключи для сервисов), в самом низу настроек полезная кнопка для очистки сущностей (http://127.0.0.1:7777/v1/admin/clear). Ниже представлен список имеющихся задач (Task) с кратким описанием: 1. Check Project Honeypot – проверка сайта на информацию project honeypot. 2. Convert Entity – конвертирование сущности в другой тип. 3. DNS Cache Snoop – запрос DNS сервера на список доменов и проверка, если последний визит этого домена в их кэше. 4. DNS Forward Lookup – просмотр IP данного хоста, захват всех типов записей. 5. DNS MX Lookup – поиск записей MX данной DNS записи. 6. DNS Reverse Lookup – ищет имя данного IP адреса. 7. DNS SPF Recursive Lookup – рекурсивный поиск DNS SPF. 8. DNS Service Record Bruteforce – простой брутфорс службы записи DNS. 9. DNS Subdomain Bruteforce – DNS брутфорс субдоменов. 10. DNS TLD Bruteforce – брутфорс домена верхнего уровня DNS. 11. DNS TXT Lookup – поиск DNS TXT. 12. DNS Zone Transfer – передача зоны DNS. 13. Email Bounceback – эта задача проверяет домен на возвращаемые письма через gmail. 14. Email Harvester – эта задача «выскабливает» email адреса из результатов поискового движка. 15. Email Validate – эта задача проверяет валидность email через email-validator.net API. 16. Email Validate via MailboxLayer – эта задача проверяет валидность email через MailboxLayer API. 17. Example – пример, возвращает случайные данные. 18. Fuzz a NetSvc with random data – эта задача подключается к службе и отправляет множество случайных данных. 19. Geolocate Host – выполняет геолокацию, основанную на IP адресе. 20. Masscan Scan – эта задача запускает сканирование masscan в отношении целевого хоста или домена. 21. Nmap Scan – эта задача запускает nmap сканирование на целевой хост или домен. 22. Phone Number Carrier Lookup – эта задача использует CarrierLookup API для определения поставляемого номера телефона. 23. Search Bing – эта задача использует Bing API и ищет связанный контент, отображаются обнаруженные домены. 24. Search Censys.io – искать при помощи Censys search engine. 25. Search EDGAR – искать при помощи EDGAR corporation search. 26. Search Google – эта задача использует Google API и находит связанный контент, отображаются обнаруженные домены. 27. Search Pipl – использование Pipl API для поиска по сущностям. 28. Search Shodan – использует SHODAN API для поиска информации. 29. URI Check Safebrowsing API – проверяет URI в Google Safebrowsing (StopBadware) API. 30. URI Check Security Headers – эта задача проверяет типичные заголовки безопасности HTTP на веб приложении. 31. URI Exploitable Scanner – эта задача сканирует целевой URL на предмет наличия выполняемых скриптов, которые обрабатывают какие-либо запросы. 32. URI Extract Metadata – эта задача загружает контент единичного URI и извлекает сущности из текста и метаданных. 33. URI Gather And Analyze Links – эта задача разбирает главную страницу и выполняет анализ на ссылки. 34. URI Gather Headers – эта задача проверяет HTTP заголовки веб-приложения. 35. URI Gather Robots.txt – эта задача проверяет robots.txt и добавляет любые найденные URI. 36. URI Gather SSL Certificate – получение SSL сертификата от сервера приложений. 37. URI Gather Sitemap (sitemap.xml) – эта задача проверяет sitemap.xml и добавляет любые URI, которые находит. 38. URI Gather Technology – эта задача определяет платформу и технологию цели. 39. URI HTTP Auth Brute – эта задача брутфорсит аутентификацию, передаётся URI, требующее HTTP аутентификацию. 40. URI HTTP Screenshot – эта задача делает скриншот URI. 41. URI Spider – эта задача паутинит данный URI, отображая сущности из страницы текста, а также из разобранных файлов. 42. URI Youtube Metadata – эта задача загружает метаданные данного URI видео youtube. 43. Web Account Check – эта задача использует крупные веб-сайты, проверяя существующие аккаунты, обнаруженные аккаунты отображаются. 44. Whois – выполняет поиск whois по данной сущности. 45. Zmap Scan – эта задача запускает zmap сканирование на целевой хост или домен. Приведу несколько необъёмных примеров, чтобы можно было понять принцип работы данного комплекса. Пример 1, задача: URI Exploitable Scanner, цель: http://intrigue.io Найденные сущности: Uri: http://intrigue.io/c99.php Uri: http://intrigue.io/b37.php Uri: http://intrigue.io/c37.php Uri: http://intrigue.io/c66.php Uri: http://intrigue.io/tool.asp Uri: http://intrigue.io/0 Uri: http://intrigue.io/2015 Uri: http://intrigue.io/a Uri: http://intrigue.io/about Uri: http://intrigue.io/admin Uri: http://intrigue.io/b Uri: http://intrigue.io/bin Uri: http://intrigue.io/black Uri: http://intrigue.io/d Uri: http://intrigue.io/dashboard Uri: http://intrigue.io/do Uri: http://intrigue.io/down Uri: http://intrigue.io/download Uri: http://intrigue.io/in Uri: http://intrigue.io/login Uri: http://intrigue.io/rdf Uri: http://intrigue.io/robots.txt Uri: http://intrigue.io/rss Uri: http://intrigue.io/s Uri: http://intrigue.io/si Uri: http://intrigue.io/sign Uri: http://intrigue.io/signup Uri: http://intrigue.io/sitemap.xml Uri: http://intrigue.io/t Uri: http://intrigue.io/tool Uri: http://intrigue.io/tools Uri: http://intrigue.io/wp-admin Пример 2, задача: URI Gather Technology, цель: http://www.intrigue.io Найденные сущности: SoftwarePackage: WordPress SoftwarePackage: WordPress Plugin SoftwarePackage: WordPress API Цель: http://www.defcon.ru Найденные сущности: SoftwarePackage: WordPress SoftwarePackage: WordPress Plugin SoftwarePackage: WordPress API Цель: http://www.nytimes.com Найденные сущности: SoftwarePackage: Optimizely SoftwarePackage: Facebook Account Пример 3, задача: URI Extract Metadata, цель: http://www.pentestit.ru Найденные сущности: HttpHeader: x-xss-protection HttpHeader: x-content-type-options HttpHeader: x-frame-options HttpHeader: strict-transport-security HttpHeader: set-cookie HttpHeader: expires HttpHeader: pragma HttpHeader: cache-control HttpHeader: x-powered-by Детали сущности x-powered-by (необходимо перейти по ссылке): PHP/5.6.19-1~dotdeb+7.1 HttpHeader: vary HttpHeader: connection HttpHeader: transfer-encoding HttpHeader: content-type HttpHeader: date HttpHeader: server Детали сущности server: nginx. Пример 4, задача DNS MX Lookup, цель: DnsRecord: intrigue.io Найденные сущности: DnsRecord: aspmx.l.google.com IpAddress: 74.125.195.27 DnsRecord: alt1.aspmx.l.google.com IpAddress: 64.233.165.27 DnsRecord: alt2.aspmx.l.google.com IpAddress: 74.125.130.27 DnsRecord: aspmx2.googlemail.com DnsRecord: aspmx3.googlemail.com Пример 5: задача: Whois, цель: DnsRecord: pentestit.ru Найденные сущности: DnsRecord: ns1.pentestit.ru IpAddress: 188.40.122.74 DnsServer: 188.40.122.74 DnsRecord: ns2.pentestit.ru IpAddress: 37.59.13.7 DnsServer: 37.59.13.7 Person: Private Person Для наглядного примера ручного «углубления» переходим по ссылке на сущность IpAddress: 188.40.122.74. Для каждой найденной сущности доступен список задач (внизу страницы). Запустим последовательно задачи: Geolocate Host, Nmap Scan, DNS Reverse Lookup: 1. Geolocate Host (IpAddress: 188.40.122.74) Результат: country: Germany, longitude: 9.0, latitude: 51.0 2. Nmap Scan (IpAddress: 188.40.122.74) Результат: NetSvc: 188.40.122.74:53/tcp NetSvc: 188.40.122.74:443/tcp Uri: https://188.40.122.74:443 Uri: https://hn1.pentestit.ru:443 3. DNS Reverse Lookup (IpAddress: 188.40.122.74) Результат: name: hn1.pentestit.ru Аналогично, переходим по ссылке на сущность DnsRecord: ns1.pentestit.ru и запускаем задачу DNS Forward Lookup (DnsRecord: ns1.pentestit.ru). Результат: name: 188.40.122.74, parsed_record_type: A Как видно из примеров, данное средство сбора информации о цели имеет необходимый функционал, который позволяет в полуавтоматическом режиме запускать необходимые задания с необходимым уровнем вложенности, т.е. выполнили Whois для целевого сервера, затем для каждого IP запускаем сканирование, для каждой DNS-записи узнаём IP-адрес, запускаем сканирование nmap и так далее. Однако модуль Scan с двумя режимами работы позволяет полностью автоматизировать процесс сканирования – достаточно указать параметры, в т.ч. «Depth», которая отвечает именно за уровень «продвижения» вглубь результатов сканирования: В процессе работы, при запуске очередного задания может появляться ошибка database locked – для решения проблемы необходимо перейти на главную страницу, затем снова вернуться к списку заданий. Как можно заметить, несмотря на некоторые ошибки в процессе установки и работы с данной программой, её функционал достаточно велик, что позволяет использовать её для автоматизации задач первоначального исследования цели. 3. Обзор инструмента сбора данных геолокации Geotweet. Geotweet является приложением для отслеживания записей в twitter, а также в instagram. Найденные координаты тут же можно отобразить на google-картах для составления схемы перемещений владельца аккаунта. Установка: git clone https://github.com/Pinperepette/Geotweet_GUI.git cd Geotweet_GUI sudo dpkg -i *.deb sudo apt-get -f install geotweet Описание: При первом запуске приложение потребует ввести API-ключи, которые необходимо получить по соответствующей ссылке и ввести в окно: Geotweet имеет 4 режима работы, запускаемые соответствующими кнопками: TLINE, ZONE, TAG, USER: Режим TIMELINE 1. Указываем имя пользователя в поле для ввода. 2. Указываем максимальное число получаемых записей (кружок справа служит для этой цели). 3. Отмечаем Create Maps. 4. Запускаем TLINE. Режим TAG 1. Указываем hashtag в поле для ввода. 2. Указываем максимальное число получаемых записей. 3. Запускаем TAG В данном режиме карты недоступны. Режим USER INFO 1. Указываем имя пользователя в поле для ввода. 2. Запускаем USER В данном режиме карты недоступны. Режим ZONE 1. Указываем имя географической зоны в поле для ввода (RU, IT и др.). 2. Указываем максимальное число получаемых записей Select number of tweets 3. Отмечаем Create Maps. 4. Запускаем ZONE Примеры работы программы: Вводим сокращение страны нашей страны – RU, запускаем ZONE, количество записей – по умолчанию: С первого раза программа вывела наших соседей. Попробуем изменить запрос на «Russia», смотрим результаты: Теперь попробуем изменить на более точные координаты: «Russia, Moscow», в результате отображаются пользователи, находящиеся в России: Копируем выделенный ник в строку поиска и запускаем USER. Нам будет показана информация о пользователе. Как видно, на текущий момент геолокация включена: Теперь мы можем посмотреть через TLINE динамику изменения координат и клиентов: А также посмотреть все точки на карте: Другой пример – у пользователя отключена геолокация на текущий момент: Но если посмотрим динамику, то увидим на фоне пустой геолокации пара записей с координатами: Вот те самые координаты, только на карте: Как можно заметить, данный инструмент позволяет быстро работать с определением местоположения сделанных записей в twitter. Даже, если пользователь менял настройки геолокации или устройства, то есть вероятность, что на каком-либо из устройств была включена геолокация. Следует учесть, что данное приложение имеет аналогичные возможности и для instagram. В заключении следует сказать, что направление программных средств автоматизации разведки, основанной на открытых данных, постоянно развивается и появляются достаточно неплохие, заслуживающие внимание утилиты, которые могут дополнять имеющийся базовый пакет дистрибутива Kali Linux 2.0. и использоваться по своему назначению для ускорения выполнения задач. mr_agafonov 20444 Penetration testing Читать дальше >>