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