2009 07 08 Conficker o botnetach słów kilka

background image

40

HAKIN9

ATAK

7-8/2009

O

programowanie pozwalające tworzyć
botnety jest obecnie ostatnim krzykiem
mody, jeśli chodzi o szkodliwy kod.

Nic zresztą dziwnego – wynika to bowiem
z popularności podróbek Rolexów, minigier,
notabene w postaci plików .exe, oraz wszelkich
możliwych fetyszy. Ponieważ zasady rynku
mówią, że jeśli istnieje popyt, znajdzie się i
podaż, spamerzy szybko zorientowali się, że
dużo korzystniejszym dla nich rozwiązaniem
jest utrzymywanie stadka wysyłających
niechcianą pocztę komputerów niż ciągła walka
z dostawcami Internetu, szybko odcinającymi
im dostęp. Tak narodziły się botnety.

Teoria

Botnet to sieć współdziałających ze sobą
komputerów, które wykonują polecenia zadawane
im przez kontrolera. Różni się on jednak
tym od np. klastra, że komputery do botnetu
podłączane są podstępnie, a sami użytkownicy
są w większości przypadków nieświadomi
współuczestnictwa w procederze. Do niedawna
popularna była architektura klient-serwer, w
której boty łączyły się wszystkie z kontrolerem
i oczekiwały na polecenia. Najpopularniejszym
protokołem, ze względu na prostotę
implementacji, był IRC. Kiedy jednak rozpoczęto
aktywną walkę z botnetami poprzez zamykanie
kanałów, na których znajdowały się kontrolery,
twórcy botnetów zmienili znacznie architekturę.
Zamiast prostego kanału IRC zabezpieczonego

PIOTR JASTAK

Z ARTYKUŁU

DOWIESZ SIĘ

czym są botnety,

jakie istnieją podejścia co do

architektury botnetów,

jak działa robak Conficker.

CO POWINIENEŚ

WIEDZIEĆ

jak działają różne typy sieci,

jakie są podstawy zachowań

złośliwego oprogramowania,

czym są ataki typu przepełnienia

bufora,

jak działa szyfrowanie i podpisy

elektroniczne.

hasłem, botnety są dziś kontrolowane z wielu
serwerów przypominających strukturę Peer-
to-Peer, sam ruch kontrolerzy-boty jest zaś
szyfrowany, a w niektórych przypadkach
używanie podpisów cyfrowych pozwala na
propagację poleceń z bota do bota, eliminując
całkowicie konieczność istnienia centrów
dowodzenia.

Obydwie architektury mają swoje wady

i zalety: botnety scentralizowane są łatwe
do zniszczenia poprzez odcinanie dostępu
kontrolerom. Łatwo jednak przejąć nad nimi
kontrolę w przypadku np. wykradzenia hasła
do kanału IRC. Botnety zdecentralizowane
są praktycznie niemożliwe do zniszczenia w
konwencjonalny sposób, ale opierają się na
niezawodności botów przekazujących dalej
polecenia, przez co propagacja komend może
zajmować więcej czasu i być zawodna.

Do działania botnetu wymagane jest

odpowiednie oprogramowanie zainstalowane na
komputerach ofiar. Zwykle do rozprzestrzeniania
oprogramowania (będącego niejako rootkitem)
używane są robaki, w tym tytułowy Conficker.
Propagacja następuje najczęściej poprzez
e-maile lub luki w oprogramowaniu. E-maile
to sposób rozprzestrzeniania wymagający
od użytkownika otwarcia załącznika z kopią
downloadera lub samego robaka, lub przejścia
na stronę, która to umożliwia. Downloader jest
programem pośredniczącym i umożliwia ukrycie
szkodliwego kodu poprzez pobieranie go w

Stopień trudności

Conficker

o botnetach

słów kilka

Ataki uniemożliwiające dostęp do stron internetowych, czy kradzieże

danych kont bankowych na masową skalę to tematy często

