Czy adresy IP są „trywialne”?


65

Czytałem niektóre uwagi na temat nowej publicznej usługi DNS Google :

W sekcji dotyczącej bezpieczeństwa zauważyłem ten akapit:

Do czasu powszechnego wdrożenia standardowego ogólnosystemowego rozwiązania dotyczącego luk w systemie DNS, takiego jak protokół DNSSEC2, otwarte programy tłumaczące DNS muszą samodzielnie podjąć pewne działania w celu ograniczenia znanych zagrożeń. Zaproponowano wiele technik; patrz IETF RFC 4542: Środki mające na celu zwiększenie odporności DNS na fałszywe odpowiedzi, aby uzyskać przegląd większości z nich. W Google Public DNS wdrożyliśmy i zalecamy następujące podejścia:

  • Przeszacowanie zasobów maszyny w celu ochrony przed bezpośrednimi atakami DoS na same resolwery. Ponieważ adresy IP są łatwe do sfałszowania dla atakujących, niemożliwe jest blokowanie zapytań opartych na adresie IP lub podsieci; jedynym skutecznym sposobem radzenia sobie z takimi atakami jest po prostu wchłonięcie ładunku.

To przygnębiające zrozumienie; nawet w przypadku przepełnienia stosu / błędu serwera / superużytkownika często używamy adresów IP jako podstawy do wszelkiego rodzaju zakazów i bloków.

Myślenie, że „utalentowany” atakujący może w prosty sposób użyć dowolnego adresu IP, jakiego chcą, i zsyntetyzować tyle unikalnych fałszywych adresów IP, ile chcą, jest naprawdę przerażające!

Więc moje pytanie (pytania):

  • Czy to naprawdę , że łatwo intruzowi fałszować adres IP w środowisku naturalnym?
  • Jeśli tak, jakie środki łagodzące są możliwe?

Sfałszowane adresy IP nie powinny stanowić problemu w przypadku zakazów opartych na adresie IP, ponieważ ostatecznym celem jest uzyskanie dostępu, który wymaga legalnych odpowiedzi. Ale niektóre z większych zagrożeń to: IP współdzielone przez wiele osób (szkoły, miejsca pracy, kafejki internetowe, ...) oraz IP, które mogą zmienić się na dowolne po zresetowaniu modemu na niestatycznych DSL.
Halil Özgür,

Uzyskanie dostępu nie jest głównym celem wielu ataków wykorzystujących sfałszowane adresy. Podejrzewam, że różne ataki wzmacniające za pomocą DNS są częstsze. DNS jest piękny (z DNSSEC gorzej) - możesz wysłać mały, <100 bajtowy pakiet ze sfałszowanym adresem źródłowym, spowoduje, że sfałszowany adres otrzyma w odpowiedzi wzmocnienie 7x do 40x.
Michael Graff,

Odpowiedzi:


50

Jak twierdzi wiele innych, tworzenie nagłówków IP jest banalne, o ile nie zależy na otrzymaniu odpowiedzi. Dlatego jest to najczęściej widoczne w UDP, ponieważ TCP wymaga 3-kierunkowego uzgadniania. Jednym godnym uwagi wyjątkiem jest powódź SYN , która wykorzystuje TCP i próbuje powiązać zasoby na hoście odbierającym; ponownie, ponieważ odpowiedzi są odrzucane, adres źródłowy nie ma znaczenia.

Szczególnie nieprzyjemnym efektem ubocznym zdolności atakujących do fałszowania adresów źródłowych jest atak rozproszenia wstecznego . Jest tutaj doskonały opis , ale w skrócie jest to odwrotność tradycyjnego ataku DDoS:

  1. Przejmij kontrolę nad botnetem.
  2. Skonfiguruj wszystkie węzły, aby korzystały z tego samego źródłowego adresu IP dla złośliwych pakietów. Ten adres IP będzie Twoją ewentualną ofiarą.
  3. Wysyłaj pakiety ze wszystkich kontrolowanych węzłów na różne adresy w Internecie, celując w porty, które zasadniczo nie są otwarte, lub łącząc się z prawidłowymi portami (TCP / 80) podającymi się za część już istniejącej transakcji.

