Rekonesans przez zewnętrzne serwisy
Napisał: Patryk Krawaczyński
26/12/2017 w Pen Test 1 komentarz. (artykuł nr 650, ilość słów: 514)
W
poprzednich częściach wspomniałem, o niektórych możliwościach pozyskania informacji za pomocą serwerów DNS oraz śledzenia wydawanych certyfikatów. W tej części zajmiemy się wyciąganiem informacji z innych zewnętrznych serwisów, które również prowadzą monitoring bardzo dużej ilości serwisów.
1. Virustotal:
Za pomocą prostego narzędzia o nazwie jq oraz API serwisu VirusTotal możemy bardzo szybko pozyskać listę subdomen interesującego nas serwisu:
~# curl -s https://www.virustotal.com/ui/domains/nfsec.pl/subdomains\?limit\=10 \ | ./jq . | grep \"id\" "id": "ns1.nfsec.pl", "id": "www.nfsec.pl",
JSONy na wyjściu możemy też prosto zapisać do dowolnej bazy danych lub systemu śledzenia zmian.
2. Common Crawl Index Server:
Aby przeszukać petabajty Common Crawl wystarczy wykorzystać skrypt napisany w języku Python:
~# ./cdx-index-client.py -c CC-MAIN-2017-43 '*.target.pl' 2017-12-20 23:32:58,490: [INFO]: Getting Index From http://cc.org/CC-MAIN-2017-43-index 2017-12-20 23:32:58,787: [INFO]: Fetching 22 pages of *.target.pl 2017-12-20 23:33:00,929: [INFO]: 1 page(s) of 22 finished ... 2017-12-20 23:33:18,122: [INFO]: 22 page(s) of 22 finished ~# awk -F')' '{print $1}' domain-target.pl-* | sort | uniq -c 305313 pl,target 4691 pl,target,archive 6594 pl,target,cyber 338 pl,target,faq 852 pl,target,storage 18 pl,target,dns 25 pl,target,help 510 pl,target,ssl
3. DNSDumpser:
Serwis DNSdumpster jest kolejnym interesującym serwisem, w którym możemy odnaleźć bardzo dużą ilość subdomen konkretnego serwisu. Zamiast interfejsu webowego możemy użyć nieoficjalnego API w języku Python:
>>> from dnsdumpster.DNSDumpsterAPI import DNSDumpsterAPI >>> res = DNSDumpsterAPI({'verbose': True}).search('nfsec.pl') [verbose] Retrieved token: wotl7ySbId0RCZ56kIlS7ZhVF1abyHRB >>> print res 'dns_records': {'host': [{'domain': 'ns1.nfsec.pl'}] }
4. DNSTrails:
Jeśli jesteśmy już przy rekordach DNS warto wspomnieć o DNSTrails, gdzie możemy uzyskać listę subdomen dla wybranej domeny lub po nazwie firmy:
firefox https://dnstrails.com/#/list/domain/uber.com/type/hostname/page/1 curl 'https://app.securitytrails.com/api/whois/list/organization/\ Uber%20Technologies%2C%20Inc.?page=1 | jq .
5. Rekordy ASN:
Poprzez znalezienie numerów ASN (ang. Autonomous System Numbers) jesteśmy w stanie określić bloki sieciowe należące do wybranego serwisu / organizacji. Poprzez rozwiązanie każdego adresu IP z danego bloku możemy uzyskać listę poprawnych subdomen. Wystarczy, że np. za pomocą polecenia host
uzyskamy adres IP danej domeny. Adres IP wpisujemy w ASN Lookup v1.0. Po uzyskaniu numeru ASN wprowadzamy go do Hurricane Electric BGP Toolkit, który powinien zwrócić nam bloki sieciowe. Teraz jeśli chcemy odkryć, czy pod listą adresów IP z danego bloku kryją się jakieś subdomeny wystarczy użyć narzędzia nmap:
nmap -sL 192.168.1.0/24
6. Forward DNS projektu Rapid7 Sonar:
Jest to zbiór danych powstałych na podstawie wysyłania żądań DNS typu ANY do domen zebranych z różnych źródeł. Dane są skompresowanymi plikami JSON – należy liczyć się z dość sporym poborem miejsca z dysku (300+ GB po rozpakowaniu):
curl https://scans.io/_d/data/rapid7/sonar.fdns_v2/2017-12-24-1514102401-fdns_any.json.gz \ | gunzip | grep test.net
7. Lista zarejestrowanych domen:
Wyszukiwarka Registered Domain Names zawiera listę zarejestrowanych domen w bazie domains-index.com. Bazę możemy przeszukiwać pod kątem słów kluczowych, które mogą być powiązane z interesującym nas serwisem:
curl 'https://api.domainsdb.info/search?query=nfsec'
Więcej informacji: Sub-domain enumeration
Jeśli chodzi o odpytywanie CommonCrawl możemy wykorzystać jeszcze skrypty: cc.py oraz igoturls.py.