Сразу оговорюсь ман не мой. Просто попал мне в руки, но тему проверял. Работает. И всегда будет работать. Поехали!
Добрый день.
Сегодня я бы вам хотел рассказать об одном методе добычи чужих доменов. Данный метод уже не является приватным и уже пару лет как используется за бугром но на наших ресурсах данная схема еще публично не обсуждалась. В данной статье я попытаюсь объяснить все по минимуму, поэтому для системных администраторов некоторые вещи могут показаться некорректными. В статье будут предоставлены примеры для линукса.
Для тех кто имеет базовые понятия как работают домены и хотят понять саму суть:
мы будем искать nameserverа к которым плохо привязаны домены и искать мы будем ответы со статусом "SERVFAIL".
Чтоб не возникало много вопросов я попытаюсь сразу ответить на пару самых важных.
Где взять актуальные списки доменов?
Для .RU/.РФ/.SU: https://statonline.ru/ (нужна только регистрация)
Для .COM/.NAME: https://www.verisign.com/en_US/channel-reso...ile/index.xhtml (нужно заполнить форму и описание причины зачем вам доступ к доменам)
Для .NET и всех остальных: https://czds.icann.org/en (нужна регистрация и описание причины зачем вам доступ к доменам для каждой из запрошенной доменной зоны)
Есть еще много разных сайтов где предоставляют информацию о доменах, но самые обновленные находятся на сайтах выше.
Кроме AFRAID.ORG есть еще где можно использовать чужые домены ?
Да, таких сервисов очень много, весь список я оглашать не буду, так как сам его полностью не знаю но их можно с легкостью находить если у вас будет файл доменных имен.
Есть ли домены с трафиком?
Да, иногда попадаются и домены с траффиком, администраторы ресурсов могут это заметить.
На какой операционке это можно сделать ?
Можно сделать на любом линуксе или униксе, но в данной статье будет использоваться убунта и чтоб поставить все нужное для работы нужно сделать следующее:
Код
apt-get install dnsutils parallel
Для начала нам нужно понять как работают домены. Когда мы регистрируем домен мы прописываем сервер имен(nameserver) к которому будут обращаться пользователи когда захотят узнать его айпи адрес. Для примера возьмем домен ya.ru.
Если мы выполним команду:
Код
whois ya.ru
мы увидим следующею информацию:
Код
domain: YA.RU
nserver: ns1.yandex.ru.
nserver: ns2.yandex.ru.
state: REGISTERED, DELEGATED, VERIFIED
org: YANDEX, LLC.
registrar: RU-CENTER-RU
admin-contact: https://www.nic.ru/whois
created: 1999-07-12T14:40:22Z
paid-till: 2018-07-31T21:00:00Z
free-date: 2018-09-01
source: TCI
Для нас самая важная информация это:
Код
nserver: ns1.yandex.ru.
nserver: ns2.yandex.ru.
Теперь чтоб сделать сам запрос и узнать айпи адрес домена ya.ru мы сделаем следующую команду:
Код
dig ya.ru @ns1.yandex.ru
И увидим следующий результат(лишняя информация была удалена):
Код
...
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 11
Для реализации идеи нам важен статус, в данном случае "NOERROR" что означает что ошибки не было.
Теперь давайте возьмем домен LITERSS.com, и сделаем следующую команду:
Код
whois LITERSS.com
И важная для нас часть:
Код
Name Server: NS1.FROGMA.COM
Name Server: NS2.AFRAID.ORG
AFRAID.ORG это сервис который бесплатно предоставляет nameservera, и он был выбран не случайно, данный сервис имеет не малое количество клиентов и привязанных к нему доменов.
Теперь же посмотрим что нам даст следующая команда:
Код
dig LITERSS.com @NS2.AFRAID.ORG
а даст она нам следующее:
Код
;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 11
Как видно, статус у нас теперь "SERVFAIL" что означает что произошла ошибка на стороне сервера. Этот статус мы и будем искать, так как в большинстве случаев это означает что домен не привязан в самой админке. Теперь мы можем добавить домен в админку в своем аккаунте и уже делать с ним что захотим.
Теперь давайте сделаем это массово.
Как пример возьмем файл доменной зоны .mobi, небольшой кусок чтоб понять что в нем:
Цитата
0120-365-024.mobi. 86400 in ns ns1.dns.ne.jp.
0120-365-024.mobi. 86400 in ns ns2.dns.ne.jp.
0120246666.mobi. 86400 in ns dns1.onamae.com.
0120246666.mobi. 86400 in ns dns2.onamae.com.
0120404040.mobi. 86400 in ns dns1.onamae.com.
0120404040.mobi. 86400 in ns dns2.onamae.com.
0122.mobi. 86400 in ns ns1-show.myhostadmin.net.
0122.mobi. 86400 in ns ns2-show.myhostadmin.net.
0123.mobi. 86400 in ns ns31.domaincontrol.com.
0123.mobi. 86400 in ns ns32.domaincontrol.com.
0123456.mobi. 86400 in ns dns15.hichina.com.
0123456.mobi. 86400 in ns dns16.hichina.com.
0123456789.mobi. 86400 in ns ns1.dynadot.com.
0123456789.mobi. 86400 in ns ns2.dynadot.com.
0126.mobi. 86400 in ns ns1.above.com.
0126.mobi. 86400 in ns ns2.above.com.
Чтоб у нас все работало, представим что файл зоны находиться в файле "1.zone".
Код
cat 1.zone |grep -P "in\tns\t" |awk '{print "echo -n "$1,$5 " && dig "$1,$5"|grep status"}' > exec.sh
Эта команда читает файл зоны(cat 1.zone) и вытягивает из него домен и нейм сервер(grep -P "in\tns\t"), после чего печатает команду которой мы будем проверять домен (awk '{print "echo -n "$1,$5 " && dig "$1,$5"|grep status"}' ) в файл exec.sh (> exec.sh).
Код
parallel -j20 :::: exec.sh > output.txt
Эта команда читает файл с командами(exec.sh) которые нужно запустить одновременно и записывает(parallel -j20 :::: exec.sh) их вывод в файл output.txt(> output.txt).
Тут можно изменить количество потоков, все зависит от сервера, на некоторых можно и 300 запустить, на других не более 50.
Код
cat output.txt |grep SERVFAIL
Эта команда читает файл с выводом и ищет интересующие нас домены(cat output.txt |grep SERVFAIL).
После чего у нас будет такой вывод:
Код
0123456.mobi. dns16.hichina.com.;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 46723
0123456.mobi. dns15.hichina.com.;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 39801
Его можно укоротить и искать только по тем серверам которые мы знаем как работают, например делая следующею команду:
Код
cat output.txt |grep SERVFAIL |grep -i AFRAID.ORG
Но если интересно поискать что то новенькое то в гугле можно поискать где находится админка hichina.com, в первом же ответе от гугла мы узнаем что это "HiChina domain management system" и админка у них http://dmp.www.net.cn/.
Приятных размышлений.