web-dev-qa-db-fra.com

Alternatives à Metasploit Meterpreter

Ces jours-ci, je teste différents types de techniques de piratage client, mais dans tous les scénarios, j'utilise les variations de Meterpreter comme charge utile. Maintenant, je peux contourner facilement les antivirus et les pare-feu, mais Symantec Sonar et IPS détectent toujours les charges utiles Meterpreter et bloquent l'adresse IP de l'attaquant.

Y a-t-il une meilleure charge utile que Meterpreter qui peut contourner IPS?

Existe-t-il un tutoriel d'écriture de charge utile sur le net qui correspond à mes besoins?

26
r4ym0nd PenTester

Contourner AV et IPS peut être fait via meterpreter ou tout autre RAT. La plupart du temps, meterpreter est pratique car d'abord il est open source et ensuite il est implémenté comme un réfléchissant DLL qui s'insère dans le processus exploité sans toucher au disque.

Les solutions AV peuvent être contournées facilement via le projet Veil Evasion tandis que reverse_https meterpreter peut contourner le IPS car la connexion est cryptée. Vous avez la possibilité de Stage Encodage pour encoder également le deuxième étage metsrv.dll, qui peut contourner de nombreuses solutions IPS. De plus, le compteur sans mesure sur HTTPS est très pratique pour contourner la détection basée sur l'hôte et le réseau solutions aussi.

Cependant, meterpreter étant parfois une charge utile synchrone où l'utilisateur doit interagir avec la session devient difficile à gérer, par exemple lorsque des attaques ou des campagnes côté client doivent être exécutées sur de longues périodes. Dans de tels cas, vous avez toujours la possibilité d'utiliser Throwback , Pupy , ou Cobalt Strike's Beacon payload. L'avantage de ces charges utiles est qu'elles sont de nature asynchrone et qu'elles sont toutes implémentées en tant que DLL réfléchissantes, ce qui signifie qu'elles peuvent être utilisées avec Metasploit via le type payload/windows/dllinject/payload. Et comme ces charges utiles ne sont pas utilisées aussi souvent que le mètre mètre simple dans l'arborescence source de Metasploit, elles peuvent contourner de nombreuses solutions AV et IPS dès le départ.

Dernièrement, les charges utiles implémentées dans Powershell pur peuvent contourner AV ainsi que IDS/IPS. Powershell Empire est une telle charge utile implémentée dans Powershell pur.

Une chose qui manquait à Meterpreter est de scripter les actions dans la première étape sans contacter le gestionnaire. Une telle chose est maintenant dans la source principale avec Python metrepreter, et dans les prochains jours, la fonctionnalité sera également portée sur d'autres types de charge utile metrepreter. Jetez un œil à ma réponse sur - Techniques for Anti Virus evasion pour une liste des techniques de contournement AV pour plus d'explications sur le sujet.

30
void_in

PowerShellEmpire et Slingshot sont les deux principales considérations pour les implants à partir de 2016. Cependant, vous pouvez obtenir ces implants facilement détectés par la détection d'intrusion, les moteurs antivirus avancés et les pratiques de chasse aux menaces si vous ne comprenez pas les techniques.

Meterpreter et Cobalt Strike Beacon ont également leur place. Une porte dérobée intéressante que j'ai rencontrée l'autre jour appelée slarpd (du projet zarp ) est un shell distant uniquement sur le réseau local car il fonctionne sur ARP . Cobalt Strike a suggéré des obus de réseau supplémentaires bas et lents, presque invisibles sur SMB nommés tuyaux .

Meterpreter, Beacon, Slingshot et Empire suggèrent tous, si vous utilisez un canal secret HTTPS, d'utiliser d'abord Wininet au lieu de WinHTTP. Meterpreter nécessite également beaucoup de configuration lourde pour les canaux cachés du réseau - mais la bonne nouvelle est que cette page wiki appelée Mode Paranoïde contient la plupart des informations dont vous aurez besoin pour la configurer correctement - de manière à pour éviter la détection.

