rozpoznawanie_pl.pdf

(1473 KB) Pobierz
2653499 UNPDF
Kilka ciekawych
metod rozpoznawania
systemu operacyjnego
Marek Gutkowski
Artykuł opublikowany w numerze 2/2004 magazynu “Hakin9”
Artykuł w formie elektronicznej tylko dla prenumeratorów magazynu “Hakin9”.
Wszelkie prawa zastrzeżone. Rozpowszechnianie bez zgody Wydawcy zabronione.
Magazyn „Hakin9”, Wydawnictwo Software, ul. Lewartowskiego 6, 00-190 Warszawa, piotr@software.com.pl
2653499.034.png
Kilka ciekawych metod
rozpoznawania systemu
operacyjnego
Marek Gutkowski
Jest wiele sposobów na to, że-
by rozpoznać, jaki system ope-
racyjny pracuje na danej maszy-
nie. Przyjrzyjmy się bliżej kilku
z nich.
ku. Gdzieś z drugiego końca świa-
ta włamywacz powoli i delikatnie ba-
da Twoją maszynę. Zanim wytoczy cięższą ar-
tylerię, zanim Twoje przepełnione ponad wszel-
ką miarę bufory wrzasną w panice, zanim ciągi
formatujące Twoich printfów() zostaną ohydnie
zdeformowane, włamywacz będzie próbował
dowiedzieć się jak najwięcej o oprogramowaniu
komputera, który jest jego celem. Zaczyna się
gra wstępna. Ile informacji uzyska?
Nie musieliśmy zaprzęgać do pracy nmapa
i robić zbędnego hałasu – wszystkie informa-
cje mamy na talerzu. Wystarczyło połączyć się
na port 80 badanej maszyny (standardowy port
usługi http) i poprosić o przesłanie nagłówków:
HEAD / HTTP/1.1
W odpowiedzi serwer przesłał nam (w nagłów-
ku HTTP) szereg przydatnych informacji:
Metody proste ale skuteczne
Zanim zabierzemy się do poważnych ekspe-
rymentów, warto powiedzieć o dwu metodach
bardzo prostych, a często niezwykle skutecz-
nych. Nie musimy wcale wysyłać specjalnie
spreparowanych pakietów, żeby zdobyć intere-
sujące nas informacje...
Z artykułu nauczysz się...
Po przeczytaniu artykułu Czytelnik będzie znał, ro-
zumiał i umiał zastosować w praktyce kilka metod
zdalnego rozpoznawania systemu operacyjnego
– analizę nagłówków HTTP, reverse ident , analizę
odpowiedzi udzielanych przez demony obsługujące
różne usługi, pomiar czasu pomiędzy retransmisja-
mi pakietów SYN+ACK w trakcie nawiązywania po-
łączenia TCP. Przy okazji pokażemy jak korzystać
z narzędzi tcpdump i sendip , a także przypomnimy
kilka spraw związanych z protokołami TCP i IP.
Co powinieneś wiedzieć...
Zakładamy, że Czytelnik zna i rozumie podstawy
działania Internetu (patrz dokumentacja na CD:
podstawy->sieci ).
Zbadanie nagłówka HTTP
Duża część serwisów nie stara się ukryć
używanego systemu operacyjnego i serwe-
ra HTTP. W przykładzie z Listingu 1 admini-
strator bez lęku udostępnia interesujące nas
informacje (rzeczywiście – nie ma się czego
wstydzić!).
2
www.hakin9.org
Hakin9 Nr 2/2004
W yobraź sobie, że stałeś się celem ata-
2653499.035.png
Rozpoznawanie systemu operacyjnego
Usługa ident
Ident służy do ustalania, jaki użytkownik jest właścicielem danego połączenia.
Komunikacja przebiega następująco (patrz Rysunek 1):
Listing 2. Czego dowiemy się
o serwerze home.pl?
$ telnet home.pl 80
< Trying 212.85.96.1...
< Connected to
• Użytkownik trinity na maszynie example.matrix.net uruchamia przeglądarkę i łączy
się z portem 6667 serwera warszawa.irc.pl . System operacyjny komputera używa-
nego przez trinity przydzielił dla tego połączenia lokalny port 1234.
warszawa.irc.pl ustala, jaki użytkownik nawiązał to połączenie. W tym celu łączy
się z usługą ident komputera example.matrix.net i podaje numery portów używa-
nych w interesującym go połączeniu: 1234, 6667.
• Usługa ident działająca na example.matrix.net znajduje użytkownika, który jest
właścicielem połączenia example.matrix.net:1234 warszawa.irc.pl:6667 i poda-
je jego nazwę. Serwer warszawa.irc.pl wie, że połączenie nawiązał użytkownik
trinity.
S
matrix01.home.net.pl.
< Escape character is '^]'.
> HEAD / HTTP/1.0
>
< HTTP/1.0 200 OK
< Server: IdeaWebServer/v0.20
< [...]
< Connection closed
S
by foreign host.
• serwer WWW: Apache ( Server:
Apache/1.3.27 ),
• system operacyjny: Debian ( De-
bian GNU/Linux ),
• załadowane moduły: mod _ssl/
2.8.14 OpenSSL/0.9.7b PHP/4.2.3...
Przyjrzyjmy się serwerowi ho-
me.pl (patrz Listing 2). Metoda opi-
sana w poprzednim punkcie (zba-
danie nagłówków HTTP) daje tyl-
ko lakoniczną informację, że ho-
me.pl używa tajemniczego serwera
IdeaWebServer/v0.20 . Netcraft jest
bardziej pomocny: wystarczy zajrzeć
pod adres http://uptime.netcraft.com/
up/graph/?host=home.pl by dowie-
dzieć się, że systemem operacyjnym
na serwerach home.pl jest FreeBSD
(tak rzeczywiście jest) – nie wysyła-
jąc do badanego serwera ani jedne-
go pakietu. Cały ingerprinting wyko-
nały za nas automaty Netcraftu!
Ident
Usługa ident, opisana w RFC1413,
jest wykorzystywana do ustalania
nazwy użytkownika, który nawią-
zał połączenie (patrz Ramka Usłu-
ga ident ). Ident powoli wychodzi
z użycia – informacje uzyskane w ten
sposób nie są wiarygodne i mają nie-
wielkie zastosowanie. Dlatego więk-
Netcraft
To nie koniec ułatwień – zamiast
używać telnetu i zostawiać po so-
bie zbędne ślady w logach, może-
my skorzystać z pomocy Netcrafta
– irmy prowadzącej statystyki uży-
wanego przez serwery WWW opro-
gramowania. Na potrzeby tych sta-
tystyk Netcraft analizuje nagłów-
ki HTTP, ale również wykonuje
– własnymi metodami – ingerprin-
ting stosu TCP/IP serwerów. Wyniki
są dostępne na stronie internetowej
http://www.netcraft.com – wystarczy
podać nazwę serwera, który nas in-
teresuje, a poznajemy nie tylko na-
zwę serwera WWW i system opera-
cyjny, ale także wyniki ewentualnych
poprzednich badań tej maszyny.
Listing 1. Serwer WWW
przedstawia się jako Apache
$ telnet www.allegro.pl 80
< Trying 212.126.20.198...
< Connected to rumcajs.allegro.pl.
< Escape character is '^]'.
> HEAD / HTTP/1.1
>
< HTTP/1.1 200 OK
< Date:Tue,22 Jul 2003 19:15:22GMT
< Server: Apache/1.3.27(Unix)
S
S
S
OpenSSL/0.9.7b [...]
mod_ssl/2.8.14
Rysunek 1. Serwer IRC korzysta z usługi ident, żeby poznać nazwę
łączącego się z nim użytkownika
Hakin9 Nr 2/2004
www.hakin9.org
3
Debian GNU/Linux
2653499.036.png 2653499.037.png 2653499.001.png 2653499.002.png 2653499.003.png 2653499.004.png 2653499.005.png 2653499.006.png 2653499.007.png 2653499.008.png
Listing 3. Reverse ident
– nmap z opcją -I
Listing 5. Sprawdzanie serwera
DNS – NSD
nie działa na innych platformach; hi-
dentd z kolei działa na Linuksie i Fre-
eBSD i do tych dwóch systemów mo-
żemy ograniczyć dalsze badania.
$ nmap -I -sT xxx.yyy.pl
Starting nmap 3.27
(www.insecure.org/nmap/)
at 2003-07-24 22:45 CEST
Interesting ports on
xxx.yyy.pl (aa.bb.cc.dd):
(The 1616 ports scanned but not
shown below are in state: closed)
Port State Service Owner
21/tcp open ftp root
22/tcp open ssh root
25/tcp open smtp qmaild
80/tcp open http www-data
110/tcp open pop-3 root
113/tcp open auth hidentd
host -c chaos \
-t txt version.server \
k.root-servers.net
Fingerprinting usług
Nie tylko serwery HTTP podają in-
formację o wersji. Przez analizę od-
powiedzi na EHLO , VRFY , EXPN , HELP
można łatwo zidentyikować serwer
SMTP; listę odcisków różnych ser-
werów można znaleźć w [3].
Nieco bardziej skomplikowane
jest zidentyikowanie serwera DNS,
ale tu również sporo da się zrobić:
Using domain server:
Name: k.root-servers.net
Address: 193.0.14.129#53
Aliases:
version.server text "NSD 1.2.2"
informacji o używanym na serwe-
rze oprogramowaniu oraz o wła-
ścicielach poszczególnych proce-
sów. Technika ta nazywa się rever-
se ident . Najprostszym sposobem
jej użycia jest wykorzystania nmapa
z opcją -I . Wyniki przykładowego
skanowania przedstawia Listing 3.
Prawda, że interesujące? Na
tej maszynie używa się qmaila ja-
ko MTA i programu hidentd jako ser-
wera ident. Można się domyślać,
że serwerem HTTP jest Apache ,
a pop3 obsługuje qmail-pop3d . Jakie
możemy wyciągnąć wnioski? Jest
to na pewno Unix, ponieważ qmail
szość serwerów nie udostępnia tej
usługi; wyjątkami są te, których użyt-
kownicy korzystają z IRC – serwe-
ry *.irc.pl dość nieprzyjemnie traktu-
ją użytkowników, którzy nie dają się
zidentyikować. Poza tym niektórzy
administratorzy nie zawracają sobie
głowy wyłączaniem zbędnych usług,
dając nam tym samym nową broń do
ręki. Zastanówmy się: skoro przy po-
mocy usługi ident można zidenty-
ikować właściciela procesu, który
nawiązuje połączenie, to co stoi na
przeszkodzie, żeby zastosować ten
mechanizm w drugą stronę? Może-
my połączyć się z np. portem 80 ser-
wera, a następnie przy pomocy ident
zapytać o właściciela procesu, który
to połączenie obsługuje (patrz Rysu-
nek 2). Odpowiedź nie zawsze po-
może zidentyikować system ope-
racyjny, ale dostarczy dodatkowych
• BIND w wersji 9 podaje informa-
cje o wersji po otrzymaniu zapy-
tania klasy 3 (Chaos) typu TXT
o Authors.BIND ,
• niektóre serwery reagują na za-
pytanie o version.bind , również
w klasie 3 i typu TXT,
• NSD rozpoznaje się po odpo-
wiedzi na analogiczne zapytanie
o version.server ,
tinydns można rozpoznać po od-
powiedziach not implemented na
zapytania NOTIFY i UPDATE.
Listing 4. Sprawdzanie serwera
DNS – BIND
$ host -c chaos -t txt \
Authors.BIND ns-ext.vix.com
Using domain server:
Name: ns-ext.vix.com
Address: 204.152.184.64#53
Aliases:
Authors.BIND text "Brian
Wellington"
Authors.BIND text "Mark Andrews"
[...]
Authors.BIND text "Michael Sawyer"
Rysunek 2. Złośliwy użytkownik wykonuje reverse ident, żeby dowiedzieć
się, z prawami jakiego użytkownika działa serwer WWW
4
www.hakin9.org
Hakin9 Nr 2/2004
2653499.009.png 2653499.010.png 2653499.011.png
 