W obu przypadkach wymienionych w (3) wiele hostów odpowie komunikatem ICMP nieosiągalnym lub resetem TCP, ukierunkowanym na adres źródłowy złośliwego pakietu . Atakujący ma teraz potencjalnie tysiące bezkompromisowych maszyn w sieci, które przeprowadzają atak DDoS na wybraną przez siebie ofiarę, wszystko przy użyciu sfałszowanego źródłowego adresu IP.

Jeśli chodzi o łagodzenie, to ryzyko jest tak naprawdę takie, że tylko dostawcy usług internetowych (a szczególnie dostawcy usług zapewniający dostęp klientom, a nie tranzyt) mogą się zająć. Istnieją dwie główne metody:

  1. Filtrowanie Ingress - zapewniające, że pakiety przychodzące do twojej sieci są pozyskiwane z zakresów adresów, które znajdują się po drugiej stronie interfejsu przychodzącego. Wielu dostawców routerów implementuje takie funkcje, jak przekazywanie zwrotne w trybie emisji pojedynczej , które korzysta z tabel routingu i przekazywania routera w celu sprawdzenia, czy następnym skokiem adresu źródłowego pakietu przychodzącego jest interfejs przychodzący. Najlepiej jest to wykonać przy pierwszym przeskoku 3 warstwy w sieci (tj. Domyślnej bramie).

  2. Filtrowanie wyjść - upewniając się, że pakiety wychodzące z Twojej sieci pochodzą tylko z posiadanych zakresów adresów. Jest to naturalne uzupełnienie filtrowania wejścia i jest zasadniczo częścią „dobrego sąsiada”; upewniając się, że nawet jeśli twoja sieć jest narażona na szkodliwy ruch, ruch ten nie jest przekazywany do sieci, z którymi współpracujesz.

Obie te techniki są najskuteczniejsze i najłatwiejsze do wdrożenia, gdy są wykonywane w sieciach „brzegowych” lub „dostępowych”, w których klienci łączą się z dostawcą. Wdrożenie filtrowania wejścia / wyjścia powyżej warstwy dostępu staje się trudniejsze ze względu na złożoność wielu ścieżek i routingu asymetrycznego.

Widziałem te techniki (szczególnie filtrowanie wejścia) stosowane z wielką skutecznością w sieci korporacyjnej. Być może ktoś z większym doświadczeniem usługodawcy może dać większy wgląd w wyzwania związane z wdrażaniem filtrowania wejścia / wyjścia w Internecie. Uważam, że obsługa sprzętu / oprogramowania układowego jest dużym wyzwaniem, a także niemożnością zmuszenia dostawców usług w innych krajach do wdrożenia podobnych zasad ...


Brzmi paskudnie. Czy administrator może coś zrobić, jeśli znajdzie taki serwer w taki sposób? Czy można tymczasowo zablokować pakiety ICMP i komunikaty resetowania TCP ze wszystkich adresów IP? Czy byłbyś w stanie działać w taki częściowo nienormalny sposób, jak ten?
UpTheCreek

45

Czy osoba atakująca może tak łatwo sfałszować adres IP na wolności?

Jasne, jeśli nie obchodzi mnie faktyczne otrzymywanie odpowiedzi, mogę bardzo łatwo wysyłać pakiety przy użyciu dowolnego adresu źródłowego, który mi się podoba. Ponieważ wielu dostawców usług internetowych tak naprawdę nie ma dobrych zasad dotyczących wychodzenia, wszystko, co sfałszuję, generalnie zostanie dostarczone.

