Skanowanie portów
Skanowanie jest to sondowanie
docelowego systemu (sieci
komputerowej lub hosta) w celu jego
rozpoznania (poznania topologii sieci
komputerowej) i zebrania informacji
dotyczących
uruchomionych usług (skanowanie
portów danego hosta).
Podstawowe techniki skanowania:
• Ping Sweeps (testowanie aktywności
hostów)
• Port Scans (skanowanie w
poszukiwaniu otwartych portów danego
hosta)
• Fingerprinting (metody określania
systemu operacyjnego)
Skanowanie portów
Skanowanie portów
polega na przeglądaniu
kolejnych portów sieciowych aktywnego hosta w celu
określenia jakie porty są otwarte oraz jakie usługi na
tych portach realizuje system. Skanowanie takie
można w najprostszy sposób zrealizować poprzez
badanie rezultatów funkcji connect(...). Funkcja ta
służy do inicjowania połączenia sieciowego między
gniazdem (socket) programu klienta i odległym
gniazdem serwera. Metoda ta ma podstawową wadę –
jest bardzo łatwa do wykrycia przez skanowany
system. Systemy IDS (Intrusion Detection System) bez
problemu wykrywają sekwencyjne próby połączeń na
różne porty z tego samego adresu źródłowego.
Dlatego też bardzo często stosuje się metody mające
na celu ukrywanie skanowania portów w “szumie
zwyczajnych połączeń”.
Techniki skanowania portów:
- połączenie TCP (TCP connect scan)
- TCP SYN
- TCP FIN
- TCP Xmas Tree
- TCP Null
- TCP ACK
- UDP
Połączenie TCP (TCP connect scan)
–
najbardziej podstawowa forma skanowania
TCP; polega na połączeniu z wybranym
portem i przeprowadzeniu pełnego
trójstronnego powitania (SYN, SYN/ACK i ACK
– SYN = synchronizacja; ACK=potwierdzenie);
jeżeli port nasłuchuje połączenie powiedzie
się, w przeciwnym razie port nie jest
dostępny; metoda ta jest łatwa do wykrycia
ponieważ w logach celu znajdować się będzie
wiele informacji o błędach spowodowanych
przez połączenia z usługami, które są
następnie od razu przerywane; W celu
połączenia TCP nie potrzebne są uprawnienia
root'a.
TCP SYN
– ta technika jest często
nazywana skanowaniem półotwartym
(half-open scanning) ponieważ nie jest
nawiązywane pełne połączenie TCP,
lecz do wybranego portu przesyłany
jest pakiet SYN tak jak w przypadku
prawdziwego połączenia i następuje
oczekiwanie na odpowiedź; Jeśli port
odpowie sygnałem SYN/ACK to oznacza,
że port nasłuchuje; natomiast
odpowiedź RST/ACK oznacza zazwyczaj,
że port nie nasłuchuje; Komputer
przeprowadzający skanowanie przesyła
następnie sygnał RST/ACK, dzięki
czemu połączenie nie jest nawiązane i
może nie zostać odnotowane w logach
celu. Do zbudowania pakietu SYN
niezbędne są uprawnienia root'a.
Metodę skanowania TCP SYN
przedstawia rysunek obok:
h a k e r
s k a n o w a n y
s e r w e r
p o r t o tw a r ty
S Y N
S Y N / A C K
R S T
p o r t z a m k n ię ty
S Y N
R S T
TCP FIN
– polega na przesłaniu
do wybranego portu pakietu
FIN, cel powinien odpowiedzieć
pakietem RST dla wszystkich
zamkniętych portów.
Metodę tą
prezentuje rysunek
z boku:
TCP Xmas Tree
– polega na
przesłaniu do wybranego portu
pakietów FIN, URG i PUSH; cel
powinien odpowiedzieć
pakietem RST dla wszystkich
zamkniętych portów.
TCP Null
– technika ta wyłącza
wszystkie flagi; cel powinien
odpowiedzieć pakietem RST dla
wszystkich zamkniętych portów.
h a k e r
s k a n o w a n y
s e r w e r
p o r t o tw a r ty
F I N
b r a k r e a k c ji
p o r t z a m k n ię ty
F I N
R S T
TCP ACK
– technika używana do kontroli działania
zapory ogniowej; pozwala na określenie czy zapora
ogniowa celu to tylko prosty filtr pakietów,
dopuszczający jedynie nawiązane połączenia
(połączenia z ustawionym bitem ACK), czy też może
jest to zaawansowana zapora przeprowadzająca
rozbudowane filtrowanie pakietów.
UDP
– technika wykorzystywana do ustalenia które
porty UDP (User Datagram Protokol) są otwarte na
hoście; polega na przesłaniu pakietu UDP do
wybranego portu. Jeśli wybrany port odpowie
komunikatem “ICMP port unrechable”, to oznacza
że jest on zamknięty; w przeciwnym razie można
wnioskować, że port jest otwarty lub Firewall
zablokował komunikację.
Wymienione zdarzenia należy uwzględnić w konfiguracji
zapór sieciowych i zdefiniować odpowiednie reakcje lub
zastosować gotowe pakiety IDS (Intrusion Detection
System). Reakcją nie polecaną jest automatyczne
"odcinanie" ruchu przychodzącego ze stacji, którą
zidentyfikowano jako skanującą ze względu na możliwość
sfałszowania adresu źródłowego (ang. spoofing).
Nieocenionym narzędziem do wykrywania ataków (także
skanowania portów) i zapobiegania im jest odpowiednio
skonfigurowana zapora sieciowa (ang. firewall). Zapora
sieciowa jest mechanizmem służącym do filtrowania
transmisji drogą analizy adresów protokołowych (w
przypadku, gdy jest to bezstanowa zapora sieciowa, ang.
non-stateful firewall, screening router) lub dodatkowo
informacji protokołowych (zapora stanowa, ang. stateful
firewall). Zapory sieciowe działają w oparciu o tzw. zestawy
reguł (ang. rulesets), które uwzględniają takie kryteria, jak
adresy oraz inne informacje protokołowe (w tym aktualny
stan połączeń TCP). W zależności od stopnia
zaawansowania oprogramowania zapory sieciowejmożliwe
jest zastosowanie różnych akcji.
Sporym problemem może być wysyłanie sfragmentowanych
datagramów IP przez stację skanującą. Nie każda zapora
sieciowa działa w ten sposób, że przed zbadaniem datagramu
próbuje go zdefragmentować (ograniczeniem jest w tym
przypadku głównie pojemność pamięci oraz moc
przetwarzania). W ten sposób można "przemycić" do sieci m.
in. wykorzystywane w skanowaniu portów nietypowe segmenty
TCP. Warto także zabezpieczyć się przed pośredniczeniem w
skanowaniu portów, odpowiednio konfigurując serwery FTP
(uniemożliwiając FTP bounce scan) oraz nałożyć "łaty"
wprowadzające losowe zmiany licznika IP ID. Dobra polityka
bezpieczeństwa powinna uwzględniać tego rodzaju próby
naruszenia bezpieczeństwa (niektórzy skłaniają się ku zdaniu,
że skanowanie portów jest już formą ataku). Jednocześnie nie
zaleca się eskalacji działań odwetowych, a jedynie poprzestanie
na zapisaniu informacji do logów systemowych i, w szczególnie
uciążliwych przypadkach, odcięciu transmisji od intruza oraz
powiadomieniu odpowiedniego operatora sieciowego.
Zabezpieczenie przed skanowaniem:
• Stosowanie programów monitorujących ruch
przychodzący (PortSentry, snort)
• Logowanie ruchu sieciowego w celu późniejszej
analizy
• Skanowanie własnego systemu (w poszukiwaniu luk)
• Skanowanie sieci lokalnej przez ich administratorów
• Stosowanie systemów „przynęt" (ang. honeypot) -
które sprawiają wrażenie interesujących i ważnych
ośrodków informacyjnych
• Stosowanie ścian ogniowych (ang. firewall):
- programowych,
- sprzętowych,
- bezstanowych (ang. stateless),
- stanowych (ang. stateful).
Blokowanie prób skanowania:
- filtry (firewalle) stanowe,
- filtry bezsatnowe,
- przepisywanie pakietów (NAT, maskarada),
- blokowanie skanowania FIN, NUL i X-mas (system
nie powinien wysyłać pakietu RST (konieczność
modyfikacji jądra)),
- blokowanie skanowania SYN i pełnego połączenia
(wysłanie fałszywej odpowiedzi dla każdego
zapytania o port tak aby system sprawiał
wrażenie, iż wszystkie jego porty są otwarte),
- blokowanie skanowania portów UDP (ograniczenie
tempa wysyłania komunikatów o błędach ICMP do
dwóch na minutę).
Lista najczęściej używanych portów:
•
20 FTP - dane
•
21 FTP
•
22 SSH
•
23 Telnet
•
25 SMTP
•
53 DNS
•
70 Gopher
•
79 Finger
•
80 HTTP
•
109 POP2
•
110 POP3
•
119 NNTP
•
135 RPC
•
137 NetBios - serwer nazw
•
143 IMAP
•
161 SNMP
•
162 SNMP - komunikaty Trap
•
179 BGP
•
443 HTTPS
•
513 LOGIN
•
514 SHELL
•
995 POP3S (POP3 z użyciem SSL)
•
1434 MSSQL
•
1494 CITRIX
•
1529 ORACLE
•
3306 MYSQL
•
3389 TERMSERV
•
8080 alternatywny HTTP
•
6,667 I 27,374 domyślne porty konia trojańskiego „SUBSEVEN”
•
6,346 Gnutella
•
12,346 i 20,034 domyślne porty konia trojańskiego „NetBus”
Ogólnodostępne programy do skanowania
portów:
- Nmap
- FreePortScanner
- Scanport
- Idlescan
- Nessus
- Tcpdump
- Etheral
- Superscan
- Scanline
- Sara
- Nikto
- Nemesis
- Snort
- PortSentry
- Soft Perfect Network Scanner