2653499.012.png
 
 
2653499.013.png 2653499.014.png 2653499.015.png 2653499.016.png 2653499.017.png 2653499.018.png 2653499.019.png 2653499.020.png 2653499.021.png 2653499.022.png 2653499.023.png 2653499.024.png 2653499.025.png 2653499.026.png 2653499.027.png 2653499.028.png 2653499.029.png 2653499.030.png 2653499.031.png 2653499.032.png
Rozpoznawanie systemu operacyjnego
Listing 6. RTO dla różnych systemów operacyjnych – MacOS X (Jaguar)
19:50:42.100889 yy.yy.yy.yy .1045 > xx.xx.xx.xx .www : S 878718849:878718849(0) win 5808 <mss 1452,sackOK,timestamp
717607 0,nop,wscale 0> (DF) [tos 0x10]
19:50:42.312173 xx.xx.xx.xx .www > yy.yy.yy.yy .1045 : S 1212246017:1212246017(0) ack 878718850 win 33120 <mss
1452,nop,wscale 0,nop,nop,timestamp 906422773 717607> (DF)
19:50:45.056524 xx.xx.xx.xx .www > yy.yy.yy.yy .1045 : S 1212246017:1212246017(0) ack 878718850 win 33120 <mss
1452,nop,wscale 0,nop,nop,timestamp 906422778 717607> (DF)
19:50:51.057045 xx.xx.xx.xx .www > yy.yy.yy.yy .1045 : S 1212246017:1212246017(0) ack 878718850 win 33120 <mss
1452,nop,wscale 0,nop,nop,timestamp 906422790 717607> (DF)
19:51:03.059710 xx.xx.xx.xx .www > yy.yy.yy.yy .1045 : S 1212246017:1212246017(0) ack 878718850 win 33120 <mss
1452,nop,wscale 0,nop,nop,timestamp 906422814 717607> (DF)
19:51:27.064965 xx.xx.xx.xx .www > yy.yy.yy.yy .1045 : S 1212246017:1212246017(0) ack 878718850 win 33120 <mss
1452,nop,wscale 0,nop,nop,timestamp 906422862 717607> (DF)
19:51:57.070629 xx.xx.xx.xx .www > yy.yy.yy.yy .1045 : R 1:1(0) ack 1 win 33120 (DF)
Listing 7. RTO dla różnych systemów operacyjnych – FreeBSD 4.8
22:53:14.945110 yy.yy.yy.yy .1065 > xx.xx.xx.xx .ssh : S 3832838203:3832838203(0) win 5808 <mss 1452,sackOK,timestamp
1812891 0,nop,wscale 0> (DF) [tos 0x10]
22:53:14.974887 xx.xx.xx.xx .ssh > yy.yy.yy.yy .1065 : S 2063605193:2063605193(0) ack 3832838204 win 57344 <mss
1452,nop,wscale 0,nop,nop,timestamp 2856934 1812891> (DF)
22:53:17.971558 xx.xx.xx.xx .ssh > yy.yy.yy.yy .1065 : S 2063605193:2063605193(0) ack 3832838204 win 57344 <mss
1452,nop,wscale 0,nop,nop,timestamp 2857234 1812891> (DF)
22:53:23.972265 xx.xx.xx.xx .ssh > yy.yy.yy.yy .1065 : S 2063605193:2063605193(0) ack 3832838204 win 57344 <mss
1452,nop,wscale 0,nop,nop,timestamp 2857834 1812891> (DF)
22:53:35.972072 xx.xx.xx.xx .ssh > yy.yy.yy.yy .1065 : S 2063605193:2063605193(0) ack 3832838204 win 57344 <mss
1452,nop,wscale 0,nop,nop,timestamp 2859034 1812891> (DF)
Hakin9 Nr 2/2004
www.hakin9.org
5
2653499.033.png
Zgłoś jeśli naruszono regulamin