OpenSquat

What: #tool
Where: #github
Who: Andre Tenreiro
When: since 11/10/2020
How: video

Сегодняшний гость - утилита OpenSquat, которая используется для поиска в списке зарегистрированных доменов имён похожих на домен вашей компании. Своего рода превентивная защита от фишинговых атак, омографов IDN, бит- и тайп-сквоттинга, также в списке возможностей данной утилиты есть проверка на открытые 80/TCP и 443/TCP, а в работе использует формулы вычисления расстояния Левенштейна (советский и российский математик) и сходство Джаро-Винклера.

По умолчанию подтягивает массив из доменных имён с сайта, но мне показалось, что там недостаёт зоны .ru. Поэтому было принято решение немного поменять конфигурационный файл, заменив “родную” ссылку на:

self.URL = ("https://domains-monitor.com/api/v1/$TOKEN/get/dailyupdate/list/text/")

Токен API можно получить, зарегистрировавшись на сайте domains-monitor.com, временной интервал выгрузки и её формат выбрать по своему усмотрению. По итогам, мы ведём поиск по 1,5к+ зонам, включая совсем уж редкие.

Далее, есть возможность отправлять запросы к VT, дабы проверять репутацию доменного имени, однако, по дефолту, обращаясь к https://www.virustotal.com/ui/domain/ результат будет один:

{'error': {'code': 'NotFoundError', 'message': 'Resource not found.'}}

в ответ на запрос любого домена, не важно какая у того репутация. В связи с этим, опять меняем исходный код, расширяя функциональность OpenSquat работой с API VT (ограничения бесплатной версии: 4 запроса в минуту и не более 500 запросов в день).

Корректировки:

self.URL = "https://www.virustotal.com/api/v3/domains/" + self.domain

headers = {
"X-Apikey": "$APIKEY"
}

malicious = (
self.content
['data']
['attributes']
['last_analysis_stats']
['malicious'] )

Готово, вы восхитительны 😊

Последним этапом планируем в cron ежедневную задачу на запуск скрипта и мониторим раз в день results.txt