External Recon Methodology

Reading time: 27 minutes

tip

Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Підтримайте HackTricks

Виявлення активів

Вам сказали, що все, що належить якійсь компанії, знаходиться в межах обсягу, і ви хочете з'ясувати, що насправді належить цій компанії.

Метою цього етапу є отримання всіх компаній, що належать головній компанії, а потім всіх активів цих компаній. Для цього ми будемо:

  1. Знайти придбання головної компанії, це дасть нам компанії в межах обсягу.
  2. Знайти ASN (якщо є) кожної компанії, це дасть нам діапазони IP, що належать кожній компанії.
  3. Використати зворотні whois запити для пошуку інших записів (імен організацій, доменів...) пов'язаних з першим (це можна робити рекурсивно).
  4. Використати інші техніки, такі як фільтри shodan org та ssl, для пошуку інших активів (трик ssl можна робити рекурсивно).

Придбання

По-перше, нам потрібно знати, які інші компанії належать головній компанії.
Один з варіантів - відвідати https://www.crunchbase.com/, пошукати головну компанію і натиснути на "придбання". Там ви побачите інші компанії, придбані головною.
Інший варіант - відвідати сторінку Вікіпедії головної компанії та знайти придбання.

Добре, на цьому етапі ви повинні знати всі компанії в межах обсягу. Давайте з'ясуємо, як знайти їх активи.

ASN

Номер автономної системи (ASN) - це унікальний номер, призначений автономній системі (AS) Управлінням присвоєння номерів Інтернету (IANA).
AS складається з блоків IP-адрес, які мають чітко визначену політику доступу до зовнішніх мереж і адмініструються однією організацією, але можуть складатися з кількох операторів.

Цікаво дізнатися, чи компанія призначила будь-який ASN, щоб знайти її діапазони IP. Було б цікаво провести тест на вразливість проти всіх хостів в межах обсягу та шукати домени в цих IP.
Ви можете шукати за назвою компанії, за IP або за доменом на https://bgp.he.net/.
Залежно від регіону компанії, ці посилання можуть бути корисними для збору додаткових даних: AFRINIC (Африка), Arin(Північна Америка), APNIC (Азія), LACNIC (Латинська Америка), RIPE NCC (Європа). В будь-якому випадку, ймовірно, вся корисна інформація (діапазони IP та Whois) вже з'являється за першим посиланням.

bash
#You can try "automate" this with amass, but it's not very recommended
amass intel -org tesla
amass intel -asn 8911,50313,394161

Також, BBOT's підрахунок піддоменів автоматично агрегує та підсумовує ASN в кінці сканування.

bash
bbot -t tesla.com -f subdomain-enum
...
[INFO] bbot.modules.asn: +----------+---------------------+--------------+----------------+----------------------------+-----------+
[INFO] bbot.modules.asn: | AS394161 | 8.244.131.0/24      | 5            | TESLA          | Tesla Motors, Inc.         | US        |
[INFO] bbot.modules.asn: +----------+---------------------+--------------+----------------+----------------------------+-----------+
[INFO] bbot.modules.asn: | AS16509  | 54.148.0.0/15       | 4            | AMAZON-02      | Amazon.com, Inc.           | US        |
[INFO] bbot.modules.asn: +----------+---------------------+--------------+----------------+----------------------------+-----------+
[INFO] bbot.modules.asn: | AS394161 | 8.45.124.0/24       | 3            | TESLA          | Tesla Motors, Inc.         | US        |
[INFO] bbot.modules.asn: +----------+---------------------+--------------+----------------+----------------------------+-----------+
[INFO] bbot.modules.asn: | AS3356   | 8.32.0.0/12         | 1            | LEVEL3         | Level 3 Parent, LLC        | US        |
[INFO] bbot.modules.asn: +----------+---------------------+--------------+----------------+----------------------------+-----------+
[INFO] bbot.modules.asn: | AS3356   | 8.0.0.0/9           | 1            | LEVEL3         | Level 3 Parent, LLC        | US        |
[INFO] bbot.modules.asn: +----------+---------------------+--------------+----------------+----------------------------+-----------+

