JavaScript-obfuscatie is uitgegroeid van een technische curiositeit tot een veelgebruikte methode binnen phishingkits en malware. In plaats van direct leesbare code bevatten deze scripts vaak stringarrays, cryptische functienamen, gecodeerde URL's, runtime-decoders en eval-statements. Hierdoor stopt het analyseren van de broncode vaak bij het eerste zichtbare niveau, omdat de werkelijke functionaliteit pas tijdens uitvoering duidelijk wordt.

Obfuscatie verwijdert nuttige context, verbergt strings en verstoort herkenbare namen, waardoor het lastig is om de intentie van de code te achterhalen. Dit fenomeen komt voor in phishingpagina's, malwareloaders, verdachte browser-scripts en soms ook in legitieme softwarebescherming die verdacht oogt. Onderzoekers besteden veel tijd aan het ontleden van dergelijke JavaScript-code uit phishingkits, malwarepakketten en gehackte websites, waarbij ze technieken toepassen om de verborgen functionaliteit bloot te leggen.

Bij het analyseren van verdachte JavaScript is het cruciaal om uit te gaan van een vijandige sample. Werk altijd op een kopie, bewaar het origineel en voer nooit onbekende scripts uit op een standaardmachine of in een profiel met gevoelige gegevens zoals credentials, clipboard, SSH-agents of cloudtoegang. Ook AI-tools kunnen nuttig zijn bij het analyseren van gedecodeerde fragmenten, maar zij vormen geen veilige sandbox en mogen niet gebruikt worden met gevoelige of vijandige data.

Obfuscatie omvat verschillende technieken. Minificatie verkleint code door namen te verkorten en witruimtes te verwijderen, terwijl packing code comprimeert of encodeert en deze pas tijdens runtime herbouwt. Encoding verbergt strings totdat ze worden gedecodeerd, en encryptie doet dit met een sleutel. Anti-analyse probeert de onderzoeker en tools te misleiden of te hinderen. Hoewel niet alle obfuscatie kwaadaardig is, kan het een aanwijzing zijn voor nader onderzoek. Legitieme toepassingen zijn onder meer prestatieoptimalisatie, intellectueel eigendom en anti-tampermaatregelen. Verdachte toepassingen zijn onder andere het verbergen van phishingexfiltratie, malwareloaders, misbruik van browserextensies, npm-installatiescripts, geïnjecteerde code op gehackte sites en nep-CAPTCHA's.

Het simpelweg opmaken of 'beautifyen' van code, bijvoorbeeld met tools als Biome of Prettier, verbetert de leesbaarheid door inspringingen en regelafbrekingen te herstellen. Dit is een nuttige eerste stap, maar het herstelt geen oorspronkelijke variabelenamen, decodeert geen runtime-strings en zet geen complexe controlelogica terug naar begrijpelijke code. Minificatie en packing maken het analyseren extra lastig doordat namen worden vervangen door korte tekens en code pas tijdens uitvoering wordt opgebouwd, bijvoorbeeld via eval().