Rombertik, le spyware qui pratique la terre brûlée s’il est détecté
Un malware particulièrement soupe au lait
Le 07 mai 2015 à 14h40
6 min
Logiciel
Logiciel
Rombertik est le nom d’un malware dont les caractéristiques sont étonnantes à plus d’un titre. Il a pour objectif de voler des informations, ce qui est assez classique, mais son comportement anti-détection est radical : il provoque un maximum de dégâts, avant de lancer la machine dans un cycle sans fin de redémarrages.
Un voleur véhiculé par une campagne de fishing classique
Les malwares ont leurs grandes phases. Il y a 20 ans, beaucoup de virus avaient surtout pour objectif d’empoisonner la vie des utilisateurs en détruisant leurs données. Avec l’explosion d’Internet, de nombreux pirates ont découvert qu’il y avait bien mieux à faire : voler des informations et les transmettre. Aussi, plus un malware pouvait rester caché sur une machine, plus longtemps il pouvait accomplir sa mission d’espionnage.
Rombertik fait partie des voleurs d’informations. Il n’est d’ailleurs pas particulièrement subtil. D’après l’équipe de sécurité Talos de Cisco, il tente de récupérer à peu près tout ce qui lui passe entre les mains, dans l’espoir d’obtenir des données un peu plus croustillantes, notamment des identifiants et des mots de passe.
Il infecte une machine le plus souvent en étant ouvert depuis un email. Ce dernier présente un texte qui ne pourrait tromper le moindre utilisateur un tant soit peu averti : le destinataire est invité à vérifier les spécifications par une entreprise qui se présente comme étant la Windows Corporation. Tout un programme. Si l’utilisateur ouvre le document, il se décompresse et se présente alors comme un document PDF, avec une miniature suggérant un listing. Ce qu’il n’est pas.
Un malware capable de s'échapper d'une sandbox
Il s’agit en fait d’un fichier .SCR, le format utilisé par Windows pour les écrans de veille. Le code de Rombertik y est contenu, mais Cisco ne dit pas si une ou plusieurs failles sont exploitées, ce qui est probablement le cas. À partir de la première exécution, une longue série d’étapes commence. Le malware réalise ainsi une première série de contrôles pour déterminer s’il est exécuté dans une sandbox ou pas. Si c’est le cas, il dispose de plusieurs mécanismes singuliers pour s’en échapper.
Une sandbox est toujours en place pour des raisons de sécurité et peut être accompagnée d’outils permettant d’analyser le comportement de ce qui s’y ébroue. Plutôt que de dormir et d’attendre son heure, Rombertik va écrire 960 millions de fois un simple octet en mémoire pour passer le temps, ce que certaines sandbox ne vont pas détecter comme suspect, tout en surchargeant les outils d’analyse. Selon Cisco, créer un log d’une telle activité produirait un fichier de plus de 100 Go. Si la sandbox tient le coup, Rombertik s’arrête alors de fonctionner. Si l'attaque fonctionne, le malware complètera alors avec d’autres mécanismes pour s’échapper de la zone mémoire isolée.
97 % de code inutile
Une fois à l’air libre, Rombertik crée un script pour être certain de s’exécuter au démarrage. Il se dédouble ensuite et se cache dans le dossier AppData. C’est la copie qui va faire l’essentiel du travail, et elle dévoile des caractéristiques étranges. Sous sa forme compactée, elle pèse en effet 1 264 Ko, alors que sous forme décompressée, le poids passe à… 28 Ko. En fait, 97 % du code de Rombertik ne sert strictement à rien : il contient 75 images inutiles et environ 8 000 fonctions qui ne sont jamais appelées. Cisco précise qu’il s’agit bien sûr d’une volonté, car une telle quantité de fonctions rend le travail d’examen beaucoup plus difficile.
À partir de là, le malware est actif et remplit donc sa mission d’espionnage. Mais ce qui rend Rombertik particulièrement « efficace », c’est le nombre de mécanismes mis en place pour se dérober aux outils d’analyse ou pour disparaître s’il est détecté. Et dans ce cas, l’utilisateur perdra sans doute de nombreuses données, Rombertik pratiquant la politique de la terre brûlée.
Détecté, Rombertik veut tout casser
Dans les premiers temps de son fonctionnement, le malware va lancer une dernière série de vérifications. S’il se « rend compte » qu’il est activement analysé, de manière manuelle ou automatique, il déclenche les hostilités. Il tente en premier de réécrire le MBR (Master Boot Record) sur le premier disque dur référencé par la machine (PhysicalDisk0). S’il en a la permission, l’opération réussit et la machine ne peut plus démarrer : le MBR est lu avant que le système d’exploitation n’entre en piste, et il faut alors des outils spécifiques pour le reconstruire. S’il n’a pas les droits suffisants, Rombertik sort l’artillerie lourde. Il va chercher les fichiers contenus dans les dossiers Documents et Settings\Administrator pour les chiffrer un par un avec une clé RC4 générée aléatoirement pour chacun. Quand le MBR a été réécrit ou que les fichiers ont été chiffrés, l’ordinateur est redémarré.
Les deux cas sont problématiques, même si techniquement la récupération des informations reste possible. Si le MBR a été réécrit, Rombertik en aura profité pour changer toutes les informations relatives aux partitions et ajouter un code qui provoque le redémarrage de la machine. En clair, l’ordinateur va redémarrer en boucle, jusqu’à ce que le disque soit extrait pour tenter de récupérer les données, ou que le système d’exploitation soit réinstallé.
La meilleure défense contre le malware est évidemment un antivirus qui supprimera la partie exécutable avant même qu’elle n’entre en piste. Et on ne le répètera de toute façon jamais assez : n’ouvrez jamais une pièce jointe qui vous paraît suspecte, soit parce qu’elle vient d’un contact qui ne vous enverrait pas ce genre de données, soit parce qu’elle émane d’un illustre inconnu.
Rombertik, le spyware qui pratique la terre brûlée s’il est détecté
-
Un voleur véhiculé par une campagne de fishing classique
-
Un malware capable de s'échapper d'une sandbox
-
97 % de code inutile
-
Détecté, Rombertik veut tout casser
Commentaires (105)
Vous devez être abonné pour pouvoir commenter.
Déjà abonné ? Se connecter
Abonnez-vousLe 07/05/2015 à 14h45
En 2015, on est pas encore capable de détecter un exe dans un fichier joint ?
Le 07/05/2015 à 14h46
la désinfection offline depuis un autre PC ou un Live-CD/USB, ça reste le meilleur moyen d’éviter ce genre de comportement du virus.
Le 07/05/2015 à 14h47
Le 07/05/2015 à 14h50
Il s’est lever du mauvais pied le créateur du malware." />" />
Le 07/05/2015 à 14h54
Vous me faites peur avec “Détecté, Rombertik veut tout casser”!
Du coup, si d’aventure je le choppe, je le laisse sur mon PC " />
Le 07/05/2015 à 16h07
Le 07/05/2015 à 16h17
Tu as oublié le plus important : il veut surtout pas savoir comment ca marche.
D’autant que le peu d’explication qu’il accepte d’entendre ne lui convient pas
Le 07/05/2015 à 16h19
Le 07/05/2015 à 16h21
on appelle ça un programme d’overclocking codé avec les pieds le tout dans des moufles. " />
Le 07/05/2015 à 16h28
j’irais plus taper le createur dans ce cas la " />
Le 07/05/2015 à 16h36
Comment le virus fait-il pour s’échapper de la sandbox? La surcharger suffit?
Si vous avez des liens sur le mode opératoire des virus je trouve ça très intéressant.
Le 07/05/2015 à 16h38
Le 07/05/2015 à 16h43
Par contre il y a un truc que je comprend pas c’est comment il fait pour s’échapper d’une sandbox. Écrire un octet mémoire en boucle va certes surcharger l’outil d’analyse, mais je ne vois pas comment ça permettrait de sortir.
Le 07/05/2015 à 16h54
Le 07/05/2015 à 16h59
J’imagine qu’une fois qu’il a assez d’espace mémoire, il injecte le “vrai” code méchant à la place en espérant qu’une faille du système (donc hors de la sandbox) est présente.
Le 07/05/2015 à 17h06
Le plus lourdingue en entreprise étant surtout les virus “ransomware” qui crypte tes fichiers en échange d’une rançon.
Pour peu que l’Idi…heu…ton utilisateur se connecte sur le réseau, les bien foutus vont aller chiffrer aussi tous les lecteurs réseaux accessibles. Mieux vaut avoir une politique de backup aux petits soins…
D’après l’article, la surcharge ne sert qu’à outrepasser l’outil d’analyse, une fois qu’il est dans les choux le programme exécute la vraie élévation de privilège qui n’est donc plus analysé et passe comme une lettre à la poste.
Enfin, comme dit au dessus, c’est surtout vrai sur les mieux systèmes non mis à jours. Un vrai antivirus va détecter un truc louche directement. Même si je doute que la sandbox de l’économiseur d’écran soit une des priorités de microsoft…
Le 07/05/2015 à 17h34
Ces gars pourraient améliorer l’humanité s’ils mettaient leurs connaissances au service de la Force " />
Le 07/05/2015 à 17h36
>le MBR est lu avant que le système d’exploitation
>n’entre en piste, et il faut alors des outils spécifiques
>pour le reconstruire
Il faut juste le CD d’installation de Windows en fait …
Adresse Web :
http://www.toutes-les-solutions.fr/phpbb/topic3044.html
" />
Le 07/05/2015 à 17h46
Le 07/05/2015 à 17h49
Le 07/05/2015 à 17h51
Le plus gros virus, c’est encore la bêtise, et il a été implanté il y a déjà plusieurs milliers d’années " />
Et j’ai l’impression qu’avec le temps, il ne cesse de grandir !!
Le 07/05/2015 à 18h03
Et lui aussi, quand tu le pointe du doigt, il devient méchant " />
Le 07/05/2015 à 18h20
j’adore ce virus !
Le 07/05/2015 à 18h30
Le 07/05/2015 à 18h36
Je me demande si Gparted peut le faire.
Le 07/05/2015 à 18h46
Le 07/05/2015 à 18h58
Tellement vrai, chevalier Jarodd. " />
" />
Le 07/05/2015 à 19h03
Impressionnant quand même
Le 07/05/2015 à 20h07
Le 07/05/2015 à 20h28
Le 07/05/2015 à 20h40
Encore une belle saloperie qui n’en est plus une avec un simple NOEXEC sur le /home. Enfin bon…
Le 07/05/2015 à 21h50
Le 07/05/2015 à 22h00
Intéressant. Je ne savais pas que les priorités d’opérateur n’étaient pas normées dans tous les langages….
Concrètement si int x = 1; printf(” %d %d %d\n”, ++x, x, x++); peut donner 1,2,3 en résultat je me demande pourquoi il existe ++X et X++ ….
Quoi qu’il en soit, et si c’est avéré (mais là je demande des sources, parce que pour moi et mes 10 ans d’xp de dev les priorités d’opérateur c’est normé par langage…), je ne vois pas en quoi c’est impactant….
Le principe même d’un compilateur c’est de fournir du code machine, ce qui fait que tu n’auras jamais de sources dans un exe, hors même en admettant que le résultat de l’instruction ci-dessus soit 1,2,3 parce que le compilateur a décidé de dire fuck à 20 ans de normes de code, le résultat binaire effectivement analysé par l’anti-virus sera dans tous les cas bien différent….
Qu’on ne puisse pas analyser automatique la finalité d’un exe je veux bien, notamment parce que divers techniques d’obfuscation peuvent rendre les choses tordues… ou que le résultat va dépendre de l’architecture du processeur employé à la limite…. mais que l’on me dise que c’est parce que les compilateurs font ce qu’ils veulent j’ai plus de mal déjà. J’aimerai plus de matériaux pour comprendre parce que là c’est contradictoire avec l’intégralité de mon expérience….
Le 07/05/2015 à 22h01
En 2015 il y a encore des gens qui utilisent un O.S. qui n’a même pas de bit d’exécution sur le filesystem, par conséquent TOUT est exécutable, même si c’est pas “.exe”, et c’est pain béni pour les virus en tout genre.
Prix Darwin !
Le 07/05/2015 à 22h01
Le 07/05/2015 à 22h20
++x et x++ existent par ce que suivant la logique d’un algorithme on peut avoir besoin de l’un ou de l’autre. Il n’est pas pertinent d’avoir les deux dans une même instruction, généralement on suppose que le programmeûr ne fera pas n’importe quoi. Le cas n’étant pas attendu, il compilera au mieux suivant une mécanique précise, au pire prendra une des possibilités au hasard en fonction de son état interne.
Peut-être un warning pour la plupart des compilateurs concernés ?
Le 07/05/2015 à 23h05
Le 08/05/2015 à 12h23
En se basant sur les magic number et pas sur les extensions
Le 08/05/2015 à 19h17
Il y a une étude plus nuancée sur ce malware ici :
https://nakedsecurity.sophos.com/2015/05/06/can-the-rombertik-malware-really-des…
Can the Rombertik malware really “destroy computers”? No, no, three times NO!
Le 08/05/2015 à 19h51
J’ai été passionné par cet article. Le mec ayant crée cet outil est vraiment ingénieux.
Même si c’est pas bien, illégal etc. Je lui dis respect " />.
Si seulement ce genre de personne travaillait sur des choses qui font avancer le monde … au lieu de le “détruire”.
Le 08/05/2015 à 21h39
Le 09/05/2015 à 11h28
Le 09/05/2015 à 14h04
Si je me souviens bien, il est dans un script dans le pdf qui s’exécute quand tu ouvres le dit pdf.
Le 09/05/2015 à 16h55
Le 10/05/2015 à 16h09
Le 10/05/2015 à 16h15
Le 10/05/2015 à 17h24
Le 10/05/2015 à 17h44
Le 11/05/2015 à 07h22
Le 11/05/2015 à 07h32
Le 11/05/2015 à 08h31
" />
Le 11/05/2015 à 13h40
Ouai c’est un des premiers trucs que je désactive, ne serait-ce que parce que j’aime bien savoir le type de fichier que je manipule ^^
Le 11/05/2015 à 14h09
Le 07/05/2015 à 14h55
“Documents et Settings\Administrator”
… Grrrrrrrrrrr, rien que de voir ça ca me donne des envies de frapper >_
Le 07/05/2015 à 14h55
au moins on a enfin là un specimen d’une espece que je pensais eteinte, au profit des malwares et crapwares bas du front qui prolifèrent depuis ces dernières années… à savoir l’espece des VRAIS virus informatiques.
Je veux dire par là ceux qui:
normalement la plupart des logiciels “pénibles” sont installés par négligence, flemme, ignorance crasse de l’utilisateur, ne se cachent pas (ils tronent bien sagement dans des emplacements systeme faciles à trouver, sous des noms louches ou imitant des applis legits, ont leur commande de démarrage en clair dans une clef de la base de registre… bref rien de sérieux)
c’est pas forcément une bonne nouvelle mais ça permet enfin de comparer et prendre la vraie mesure de ce qu’est un virus au sens historique du terme, et le mettre en comparaison avec les merdes habituelles relativement innoffensives et faciles à virer. Ca evitera l’abus de langage de toujours TOUT appeler “virus” (et surtout “n’importe quoi”)
Le 07/05/2015 à 15h00
Au moins NXI n’abuse pas sur le titre comme “certains” sites ^^
Le 07/05/2015 à 15h02
Une question le fait d’être en permanence en session utilisateur sans droit d’administrateur, réduit-il ou mieux évite-t-il le risque ?
Le 07/05/2015 à 15h08
Le 07/05/2015 à 15h14
Je pense que les dégâts se cantonne à tout ce qui est accessible par l’utilisateur, à moins qu’il y ait des procédés d’élévation des droits.
Cela reste une supposition, je peux me tromper. " />
Le 07/05/2015 à 15h17
so 2000… c’est fini les “I love you” & co.
Le 07/05/2015 à 15h17
ouais, comme cluclu pour ne pas les citer !
Le 07/05/2015 à 15h19
A priori, il va chercher à se suicider en emportant tout ce qu’il peut avec lui si il n’arrive pas à avoir accès à ce qu’il veut.
Le 07/05/2015 à 15h22
j’aime le côté destructeur du virus, je trouve ça franchement ingénieux
Le 07/05/2015 à 15h22
Pff à l’époque les virus allaient plus loin:
Techrnobyl pouvait même effacer ton BIOS dans certains cas, il se contentait pas d’essayer de péter ton MBR.
Les virus c’est vraiment plus ce que c’était." /> " />" />
" />" />" />" />
" />" />" />
Le 07/05/2015 à 15h24
Ouais c’est un truc de tafiole !
À quand les virus qui essayent de péter ta porte d’entrée et ta sœur en prime ? " />
Le 07/05/2015 à 15h29
Le 07/05/2015 à 15h31
Le 07/05/2015 à 15h36
ah ben les cons ça ose tout, c’est même à ça qu’on les reconnait :)
Le 07/05/2015 à 15h44
Quelques questions suite à la lecture de cet article très INtéressant :
– > Il va chercher les fichiers contenus dans les dossiers Documents et Settings\Administrator
On me dit dans l’oreillette que le compte “Admin” est désactivé depuis un paquet de temps dans les versions de Windows récentes (Vista / 7 / 8 / 8.1),
–> Il tente en premier de réécrire le MBR (Master Boot Record) sur le premier disque dur référencé par la machine (PhysicalDisk0)
Quid des systèmes UEFI Secure booté et des disques dynamiques (GPT) ?
Tout celà me parait quand même un brin archaïque…
Le 07/05/2015 à 23h21
gu0sur20, t’as la palme du n’importe quoi. On parle d’analyse de binaire, donc c’est déterministe puisque le compilo a déjà fait son choix.
De plus, l’analyse concerne essentiellement les appels système, puisque pour pouvoir s’échapper il faudra en passer par là.
A noter également que l’ordre d’évaluation des paramètres non normalisé en c, c++ est un grand classique, réglé depuis c++11 d’ailleurs. C’est pas parce qu’une spec d’un langage x n’est pas exhaustive que tout à coup tout l’informatique devient non déterministe.
Le Javasceipt a le même gere d’oubli dans le czlcul et la précision des flottants, rout comme plein d’autres aspects de plein d’autres langages.
Enfin le x++ et ++x (dont on se fout dans l’exempne) diffèrent initialement dans le nombre de registres utilisés (le x++ incrémente la valeur et doit garder la valeur précédente pour la refiler à l’instruction suivante, pas le ++x qui refile la nouvelle valeur). Mais c’est depuis 15 - 20 ans des choses que n’importe quel compilo même playskool sait optimiser tout seul.
Le 07/05/2015 à 23h23
Le 07/05/2015 à 23h27
non c’est:
-j’evalue le premier param, je le met dans la pile
-j’èvalue le deuxième, je le mets dans la pile
Reste à savoir si tu empile en prenant (et donc en évaluant) par convention tes params de droite a gauche ou de gauche à droite.
Le 07/05/2015 à 23h30
Edit 2 (c’est pas bien je sais) : à la limite j’aurais trouvé un cas comme int x=1;sprintf(‘%d%d%d’, x++ , x, x++); nettement plus tordu….
Le 07/05/2015 à 23h34
Le type qui a créé ça va se faire “mal voir”.
Le 07/05/2015 à 23h36
Sauf que tu stock pas des valeurs (ni des params) dans la pile mais des registres….
Et à partir de là, si tu utilises 3 fois la même variable c’est 3 fois le même registre appelé… donc une modif du registre en 1 va impacter le registre en 3…
Encore une fois, je suis pas spécialiste d’un niveau si bas… et hors théories et vieux souvenirs c’est médiocre pour rester gentil. Sauf que là je trouve ça illogique….
On va faire plus simple, j’aimerais un exemple concret de situation où cette instruction peut donner autre chose que 2,2,2…. Avec si possible les explications détaillées de ce qui se passe…
Ca me fait penser à la vieille légende du 3-2 = 2 possible par démonstration mathématiques… sauf que en plein milieu de la démonstration il y a un changement de référentiel….
Le 07/05/2015 à 23h38
Le 07/05/2015 à 23h40
non, tu stockes bien des valeurs dans ta pile.
Et donc tu as ton explication.
Le 07/05/2015 à 23h45
Possible ça, encore une fois c’est vieux. Ca colle avec mes premiers souvenirs de fifo / filo je dois l’avouer - pas trop de sens avec des emplacements mémoires … :)
Par contre - et merci encore pour les détails - je ne vois toujours pas en quoi le résultat d’analyse d’un anti virus du binaire final aurait quoi que ce soit à voir avec le compilo…. avec le type de proc employé je veux bien, mais le compilateur…
Le 07/05/2015 à 23h55
Le 08/05/2015 à 00h08
Le 08/05/2015 à 00h22
Et bien en fait il faut entendre l’expression “source d’un programme” au sens machine de Turing. C’est à dire une successions d’instructions qui peuvent donc être de l’assembleur, du C, du HTML, des bananes, ce que tu veux du moment que ce soit interprétable. Les spécialistes des langages sont conscients de cette limitation et c’est pourquoi ils imposent des normes et des bonnes pratiques. Mais cela concerne 99% des situations rencontrées, les 1% restant étant soumis à interprétations. Encore, un langage ne peut tout normaliser car certains choix sont du ressort du matériel qui est lui aussi soumis à l’interprétation des niveaux logiques, etc. etc.
Au delà des deux cas d’école que j’ai donné, le théorème de Rice (c’est le nom de ce résultat) est la raison scientifique pour laquelle il n’existe pas de garbage collector parfait, que deux navigateurs web interprètent la même page HTML différemment et surtout pourquoi il est impossible de savoir ce que fait un programme sans l’exécuter.
Il y a peu de résultats fondamentaux en informatique mais celui-ci c’en est un. Si tu en désires un autre, il y a le problème des généraux byzantins qui implique que l’on ne peut pas garantir à la fois la cohérence et la disponibilité des données dans un réseau (La démonstration est faite ici –>http://www.mathcs.citadel.edu/rudolphg/csci604/ImpossibilityofConsensus.pdf). Malheureusement la plupart d’entre eux sont “oubliés” et beaucoup de mes confrères se heurtent à ceux-ci sans connaitre leur existence.
Le 08/05/2015 à 00h42
Exactement. Le compilo fait des choix qui peuvent aller à l’opposé de ce que le développeur pense ou anticipe. De même, le matériel peut faire des choix qui sont en dehors de la maitrise du compilo …
Je sais bien que c’est contre-intuitif pour un vétéran de la programmation mais n’oublie pas que ce que tu as en face de toi c’est un assemblage de sable, de métal et de plastique : ça n’a strictement aucune intelligence. Tout ce que ça fait c’est répondre à un flot d’instructions du mieux que ça peut. Les normes et standards sont juste là pour essayer de faire en sorte que ça tienne debout et que ce soit un minimum cohérent.
Maintenant si tu penses être en mesure de démonter un résultat qui se vérifie depuis plus de 60 ans, je m’engage publiquement à te recommander personnellement pour un prix Turing.
Le 08/05/2015 à 00h44
Parce qu’un binaire est le source d’un programme au sens machine de Turing …
Le 08/05/2015 à 00h50
Si la sandbox tient le coup, Rombertik s’arrête alors de fonctionner
Militons pour des OS qui utilisent nativement des sandbox applicatives.
La gestion de la sécurité par des “comptes utilisateurs” n’a pas vraiment de sens sur un PC. Une session de travail est typiquement mono-utilisateur, mais multi-application. Et la menace vient surtout des applications de la session actuelle de l’utilisateur, plutôt que des actions d’autres utilisateurs du PC.
La sécurité devrait se focaliser sur le cloisonnement des applications plutôt que sur celui des utilisateurs.
Le 08/05/2015 à 01h03
Je plussois.
Le 08/05/2015 à 01h07
Merci pour l’exemple. Je n’ai lu que les 5 premières pages mais je vais poursuivre. C’est très intéressant…
Par contre, je suis désolé, mais si on entend code source comme le sens machine de Turing (y en a un autre ? Von Neuhmann éventuellement mais comme la machine de Turing n’est jamais qu’une formalisation poussée de celle de von neuhmann et que c’est le modèle utilisé par tous les ordinateurs actuellement…), tous les langages ne sont pas égaux…
Sauf erreur un ordinateur ne comprends pas plus du C que que java ou du PHP…, La seule chose qu’il comprend c’est du code machine (qu’on va formaliser en ASM parce que raisonner en binaire… ça va être compliqué pour moi, et je pense qu’au vu du contexte on est assez proche).
Le boulot d’un compilateur (et d’un interpréteur aussi d’ailleurs), c’est de transcrire un langage de prog en langage machine…. justement pour que quand on livre un programme l’utilisateur n’ait pas à galérer à le faire fonctionner. A partir d’un même code de base, tu auras différents codes machines générés selon le proc du système pour lequel tu compiles (voir selon l’OS si tu codes à assez haut niveau). Mais dans tous les cas tu livres à ton client du code machine.
Donc les antivirus analysent du code machien qui est, comme brazonyma l’a dit, déterministe…. Je peux concevoir des différences de résultats entre deux codes de haut niveau identiques (en fait j’en ai fait l’expérience pas mal de fois entre du windows et du linux - encore une fois je fais surtout de l’interprété), pas entre deux codes machines….
Donne moi une même suite d’instructions en ASM qui produisent deux résultats différents selon le contexte mais avec le même proc…. vraiment, je suis curieux.
D’ailleurs ton doc ne parle absolument pas de différences de résultats entre deux instructions identiques, mais de disparités réseaux en fonction du contexte d’exécution, ce qui est très différent. Je me permets une citation :
Crucial to our proof is that processing is completely asynchronous; that is, we
make no assumptions about the relative speeds of processes or about the delay
time in delivering a message. We also assume that processes do not have access to
synchronized clocks, so algorithms based on time-outs, for example, cannot be
used. (In particular, the solutions in [6] are not applicable.) Finally, we do not
postulate the ability to detect the death of a process, so it is impossible for one
process to tell whether another has died (stopped entirely) or is just running very
slowly.
Donc, dans un contexte synchrone cette disparité n’a pas lieu d’être.
Alors, d’accord, pour recoller à la news, le principe de ce malware est de provoquer une surcharge de l’analyseur, ce qui peut entrainer une certaine “asynchronisité” dans le cas d’une sandbox mal codée . Mais en toute théorie les sandbox sont codées avec une synchronisation sur l’horloge de la machine, justement pour éviter ce genre de soucis (est ce que c’est le cas sur celle de windows pour les écrans de veille…. j’en sais foutre rien, mais en théorie c’est le cas pour toute sandbox “récente” - celles des navigateurs l’est, ça j’en suis certain).
Quant au théorème de Rice j’en ai pour souvenir un cas d’école. Sauf qu’en pratique c’est inapplicable… Si le résultat de l’interprétation de code par une machine distante est absolument non déterministe en raison de desynchro dues à des horloges différentes, sur une sandbox, même si le principe de fonctionnement est le même, les divers couches d’exécutions utilisent la même horloge interne… et donc le programme sera, de fait, synchrone….
Le 08/05/2015 à 01h09
Le 08/05/2015 à 01h27
Autre chose, une sandbox n’a pas que des avantages….
C’est légèrement plus lent déjà, mais surtout ce n’est pas utilisable pour n’importe quelle appli…. Une sandbox, comme son nom l’indique, c’est un espace d’exécution réservé à l’appli. Mais un certain nombre d’appli a besoin d’accéder à des couches systèmes et non juste à l’API…. et ça c’est pas possible en sandbox (c’est même fait pour).
Ou il faudrait un OS qui anticipe tous les désirs des utilisateurs et des devs… autant demander un OS sécurisé à 100% sans aucune élévation de privilège ou d’execution arbitraire possible, c’est du même niveau : impossible…
Le 08/05/2015 à 01h56
non non le document PDF ça concerne un autre résultat qui n’a rien à voir, c’est plus lié à du réseau (désolé c’est ma faute).
En fait la machine de Turing est une machine abstraite qui exécute une série d’instructions. C’est très théorique comme concept et Von Neumann en a proposé une implémentation électronique mais ca peut prendre n’importe quelle forme. Tu peux par exemple en construire une à base de lego (cf.http://www.ens-lyon.eu/actualites/la-machine-de-turing-en-legos–158118.kjsp?RH=…
Par définition, une machine de Turing c’est un élément qui est capable d’exécuter une série d’instructions du moment que ça suit un algorithme. Par exemple :
le processeur exécute de l’assembleur
le compilateur exécute du C, Fortran etc
l’interpréteur exécute du javascript, php
le navigateur web exécute du HTML
le cuistot exécute une recette
le maçon exécute les plans de l’architecte
etc.
Pour revenir à la news, le but d’un anti-virus est de déterminer si un “programme” (script, exe, etc) est malicieux ou non ; sans pour autant l’exécuter parce ce que sinon la machine sera infectée. Or sur cette question là précise on sait depuis longtemps qu’il n’est pas possible de savoir ce que fait un programme en lisant ses instructions. Du coup la seule option qui s’offre à un anti-virus est de faire du “best effort”, c’est à dire comparer les instructions du programme avec des modèles de programme reconnus comme malveillant : la fameuse base de signature.
Pour l’exemple ASM que tu me demandes, il suffit de jeter un œil à l’ABI Intel (ou AMD comme tu préfères). J’ai pris une instruction au hasard, mais regardes la description de l’instruction AAD. Déjà celle-ci n’est pas valide pour une exécution en 64 bits mais en 32 elle l’est. Ensuite, les registres OF, AF, et CF sont dans un état non-défini après exécution, c’est à dire que si l’instruction suivante prend en entrée la valeur de l’un de ces registres, cela va faire quelque chose mais tu ne peut pas prédire quoi. Du coup la seule façon de savoir ce que ça fait c’est de faire une exécution.
Le 08/05/2015 à 02h03
c’est pas vraiment de l’isolation mémoire, c’est plutôt de l’isolation de processus. L’idée est de donner un niveau de sécurité à chaque processus, fichier etc. Un peu comme les niveau de classifications dans l’armée (confidentiel, secret, très secret, …). Ensuite le système interdit qu’un processus de niveau confidentiel (le navigateur) accède à un fichier d’un niveau secret défense (ton bureau) par exemple. Pour placer un processus dans une sandbox, il suffit juste de ne lui donner aucunes habilitations ;)
Le 08/05/2015 à 02h06
Tout dépends. Si c’est un système qui évolue peu comme un serveur, une politique de sandboxing très restrictive est envisageable. Mais c’est sûr que pour une machine bureautique …
Le 08/05/2015 à 02h07
Mes excuses, j’ai oublié le lien:
  Intel
Le 08/05/2015 à 02h14
Le 08/05/2015 à 02h32
ce qui suppose, sauf erreur, d’allouer une certaine plage mémoire à un programme.
En tous cas tu vas difficilement pouvoir isoler un processus si il peut modifier l’espace mémoire alloué à d’autres….
J’ai toujours intuitivement (encore une fois ce n’est pas mon métier) vu une sandbox comme un environnement d’exécution complet, sans interactions (théoriques) - hors celles prévues - possibles avec le reste du système. Hors une simple demande d’auth est une interaction…
Mais au final on tombe d’accord. Là c’est mon terme qui était mal choisi… mais finalement une isolation de processus suppose in fine une isolation mémoire…. Trop l’habitude de travailler avec des middleware type browser, désolé….
Le 08/05/2015 à 06h05
Étant très intéressé par tout ce qui touche à la sécurité, je ne peux qu’apprécier ce genre d’informations, merci !
Si j’avais pu, j’aurais sûrement bossé dans la sécurité, mais c’est un domaine malheureusement peu enseigné ici…
Bizarre cette histoire avec la pré et la post-incrémentation. Je pensais justement que c’était déterministe non ?
Le 08/05/2015 à 07h21
Bah… WindowsUpdate devrait résoudre prochainement le problème…. dans 5 ans. " />
Le 08/05/2015 à 09h37
Le 08/05/2015 à 09h52
Il aurait été intéressant d’expliciter un peu plus que cela ne touche que windows…
Le 08/05/2015 à 09h59
Le 08/05/2015 à 10h03
Le problème avec le mot “sandbox” c’est qu’il est utilisé à tout va dès qu’on parle d’une isolation quelconque d’un processus.
Par exemple : la mise en sandbox du plugin flash avait pour but d’empécher Firefox de se faire embarquer par un plantage du plugin… mais question sécurité ca ne changeait pas grand chose ;) (ok avec Flash c’était facile " />)
Le 08/05/2015 à 11h03
Oui, j’ai vu après coup dans le fil des conversations. C’est intéressant.
Le 11/05/2015 à 20h42
Le 12/05/2015 à 17h02
Le 13/05/2015 à 05h41
Le 13/05/2015 à 20h30