Cap'Chat
research/writeups/writeup_001
← retour au bureau
Malware Analysis · Writeup #001

Analyse dropper
FACTURA.JS

Un fichier qui s'appelle FACTURA.rar, dans une boîte mail professionnelle. Dedans, un JavaScript de 3.76 MB déguisé en facture, qui droppe un exécutable en douce. 6 détections sur 70 sur VirusTotal. On a décidé de regarder ce qu'il y avait dedans.

Confirmed Threat JS Dropper Obfuscated Anti-Debug Packed Phishing Bitdefender ✓ Writeup #001
01_resume.sh
×
Résumé
sakina@capchat:~$ file-analyze FACTURA.JS --deep
filename FACTURA.JS (livré dans une fausse archive .rar)
type text/javascript, encodage Unicode UTF-8, CRLF
size 3.76 MB
entropy 6.3 / 8.0, ce qui trahit un contenu hautement obfusqué
sha256 0cafadc02a99c7a02224e48cd79ac46fdc44344fea60044897942e6d621f0ad1
verdict CONFIRMED THREAT
vt score 6 / 70
blocked Bitdefender GravityZone ✓

Le fichier s'appelle FACTURA.rar, mais c'est du JS. Le JS s'appelle FACTURA.JS, mais ça ressemble à une facture. Double masquerade : on imite une archive légitime, on imite un document financier. Le truc qui devrait faire tilt, c'est que personne n'a commandé cette "facture".

Évasion AV : 6/70 sur VirusTotal, le sample a probablement été testé par les attaquants avant envoi. Pas de chance pour eux, Bitdefender GravityZone l'a quand même bloqué.
02_infection_chain.sh
×
Chaîne d'infection
📧 Email phishing
FACTURA.rar
fausse archive
FACTURA.JS
JS déguisé
SWOSCDKBXQLKEJUG.exe
droppé
+
SWOSCDKBXQLKEJUG.ttf
droppé
http://luajit.org/
contact réseau

Objets COM Windows détournés

// objets instanciés, ce qui permet d'éviter les appels système suspects
ActiveXObject("WScript.Shell") // exécution de commandes
ActiveXObject("ADODB.Stream") // écriture fichiers sur disque
ActiveXObject("Scripting.FileSystemObject") // navigation FS
ActiveXObject("Microsoft.XMLDOM") // parsing données
 
// fonctions d'obfuscation pendant l'émulation
js:_0x1013 → 51 038 appels
js:SWOSCDKBXQLKEJUGQQ → 26 501 appels

Caractéristiques de l'EXE droppé (PE32)

VirtualAlloc + VirtualProtect pour une allocation mémoire exécutable, avec unpacking en mémoire
DEP désactivé, car IMAGE_DLLCHARACTERISTICS_NX_COMPAT est absent, ce qui permet l'exécution de données comme du code
TLS callbacks : deux entrypoints (0x45ee00, 0x45ee50) s'exécutent avant le main, une technique anti-debug classique
Timestomping avec un timestamp PE header daté du 08/05/2031 (futur), pour tromper l'analyse forensique
Dynamic API resolution via GetProcAddress + LoadLibraryA, pour masquer les imports à l'analyse statique
CreateThread, qui crée des threads en parallèle pour le déploiement du payload
10 sections PE + .bss vide, une structure inhabituelle et indicateur de packing
03_mitre_attck.sh
×
MITRE ATT&CK Mapping
Initial AccessT1566 : PhishingLivraison du dropper via pièce jointe email
Defense EvasionT1036 : MasqueradingDouble masquerade : fausse archive RAR + filename FACTURA imitant une facture
Defense EvasionT1027 : ObfuscationJS obfusqué, 51k+ appels à la fonction de déobfuscation, strings haute entropie
Defense EvasionT1055 : PackingVirtualAlloc/VirtualProtect, pour un unpacking dynamique en mémoire
Defense EvasionT1070.006 : TimestompTimestamp PE falsifié (2031) pour contrer l'analyse forensique
Defense EvasionT1140 : DeobfuscationStrings chiffrées déchiffrées dynamiquement à l'exécution
ExecutionT1059.007 : JavaScriptExécution via Windows Script Host (wscript.exe)
C2T1001 : Data ObfuscationCommunications C2 masquées, avec un contact vers luajit.org
04_iocs.sh
×
Indicators of Compromise
ℹ Note : Les IOCs réseau sont listés à des fins de détection uniquement. Aucun verdict de compromission n'est émis sur luajit.org dans ce writeup.

Fichiers

TypeValeur
ConteneurFACTURA.rar, une fausse archive (contenu JS)
Payload JSFACTURA.JS
SHA-2560cafadc02a99c7a02224e48cd79ac46fdc44344fea60044897942e6d621f0ad1
MD55a702be98a5b6e5c0235fee478d61b90
MD57675b38aabebc8427171447edd484b5b
SHA-1145c72f8acdcd366869f955dffd000d3bc146b6e
SHA-1ce36a5844f916c7f198b7ea15aee09be5c5e4e5f
Dropped EXE%USERPROFILE%\Libraries\SWOSCDKBXQLKEJUG.exe (499 KB, PE32)
Dropped TTFC:\Users\Public\Libraries\SWOSCDKBXQLKEJUG.ttf

Réseau

TypeValeur
URLhttp://luajit.org/
Domainluajit.org · bitop.luajit.org · coco.luajit.org
IP163.172.177.144, hébergé chez OVH à Paris, France
05_detection.sh
×
Détection & Scoring
VirusTotal
6 / 70
Filescan.io
Confirmed
Bitdefender GZ
Bloqué ✓
⚠ 6/70 VT : Score faible ≠ sample bénin. Sur un fichier de 3.76 MB fortement obfusqué, c'est la signature d'une attaque préparée, les attaquants ayant testé et optimisé l'évasion avant envoi.
06_timeline.sh
×
Chronologie
RÉCEPTION
Réception de FACTURA.rar en pièce jointe

FACTURA.rar en pièce jointe, avec une double masquerade RAR et facture.

EXÉCUTION
Tentative d'exécution du dropper

WSH invoque le JS → tentative de drop de l'EXE et du TTF.

BLOCAGE
Bitdefender GravityZone, blocage instantané

EDR intercepte la menace avant exécution. Aucune persistance établie.

ANALYSE
Analyse statique + sandbox

VirusTotal (6/70), Filescan.io (Confirmed), MITRE ATT&CK, extraction IOCs.

SIGNALEMENT
Responsible disclosure auprès de luajit.org

Signalement envoyé aux mainteneurs du projet. En attente de réponse.

07_remediation.sh
×
Recommandations défensives

Détection & Blocage

Bloquer les IOCs réseau (IP + domaines). Ajouter les hashes à la liste noire EDR. Restreindre wscript.exe et cscript.exe pour les utilisateurs standards via GPO.

Investigation post-incident

Vérifier la présence de SWOSCDKBXQLKEJUG.exe et du TTF sur le poste. Auditer les connexions vers 163.172.177.144. Analyser les tâches planifiées pour toute persistance.

Prévention

Former les utilisateurs à ne jamais ouvrir d'archives .rar reçues par email, surtout non sollicitées. Afficher les extensions de fichiers pour repérer le .js une fois l'archive extraite. Règles YARA sur les patterns d'obfuscation détectés.

# règle YARA simplifiée
rule FACTURA_JS_Dropper {
strings:
$s1 = "WScript.Shell"
$s2 = "ADODB.Stream"
$s3 = "Libraries\\"
$s4 = "ActiveXObject"
condition:
filesize > 2MB and 3 of ($s*)
}