2006 06 Application Mapping

background image

www.hakin9.org

hakin9 Nr 6/2006

42

Teoria

A

naliza statystyk portu hosta stanowi
ważną część analizy bezpieczeństwa
sieci. Proces rozpoznawania udostęp-

nianej usługi i używanego przez nią protoko-
łu aplikacji jest jednak często powierzchowny.
Application Mapping udostępnia metodę peł-
nego, szybkiego i efektywnego pozyskiwania
tych informacji.

Prawdziwie klasyczną dyscypliną bezpie-

czeństwa komputerowego jest skanowanie
portów. Dzięki zautomatyzowanym próbom po-
łączeń oraz ocenie reakcji systemu docelowe-
go można określić statystyki portu. Wiele ła-
twych w obsłudze i od lat doskonalonych na-
rzędzi – np. nmap lub SuperScan – sprawia, że
czynność ta jest efektywna i łatwa [Ruef 1999,
Ruef et al. 2002, McClure et al. 2005]. W przy-
padku sieciowych ataków oraz tych na apli-
kacje sieciowe, bardzo duże znaczenie mają
wspomniane informacje. Otwarte porty i ofero-
wane przez nie usługi stanowią podstawę ata-
ków – definiują one w znacznej mierze obszar
hosta narażony na atak.

Często jednak do przeprowadzenia ata-

ku na aplikację sieciową nie wystarcza samo
ustalenie statystyk portu przy pomocy skano-
wania. Bezpośrednio po skanowaniu portu na-

leży określić, jaki protokół aplikacji jest wyko-
rzystywany na danym porcie. Wprawdzie wie-
lu administratorów wciąż przydziela usługom
standardowe porty zalecane przez IANA, jed-
nak nie można zawsze na tym polegać. W wie-
lu przypadkach spotyka się serwery WWW
na portach takich jak 81 lub 8000 zamiast na
oczekiwanym porcie TCP 80. Mogą również
występować warianty egzotyczne, np. 12345 i
55555 [Ruef 2004, 2006].

Application Mapping

Marc Ruef

stopień trudności

Za pomocą skanowania portów można poznać usługi oferowane

przez system. Chcąc dowiedzieć się jaka usługa kryje się

za danym portem, można skorzystać z techniki Application

Mapping (pol. odwzorowywanie aplikacji), która identyfikuje

rodzaj i protokół badanej usługi. W niniejszym artykule opiszemy

sposoby użycia i ochrony przed Application Mapping.

Z artykułu dowiesz się...

• czym jest Application Mapping i gdzie znajduje

zastosowanie,

• jakie techniki są wykorzystywane,
• jak wygląda automatyzacja przy pomocy na-

rzędzia amap,

• jak zaimplementować własne narzędzie,
• jak utrudnić tego rodzaju identyfikację.

Powinieneś wiedzieć...

• czym jest port;
• znać protokół TCP/IP oraz model komunikacji

klient/serwer.

background image

Application Mapping

hakin9 Nr 6/2006

www.hakin9.org

43

W celu ustalenia użytego pro-

tokołu aplikacji stosuje się technikę
nazywaną ogólnie Application Map-
ping [Ruef 2003]. W zasadzie powin-
na ona nosić nazwę Application Pro-
tocol Mapping ewentualnie Protocol
Mapping, ponieważ celem nie jest
ustalenie właściwej implementacji
aplikacji sieciowej, a jedynie określe-
nie użytego protokołu aplikacji [Pac-
ketwatch 2004]. Nazwa Application
Mapping przyjęła się przede wszyst-
kim dzięki narzędziu amap (Applica-
tion Mapper) umożliwiającemu auto-
matyzację niektórych technik omó-
wionych w dalszej części artykułu.

Automatyczne

powitanie

Zasada działania Application Map-
ping bazuje na modelu komunika-
cji klient/serwer. Serwer udostęp-
nia aplikację sieciową, którą wią-
że z portem TCP lub UDP. Port ta-
ki znajduje się w trybie nasłuchiwa-
nia. Klient, który chce skorzystać z
danej usługi sieciowej, łączy się z
odpowiednim portem docelowym
serwera [Stevens 1994]. Najpopu-
larniejszym przykładem jest serwer
WWW, który zgodnie z zalecenia-
mi IANA jest udostępniany na porcie
TCP 80 (HTTP). Przeglądarka inter-
netowa, w tym przypadku klient, wy-
wołuje cel i docelowy port, żeby po-
brać dokumenty stron WWW. Po-
dobnie przebiega to w przypadku
serwera i klienta e-mail oraz innych
usług sieciowych opartych na mo-
delu klient/serwer.

Niektóre tekstowe aplikacje siecio-

we zostały stworzone z myślą o in-
teraktywności. Po ustanowieniu połą-
czenia witają one klienta specjalnym
banerem zawierającym informacje
dotyczące implementacji oraz innych
możliwości technicznych. Do aplika-
cji tego typu zaliczają się znane, kla-
syczne serwery usług SMTP (tcp/25)
i FTP (tcp/21). Połączenia tego typu
można łatwo inicjować przy pomocy
klienta Telnet, a następnie odczyty-
wać banery powitalne. Proces ten jest
w literaturze anglojęzycznej określa-
ny terminem Banner-Grabbing [Ru-
ef 1999, Ruef et al. 2002, McClure et
al. 2005].

W przypadku połączeniowych im-

plementacji dostępnych we wszyst-
kich popularnych systemach opera-
cyjnych, można to wykonać wpisując

telnet <host docelowy> <port doce-

lowy> [Ruef 2004, 2006]. Na przy-
kład do nawiązania połączenia z ser-
werem mail.computec.ch na porcie
TCP 25 (smtp) wystarcza wprowa-
dzenie telnet mail.computec.ch 25.
Po nawiązaniu połączenia na pozio-
mie protokołu TCP na wyjściu przy-
kładowej sesji Telnet można zaob-
serwować sposób wyświetlenia ba-
nera tego serwera e-mail. Znajduje
się tu nazwa Sendmail oraz numer
wersji 8.12.6 serwera SMTP.

C:\Documents and Settings\mruef>
telnet mail.computec.ch 25
220 mail.computec.ch ESMTP
Sendmail 8.12.6/8.12.6/taifun-1.0;
Wed, 30 Nov 2005 15
:54:54 +0100

Automatyczne powitanie klienta ba-
nerem jest cechą charakterystycz-
ną wielu aplikacji sieciowych. Jest
to wskazówką przy identyfikacji nie-
których znanych implementacji, su-
gerującą takie popularne usługi, jak
SMTP lub FTP. Z drugiej strony auto-
matyczna odpowiedź przemawia ra-
czej przeciwko wykorzystaniu ser-
wera sieciowego HTTP. Taka infor-
macja nie wystarcza jednak do okre-
ślenia użytych aplikacji sieciowych.
Konieczne są dodatkowe szczegóły,
którymi zajmiemy się w dalszej czę-
ści artykułu.

Proste Pattern-Matching

W obrębie komunikatów zwrot-
nych najprostszą w użyciu techni-
ką jest Pattern-Matching. Angiel-
ski termin Pattern-Matching jest na-
zwą techniki polegającej na wyszu-
kiwaniu łańcucha znaków lub dopa-
sowaniu (ang. to match) do okre-
ślonego wzorca (ang. pattern). Naj-
prostszą realizacją jest wyszukiwa-
nie łańcuchów znaków. W celu do-
kładnego wyjaśnienia podstawowej
zasady Application Mapping posłu-
żę się złożonym przykładem. Mamy
plik o nazwie data.txt, w którym za-
pisano następujące wiersze (numery

wierszy należą celowo do treści pli-
ku w celu lepszego zilustrowania za-
gadnienia):

