Conférence DEFCON 18. Vous avez dépensé tout cet argent, mais ils continuent de vous avoir. 2e partie

Conférence DEFCON 18. Vous avez dépensé tout cet argent, mais ils continuent de vous avoir. Partie 1

J'utilise une chose intéressante de Gary O'Leary-Steele appelée Unicod-fun, qui est plutôt bonne pour un utilitaire écrit en Ruby. Vous savez que mes outils doivent être écrits exclusivement en Python, nous avons donc traduit cela en Python. Nous pouvons maintenant appliquer un codage différent pour les outils conçus pour attaquer les applications Web et faisant partie du cadre WAF.



Le cadre WAF comprend WAF Fun et WAFWOOF et fonctionne sur la base du multicodage et des informations reçues du proxy, et il peut fonctionner via des proxy Tor ou GLib dans le processus de faire toutes ces différentes choses. C'est donc vraiment une chose utile pour obtenir les informations dont vous avez besoin.

Nous avons parlé d'attaquer des sites Web via Tor; j'en ai parlé en détail l'année dernière. La diapositive suivante montre les scripts d'une telle attaque:

alias hide='su -c "/home/j0e/dumbscripts/hide.sh"' $ cat /home/j0e/dumbscripts/hide.sh #!/bin/bash # Startup privoxy /usr/sbin/privoxy /etc/privoxy/config # Start Tor /usr/bin/tor $ hide 

Il convient également de mentionner le plugin, qui est intégré en tant que bouton Tor dans Firefox.
Je ne sais pas si vous avez travaillé avec le DotNet Defender WAF utilisé par ces fichues sociétés. Nous avons constaté qu'il est capable de protéger le serveur contre l'injection SQL. Sur la diapositive, vous voyez le résultat de la génération d'une attaque de script intersite - dotDefender a bloqué notre demande.



Ensuite, vous voyez une tentative de contourner ce type de protection à l'aide de l'injection SQL sans aucun codage. Et DotNet Defender ne pouvait rien y faire.



Le fait est qu'il ne bloque que certaines injections SQL, contenant principalement le mot select. C'est le summum de la technologie de sécurité - bloquez le mot sélectionner. Si vous chiffrez en Unicode, vous pouvez passer devant ce défenseur, ils ont donc corrigé cette vulnérabilité l'année dernière, mais n'ont rien fait contre les autres normes de codage. Par conséquent, si vous utilisez un encodage différent, vous pouvez facilement contourner DotNet Defender. Cela m'a permis de réinitialiser le hachage du mot de passe administrateur sans aucun encodage.



Alors désolé les gars du DotNet Defender, mais vous devez corriger votre merde.

Donc, la chose importante que j'ai réussi à faire était de pénétrer le LAN via Internet. C'est déjà assez difficile, mais toujours possible. Pour cela, j'ai utilisé un outil simple en Perl, j'ai dû le supporter, même si je suis un ardent adepte de Python. Cela fonctionne très bien, grâce à lui, vous pouvez charger l'interface réseau shell netcat ou meterpreter via un tunnel DNS. Il s'agit d'un projet vraiment formidable et une nouvelle mise à jour a récemment été publiée.



Ce qui suit est un moyen d'injecter du SQL à l'aide de l'outil Carte SQL. Cet outil, écrit en Python, vous permet de télécharger os-shell ou meterpreter. Il a également son propre os-shell, avec lequel vous pouvez bricoler. Ainsi, vous pouvez entrer les commandes nécessaires pour contrôler le système, configurer netcat ou entrer directement dans le shell meterpreter, donc j'utilise cet outil assez souvent.

Et maintenant, nous allons passer à un matériel plus important. Le nom officiel de cette partie du rapport est de ne pas se laisser prendre! Ne soyez pas un tigre!



Tout ce que je fais, c'est de ne pas me faire prendre. Qui est Tiger? C'est un punk, un punk flippant, qui est d'accord avec moi? Si je vaux un milliard de dollars et que vous êtes une pornostar, vous savez que j'ai des gens qui sont prêts à vous tuer si vous la laissez filer. Êtes-vous d'accord avec moi?

Donc, la chose la plus importante à ne pas faire est de définir des filtres d'intrusion. Beaucoup de gens essaient différentes options. Le premier est le filtrage côté client. C'est mauvais. C'est mauvais. Et cinq fois de plus - c'est mauvais! N'utilisez pas de scripts JavaScript ou VB, ni quoi que ce soit du côté client pour essayer de filtrer les entrées provenant d'une application importante. Ou si vous utilisez un framework comme J2EE qui crée ces JavaScripts, vous devrez écrire du code côté serveur qui vérifie que tout ce qui provient du client est correct.



