Spoofing

Spoofing


Mianem spoofing określamy podszywanie sie pod inny komputer.
Spoofing jest bardzo użyteczną metodą ataku gdy komputer pod który się podszywamy jest maszyną zaufaną dla innego komputera - naszej ofiary. Elementy zaufania opartego o adresy IP są stosowane między innymi w programie rlogin, który pozwala zaufanym komputerom uzyskać konsolę po połączeniu sie na port 513. Jeżeli uda nam się podszyć pod IP zaufanego komputera to uzyskamy dostep do serwera bez hasła.

Po krótce: oto jak przebiega połączenie w protokole TCP miedzy X a Y:
Tzw. TCP handshake

X ------------ SYN -----------> Y - inicjalizacja połączenia ze strony X X <---------SYN/ACK ---------- Y - potwierdzenie otrzymania prośby, weryfikacja prawdziwości X ------------ ACK -----------> Y - potwierdzenie, nawiązanie połączenia

Poniżej opiszę scenariusz przykładowego spoofingu. Zakładamy, że jest serwer YY, który traktuje maszynę X jako zaufaną i pozwala na logowanie sie z tej maszyny bez hasła (rlogin, port 513). Nasz komputer V(ampire) nie jest oczywiście w żaden sposób uprzywilejowany przez YY lub X.

  1. Atakujemy maszynę X atakiem Denial of Service, X nie może odpowiadać na wywołania.
  2. V podszywając się pod X wysyła pakiet z SYN do komputera YY.
  3. YY przyjmuje chęć połączenia i wysyła pakiet SYN/ACK do komputera X. Komputer X nie może odebrać połączenia. Gdyby się tak stało, to w odpowiedzi na SYN/ACK będące następstwem SYN, którego on nie wysyłał do YY wysłałby RST - polecenie resetujące proces połączenia - to jedno z zabezpieczeń protokołu TCP. Ale X nie wyśle pakietu z RST, bo jest zablokowany DOSem.
  4. Na pakiet SYN/ACK od YY do X odpowie V podszywając się pod X. Połączenie zostanie nawiązane.
  5. Należy szybko założyć jakiś backdoor, ponieważ gdy prawdziwy X wydostanie się z blokady DOS może przerwać połączenie V i YY.
Problemem przy przeprowadzeniu tego typu ataku jest podanie właściwych numerów pakietów TCP jako odpowiedź na SYN/ACK. Ponieważ tego ostatniego pakietu nie możemy odebrać, a jedynie wiemy, że został wysłany, to musimy "zgadnąć" jaki był numer pakietu przy fladze ACK. Numer ten to aktualny numer pakietu na YY, a można go przybliżać np. przez zalogowanie się na usługę SMTP i na bieżąco sprawdzanie numerów otrzymywanych pakietów.
Jeżeli numer pakietu przy fladze ACK z SYN/ACK byl NR, to numer pakietu przy ACK powinien być NR +1.
Podsystem sieciowy Linuxa broni się przed tego typu atakami losując pule numerów pakietów (tzn. nie są one kolejne 1,2,3,4...., a w jakiś sposób randomizowane). Bardzo to utrudnia tego typu atak, ale numery pakietów można jednak próbować przewidzieć, szczególnie, że kod randomizera jest dostępny, a podejmować możemy wiele takich prób na raz.

DNS spoofing jest prostszą odmianą spoofingu. Polega on na tym, że podszywamy się pod serwer DNS, aby udzielić komputerowi ofiary błędnej informacji o adresie IP jakiegoś komputera - podajemy mu swoje IP. Atak tego typu przeprowadza się zazwyczaj zgodnie z poniższym scenariuszem:

  1. Komputer - ofiara (nazwijmy go X) wysyła zapytanie do serwera DNS (nazwijmy go D) o IP komputera YY
  2. Nasz komputer używa ataku DOS na serwer D.
  3. Nasz komputer wysyła do X sfałszowaną odpowiedź serwera D o YY. Zamiast prawdziwego adresu IP podajemy swój adres.
  4. Komputer - ofiara otrzymuje sfałszowaną odpowiedź i nawiązuje połączenie, używając hasła i loginu - oczywiście możemy bez problemu przechwycić te parametry i użyć ich na prawdziwej maszynie.
Opisany atak jest bezużyteczny, jeśli jako parametr połączenia używa się bezpośrednio adresu IP.

[ UP ] [ NEXT ]

(c) by Jarek