Wprowadzenie do Shodana, jak zacząć i jak działa Shodan?
Praktyczny przewodnik po Shodanie dla osób zajmujących się bezpieczeństwem IT. Konfiguracja, składnia zapytań, filtry oraz analiza ekspozycji usług sieciowych.
Shodan dla etycznych hakerów: pasywny rekon, czyli co internet już o Tobie wie
Materiał ma charakter edukacyjny. Wszystko, co tu pokazuję, testuj wyłącznie na własnym sprzęcie albo za pisemną zgodą właściciela, jak w Minecrafcie: we własnym świecie, nie na cudzym serwerze. W Polsce sam nieuprawniony dostęp do systemu jest karalny (art. 267 i następne k.k.), a prywatność nie istnieje, bo logi u dostawcy, fingerprint, NASK i CBZC prędzej czy później Cię znajdą. To nie jest porada prawna.
To pierwszy odcinek cyklu o rekonesansie dla etycznych hakerów. Zaczynamy od broni, która nie dotyka celu, czyli od Shodana.
Zanim wyślesz do celu choćby jeden pakiet, internet zdążył już go opisać za Ciebie. Shodan to wyszukiwarka urządzeń podłączonych do sieci, nie treści stron. W kółko skanuje całe IPv4 i IPv6, zapisuje banery usług, nagłówki, certyfikaty i wersje oprogramowania, a Ty to tylko czytasz. To czyni go idealnym pierwszym krokiem: rekonesans całkowicie pasywny, w którym cel nie widzi, że mu się przyglądasz.
Standardowo: pracujemy wyłącznie na celach, na które masz zgodę. Shodan sam w sobie jest pasywny i legalny, ale to, co z jego wynikami zrobisz, już niekoniecznie.
Czym Shodan różni się od Google
Google indeksuje treść stron. Shodan indeksuje to, co usługa odpowiada, gdy zapukasz na jej port: baner SSH, nagłówek serwera HTTP, certyfikat TLS, wersję bazy danych. Innymi słowy, Google mówi Ci, co strona pisze o sobie, a Shodan mówi, co naprawdę nasłuchuje pod danym adresem. Dla rekonesansu ta druga perspektywa jest dużo cenniejsza. Jedna rzecz, o której trzeba pamiętać od początku: dane Shodana są historyczne. On mówi „tak było, gdy ostatnio skanowałem", a niekoniecznie „tak jest teraz".
Filtry, czyli cała magia Shodana
Goła fraza w Shodanie to strata czasu. Siła leży w filtrach, a te łączą się domyślnie operatorem AND:
-
port:usługa na konkretnym porcie, np.port:3389 -
net:adres lub blok CIDR, np.net:203.0.113.0/24 -
asn:numer sieci operatora, np.asn:AS5617 -
org:iisp:po organizacji lub dostawcy -
hostname:po nazwie z odwrotnego DNS -
product:iversion:po nazwie i wersji oprogramowania -
os:po systemie operacyjnym -
country:icity:po lokalizacji -
http.title:po tytule strony, świetne na panele logowania -
ssl.cert.subject.cn:po nazwie z certyfikatu,ssl.cert.expired:truepo wygasłych -
before:iafter:po dacie obserwacji, w formaciedd/mm/yyyy -
has_ssl:trueihas_screenshot:truezawężają do usług z TLS albo ze zrzutem podglądu
I rzecz, o której większość zapomina: każdy filtr możesz zanegować minusem. -port:443 wyrzuca standardowe HTTPS, a -"login" wycina banery z tym słowem. Negacja to Twoje główne narzędzie do cięcia szumu.
Kilka konkretów. Wystawiony RDP danej firmy: org:"Nazwa Firmy" port:3389. Panele logowania w bloku adresowym, ale bez tych na standardowym porcie: net:203.0.113.0/24 http.title:"login" -port:443. Hosty z certyfikatem na domenę: ssl.cert.subject.cn:example.com. A teraz klasyk, od którego włos się jeży: product:"MongoDB" "Authentication disabled".
Uwaga na jeden filtr: vuln: (wyszukiwanie po CVE) jest restricted i działa tylko na kontach akademickich lub enterprise, nie na zwykłym darmowym.
Czytanie banera
Gdy klikniesz wynik albo użyjesz shodan host, dostajesz strukturę, w której liczą się pola: port i transport mówią, gdzie i czym usługa nasłuchuje, product i version to identyfikacja oprogramowania, hostnames i org to kontekst właściciela, location to geografia, a ssl i http to całe podstruktury z certyfikatem i odpowiedzią serwera. To w tych polach siedzą wartości, po których potem filtrujesz, więc warto raz spojrzeć na surowy rekord, żeby wiedzieć, czego w ogóle można szukać.
Shodan z linii poleceń
GUI jest ładne, ale prawdziwa robota dzieje się w terminalu. Najpierw wpinujesz klucz API ze swojego konta:
shodan init TWOJ_API_KEY
Wszystko, co Shodan wie o jednym adresie (porty, usługi, certy, historia):
shodan host 203.0.113.10
Zanim cokolwiek pobierzesz, policz skalę i zobacz rozkład wyników. count zwraca samą liczbę i nie zżera query credits, a stats z fasetą pokazuje strukturę:
shodan count 'country:PL port:3389' shodan stats --facets org:10 'country:PL port:3389'
A jak chcesz przerobić większą pulę offline, ściągasz ją do pliku i parsujesz lokalnie:
shodan download target 'net:203.0.113.0/24' shodan parse --fields ip_str,port,http.title target.json.gz
Tipy, które oddzielają zawodowca od zabawy
Zacznij od shodan host na adresach, które już znasz z celu, zanim zaczniesz zgadywać filtry. Łącz org: z net:, bo org: bywa nieprecyzyjne, a netblock jest pewniejszy. Najpierw policz i sfasetuj, dopiero potem pobieraj, bo to oszczędza i czas, i kredyty. A jak chcesz wejść głębiej, w pivoty po hashach, JARM i automatyzację, mam o tym osobny, techniczny cykl o Shodanie.
Dirty fact: w sieci stoją tysiące baz danych (MongoDB, Elasticsearch, Redis) wystawionych wprost na świat, bez żadnego hasła, grzecznie zindeksowanych przez Shodana z dopiskiem „Authentication disabled". Nikt ich nie włamywał. One po prostu są otwarte.
Shodan pokazał Ci, co stoi otworem. Nie powie jednak, kto za tym stoi ani jakie maile i subdomeny krążą wokół celu. Od tego jest następny odcinek, w którym zbieramy powierzchnię ataku z otwartych źródeł narzędziem theHarvester.
Terminarz
Lista najbliższych webinariów
Zobacz inne wpisy
Wiedza i świadomość na temat aktualnych cyberzagrożeń to podstawa dobrej taktyki bezpieczeństwa. Chcesz być na bieżąco z wydarzeniami ze świata cybersecurity? A może szukasz wskazówek jak zapewnić wyższy poziom cyberbezpieczeństwa w swojej firmie? Chcesz poznać topowe rozwiązania? Dobrze trafiłeś.