NFsec Logo

Uwalniamy program ping od setuid i capabilities

28/04/2026 (2 tygodnie temu) w Administracja, Bezpieczeństwo Możliwość komentowania Uwalniamy program ping od setuid i capabilities została wyłączona

N

iewiele osób wie, że od wersji jądra 3.0 (Lipiec 2011 rok – szybsza wzmianka grudzień 2010 r.) program ping nie potrzebuje bitu SUID (ang. Set User ID), ani innych rozszerzonych zdolności typu CAP_NET_RAW, aby poprawnie działać. Wprowadzona do tej wersji jądra łatka dodała gniazdo typu IPPROTO_ICMP, które umożliwia wysyłanie wiadomości typu ICMP_ECHO i odbieranie odpowiadających im komunikatów ICMP_ECHOREPLY bez żadnych specjalnych uprawnień. Jest to podobny mechanizm do tego, który został zaimplementowany w MacOS X. Wcześniej, aby wysłać pakiet ICMP_ECHO (Echo Request), program musiał otworzyć tzw. surowe gniazdo (ang. raw socket). W systemach *nix surowe gniazda są niezwykle potężne i niebezpieczne, ponieważ pozwalają programowi samodzielnie konstruować dowolne nagłówki pakietów, co może być wykorzystane np. do podszywania się (spoofingu) pod inne adresy IP lub ataków DoS/DDoS. Dlatego dostęp do nich zazwyczaj ma tylko administrator systemu. Jednak poprawka c319b4d wprowadziła nowy typ gniazda, który jest „bezpieczniejszy”, ponieważ jądro systemu samo pilnuje struktury pakietu ICMP. Użytkownik może wysłać prośbę o komunikat diagnostyczny do sieci za pomocą programu ping, ale jądro nie pozwoli mu sfałszować adresu źródłowego ani zmodyfikować krytycznych części nagłówka, które mogłyby zaszkodzić badanej sieci.

Niestety wiele dystrybucji wciąż jeszcze ustawia bit SUID dla programu ping:

root@darkstar:~# ls -al /bin/ping
-rwsr-xr-x 1 root root 74384 Mar 31  2024 /bin/ping

Powoduje to, że każdy użytkownik uruchamiający program ping na moment staje się administratorem, a jeśli w kodzie tego programu znajdzie się błąd (np. przepełnienie bufora) – atakujący może przejąć pełną kontrolę nad systemem. Spójrzmy teraz na wprowadzone ustawienia jądra net.ipv4.ping_group_range (dostępne przez sysctl), które definiuje zakres identyfikatorów grup (GID), mających prawo do tworzenia specjalnego typu gniazd:

socket(AF_INET, SOCK_DGRAM, IPPROTO_ICMP)

Czyli:

root@darkstar:~# sysctl net.ipv4.ping_group_range
net.ipv4.ping_group_range = 1	0

Domyślnie większość dystrybucyjnych jąder systemu wciąż ma ustawioną wartość „1 0„. Jest to sztuczka powodująca, że jeśli „startowa” wartość identyfikatora grupy (GID) jest większa niż „końcowa” wartość GID to zakres jest uważany za pusty. To skutecznie wyłącza tę funkcję dla wszystkich, dopóki administrator systemu jej nie skonfiguruje. Co w uproszczeniu oznacza, że żaden nieuprzywilejowany użytkownik nie będzie mógł używać nowego typu gniazd ICMP, a polecenie ping powróci do używania tradycyjnych (i bardziej uprzywilejowanych) surowych gniazd. Sprawdźmy jak to działa w praktyce:

root@darkstar:~# chmod u-s /bin/ping

agresor@darkstar:~$ ping nfsec.pl
ping: Lacking privilege for icmp socket.

root@darkstar:~# id agresor
uid=1000(agresor) gid=1000(agresor) groups=1000(agresor)

root@darkstar:~# echo "1000 1000" > /proc/sys/net/ipv4/ping_group_range

agresor@darkstar:~$ ping -c 1 nfsec.pl
PING nfsec.pl (147.135.209.161): 56 data bytes
64 bytes from 147.135.209.161: icmp_seq=0 ttl=125 time=26.176 ms
--- nfsec.pl ping statistics ---
1 packets transmitted, 1 packets received, 0% packet loss
round-trip min/avg/max/stddev = 26.176/26.176/26.176/0.000 ms

Powyższy zabieg daje nam kilka korzyści. Po pierwsze eliminację bitu SUID, co zmniejsza powierzchnię ataku na system. Po drugie administrator systemu może precyzyjnie określić, które grupy użytkowników mogą używać narzędzi sieciowych (np. 0 2147483647 da je praktycznie każdemu użytkownikowi). I ostatnim argumentem jest także uproszczenie uprawnień w środowiskach kontenerowych (Docker / Kubernetes), które również nie będą wymagały CAP_NET_RAW do używania programu ping.

Więcej informacji: ICMP

Geo IP

10/04/2022 w Debug Możliwość komentowania Geo IP została wyłączona

C

