SlideShare une entreprise Scribd logo
1  sur  52
Télécharger pour lire hors ligne
Rainbow over the Window(s)
... more colors than you could expect
$whoami
• Peter
• @zer0mem
• Windows kernel research at
KeenLab, Tencent
• pwn2own winner (2015 /
2016), pwnie nominee (2015)
• fuzzing focus : state
• wushu player
• @long123king
• Windows kernel research at
KeenLab, Tencent
• pwn2own winner (2016)
• fuzzing focus : data 'format'
• windbg guy
• Daniel
agenda
w32k
• prevalence
• references
• patch tuesday
• attack surface
• filtering
• extensions
• fuzzing
p2o 2016
• directx
• universal bug
• details
• exploitation
why we are interested
• resides in ring 0
• i pretty much enjoy at level 0 and bellow ;)
• huge attack surface
• huge in comparsion to ntoskrnl counterpart or in-ring3-sandbox interface
• necessary to cover that, by white hats, as it exposes big impact for security
• accessible from sandbox-es
• nowdays more or less => big success!
• field to train your fuzzer!
• on this, bit later in this talk
previous (& ongoing) work in this area
• nils to p0
• just follow his bucket of bugs and you got pretty much idea whats going on in w32k
• mwr labs defcon
• 3 teams to cover w32k, different approaches & results
• p2o - from vulnerability to exploit
• 2015 - 2x TTF [KEEN]
• 2016 - DirectX [KEEN]
• 2016 - chrome - flash - w32k breakdown [360]
• j00ru :
• TTF
• EMF
bulletins example
attack surface
• once i said big one, i meaned it!
what is going on in w32k ?
• huge numbers of syscalls
• lot of objects
• lot of hardcore graphics stuffs
• lot of things i dunno
DC - lets paint
Dc
Bitmap
Region Palette
Font
Brush Pen
…
vector 1:
includes fair amount of functions
vector 2 :
interconnects nice number of different objects
fonts - did i mention it ?
• various prelevant (mis)usage of different actors
• stuxnet, duqu, ...
• our p2o 2015 target (2 x TTF to kernel code exec)
• j00ru heroic cleaning
• ahh ... from last year it is moved to user mode, is it over ?
• but still for fonts loading you going to kernel, exposed syscalls
• found & reported nice bug recently
• takeaway : not all problems vanish by moving things around
• but to be honest, it solves a lot ...
recent bugs
• just including one semi complete part, without targeting syscalls, mainly
for tuning fuzzer infrastructure :
• logic
• mutator
• generator
• interconnections
• additional algorithms
Collisions
23%
ReadVa, nu
llptr
24%
reported
35%
queue
18%
bugz so far #13~16
Collisions
ReadVa, nullptr
reported
queue
win32k - surface
• mentioned earlier, huge arsenal of syscalls
• condrv
• directx
• user mode callbacks
• ioctl alike not so 'hidden syscalls'
• ntusermessagecall
• apfn
• and more
NtUserMessageCall
• used at p2o 2015
• very powerfull for exploitation
• more accessible “power”
behind one syscall!
NtUserCall * => apfn table
• nice 'hidden' ioctl-alike attack surface :
• notice CreateMenu, and others
• + > 0x80 syscalls
Qilin <- win32kfull!apfnSimpleCall
directx
• another nice example of w32k extension :
• interesting takeways :
• state alike fuzzing
• less prone to bug
• not so much code involved
• basically wrappers and memory / locking mechanism
• however universal bugs, independed of graphic
• data fuzzing
• mostly related to garphic drivers nvidia / intel
• therefore not universal bugs
• prone to bugs, lot ...
w32k filter
w32k filter
• introduced to limit unecessary access to w32k
• more benevolent that w32k lockdown
• limit attack surface for bug hunting
• limit exploitation techniques
• bitmap of allowed syscalls
• wrapped in win32k : “ x win32k!stub* “
w32k filter
• bitmap of allowed w32k
• edge example (part) :
w32k indirect ways
• condrv.sys -> conhost.exe
• aka console
• issue ioctl to condrv
• driver will forward those w32k alike command to conhost.exe
• conhost.exe will issue w32k syscalls
• trough condrv ioctls you can fuzz / exploit w32k indirectly
• active at p2o 2016, penetrated by 360 vulcan team
• escape through plugin
• requires additional bug in plugin
• in new environment where is no lockdown anymore!
Fuzzing ?
data format
(TTF, ..) object state
(dc, ..)
Documentation
• actually very well documented - msdn
• find your particular object
• get set of related api's
• understand api
• skip gdi workaround (locks, temporary memory and handles
databases) and go directly for syscalls
• altough syscalls not documented, use api knowledge + RE
How
• templates
• examples of template fuzzers : trinity, syzkaller, mwr fuzzer
• our internal Qilin fuzzer
• grab api (REconstruct Nt* ones) definitions from msdn
• fill patterns with reasonable value ranges
• generate patterns
sophisticate it little bit
• sort patterns per object
• Dc, Region, Bitmap, Font, ..
• Window, Menu, UserMessage, afn, ..
• get meanigfull connections
• get from database active handle of particular type
• get interrupted at user mode callbacks
• involve some meaningfull syscalls then
• scope create - delete
• dont let it goes wild
code coverage
• essential to do (semi)meaningfull actions
• approx good and bad parameters
• good ration (40%+) of success ratio
• this alone can get you reasonable code coverage info
code coverage
• qemu
• ola, runs win10!
• you can even ssh to win10 ;)
• kvm vs tsg switching
• do minimalistic patch
• grab code coverage
• use powerfull static analysis arsenal : binary ninja!
• lead / help your fuzzer
• more on this topic another time, soon :)
Edge EoP for Pwn2Own 2016
• Bug: CVE-2016-0176
• Bug Type: Kernel Heap Overflow
• Bug Driver: dxgkrnl.sys
_D3DKMT_PRESENTHISTORYTOKEN
typedef struct _D3DKMT_PRESENTHISTORYTOKEN
{
D3DKMT_PRESENT_MODEL Model; //D3DKMT_PM_REDIRECTED_FLIP = 2,
// The size of the present history token in bytes including Model.
// Should be set to zero by when submitting a token.
// It will be initialized when reading present history and can be used to
// go to the next token in the present history buffer.
UINT TokenSize; // 0x438
#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WIN8)
// The binding id as specified by the Composition Surface
UINT64 CompositionBindingId;
#endif
union
{
D3DKMT_FLIPMODEL_PRESENTHISTORYTOKEN Flip; // happen to be the largest union component
D3DKMT_BLTMODEL_PRESENTHISTORYTOKEN Blt;
D3DKMT_VISTABLTMODEL_PRESENTHISTORYTOKEN VistaBlt;
D3DKMT_GDIMODEL_PRESENTHISTORYTOKEN Gdi;
D3DKMT_FENCE_PRESENTHISTORYTOKEN Fence;
D3DKMT_GDIMODEL_SYSMEM_PRESENTHISTORYTOKEN GdiSysMem;
D3DKMT_COMPOSITION_PRESENTHISTORYTOKEN Composition;
}
Token;
} D3DKMT_PRESENTHISTORYTOKEN;
_D3DKMT_FLIPMODEL_PRESENTHISTORYTOKEN
typedef struct _D3DKMT_FLIPMODEL_PRESENTHISTORYTOKEN
{
UINT64 FenceValue;
ULONG64 hLogicalSurface;
UINT_PTR dxgContext;
D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId;
……
D3DKMT_HANDLE hSyncObject; // The local handle of a sync object from D3D runtimes.
// The global handle of the sync object coming to DWM.
RECT SourceRect;
UINT DestWidth;
UINT DestHeight;
RECT TargetRect;
// DXGI_MATRIX_3X2_F: _11 _12 _21 _22 _31 _32
FLOAT Transform[6];
UINT CustomDuration;
D3DDDI_FLIPINTERVAL_TYPE CustomDurationFlipInterval;
UINT PlaneIndex;
#endif
#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_0)
D3DDDI_COLOR_SPACE_TYPE ColorSpace;
#endif
D3DKMT_DIRTYREGIONS DirtyRegions;
} D3DKMT_FLIPMODEL_PRESENTHISTORYTOKEN;
_D3DKMT_DIRTYREGIONS
typedef struct tagRECT
{
LONG left;
LONG top;
LONG right;
LONG bottom;
} RECT, *PRECT, NEAR *NPRECT, FAR *LPRECT; // 0x10 bytes
typedef struct _D3DKMT_DIRTYREGIONS
{
UINT NumRects;
RECT Rects[D3DKMT_MAX_PRESENT_HISTORY_RECTS]; // 0x10 * 0x10 = 0x100 bytes
//#define D3DKMT_MAX_PRESENT_HISTORY_RECTS 16
} D3DKMT_DIRTYREGIONS;
1
Layout
Members Group 1 (0x168 bytes)
+0x168
D3DKMT_PRESENT_HISTORYTOKEN
(0x438 bytes)
Members Group 2 (0x38 bytes)
+0x5A0
Model (2)
+0x000
TokenSize (0x438)
+0x004
+0x010
D3DKMT_FLIPMODEL_PRESENTHISTORYTOKEN
NumRects
+0x324
DirtyRegions (0x100 bytes)
+0x328
Overflow Code (Disassembly)
loc_1C009832A: DXGCONTEXT::SubmitPresentHistoryToken(......) + 0x67B
cmp dword ptr[r15 + 334h], 10h // NumRects
jbe short loc_1C009834B; Jump if Below or Equal(CF = 1 | ZF = 1)
call cs : __imp_WdLogNewEntry5_WdAssertion
mov rcx, rax
mov qword ptr[rax + 18h], 38h
call cs : __imp_WdLogEvent5_WdAssertion
loc_1C009834B: DXGCONTEXT::SubmitPresentHistoryToken (......) + 0x6B2
mov eax, [r15 + 334h]
shl eax, 4
add eax, 338h
jmp short loc_1C00983BD
loc_1C00983BD: DXGCONTEXT::SubmitPresentHistoryToken (......) + 0x6A5
lea r8d, [rax + 7]
mov rdx, r15; Src
mov eax, 0FFFFFFF8h;
mov rcx, rsi; Dst
and r8, rax; Size
call memmove
Overflow Code (C++)
D3DKMT_PRESENTHISTORYTOKEN* hist_token_src = BufferPassedFromUserMode(…);
D3DKMT_PRESENTHISTORYTOKEN* hist_token_dst = ExpInterlockedPopEntrySList(…);
if(hist_token_src->dirty_regions.NumRects > 0x10)
{
// log via watch dog assertion, NOT work in free/release build
}
auto size = (hist_token_src->dirty_regions.NumRects * 0x10 + 0x338 + 7) / 8;
auto src = (uint8_t*)hist_token_src;
auto dst = (uint8_t*)hist_token_dst;
memcpy(dst, src, size);
2
FreeSList: Head -> A -> B -> C -> D -> E -> F -> G -> H
Lookaside-like Singly-Linked List of Hist Token
FreeTokensHead
H G F E D C B A
3
Pop one node out for use (Pop A)
FreeSList: Head -> B -> C -> D -> E -> F -> G -> H
FreeTokensHead
H G F E D C B A
4
Pop another node out for use (Pop B)
FreeSList: Head -> C -> D -> E -> F -> G -> H
FreeTokensHead
H G F E D C B A
5
Overflow Scenario 1
FreeSList: Head -> B -> C -> D -> E -> F -> G -> H
FreeTokensHead
H G F E D C B A
6
FreeSList: Head -> C -> D -> E -> F -> G -> H
Overflow Scenario 2
FreeTokensHead
H G F E D C B A
7
Push node B back after overflow scenario 2
FreeSList: Head -> B -> C -> D -> E -> F -> G -> H
FreeTokensHead
H G F E D C B A
8
Will this overflow lead to arbitrary write?
FreeSList: Head -> A -> B -> C -> D -> E -> F -> G -> H
FreeTokensHead
?H G F E D C B A
9
Unfortunately!
FreeSList: Head -> A -> B -> C -> D -> E -> F -> G -> H
FreeTokensHead
?H G F E D C B A
10
The overwritten ‘Next’ field will be recovered
FreeSList: Head -> A -> B -> C -> D -> E -> F -> G -> H
FreeTokensHead
H G F E D C B A
11
Back to where after 2 pops
FreeSList: Head -> C -> D -> E -> F -> G -> H
FreeTokensHead
H G F E D C B A
12
Push in different orders with pop
FreeSList: Head -> A -> C -> D -> E -> F -> G -> H
FreeTokensHead
H G F E D C B A
13
Overflow Scenario 3
FreeSList: Head -> A -> ?
FreeTokensHead
?H G F E D C B A
The gap between ideal and reality
• Till now, it is nothing but theory!
• 1st try
• Action: Loop calling into D3DKMTPresent(), which will trigger overflow scenario 1
• Failed: Can not reach to overflow scenario 2 or 3
• Reason: every request is served by the node A, and then release it.
• 2nd try
• Action: Loop calling into D3DKMTPresent() from multithread
• Failed: Can not reach to overflow scenario 2 or 3
• Reason: protected by a lock
The gap between ideal and reality
• Doubt: is it doable for a double pop?
• In theory: Yes, otherwise the lookaside list is meaningless
• Guess: there should other callstacks trigger pop
• Target: graphics intensive applications
• Detection: windbg script logging push and pop
• Solitaire is the hero
• BitBlt() can trigger pop with a different call stack
• Multithread loop with a mix of D3DKMTPresent() and BitBlt() lead to double pop
• Double pop eventually lead to overflow scenario 2 and 3
Arbitrary read and write into kernel memory
• With the help of Bitmap object
• Spray bitmap objects into 4GB ranges
• First hold space by array of 256MB big bitmap objects
• Then replace with 1MB small bitmap objects
• Redirect overflow write to 1 bitmap object
• Need hint of location of bitmap arrays, info leak needed
• Info leak by user32! gSharedInfo
• 2-steps manipulation of Bitmap object succeed arbitrary read/write to kernel
Steal token of SYSTEM process
• Info leak of nt base addr
• Info leaked by sidt
• nt!PspCidTable
• Same entry structures as handle table
• Get SYSTEM’s _KPROCESS and _TOKEN addr
• Get current process’s _KPROCESS _TOKEN addr
• Steal it
• Enjoy SYSTEM privilege now!
Q & A
references
• nils : his p0 bucket of bugs (example)
• https://bugs.chromium.org/p/project-zero/issues/detail?id=746
• mwr : defcon slides & fuzzers
• https://github.com/mwrlabs/KernelFuzzer
• nikita : directx zeronights talk
• http://2015.zeronights.org/assets/files/11-Tarakanov.pdf
• tiraniddo : conhost p0 block post
• https://googleprojectzero.blogspot.com/2015_05_01_archive.html?m=0
• j00ru : font blog post series
• http://googleprojectzero.blogspot.com/2016/06/a-year-of-windows-kernel-font-fuzzing-1_27.html
• keenlab : recon 2015 ttf slides
• https://recon.cx/2015/slides/recon2015-05-peter-hlavaty-jihui-lu-This-Time-Font-hunt-you-down-in-4-bytes.pdf
• microsoft : mitigations
• https://www.blackhat.com/docs/us-16/materials/us-16-Weston-Windows-10-Mitigation-Improvements.pdf
• qemu : win10 'fix' blog post
• https://www.invincealabs.com/blog/2016/07/running-windows-64bit-qemu/
Rainbow Over the Windows: More Colors Than You Could Expect

