Conférence DEFCON 17. Riez de vos virus! Partie 1Ensuite, vous pouvez le charger dans l'IDA et voir que tout dans le tableau des adresses importées semble bien, et nous pouvons suivre les liens croisés pour définir le pointeur sur le fichier souhaité. Nous arrivons donc à l'emplacement exact du code de chiffrement dépendant.

Ainsi, avec seulement quelques commandes pour vider la mémoire, nous avons trouvé l'endroit où Coreflood se cachait. Nous avons démonté, récupéré et inséré l'en-tête PE sans même l'avoir, et nous avons obtenu une table d'adresses entièrement restaurée en moins de 20 secondes.
L'histoire suivante s'intitule "Chérie, je suis désolée de te déranger encore - je suis piqué par Internet!" Cette histoire nous dit que le générateur IP défectueux Conficker.B ne scanne qu'une partie d'Internet. Nous revenons ici à la fonction rand. Une partie importante de cette fonction est la toute dernière instruction que j'ai marquée avec une flèche verte - elle exécute toute valeur finale dans EAX avec une valeur de 7FFF. Si vous n'êtes pas familier avec les principes d'assemblage et ne savez pas ce que cette instruction peut faire, voici une petite démonstration à ce sujet.

Nous déplaçons la valeur maximale que EAX peut contenir dans ce registre et exécutons l'instruction finale. Vous pouvez voir qu'il «coupe» la moitié supérieure de la valeur, puis soustrait 7FFF, qui est converti en 32767 dans le système décimal. Apparemment, les auteurs ne se sont pas rendu compte que cette restriction qui exécute Windows ne renvoie pas à l'entier la taille souhaitée . Il le "coupe" pour que la valeur ne dépasse pas 7FFF, de sorte qu'un octet de 7F ne soit jamais supérieur à cette valeur de 7F, c'est-à-dire qu'il ne sera jamais égal à 80 ou quelque chose comme ça.
Plus loin sur le côté gauche de la diapositive, que j'ai appelé la «méthode vicieuse», vous voyez le code Conficker.B. Cela montre un appel à rand qui initie le premier octet de l'adresse IP, qui est destiné à être analysé après son retour de rand. L'appel système rand suivant initie les troisième et quatrième octets de l'adresse IP, mais à cause de ce qui précède, deux de ces octets ne seront jamais supérieurs à 7F. Ainsi, la plupart d'Internet ne pourront pas être analysés car Conficker.B utilise cet algorithme.
Sur le côté droit de la diapositive se trouve la partie du code source qui montre l'assembleur. Il est difficile à lire à l'écran, mais cet exemple est accessible au public et vous pouvez le lire en ligne si vous êtes intéressé.

Un lien vers cet outil est situé au bas de la diapositive suivante, intitulé «Simulation de la méthode vicieuse». Vous pouvez également voir que l'adresse IP est générée avec PRNG mais pas analysée.

Je veux dire un grand merci à Brandon Enright, qui a fait le calendrier sur la diapositive suivante. Ce graphique s'appelle la «courbe de Hilbert» et je vais maintenant agrandir l'image pour que vous puissiez mieux voir à l'écran. La couleur bleue dans le graphique indique la plage d'adresses IP qui ne sont pas disponibles pour l'analyse par Conficker.B à l'aide de cet algorithme vicieux. La couleur rouge foncé indique ce qui peut être numérisé. Vous voyez que la plupart des parties du graphique ne sont pas rouges, mais violettes, et vous ne verrez pas pourquoi cela se produit tant que vous n'aurez pas augmenté le rectangle correspondant.

Même dans ce rectangle agrandi, dans chaque bloc / 16, vous voyez beaucoup de fragments bleus qui deviennent rouge foncé en violet. Ce sont les parties des adresses que Conficker.B n'est pas en mesure de numériser.

C'est assez intéressant car beaucoup de gens sont sûrs que Conficker.B a créé de "grands esprits". C'est peut-être le cas, mais ces esprits n'étaient pas conscients des limitations qui existent dans Windows rand ().
Matthew Richard: revenons à ces gars qui, comme je l'ai dit, ne gèrent pas très bien leurs virus, donc dans la cybercriminalité, cela s'apparente au proverbe «humain à loup humain», donc ces gars-là ne sont pas respectés dans leurs cercles.
Parlons des outils de piratage Neosploit, qui «ont» tout le monde. On peut dire que la devise de ses développeurs était "Merci pour l'argent, maintenant il est temps de courir". Neosploit est une boîte à outils pour organiser des attaques Web, donc les gars de la cybercriminalité l'achèteront et le configureront contre les gars sur le serveur, pirateront le serveur, téléchargeront des codes, etc.

