
Пассивный инструмент поиска hostname, доменов и IP-адресов для не-роботов
Инструмент пассивного поиска hostname, доменов и IP-адресов для людей, а не роботов


wtfis — это инструмент командной строки, который собирает информацию о домене, FQDN или IP-адресе с помощью различных OSINT-сервисов. В отличие от других подобных инструментов, он создан специально для восприятия человеком и выдаёт результаты, которые красивы (субъективно) и легко читаются и понимаются.
Инструмент предполагает, что вы используете учётные записи бесплатного тарифа / уровня community, и поэтому совершает как можно меньше API-вызовов, чтобы свести к минимуму превышение квот и ограничений скорости.
Название проекта — игра слов на основе «whois».
| Сервис | Используется в поиске | Обязателен | Бесплатный тариф |
|---|---|---|---|
| Virustotal | Все | Нет | Да |
| AbuseIPDB | IP-адрес | Нет | Да |
| Greynoise | IP-адрес | Нет | Да |
| IP2Location | IP-адрес | Нет | Да |
| IP2Whois | Домен/FQDN | Нет | Да |
| IPinfo | IP-адрес | Нет | Да (без регистрации) |
| IPWhois | IP-адрес | Нет | Да (без регистрации) |
| Shodan | IP-адрес | Нет | Нет |
| URLhaus | Все | Нет | Да |
Основной источник информации. Получает:
AbuseIPDB — краудсорсинговая база данных сообщений о вредоносных IP-адресах. Через её API wtfis показывает:
Альтернативный источник данных о геолокации и ASN для IP-адресов (по умолчанию используется IPWhois). Получает:
IP2Whois и IP2Location — разные функции одного и того же сервиса, поэтому регистрироваться нужно только один раз. Затем один и тот же API-ключ можно использовать для обоих типов поиска.
Используется опционально, если предоставлены учётные данные. Получает:
IP2Whois рекомендуется вместо Virustotal для получения whois-данных по ряду причин:
Ещё один альтернативный источник данных о геолокации и ASN для IP-адресов. Получает:
Источник данных о геолокации и ASN для IP-адресов по умолчанию. Получает:
IPWhois не следует путать с IP2Whois, который предоставляет whois-данные о домене.
Используя community API Greynoise, wtfis показывает, входит ли IP в один из наборов данных Greynoise:
Подробнее о наборах данных здесь.
Кроме того, API также возвращает классификацию IP от Greynoise (если доступна). Возможные значения: benign, malicious и unknown.
Получает данные из эндпоинта /shodan/host/{ip} (см. документацию). Для каждого IP получает:
URLhaus — краудсорсинговая база данных сообщений о вредоносных URL. Эта функция обогащения позволяет понять, используется или использовался ли запрошенный hostname или IP для распространения вредоносного ПО через HTTP или HTTPS. Предоставляемые данные включают:
$ pip install wtfis
Для установки через conda (из conda-forge) см. wtfis-feedstock.
Для установки через brew:
brew install wtfis
wtfis использует следующие переменные окружения (все необязательны):
VT_API_KEY - API-ключ VirustotalABUSEIPDB_API_KEY - API-ключ AbuseIPDBIP2LOCATION_API_KEY - API-ключ IP2LocationIP2WHOIS_API_KEY - API-ключ IP2WhoisGREYNOISE_API_KEY - API-ключ GreynoiseSHODAN_API_KEY - API-ключ ShodanURLHAUS_API_KEY - API-ключ URLhausWTFIS_DEFAULTS - Булевы аргументы по умолчаниюGEOLOCATION_SERVICE - Сервис геолокации / ASN для использованияЗадайте их любым удобным способом.
В качестве альтернативы создайте в домашнем каталоге файл ~/.env.wtfis с указанными выше параметрами. Шаблон см. в .env.wtfis.example. ПРИМЕЧАНИЕ: не забудьте выполнить chmod 400 для этого файла!
usage: wtfis [-h] [-A] [-s] [-g] [-a] [-u] [-m N] [-n] [-1] [-V] [--geolocation-service {ip2location,ipinfo,ipwhois}] entity
positional arguments:
entity Hostname, domain or IP
options:
-h, --help show this help message and exit
-A, --all Enable all possible enrichments
-s, --use-shodan Use Shodan to enrich IPs
-g, --use-greynoise Enable Greynoise for IPs
-a, --use-abuseipdb Enable AbuseIPDB for IPs
-u, --use-urlhaus Enable URLhaus for IPs and domains
-m N, --max-resolutions N
Maximum number of resolutions to show (default: 3)
-n, --no-color Show output without colors
-1, --one-column Display results in one column
-V, --version Print version number
--geolocation-service {ip2location,ipinfo,ipwhois}
Geolocation service to use (default: ipwhois)
Проще говоря:
$ wtfis FQDN_OR_DOMAIN_OR_IP
и вы получите результаты, сгруппированные по панелям, как на изображении выше.
Принимается «обезвреженный» ввод (например, api[.]google[.]com).
Если терминал поддерживает такую возможность, некоторые поля и заголовки являются кликабельными гиперссылками, ведущими на сайты соответствующих сервисов.
Вместо указания каждого флага обогащения по отдельности можно использовать флаг -A / --all, чтобы включить их все, где это возможно. Этот флаг несовместим с флагами --use-*.
Используйте флаг -a или --use-abuseipdb, чтобы включить обогащение данных AbuseIPDB для hostname, доменов и IP-адресов.

