Методологія зовнішньої розвідки

Tip

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

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

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

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

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

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

Acquisitions

По-перше, нам потрібно знати, які інші компанії належать головній компанії.
Один варіант — відвідати https://www.crunchbase.com/, search для main company, і click на “acquisitions”. Там ви побачите інші компанії, придбані головною.
Інший варіант — відвідати сторінку Wikipedia головної компанії і шукати acquisitions.
Для публічних компаній перевірте SEC/EDGAR filings, сторінки investor relations, або місцеві корпоративні реєстри (наприклад, Companies House у Великій Британії).
Для глобальних корпоративних дерев і дочірніх компаній спробуйте OpenCorporates (https://opencorporates.com/) та базу даних GLEIF LEI (https://www.gleif.org/).

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

ASNs

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

Цікавим є з’ясувати, чи компанії призначено який-небудь ASN, щоб знайти її IP ranges. Варто виконати vulnerability test проти всіх hosts у межах scope та look for domains на цих IP.
Ви можете search за назвою компанії, за IP або за domain на https://bgp.he.net/, https://bgpview.io/ або https://ipinfo.io/.
Залежно від регіону компанії ці links можуть бути корисними для збору додаткових даних: AFRINIC (Africa), Arin(North America), APNIC (Asia), LACNIC (Latin America), RIPE NCC (Europe). У будь-якому випадку, ймовірно, вся корисна інформація (IP ranges and Whois) вже з’являється на першому сайті.

#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 enumeration автоматично агрегує та підсумовує ASNs наприкінці сканування.

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: +----------+---------------------+--------------+----------------+----------------------------+-----------+

You can find the IP ranges of an organisation also using http://asnlookup.com/ (it has free API).
You can find the IP and ASN of a domain using http://ipv4info.com/.

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

At this point we know all the assets inside the scope, so if you are allowed you could launch some vulnerability scanner (Nessus, OpenVAS, Nuclei) over all the hosts.
Also, you could launch some port scans or use services like Shodan, Censys, or ZoomEye to find open ports and depending on what you find you should take a look in this book to how to pentest several possible services running.
Also, It could be worth it to mention that you can also prepare some default username and passwords lists and try to bruteforce services with https://github.com/x90skysn3k/brutespray.

Домени

Ми знаємо всі компанії в межах scope та їхні активи — час знайти домени в межах scope.

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

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

Reverse DNS

As you have found all the IP ranges of the domains you could try to perform reverse dns lookups on those IPs to find more domains inside the scope. Try to use some dns server of the victim or some well-known dns server (1.1.1.1, 8.8.8.8)

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/.
Для великих діапазонів корисні інструменти, такі як massdns та dnsx, щоб автоматизувати reverse lookups і збагачення.

Reverse Whois (loop)

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

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

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

Трекери

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

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

Favicon

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

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 icon hash

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

Крім того, ви також можете шукати технології за допомогою favicon hash, як пояснено в this blog post. Це означає, що якщо ви знаєте hash of the favicon of a vulnerable version of a web tech ви можете шукати його в shodan і find more vulnerable places:

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

Ось як ви можете calculate the favicon hash для веб-сайту:

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

You can also get favicon hashes at scale with httpx (httpx -l targets.txt -favicon) and then pivot in Shodan/Censys.

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

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

CRT Time

Зазвичай є cron job, наприклад

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

щоб поновити всі сертифікати доменів на сервері. Це означає, що навіть якщо CA, яка використовується для цього, не вказує час генерації в полі Validity, все ще можливо find domains belonging to the same company in the certificate transparency logs.
Check out this writeup for more information.

Також використовуйте certificate transparency logs безпосередньо:

Mail DMARC information

Ви можете скористатися веб-сайтом на кшталт [https://dmarc.live/info/google.com] або інструментом на зразок [https://github.com/Tedixx/dmarc-subdomains], щоб знайти domains and subdomain sharing the same dmarc information.
Інші корисні інструменти: spoofcheck та dmarcian.

Passive Takeover

Схоже, часто люди призначають субдомени IP-адресам, що належать cloud providers, і з часом lose that IP address but forget about removing the DNS record. Тому просто spawning a VM у хмарі (наприклад Digital Ocean) ви фактично taking over some subdomains(s).

This post пояснює історію про це і пропонує скрипт, який spawns a VM in DigitalOcean, gets the IPv4 нової машини, і searches in Virustotal for subdomain records що вказують на неї.

Other ways

Note that you can use this technique to discover more domain names every time you find a new domain.

Shodan

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

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

Assetfinder

Assetfinder is інструмент, який шукає domains related з основним доменом і їх subdomains, досить вражає.

Passive DNS / Historical DNS

Дані Passive DNS чудово підходять для знаходження old and forgotten records, які досі резольвляться або які можна зайняти. Дивіться:

Looking for vulnerabilities

Перевірте на наявність domain takeover. Можливо, якась компанія using some a domain, але вони lost the ownership. Просто зареєструйте його (якщо це досить дешево) і повідомте компанію.

Якщо ви знайдете будь-який domain with an IP different від тих, які ви вже виявили під час discovery активів, ви повинні виконати basic vulnerability scan (використовуючи Nessus або OpenVAS) та деякий port scan за допомогою nmap/masscan/shodan. Залежно від сервісів, що працюють, ви можете знайти в this book some tricks to “attack” them.
Note that sometimes the domain is hosted inside an IP that is not controlled by the client, so it’s not in the scope, be careful.

Subdomains

We know all the companies inside the scope, all the assets of each company and all the domains related to the companies.

Пора знайти всі можливі субдомени для кожного знайденого домену.

Tip

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

DNS

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

dnsrecon -a -d tesla.com

OSINT

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

# 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 .
amass enum [-active] [-ip] -d tesla.com
amass enum -d tesla.com | grep tesla.com # To just list subdomains
# Subfinder, use -silent to only have subdomains in the output
./subfinder-linux-amd64 -d tesla.com [-silent]
# findomain, use -silent to only have subdomains in the output
./findomain-linux -t tesla.com [--quiet]
python3 oneforall.py --target tesla.com [--dns False] [--req False] [--brute False] run
assetfinder --subs-only <domain>
# It requires that you create a sudomy.api file with API keys
sudomy -d tesla.com
vita -d tesla.com
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, які, навіть якщо не спеціалізуються безпосередньо на пошуку subdomains, можуть бути корисними для їх виявлення, наприклад:

# 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 ".[]"
curl https://jldc.me/anubis/subdomains/tesla.com | jq -r ".[]"
# 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
# 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-адреси з AlienVault’s Open Threat Exchange, the Wayback Machine та Common Crawl для будь-якого домену.
# Get subdomains from GAUs found URLs
gau --subs tesla.com | cut -d "/" -f 3 | sort -u
  • SubDomainizer & subscraper: Вони сканують веб у пошуках JS-файлів та витягують з них піддомени.
# 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
# Get info about the domain
shodan domain <domain>
# Get other pages with links to subdomains
shodan search "http.html:help.domain.com"
export CENSYS_API_ID=...
export CENSYS_API_SECRET=...
python3 censys-subdomain-finder.py tesla.com
python3 DomainTrail.py -d example.com

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

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

DNS Brute force

Спробуємо знайти нові subdomains, brute-forcing DNS servers, використовуючи можливі subdomain names.

Для цієї дії вам знадобляться деякі common subdomains wordlists, як-от:

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

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

  • massdns: Це був перший інструмент, який виконав ефективний DNS brute-force. Він дуже швидкий, однак схильний до false positives.
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 resolver
gobuster dns -d mysite.com -t 50 -w subdomains.txt
  • shuffledns — оболонка над massdns, написана на go, яка дозволяє перераховувати дійсні піддомени за допомогою активного bruteforce, а також резолвити піддомени із обробкою wildcard та простою підтримкою input-output.
shuffledns -d example.com -list example-subdomains.txt -r resolvers.txt
  • puredns: Також використовує massdns.
puredns bruteforce all.txt domain.com
  • aiodnsbrute використовує asyncio для асинхронного brute force доменних імен.
aiodnsbrute -r resolvers -w wordlist.txt -vv -t 1024 domain.com

Другий раунд DNS Brute-Force

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

  • dnsgen: Для заданих доменів і субдоменів генерує перестановки.
cat subdomains.txt | dnsgen -
  • goaltdns: На основі доменів і субдоменів генерує перестановки.
  • Отримати wordlist перестановок для goaltdns можна here.
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: Окрім генерації subdomains permutations, він також може спробувати resolve їх (але краще використовувати раніше згадані інструменти).
  • Ви можете отримати altdns permutations wordlist в here.
altdns -i subdomains.txt -w /tmp/words-permutations.txt -o /tmp/asd3
  • dmut: Ще один інструмент для виконання permutations, mutations і зміни subdomains. Цей інструмент виконуватиме brute force над результатами (він не підтримує dns wild card).
  • Ви можете отримати dmut permutations wordlist за посиланням: here.
cat subdomains.txt | dmut -d /tmp/words-permutations.txt -w 100 \
--dns-errorLimit 10 --use-pb --verbose -s /tmp/resolvers-trusted.txt
  • alterx: На основі домену воно генерує нові потенційні імена піддоменів за вказаними шаблонами, щоб спробувати виявити більше піддоменів.

Розумна генерація перестановок

  • regulator: Для більш детальної інформації читайте цей post, але по суті він витягає основні частини з знайдених піддоменів і перемішує їх, щоб знайти більше піддоменів.
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 — це subdomain brute-force fuzzer, поєднаний з надзвичайно простим, але ефективним DNS response-guided алгоритмом. Він використовує наданий набір вхідних даних, наприклад адаптований wordlist або історичні DNS/TLS записи, щоб точно синтезувати більше відповідних domain names і ще далі розширювати їх у циклі на основі інформації, зібраної під час DNS scan.
echo www | subzuf facebook.com

Subdomain Discovery Workflow

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

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

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

VHosts / Virtual Hosts

Якщо ви знайшли IP-адресу, що містить one or several web pages які належать subdomains, ви можете спробувати find other subdomains with webs in that IP шукаючи в OSINT sources домени в цій IP або шляхом brute-forcing VHost domain names in that IP.

OSINT

Ви можете знайти деякі VHosts in IPs using HostHunter or other APIs.

Brute Force

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

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

Tip

За допомогою цієї техніки ви навіть можете отримати доступ до internal/hidden endpoints.

CORS Brute Force

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

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

Buckets Brute Force

Під час пошуку subdomains звертайте увагу, чи вони pointing на якийсь тип bucket, і в такому випадку check the permissions.
Також, оскільки на цьому етапі ви вже знаєте всі домени всередині scope, спробуйте brute force possible bucket names and check the permissions.

Monitorization

Ви можете monitor появу new subdomains домену, відстежуючи журнали Certificate Transparency, як це робить sublert.

Looking for vulnerabilities

Перевірте можливі subdomain takeovers.
Якщо subdomain pointing на якийсь S3 bucket, check the permissions.

Якщо ви знайдете subdomain with an IP different від тих, що ви вже виявили під час assets discovery, варто виконати basic vulnerability scan (з використанням Nessus або OpenVAS) та зробити деякі port scan за допомогою nmap/masscan/shodan. Залежно від запущених сервісів у this book ви можете знайти трюки, щоб “attack” їх.
Зверніть увагу, що іноді subdomain розміщений на IP, який не контролюється клієнтом, тому він може бути поза scope — будьте обережні.

IPs

На початкових кроках ви могли found some IP ranges, domains and subdomains.
Пора recollect all the IPs from those ranges та для domains/subdomains (DNS queries).

Використовуючи сервіси з перелічених free apis, ви також можете знайти previous IPs used by domains and subdomains. Ці IP можуть досі належати клієнту (і можуть дозволити вам знайти CloudFlare bypasses)

Також можна перевірити, які домени pointing на конкретну IP-адресу, за допомогою інструмента hakip2host

Looking for vulnerabilities

Port scan all the IPs that doesn’t belong to CDNs (оскільки в них, швидше за все, ви нічого цікавого не знайдете). У виявлених запущених сервісах ви можете able to find vulnerabilities.

Find a guide about how to scan hosts.

Web servers hunting

We have found all the companies and their assets and we know IP ranges, domains and subdomains inside the scope. It’s time to search for web servers.

На попередніх кроках ви, ймовірно, вже виконали певний recon of the IPs and domains discovered, тому можливо already found all the possible web servers. Проте, якщо цього не сталося, зараз ми розглянемо кілька fast tricks to search for web servers всередині scope.

Зверніть увагу, що це буде oriented for web apps discovery, тому ви також повинні perform the vulnerability та port scanning (if allowed за scope).

A fast method to discover ports open related to web servers using masscan can be found here.
Інші дружні інструменти для пошуку веб-серверів: httprobe, fprobe та httpx. Ви передаєте список доменів, і вони спробують підключитися до порту 80 (http) та 443 (https). Додатково можна вказати спробу інших портів:

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

Скріншоти

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

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

Крім того, ви можете використати eyeballer щоб пройтись по всіх скріншотах і визначити, що ймовірно містить вразливості, а що — ні.

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

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

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

Потім з цими словами слід згенерувати пермутації (перегляньте Second Round DNS Brute-Force для детальнішої інформації).

Отриманими wordlists можна користуватися за допомогою інструментів типу cloud_enum, CloudScraper, cloudlist або S3Scanner.

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

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

Якщо ви знайдете, наприклад, open buckets або cloud functions exposed, слід отримати до них доступ і перевірити, що вони вам дають і чи можна їх зловживати.

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

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

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

Електронні адреси потім стануть в пригоді для brute-force веб-логінів та auth-сервісів (наприклад, SSH). Також вони необхідні для phishings. Крім того, ці APIs нададуть більше інформації про особу, пов’язану з email, що корисно для фішингової кампанії.

Credential Leaks

Маючи domains, subdomains і emails, ви можете почати шукати облікові дані, які were leaked раніше і належать цим email:

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

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

Secrets Leaks

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

Github Leaks

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

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

Github Dorks

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

Github Dorks & Leaks

Pastes Leaks

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

Google Dorks

Старі, але дієві google dorks завжди корисні для знаходження відкритої інформації, яка не повинна там бути. Проблема в тому, що google-hacking-database містить кілька тисяч потенційних запитів, які неможливо прогнати вручну. Отже, ви можете взяти свої улюблені 10 запитів або використати інструмент на кшталт Gorks щоб прогнати їх усі.

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

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

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

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

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

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

Source code Review / SAST Tools

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

Pentesting Web Methodology

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

Також окремо хочу відзначити розділ Web Automated Scanners open source tools, адже, хоча не варто очікувати від них виявлення дуже серйозних вразливостей, вони корисні для інтеграції в workflows, щоб отримати початкову веб-інформацію.

Підсумок

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

Отже, ви вже:

  1. Знайшли всі компанії в межах обсягу
  2. Знайшли всі assets, що належать компаніям (і виконали деяке сканування вразливостей, якщо це в межах обсягу)
  3. Знайшли всі domains, що належать компаніям
  4. Знайшли всі subdomains доменів (чи можливий subdomain takeover?)
  5. Знайшли всі IPs (як від CDN, так і не від CDN) в межах обсягу
  6. Знайшли всі веб-сервери і зробили скріншоти їх (є щось дивне, що варто дослідити глибше?)
  7. Знайшли всі потенційні public cloud assets, що належать компанії
  8. Emails, credentials leaks, і secret leaks, які можуть принести вам великий виграш дуже просто
  9. Pentesting усіх знайдених вебів

Full Recon Automatic Tools

Існує декілька інструментів, які виконають частину описаних дій для заданого обсягу:

Посилання

Tip

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

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