Moja głowa jest pełna pomysłów. Poniżej niektóre, które realizowałem
w przeszłości:
Pożyteczny wirus (1999)
Rok 1999. Wirusy typu ILoveYou atakują miliony komputerów.
Jedna maleńka kupa badziewia powoduje ogromne problemy.
Samego wirusa trudno nawet zaliczyć do jakiegoś programistycznego
artyzmu. Ot taki sobie kawałek kodu.
Michał Zalewski zaczął wtedy pracować nad czymś znacznie fajniejszym.
Wirus, który byłby znacznie inteligentniejszy, potrafił się sam modyfikować
i sam dopasowywać do nowego środowiska. To było ciekawe wyzwanie.
W mojej głowie pojawiło się wtedy jednak coś innego. Wirus, który
potrafiłby wprawdzie zarazić całą sieć komputerową, jednak jego cel
byłby całkiem inny niż cel wirusów typu ILoveYou. Jego celem byłoby
dostarczenie autorowi informacji o stanie sieci, nieznanych mu jeszcze
problemach, lukach w bezpieczeństwie czy innych informacjach.
Wirus, który byłby wykorzystywany nie do niszczenia, lecz do analizy
bezpieczeństwa.
To jednak nie jedyne zastosowanie wirusów.
W internecie wiele maszyn stoi odłogiem. Ogromna ilość sprzętu stoi
niewykorzystana. Jeśli wirus potrafiłby znaleźć takie komputery w dużej
korporacji mógłby wykorzystać ich moc do ważnych zadań.
Dynamicznie wykorzystywana przestrzeń dyskowa czy też moc procesorów.
Innym zastosowaniem mogłoby być wykorzystanie wirusów do sterowania
przepływem informacji i dynamicznego routingu. Wirus z umiejętnością
uczenia się znacznie szybciej mógłby wykryć błędy w routingu,
próby włamania czy nietypowe zachowanie routerów (błędy w niektórych
ramkach) i raportować te błędy człowiekowi.
Moja idea wirusa opiera się na sieci Wormów. Podobnie jak w grze
Lemmings - każdy worm specjalizowałby się w jednej czynności.
Przykładowo "Worm scanner" zajmowałby się poszukiwaniem ofiar w sieci,
"Worm hacker" włamywaniem do znalezionych wcześniej ofiar
a "Worm installer" - instalowaniem sieci na nowej maszynie.
Struktura pozwalałaby na dynamiczne dodawanie nowych wormów
(np. zajmujących się dynamicznym routingiem) a wspólnym ich elementem
byłaby wspólna pamięć.
W roku 1999 kilka miesięcy pracowałem nad mechanizmem pamięci dla wormów,
jednak nie ukończyłem swoich prac.
Pod adresem lcamtuf.coredump.cx/worm.txt
znajdziecie opis idei Michała Zalewskiego, w której wątek WormNetu
nie jest zbyt dobrze objaśniony jednak dokument jest moim zdaniem ciekawy. :)
Wirtualne serwery (2000)
Interesując się systemami bezpieczeństwa przez pewien czas poszukiwałem
metod, jakimi hacker może ukryć swoją obecność na serwerze.
Włamanie się na serwer jest bowiem banałem, jednak przejęcie nad nim
kontroli na czas dłuższy niż dwa dni jest strasznie trudne.
Ucząc się technik używanych przez hackerów szukałem sposobu na to,
by się przed nimi bronić. Zauważyłem, że najgorsze są pierwsze dwie
godziny działania hackera - wtedy w zależności od celu hackera:
- będzie on starał się znaleźć na serwerze cenne dane
- będzie on starał się poznać system i ukryć tak, by móc wykorzystywać
jego moc obliczeniową, przestrzeń dyskową lub łącza
- będzie niszczył system jak sie tylko da, podmieniał strony i robił
inne bzdury
Obserwacja działań włamywacza w czasie rzeczywistym jest o tyle
niebezpieczna, że w tym ostatnim wypadku (niszczenie) może sie źle skończyć.
Z drugiej strony nie obserwując działań hackera trudno zebrać wystarczający
materiał dowodowy, by go oskarżyć o cokolwiek poważnego
(wykorzystanie dziury w systemie by do niego wejść nie jest do końca
niezgodne z prawem - równie dobrze ta osoba może po prostu testować
bezpieczeństwo serwera).
Problemy te rozwiązuje moja idea wirtualnych serwerów.
Ponieważ serwer może mieć wiele adresów IP możemy na każdym z nich
tworzyć oddzielny, wirtualny system. Każdy z tych wirtualnych serwerów
może posiadać osobne konto administratora. Pod każdym z adresów IP serwer
może sprawiać wrażenie całkiem innej maszyny. I tu kryje się podstawa
mojej idei. Jeden z wirtualnych serwerów może być przynętą dla hackera,
w której będzie mógł sobie buszować do woli. Administrator zaś będzie
mógł obserwować poczynania włamywacza w czasie rzeczywistym i zbierać
dane dla prokuratury.
To jednak nie jest jeszcze najlepsze. Kolejny pomysł, który nasuwał mi się
w czasie prac nad pierwszą wersją systemu jest znacznie bardziej
interesujący. System może wykrywać włamywacza i tworzyć dla niego
dynamicznie wirtualny system. W chwili włamania hacker zostanie
przeniesiony do wirtualnego katalogu, w którym system plików będzie inny
niż w prawdziwym systemie. Wszelkie kolejne połączenia hackera
z tym systemem z jego adresu IP będą przekierowywane do wirtualnego
systemu, dzięki czemu hacker będzie miał wrażenie że nanoszone przez niego
zmiany odnoszą skutek.
Niestety ten projekt również porzuciłem. Początkowo opublikowałem jego
pierwszą wersję, później usunąłem ją ze strony ponieważ pewna firma
chciała kupić ode mnie prawa autorskie do tego rozwiązania,
obecnie znów publikuję moje patche.
Moje adresy, które znajdziecie w tych łatkach nie są już aktualne.
Szczegóły techniczne łatek możesz znaleźć w archiwalnych numerach Magazynu
Linux & Unix, niestety artykułów do tego pisma nie mogę publikować
w internecie. Moja opinia o podobnym rozwiązania ukazała się również
w magazynie Chip Special Linux Jesień 2003.
|
|