External Recon Methodology

Support HackTricks

If you are interested in hacking career and hack the unhackable - we are hiring! (wymagana biegła znajomość języka polskiego w mowie i piśmie).

Assets discoveries

Powiedziano ci, że wszystko, co należy do jakiejś firmy, jest w zakresie, a ty chcesz dowiedzieć się, co ta firma faktycznie posiada.

Celem tej fazy jest uzyskanie wszystkich firm należących do głównej firmy oraz wszystkich zasobów tych firm. Aby to zrobić, zamierzamy:

  1. Znaleźć przejęcia głównej firmy, co da nam firmy w zakresie.

  2. Znaleźć ASN (jeśli istnieje) każdej firmy, co da nam zakresy IP należące do każdej firmy.

  3. Użyć odwrotnych wyszukiwań whois, aby poszukać innych wpisów (nazwy organizacji, domeny...) związanych z pierwszym (można to zrobić rekurencyjnie).

  4. Użyć innych technik, takich jak filtry shodan org i ssl, aby poszukać innych zasobów (sztuczka ssl może być wykonana rekurencyjnie).

Acquisitions

Przede wszystkim musimy wiedzieć, które inne firmy są własnością głównej firmy. Jedną z opcji jest odwiedzenie https://www.crunchbase.com/, wyszukiwanie głównej firmy i kliknięcie na "przejęcia". Tam zobaczysz inne firmy przejęte przez główną. Inną opcją jest odwiedzenie strony Wikipedia głównej firmy i wyszukiwanie przejęć.

Ok, w tym momencie powinieneś znać wszystkie firmy w zakresie. Dowiedzmy się, jak znaleźć ich zasoby.

ASNs

Numer systemu autonomicznego (ASN) to unikalny numer przypisany do systemu autonomicznego (AS) przez Internet Assigned Numbers Authority (IANA). AS składa się z bloków adresów IP, które mają wyraźnie zdefiniowaną politykę dostępu do zewnętrznych sieci i są zarządzane przez jedną organizację, ale mogą składać się z kilku operatorów.

Interesujące jest sprawdzenie, czy firma ma przypisany jakikolwiek ASN, aby znaleźć jej zakresy IP. Warto przeprowadzić test podatności na wszystkich hostach w zakresie i szukać domen w tych IP. Możesz wyszukiwać według nazwa firmy, według IP lub według domeny w https://bgp.he.net/. W zależności od regionu firmy, te linki mogą być przydatne do zbierania dodatkowych danych: AFRINIC (Afryka), Arin(Ameryka Północna), APNIC (Azja), LACNIC (Ameryka Łacińska), RIPE NCC (Europa). W każdym razie, prawdopodobnie wszystkie przydatne informacje (zakresy IP i Whois) pojawiają się już w pierwszym linku.

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

Również, BBOT's enumeracja subdomen automatycznie agreguje i podsumowuje ASN na końcu skanowania.

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

Możesz znaleźć zakresy IP organizacji również używając http://asnlookup.com/ (ma darmowe API). Możesz znaleźć IP i ASN domeny używając http://ipv4info.com/.

Szukając luk

Na tym etapie znamy wszystkie zasoby w zakresie, więc jeśli masz na to pozwolenie, możesz uruchomić jakiś skaner luk (Nessus, OpenVAS) na wszystkich hostach. Możesz również przeprowadzić skanowanie portów lub użyć usług takich jak shodan aby znaleźć otwarte porty i w zależności od tego, co znajdziesz, powinieneś zajrzeć do tej książki, aby dowiedzieć się, jak przeprowadzić pentesting różnych możliwych usług. Warto również wspomnieć, że możesz przygotować kilka domyślnych nazw użytkowników i haseł i spróbować brute-force'ować usługi za pomocą https://github.com/x90skysn3k/brutespray.

Domeny

Znamy wszystkie firmy w zakresie i ich zasoby, czas znaleźć domeny w zakresie.

