Без темы
<<  Data mining в microsoft SQL server 2005 Death by PowerPoint  >>
Free Chunks
Free Chunks
Allocation order
Allocation order
Merging Pool Chunks
Merging Pool Chunks
Object Type Index Table (x86)
Object Type Index Table (x86)
Object Type Index Table (x64)
Object Type Index Table (x64)
Windows 8.1
Windows 8.1
nt!IopGetSetSecurityObject
nt!IopGetSetSecurityObject
nt!IopGetSetSecurityObject
nt!IopGetSetSecurityObject
nt!IopGetSetSecurityObject
nt!IopGetSetSecurityObject
Symbolic Link: Getter vector NtQuerySymbolicLinkObject
Symbolic Link: Getter vector NtQuerySymbolicLinkObject
Directory Object: Getter vector NtQueryDirectoryObject
Directory Object: Getter vector NtQueryDirectoryObject
WorkerFactory object Getter: NtQueryInformationWorkerFactory
WorkerFactory object Getter: NtQueryInformationWorkerFactory
WorkerFactory object Setter: NtSetInformationWorkerFactory
WorkerFactory object Setter: NtSetInformationWorkerFactory
Картинки из презентации «DATA-ONLY PWNING MICROSOFT WINDOWS KERNEL: EXPLOITATION OF KERNEL POOL OVERFLOWS ON MICROSOFT WINDOWS 8.1» к уроку английского языка на тему «Без темы»

Автор: Tarakanov, Nikita. Чтобы познакомиться с картинкой полного размера, нажмите на её эскиз. Чтобы можно было использовать все картинки для урока английского языка, скачайте бесплатно презентацию «DATA-ONLY PWNING MICROSOFT WINDOWS KERNEL: EXPLOITATION OF KERNEL POOL OVERFLOWS ON MICROSOFT WINDOWS 8.1.pptx» со всеми картинками в zip-архиве размером 335 КБ.

DATA-ONLY PWNING MICROSOFT WINDOWS KERNEL: EXPLOITATION OF KERNEL POOL OVERFLOWS ON MICROSOFT WINDOWS 8.1

