[Reverse] Analyse du malware distribué par la Supply-chain attack sur JDownloader

Le site de JDownloader a été compromis début mai 2026 (signalé le 7 mai 2026 à 17h06 sur Reddit) et a distribué une version modifiée des installeurs Windows et Linux de JDownloader (https://www.bleepingcomputer.com/news/security/jdownloader-site-hacked-to-replace-installers-with-python-rat-malware/), une Supply-Chain attack. Ce type d’attaque par compromission de la chaîne d’approvisionnement est particulièrement redoutable, car il détourne la légitimité du site officiel pour infecter des utilisateurs ne se doutant de rien.

Les versions compromises de l’installeur de JDownloader contiennent un loader (stage 2) qui exécute un RAT python (stage 3) après avoir désactivé les antivirus de la machine infectée.

Résumé de l’attaque

Nous proposons ici une analyse de ce malware (md5: d3b398a757b424f91e645985ade00516) à partir des résultats de notre moteur d’analyse Gorille. Gorille va permettre de vérifier l’intégrité des installeurs de JDownloader en comparant les fonctionnalités avec des fonctionnalités préalablement identifiées comme malveillantes.

Identification de la fonction malveillante avec Gorille

Vue principale de l’analyse Gorille

L’installeur est détecté par Gorille comme partageant du code commun avec plusieurs malware différents. Il a bien identifié une modification malveillante de l’installeur de JDownloader. https://demo.gorille.tech/file/detail/6a0483aafa6bd8c8ea7e71a4?publicToken=EDzRHRCguQnhVVUeB6b5ECJ_uqlVTGJjZYbWZLfAxOQ

Description des similarités de l’analyse Gorille

Affichage des adresses de similarité Gorille – aide au reverse

L’analyse Gorille permet d’aller plus loin en ciblant la fonctionnalité problématique dans le code de l’installeur JDownloader compromis. Pour cela il suffit de lister les adresses identifiées comme du code malveillant. Ces Adresses du code de l’installeur JDownloader compromis ciblent une zone bien spécifique de l’installeur : la fonction sub_1400019e0.

Fonction malveillante dans l’installeur JDownloader 

Cette fonction effectue notamment un PEB walk afin de masquer des appels API — comportement très suspect, commun à de nombreux malwares — que Gorille est capable de détecter. Masquer les appels API permet aux malwares de cacher leur comportement face à des analyses statiques.

Gorille nous a mis sur la voie pour débuter l’analyse

L’explicabilité des résultats de Gorille permet de récupérer les endroit exacts qu’il considère comme suspect, cela permet de lié la fonction à des fonctions peut être déjà analysée par des équipes de reverse. Ici nous avons tout de suite identifié la fonction d’API hashing par similarité avec d’autres malware utilisant le meme type de fonctionnalité.

Il s’agit maintenant de creuser de façon plus manuelle l’analyse de cette fonction.

Analyse approfondie de la fonction malveillante

Dans cette fonction sub_1400019e0, on distingue des appels maqués à des API, notamment WriteFile et ShellExecute. On repère également une boucle de déchiffrement : un xor qui déchiffre deux fichiers avec la clé ectb (adresse du XOR 0x140001fc5) :

  • Un fichier “BIN1”, fichier légitime qui lance l’installeur légitime de JDownloader
  • Un fichier “BIN2”, le loader stage 2 qui est déposé dans Temp. Ce loader désactive plusieurs antivirus et lance le RAT python.

Boucle de déchiffrement du Loader stage 2

Écriture du fichier temporaire contenant le Loader stage 2

Exécution du Loader stage 2

Une fois exécuté, les strings qui correspondent aux registres et à au lancement du script python sont déchiffrés à la volée avec la clé : fywo`

Strings chiffrées dans le code du Loader stage 2

Une fois déchiffrée, nous distinguons les strings suivantes :

sub_140003320
Registry Manipulation, Deactivate Real-Time protection, ... 
        SOFTWARE\Policies\Microsoft\Windows Defender 
        DisableAntiSpyware 
        SOFTWARE\Policies\Microsoft\Windows Defender\Real-Time Protection 
        DisableRealtimeMonitoring 
        SOFTWARE\Policies\Microsoft\Windows Defender Security Center\Account protection 
        SOFTWARE\Policies\Microsoft\Windows Defender Security Center\App and Browser protection 
        SOFTWARE\Policies\Microsoft\Windows Defender Security Center\Device performance and health 
        SOFTWARE\Policies\Microsoft\Windows Defender Security Center\Family options 
        SOFTWARE\Policies\Microsoft\Windows Defender Security Center\Firewall and Network protection 
        SOFTWARE\Policies\Microsoft\Windows Defender Security Center\Virus and threat protection 
        \Policies\Microsoft\Windows\WindowsUpdate
 

Le loader stage 2 installe son interpréteur maison “pythonw.exe”, et installe les différentes librairies pour le script Python malveillant, notamment cryptography et request qui serviront à contacter les C2.

Le loader exécute le script python malveillant packé par PyArmor :

unk_14002eff0 (Installation RunTime)         
        \pythonw.exe -m pip install --timeout 30 --retries 99999 -U pywin32 cryptography msvc-runtime gevent requests requests[socks]
        
sub_14000ADD0 runPython: 
        PYTHON314_INSTALLER 
        /quiet Include_tcltk=0 Include_test=0 Include_doc=0 Shortcuts=0 AppendPath=1 
        C:\Program Files\Python314 
        BIN1 
        BIN2 
        BIN3 
        \Lib\runtime.py 
        \Lib\pyarmor_runtime_000000 
        \Lib\pyarmor_runtime_000000\__init__.py 
        \Lib\pyarmor_runtime_000000\pyarmor_runtime.pyd 
        pythonw.exe 
        HKCU\SOFTWARE\Python

Bilan sur l’utilisation de Gorille pour détecter des attaques sur la Supply-chain

Gorille est un outil efficace dans ce contexte d’attaque sur la Supply-chain, il permet comme ici d’identifier immédiatement la compromission sur JDownloader. Mais il permet aussi d’aller plus loin pour accélérer l’analyse de la compromission, qui elle est une étape indispensable pour connaitre l’impact réel de l’attaque sur les systèmes qui ont téléchargés la version compromise de JDownloader.

IOCs

d3b398a757b424f91e645985ade00516Installeur compromis de JDownloader (Windows version)
0721d27c2530ee11b92ed67d8aae29beLoader stage 2 (BIN2)
parkspringshotel[.]com/m/Lu6aeloo.php auraguest[.]lk/m/douV2quu.php 172.96.172.91 209.133.215.178C2 servers
eb8efd7edf031bcebca058569960ff0dClé AES-GCM obtenue à partir de pyarmor_runtime.pyd
fywoXor key stage 2 to decrypt loader code
ectbXor Key stage 1 to decrypt loader

References

Analyse Gorille du programme d’installation corrompu de JDownloader :

Article à propos de cette attaque :

Personnes ayant également partagé leur analyse de ce logiciel malveillant au moment où nous avons terminé la rédaction de cet article :

Extraction de la clé PyArmor :