Contenu connexe

Tendances

Windows Kernel Exploitation : This Time Font hunt you down in 4 bytes
Windows Kernel Exploitation : This Time Font hunt you down in 4 bytesWindows Kernel Exploitation : This Time Font hunt you down in 4 bytes
Windows Kernel Exploitation : This Time Font hunt you down in 4 bytesPeter Hlavaty
 
Linux Binary Exploitation - Return-oritend Programing
Linux Binary Exploitation - Return-oritend ProgramingLinux Binary Exploitation - Return-oritend Programing
Linux Binary Exploitation - Return-oritend ProgramingAngel Boy
 
Heap exploitation
Heap exploitationHeap exploitation
Heap exploitationAngel Boy
 
Return to dlresolve
Return to dlresolveReturn to dlresolve
Return to dlresolveAngel Boy
 
Pwning in c++ (basic)
Pwning in c++ (basic)Pwning in c++ (basic)
Pwning in c++ (basic)Angel Boy
 
Semmle Codeql
Semmle Codeql Semmle Codeql
Semmle Codeql M. S.
 
Privileged file operations_bug_on_windows
Privileged file operations_bug_on_windowsPrivileged file operations_bug_on_windows
Privileged file operations_bug_on_windowsSai Lay
 
CSW2017 Peng qiu+shefang-zhong win32k -dark_composition_finnal_finnal_rm_mark
CSW2017 Peng qiu+shefang-zhong win32k -dark_composition_finnal_finnal_rm_markCSW2017 Peng qiu+shefang-zhong win32k -dark_composition_finnal_finnal_rm_mark
CSW2017 Peng qiu+shefang-zhong win32k -dark_composition_finnal_finnal_rm_markCanSecWest
 
