Enumeracja serwisów ofiary

Narzędzie nmap, poza możliwościami, które zostały opisane w poprzednich częściach opisujących metody skanowania serwera ofiary, pozwala także na szybkie i sprawne sprawdzenie, jakiego rodzaju usługa serwowana jest na danym porcie i (często) w jakiej wersji.

Aby wykonać tego typu sprawdzenie, należy zaangażować przełącznik -sV, tak jak zostało to pokazane na poniższym zrzucie ekranu:

Różnica w stosunku do zwykłego skanowania została podkreślona na żółto.

Jak widać na zrzucie ekranu, atakujący jest w stanie sprawdzić (np. w tym przypadku) dokładną wersję oprogramowania, które jest hostowane na danym porcie.

W przypadku niestandardowych usług hostowanych na serwerze ofiary nmap może określić oprogramowanie nieznane jako unknown. Dzieje się tak, ponieważ przełącznik -sV bazuje na tzw. Banner grabbing. Jest to nic innego jak prosta technika zbierania informacji o oprogramowaniu i jego wersji, która nasłuchuje na danym porcie. Poniższy przykład obrazuje ten proces.

Na żółto pokazane jest to co wpisał atakujący – połączył się narzędziem netcat do serwera ofiary na port 22 (SSH). Netcat jest bardzo prostym narzędziem, działającym w architekturze klient/serwer, w tym przypadku jako klient, bowiem serwerem jest maszyna ofiary. Serwer ofiary w reakcji na połączenie się atakującego, przedstawił się jako SSH-2.0-OpenSSH_7.9p1 Debian-10+deb10u2, dając na tacy informacje o swojej wersji SSH. W analogiczny sposób da się enumerować wersję serwera webowego Apache, hostowanego na porcie 80.

Możemy zobaczyć, że atakujący ma możliwość enumeracji wersji oprogramowania serwowanego na hoście ofiary. Mając zebrane informacje o owych wersjach, atakujący ma otwartą drogę do znalezienia publicznie znanych exploitów (kodów, które wykorzystują luki w bezpieczeństwie danego oprogramowania, w celu wyrządzenia szkody np. uzyskania nieautoryzowanego dostępu do maszyny ofiary) czy też wyszukania potencjalnych słabości w tym oprogramowaniu, co przedstawione zostało na zrzucie poniżej:

Automatyzacja skanowania, czyli nmap scriping engine

Jak widać, narzędzie nmap jest stosunkowo proste w użyciu, ale ma też bardzo szeroki wachlarz możliwości. Niemniej jednak nmap daje możliwość tworzenia własnych skryptów, które w prosty sposób mogą automatyzować pracę atakującego. Obecnie dostępne są skrypty, które potrafią robić szeroki zakres działań: od ataku typu brute-force, poprzez enumerację DNS, na skryptach weryfikujących występowanie podatności kończąc.

Domyślną lokalizacją tych skryptów jest ścieżka /usr/share/nmap/scripts/. Przykład użycia skryptu znajduje się poniżej:

Przełącznik –script=[pełna ścieżka do skryptu] pozwala narzędziu nmap załadować skrypt spod określonej ścieżki.

Atakujący zweryfikował, które spośród dostępnych metod uwierzytelnienia SSH, używa serwer ofiary.

Poniżej znajduje się lista algorytmów szyfrowania, które są akceptowalne w tym przykładzie:

Samo SSH posiada kilka skryptów, których atakujący może użyć.

Mając świadomość, że serwer ofiary może mieć znacznie więcej portów otwartych niż tylko dwa – jak w tym przykładzie – oraz dokładając do tego fakt, że dane oprogramowanie może mieć (i często ma) kilka dedykowanych skryptów, to nie trzeba używać wyobraźni by wiedzieć ile informacji jest w stanie atakujący wyciągnąć o maszynie, którą zamierza atakować.

Wszystkiego tego jest w stanie dokonać używając jednego, publicznie dostępnego, darmowego narzędzia, takiego jak nmap.

W kolejnych częściach niniejszej serii artykułów, czytelnik dowie się także w jaki sposób uchronić się przed tego typu technikami zbierania informacji np. poprzez oszukiwanie atakującego, co do wersji czy rodzaju oprogramowania hostowanego na serwerze.