содержание презентации «DATA-ONLY PWNING MICROSOFT WINDOWS KERNEL: EXPLOITATION OF KERNEL POOL OVERFLOWS ON MICROSOFT WINDOWS 8.1.pptx»
Сл Текст Сл Текст
1DATA-ONLY PWNING MICROSOFT WINDOWS 24access to object. Different scenarios.
KERNEL: EXPLOITATION OF KERNEL POOL exploit.
OVERFLOWS ON MICROSOFT WINDOWS 8.1. Nikita 25OBJECT_TYPE_INITIALIZER Procedures.
Tarakanov, Moscow, Russia ZeroNights 2014 +0x030 DumpProcedure : (null) +0x038
14st of November 2014. OpenProcedure : (null) +0x040
2Agenda. Introduction Pool super basics CloseProcedure : 0xfffff801`5b913b44 void
Previous attacks New idea Mitigations nt!ObpCloseDirectoryObject+0 +0x048
Q&A. DeleteProcedure : 0xfffff801`5b92743c void
3Introduction. Ring3(IE, Adobe Reader, nt!ObpDeleteDirectoryObject+0 +0x050
Flash player, MS Office etc) applications ParseProcedure : (null) +0x058
as first attack vector Not privileged SecurityProcedure : 0xfffff801`5b848e54
level Sandboxes (IE EPM, Reader sandbox, long nt!SeDefaultObjectMethod+0 +0x060
Chrome sandbox etc) Need to get Ring0 to QueryNameProcedure : (null) +0x068
have ability to make fancy stuff So, OkayToCloseProcedure : (null).
Elevation of Privileges (R3->R0) 26OBJECT_TYPE_INITIALIZER Procedures.
Exploits/Vulnerabilities are critical Good +0x030 DumpProcedure : (null) +0x038
examples: pwn2own 2013/2014 IE EPM sandbox OpenProcedure : (null) +0x040
escapes via kernel exploit. CloseProcedure : (null) +0x048
4Pool basics. Following 5 slides are DeleteProcedure : 0xfffff801`5b9250fc void
copy-paste from work of mighty Tarjei nt!IopDeleteDevice+0 +0x050 ParseProcedure
Mandt. : 0xfffff801`5b86dde0 long
5Pool Header 32-bits. kd> dt nt!IopParseDevice+0 +0x058
nt!_POOL_HEADER +0x000 PreviousSize : Pos SecurityProcedure : 0xfffff801`5b842028
0, 9 Bits +0x000 PoolIndex : Pos 9, 7 Bits long nt!IopGetSetSecurityObject+0 +0x060
+0x002 BlockSize : Pos 0, 9 Bits +0x002 QueryNameProcedure : (null) +0x068
PoolType : Pos 9, 7 Bits +0x004 PoolTag : OkayToCloseProcedure : (null).
Uint4B PreviousSize: BlockSize of the 27Type Confusion.
preceding chunk PoolIndex: Index into the nt!SeDefaultObjectMethod. Object Header.
associated pool descriptor array Event Object. After overwrite -> type
BlockSize: (NumberOfBytes+0xF) >> 3 confusion. FILE_OBJECT(all data is under
PoolType: Free=0, Allocated=(PoolType|2) control). Object Header.
PoolTag: 4 printable characters NtQuerySecurityObject.
identifying the code responsible for the nt!IopGetSetSecurityObject. exploit.
allocation. 28SecurityProcedure vector. For most
6Pool Header 64-bits. kd> dt object types: nt!SeDefaultObjectMethod
nt!_POOL_HEADER +0x000 PreviousSize : Pos WmiGuid object type: nt!WmipSecurityMethod
0, 8 Bits +0x000 PoolIndex : Pos 8, 8 Bits File/Device object type:
+0x000 BlockSize : Pos 16, 8 Bits +0x000 nt!IopGetSetSecurityObject Key object
PoolType : Pos 24, 8 Bits +0x004 PoolTag : type: nt!CmpSecurityMethod.
Uint4B +0x008 ProcessBilled : Ptr64 29nt!IopGetSetSecurityObject.
_EPROCESS BlockSize: (NumberOfBytes+0x1F) FILE_OBJECT -> DEVICE_OBJECT ->
>> 4 ( 256 ListHeads entries due to DRIVER_OBJECT -> MAJOR_ROUTINE ->
16 byte block size ) ProcessBilled: attacker’s shellcode Execution Hijack by
Pointer to process object charged for the three consequent dereferences!!!!
pool allocation (used in quota 30nt!IopGetSetSecurityObject.
management). 31nt!IopGetSetSecurityObject chain. 0:
7Free Chunks. If a pool chunk is freed kd> dt nt!_FILE_OBJECT +0x000 Type :
to a pool descriptor ListHeads list, the Int2B +0x002 Size : Int2B +0x008
header is followed by a LINK_ENTRY DeviceObject : Ptr64 _DEVICE_OBJECT 0:
structure Pointed to by the ListHeads kd> dt nt!_DEVICE_OBJECT +0x000 Type :
doubly-linked list kd> dt Int2B +0x002 Size : Uint2B +0x004
nt!_LIST_ENTRY +0x000 Flink : Ptr32 ReferenceCount : Int4B +0x008 DriverObject
_LIST_ENTRY +0x004 Blink : Ptr32 : Ptr64 _DRIVER_OBJECT.
_LIST_ENTRY. 32nt!IopGetSetSecurityObject chain. 0:
8Allocation order. kd> dt nt!_DRIVER_OBJECT +0x000 Type :
9Merging Pool Chunks. Int2B +0x002 Size : Int2B +0x008
10Previous attacks. Pool metadata DeviceObject : Ptr64 _DEVICE_OBJECT +0x010
corruption - out of scope Object metadata Flags : Uint4B +0x018 DriverStart : Ptr64
corruption (DKOHM). Void +0x020 DriverSize : Uint4B +0x028
11Object Metadata. OBJECT_HEADER DriverSection : Ptr64 Void +0x030
Optional headers. POOL_HEADER. Optional DriverExtension : Ptr64 _DRIVER_EXTENSION
Headers. OBJECT_HEADER. Object. +0x038 DriverName : _UNICODE_STRING +0x048
12OBJECT_HEADER. • kd> dt HardwareDatabase : Ptr64 _UNICODE_STRING
nt!_OBJECT_HEADER • +0x000 PointerCount : +0x050 FastIoDispatch : Ptr64
Int4B • +0x004 HandleCount : Int4B • _FAST_IO_DISPATCH +0x058 DriverInit :
+0x004 NextToFree : Ptr32 Void • +0x008 Ptr64 long +0x060 DriverStartIo : Ptr64
Lock : _EX_PUSH_LOCK • +0x00c TypeIndex : void +0x068 DriverUnload : Ptr64 void
UChar <- Index of pointer to +0x070 MajorFunction : [28] Ptr64 long.
OBJECT_TYPE structure in ObTypeIndexTable 33Close/Delete Procedure vector. Huge
• +0x00d TraceFlags : UChar • +0x00d amount of different execution flows: 56
DbgRefTrace : Pos 0, 1 Bit • +0x00d functions Mostly arbitrary memory
DbgTracePermanent : Pos 1, 1 Bit • +0x00e overwrite Some adjacent read/write Some
InfoMask : UChar • +0x00f Flags : UChar • hijack of execution flow.
+0x010 ObjectCreateInfo : Ptr32 34Other Procedures. DumpProcedure,
_OBJECT_CREATE_INFORMATION • +0x010 OpenProcedure, ParseProcedure,
QuotaBlockCharged : Ptr32 Void • +0x014 QueryNameProcedure, OkayToCloseProcedure
SecurityDescriptor : Ptr32 Void • +0x018 Are rare – no interest in here.
Body : _QUAD. 35Object’s body vector (DKOM). There are
13ObTypeIndexTable. • kd> dd several typical OOP interfaces Constructor
nt!ObTypeIndexTable L40 • 81a3edc0 – NtCreate* (NtCreateFile) Destructor –
00000000 bad0b0b0 8499c040 849aa390 • NtClose Getter – NtQueryInformation*
81a3edd0 84964f70 8499b4c0 84979500 (NtQueryInformationWorkerFactory) Setter –
84999618 • 81a3ede0 84974868 849783c8 NtSetInformation* (NtSetInformationKey)
8499bf70 84970b40 • 81a3edf0 849a8888 Object Type specific: NtClearEvent,
84979340 849aaf70 849a6a38 • 81a3ee00 NtAlpcAcceptConnectPort,
8496df70 8495b040 8498cf70 84930a50 • NtEnumerateValueKey,
81a3ee10 8495af70 8497ff70 84985040 NtRecoverResourceManager etc.
84999e78 • 81a3ee20 84997f70 8496c040 36DKOHM+DKOM restrictions. Unfortunately
849646e0 84978f70 • 81a3ee30 8497aec0 you cant freely use Getter/Setter/Specific
84972608 849a0040 849a9750 • 81a3ee40 when you change type of an object – caused
849586d8 84984f70 8499d578 849ab040 • by ValidAccessMask field ? +0x010 Name :
81a3ee50 84958938 84974a58 84967168 _UNICODE_STRING "WindowStation“
84967098 • 81a3ee60 8496ddd0 849a5140 +0x01c ValidAccessMask : 0xf037f +0x010
8497ce40 849aa138 • 81a3ee70 84a6c058 Name : _UNICODE_STRING "Directory“
84969c58 8497e720 85c62a28 • 81a3ee80 +0x01c ValidAccessMask : 0xf000f But you
85c625f0 00000000 00000000 00000000. can still smash object’s data without
14OBJECT_TYPE. kd> dt nt!_OBJECT_TYPE changing object type.
+0x000 TypeList : _LIST_ENTRY +0x008 Name 37DKOHM+DKOM restrictions. Some Object
: _UNICODE_STRING +0x010 DefaultObject : Types have same ValidAccessMask +0x010
Ptr32 Void +0x014 Index : UChar +0x018 Name : _UNICODE_STRING "Section“
TotalNumberOfObjects : Uint4B +0x01c +0x01c ValidAccessMask : 0x1f001f +0x010
TotalNumberOfHandles : Uint4B +0x020 Name : _UNICODE_STRING "Job“ +0x01c
HighWaterNumberOfObjects : Uint4B +0x024 ValidAccessMask : 0x1f001f So technique
HighWaterNumberOfHandles : Uint4B +0x028 using Getter/Setter/Specific is possible,
TypeInfo : _OBJECT_TYPE_INITIALIZER +0x080 but limited.
TypeLock : _EX_PUSH_LOCK +0x084 Key : 38Symbolic Link: Getter vector
Uint4B +0x088 CallbackList : _LIST_ENTRY. NtQuerySymbolicLinkObject.
15Procedures. kd> dt 39Directory Object: Getter vector
nt!_OBJECT_TYPE_INITIALIZER [..] +0x030 NtQueryDirectoryObject. Up-to 0x25 times
DumpProcedure : Ptr32 void +0x034 of reading arbitrary memory.
OpenProcedure : Ptr32 long +0x038 40WorkerFactory object Getter:
CloseProcedure : Ptr32 void +0x03c NtQueryInformationWorkerFactory.
DeleteProcedure : Ptr32 void +0x040 41WorkerFactory object Setter:
ParseProcedure : Ptr32 long +0x044 NtSetInformationWorkerFactory.
SecurityProcedure : Ptr32 long +0x048 42Redirection to Ring0 Shellcode. Jump
QueryNameProcedure : Ptr32 long +0x04c to Ring3 address? Nah, SMEP ?
OkayToCloseProcedure : Ptr32 unsigned 43SMEP bypass techniques. ROP :
char. ExAllocatePoolWithTag (NonPagedExec) +
16ObTypeIndexTable & Object Type. memcpy+jmp ROP : clear SMEP flag in cr4
ObTypeIndexTable. OBJECT_TYPE. Object Jump to executable Ring0 memory (Artem’s
Header TypeIndex. Pointer to OBJECT_TYPE. Shishkin technique) Set Owner flag of PTE
Object’s dispatch function. Pointers to to 0 (MI_PTE_OWNER_KERNEL).
various procedures. 44Typical Payload in EoP exploits. Copy
17Object Type Index Table (x86). token of SYSTEM process to attacker’s
18Object Type Index Table (x64). process Basically, its just copying data
19Object metadata corruption (DKOHM). from memory addr A to addr B.
POOL_HEADER. Optional Headers. overflow. 45Data-only PWNING!!! We DON’T need to
Fake OBJECT_TYPE. 0x00000000. execute external instructions or use ROP
ObTypeIndexTable. 0xBAD0B0B0. So it’s just manipulation with data and
OBJECT_HEADER. Object. Shellcode. executing ABSOLUTE legitimate code (this
20Windows 8.1. 0xBAD0B0B0 has gone ? is NOT ROP/JOP!!!) GAME OVER.
21New idea. Object data corruption 46Mitigations. Hardware perspective
(DKOHM + DKOM) Object type confusion. Microsoft’s perspective.
22Object data corruption (DKOHM + DKOM). 47Hardware perspective. SMAP – prevent
Set TypeIndex value to different object dereference of R3 memory Just raise the
type (object type confusion) Object bar (attacker has to craft object(s) in r0
Manager is fooled (before it was Type A, memory).
not it’s Type B) Craft malicious object’s 48Microsoft’s perspective. OBJECT_HEADER
data (counters, pointers) Invoke system hardening – cookie? Randomize TypeIndex of
service(s) to trigger access to malicious Object Types during boot Isolated Pools.
object Profit. 49Conclusion.
23Object data corruption (DKOHM + DKOM). 50Heapsprays are for the 99%. WTFuzz aka
Object Header. ObTypeIndexTable. FILE Peter VREUGDENHIL.
OBJECT_TYPE. Object Data. ALPC 51ROPs are for the 99%. Tombkeeper aka
OBJECT_TYPE. Yang Yu.
24Object data corruption (DKOHM+DKOM). 52Code execution is for the 99%. Nikita
Object Header. FILE_OBJECT. After Tarakanov.
overwrite -> type confusion. Object 53Q&A.
Header. ALPC_OBJECT(all data is under 54References. Tarjei Mandt BH US 2012
control). Invoke system service trigger Nikita Tarakanov HITB AMS 2013.
DATA-ONLY PWNING MICROSOFT WINDOWS KERNEL: EXPLOITATION OF KERNEL POOL OVERFLOWS ON MICROSOFT WINDOWS 8.1.pptx
http://900igr.net/kartinka/anglijskij-jazyk/data-only-pwning-microsoft-windows-kernel-exploitation-of-kernel-pool-overflows-on-microsoft-windows-8.1-158386.html
cсылка на страницу