Le concept de balisage (ce que tous ces implants font très fort aujourd'hui - cela changera probablement en 2016) est un énorme problème à surmonter, tout comme se faire prendre par les activités de chasse. Empire l'implémente mieux dans ses configuration de l'écouteur et config. Empire dispose de paramètres pour DefaultDelay, DefaultLostLimit, KillDate, WorkingHours et un paramètre DefaultJitter anti-balisage unique (pas que la plupart de ces paramètres ne soient pas incroyablement efficaces et uniques). Metepreter n'a que SessionCommunicationTimeout et SessionExpirationTimeout - et uniquement via HTTPS.

Empire empêchera également le (s) opérateur (s) de faire des erreurs critiques avec un message "Le module n'est pas sûr pour opsec, il fonctionne toujours?". Cependant, selon la façon dont Empire est initialement livré, l'agent peut toujours être détecté de diverses manières. La meilleure façon de fournir Empire est via un navigateur (par exemple, Win7/IE8/Java6 ms13_055_canchor) ou un exploit Flash (par exemple, des exploits flash tels que ceux trouvés dans la campagne Operation Clandestine Wolf réutilisés comme Adobe_flash_nellymoser_bof - ou même l'UAF de l'équipe de piratage dans le propriété opaqueBackground et un autre dans les objets ByteArray réutilisés comme Adobe_flash_hacking_team_uaf). Dans la méthode décrite par @void_in ci-dessus (et dans mon commentaire), powershell.exe (ou l'agent Empire) n'est jamais démarré en tant que processus, mais simplement injecté dans le même espace mémoire que le navigateur (puis via psinject , selon les autres processus que vous désirez). La livraison via Microsoft Office (ou Adobe Reader PDF ) exploit ou macro est la deuxième meilleure alternative. La livraison via un exécutable, que ce soit via une clé USB, SMBRelayX, WebDAV de style Stuxnet, dossier partagé, etc. est l'une des plus faciles à détecter. Si la cible connaît les capacités offensives de PowerShell (par exemple, exécute CrowdStrike ou similaire), vous pouvez parier que tout powershell.exe - qu'il soit fourni par un navigateur (par exemple, hta_powershell dans BeEF) - ou via la ruse en ligne de commande telle que tout non-DLL stager d'Empire, PowerShell Web Delivery de Cobalt Strike, DryRun de metasploit-framework de pexec_psh, et similaires ne fonctionnera pas dans ces versions modernes, infrastructures protégées. Vous vous ferez attraper.