przewijające się w wiadomościach związanych z komputerami. Coraz

częściej stoją za tym działaniami botnety.

background image

41

HAKIN9

CHARAKTERYSTYKA ZACHOWAŃ BOTNETÓW

7-8/2009

częściach lub w zaszyfrowanej formie,
a następnie tworzenie właściwego pliku
wykonywalnego dopiero na miejscu.
Drugi sposób propagacji to wykorzystanie
luki w oprogramowaniu. Nie wymaga
ono jakiejkolwiek interakcji ze strony
użytkownika, a zatem jest znacznie
trudniejsze do wykrycia. Żywotność
tej metody zależna jest jednak tylko
od ilości komputerów, na których
działa oprogramowanie posiadające
daną lukę. Ponieważ z czasem ilość
niezaktualizowanych wersji maleć będzie
do zera, rozprzestrzenianie za pomocą tej
metody przebiega szybko, lecz trwa krótko.
Aby utrzymać botnet przy życiu, potrzebna
jest inicjatywa ze strony twórców, którzy
uaktualniać będą samego robaka, aby ten
atakował coraz to nowe luki.

Botnet w przykładzie: Storm

Chociaż botnety istniały już wcześniej (np.
SpamThru w 2006 roku), to prawdziwą
sławę zyskał sobie robak o nazwie
Storm. 15 stycznia 2007 roku Europę
nawiedziła burza o nazwie Kyrill. Wiejąc
z siłą huraganu, zabiła 44 osoby i
spowodowała straty sięgające ponad
miliard euro. 19 stycznia 2007 roku do
skrzynek mailowych tysięcy osób trafił e-
mail z tytułem 230 rannych po uderzeniu
burzy w Europie
(230 dead as storm
batters Europe
) i załącznikiem będącym
plikiem wykonywalnym, który uruchomiony
instalował się jako usługa wincom32 i
rozpoczynał dalsze rozsyłanie pakietów
na przedziały adresów zakodowane
w samym malware, umożliwiając też
zdalną kontrolę komputera. Oprócz tego
pobierał też pliki wykonywalne służące do
wysyłania poczty, kradzieży kont e-mail
czy organizowania ataków DDoS. Storm
korzystał z dynamicznego systemu DNS,
regularnie przenosząc pliki z serwera
na serwer, rejestrując i derejestrując
maszyny przypisane do swoich domen.
Ponadto serwery co paręnaście minut
generowały nową kopię plików, czyniąc
ze Storma robaka polimorficznego. Ruch
wewnątrz samego botnetu odbywa się za
pomocą protokołów eDonkey i Overnet
i jest szyfrowany z podziałem na strefy;
dostęp do każdej z nich wymaga innego
klucza. Jakby tego było mało, próby
wielorazowego łączenia się z serwerami
udostępniającymi kopię robaka kończą

Rysunek 1.

Scentralizowany botnet – kontrolerzy za pomocą jednego serwera komunikują

się z botami

Rysunek 2.

Zdecentralizowany botnet – kontrolerzy komunikują się z niektórymi botami,

które przesyłają polecenia dalej dzięki utrzymywanej liście botów działającej na zasadzie

architektury podobnej do P2P

background image

ATAK

42

HAKIN9 7-8/2009

CHARAKTERYSTYKA ZACHOWAŃ BOTNETÓW

43

HAKIN9

7-8/2009

się atakiem DDoS na komputer osoby
próbującej rozpracować zachowanie
Storma. Wg Joshuy Cormana, pracownika
firmy SecureWorks, wykryte próby
debuggowania plików wykonywalnych
robaka kończą się atakiem DDoS ze
strony reszty botnetu.

Dla Storma znalazło się wiele

zastosowań, w tym oczywiście użyczanie
go spamerom, ataków na serwery czy
próby oszustw giełdowych. Ostatnio
jednak jego aktywność zmalała, przyczyny
czego należałoby szukać we fragmentacji
botnetu oraz stopniowo łatanych lukach w
komputerach potencjalnych ofiar.