Reliable Windows Heap Exploits
Reliable Windows Heap ExploitsReliable Windows Heap Exploits
Reliable Windows Heap Exploitsamiable_indian
 
Play with FILE Structure - Yet Another Binary Exploit Technique
Play with FILE Structure - Yet Another Binary Exploit TechniquePlay with FILE Structure - Yet Another Binary Exploit Technique
Play with FILE Structure - Yet Another Binary Exploit TechniqueAngel Boy
 
Master Canary Forging by Yuki Koike - CODE BLUE 2015
Master Canary Forging by Yuki Koike - CODE BLUE 2015Master Canary Forging by Yuki Koike - CODE BLUE 2015
Master Canary Forging by Yuki Koike - CODE BLUE 2015CODE BLUE
 
BlueHat v17 || Out of the Truman Show: VM Escape in VMware Gracefully
BlueHat v17 || Out of the Truman Show: VM Escape in VMware Gracefully BlueHat v17 || Out of the Truman Show: VM Escape in VMware Gracefully
BlueHat v17 || Out of the Truman Show: VM Escape in VMware Gracefully BlueHat Security Conference
 
How Prometheus Store the Data
How Prometheus Store the DataHow Prometheus Store the Data
How Prometheus Store the DataHao Chen
 
DeathNote of Microsoft Windows Kernel
DeathNote of Microsoft Windows KernelDeathNote of Microsoft Windows Kernel
DeathNote of Microsoft Windows KernelPeter Hlavaty
 
Windows Privilege Escalation
Windows Privilege EscalationWindows Privilege Escalation
Windows Privilege EscalationRiyaz Walikar
 

Tendances (20)

x86
x86x86
x86
 
Windows Kernel Exploitation : This Time Font hunt you down in 4 bytes
Windows Kernel Exploitation : This Time Font hunt you down in 4 bytesWindows Kernel Exploitation : This Time Font hunt you down in 4 bytes
Windows Kernel Exploitation : This Time Font hunt you down in 4 bytes
 
Linux Binary Exploitation - Return-oritend Programing
Linux Binary Exploitation - Return-oritend ProgramingLinux Binary Exploitation - Return-oritend Programing
Linux Binary Exploitation - Return-oritend Programing
 
Heap exploitation
Heap exploitationHeap exploitation
Heap exploitation
 
Return to dlresolve
Return to dlresolveReturn to dlresolve
Return to dlresolve
 
Pwning in c++ (basic)
Pwning in c++ (basic)Pwning in c++ (basic)
Pwning in c++ (basic)
 
Semmle Codeql
Semmle Codeql Semmle Codeql
Semmle Codeql
 
Privileged file operations_bug_on_windows
Privileged file operations_bug_on_windowsPrivileged file operations_bug_on_windows
Privileged file operations_bug_on_windows
 
CSW2017 Peng qiu+shefang-zhong win32k -dark_composition_finnal_finnal_rm_mark
CSW2017 Peng qiu+shefang-zhong win32k -dark_composition_finnal_finnal_rm_markCSW2017 Peng qiu+shefang-zhong win32k -dark_composition_finnal_finnal_rm_mark
CSW2017 Peng qiu+shefang-zhong win32k -dark_composition_finnal_finnal_rm_mark
 
Reliable Windows Heap Exploits
Reliable Windows Heap ExploitsReliable Windows Heap Exploits
Reliable Windows Heap Exploits
 
Play with FILE Structure - Yet Another Binary Exploit Technique
Play with FILE Structure - Yet Another Binary Exploit TechniquePlay with FILE Structure - Yet Another Binary Exploit Technique
Play with FILE Structure - Yet Another Binary Exploit Technique
 
Master Canary Forging by Yuki Koike - CODE BLUE 2015
Master Canary Forging by Yuki Koike - CODE BLUE 2015Master Canary Forging by Yuki Koike - CODE BLUE 2015
Master Canary Forging by Yuki Koike - CODE BLUE 2015
 
Git undo
Git undoGit undo
Git undo
 
BlueHat v17 || Out of the Truman Show: VM Escape in VMware Gracefully
BlueHat v17 || Out of the Truman Show: VM Escape in VMware Gracefully BlueHat v17 || Out of the Truman Show: VM Escape in VMware Gracefully
BlueHat v17 || Out of the Truman Show: VM Escape in VMware Gracefully
 
