Як ви гадаєте, як можна зібрати піддомени сайту? Багато хто відповість: усе просто — брутиш їх, закидаєш у subfinder і отримуєш результат. Але, правду кажучи, такий результат буде досить посереднім. У цій статті я хочу навчити вас, як правильно збирати піддомени з максимальною ефективністю.

Увага

Ця стаття не містить закликів до порушення законодавства. Автор не несе відповідальності за можливі дії третіх осіб, вчинені на основі прочитаного.

Навіщо збирати піддомени?

Питання насправді риторичне. Більше піддоменів — більше можливостей:

  • Subdomain Takeover: Збільшується шанс знайти вразливість захоплення піддомену. Для любителів фішингу та спаму така знахідка — на вагу золота.
  • Більше вразливостей: При детальній розвідці є шанс знайти якийсь забутий, старий субдомен з потенційними проблемами безпеки.
  • Прихований функціонал: На піддоменах часто розміщують корпоративні панелі адміністрування. Розробники думають, що так їх ніхто не знайде, але вони дуже помиляються.

Найефективніші методи пошуку

Дозвольте показати вам найцікавіші методи збору, якими я завжди користуюся.

1. Брутфорс (Brute Force)

Для якісного брутфорсу я буду використовувати найкращий, на мою думку, фаззер FFUF та потужний словник від Assetnote. Покопавшись у `--help`, я зміг зібрати таку команду:

bashffuf -u https://vapan.org -w словник.txt -H "Host: FUZZ.vapan.org" -mc 200,302,403,500 -o ffuf_result.json -t 280 -timeout 25 -ignore-body -http2 -rate 40

Словник я взяв звідси: https://wordlists-cdn.assetnote.io/data/manual/2m-subdomains.txt. Запускаємо і нехай FFUF працює у фоні, а ми продовжимо збір.

Приклад роботи FFUF у терміналі
FFUF знаходить піддомени

2. Скрипт Subdomz

Скрипт Subdomz
Скрипт Subdomz на Git

Subdomz — це свого роду скрипт-рятівник, найкращий у своєму класі. Він використовує великий список інструментів та виконує сканування за їхньою допомогою. Після завершення сканування, скрипт перевіряє знайдені піддомени через httpx та очищає від дублікатів. Дуже зручно.

3. Пошук за Favicon

Favicon — це іконка сторінки. Особливість цієї дрібної іконки в тому, що вона має унікальне числове значення хешу. Завдяки цьому ми можемо знайти сайти, які використовують такий самий favicon.

Приклад favicon
Приклад favicon

Давайте отримаємо цифровий хеш vapan.org і проведемо розвідку за ним. Шлях до favicon майже завжди лежить у корені сайту (`сайт/favicon.ico`).

pythonpython3 -c "import mmh3,requests,codecs,sys; print(mmh3.hash(codecs.encode(requests.get(sys.argv[1]).content, 'base64')))" "https://vapan.org/favicon.ico"
Приклад скрипта для отримання favicon
Результат роботи скрипта для отримання favicon

Тепер для розвідки нам знадобляться пошукові системи, такі як Shodan та Zoomeye. Якщо у двох сайтів однакова іконка, значить, вони якось пов'язані. Якщо у `blog.site.com` favicon має хеш -1000000000, то у `admin.blog.site.com` з великою ймовірністю буде такий самий.

Пошуковий запит для Shodan: `http.favicon.hash:<числове_значення>`

Результати пошуку за хешем favicon у Shodan
Пошук у Shodan за Favicon

Тут описано лише 3 способи з десятків інших. Якщо ця стаття сподобається, надалі я випущу більш детальну.