Ви можете знайти IP-діапазони організації також за допомогою http://asnlookup.com/ (він має безкоштовний API).
Ви можете знайти IP та ASN домену, використовуючи http://ipv4info.com/.

Шукання вразливостей

На цьому етапі ми знаємо всі активи в межах обсягу, тому, якщо вам дозволено, ви можете запустити деякі сканери вразливостей (Nessus, OpenVAS) на всіх хостах.
Також ви можете запустити деякі сканування портів або використовувати сервіси, такі як shodan для знаходження відкритих портів і в залежності від того, що ви знайдете, вам слід ознайомитися з цією книгою, щоб дізнатися, як провести пентест кількох можливих сервісів.
Також варто згадати, що ви можете підготувати деякі списки стандартних імен користувачів та паролів і спробувати брутфорсити сервіси за допомогою https://github.com/x90skysn3k/brutespray.

Домені

Ми знаємо всі компанії в межах обсягу та їх активи, час знайти домени в межах обсягу.

Зверніть увагу, що в наступних запропонованих техніках ви також можете знайти піддомени, і цю інформацію не слід недооцінювати.

Перш за все, вам слід шукати основний домен(и) кожної компанії. Наприклад, для Tesla Inc. це буде tesla.com.

Зворотний DNS

Оскільки ви знайшли всі IP-діапазони доменів, ви можете спробувати виконати зворотні DNS-запити на цих IP, щоб знайти більше доменів в межах обсягу. Спробуйте використовувати деякий DNS-сервер жертви або деякий відомий DNS-сервер (1.1.1.1, 8.8.8.8)

bash
dnsrecon -r <DNS Range> -n <IP_DNS>   #DNS reverse of all of the addresses
dnsrecon -d facebook.com -r 157.240.221.35/24 #Using facebooks dns
dnsrecon -r 157.240.221.35/24 -n 1.1.1.1 #Using cloudflares dns
dnsrecon -r 157.240.221.35/24 -n 8.8.8.8 #Using google dns

Для цього адміністратор повинен вручну увімкнути PTR.
Ви також можете використовувати онлайн-інструмент для цієї інформації: http://ptrarchive.com/

Зворотний Whois (loop)

У whois ви можете знайти багато цікавої інформації, такої як назва організації, адреса, електронні адреси, номери телефонів... Але ще більш цікаво, що ви можете знайти більше активів, пов'язаних з компанією, якщо ви виконаєте зворотні whois запити за будь-яким з цих полів (наприклад, інші реєстрації whois, де з'являється та сама електронна адреса).
Ви можете використовувати онлайн-інструменти, такі як:

Ви можете автоматизувати це завдання, використовуючи DomLink (потрібен ключ API whoxy).
Ви також можете виконати деяке автоматичне виявлення зворотного whois за допомогою amass: amass intel -d tesla.com -whois

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

Трекери

Якщо ви знайдете той самий ID того самого трекера на 2 різних сторінках, ви можете припустити, що обидві сторінки управляються однією командою.
Наприклад, якщо ви бачите той самий ID Google Analytics або той самий ID Adsense на кількох сторінках.

Є кілька сторінок і інструментів, які дозволяють вам шукати за цими трекерами та іншими:

Favicon

Чи знали ви, що ми можемо знайти пов'язані домени та піддомени нашої цілі, шукаючи той самий хеш значка favicon? Це саме те, що робить інструмент favihash.py, створений @m4ll0k2. Ось як його використовувати:

bash
cat my_targets.txt | xargs -I %% bash -c 'echo "http://%%/favicon.ico"' > targets.txt
python3 favihash.py -f https://target/favicon.ico -t targets.txt -s

favihash - виявлення доменів з однаковим хешем значка favicon

Простими словами, favihash дозволить нам виявити домени, які мають однаковий хеш значка favicon, як у нашої цілі.

Більше того, ви також можете шукати технології, використовуючи хеш значка, як пояснено в цьому блозі. Це означає, що якщо ви знаєте хеш значка favicon вразливої версії веб-технології, ви можете шукати в shodan і знайти більше вразливих місць:

bash
shodan search org:"Target" http.favicon.hash:116323821 --fields ip_str,port --separator " " | awk '{print $1":"$2}'

Ось як ви можете обчислити хеш фавікону веб-сайту:

python
import mmh3
import requests
import codecs

def fav_hash(url):
response = requests.get(url)
favicon = codecs.encode(response.content,"base64")
fhash = mmh3.hash(favicon)
print(f"{url} : {fhash}")
return fhash

Авторське право / Унікальний рядок

Шукайте на веб-сторінках рядки, які можуть бути спільними для різних веб-сайтів в одній організації. Рядок авторського права може бути хорошим прикладом. Потім шукайте цей рядок у google, в інших браузерах або навіть у shodan: shodan search http.html:"Copyright string"

Час CRT

Зазвичай є завдання cron, таке як

bash
# /etc/crontab
37 13 */10 * * certbot renew --post-hook "systemctl reload nginx"

щоб оновити всі сертифікати доменів на сервері. Це означає, що навіть якщо CA, що використовується для цього, не встановлює час, коли він був згенерований, у часі дії, можливо знайти домени, що належать одній компанії, у журналах прозорості сертифікатів.
Перегляньте цей опис для отримання додаткової інформації.

Інформація про Mail DMARC

Ви можете використовувати веб-сайт, такий як https://dmarc.live/info/google.com, або інструмент, такий як https://github.com/Tedixx/dmarc-subdomains, щоб знайти домени та піддомени, що мають однакову інформацію DMARC.

Пасивне захоплення

Очевидно, що поширеною практикою є призначення піддоменів IP-адресам, які належать постачальникам хмарних послуг, і в якийсь момент втратити цю IP-адресу, але забути видалити DNS-запис. Тому, просто створивши VM у хмарі (такій як Digital Ocean), ви фактично захоплюєте деякі піддомени.

Цей пост пояснює історію про це і пропонує скрипт, який створює VM у DigitalOcean, отримує IPv4 нової машини і шукає в Virustotal записи піддоменів, що вказують на неї.

Інші способи

Зверніть увагу, що ви можете використовувати цю техніку для виявлення нових доменних імен щоразу, коли знаходите новий домен.

Shodan

Як ви вже знаєте, назву організації, що володіє IP-простором. Ви можете шукати за цими даними в shodan, використовуючи: org:"Tesla, Inc." Перевірте знайдені хости на наявність нових несподіваних доменів у сертифікаті TLS.

Ви можете отримати TLS сертифікат головної веб-сторінки, отримати назву організації і потім шукати цю назву в TLS сертифікатах всіх веб-сторінок, відомих shodan, з фільтром: ssl:"Tesla Motors" або використати інструмент, такий як sslsearch.

Assetfinder

Assetfinder - це інструмент, який шукає домени, пов'язані з основним доменом та піддоменами з них, досить вражаюче.

Шукання вразливостей

Перевірте на наявність захоплення домену. Можливо, якась компанія використовує якийсь домен, але вони втратили право власності. Просто зареєструйте його (якщо достатньо дешевий) і дайте знати компанії.

Якщо ви знайдете будь-який домен з IP, відмінним від тих, які ви вже знайшли під час виявлення активів, вам слід виконати базове сканування вразливостей (використовуючи Nessus або OpenVAS) і деяке сканування портів з nmap/masscan/shodan. Залежно від того, які сервіси працюють, ви можете знайти в цьому посібнику деякі хитрощі для "атаки" на них.
Зверніть увагу, що іноді домен розміщений на IP, який не контролюється клієнтом, тому він не входить до сфери дії, будьте обережні.

Піддомени

Ми знаємо всі компанії в межах сфери дії, всі активи кожної компанії та всі домени, пов'язані з компаніями.

Час знайти всі можливі піддомени кожного знайденого домену.

tip

Зверніть увагу, що деякі інструменти та техніки для знаходження доменів також можуть допомогти знайти піддомени.

DNS

