10:30
23/7/2010

Jak nie tworzyć botnetu

Bycie moderatorem na hakierskim forum ma parę zalet. Jedną z nich jest dostęp do usuniętych tematów zawierających m.in. “złe” malware. Od czasu do czasu znajdzie się ktoś, kto wrzuci ‘super-hiper trojana/keyloggera’ zainfekowanego własnym syfem. Zazwyczaj są to gotowe programy, do tego koszmarnie skonfigurowane (logi wysyłane są z normalnego e-maila – login i hasło są w pliku), ale czasem zdarzy się, że ktoś poświęci chwilę i napisze coś swojego. Tak było i tym razem.

Autorem tego wpisu jest Michał Włodarczyk.

Żeby nie było żadnych nieporozumień — ten program nie jest specjalnie wybitny, nie ma szczególnych zabezpieczeń — ot po prostu jest. Znajduje się pod tym adresem, spakowany, czeka aż ktoś go pobierze i odpali. Napisany z użyciem .NET’a — kompletnie nie mogę zrozumieć, czemu ktoś pisze malware, które wymaga pobrania 70MB środowiska, aby je odpalić… No ale OK, pobieram program, odpalam (na wirtualnej maszynie — tak na wszelki wypadek) i widzę, że łączy się na porcie 6667. Czyli prawdopodobnie korzysta z IRC’a.

Jeden z kanałów IRC służący do handlu skradzionymi numerami kart kredytowych, kont pocztowych, itp, itd. (fot. niebezpiecznik.pl)

Bez żadnego zastanowienia włączyłem mIRC-a i wszedłem na kanał — prawie 90 maszyn. Lekko się zdenerwowałem, to kilka razy więcej ludzi niż miesięcznie odwiedza mojego bloga :-( No i do tego żaden AV go nie wykrywa.

Analize malware’u

Pora wziąć się do roboty (której za dużo nie będzie):
Dis# .NET decompiler wygląda nieźle, w wersji trial nie pokazuje całości kodu, ale powinien wystarczyć. Po chwili przeglądania kodu można znaleźć dwie interesujące funkcje:

oraz tą (a właściwie tylko część):

Pomijam całą resztę bo program za wiele nie robi — dodaje się do rejestru, kopiuje plik, podłącza do serwera, wchodzi na kanał i czeka na komendy. Adres serwera, nazwa kanału i hasło są co prawda zaszyfrowane 3DES’em ale nie ma potrzeby ich odszyfrowywać — wystarczy włączyć sniffer i wszystko wyłapać. W obecnej chwili dane te i tak nie zadziałają — autor zmienił hasło do kanału (co oznacza, że wszyscy zainfekowani do tej pory nie będą służyli za zombie — nie ma żadnego systemu aktualizacji/pobierania nowych danych).

Wracając do kodu – pierwsza funkcja służy do floodowania wybranego hosta pakietami UDP, za argumenty przyjmuje adres IP (w postaci numeru), port i czas, przez jaki ma trwać flood.

Co do drugiego fragmentu: w zmiennej s1 znajdują się pakiety odebrane z serwera. Właśnie uświadomiłem sobie, co robi pierwszy if (który na szczęście nie jest do niczego niezbędny) — sprawdza, czy na kanał nie weszła osoba z nickiem takim samym, jak jego nazwa i w razie potrzeby wita ją.

Drugi warunek jest ciekawszy, ponieważ odpowiada za praktycznie jedyną funkcję programu — DDoS. Na początek sprawdza, czy w pakiecie nie ma ciągu “UDP” (nie tylko w treści wiadomości — wejście na kanał z odpowiednim nickiem prawdopodobnie wywali wszystkie boty które nie mają żadnej walidacji danych). Dalej jest wyciąganie nicka osoby która wysłała wiadomość, wysyłanie do niej notice, przerwa (nie wiem po co) i kluczowa sprawa — dzielenie wiadomości i przekazywanie odpowiednich parametrów do funkcji floodującej. Pakiet jest rozbijany w miejscu, w którym występuje spacja i jego kolejne części są używane. Cały pakiet wygląda tak:

:nick!username@host PRIVMSG #channel :tresc

Po podzieleniu treść ląduje w sArr1[3] i jeśli zawiera spacje to kolejne wyrazy są kolejnymi elementami w tablicy. [4] nie jest nigdzie przekazywana, więc można wstawić dowolną treść, [5] ma być adresem IP (dla 127.0.0.1 trzeba przekazać np. 2130706433), [6] portem a [7] długością flooda w sekundach.

Autodestrukcja botnetu :-)