01 To jest pierwszy wiersz
02 To jest drugi wiersz
03 To jest trzeci wiersz
04 To jest koniec pliku

Polecenie grep umożliwia w Uni-
xie przeszukanie treści pliku. Wyko-
rzystuje się w tym celu zwyczajną
składnię polecenia grep <wzorzec>

<plik>. W tym przykładzie wyszu-
kamy w pliku data.txt ciąg znaków

To. Ponieważ wzorzec odpowiada
wszystkim czterem wierszom, zosta-
ną zwrócone w wyniku wszystkie:

mruef@debian:~$ grep To data.txt
01 To jest pierwszy wiersz
02 To jest drugi wiersz
03 To jest trzeci wiersz
04 To jest koniec pliku

Jeśli wyszukiwalibyśmy ciągu zna-
ków występującego tylko w jednym
wierszu, zostałby zwrócony odpo-
wiedni wiersz. Przykładem są wzor-
ce wiersz (wiersze 01, 02 i 03) lub

koniec (tylko wiersz 04). W systemie
Windows można to zrobić przy po-
mocy polecenia find wykorzystują-
cego podobną składnię:

C:\Documents and Settings\mruef>
find data.txt "koniec"
04 To jest koniec pliku

Zastosujmy technikę Pattern-Mat-
ching do odpowiedzi nawiązanego
połączenia. Wynik próby połączenia
z portem TCP 21 hosta ftp.compu-
tec.ch wygląda w następujący spo-
sób:

C:\Documents and Settings\mruef>
telnet ftp.computec.ch 21
220 ProFTPD 1.2.10 Server
(ftp.computec.ch) [80.74.129.35]

Prostą metodą Pattern-Matching
użytą w Application Mapping jest
skorzystanie z nazwy protokołu
[Ruef 2004, 2006]. Ciąg znaków
FTP wskazuje np. na usługę FTP
(File Transfer Protocol) na porcie

background image

hakin9 Nr 6/2006

www.hakin9.org

Teoria

44

docelowym. Podobnie jest ze skró-
tami SMTP dla usług mailowych i
HTTP przy implementacjach ser-
werów sieciowych. Jeśli wykorzy-
stamy wspomniane trzy akroni-
my jako wzorce do dopasowania,
stwierdzimy zgodność w przypad-
ku FTP i brak zgodności odnośnie
SMTP i HTTP. Tak więc we wcze-
śniej nawiązanym połączeniu przy-
puszczalnie jest używany protokół
FTP (File Transfer Protocol). Przy-
puszczenie to pokrywa się również
z użytym portem docelowym, gdyż
IANA przewiduje dla tego rodzaju
komunikacji port TCP 21 (ftp-con-
trol).

False Positives

w Pattern-Matching

Technologia Pattern-Matching ma
wiele zastosowań. We wszystkich
pojawiają się dwa podstawowe pro-
blemy:

[baza danych]

można rozpoznać

jedynie te wzorce, które wcze-
śniej już zostały jako takie rozpo-
znane,

[rozbieżności]

w zależności od

dokładności zdefiniowania wzor-
ca, zgodności mogą zostać prze-
oczone (false negatives) lub
stwierdzone nieprawidłowo (fal-
se positives).

Problem uprzednio znanej bazy da-
nych ma w odniesieniu do Applica-
tion Mapping ma mniejsze znaczenie
niż w przypadku oprogramowania
antywirusowego, czy automatycz-
nego rozpoznawania włamań. Dzięki
specyfikacjom i ścisłemu przestrze-
ganiu standardów, definicja danych
wejściowych jest prosta. Większe
problemy mogą się pojawić w związ-
ku z dokładnością wyrażeń wzorców
(ang. expressions).

Załóżmy, że w komunikacie

zwrotnym przyjmujemy ciąg znaków
SMTP jako odniesienie do Simple
Mail Transfer Protocol (RFC 821).
Jest to standardowy przypadek, po-
nieważ wiele implementacji SMTP
identyfikuje się nazwą i żądaną wer-
sją protokołu aplikacji. Co się jednak
stanie, jeśli zastosujemy SMTP-
Mapping na serwerze WWW. W ja-
kiś sposób skłonimy go do odesła-
nia nam danych – dokumentu strony
WWW. Dokument ten zawiera rów-
nież ciąg znaków SMTP, ponieważ
przypadkowo jego treścią są połą-
czenia e-mailowe i ich standardy.
W tym przypadku Pattern-Matching
wskaże nieprawidłowo na SMTP ja-
ko potencjalnie zastosowany proto-
kół aplikacji.

Zafałszowanie wyników występu-

je w przypadku automatyzacji więk-
szości procesu Application Mapping.

Aby temu zapobiec, należy wprowa-
dzić bardziej złożone metody w obrę-
bie Pattern-Matching. Wyrażenia re-
gularne umożliwiają wprowadzenie
wyraźnych ograniczeń, dzięki cze-
mu samo wystąpienie określonego
ciągu znaków nie jest równoznaczne
ze zgodnością. (Implementacja funk-
cji amap dodatkowo pomaga w roz-
wiązaniu tego problemu przy pomo-
cy analizy długości odpowiedzi. Bliż-
sze informacje na ten temat w roz-
dziale dotyczącym funkcji amap.)

W obrębie Application Mapping

dla SMTP można ograniczyć wy-
szukiwanie np. do pierwszych wier-
szy odpowiedzi. Nagłówek SMTP
jest zwracany po ustanowieniu po-
łączenia jako pierwszy baner powi-
talny zawierający żądane informacje
(ok. 100 pierwszych bajtów). W przy-
padku połączenia HTTP z serwerem
sieciowym udostępniającym doku-
ment strony WWW z ciągiem zna-
ków SMTP w treści, zostanie on zna-
leziony dopiero po nagłówku HTTP
(po ok. 250 bajtach). Umożliwia to
eliminację lub przynajmniej znaczne
zminimalizowanie komplikacji.

Istnieją jednak sytuacje wymaga-

jące użycia bardziej rozbudowanych
wyrażeń regularnych. Jest tak np.
w przypadku dynamicznych ciągów
znaków o podobnej strukturze pod-
stawowej. Dobrym przykładem jest
usługa daytime, oferowana zarów-
no na TCP jak i UDP, na przydzielo-
nym przez IANA porcie 13. W przy-
padku daytime, po ustanowieniu po-
łączenia serwer przesyła do klienta
ciąg znaków informujący o aktualnej
godzinie oraz dacie. Forma jest czy-
telna również dla człowieka. W przy-
padku Unixa, odpowiedź wygląda
następująco (wiersz 02):

01 C:\Documents and Settings\
mruef>telnet 192.168.0.10 13
02 Mon Nov 28 13:42:23 2005

W amap, pierwszej zautomatyzo-
wanej implementacji dla Application
Mapping, w pliku odpowiedzi app-
defs.resp wykorzystuje się następu-
jący wiersz, który dzięki regularne-
mu wyrażeniu jest w stanie zapisać
odpowiedź:

Tabela 1.

Proste wzory rozpoznawania usług

Nazwa

Protokół

Port

Wyzwalacz

Cisco PIX Firewall
SMTP

tcp

25

^220.*\**\**\**\**

Dict

tcp

2628

^220 .* dictd

FTP

tcp

21

^220.*\n || ^220.*FTP

ftp-darwin

tcp

21

^220 Inactivity timer

Glftp

tcp

21

^220.*SSH

Hylafax

