Robaki

Co to jest robak?

Robak to program komputerowy, który rozsyła kopie swojego kodu przez sieć. Robaki oczywiście nie są żywymi organizmami, ale wykazują wiele cech upodabniających je do niektórych pasożytów i dlatego mówiąc o nich używa się terminologii "biologicznej" -- na przykład, że rozmnażają się, infekują, zarażają, mutują, ...

Ogólny scenariusz jest taki: robak szuka komputera, który mógłby zainfekować i kiedy mu się uda, przystępuje do replikacji i rozsyła swoje kopie do innych komputerów. Wszystko to jest robione bez żadnej interakcji użytkownika (no, w każdym razie bez świadomej interakcji, to znaczy robak nie wymaga, żeby ktoś kliknął przycisk 'Wyślij robaka'). Skoro robak umie bez wiedzy użytkownika rozsyłać sie z jego komputera, to zwykle nic nie stoi na przeszkodzie, aby również bez jego wiedzy skasował parę plików, zainstalował backdoora, czy sformatował dysk. Dlatego robaki zalicza się do programów złośliwych (ang. maleware).

Robaki a wirusy

Wiele ludzi używa tych dwóch terminów jako synonimów, jednak wirusy to nie to samo co robaki. Wirus to kawałek programu, który dołącza się do jakiegoś pliku i jest wykonywany, kiedy użytkownik uruchomi ten plik. To oznacza, że wirus nie jest samodzielnym programem (a robak jest). Wirus potrzebuje pliku-nosiciela i tylko w ten sposób jest w stanie przenosić się na inne komputery (natomiast robak przenosi się samodzielnie).

Jak dokładnie działają robaki?

Najważniejsze aspekty działania robaka to: jak zaraża? jak przeżywa? jak się rozmnaża? jak szkodzi?

Jak robak zaraża?

Najczęściej wykorzystuje:

Jak robak przeżywa?

Przez przeżycie rozumiemy to, że robaka będzie istniał na dysku i będzie uruchamiany (na przykład przy każdym starcie systemu).
Żeby nie zostać wykrytym (i usuniętym) robak może: Żeby zapewnić sobie, że będzie uruchamiany, robak może:

Jak robak się rozmnaża?

Robak może trafić do innych komputerów:

Jak robak szkodzi?

Tu wszystko zależy od wyobraźni i złośliwości autora robaka. Robak może na przykład: Poza tym każdy robak rozsyłając się zużywa zasoby komputera oraz generuje duży ruch sieciowy.

Istnieją również robaki, które nie robią nic prócz rozsyłania swoich kopii, a nawet takie, które naprawiają błędy w systemie, dzięki którym robakowi udało się go zainfekować (np. Nachi). Zwykle uważa się jednak również te robaki za szkodliwe, bo po pierwsze, robią to bez wiedzy użytkownika, po drugie - jak każdy inny robak - obciążają komputer i sieć.

Sławne robaki

Morris Worm (Internet Worm)

Prawdopodobnie pierwszy robak internetowy, a na pewno pierwszy, który spowodował spore szkody i przyciągnął uwagę społeczeństwa. Został napisany przez Roberta Morrisa, studenta Cornell University i wypuszczony na wolność 2.11.1988. Najpewniej nie chodziło o atak, tylko o eksperyment naukowy :-) Robak nie czynił żadnych szkód na zainfekowanym komputerze, po prostu na nim działał, nie zajmując zresztą prawie żadnych zasobów systemowych. Dodatkowo robak sprawdzał najpierw, czy komputer nie jest już zarażony, bo zamierzeniem autora było, żeby na jednym komputerze działał jeden robak. Niestety, Morris uznał, że administratorzy będą próbowali bronić się przed robakiem oszukując go, że na komputerze działa już jego kopia. Napisał więc kod tak, że raz na siedem razy robak i tak się instalował na zarażonym już komputerze. To spowodowało, że w krótkim czasie na nieodpornych komputerach działało kilkaset kopii robaka, skutecznie blokując zasoby komputera i generując ogromny ruch sieciowy.

Robak Morrisa próbował się dostać na inne komputery na kilka sposobów: wykorzystywał błąd przepełnienia bufora w demonie finger (w funkcji get() nie była sprawdzana długości wejścia), program sendmail, który skompilowany z opcją DEBUG pozwala na wykonanie poleceń, oraz próbował logować się zgadując hasła. Robak w krótkim czasie zainfekował 10% internetu i na dłuższy czas sparaliżował ruch w sieci. Za napisanie robaka Morris został skazany na 3 lata nadzoru, 400 godzin prac społecznych i karę 10 050 dolarów grzywny. Obecnie jest profesorem na MIT, czyli tam, skąd wypuścił na wolność robaka :-)

Blaster (Lovesan)