Les créateurs de Neosploit ont fait un bon investissement en vendant leur outil, mais en ne permettant pas qu'il soit changé, modifié ou utilisé en pièces. La troisième version de cette boîte à outils a été publiée en avril 2008, et la plupart des exploits uniques sont écrits en C, donc ce n'est pas PHP ou une sorte d'application Web de merde. Les clients ont reçu une distribution binaire avec un ensemble d'exploits CGI.
Neosploit possède des fonctionnalités qui empêchent les clients de diviser ou de supprimer les exploits. Pour ce faire, tous les exploits ont été présentés au format binaire, chiffrés à l'aide de XOR. Les créateurs ont fait en sorte que personne ne puisse couper, coller et créer leur propre ensemble d'exploits basé sur Neosploit. Il existe 40 à 50 à 60 différents types d'attaques Web, qui sont basées sur des codes volés et copiés insérés dans leurs propres exploits, de sorte que les gars de Neosploit se sont révélés un peu plus intelligents en cryptant leurs exploits de l'intérieur. Dans la capture d'écran, vous voyez qu'ils ont un fichier avec la clé neosploit.key, il s'agit donc d'un logiciel sous licence complète.

Je ne doute pas qu'ils avaient un tas de très bons clients qui gagnaient beaucoup d'argent. Leurs clients les plus célèbres étaient Torpig. Je pense que vous avez entendu parler du rootkit Mebroot, avec lequel ils ont compromis les systèmes pour créer un réseau de botnet. Mais les créateurs de Neosploit avaient de nombreux autres clients. En mai 2008, ils ont publié une nouvelle amélioration - la 3e version de leur boîte à outils. Les clients ont été priés de pré-payer le package d'exploit avec toutes les mises à jour ultérieures pour 1000 $. Plus tard, j'en parlerai plus en détail, pour l'instant je remarquerai qu'ils se sont vraiment inquiétés pour les pirates et ont essayé de protéger leur produit contre eux autant que possible, donc c'était vraiment très amusant.

Même les médias ont écrit que ces exploits sont partout. Alors bien sûr, nous allons essayer de démonter le code et de montrer comment fonctionne Neosploit.
La première chose amusante qu'ils ont faite, après avoir intensément promu cet ensemble d'exploits d'avril à juillet, a été leur soutien du 20 juillet 2008. L'explication qu'ils ont simplement publiée sur leur site Web disait ce qui suit: «Malheureusement Un support produit supplémentaire n'est pas possible. Nous nous excusons pour la gêne occasionnée, mais les affaires sont les affaires, et le temps consacré au projet ne se justifiait pas. Ces derniers mois, nous avons essayé jusqu'au dernier pour satisfaire les exigences des clients, mais un jour, le support aurait dû cesser. Nous sommes avec vous depuis un an et demi et nous espérons que ce n'était pas le pire moment pour votre entreprise. Maintenant, nous ne serons plus près de chez vous, mais nous souhaitons néanmoins que votre entreprise prospère très longtemps. » En général, nous avons reçu votre argent, vous avez payé l'abonnement, alors soyez en bonne santé!
Cependant, ils ont simplement plaisanté et en août 2008 sont revenus et ont publié une toute nouvelle version 3.1, qu'ils ont fournie à leurs principaux clients, indiquant que tous les autres clients recevront une mise à jour après avoir payé. Cette mise à jour comprenait plusieurs nouveaux exploits pour Adobe PDF, Shockwave Flash et Quicktime pour Firefox.
Ensuite, ils ont de nouveau décidé d'être sérieux et ont annoncé qu'ils arrêtaient de publier des mises à jour, de sorte que tous ceux qui ont souscrit un abonnement prépayé ont foiré.
Passons donc à Neosploit, ce kit plutôt sympa pour organiser des attaques web. Parce que ses développeurs ont combattu des pirates et volé des exploits qui pouvaient être copiés et collés dans les kits d'autres personnes, ils ont pris chaque exploit et l'ont placé dans un fichier CGI, encodant de telle manière qu'il était très difficile de le retirer de là. Les binaires d'exploitation C étaient légèrement différents des scripts PHP.