Спробуємо отримати піддомени з DNS записів. Ми також повинні спробувати Zone Transfer (якщо вразливий, ви повинні про це повідомити).

bash
dnsrecon -a -d tesla.com

OSINT

Найшвидший спосіб отримати багато піддоменів - це пошук у зовнішніх джерелах. Найбільш використовувані tools це наступні (для кращих результатів налаштуйте API ключі):

bash
# subdomains
bbot -t tesla.com -f subdomain-enum

# subdomains (passive only)
bbot -t tesla.com -f subdomain-enum -rf passive

# subdomains + port scan + web screenshots
bbot -t tesla.com -f subdomain-enum -m naabu gowitness -n my_scan -o .
bash
amass enum [-active] [-ip] -d tesla.com
amass enum -d tesla.com | grep tesla.com # To just list subdomains
bash
# Subfinder, use -silent to only have subdomains in the output
./subfinder-linux-amd64 -d tesla.com [-silent]
bash
# findomain, use -silent to only have subdomains in the output
./findomain-linux -t tesla.com [--quiet]
bash
python3 oneforall.py --target tesla.com [--dns False] [--req False] [--brute False] run
bash
assetfinder --subs-only <domain>
bash
# It requires that you create a sudomy.api file with API keys
sudomy -d tesla.com
vita -d tesla.com
bash
theHarvester -d tesla.com -b "anubis, baidu, bing, binaryedge, bingapi, bufferoverun, censys, certspotter, crtsh, dnsdumpster, duckduckgo, fullhunt, github-code, google, hackertarget, hunter, intelx, linkedin, linkedin_links, n45ht, omnisint, otx, pentesttools, projectdiscovery, qwant, rapiddns, rocketreach, securityTrails, spyse, sublist3r, threatcrowd, threatminer, trello, twitter, urlscan, virustotal, yahoo, zoomeye"

Є інші цікаві інструменти/API, які, навіть якщо не спеціалізуються безпосередньо на знаходженні піддоменів, можуть бути корисними для їх знаходження, такі як:

bash
# Get list of subdomains in output from the API
## This is the API the crobat tool will use
curl https://sonar.omnisint.io/subdomains/tesla.com | jq -r ".[]"
bash
curl https://jldc.me/anubis/subdomains/tesla.com | jq -r ".[]"
bash
# Get Domains from rapiddns free API
rapiddns(){
curl -s "https://rapiddns.io/subdomain/$1?full=1" \
| grep -oE "[\.a-zA-Z0-9-]+\.$1" \
| sort -u
}
rapiddns tesla.com
bash
# Get Domains from crt free API
crt(){
curl -s "https://crt.sh/?q=%25.$1" \
| grep -oE "[\.a-zA-Z0-9-]+\.$1" \
| sort -u
}
crt tesla.com
  • gau: отримує відомі URL з Open Threat Exchange AlienVault, Wayback Machine та Common Crawl для будь-якого заданого домену.
bash
# Get subdomains from GAUs found URLs
gau --subs tesla.com | cut -d "/" -f 3 | sort -u
  • SubDomainizer & subscraper: Вони сканують веб, шукаючи JS файли та витягують піддомени звідти.
bash
# Get only subdomains from SubDomainizer
python3 SubDomainizer.py -u https://tesla.com | grep tesla.com

# Get only subdomains from subscraper, this already perform recursion over the found results
python subscraper.py -u tesla.com | grep tesla.com | cut -d " " -f
bash
# Get info about the domain
shodan domain <domain>
# Get other pages with links to subdomains
shodan search "http.html:help.domain.com"
bash
export CENSYS_API_ID=...
export CENSYS_API_SECRET=...
python3 censys-subdomain-finder.py tesla.com
bash
python3 DomainTrail.py -d example.com

Цей проект пропонує безкоштовно всі піддомени, пов'язані з програмами bug-bounty. Ви також можете отримати доступ до цих даних, використовуючи chaospy або навіть отримати доступ до обсягу, використаного цим проектом https://github.com/projectdiscovery/chaos-public-program-list

Ви можете знайти порівняння багатьох з цих інструментів тут: https://blog.blacklanternsecurity.com/p/subdomain-enumeration-tool-face-off

