NFsec Logo

Uwalniamy program ping od setuid i capabilities

28/04/2026 (3 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

SAD DNS

15/11/2020 w Ataki Internetowe Możliwość komentowania SAD DNS została wyłączona

N

aukowcy z Uniwersytetu Tsinghua i Uniwersytetu Kalifornijskiego na tegorocznej konferencji ACM CCS przedstawili nową metodę, którą można użyć do przeprowadzania ataków polegających na zatruwaniu pamięci podręcznej DNS. Nowe odkrycie ożywia błąd z 2008 roku, który kiedyś uważano za rozwiązany na dobre. W celu zrozumienia na czym polega reinkarnacja tego ataku powróćmy do jego podstaw. DNS jest książką adresową internetu. Co się dzieje jak wpisujemy adres URL (ang. Uniform Resource Locator) np. https://nfsec.pl do przeglądarki? Przeglądarka sprawdza swoją pamięć podręczną pod kątem wpisu DNS, aby znaleźć odpowiedni adres IP witryny. Jeśli nie zostanie znaleziony kontynuuje sprawdzanie pamięci podręcznej: systemu operacyjnego, najbliższego serwera DNS (routera lub ISP). Jeśli wpis nadal nie zostanie znaleziony to serwer DNS (routera lub ISP) inicjuje zapytanie DNS w celu znalezienia adresu IP serwera obsługującego nazwę domeny (autorytatywnego) i prosi go o podanie adresu IP szukanej domeny.
[ 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ść… ]

Tunele ICMP i powłoki zwrotne

18/09/2016 w Ataki Internetowe, Bezpieczeństwo Możliwość komentowania Tunele ICMP i powłoki zwrotne została wyłączona

P

rotokół UDP nie jest jedynym, który umożliwia „ukrytą” komunikację. Równie popularnym, jak i rzadko blokowanym jest ICMP. Niestety i on może zostać wykorzystany przez napastników do kontroli nad skompromitowanym systemem. Idea enkapsulacji danych oraz poleceń w ruchu sieciowym za pomocą ICMP w celu stworzenia niewidzialnych kanałów komunikacji została spopularyzowana przez narzędzie Loki opisane w 49 wydaniu Magazynu Phrack z 1996 roku. W 1999’tym botnet Tribe Flood Network (TFN) służący do ataków DDoS po analizie Davida Dittricha ujawnił badaczowi, że używał podobnego schematu komunikacji do zdalnego kontrolowania zainfekowanych systemów. Wśród nowszych narzędzi można wymienić backdoora icmpsh. Tunelowanie ICMP jest możliwe, ponieważ w RFC 792, czyli dokumencie regulującym pakiety ICMP przewiduje się możliwość zawarcia dodatkowych danych dla każdego komunikatu typu 0 (echo replay) oraz 8 (echo request). Zresztą inne komunikaty ICMP mogą również służyć do infiltracji sieci. Standardowym postępowaniem jest ograniczenie łączności tylko do zaufanych (monitorujących) serwerów.

Więcej informacji: Wyciek przez ping, ICMPsh, ICMP Tunnel, Bypassing Firewalls Using ICMP-Tunnel

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ść… ]

TCP/IP Timestamps – odczytywanie uptime hosta w sieci i nie tylko

12/12/2010 w Bezpieczeństwo Możliwość komentowania TCP/IP Timestamps – odczytywanie uptime hosta w sieci i nie tylko została wyłączona

Z

naczniki czasu określone przez RFC1323 służą między innymi do ochrony przed „owijaniem” się numerów sekwencyjnych (PAWS – ang. Protection Against Wrapped Sequence Numbers), czy obliczaniem opóźnienia pomiędzy wysłaniem segmentu (PDU – ang. Protocol Data Unit dla warstwy transportu), a otrzymaniem potwierdzenia jego otrzymania (RTTM – ang. Round-Trip-Time Measurement).
[ czytaj całość… ]

Fire(wall)walking – spacer po zaporze ogniowej

02/05/2010 w Ataki Internetowe Możliwość komentowania Fire(wall)walking – spacer po zaporze ogniowej została wyłączona

F

irewalking w oryginalnym znaczeniu odnosi się do spaceru po ogniu / żarze. Od strony informatycznej stosuje się to pojęcie do dokładnej analizy sieci i zapory ogniowej od strony intruza. Analiza taka pozwala na ocenę stanu jej odporności i ukazania słabości. Można stwierdzić, że każdy audyt bezpieczeństwa sieciowego dotyczy przeprowadzania testów penetracyjnych. Wówczas idea opiera się na symulacji działań potencjalnego intruza. Testy penetracyjne lub tzw. pentesty przeprowadza się przy założeniu, że nie są znane: struktura oraz usługi badanej sieci.
[ czytaj całość… ]

Tworzenie firewalla z linii poleceń serwera

28/09/2009 w Hacks & Scripts Możliwość komentowania Tworzenie firewalla z linii poleceń serwera została wyłączona

P

rzedstawiony hack jest tłumaczeniem „Creating a Firewall from the Command Line of any Server” z książki „Linux Servers Hacks” autorstwa Rob’a Flickenger’a dostępnionym on-line (Hack #45) na stronie http://hacks.oreilly.com. Do tłumaczenia zostało dodane także parę informacji od tłumacza.
[ czytaj całość… ]