hakin9_5_2004_skanowanie_portow_demo.pdf

(226 KB) Pobierz
88658653 UNPDF
Skanowanie portów
z punktu widzenia
administratora
Konstantin Klyagin
Choć skanowanie portów samo
w sobie nie jest szkodliwe, może
być użyte w złym celu. Dzięki
zdobytej w taki sposób wiedzy
intruzowi o wiele łatwiej uzyskać
nieuprawniony dostęp do
systemu. Jakie metody można
zastosować, żeby utrudnić
wykrycie skanowania portów?
W jaki sposób wykryć takie
działanie, kiedy intruz stosuje
coraz sprytniejsze techniki?
N a Hakin9 Live czeka nas niespodzian-
drzwiami. Naciskamy więc na każdą klamkę, że-
by sprawdzić, czy któreś z nich są otwarte. Jed-
nak to, że drzwi nie są zamknięte nie znaczy, że
można do tego domu wejść. W dodatku za każdą
bramą może czaić się strażnik (w naszym przy-
padku – uruchomiona usługa). Nie wpuści nas
do środka, dopóki go nie zamordujemy, nie po-
kroimy ciała i nie wrzucimy jego kawałków w nurt
najbliższej rzeki. Ale strażnika może nie być al-
bo może okazać się niedołężnym staruszkiem.
$ nmap localhost
To, co właśnie zrobiliśmy, nazywa się skano-
waniem portów. To jedna z technik (nieinwa-
zyjnych) zbierania informacji o potencjalnych
hostach-oiarach. Bardzo ważnych informacji.
W ten sposób można zebrać dane o urucho-
mionych na zdalnym komputerze usługach. Je-
żeli coś nasłuchuje na porcie TCP, z pewno-
ścią jest to program – może zatem być podatny
na atak. Wiedza o otwartych portach oiary jest
bardzo przydatna przy planowaniu agresji.
Jeśli na przykład otwarty jest port 22 (SSH),
bez trudu można ustalić wersję nasłuchującego
na nim demona. Załóżmy, że na porcie tym pra-
cuje serwer OpenSSH w wersji 3.7.1p1. Każdy, kto
śledzi wiadomości na temat bezpieczeństwa, bez
najmniejszego problemu uzyska uprzywilejowany
dostęp do takiej maszyny – i to nie znając hasła!
Z artykułu nauczysz się...
• jak skanować porty metodami trudnymi do
wykrycia,
• jak wykrywać próby skanowania przepro-
wadzane przy użyciu trudnowykrywalnych
metod.
Powinieneś wiedzieć...
• powinieneś umieć korzystać z systemów unik-
sowych,
• powinieneś posiadać podstawową wiedzę
o protokole TCP/IP (polecamy Artykuł Ataki
DDoS – podstawy i praktyka z Hakin9 3/2004
oraz dokumentację na CD).
Metody skanowania
Aby lepiej zrozumieć skanowanie, wyobraźmy
sobie, że chcemy się dostać do domu z 65535
66
www.hakin9.org
Hakin9 Nr 5/2004
ka. Po uruchomieniu CD wystarczy
wpisać komendę:
88658653.009.png 88658653.010.png 88658653.011.png 88658653.012.png 88658653.001.png
Skanowanie portów
Wtedy nasze – intruza – zadanie mo-
żemy uznać za wypełnione; droga do
domu stoi otworem. Przyrzyjmy się
się więc najpierw sposobom naciska-
nia na klamki.
Metoda TCP connect() , choć pro-
sta, ma jedną ogromną wadę. Każ-
dy program świadczący usługę zare-
jestruje próbę połączenia. Co praw-
da nie zapisze numeru dowodu oso-
bistego intruza, ale z pewnością je-
go adres IP znajdzie się w logu pro-
gramu – stąd już prosta droga do
namierzenia agresora. Aby się nie
dać złapać, można skorzystać z in-
nej metody, wykorzystującej pakiety
TCP SYN.
mu SendIP . Narzędzie to wymaga
uprawnień administratora:
# sendip 192.168.1.2 -p ipv4 \
-is 192.168.1.1 -id 192.168.1.2 \
-p tcp -td 25 -tfs 1
TCP connect():
zwykłe puk-puk
Najprostszą metodą sprawdzenia,
czy coś nasłuchuje na porcie TCP,
jest próba połączenia z nim. Peł-
ne skanowanie tym sposobem wy-
maga konsekwentnego łączenia się
z wszystkimi portami, od 1 do 65535.
Technicznie rzecz biorąc, ta meto-
da wymaga wywołania funkcji con-
nect() . Ale nie jesteśmy programi-
styczną szkółką niedzielną i nie bę-
dziemy pisać ani kawałka kodu. Za-
miast tego użyjemy najprostszych
narzędzi, dostępnych w prawie każ-
dym systemie operacyjnym. Najła-
twiejszym oczywiście sposobem jest
skorzystanie z programu telnet :
SendIP to mały lecz wyposażony
w duże możliwości program umożli-
wiający wysyłanie zadanych mu pa-
kietów. Za pomocą prostych parame-
trów można określić typ pakietu i pa-
rametry jego nagłówków. W komen-
dzie, którą wydaliśmy powyżej, wska-
zaliśmy, że prześlemy pakiet protoko-
łem IPV4 ( -p ) oraz określiliśmy źró-
dłowy ( -is ) i docelowy ( -id ) adres IP.
Potem zagłębiliśmy się w szczegóły
– określiliśmy rodzaj pakietu ( -p ), port
przeznaczenia ( -td ); wreszcie ustawi-
liśmy bit SYN ( -tfs ). Więcej informacji
o możliwościach SendIP znajdziemy
na stronie man programu.
Ponieważ SendIP może wyłącz-
nie wysyłać pakiety, do zarejestro-
wania odpowiedzi serwera użyjemy
innego narzędzia. W naszym przy-
padku wystarczy standardowy snif-
fer, tcpdump:
TCP SYN: na paluszkach
Inną nazwą skanowania TCP SYN
jest skanowanie półotwarte . Zna-
czy to, że podczas skanowania nie
zostaje nawiązane pełne połącze-
nie TCP. Aby to dobrze zrozumieć,
trzeba nieco zagłębić się w zasadę
działania protokołu TCP/IP. Poniż-
szy opis jest skrótowy, osoby zain-
teresowane odsyłamy do Artykułu
Ataki DDoS – podstawy i praktyka
z Hakin9 3/2004 oraz do dokumen-
tacji na CD.
W początkowej, negocjacyjnej
fazie nawiązywania połączenia TCP
konieczne jest wysłanie przez klienta
pakietu SYN. Po otrzymaniu go ser-
wer powinien odpowiedzieć pakie-
tem SYN+ACK lub RST. SYN+ACK
oznacza odpowiedź pozytywną ( zga-
dzam się na nawiązanie połączenia ),
podczas gdy RST – negatywną. Na-
wiązanie połączenia kończy się po-
twierdzeniem odebrania potwierdze-
nia, czyli wysłaniem przez stronę ini-
cjującą połączenie pakietu ACK.
Widać więc, że aby sprawdzić,
czy dany port jest otwarty, nie mu-
simy nawiązywać pełnego połącze-
nia – wystarczy wysłać pakiet SYN
i czekać na odpowiedź drugiej
strony. Jeśli odpowiedź ta brzmi
SYN+ACK, możemy uznać, że port
jest otwarty i nie kontynuować na-
wiązywania połączenia. Dzięki te-
mu, że połączenie nie zostało w peł-
ni nawiązane, możemy oszukać nie-
które proste narzędzia do wykrywa-
nia skanowania portów.
Spróbujmy zastosować ten me-
chanizm ręcznie. Prościutki telnet ,
którego użyliśmy poprzednio, już nie
wystarczy. Do stworzenia potrzeb-
nych pakietów TCP użyjemy progra-
$ telnet bezuzyteczne.pudlo.com 25
Wydanie tej komendy pokaże, czy
cokolwiek nasłuchuje na porcie 25
(zwykle SMTP) – brak komunika-
tu connection refused , oznacza, że
jakiś program czeka na połączenia
właśnie z tym portem.
Sytuacja komplikuje się, gdy ska-
nowany port jest iltrowany. Oznacza
to, że na drodze między maszynami
skanującego i oiary jest irewall, któ-
ry po prostu odrzuca pakiety pocho-
dzące spoza określonego zakresu ad-
resów IP. Pakiety mogą też być iltro-
wane pod kątem portów docelowych
i innych parametrów sieciowych
– irewalle są z natury rzeczy elastycz-
ne. Jeśli porty oiary są iltrowane, ska-
nowanie może okazać się bezcelowe.
Skanowanie zdeiniowanego za-
kresu (na przykład od 1 do 6667) por-
tów nazywane jest sweep scan , zaś
skanowanie jednego portu na wie-
lu różnych hostach – sweep scan .
Takie modyikacje skanowania TCP
connect() wyglądają z pozoru na zwy-
kłe próby połączenia, są więc dużo
trudniejsze do zidentyikowania. Każ-
dy administrator zada sobie bowiem
pytanie: czy to było skanowanie, czy
przypadkowa próba połączenia?
# tcpdump \
'dst 192.168.1.1 && src 192.168.1.2'
To polecenie rozpocznie nasłuch
i wyświetli wszystkie pakiety prze-
znaczone dla naszego komputera,
przychodzące z adresu 192.168.1.2.
Jeśli nie ma zbyt dużego ruchu mię-
dzy tymi dwiema maszynami, nic nie
powinno nam utrudnić śledzenia pa-
kietów. Jeśli teraz wyślemy za po-
mocą SendIP pakiet, tcpdump poka-
że coś w rodzaju:
02:10:34.563234 IP
192.168.1.2.smtp > 192.168.1.1.0:
S 3831817350:3831817350(0)
ack 1309342054 win 5840
<mss 1460>
Zwróćmy uwagę na literę S i sło-
wo ack – jasno wskazują one na pa-
kiet SYN+ACK. Zdalna maszyna ma
więc otwarty port 25. Aby zobaczyć,
co się stanie w przypadku zamknię-
tego portu, zmodyikujmy nieco ko-
mendę SendIP :
Hakin9 Nr 5/2004
www.hakin9.org
67
88658653.002.png 88658653.003.png 88658653.004.png
 
88658653.005.png 88658653.006.png 88658653.007.png 88658653.008.png
Zgłoś jeśli naruszono regulamin