Souvent, il sera préférable de créer un canal secret personnalisé et/ou C2 en fonction des caractéristiques du réseau cible. ARP ou SMB les pipes nommées semblent géniales (même avec leurs restrictions), mais se démarqueront-elles trop au mauvais moment? metressh ou cheetz/c2 sont probablement super les candidats pour les environnements lourds SSH et HTTP trafiqués respectivement, mais eux aussi peuvent être interceptés. Les techniques à faible et à faible vitesse s'avèrent moins valides - et si votre chemin d'exfiltration (si tel est l'objectif ou la nécessité d'implant, c'est-à-dire de voler données) ne correspond pas suffisamment au taux de journalisation de la défense, alors vous avez peut-être déjà perdu. Peut-être que IPv6 ou d'autres obfuscations de réseau vous aideront (par exemple, SniffJoke) mais peut-être pas non plus. Je suis personnellement attaché à trouver une tête de pont qui peut envoyer TLS correctement configuré via Tor (pour protéger l'analyse du nœud de sortie) ou même vers un nœud Tor contrôlé, mais j'apprécie également les approches FASHIONCLEFT, Ncovert et covert_tcp . Peut-être une combinaison de tous les au dessus de?

Quels modules prévoyez-vous d'exécuter? Exécuter n'importe quelle routine Meterpreter et Mimikatz, télécharger des fichiers, horodatage, etc. - ce sont des indicateurs de compromis clairs et présents. Étonnamment, l'effacement des journaux d'événements n'est pas autant que vous le pensez, mais à mon avis, il est également préférable de les laisser seuls. Dans la plupart des environnements, les routines Meterpreter sont très facilement détectées, bien qu'il y ait des gains que j'identifierai dans le paragraphe suivant. Empire en a la majeure partie - vous pouvez exécuter situational_awareness/Host/winenum et situational_awareness/Host/paranoia suivi par collection/netripper et une utilisation très ciblée de collection/ninjacopy. Je pourrais suggérer que vous évitiez d'avoir des contacts avec credentials/powerdump car cela peut être plus bruyant que vous ne le souhaiteriez - même ninjacopy accède techniquement au disque (mais il le fait différemment). collection/inveigh (c.-à-d. Responder.py implémenté dans PowerShell) est un excellent module - rester persistant dans les réseaux pour 2016 ne signifie pas que vous devez réellement exécuter des hooks de système d'exploitation persistants (par exemple, Autoruns, Services, Tâches planifiées), mais plutôt savoir autant sur chaque machine et informations d'identification sur le réseau. collection/minidump doit également être utilisé avec précaution - il est probablement préférable de tester tout cela et d'appliquer toutes les technologies défensives (par exemple, AV, IPS basés sur le réseau et HIPS) et les techniques de chasse (par exemple, journalisation Powershell, événements Sysmon) ) avant de lancer la production avec vos implants.

Il y a beaucoup de techniques amusantes qui peuvent être livrées via Metepreter qui ne peuvent pas être faites avec Empire - utiles dans CCDC et événements similaires. Par exemple, je ne connais pas de moyen de désactiver la souris et le clavier avec Empire, mais dans Metepreter, c'est un simple uictl disable keyboard|mouse. Il est possible de répliquer mon module Meterpreter préféré, run lockout_keylogger, mais Empire devrait moduler ou mettre en scène Lock-Workstation et PowerSploit Get-Keystrokes en un seul coup. Metepreter a run windows_autologin pour certains scénarios et PowerUp inclut une fonction Get-RegAutoLogon. Empire a situational_awareness/Host/getcomputerdetails, qui, je crois, doit absolument être incorporé dans un module de post-framework metasploit. De nombreuses actions Metepreter ne fonctionneront pas avec les systèmes d'exploitation Windows modernes, et la modification des entrées de registre qui permettraient leur utilisation est susceptible d'être surveillée très fortement. Par exemple, de nombreux modules SMB - et les modules de navigation privée en particulier - ne fonctionneront pas si LocalAccountTokenFilterPolicy in HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System existe et est réglé sur 0. Si vous le définissez sur 1, vous pouvez déclencher l'alarme. Si UseLogonCredential dans HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest existe ou est défini sur 1, vous devrez charger Mimikatz en tant que pilote de noyau (NB, consultez la dernière section d'en-tête intitulée "Mots de passe" dans ce billet de blog , vers le bas de la post), mais si vous ciblez Win10 ou Server 2012, vous pouvez rencontrer le RunAsPPL = 1 redouté dans HKLM\SYSTEM\CurrentControlSet\Control\Lsa - ce qui empêchera un grand nombre de décharges d'informations d'identification sur ces plates-formes (et les anciennes, même 8.1 - mais les autres rétroportent sur Vista/7). La plupart des modules de publication Metasploit ne restent pas uniquement en mémoire, et les commandes aux commandes seront probablement enregistrées et exécutées. Recherchez les modules Metepreter qui restent en mémoire uniquement et si vous trouvez le besoin ou le désir d'exécuter une commande Windows standard, utilisez, par exemple, execute -H -m -d calc.exe -f c:\\Windows\\System32\\whoami.exe -a "/all" où le -m flag le fait fonctionner à partir de la mémoire de processus en cours et -d le fait apparaître comme un nouveau processus dans la liste des processus avec un faux nom (mais aussi masqué avec -H, voir plus ici ). sysinfo, getuid, use -l, ps, steal_token, getpid, transport, run win_privs, wifi_list, run enum_logged_on_users -c (N.B., fonctionnant sans -c touche le disque!), window_enum -u, et clipboard_get_data sont quelques-unes de mes commandes préférées de Meterpreter en mémoire. J'aime certains disques tactiles, tels que run enum_shares, et run usb_history, mais utilisez-les avec parcimonie (principalement parce que cela entraînera des opportunités de pivot intéressantes). Vous ne voulez probablement pas utiliser run scraper, run winenum, run enum_cred_store, run enum_unattend, et surtout pas run checkvm, run getcountermeasure, run killav, run bypassuac_injection, getsystem, run hostsedit, ou run persistence - comme je crois que ceux-ci ont frappé le disque et AV les attrape. Toucher le domaine à partir de Meterpreter est également beaucoup signalé (NB, presque tous les classiques scripts Meterpreter sur lesquels vous vous êtes appuyés au fil des ans s'en vont en faveur des modules de publication du framework metasploit! Don ' t utiliser la plupart de ceux-ci, favorisant les modules plus récents qui les remplacent) - certainement passer aux modules situational_awareness/network d'Empire serait mieux (et ils mettent en œuvre de meilleures techniques). C'est bien d'avoir le choix et je crois que les implants Empire et Meterpreter sont solides à mélanger et assortir comme bon vous semble. Dans certaines situations, il est logique d'exécuter les deux!

En parlant de persévérance, Empire offre également des perspectives très intéressantes. Ces techniques ne sont pas dans Metepreter. Le persistence/misc/disable_machine_acct_change est Nice, mais les modules de persistance/powerbreach sont les vrais challengers. Il y avait beaucoup de style Metasploit amusant modules de compétition et des techniques construites au fil du temps, certaines répliquées dans la hiérarchie des trollsploit d'Empire. Empêcher les machines d'autoriser tout accès de ses administrateurs est carrément cruel dans une compétition, mais déroutant les équipes bleues (c.-à-d., Autorisez-les à la fois à se connecter localement et au réseau mais gardez-les occupées à dépanner pourquoi les choses ne fonctionnent pas autrement) pendant un cyber exercice ou rouge l'engagement de l'équipe peut vraiment pousser leur patience, leur donnant beaucoup de leçons apprises. Je garde une variété de techniques à mon actif, telles que la suppression définitive de gpupdate et secedit avec une entrée de registre immuable DisableGPO définie sur 1. Si le réseau cible le prend en charge, l'équipe rouge peut continuer à administrer le réseau via le peu connu DSC fonctionnalité au lieu de GPO de toute façon. Les techniques du noyau Mimikatz (NB, voir cette vidéo à partir de 44:2 jusqu'à la fin du prezo, en particulier sur diapositives 54 et 56 ) sont également assez amusants et doivent être réutilisés pour empêcher les défenseurs de cibler un seul outil puissant et offensif. Des cibles de couche supérieure telles que Microsoft IIS et Azure ( Get-Webconfig et Get-ApplicationHost viennent à l'esprit), des composants de niveau intermédiaire tels que ceux que l'on trouve dans Empire recon/find_fruit le module, et des modules moins connus tels que Mesos , Google Compute Engine, OpenStack, OpenShift, Cloud Foundry, LXC, Xen, Docker, CoreOS et EC2/AWS font un grand avenir à long terme cibles.

En résumé, Meterpreter peut être détecté par AV/HIPS (comme celui mentionné par le questionneur), donc je suggère d'éviter les techniques en conserve trouvées dans le cadre de metasploit (par exemple, les stades et/ou les encodeurs) et même dans Veil-Evasion cadre. Restez fidèle à la seule bonne technique connue mentionnée par @void_in ci-dessus. Il s'agit d'un exploit qui repose sur une corruption de mémoire. Pour ces types d'exploits (navigateur, Flash, MS Office, Adobe Reader, service distant potentiel, etc.), la technique de @ void_in (qui implique l'utilisation d'un exploit Metasploit-framework et Veil-Evasion framework mis en scène la charge utile sans écouteur Meterpreter - probablement préférée) être une charge utile reverse_https avec toutes les configurations du mode paranoïaque définies - nécessitant également un écouteur Empire et le stager Empire launcher.dll ), qui repose sur ReflectiveDLLInjection est excellent non seulement pour cette raison, mais aussi car il exploite les techniques d'UnmanagedPowerShell pour utiliser une instance d'espace de travail .NET pour créer un flux d'objets de pipeline qui sont PowerShell, mais ne nécessite pas d'exécuter une instance powershell.exe distincte (et n'est donc pas enregistré ou instrumenté par PowerShell standard) détection des comportements - PowerShell n'a même pas besoin d'être installé, bien que .NET le fasse). C'est une grosse boule mixte d'un travail de framework metasploit (le module d'exploitation), le stager PowerShellEmpire launcher.dll abandonné, la charge utile Veil-Evasion combinée et le stager Empire utilisant la configuration du mode paranoïaque Meterpreter pour les shells reverse_https et l'écouteur Empire.

Vous pouvez également utiliser cette technique dans un compte-gouttes (c'est-à-dire un exécutable autonome) mais AV/HIPS aurait la possibilité de le scanner en premier - à la recherche d'éventuelles anomalies - dont certaines pourraient même être les techniques ReflectiveDLLInjection ou .NET runspace. Au lieu de cela, pour les droppers, mon préféré actuel est TheShellterProject Mode furtif - en particulier parce que l'infection d'un fichier PE connu avec une ou plusieurs charges utiles (Empire plus Metepreter, n'importe qui?) Est exactement ce que je recherche pour. Lorsque vous utilisez une macro de MS Office, je suggère d'utiliser ce type de compte-gouttes (car il sera numérisé par AV/HIPS). Je suggère également de lire The AntiVirus Hacker's Handbook pour des tonnes de détails sur des cibles AV/HIPS spécifiques, ainsi que de nombreuses techniques à long terme. L'auteur semble aimer les charges utiles C/C++ non compressées et non brouillées personnalisées (PE - ou, mieux, DLL - ou plus drôle, un programme d'installation) construit avec la version la plus récente de Visual Studio utilisant Style de programmation compatible avec Microsoft - l'angle de vue classique caché. Si vous êtes à l'aise avec Meterpreter sur Empire, je vous suggère toujours d'essayer PowerShellEmpire, ainsi que Slingshot (les mêmes personnes de SilentBreakSec ont également fait Throwback) et Cobalt Strike Balise.

26
atdre

J'ai peur de sonner sur ce sujet étant donné que les réponses existantes sont déjà si bonnes! Mais je vais quand même essayer, et venir d'un angle légèrement différent, c'est-à-dire adapter et modifier Meterpreter lui-même pour contourner les problèmes. Je vais commencer par séparer un peu votre question.

Maintenant, je peux contourner facilement les antivirus et les pare-feu, mais Symantec Sonar et IPS détectent toujours les charges utiles Meterpreter et bloquent l'adresse IP de l'attaquant.

J'utilise avec plaisir une session Meterpreter sur HTTPS sur des cibles qui utilisent le SONAR de SEP (entre autres). Ces types de protections font partie d'un jeu de "chat et souris", tout comme vous. Il faut un peu de recherche pour découvrir des chemins que SONAR ne prend pas. Dans certains cas, contourner les fonctionnalités de SONAR peut être aussi simple que d'utiliser reverse_https et en vous assurant que votre écouteur Metasploit possède un certificat SSL valide. J'ai généralement un serveur d'attaque basé sur le cloud qui a le port 443 ouvert avec Nginx à l'écoute configuré pour utiliser un certificat SSL valide. Je procède aux requêtes de Nginx via MSF le cas échéant. À partir de là, la plupart de mes problèmes liés au SEP semblent disparaître. Essayez-le! Je serais ravi d'entendre comment cela se déroule N'ayez pas peur de consacrer un peu de temps à découvrir exactement ce qui se fait attraper. Cela m'amène à ...

Y a-t-il une meilleure charge utile que Meterpreter qui peut contourner IPS?

Nous devrions probablement être clairs sur ce que signifie réellement "charge utile" ici. Si vous exécutez un exécutable Meterpreter généré par MSF, alors l'exécutable ne contient rien d'autre qu'un talon PE et un stager. Cela sera se faire prendre par beaucoup de AV/etc. Comme déjà mentionné, leur encodage peut vous aider à dépasser les bases. Une partie du problème ici, cependant, est que lorsque le binaire est exécuté, la première chose qui se produit est qu'une connexion est établie avec une entité externe, et un DLL (appelé metsrv) est envoyé sur le fil. Si reverse_tcp, bind_tcp ou reverse_http sont utilisés ici, le fichier est envoyé en clair et il est donc très facile de prendre des empreintes digitales sur le fil. Cela se traduira par des goûts de SEP ramasser sur la session. Il existe des moyens de contourner cela, y compris en utilisant stageless charges utiles, qui font que le binaire généré contient metsrv et toutes les autres extensions que vous jugez nécessaires. L'utilisation de stageless signifie que la première étape du téléchargement de metsrv ne doit pas se produire. Une autre chose à garder à l'esprit est que les modèles .exe par défaut utilisé par MSF sont bien connus, vous pouvez donc spécifier le vôtre via le -x paramètre dans msfvenom.

Avec la popularité de Powershell, vous avez également la possibilité de créer des charges utiles Powershell avec msfvenom en spécifiant -f psh, et ces charges utiles peuvent toujours injecter Meterpreter dans la mémoire de la manière habituelle. AV/IPS n'a pas encore fait un excellent travail pour détecter de telles charges utiles, et elles ont donc tendance à être une bonne option si vous avez la possibilité d'amener les gens à exécuter des fichiers batch. Je trouve que l'utilisation de l'approche PSH avec des goûts de psexec fait très bien quand on essaie d'éviter AV/IPS.

Le mécanisme de communication utilisé par Meterpreter est également bien connu, et c'est donc une autre chose que les outils défensifs peuvent capter. Il y a peut-être quelque chose qui arrive à MSF qui pourrait aider avec cela bientôt (regardez cet espace).

Soit dit en passant, la migration est également un problème en ce que "l'approche" de la migration est facile à repérer. Cependant, certains produits AV permettent que cela se produise après un certain temps, donc si vous vous retrouvez pris, c'est peut-être parce que la migration se produit trop tôt.

Existe-t-il un tutoriel d'écriture de charge utile sur le net qui correspond à mes besoins?

Pas que je sache, mais la nature d'un hacker est celle qui les fait sortir et se découvrir! N'ayez pas peur de modifier la source de Meterpreter elle-même. Tout est open source et facile à construire.

Remarque: Je ne dis pas qu'il sera toujours possible de contourner tous les systèmes défensifs de cette manière, je propose simplement quelques idées qui pourraient vous aider à en dépasser.

+1 pour la grande question et pour les autres réponses qui sont toutes les deux excellentes. Super discussion.

11
OJ.