Bonjour à tous. Aujourd'hui, nous envisagerons la possibilité d'exécuter mimikatz sur Windows 10. Mimikatz est un outil qui implémente les fonctionnalités de l'éditeur d'informations d'identification Windows et vous permet d'extraire les données d'authentification de l'utilisateur connecté au système sous forme ouverte.
Pendant le pentest, il est utile d'avoir une chose qui vide les mots de passe des utilisateurs, mais maintenant même le Windows Defender standard intégré à Windows devient un problème et peut interférer avec nos plans grandioses.
Je note que cette méthode convient également à d'autres produits antivirus (Virustotal BEFORE et AFTER le pense également), qui effectuent une analyse statique des binaires par signature.
Ainsi, bien que cette méthode soit peu susceptible de vous aider contre les solutions EDR, elle peut facilement contourner Windows Defender.
Auparavant, vous pouviez le contourner en changeant les mots du fichier de mimikatz en mimidogz, en supprimant quelques lignes dans les métadonnées et les bannières. Maintenant, c'est devenu plus difficile, mais toujours possible.
Pour l'idée de toute cette action, j'exprime ma gratitude à la personne surnommée ippsec.
Dans cet article, nous utiliserons:
- Windows 10 avec Windows Defender activé (avec des bases de données mises à jour)
- Mimikatz
- Studio visuel
- HxD (éditeur hexadécimal)
En copiant le mimikatz sur l'ordinateur de la victime, nous attendons une telle alerte.
Ensuite, nous allons effectuer une série de manipulations pour que Defender cesse de voir la menace ici.
Tout d'abord, nous trouverons et remplacerons les mots mimikatz. Remplacez mimikatz par exemple par thunt (vous pouvez le remplacer par n'importe quoi), et MIMIKATZ par THUNT. Cela ressemble Ă ceci.
Ensuite, nous éditerons le fichier mimikatz \ mimikatz \ mimikatz.rc dans Visual Studio (qui après notre remplacement est maintenant thunt.rc), en remplaçant mimikatz et gentilkiwi par quoi que ce soit, nous n'oublierons pas non plus de remplacer mimikatz.ico par une autre icône. Cliquez sur "reconstruire la solution" (ou reconstruire la solution) et obtenez notre version mise à jour de mimikatz. Nous copions les victimes sur l'ordinateur, ii ... alerte. Voyons pourquoi Defender fonctionne. Le moyen le plus simple consiste à copier un binaire de taille différente avant la première utilisation de l'antivirus.
Tout d'abord, copiez la moitié et copiez-la sur une machine Windows 10.
head –c 600000 mimikatz.exe > hunt.exe
Le défenseur est silencieux, pas mal déjà . En expérimentant, nous trouvons la première opération. Ça ressemblait à ça pour moi:
head -c 900000 mimikatz.exe > hunt.exe – head -c 950000 mimikatz.exe > hunt.exe – head -c 920000 mimikatz.exe > hunt.exe – head -c 930000 mimikatz.exe > hunt.exe – head -c 940000 mimikatz.exe > hunt.exe – head -c 935000 mimikatz.exe > hunt.exe – head -c 937000 mimikatz.exe > hunt.exe – head -c 936000 mimikatz.exe > hunt.exe – head -c 936500 mimikatz.exe > hunt.exe – head -c 936400 mimikatz.exe > hunt.exe – head -c 936300 mimikatz.exe > hunt.exe – head -c 936200 mimikatz.exe > hunt.exe –
Ouvrez hunt.exe dans l'éditeur hexadécimal et regardez ce pour quoi Defender pourrait fonctionner. L'œil a attrapé la chaîne KiwiAndRegistryTools.

Jouons avec des majuscules aléatoires - c'est devenu KiWIAnDReGiSTrYToOlS, enregistrez et copiez. Silence, ce qui signifie que nous avons deviné juste. Nous allons maintenant trouver toutes les occurrences de ces lignes dans le code, remplacer et reconstruire notre projet. Pour vérifier, exécutez head -c 936300 mimikatz.exe> ​​hunt.exe. La dernière fois que Defender a travaillé, maintenant non. Continuons.
De manière si délicate, en ajoutant de plus en plus de lignes à notre hunt.exe, des mots déclencheurs ont été découverts - wdigest.dll, isBase64InterceptOutput, isBase64InterceptInput, multirdp, logonPasswords, credman. En les changeant avec des casquettes aléatoires, je me suis assuré que Defender a cessé de les jurer.
Mais cela ne pourrait pas être aussi simple, Defender a pensé et travaillé pour des fonctions importées et sensibles à la casse. Ce sont des fonctions qui sont appelées à partir de la bibliothèque netapi32.dll.
- I_NetServerAuthenticate2
- I_NetServerReqChallenge
- I_NetServerTrustPasswordsGet
Si nous jetons un œil à netapi32.dll (C: \ windows \ system32 \ netapi32.dll), nous verrons que chaque fonction se voit attribuer un numéro.

Changer l'appel de fonction depuis le formulaire
windows.netapi32.I_NetServerTrustPasswordsGet (args)
sur
windows.netapi32 [62] (args)
Pour ce faire, nous devons remplacer mimikatz \ lib \ x64 \ netapi32.min.lib. Créez un fichier netapi32.def et écrivez-y les lignes suivantes:
LIBRARY netapi32.dll EXPORTS I_NetServerAuthenticate2 @ 59 I_NetServerReqChallenge @ 65 I_NetServerTrustPasswordsGet @ 62
Nous enregistrons et exécutons la commande (n'oubliez pas de sauvegarder le netapi32.min.lib d'origine au cas où)
lib /DEF:netapi32.def /OUT:netapi32.min.lib
Encore une fois, nous allons reconstruire le projet et copier ce que nous avons obtenu. Le défenseur est silencieux. Exécutez le mimikatz résultant avec des droits d'administrateur.

Succès. Ainsi, mimikatz est lancé et Windows Defender n'a pas fonctionné, c'est ce que nous visions. Des mots de passe, des apparences et des hachages sont émis.
PiègesEn attente:
* Username : thunt * Domain : DESKTOP-JJRBJJA * Password : Xp3#2!^&qrizc
Réalité:
* Username : thunt * Domain : DESKTOP-JJRBJJA * Password : (null)
La situation dans la vie est quelque peu différente des conditions de laboratoire. Vous devrez peut-être travailler avec le registre pour afficher le mot de passe. Par exemple, activez ou créez une clé UseLogonCredential (HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ SecurityProviders \ WDigest). Mais cela peut poser des problèmes, lors du redémarrage, les clés peuvent être réinitialisées.
Cela peut être encore pire si, si vous exécutez sur l'une des dernières versions de Windows 10, au lieu du mot de passe en texte brut, vous verrez ceci:
* Password : _TBAL_{68EDDCF5-0AEB-4C28-A770-AF5302ECA3C9}
Tout tourne autour de TBAL, qui succède à Automatic Restart Sign-On (
ARSO ). Maintenant, lorsque TBAL est demandé, lsasrv vérifie si le compte est un compte local ou MS et, sur cette base, utilise msv1_0 ou cloudAP pour enregistrer tout ce qui est nécessaire pour reprendre une session utilisateur. Après cela, le mécanisme de connexion automatique est défini sur le mot de passe codé en dur _TBAL_ {68EDDCF5-0AEB-4C28-A770-AF5302ECA3C9}.
Néanmoins, dans le laboratoire, nous avons reçu le mot de passe de l'utilisateur, et dans une situation de combat, nous pouvons au moins obtenir des hachages.