Jeśli atakujący rzeczywiście potrzebuje dwukierunkowej komunikacji, staje się bardzo trudny. Jeśli potrzebują komunikacji dwukierunkowej, łatwiej jest po prostu użyć jakiegoś proxy. Co jest bardzo łatwe do skonfigurowania, jeśli wiesz, co robisz.

Banowanie ludzi według adresu IP jest umiarkowanie skuteczne na SF / SO / SU, ponieważ strona używa http / https, co wymaga dwukierunkowej komunikacji.


16
http (s) jest tutaj kluczem. DNS używa UDP, więc cała komunikacja odbywa się za pośrednictwem pojedynczych pakietów bez potwierdzeń w protokole.
noah

16
Zgadnij jest jak e-mail. Możesz wysłać dowolny adres, chyba że chcesz otrzymywać odpowiedzi
Jorge Bernal,

@Jorge: Zdecydowanie. Analogia wiadomości e-mail / pocztowych jest świetna do wyjaśnienia tego użytkownikom końcowym.
Evan Anderson,

W DNS można również używać TCP, ale obecnie przeraża to ludzi. Jednak nie ma wbudowanego potwierdzenia, ponieważ odpowiedzią jest ACK.
Michael Graff,

6
@ noah - w rzeczywistości kluczem jest TCP , a nie HTTP. Sfałszowanie TCP nie jest niemożliwe, ale jest 100 razy trudniejsze niż UDP.
Alnitak,

22

Mały dowód koncepcji dla odpowiedzi Zordeche'a (z ubuntu):

$ sudo apt-get install hping3
$ sudo hping3 -1 --spoof 11.10.10.20 www.google.com
HPING www.google.com (eth0 64.233.169.105): icmp mode set, 28 headers + 0 data bytes

Następnie w innej konsoli:

$ sudo tcpdump -i eth0 'icmp'
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes
13:30:19.439737 IP 11.10.10.20 > yo-in-f105.1e100.net: ICMP echo request, id 31297, seq 0, length 8

Tak, trywialne, ale wtedy nie otrzymujesz odpowiedzi, jak wcześniej wspomniano, chyba że masz dostęp do 11.10.10.20 lub masz sniffera gdzieś pomiędzy www.google.com a 11.10.10.20 (I musiałby być tuż przed z obu końców, ponieważ nie można przewidzieć trasy pakietów). Ponadto bramka spoofera (ISP) może nie wypuścić tego pakietu za drzwi, jeśli trwa jakaś kontrola ip i widzi, że źródło brzydko pachnie.


1
Ale dostawcy usług internetowych zwykle nie przejmują się inspekcją pakietów, prawda?
Pacerier

13

Adresy IP są łatwe do wytworzenia dla jednokierunkowego ruchu UDP . W przypadku pakietów TCP można tylko fałszować, aby uzyskać połowę otwarte połączenia TCP z pakietami SYN. Jest to także podstawa pewnego rodzaju ataku na DOS. Ale nie można nawiązać połączenia HTTP ze sfałszowanym adresem (na przykład, jeśli filtrujesz sesje, aby użyć tego samego adresu IP). Chociaż tak, możesz sfałszować adres IP w pakietach, jest on użyteczny tylko w przypadku niektórych rodzajów ataków typu „odmowa usługi”.


Czy masz na myśli, że trudno jest nawiązać połączenie HTTP ze sfałszowanym adresem lub że nawet nie jest to możliwe ?
Pacerier

W otwartym Internecie jest to niemożliwe. Jeśli korzystasz z tej samej sieci LAN, istnieje kilka sztuczek, które mogą oszukać inny komputer w celu wysłania ruchu do Ciebie ( web.eecs.umich.edu/~zhiyunq/pub/... ). Możesz myśleć o tym w ten sposób. UDP przypomina wysyłanie pocztówki. Możesz wpisać dowolną nazwę na żądany adres zwrotny. TCP jest jak rozmowa, w której jeśli nie podasz prawidłowego adresu zwrotnego, nie będziesz mógł kontynuować rozmowy. Niektóre inne odpowiedzi tutaj wyjaśniają to znacznie lepiej.
FryGuy