Blaster atakował komputery z Windows 2000 i Windows XP wykorzystując błąd przepełnienia bufora w obsłudze zdalnego wywoływania procedur. Robak przeprowadza atak SYN flood na witrynę windowsupdate.com. Atak SYN flood oznacza wysyłanie do serwera dużej ilości pakietów z ustawioną flagą synchronizacji. Serwer w odpowiedzi też wysyła taki pakiet i czeka na pakiet z ustawioną flagą ACK; dopóki go nie dostanie, będzie miał zapisaną w pamięci RAM próbę nawiązania połączenia. Jeśli więc komputer nie wyśle pakietu (Blaster oczywiście nie wysyłał), to pamięć RAM w końcu się wyczerpie i serwer nie będzie nawiązywał nowych połączeń. Oprócz tego Blaster zwykle powodował niestabilne działanie komputera i restart.

29.08.2003 aresztowano w USA 18-latka, Jeffrey Lee Parsona, który stworzył wersję B Blastera. Z pewnością nie można zaliczyć go do "mistrzów gatunku" -- złapano go, bo przerobiony przez niego robak po zainfekowaniu próbował się łączyć z jego stroną internetową...

Slammer (Saphire)

Natomiast Slammera można chyba uznać za robaka niemal genialnego. Slammer został wypuszczony 25.01.2003 o 5:30 (czasu UTC) i rozprzestrzenił się z niespotykaną do tej pory prędkością. W ciągu 10 minut zainfekował 90% podatnych na infekcję komputerów! Spowodował między innymi, że przestały działać bankomaty Bank of America i Canadian Bank of Commerce. Slammer wykorzystywał błąd przepełnienia bufora (co za niespodzianka ;]) w Microsoft SQL Server i Microsoft SQL Server Desktop Engine. Pół roku wcześniej wypuszczona była łata, która naprawiała ten błąd, ale nawet część administratorów Microsoftu nie zainstalowała jej.

Jak to możliwe, że Slammer rozmnażał się tak szybko? Wystarczy prześledzić krótko sposób jego działania. Kod robaka to zaledwie 376B. Robak trafiał do komputera w pojedyńczym pakiecie UDP. Jeśli komputer nie był odporny, zaczynał wykonywać kod Slammera, to w pętli generował losowy adres IP i wysyłał się do niego w pakiecie UDP. Niesłychaną szybkość reprodukcji Slammer zawdzięczał:

Slammer w krótkim czasie spowodował olbrzymie przeciążenie sieci. Teoretycznie, żeby go usunąć z komputera, wystarczyło zrestartować system -- bo robak rezydował jedynie w pamięci. Jednak uruchomiona na nowo maszyna natychmiast infekowała się znowu. Ładny obrazek pokazujący rozprzestrzenianie się Slammera w ciągu pierwszych 30 minut można obejrzeć tutaj Jeśli ktoś pamięta jeszcze assemblera, to tutaj może obejrzeć kod Slammera. Warto zwrócić uwagę, jak krótki jest ten program. Sama pętla wysyłająca robaka do losowych IP to tylko 22 instrukcje!

Uwaga: Dziury, które wykorzystywały Blaster i Slammer, były znane wcześniej i wypuszczono nawet do nich łaty. Jeśli nie macie pomysłu na robaka, to żaden problem -- zacznijcie uważnie śledzić łaty wypuszczane przez Microsoft i napiszcie robaka, który wykorzystuje błąd naprawiany przez którąś z nich. Na pewno nawet rok później uda się zainfekować tysiące komputerów. Szacuje się, że w ciągu 30 dni po wypuszczeniu łaty tylko 50% użytkowników instaluje ją na swoim komputerze. Natomiast robak wykorzystujący dziurę powstaje przeciętnie po ok. dwóch miesiącach.

Kolejna uwaga: tak naprawdę najsłabszym punktem obrony komputera przed złośliwymi programami jest użytkownik. Jeśli robak wykorzystuje dziurę w oprogramowaniu, to prędzej czy później większość użytkowników zaktualizuje system i robak nie będzie miał szans. Ale jeśli robak rozsyła się mailem, który ma załącznik "naga britney", to praktycznie jest skazany na sukces... Oczywiście w takim przypadku jego siła rażenia może być dużo mniejsza niż np. Slammera, ale oczekiwana długość życia wzrasta.

Jednym z robaków rozsyłającym się waśnie w załącznikach maili jest Loveletter. Jest wyjątkowo złośliwy, po uruchomieniu zaczyna rozsyłać się przez Outlook oraz wyszukuje na dysku wszystkie pliki .jpg, .jpeg i zamienia je na siebie (pod tą samą nazwą, z dodanym rozszerzeniem .vbs), natomiast do znalezionych plików .mp3 i .mp2 dokleja się, jak wirus. Ten screencast demonstruje działanie tego robaka. Zamiast otwierać załącznik, uruchamiamy go zwyczajnie z pliku :-) Program Process Explorer pokazuje, że uruchamia się nowy proces i wkrótce użycie procesora wzrasta do 100%. Pokazano też, że pliki .jpg rzeczywiście zamieniły się na robaka.

Prezentacja na Systemy Operacyjne 2006/07 - Informatyka MIMUW.
Katarzyna Macioszek (O nas)