Embed
Email

A little journey inside Windows memory

Document Sample

Shared by: yurtgc548
Categories
Tags
Stats
views:
0
posted:
11/26/2011
language:
English
pages:
46
Memory basics

How to access physical memory

RWX









A little journey inside Windows memory



Damien AUMAITRE

damien(at)security-labs.org

damien.aumaitre(at)sogeti.com









D.Aumaitre - SOGETI/ESEC R&D A little journey inside Windows memory 1 / 32

Memory basics

Segmentation / pagination

How to access physical memory

Virtual memory reconstruction

RWX





Agenda







1 Memory basics



2 How to access physical memory



3 RWX









D.Aumaitre - SOGETI/ESEC R&D A little journey inside Windows memory 2 / 32

Memory basics

Segmentation / pagination

How to access physical memory

Virtual memory reconstruction

RWX





Agenda







1 Memory basics

Segmentation / pagination

Virtual memory reconstruction



2 How to access physical memory



3 RWX









D.Aumaitre - SOGETI/ESEC R&D A little journey inside Windows memory 3 / 32

Memory basics

Segmentation / pagination

How to access physical memory

Virtual memory reconstruction

RWX





Virtual address?

Process A Process B

Physical memory

0x00000000









User space User space









0x7fffffff

0x80000000









Kernel space Kernel space









0xffffffff







D.Aumaitre - SOGETI/ESEC R&D A little journey inside Windows memory 4 / 32

Memory basics

Segmentation / pagination

How to access physical memory

Virtual memory reconstruction

RWX





Virtual address?



Linear Address

10 bits 10 bits 12 bits



Directory Table Offset



4-KB Page





Page Table



Physical Address

Page Directory









Page-Table Entry





Directory Entry

1024 pointers



cr3 1024 pointers









D.Aumaitre - SOGETI/ESEC R&D A little journey inside Windows memory 4 / 32

Memory basics

Segmentation / pagination

How to access physical memory

Virtual memory reconstruction

RWX





Agenda







1 Memory basics

Segmentation / pagination

Virtual memory reconstruction



2 How to access physical memory



3 RWX









D.Aumaitre - SOGETI/ESEC R&D A little journey inside Windows memory 5 / 32

Memory basics

Segmentation / pagination

How to access physical memory

Virtual memory reconstruction

RWX





Why use physical memory?



Pros

Only interpret data, so independent of OS API.

Short-circuit security measures implemented by the processor

or the kernel.

Many ways to access physical memory.



Cons

Need to reconstruct the virtual space since the OS and the

processor manipulate virtual addresses.

Need to understand OS specific structures in order to emulate

OS API.





D.Aumaitre - SOGETI/ESEC R&D A little journey inside Windows memory 6 / 32

Memory basics

Segmentation / pagination

How to access physical memory

Virtual memory reconstruction

RWX





cr3 ?







Indispensable for address translation.

Allows you to fully obtain the process virtual space.

Stored in KPROCESS structure (field DirectoryTableBase).

t y p e d e f s t r u c t KPROCESS // 29 e l e m e n t s , 0x6C b y t e s ( s i z e o f )