10

Artykuł w GOOG wyraźnie omawiał DNS. DNS używa zarówno pakietów UDP, jak i TCP. Te UDP można sfałszować, ale nie TCP. TCP wymaga uzgadniania w 3 kierunkach . Jeśli adres IP pakietu TCP zostanie sfałszowany, komputer fałszujący nie otrzyma odpowiedzi i połączenie się nie powiedzie. UDP, jak wspomniano w innych odpowiedziach, to „odpal i zapomnij” i nie wymaga komunikacji w odpowiedzi. Z tego powodu ataki DoS występują prawie wyłącznie w postaci pakietów UDP.

W kontekście przepełnienia stosu i witryn rodzinnych problem podniesiony przez Takaun Daikon jest bardzo ważny. Istnieje wiele sposobów uzyskania nowego adresu IP od usługodawcy internetowego. Zmiana adresu MAC jest oczywiście najłatwiejsza i działa dla wielu dostawców usług internetowych. Ponadto wielu ludzi, którzy są głupie, może korzystać z publicznego proxy lub TOR. Wyraźne zablokowanie źródłowego adresu IP dla tych pakietów po prostu zablokowałoby serwer proxy lub węzeł terminacji TOR.

Czy blokowanie adresów IP jest prawidłowe? Do diabła, tak jest. Ale skończysz z błędami. Zablokujesz niektóre adresy IP, które tak naprawdę nie są źródłem problemu (np. Serwery proxy), a także będziesz mieć ludzi unikających twoich bloków poprzez zmianę adresów IP. Osoba, która ma pecha, by później uzyskać zablokowane IP, nie będzie mogła uzyskać dostępu do rodziny witryn SO. Ale błąd stawka powinna być niewielka. Chyba że blokujesz ogromne zestawy adresów IP. Ale jeśli blokujesz jeden lub dwa dziennie, wszystko powinno być w porządku.

Możesz wprowadzić nieco bardziej wyrafinowany schemat, w którym blokujesz, ale tylko na pewien okres, na przykład rok. Jeśli twoja sieć jest zdolna do ograniczania przepustowości lub ograniczania połączeń, możesz również rozważyć schemat, w którym torby douche, które uruchamiają testy porównawcze Apache w Twojej witrynie, po prostu umieszczane są w klatce o bardzo ograniczonej przepustowości.


1
Możesz zostać sfałszowany. Wystarczy spojrzeć na przejęcie sesji TCP. google.com/search?q=hijack+tcp+session
Dan

O ile atakujący nie ma na początku dostępu do strumienia ruchu, ataki sekwencjonowania TCP przy użyciu nowoczesnych systemów operacyjnych są dość niepraktyczne. Jeśli i tak są man-in-the-middle, prawdopodobnie i tak nie muszą nawet przechwytywać połączeń TCP.
Evan Anderson,

10

Fałszowanie adresów IP będzie kontynuowane, ponieważ dostawcy usług internetowych są leniwi.

Mój cholerny dostawca usług internetowych dobrze wie, że jestem pod określonym adresem lub przynajmniej podsiecią, w której jestem. Ale mogę użyć dowolnego adresu źródłowego. Dlaczego? Po prostu koszt.

Jeśli sfałszuję kilka adresów tu i tam, mój dostawca usług internetowych nic nie kosztuje. Gdyby każdy użytkownik mojego ISP sfałszował jeden pakiet między 1:00 a 2:00, nadal nie byłoby to zbyt duże załamanie radaru. Jednak gdy botnet wysyła wiele sfałszowanych pakietów z wielu hostów na wielu ISP, komputer docelowy lub sieć przewraca się.

Rzeczywistość finansowa jest taka, że ​​jeśli nie jesteś atakowany, fałszowanie nic nie kosztuje. Wdrożenie filtrowania w pobliżu klienta kosztuje, a ten, kto wydaje pieniądze, osiąga bardzo niewielki zwrot poza wiedzą, że są dobrymi obywatelami sieci.

