wykrywanie nat(1), Win Xp

[ Pobierz całość w formacie PDF ]
Sprzątanie pajęczyn
– detekcja nielegalnego
wpółdzielenia łącza
Mariusz Tomaszewski, Maciej Szmit, Marek Gusta
Artykuł opublikowany w numerze 2/2005 magazynu
hakin9
Wszelkie prawa zastrzeżone. Bezpłatne kopiowanie i rozpowszechnianie artykułu dozwolone
pod warunkiem zachowania jego obecnej formy i treści.
Magazyn
hakin9
, Wydawnictwo Software, ul. Lewartowskiego 6, 00-190 Warszawa,
hakin9@hakin9.org
Sprzątanie pajęczyn
– detekcja nielegalnego
wpółdzielenia łącza
Mariusz Tomaszewski, Maciej Szmit, Marek Gusta
Pajęczarze, czyli osoby
dzielące połączenia internetowe
niezgodnie z umową potraią
napsuć sporo krwi dostawcom
i administratorom sieci. Istnieje
jednak mnóstwo sposobów
na wykrywanie takich
praktyk. Nie są to metody ani
szczególnie skomplikowane, ani
czasochłonne.
nia łącza internetowego administrator
może sobie w prosty sposób poradzić,
poprzez podział przepustowości pomiędzy le-
galnych użytkowników. Wtedy nie musimy się
martwić faktem, że ktoś oddaje część swego
łącza sąsiadowi (patrz Ramka
Udostępnianie
łącza
) – nie będzie to miało żadnego wpływu
na jakość działania sieci. Pozostaje jednak pro-
blem dzielenia kosztów i zarabiania na takim
pośredniczeniu.
Pojawia się zatem pytanie: w jaki sposób
administrator może wykryć, że z sieci korzysta-
ją osoby trzecie? Technik jest kilka, mniej lub
bardziej skutecznych. Wszystko jednak zależy
w dużej mierze od wiedzy osoby, która budu-
je nielegalną pajęczynę i od tego, jakie techni-
ki zastosuje, by spróbować ukryć ten fakt przed
światem zewnętrznym.
Pierwszym i w zasadzie najrozsądniej-
szym sposobem zabezpieczenia się przed nie-
legalnym dzieleniem łączy, jest podział pasma
transmisyjnego. Gwarantuje on, że przepusto-
wość naszej sieci nie okaże się za mała wo-
bec pojawienia się licznych nieautoryzowanych
użytkowników, a kwestia wykorzystania przy-
dzielonego pasma pozostaje w gestii klienta.
Jeśli jednak ograniczanie pasma lub limit
transferu nam nie wystarcza i wyraźnie nie ży-
czymy sobie, aby udostępniane przez nas łą-
cze było jeszcze przez kogoś dzielone, możemy
analizować ruch w naszej sieci i próbować takie
sytuacje wykrywać. Jeśli w umowie na korzysta-
nie z łącza dostawca zabrania dalszego jego po-
działu, można użytkownika uprawiającego taki
proceder po prostu z sieci odłączyć – oczywi-
ście jeśli uda się fakt współdzielenia łącza wy-
kryć. Jednak działania takie, jak pokazuje prak-
tyka, łatwo mogą zmienić się w zabawę w poli-
Z artykułu dowiesz się...
• jak ukrywać nielegalne współdzielenie łącza in-
ternetowego,
• jak wykrywać nieuprawnione dzielenie pasma
internetowego.
Powinieneś wiedzieć...
• powinieneś umieć korzystać z systemu Linux,
• powinieneś znać model ISO/OSI,
• powinieneś mieć przynajmniej podstawową
wiedzę o sieciach TCP/IP.
2
www.hakin9.org
hakin9 Nr 2/2005
Z
przypadkiem nadmiernego obciąże-
Nielegalne współdzielenie łącza
Udostępnianie łącza
Wiele osób, szczególnie tych, które z Linuksem miały niewiele wspólnego, do współ-
dzielenia połączenia wybierze bardzo prostą metodę opartą o system Windows – funk-
cję
Udostępnianie połączenia internetowego
(
Internet Connection Sharing
– ICS).
Dzięki niej komputery w sieciach domowych lub biurach można łączyć z Internetem
przy użyciu jednego połączenia sieciowego.
ICS jest wbudowaną funkcją systemu Windows, ale można włączyć ją tylko na
komputerach z systemem Windows XP, Windows 98 SE, Windows Millennium Edition
(Me) lub Windows 2000. Tak naprawdę funkcja ICS to zbiór pewnych składników, któ-
re w przeciwieństwie do systemu Linux nie są dostępne dla użytkownika i mają bardzo
ograniczoną możliwość koniguracji. Do najważniejszych składników należą:
wartości początkowych TTL – Tabe-
la 1 przedstawia początkowe warto-
ści pola TTL dla najpopularniejszych
systemów operacyjnych.
Na Rysunku 2 znajduje się sche-
mat typowej sieci LAN z nielegalnie
podzielonym łączem. Jeśli kompu-
ter udostępniający łącze pracuje jako
ruter i przekazuje pakiety pomiędzy
swoimi interfejsami (a w przypadku
nieautoryzowanego dostępu do sie-
ci publicznej dodatkowo z koniecz-
ności uruchomiona jest na nim usłu-
ga NAT), to w każdym pakiecie wyge-
nerowanym przez komputer A, B lub
C wartość pola TTL zostanie zmniej-
szona o 1. W ten sposób we właściwej
sieci LAN (10.10.11.0) pojawią się pa-
kiety, w których pole TTL będzie miało
wartość o jeden mniejszą od wartości
standardowej dla danego systemu.
W celu wykrycia takich pakietów
administrator może na bramie inter-
netowej uruchomić analizator pakie-
• program przydzielający adresy DHCP – bardzo uproszczona usługa DHCP, która
przypisuje adres IP, domyślną bramę i nazwę serwera w sieci lokalnej,
• serwer proxy DNS, którego zadaniem jest translacja nazw domenowych na adre-
sy IP w imieniu klientów sieci lokalnej,
• translator adresów sieciowych, który dokonuje translacji adresów prywatnych na
adres publiczny (adresy publiczne).
W systemach Linux wykorzystuje się mechanizm translacji adresów sieciowych NAT
(ang.
Network Address Translation
) lub stosuje serwery proxy. NAT i proxy są techno-
logiami stosowanymi w systemach irewall, a ich podstawowym zadaniem jest ukrycie
i ochrona sieci lokalnej przed sieciami zewnętrznymi.
cjantów i złodziei, przy czym – jak to
zwykle bywa – przewaga inwencji jest
po stronie tych ostatnich.
praktycznie przetrzymują datagramy
przez mniej niż jedną sekundę, po-
le TTL zmniejszane jest o jeden. Kie-
dy wartość ta spadnie do zera, data-
gram jest odrzucany i usuwany z sie-
ci, a nadawca otrzymuje komunikat
ICMP o błędzie.
Działanie takie ma na celu za-
pobieganie nieskończonemu krąże-
niu w sieci pakietów, które utknę-
ły w pętli rutowania (tzn. jeden ru-
ter przesyła datagram do drugiego,
a ten odsyła go z powrotem). Jeśli
z jakichś powodów pakiet IP nie mo-
że być dostarczony do miejsca prze-
znaczenia, to po osiągnięciu przez
pole TTL wartości 0 zostanie on po
prostu usunięty z sieci. Różne sys-
temy operacyjne korzystają z innych
Tabela 1.
Wartości TTL
charakterystyczne dla
poszczególnych systemów
operacyjnych
Wartości TTL
w nagłówkach
pakietów IP
Nagłówek datagramu IP posiada po-
le TTL –
czas życia
(ang.
time to li-
ve
), które określa górną granicę licz-
by ruterów, przez jakie datagram
może przejść podążając do miejsca
przeznaczenia (patrz Rysunek 1).
Podczas przetwarzania nagłów-
ka datagramu każdy ruter ma obo-
wiązek zmniejszyć pole TTL o war-
tość proporcjonalną do czasu jego
przetrzymywania. Ponieważ rutery
Wersja systemu
operacyjnego
TCP
TTL
UDP
TTL
AIX 60 30
FreeBSD 2.1R 64 65
HP/UX 9.0x 30 30
HP/UX 10.01 64 64
Irix 5.3
60 60
Irix 6.x
60 60
Linux
64 64
MacOs/MacTCP
2.0.x
60 60
OS/2 TCP/IP 3.0 64 64
OSF/1 V3.2A 60 30
Solaris 2.x 255 255
SunOS 4.1.3/4.1.4 60 60
MS Windows 95 32 32
MS Windows 98 128 128
MS Windows NT
3.51
32 32
MS Windows NT
4.0
128 128
Rysunek 1.
TTL (time to live) w nagłówku IP
MS Windows 2000 128 128
MS Windows XP 128 128
hakin9 Nr 2/2005
www.hakin9.org
3
Rysunek 2.
Przykładowa sieć LAN z nielegalnym podziałem łącza
nego łącza zwiększą o jeden war-
tość TTL w swoich systemach, to po
przejściu przez komputer-bramę pa-
kiety IP przestaną być podejrzane.
Jedyne, co może jeszcze zdra-
dzać fakt podziału łącza, to różna
wartość TTL w pakietach posiada-
jących jeden źródłowy adres IP. Ta-
ka sytuacja nie zawsze musi jednak
wystąpić – w nielegalnej sieci LAN
użytkownicy mogą przecież używać
tylko jednej wersji danego systemu
operacyjnego, na przykład Windows
2000 czy Linuksa. Nawet jeśli sieć
jest zróżnicowana i pracuje w niej
wiele różnych wersji systemów ope-
racyjnych, pajęczarze mogą ujed-
nolić wartości TTL na wszystkich
komputerach, niezależnie od rodza-
ju systemu (patrz Ramka
Zmiana do-
myślnych wartości TTL
).
W przypadku gdy łącze udostęp-
niane jest poprzez system Windows
z włączona funkcją ICS, ujednolice-
nie wartości TTL na wszystkich kom-
puterach jest jedyną metodą ukrycia
się przed administratorem. Jeśli funk-
cję bramki do Internetu pełni system
Linux ze skonigurowanym NAT-em,
sytuacja jest dużo prostsza. Wystar-
czy bowiem – przy wykorzystaniu ła-
ty dla iltra pakietów
iptables
o nazwie
patch-o-matic
– tak skonigurować
system, aby każdy wychodzący pa-
kiet miał ustawianą jedną, ściśle okre-
śloną wartość TTL. W tym przypadku
osoby rozdzielającej łącze nie intere-
sują systemy operacyjne używane
tów (sniffer) i sprawdzić, czy w sieci
spod jednego adresu IP (w naszym
przypadku z adresu 10.10.11.95) nie
dochodzą pakiety o dziwnych i róż-
nych wartościach pola TTL. Przy za-
łożeniu, że na komputerze A urucho-
miony jest system Windows 2000 (po-
czątkowy TTL 128), zaś na kompute-
rze B system Linux (początkowy TTL
64), sniffer
tcpdump
uruchomiony na
bramie internetowej może przechwy-
cić i ujawnić przykładowe pakiety.
Pokazano to na Rysunku 3 – wi-
dać, że w sieci pojawiają się pakiety
o źródłowym adresie IP 10.10.11.95,
które mają ustawione niestandar-
dowe wartości pola TTL (127 i 63).
Druga dziwna rzecz to fakt, że jeden
komputer generuje pakiety o różnych
wartościach TTL. Może to świad-
czyć o tym, że komputer o adresie
10.10.11.95 dzieli łącze użytkowni-
kom używającym systemów Win-
dows i Linux.
Domyślne wartości
TTL w Windows
i Linuksie
Metoda opierająca się na sprawdza-
niu wartości TTL w pakietach IP mo-
że jednak okazać się nieskuteczna.
W systemach Windows i Linux istnie-
je bowiem możliwość zmiany stan-
dardowych wartości czasu życia pa-
kietów. Jeśli użytkownicy rozdzielo-
Rysunek 3.
Wartości TTL po przejściu przez nielegalny ruter
4
www.hakin9.org
hakin9 Nr 2/2005
   Nielegalne współdzielenie łącza