DNS Brute force

Спробуємо знайти нові піддомени, брутфорсуючи DNS-сервери, використовуючи можливі імена піддоменів.

Для цієї дії вам знадобляться деякі загальні списки слів піддоменів, такі як:

А також IP-адреси хороших DNS-резолверів. Щоб згенерувати список надійних DNS-резолверів, ви можете завантажити резолвери з https://public-dns.info/nameservers-all.txt і використовувати dnsvalidator для їх фільтрації. Або ви можете використовувати: https://raw.githubusercontent.com/trickest/resolvers/main/resolvers-trusted.txt

Найбільш рекомендовані інструменти для брутфорсу DNS:

  • massdns: Це був перший інструмент, який виконував ефективний брутфорс DNS. Він дуже швидкий, однак схильний до хибнопозитивних результатів.
bash
sed 's/$/.domain.com/' subdomains.txt > bf-subdomains.txt
./massdns -r resolvers.txt -w /tmp/results.txt bf-subdomains.txt
grep -E "tesla.com. [0-9]+ IN A .+" /tmp/results.txt
  • gobuster: Я думаю, що цей інструмент використовує лише 1 резолвер.
gobuster dns -d mysite.com -t 50 -w subdomains.txt
  • shuffledns є обгорткою навколо massdns, написаною на go, яка дозволяє вам перераховувати дійсні піддомени за допомогою активного брутфорсу, а також вирішувати піддомени з обробкою підстановок і простим підтримкою вводу-виводу.
shuffledns -d example.com -list example-subdomains.txt -r resolvers.txt
  • puredns: Він також використовує massdns.
puredns bruteforce all.txt domain.com
  • aiodnsbrute використовує asyncio для асинхронного брутфорсу доменних імен.
aiodnsbrute -r resolvers -w wordlist.txt -vv -t 1024 domain.com

Другий раунд брутфорсу DNS

Після того, як ви знайшли піддомени, використовуючи відкриті джерела та брутфорс, ви можете згенерувати варіації знайдених піддоменів, щоб спробувати знайти ще більше. Кілька інструментів корисні для цієї мети:

  • dnsgen: Дано домени та піддомени, генерує перестановки.
bash
cat subdomains.txt | dnsgen -
  • goaltdns: Задані домени та піддомени генерують перестановки.
  • Ви можете отримати перестановки goaltdns wordlist тут.
bash
goaltdns -l subdomains.txt -w /tmp/words-permutations.txt -o /tmp/final-words-s3.txt
  • gotator: Дано домени та піддомени, генерує перестановки. Якщо файл перестановок не вказано, gotator використає свій власний.
gotator -sub subdomains.txt -silent [-perm /tmp/words-permutations.txt]
  • altdns: Окрім генерації пермутацій піддоменів, він також може спробувати їх розв'язати (але краще використовувати попередньо згадані інструменти).
  • Ви можете отримати пермутації altdns wordlist тут.
altdns -i subdomains.txt -w /tmp/words-permutations.txt -o /tmp/asd3
  • dmut: Ще один інструмент для виконання перестановок, мутацій та змін піддоменів. Цей інструмент буде брутфорсити результат (він не підтримує dns wild card).
  • Ви можете отримати список слів для перестановок dmut тут.
bash
cat subdomains.txt | dmut -d /tmp/words-permutations.txt -w 100 \
--dns-errorLimit 10 --use-pb --verbose -s /tmp/resolvers-trusted.txt
  • alterx: На основі домену він генерує нові потенційні імена піддоменів на основі вказаних шаблонів, щоб спробувати виявити більше піддоменів.

Генерація розумних перестановок

  • regulator: Для отримання додаткової інформації прочитайте цей пост, але він в основному отримає основні частини з виявлених піддоменів і змішає їх, щоб знайти більше піддоменів.
