Javascript, html en CSS handigheidjes

Obfuscated Javascript ontrafelen.

Door eghie op zaterdag 22 januari 2011 14:14 - Reacties (6)
Categorie: Clientside web, Views: 4.892

Het wil nog wel eens gebeuren dat er wormen, via Javascript PC's infecteren. Nu kom ik als hosting server beheerder (1 van mijn taken) wel eens websites op onze server tegen die obfuscated javascript code bevatten waarin een exploit wordt misbruikt, die via een worm of via een cracker op de websites wordt gezet.

Als ik die obfuscated code tegen kom, wil ik ook kunnen zien wat die code doet en kijken of het uberhaubt kwaadaardig is, voordat ik het verwijder. Nu zijn daar wel goede mogelijkheden voor om dat te ontrafelen.
1. Installeer spidermonkey
Eerst moeten we spidermonkey installeren. Dit is een javascript engine, die je javascript kan uitvoeren en de output op de CLI kan weergeven.

Op Ubuntu/Debian kun je het volgende commando gebruiken om het te installeren:
aptitude install spidermonkey-bin
2. Maak een bootstrap aan
Nu moeten we een bootstrap aanmaken, die functies bevat die hoogstwaarschijnlijk door het te debuggen script wordt gebruikt. Dit zijn functies die door de browsers worden geimplementeerd. Meestal zijn een paar basic functies wel genoeg om een heel eind te komen.

Inhoud van de basis bootstrap.js:

JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
replace_script = function(arg0) {
    re = new RegExp(/<\/?script[^>]*>/gi);

    return arg0.replace(re, '');
}

old_eval = eval;
eval = function(arg0) {
    print("eval arg: " + arg0);

    try {
        old_eval(replace_script(arg0));
    } catch (err) {}
}

document = {
    write: function(arg0) {
        eval(arg0);
        print(replace_script(arg0));
    },
    writeln: function(arg0) {
        eval(arg0);
        print(arg0 + "\n");
    }
}



Je ziet dat de code niet helemaal klopt. Ik heb dit in de praktijk een aantal keer op deze manier gebruikt en gaf me wel de meeste info om de gede-obfuscate code te snappen. Vandaar dat ik het op deze manier gebruik. Je kunt deze file met extra functies uitbereiden bij uitgebreidere obfuscated code.
3. stop de obfuscated code in obfuscated.js
Stop de code die je wilt deobfuscaten in obfuscated.js. Zodat je die aan spidermonkey kunt voeren.
4. Begin het debuggen met spidermonkey
Om spidermonkey te starten, open de CLI/terminal. En gebruik het volgende commando:
js -f bootstrap.js obfuscated.js


Die output wordt op het scherm weergegeven. Nu kun je aanpassingen maken aan bootstrap.js om de informatie uit te bereiden. Maar je hebt nu een goede basis draaien om veel van die code te ontrafelen.
Andere opties
Je hebt ook een website die je kan helpen. Zie http://jsunpack.jeek.org/dec/go Daar kun je ook obfuscated code in stoppen en geeft je ook debug info om te kijken of de code potentieel kwaadaardig is.


Ik als server beheerder wil eigenlijk wel een soort van detectie systeem aan de linux kant die alle virtual hosting mappen naloopt die scant naar obfuscated javascript code, zodat ik kan controleren of het ook daadwerkelijk schade kan en zo ja het kan verwijderen, iemand een idee hoe dat op te lossen?