Vous utilisez un navigateur obsolète !

L'affichage de la page peut être incorrect.

  • Ajouter aux favoris
    Ajouter aux favoris

Finalement, ce sont les pros qui gagnent

Lu par: 12040 Commentaires: 2 Cote de popularité: 8

lundi 26 mars 2018

Ce n’est un secret pour personne que les cybercriminels travaillent dur pour tromper les antivirus. Les programmes malveillants avancés n’ont même pas de signature ; ils modifient leur code en temps réel ou n’ont même pas de corps en propre et utilisent des morceaux de code d’autres programmes. Mais peu importe la façon dont se cache l’ennemi, pour arriver à ses fins, il doit agir. Et c’est là qu’il s’expose et peut être pris en flagrant délit.

Supposons qu’un antivirus détecte un malware par sa signature. Pour cela, celle-ci doit être générée avant l’examen du code du Trojan/virus. Bien entendu, les créateurs de virus font leur maximum pour saper le travail des analystes.

Commençons par l’analyse du code. Tout programme représente un ensemble d’instructions CPU et de données qui doivent être processées. Des logiciels spécifiques, comme les débuggeurs, peuvent analyser des séquences d’instructions et aider les chercheurs à comprendre ce que fait le programme ou même à restaurer le code source d’un logiciel malveillant.

#drweb

https://ru-sf.ru/threads/delaem-svoj-virlab-vvedenie.3162

Inversement, certaines méthodes compliquent une analyse de ce type. Il est intéressant de noter que les développeurs de logiciels légitimes utilisent également cette méthode – pour s’assurer du fait que leur logiciel ne sera pas cracké.

Il existe deux approches dans l’analyse du code – statique et dynamique. L’analyse statique consiste à utiliser n’importe quel code ou fragment de code d’un logiciel dont disposent les analystes. La façon la plus simple de se protéger de l’analyse statique est de chiffrer le code malveillant grâce au bon utilitaire afin qu’il ne soit décompressé que lors d’une exécution ultérieure. L’obfuscation est la seconde technique. Des compilateurs spéciaux réarrangent des morceaux du code afin de le rendre plus difficilement compréhensible.

Que font les analystes si un code est bien chiffré ? L’analyse dynamique peut les aider. Elle leur permet d’observer la façon dont se comporte le malware lorsque son code est exécuté. Peu importe que le malware dissimule correctement son code, pour être exécuté, il doit le « révéler » - c’est à ce moment qu’il devient vulnérable face aux antivirus. Les cybercriminels le savent bien et perturbent le debug logiciel. Les antivirus sont connus pour utiliser plusieurs techniques de détection des malwares. Mais le malware peut utiliser également des signatures.

Certains logiciels malveillants comme les Trojans bancaires peuvent détecter des « concurrents » dans le système, les supprimer et créer un patch pour la vulnérabilité qu’ils exploitaient pour infecter la machine. Rien de personnel, juste du business !

Les malwares peuvent également détecter si un logiciel de debug est en cours d’exécution dans le système et répondre par un arrêt inopiné par exemple.

Trojan.MulDrop6.42771 possède une architecture relativement complexe. Son code comporte plusieurs chaînes aléatoires et des appels de fonction pour compliquer son analyse, tandis que sa principale bibliothèque malveillante est dissimulée dans un fichier image. Il peut détecter si une machine virtuelle ou des outils de debug, généralement utilisés par les analystes pour examiner les échantillons de malwares, sont en cours d’exécution sur la machine et s’arrêter.

http://news.drweb.com/show/?c=5&i=10003&lng=ru

Comment un logiciel peut-il dire s’il a été débuggé ? De plusieurs façons. Il peut par exemple contrôler le moment (l’heure) de son exécution.

Ayant lu son code depuis la mémoire tampon, le logiciel peut comparer sa somme de contrôle avec la référence, et si un logiciel de debug a inséré l’instruction INT 3 dans le code, il comprendra qu’il a été débuggé ou que son code a été modifié. Mais l’approche la plus fiable et la plus polyvalente consiste à mesurer le moment de l’exécution de parties spécifiques du code. L’idée est simple : mesurer le temps (en secondes, en cycles d’horloge CPU) entre les instructions en mémoire tampon et tout temps en excès du temps maximum indique que l’exécution du programme a été interrompue.

http://python-3.ru/page/5-metodov-antiotladki

https://xakep.ru/2013/12/04/61704

https://habrahabr.ru/company/mailru/blog/240655

Les logiciels malveillants sont souvent analysés sur des machines virtuelles. Les machines virtuelles standard peuvent être détectées par le type de hardware dont disposent les logiciels qui fonctionnent dessus, ainsi que par des entrées du registre spécifiques et par d’autres propriétés système. Le malware peut rechercher les propriétés et les analystes modifieront la machine virtuelle afin de rendre son comportement identique à celui d’un « vrai » ordinateur.

Une fois lancé, le malware recherche un environnement virtuel et des outils de debug en vérifiant les noms des processus en cours d’exécution et les branches du registre système Windows correspondantes. Cela fonctionnera uniquement s’il n’a rien détecté de suspect.

https://news.drweb.fr/show/?i=11082

Le Trojan.Kasidet.1 vérifie d’abord si sa copie, ou bien des machines virtuelles, émulateurs ou débuggeurs sont présents dans le système infecté. Si le malware trouve un programme qui peut entraver d’une manière ou d’une autre son fonctionnement, il s’arrête. Si non, il obtient les privilèges administrateur et se lance. Même si l’UAC (Contrôle des Comptes Utilisateurs) affiche une alerte sur l’écran, l’utilisateur n’y fera pas forcément attention car les applications en cours d’exécution (wmic.exe) semblent avoir été développées par Microsoft.

https://news.drweb.fr/show/?i=10127

Il est intéressant de noter que Microsoft possède des moyens de se protéger du debug.

A partir de Windows 2000, la routine NtSetInformation Thread possède l’option ThreadHideFromDebugger. C’est une technique anti-debug intégrée à Windows extrêmement efficace. Si l’option est activée pour un thread, il cessera d’envoyer des notifications de debug y compris celles concernant les points d’arrêt et se dissimulera ainsi au débuggeur. Appliquer ThreadHideFromDebugger à un thread principal compliquera énormément son debug.

Windows Vista ajoute la routine NtCreateThreadEx. Elle possède l’option CreateFlags qui, entre autres, laisse la case THREAD_CREATE_FLAGS_HIDE_FROM_DEBUGGER être cochée. Un processus avec cette case cochée sera dissimulé au débuggueur.

http://python-3.ru/page/5-metodov-antiotladki

Il est clair que toutes ces mesures sont prises pour protéger les logiciels légitimes des pirates, mais les attaquants peuvent les utiliser aussi.

Le projet Lumières sur la sécurité recommande

Cette année, Doctor Web va lancer un nouveau service d’analyse en ligne destiné à aider les experts en sécurité et les chercheurs en cybercriminalité à déterminer si les fichiers qu’ils analysent sont malveillants. Ce service sera basé sur la technologie d’analyse automatisée de Doctor Web. Les utilisateurs du service seront en mesure d’analyser le comportement de fichiers suspects et même de le modifier. Ceci, bien sûr, si le Trojan détecté ne réalise pas qu’il est un « roi sans couronne » et se déguise derrière les traits d’un joli chaton. ☺

[Twitter]

Nous apprécions vos commentaires

Pour laisser un commentaire, vous devez accéder au site via votre compte sur le site de Doctor Web. Si vous n'avez pas de compte, vous pouvez le créer.

Commentaires des utilisateurs