bash
python3 main.py adobe.com adobe adobe.rules
make_brute_list.sh adobe.rules adobe.brute
puredns resolve adobe.brute --write adobe.valid
  • subzuf: subzuf є фуззером для брутфорсу піддоменів, поєднаним з надзвичайно простим, але ефективним алгоритмом, що керується відповідями DNS. Він використовує наданий набір вхідних даних, таких як спеціально підібраний список слів або історичні записи DNS/TLS, щоб точно синтезувати більше відповідних доменних імен і розширювати їх ще більше в циклі на основі інформації, зібраної під час сканування DNS.
echo www | subzuf facebook.com

Процес виявлення піддоменів

Перегляньте цей блог-пост, який я написав про те, як автоматизувати виявлення піддоменів з домену, використовуючи Trickest workflows, щоб мені не потрібно було вручну запускати купу інструментів на моєму комп'ютері:

https://trickest.com/blog/full-subdomain-discovery-using-workflow/

https://trickest.com/blog/full-subdomain-brute-force-discovery-using-workflow/

VHosts / Віртуальні хости

Якщо ви знайшли IP-адресу, що містить одну або кілька веб-сторінок, що належать піддоменам, ви можете спробувати знайти інші піддомени з веб-сайтами на цій IP-адресі, шукаючи в OSINT джерелах домени на IP або брутфорсити доменні імена VHost на цій IP-адресі.

OSINT

Ви можете знайти деякі VHosts на IP-адресах, використовуючи HostHunter або інші API.

Брутфорс

Якщо ви підозрюєте, що деякий піддомен може бути прихований на веб-сервері, ви можете спробувати його брутфорсити:

bash
ffuf -c -w /path/to/wordlist -u http://victim.com -H "Host: FUZZ.victim.com"

gobuster vhost -u https://mysite.com -t 50 -w subdomains.txt

wfuzz -c -w /usr/share/wordlists/SecLists/Discovery/DNS/subdomains-top1million-20000.txt --hc 400,404,403 -H "Host: FUZZ.example.com" -u http://example.com -t 100

#From https://github.com/allyshka/vhostbrute
vhostbrute.py --url="example.com" --remoteip="10.1.1.15" --base="www.example.com" --vhosts="vhosts_full.list"

#https://github.com/codingo/VHostScan
VHostScan -t example.com

note

З цією технікою ви навіть можете отримати доступ до внутрішніх/прихованих кінцевих точок.

CORS Brute Force

Іноді ви можете знайти сторінки, які повертають лише заголовок Access-Control-Allow-Origin, коли в заголовку Origin встановлено дійсний домен/піддомен. У цих сценаріях ви можете зловживати цією поведінкою, щоб виявити нові піддомени.

bash
ffuf -w subdomains-top1million-5000.txt -u http://10.10.10.208 -H 'Origin: http://FUZZ.crossfit.htb' -mr "Access-Control-Allow-Origin" -ignore-body

Брутфорс Бакетів

Під час пошуку субдоменів звертайте увагу, чи вказують вони на будь-який тип бакету, і в такому випадку перевірте дозволи.
Також, оскільки на цьому етапі ви будете знати всі домени в межах обсягу, спробуйте брутфорсити можливі імена бакетів і перевірити дозволи.

Моніторинг

Ви можете моніторити, чи створюються нові субдомени домену, відстежуючи журнали прозорості сертифікатів, що робить sublert.

Пошук вразливостей

Перевірте на можливі взяття субдоменів під контроль.
Якщо субдомен вказує на якийсь S3 бакет, перевірте дозволи.

Якщо ви знайдете будь-який субдомен з IP, відмінним від тих, що ви вже знайшли під час виявлення активів, вам слід виконати базове сканування вразливостей (використовуючи Nessus або OpenVAS) і деяке сканування портів з nmap/masscan/shodan. Залежно від того, які сервіси працюють, ви можете знайти в цьому посібнику деякі трюки для "атаки" на них.
Зверніть увагу, що іноді субдомен розміщується на IP, який не контролюється клієнтом, тому він не входить в обсяг, будьте обережні.

IP-адреси

На початкових етапах ви могли знайти деякі діапазони IP, домени та субдомени.
Час зібрати всі IP з цих діапазонів та для доменів/субдоменів (DNS запити).