Zmiana domyślnych wartości TTL
Linux
Zmiana wartości TTL dla lokalnej maszyny w systemie Linux sprowadza się do wyko-
nania w konsoli następującego polecenia:
Po wykonaniu powyższego polece-
nia zawartość tablicy powinna być
taka, jak na Listingu 1.
Innym sposobem jest ustawie-
nie odpowiedniej wartości TTL jesz-
cze przed wykonaniem procesu ru-
towania na komputerze-bramce, na
przykład:
# echo "X" > /proc/sys/net/ipv4/ip_default_ttl
gdzie X to nowe, zmienione TTL. Standardowo ma ono wartość 64 – jeśli Linux ma uda-
wać system Windows, wystarczy jako X podać liczbę 128 (a najlepiej 129, jeśli korzysta-
my z dzielonego łącza i nie chcemy wzbudzać podejrzeń administratora sieci).
Windows 2000/XP
Domyślnie w pakietach wysyłanych z systemu Windows 2000/XP wartość TTL jest
ustawiana na 128. Najszybszym sposobem sprawdzenia standardowej wartości TTL
w systemie jest wykorzystanie polecenia
ping
. Wystarczy wysłać pakiety
ICMP echo
request
na interfejs pętli zwrotnej (ang.
loopback
) i zobaczyć, jaka wartość TTL usta-
wiona jest w odpowiedziach
ICMP echo reply
:
# iptables -t mangle \
-A PREROUTING -i eth0 \
-j TTL --ttl-set 129
Więcej niż zero
Administrator może wykorzystać
wartość TTL do utrudnienia nie-
uczciwym osobom podziału łącza.
Jeśli na maszynie, która jest bezpo-
średnio podłączona do łącza inter-
netowego pracuje Linux, administra-
tor może ustawić w pakietach, które
są skierowane do sieci lokalnej war-
tość TTL na 1. Wtedy każdy nielegal-
ny ruter w sieci LAN po odebraniu ta-
kiego pakietu i zmniejszeniu wartości
TTL o jeden, będzie zmuszony usu-
nąć taki pakiet z sieci, tak więc infor-
macja nie zostanie przekazana dalej
i nielegalna sieć przestanie funkcjo-
nować (jeśli zaś pakiet trai do legal-
nej stacji końcowej, to z TTL o war-
tości 1 będzie odebrany bez żad-
nych problemów). Należy zauważyć,
że takie rozwiązanie jest skuteczne,
jeśli komputer udostępniający niele-
galnie łącze pracuje jako ruter i wy-
korzystuje translację adresów siecio-
wych (NAT).
Opisany powyżej sposób zmniej-
szania wartości TTL administrator
nielegalnej pajęczyny możne łatwo
zneutralizować, zwiększając wartość
TTL w każdym docierającym do rute-
ra pakiecie jeszcze przed procesem
rutowania. W systemie Linux wystar-
czy wykorzystać opisywany już wy-
żej nowy cel
iptables
(o nazwie TTL)
i wpisać do tablicy
iptables
następu-
jącą regułę:
ping 127.0.0.1
Zmiany TTL dokonuje się w rejestrze systemu. Za przechowywanie tej wartości odpo-
wiada wpis
DefaultTTL
w kluczu
HKEY_LOCAL_MACHINE\System\CurrentControlSet\
Services\Tcpip\Parameters
. Jeśli nie ma takiej wartości – należy ją utworzyć, wyko-
rzystując typ
DWORD
.
Windows 95/98/Me
W systemach Windows 95/98/Me wartość TTL przechowywana jest w kluczu
HKEY_
LOCAL_ MACHINE\System\CurrentControlSet\Services\VxD\MSTCP\DefaultTTL
.
Jeśli podanej wartości
DefaultTTL
nie ma domyślnie w powyższym kluczu, należy ją
utworzyć wykorzystując typ
STRING
.
w nielegalnej pajęczynie, ponieważ
wszystkie pakiety po przejściu przez
NAT będą miały ustawione tę samą
wartość w polu TTL nagłówka IP.
tion
. Dla celu TTL dostępne są na-
stępujące opcje:

--ttl-set wartość
– ustawia war-
tość TTL na
wartość
,

--ttl-dec wartość
– zmniejsza
wartość TTL o
wartość
,

--ttl-inc wartość
– zwiększa
wartość TTL o
wartość
.
Jednakowa wartość TTL
pakietów wychodzących
Jeśli komputer-brama pracuje w opar-
ciu o system Linux ze skonigurowa-
ną usługą NAT, do ustawienia jedna-
kowego TTL nielegalnych pakietów
można wykorzystać łatkę do
iptables
autorstwa Haralda Welte, która doda-
je nowy cel w regułach iltrowania. Cel
ten umożliwia użytkownikowi usta-
wianie wartości TTL dla pakietu IP
oraz zwiększanie lub zmniejszanie jej
o określoną wartość. Łata dostępna
jest pod adresem
.
Do nałożenia łaty potrzebne są
źródła kernela i
iptables
. Po po-
myślnym spatchowaniu źródeł nale-
ży skompilować i zainstalować nowe
jądro oraz nowe
iptables
. Podczas
koniguracji jądra można ustawić no-
we opcje dostępne w sekcji
Networ-
king Options -> Netilter Conigura-
Ustawienie TTL we wszystkich prze-
kazywanych przez komputer-bramkę
pakietach na wartość 128 sprowadza
się do dopisania do tablicy
mangle
ipta-
bles
następującej reguły iltrowania:
# iptables -t mangle \
-A FORWARD -j TTL \
--ttl-set 128
Listing 1.
Zawartość tablicy mangle po wprowadzeniu reguły iltrowania
# iptables -t mangle --list
Chain FORWARD (policy ACCEPT)
target prot opt source destination
TTL all -- anywhere anywhere TTL set to 128
hakin9 Nr 2/2005
www.hakin9.org
5
[ Pobierz całość w formacie PDF ]

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • telefongry.keep.pl






  • Formularz

    POst

    Post*

    **Add some explanations if needed