zy ten plik to malware? Zależy jakiego silnika antywirusowego się spytasz. Podobnie jest w temacie znajdowania lokalizacji adresu IP, ponieważ powiązanie rzeczywistej lokalizacji z adresem IP jest prawie niemożliwe do pewnego poziomu dokładności (np. ulicy, miasta). Wiele osób od razu podniesie głos sprzeciwu odnosząc się do dostawców usług oferujących geolokalizację adresów IP. Tak, istnieją bazy zawierające informacje o lokalizacji geograficznej adresu IP. Niektóre nawet twierdzą, że mają bardzo dokładne informacje, ale czy są one wiarygodne? Rzućmy okiem na adres: 188.130.189.153. W tym celu skorzystamy z serwisów zawartych na stronie: resolve.rs, ponieważ uwzględnia ona bardzo dużo dostawców typu IP2GEO, z którymi możemy sprawdzić wspomniany adres IP. Przechodząc przez poszczególne serwisy i zadając im zapytanie o ten sam adres widzimy wiele różnic w wynikach. W momencie pisania tego wpisu wyniki były, co najmniej mylące nawet na poziomie kraju.
[ czytaj całość… ]

Kroniki Shodana: Modemy Verizona

02/08/2017 w Pen Test Możliwość komentowania Kroniki Shodana: Modemy Verizona została wyłączona

Prawie każdy dostawca internetu ma w zwyczaju przywiązywanie się do jednego producenta sprzętu. Hurtowe zamówienia, hurtowe ceny. Jeśli zapytamy shodana o modemy nasłuchujące na porcie 8443 oraz firmę Verizon Wireless otrzymamy dostęp do tysięcy urządzeń pochodzących od firmy cradlepoint. Jest to firma, która wykorzystuje do uwierzytelniania dane z adresu MAC, który powinien być unikalny dla każdego wyprodukowanego routera. Ogólnie rzecz biorąc wydawać się może, że zachowanie to dostarcza więcej entropii w schemacie uwierzytelniania niż ma to miejsce w przypadku domyślnego mechanizmu hasła, którego większość producentów routerów LAN/WAN jeszcze używa.
[ czytaj całość… ]

Czarna pielęgniarka

14/11/2016 w Ataki Internetowe Możliwość komentowania Czarna pielęgniarka została wyłączona

B

lacknurse jest kolejnym rodzajem ataku typu ICMP Flood. Wystarczy niewielka przepustowość, aby przeprowadzić skuteczny DoS (Denial of Service) na kilku zaporach ogniowych znanych producentów. Czym ten atak różni się od typowego ICMP Ping Flood? Ping używa pakietów ICMP Typu 8, czyli Echo Requests, a pielęgniarka ICMP Typu 3, czyli Destination Unreachable – co powoduje znacznie większe zużywanie zasobów na zaporach w porównaniu do innych bardziej powszechnych ataków. Wystarczy, że firewall zezwala na przyjmowanie pakietów ICMP Typu 3 na zewnętrznych interfejsach, aby atak stał się bardzo skuteczny nawet przy jego niskiej przepustowości. Jak niskiej? Wystarczy około 15 – 18 Mbit/s i wolumen pakietów w przedziale od 40 do 50 tysięcy na sekundę, aby położyć np. 1 Gbit/s łącze ofiary.
[ czytaj całość… ]

Wyciek danych poprzez ping

06/12/2015 w Bezpieczeństwo Możliwość komentowania Wyciek danych poprzez ping została wyłączona

Dostanie się do chronionej sieci, a pobranie z niej danych bez bycia zauważonym to dwie różne techniki pokonywania zabezpieczeń. Tylko dlatego, że ofiara skusiła się na kliknięcie spreparowanego linku z szkodliwym oprogramowaniem nie znaczy, że agresor właśnie otrzymał otwartą furtkę, aby przejść przez firewall lub IDS z danymi na których mu zależy. Chyba, że użyje do tego prostego programu ping?
[ czytaj całość… ]

Atlas całego świata

02/01/2015 w Techblog Możliwość komentowania Atlas całego świata została wyłączona

P

rogram RIPE Atlas jest największą na świecie siecią pomiarową Internetu. Idea uczestnictwa w programie jest bardzo prosta: w zamian za podłączenie sondy do swojej sieci w celu prowadzenia badań i pomiarów przez zarządców sieci Atlas oraz innych uczestników – otrzymujemy dostęp do każdej innej sondy sieci Atlas na całym świecie (w tym momencie: 7.5 tysiąca) z możliwością uruchomienia własnych testów wydajności. To pozwala na sprawdzanie i mierzenie dostępów do własnych serwerów / routerów itd. z różnych miejsc na całym świecie w ciągu kilku minut.

Więcej informacji: RIPE Atlas, czyli największa sieć pomiarowa

Które maszyny żyją w LANie?

14/11/2010 w Administracja 1 komentarz.

D

o zbadania, które hosty w określonej sieci LAN są dostępne można wykorzystać polecenie ping lub narzędzie nmap. Pierwsze z nich wykorzystuje mały skrypt, który można uruchomić z linii poleceń w celu przeprowadzenia automatycznego pingowania każdego z hostów. W poniższym przykładzie mamy do czynienia z prywatną siecią klasy C o masce 255.255.255.0 (24-ro bitowa):
[ czytaj całość… ]