Hej, hej... Programisto, to kolejny artykuł dla Ciebie! Druga część artykułu na temat wzorców projektowych. Poznaj Adapter oraz Memento.
W tym artykule, zespół Innokrea opowie trochę o skanowaniu sieci w nietypowym kontekście. Czy zastanawialiście się kiedyś jak przeskanować cały Internet w kilka minut? Czy da się w ten sposób oszacować ilość urządzeń posiadających określone, być może podatne oprogramowanie? Jeśli Was zainteresowaliśmy, to zachęcamy do lektury.
Klasyfikacja skanów
Skany w informatyce możemy klasyfikować na wiele sposobów – między innymi w zależności od poziomu uprawnień, obiektu zainteresowania czy miejsca z jakiego operujemy. Przykładowo strona autorzy tego artykułu wyróżniają następujące podziały skanowania:
- ze względu na kierunek
– zewnętrzne – czyli dostępne z publicznej sieci np. Internetu
– wewnętrzne – dostępne z poziomu sieci lokalnej, co zakłada skompromitowanie LAN’u
- ze względu na uwierzytelnienie
– nieuwierzytelnione – tester penetracyjny lub oprogramowanie skanujące nie posiada wymaganych haseł bądź kluczy podwyższających uprawnienia. Jego działania są ogarniczone.
– uwierzytelnione – tester lub oprogramowanie otrzymuje wymagane klucze bądź hasła, dzięki czemu jest w stanie uzyskać więcej informacji
- ze względu na zakres
– ograniczone – skanujące określone urządzenie i przeznaczone dla tego urządzenia
– wszechstronne – skanujące systemy operacyjne i wszystkie rodzaje
Rysunek 1: Podział skanerów ze względu na zastosowanie. Źródło balbix.com.
Dodatkowo wyróżniamy skanery występujące na hoście, w sieci komputerowej jako dedykowane urządzenia (bezprzewodowo bądź przewodowo), a także takie służące do wykrywania podatności w aplikacjach Internetowych. To czego używamy jest zależne od potrzeb biznesowych i tego co chcemy osiągnąć. Zagadnieniem, którym dzisiaj chcemy się zająć jest efektywne skanowanie Internetu, co raczej rzadko może pojawiać się w kontekście urządzeń przeznaczonych do firm. Obojętnie jaki rodzaj skanu wybierzemy i jakie potrzeby przedstawimy, to wszystkie rozwiązania mają wspólną cechę – dostarczają automatycznie pewnych informacji na temat infrastruktury, które następnie możemy przetwarzać i wyciągać na ich podstawie wnioski, a nawet podejmować aktywne działania.
Masscan – kto, co i dlaczego?
Masscan jest narzędziem stworzonym przez Roberta Grahama w 2013 roku służącym do skanowania masowego skanowania gigantycznych podsieci. Działa w sposób asynchroniczny i wedle dokumentacji jest w stanie wysyłać nawet 10 milionów pakietów na sekundę. Do jego napisania wykorzystano język C, który ze względu na pracę na niskim poziomie abstrakcji jest językiem trudnym, ale bardzo efektywnym.
Masscan można może być wykorzystywany w celu:
- oszacowania ilości urządzeń o danym profilu np. mających podatną wersję oprogramowania
- skanowania ogromnych ilości w celu znalezienia takiego z podatną wersją i przełamania jego zabezpieczeń
Instalacja
Jeśli nie chcesz instalować Masscan’a to polecamy korzystanie z systemu Kali Linux, gdzie jest on włączony do bazowego pakietu programów. Jeśli natomiast chcesz wykonać instalację na Linuxie musisz wykonać następujące komendy:
sudo apt update
sudo apt install -y git gcc libpcap-dev
git clone https://github.com/robertdavidgraham/masscan
cd masscan
make
Aby przetestować, czy program działa należy skorzystać z komendy:
masscan –regression
Podstawy używania
Każdy element wyrażenia w Masscan nie zaczynający się od znaku “-” jest postrzegany jako adres ip w jednym z trzech formatów, w tym jako zakres. Istnieją także różne sposoby na określenie portów tcp i udp : -p80 LUB -p80,20-25 LUB –ports U:123, U:100-125
Rysunek 2: Fragment manual’a do narzędzia masscan w Kali Linux.
Masscan posiada osobny stos TCP/IP, co pozwala mu na użycie innego adresu IP niż na karcie sieciowej. Teoretycznie podawany adres źródłowy może być dowolny. Może to być inny publiczny adres lub inny adres z naszej lokalnej podsieci. Podanie jako adresu źródłowego adresu publicznego innego urządzenia może posłużyć do ataku typu reflection. Nie musimy jednak koniecznie zmieniać ip, aby używać podstawowych komend masscan.
Przykładowy skan sieci lokalnej:
masscan 192.168.0.0/24 -p80 –rate 10000
Możemy także zapisywać output komendy do pliku:
masscan 12.0.0.0/8 -p80,443,3306 > output.file
Ograniczenia systemowe
Warto zaznaczyć, że systemy mają swoje ograniczenia co do wysyłania i odbierania dużej ilości pakietów. Dla Windowsa jest to do 250 tysięcy pakietów na sekundę, a dla nowych wersji Linux’a nawet 2 milionów pakietów na sekundę. Żeby przekroczyć tę granicę należy posiadać złącze Ethernet Intel 10Gb/s oraz sterownik PF_RING_DNA. Jest on dostępny zarówno na systemy Windows jak i Linux.
Więcej opcji Masscan’a – banner grabbing
Aby poznać jakie usługi działają w skanowanym celu należy wykorzystać tak zwany “banner grabbing”, który jest techniką pozwalającą na uzyskanie informacji o danym systemie po to by sprawdzić wersję działającego na otwartym porcie oprogramowania. Jeśli oprogramowanie jest podatne w dalszej części hakerskiego scenariusza mogłoby wystąpić użycie exploit’a i dostanie się do serwera. Aby jednak w Masscanie uzyskać odpowiednie informacje z banera należy zmienić źródłowy adres IP na taki z tej samej podsieci – inaczej nie zadziała. Skaner oczywiście umożliwia podmianę źródłowego adresu IP pakietu za pomocą parametru “–adapter-ip” lub “–source-ip” (source-ip nie ma w dokumentacji, więc lepiej to pierwsze). Robi się to ze względu na to, że Masscan nie jest w stanie złapać banera z domyślnie skonfigurowanego adresu ip. Przełącznik “–adapter-ip” spełnia trzy podstawowe zadania:
- Zmienia źródłowy adres ip
- Filtruje pakiety przychodzące, tak aby nie odrzucać tych o tym adresie
- Odpowiada na zapytania ARP tego o ten adres
Rysunek 3: Przykładowe „złapanie” banera dla usługi internetowej. Zwróć uwagę na zmianę IP.
Podsumowując, dla sieci Ethernet, żeby złapać banner wystarczy wpisać komendę z przełącznikiem –banner i podmienić źródłowe ip (adapter-ip) na inne. Przy używaniu sieci Wi-Fi wymagana będzie dodatkowa reguła w iptables, która może wyglądać w ten sposób:
ipatables -A INPUT -p tcp –dport 61000 -j DROP
Następnie używając masscan’a należy zawsze podawać port źródłowy, którego używamy np.:
masscan 12.0.0.0/8 -p80 –banners –source-port 61000
Może się wydawać to kontrintuicyjne, że używamy portu, który przed chwilą został przez nas zablokowany na firewall’u. Jednak jest to celowe i robi się to po to, aby lokalny stos TCP/IP nie widział przychodzącego pakietu. Masscan poradzi sobie z regułami iptables, dlatego, że obchodzi ten mechanizm poprzez osoby stos protokołów TCP/IP. Więcej informacji na ten temat można przeczytać pod tym linkiem: https://github.com/robertdavidgraham/masscan.
Podsumowanie
W drugiej części artykułu dowiecie się jakie są zaawansowane opcje Masscan’a, a także czym jest atak typu reflection. Nadal pozostajemy w temacie skanowania sieci, więc jeśli temat Was interesuje, to zachęcamy do lektury.
Źródła:
- https://snyk.io/learn/vulnerability-scanner/
- https://en.wikipedia.org/wiki/Banner_grabbing
- https://www.balbix.com/insights/what-to-know-about-vulnerability-scanning-and-tools/
- https://snyk.io/learn/vulnerability-scanner/
- https://github.com/robertdavidgraham/masscan
- https://www.slideshare.net/cisoplatform7/defcon-22grahammc-millantentlermasscaningtheinternet
- https://www.youtube.com/watch?v=yhd8277HrEw
- https://blog.erratasec.com/2018/10/masscan-as-lesson-in-tcpip.html
- https://docs.aws.amazon.com/whitepapers/latest/aws-best-practices-ddos-resiliency/infrastructure-layer-attacks.html
- https://www.nazwa.pl/pomoc/baza-wiedzy/co-to-jest-cache-memcached-i-jak-z-niego-skorzystac/
- https://www.cloudflare.com/learning/ddos/memcached-ddos-attack/
- https://www.wired.com/story/github-ddos-memcached/
- https://manpages.org/masscan/8
- https://github.com/robertdavidgraham/masscan
- https://resources.infosecinstitute.com/topic/masscan-scan-internet-minutes/
- https://danielmiessler.com/study/masscan/