Codeql Variant Analysis
Codeql Variant AnalysisCodeql Variant Analysis
Codeql Variant Analysis
 
Gcc porting
Gcc portingGcc porting
Gcc porting
 
How Prometheus Store the Data
How Prometheus Store the DataHow Prometheus Store the Data
How Prometheus Store the Data
 
DeathNote of Microsoft Windows Kernel
DeathNote of Microsoft Windows KernelDeathNote of Microsoft Windows Kernel
DeathNote of Microsoft Windows Kernel
 
CMake best practices
CMake best practicesCMake best practices
CMake best practices
 
Windows Privilege Escalation
Windows Privilege EscalationWindows Privilege Escalation
Windows Privilege Escalation
 

En vedette

When is something overflowing
When is something overflowingWhen is something overflowing
When is something overflowingPeter Hlavaty
 
Moony li pacsec-1.8
Moony li pacsec-1.8Moony li pacsec-1.8
Moony li pacsec-1.8PacSecJP
 
Discovering Vulnerabilities For Fun and Profit
Discovering Vulnerabilities For Fun and ProfitDiscovering Vulnerabilities For Fun and Profit
Discovering Vulnerabilities For Fun and ProfitAbhisek Datta
 
Fuzzing: The New Unit Testing
Fuzzing: The New Unit TestingFuzzing: The New Unit Testing
Fuzzing: The New Unit TestingDmitry Vyukov
 
Масштабируемый и эффективный фаззинг Google Chrome
Масштабируемый и эффективный фаззинг Google ChromeМасштабируемый и эффективный фаззинг Google Chrome
Масштабируемый и эффективный фаззинг Google ChromePositive Hack Days
 
CSW2017 Qinghao tang+Xinlei ying vmware_escape_final
CSW2017 Qinghao tang+Xinlei ying vmware_escape_finalCSW2017 Qinghao tang+Xinlei ying vmware_escape_final
CSW2017 Qinghao tang+Xinlei ying vmware_escape_finalCanSecWest
 
Vulnerability desing patterns
Vulnerability desing patternsVulnerability desing patterns
Vulnerability desing patternsPeter Hlavaty
 
Ice Age melting down: Intel features considered usefull!
Ice Age melting down: Intel features considered usefull!Ice Age melting down: Intel features considered usefull!
Ice Age melting down: Intel features considered usefull!Peter Hlavaty
 
OWASP ModSecurity Core Rules Paranoia Mode
OWASP ModSecurity Core Rules Paranoia ModeOWASP ModSecurity Core Rules Paranoia Mode
OWASP ModSecurity Core Rules Paranoia ModeChristian Folini
 
D1T3-Anto-Joseph-Droid-FF
D1T3-Anto-Joseph-Droid-FFD1T3-Anto-Joseph-Droid-FF
D1T3-Anto-Joseph-Droid-FFAnthony Jose
 
The Python bites your apple
The Python bites your appleThe Python bites your apple
The Python bites your appleQidan He
 
BSides LV 2016 - Beyond the tip of the iceberg - fuzzing binary protocols for...
BSides LV 2016 - Beyond the tip of the iceberg - fuzzing binary protocols for...BSides LV 2016 - Beyond the tip of the iceberg - fuzzing binary protocols for...
BSides LV 2016 - Beyond the tip of the iceberg - fuzzing binary protocols for...Alexandre Moneger
 
Find your own iOS kernel bug
Find your own iOS kernel bugFind your own iOS kernel bug
Find your own iOS kernel bugGustavo Martinez
 
Social Media Risk Metrics
Social Media Risk MetricsSocial Media Risk Metrics
Social Media Risk MetricsIftach Ian Amit
 
Henrique Dantas - API fuzzing using Swagger
Henrique Dantas - API fuzzing using SwaggerHenrique Dantas - API fuzzing using Swagger
Henrique Dantas - API fuzzing using SwaggerDevSecCon
 
50 Shades of Fuzzing by Peter Hlavaty & Marco Grassi
50 Shades of Fuzzing by Peter Hlavaty & Marco Grassi50 Shades of Fuzzing by Peter Hlavaty & Marco Grassi
50 Shades of Fuzzing by Peter Hlavaty & Marco GrassiShakacon
 
[CB16] About the cyber grand challenge: the world’s first all-machine hacking...
[CB16] About the cyber grand challenge: the world’s first all-machine hacking...[CB16] About the cyber grand challenge: the world’s first all-machine hacking...
[CB16] About the cyber grand challenge: the world’s first all-machine hacking...CODE BLUE
 
Software Security : From school to reality and back!
Software Security : From school to reality and back!Software Security : From school to reality and back!
Software Security : From school to reality and back!Peter Hlavaty
 
SmartphoneHacking_Android_Exploitation
SmartphoneHacking_Android_ExploitationSmartphoneHacking_Android_Exploitation
SmartphoneHacking_Android_ExploitationMalachi Jones
 

En vedette (20)

When is something overflowing
When is something overflowingWhen is something overflowing
When is something overflowing
 
Moony li pacsec-1.8
Moony li pacsec-1.8Moony li pacsec-1.8
Moony li pacsec-1.8
 
Discovering Vulnerabilities For Fun and Profit
Discovering Vulnerabilities For Fun and ProfitDiscovering Vulnerabilities For Fun and Profit
Discovering Vulnerabilities For Fun and Profit
 
Fuzzing: The New Unit Testing
Fuzzing: The New Unit TestingFuzzing: The New Unit Testing
Fuzzing: The New Unit Testing
 
Масштабируемый и эффективный фаззинг Google Chrome
Масштабируемый и эффективный фаззинг Google ChromeМасштабируемый и эффективный фаззинг Google Chrome
Масштабируемый и эффективный фаззинг Google Chrome
 
CSW2017 Qinghao tang+Xinlei ying vmware_escape_final
CSW2017 Qinghao tang+Xinlei ying vmware_escape_finalCSW2017 Qinghao tang+Xinlei ying vmware_escape_final
CSW2017 Qinghao tang+Xinlei ying vmware_escape_final
 
Vulnerability desing patterns
Vulnerability desing patternsVulnerability desing patterns
Vulnerability desing patterns
 
Ice Age melting down: Intel features considered usefull!
Ice Age melting down: Intel features considered usefull!Ice Age melting down: Intel features considered usefull!
Ice Age melting down: Intel features considered usefull!
 
OWASP ModSecurity Core Rules Paranoia Mode
OWASP ModSecurity Core Rules Paranoia ModeOWASP ModSecurity Core Rules Paranoia Mode
OWASP ModSecurity Core Rules Paranoia Mode
 
D1T3-Anto-Joseph-Droid-FF
D1T3-Anto-Joseph-Droid-FFD1T3-Anto-Joseph-Droid-FF
D1T3-Anto-Joseph-Droid-FF
 
The Python bites your apple
The Python bites your appleThe Python bites your apple
The Python bites your apple
 
BSides LV 2016 - Beyond the tip of the iceberg - fuzzing binary protocols for...
BSides LV 2016 - Beyond the tip of the iceberg - fuzzing binary protocols for...BSides LV 2016 - Beyond the tip of the iceberg - fuzzing binary protocols for...
BSides LV 2016 - Beyond the tip of the iceberg - fuzzing binary protocols for...
 