{

/∗0 x000 ∗/ s t r u c t DISPATCHER HEADER Header ; // 6 e l e m e n t s , 0 x10 b y t e s ( s i z e o f )

/∗0 x010 ∗/ s t r u c t LIST ENTRY P r o f i l e L i s t H e a d ; // 2 e l e m e n t s , 0 x8 b y t e s ( s i z e o f )

/∗0 x018 ∗/ ULONG32 DirectoryTableBase [ 2 ] ; −−

// .L.|

00000040 38 00 60 9e 39 01 04 d8 3b 00 00 00 3c 0a 27 00 |8.‘.9.......<.’.|

00000050 54 00 40 00 3d 00 00 03 14 0e 00 00 17 00 00 21 |T.@.............|

00000060 81 00 00 0a 00 08 96 bc 00 00 00 00 00 00 00 00 |................|

00000070 41 70 70 6c 65 20 43 6f 6d 70 75 74 65 72 2c 20 |Apple Computer,.|

00000080 49 6e 63 2e 00 00 00 00 00 04 34 e7 00 00 00 00 |Inc.......4.....|

00000090 00 00 00 00 69 50 6f 64 00 00 00 00 00 00 00 00 |....iPod........|









D.Aumaitre - SOGETI/ESEC R&D A little journey inside Windows memory 18 / 32

Memory basics

Several ways

How to access physical memory

Zoom on FireWire

RWX





iPod transformation









Conclusion

Since Windows believes an iPod is connected, it authorizes physical

memory read/write access.



For more details

Adam Boileau’s website : http://storm.net.nz/projects/16









D.Aumaitre - SOGETI/ESEC R&D A little journey inside Windows memory 18 / 32

Memory basics Read: gather information

How to access physical memory Write: everything is authorized

RWX eXecute: Welcome to Paradise





Agenda







1 Memory basics



2 How to access physical memory



3 RWX









D.Aumaitre - SOGETI/ESEC R&D A little journey inside Windows memory 19 / 32

Memory basics Read: gather information

How to access physical memory Write: everything is authorized

RWX eXecute: Welcome to Paradise





Agenda







1 Memory basics



2 How to access physical memory



3 RWX

Read: gather information

Write: everything is authorized

eXecute: Welcome to Paradise









D.Aumaitre - SOGETI/ESEC R&D A little journey inside Windows memory 20 / 32

Memory basics Read: gather information

How to access physical memory Write: everything is authorized

RWX eXecute: Welcome to Paradise





Process Explorer 101





Context

Read-only access



Purpose

Gather and show information relative to each process.



What is needed?

Processes and threads lists.

Opened handles, loaded libraries.









D.Aumaitre - SOGETI/ESEC R&D A little journey inside Windows memory 21 / 32

Memory basics Read: gather information

How to access physical memory Write: everything is authorized

RWX eXecute: Welcome to Paradise





Process Explorer 101

Handles



struct _EPROCESS struct _HANDLE_TABLE struct _HANDLE_TABLE_ENTRY

+0x000 Pcb : struct _KPROCESS +0x000 TableCode : Ptr32 to void

[...] [...] struct _HANDLE_TABLE_ENTRY

+0x0c4 ObjectTable : Ptr32 to struct _HANDLE_TABLE

[...] struct _HANDLE_TABLE_ENTRY

+0x190 ThreadListHead : struct _LIST_ENTRY

[...]

+0x1b0 Peb : Ptr32 to struct _PEB

[...]

struct _HANDLE_TABLE_ENTRY





struct _PEB Threads

[...]

+0x00c Ldr : Ptr32 to _PEB_LDR_DATA

[...] struct _ETHREAD

[...]

Dlls +0x22C ThreadListEntry : struct _LIST_ENTRY

[...]

struct _PEB_LDR_DATA

[...]

+0x00c InLoadOrderModuleList : struct _LIST_ENTRY struct _ETHREAD

[...] [...]

+0x22C ThreadListEntry : struct _LIST_ENTRY

[...]

struct _LDR_DATA_TABLE_ENTRY

+0x000 InLoadOrderModuleList : struct _LIST_ENTRY

[...] struct _ETHREAD

[...]

+0x22C ThreadListEntry : struct _LIST_ENTRY

[...]

struct _LDR_DATA_TABLE_ENTRY

+0x000 InLoadOrderModuleList : struct _LIST_ENTRY

[...]









D.Aumaitre - SOGETI/ESEC R&D A little journey inside Windows memory 21 / 32

Memory basics Read: gather information

How to access physical memory Write: everything is authorized

RWX eXecute: Welcome to Paradise





Process Explorer 101









DEMO









D.Aumaitre - SOGETI/ESEC R&D A little journey inside Windows memory 21 / 32

Memory basics Read: gather information

How to access physical memory Write: everything is authorized

RWX eXecute: Welcome to Paradise





Regedit 101







Context

Same as Process Explorer 101.



Purpose

Clone regedit.



What is needed?

Hives and registry keys.









D.Aumaitre - SOGETI/ESEC R&D A little journey inside Windows memory 22 / 32

Memory basics Read: gather information

How to access physical memory Write: everything is authorized

RWX eXecute: Welcome to Paradise





Regedit 101



struct _CM_KEY_BODY

struct _CM_KEY_CONTROL_BLOCK

[...]

[...]

+0x004 KeyControlBlock : Ptr32 to struct _CM_KEY_CONTROL_BLOCK

+0x010 KeyHive : Ptr32 to struct _HHIVE

[...]

+0x014 KeyCell : Uint4B

[...]





struct _HHIVE

[...]

+0x058 Storage : [2] struct _DUAL

[...] Cell Index

1 bit 10 bits 9 bits 12 bits



Directory Table Offset

struct _DUAL

[...]

+0x004 Map : Ptr32 to struct _HMAP_DIRECTORY

[...]









struct _HMAP_DIRECTORY struct _HMAP_TABLE



struct _CELL_DATA









Ptr32 to struct

struct _HMAP_ENTRY

_HMAP_TABLE

struct _HMAP_ENTRY

+0x000 BlockAddress : Uint4B

[...]



1024 pointers 512 struct _HMAP_ENTRY









D.Aumaitre - SOGETI/ESEC R&D A little journey inside Windows memory 22 / 32

Memory basics Read: gather information

How to access physical memory Write: everything is authorized

RWX eXecute: Welcome to Paradise





Regedit 101









DEMO









D.Aumaitre - SOGETI/ESEC R&D A little journey inside Windows memory 22 / 32

Memory basics Read: gather information

How to access physical memory Write: everything is authorized

RWX eXecute: Welcome to Paradise





Agenda







1 Memory basics



2 How to access physical memory



3 RWX

Read: gather information

Write: everything is authorized

eXecute: Welcome to Paradise









D.Aumaitre - SOGETI/ESEC R&D A little journey inside Windows memory 23 / 32

Memory basics Read: gather information

How to access physical memory Write: everything is authorized

RWX eXecute: Welcome to Paradise





Login without password?







Context

Read/write access



Several ways:

Adam Boileau’s winlockpwn or. . .

2-bytes patch in registry :)