Vérifiez le code source pour tout paramètre passant par le site qui peut être filtré à l'aide du script JavaScript ou VB, et supprimez-les. Enregistrez la page localement et supprimez les scripts JavaScript ou VB appropriés ou utilisez un proxy local tel que Paros, Web Scarab, Burp Suite.

Si vous venez de conclure ce putain de contrat avec une personne, gardez à l'esprit que tout ce qui se passe mal sur la machine du client, vous devez donc enseigner ces petites leçons aux développeurs. Je leur dis: "OK, développeur, je veux que vous y réfléchissiez, parce que vous allez placer toute cette sécurité dans un ordinateur portable pirate!" Pensez-vous que ce soit vrai? " Par conséquent, les gars, n'utilisez pas le filtrage côté client!

Voici les restrictions de la liste noire. Souvent, les gens essaient de restreindre l'utilisation de caractères spéciaux. Eh bien, disons que vous ne pouvez pas envoyer un signe égal, plus ou moins de signes, etc.



Mais en ce qui concerne la syntaxe SQL, vous n'avez pas à indiquer que 1 = 1. Par exemple, dans la demande http: // [site] /page.asp?id=2 ou 1 comme 1, vous pouvez généralement éviter d'utiliser le signe égal et l'opérateur or en les remplaçant dans la barre d'adresse par les mots "et" et " comme ", par exemple," et 1 comme 1 "," et 1 comme 2 "et ainsi de suite:

http: // [site] /page.asp?id=2 et 1 comme 1
http: // [site] /page.asp?id=2 et 1 comme 2

En fait, dans la plupart des cas, les injections SQL n'utilisent pas de caractères spéciaux.
Ensuite, considérez l'IDS basé sur la signature. Dites-moi, lequel d'entre vous a une telle table sur votre tapis de souris? Si vous avez un tableau de codes décimaux ASCII ou HEX, déchirez-le avec ce tapis.



Ce que j'ai appris hier soir quand j'étais ivre dans la semelle intérieure, c'est que l'ASCII fonctionne vraiment! Ainsi, lorsque vous traitez avec IDS et recevez une alerte TCP de n'importe quelle IP, de n'importe quel port, arrivant sur le port de notre serveur Web, recherchez un type de données spécial 1 = 1. Pensons, combien de hackers ont pu attraper cette chose? Réfléchissons-y.



2 est 2? Quarante onces équivalent à quarante onces? 1 = 1 n'est pas le seul moyen de créer une demande pour laquelle vous pouvez obtenir une réponse "vrai", vous pouvez envoyer une demande de type "2 = 2", "1 <2" et ainsi de suite. Si les signatures sont si faciles à contourner, pourquoi sont-elles nécessaires? La réponse est pour les outils automatiques et les enfants.

La diapositive suivante montre ma vision IDS basée sur la signature - c'est le gardien de but qui a attrapé 1 balle tandis qu'une centaine de balles ont volé à travers le but.



L'utilitaire pentester appelé sqlmap contourne cette protection que je vous ai montré par défaut, et il est également écrit en Python!

Une chose similaire est montrée sur la diapositive suivante. Ici, pour une solution de contournement, j'ai utilisé la technique 2 ou 2 et sélectionné l'utilisateur.



Dans ce cas, j'ai présenté l'expression entière en code hexadécimal, mais vous pouvez le faire en Unicode, utf7, utf-8, utf-16, dans n'importe quel encodage, cela n'a pas d'importance, cette méthode fonctionne toujours et vous permet de contourner de nombreux WAF.

Il y a un autre produit dans le domaine de PHP - c'est PHP IDS, je pense que c'est vraiment cool qu'ils aient maintenant une démonstration de ses capacités sur le site. Si vous allez sur demo.phpids.net, vous pouvez essayer le test de fumée. Ce Smoketest vous permet d'essayer toutes vos injections SQL, les scripts intersites ou les attaques d'applications Web et vous montre quelles signatures ces attaques détectent, afin que vous puissiez continuer à pratiquer le kung-fu sur Internet.



Par exemple, vous pouvez appliquer un effet, obtenir une signature, en essayer une autre, obtenir un autre ensemble de signatures, etc. Vous continuez simplement à travailler et à travailler jusqu'à ce que ce mauvais garçon dise que tout est en ordre, que vous avez contourné la défense et que rien d'autre ne vous «fume». Donc, vous perfectionnez vos compétences en kung-fu jusqu'à ce que vous trouviez quelque chose qui peut contourner la plupart des règles.



Maintenant, Modsecurity s'est associé à PHP IDS, et ils ont leur propre test de fumée. Je ne l'ai pas ajouté à mes diapositives en raison d'une gueule de bois le matin, mais je dirai qu'ils ont réussi à combiner le jeu de règles Modsecurity avec le jeu de règles PHP IDS dans une seule interface Web, il vous suffit donc d'y insérer vos exploits jusqu'à ce que vous contourniez toutes les règles. En bref, l'IDS basé sur les signatures n'est qu'une blague stupide. Au moins, je n'avais pas de clients qui connaissaient ces produits, mais ils les ont quand même achetés. Mais c'est une histoire légèrement différente.