DATA-ONLY PWNING MICROSOFT WINDOWS KERNEL: EXPLOITATION OF KERNEL POOL OVERFLOWS ON MICROSOFT WINDOWS 8.1

другие презентации на тему «DATA-ONLY PWNING MICROSOFT WINDOWS KERNEL: EXPLOITATION OF KERNEL POOL OVERFLOWS ON MICROSOFT WINDOWS 8.1»

«Linux и Windows» - Linux же, в отличие от Windows, не требует никаких затрат и более безопаснее. Windows по своей архитектуре является монолитной, а не модульной системой. Эффективность. Достоинства Linux. BESYS была написана под конкретную платформу и не работала на новых машинах. История Linux. Путаница с версиями. При сохранившемся интерфейсе внутренняя структура была значительно переработана.

«ОС Windows» - Интерфейс Windows. Windows предъявляет требования к аппаратным средствам ЭВМ: ЩЛ на объекте – выделение объекта. ЩП на объекте – вывод контекстного меню (получение информации о действиях над объектом). Удобный графический интерфейс, единый для всех Windows-программ. Поддержка DOS-программ. Объекты Windows.

«Операционная система Windows XP» - Как продать операционную систему покупателю, у которого уже есть компьютер. Техническая поддержка со стороны сервисной службы производителя компьютера и Microsoft! Почему на современном компьютере должна быть установлена Microsoft Windows XP. Автоматические, своевременные и бесплатные обновления операционной системы!