D.Aumaitre - SOGETI/ESEC R&D A little journey inside Windows memory 24 / 32

Memory basics Read: gather information

How to access physical memory Write: everything is authorized

RWX eXecute: Welcome to Paradise





Login without password?









DEMO









D.Aumaitre - SOGETI/ESEC R&D A little journey inside Windows memory 24 / 32

Memory basics Read: gather information

How to access physical memory Write: everything is authorized

RWX eXecute: Welcome to Paradise





Privilege escalation









Each process owns a security token.

Security token belongs to kernel memory.

But we can access kernel memory :)









D.Aumaitre - SOGETI/ESEC R&D A little journey inside Windows memory 25 / 32

Memory basics Read: gather information

How to access physical memory Write: everything is authorized

RWX eXecute: Welcome to Paradise





Privilege escalation









DEMO









D.Aumaitre - SOGETI/ESEC R&D A little journey inside Windows memory 25 / 32

Memory basics Read: gather information

How to access physical memory Write: everything is authorized

RWX eXecute: Welcome to Paradise





Agenda







1 Memory basics



2 How to access physical memory



3 RWX

Read: gather information

Write: everything is authorized

eXecute: Welcome to Paradise









D.Aumaitre - SOGETI/ESEC R&D A little journey inside Windows memory 26 / 32

Memory basics Read: gather information

How to access physical memory Write: everything is authorized

RWX eXecute: Welcome to Paradise





Arbitrary code execution









Context

Read/write access

But no execute access. . .



A solution

Functions pointers hooking









D.Aumaitre - SOGETI/ESEC R&D A little journey inside Windows memory 27 / 32

Memory basics Read: gather information

How to access physical memory Write: everything is authorized

RWX eXecute: Welcome to Paradise





Arbitrary code execution







Which pointers?

KUSER SHARED DATA structure

SystemCall field

Called before each system call



Where to store the payload?

The KUSER SHARED DATA structure occupies only 334 bytes

on a 4K-page. . .