tcp

4559

^220 .*hylafax

NNTP

tcp

119

^200.*NNTP

Oracle HTTPS

tcp

1526

^220- ora

POP3

tcp

110

^220.*poppassd || 500 Pas-
sword

SMTP

tcp

25

^220.*\n250 || ^220.*SMTP

TrendMicro Inter-
Scan SMTP

tcp

25

^220.*InterScan

vmware-authd

tcp

902

^220 VMware Authentication

background image

hakin9 Nr 6/2006

www.hakin9.org

Teoria

46

daytime-unix:::26:^[A-Z].*
[A-Z].* [0-3].
[0-9][0-9]:[0-9][0-9]:
[0-9][0-9] 200.\rn

Wzorzec ten jest właściwie bardzo
dokładnie, ale nie bezbłędnie przy-
stosowany do odpowiedzi daytime
w środowisku unixowym. Możliwo-
ści optymalizacji są niewielkie. W od-
powiedzi daytime-unix na pierwszym
miejscu znajduje się dzień tygodnia
jako ciąg trzech znaków (np. Mon
dla poniedziałku (Monday) i Tue dla
wtorku (Thuesday). Wyrażenie re-
gularne jest w stanie rozpoznać ten
ciąg znaków, jednak nie uwzględnia
długości napisu. Teoretycznie zosta-
łyby więc rozpoznane również roz-
szerzone zwroty postaci „Monday
Nov 28 15:03:23 2005“. To samo do-
tyczy przedstawienia miesiąca przy
pomocy trzech liter (np. Nov dla listo-
pada (November) i Dec dla grudnia
(December). Ponieważ implementa-
cje unixowe są pod tym względem
dość usystematyzowane, nieprawi-
dłowe rozpoznania w tym obszarze
należą do rzadkości. Bardziej pro-
blematyczne jest ograniczenie cyfry
roku od 2000 do 2009. W przypadku
systemu o błędnej konfiguracji (np. w
roku 1984) prawidłowe sprawdzenie i
rozpoznanie nie jest możliwe.

Dodatkowym

interesującym

aspektem tej procedury analizy jest
możliwość uzyskania informacji do-
tyczących systemu operacyjnego tyl-
ko przy pomocy odpowiedzi tak nie-
pozornych usług jak daytime, nie za-

wierających bezpośrednich odnośni-
ków do wykorzystywanego syste-
mu operacyjnego. Z kolei baza da-
nych sygnatur (fingerprint) funkcji
amap prowadzi pięć różnych wpisów
dla daytime, przy czym dwa dotyczą
systemu Unix (wiersze 01 i 03), a je-
den Windows (wiersz 02). Pozostałe
wpisy są ogólne.

01 daytime-unix:::26:^[A-Z].* [A-Z]
[0-3].* [0-9][0-9]:[0-9][0-9]:
[0-9][0-9] 200.\rn
02 daytime-windows:::26-50:^
[A-Z][a-z]+, [A-Z][a-z]+ [0-9]+,
200[0-9] [0-9]+:[0-9]+:[0-9]+
\x0a\x00
03 daytime-unix:::20-36:^
[A-Z][a-z]+ [A-Z][a-z]+
[0-9 ][0-9] [0-9]+:[0-9]+:
[0-9]+ 200[0-9]\x0d\x0a
04 daytime:::25-30:^
[0-9][0-9] [A-Z][A-Z][A-Z]

200[0-9] [0-9][0-9]:
[0-9][0-9]:[0-9][0-9] .*
05 daytime:::26-45:^
[A-Z][a-z][a-z]*,
[A-Z][a-z][a-z]* [0-9]+, 200

Trzycyfrowe

kody statusu

Wiele aplikacji sieciowych stworzo-
nych w celu umożliwienia bezpo-
średniej interaktywności użytkowni-
ka korzysta z kodów statusu. Pole-
ga to na uprzednim przyznaniu każ-
demu wejściu i wyjściu liczbowego
kodu statusu, z reguły trzycyfrowe-
go. Np. FTP, SMTP oraz inne kla-
syczne protokoły wykorzystują war-
tość 220 do potwierdzenia pomyśl-
nego przetworzenia zapytania. Pro-
ducenci kierują się zasadą, wg której
pierwsza cyfra trzycyfrowego kodu
statusu określa kategorię (np. sku-
teczne), druga definiuje rodzaj ko-
munikatu (np. znaleziono zasób), a
ostatnia zróżnicowany opis (np. ode-
słano żądany zasób). Powodem za-
stosowania wartości liczbowej całko-
witej jako kodów statusu jest ich ła-
twe przetwarzanie przez klienta. Mu-
si on tylko wczytać trzy pierwsze baj-
ty zwrotu w celu uzyskania informacji
o aktualnym stanie rzeczy (w innym
przypadku konieczne byłoby rozpo-
znawanie pełnych słów).

Na kolejnej pozycji w tym samym

wierszu znajduje się oddzielony spa-
cją tekst statusu. Jest on wykorzysty-
wany w sytuacjach, kiedy usługa jest
używana bez odpowiedniego klienta,
i kiedy rezygnuje się z automatycz-

Tabela 2.

Polecenia wspierane przez popularne protokoły aplikacji

FTP

SMTP

POP3

NNTP

HELP

X

X

X

USER

X

X

PASS

X

PORT

X

STOR

X

HELO

X

VRFY

X

EXPN

X

RSET

X

NOOP

X

X

QUIT

X

X

X

X

Tabela 3.

Typowe zachowania timeout różnych usług

Zachowanie timeout

Przykłady

Brak funkcji timeout

Telnet, SSH, NNTP, Echo, Discard, Chargen

Zerwanie połączenia po
poleceniu timeout

FTP, netbios-ssn (ca. 30 Sek)

Zerwanie połączenia po
dowolnym poleceniu(ach)

HTTP, HTTPS/SSL, Finger, Time

Zerwanie połączenia po
ostatnim poleceniu(ach)

HTTP, HTTPS/SSL, Finger, Time

Zerwanie połączenia po
nieprawidłowym polece-
niu(ach)

Niektóre implementacje SMTP, niektóre auto-
ryzacje terminala (n[p. telnet lub SSH), Proxy z
listami dostępu (Access Lists)

Polecenie NOOP po po-
leceniu timeout

FTP

background image

Application Mapping

hakin9 Nr 6/2006

www.hakin9.org

47

nej interpretacji trzycyfrowego kodu
statusu (np. w przypadku wykorzy-
stania interaktywnej sesji telnet). W
przypadku udanej komunikacji inte-
raktywnej przy pomocy FTP, pierw-
szy wiersz mógłby mieć postać 220

Found. Inne kody statusu wskazu-
ją na błędy serwera lub klienta, albo
brakujące implementacje. Spójrzmy
na krótki przykład sesji FTP:

01 C:\Documents and Settings\mruef>
ftp 192.168.0.10
02 Connected to 192.168.0.10.
03 220 debian.computec.ch FTP server
(Version 6.4/OpenBSD/

Linux-ftpd-0.17) ready.
04 User (192.168.0.10:(none)): mruef
05 331 Password required for mruef.
06 Password: xxxxxxxx
07 230- Linux debian 2.6.12-1-386 #
1 Tue Sep 27 11:02:18 JST
2005 i686 GNU/Linux
08 230 User maru logged in.
09 ftp>

Jako pierwsze z naszego windowso-
wego komputera nawiązujemy połą-
czenie FTP z systemem docelowym
o adresie IP 192.168.0.10 (wiersz
01). Nasz klient FTP pokazuje nam,
że nawiązanie połączenia przebie-

gło pomyślnie (wiersz 02). W pierw-
szym zwrocie serwera FTP (wiersz
03) wyświetlany jest baner powitalny.
Warunkiem wstępnym jest trzycyfro-
wy kod statusu 220, wskazujący na
udany dostęp. Po wprowadzeniu na-
zwy użytkownika mruef (wiersz 04),
konieczne jest wprowadzenie odpo-
wiedniego hasła (wiersz 05). Widzi-
my tutaj kod statusu 331, wskazujący
na konieczność autoryzacji.

Zasada działania Application

Mapping może być tutaj użyteczna
właśnie ze względu na wykorzysty-
wany przez różne systemy (trzycy-
frowy) kod statusu. Zasady seman-
tyczne tego rodzaju wskazują na
interaktywne protokoły ASCII NVT,
np. FTP, SMTP lub POP3 [Stevens
1994, Ruef et al. 2002]. Tabela 1 za-
wiera popularne protokoły warstwy
aplikacji wykorzystujące klasycz-
ną zasadę kodów statusu. W ostat-
niej kolumnie zamieszczono wyzwa-
lacz (trigger) umożliwiający identy-
fikację odpowiedniego rodzaju pro-
tokołu. Ich forma została możliwie
uproszczona aby ułatwić zrozumie-
nie zagadnienia. Istnieje możliwość
ich dodatkowej optymalizacji i dzię-
ki temu ograniczenia ilości błędnych
komunikatów.

Najpierw złożenie

formalnego zapytania

Istnieją również usługi nie posiadają-
ce funkcji powitania klienta po usta-
nowieniu połączenia. Tego rodza-
ju implementacje można ze wzglę-
du na zachowanie gospodarza na-
zwać niegrzecznymi lub nieuprzej-
mymi. Komunikacja tego rodzaju wy-
gląda przeważnie w taki sposób, że
po ustanowieniu połączenia ekran
po stronie klienta pozostaje pusty.
Serwer (aplikacja sieciowa) oczeku-
je na pierwsze zapytania zanim sam
zareaguje. Jeśli nie otrzyma zapytań
w ciągu kilku sekund lub minut, może
przy pomocy funkcji Timeout dopro-
wadzić do automatycznego zerwa-
nia połączenia, co zapobiega niepo-
trzebnemu wykorzystywaniu zaso-
bów trwających połączeń.

Z pewnością najbardziej znaną

implementacją protokołu aplikacji,
oczekującą formalnego zapytania,

Tabela 4.

Pełne wzory programu amap

Nazwa

Proto-

kół

Dłu-

gość

Wzorce

Dante

tcp

2

\x05\x02

Daytime-unix

tcp/udp

26

^[A-Z].* [A-Z].* [0-3].* [0-9][0-9]

Daytime-windows tcp/udp

26-50 ^[A-Z][a-z]+, [A-Z][a-z]+ [0-9]+,

200[0-9] [0-9]+

Daytime-unix

tcp/udp

20-36 ^[A-Z][a-z]+ [A-Z][a-z]+ [0-9 ][0-9]

[0-9]+

Daytime

tcp/udp

25-30 ^[0-9][0-9] [A-Z][A-Z][A-Z] 200[0-

9] [0-9][0-9]

Daytime

tcp/udp

26-45 ^[A-Z][a-z][a-z]*, [A-Z][a-z][a-z]*

[0-9]+, 200

Dhcp3d-isc

tcp

8

^\x00\x00\x00\x64\x00\x00\x00\
x18

Dns-pdnsd

tcp/udp

2

^\x00\x0c

Finger

tcp

1

\x66

http-compaqinsi-
ghtmanager

tcp

6

^HTTP/1

http-iis

tcp

34

^<h1>Bad Request .Invalid
URL.</h1>

Mailhurdle

udp

10

\x00\x08\x06\x9f\x7a\x06\x00\
x00\x00\x00

Mldonkey

tcp

1

\x31

ms-distribution-
transport

tcp(/udp) 6

^..\x0a\x00

Ms-dtc

tcp/udp

3

..\n

Netmeeting

tcp

4

^\x03\x00\x00\x11

NTP

udp

48

^....\x00\x00..\x00\x00

QOTD

tcp/udp

5-
1000

^"[A-Z].* .* .*[!?.]"\rn[A-Za-z].*\rn

SNMP

tcp

3

\x41\x01\x02

Spamd

tcp

1

\x32

SSL

tcp

1

\n

Time

tcp/udp

4

^\xc[2-5]

background image

hakin9 Nr 6/2006

www.hakin9.org

Teoria

48

jest HTTP (Hyper Text Trabsfer Pro-
tocol). Przyjrzyjmy się przykładowi
ręcznego nawiązywania połączenia
z hostem o adresie IP 192.168.0.10
przy pomocy klienta Telnet na porcie
docelowym TCP 80:

01 C:\Documents and Settings\mruef>
telnet 192.168.0.1 80
02 HEAD / HTTP/1.0
03
04 HTTP/1.1 200 OK
05 Date: Mon, 28 Nov
2005 16:39:07 GMT
06 Server: Apache/
1.3.34 (Debian)
07 Connection: close
08 Content-Type: text/
html; charset=iso-8859-1
09
10
11
12 Connection to host lost.

Po zainicjowaniu połączenia przy
pomocy telnetu (wiersz 01), klient
musi sformułować zapytanie. Ponie-
waż wiemy, że chodzi o implementa-
cję serwera HTTP, została od razu
użyta prawidłowa składnia. Przy po-

mocy zapytania „HEAD / HTTP/1.0“
(zamkniętego przy pomocy dwóch
znaków nowej linii wiersze 02 i 03)
sprowokowano regularną odpowiedź
(wiersze 04 do 11). Zawiera ona ty-
powe cechy HTTP (np. rozpoczęcie
odpowiedzi ciągiem znaków HTTP
oraz wiersz rozpoczynający się „Se-
rver: “). Bez inicjacji przy pomocy za-
pytania HTTP HEAD nie byłoby to
możliwe w opisanej formie.

W standardowym przypadku

podczas Application Mapping nie po-
siadamy jednak informacji o usłudze
dostępnej na porcie docelowym. Tak
więc przy pierwszej próbie nie może-
my wykorzystać użytego w przykła-
dzie zgodnego zapytania. W takich
przypadkach należy jako czynność
inicjującą zastosować kilkukrotne
wciśnięcie klawisza Enter. W więk-
szości przypadków wywoła to ko-
munikat błędu (np. „Not supported“
lub „Syntax unknown“) zawierający
również wiele informacji przydatnych
do analizy protokołu. Statystycz-
nie z powodu łatwości implementa-
cji i użycia często wykorzystywane
są implementacje HTTP, nawet jeśli
chodzi o rzekomo trwające wywoła-

nia. W takim przypadku można uzy-
skać pozytywne wyniki również wy-
korzystując dane wejściowe typowe
dla HTTP, np. „GET / HTTP/1.0“.

Bodźce i reakcje

Stwierdziliśmy już, że niektóre apli-
kacje interaktywne charakterystycz-
nie witają klienta bezpośrednio po
nawiązaniu połączenia. Omówiliśmy
również inne nieuprzejme usługi ty-
pu HTTP, które należy prosić o na-
desłanie danych. Zajmiemy się teraz
szczegółami dotyczącymi tych ostat-
nich. Nie będziemy jednak ich oma-
wiać w powiązaniu ze wspomniany-
mi nieuprzejmymi implementacja-
mi. Naszym celem jest poprawa wy-
dajności funkcji Application Mapping
poprzez prowokowanie możliwie jed-
noznacznych reakcji.

Klasyczną,

acz

niekoniecz-

nie wykorzystywaną możliwością,
jest użycie funkcji pomocy. Polece-
nie HELP wyświetlające listę obsłu-
giwanych komend, oferują przede
wszystkim usługi interaktywne, np.
FTP lub SMTP. Przy pomocy funkcji
HELP, ewentualnie na podstawie za-
wartych w niej poleceń, można czę-
sto bardzo dokładnie określić użyty
protokół aplikacji. Tabela 2 zawiera
informacje dotyczące najczęściej
dostępnych poleceń w popularnych
protokołach aplikacji. Lista ta nie jest
jednak pełna, ani z punktu widzenia
protokołu, ani poleceń.

Tylko na podstawie komunikatu

błędu, bez względu na dostępność
polecenia, można wyciągnąć okre-
ślone wnioski dotyczące użytego pro-
tokołu. Zaleca się jednak ostrożność,
gdyż nie wszystkie implementacje
serwerów muszą wspierać wszystkie
polecenia. Wiele nowoczesnych ser-
werów SMTP rezygnuje ze względów
bezpieczeństwa z klasycznych pole-
ceń typu VRFY, EXPN, DEBUG lub
nawet HELP. Komunikaty błędu, o ad-
ministracyjnej odmowie tego rodzaju
dostępu lub braku implementacji da-
nego polecenia nie należą do rzadko-
ści. Zbyt duże znaczenie przykładane
do tego rodzaju charakterystyki może
prowadzić do błędnych rezultatów.

Jeśli kilka protokołów warstwy

aplikacji wspiera te same polecenia,

Rys. 1.

Przebieg procesu Application Mapping przy pomocy bodźca/reakcji

background image

Application Mapping

hakin9 Nr 6/2006

www.hakin9.org

49

konieczne jest przeprowadzenie in-
nej analizy. Jest to możliwe np. po-
przez sprawdzenie odpowiednich
implementacji pod kątem wykorzy-
stania parametrów. Również regular-
ne odpowiedzi mogą się różnić w za-
leżności od usługi. Wiele serwerów
FTP zezwala np. na parametr po-
lecenia HELP. W przypadku wpro-
wadzenia polecenia „HELP PORT“,
uzyskuje się specyficzne informa-
cje dotyczące pomocy dla polecenia
FTP PORT. Podobnie bywa w przy-
padku protokołu SMTP.

Timeout

Widzieliśmy już, że podstawowe po-
witanie może zawierać charaktery-
stykę aplikacji sieciowej oraz udo-
stępnionego przez nią protokołu apli-
kacji. W zależności od powitania
klienta zautomatyzowanym bane-
rem, może to wskazywać na aplika-
cję interaktywną (np. SMTP) lub nie-
interaktywną (np. HTTP).

Podobną cechą charakterystycz-

ną, którą można wykorzystać ja-
ko wskaźnik służący do określenia
usługi jest tzw. zachowanie Timeout.
W standardowym przypadku Time-
out występuje w obrębie aplikacji, je-
śli przez dłuższy czas nie nastąpi re-
gularna wymiana danych. Czas za-
stosowania timeout'u wynosi od mi-
lisekund aż do godzin. Przeważnie
przy średnio aktywnych aplikacjach
opierających się na sesjach czas ten

wynosi kilka sekund (np. 10 sekund)
lub kilka minut (np. 2 minuty).

W obrębie analizy timeout mogą

być wyświetlane różne statusy. Nale-
ży przy tym zaznaczyć, że nie jest
to uzależnione od protokołu aplika-
cji, a w największym stopniu od po-
szczególnych implementacji i ich
konfiguracji. Wiele usług umożliwia
bowiem mniej lub bardziej ukryte de-
finiowanie wartości timeout w pliku
konfiguracyjnym. Ogólnie rozróżnia-
my sześć następujących statusów:

Najgorszym wariantem w obrę-

bie Application Mapping jest brak
timeout'u lub bardzo długi czas ti-

meout'u. Podobnie jak w przypadku
wyprowadzenia logicznego dowodu
ciężej jest określić brak stanu, niż je-
go istnienie. Weryfikacja statusu bra-
kującego timeout'u jest bardzo trud-
na i odpowiednio długa. Jest to jed-
na z przyczyn unikania tego rodza-
ju implementacji. Jeśli jednak chce-
my zastosować taką implementa-
cję, należy określić dla praktyczne-
go zastosowania krótki czas weryfi-
kacji (np. maksymalnie 120 sekund).
Przykładem aplikacji niestosujących
timeout'u są klasyczne usługi ty-
pu Echo, Discard i Chargen. Rów-
nież emulacje terminala, np. telnet
lub SSH rzadko są przerywane au-
tomatycznie.

Standardowe automatyczne prze-

rwanie połączenia odbywa się z re-
guły po ograniczonym czasowo po-
leceniu timeout. Dobrym przykładem
jest komunikacja FTP, która po okre-
ślonym czasie (i wielokrotnym użyciu
polecenia NOOP) zamyka połączenie
od strony serwera.

Rzadziej spotykaną opcją jest

półautomatyczne przerwanie połą-
czenia po wprowadzeniu polecenia
i wygenerowaniu odpowiedniej od-
powiedzi. Ma to miejsce przeważ-
nie w połączeniach sesyjnych, w któ-
rych istotne jest utrzymanie możliwie
niewielkiej ilości stałych kanałów ko-
munikacyjnych. Najpopularniejszym
przykładem jest HTTP, w przypadku

Listing 1

Prosta implementacja funkcji Application Mapping

01 #!/bin/sh
02
03

echo

"pmap v1.0"

04
05

if

[

$#

== 2

]

;

then

06

echo

"Starting protocol mapping ..."

07 RESPONSE=`

echo

-e

"QUIT

\n

"

| nc –vv –w 3

$1

$2

`

08
09

echo

-n

"Testing for trigger ftp ... "

10 MATCH=`

echo

"

$RESPONSE

"

| grep ftp`

11

if

[

"

$MATCH

"

]

;

then

12

echo

"Found!"

13

else

14

echo

"Not found."

15

fi

16

else

17

echo

"Please use the following syntax:"

18

echo

"pmap.sh <dhost> <dport>"

19

fi

Tabela 5.

Znaczenie wskazówek podczas rozpoznawania

Nazwa

Zna-

czenie

Opis

Numer portu

5 %

Jeśli na testowanym porcie jest dostępna usłu-
ga, dla której IANA zaleca dany port jako stan-
dardowy.

Protokół
transportu

5 %

Jeśli używany jest protokół transportowy, wyko-
rzystywany w standardowych implementacjach
(np. TCP dla HTTP i UDP dla TFTP).

Powitanie

5 %

W zależności od tego, czy dany protokół trans-
portowy stosuje automatyczne powitanie przy
pomocy banera.

Timeout

5 %

Jeśli aplikacja stosuje po upływie określonego
czasu automatyczny timeout.

Odpowiedź
bez bodźca

35 %

Przedstawienie banera powitalnego wysłanego
automatycznie po nawiązaniu połączenia.

Odpowiedź z
bodźcem

45 %

Przedstawienie odpowiedzi sprowokowanej
przez bodziec.

background image

hakin9 Nr 6/2006

www.hakin9.org

Teoria

50

którego po zapytaniu klienta i odpo-
wiedzi serwera połączenie jest auto-
matycznie zamykane przez serwer.
Innymi implementacjami tego rodza-
ju są Daytime, Time i QOTD.

Inne usługi interaktywne zamy-

kają automatycznie połączenie, je-
śli klient nie spełni określonych wy-
magań. Wiele serwerów zamyka np.
nawiązywanie połączenia sesji emu-
lującej terminal przy pomocy telnetu
lub SSH w przypadku kilkukrotnego
wprowadzenia nieprawidłowego ha-
sła. Niektóre serwery SMTP kończą
nagle komunikację, jeśli klient chce
kilka razy z rzędu wykorzystać nie-
implementowane polecenie. Zacho-
wanie to jest w rzeczywistości rów-
nież zależne od architektury aplikacji
i nie odnosi się bezpośrednio do pro-
tokołu aplikacji.

Ostatni rodzaj zachowania do-

tyczący timeout'u ma miejsce pod-
czas użycia wygenerowanych auto-
matycznie poleceń NOOP. NOOP
jest skrótem od angielskiego zwro-
tu „No Operation“. Polecenie to jest
celowo stosowane okresowo w ce-
lu uniknięcia automatycznego za-
mknięcia połączenia. W ten spo-
sób klient lub serwer podtrzymu-
ją połączenie i kanał komunikacji
poprzez wymianę niewielkiej ilości
danych. Tego rodzaju operacja jest
często wykorzystywana przez apli-
kacje interaktywne, np. FTP. Do-
piero po wielokrotnym użyciu pole-
cenia NOOP przez kilka minut ma
miejsce przerwanie połączenia ze
strony serwera.

Analiza zachowania timeout'u nie

jest łatwa. Wymaga często dużych
nakładów czasowych, wielu zróż-
nicowanych testów i często nie da-
je jednoznacznych rezultatów. Z te-
go względu w przypadku amap zre-
zygnowano z implementacji tego ro-
dzaju analizy. Należy się również li-
czyć z rezygnacją z tego rodzaju roz-
szerzenia, gdyż współczynnik nakła-
dów do zysków tego rodzaju oceny
wypada zdecydowanie negatywnie.

Automatyzacja

przy pomocy amap

Jedną z pierwszych zautomatyzowa-
nych implementacji Application Map-

ping jest oprogramowanie amap. Je-
go nazwa nawiązuje do popularne-
go narzędzia służącego do skano-
wania i oceny nmap autorstwa Fy-
odora. Amap jest udostępniany na
licencji GPL (General Public Licen-
se), a stworzony został dla syste-
mów UNIX/Linux przez Van Hause-
r'a i DJ RevMoon'a z niemieckiej gru-
py THC (The Hackers Choice, http:

//www.thc.org).

Podstawowa obsługa oprogra-

mowania przypomina nmap. Rów-
neiż tutaj pierwszym argumentem
jest nazwa lub adres IP systemu
docelowego. Jako drugi parametr
należy obowiązkowo wprowadzić
numer portu w zakresie od 1 do
65535. Jeśli rezygnujemy z użycia
opcji –u, uzyskujemy standardo-
wy dostęp do portu TCP. W innym
przypadku jako protokół transportu
jest stosowany UDP. Jeśli kontroli
podlegają jedynie określone proto-
koły aplikacji, korzystne jest wyko-
rzystanie parametru -p <protokół>,
dopuszczającego specyfikację po-
szczególnych protokołów (np. ftp
lub smtp).

Dla programistów, profesjonal-

nych testerów oraz podczas wykry-
wania błędów (debugging) interesu-
jący jest przełącznik –d. Przy jego
pomocy można zalecić programo-
wi amap przekazywanie odpowiedzi
z docelowego portu na standardo-
we wyjście (stdout). W widoku szes-
nastkowym oraz ASCII odpowiedzi
są przejrzyste, dzięki czemu można
dokładnie określić bodźce i wywoła-
ne reakcje, a dzięki temu zbieżności
wzorców. Podobnie jest w przypadku
opcji –b wywołującej zwrot wszyst-
kich odpowiedzi ASCII skutecznych
wyzwalaczy.

Poza plikiem binarnym, będą-

cym sercem programu amap, istnie-
ją trzy modułowe bazy danych. Da-
ne zapisane jako standardowe pli-
ki tekstowe znajdują się w katalogu
/usr/share/amap. Duże znaczenie
ma plik appdefs.trig zawierający wy-
zwalacze służące do wykorzystania
bodźców. Np. do testu SMTP, prze-
prowadzanego standardowo na por-
cie

Port tcp/25

wykorzystywany jest

bodziec

HELO AMAP\r\n

.

Równie ważny jest plik app-

defs.resp zawierający możliwe odpo-
wiedzi poszczególnych usług w for-
mie wyrażeń wyrażeń regularnych.
Amap w przypadku odpowiedzi ser-
wera FTP spodziewa się ciągu zna-
ków Login name: lub

^220.*FTP

. Nie

stosuje się złożonych, pakietowa-
nych oraz rekursywnych wyrażeń re-
gularnych. Ich zastosowanie prowa-
dziło do odnajdywania dla różnych
usług wielu wierszy, które utrudniały
uzyskanie jednoznacznego wyniku.
Do analizy zachowania portu RPC
wykorzystuje się oddzielny plik app-
defs.rpc, który zapisuje odpowiednie
numery ID popularnych usług RPC.

Automatyzacja przy

pomocy zwrotów nmap

Funkcją szczególną programu amap
niedostępną w innych narzędziach
(nawet w przypadku stworzenia wła-
snego rozwiązania) jest analiza ob-
jętości reakcji. W czwartej kolumnie
pliku odpowiedzi appdefs.resp zapi-
sywana jest opcjonalnie przy pomo-
cy wartości całkowitej (bezwzględ-
nie lub zakres) oczekiwana dłu-
gość odpowiedzi. Jest to dodatko-
wy wskaźnik gwarantujący popraw-
ność kontroli.

Rys. 2.

Przebieg inteligentnego

procesu Application Mapping

background image

Tworzenie własnego

rozwiązania

W pierwszej części artykułu omówi-
liśmy koncepcję oraz podstawy tech-
niczne Application Mapping, w drugiej
części przeanalizowaliśmy możliwą
implementację na podstawie przykła-
du THC amap. Nadszedł więc czas
na stworzenie własnego oprogramo-
wania. Chodzi tylko o przedstawienie
ogólnych przykładów, przy pomocy
których omówimy zasady tworzenia
własnych rozwiązań oraz poszcze-
gólne implementacje. Perfekcyjność
użycia oprogramowania nie ma tu-
taj znaczenia. Implementację nasze-
go rozwiązania przeprowadzimy przy
pomocy prostego skryptu Shell. Nie-
stety nie oferuje on, ani z punktu wi-
dzenia programisty wysokiej wydaj-
ności, ani szczególnych możliwości
pod względem ergonomii. Dzięki pro-
stemu i ogólnemu językowi skrypto-
wemu łatwiej jednak będzie wyjaśnić
omawiane zagadnienia. Nasz mały
projekt programistyczny ma następu-
jące wymagania:

[wykorzystanie oprogramowania]

implementacja aplikacji do ce-
lów półautomatycznych Applica-
tion Mapping,

[objętość]

wykorzystanie roz-

wiązania opartego na wierszach
przy pomocy skryptu Shell,

[Pattern-Matching]

tylko wyko-

rzystanie prostej funkcji Pattern-
Matching w obrębie odpowiedzi.

Jak widać na liście wymagań, zrezy-
gnujemy z implementacji niektórych
technik analizy (np. zachowania ti-
meout i analizy długości). Naszym
celem jest bezpośrednie przejęcie
komunikatów zwrotnych przy pomo-
cy wyzwalaczy, które sprawdzimy z
naszymi zapisanymi wzorami. Poniż-
szy diagram blokowy ilustruje te pro-
ste zachowania (Rys. 1.).

Najpierw sprawdzimy, czy docelo-

wy port znajduje się w trybie nasłuchi-
wania. Jeśli nie, stan ten zostanie za-
pisany, a program zostanie zamknięty
komunikatem błędu. Jeśli możemy na-
wiązać połączenie z portem docelo-
wym, wysyłamy pierwszy wyzwalacz,
którym chcemy sprowokować odpo-

background image

hakin9 Nr 6/2006

www.hakin9.org

Teoria

52

wiedź. Następnie analizujemy odpo-
wiedź pod kątem obecności wzorca.
Jeśli odpowiedź zawiera wzór, wy-
nik zostanie zapisany oraz zostaną
przygotowane dane wyjściowe. Przed
opuszczeniem aplikacji zostanie wy-
świetlony wynik procesu skanowania.

Prosta implementacja

skryptu Shell

W rozdziale tym zajmiemy się pro-
stą implementacją zdefiniowanych
uprzednio wymagań narzędzia do
półautomatycznego przeprowadze-
nia procesu Application Mapping.
Wykorzystamy do tego celu prosty
skrypt Shell obejmujący łącznie 19
wierszy (Listing 1.)

W wierszu 03 wyświetlamy tytuł

naszej aplikacji. Naszą przykładową
implementację nazwiemy pmap, jako
skrót pochodzący od nazwy funkcji
Protocol Mapping.

W wierszu 05 przeprowadzamy

kontrolę liczby argumentów przeka-
zanych wywołaniem skryptu przy
pomocy instrukcji warunkowej if. Je-
śli nie przekazano 2 argumentów,
zapytanie przechodzi bezpośrednio
w gałąź else (wiersz 16), gdzie zwra-
cany jest tylko komunikat błędu, krót-
kie wyjaśnienie wymaganej składni
dla wywołania skryptu. po czym na-
stępuje zakończenie wykonywania
programu (wiersze 17 do 19).

Jeśli przekazano dokładnie 2 ar-

gumenty, aplikacja uruchamia Proto-
col Mapping (wiersz 06). Wiersz 07
można traktować jako serce aplikacji.
Tutaj przy pomocy narzędzia siecio-
wego NetCat tworzone jest połącze-
nie z systemem docelowym (pierw-
szy argument $1) oraz portem do-
celowym (drugi argument $2). Jeśli
ustanowiono połączenie, przez kanał
jest przesyłany znak nowej linii. Wy-
nik tego dostępu jest zapisywany w
zmiennej czasowej $RESPONSE.

Bezpośrednio po tym odbywa się

sprawdzenie istnienia wyzwalacza

ftp

w zwrocie zapisanym w zmiennej

$RESPONSE

. Wykorzystuje się w tym

celu polecenie grep z odpowiednim
wyzwalaczem dla pliku źródłowe-
go, a następnie zapisuje w zmiennej
czasowej

$MATCH

(wiersz 10).

Mózg programu pmap sprawdza

teraz, czy zmienna $MATCH posia-
da treść (wiersze 11 do 15). Jeśli
kontrola grep przebiegła negatyw-
nie, w zmiennej nie zostało nic zapi-
sane. W przeciwnym razie zmienna
zawiera ustalone wiersze. W zależ-
ności od tego, czy znaleziono zgod-
ność, zwracany jest określony sta-
tus (wiersze 12 do 14). Wynik uda-
ny (wiersze 01 do 04) lub nieuda-
ny (wiersze 06 do 09) przebieg tego
niewielkiego skryptu wygląda pod Li-
nuksem w następujący sposób:

01 mruef@debian:~$ ./pmap.sh ftp.
computec.ch 21
02 pmap v1.0
03 Starting protocol mapping …
04 Testing for trigger
ftp … Found!
05
06 mruef@debian:~$ ./
pmap.sh smtp.computec.ch 25
07 pmap v1.0
08 Starting protocol mapping …
09 Testing for trigger
ftp … Not found.

Jak już wspominaliśmy zastosowanie
pmap zostało maksymalnie uproszczo-
ne w celu łatwiejszego przedstawie-
nia zasady implementacji. W przypad-
ku profesjonalnej aplikacji należałoby

przeprowadzić liczne sprawdzenia błę-
dów, dodatkowe testy oraz obszerniej-
sze raportowanie. Jednak jeśli chodzi o
zasadę działania, wykorzystano przed-
stawione uprzednio możliwości.

Algorytm

niezawodności

Podstawową zasadą metody Appli-
cation Mapping jest szybkie zrozu-
mienie i prosta implementacja w kilku
wierszach. Według mnie aplikację ty-
pu amap można wyraźnie udoskona-
lić poprzez implementację dodatko-
wych mechanizmów oceny. Ta zróż-
nicowana analiza charakterystyk po-
łączenia lub serwisu musi zostać po-
nownie przetworzona przy pomocy
algorytmu, który w pełni obejmie zna-
czenie logiczne oraz zależności. Ta-
bela 5 przedstawia możliwości użycia
poszczególnych technik, ich znacze-
nie logiczne w obrębie analizy oraz
dotyczące ich części analizy.

Poniżej przedstawimy hipote-

tyczny przebieg takiego algorytmu
krok po kroku, zgodnie z jego działa-
niem w praktycznej implementacji:

• jeśli port docelowy określony przez

IANA oferuje usługą R, wartość R
jest zapisywana ze znaczeniem lo-
gicznym 5 %. A = { R, 5 },

O autorze

Marc Ruef pracuje jako Security Consultant w szwajcarskiej firmie scip AG, w której
jest szefem działu Security Auditing i Penetration Testing. W październiku 2002 uka-
zała się nakładem wydawnictwa Data Becker jego druga książka Hacking Intern. Poza
wieloma publikacjami dotyczącymi teorii informatyki i bezpieczeństwa IT wspiera róż-
ne projekty w tych dziedzinach. Od 1997 opiekuje się stroną internetową computec.ch,
będącą największym archiwum niemieckojęzycznych publikacji dotyczących bezpie-
czeństwa informacji. Poza tym jest programistą Attack Tool Kit (ATK), open source'o-
wego Exploiting Framework'a, będącego uzupełnieniem rozwiązań typu Nessus, słu-
żącego do ułatwiania testów penetracyjnych.
Kontak z autorem:
marc.ruef@computec.ch
http://www.computec.ch
/

W Internecie

computec.ch, http://www.computec.ch, niemieckojęzyczne archiwum z bezpłatny-

mi publikacjami dotyczącymi bezpieczeństwa IT,

THC amap, http://thc.org/thc-amap/, popularna implementacja narzędzia do Ap-

plication Mapping,

nmap, http://www.insecure.org/nmap/, popularne narzędzia do skanowania i

oceny.

background image

Application Mapping

hakin9 Nr 6/2006

www.hakin9.org

53

• jeśli dla tego połączenia jest wy-

korzystywany dominujący proto-
kół transportu, wartość ta jest za-
pisywana ze znaczeniem logicz-
nym 5 %. B = { R, 5 },

• powitanie przy pomocy bane-

ra po ustanowieniu połączenia,
wartość jest zapisywana ze zna-
czeniem 5 %. C = { R, 5 },

• timeout jest zapisywany ze zna-

czeniem 5 %. R = { R, 5 },

• automatyczna odpowiedź po

ustanowieniu połączenia jest
sprawdzana pod kątem ewentu-
alnych wzorców, a wyniki są za-
pisywane ze znaczeniem 35 %.
E = { R, 35 },

• odpowiedzi sprowokowane przez

bodźce są również sprawdza-
ne pod kątem wzorców i zapisy-
wane ze znaczeniem 45 %. F =
{ R, 45 },

• poprzez ustalenie wspomnianych

usług o największym znaczeniu
można uzyskać najbardziej praw-
dopodobne wyniki. Z = { A, B, C,
D, E, F }.

Do zastosowania algorytmu powinno
się wykorzystywać bazę danych, któ-
rą można jednak zrealizować jedynie
wirtualnie w formie tablic lub jako
płaską bazę danych plików. Dzięki
prostym działaniom arytmetycznym
(dodawanie i dzielenie) możemy obli-
czyć średnie i prawdopodobieństwa,
ze znaczeniem logicznym.

Środki zaradcze

Na koniec pojawia się pytanie, jak od-
powiedzialny administrator może się
bronić przed automatycznymi lub ręcz-
nymi ocenami Application Mapping (np.
przy pomocy programu amap). Zasad-
niczo można zastosować te same tech-
niki, które wykorzystywane są od lat
przez wyrafinowanych twórców wiru-
sów lub wyspecjalizowanych testerów
penetracyjnych: poprzez zmianę za-
chowania wprowadza się w błąd ana-
lizy autentyczności uruchamiane przy
użyciu baz danych wzorców. Twórcy
wirusów walczą z rozwiązaniami an-
tywirusowymi, a testerzy z systemami
Intrusion Detection. Naszym przeciwni-
kiem jest w tym przypadku proces oce-
ny Application Mapping.

Widzieliśmy wprawdzie, że za-

stosowanie efektywnych i wyczerpu-
jących wyrażeń regularnych jest du-
żą sztuką. Dlatego możemy w nie-
których przypadkach zapobiec pro-
cesowi Pattern-Matching poprzez
zwykłe dopasowanie zachowania
lub danych wyjściowych. Niestety
również my podlegamy zasadom,
które zapobiegają dostosowywa-
niu protokołów lub ich wytwarzaniu.
Podobnie twórcy wirusów nie mogą
według własnych potrzeb zamieniać
wykorzystywanego przez rozwiąza-
nia antywirusowe bajtu X na inny. Te-
go rodzaju zabieg ma z reguły nieod-
powiedni wpływ na podstawowe za-
chowania samego produktu, co rów-
nież nie leży w interesie autora.

Jeśli przyjrzymy się bazie da-

nych wzorców programu amap, mo-
żemy stwierdzić, że wiele kontro-
li polega na wyszukiwaniu nazwy
protokołu w odpowiedzi. Np. obec-
ność ciągu znaków SMTP wskazu-
je na wykorzystanie protokołu Sim-
ple Mail Transfer Protocol. Podobnie
jest w przypadku FTP, HTTP i wielu
innych protokołów. Administrator mu-
si się więc postarać o nie publikowa-
nie tego rodzaju informacji. Przede
wszystkim należy dostosować apli-
kacje wykorzystujące banery powi-
talne w taki sposób, aby nie wymie-
niały własnych funkcji. W takiej sy-
tuacji atakujący może sprowokować
zdradziecką reakcję jedynie przy
pomocy odpowiednich bodźców. W
przypadku rozwiązań automatycz-
nych typu amap będzie to wymaga-
ło wielu testów. Tylko w wersji 4.8
programu amap z 349 wzorców od-
padłoby ok. 78 skutecznych warian-
tów dostępu, między innymi niektó-
re bardzo znane zastosowania typu
FTP lub SMTP.

Inną możliwością jest odłączenie

chronionej usługi przy pomocy Appli-
cation Gateway z dedykowanym Pro-
xy [Ruef et al. 2002, Ruef 2004, 2006].
W ten sposób nie możemy wprawdzie
bezpośrednio zapobiec pomyślnemu
sprawdzeniu oferowanego protokołu
aplikacji, jednak w większości przy-
padków możemy znacznie utrudnić
dalsze testowanie poszczególnych im-
plementacji (np. IIS lub Apache).

Podsumowanie

Metoda Application Mapping umoż-
liwia określenie używanego proto-
kołu na podstawie zachowania usłu-
gi udostępnianej na otwartym por-
cie. Dzięki zróżnicowanym metodom
można rozróżnić poszczególne apli-
kacje oraz częściowo ich charakte-
rystyczne implementacje. Istotną ro-
lę odgrywa przy tVym metoda Pat-
tern-Matching w obrębie odpowiedzi
sprawdzanej usługi.

Application Mapping jest wpraw-

dzie klasyczną dyscypliną bezpie-
czeństwa komputerowego, jednak
w literaturze poświęcano jej dotąd
niewiele uwagi. Praktycznie nigdy
nie uznano właściwego kroku roz-
poznawania protokołu za wyspecja-
lizowany proces. Dopiero dzięki pro-
gramowi amap – pierwszej popular-
nej implementacji zautomatyzowa-
nego rozwiązania - metoda Applica-
tion Mapping uzyskała stałe miejsce
w obrębie sieciowego audytu bezpie-
czeństwa.

W artykule przedstawiono pod-

stawowe zasady funkcjonowania
programu amap, dzięki którym mo-
gliśmy przejść do stworzenia po-
dobnego rozwiązania. Rozwią-
zanie to zostało uproszczone, co
umożliwiło przedstawienie zasady
działania tego rodzaju implementa-
cji. Poza tym omówiliśmy niektóre
możliwości zaimplementowane w
naszym rozwiązaniu oraz progra-
mie amap umożliwiające poprawę
skuteczności wyników. Dzięki po-
łączeniu dodatkowych technik (np.
analiza danych portów zalecanych
przez IANA lub zachowanie time-
out) można uzyskać dość jedno-
znaczne wyniki.

Na koniec przedstawiliśmy

środki bezpieczeństwa, jakie mo-
że podjąć odpowiedzialny admini-
strator w celu utrudnienia automa-
tycznego lub ręcznego procesu Ap-
plication Mapping. Poprzez zmianę
zachowania oferowanej usługi mo-
żemy zmylić przede wszystkim do-
stępy automatyczne, np. program
amap. Proces Application Mapping
stanie się czasochłonnym i żmud-
nym wykonywanym ręcznie zada-
niem. l


Wyszukiwarka

Podobne podstrony:
2006 06 Wstęp do Scrum [Inzynieria Oprogramowania]
2006 06 nowotwory slinianek trzustki
PN EN 12697 7 2006 06 30
2006 06 23 053139 Set28 Verbal
2006 06 23 052914 Set25 Math
2006 06 23 053021 Set27 Verbal
2006 06 RSA w PHP chronimy nasze dane przy użyciu kryptografii asymetrycznej [Kryptografia](1)
hajn glosa do Mangold eps 2006 06 036
2006 06 Raport Wizerunek Sopotu wxrxd mieszkaxcxw Bad jakoxciowe
2006 06 23 053849 Set31 Verbal
mat fiz 2006 06 05
pg 2006 06 22
2006 06 05 matematyka finansowaid 25460
2006 06 08 Techn frezowania - zadanie, AGH, Semestr 8, Technologia wybranych elementów maszyn, cnc
Egzamin 2006.06.05, rozwiazania zadań aktuarialnych matematyka finansowa
2006 06 07 123001 Set23 Verbal
2006 06 23 052945 Set26 Verbal
2006 06 05 prawdopodobie stwo i statystykaid 25461
2006 06 Analiza Naruszeń i Egzekwowanie Polityki Bezpieczeństwa

więcej podobnych podstron