Sur le blog Neosploit, la phrase de Dancho Danchev a été publiée selon laquelle "n'importe qui peut créer un nouvel exploit", mais c'est assez difficile. J'ai décidé de découvrir à quel point c'était difficile et j'ai commencé à démonter l'un des exploits.
Chaque exploit a été stocké sous forme cryptée à l'aide d'une clé XOR à 3 octets. Pour chaque demande entrante, l'exploit a été déchiffré et fourni à l'utilisateur pour le travail, et un tel cycle a été constamment répété.

Donc, même si vous pouviez parcourir la mémoire et supprimer le vidage de la mémoire, c'est toujours assez difficile, et obtenir tous les exploits, tout de même, ces tampons sont effacés à chaque fois.
Heureusement, si vous pouvez copier et coller ces exploits dans le programme dont vous avez besoin, vous pouvez trouver la réponse. Pour cela, un outil de décryptage très puissant est utilisé - les scripts IDA. Avec lui, vous pouvez commenter ou vider une zone mémoire spécifique, mettre à jour les exploits, cela peut être utile pour travailler avec des logiciels malveillants qui utilisent des chaînes compliquées par xor, base64, etc. J'ai écrit un script IDE avec lequel j'ai essayé de démonter un vidage de mémoire capturé d'un exploit chiffré.

Il parcourt tous les objets chiffrés, recherche tous les appels aux fonctions de déchiffrement, capture les objets chiffrés, les déchiffre à l'aide de XOR puis supprime le vidage. C'est une façon, mais je pense que vous pourriez écrire votre propre script, une application qui fait de même. Si vous savez comment ajouter de nouveaux exploits à Neosploit, vous pouvez faire quelque chose dans ce sens et bien sûr, dès que vous supprimez le vidage, vous reconnaîtrez tout le texte en clair, vous pourrez le «détacher» de l'instrumentation et le revendre. Les nouveaux gars qui développent les exploits ont simplement abandonné parce que quelqu'un faisait de l'argent sans se soucier de ses clients.
Si quelqu'un a entendu le grand philosophe hip-hop Biggie Smalls de Notorius BIG, alors il connaît sa chanson intitulée Ten crack commandments, «The Ten Commandments of Crack», qui contient une grande sagesse. Si vous êtes un trafiquant de drogue, suivez le commandement 4: "Ne vous asseyez jamais sur votre propre drogue que vous poussez." Probablement le gars que j'ai appelé Peeper et qui a distribué son propre code malveillant n'a jamais entendu cette chanson parce qu'il a testé son produit sur lui-même.
Son attaque était la suivante. Il a envoyé des courriels, déguisés en divers organismes gouvernementaux et s'est adressé aux gens par le nom: «Cher tel ou tel, quelqu'un a déposé une plainte contre votre entreprise auprès de la Federal Trade Commission, alors cliquez ici pour télécharger un document qui détaille l'essence» .

Ensuite, l'utilisateur a suivi le lien et a essayé de télécharger ce document, et c'était vraiment un document Word au format .doc. Cependant, il y avait une fonctionnalité très délicate. Vous avez eu la possibilité de simplement glisser-déposer des fichiers exécutables à partir d'un document Word, puis de les renommer, mais lorsque vous avez essayé de télécharger le fichier, le message «Microsoft Word a détecté un problème et le document n'a pas pu être téléchargé. Veuillez double-cliquer sur l'icône du document pour continuer. " Super idée!

Naturellement, les gens ont cliqué, ils ont cliqué 6 fois pour recevoir ce message infecté, donc ce type a eu un tas de victimes. J'ai aimé ce message: "Ils ont essayé de me piéger, bla bla bla."
La prochaine chose que nous avons trouvée en suivant ce type était les répertoires ouverts du Drop Directory, où il a vidé les informations qu'il avait reçues.

Peut-être qu'il n'avait pas ses propres outils pour les gérer, ou il pensait que les répertoires ouverts sont une bonne chose, mais les répertoires ouverts sont mauvais si vous stockez beaucoup d'informations reçues de différentes personnes. Tout serveur qu'il configurerait pour son site "d'atterrissage" avait un répertoire ouvert, et vous pourriez simplement y aller et voir les listes de toutes ses victimes et chacune individuellement.
D'une certaine manière, il était un bon développeur car il écrivait du code de qualité. Mais son inconvénient était que lorsqu'il adressait son code à un serveur en direct, il utilisait sa véritable adresse IP, et vous n'utiliseriez pas longtemps de telles choses.

