Jak powszechnie wiadomo, każdy system operacyjny ma specyficzne cechy,
dzięki którym możemy go odróznić od innych. Po przeczytaniu tego artykułu
będziesz wiedział/a jak w prosty sposób unimożliwić (lub znacznie ograniczyć)
rozpoznanie Twojego systemu operacyjnego.
Najczęściej używanymi programami do identyfikowania systemu operacyjnego
są nmap,
Xprobe2,
p0f.
Jak to działa? - czyli klika słów na temat poszczególnych programów.
Nmap
Jest to chyba najbardziej znanym programem do skanowania sieci.
Rozpoznaje on system operacyjny analizując odpowiedzi na źle zbudowane
pakiety TCP. Przeprowadza on 9 testów:
- pakiet z flagami SYN i ECE
- pakiet NULL (wyzerowane flagi)
- pakiet TCP z flagami SYN, FIN, URG, PSH na jakis otwarty port TCP
- pakiet TCP z flaga ACK na jakis otwarty port
- pakiet TCP z flaga SYN na jakis zamkniety port
- pakiet TCP z flaga ACK do zamknietego portu
- pakiet TCP z flagami FIN, PSH, URG na zamkniety port TCP
- pakiet UDP na zamkniety port UDP
- 6 kolejnych pakietow TCP z flaga SYN na jeden otwarty port
- to tyle z testów... ;)
Xprobe2
Główna różnica w porównaniu do Nmap'a polega na tym, że pakiety wysyłane
przez Xprobe2 maja prawidłową budowę. Do rozpoznawania systemu operacyjnego
używa on komunikatów ICMP wysyłając sześć różnych testów:
- ping - echo request [ICMP]
- żądanie znacznika czasowego - timestamp [ICMP]
- żądanie maski adresu - address mask request [ICMP]
- żądanie informacji - information request [ICMP]
- pakiet UDP do zamkniętego portu
- pakiet TCP do otwartego portu
p0f
Program ten różni się tym od pozostałych, że nie rozpoznaje systemu w sposób aktywny.
Oznacza to mniej więcej tyle, że przechwytuje pakiety przychodzące i wyszukuje w nich
cech charakterystycznych poszczególnych systemów operacyjnych. Co sprawdza p0f:
- rozmiar okna TCP
- wartość TTL
- obecność flagi DF
- wartość i kolejność opcji TCP
- różne "anomalie" - złe flagi, złe opcje, niezerowe wartości ACK
Do dzieła ! - czyli jak się ukrywać.
Duuuża większość filtrów pakietów nie rozpoznaje flagi ECE (jeśli np. iptables dostanie pakiet
z ustawionymi SYN oraz ECE nie widzi flagi ECE i pakiet jest "puszczony".. a pf odrzuci go)
wystarczy sprawdzać flagi na porty otwarte i puszczać tylko pakiety z flagą SYN.
-- pf.conf --
# przykladowo port 80
pass in quick proto tcp from any to xxx.xxx.xxx.xxx port 80 flags S/FSRPAUE keep state
|
-- end pf.conf --
Po takiej operacji Nmap powinien się wyłożyć ;) ale są jeszcze Xprobe2, p0f je też wpuścimy w maliny.
Następnie możemy zmienić wielkość okna TCP (RFC 1323 dla zainteresowanych) na 65535 (domyślnie chyba jest
16384).
# sysctl -w net.inet.tcp.recvspace=65535
|
Po takiej operacji trzeba zrestartować wszystkie usługi (najlepiej # reboot).
Następną zmianą jaka powinna przynieść widoczne razultaty jest zmiana wartości pola TTL ze standardowego 64 na 128.
# sysctl -w net.inet.ip.ttl=128
|
Następną zmianą jaką wprowadzimy w naszym systemie jest wyłączenie opcji TCP odpowiedzialną za skalowanie okna i znacznika czasowego (RFC 1323).
# sysctl -w net.inet.tcp.rfc1323=0
|
Dzięki zmianom, które zostały wprowadzone w systemie Twój system powinien być rozpoznawany jako zupełnie inny
od jakiegoś FreeBSD 3.x do Win XP. Oczywiście powyższe zmiany to nie wszystko co możemy zmienic w naszym systemie
aby był rozpoznawany jako zupełnie inny. Następną zmianą jaką wprowadzimy w naszym systemie jest włączenie
odpowiedzi na pakiety ICMP z żądaniem maski adresów:
# sysctl -w net.inet.icmp.maskrepl=1
|
Do reguł naszego filtra pakietów (pf oczywiście ;) ) powinniśmy dodać jeszcze: -- pf.conf --
pass in quick proto icmp from any to xxx.xxx.xxx.xxx icmp-type maskreg
pass out quick proto icmp from xxx.xxx.xxx.xxx to any icmp-type maskrep
|
-- end pf.conf --
Możemy dodać jeszcze kilka opcji do naszego filtra pakietów co pozwoli zwiększyć jego skuteczność.
-- pf.conf --
# kilka regułek na nmap'a gdzie $ext_if to interfejs zewnętrzny
block in log quick on $ext_if inet proto tcp from any to any flags FUP/WEUAPRSF
block in log quick on $ext_if inet proto tcp from any to any flags WEUAPRSF/WEUAPRSF
block in log quick on $ext_if inet proto tcp from any to any flags SRAFU/WEUAPRSF
block in log quick on $ext_if inet proto tcp from any to any flags /WEUAPRSF
block in log quick on $ext_if inet proto tcp from any to any flags SR/SR
block in log quick on $ext_if inet proto tcp from any to any flags SF/SF
|
-- end pf.conf --
Źródła:
http://www.insecure.org/nmap/nmap-fingerprinting-article.html
http://www.insecure.org/nmap/index.html
http://www.sys-security.com/index.php?page=xprobe
http://lcamtuf.coredump.cx/p0f.shtml
Autor:
Kacper Różycki
Powyższy artykuł został udostępniony na zasadach Licencji BSD |
| Dodane przez lofix w dniu - 2005-11-02 22:19:36 | | Ja mam tylko jedno pytanie - jaki ma sens ukrywanie Swojego systemu?, chyba tylko dla sportu? | | Dodane przez arti w dniu - 2005-11-02 22:35:52 | W pewnym stopniu sam odpowiedziałeś na swoje pytanie ;-) Drugi sens to taki, aby pokazać, iż coś takiego jest możliwe. A co ktoś z tym zrobi to już jego sprawa  | | Dodane przez rafal w dniu - 2005-11-03 00:10:15 | | Ma sens i to duzy. Wiadomo, ze kazda proba wlamania zaczyna sie od sprawdzenia na czym stoi serwer. Jezeli zatem intruz zostanie zmylony na "wstępie" to zastosuje metody zupelnie nieskutecznie, bo przeznaczone do innego systemu. | | Dodane przez mcoy w dniu - 2005-11-03 15:01:33 | | Czy wiadomo, jak na stabilnosc i wydajnosc systemu wplywaja takie zmiany? | | Dodane przez qTi w dniu - 2005-11-03 22:19:16 | | Z tego co zauważyłem nie ma różnic wydajnościowych po zastosowaniu powyższych zmian w systemie. Podobnie jest ze stabilnościa. | a.. Dodane przez mcoy w dniu - 2005-12-27 12:07:21 | | jest jakas mozliwosc "ukrywania tozsamosci" systemow za transparentnym bridge'm. chodzi mi o dzialanie na bridge'u nie na hostach? z gory thx |
Tylko zarejestrowani użytkownicy mogą pisać komentarze. Prosze zaloguj się i dodaj komentarz. Powered by AkoComment! |