Po zebraniu wszystkiego do kupy okazuje się, że wystarczy wysłać na kanale wiadomość o treści “UDP lol 2130706433 80 3600” żeby przez godzinę wszystkie boty obecne na kanale próbowały same się wykończyć.

W międzyczasie pisał do mnie autor tego “cuda” — tak to jest, jak się wchodzi na kanał bez zmiany nicka. Stwierdził, że jeśli tylko ja o tym wiem to jest spoko, jak ktoś jeszcze się dowie to będzie musiał wszystko wyłączyć (podejrzewam, że stąd właśnie zmienione hasło). I to właśnie jeden z powodów, dla których w ogóle powstał ten wpis :>

Chcesz umieścić swój tekst na Niebezpieczniku? Daj nam znać.

Przeczytaj także:

26 komentarzy

Dodaj komentarz
  1. Cóż poradzić, życie autora malware’u nie jest łatwe – chłopak chciał sobie tylko mały botnecik postawić, a “zue h4xx0ry” zrobiły “wjazd na program”. ;]

  2. Epic Fail

  3. autor pewnie zakładał, ze większość maszyn ma zainstalowany .net fw ;)
    btw – reflector jest za darmo i znacznie ciekawszy do podglądania kodu .net

  4. oj, mogłeś na kanał wejść z nickiem podobnym do nicków botów… :P (tia, zawsze trzeba się do czegoś doczepić, jak reszta ‘roboty’ jest idealna xD)

  5. Piękny wpisik, sarkazm & ironia jak zawsze na wysokim poziomie :D

  6. Nono…Poradzili sobie przy ataku DDoS i znów proszą się kułaka :D

  7. Bardzo ładny wpis, zwłaszcza dla takich noobków jak ja, co trzeba im wszystko krok po kroku wyjaśnić :) Dobra robota, oby więcej takich wpisów.

  8. Czyli znowu mamy spodziewać się zniknięcia niebezpiecznika z sieci na kilka dni?:P

  9. czy przypadkiem w tle scru z irc nie widac panelu administracyjengo, podczas pisania newsa ? :P

  10. @makak

    hehe jak wszystkim z drugiej strony internetu podpadają jest to wysoce prawdopodobne :D

  11. Do komentujacych powyżej:
    dobrze ze niebezpiecznik porusza te tematy i nie sra po gaciach jak reszta pożal się Boże sewisow informacyjnych z branży bezpieczeństwa w Polsce, które jedyne co potrafią wrzucić do siebie to kretynskie informacje prasowe, robiąc copypaste z worda od agencji reklamowej, albo niesamowicie wręcz interesujące raporty typu ile pendrivow sprzedało się w ostatnim kwartale…

    Niebezpieczniki, wiecej takich postów, a ddoserow od razu na policję (wiem ze macie na nich namiary ; zcwela ich w areszcie to się oducza gowniarstwa)

  12. Najpowazniejszym bledem autora tego botnetu jest to, ze uzyl IRC ktory traci plain textem jak kurczaki w tesco ludwikiem, ale jak chcial szybko to ma… no i mniej nakladow pracy…
    Takie botnety jak ten to rzadzily DAWNO temu, nie powiem, ubaw, dreszcz emocji, pewien krok w branzy zlego IT, no i gowniarstwo, mam nadzieje ze sie z tego szybko wyrasta w wielu przypadkach. Gdyby gosc poczytal was, oraz pare linkow przegladnal, poznal by budowe chociazby ideowa, botnetu made in china (jego analiza byla tu linknieta pod postacia PDFa) to dopiero cwana i zmyslna robota…

  13. @dumar tak! Widziałeś kawałek PA z wordpress.

    (Screeny rób cmd+shift+4, spacja i klik na okno)

  14. “prawie 90 maszyn. Lekko się zdenerwowałem, to kilka razy więcej ludzi niż miesięcznie odwiedza mojego bloga”
    Coś się nie chce wierzyć że tak mało ;)

    • @gogolian: zauważyłeś, że artykuł jest gościnnym wpisem hxv, który odnosi się w zacytowanym przez Ciebie zdaniu do swojego bloga, a nei Niebezpiecznika? ;-) Jeśli chodzi o nasze statystyki to obecnie mamy ponad pół miliona odwiedzin miesięcznie.

  15. W sumie co do tych 90 sztuk, to spamowac trzeba inaczej :) swoja droga spoko koles, mysle ze zrobi to teraz inaczej, ulepszy poszpera poduczy sie. zeby spamowac trzeba spreparowanej www, buga co uruchomi bezwiednie execa i wyswietlia golego lachona tak zeby user czul sie zaspokojony “kontentem” o ile pamietam w IE6 bylo cos takiego…. raj. http://cos.pl/~misio/lachon.jpg#sprytnybot.exe

    tylko nie mowcie ktory to byl rok, wole nie wiedziec :P

    w sumie to zle i niedobre, ale przyznajcie sie kolekcjonowanie zombie cieszy jak kolekcjonowanie znajomych na NK, to samo ale inaczej :P

  16. To, ze tak wielu amatorow ma mozliwosc tworzenia botnetow jest przede wszystkim wynikiem skrajnej nieswiadomosci uzytkownikow systemow operacyjnych, a nie nadzwyczajnych umiejetnosci kogokolwiek.

  17. “No i do tego żaden AV go nie wykrywa.”
    Wykrywa, wykrywa… chociażby Norton.

  18. Pisanie malwaru w .not(z filmu java4ever) ma o tyle sens(trochę), że nikt się go tam nie spodziewa.

    Mam dziwne wrażenie(nie wiem), że ów człowiek się tylko uczył co i jak, i atakował siebie czy kolegów.
    Jak się nauczysz od strony BH to będziesz lepszym WH bo będziesz wiedział dokładnie z czym to się je.

  19. @Heinrich uzytkownicy sa z reguly “lekkomyslni” po to sa admini zeby opieprzac wymuszac i straszyc, co do goscia, uczyl sie i jak zawsze indywidualnie, dla kazdego pierwsze k roki sa zwykle nadzwyczajne, dalej to juz chec poznania i apetyt oraz rozped…

    @zzz1986@o2.pl to fakt, zreszta wiele zalezy od mentalnosci w Indiach i Chinach jest inny swiat takze tyczy sie to rozwiazan IT, czesto spotykam sie z zupelnie dziwnymi rozwiazaniami chinskich kolegow, na ktore zaden polak przy zdrowej glowie nie wpadnie. Byle do przodu i jak dziala to sukces :D

  20. @Dyzio – teraz może i tak, w momencie pisania tekstu na VirusTotal wykrywalność wynosiła 0/41.

  21. Napisałem kiedyś “wirusa” w dev-c++ – skompilowałem -> novirusthanks.org -> 4 wykryte -> miscrosoft visual c++ 2008 -> kompiluje -> skan -> 0 wykrytych…
    No widzicie…;)

  22. Tak jest z tą wykrywalnością,jak ktoś przeskanował na virustotal to przeważnie na następny dzień już jest wykrywalny :)

  23. “Chaker” botnetowy pisał w .necie bo pewnie dotnet mu się kojarzył z botnetem :)

  24. wow .. jakby napisal cos genialnego pies z kulawa noga by nie spojrzał bo kto by sie zainteresował czyli “popularnosc budowana inaczej”!

    .. co za czasy :) tak sie zastanawiam czy to nowy kanon czy smiecie pływajace po powierzchni?

  25. Pobrałem sprawdziłem pod podanym linkiem jest jakiś hmm… botgenerator do jakiejś gry z tego co zauważyłem to ani wygenerowany bot ani “generator” nie komunikują się z IRCem natomiast z pewnością wysyłają na maila podanego podczas generacji ID i Hasło :P z tego co udało mi się jeszcze poszperać snifferem to program korzysta z INDY 9 :) autor poszedł na łatwiznę… swoją drogą autor nie pomyślał bo mógł “za symulować” działanie bota i w tym czasie pobrać backdoora, ukryć go jakoś w systemie i dodać wpis do rejestru a potem wywalić piękny błąd, że nie udało się nawiązać połączenia z serwerem :D i żeby user się wypchał… zły wywala program, a niespodzianka zostaje :)

Twój komentarz

Zamieszczając komentarz akceptujesz regulamin dodawania komentarzy. Przez moderację nie przejdą: wycieczki osobiste, komentarze nie na temat, wulgaryzmy.