Donc en fait, il avait un modem DSL standard qui a pris contact avec l'Ukraine, il a testé tout son code et malware, qui a une bonne fonction appelée "suivez-moi" ou "suivez-le". Ce gars était occupé à voler des informations bancaires, mais parfois il voulait juste regarder ses victimes pour voir ce qu'elles faisaient, alors nous l'avons appelé Peeper, ou «Observateur». Il n'était pas satisfait de la simple fonctionnalité de son logiciel, il a commencé à se surveiller. Cela semble plutôt étrange, comme si vous ouvriez des fenêtres d'accès à distance VNC sur votre propre ordinateur et les boucliez, obtenant des images de plus en plus petites. En fait, il l'a fait plusieurs fois, sur de nombreux serveurs "d'atterrissage", en effet, c'était très, très étrange. Donc en regardant à travers ces serveurs "d'atterrissage", on pourrait dire: "Oh, regardez, c'est une image où il s'observe, s'observe, qui s'observe."

«Ma lumière, miroir, dis-moi, qui au monde est le plus doux»?
J'ai surtout aimé ce qu'il a fait pour lui-même. Il a utilisé cette fonction Follow Me dans le processus de développement du code. En fait, il a écrit le code, en s'observant, en renvoyant tout cela au serveur de commande et de contrôle. Ainsi, il a permis aux policiers de franchir la porte arrière, de le coucher face contre terre et de confisquer son ordinateur. En bref, rien ne permet de se débarrasser de vous comme une image d'une arborescence source attachée à votre adresse IP.

Le dernier malware que nous examinerons intéressera sûrement les gens qui connaissent Internet Explorer 7. Mais ne vous inquiétez pas, Microsoft dit que tout est sous contrôle, faites-leur confiance!

Ainsi, Microsoft a eu un gros problème avec Internet Explorer 6, car il était très facile de voler des mots de passe enregistrés dans ce navigateur. Habituellement, vous allez sur le site, ils vous demandent si vous souhaitez enregistrer le mot de passe, un formulaire spécial est appelé, vous répondez «oui» et il est enregistré dans le registre. Le problème avec IE 6 était que si vous vous connectez en tant qu'utilisateur, vous n'avez qu'à effectuer un seul appel système CryptUnprotectData () pour décrypter ces mots de passe qui n'ont vraiment aucune protection.
Par conséquent, les logiciels malveillants exécutés avec des privilèges d'utilisateur lisent ces mots de passe librement et les envoient à l'attaquant. Par conséquent, dans IE 7, ils ont installé un excellent «patch» - les mots de passe ont été chiffrés avec une clé de 128 bits. Vraiment pas une solution crackable!
Si vous regardez plus en profondeur, vous pouvez voir le hachage disponible sur le site, je l'expliquerai un peu plus tard, dans lequel il y a un fichier binaire contenant le nom d'utilisateur et le mot de passe. Je veux citer un autre grand philosophe, John Travolta, du film Swordfish. Mon passage préféré est quand il est assis là et explique: "Ce code est si bon que même je ne peux pas le casser." Je pense qu'il avait en tête le chiffrement 512 bits, et lui, le meilleur chiffreur au monde, pourquoi il a été embauché, dit que même il ne peut pas le faire.
Voici donc ce que Microsoft a fait. Ils chiffrent le mot de passe, pour lequel ils vont générer une clé de 128 bits basée sur le hachage MD5 du site pour lequel ils enregistrent ce mot de passe. Cela semble assez raisonnable, donc si vous allez sur
www.bank.com/login.sp , ils prendront cette ligne, rendront toutes les lettres en minuscules, puis les encoderont en gros caractères et utiliseront l'algorithme MD5, transformant cette ligne en une clé qui sera utilisé pour crypter le mot de passe dans le registre du nom d'utilisateur.
Ensuite, lorsque vous visitez ce site pour lequel il existe un mot de passe enregistré, ils font le contraire: IE normalise l'URL, transcode la chaîne et regarde dans le registre pour voir s'il y a des valeurs stockées pour vous. En détail, cela se passe comme ceci:
- lire le hachage du registre pour chaque URL dans index.dat;
- L'URL est convertie en minuscules;
- Les paramètres GET sont réduits;
- L'URL est convertie en gros caractères;
- si le hachage de la valeur d'URL est égal à n'importe quelle valeur du registre, les données sont déchiffrées à l'aide de cette URL.
Cela semble assez raisonnable, mais si vous y réfléchissez, il y a un petit problème. En fait, il y a trop peu d'entropie et le pirate peut facilement y faire face. Ce n'est pas beaucoup plus compliqué que le cryptage des mots de passe dans IE 6.
Le pirater est assez simple. Pour enregistrer le mot de passe, l'utilisateur doit visiter le site, qui peut ensuite être facilement trouvé dans index.dat ou dans la section de clé de registre «TypedURLS». Si nous considérons uniquement les États-Unis, il existe environ 15 000 sites de banques et coopératives de crédit, et vous pouvez facilement les trouver. Vous connaissez les sites pour lesquels vous souhaitez trouver des mots de passe, et chacun de ces sites possède des pages de connexion, il est donc facile de rassembler toute une collection de clés. Comme vous pouvez le voir, la protection ici est clairement insuffisante.
Bien sûr, si vous êtes un méchant, vous connaissez probablement beaucoup de sites qui ont besoin de mots de passe: Facebook, Myspace ou Twitter ou autres avec une page de connexion, vous pouvez donc simplement trouver ces sites. Vous pouvez utiliser le service Alexa, qui maintient une liste des sites les plus populaires, en collectant des statistiques sur leur trafic. Les clés sont vraiment faciles à décrypter, vous pouvez faire quelque chose comme une «table arc-en-ciel» Rainbow Table basée sur ces sources courantes et vous aurez alors toutes les clés pour décrypter les mots de passe.
, IE 7 : , .
? , . . , Mozilla Firefox, , . , , , «Remember My password». . Firefox IE 7 , , , , .
, , , .
Laqma. , , . - , , , command and control.

