recon-ng - это приложение для OSINT - Open Source INTellegence (разведки на основе открытых данных).
Кратко о recon-ng:
- осуществляет автоматизированный поиск юзернеймов, профилей, устройств, и т.д.;
- открытый исходный код;
- открытый исходный код;
- cli интерфейс а-ля matesploit;
- использует модули;
- написан на Python;
- сайт: bitbucket.org/LaNMaSteR53/recon-ng;
Установка
pip install -r REQUIREMENTS
./recon-ng
Начало работы
Для полноценной работы фреймворка нужно обеспечить ему доступ к API популярный онлайн-сервисов вроде google, linkedin, twшtter и д.р.
Но не все модули этого требуют.
Например, чтобы получить ключ для использования API google нужно зарегистрироваться и по следующей ссылке: https://console.developers.google.com/apis/dashboard
Понадобится следующие API
- YouTube Data API
- Custom Search API
Полный список необходимых ключей и сервисов приведён на сайте разработчика, в разделе документации.
В программе список ключей хранится в таблице keys.
show keys
+------------------------------------------------------------+
| Name | Value |
+------------------------------------------------------------+
| bing_api | |
| builtwith_api | |
| censysio_id | |
| censysio_secret | |
| flickr_api | |
| fullcontact_api | |
| github_api | |
| google_api | |
| google_cse | |
| hashes_api | |
| instagram_api | |
| instagram_secret | |
| ipinfodb_api | |
| jigsaw_api | |
| jigsaw_password | |
| jigsaw_username | |
| linkedin_api | |
| linkedin_secret | |
| pwnedlist_api | |
| pwnedlist_iv | |
| pwnedlist_secret | |
| shodan_api | |
| twitter_api | |
| twitter_secret | |
+------------------------------------------------------------+
| Name | Value |
+------------------------------------------------------------+
| bing_api | |
| builtwith_api | |
| censysio_id | |
| censysio_secret | |
| flickr_api | |
| fullcontact_api | |
| github_api | |
| google_api | |
| google_cse | |
| hashes_api | |
| instagram_api | |
| instagram_secret | |
| ipinfodb_api | |
| jigsaw_api | |
| jigsaw_password | |
| jigsaw_username | |
| linkedin_api | |
| linkedin_secret | |
| pwnedlist_api | |
| pwnedlist_iv | |
| pwnedlist_secret | |
| shodan_api | |
| twitter_api | |
| twitter_secret | |
+------------------------------------------------------------+
Добавить ключ просто
keys add google_api <ключ>
Источники информации
recon-ng использует множество источников информации. Это и популярные поисковые системы, социальные сети и популярные сервисы вроде github.
Среди них можно отметить специализированные поисковики:
recon-ng использует множество источников информации. Это и популярные поисковые системы, социальные сети и популярные сервисы вроде github.
Среди них можно отметить специализированные поисковики:
- Shodan - поисковик по устройствам Интернета;
- censys.io - Поисковик по устройствам и сетям Интернета (xakep.ru/2016/01/08/censys).
- haveibeenpwned.com - информация о взломах аккаунтов.
- http://mailtester.com
см. таблицу выше, чтобы понять нужен ли ключ для обращения к API этих поисковиков.
Начало использования
Текстовый интерфейс похож на таковой Metasploit и set (Social Enginering Toolkit). Значит здесь можно создавать рабочие окружения (workspace), подключать модули, задавать их параметры и наконец запускать. Информация будет сохранятся в БД. Для каждого рабочего окружения сохраняются свои экземпляры таблиц.
Создать рабочее место
workspace add <name>
Просмотреть основные параметры (прокси, юсерагент, и т.п.)
set
Name Current Value Required Description
---------- ------------- -------- -----------
NAMESERVER 8.8.8.8 yes nameserver for DNS interrogation
PROXY no proxy server (address:port)
THREADS 10 yes number of threads (where applicable)
TIMEOUT 10 yes socket timeout (seconds)
USER-AGENT Recon-ng/v4 yes user-agent string
VERBOSITY 1 yes verbosity level (0 = minimal, 1 = verbose, 2 = debug)
---------- ------------- -------- -----------
NAMESERVER 8.8.8.8 yes nameserver for DNS interrogation
PROXY no proxy server (address:port)
THREADS 10 yes number of threads (where applicable)
TIMEOUT 10 yes socket timeout (seconds)
USER-AGENT Recon-ng/v4 yes user-agent string
VERBOSITY 1 yes verbosity level (0 = minimal, 1 = verbose, 2 = debug)
В начале хорошо бы установить правдоподобный User-Agent чтобы не банили поисковики.
Например
Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36
Возможно понадобится использовать прокси чтобы обойти блокировки некоторых социальных сетей или сайтов в некоторых странах.
Показать все таблицы
Показать все таблицы
show schema
Показать список модулей
show modules
Использовать модуль
use <module name>
После этой команды модуль будет готов к настройке и запуску.
Посмотреть описание и настройки загруженного в данный момент модуля
show info
Как правило для работы модуля нужно задать одну или несколько начальный переменных (адрес сайта, юзернейм, и.т.д). Их название и назначение зависит от назначения модуля. По умолчанию большинство модулей используют данные из таблиц. Почти у каждого модуля есть параметр SOURCE (см. пример ниже). SOURCE = default если будут использованы данные из таблицы. Но можно брать данные, например список адресов электронной почты из фала
set SOURCE полное_имя_файла
или если нужно проверить только одно значение, то указать его непосредственно
set SOURCE значение
После выполнения какого-нибудь модуля результаты работы обычно записываются в таблицы.
Показать число записей в каждой таблице (это тоже отдельная таблица)
show dashboard
Показать любую таблицу, например profiles
show profiles
Добавить запись в таблицу
add имя_таблицы поле1~поле2~поле2...
Здесь нужно правильно учесть число полей.
Примеры использования
Проверка существования почтовых адресов
Загрузим модуль командой
Загрузим модуль командой
use recon/contacts-contacts/mailtester
или просто указав имя модуля use mailtetserПросмотрим параметры
show info
Name: MailTester Email ValidatorЗдесь сказано, что если параметр SOURCE установлен в default, то для исходных данных будут выбраны все емейлы из таблицы contacts.
Path: modules/recon/contacts-contacts/mailtester.py
Author: Tim Tomes (@LaNMaSteR53)
Description:
Leverages MailTester.com to validate email addresses.
Options:
Name Current Value Required Description
------ ------------- -------- -----------
REMOVE False yes remove invalid email addresses
SOURCE default yes source of input (see 'show info' for details)
Source Options:
default SELECT DISTINCT email FROM contacts WHERE email IS NOT NULL
<string> string representing a single input
<path> path to a file containing a list of inputs
query <sql> database query returning one column of inputs
Значит нужно добавить запись в эту таблицу.
add contacts ~~~адрес_эл._почты~~~
Заполнять все поля в таблице contacts не обязательно. Поэтому разделяя поля тильдой просто оставим их пустыми, кроме поля электронной почты.
Сама таблица после добавления запись будет выглядеть так
show contacts
+------------------------------------------------------------------------------------------------------------+
| rowid | first_name | middle_name | last_name | email | title | region | country | module |
+------------------------------------------------------------------------------------------------------------+
| 3 | | | | адрес_эл._почты | | | | user_defined |
+------------------------------------------------------------------------------------------------------------+
Если нужно проверить одну почту удобнее указать её адрес непостредственно параметру SOURCE
set SOURCE почта
Если адресов много, то можно и файл с ними указать
set SOURCE файл-с-емейлами
Наконец запустим модуль на выполнение:
run
Проверка почтового адреса делается запросом на сервер где он зарегистрирован. Судя по сообщениям программы не все серверы поддерживают реализованную проверку (возможно нужен ключ для API?), среди них:
gmail.com и hotmail.com.
На некоторых сервисах (rambler.ru) скрипт падает.
Поиск почты в haveibeenpwned.com
use recon/contacts-credentials/hibp_breachshow
set SOURCE ...
run
Если адреса не найдено, то вероятно аккаунты с этим почтовым адресом не были взломаны и хэши паролей не были опубликованы.
Поиск "интересных" файлов на сайте
use discovery
/info_disclosure/interesting_files
[recon-ng][default][interesting_files] >
set
SOURCE mi-al.ru
[recon-ng][default][interesting_files] > run
[*] http:
//mi-al
.ru:80
/robots
.txt => 200.
'robots.txt'
found!
[*] http:
//mi-al
.ru:80
/sitemap
.xml => 301
[*] http:
//mi-al
.ru:80
/sitemap
.xml.gz => 301
[*] http:
//mi-al
.ru:80
/crossdomain
.xml => 301
[*] http:
//mi-al
.ru:80
/phpinfo
.php => 301
[*] http:
//mi-al
.ru:80
/test
.php => 301
[*] http:
//mi-al
.ru:80
/elmah
.axd => 301
[*] http:
//mi-al
.ru:80
/server-status
=> 301
[*] http:
//mi-al
.ru:80
/jmx-console/
=> 404
[*] http:
//mi-al
.ru:80
/admin-console/
=> 404
[*] http:
//mi-al
.ru:80
/web-console/
=> 404
[*] 1 interesting files found.
Поиск юзернейма на сайтах
use profiler
set SOURCE username
run
show profiles
Алсо
Другие OSINT утилиты
- Maltego
- https://github.com/killswitch-GUI/SimplyEmail - email recon tool
Ссылки
***
https://habrahabr.ru/company/pentestit/blog/271597/
How to Use Python to Spy on Your Friends: Web APIs, Recon ng, & OSINT (youtube)
How to Use Python to Spy on Your Friends: Web APIs, Recon ng, & OSINT (youtube)
***
searx - метапоисковик.