Bohater tytułowy

Na sukces Confickera, znanego też
jako Downadup, czy Kido, składa się
kilka czynników. W przeciwieństwie
do robaka Storm, nie rozprzestrzenia
się on przy pomocy poczty e-mail,
ale korzystając z luki MS08-067 w
systemach Microsoft Windows. Głównym
powodem niebywałego sukcesu jest
jednak fakt, że 30% systemów z Redmond
działających na całym świecie nie
ma zainstalowanej łatki wydanej 15
października przez Microsoft, która
przed skutkami wykorzystania tej właśnie
luki broniła. Dodatkowo wystawiony
na niebezpieczeństwo jest nie tylko
Windows XP, gdyż luka w usłudze serwer
występuje także w systemach Windows
2000, 2003 i Vista. Po wykorzystaniu tejże
luki wykonywany jest kod pobierający
bibliotekę DLL wykonywaną jako część
usługi svchost.exe. Biblioteka ta będzie
ładowana przy każdym starcie komputera.
Po zainstalowaniu się, biblioteka
Confickera sprawdza, czy w sieci działa
firewall, a jeśli tak, to wysyła prośbę
UPNP o udostępnienie portu o wysokim
numerze, po czym otwiera port o tym
samym numerze na lokalnej maszynie.
Zależnie od wersji, Conficker korzysta z

Rysunek 3.

Zmienność Confickera przejawia się nie tylko w zmianie kodu w przeciągu

minut, ale także zmianie serwerów hostujących jego kod, wybieranych z dynamicznej puli

w przeciągu godzin.

��

��

���

���

��

��

MS08-067

MS08-067 to nazwa łatki opublikowanej przez Microsoft, i luki, którą łata. Jest to typowy błąd przepełnienia bufora w jednej z funkcji biblioteki netapi32.dll,
w usłudze Remote Procedure Call, w funkcji odpowiedzialnej za przetwarzanie adresu katalogu. W tym celu funkcja wyszukuje od tyłu ciągu znaków
ciągu \.., po czym szuka wstecz następnego ukośnika, a następnie od pozycji tego ukośnika kopiuje ciąg do następnego ukośnika. A zatem ciąg

aaa\bbb\.. zostanie zamieniony na aaa, ale już ciąg aaa\.. spowoduje wyszukiwanie aż do napotkania w pamięci kolejnego ukośnika. Jeśli uda

nam się umieścić ukośnik gdzieś w pamięci przed aaa\.., to funkcja skopiuje dane następujące po nim, powodując przepełnienie bufora. Wystarczy w

odpowiednim miejscu w przepełniającym ciągu umieścić np. adres funkcji skoku do ESP, który będzie wskazywał na resztę naszego shellkodu. Przykład
typu Proof-of-Concept jest dostępny na: http://www.milw0rm.com/exploits/6824

Tabela 1.

Największe botnety na świecie

Nazwy

Ilość botów

Conficker, Downup, Downadup, Kido

10 000 000

Kraken

495 000

Srizbi, Cbeplay, Exchanger

450 000

Bobax, Bobic, Oderoor, Cotmonger

180 000

Rustock, RKRustok, Costrat

150 000

Cutwail, Pandex

125 000

Storm, Nuwar, Peacomm, Zhelatin

85 000

background image

ATAK

42

HAKIN9 7-8/2009

CHARAKTERYSTYKA ZACHOWAŃ BOTNETÓW

43

HAKIN9

7-8/2009

różnych usług dynamicznego DNS, co
3 godziny generując listę 250 nowych
domen o losowych nazwach, po czym
próbuje łączyć się z tymi adresami URL.
Jeśli udaje mu się, następuje pobranie
właściwego pliku binarnego robaka z
portu TCP 80 za pomocą zapytania
HTTP w formie