UDP i ICMP są najłatwiejsze do sfałszowania, ale TCP jest również możliwy. Wymaga niepewnego zdalnego systemu operacyjnego, który wykorzystuje przewidywalne numery sekwencji do wykorzystania. Czasami to maszyny do równoważenia obciążenia zmieniają numery sekwencyjne i czynią je przewidywalnymi. Tak więc TCP jest możliwy - ale trudniejszy.

Ochrona przed podszywaniem się DNS skupia się głównie na bezpieczeństwie polegającym na zapobieganiu przesyłania fałszywych odpowiedzi do rekurencyjnego programu tłumaczącego. Aspekty zalewania UDP nie są specyficzne dla DNS, poza pojedynczym małym zapytaniem (powiedzmy dla „.”) Spowoduje dość dużą odpowiedź. W ten sposób tworzy ładny wektor wzmocnienia. Istnieje wiele innych protokołów UDP, które działają, ale DNS jest używany wszędzie i łatwo jest znaleźć maszyny do wzmocnienia ataków.

DNSSEC czyni to jeszcze gorszym dzięki pakietom UDP, które mogą osiągnąć rozmiar 4k.


6

Adresy IP są trywialne w przypadku ataków DOS opartych na DNS (D), ponieważ zazwyczaj są to przypadki pakietów UDP typu fire-and-zapomnij. W przypadku ruchu HTTP tak nie jest, więc musisz być w tej samej sieci lokalnej, co serwer sieciowy (całkowicie możliwe, oczywiście w zależności od miejsca hostowania witryny) lub kontrolować routery pośrednie.


6

Możesz wysłać list do każdego, a jeśli nie umieścisz adresu zwrotnego na kopercie (lub nie umieścisz niewłaściwego), mogą oni zatrudnić wszystkich filtrujących wiadomości-śmieci na świecie i nie odfiltrować twojej wiadomości bez otwierania (przetwarzanie) ) to.

Jeśli jednak nadawca chce odpowiedzi, adres zwrotny powinien być poprawny lub w celu uzyskania poprawnego adresu musiałby istnieć mechanizm warstwy aplikacji. Mogę sprawić, że pomyślisz, że otwierasz list od Nany, ale nawet jeśli oszukam cię zawartością listu, nie wyślesz Nanie czeku wystawionego do GOTÓWKI na jakiś adres w Nigerii (chyba że Nana jest Nigeryjczykiem ). Wyzwanie / reakcja jest więc skuteczną obroną, o ile nie jesteś również Człowiekiem w Średnim Wieku.


5

Mogę ustawić dowolny źródłowy adres IP w datagramie.
To, czy mój dostawca usług internetowych wypuściłby taki pakiet na wolność, to kolejne pytanie.


Czy w ogóle można ominąć filtr ISP?
Pacerier

5

Chociaż jest to z pewnością rzeczywistość, z którą należy się uporać, podstawowy problem jest naprawdę nietechniczny: ludzie ze złośliwymi zamiarami próbują robić złośliwe rzeczy. Dlatego prawdziwe rozwiązanie musi być nietechniczne.

Myślę, że to, co zrobił Stackoverflow, jest DOKŁADNIE właściwym rozwiązaniem do obsługi drugiej linii obrony: Techniki ograniczania potencjalnych użytkowników spamu poprzez różne sposoby ograniczania ich możliwości interakcji z platformą przed osiągnięciem pewnego poziomu „wiarygodności”.

Techniki te nie tylko pomagają poprawić ogólną jakość witryny, ale także zachęcają użytkowników do większego zaangażowania i dostarczania bardziej wiarygodnych / wiarygodnych odpowiedzi.

Z technicznego punktu widzenia najlepiej byłoby zrobić, jak sugeruje Google: po prostu być skutecznym w absorpcji / radzeniu sobie z dodatkowym obciążeniem.