Je comprends parfaitement ceux d'entre vous qui sont analystes d'IDS et de WAF. Je sais que je parle beaucoup, mais je ressens votre douleur parce que j'avais l'habitude de faire votre travail, et il n'y a pas assez d'alcool dans le monde pour supporter le travail que vous faites.



Ainsi, la grande majorité des choses que je viens de vous montrer se font via le réseau. Comme je l'ai dit, vous interagissez à distance avec IDS et IPS, chargeant divers exploits. Combien d'entre vous ont traité avec JBoss, un serveur d'applications open source, savent que la plupart des fichiers sont téléchargés à l'aide de celui-ci. L'injection SQL code simplement certains chemins que je peux y accéder, ce qui me donne généralement accès au shell et à la DMZ, et j'essaie de travailler à partir de là.

Après cela, je fais une chose incroyable et envoie un e-mail au client car cela fonctionne. Votre côté client avec le framework Metasploit est tout simplement merveilleux, vous pouvez donc choisir tout ce qui prend en charge le dernier navigateur, PDF, ActiveX ou exploit de fichier, assurez-vous qu'il inverse le shell TCP, après quoi Metasploit transforme ce message en HTTPS. Tout est super, la seule mauvaise chose c'est qu'il est écrit en Ruby. Mais l'outil Python SET est un tout nouveau niveau de pentesting.



Cet outil vous permet de faire des choses incroyables. SET a été créé par David Kennedy du groupe ReLic, félicitons-le pour cela. C'est exactement ce dont nous avons besoin pour illustrer l'essence de ce qui se passe. Les pirates n'analysent plus les ports de votre réseau, s'ils n'essaient pas de le faire, alors en tout cas ils ne vont probablement pas prendre le contrôle du shell. Les pirates essaient de vous télécharger quelque chose de malveillant en utilisant le courrier électronique ou quelque chose comme ça.

Par conséquent, il est nécessaire que le client comprenne que lors d'un pentestage, il est nécessaire de tester son système pour la résistance aux effets des sites frauduleux, du phishing, etc. Surtout si vous rencontrez un tel client que j'avais, il s'est levé et a dit: "OK, Joe, je ne vais pas vous payer des conseils pour enseigner aux employés de l'entreprise comment utiliser correctement le réseau." Il faut donc reproduire toutes les vraies menaces côté client pour qu'il comprenne à quel point c'est sérieux.

Ainsi, la prochaine étape du pentesting est l'attaque de pivot, ou «attaque tournante», dans laquelle un hôte piraté est utilisé pour attaquer d'autres hôtes. «Turning Attack» sur le LAN est une partie importante du pentesting côté client.



Metasploit prend en charge Pivot, et si je n'ai pas la possibilité de télécharger l'archive .cab avec tous les fichiers exécutables qui ont été statiquement compilés à l'avance, il n'est pas nécessaire d'installer quoi que ce soit. Je l'utilise dans mon atelier pour faire un déploiement Pivot sur un LAN, donc je «saute» dedans et commence à bouger à partir de là.

La prochaine chose que j'envisage, ce sont les solutions de sécurité générales pour le LAN. Ce manque de DHCP, c'est-à-dire les adresses IP statiques, les adresses MAC DHCP, la sécurité des ports, les solutions NAC, sont des choses qui me rendent incapable d'accéder au réseau. Alors, que dois-je faire si je ne peux pas accéder au net?

Si DHCP est manquant et que les adresses IP sont statiques, je vole une adresse IP valide à l'hôte. Mes enfants m'ont appris cela parce que les adresses IP statiques sont une chose incroyablement inefficace. J'espère que vous n'avez pas de clients qui disent qu'ils vont arrêter les pirates utilisant des adresses IP statiques. Je fais de même en présence d'adresses MAC DHCP - je vole une adresse MAC valide. Si nous avons un port sécurisé, je vole également une adresse IP ou MAC valide. Enfin, s'il existe des solutions NAC, vous pouvez simplement prendre l'ordinateur, le retourner et regarder son adresse MAC, ou essayer de trouver des exceptions de protocole 802.1x, c'est-à-dire des périphériques qui ne prennent pas en charge 802.1x, tels que des imprimantes, des copieurs, des supports de CD-ROM et téléphones VoIP.

Toutes ces méthodes fonctionnent pour moi, et les meilleurs appareils pour pénétrer les LAN sont les téléphones VoIP. J'avais de nombreux clients qui utilisaient l'autorisation automatique des téléphones VoIP dans le réseau vocal en fonction de l'adresse MAC et de la balise VLAN. Ainsi, vous pouvez créer une «boîte» Linux similaire à un téléphone VoIP et vous écraser sur un réseau LAN vocal virtuel, en contournant les solutions NAC.

