вторник, 22 августа 2017 г.

О recon-ng


recon-ng - это приложение для OSINT - Open Source INTellegence (разведки на основе открытых данных).

Кратко о recon-ng:
- осуществляет автоматизированный поиск юзернеймов, профилей, устройств, и т.д.;
- открытый исходный код;
- cli интерфейс а-ля matesploit;
- использует модули;
- написан на Python;

Установка

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   |                                         |
  +------------------------------------------------------------+


Добавить ключ просто
 keys add google_api <ключ>

Источники информации
recon-ng использует множество источников информации. Это и популярные поисковые системы, социальные сети и популярные сервисы вроде github.
Среди них можно отметить специализированные поисковики:
см. таблицу выше, чтобы понять нужен ли ключ для обращения к 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)


В начале хорошо бы установить правдоподобный 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
      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
Здесь сказано, что если параметр SOURCE установлен в default, то для исходных данных будут выбраны все емейлы из таблицы contacts.
Значит нужно добавить запись в эту таблицу.

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 утилиты


Ссылки


***
***
searx - метапоисковик.