Використовуючи сервіси з наступних безкоштовних API, ви також можете знайти попередні IP, які використовувалися доменами та субдоменами. Ці IP можуть все ще належати клієнту (і можуть дозволити вам знайти обхідні шляхи CloudFlare)

Ви також можете перевірити домени, що вказують на конкретну IP-адресу, використовуючи інструмент hakip2host

Пошук вразливостей

Скануйте порти всіх IP, які не належать CDN (оскільки ви, ймовірно, не знайдете нічого цікавого там). У виявлених запущених сервісах ви можете знайти вразливості.

Знайдіть посібник про те, як сканувати хости.

Полювання на веб-сервери

Ми знайшли всі компанії та їх активи, і ми знаємо діапазони IP, домени та субдомени в межах обсягу. Час шукати веб-сервери.

На попередніх етапах ви, ймовірно, вже виконали деяке розвідку виявлених IP та доменів, тому ви могли вже знайти всі можливі веб-сервери. Однак, якщо ви цього не зробили, ми зараз розглянемо деякі швидкі трюки для пошуку веб-серверів в межах обсягу.

Зверніть увагу, що це буде орієнтовано на виявлення веб-додатків, тому вам слід виконати сканування вразливостей та сканування портів також (якщо це дозволено обсягом).

Швидкий метод для виявлення відкритих портів, пов'язаних з веб серверами, використовуючи masscan можна знайти тут.
Ще один зручний інструмент для пошуку веб-серверів - це httprobe, fprobe та httpx. Ви просто передаєте список доменів, і він спробує підключитися до порту 80 (http) та 443 (https). Додатково, ви можете вказати спробувати інші порти:

bash
cat /tmp/domains.txt | httprobe #Test all domains inside the file for port 80 and 443
cat /tmp/domains.txt | httprobe -p http:8080 -p https:8443 #Check port 80, 443 and 8080 and 8443

Скриншоти

Тепер, коли ви виявили всі веб-сервери, що входять до сфери (серед IP компанії та всіх доменів і піддоменів), ви, напевно, не знаєте, з чого почати. Тож давайте спростимо і просто почнемо робити скриншоти всіх з них. Просто подивившись на головну сторінку, ви можете знайти дивні кінцеві точки, які більш схильні бути вразливими.

Для реалізації запропонованої ідеї ви можете використовувати EyeWitness, HttpScreenshot, Aquatone, Shutter, Gowitness або webscreenshot.

Більше того, ви можете використовувати eyeballer, щоб переглянути всі скриншоти і вказати, що, ймовірно, міститиме вразливості, а що ні.

Публічні хмарні активи

Щоб знайти потенційні хмарні активи, що належать компанії, вам слід почати з переліку ключових слів, які ідентифікують цю компанію. Наприклад, для криптокомпанії ви можете використовувати такі слова: "crypto", "wallet", "dao", "<domain_name>", <"subdomain_names">.

Вам також знадобляться словники поширених слів, що використовуються в бакетах:

Потім, з цими словами, ви повинні згенерувати пермутації (перевірте Другий раунд DNS брутфорсу для отримання додаткової інформації).

З отриманими словниками ви можете використовувати такі інструменти, як cloud_enum, CloudScraper, cloudlist або S3Scanner.

Пам'ятайте, що, шукаючи хмарні активи, вам слід шукати більше, ніж просто бакети в AWS.

Шукання вразливостей

Якщо ви знайдете такі речі, як відкриті бакети або хмарні функції, вам слід доступитися до них і спробувати подивитися, що вони вам пропонують і чи можете ви їх зловживати.

Електронні листи

З доменами та піддоменами в межах сфери у вас, по суті, є все, що вам потрібно, щоб почати шукати електронні листи. Це API та інструменти, які найкраще працювали для мене, щоб знайти електронні листи компанії:

Шукання вразливостей

Електронні листи знадобляться пізніше для брутфорсу веб-логінів та авторизаційних сервісів (таких як SSH). Крім того, вони потрібні для фішингу. Більше того, ці API нададуть вам ще більше інформації про особу, що стоїть за електронною поштою, що корисно для фішингової кампанії.