D.Aumaitre - SOGETI/ESEC R&D A little journey inside Windows memory 27 / 32

Memory basics Read: gather information

How to access physical memory Write: everything is authorized

RWX eXecute: Welcome to Paradise





Arbitrary code execution









DEMO









D.Aumaitre - SOGETI/ESEC R&D A little journey inside Windows memory 27 / 32

Memory basics Read: gather information

How to access physical memory Write: everything is authorized

RWX eXecute: Welcome to Paradise





Arbitrary code execution





How it works ?

Each process belongs to a desktop.

Only one desktop can interact with a user.

For an interactive user, 3 desktops Default, Disconnect et

Winlogon

With CreateProcess, we can specify the desktop

We can spawn a cmd in Winlogon desktop.

Thus we have a pre-authentication SYSTEM shell :)









D.Aumaitre - SOGETI/ESEC R&D A little journey inside Windows memory 28 / 32

Memory basics Read: gather information

How to access physical memory Write: everything is authorized

RWX eXecute: Welcome to Paradise





What if DEP is enabled?





KUSER SHARED DATA is not executable.

Per process DEP control with KEXECUTE OPTIONS.

Stored inside the KPROCESS structure.

t y p e d e f s t r u c t KEXECUTE OPTIONS // 7 e l e m e n t s , 0 x1 b y t e s ( s i z e o f )

{

/∗0 x000 ∗/ UINT8 ExecuteDisable : 1; // 0 B i t P o s i t i o n

/∗0 x000 ∗/ UINT8 ExecuteEnable : 1 ; // 1 B i t P o s i t i o n

/∗0 x000 ∗/ UINT8 D i s a b l e T h u n k E m u l a t i o n : 1 ; // 2 B i t P o s i t i o n

/∗0 x000 ∗/ UINT8 Permanent : 1 ; // 3 B i t P o s i t i o n

/∗0 x000 ∗/ UINT8 E x e c u t e D i s p a t c h E n a b l e : 1 ; // 4 B i t P o s i t i o n

/∗0 x000 ∗/ UINT8 ImageDispatchEnable : 1 ; // 5 B i t P o s i t i o n

/∗0 x000 ∗/ UINT8 Spare : 2 ; // 6 B i t P o s i t i o n

}KEXECUTE OPTIONS , ∗PKEXECUTE OPTIONS ;









D.Aumaitre - SOGETI/ESEC R&D A little journey inside Windows memory 29 / 32

Memory basics Read: gather information

How to access physical memory Write: everything is authorized

RWX eXecute: Welcome to Paradise





Conclusion









iPod 101

Physical access = root



We can reconstruct a high-level view of the operating system

with only physical memory.

Many applications: forensics, debug, intrusion.









D.Aumaitre - SOGETI/ESEC R&D A little journey inside Windows memory 30 / 32

Memory basics Read: gather information

How to access physical memory Write: everything is authorized

RWX eXecute: Welcome to Paradise





Questions ?









Thanks for your attention

Questions ?









D.Aumaitre - SOGETI/ESEC R&D A little journey inside Windows memory 31 / 32

Memory basics Read: gather information

How to access physical memory Write: everything is authorized

RWX eXecute: Welcome to Paradise





Bibliography









Adam Boileau: http://storm.net.nz/projects/16

Andreas Schuster:

http://computer.forensikblog.de/en/

Sandman: http://sandman.msuiche.net/

Coldboot attacks: http://citp.princeton.edu/memory/









D.Aumaitre - SOGETI/ESEC R&D A little journey inside Windows memory 32 / 32



Related docs
Other docs by yurtgc548
倒塌陷落
Views: 0  |  Downloads: 0
中学教考网
Views: 0  |  Downloads: 0
スライド 1
Views: 0  |  Downloads: 0
“Youre My New Best Friend_”
Views: 0  |  Downloads: 0
“Why Hope”
Views: 0  |  Downloads: 0
“My Environment_ My Health_ My Choices”
Views: 0  |  Downloads: 0
By registering with docstoc.com you agree to our
privacy policy

You are almost ready to download!

You are almost ready to download!