Close
  • Français
  • English

22/01/2016De Frutas à Alienspy, analyse d’une famille de RAT Java [François Paget, Senior Threat Researcher Intel Security – McAfee Labs]

Introduction
A la mi-décembre 2014, je recevais plusieurs fichiers en provenance de l’OCLCTIC (Office Central de Lutte Contre la Criminalité Liée aux Technologies de l’Information et de la Communication :

Capture MD5
Le travail qui était à l’époque demandé consistait à déterminer le type du malware rencontré, et ses éventuelles connexions vers un site distant.
Un rapide examen montrait qu’il s’agissait d’un fichier de type JAVA, appartenant à un outil de prise de main à distance (RAT) du type Unrecom (Universal Remote Control Multi-Platform).
Ce document résume l’analyse faite sur le moment ainsi que les diverses recherches qui suivirent autour des versions antérieures et postérieures à cette famille d’outils. L’étude complète est disponible, sur demande.

Le serveur Unrecom (analyse immédiate)
L’exécution du fichier principal (Microsoft.uYg)  sur une machine de test laisse voir un message indiquant l’utilisation d’Allatori [1] : un obfuscateur de Java développé par la société russe Smardec.

image 1

La récupération de la configuration du RAT s’avérant difficile dans l’immédiat, je passais par un dump mémoire qui révéla les éléments recherchés :

image 2

Le serveur Unrecom (analyse complète)
Microsoft.uYg est un fichier .jar, donc une archive ZIP contenant les définitions des classes et les métadonnées constituant l’ensemble du programme. Le résultat de l’extraction donne une arborescence ressemblant à ceci:

Capture 2

Sous le nom de JarMain, on devine la classe principale. Confirmation est donnée dans le fichier META-INF\MANIFEST.MF (MF = Meta File).

image 3

Le type de RAT, ici Unrecom, est révélé par la présence des fichiers load\ID et load\MANIFEST.MF. Ce second fichier n’est en rien un fichier d’information et de configuration pour la machine virtuelle Java, mais un fichier de 39 Kilo-octets contenant le code du serveur. Ce code est chiffré. ID contient la première partie de la clé de décodage :

image 4

JarMain.class – deobfuscation Allatori
Créé par le compilateur Java, les fichiers de type .class peuvent être généralement désassemblés par des outils tels jd-gui [2]. Ceci n’est pas le cas pour ce fichier qui ne laisse apparaitre aucun code particulier:

image 5

Il est alors nécessaire de se retourner vers des outils plus performants tels que DirtyJOE [3] :

image 6

En seconde ligne de la classe main on retrouve une longue chaine cryptée (obfusquée par Allatori) et passée en argument à la fonction load.JarMain.ALLATORIxDEMOxUnrecomClassLoader
Cette fonction peut être décomposée en 3 parties [4]. La première reconstitue la clé alphanumérique de décryptage par appel des méthodes getStackTrace(), getClassName() et getMethodName().

image 7

La chaine résultante prend la forme <method_name>+<class_name> : le nom de classe (avec son package) de la méthode appelante concaténée avec à son propre nom. Cette clé prend ici la valeur load.JarMainmain.
La seconde partie fabrique les clés numériques de décryptage à partir de l’instruction bytecode de chargement de constantes iconst_x [5].

image 8

Créées à l’aide des fonctions XOR, AND et ISHL, elles sont au nombre de trois ; ici :

• Key_0 = (5 << 3) ^ (2 ^ 5) = 47
• Key_1 = (5 << 4) ^ 3 = 83
• Key_2 = ((3 ^ 5) << 4) ^ ((2 << 2) ^ 3) = 107

En dernier lieu vient la routine de déobfuscation. Le jeu de chargement de la pile fait que seules les deux premières clés sont utilisées. Ceci n’est pas systématique. Dans d’autres exemples des clés d’autres rangs sont utilisées. Il en est de même pour la clé alphanumérique qui est parfois l’inverse de celle repéré dans ce code (la forme étant alors <class_name>+<method_name>).

Le code python suivant restitue la fonction de décodage pour laquelle la clé alphanumérique est entrée sous forme de paramètre (fichier que l’on retrouve plus loin sur des captures d’écran sous le nom d’Allatori_1.py.

capture 3

Repéré dans le fichier jarMain.class, le code crypté est copié dans un fichier dédié (String_1.bin) avant le lancement de la routine python.

image 9

On constate alors que ce code correspond simplement la bannière de l’obfuscator. Il faut donc poursuivre l’analyse du code.
Une fois la bannière déchiffrée (nous sommes de retour dans la méthode main), le programme appelle la méthode init avant de lancer le véritable code devant initialiser le serveur. Ses attributs se retrouvent dans les chaînes de caractères C\kYlR (pour la classe) et o[lS (pour la méthode). Une fois décodées selon le principe décrit précédemment, celles-ci s’avèrent être Inicio et main.

image 10

L’objectif suivant de la méthode init est le déchiffrement du fichier binaire load/MANIFEST.MF qui devrait contenir la classe Inicio. Après diverses initialisations, la routine débute ainsi :

image 11

Une fois décodée, la chaîne ]duI=}Uq@w_`0l+j s’avère être la seconde partie de la clé de décodage.

image 12

On remarquera qu’ici la clé alphanumérique fait référence à la méthode appelante for.
Répertoire load – déchiffrement ARC4
Le fichier MANIFEST.MF est chiffré selon la méthode ARC4 (version non officielle de RC4 – Rivest Cipher 4). Comme indiqué plus haut, ID contient la partie variable de la clé. Pour cette famille de RAT, la seconde est systématiquement égale à DESW7OWKEJRU4P2K.
Des décodeurs permettant de retrouver la configuration sont disponibles sur le Web. Dans le cas présent, j’ai dans un premier temps utilisé unrecom.py de kevthehermit [6] en ayant préalablement pris soin de vérifier la présence, sur ma machine, du module PyCrypto, disponible sous forme de binaires Windows sur le site VoidSpace [7].

image 13

Afin d’obtenir l’intégralité du code contenu dans load/MANIFEST.MF, j’ai créé mon propre programme python en adaptant le code trouvé précédemment :

Capture 4
Notons ici l’usage des arguments wb et rb pour lire et écrire les fichiers en mode binaire (Python 2.7) [ ]. Dans le cas présent, il faut lancer la commande :

image 14

Le fichier jar obtenu (ici, il a été préféré l’extension zip) est enfin lisible. Décompressé, il se présente sous la forme suivante :

Capture 5

Capture 6

On y découvre la classe Inicio dont nous avions précédemment repéré le nom. Le fichier config.xml contient les paramètres du serveur tels qu’ils avaient été capturés en mémoire lors de l’analyse immédiate et ensuite repérés grâce au programme python unrecom.py.

image 15

Plugins
Comme je le détaillerai plus tard, Unrecom et ses congénères font appel à des plugins optionnels. Chacun d’entre eux est généralement constitué de deux fichiers. Le premier est conservé sur le client, le second est dupliqué sur le poste de la victime. Dans l’attaque qui nous intéresse les enquêteurs en avaient repérés six :

Capture 7

De Frutas à AlienSpy
Unrecom se présente comme une évolution des RATs Frutas et Adwind. C’est aussi le précurseur d’AlienSpy.

image 17

Le client Frutas
Le projet Frutas (fruit en français) fut présenté, en janvier 2012, sur le forum indetectables.net, par un individu au pseudo adwind. Il était présent sur ce forum depuis le 16 mars 2011, aimant à signer ses contributions avec :
byte[] buffer=new byte[1024];
Plusieurs versions ont été repérées :

Capture 8

Au tout premier lancement de Frutas s’affiche, pendant une dizaine de secondes, une déclaration de propriété qu’il faut accepter. Vient ensuite la bannière verte.

image 18

image 19

Au fil des versions, les paramètres proposés pour la création du serveur augmentent (à droite la version 0.7 – A gauche, la version 0.9).

image 20image 21

Une fois la prise en main effectuée, le pirate, qui bénéficie d’une géolocalisation par pays de ses victimes, peut:
– Envoyer un message,
– Récupérer des mots de passe (tels que ceux du client FTP FileZilla)
– Ouvrir une URL,
– Envoyer, recevoir et exécuter des fichiers,
– Réaliser des captures d’écran,
– Initier une attaque DoS sur une IP ou une URL particulière,
– Interagir sur le système et les processus (si Windows),
– Stopper, désinstaller le server.

image 22image 23

Avec la version 1.0 privée et payante (ci-dessus à droite), apparait la notion de plugins que je détaillerai plus tard avec les versions Adwind. Une fois installés sur le client, chacun d’entre eux fait l’objet de deux fichiers JAR dont l’un (la partie serveur) doit être dupliqué sur la machine de la victime avant de s’activer à la demande du pirate.

image 24

Les serveurs Frutas – déchiffrement DES
Un serveur créé avec la version Frutas V1.0 est un fichier JAR d’une taille d’environ 82kilo-octets.
Dans cet exemple, le fichier MANIFEST.MF contient aussi la configuration du serveur :

image 25

Certains fichiers de classe qui composent le serveur sont compressés, puis chiffrés. Ils portent alors l’extension .adwind. La clé keyClase est visible dans le fichier MANIFEST.MF (ici hSVuCPep). Cette clé générée lors de la création du serveur, possède de 8 à 30 caractères. Lorsque la classe principale (Principal.class) est chargée, sa valeur est lue puis sauvegardée dans une variable pass.

image 26

Viennent ensuite les appels à la classe ClassLoaderMod. Celle-ci, reçoit la variable pass et, une à une, les chaines de caractères correspondants aux noms des classes à déchiffrer. Les choix dépendent des paramètres choisis lors de la compilation du serveur et reportés dans le fichier MANIFEST. MF

image 27

Dans ClassLoaderMod, le nom de la classe à traiter est associé comme préfixe (is prepended) à l’extension .adwind afin de restituer le nom du fichier qui lui correspond. Le fichier peut alors être déchiffré au travers de la classe constante via la fonction Constante.Constantino(pass, b.toByteArray()).

image 28

A regard de la classe constante, on reconnait un déchiffrement de type DES (Data Encryption Standard).

image 29

Une fois déchiffré (retour dans la classe ClassLoaderMod), le fichier doit encore être décompressé avant de pouvoir être exploitable.

image 30

Le programme python suivant permet de déchiffrer puis décompresser les classes de type .adwind :

Capture 9

Tout comme celui créé pour le déchiffrement RC4, c’est une adaptation du programme unrecom.py de kevthehermit [9].
Le client Adwind et ses plugins
En 2013, Adwind succède à Frutas. Avec ces versions, la notion de plugins est totalement intégrée. Ceux-ci arrivent sous forme d’archives ZIP contenant chacune deux fichiers, l’un destiné au client (le poste de l’attaquant), l’autre au serveur (la victime) :

image 31

Par le biais des plugins des fonctionnalités particulières ciblant les environnements MAC et LINUX sont ajoutées. Exemples :

Capture 10

Capture 11

Pour installer un plugin, il suffit de sélectionner les deux éléments qui le composent puis de valider ses choix. Ces 2 éléments sont alors copiés et renommés : ID.cliente et ID.server afin d’être reconnus comme actifs par le client.

Avec Adwind V3, l’identifiant passe à 3 digits et les plugins sont en version 2. Certains prennent alors en charge les plateformes Android :

Capture 12
Les versions suivantes d’Adwind ont été repérées :

Capture 13

Ces versions, pour certaines proposées à la vente, sont généralement annoncées sur codigo-malicioso.blogspot.fr/ et non sur indetectables.net. Le contact n’est plus Adwind mais un individu joignable à l’adresse fariastreball_at_htmail.com. Cette personne poste aussi des démos sur Youtube [11].

A cette époque, le site de l’auteur est adwind.com.mx/ (Création : 29 mai 2010 – IP supposée : 65.99.225.111) Celui-ci est aujourd’hui indisponible et aucune capture d’écran n’a été retrouvée. Fin août 2013 deux vidéos présentant la V3 sont postées sur Youtube [12]. Les contacts annoncés sont les suivants :

E-mail : adwindratv3.0_at_gmail.com

Skype : adwindrat

L’interface de ces versions ressemble à celles de Frutas.

image 32

image 33

image 34

En août 2013, les prix de la V3 sont annoncés sous forme de licence :

image 35

Les versions clients d’Adwind sont protégées par Allatori [13], selon une technique équivalente à celle rencontrée, pour le serveur Unrecom étudié en début de document.
Proposée à la vente, la V3, est aussi protégée par un système login/mot de passe et par l’attribution d’un numéro de série.

image 36   image 37

Le 1er novembre 2013 Faria annonce l’arrêt du projet Adwind. Il indique que celui-ci a été vendu à la société lustroSoft qui va poursuivre son développement. On n’entendra peu parler de cette société par la suite.

image 38

La fin d’Adwind est suivie, un ou deux mois plus tard, par la fermeture du site adwind.com.mx qui, selon le site Boredliner [14], entraine un blocage de fonctionnement du client.

Les serveurs Adwind

Une analyse des serveurs créés par Adwind V1 et V2 est disponible sur le site Tech Anarchy [15]. On y constate que pour la V1, le chiffrement des serveurs est identique à celui de Frutas présenté plus haut. Pour la V2, l’auteur a écrit sa propre routine RC4 en remplacement du DES. C’est celle-ci que nous avons rencontré en première partie de cette étude avec un serveur Unrecom.

Le client Unrecom

15 jours après l’annonce de l’arrêt d’Adwind, à la mi-novembre 2013, Faria poste une vidéo sur Youtube et annonce l’arrivée d’Unrecom V1.0 [16]. C’est une version privée, destinée à la vente.

L’annonce est également faite quelques jours après sur son site [17].

Etonnamment une version V1.1 est proposée sur ce même site dès le 1er novembre. Android fait alors l’objet d’un plug-in séparé.

image 39

Le site officiel de l’auteur est maintenant unrecom.net (Création : 28 septembre 2013, IP supposées : 74.200.250.132 et/ou 184.168.221.96). Aucune capture d’écran du site n’a été repérée.

Les contacts sont :

E-mail : unrecom_at_gmail.com

Skype : unrecom.soft

 

En janvier 2014, l’auteur du blog Hacktutorialz [18] dévoile d’intéressantes captures d’écrans ainsi qu’une offre de prix, cette fois ci en anglais. On la retrouvera quelques jours plus tard sur le forum hacksociety.net [19]). En lieu et place de la caractéristique « Vender su licencia » on découvre l’intitulé « Change HWID ».

image 40

image 41   image 42

 

image 43

Le terme HWID fait référence à un logiciel d’identification hardware (HardWare IDentification) qui accompagne le RAT et qui doit être exécuté sur la machine qui va recevoir le client. La chaine de caractère obtenue est ensuite copiée lors du premier lancement du RAT afin de l’appairer à l’équipement. En fonction du type de licence cette opération pourra, ou non, être renouvelée ce qui permet de changer d’équipement ou d’éventuellement de « vendre sa licence ».
On retrouve une capture d’écran du module HWID dans un post du forum iq-team [20].

image 44

 

 

 

 

Il est également possible de personnaliser l’apparence du RAT par l’intermédiaire du module Jyloo/synthetica [21] qui se lance préalablement à lui tant que l’on n’a pas choisi son thème (option « Remember theme »).

image 45

En mars 2014, et pour la dernière fois sur son blog, Faria annonce la V2 [22]. Cette version fait l’objet d’un bulletin d’alerte posté, en mai 2014, par la société de sécurité Fidelis [23].

Les versions repérées d’Unrecom sont les suivantes :

Capture 14

Avec Unrecom, le nombre de Plugins augmente. Dans une vidéo Youtube [25] postée par un certain angeldelsur miramontes on en dénombre un minimum de 17. Leurs rangs et leurs noms correspondent à ceux que je cite plus loin dans le paragraphe dédié à AlienSpy, le successeur d’Unrecom.

image 46

 

Le client AlienSpy et ses plugins
La première vidéo présentant le successeur d’Unrecom est postée à la mi-juillet 2014 sur Youtube sous pseudo AlienSpy [26]. On y découvre alors l’URL du site alienspy.net (23.229.185.22) qui semble actif depuis juin de cette même année.

image 47

A l’époque de la mise en place du site, on apprend au travers de la page A propos de nous (About us) que les développeurs Java, aux pseudos Support747, Unrecom, OberonSoftware et Alien781/AlienSpy, viennent de se séparer. Il est dit également qu’AlienSpy poursuit le développement avec deux individus dont on perd ensuite la trace : SquilaMax et Pedro18.

image 48

Accompagné de son module d’identification (Alien Spy HWID Generator v4.0) Le nouveau RAT prend donc le nom d’AlienSpy v4.0.

Tout comme Unrecom, il est proposé à la vente sous forme d’abonnements avec limitation à un usage sur 4 machines successives seulement (aucun changement n’est accepté sur la version gratuite qu’il est alors possible de tester sur 24 heures). Le produit ne fonctionne plus en environnement virtuel tel que VMWare.

image 49

Les versions suivantes sont référencées sur le site distributeur :

Capture 15

Une quinzaine de captures d’écrans sont visibles sur le site de hacking Rekings [28] :

image 50

image 51

Toutes ces captures sont vites retirées. Elles ne réapparaitront qu’après la disparition officielle du produit au profit du suivant : Jsocket.

Les plugins suivant ont été repérés :

Capture 16

Capture 17

Les serveurs AlienSpy – déchiffrement AES

En novembre 2014, le site Contagio faisait référence à AlienSpy à l’occasion d’une campagne d’infection par mail [29] :

Capture 18

Dans le premier fichier, on retrouve une approche similaire à celle d’Unrecom.

Capture 19

Il y a un fichier MANIFEST.MF à déchiffrer, une première partie de clé dans ID (ici Ze80Y9tk) et une seconde partie obfusquée par Allatori.

Les deux autres fichiers ont une structure différente :

Capture 20

Capture 21

C’est celle-ci qui a été étudiée dans les deux contributions cités en référence lors de l’analyse du serveur Unrecom [30].

Le fichier chiffré (stub.dll équivalent au fichier load/MANIFEST.MF d’Unrecom) avoisine les 50 kilo-octets. La taille variable constatée sur les trois fichiers JAR comme sur quelques autres repérés sur Virustotal [31] s’explique par des variations de taille des fichiers de classe du répertoire stub qui peuvent contenir plus ou moins de code parasite.

A titre de curiosité, du fait de sa création récente (31 janvier 2015) et de sa taille supérieure aux autres, j’ai mené une étude sur le serveur AlienSpy MD5 80A0B96133586DF2F31AB27DB5413948.

Après avoir décompressé le JAR, on découvre la présence d’un fichier parasite : une photo BMP montrant le portrait d’un individu (MD5 : 586A8DD2EB67B21B344EB894969CA10F). Ce pourrait être une capture webcam.

A l’exécution du fichier, la bannière de l’obfuscateur Allatori n’apparait plus. Celui-ci est maintenant en version v5.1 DEMO (information visible après deobfuscation de la chaine de caractère de lancement qui est cependant toujours présente dans la classe EcryptedWrapper.class).

image 52

Il y a maintenant deux routines de chiffrement : l’une dans la classe EncryptedLoader, l’autre dans la classe EncryptedLoaderOld. C’est cette dernière qui est utilisée pour le traitement de la bannière Allatori. L’obtention de la bannière se fait de manière identique à celle d’Unrecom avec deux clés numériques et une clé alphanumérique :
Key1 = 99
Key2 = 38
KeyA = mainstub.EcryptedWrapper (la forme étant inverse à celle du premier exemple, soit <method_name>+<class_name>).

Le déchiffrement de stub.dll est traité par la classe EncryptedLoader. Grâce à DirtyJOE, On repère dans celle-ci, au milieu des instructions parasites (garbage), le chargement de variables et l’usage de l’API javax.crypto.

image 53

image 54

La première chaine de caractère repérée comporte 16 caractères. Elle doit être déobfusquée par l’usage des clés repérées dans EncryptedLoaderOld :
Key1 = 99
Key2 = 38
KeyA = decryptstub.EncryptedLoader (forme <method_name>+<class_name>).

La seconde chaine de 3 caractères doit être déobfusquée par l’usage des clés repérées dans EncryptedLoader :
Key1 = 92
Key2 = 72
KeyA = stub.EncryptedLoaderdecrypt (forme <class_name>+<method_name>).

image 55

On constate donc qu’avec AlienSpy, nous sommes passés à un chiffrement AES (Advanced Encryption Standard). Après RC4 et DES, il faut donc maintenant faire appel à un nouveau programme python pour AES :

Capture 22

Testé avec, comme clé de décryptage, la chaine 0B4wCrd5N2OxG93h repérée plus haut on obtient, le JAR contenant le serveur AlienSpy (j’ai ici préféré lui donner une extension ZIP).

image 56

Une fois décompressé, le contenu du fichier est relativement similaire à celle du serveur Unrecom analysé au début de ce document.

Capture 23

Capture 24

 

D’un plugin à l’autre

Un plugin arrive sous la forme de 2 fichiers JAR. Le premier est destiné au client, le second au serveur. La procédure d’installation sur le client consiste à les renommer afin qu’ils s’intègrent aux menus et soient reconnus de manière non ambiguë. Par exemple, avec Adwind, le fichier SendFileAllCliente.jar sera renommé 05.cliente et le fichier SendFileAllServer.jar sera renommé 05.server.

Les plugins sont tous structurés de la même manière. Une fois décompressés, on constate qu’ils possèdent une structure commune avec trois répertoires :

  • Le premier, qui reprend sur 2 ou 3 digits encadrés d’un caractère underscore (‘_’) le rang du plugin, contient les utilitaires ;
  • Le second, META-INF, contient le fichier Meta File et sert de signature de reconnaissance ;
  • Le troisième, Plugins, lance les utilitaires à la demande du client.

Certains plugins tels que ceux qui détournent la webcam possèdent d’autres répertoires aidant à la configuration de l’ensemble.

Adwind

Voici l’architecture du plugin de rang 05, Send File and Execute :

Capture 25

Capture 26

Unrecom

Avec Unrecom, le plugin (Send File and Execute) a le rang 003 :

Capture 27

AlienSpy

Voici maintenant ce même plugin (Send File and Execute) sous AlienSpy. Il porte toujours le rang 003 :

Capture 28

Capture 29

 

Le cas d’Android – décompilation DEX

La création de serveurs pour le monde Android se fait d’une manière distincte. En décembre 2013, Faria huertas a posté une vidéo Youtube qui montre le processus avec Unrecom V1.1 [33].

image 57

image 58

Le processus de création du serveur consiste à injecter le code malveillant au sein d’un fichier APK présent sur la machine de l’attaquant.

Dans l’exemple suivant (MD5 : F821D735817A53A11507925D4F4EBCE5), un fichier APK, une fois renommé en ZIP a été décompressé :

image 59

Afin d’atteindre le serveur Unrecom, il faut maintenant décompiler le fichier classes.dex (Dalvik Executable format). Il est pour cela possible d’utiliser l’utilitaire dex2jar [34].

image 60

Le fichier résultant est un JAR qui une fois décompressé rappelle, par les fichiers de classe qui le composent, les fonctionnalités serveurs bien connues maintenant.

Capture 30

Conclusion

Depuis maintenant près de 5 ans, les auteurs de cette famille d’outils malveillants n’ont jamais pu être réellement inquiétés. Chaque fois qu’une étude un peu poussée du produit est menée, chaque fois qu’un fournisseur d’accès Internet déconnecte le site marchand, ses administrateurs basculent sans problème vers un autre hébergeur, en faisant évoluer le produit et en changeant son nom. Les clients ne sont jamais longtemps laissés l’embarra.

image 61

Capture 31

image 62 Mi 2015, alors que je finissais l’écriture de ce document, GoDaddy suspendait le domaine AlienSpy. Cela faisait semble-t-il suite à l’étude détaillée de Fidelis que nous avons déjà cité. AlienSpy laissa alors sa place à JSocket, dont le site, jsocket.org est depuis lors hébergé, en Grande-Bretagne chez LayerIP. Le site de l’Internet Storm Center a d’ailleurs retrouvé le cache d’une des premières informations postées sur le nouveau blog [ ] invitant leurs clients à changer leur configuration pour retrouver leur authentification et ne pas perdre leurs connections.

Alors que je remets une version amendée de ce document aux organisateurs du FIC2016, le site est toujours en ligne. La souscription mensuelle a été portée à $40 USD et plus d’une dizaine de moyens de paiement sont proposés.

image 63

L’histoire de cette famille de RAT est donc loin d’être terminée. Les produits s’améliorent au fil du temps. Ils se maintiennent malgré les aléas que ses auteurs peuvent rencontrer. A chaque fermeture de site, le produit survit et les clients ne semblent pas trop souffrir de ces péripéties.

Terminé à l’écriture au moment des soumissions d’intervention au FIC, mon document ne traite pas de JSocket. Je vous invite donc à lire le blog de l’Internet Storm Center cité dans le slide précédent.
[1]http://www.allatori.com

[2]http://jd.benow.ca/#jd-gui-overview

[3]http://dirty-joe.com/
[4]Merci à aassfxxx@hackerzvoice.net pour son étude d’un code approchant sur http://n-pn.fr/forum/showthread.php?tid=3730&pid=34670 et à Ruhai Zhang pour son blog http://blog.fortinet.com/post/analysis-of-a-jar-obfuscated-malware-packer

[5]http://lara.epfl.ch/w/_media/cc11:jvm_bytecodes.pdf
[6]https://github.com/kevthehermit/RATDecoders/blob/master/unrecom.py

[7]http://www.voidspace.org.uk/python/modules.shtml#pycrypto
[8]https://pythonconquerstheuniverse.wordpress.com/2011/05/08/newline-conversion-in-python-3/
[9]https://github.com/kevthehermit/RATDecoders/blob/master/unrecom.py
[10]https://boredliner.wordpress.com/2014/02/07/cracking-obfuscated-java-code-adwind-3/
[11]ADWIND RAT V2 : https://www.youtube.com/watch?v=A3w_Z8GVHEU
[12]ADWIND RAT V3 : https://www.youtube.com/channel/UCIqkGgy-5rc13rwxwY0tHqg
[13]https://boredliner.wordpress.com/2014/02/07/cracking-obfuscated-java-code-adwind-3/

[14]https://boredliner.wordpress.com/2014/02/07/cracking-obfuscated-java-code-adwind-3/

[15]https://techanarchy.net/2014/01/adwind-rat-analysis/

[16]https://www.youtube.com/watch?v=JbOxD04Guo4

[17]http://codigo-malicioso.blogspot.fr/2013_11_01_archive.html

[18]http://hackfourm.blogspot.co.uk/2014/01/unrecom-rat-windows-macbook-linux.html

[19]http://hacksociety.net/Thread-Unrecom-RAT-Windows-Macbook-Linux-Solaris-Android-and-more-FUD-Discount

[20]http://www.iq-team.org/vb/t24518.html

[21]http://www.jyloo.com/synthetica/themes/
[22]http://codigo-malicioso.blogspot.fr/2014/03/propagando-con-unrecom-fud-20.html
[23]http://www.fidelissecurity.com/sites/default/files/FTA_1013_RAT_in_a_jar.pdf
[24]https://boredliner.wordpress.com/2014/02/
[25]https://www.youtube.com/watch?v=j5JNwjtrcTY
[26]https://www.youtube.com/watch?v=U43oSeb924A
[27]https://www.youtube.com/watch?v=k3oZEJyWHBw
[28]http://www.rekings.com/page/rat/AlienSpy
[29] http://contagiodump.blogspot.co.uk/2014/11/alienspy-java-rat-samples-and-traffic.html
[30] http://n-pn.fr/forum/showthread.php?tid=3730&pid=34670 (invoice_142.jar, MD5: 595EDF18A0092E1044CF2CF1D01069A4, taille de 47 203 octets) et http://blog.fortinet.com/post/analysis-of-a-jar-obfuscated-malware-packer
[31] MD5 = {3FB9A23A025099AEFF909ECD16BA36A6, 80A0B96133586DF2F31AB27DB5413948, AE10895745C72351796525A76C133CC1, 3534C57CF8F115A4ECE0C0A10EC34A80, 2230B727EFF1AE5386E416AC183DF6FB, C083FEA491F147194D3B90D4E48CFA49}
[32] Avec PP = {af,ar,az,be,bg,bn,ca,cs,cy,da,de,el,es,et,eu,fa,fi,fr,ga,gl,gu,hi,hr,ht,hu,hy,id,is,it,iw,ja,ka,kn,ko,la,lt,lv,mk,ms,mt,nl,no,pl,pt,ro,ru,sk,sl,sq,srsv,sw,ta,te,th,tl,tr,uk,ur,vi,yi,zh_CN,zh_TW}
[33] https://www.youtube.com/watch?v=MglOUPrrwLE
[34]https://code.google.com/p/dex2jar/
[35] https://isc.sans.edu/diary/Adwind+another+payload+for+botnetbased+malspam/20041/