Find your own iOS kernel bug
Find your own iOS kernel bugFind your own iOS kernel bug
Find your own iOS kernel bug
 
What the fuzz
What the fuzzWhat the fuzz
What the fuzz
 
Social Media Risk Metrics
Social Media Risk MetricsSocial Media Risk Metrics
Social Media Risk Metrics
 
Henrique Dantas - API fuzzing using Swagger
Henrique Dantas - API fuzzing using SwaggerHenrique Dantas - API fuzzing using Swagger
Henrique Dantas - API fuzzing using Swagger
 
50 Shades of Fuzzing by Peter Hlavaty & Marco Grassi
50 Shades of Fuzzing by Peter Hlavaty & Marco Grassi50 Shades of Fuzzing by Peter Hlavaty & Marco Grassi
50 Shades of Fuzzing by Peter Hlavaty & Marco Grassi
 
[CB16] About the cyber grand challenge: the world’s first all-machine hacking...
[CB16] About the cyber grand challenge: the world’s first all-machine hacking...[CB16] About the cyber grand challenge: the world’s first all-machine hacking...
[CB16] About the cyber grand challenge: the world’s first all-machine hacking...
 
Software Security : From school to reality and back!
Software Security : From school to reality and back!Software Security : From school to reality and back!
Software Security : From school to reality and back!
 
SmartphoneHacking_Android_Exploitation
SmartphoneHacking_Android_ExploitationSmartphoneHacking_Android_Exploitation
SmartphoneHacking_Android_Exploitation
 

Similaire à Rainbow Over the Windows: More Colors Than You Could Expect

Security research over Windows #defcon china
Security research over Windows #defcon chinaSecurity research over Windows #defcon china
Security research over Windows #defcon chinaPeter Hlavaty
 
DEF CON 27 - XILING GONG PETER PI - exploiting qualcom wlan and modem over th...
DEF CON 27 - XILING GONG PETER PI - exploiting qualcom wlan and modem over th...DEF CON 27 - XILING GONG PETER PI - exploiting qualcom wlan and modem over th...
DEF CON 27 - XILING GONG PETER PI - exploiting qualcom wlan and modem over th...Felipe Prado
 