, . , , PHP -, PHP , – .
.
: , , , . , . Laqma, . , , Laqma , . , SSDT, IDA - .
, Volatility, . , Laqma, SSDT , , . SSDT, , SSDT, SSDT.

TOS, win32k, , . SSDT , , TOS win32k.
, , , , drv, .sys, . , . , SSDT . .
Ce processus est légèrement automatisé à l'aide du plugin SSDT. Vous voyez comment BSOD a clignoté à l'écran, cela a fonctionné le programme de ligne de commande IDA. À la suite du traitement automatique, un IDB est créé, c'est un peu plus d'automatisation, à la suite de quoi les fonctions IDB correspondant aux fonctions SSDT «accrochées» sont signalées.Ainsi, avec une petite étape, nous avons appris quelles fonctions SSDT étaient associées au vidage qui possède le module IDB créé, et nous pourrions les nommer pour savoir exactement où chercher dans IDB lorsque je commence la rétro-ingénierie.J'espère que tu t'es amusé!Merci de rester avec nous. Aimez-vous nos articles? Vous voulez voir des matériaux plus intéressants? Soutenez-nous en passant une commande ou en le recommandant à vos amis, une
réduction de 30% pour les utilisateurs Habr sur un analogue unique de serveurs d'entrée de gamme que nous avons inventés pour vous: Toute la vérité sur VPS (KVM) E5-2650 v4 (6 cœurs) 10 Go DDR4 240 Go SSD 1 Gbps à partir de 20 $ ou comment diviser le serveur? (les options sont disponibles avec RAID1 et RAID10, jusqu'à 24 cœurs et jusqu'à 40 Go de DDR4).
VPS (KVM) E5-2650 v4 (6 cœurs) 10 Go DDR4 240 Go SSD 1 Gbit / s jusqu'en décembre gratuitement en payant pour une période de six mois, vous pouvez commander
ici .
Dell R730xd 2 fois moins cher? Nous avons seulement
2 x Intel Dodeca-Core Xeon E5-2650v4 128 Go DDR4 6x480 Go SSD 1 Gbps 100 TV à partir de 249 $ aux Pays-Bas et aux États-Unis! Pour en savoir plus sur la
création d'un bâtiment d'infrastructure. classe utilisant des serveurs Dell R730xd E5-2650 v4 coûtant 9 000 euros pour un sou?