http://domenazlisty/

search?q=n\&aq=7

(wariant A), lub

http:

//domenazlisty/search?q=n

(wariant

B). Plik ten jest zaszyfrowany kluczem
asymetrycznym, a jego autentyczność
potwierdzana jest zwykle 4096-bitowym
podpisem elektronicznym RSA. Do
szyfrowania stosowany jest szyfr RC4,
a klucze zakodowane są w samych
funkcjach pobierających pliki binarne. Na
początku funkcja deszyfrująca sprawdza,
czy pobrany plik ma ponad 128 lub 512
bajtów, odpowiednio dla wariantu A i B,
następnie weryfikuje podpis elektroniczny.
Jeśli ten się zgadza, plik binarny jest
deszyfrowany, a następnie uruchamiany
jest właściwy kod robaka, który przejmuje
kontrolę.

Po przejęciu kontroli, Conficker

tworzy bibliotekę DLL o losowej nazwie
i umieszcza ją w katalogu system32,
maskując ją przez zmienienie czasu
ostatniej edycji na taki sam jak w
kernel32.dll. Następnie biblioteka
Confickera jest używana jako usługa
systemu Windows, uruchamiana przy
każdym starcie. W tym celu Conficker
tworzy klucz o losowej nazwie w
SOFTWARE\Microsoft Windows NT\
CurrentVersion\SvcHost
. Aby uchronić
się przed prostym wykryciem, nazwa
usługi jest pustym ciągiem, a jej typ to
niewidzialny. Ponadto funkcja ładująca

bibliotekę Confickera nigdy nie kończy
wykonywania, co powoduje, że nie jest
wymieniona na liście procesów DLL.
Sam kod robaka jest dobrze chroniony
przed debugowaniem i uruchamianiem w
środowiskach wirtualnych, jednak stosując
triki, takie jak wywoływanie biblioteki z
własnego programu, można odkryć jego
część. [1]

Podczas działania Conficker

korzysta z 3 portów: 53/UDP (DNS),
80/TCP (HTTP) i 445/TCP(SMB). Co 3
lub 2 godziny (wersja A lub B) następuje
wyraźny wzrost aktywności na porcie
DNS, co potwierdza, że robak próbuje
znów połączyć się z którymś z 250
losowo wybranych adresów HTTP. Tak
jak Storm, implementuje on architekturę
podobną do Peer-to-Peer. Same serwery
z którymi łączą się poszczególne boty
są regularnie zmieniane. Polega to na
odrejestrowaniu z usług DNS obecnych
adresów serwerów i rejestracji nowych.
Jak dotąd nie wykryto żadnego wzoru
wg którego wybierane byłyby nowe
serwery, a sam proces wydaje się
być realizowany automatycznie, co
jest nie lada osiągnięciem i nowością,
jeśli chodzi o zabezpieczenia przed
unieszkodliwieniem. Jak dotąd botnet
ten jest wykorzystywany przeważnie
do rozsyłania spamu, lecz biorąc pod
uwagę jego rozmiar, ma on olbrzymie
możliwości - nic więc dziwnego, że jego
twórcy tak dobrze zabezpieczyli się przed
jego przechwyceniem. Rozpoczęcie
usuwania robaka wymagałoby usunięcia
klucza rejestru, zrestartowanie systemu
i usunięcie pliku DLL. Wszystkie te kroki
mogą być jednak utrudnione przez

najnowszą wersję Confickera, która
umożliwia pobieranie i wykonywanie
dowolnych plików binarnych. Metodą
ochrony przed ewentualnymi atakami
może być tylko wyspecjalizowany
sprzęt sieciowy zdolny do wykrywania i
szybkiego reagowania na zalewy ruchu.

Podsumowanie

