В win10(10.0.15063) прикрыли еще одну возможность повышения привилегий, про первую я писал тут: http://kitrap08.blogspot.ru/2016/10/win10-securitydescriptor.html
Вторая заключается в обнулении не SecurityDescriptor'а, а флага Enabled в SEP_TOKEN_PRIVILEGES:
kd> dt nt!_TOKEN -r1
+0x000 TokenSource : _TOKEN_SOURCE
+0x000 SourceName : [8] Char
+0x008 SourceIdentifier : _LUID
+0x010 TokenId : _LUID
+0x000 LowPart : Uint4B
+0x004 HighPart : Int4B
+0x018 AuthenticationId : _LUID
+0x000 LowPart : Uint4B
+0x004 HighPart : Int4B
+0x020 ParentTokenId : _LUID
+0x000 LowPart : Uint4B
+0x004 HighPart : Int4B
+0x028 ExpirationTime : _LARGE_INTEGER
+0x000 LowPart : Uint4B
+0x004 HighPart : Int4B
+0x000 u : <unnamed-tag>
+0x000 QuadPart : Int8B
+0x030 TokenLock : Ptr32 _ERESOURCE
+0x000 SystemResourcesList : _LIST_ENTRY
+0x008 OwnerTable : Ptr32 _OWNER_ENTRY
+0x00c ActiveCount : Int2B
+0x00e Flag : Uint2B
+0x010 SharedWaiters : Ptr32 _KSEMAPHORE
+0x014 ExclusiveWaiters : Ptr32 _KEVENT
+0x018 OwnerEntry : _OWNER_ENTRY
+0x020 ActiveEntries : Uint4B
+0x024 ContentionCount : Uint4B
+0x028 NumberOfSharedWaiters : Uint4B
+0x02c NumberOfExclusiveWaiters : Uint4B
+0x030 Address : Ptr32 Void
+0x030 CreatorBackTraceIndex : Uint4B
+0x034 SpinLock : Uint4B
+0x034 ModifiedId : _LUID
+0x000 LowPart : Uint4B
+0x004 HighPart : Int4B
+0x040 Privileges : _SEP_TOKEN_PRIVILEGES
+0x000 Present : Uint8B
+0x008 Enabled : Uint8B <===================== обнуляем, получаем полный доступ к процессу(EOP)
+0x010 EnabledByDefault : Uint8B
Более подробный анализ тут: http://anti-reversing.com/Downloads/Sec_Research/ntoskrnl_v10.0.15063_nt!_SEP_TOKEN_PRIVILEGES-Single_Write_EoP_Protect.pdf
Вторая заключается в обнулении не SecurityDescriptor'а, а флага Enabled в SEP_TOKEN_PRIVILEGES:
kd> dt nt!_TOKEN -r1
+0x000 TokenSource : _TOKEN_SOURCE
+0x000 SourceName : [8] Char
+0x008 SourceIdentifier : _LUID
+0x010 TokenId : _LUID
+0x000 LowPart : Uint4B
+0x004 HighPart : Int4B
+0x018 AuthenticationId : _LUID
+0x000 LowPart : Uint4B
+0x004 HighPart : Int4B
+0x020 ParentTokenId : _LUID
+0x000 LowPart : Uint4B
+0x004 HighPart : Int4B
+0x028 ExpirationTime : _LARGE_INTEGER
+0x000 LowPart : Uint4B
+0x004 HighPart : Int4B
+0x000 u : <unnamed-tag>
+0x000 QuadPart : Int8B
+0x030 TokenLock : Ptr32 _ERESOURCE
+0x000 SystemResourcesList : _LIST_ENTRY
+0x008 OwnerTable : Ptr32 _OWNER_ENTRY
+0x00c ActiveCount : Int2B
+0x00e Flag : Uint2B
+0x010 SharedWaiters : Ptr32 _KSEMAPHORE
+0x014 ExclusiveWaiters : Ptr32 _KEVENT
+0x018 OwnerEntry : _OWNER_ENTRY
+0x020 ActiveEntries : Uint4B
+0x024 ContentionCount : Uint4B
+0x028 NumberOfSharedWaiters : Uint4B
+0x02c NumberOfExclusiveWaiters : Uint4B
+0x030 Address : Ptr32 Void
+0x030 CreatorBackTraceIndex : Uint4B
+0x034 SpinLock : Uint4B
+0x034 ModifiedId : _LUID
+0x000 LowPart : Uint4B
+0x004 HighPart : Int4B
+0x040 Privileges : _SEP_TOKEN_PRIVILEGES
+0x000 Present : Uint8B
+0x008 Enabled : Uint8B <===================== обнуляем, получаем полный доступ к процессу(EOP)
+0x010 EnabledByDefault : Uint8B
Более подробный анализ тут: http://anti-reversing.com/Downloads/Sec_Research/ntoskrnl_v10.0.15063_nt!_SEP_TOKEN_PRIVILEGES-Single_Write_EoP_Protect.pdf
Комментариев нет:
Отправить комментарий