[Td 2015] what is new in visual c++ 2015 and future directions(ulzii luvsanba...
[Td 2015] what is new in visual c++ 2015 and future directions(ulzii luvsanba...[Td 2015] what is new in visual c++ 2015 and future directions(ulzii luvsanba...
[Td 2015] what is new in visual c++ 2015 and future directions(ulzii luvsanba...Sang Don Kim
 
44 con slides
44 con slides44 con slides
44 con slidesgeeksec80
 
44 con slides (1)
44 con slides (1)44 con slides (1)
44 con slides (1)geeksec80
 
Hacking Highly Secured Enterprise Environments by Zoltan Balazs
Hacking Highly Secured Enterprise Environments by Zoltan BalazsHacking Highly Secured Enterprise Environments by Zoltan Balazs
Hacking Highly Secured Enterprise Environments by Zoltan BalazsShakacon
 
Kettunen, miaubiz fuzzing at scale and in style
Kettunen, miaubiz   fuzzing at scale and in styleKettunen, miaubiz   fuzzing at scale and in style
Kettunen, miaubiz fuzzing at scale and in styleDefconRussia
 
DEF CON 27- JISKA FABIAN - vacuum cleaning security
DEF CON 27- JISKA FABIAN - vacuum cleaning securityDEF CON 27- JISKA FABIAN - vacuum cleaning security
DEF CON 27- JISKA FABIAN - vacuum cleaning securityFelipe Prado
 
Patching Windows Executables with the Backdoor Factory | DerbyCon 2013
Patching Windows Executables with the Backdoor Factory | DerbyCon 2013Patching Windows Executables with the Backdoor Factory | DerbyCon 2013
Patching Windows Executables with the Backdoor Factory | DerbyCon 2013midnite_runr
 
Poc2015 os x_kernel_is_as_strong_as_its_weakest_part_liang_shuaitian
Poc2015 os x_kernel_is_as_strong_as_its_weakest_part_liang_shuaitianPoc2015 os x_kernel_is_as_strong_as_its_weakest_part_liang_shuaitian
Poc2015 os x_kernel_is_as_strong_as_its_weakest_part_liang_shuaitianLiang Chen
 
DEF CON 27 - WENXIANG QIAN and YUXIANG LI HUIYU - breaking google home exploi...
DEF CON 27 - WENXIANG QIAN and YUXIANG LI HUIYU - breaking google home exploi...DEF CON 27 - WENXIANG QIAN and YUXIANG LI HUIYU - breaking google home exploi...
DEF CON 27 - WENXIANG QIAN and YUXIANG LI HUIYU - breaking google home exploi...Felipe Prado
 
How OpenShift SDN helps to automate
How OpenShift SDN helps to automateHow OpenShift SDN helps to automate
How OpenShift SDN helps to automateIlkka Tengvall
 
Vert.x v3 - high performance polyglot application toolkit
Vert.x v3 - high performance  polyglot application toolkitVert.x v3 - high performance  polyglot application toolkit
Vert.x v3 - high performance polyglot application toolkitSages
 
BKK16-211 Internet of Tiny Linux (io tl)- Status and Progress
BKK16-211 Internet of Tiny Linux (io tl)- Status and ProgressBKK16-211 Internet of Tiny Linux (io tl)- Status and Progress
BKK16-211 Internet of Tiny Linux (io tl)- Status and ProgressLinaro
 
mloc.js 2014 - JavaScript and the browser as a platform for game development
mloc.js 2014 - JavaScript and the browser as a platform for game developmentmloc.js 2014 - JavaScript and the browser as a platform for game development
mloc.js 2014 - JavaScript and the browser as a platform for game developmentDavid Galeano
 
syzbot and the tale of million kernel bugs
syzbot and the tale of million kernel bugssyzbot and the tale of million kernel bugs
syzbot and the tale of million kernel bugsDmitry Vyukov
 
Hacking the Kinect with GAFFTA Day 1
Hacking the Kinect with GAFFTA Day 1Hacking the Kinect with GAFFTA Day 1
Hacking the Kinect with GAFFTA Day 1benDesigning
 
DEF CON 27 - HUBER AND ROSKOSCH - im on your phone listening attacking voip c...
DEF CON 27 - HUBER AND ROSKOSCH - im on your phone listening attacking voip c...DEF CON 27 - HUBER AND ROSKOSCH - im on your phone listening attacking voip c...
DEF CON 27 - HUBER AND ROSKOSCH - im on your phone listening attacking voip c...Felipe Prado
 

Similaire à Rainbow Over the Windows: More Colors Than You Could Expect (20)

Security research over Windows #defcon china
Security research over Windows #defcon chinaSecurity research over Windows #defcon china
Security research over Windows #defcon china
 
DEF CON 27 - XILING GONG PETER PI - exploiting qualcom wlan and modem over th...
DEF CON 27 - XILING GONG PETER PI - exploiting qualcom wlan and modem over th...DEF CON 27 - XILING GONG PETER PI - exploiting qualcom wlan and modem over th...
DEF CON 27 - XILING GONG PETER PI - exploiting qualcom wlan and modem over th...
 
[Td 2015] what is new in visual c++ 2015 and future directions(ulzii luvsanba...
[Td 2015] what is new in visual c++ 2015 and future directions(ulzii luvsanba...[Td 2015] what is new in visual c++ 2015 and future directions(ulzii luvsanba...
[Td 2015] what is new in visual c++ 2015 and future directions(ulzii luvsanba...
 
44 con slides
44 con slides44 con slides
44 con slides
 
44 con slides (1)
44 con slides (1)44 con slides (1)
44 con slides (1)
 
Hacking Highly Secured Enterprise Environments by Zoltan Balazs
Hacking Highly Secured Enterprise Environments by Zoltan BalazsHacking Highly Secured Enterprise Environments by Zoltan Balazs
Hacking Highly Secured Enterprise Environments by Zoltan Balazs
 
Kettunen, miaubiz fuzzing at scale and in style
Kettunen, miaubiz   fuzzing at scale and in styleKettunen, miaubiz   fuzzing at scale and in style
Kettunen, miaubiz fuzzing at scale and in style
 
Metasploitable
MetasploitableMetasploitable
Metasploitable
 
Surge2012
Surge2012Surge2012
Surge2012
 
DEF CON 27- JISKA FABIAN - vacuum cleaning security
DEF CON 27- JISKA FABIAN - vacuum cleaning securityDEF CON 27- JISKA FABIAN - vacuum cleaning security
DEF CON 27- JISKA FABIAN - vacuum cleaning security
 
Patching Windows Executables with the Backdoor Factory | DerbyCon 2013
Patching Windows Executables with the Backdoor Factory | DerbyCon 2013Patching Windows Executables with the Backdoor Factory | DerbyCon 2013
Patching Windows Executables with the Backdoor Factory | DerbyCon 2013
 
Poc2015 os x_kernel_is_as_strong_as_its_weakest_part_liang_shuaitian
Poc2015 os x_kernel_is_as_strong_as_its_weakest_part_liang_shuaitianPoc2015 os x_kernel_is_as_strong_as_its_weakest_part_liang_shuaitian
Poc2015 os x_kernel_is_as_strong_as_its_weakest_part_liang_shuaitian
 
DEF CON 27 - WENXIANG QIAN and YUXIANG LI HUIYU - breaking google home exploi...
DEF CON 27 - WENXIANG QIAN and YUXIANG LI HUIYU - breaking google home exploi...DEF CON 27 - WENXIANG QIAN and YUXIANG LI HUIYU - breaking google home exploi...
DEF CON 27 - WENXIANG QIAN and YUXIANG LI HUIYU - breaking google home exploi...
 
How OpenShift SDN helps to automate
How OpenShift SDN helps to automateHow OpenShift SDN helps to automate
How OpenShift SDN helps to automate
 
Vert.x v3 - high performance polyglot application toolkit
Vert.x v3 - high performance  polyglot application toolkitVert.x v3 - high performance  polyglot application toolkit
Vert.x v3 - high performance polyglot application toolkit
 
BKK16-211 Internet of Tiny Linux (io tl)- Status and Progress
BKK16-211 Internet of Tiny Linux (io tl)- Status and ProgressBKK16-211 Internet of Tiny Linux (io tl)- Status and Progress
BKK16-211 Internet of Tiny Linux (io tl)- Status and Progress
 
mloc.js 2014 - JavaScript and the browser as a platform for game development
mloc.js 2014 - JavaScript and the browser as a platform for game developmentmloc.js 2014 - JavaScript and the browser as a platform for game development
mloc.js 2014 - JavaScript and the browser as a platform for game development
 
syzbot and the tale of million kernel bugs
syzbot and the tale of million kernel bugssyzbot and the tale of million kernel bugs
syzbot and the tale of million kernel bugs
 
Hacking the Kinect with GAFFTA Day 1
Hacking the Kinect with GAFFTA Day 1Hacking the Kinect with GAFFTA Day 1
Hacking the Kinect with GAFFTA Day 1
 
DEF CON 27 - HUBER AND ROSKOSCH - im on your phone listening attacking voip c...
DEF CON 27 - HUBER AND ROSKOSCH - im on your phone listening attacking voip c...DEF CON 27 - HUBER AND ROSKOSCH - im on your phone listening attacking voip c...
DEF CON 27 - HUBER AND ROSKOSCH - im on your phone listening attacking voip c...
 

Plus de Peter Hlavaty

Hacking - high school intro
Hacking - high school introHacking - high school intro
Hacking - high school introPeter Hlavaty
 
Guardians of your CODE
Guardians of your CODEGuardians of your CODE
Guardians of your CODEPeter Hlavaty
 
Power of linked list
Power of linked listPower of linked list
Power of linked listPeter Hlavaty
 
DbiFuzz framework #ZeroNights E.0x03 slides
DbiFuzz framework #ZeroNights E.0x03 slidesDbiFuzz framework #ZeroNights E.0x03 slides
DbiFuzz framework #ZeroNights E.0x03 slidesPeter Hlavaty
 
How Safe is your Link ?
How Safe is your Link ?How Safe is your Link ?
How Safe is your Link ?Peter Hlavaty
 

Plus de Peter Hlavaty (8)

Hacking - high school intro
Hacking - high school introHacking - high school intro
Hacking - high school intro
 
Guardians of your CODE
Guardians of your CODEGuardians of your CODE
Guardians of your CODE
 
Back to the CORE
Back to the COREBack to the CORE
Back to the CORE
 
Attack on the Core
Attack on the CoreAttack on the Core
Attack on the Core
 
Racing with Droids
Racing with DroidsRacing with Droids
Racing with Droids
 
Power of linked list
Power of linked listPower of linked list
Power of linked list
 
DbiFuzz framework #ZeroNights E.0x03 slides
DbiFuzz framework #ZeroNights E.0x03 slidesDbiFuzz framework #ZeroNights E.0x03 slides
DbiFuzz framework #ZeroNights E.0x03 slides
 
How Safe is your Link ?
How Safe is your Link ?How Safe is your Link ?
How Safe is your Link ?
 

Dernier

Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUK Journal
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century educationjfdjdjcjdnsjd
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesBoston Institute of Analytics
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?Antenna Manufacturer Coco
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessPixlogix Infotech
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAndrey Devyatkin
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...DianaGray10
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 

Dernier (20)

+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation Strategies
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 

Rainbow Over the Windows: More Colors Than You Could Expect

  • 1. Rainbow over the Window(s) ... more colors than you could expect
  • 2. $whoami • Peter • @zer0mem • Windows kernel research at KeenLab, Tencent • pwn2own winner (2015 / 2016), pwnie nominee (2015) • fuzzing focus : state • wushu player • @long123king • Windows kernel research at KeenLab, Tencent • pwn2own winner (2016) • fuzzing focus : data 'format' • windbg guy • Daniel
  • 3. agenda w32k • prevalence • references • patch tuesday • attack surface • filtering • extensions • fuzzing p2o 2016 • directx • universal bug • details • exploitation
  • 4. why we are interested • resides in ring 0 • i pretty much enjoy at level 0 and bellow ;) • huge attack surface • huge in comparsion to ntoskrnl counterpart or in-ring3-sandbox interface • necessary to cover that, by white hats, as it exposes big impact for security • accessible from sandbox-es • nowdays more or less => big success! • field to train your fuzzer! • on this, bit later in this talk
  • 5. previous (& ongoing) work in this area • nils to p0 • just follow his bucket of bugs and you got pretty much idea whats going on in w32k • mwr labs defcon • 3 teams to cover w32k, different approaches & results • p2o - from vulnerability to exploit • 2015 - 2x TTF [KEEN] • 2016 - DirectX [KEEN] • 2016 - chrome - flash - w32k breakdown [360] • j00ru : • TTF • EMF
  • 7. attack surface • once i said big one, i meaned it!
  • 8. what is going on in w32k ? • huge numbers of syscalls • lot of objects • lot of hardcore graphics stuffs • lot of things i dunno
  • 9. DC - lets paint Dc Bitmap Region Palette Font Brush Pen … vector 1: includes fair amount of functions vector 2 : interconnects nice number of different objects
  • 10. fonts - did i mention it ? • various prelevant (mis)usage of different actors • stuxnet, duqu, ... • our p2o 2015 target (2 x TTF to kernel code exec) • j00ru heroic cleaning • ahh ... from last year it is moved to user mode, is it over ? • but still for fonts loading you going to kernel, exposed syscalls • found & reported nice bug recently • takeaway : not all problems vanish by moving things around • but to be honest, it solves a lot ...
  • 11. recent bugs • just including one semi complete part, without targeting syscalls, mainly for tuning fuzzer infrastructure : • logic • mutator • generator • interconnections • additional algorithms Collisions 23% ReadVa, nu llptr 24% reported 35% queue 18% bugz so far #13~16 Collisions ReadVa, nullptr reported queue
  • 12. win32k - surface • mentioned earlier, huge arsenal of syscalls • condrv • directx • user mode callbacks • ioctl alike not so 'hidden syscalls' • ntusermessagecall • apfn • and more
  • 13. NtUserMessageCall • used at p2o 2015 • very powerfull for exploitation • more accessible “power” behind one syscall!
  • 14. NtUserCall * => apfn table • nice 'hidden' ioctl-alike attack surface : • notice CreateMenu, and others • + > 0x80 syscalls
  • 16. directx • another nice example of w32k extension : • interesting takeways : • state alike fuzzing • less prone to bug • not so much code involved • basically wrappers and memory / locking mechanism • however universal bugs, independed of graphic • data fuzzing • mostly related to garphic drivers nvidia / intel • therefore not universal bugs • prone to bugs, lot ...
  • 18. w32k filter • introduced to limit unecessary access to w32k • more benevolent that w32k lockdown • limit attack surface for bug hunting • limit exploitation techniques • bitmap of allowed syscalls • wrapped in win32k : “ x win32k!stub* “
  • 19. w32k filter • bitmap of allowed w32k • edge example (part) :
  • 20. w32k indirect ways • condrv.sys -> conhost.exe • aka console • issue ioctl to condrv • driver will forward those w32k alike command to conhost.exe • conhost.exe will issue w32k syscalls • trough condrv ioctls you can fuzz / exploit w32k indirectly • active at p2o 2016, penetrated by 360 vulcan team • escape through plugin • requires additional bug in plugin • in new environment where is no lockdown anymore!
  • 21. Fuzzing ? data format (TTF, ..) object state (dc, ..)
  • 22. Documentation • actually very well documented - msdn • find your particular object • get set of related api's • understand api • skip gdi workaround (locks, temporary memory and handles databases) and go directly for syscalls • altough syscalls not documented, use api knowledge + RE
  • 23. How • templates • examples of template fuzzers : trinity, syzkaller, mwr fuzzer • our internal Qilin fuzzer • grab api (REconstruct Nt* ones) definitions from msdn • fill patterns with reasonable value ranges • generate patterns
  • 24. sophisticate it little bit • sort patterns per object • Dc, Region, Bitmap, Font, .. • Window, Menu, UserMessage, afn, .. • get meanigfull connections • get from database active handle of particular type • get interrupted at user mode callbacks • involve some meaningfull syscalls then • scope create - delete • dont let it goes wild
  • 25. code coverage • essential to do (semi)meaningfull actions • approx good and bad parameters • good ration (40%+) of success ratio • this alone can get you reasonable code coverage info
  • 26. code coverage • qemu • ola, runs win10! • you can even ssh to win10 ;) • kvm vs tsg switching • do minimalistic patch • grab code coverage • use powerfull static analysis arsenal : binary ninja! • lead / help your fuzzer • more on this topic another time, soon :)
  • 27. Edge EoP for Pwn2Own 2016 • Bug: CVE-2016-0176 • Bug Type: Kernel Heap Overflow • Bug Driver: dxgkrnl.sys
  • 28. _D3DKMT_PRESENTHISTORYTOKEN typedef struct _D3DKMT_PRESENTHISTORYTOKEN { D3DKMT_PRESENT_MODEL Model; //D3DKMT_PM_REDIRECTED_FLIP = 2, // The size of the present history token in bytes including Model. // Should be set to zero by when submitting a token. // It will be initialized when reading present history and can be used to // go to the next token in the present history buffer. UINT TokenSize; // 0x438 #if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WIN8) // The binding id as specified by the Composition Surface UINT64 CompositionBindingId; #endif union { D3DKMT_FLIPMODEL_PRESENTHISTORYTOKEN Flip; // happen to be the largest union component D3DKMT_BLTMODEL_PRESENTHISTORYTOKEN Blt; D3DKMT_VISTABLTMODEL_PRESENTHISTORYTOKEN VistaBlt; D3DKMT_GDIMODEL_PRESENTHISTORYTOKEN Gdi; D3DKMT_FENCE_PRESENTHISTORYTOKEN Fence; D3DKMT_GDIMODEL_SYSMEM_PRESENTHISTORYTOKEN GdiSysMem; D3DKMT_COMPOSITION_PRESENTHISTORYTOKEN Composition; } Token; } D3DKMT_PRESENTHISTORYTOKEN;
  • 29. _D3DKMT_FLIPMODEL_PRESENTHISTORYTOKEN typedef struct _D3DKMT_FLIPMODEL_PRESENTHISTORYTOKEN { UINT64 FenceValue; ULONG64 hLogicalSurface; UINT_PTR dxgContext; D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId; …… D3DKMT_HANDLE hSyncObject; // The local handle of a sync object from D3D runtimes. // The global handle of the sync object coming to DWM. RECT SourceRect; UINT DestWidth; UINT DestHeight; RECT TargetRect; // DXGI_MATRIX_3X2_F: _11 _12 _21 _22 _31 _32 FLOAT Transform[6]; UINT CustomDuration; D3DDDI_FLIPINTERVAL_TYPE CustomDurationFlipInterval; UINT PlaneIndex; #endif #if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_0) D3DDDI_COLOR_SPACE_TYPE ColorSpace; #endif D3DKMT_DIRTYREGIONS DirtyRegions; } D3DKMT_FLIPMODEL_PRESENTHISTORYTOKEN;
  • 30. _D3DKMT_DIRTYREGIONS typedef struct tagRECT { LONG left; LONG top; LONG right; LONG bottom; } RECT, *PRECT, NEAR *NPRECT, FAR *LPRECT; // 0x10 bytes typedef struct _D3DKMT_DIRTYREGIONS { UINT NumRects; RECT Rects[D3DKMT_MAX_PRESENT_HISTORY_RECTS]; // 0x10 * 0x10 = 0x100 bytes //#define D3DKMT_MAX_PRESENT_HISTORY_RECTS 16 } D3DKMT_DIRTYREGIONS;
  • 31. 1 Layout Members Group 1 (0x168 bytes) +0x168 D3DKMT_PRESENT_HISTORYTOKEN (0x438 bytes) Members Group 2 (0x38 bytes) +0x5A0 Model (2) +0x000 TokenSize (0x438) +0x004 +0x010 D3DKMT_FLIPMODEL_PRESENTHISTORYTOKEN NumRects +0x324 DirtyRegions (0x100 bytes) +0x328
  • 32. Overflow Code (Disassembly) loc_1C009832A: DXGCONTEXT::SubmitPresentHistoryToken(......) + 0x67B cmp dword ptr[r15 + 334h], 10h // NumRects jbe short loc_1C009834B; Jump if Below or Equal(CF = 1 | ZF = 1) call cs : __imp_WdLogNewEntry5_WdAssertion mov rcx, rax mov qword ptr[rax + 18h], 38h call cs : __imp_WdLogEvent5_WdAssertion loc_1C009834B: DXGCONTEXT::SubmitPresentHistoryToken (......) + 0x6B2 mov eax, [r15 + 334h] shl eax, 4 add eax, 338h jmp short loc_1C00983BD loc_1C00983BD: DXGCONTEXT::SubmitPresentHistoryToken (......) + 0x6A5 lea r8d, [rax + 7] mov rdx, r15; Src mov eax, 0FFFFFFF8h; mov rcx, rsi; Dst and r8, rax; Size call memmove
  • 33. Overflow Code (C++) D3DKMT_PRESENTHISTORYTOKEN* hist_token_src = BufferPassedFromUserMode(…); D3DKMT_PRESENTHISTORYTOKEN* hist_token_dst = ExpInterlockedPopEntrySList(…); if(hist_token_src->dirty_regions.NumRects > 0x10) { // log via watch dog assertion, NOT work in free/release build } auto size = (hist_token_src->dirty_regions.NumRects * 0x10 + 0x338 + 7) / 8; auto src = (uint8_t*)hist_token_src; auto dst = (uint8_t*)hist_token_dst; memcpy(dst, src, size);
  • 34. 2 FreeSList: Head -> A -> B -> C -> D -> E -> F -> G -> H Lookaside-like Singly-Linked List of Hist Token FreeTokensHead H G F E D C B A
  • 35. 3 Pop one node out for use (Pop A) FreeSList: Head -> B -> C -> D -> E -> F -> G -> H FreeTokensHead H G F E D C B A
  • 36. 4 Pop another node out for use (Pop B) FreeSList: Head -> C -> D -> E -> F -> G -> H FreeTokensHead H G F E D C B A
  • 37. 5 Overflow Scenario 1 FreeSList: Head -> B -> C -> D -> E -> F -> G -> H FreeTokensHead H G F E D C B A
  • 38. 6 FreeSList: Head -> C -> D -> E -> F -> G -> H Overflow Scenario 2 FreeTokensHead H G F E D C B A
  • 39. 7 Push node B back after overflow scenario 2 FreeSList: Head -> B -> C -> D -> E -> F -> G -> H FreeTokensHead H G F E D C B A
  • 40. 8 Will this overflow lead to arbitrary write? FreeSList: Head -> A -> B -> C -> D -> E -> F -> G -> H FreeTokensHead ?H G F E D C B A
  • 41. 9 Unfortunately! FreeSList: Head -> A -> B -> C -> D -> E -> F -> G -> H FreeTokensHead ?H G F E D C B A
  • 42. 10 The overwritten ‘Next’ field will be recovered FreeSList: Head -> A -> B -> C -> D -> E -> F -> G -> H FreeTokensHead H G F E D C B A
  • 43. 11 Back to where after 2 pops FreeSList: Head -> C -> D -> E -> F -> G -> H FreeTokensHead H G F E D C B A
  • 44. 12 Push in different orders with pop FreeSList: Head -> A -> C -> D -> E -> F -> G -> H FreeTokensHead H G F E D C B A
  • 45. 13 Overflow Scenario 3 FreeSList: Head -> A -> ? FreeTokensHead ?H G F E D C B A
  • 46. The gap between ideal and reality • Till now, it is nothing but theory! • 1st try • Action: Loop calling into D3DKMTPresent(), which will trigger overflow scenario 1 • Failed: Can not reach to overflow scenario 2 or 3 • Reason: every request is served by the node A, and then release it. • 2nd try • Action: Loop calling into D3DKMTPresent() from multithread • Failed: Can not reach to overflow scenario 2 or 3 • Reason: protected by a lock
  • 47. The gap between ideal and reality • Doubt: is it doable for a double pop? • In theory: Yes, otherwise the lookaside list is meaningless • Guess: there should other callstacks trigger pop • Target: graphics intensive applications • Detection: windbg script logging push and pop • Solitaire is the hero • BitBlt() can trigger pop with a different call stack • Multithread loop with a mix of D3DKMTPresent() and BitBlt() lead to double pop • Double pop eventually lead to overflow scenario 2 and 3
  • 48. Arbitrary read and write into kernel memory • With the help of Bitmap object • Spray bitmap objects into 4GB ranges • First hold space by array of 256MB big bitmap objects • Then replace with 1MB small bitmap objects • Redirect overflow write to 1 bitmap object • Need hint of location of bitmap arrays, info leak needed • Info leak by user32! gSharedInfo • 2-steps manipulation of Bitmap object succeed arbitrary read/write to kernel
  • 49. Steal token of SYSTEM process • Info leak of nt base addr • Info leaked by sidt • nt!PspCidTable • Same entry structures as handle table • Get SYSTEM’s _KPROCESS and _TOKEN addr • Get current process’s _KPROCESS _TOKEN addr • Steal it • Enjoy SYSTEM privilege now!
  • 50. Q & A
  • 51. references • nils : his p0 bucket of bugs (example) • https://bugs.chromium.org/p/project-zero/issues/detail?id=746 • mwr : defcon slides & fuzzers • https://github.com/mwrlabs/KernelFuzzer • nikita : directx zeronights talk • http://2015.zeronights.org/assets/files/11-Tarakanov.pdf • tiraniddo : conhost p0 block post • https://googleprojectzero.blogspot.com/2015_05_01_archive.html?m=0 • j00ru : font blog post series • http://googleprojectzero.blogspot.com/2016/06/a-year-of-windows-kernel-font-fuzzing-1_27.html • keenlab : recon 2015 ttf slides • https://recon.cx/2015/slides/recon2015-05-peter-hlavaty-jihui-lu-This-Time-Font-hunt-you-down-in-4-bytes.pdf • microsoft : mitigations • https://www.blackhat.com/docs/us-16/materials/us-16-Weston-Windows-10-Mitigation-Improvements.pdf • qemu : win10 'fix' blog post • https://www.invincealabs.com/blog/2016/07/running-windows-64bit-qemu/