La plupart des téléphones de mes clients devaient être connectés directement au centre logiciel CallManager dans la DMZ interne, car tous les centres CallManager devraient fonctionner avec d'autres serveurs, donc ma réception a bien fonctionné pour l'ensemble du réseau.

Il existe une chose appelée Voip Hopper qui automatise le processus de pénétration d'un VLAN vocal. Vous pouvez télécharger cet exploit depuis voiphopper.sourceforge.net et l'utiliser pour «sauter» directement dans le VLAN.

Lorsque je pénètre dans le réseau, je découvre généralement d'abord qui est l'administrateur du domaine. Sur la diapositive, vous voyez une liste de commandes que j'utilise: définir - pour trouver des informations sur le domaine et les utilisateurs, vue réseau - pour voir les ordinateurs du réseau, les domaines utilisateur et d'autres domaines, net localgroup - pour trouver des groupes locaux d'ordinateurs et ainsi de suite.



Je fais cela pour découvrir qui et dans quels groupes travaille sur le réseau afin d'essayer d'attaquer leurs ordinateurs. Encore mieux, si je peux obtenir un administrateur local ou un système local, la prochaine chose que je fais est de scanner le réseau pour déterminer qui est l'utilisateur spécifique de cet ordinateur.



Vous pouvez utiliser une variété de scripts pour inspecter le réseau pour savoir où, sur quelle machine se trouve la «boîte» de l'administrateur. Si vous avez "attrapé" un administrateur local ou un système local, vous pouvez "sauter" dans leur "boîte" et utiliser le shell pcexec à partir de là.



Après avoir sauté dans la «boîte», je commence à chercher un moyen d'augmenter mes privilèges. Construire des privilèges est une chose vraiment difficile. Dans Windows XP, ces choses fonctionnent même avec le Service Pack Sp3, qui utilise cette belle interface de ligne de commande cmd.exe, ce qui est une excellente chose.

Lorsque j'ai tenté de tester une banque, j'ai dû «tuer» le service d'infrastructure McAfee, qui fait référence au système de prévention des intrusions HIPS. Pour cela, j'ai utilisé la commande pskill.exe. J'ai donc désactivé McAfee, désactivé HIPS, désactivé l'intercepteur et firepm et tous les autres processus lancés par le système de prévention des intrusions.



Une autre chose que je n'ai pas eu le temps de montrer sur la diapositive est que lorsque vous désactivez McAfee, vous devez d'abord augmenter les privilèges, et cela fonctionne également en ce qui concerne la protection des terminaux Symantec. Le fait est qu'après avoir «tué» tous ces processus, ils recommencent après un certain temps. Par conséquent, vous devez «décrocher» les fichiers DLL en mémoire pour arrêter le redémarrage de la protection. Je n'ai pas posté cela sur les diapositives, mais si vous vous en souvenez plus tard, je vais vous donner la syntaxe de cette astuce.
Une autre chose que je viens d'apprendre sur McAfee est que les fichiers de la liste d'exclusion apparaissent sous un nom spécifique, pas un hachage ou quelque chose de similaire. Par conséquent, les fichiers inclus dans la liste d'exclusion antivirus McAfee ne sont pas protégés contre les dépassements de mémoire tampon et je vais utiliser ce fait à mes propres fins.

Ce qui suit montre le «massacre» de HIPS en tant que système avec Metasploit. Maintenant, ils ont quelque chose appelé getsystem, vous pouvez donc simplement écrire Metasploit, appeler getsystem et il vous lancera directement dans le système en utilisant l'une des quatre méthodes: arrêter la protection antivirus générale, arrêter HIPS, "tuer" les processus McAfee ou "tuer" Processus HIPS.



La dernière chose que je voulais montrer était la capture de domaine.



Dès que j'arrive dans la «boîte» de l'administrateur, j'utilise tous les jetons que j'ai volés et commence à utiliser ses pouvoirs. Empruntant l'identité d'un administrateur de domaine, je crée un groupe d'utilisateurs et je les ajoute au groupe d'administrateurs. Pour mes besoins, cela fonctionne très bien.



En ce qui concerne la protection, je disposerai de 1 à 2 pages de documentation sur la protection contre chacune des attaques dont j'ai parlé aujourd'hui. Il indique comment mener une attaque et comment se défendre contre elle. Donc, si vous avez besoin de telles informations, contactez-moi, tous les contacts sont sur la diapositive.

Si je n'ai pas de questions, je vais m'arrêter là.



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 janvier 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?

Source: https://habr.com/ru/post/fr432496/


All Articles