Название поля AbuseIPDB — гиперссылка (если поддерживается терминалом), ведущая на соответствующую страницу базы данных AbuseIPDB для вашего запроса.
Чтобы включить Greynoise, вызывайте команду с флагом -g или --use-greynoise. Поскольку квота API довольно мала (50 запросов в неделю по состоянию на март 2023 года), эта проверка по умолчанию отключена.

Название поля GreyNoise также является гиперссылкой (если поддерживается терминалом), ведущей на запись об IP в веб-интерфейсе Greynoise, где показано больше контекста.
Shodan можно использовать для отображения открытых портов или сервисов IP-адреса, а в некоторых результатах — операционной системы. Запускайте с флагом -s или --use-shodan.

Если это поддерживается терминалом, поле Services является кликабельной гиперссылкой, ведущей в веб-интерфейс Shodan.
Используйте флаг -u или --use-urlhaus, чтобы включить обогащение данных URLhaus для hostname, доменов и IP-адресов.

Название поля Malware URLs — гиперссылка (если поддерживается терминалом), ведущая на соответствующую страницу базы данных URLhaus для вашего запроса.
Для запросов FQDN и домена вы можете увеличивать или уменьшать максимальное количество отображаемых IP-резолвов с помощью -m NUMBER или --max-resolutions=NUMBER. Верхний предел — 10. Если резолвы не нужны совсем, установите значение 0.
Чтобы показать все панели в одну колонку, используйте флаг -1 или --one-column.

Панели можно отображать без цвета с помощью -n или --no-color.

Аргументы по умолчанию можно задать, установив переменную окружения WTFIS_DEFAULTS. Например, чтобы по умолчанию использовать Shodan и отображать результаты в одну колонку:
WTFIS_DEFAULTS=-s -1
Если аргумент указан в WTFIS_DEFAULTS, то указание того же аргумента при вызове команды отменяет его. Так, в примере выше, если затем выполнить:
$ wtfis example.com -s
то Shodan использоваться НЕ будет.
Обратите внимание: максимальное количество резолвов (-m N, --max-resolutions N) в настоящее время нельзя задать в значениях по умолчанию.
Рекомендуемый способ изменить это — задать переменную GEOLOCATION_SERVICE. Например, для использования IPinfo:
GEOLOCATION_SERVICE=ipinfo
Либо укажите --geolocation-service при вызове команды:
$ wtfis --geolocation-service=ipinfo 1.1.1.1
Если заданы оба варианта, приоритет имеет флаг командной строки.
wtfis можно запускать из Docker-образа. Сначала соберите образ (с помощью прилагаемого Dockerfile), выполнив:
$ make docker-image
Образ будет содержать последнюю тегированную версию wtfis (не обязательно из последнего коммита). Это гарантирует получение стабильного релиза.
Запустить образ можно двумя способами:
Убедитесь, что .env.wtfis находится в вашем домашнем каталоге и содержит необходимые переменные окружения. Затем просто выполните:
$ make docker-run
Это алиас для
$ docker run --env-file=${HOME}/.env.wtfis -it wtfis
Обратите внимание: в каждом определении не должно быть пробелов до и после знака равенства (FOO=bar, а не FOO = bar).
Кроме того, вы можете задать переменные окружения самостоятельно и затем выполнить, например:
$ docker run -e VT_API_KEY -e SHODAN_API_KEY -it wtfis