«История Windows» - Windows 98. В 1995 вышла Windows 95. Операционная система Windows . История развития ОС Windows. В 1988 году компания Microsoft начала работу над Windows NT. Windows 3.11. Основные функции операционных систем (ОС). По сравнению с Windows 3.1 значительно изменился интерфейс, выросла скорость работы программ.

«Data Mining» - Data Mining. Для кластеризации: дендрограммы, диаграммы рассеивания. Задачи Data Mining. Дескриптивный анализ и описание исходных данных. Метод "ближайшего соседа" или системы рассуждений на основе аналогичных случаев. Статистические методы. Продолжение. Оценка параметра k методом кросс-проверки.

«Тесты по Windows» - Понятие «папка» в Windows XP» соответствует понятию: А) файл; Б) диск; В) каталог; Г) устройство. 5. К стандартным программам Windows XP относятся: А) Word Pad; Б) Word; В) Excel; Г) калькулятор. Тестовые задания к уроку информатики по теме «Операционная система MS Windows». Методика выполнения тестовой работы.

Без темы

661 презентация
Урок

Английский язык

29 тем
Картинки
900igr.net > Презентации по английскому языку > Без темы > DATA-ONLY PWNING MICROSOFT WINDOWS KERNEL: EXPLOITATION OF KERNEL POOL OVERFLOWS ON MICROSOFT WINDOWS 8.1