SlideShare a Scribd company logo
1 of 72
Download to read offline
CNIT 127: Exploit Development



Ch 14: Protection Mechanisms
Updated
3-25-17
Topics
• Non-Executable Stack
• W^X (Either Writable or Executable
Memory)
• Stack Data Protection
– Canaries
– Ideal Stack Layout
– AAAS: ASCII Armored Address Space
– ASLR: Address Space Layout Randomization
Topics (continued)
• Heap Protections
• Windows SEH Protections
Protection Mechanisms
• General protection mechanisms
• Try to reduce the possibility of a
successful exploit
– Without making the vulnerability disappear
• Protections have flaws and can be
bypassed
Example C Code
Non-Executable Stack
NX-Stack
• Code injected onto the stack will not run
• Now enabled by default in most Linux
distributions, OpenBSD, Mac OS X, and
Windows
• Bypass techniques involve executing code
elsewhere, not on the stack
• The return address can still be over-
written
ret2data
• Place shellcode in the data section
– Using buffered I/O, which places data on the
heap, or some other technique
• Use the corrupted return value to jump to
it
ret2libc
• Use return address to jump directly to
code in libc
– Such as system() on Unix or WinExec() on
Windows
• In a stack-based buffer overflow
– Attacker controls entire stack frame
– Including return address and arguments
• Limitation: range of valid characters
– Can't inject 'x00'
ret2strcpy
• Based on ret2libc
• Place shellcode on the stack
• Use strcpy() to copy NOP sled + shellcode to
a writable and executable memory address
– dest
• Use the return address when strcpy()
finishes to jump to somewhere in the NOP
sled
– dest_ret
ret2strcpy
ret2gets
• Needs only one argument: a writable and
executable memory address
– dest
• Reads NOP sled and shellcode from stdin
• Often controlled by attacker
ret2gets
ret2code
• Generic name for all ways of using code
that already exists in the application
• May be real code that performs function
for the application
• Or just fragments of existing code
Chained ret2code
• Also called chained ret2libc
• Executes a series of calls to existing code
• Three techniques
– Move stack pointer to a user-controlled buffer
– Fix the stack pointer after each return, with
pop-pop-pop-pop-ret
– Return into functions implemented using
pascal or stdcall calling conventions, as used
in Windows, which fix the stack upon return
ret2syscall
• For Linux, the arguments for syscall are in
registers
• Must find two code fragments and chain
them together
– First one pops all the needed arguments from
stack into desired registers, then returns
– Second one issues a syscall
• Easier on Windows, BSD, or Mac OS X than on
Linux
– Syscall arguments on the stack
ret2text
• Jump into the .text section of the
executable binary itself
– Where the program's code lives
• Increasingly important to overcome other
protections
– W^X and ASLR
ret2plt
• Jump to Procedure Linkage Table
– A table of pointers to libc functions
– Present in the memory space for every
dynamically-linked ELF executable
• Limited to the functions called by the
program
ret2dl-resolve
• Jump to ELF's dynamic linker resolver
(ld.so)
– Can perform ret2plt attacks using library
functions that are not used by the target
binary
Limitations of NX Stack
• Still allows return address to be abused to
divert execution flow
• Does not prevent execution of
– Code already present in a process's memory
– Code in other data areas
W^X (Either Writable or
Executable Memory)
W^X Extends NX Stack
• Memory is either
– Writable but not executable
• or
– Non-writable and executable
• So injected code won't run, no matter
where it goes
PaX
• An early Linux implementation of W^X
• Very secure, but never included in
mainstream Linux distributions
– To improve performance and maintainability
NX Bit
• Available in Windows starting with Win XP
SP2
• Called "Data Execution Prevention"
• Opt-in for client versions
• Opt-out for server versions
Limitations of W^X
• Chained ret2code still works
– Using code that's already present, without
changing it
• ret2code works
– As long as there is code present that does
what the attacker wants
• Some memory may still allow W+X
• Can use chained ret2code to write to disk
and then execve() the disk file
Limitations of W^X
• Turning the protection off
– Windows allows this with a single library call
– ZwSetInformationProcess(-1. 22,
'x32x00x00x00", 4);
– However, this requires injecting null bytes
Limitations of W^X
• Changing a specific memory region from
W^X to W+X
– In Windows
• VirtualProtect(addr, size, 0x40,
writable_address);
• addr and size specify the region of memory to be
made W+X
–A similar function exists in OpenBSD
Limitations of W^X
• X after W
– First write shellcode to writable, non-
executable memory
– Then change it to executable, non-writable
• Create a new W+X region of memory
– Possible in Windows, Linux, and OpenBSD
– On Windows, use VirtualAlloc()
– On Unix, use mmap()
Stack Data Protection
Canaries
• StackGuard was first
• ProPolice is improved version
– Also called SSP (Stack-Smashing Protector)
– Now known as "gcc's Stack-Smashing
Protector" or stack-protector
– Included in gcc
StackGuard Only Protected the Return
Address
• Ineffective, because
attacker can still
change other variables
and the saved EBP
– (Frame pointer)
• StackGuard was
replaced by ProPolice
and Visual Studio's /GS
protection
Canaries
• First canary was NUL canary (0x00000000)
• Replaced by Terminator canary
(x000aff0d)
– Includes four bad characters to stop most
injection
• Null (0x00)
• Line Feed (0X10)
• Carriage Return (0x0d)
• EOF (0xff)
• Random canary
Ideal Stack Layout
• Used by ProPolice and Microsoft's /GS feature
• Places local buffers at the end of the stack
frame
– After other local variables
• Copies function arguments into local
variables
– And relocates them
• Protects the saved EBP and return value with
a canary
Ideal Stack Layout
Compromises for Performance
• Both ProPolice and Visual Studio make
compromises
– They protect some functions, and leave
others unprotected
• Visual Studio only copies vulnerable
arguments
– Leaving the rest unprotected
Vulnerabilities in Ideal Stack Layout
• If a function contains several buffers
– One buffer can overflow into the next one
– Could turn a buffer overflow into a format
string vulnerability
• C structure members can't be rearranged
– May have an unfavorable order
• Functions with a variable number of
arguments
– Can't be placed in ideal layout
Vulnerabilities in Ideal Stack Layout
• Buffers dynamically allocated with alloca()
on the stack are always on top of stack
frame
• There may be something valuable to the
attacker located after the buffer
– In Windows, Exception Registration Record is
stored on the stack
– Other variables can be overwritten, because
cookie is only checked when the function
returns
AAAS: ASCII Armored Address
Space
Null Bytes in Addresses
• Load all shared libraries in addresses
starting with 0x00
– Blocks string-based stack overflows
– Because null bytes terminate strings
• More effective on big-endian
architectures
– Where the 0x00 is at the start of the address
• You can inject one 0x00, at the end of the
string
Example
• You want to execute this Linux command,
which adds a new user account to the
system
– system(“echo gera::0:0::/:/bin/sh
>>/etc/passwd“)
• You can still make one call to system() by
making the last injected byte x00
AAAS Limitations
• Main executable is not moved to the ASCII
Armored Address Space
– It contains lots of useful code
– Function epilogues
– Programs PLT
ASLR: Address Space Layout
Randomization
Not All Code is Randomized
• Performance suffers from ASLR
– Because it means that a register is
permanently occupied holding the code base
– There aren't enough registers available in a
32-bit OS to do that without slowing the
system
Ways to Defeat ASLR
• Use ret2gets
– Specify location to put shellcode
• Make the application supply the address
for you
– Useful addresses may be stored in registers or
on the stack
linux-gate.so
• A table of pointers used for system calls
• Sometimes placed at a constant location
in Linux distributions
– Link Ch 14a
Insufficient Randomization
• If there are only 8 bits of entropy, an
attack has 1/256 chance of working just
by luck
• Memory sections may maintain a fixed
distance from each other, moving
together by a fixed displacement
– So only one guess is needed
Finding Addresses
• Local privilege escalation
– May be able to access "proc/<pid>/maps"
– The memory map
• Also, brute-forcing a 16-bit value is not
impossible
– 65,536 runs
• Even a 24-bit value can be brute-forced
– 16 million runs
Finding Addresses
• Format string exploits reveal contents of
RAM
– Such as the memory map
• Several RPC calls leak memory addresses
in handles that are returned to the client
• Multithreaded Windows applications
– Address space must be the same for all the
threads in a process
– More chances to find an address
fork()
• Unix processes often use fork() to clone
themselves
• But the new fork has the same memory
layout
Heap Protections
Action of Free()
• Must write to the forward and reverse pointers
• If we can overflow a chunk, we can control
those writes
• Write to arbitrary RAM
– Image from mathyvanhoef.com, link Ch 5b
Safe unlink()
• Checks integrity of pointers before freeing
a chunk
• Makes sure that these two conditions are
true before freeing chunk B
Implementations in Various OS's
• Safe unlink() is implemented in
– glibc since 2004
– Windows since Win XP SP2
Unprotected Heap Operations
• Not all heap operations are protected by
Safe unlink()
• There are several complicated exploit
techniques in Malloc Maleficarum
– Exploiting code that adds a chunk, not free()
– Link Ch 14b
Heap Exploits on Windows
• Unsafe Unlinking
– Overwrite back and forward pointers
carefully
– So that the check passes
– But the pointers still do desirable things when
the chunk is freed
– Allows a write to arbitrary RAM
Heap Exploits on Windows
• Chunk-on-lookaside overwrite
– Windows lookaside list records free chunks
– Singly-linked, no security checks
– Allows a write to arbitrary RAM
• Windows Vista and later no longer use
lookaside lists
– Instead they use a Low Fragmentation Heap
Heap Cookies in Win XP
• Windows XP SP2 inserts an 8-bit random
cookie into each heap chunk's header
• When a chunk is freed, the cookie is
checked, but if the check fails,
RtlFreeHeap() just exits without doing
anything
– Instead of halting program execution
• So just try 256 times, until you get lucky
Heap Cookies in Vista and Later
• Eight random bytes are generated when a
heap is created
• Used with XOR to validate each chunk's
header
• Other integrity checks are also used
• Some degree of ASLR for the heap
• This is strong heap protection
Windows 8
• Even more protections (link Ch 14c)
Even More Defenses
And Even More
• Cookies in the Kernel Pool
– Also protects lookaside lists
• Non-executable kernel pool
– To thwart heap spraying
• Much improved randomization
– Especially with Ivy Bridge CPUs
– RDRAND – Hardware Random Number
Generator
RDRAND
• Cannot audit the hardware random-number
generator
• FreeBSD refused to use it
– Links Ch 14d, 14e
Windows 10 Defenses
(Link Ch 14f)
Windows 10 Defenses
Windows 10 Defenses
OpenBSD and FreeBSD Heap
• Used phkmalloc() in older versions
– Doesn't use linked lists
– Doesn't intermix control information with user
data
• OpenBSD v 3.8 and later
– malloc() uses mmap()
– Allocates randomly located chunks of RAM
(using ASLR)
– No two chunks can ever be adjacent
Heap Exploits
• Overwriting control structures in the heap
is becoming very difficult
• But sometimes there may be something
else stored after a heap chunk that's
useful
– Like a function pointer
– In C++, the vtable contains pointers and may
sometimes be overwritten
Windows SEH Protections
SEH Protections
• Registers are zeroed before calling the
handler
– So no address information is available to it
• Exception handler can't be placed in the
stack
– So attacker can't inject code on the stack and
jump to it
• PE binaries (.exe and .dll files) compiled with

/SafeSEH
– Whitelist permitted exception handlers
SEH Protections
• Memory sections not compiled with 

/SafeSEH still have some protections
– Handlers must be in executable RAM
(enforced by either hardware or software)
• But DEP isn't in effect for every executable
SEH Exploitation Tools
• EEREAP
– Reads a memory dump
– Finds SEH trampoline code, like pop-pop-ret
• pdest
– Freezes a process and hunts through its RAM to
find good trampoline code
• SEHInspector
– Inspects a DLL or EXE
– Tells you if /SafeSEH or ASLR are in effect
– Lists all valid exception handlers

More Related Content

What's hot

CNIT 127: 4: Format string bugs
CNIT 127: 4: Format string bugsCNIT 127: 4: Format string bugs
CNIT 127: 4: Format string bugsSam Bowne
 
CNIT 127: Ch 8: Windows overflows (Part 2)
CNIT 127: Ch 8: Windows overflows (Part 2)CNIT 127: Ch 8: Windows overflows (Part 2)
CNIT 127: Ch 8: Windows overflows (Part 2)Sam Bowne
 
CNIT 126 Ch 7: Analyzing Malicious Windows Programs
CNIT 126 Ch 7: Analyzing Malicious Windows ProgramsCNIT 126 Ch 7: Analyzing Malicious Windows Programs
CNIT 126 Ch 7: Analyzing Malicious Windows ProgramsSam Bowne
 
CNIT 127 Ch 6: The Wild World of Windows
CNIT 127 Ch 6: The Wild World of WindowsCNIT 127 Ch 6: The Wild World of Windows
CNIT 127 Ch 6: The Wild World of WindowsSam Bowne
 
127 Ch 2: Stack overflows on Linux
127 Ch 2: Stack overflows on Linux127 Ch 2: Stack overflows on Linux
127 Ch 2: Stack overflows on LinuxSam Bowne
 
CNIT 127 Ch 3: Shellcode
CNIT 127 Ch 3: ShellcodeCNIT 127 Ch 3: Shellcode
CNIT 127 Ch 3: ShellcodeSam Bowne
 
CNIT 127 Ch 4: Introduction to format string bugs
CNIT 127 Ch 4: Introduction to format string bugsCNIT 127 Ch 4: Introduction to format string bugs
CNIT 127 Ch 4: Introduction to format string bugsSam Bowne
 
CNIT 127 Ch 4: Introduction to format string bugs (rev. 2-9-17)
CNIT 127 Ch 4: Introduction to format string bugs (rev. 2-9-17)CNIT 127 Ch 4: Introduction to format string bugs (rev. 2-9-17)
CNIT 127 Ch 4: Introduction to format string bugs (rev. 2-9-17)Sam Bowne
 
CNIT 127 Ch 4: Introduction to format string bugs
CNIT 127 Ch 4: Introduction to format string bugsCNIT 127 Ch 4: Introduction to format string bugs
CNIT 127 Ch 4: Introduction to format string bugsSam Bowne
 
CNIT 127 Ch 3: Shellcode
CNIT 127 Ch 3: ShellcodeCNIT 127 Ch 3: Shellcode
CNIT 127 Ch 3: ShellcodeSam Bowne
 
CNIT 127: Ch 4: Introduction to format string bugs
CNIT 127: Ch 4: Introduction to format string bugsCNIT 127: Ch 4: Introduction to format string bugs
CNIT 127: Ch 4: Introduction to format string bugsSam Bowne
 
CNIT 127: Ch 2: Stack Overflows in Linux
CNIT 127: Ch 2: Stack Overflows in LinuxCNIT 127: Ch 2: Stack Overflows in Linux
CNIT 127: Ch 2: Stack Overflows in LinuxSam Bowne
 
127 Ch 2: Stack overflows on Linux
127 Ch 2: Stack overflows on Linux127 Ch 2: Stack overflows on Linux
127 Ch 2: Stack overflows on LinuxSam Bowne
 
CNIT 127 Ch 2: Stack overflows on Linux
CNIT 127 Ch 2: Stack overflows on LinuxCNIT 127 Ch 2: Stack overflows on Linux
CNIT 127 Ch 2: Stack overflows on LinuxSam Bowne
 
CNIT 126 7: Analyzing Malicious Windows Programs
CNIT 126 7: Analyzing Malicious Windows ProgramsCNIT 126 7: Analyzing Malicious Windows Programs
CNIT 126 7: Analyzing Malicious Windows ProgramsSam Bowne
 
CNIT 127 Ch 3: Shellcode
CNIT 127 Ch 3: ShellcodeCNIT 127 Ch 3: Shellcode
CNIT 127 Ch 3: ShellcodeSam Bowne
 
CNIT 127 Ch 1: Before you Begin
CNIT 127 Ch 1: Before you BeginCNIT 127 Ch 1: Before you Begin
CNIT 127 Ch 1: Before you BeginSam Bowne
 
Practical Malware Analysis: Ch 5: IDA Pro
Practical Malware Analysis: Ch 5: IDA ProPractical Malware Analysis: Ch 5: IDA Pro
Practical Malware Analysis: Ch 5: IDA ProSam Bowne
 
CNIT 127 Ch 3: Shellcode
CNIT 127 Ch 3: ShellcodeCNIT 127 Ch 3: Shellcode
CNIT 127 Ch 3: ShellcodeSam Bowne
 
CNIT 127: Ch 3: Shellcode
CNIT 127: Ch 3: ShellcodeCNIT 127: Ch 3: Shellcode
CNIT 127: Ch 3: ShellcodeSam Bowne
 

What's hot (20)

CNIT 127: 4: Format string bugs
CNIT 127: 4: Format string bugsCNIT 127: 4: Format string bugs
CNIT 127: 4: Format string bugs
 
CNIT 127: Ch 8: Windows overflows (Part 2)
CNIT 127: Ch 8: Windows overflows (Part 2)CNIT 127: Ch 8: Windows overflows (Part 2)
CNIT 127: Ch 8: Windows overflows (Part 2)
 
CNIT 126 Ch 7: Analyzing Malicious Windows Programs
CNIT 126 Ch 7: Analyzing Malicious Windows ProgramsCNIT 126 Ch 7: Analyzing Malicious Windows Programs
CNIT 126 Ch 7: Analyzing Malicious Windows Programs
 
CNIT 127 Ch 6: The Wild World of Windows
CNIT 127 Ch 6: The Wild World of WindowsCNIT 127 Ch 6: The Wild World of Windows
CNIT 127 Ch 6: The Wild World of Windows
 
127 Ch 2: Stack overflows on Linux
127 Ch 2: Stack overflows on Linux127 Ch 2: Stack overflows on Linux
127 Ch 2: Stack overflows on Linux
 
CNIT 127 Ch 3: Shellcode
CNIT 127 Ch 3: ShellcodeCNIT 127 Ch 3: Shellcode
CNIT 127 Ch 3: Shellcode
 
CNIT 127 Ch 4: Introduction to format string bugs
CNIT 127 Ch 4: Introduction to format string bugsCNIT 127 Ch 4: Introduction to format string bugs
CNIT 127 Ch 4: Introduction to format string bugs
 
CNIT 127 Ch 4: Introduction to format string bugs (rev. 2-9-17)
CNIT 127 Ch 4: Introduction to format string bugs (rev. 2-9-17)CNIT 127 Ch 4: Introduction to format string bugs (rev. 2-9-17)
CNIT 127 Ch 4: Introduction to format string bugs (rev. 2-9-17)
 
CNIT 127 Ch 4: Introduction to format string bugs
CNIT 127 Ch 4: Introduction to format string bugsCNIT 127 Ch 4: Introduction to format string bugs
CNIT 127 Ch 4: Introduction to format string bugs
 
CNIT 127 Ch 3: Shellcode
CNIT 127 Ch 3: ShellcodeCNIT 127 Ch 3: Shellcode
CNIT 127 Ch 3: Shellcode
 
CNIT 127: Ch 4: Introduction to format string bugs
CNIT 127: Ch 4: Introduction to format string bugsCNIT 127: Ch 4: Introduction to format string bugs
CNIT 127: Ch 4: Introduction to format string bugs
 
CNIT 127: Ch 2: Stack Overflows in Linux
CNIT 127: Ch 2: Stack Overflows in LinuxCNIT 127: Ch 2: Stack Overflows in Linux
CNIT 127: Ch 2: Stack Overflows in Linux
 
127 Ch 2: Stack overflows on Linux
127 Ch 2: Stack overflows on Linux127 Ch 2: Stack overflows on Linux
127 Ch 2: Stack overflows on Linux
 
CNIT 127 Ch 2: Stack overflows on Linux
CNIT 127 Ch 2: Stack overflows on LinuxCNIT 127 Ch 2: Stack overflows on Linux
CNIT 127 Ch 2: Stack overflows on Linux
 
CNIT 126 7: Analyzing Malicious Windows Programs
CNIT 126 7: Analyzing Malicious Windows ProgramsCNIT 126 7: Analyzing Malicious Windows Programs
CNIT 126 7: Analyzing Malicious Windows Programs
 
CNIT 127 Ch 3: Shellcode
CNIT 127 Ch 3: ShellcodeCNIT 127 Ch 3: Shellcode
CNIT 127 Ch 3: Shellcode
 
CNIT 127 Ch 1: Before you Begin
CNIT 127 Ch 1: Before you BeginCNIT 127 Ch 1: Before you Begin
CNIT 127 Ch 1: Before you Begin
 
Practical Malware Analysis: Ch 5: IDA Pro
Practical Malware Analysis: Ch 5: IDA ProPractical Malware Analysis: Ch 5: IDA Pro
Practical Malware Analysis: Ch 5: IDA Pro
 
CNIT 127 Ch 3: Shellcode
CNIT 127 Ch 3: ShellcodeCNIT 127 Ch 3: Shellcode
CNIT 127 Ch 3: Shellcode
 
CNIT 127: Ch 3: Shellcode
CNIT 127: Ch 3: ShellcodeCNIT 127: Ch 3: Shellcode
CNIT 127: Ch 3: Shellcode
 

Viewers also liked

Abece reforma tributaria_2016
Abece reforma tributaria_2016Abece reforma tributaria_2016
Abece reforma tributaria_2016ERICA RODRIGUEZ
 
Anemia de la enfermedad crónica
Anemia de la enfermedad crónicaAnemia de la enfermedad crónica
Anemia de la enfermedad crónicaSARA CHONTAL
 
3Com 3C8844
3Com 3C88443Com 3C8844
3Com 3C8844savomir
 
Manual de capacitación para capacitadores
Manual de capacitación para capacitadoresManual de capacitación para capacitadores
Manual de capacitación para capacitadoresruthsita09
 
Audio Visual Pintrest Inspiration
Audio Visual Pintrest Inspiration Audio Visual Pintrest Inspiration
Audio Visual Pintrest Inspiration Maya Jearey
 
Top 6 things_small_businesses_q12015
Top 6 things_small_businesses_q12015Top 6 things_small_businesses_q12015
Top 6 things_small_businesses_q12015anpapathanasiou
 
Sortides pels voltants de l'escola
Sortides pels voltants de l'escolaSortides pels voltants de l'escola
Sortides pels voltants de l'escolaNúria Rubio
 
Type de toiture terrasse et étanchéité
Type de  toiture terrasse  et  étanchéitéType de  toiture terrasse  et  étanchéité
Type de toiture terrasse et étanchéitéILYES MHAMMEDIA
 
Jesbiangner J. Acosta M.
Jesbiangner J. Acosta M.Jesbiangner J. Acosta M.
Jesbiangner J. Acosta M.Javier Acosta
 
How to Use Canva to Create Beautiful Graphic Images-CatherineMorido-theRockst...
How to Use Canva to Create Beautiful Graphic Images-CatherineMorido-theRockst...How to Use Canva to Create Beautiful Graphic Images-CatherineMorido-theRockst...
How to Use Canva to Create Beautiful Graphic Images-CatherineMorido-theRockst...Catherine Morido
 
Cartilla de acogida a la comunidad educativa para el reinicio de clases.
Cartilla de acogida a la comunidad educativa para el reinicio de clases.Cartilla de acogida a la comunidad educativa para el reinicio de clases.
Cartilla de acogida a la comunidad educativa para el reinicio de clases.Marly Rodriguez
 
Révision II - Introduction
Révision II - IntroductionRévision II - Introduction
Révision II - IntroductionPierrot Caron
 
Desarrollo científico y tecnológico de colombia
Desarrollo científico y tecnológico de colombiaDesarrollo científico y tecnológico de colombia
Desarrollo científico y tecnológico de colombiaWilson Arley Cobaria Perico
 
PRESENTACION DE EMPRESA Y AGENTE EN LATINOAMERICA
PRESENTACION DE EMPRESA Y AGENTE EN LATINOAMERICAPRESENTACION DE EMPRESA Y AGENTE EN LATINOAMERICA
PRESENTACION DE EMPRESA Y AGENTE EN LATINOAMERICAIRIS HUAMAN
 
CNIT 128 Ch 6: Mobile services and mobile Web (part 2: SAML to end)
CNIT 128 Ch 6: Mobile services and mobile Web (part 2: SAML to end)CNIT 128 Ch 6: Mobile services and mobile Web (part 2: SAML to end)
CNIT 128 Ch 6: Mobile services and mobile Web (part 2: SAML to end)Sam Bowne
 
CNIT 126 5: IDA Pro
CNIT 126 5: IDA Pro CNIT 126 5: IDA Pro
CNIT 126 5: IDA Pro Sam Bowne
 

Viewers also liked (20)

Abece reforma tributaria_2016
Abece reforma tributaria_2016Abece reforma tributaria_2016
Abece reforma tributaria_2016
 
Anemia de la enfermedad crónica
Anemia de la enfermedad crónicaAnemia de la enfermedad crónica
Anemia de la enfermedad crónica
 
3Com 3C8844
3Com 3C88443Com 3C8844
3Com 3C8844
 
Manual de capacitación para capacitadores
Manual de capacitación para capacitadoresManual de capacitación para capacitadores
Manual de capacitación para capacitadores
 
Audio Visual Pintrest Inspiration
Audio Visual Pintrest Inspiration Audio Visual Pintrest Inspiration
Audio Visual Pintrest Inspiration
 
Top 6 things_small_businesses_q12015
Top 6 things_small_businesses_q12015Top 6 things_small_businesses_q12015
Top 6 things_small_businesses_q12015
 
Sortides pels voltants de l'escola
Sortides pels voltants de l'escolaSortides pels voltants de l'escola
Sortides pels voltants de l'escola
 
Type de toiture terrasse et étanchéité
Type de  toiture terrasse  et  étanchéitéType de  toiture terrasse  et  étanchéité
Type de toiture terrasse et étanchéité
 
Jesbiangner J. Acosta M.
Jesbiangner J. Acosta M.Jesbiangner J. Acosta M.
Jesbiangner J. Acosta M.
 
How to Use Canva to Create Beautiful Graphic Images-CatherineMorido-theRockst...
How to Use Canva to Create Beautiful Graphic Images-CatherineMorido-theRockst...How to Use Canva to Create Beautiful Graphic Images-CatherineMorido-theRockst...
How to Use Canva to Create Beautiful Graphic Images-CatherineMorido-theRockst...
 
Cartilla de acogida a la comunidad educativa para el reinicio de clases.
Cartilla de acogida a la comunidad educativa para el reinicio de clases.Cartilla de acogida a la comunidad educativa para el reinicio de clases.
Cartilla de acogida a la comunidad educativa para el reinicio de clases.
 
Portifolio
PortifolioPortifolio
Portifolio
 
Mantenimiento de artefacto tecnológico
Mantenimiento de artefacto tecnológicoMantenimiento de artefacto tecnológico
Mantenimiento de artefacto tecnológico
 
Révision II - Introduction
Révision II - IntroductionRévision II - Introduction
Révision II - Introduction
 
1º Bachillerato: Doctrina social de la iglesia
1º Bachillerato: Doctrina social de la iglesia1º Bachillerato: Doctrina social de la iglesia
1º Bachillerato: Doctrina social de la iglesia
 
Trabajos incluidos en el blog
Trabajos incluidos en el blogTrabajos incluidos en el blog
Trabajos incluidos en el blog
 
Desarrollo científico y tecnológico de colombia
Desarrollo científico y tecnológico de colombiaDesarrollo científico y tecnológico de colombia
Desarrollo científico y tecnológico de colombia
 
PRESENTACION DE EMPRESA Y AGENTE EN LATINOAMERICA
PRESENTACION DE EMPRESA Y AGENTE EN LATINOAMERICAPRESENTACION DE EMPRESA Y AGENTE EN LATINOAMERICA
PRESENTACION DE EMPRESA Y AGENTE EN LATINOAMERICA
 
CNIT 128 Ch 6: Mobile services and mobile Web (part 2: SAML to end)
CNIT 128 Ch 6: Mobile services and mobile Web (part 2: SAML to end)CNIT 128 Ch 6: Mobile services and mobile Web (part 2: SAML to end)
CNIT 128 Ch 6: Mobile services and mobile Web (part 2: SAML to end)
 
CNIT 126 5: IDA Pro
CNIT 126 5: IDA Pro CNIT 126 5: IDA Pro
CNIT 126 5: IDA Pro
 

Similar to CNIT 127 14: Protection Mechanisms

Is That A Penguin In My Windows?
Is That A Penguin In My Windows?Is That A Penguin In My Windows?
Is That A Penguin In My Windows?zeroSteiner
 
Nikita Abdullin - Reverse-engineering of embedded MIPS devices. Case Study - ...
Nikita Abdullin - Reverse-engineering of embedded MIPS devices. Case Study - ...Nikita Abdullin - Reverse-engineering of embedded MIPS devices. Case Study - ...
Nikita Abdullin - Reverse-engineering of embedded MIPS devices. Case Study - ...DefconRussia
 
Pune-Cocoa: Blocks and GCD
Pune-Cocoa: Blocks and GCDPune-Cocoa: Blocks and GCD
Pune-Cocoa: Blocks and GCDPrashant Rane
 
Operating Systems 1 (5/12) - Architectures (Unix)
Operating Systems 1 (5/12) - Architectures (Unix)Operating Systems 1 (5/12) - Architectures (Unix)
Operating Systems 1 (5/12) - Architectures (Unix)Peter Tröger
 
Migration challenges and process
Migration challenges and processMigration challenges and process
Migration challenges and processAndrejs Vorobjovs
 
Efficient Bytecode Analysis: Linespeed Shellcode Detection
Efficient Bytecode Analysis: Linespeed Shellcode DetectionEfficient Bytecode Analysis: Linespeed Shellcode Detection
Efficient Bytecode Analysis: Linespeed Shellcode DetectionGeorg Wicherski
 
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
 
Tech Days 2015: Embedded Product Update
Tech Days 2015: Embedded Product UpdateTech Days 2015: Embedded Product Update
Tech Days 2015: Embedded Product UpdateAdaCore
 
Running Applications on the NetBSD Rump Kernel by Justin Cormack
Running Applications on the NetBSD Rump Kernel by Justin Cormack Running Applications on the NetBSD Rump Kernel by Justin Cormack
Running Applications on the NetBSD Rump Kernel by Justin Cormack eurobsdcon
 
New hope is comming? Project Loom.pdf
New hope is comming? Project Loom.pdfNew hope is comming? Project Loom.pdf
New hope is comming? Project Loom.pdfKrystian Zybała
 
chapter8.ppt clean code Boundary ppt Coding guide
chapter8.ppt clean code Boundary ppt Coding guidechapter8.ppt clean code Boundary ppt Coding guide
chapter8.ppt clean code Boundary ppt Coding guideSanjeevSaharan5
 
Spil Storage Platform (Erlang) @ EUG-NL
Spil Storage Platform (Erlang) @ EUG-NLSpil Storage Platform (Erlang) @ EUG-NL
Spil Storage Platform (Erlang) @ EUG-NLThijs Terlouw
 

Similar to CNIT 127 14: Protection Mechanisms (20)

Is That A Penguin In My Windows?
Is That A Penguin In My Windows?Is That A Penguin In My Windows?
Is That A Penguin In My Windows?
 
Nikita Abdullin - Reverse-engineering of embedded MIPS devices. Case Study - ...
Nikita Abdullin - Reverse-engineering of embedded MIPS devices. Case Study - ...Nikita Abdullin - Reverse-engineering of embedded MIPS devices. Case Study - ...
Nikita Abdullin - Reverse-engineering of embedded MIPS devices. Case Study - ...
 
Pune-Cocoa: Blocks and GCD
Pune-Cocoa: Blocks and GCDPune-Cocoa: Blocks and GCD
Pune-Cocoa: Blocks and GCD
 
Operating Systems 1 (5/12) - Architectures (Unix)
Operating Systems 1 (5/12) - Architectures (Unix)Operating Systems 1 (5/12) - Architectures (Unix)
Operating Systems 1 (5/12) - Architectures (Unix)
 
Migration challenges and process
Migration challenges and processMigration challenges and process
Migration challenges and process
 
Chapter 6 os
Chapter 6 osChapter 6 os
Chapter 6 os
 
13 superscalar
13 superscalar13 superscalar
13 superscalar
 
Ch04 threads
Ch04 threadsCh04 threads
Ch04 threads
 
Efficient Bytecode Analysis: Linespeed Shellcode Detection
Efficient Bytecode Analysis: Linespeed Shellcode DetectionEfficient Bytecode Analysis: Linespeed Shellcode Detection
Efficient Bytecode Analysis: Linespeed Shellcode Detection
 
13_Superscalar.ppt
13_Superscalar.ppt13_Superscalar.ppt
13_Superscalar.ppt
 
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...
 
Tech Days 2015: Embedded Product Update
Tech Days 2015: Embedded Product UpdateTech Days 2015: Embedded Product Update
Tech Days 2015: Embedded Product Update
 
Running Applications on the NetBSD Rump Kernel by Justin Cormack
Running Applications on the NetBSD Rump Kernel by Justin Cormack Running Applications on the NetBSD Rump Kernel by Justin Cormack
Running Applications on the NetBSD Rump Kernel by Justin Cormack
 
New hope is comming? Project Loom.pdf
New hope is comming? Project Loom.pdfNew hope is comming? Project Loom.pdf
New hope is comming? Project Loom.pdf
 
Earhart
EarhartEarhart
Earhart
 
the windows opereting system
the windows opereting systemthe windows opereting system
the windows opereting system
 
Advanced Windows Exploitation
Advanced Windows ExploitationAdvanced Windows Exploitation
Advanced Windows Exploitation
 
chapter8.ppt clean code Boundary ppt Coding guide
chapter8.ppt clean code Boundary ppt Coding guidechapter8.ppt clean code Boundary ppt Coding guide
chapter8.ppt clean code Boundary ppt Coding guide
 
Spil Storage Platform (Erlang) @ EUG-NL
Spil Storage Platform (Erlang) @ EUG-NLSpil Storage Platform (Erlang) @ EUG-NL
Spil Storage Platform (Erlang) @ EUG-NL
 
Os
OsOs
Os
 

More from Sam Bowne

3: DNS vulnerabilities
3: DNS vulnerabilities 3: DNS vulnerabilities
3: DNS vulnerabilities Sam Bowne
 
8. Software Development Security
8. Software Development Security8. Software Development Security
8. Software Development SecuritySam Bowne
 
4 Mapping the Application
4 Mapping the Application4 Mapping the Application
4 Mapping the ApplicationSam Bowne
 
3. Attacking iOS Applications (Part 2)
 3. Attacking iOS Applications (Part 2) 3. Attacking iOS Applications (Part 2)
3. Attacking iOS Applications (Part 2)Sam Bowne
 
12 Elliptic Curves
12 Elliptic Curves12 Elliptic Curves
12 Elliptic CurvesSam Bowne
 
11. Diffie-Hellman
11. Diffie-Hellman11. Diffie-Hellman
11. Diffie-HellmanSam Bowne
 
2a Analyzing iOS Apps Part 1
2a Analyzing iOS Apps Part 12a Analyzing iOS Apps Part 1
2a Analyzing iOS Apps Part 1Sam Bowne
 
9 Writing Secure Android Applications
9 Writing Secure Android Applications9 Writing Secure Android Applications
9 Writing Secure Android ApplicationsSam Bowne
 
12 Investigating Windows Systems (Part 2 of 3)
12 Investigating Windows Systems (Part 2 of 3)12 Investigating Windows Systems (Part 2 of 3)
12 Investigating Windows Systems (Part 2 of 3)Sam Bowne
 
12 Investigating Windows Systems (Part 1 of 3
12 Investigating Windows Systems (Part 1 of 312 Investigating Windows Systems (Part 1 of 3
12 Investigating Windows Systems (Part 1 of 3Sam Bowne
 
9. Hard Problems
9. Hard Problems9. Hard Problems
9. Hard ProblemsSam Bowne
 
8 Android Implementation Issues (Part 1)
8 Android Implementation Issues (Part 1)8 Android Implementation Issues (Part 1)
8 Android Implementation Issues (Part 1)Sam Bowne
 
11 Analysis Methodology
11 Analysis Methodology11 Analysis Methodology
11 Analysis MethodologySam Bowne
 
8. Authenticated Encryption
8. Authenticated Encryption8. Authenticated Encryption
8. Authenticated EncryptionSam Bowne
 
7. Attacking Android Applications (Part 2)
7. Attacking Android Applications (Part 2)7. Attacking Android Applications (Part 2)
7. Attacking Android Applications (Part 2)Sam Bowne
 
7. Attacking Android Applications (Part 1)
7. Attacking Android Applications (Part 1)7. Attacking Android Applications (Part 1)
7. Attacking Android Applications (Part 1)Sam Bowne
 
5. Stream Ciphers
5. Stream Ciphers5. Stream Ciphers
5. Stream CiphersSam Bowne
 
6 Scope & 7 Live Data Collection
6 Scope & 7 Live Data Collection6 Scope & 7 Live Data Collection
6 Scope & 7 Live Data CollectionSam Bowne
 

More from Sam Bowne (20)

Cyberwar
CyberwarCyberwar
Cyberwar
 
3: DNS vulnerabilities
3: DNS vulnerabilities 3: DNS vulnerabilities
3: DNS vulnerabilities
 
8. Software Development Security
8. Software Development Security8. Software Development Security
8. Software Development Security
 
4 Mapping the Application
4 Mapping the Application4 Mapping the Application
4 Mapping the Application
 
3. Attacking iOS Applications (Part 2)
 3. Attacking iOS Applications (Part 2) 3. Attacking iOS Applications (Part 2)
3. Attacking iOS Applications (Part 2)
 
12 Elliptic Curves
12 Elliptic Curves12 Elliptic Curves
12 Elliptic Curves
 
11. Diffie-Hellman
11. Diffie-Hellman11. Diffie-Hellman
11. Diffie-Hellman
 
2a Analyzing iOS Apps Part 1
2a Analyzing iOS Apps Part 12a Analyzing iOS Apps Part 1
2a Analyzing iOS Apps Part 1
 
9 Writing Secure Android Applications
9 Writing Secure Android Applications9 Writing Secure Android Applications
9 Writing Secure Android Applications
 
12 Investigating Windows Systems (Part 2 of 3)
12 Investigating Windows Systems (Part 2 of 3)12 Investigating Windows Systems (Part 2 of 3)
12 Investigating Windows Systems (Part 2 of 3)
 
10 RSA
10 RSA10 RSA
10 RSA
 
12 Investigating Windows Systems (Part 1 of 3
12 Investigating Windows Systems (Part 1 of 312 Investigating Windows Systems (Part 1 of 3
12 Investigating Windows Systems (Part 1 of 3
 
9. Hard Problems
9. Hard Problems9. Hard Problems
9. Hard Problems
 
8 Android Implementation Issues (Part 1)
8 Android Implementation Issues (Part 1)8 Android Implementation Issues (Part 1)
8 Android Implementation Issues (Part 1)
 
11 Analysis Methodology
11 Analysis Methodology11 Analysis Methodology
11 Analysis Methodology
 
8. Authenticated Encryption
8. Authenticated Encryption8. Authenticated Encryption
8. Authenticated Encryption
 
7. Attacking Android Applications (Part 2)
7. Attacking Android Applications (Part 2)7. Attacking Android Applications (Part 2)
7. Attacking Android Applications (Part 2)
 
7. Attacking Android Applications (Part 1)
7. Attacking Android Applications (Part 1)7. Attacking Android Applications (Part 1)
7. Attacking Android Applications (Part 1)
 
5. Stream Ciphers
5. Stream Ciphers5. Stream Ciphers
5. Stream Ciphers
 
6 Scope & 7 Live Data Collection
6 Scope & 7 Live Data Collection6 Scope & 7 Live Data Collection
6 Scope & 7 Live Data Collection
 

Recently uploaded

Organic Name Reactions for the students and aspirants of Chemistry12th.pptx
Organic Name Reactions  for the students and aspirants of Chemistry12th.pptxOrganic Name Reactions  for the students and aspirants of Chemistry12th.pptx
Organic Name Reactions for the students and aspirants of Chemistry12th.pptxVS Mahajan Coaching Centre
 
The basics of sentences session 2pptx copy.pptx
The basics of sentences session 2pptx copy.pptxThe basics of sentences session 2pptx copy.pptx
The basics of sentences session 2pptx copy.pptxheathfieldcps1
 
Industrial Policy - 1948, 1956, 1973, 1977, 1980, 1991
Industrial Policy - 1948, 1956, 1973, 1977, 1980, 1991Industrial Policy - 1948, 1956, 1973, 1977, 1980, 1991
Industrial Policy - 1948, 1956, 1973, 1977, 1980, 1991RKavithamani
 
Introduction to ArtificiaI Intelligence in Higher Education
Introduction to ArtificiaI Intelligence in Higher EducationIntroduction to ArtificiaI Intelligence in Higher Education
Introduction to ArtificiaI Intelligence in Higher Educationpboyjonauth
 
Science 7 - LAND and SEA BREEZE and its Characteristics
Science 7 - LAND and SEA BREEZE and its CharacteristicsScience 7 - LAND and SEA BREEZE and its Characteristics
Science 7 - LAND and SEA BREEZE and its CharacteristicsKarinaGenton
 
Crayon Activity Handout For the Crayon A
Crayon Activity Handout For the Crayon ACrayon Activity Handout For the Crayon A
Crayon Activity Handout For the Crayon AUnboundStockton
 
POINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptx
POINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptxPOINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptx
POINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptxSayali Powar
 
A Critique of the Proposed National Education Policy Reform
A Critique of the Proposed National Education Policy ReformA Critique of the Proposed National Education Policy Reform
A Critique of the Proposed National Education Policy ReformChameera Dedduwage
 
Micromeritics - Fundamental and Derived Properties of Powders
Micromeritics - Fundamental and Derived Properties of PowdersMicromeritics - Fundamental and Derived Properties of Powders
Micromeritics - Fundamental and Derived Properties of PowdersChitralekhaTherkar
 
Arihant handbook biology for class 11 .pdf
Arihant handbook biology for class 11 .pdfArihant handbook biology for class 11 .pdf
Arihant handbook biology for class 11 .pdfchloefrazer622
 
“Oh GOSH! Reflecting on Hackteria's Collaborative Practices in a Global Do-It...
“Oh GOSH! Reflecting on Hackteria's Collaborative Practices in a Global Do-It...“Oh GOSH! Reflecting on Hackteria's Collaborative Practices in a Global Do-It...
“Oh GOSH! Reflecting on Hackteria's Collaborative Practices in a Global Do-It...Marc Dusseiller Dusjagr
 
Mastering the Unannounced Regulatory Inspection
Mastering the Unannounced Regulatory InspectionMastering the Unannounced Regulatory Inspection
Mastering the Unannounced Regulatory InspectionSafetyChain Software
 
MENTAL STATUS EXAMINATION format.docx
MENTAL     STATUS EXAMINATION format.docxMENTAL     STATUS EXAMINATION format.docx
MENTAL STATUS EXAMINATION format.docxPoojaSen20
 
mini mental status format.docx
mini    mental       status     format.docxmini    mental       status     format.docx
mini mental status format.docxPoojaSen20
 
The Most Excellent Way | 1 Corinthians 13
The Most Excellent Way | 1 Corinthians 13The Most Excellent Way | 1 Corinthians 13
The Most Excellent Way | 1 Corinthians 13Steve Thomason
 
Incoming and Outgoing Shipments in 1 STEP Using Odoo 17
Incoming and Outgoing Shipments in 1 STEP Using Odoo 17Incoming and Outgoing Shipments in 1 STEP Using Odoo 17
Incoming and Outgoing Shipments in 1 STEP Using Odoo 17Celine George
 
Concept of Vouching. B.Com(Hons) /B.Compdf
Concept of Vouching. B.Com(Hons) /B.CompdfConcept of Vouching. B.Com(Hons) /B.Compdf
Concept of Vouching. B.Com(Hons) /B.CompdfUmakantAnnand
 
BASLIQ CURRENT LOOKBOOK LOOKBOOK(1) (1).pdf
BASLIQ CURRENT LOOKBOOK  LOOKBOOK(1) (1).pdfBASLIQ CURRENT LOOKBOOK  LOOKBOOK(1) (1).pdf
BASLIQ CURRENT LOOKBOOK LOOKBOOK(1) (1).pdfSoniaTolstoy
 

Recently uploaded (20)

Organic Name Reactions for the students and aspirants of Chemistry12th.pptx
Organic Name Reactions  for the students and aspirants of Chemistry12th.pptxOrganic Name Reactions  for the students and aspirants of Chemistry12th.pptx
Organic Name Reactions for the students and aspirants of Chemistry12th.pptx
 
The basics of sentences session 2pptx copy.pptx
The basics of sentences session 2pptx copy.pptxThe basics of sentences session 2pptx copy.pptx
The basics of sentences session 2pptx copy.pptx
 
Industrial Policy - 1948, 1956, 1973, 1977, 1980, 1991
Industrial Policy - 1948, 1956, 1973, 1977, 1980, 1991Industrial Policy - 1948, 1956, 1973, 1977, 1980, 1991
Industrial Policy - 1948, 1956, 1973, 1977, 1980, 1991
 
Introduction to ArtificiaI Intelligence in Higher Education
Introduction to ArtificiaI Intelligence in Higher EducationIntroduction to ArtificiaI Intelligence in Higher Education
Introduction to ArtificiaI Intelligence in Higher Education
 
TataKelola dan KamSiber Kecerdasan Buatan v022.pdf
TataKelola dan KamSiber Kecerdasan Buatan v022.pdfTataKelola dan KamSiber Kecerdasan Buatan v022.pdf
TataKelola dan KamSiber Kecerdasan Buatan v022.pdf
 
Science 7 - LAND and SEA BREEZE and its Characteristics
Science 7 - LAND and SEA BREEZE and its CharacteristicsScience 7 - LAND and SEA BREEZE and its Characteristics
Science 7 - LAND and SEA BREEZE and its Characteristics
 
Crayon Activity Handout For the Crayon A
Crayon Activity Handout For the Crayon ACrayon Activity Handout For the Crayon A
Crayon Activity Handout For the Crayon A
 
POINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptx
POINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptxPOINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptx
POINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptx
 
A Critique of the Proposed National Education Policy Reform
A Critique of the Proposed National Education Policy ReformA Critique of the Proposed National Education Policy Reform
A Critique of the Proposed National Education Policy Reform
 
Model Call Girl in Tilak Nagar Delhi reach out to us at 🔝9953056974🔝
Model Call Girl in Tilak Nagar Delhi reach out to us at 🔝9953056974🔝Model Call Girl in Tilak Nagar Delhi reach out to us at 🔝9953056974🔝
Model Call Girl in Tilak Nagar Delhi reach out to us at 🔝9953056974🔝
 
Micromeritics - Fundamental and Derived Properties of Powders
Micromeritics - Fundamental and Derived Properties of PowdersMicromeritics - Fundamental and Derived Properties of Powders
Micromeritics - Fundamental and Derived Properties of Powders
 
Arihant handbook biology for class 11 .pdf
Arihant handbook biology for class 11 .pdfArihant handbook biology for class 11 .pdf
Arihant handbook biology for class 11 .pdf
 
“Oh GOSH! Reflecting on Hackteria's Collaborative Practices in a Global Do-It...
“Oh GOSH! Reflecting on Hackteria's Collaborative Practices in a Global Do-It...“Oh GOSH! Reflecting on Hackteria's Collaborative Practices in a Global Do-It...
“Oh GOSH! Reflecting on Hackteria's Collaborative Practices in a Global Do-It...
 
Mastering the Unannounced Regulatory Inspection
Mastering the Unannounced Regulatory InspectionMastering the Unannounced Regulatory Inspection
Mastering the Unannounced Regulatory Inspection
 
MENTAL STATUS EXAMINATION format.docx
MENTAL     STATUS EXAMINATION format.docxMENTAL     STATUS EXAMINATION format.docx
MENTAL STATUS EXAMINATION format.docx
 
mini mental status format.docx
mini    mental       status     format.docxmini    mental       status     format.docx
mini mental status format.docx
 
The Most Excellent Way | 1 Corinthians 13
The Most Excellent Way | 1 Corinthians 13The Most Excellent Way | 1 Corinthians 13
The Most Excellent Way | 1 Corinthians 13
 
Incoming and Outgoing Shipments in 1 STEP Using Odoo 17
Incoming and Outgoing Shipments in 1 STEP Using Odoo 17Incoming and Outgoing Shipments in 1 STEP Using Odoo 17
Incoming and Outgoing Shipments in 1 STEP Using Odoo 17
 
Concept of Vouching. B.Com(Hons) /B.Compdf
Concept of Vouching. B.Com(Hons) /B.CompdfConcept of Vouching. B.Com(Hons) /B.Compdf
Concept of Vouching. B.Com(Hons) /B.Compdf
 
BASLIQ CURRENT LOOKBOOK LOOKBOOK(1) (1).pdf
BASLIQ CURRENT LOOKBOOK  LOOKBOOK(1) (1).pdfBASLIQ CURRENT LOOKBOOK  LOOKBOOK(1) (1).pdf
BASLIQ CURRENT LOOKBOOK LOOKBOOK(1) (1).pdf
 

CNIT 127 14: Protection Mechanisms

  • 1. CNIT 127: Exploit Development
 
 Ch 14: Protection Mechanisms Updated 3-25-17
  • 2. Topics • Non-Executable Stack • W^X (Either Writable or Executable Memory) • Stack Data Protection – Canaries – Ideal Stack Layout – AAAS: ASCII Armored Address Space – ASLR: Address Space Layout Randomization
  • 3. Topics (continued) • Heap Protections • Windows SEH Protections
  • 4. Protection Mechanisms • General protection mechanisms • Try to reduce the possibility of a successful exploit – Without making the vulnerability disappear • Protections have flaws and can be bypassed
  • 7. NX-Stack • Code injected onto the stack will not run • Now enabled by default in most Linux distributions, OpenBSD, Mac OS X, and Windows • Bypass techniques involve executing code elsewhere, not on the stack • The return address can still be over- written
  • 8. ret2data • Place shellcode in the data section – Using buffered I/O, which places data on the heap, or some other technique • Use the corrupted return value to jump to it
  • 9. ret2libc • Use return address to jump directly to code in libc – Such as system() on Unix or WinExec() on Windows • In a stack-based buffer overflow – Attacker controls entire stack frame – Including return address and arguments • Limitation: range of valid characters – Can't inject 'x00'
  • 10. ret2strcpy • Based on ret2libc • Place shellcode on the stack • Use strcpy() to copy NOP sled + shellcode to a writable and executable memory address – dest • Use the return address when strcpy() finishes to jump to somewhere in the NOP sled – dest_ret
  • 12. ret2gets • Needs only one argument: a writable and executable memory address – dest • Reads NOP sled and shellcode from stdin • Often controlled by attacker
  • 14. ret2code • Generic name for all ways of using code that already exists in the application • May be real code that performs function for the application • Or just fragments of existing code
  • 15. Chained ret2code • Also called chained ret2libc • Executes a series of calls to existing code • Three techniques – Move stack pointer to a user-controlled buffer – Fix the stack pointer after each return, with pop-pop-pop-pop-ret – Return into functions implemented using pascal or stdcall calling conventions, as used in Windows, which fix the stack upon return
  • 16. ret2syscall • For Linux, the arguments for syscall are in registers • Must find two code fragments and chain them together – First one pops all the needed arguments from stack into desired registers, then returns – Second one issues a syscall • Easier on Windows, BSD, or Mac OS X than on Linux – Syscall arguments on the stack
  • 17. ret2text • Jump into the .text section of the executable binary itself – Where the program's code lives • Increasingly important to overcome other protections – W^X and ASLR
  • 18. ret2plt • Jump to Procedure Linkage Table – A table of pointers to libc functions – Present in the memory space for every dynamically-linked ELF executable • Limited to the functions called by the program
  • 19. ret2dl-resolve • Jump to ELF's dynamic linker resolver (ld.so) – Can perform ret2plt attacks using library functions that are not used by the target binary
  • 20. Limitations of NX Stack • Still allows return address to be abused to divert execution flow • Does not prevent execution of – Code already present in a process's memory – Code in other data areas
  • 21. W^X (Either Writable or Executable Memory)
  • 22. W^X Extends NX Stack • Memory is either – Writable but not executable • or – Non-writable and executable • So injected code won't run, no matter where it goes
  • 23. PaX • An early Linux implementation of W^X • Very secure, but never included in mainstream Linux distributions – To improve performance and maintainability
  • 24. NX Bit • Available in Windows starting with Win XP SP2 • Called "Data Execution Prevention" • Opt-in for client versions • Opt-out for server versions
  • 25. Limitations of W^X • Chained ret2code still works – Using code that's already present, without changing it • ret2code works – As long as there is code present that does what the attacker wants • Some memory may still allow W+X • Can use chained ret2code to write to disk and then execve() the disk file
  • 26. Limitations of W^X • Turning the protection off – Windows allows this with a single library call – ZwSetInformationProcess(-1. 22, 'x32x00x00x00", 4); – However, this requires injecting null bytes
  • 27. Limitations of W^X • Changing a specific memory region from W^X to W+X – In Windows • VirtualProtect(addr, size, 0x40, writable_address); • addr and size specify the region of memory to be made W+X –A similar function exists in OpenBSD
  • 28. Limitations of W^X • X after W – First write shellcode to writable, non- executable memory – Then change it to executable, non-writable • Create a new W+X region of memory – Possible in Windows, Linux, and OpenBSD – On Windows, use VirtualAlloc() – On Unix, use mmap()
  • 30. Canaries • StackGuard was first • ProPolice is improved version – Also called SSP (Stack-Smashing Protector) – Now known as "gcc's Stack-Smashing Protector" or stack-protector – Included in gcc
  • 31. StackGuard Only Protected the Return Address • Ineffective, because attacker can still change other variables and the saved EBP – (Frame pointer) • StackGuard was replaced by ProPolice and Visual Studio's /GS protection
  • 32. Canaries • First canary was NUL canary (0x00000000) • Replaced by Terminator canary (x000aff0d) – Includes four bad characters to stop most injection • Null (0x00) • Line Feed (0X10) • Carriage Return (0x0d) • EOF (0xff) • Random canary
  • 33. Ideal Stack Layout • Used by ProPolice and Microsoft's /GS feature • Places local buffers at the end of the stack frame – After other local variables • Copies function arguments into local variables – And relocates them • Protects the saved EBP and return value with a canary
  • 35. Compromises for Performance • Both ProPolice and Visual Studio make compromises – They protect some functions, and leave others unprotected • Visual Studio only copies vulnerable arguments – Leaving the rest unprotected
  • 36. Vulnerabilities in Ideal Stack Layout • If a function contains several buffers – One buffer can overflow into the next one – Could turn a buffer overflow into a format string vulnerability • C structure members can't be rearranged – May have an unfavorable order • Functions with a variable number of arguments – Can't be placed in ideal layout
  • 37. Vulnerabilities in Ideal Stack Layout • Buffers dynamically allocated with alloca() on the stack are always on top of stack frame • There may be something valuable to the attacker located after the buffer – In Windows, Exception Registration Record is stored on the stack – Other variables can be overwritten, because cookie is only checked when the function returns
  • 38. AAAS: ASCII Armored Address Space
  • 39. Null Bytes in Addresses • Load all shared libraries in addresses starting with 0x00 – Blocks string-based stack overflows – Because null bytes terminate strings • More effective on big-endian architectures – Where the 0x00 is at the start of the address • You can inject one 0x00, at the end of the string
  • 40. Example • You want to execute this Linux command, which adds a new user account to the system – system(“echo gera::0:0::/:/bin/sh >>/etc/passwd“) • You can still make one call to system() by making the last injected byte x00
  • 41.
  • 42. AAAS Limitations • Main executable is not moved to the ASCII Armored Address Space – It contains lots of useful code – Function epilogues – Programs PLT
  • 43. ASLR: Address Space Layout Randomization
  • 44. Not All Code is Randomized • Performance suffers from ASLR – Because it means that a register is permanently occupied holding the code base – There aren't enough registers available in a 32-bit OS to do that without slowing the system
  • 45. Ways to Defeat ASLR • Use ret2gets – Specify location to put shellcode • Make the application supply the address for you – Useful addresses may be stored in registers or on the stack
  • 46. linux-gate.so • A table of pointers used for system calls • Sometimes placed at a constant location in Linux distributions – Link Ch 14a
  • 47. Insufficient Randomization • If there are only 8 bits of entropy, an attack has 1/256 chance of working just by luck • Memory sections may maintain a fixed distance from each other, moving together by a fixed displacement – So only one guess is needed
  • 48. Finding Addresses • Local privilege escalation – May be able to access "proc/<pid>/maps" – The memory map • Also, brute-forcing a 16-bit value is not impossible – 65,536 runs • Even a 24-bit value can be brute-forced – 16 million runs
  • 49. Finding Addresses • Format string exploits reveal contents of RAM – Such as the memory map • Several RPC calls leak memory addresses in handles that are returned to the client • Multithreaded Windows applications – Address space must be the same for all the threads in a process – More chances to find an address
  • 50. fork() • Unix processes often use fork() to clone themselves • But the new fork has the same memory layout
  • 52. Action of Free() • Must write to the forward and reverse pointers • If we can overflow a chunk, we can control those writes • Write to arbitrary RAM – Image from mathyvanhoef.com, link Ch 5b
  • 53. Safe unlink() • Checks integrity of pointers before freeing a chunk • Makes sure that these two conditions are true before freeing chunk B
  • 54. Implementations in Various OS's • Safe unlink() is implemented in – glibc since 2004 – Windows since Win XP SP2
  • 55. Unprotected Heap Operations • Not all heap operations are protected by Safe unlink() • There are several complicated exploit techniques in Malloc Maleficarum – Exploiting code that adds a chunk, not free() – Link Ch 14b
  • 56. Heap Exploits on Windows • Unsafe Unlinking – Overwrite back and forward pointers carefully – So that the check passes – But the pointers still do desirable things when the chunk is freed – Allows a write to arbitrary RAM
  • 57. Heap Exploits on Windows • Chunk-on-lookaside overwrite – Windows lookaside list records free chunks – Singly-linked, no security checks – Allows a write to arbitrary RAM • Windows Vista and later no longer use lookaside lists – Instead they use a Low Fragmentation Heap
  • 58. Heap Cookies in Win XP • Windows XP SP2 inserts an 8-bit random cookie into each heap chunk's header • When a chunk is freed, the cookie is checked, but if the check fails, RtlFreeHeap() just exits without doing anything – Instead of halting program execution • So just try 256 times, until you get lucky
  • 59. Heap Cookies in Vista and Later • Eight random bytes are generated when a heap is created • Used with XOR to validate each chunk's header • Other integrity checks are also used • Some degree of ASLR for the heap • This is strong heap protection
  • 60. Windows 8 • Even more protections (link Ch 14c)
  • 62. And Even More • Cookies in the Kernel Pool – Also protects lookaside lists • Non-executable kernel pool – To thwart heap spraying • Much improved randomization – Especially with Ivy Bridge CPUs – RDRAND – Hardware Random Number Generator
  • 63. RDRAND • Cannot audit the hardware random-number generator • FreeBSD refused to use it – Links Ch 14d, 14e
  • 67. OpenBSD and FreeBSD Heap • Used phkmalloc() in older versions – Doesn't use linked lists – Doesn't intermix control information with user data • OpenBSD v 3.8 and later – malloc() uses mmap() – Allocates randomly located chunks of RAM (using ASLR) – No two chunks can ever be adjacent
  • 68. Heap Exploits • Overwriting control structures in the heap is becoming very difficult • But sometimes there may be something else stored after a heap chunk that's useful – Like a function pointer – In C++, the vtable contains pointers and may sometimes be overwritten
  • 70. SEH Protections • Registers are zeroed before calling the handler – So no address information is available to it • Exception handler can't be placed in the stack – So attacker can't inject code on the stack and jump to it • PE binaries (.exe and .dll files) compiled with
 /SafeSEH – Whitelist permitted exception handlers
  • 71. SEH Protections • Memory sections not compiled with 
 /SafeSEH still have some protections – Handlers must be in executable RAM (enforced by either hardware or software) • But DEP isn't in effect for every executable
  • 72. SEH Exploitation Tools • EEREAP – Reads a memory dump – Finds SEH trampoline code, like pop-pop-ret • pdest – Freezes a process and hunts through its RAM to find good trampoline code • SEHInspector – Inspects a DLL or EXE – Tells you if /SafeSEH or ASLR are in effect – Lists all valid exception handlers