Витоки облікових даних

З доменами, піддоменами та електронними листами ви можете почати шукати облікові дані, які були витікали в минулому і належать цим електронним листам:

Шукання вразливостей

Якщо ви знайдете дійсні витіклі облікові дані, це дуже легка перемога.

Витоки секретів

Витоки облікових даних пов'язані з злом компаній, де конфіденційна інформація була витікала та продавалася. Однак компанії можуть постраждати від інших витоків, інформація про які не міститься в цих базах даних:

Витоки Github

Облікові дані та API можуть бути витікали в публічних репозиторіях компанії або користувачів, які працюють на цю компанію в GitHub.
Ви можете використовувати інструмент Leakos, щоб завантажити всі публічні репозиторії організації та її розробників і автоматично запустити gitleaks на них.

Leakos також можна використовувати для запуску gitleaks проти всього тексту, наданого URL-адресами, оскільки іноді веб-сторінки також містять секрети.

Dork'и Github

Перевірте також цю сторінку на предмет потенційних dork'ів github, які ви також могли б шукати в організації, яку ви атакуєте:

Github Dorks & Leaks

Витоки Pastes

Іноді зловмисники або просто працівники публікують вміст компанії на сайті паст. Це може або не може містити конфіденційну інформацію, але це дуже цікаво шукати.
Ви можете використовувати інструмент Pastos, щоб шукати більш ніж на 80 сайтах паст одночасно.

Dork'и Google

Старі, але золоті dork'и Google завжди корисні для знаходження викритої інформації, якої там не повинно бути. Єдина проблема в тому, що google-hacking-database містить кілька тисяч можливих запитів, які ви не можете виконати вручну. Тож ви можете взяти свої улюблені 10 або ви можете використовувати інструмент, такий як Gorks для їх виконання.

Зверніть увагу, що інструменти, які намагаються виконати всю базу даних, використовуючи звичайний браузер Google, ніколи не закінчаться, оскільки Google заблокує вас дуже-дуже швидко.

Шукання вразливостей

Якщо ви знайдете дійсні витіклі облікові дані або токени API, це дуже легка перемога.

Публічні вразливості коду

Якщо ви виявили, що компанія має відкритий код, ви можете проаналізувати його та шукати вразливості в ньому.

Залежно від мови існують різні інструменти, які ви можете використовувати:

Source code Review / SAST Tools

Існують також безкоштовні сервіси, які дозволяють вам сканувати публічні репозиторії, такі як:

Методологія пентестингу веб

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

Я також хочу зробити особливе посилання на розділ Автоматизовані сканери веб-відкритого коду, оскільки, якщо ви не повинні очікувати, що вони знайдуть вам дуже чутливі вразливості, вони стануть у нагоді для реалізації їх у робочих процесах, щоб отримати деяку початкову веб-інформацію.

Рекапітуляція

Вітаємо! На цьому етапі ви вже виконали всі основні перерахування. Так, це базове, оскільки можна виконати ще багато перерахувань (пізніше побачимо більше трюків).

Отже, ви вже:

  1. Знайшли всі компанії в межах сфери
  2. Знайшли всі активи, що належать компаніям (і виконали деяке сканування вразливостей, якщо це в межах сфери)
  3. Знайшли всі домени, що належать компаніям
  4. Знайшли всі піддомени доменів (чи є якісь піддоменні захоплення?)
  5. Знайшли всі IP (з і не з CDN) в межах сфери.
  6. Знайшли всі веб-сервери та зробили скриншот з них (чи є щось дивне, що варто більш детального розгляду?)
  7. Знайшли всі потенційні публічні хмарні активи, що належать компанії.
  8. Електронні листи, витоки облікових даних та витоки секретів, які можуть дати вам велику перемогу дуже легко.
  9. Пентестинг всіх веб-сайтів, які ви знайшли

Повні автоматичні інструменти розвідки

Існує кілька інструментів, які виконуватимуть частину запропонованих дій проти заданої сфери.

Посилання

tip

Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Підтримайте HackTricks