Świetna robota i ulepszaj się!


3

UDP jest główną częścią tego, dlaczego jest to łatwe - w rzeczywistości Skype i Slingbox wykorzystują możliwość łatwego fałszowania adresów IP w UDP w celu „ przebijania ” się przez NAT i umożliwiania łatwego peer-to-peer.

Protokół TCP jest trudniejszy, ponieważ wymaga pełnego cyklu SYN / ACK, ale nadal można zalać serwer wiszącymi pakietami SYN, które przechodzą na adresy IP z dala od komputera i zasadniczo wiążą ogromną liczbę routerów.


1
Routery kierują tylko pakiety. Nie utrzymują stanu TCP, więc pakiet jest pakietem dla nich pakietem.
Michael Graff,

Słuszna uwaga. Tak więc będzie wiązać serwery (lub jakiekolwiek inne urządzenie frontowe, które negocjuje SYN / ACK) czekając na ich ACK :-) Mamy skonfigurowane równoważniki obciążenia, aby w pełni negocjować SYN / ACK przed przekazaniem go serwerom na połączenie już otwarte, co pomaga w takim przypadku na dużą skalę.
Justin

2

Jak wspomniano powyżej, korzystanie z serwerów proxy jest trywialne i dostępna jest bardzo duża liczba otwartych anonimowych serwerów proxy.

Nawet bez użycia proxy mogę ustawić adres MAC w mojej zaporze sieciowej na dowolną nową dowolną wartość, zresetować modem kablowy, a mój dostawca usług internetowych przydzieli mi zupełnie nowy błyszczący adres IP.

I to tylko na początek. Istnieje wiele innych sposobów obejścia zakazów IP.


to nie jest problem. Prawdziwym „problemem” jest tutaj zaprojektowanie protokołu IP, który nie przewiduje weryfikacji, czy adres IP, z którym tworzysz pakiet IP, należy do Ciebie, czy nie. Możesz więc stworzyć burzę pakietów z różnymi adresami źródłowymi (docelowymi) i nic nie powstrzyma ich przed wysłaniem.
monomyth

3
Coś może cię zatrzymać. Twój dostawca usług internetowych może skonfigurować filtry wyjściowe na swoich routerach, aby nie zezwalały na przekazywanie pakietów, chyba że źródłowy adres IP faktycznie należy do tej sieci.
Zoredache,

2

Jeśli tak, jakie środki łagodzące są możliwe?

Niewiele możesz zrobić po stronie odbierającej.

ISP fałszerza powinien filtrować ruch wychodzący, aby jego klienci nie mogli sfałszować adresów IP z różnych sieci.

To tylko kilka linii w konfiguracji routera, więc nie ma dobrej wymówki, aby tego nie robić.

Istnieje sposób na śledzenie osoby atakującej, ale wymaga współpracy dostawców usług nadrzędnych: http://www.cymru.com/Documents/dos-and-vip.html


2

Jak zauważyli inni, UDP jest dość trywialne, a TCP nie tyle.

Preferowaną obroną, ale niestety nie wszędzie stosowaną, są filtry wyjściowe.

W przypadku dostawców usług internetowych korzystających z usług DSL itp. Każda linia wirtualna powinna być skonfigurowana z ip verify unicast reverse-path(lub czymkolwiek innym niż Cisco), który blokuje każdy pakiet, którego źródłowy adres IP nie znajduje się w zakresie, o którym wiadomo, że jest kierowany tą linią.


1

Pamiętam, jak programowałem gniazda pod koniec lat 90. przy pomocy prawdopodobnie Visual Basic i mogliśmy ustawić źródłowy adres IP na naszym połączeniu. Pamiętam niejasno, że kiedy próbowaliśmy, netstat -an pokazał rzeczywiste źródłowe IP, ale logi Apache pokazały fałszywe IP; i myślę, że Apache przekazał sfałszowane IP do modułów perla i tak dalej.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.