Conficker nie jest niezwykły, jeśli chodzi
o mechanizm rozprzestrzeniania się.
Jego gigantyczny rozrost wynika głównie
nie z zaawansowanych technik, lecz
z beztroski, z jaką podchodzimy do
aplikowania łatek bezpieczeństwa.
Obecnie rozmiar Confickera szacuje
się na 10 000 000 maszyn (F-Secure),
czyli ponad 100 razy więcej niż
Storm. Zakładając optymistycznie, że
każda z tych maszyn dysponuje tylko
modemem 56k, dochodzimy do wniosku,
że Conficker byłby prawdopodobnie
w stanie odciąć kompletnie dostęp
do Internetu w Kanadzie i Francji
jednocześnie! Gdyby stosować się
do zasad profilaktyki, cały problem
prawdopodobnie nigdy by się nie
pojawił, lecz teraz jest już za późno.
Microsoft zaoferował 250 tysięcy
dolarów za informację, która doprowadzi
do ujęcia kontrolerów i/lub twórców
botnetu. Tymczasem sam Conficker
zaczął stabilizować swój rozmiar, a
jego twórcy najprawdopodobniej są
gotowi pławić się w dużo większych
pieniądzach otrzymanych po użyczaniu
swojego tworu. Tym samym zapowiada
się nadejście ery botnetów, w której
przestępcy dysponują większą
mocą obliczeniowo-przesyłową niż
naukowcy. Jedyna dobra nowina to
ta, że każdy botnet z czasem osiąga
swój maksymalny rozmiar, a więc i dni
Confickera są policzone, prędzej czy
później każdy przesiada się bowiem na
nowy sprzęt, lub też instaluje system
na nowo. Pozostaje tylko aplikować
narzędzia usuwające [2] i liczyć na to,
że kontrolerzy nie zdecydują się nigdy
skorzystać z pełnych możliwości swojego
tworu.

Źródła

http://www.secureworks.com/research/threats/topbotnets/?threat=topbotnets,

http://www.theregister.co.uk/2009/01/26/conficker_botnet/.

W Sieci

• [1] http://vrt-sourcefire.blogspot.com/2009/02/making-conficker-cough-up-goods.html – udany

częściowy wgląd w kod robaka,

http://mtc.sri.com/Conficker/ – bardzo dokładna analiza Confickera,
http://www.cyber-ta.org/pubs/StormWorm/report/ – bardzo dokładna analiza Storma,
http://www.honeynet.org/papers/bots/ – projekt Honeynet zajmujący się śledzeniem

aktywności botnetów,

http://www.microsoft.com/technet/security/Bulletin/MS08-067.mspx – biuletyn informacyjny

Microsoftu z informacjami odnośnie luki pozwalającej rozprzestrzeniać się Confickerowi.

Piotr Jastak

Autor jest entuzjastą tematyki komputerowej. Interesuje

się bezpieczeństwem, administrowaniem systemami i

sieciami.

Kontakt z autorem: adh0c@gazeta.pl


Wyszukiwarka

Podobne podstrony:
2009 07 08 FreeBSD – chwila dla admina, cz 1 [Poczatkujacy]
2009 07 08 Bezpieczne gry komputerowe
2009 07 08 Clickjacking – groźny link
2009 07 08 Bezpieczna platforma multimedialna
2009 07 08 Projektowanie interfejsów użytecznych
2009 07 08 Tak robią to prawdziwi hakerzy cz 2
nu 07 08 2009 (2)
2011 08 05 Ojca Leona słów kilka celibat
Budujemy Dom nr 07,08 2009 spis treści
Szczegoly operacji 2009 09 08 23 07 47
ankieta 07 08
2009 04 08 POZ 06id 26791 ppt
ei 2005 07 08 s085 id 154185 Nieznany
fiszki 01 07 i 08
chemia lato 12 07 08 id 112433 Nieznany
07 08 PAME O przekroczeniu progu
18 1 [dzień 9] Słów kilka o modlitwie do Architekta Puzzli
O zakładzie Pascala słów kilka esej

więcej podobnych podstron