Proszę zauważyć, że w poniższych proponowanych technikach możesz również znaleźć subdomeny i ta informacja nie powinna być niedoceniana.

Przede wszystkim powinieneś poszukać głównej domeny(s) każdej firmy. Na przykład, dla Tesla Inc. będzie to tesla.com.

Reverse DNS

Ponieważ znalazłeś wszystkie zakresy IP domen, możesz spróbować wykonać odwrotne zapytania DNS na tych IP, aby znaleźć więcej domen w zakresie. Spróbuj użyć jakiegoś serwera DNS ofiary lub jakiegoś znanego serwera DNS (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

Aby to zadziałało, administrator musi ręcznie włączyć PTR. Możesz również użyć narzędzia online do uzyskania tych informacji: http://ptrarchive.com/

Reverse Whois (loop)

W whois możesz znaleźć wiele interesujących informacji, takich jak nazwa organizacji, adres, emaile, numery telefonów... Ale co jest jeszcze bardziej interesujące, to to, że możesz znaleźć więcej zasobów związanych z firmą, jeśli wykonasz odwrócone zapytania whois według dowolnego z tych pól (na przykład inne rejestry whois, w których pojawia się ten sam email). Możesz użyć narzędzi online, takich jak:

Możesz zautomatyzować to zadanie, używając DomLink (wymaga klucza API whoxy). Możesz również przeprowadzić automatyczne odkrywanie reverse whois za pomocą amass: amass intel -d tesla.com -whois

Zauważ, że możesz użyć tej techniki, aby odkryć więcej nazw domen za każdym razem, gdy znajdziesz nową domenę.

Trackers

Jeśli znajdziesz ten sam ID tego samego trackera na 2 różnych stronach, możesz przypuszczać, że obie stronyzarządzane przez ten sam zespół. Na przykład, jeśli widzisz ten sam ID Google Analytics lub ten sam ID Adsense na kilku stronach.

Istnieją strony i narzędzia, które pozwalają na wyszukiwanie według tych trackerów i więcej:

Favicon

Czy wiesz, że możemy znaleźć powiązane domeny i subdomeny naszego celu, szukając tego samego hasha ikony favicon? Dokładnie to robi narzędzie favihash.py stworzone przez @m4ll0k2. Oto jak go używać:

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 - odkryj domeny z tym samym hashem ikony favicon

Mówiąc prosto, favihash pozwoli nam odkryć domeny, które mają ten sam hash ikony favicon co nasz cel.

Co więcej, możesz również wyszukiwać technologie, używając hasha favicon, jak wyjaśniono w tym wpisie na blogu. Oznacza to, że jeśli znasz hash ikony favicon podatnej wersji technologii webowej, możesz wyszukiwać w shodan i znaleźć więcej podatnych miejsc:

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

To jest sposób, w jaki możesz obliczyć hash favicon strony internetowej:

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

Szukaj na stronach internetowych ciągów, które mogą być wspólne dla różnych stron w tej samej organizacji. Ciąg copyright może być dobrym przykładem. Następnie wyszukaj ten ciąg w google, w innych przeglądarkach lub nawet w shodan: shodan search http.html:"Copyright string"

CRT Time

Powszechnie występuje zadanie cron, takie jak

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

to renew the all the domain certificates on the server. This means that even if the CA used for this doesn't set the time it was generated in the Validity time, it's possible to find domains belonging to the same company in the certificate transparency logs. Check out this writeup for more information.

Mail DMARC information

Możesz użyć strony takiej jak https://dmarc.live/info/google.com lub narzędzia takiego jak https://github.com/Tedixx/dmarc-subdomains, aby znaleźć domeny i subdomeny dzielące te same informacje dmarc.

Passive Takeover

Wygląda na to, że powszechne jest przypisywanie subdomen do adresów IP należących do dostawców chmury i w pewnym momencie stracić ten adres IP, ale zapomnieć o usunięciu rekordu DNS. Dlatego, po prostu uruchamiając VM w chmurze (takiej jak Digital Ocean), faktycznie przejmujesz niektóre subdomeny.

Ten post wyjaśnia historię na ten temat i proponuje skrypt, który uruchamia VM w DigitalOcean, uzyskuje IPv4 nowej maszyny i wyszukuje w Virustotal rekordy subdomen wskazujące na nią.

Other ways

Zauważ, że możesz użyć tej techniki, aby odkrywać więcej nazw domen za każdym razem, gdy znajdziesz nową domenę.

Shodan

Jak już wiesz, nazwa organizacji posiadającej przestrzeń IP. Możesz wyszukiwać te dane w shodan używając: org:"Tesla, Inc." Sprawdź znalezione hosty pod kątem nowych, nieoczekiwanych domen w certyfikacie TLS.

Możesz uzyskać dostęp do certyfikatu TLS głównej strony internetowej, uzyskać nazwa organizacji i następnie wyszukać tę nazwę w certyfikatach TLS wszystkich stron internetowych znanych przez shodan z filtrem: ssl:"Tesla Motors" lub użyć narzędzia takiego jak sslsearch.

Assetfinder

Assetfinder to narzędzie, które wyszukuje domeny związane z główną domeną i subdomeny z nimi, całkiem niesamowite.

Looking for vulnerabilities

Sprawdź niektóre przejmowanie domen. Może jakaś firma używa jakiejś domeny, ale straciła własność. Po prostu zarejestruj ją (jeśli wystarczająco tanio) i daj znać firmie.

Jeśli znajdziesz jakąkolwiek domenę z adresem IP różnym od tych, które już znalazłeś w odkrywaniu zasobów, powinieneś przeprowadzić podstawowe skanowanie podatności (używając Nessus lub OpenVAS) oraz jakieś skanowanie portów za pomocą nmap/masscan/shodan. W zależności od tego, jakie usługi są uruchomione, możesz znaleźć w tej książce kilka sztuczek, aby je "zaatakować". 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

Znamy wszystkie firmy w zakresie, wszystkie zasoby każdej firmy i wszystkie domeny związane z tymi firmami.

Czas znaleźć wszystkie możliwe subdomeny każdej znalezionej domeny.

Zauważ, że niektóre z narzędzi i technik do znajdowania domen mogą również pomóc w znajdowaniu subdomen!

DNS

Spróbujmy uzyskać subdomeny z rekordów DNS. Powinniśmy również spróbować Transferu Strefy (jeśli jest podatny, powinieneś to zgłosić).

dnsrecon -a -d tesla.com

OSINT

Naj szybszym sposobem na uzyskanie wielu subdomen jest przeszukiwanie zewnętrznych źródeł. Najczęściej używane narzędzia to następujące (dla lepszych wyników skonfiguruj klucze API):

# 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"

inne interesujące narzędzia/API, które, nawet jeśli nie są bezpośrednio wyspecjalizowane w znajdowaniu subdomen, mogą być przydatne do ich znajdowania, takie jak:

# 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: pobiera znane URL-e z Open Threat Exchange AlienVault, Wayback Machine i Common Crawl dla dowolnej domeny.

# Get subdomains from GAUs found URLs
gau --subs tesla.com | cut -d "/" -f 3 | sort -u
# 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

Ten projekt oferuje darmowo wszystkie subdomeny związane z programami bug-bounty. Możesz uzyskać dostęp do tych danych również za pomocą chaospy lub nawet uzyskać dostęp do zakresu używanego przez ten projekt https://github.com/projectdiscovery/chaos-public-program-list

Możesz znaleźć porównanie wielu z tych narzędzi tutaj: https://blog.blacklanternsecurity.com/p/subdomain-enumeration-tool-face-off

DNS Brute force

Spróbujmy znaleźć nowe subdomeny poprzez brute-forcing serwerów DNS, używając możliwych nazw subdomen.

Do tej akcji będziesz potrzebować kilku popularnych list słów subdomen:

A także IP dobrych resolverów DNS. Aby wygenerować listę zaufanych resolverów DNS, możesz pobrać resolvery z https://public-dns.info/nameservers-all.txt i użyć dnsvalidator do ich filtrowania. Lub możesz użyć: https://raw.githubusercontent.com/trickest/resolvers/main/resolvers-trusted.txt

Najbardziej polecane narzędzia do brute-force DNS to:

  • massdns: To było pierwsze narzędzie, które skutecznie przeprowadzało brute-force DNS. Jest bardzo szybkie, jednak jest podatne na fałszywe pozytywy.

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: Myślę, że ten używa tylko 1 resolvera

gobuster dns -d mysite.com -t 50 -w subdomains.txt
  • shuffledns to wrapper wokół massdns, napisany w go, który pozwala na enumerację ważnych subdomen za pomocą aktywnego bruteforce, a także rozwiązywanie subdomen z obsługą wildcard i łatwym wsparciem dla wejścia-wyjścia.

shuffledns -d example.com -list example-subdomains.txt -r resolvers.txt
puredns bruteforce all.txt domain.com
  • aiodnsbrute używa asyncio do brutalnego wymuszania nazw domen asynchronicznie.

aiodnsbrute -r resolvers -w wordlist.txt -vv -t 1024 domain.com

Druga runda brute-force DNS

Po znalezieniu subdomen za pomocą otwartych źródeł i brute-forcingu, możesz wygenerować modyfikacje znalezionych subdomen, aby spróbować znaleźć jeszcze więcej. Kilka narzędzi jest przydatnych w tym celu:

  • dnsgen: Daje domeny i subdomeny, generuje permutacje.

cat subdomains.txt | dnsgen -
  • goaltdns: Dla domen i subdomen generuj permutacje.

  • Możesz uzyskać permutacje goaltdns wordlist tutaj.

goaltdns -l subdomains.txt -w /tmp/words-permutations.txt -o /tmp/final-words-s3.txt
  • gotator: Dla podanych domen i subdomen generuje permutacje. Jeśli nie wskazano pliku z permutacjami, gotator użyje swojego własnego.

gotator -sub subdomains.txt -silent [-perm /tmp/words-permutations.txt]
  • altdns: Oprócz generowania permutacji subdomen, może również próbować je rozwiązać (ale lepiej użyć wcześniej wspomnianych narzędzi).

  • Możesz uzyskać permutacje altdns wordlist tutaj.

altdns -i subdomains.txt -w /tmp/words-permutations.txt -o /tmp/asd3
  • dmut: Inne narzędzie do wykonywania permutacji, mutacji i modyfikacji subdomen. To narzędzie będzie przeprowadzać brute force na wyniku (nie obsługuje dzikich kart dns).

  • Możesz pobrać listę słów permutacji dmut tutaj.

cat subdomains.txt | dmut -d /tmp/words-permutations.txt -w 100 \
--dns-errorLimit 10 --use-pb --verbose -s /tmp/resolvers-trusted.txt
  • alterx: Na podstawie domeny generuje nowe potencjalne nazwy subdomen na podstawie wskazanych wzorców, aby spróbować odkryć więcej subdomen.

Generowanie inteligentnych permutacji

  • regulator: Aby uzyskać więcej informacji, przeczytaj ten post, ale zasadniczo wyciągnie on główne części z odkrytych subdomen i wymiesza je, aby znaleźć więcej subdomen.

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 to fuzzer do brutalnego ataku na subdomeny połączony z niezwykle prostym, ale skutecznym algorytmem opartym na odpowiedziach DNS. Wykorzystuje dostarczony zestaw danych wejściowych, takich jak dostosowana lista słów lub historyczne rekordy DNS/TLS, aby dokładnie syntetyzować więcej odpowiadających nazw domen i rozszerzać je jeszcze bardziej w pętli na podstawie informacji zebranych podczas skanowania DNS.

echo www | subzuf facebook.com

Workflow Odkrywania Subdomen

Sprawdź ten post na blogu, który napisałem o tym, jak zautomatyzować odkrywanie subdomen z domeny za pomocą workflow Trickest, aby nie musieć ręcznie uruchamiać wielu narzędzi na moim komputerze:

VHosts / Wirtualne Hosty

Jeśli znalazłeś adres IP zawierający jedną lub kilka stron internetowych należących do subdomen, możesz spróbować znaleźć inne subdomeny z witrynami w tym IP, przeszukując źródła OSINT w poszukiwaniu domen w danym IP lub brute-forcując nazwy domen VHost w tym IP.

OSINT

Możesz znaleźć kilka VHosts w IP za pomocą HostHunter lub innych API.

Brute Force

Jeśli podejrzewasz, że niektóre subdomeny mogą być ukryte na serwerze WWW, możesz spróbować je 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

Dzięki tej technice możesz nawet uzyskać dostęp do wewnętrznych/ukrytych punktów końcowych.

CORS Brute Force

Czasami znajdziesz strony, które zwracają tylko nagłówek Access-Control-Allow-Origin gdy w nagłówku Origin ustawiona jest ważna domena/subdomena. W tych scenariuszach możesz wykorzystać to zachowanie, aby odkryć nowe subdomeny.

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

Podczas szukania subdomen zwróć uwagę, czy wskazują one na jakiegoś rodzaju bucket, a w takim przypadku sprawdź uprawnienia. Również, w tym momencie będziesz znać wszystkie domeny w zakresie, spróbuj brute force'ować możliwe nazwy bucketów i sprawdzić uprawnienia.

Monitorization

Możesz monitorować, czy nowe subdomeny danej domeny są tworzone, monitorując logi przejrzystości certyfikatów sublert .

Looking for vulnerabilities

Sprawdź możliwe przejęcia subdomen. Jeśli subdomena wskazuje na jakiś S3 bucket, sprawdź uprawnienia.

Jeśli znajdziesz jakąkolwiek subdomenę z adresem IP różnym od tych, które już znalazłeś w odkrywaniu zasobów, powinieneś przeprowadzić podstawowe skanowanie podatności (używając Nessus lub OpenVAS) oraz jakieś skanowanie portów za pomocą nmap/masscan/shodan. W zależności od uruchomionych usług możesz znaleźć w tej książce kilka sztuczek, aby je "zaatakować". Uwaga, że czasami subdomena jest hostowana w IP, które nie jest kontrolowane przez klienta, więc nie jest w zakresie, bądź ostrożny.

IPs

W początkowych krokach mogłeś znaleźć pewne zakresy IP, domeny i subdomeny. Czas na zebranie wszystkich IP z tych zakresów oraz dla domen/subdomen (zapytania DNS).

Korzystając z usług z poniższych darmowych API, możesz również znaleźć wcześniejsze IP używane przez domeny i subdomeny. Te IP mogą nadal być własnością klienta (i mogą pozwolić Ci znaleźć obejścia CloudFlare)

Możesz również sprawdzić, które domeny wskazują na konkretny adres IP, używając narzędzia hakip2host

Looking for vulnerabilities

Skanuj porty wszystkich IP, które nie należą do CDN (ponieważ prawdopodobnie nie znajdziesz tam nic interesującego). W odkrytych usługach możesz znaleźć podatności.

Znajdź przewodnik na temat skanowania hostów.

Web servers hunting

Znaleźliśmy wszystkie firmy i ich zasoby oraz znamy zakresy IP, domeny i subdomeny w zakresie. Czas na poszukiwanie serwerów webowych.

W poprzednich krokach prawdopodobnie już przeprowadziłeś jakieś recon IP i odkrytych domen, więc mogłeś już znaleźć wszystkie możliwe serwery webowe. Jednak jeśli tego nie zrobiłeś, teraz zobaczymy kilka szybkich sztuczek do wyszukiwania serwerów webowych w zakresie.

Proszę zauważyć, że to będzie ukierunkowane na odkrywanie aplikacji webowych, więc powinieneś przeprowadzić skanowanie podatności i skanowanie portów również (jeśli dozwolone przez zakres).

Szybka metoda na odkrycie otwartych portów związanych z serwerami webowymi za pomocą masscan można znaleźć tutaj. Innym przyjaznym narzędziem do wyszukiwania serwerów webowych jest httprobe, fprobe oraz httpx. Wystarczy, że przekażesz listę domen, a narzędzie spróbuje połączyć się z portem 80 (http) i 443 (https). Dodatkowo możesz wskazać, aby spróbować innych portów:

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

Zrzuty ekranu

Teraz, gdy odkryłeś wszystkie serwery internetowe znajdujące się w zakresie (wśród adresów IP firmy oraz wszystkich domen i subdomen) prawdopodobnie nie wiesz, od czego zacząć. Zróbmy to prosto i zacznijmy od robienia zrzutów ekranu wszystkich z nich. Już po rzuceniu okiem na stronę główną możesz znaleźć dziwne punkty końcowe, które są bardziej podatne na bycie wrażliwymi.

Aby zrealizować zaproponowany pomysł, możesz użyć EyeWitness, HttpScreenshot, Aquatone, Shutter, Gowitness lub webscreenshot.

Ponadto, możesz następnie użyć eyeballer, aby przejrzeć wszystkie zrzuty ekranu i powiedzieć ci, co prawdopodobnie zawiera luki, a co nie.

Publiczne zasoby chmurowe

Aby znaleźć potencjalne zasoby chmurowe należące do firmy, powinieneś zacząć od listy słów kluczowych, które identyfikują tę firmę. Na przykład, dla firmy kryptograficznej możesz użyć słów takich jak: "crypto", "wallet", "dao", "<nazwa_domeny>", <"nazwy_subdomen">.

Będziesz również potrzebować list słów powszechnie używanych w bucketach:

Następnie, z tymi słowami powinieneś wygenerować permutacje (sprawdź Drugą rundę DNS Brute-Force po więcej informacji).

Z uzyskanymi listami słów możesz użyć narzędzi takich jak cloud_enum, CloudScraper, cloudlist lub S3Scanner.

Pamiętaj, że szukając zasobów chmurowych, powinieneś szukać więcej niż tylko bucketów w AWS.

Szukając luk

Jeśli znajdziesz takie rzeczy jak otwarte buckety lub wystawione funkcje chmurowe, powinieneś uzyskać do nich dostęp i spróbować zobaczyć, co oferują i czy możesz je wykorzystać.

E-maile

Z domenami i subdomenami w zakresie masz zasadniczo wszystko, co potrzebujesz, aby zacząć szukać e-maili. Oto API i narzędzia, które najlepiej działały dla mnie w znajdowaniu e-maili firmy:

Szukając luk

E-maile będą przydatne później do brute-force'owania logowania do stron internetowych i usług autoryzacyjnych (takich jak SSH). Ponadto są potrzebne do phishingu. Co więcej, te API dadzą ci jeszcze więcej informacji o osobie stojącej za e-mailem, co jest przydatne w kampanii phishingowej.

Wycieki danych uwierzytelniających

Z domenami, subdomenami i e-mailami możesz zacząć szukać danych uwierzytelniających, które wyciekły w przeszłości i należą do tych e-maili:

Szukając luk

Jeśli znajdziesz ważne wyciekłe dane uwierzytelniające, to bardzo łatwe zwycięstwo.

Wyciek tajemnic

Wyciek danych uwierzytelniających jest związany z hackami firm, w których wrażliwe informacje zostały wycieknięte i sprzedane. Jednak firmy mogą być dotknięte innymi wyciekami, których informacje nie znajdują się w tych bazach danych:

Wyciek z GitHub

Dane uwierzytelniające i API mogą być wyciekane w publicznych repozytoriach firmy lub użytkowników pracujących dla tej firmy na GitHubie. Możesz użyć narzędzia Leakos, aby pobierać wszystkie publiczne repozytoria organizacji i jej deweloperów oraz automatycznie uruchomić gitleaks na nich.

Leakos może być również używane do uruchamiania gitleaks na wszystkich tekstach dostarczonych URL-ami, ponieważ czasami strony internetowe również zawierają tajemnice.

Dorki GitHub

Sprawdź również tę stronę w poszukiwaniu potencjalnych dorków GitHub, które możesz również wyszukiwać w organizacji, którą atakujesz:

Github Dorks & Leaks

Wyciek Paste

Czasami atakujący lub po prostu pracownicy publikują treści firmy na stronie paste. Może to zawierać lub nie zawierać wrażliwych informacji, ale bardzo interesujące jest ich wyszukiwanie. Możesz użyć narzędzia Pastos, aby przeszukiwać więcej niż 80 stron paste jednocześnie.

Dorki Google

Stare, ale złote dorki Google zawsze są przydatne do znajdowania ujawnionych informacji, które nie powinny tam być. Jedynym problemem jest to, że google-hacking-database zawiera kilka tysięcy możliwych zapytań, których nie możesz uruchomić ręcznie. Możesz więc wybrać swoje ulubione 10 lub możesz użyć narzędzia takiego jak Gorks, aby uruchomić je wszystkie.

Uwaga, że narzędzia, które oczekują uruchomienia całej bazy danych za pomocą standardowej przeglądarki Google, nigdy się nie zakończą, ponieważ Google zablokuje cię bardzo szybko.

Szukając luk

Jeśli znajdziesz ważne wyciekłe dane uwierzytelniające lub tokeny API, to bardzo łatwe zwycięstwo.

Publiczne luki w kodzie

Jeśli odkryłeś, że firma ma kod open-source, możesz go analizować i szukać luk w nim.

W zależności od języka istnieją różne narzędzia, które możesz użyć:

Source code Review / SAST Tools

Istnieją również darmowe usługi, które pozwalają na skanowanie publicznych repozytoriów, takie jak:

Większość luk znalezionych przez łowców błędów znajduje się w aplikacjach internetowych, więc w tym momencie chciałbym porozmawiać o metodologii testowania aplikacji internetowych, a możesz znaleźć te informacje tutaj.

Chcę również szczególnie wspomnieć o sekcji Narzędzia do automatycznego skanowania aplikacji webowych open source, ponieważ, jeśli nie powinieneś oczekiwać, że znajdą bardzo wrażliwe luki, są przydatne do wdrażania ich w workflow, aby uzyskać początkowe informacje o sieci.

Rekapitulacja

Gratulacje! W tym momencie wykonałeś już wszystkie podstawowe enumeracje. Tak, to podstawowe, ponieważ można wykonać znacznie więcej enumeracji (zobaczymy więcej sztuczek później).

Więc już:

  1. Znalazłeś wszystkie firmy w zakresie

  2. Znalazłeś wszystkie zasoby należące do firm (i przeprowadziłeś skanowanie luk, jeśli było w zakresie)

  3. Znalazłeś wszystkie domeny należące do firm

  4. Znalazłeś wszystkie subdomeny domen (czy jest jakieś przejęcie subdomeny?)

  5. Znalazłeś wszystkie adresy IP (z i nie z CDN) w zakresie.

  6. Znalazłeś wszystkie serwery internetowe i zrobiłeś zrzut ekranu z nich (czy jest coś dziwnego, co warto dokładniej zbadać?)

  7. Znalazłeś wszystkie potencjalne publiczne zasoby chmurowe należące do firmy.

  8. E-maile, wycieki danych uwierzytelniających i wycieki tajemnic, które mogą dać ci duże zwycięstwo bardzo łatwo.

  9. Pentesting wszystkich stron, które znalazłeś

Pełne narzędzia automatyczne do rekonesansu

Istnieje kilka narzędzi, które wykonają część zaproponowanych działań przeciwko danemu zakresowi.

Referencje

Jeśli jesteś zainteresowany karierą w hackingu i hackowaniem tego, co nie do zhackowania - zatrudniamy! (wymagana biegła znajomość polskiego w mowie i piśmie).

Wsparcie HackTricks

Last updated