SlideShare une entreprise Scribd logo
1  sur  60
Télécharger pour lire hors ligne
Blackout: What Really Happened
     Jamie Butler and Kris Kendall
Outline

Code Injection Basics
User Mode Injection Techniques
Example Malware Implementations
Kernel Mode Injection Techniques
Advanced Code Injection Detection via Raw
Memory Analysis




                                            1-2
Code Injection Basics
“Code Injection” refers to techniques
used to run code in the context of an
existing process
Motivation:
• Evasion: Hiding from automated or human
  detection of malicious code
     IR personnel hunt for malicious processes
• Impersonation: Bypassing restrictions
  enforced on a process level
     Windows Firewall, etc
     Pwdump, Sam Juicer


                                                 1-3
User Mode Injection Techniques

Techniques
• Windows API
• AppInit_Dll
• Detours




                                   1-4
Injecting code via the Windows API
Somewhat surprisingly, the Windows API
provides everything you need for process
injection
Functions:
 • VirtualAllocEx()
 • WriteProcessMemory()
 • CreateRemoteThread()
 • GetThreadContext() /
   SetThreadContext()
 • SetWindowsHookEx()
                                           1-5
1. OpenProcess
    evil.exe (pid = 2222)               iexplore.exe (pid = 3333)

      payload = 0xCC

3       hProc = 400




                                Handle = 400
1




                            2



    OpenProcess(3333)




                      Kernel (via kernel32)




                                                                    1-6
2. VirtualAllocEx
     evil.exe (pid = 2222)                 iexplore.exe (pid = 3333)
                                                  New section
        payload = 0xCC                 3     Base address = 0x4000
                                                Size = 256 bytes
          hProc = 400
5        base = 0x4000




                                                       2
    VirtualAllocEx(
        hProc,                   base = 0x4000
        0x4000,
                             4
1




        256,
        . . .)



                        Kernel (via kernel32)




                                                                       1-7
3. WriteProcessMemory
    evil.exe (pid = 2222)                 iexplore.exe (pid = 3333)
                                                 New section
       payload = 0xCC                       Base address = 0x4000
                                               Size = 256 bytes
         hProc = 400
                                           3        0xCC
       base = 0x4000




                                                      2
    WriteProcessMemory(
       hProc,
       base,
1




       payload,
       1,
       …)



                          Kernel (via kernel32)




                                                                      1-8
4. CreateRemoteThread
    evil.exe (pid = 2222)                      iexplore.exe (pid = 3333)
                                                      New section
       payload = 0xCC                            Base address = 0x4000
                                                    Size = 256 bytes
         hProc = 400
                                                         0xCC
        base = 0x4000
5       ThreadId = 11
                                                       New Thread
                                           3             Id = 11
                                                 Start Address = 0x4000

    CreateRemoteThread(
        hProc,
                                     ThreadId = 11
        SecAttribs = NULL,




                                                           2
1




                                 4

        StackSize = 1024,
        0x4000
        …)



                             Kernel (via kernel32)




                                                                           1-9
#Inject an infinite loop into a running process

import pydbg
k32 = pydbg.kernel32
payload = ‘xEBxFE’
pid = int(args[0])
...

h = k32.OpenProcess(PROCESS_ALL_ACCESS,
                    False, pid)
m = k32.VirtualAllocEx(h, None, 1024,
                       MEM_COMMIT,
                       PAGE_EXECUTE_READWRITE)
k32.WriteProcessMemory(h, m, payload,
                       len(payload), None)
k32.CreateRemoteThread(h, None, 1024000,
                       m, None, 0, None)    10
Better Payloads

Breakpoints and Loops are fun, but what about
real payloads?
If we directly inject code it must be “position
independent”
Any addresses that were pre-calculated at
compile time would be wrong in the context of a
new process


                                                  1-11
Better Payloads

Building large position independent payloads is
possible, but not trivial
However, DLL injection is much simpler
DLLs are designed to be loaded in a variety of
processes, addresses are automatically fixed
up when the DLL is loaded




                                                  1-12
DLL Injection

Use the basic process we just described
DLLs are loaded using kernel32!LoadLibrary
kernel32 is at the same address in every
process    we know its address in the remote
process (ignoring ASLR)
Allocate space for the name of the DLL to be
loaded, then create a thread with a start
address that points to LoadLibrary
                                               1-13
#DLL Injection Excerpt

import pydbg
k32 = pydbg.kernel32
pid = int(args[0])
dllname = args[1]
...
h = k32.OpenProcess(PROCESS_ALL_ACCESS,
                    False, pid)
m = k32.VirtualAllocEx(h, None, 1024,
                       MEM_COMMIT,
                       PAGE_EXECUTE_READWRITE)
k32.WriteProcessMemory(h, m, dllname,
                       len(dllname), None)
k32.CreateRemoteThread(h, None, 1024,
                       k32.LoadLibrary, m, 0,
None)                                       14
User Mode API Variants

Rather than create a new remote thread, we
can hijack an existing thread using
GetThreadContext, SetThreadContext


SetWindowsHookEx can also be used to inject
a DLL into a single remote process, or every
process running on the current Desktop


                                               1-15
SetWindowsHookEx

SetWindowsHookEx defines a hook procedure
within a DLL that will be called in response to
specific events
Example events: WH_KEYBOARD,
WH_MOUSE, WH_CALLWNDPROC, WH_CBT
Whenever the hooked event is first fired in a
hooked thread, the specified DLL is be loaded


                                                  1-16
Permissions and Security
To open a process opened by another user
(including SYSTEM), you must hold the
SE_DEBUG privilege
Normally SE_DEBUG is only granted to
member of the Administrator group
However, even if you are running as a
normal user, malware can still inject into
another process that you own


                                             1-17
Injecting code via AppInit_DLLs
The AppInit_DLLs registry value provides
another convenient method of DLL
injection




                                           1-18
Injecting code via Detours

Detours is a library developed by Microsoft
Research in 1999
The library uses the same techniques
already described, wrapped up in slick
package




                                              1-19
Detours Features

Function hooking in running processes
Import table modification
Attaching a DLL to an existing program file
Detours comes with great sample
programs:
•   Withdll
•   Injdll
•   Setdll
•   Traceapi
                                              1-20
Setdll

Detours can add a new DLL to an existing
binary on disk. How?
Detours creates a section named
“.detours” between the export table and
debug symbols
The .detours section contains the original
PE header, and a new IAT
Detours modifies the PE header to point at
the new IAT (reversible)
                                             1-21
Setdll Demo




              1-22
Setdll Demo




              1-23
Avoiding the Disk

When we perform DLL injection,
LoadLibrary expects the DLL to be on
the disk (or at least an SMB share)
The Metasploit project eliminates this
requirement using a clever hooking
strategy
By hooking functions that are involved in
reading the file from disk, they fool
Windows into thinking the DLL is on disk
                                            1-24
Meterpreter

Hook    Call LoadLibrary     Unhook
Hooked functions:
•   NtMapViewOfSection
•   NtQueryAttributesFile
•   NtOpenFile
•   NtCreateSection
•   NtOpenSection
See remote_dispatch.c and libloader.c in
MSF 3.0
                                           1-25
Meterpreter Demo




                   1-26
Poison Ivy RAT
Tons of malware uses Code Injection
We’ll quickly dig into the details of one
example




                                            1-27
Poison Ivy Capabilities




                          1-28
Step 1: Inject to Explorer

Poison Ivy client immediately injects to
Explorer and then exits
Output from WinApiOverride32 for pi.exe




                                           1-29
Step 2: Inject again to msnmsgr.exe
Explorer.exe injected code then injects again…
Interestingly, PI does not grab the SE_DEBUG
privilege, so we can’t inject in many existing
processes
Output from WinApiOverride32 for explorer.exe




                                                 1-30
Did it Work?




               1-31
Where is the evil?




                     1-32
Kernel Process Injection




                           1-33
Two Halves of the Process

User land processes are comprised of two
parts
• Kernel Portion
    EPROCESS and KPROCESS
    ETHREAD and KTHREAD
    Token
    Handle Table
    Page Tables
    Etc.


                                           1-34
Two Halves of the Process

User land Portion
•   Process Environment Block (PEB)
•   Thread Environment Block (TEB)
•   Windows subsystem (CSRSS.EXE)
•   Etc.




                                      1-35
Kernel Process Injection Steps

Must find suitable target
• Has a user land portion
• Has kernel32.dll and/or ntdll.dll loaded in its address
  space
• Has an alterable thread (unless hijacking an existing
  thread)
Allocate memory in target process
Write the equivalent of “shellcode” that calls
LoadLibrary
Cause a thread in the parent to execute newly
allocated code
• Hijack an existing thread
• Create an APC
                                                            1-36
Allocate memory in parent process

Change virtual memory context to that of
the target
• KeAttachProcess/KeStackAttachProcess
• ZwAllocateVirtualMemory
    (HANDLE) -1 means current process
    MEM_COMMIT
    PAGE_EXECUTE_READWRITE




                                           1-37
Creating the Shellcode

“shellcode” that calls LoadLibrary
• Copy function parameters into address space
• Pass the address of function parameters to
  calls
• Can use the FS register
    FS contains the address of the TEB
    TEB has a pointer to the PEB
    PEB has a pointer to the PEB_LDR_DATA
    PEB_LDR_DATA contains all the loaded DLLs


                                                1-38
Creating the Shellcode

As an alternative to using the FS register
• Find the address of ntdll.dll from the driver
• Parse its exports section
• Does not work with all DLLs
    Only address of ntdll.dll returned by
    ZwQuerySystemInformation




                                                  1-39
Thread Hijacking

Cause a thread in the parent to execute
newly allocated code - Hijack an existing
thread
• Locate a thread within the parent process
• Change its Context record
• Change Context record back when done
Problems:
• Low priority threads
• Blocked threads
• Changing Context back
                                              1-40
Thread Context Hijacking

Hijack and Context records
lkd> dt nt!_CONTEXT
  +0x000 ContextFlags : Uint4B
  +0x004 Dr0          : Uint4B
  +0x008 Dr1          : Uint4B
  +0x00c Dr2          : Uint4B
  +0x010 Dr3          : Uint4B
  +0x014 Dr6          : Uint4B
  +0x018 Dr7          : Uint4B
  +0x01c FloatSave         : _FLOATING_SAVE_AREA
  +0x08c SegGs            : Uint4B
  +0x090 SegFs           : Uint4B
  +0x094 SegEs            : Uint4B
  +0x098 SegDs            : Uint4B
  +0x09c Edi         : Uint4B
  +0x0a0 Esi         : Uint4B
  +0x0a4 Ebx           : Uint4B
  +0x0a8 Edx           : Uint4B
  +0x0ac Ecx          : Uint4B
  +0x0b0 Eax           : Uint4B
  +0x0b4 Ebp           : Uint4B
  +0x0b8 Eip         : Uint4B
  +0x0bc SegCs            : Uint4B
  +0x0c0 EFlags          : Uint4B
  +0x0c4 Esp          : Uint4B
  +0x0c8 SegSs           : Uint4B
  +0x0cc ExtendedRegisters : [512] UChar




                                                   1-41
Alternative Method: APC

Cause a thread in the parent to execute
newly allocated code - Create an APC
• Threads can be notified to run an
  Asynchronous Procedure Call (APC)
• APC has a pointer to code to execute
• To be notified, thread should be Alertable




                                               1-42
Alertable Threads and APCs – MSDN




                                    1-43
Finding an Alertable Thread

PETHREAD FindAlertableThread(PEPROCESS eproc)
{
   PETHREAD start, walk;

    if (eproc == NULL)
            return NULL;
    start = *(PETHREAD *)((DWORD)eproc + THREADOFFSET);
    start = (PETHREAD)((DWORD)start - THREADFLINK);
    walk = start;

    do
    {
          DbgPrint("Looking at thread 0x%xn",walk);

            if (*(PUCHAR)((DWORD)walk + ALERTOFFSET) == 0x01)
                        return walk;
            walk = *(PETHREAD *)((DWORD)walk + THREADFLINK);
            walk = (PETHREAD)((DWORD)walk - THREADFLINK);
    }while (walk != start);

    return NULL;
}

                                                                1-44
Kernel Process Injection Demo




                                1-45
Memory Analysis

Motivation
• APIs lie. The operating system can be
  subverted.
    Example: Unlink injected DLLs from the
    PEB_LDR_DATA in the PEB.
    Example: Hooking the Virtual Memory Manager
    and diverting address translation.
• APIs are not available to “classic” forensic
  investigations – offline analysis


                                                  1-46
Memory Analysis

Requirements
• No use of APIs to gather data.

• Ability to use any analysis solution on both live
  memory and offline memory image dumps.
   (Implies the ability to do all memory translation independently.)


• Do not require PDB symbols or any other operating
  specific information.




                                                                       1-47
Steps to Memory Analysis

Ability to access physical memory

Derive the version of the OS – important to
know how to interpret raw memory

Find all Processes and/or Threads

Enumerate File Handles, DLLs, Ports, etc.

                                              1-48
Steps to Memory Analysis

Virtual to Physical Address Translation
• Determine if the host uses PAE or non-PAE
• Find the Page Directory Table – process
  specific
• Translate prototype PTEs
• Use the paging file




                                              1-49
Derive the version of the OS

Find the System Process
• Allows the derivation of:
    The major operating system version in question
    The System Page Directory Table Base
    HandleTableListHead
    Virtual address of PsInitialSystemProcess
    PsActiveProcessHead
    PsProcessType



                                                     Patent Pending
                                                             1-50
Operating System Version

Find the System image name

Walk backwards to identify the Process
Block

The spatial difference between major
versions of the OS is enough to begin to
tell us about the operating system version
                                         Patent Pending
                                                 1-51
Operating System Version

Drawback: Ghosts
• There can be more than one System Process
    Open a memory crash dump in Windbg
    Run a Windows operating system in VMWare
• Solution:
    Non-paged kernel addresses are global
    We know the virtual address of
    PsActiveProcessHead
    PsActiveProcessHead and other kernel addresses
    should be valid and present (translatable) in both
    live or dead memory

                                                   Patent Pending
                                                           1-52
Memory Translation

PAE vs non-PAE
• Different ways to interpret the address tables
• The sixth bit in the CR4 CPU register
  determines if PAE is enabled
• Problem: We do not have access to CPU
  registers in memory analysis
• Solution?
    Kernel Processor Control Region -> KPCRB ->
    KPROCESSOR_STATE ->
    KSPECIAL_REGISTERS -> CR4


                                                   1-53
Memory Translation

CR4 Heuristic
• Page Directory Table Base and the Page
  Directory Table Pointer Base look very
  different.
CR3 is updated in the KPCR
• This can be used to identify a valid Page
  Directory Table
• The Page Directory can be used to validate
  the PsActiveProcessHead
                                               Patent Pending
                                                       1-54
Enumerating Injected DLLs

Problem:
• APIs lie.
• Malware can unlink from the
  PEB_LDR_DATA lists of DLLs


Solution:
• Virtual Address Descriptors (VADs)



                                       Patent Pending
                                               1-55
VADs

    Self balancing binary tree [1]
    Contains:
     •   Virtual address range
     •   Parent
     •   Left Child and Right Child
     •   Flags – is the memory executable
     •   Control Area

1. Russinovich, Mark and Solomon, Dave, Microsoft Windows Internals, Microsoft Press 2005



                                                                                            1-56
A Memory Map to a Name

VAD contains a CONTROL_AREA
CONTROL_AREA contains a
FILE_OBJECT
A FILE_OBJECT contains a
UNICODE_STRING with the filename

We now have the DLL name

                                   Patent Pending
                                           1-57
Demo




       1-58
Conclusion




             1-59
Questions?



Email: jamie.butler AT mandiant.com




                                      1-60

Contenu connexe

Tendances

Threads v3
Threads v3Threads v3
Threads v3Sunil OS
 
Advanced Windows Debugging
Advanced Windows DebuggingAdvanced Windows Debugging
Advanced Windows DebuggingBala Subra
 
Silicon Valley JUG: JVM Mechanics
Silicon Valley JUG: JVM MechanicsSilicon Valley JUG: JVM Mechanics
Silicon Valley JUG: JVM MechanicsAzul Systems, Inc.
 
Laporan multiclient chatting client server
Laporan multiclient chatting client serverLaporan multiclient chatting client server
Laporan multiclient chatting client servertrilestari08
 
Laporan multi client
Laporan multi clientLaporan multi client
Laporan multi clientichsanbarokah
 
[HES2013] Nifty stuff that you can still do with android by Xavier Martin
[HES2013] Nifty stuff that you can still do with android by Xavier Martin[HES2013] Nifty stuff that you can still do with android by Xavier Martin
[HES2013] Nifty stuff that you can still do with android by Xavier MartinHackito Ergo Sum
 
ikh331-06-distributed-programming
ikh331-06-distributed-programmingikh331-06-distributed-programming
ikh331-06-distributed-programmingAnung Ariwibowo
 
Distributed systems
Distributed systemsDistributed systems
Distributed systemsSonali Parab
 
Hibernate
Hibernate Hibernate
Hibernate Sunil OS
 
Dev Jumpstart: Building Your First App
Dev Jumpstart: Building Your First AppDev Jumpstart: Building Your First App
Dev Jumpstart: Building Your First AppMongoDB
 
Java 8 - Stamped Lock
Java 8 - Stamped LockJava 8 - Stamped Lock
Java 8 - Stamped LockHaim Yadid
 
Concurrency Concepts in Java
Concurrency Concepts in JavaConcurrency Concepts in Java
Concurrency Concepts in JavaDoug Hawkins
 
Threads, Queues, and More: Async Programming in iOS
Threads, Queues, and More: Async Programming in iOSThreads, Queues, and More: Async Programming in iOS
Threads, Queues, and More: Async Programming in iOSTechWell
 
Making Java more dynamic: runtime code generation for the JVM
Making Java more dynamic: runtime code generation for the JVMMaking Java more dynamic: runtime code generation for the JVM
Making Java more dynamic: runtime code generation for the JVMRafael Winterhalter
 
JNI - Java & C in the same project
JNI - Java & C in the same projectJNI - Java & C in the same project
JNI - Java & C in the same projectKarol Wrótniak
 

Tendances (20)

Threads v3
Threads v3Threads v3
Threads v3
 
Advanced Windows Debugging
Advanced Windows DebuggingAdvanced Windows Debugging
Advanced Windows Debugging
 
Silicon Valley JUG: JVM Mechanics
Silicon Valley JUG: JVM MechanicsSilicon Valley JUG: JVM Mechanics
Silicon Valley JUG: JVM Mechanics
 
Ac2
Ac2Ac2
Ac2
 
Laporan multiclient chatting client server
Laporan multiclient chatting client serverLaporan multiclient chatting client server
Laporan multiclient chatting client server
 
Laporan multi client
Laporan multi clientLaporan multi client
Laporan multi client
 
[HES2013] Nifty stuff that you can still do with android by Xavier Martin
[HES2013] Nifty stuff that you can still do with android by Xavier Martin[HES2013] Nifty stuff that you can still do with android by Xavier Martin
[HES2013] Nifty stuff that you can still do with android by Xavier Martin
 
ikh331-06-distributed-programming
ikh331-06-distributed-programmingikh331-06-distributed-programming
ikh331-06-distributed-programming
 
Java byte code in practice
Java byte code in practiceJava byte code in practice
Java byte code in practice
 
Distributed systems
Distributed systemsDistributed systems
Distributed systems
 
Java adv
Java advJava adv
Java adv
 
Hibernate
Hibernate Hibernate
Hibernate
 
Dev Jumpstart: Building Your First App
Dev Jumpstart: Building Your First AppDev Jumpstart: Building Your First App
Dev Jumpstart: Building Your First App
 
Java 8 - Stamped Lock
Java 8 - Stamped LockJava 8 - Stamped Lock
Java 8 - Stamped Lock
 
Concurrency Concepts in Java
Concurrency Concepts in JavaConcurrency Concepts in Java
Concurrency Concepts in Java
 
Threads, Queues, and More: Async Programming in iOS
Threads, Queues, and More: Async Programming in iOSThreads, Queues, and More: Async Programming in iOS
Threads, Queues, and More: Async Programming in iOS
 
Making Java more dynamic: runtime code generation for the JVM
Making Java more dynamic: runtime code generation for the JVMMaking Java more dynamic: runtime code generation for the JVM
Making Java more dynamic: runtime code generation for the JVM
 
JNI - Java & C in the same project
JNI - Java & C in the same projectJNI - Java & C in the same project
JNI - Java & C in the same project
 
Android JNI
Android JNIAndroid JNI
Android JNI
 
Network
NetworkNetwork
Network
 

En vedette

Progettare Sogni
Progettare SogniProgettare Sogni
Progettare SogniARGON
 
Lesson Plan One Us Govt. U22
Lesson Plan One Us Govt. U22Lesson Plan One Us Govt. U22
Lesson Plan One Us Govt. U22Jenny Hulbert
 
Powers of Government
Powers of GovernmentPowers of Government
Powers of Governmentkbeacom
 
Place of Local Government in a Federal System.
Place of Local Government in a Federal System.Place of Local Government in a Federal System.
Place of Local Government in a Federal System.CRISTYAG
 
US History Regents Review Catalog 2014-15
US History Regents Review Catalog 2014-15US History Regents Review Catalog 2014-15
US History Regents Review Catalog 2014-15Ethan Gelfer
 
Govt 2305-Ch_3
Govt 2305-Ch_3Govt 2305-Ch_3
Govt 2305-Ch_3Rick Fair
 
The Local Government Code of the Philippines
The Local Government Code of the PhilippinesThe Local Government Code of the Philippines
The Local Government Code of the Philippinesreaderausten
 
Chapter 04 presentation on powers
Chapter 04  presentation on powersChapter 04  presentation on powers
Chapter 04 presentation on powersFredrick Smith
 
The Political System of the USA
The Political System of the USAThe Political System of the USA
The Political System of the USAIrene_Ermolova
 
Guida Blog
Guida BlogGuida Blog
Guida BlogARGON
 
Saudi Electric Company (Sec)
Saudi Electric Company (Sec)Saudi Electric Company (Sec)
Saudi Electric Company (Sec)the1st_expert
 
Open Data and Creative Commons
Open Data and Creative CommonsOpen Data and Creative Commons
Open Data and Creative CommonsHaggen So
 
Introduction to Creative Commons
Introduction to Creative CommonsIntroduction to Creative Commons
Introduction to Creative CommonsHaggen So
 

En vedette (20)

Progettare Sogni
Progettare SogniProgettare Sogni
Progettare Sogni
 
Lesson Plan One Us Govt. U22
Lesson Plan One Us Govt. U22Lesson Plan One Us Govt. U22
Lesson Plan One Us Govt. U22
 
Powers of Government
Powers of GovernmentPowers of Government
Powers of Government
 
Place of Local Government in a Federal System.
Place of Local Government in a Federal System.Place of Local Government in a Federal System.
Place of Local Government in a Federal System.
 
US History Regents Review Catalog 2014-15
US History Regents Review Catalog 2014-15US History Regents Review Catalog 2014-15
US History Regents Review Catalog 2014-15
 
PO 101 Federalism
PO 101 Federalism PO 101 Federalism
PO 101 Federalism
 
Govt 2305-Ch_3
Govt 2305-Ch_3Govt 2305-Ch_3
Govt 2305-Ch_3
 
Am Federalism
Am FederalismAm Federalism
Am Federalism
 
The Local Government Code of the Philippines
The Local Government Code of the PhilippinesThe Local Government Code of the Philippines
The Local Government Code of the Philippines
 
Chapter 04 presentation on powers
Chapter 04  presentation on powersChapter 04  presentation on powers
Chapter 04 presentation on powers
 
The Political System of the USA
The Political System of the USAThe Political System of the USA
The Political System of the USA
 
US political system
US political systemUS political system
US political system
 
Spl Ragnhild Og Rm
Spl Ragnhild Og RmSpl Ragnhild Og Rm
Spl Ragnhild Og Rm
 
新聞
新聞新聞
新聞
 
Japanese Internment
Japanese InternmentJapanese Internment
Japanese Internment
 
HW
HWHW
HW
 
Guida Blog
Guida BlogGuida Blog
Guida Blog
 
Saudi Electric Company (Sec)
Saudi Electric Company (Sec)Saudi Electric Company (Sec)
Saudi Electric Company (Sec)
 
Open Data and Creative Commons
Open Data and Creative CommonsOpen Data and Creative Commons
Open Data and Creative Commons
 
Introduction to Creative Commons
Introduction to Creative CommonsIntroduction to Creative Commons
Introduction to Creative Commons
 

Similaire à Bh Usa 07 Butler And Kendall

[2007 CodeEngn Conference 01] dual5651 - Windows 커널단의 후킹
[2007 CodeEngn Conference 01] dual5651 - Windows 커널단의 후킹[2007 CodeEngn Conference 01] dual5651 - Windows 커널단의 후킹
[2007 CodeEngn Conference 01] dual5651 - Windows 커널단의 후킹GangSeok Lee
 
Formbook - In-depth malware analysis (Botconf 2018)
Formbook - In-depth malware analysis (Botconf 2018)Formbook - In-depth malware analysis (Botconf 2018)
Formbook - In-depth malware analysis (Botconf 2018)Rémi Jullian
 
Chasing the Adder. A tale from the APT world...
Chasing the Adder. A tale from the APT world...Chasing the Adder. A tale from the APT world...
Chasing the Adder. A tale from the APT world...Stefano Maccaglia
 
0x02 - Windows Privilege Esc - A Low Level Explanation of Token Theft
0x02 - Windows Privilege Esc - A Low Level Explanation of Token Theft0x02 - Windows Privilege Esc - A Low Level Explanation of Token Theft
0x02 - Windows Privilege Esc - A Low Level Explanation of Token TheftRussell Sanford
 
0x002 - Windows Priv Esc - A Low Level Explanation of Token Theft
0x002 - Windows Priv Esc - A Low Level Explanation of Token Theft0x002 - Windows Priv Esc - A Low Level Explanation of Token Theft
0x002 - Windows Priv Esc - A Low Level Explanation of Token TheftRussell Sanford
 
How to drive a malware analyst crazy
How to drive a malware analyst crazyHow to drive a malware analyst crazy
How to drive a malware analyst crazyMichael Boman
 
44CON London 2015 - How to drive a malware analyst crazy
44CON London 2015 - How to drive a malware analyst crazy44CON London 2015 - How to drive a malware analyst crazy
44CON London 2015 - How to drive a malware analyst crazy44CON
 
Technical Report Vawtrak v2
Technical Report Vawtrak v2Technical Report Vawtrak v2
Technical Report Vawtrak v2Blueliv
 
英文【Xu hao chen xiaobo】find your_own_ios_kernel_bug
英文【Xu hao chen xiaobo】find your_own_ios_kernel_bug英文【Xu hao chen xiaobo】find your_own_ios_kernel_bug
英文【Xu hao chen xiaobo】find your_own_ios_kernel_bugWang Hao Lee
 
Strategies to design FUD malware
Strategies to design FUD malwareStrategies to design FUD malware
Strategies to design FUD malwarePedro Tavares
 
JVM Mechanics: When Does the JVM JIT & Deoptimize?
JVM Mechanics: When Does the JVM JIT & Deoptimize?JVM Mechanics: When Does the JVM JIT & Deoptimize?
JVM Mechanics: When Does the JVM JIT & Deoptimize?Doug Hawkins
 
[若渴計畫] Challenges and Solutions of Window Remote Shellcode
[若渴計畫] Challenges and Solutions of Window Remote Shellcode[若渴計畫] Challenges and Solutions of Window Remote Shellcode
[若渴計畫] Challenges and Solutions of Window Remote ShellcodeAj MaChInE
 
Reversing malware analysis training part3 windows pefile formatbasics
Reversing malware analysis training part3 windows pefile formatbasicsReversing malware analysis training part3 windows pefile formatbasics
Reversing malware analysis training part3 windows pefile formatbasicsCysinfo Cyber Security Community
 
How to write clean & testable code without losing your mind
How to write clean & testable code without losing your mindHow to write clean & testable code without losing your mind
How to write clean & testable code without losing your mindAndreas Czakaj
 
PVS-Studio, a solution for resource intensive applications development
PVS-Studio, a solution for resource intensive applications developmentPVS-Studio, a solution for resource intensive applications development
PVS-Studio, a solution for resource intensive applications developmentOOO "Program Verification Systems"
 
Advanced Malware Analysis Training Session 4 - Anti-Analysis Techniques
Advanced Malware Analysis Training Session 4 - Anti-Analysis TechniquesAdvanced Malware Analysis Training Session 4 - Anti-Analysis Techniques
Advanced Malware Analysis Training Session 4 - Anti-Analysis Techniquessecurityxploded
 
Buffer Overflow - Smashing the Stack
Buffer Overflow - Smashing the StackBuffer Overflow - Smashing the Stack
Buffer Overflow - Smashing the StackironSource
 

Similaire à Bh Usa 07 Butler And Kendall (20)

[2007 CodeEngn Conference 01] dual5651 - Windows 커널단의 후킹
[2007 CodeEngn Conference 01] dual5651 - Windows 커널단의 후킹[2007 CodeEngn Conference 01] dual5651 - Windows 커널단의 후킹
[2007 CodeEngn Conference 01] dual5651 - Windows 커널단의 후킹
 
Formbook - In-depth malware analysis (Botconf 2018)
Formbook - In-depth malware analysis (Botconf 2018)Formbook - In-depth malware analysis (Botconf 2018)
Formbook - In-depth malware analysis (Botconf 2018)
 
Backdoor coding
Backdoor codingBackdoor coding
Backdoor coding
 
Chasing the Adder. A tale from the APT world...
Chasing the Adder. A tale from the APT world...Chasing the Adder. A tale from the APT world...
Chasing the Adder. A tale from the APT world...
 
0x02 - Windows Privilege Esc - A Low Level Explanation of Token Theft
0x02 - Windows Privilege Esc - A Low Level Explanation of Token Theft0x02 - Windows Privilege Esc - A Low Level Explanation of Token Theft
0x02 - Windows Privilege Esc - A Low Level Explanation of Token Theft
 
0x002 - Windows Priv Esc - A Low Level Explanation of Token Theft
0x002 - Windows Priv Esc - A Low Level Explanation of Token Theft0x002 - Windows Priv Esc - A Low Level Explanation of Token Theft
0x002 - Windows Priv Esc - A Low Level Explanation of Token Theft
 
How to drive a malware analyst crazy
How to drive a malware analyst crazyHow to drive a malware analyst crazy
How to drive a malware analyst crazy
 
44CON London 2015 - How to drive a malware analyst crazy
44CON London 2015 - How to drive a malware analyst crazy44CON London 2015 - How to drive a malware analyst crazy
44CON London 2015 - How to drive a malware analyst crazy
 
Technical Report Vawtrak v2
Technical Report Vawtrak v2Technical Report Vawtrak v2
Technical Report Vawtrak v2
 
英文【Xu hao chen xiaobo】find your_own_ios_kernel_bug
英文【Xu hao chen xiaobo】find your_own_ios_kernel_bug英文【Xu hao chen xiaobo】find your_own_ios_kernel_bug
英文【Xu hao chen xiaobo】find your_own_ios_kernel_bug
 
Strategies to design FUD malware
Strategies to design FUD malwareStrategies to design FUD malware
Strategies to design FUD malware
 
JVM Mechanics: When Does the JVM JIT & Deoptimize?
JVM Mechanics: When Does the JVM JIT & Deoptimize?JVM Mechanics: When Does the JVM JIT & Deoptimize?
JVM Mechanics: When Does the JVM JIT & Deoptimize?
 
Code Injection in Windows
Code Injection in WindowsCode Injection in Windows
Code Injection in Windows
 
[若渴計畫] Challenges and Solutions of Window Remote Shellcode
[若渴計畫] Challenges and Solutions of Window Remote Shellcode[若渴計畫] Challenges and Solutions of Window Remote Shellcode
[若渴計畫] Challenges and Solutions of Window Remote Shellcode
 
Reversing malware analysis training part3 windows pefile formatbasics
Reversing malware analysis training part3 windows pefile formatbasicsReversing malware analysis training part3 windows pefile formatbasics
Reversing malware analysis training part3 windows pefile formatbasics
 
How to write clean & testable code without losing your mind
How to write clean & testable code without losing your mindHow to write clean & testable code without losing your mind
How to write clean & testable code without losing your mind
 
PVS-Studio, a solution for resource intensive applications development
PVS-Studio, a solution for resource intensive applications developmentPVS-Studio, a solution for resource intensive applications development
PVS-Studio, a solution for resource intensive applications development
 
Advanced Malware Analysis Training Session 4 - Anti-Analysis Techniques
Advanced Malware Analysis Training Session 4 - Anti-Analysis TechniquesAdvanced Malware Analysis Training Session 4 - Anti-Analysis Techniques
Advanced Malware Analysis Training Session 4 - Anti-Analysis Techniques
 
Rootkit case
Rootkit caseRootkit case
Rootkit case
 
Buffer Overflow - Smashing the Stack
Buffer Overflow - Smashing the StackBuffer Overflow - Smashing the Stack
Buffer Overflow - Smashing the Stack
 

Plus de KarlFrank99

Sandboxie process isolation with kernel hooks
Sandboxie process isolation with kernel hooksSandboxie process isolation with kernel hooks
Sandboxie process isolation with kernel hooksKarlFrank99
 
Double agent zero-day code injection and persistence technique
Double agent  zero-day code injection and persistence techniqueDouble agent  zero-day code injection and persistence technique
Double agent zero-day code injection and persistence techniqueKarlFrank99
 
Process Doppelgänging
Process Doppelgänging Process Doppelgänging
Process Doppelgänging KarlFrank99
 
Osteoblast-Osteoclast Interactions
Osteoblast-Osteoclast InteractionsOsteoblast-Osteoclast Interactions
Osteoblast-Osteoclast InteractionsKarlFrank99
 
Role of autophagy in tumor necrosis factor-α- induced apoptosis of osteoblast...
Role of autophagy in tumor necrosis factor-α- induced apoptosis of osteoblast...Role of autophagy in tumor necrosis factor-α- induced apoptosis of osteoblast...
Role of autophagy in tumor necrosis factor-α- induced apoptosis of osteoblast...KarlFrank99
 
Osteoblast and Osteoclast Crosstalks: From OAF to Ephrin
Osteoblast and Osteoclast Crosstalks: From OAF to EphrinOsteoblast and Osteoclast Crosstalks: From OAF to Ephrin
Osteoblast and Osteoclast Crosstalks: From OAF to EphrinKarlFrank99
 
The Tight Relationship Between Osteoclasts and the Immune System
The Tight Relationship Between Osteoclasts and the Immune SystemThe Tight Relationship Between Osteoclasts and the Immune System
The Tight Relationship Between Osteoclasts and the Immune SystemKarlFrank99
 
No association between circulating concentrations of vitamin D and risk of lu...
No association between circulating concentrations of vitamin D and risk of lu...No association between circulating concentrations of vitamin D and risk of lu...
No association between circulating concentrations of vitamin D and risk of lu...KarlFrank99
 
20180426_EcbMeeting_DiffStatement
20180426_EcbMeeting_DiffStatement20180426_EcbMeeting_DiffStatement
20180426_EcbMeeting_DiffStatementKarlFrank99
 
20180420__DanskeResearch_ECBPreview
20180420__DanskeResearch_ECBPreview20180420__DanskeResearch_ECBPreview
20180420__DanskeResearch_ECBPreviewKarlFrank99
 
20180420__DanskeResearcch_WeeklyFocus
20180420__DanskeResearcch_WeeklyFocus20180420__DanskeResearcch_WeeklyFocus
20180420__DanskeResearcch_WeeklyFocusKarlFrank99
 
20180417_DanskeResearch_FX_Forecast_Update
20180417_DanskeResearch_FX_Forecast_Update20180417_DanskeResearch_FX_Forecast_Update
20180417_DanskeResearch_FX_Forecast_UpdateKarlFrank99
 
20180418_NordeaResearch_EAInfl_n_ECB
20180418_NordeaResearch_EAInfl_n_ECB20180418_NordeaResearch_EAInfl_n_ECB
20180418_NordeaResearch_EAInfl_n_ECBKarlFrank99
 
NordeaResearch_EcbWatch_20180423
NordeaResearch_EcbWatch_20180423NordeaResearch_EcbWatch_20180423
NordeaResearch_EcbWatch_20180423KarlFrank99
 
20170426_CommerzbankResearch__BullionWeeklyTechnicals
20170426_CommerzbankResearch__BullionWeeklyTechnicals20170426_CommerzbankResearch__BullionWeeklyTechnicals
20170426_CommerzbankResearch__BullionWeeklyTechnicalsKarlFrank99
 
Hs P005 Reflective Dll Injection
Hs P005 Reflective Dll InjectionHs P005 Reflective Dll Injection
Hs P005 Reflective Dll InjectionKarlFrank99
 
Atomic Bomb Tutorial En
Atomic Bomb Tutorial EnAtomic Bomb Tutorial En
Atomic Bomb Tutorial EnKarlFrank99
 

Plus de KarlFrank99 (20)

Sandboxie process isolation with kernel hooks
Sandboxie process isolation with kernel hooksSandboxie process isolation with kernel hooks
Sandboxie process isolation with kernel hooks
 
Comodo q1 2018
Comodo q1 2018Comodo q1 2018
Comodo q1 2018
 
Double agent zero-day code injection and persistence technique
Double agent  zero-day code injection and persistence techniqueDouble agent  zero-day code injection and persistence technique
Double agent zero-day code injection and persistence technique
 
Process Doppelgänging
Process Doppelgänging Process Doppelgänging
Process Doppelgänging
 
Osteoblast-Osteoclast Interactions
Osteoblast-Osteoclast InteractionsOsteoblast-Osteoclast Interactions
Osteoblast-Osteoclast Interactions
 
Role of autophagy in tumor necrosis factor-α- induced apoptosis of osteoblast...
Role of autophagy in tumor necrosis factor-α- induced apoptosis of osteoblast...Role of autophagy in tumor necrosis factor-α- induced apoptosis of osteoblast...
Role of autophagy in tumor necrosis factor-α- induced apoptosis of osteoblast...
 
Osteoblast and Osteoclast Crosstalks: From OAF to Ephrin
Osteoblast and Osteoclast Crosstalks: From OAF to EphrinOsteoblast and Osteoclast Crosstalks: From OAF to Ephrin
Osteoblast and Osteoclast Crosstalks: From OAF to Ephrin
 
The Tight Relationship Between Osteoclasts and the Immune System
The Tight Relationship Between Osteoclasts and the Immune SystemThe Tight Relationship Between Osteoclasts and the Immune System
The Tight Relationship Between Osteoclasts and the Immune System
 
No association between circulating concentrations of vitamin D and risk of lu...
No association between circulating concentrations of vitamin D and risk of lu...No association between circulating concentrations of vitamin D and risk of lu...
No association between circulating concentrations of vitamin D and risk of lu...
 
20180426_EcbMeeting_DiffStatement
20180426_EcbMeeting_DiffStatement20180426_EcbMeeting_DiffStatement
20180426_EcbMeeting_DiffStatement
 
20180420__DanskeResearch_ECBPreview
20180420__DanskeResearch_ECBPreview20180420__DanskeResearch_ECBPreview
20180420__DanskeResearch_ECBPreview
 
20180420__DanskeResearcch_WeeklyFocus
20180420__DanskeResearcch_WeeklyFocus20180420__DanskeResearcch_WeeklyFocus
20180420__DanskeResearcch_WeeklyFocus
 
20180417_DanskeResearch_FX_Forecast_Update
20180417_DanskeResearch_FX_Forecast_Update20180417_DanskeResearch_FX_Forecast_Update
20180417_DanskeResearch_FX_Forecast_Update
 
20180418_NordeaResearch_EAInfl_n_ECB
20180418_NordeaResearch_EAInfl_n_ECB20180418_NordeaResearch_EAInfl_n_ECB
20180418_NordeaResearch_EAInfl_n_ECB
 
NordeaResearch_EcbWatch_20180423
NordeaResearch_EcbWatch_20180423NordeaResearch_EcbWatch_20180423
NordeaResearch_EcbWatch_20180423
 
20170426_CommerzbankResearch__BullionWeeklyTechnicals
20170426_CommerzbankResearch__BullionWeeklyTechnicals20170426_CommerzbankResearch__BullionWeeklyTechnicals
20170426_CommerzbankResearch__BullionWeeklyTechnicals
 
Dsohowto
DsohowtoDsohowto
Dsohowto
 
Tesi Laurea
Tesi LaureaTesi Laurea
Tesi Laurea
 
Hs P005 Reflective Dll Injection
Hs P005 Reflective Dll InjectionHs P005 Reflective Dll Injection
Hs P005 Reflective Dll Injection
 
Atomic Bomb Tutorial En
Atomic Bomb Tutorial EnAtomic Bomb Tutorial En
Atomic Bomb Tutorial En
 

Dernier

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
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
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
 
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
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsJoaquim Jorge
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
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
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
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
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
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
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
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
 
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
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 

Dernier (20)

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
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
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...
 
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
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
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?
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
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
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
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...
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
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
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 

Bh Usa 07 Butler And Kendall

  • 1. Blackout: What Really Happened Jamie Butler and Kris Kendall
  • 2. Outline Code Injection Basics User Mode Injection Techniques Example Malware Implementations Kernel Mode Injection Techniques Advanced Code Injection Detection via Raw Memory Analysis 1-2
  • 3. Code Injection Basics “Code Injection” refers to techniques used to run code in the context of an existing process Motivation: • Evasion: Hiding from automated or human detection of malicious code IR personnel hunt for malicious processes • Impersonation: Bypassing restrictions enforced on a process level Windows Firewall, etc Pwdump, Sam Juicer 1-3
  • 4. User Mode Injection Techniques Techniques • Windows API • AppInit_Dll • Detours 1-4
  • 5. Injecting code via the Windows API Somewhat surprisingly, the Windows API provides everything you need for process injection Functions: • VirtualAllocEx() • WriteProcessMemory() • CreateRemoteThread() • GetThreadContext() / SetThreadContext() • SetWindowsHookEx() 1-5
  • 6. 1. OpenProcess evil.exe (pid = 2222) iexplore.exe (pid = 3333) payload = 0xCC 3 hProc = 400 Handle = 400 1 2 OpenProcess(3333) Kernel (via kernel32) 1-6
  • 7. 2. VirtualAllocEx evil.exe (pid = 2222) iexplore.exe (pid = 3333) New section payload = 0xCC 3 Base address = 0x4000 Size = 256 bytes hProc = 400 5 base = 0x4000 2 VirtualAllocEx( hProc, base = 0x4000 0x4000, 4 1 256, . . .) Kernel (via kernel32) 1-7
  • 8. 3. WriteProcessMemory evil.exe (pid = 2222) iexplore.exe (pid = 3333) New section payload = 0xCC Base address = 0x4000 Size = 256 bytes hProc = 400 3 0xCC base = 0x4000 2 WriteProcessMemory( hProc, base, 1 payload, 1, …) Kernel (via kernel32) 1-8
  • 9. 4. CreateRemoteThread evil.exe (pid = 2222) iexplore.exe (pid = 3333) New section payload = 0xCC Base address = 0x4000 Size = 256 bytes hProc = 400 0xCC base = 0x4000 5 ThreadId = 11 New Thread 3 Id = 11 Start Address = 0x4000 CreateRemoteThread( hProc, ThreadId = 11 SecAttribs = NULL, 2 1 4 StackSize = 1024, 0x4000 …) Kernel (via kernel32) 1-9
  • 10. #Inject an infinite loop into a running process import pydbg k32 = pydbg.kernel32 payload = ‘xEBxFE’ pid = int(args[0]) ... h = k32.OpenProcess(PROCESS_ALL_ACCESS, False, pid) m = k32.VirtualAllocEx(h, None, 1024, MEM_COMMIT, PAGE_EXECUTE_READWRITE) k32.WriteProcessMemory(h, m, payload, len(payload), None) k32.CreateRemoteThread(h, None, 1024000, m, None, 0, None) 10
  • 11. Better Payloads Breakpoints and Loops are fun, but what about real payloads? If we directly inject code it must be “position independent” Any addresses that were pre-calculated at compile time would be wrong in the context of a new process 1-11
  • 12. Better Payloads Building large position independent payloads is possible, but not trivial However, DLL injection is much simpler DLLs are designed to be loaded in a variety of processes, addresses are automatically fixed up when the DLL is loaded 1-12
  • 13. DLL Injection Use the basic process we just described DLLs are loaded using kernel32!LoadLibrary kernel32 is at the same address in every process we know its address in the remote process (ignoring ASLR) Allocate space for the name of the DLL to be loaded, then create a thread with a start address that points to LoadLibrary 1-13
  • 14. #DLL Injection Excerpt import pydbg k32 = pydbg.kernel32 pid = int(args[0]) dllname = args[1] ... h = k32.OpenProcess(PROCESS_ALL_ACCESS, False, pid) m = k32.VirtualAllocEx(h, None, 1024, MEM_COMMIT, PAGE_EXECUTE_READWRITE) k32.WriteProcessMemory(h, m, dllname, len(dllname), None) k32.CreateRemoteThread(h, None, 1024, k32.LoadLibrary, m, 0, None) 14
  • 15. User Mode API Variants Rather than create a new remote thread, we can hijack an existing thread using GetThreadContext, SetThreadContext SetWindowsHookEx can also be used to inject a DLL into a single remote process, or every process running on the current Desktop 1-15
  • 16. SetWindowsHookEx SetWindowsHookEx defines a hook procedure within a DLL that will be called in response to specific events Example events: WH_KEYBOARD, WH_MOUSE, WH_CALLWNDPROC, WH_CBT Whenever the hooked event is first fired in a hooked thread, the specified DLL is be loaded 1-16
  • 17. Permissions and Security To open a process opened by another user (including SYSTEM), you must hold the SE_DEBUG privilege Normally SE_DEBUG is only granted to member of the Administrator group However, even if you are running as a normal user, malware can still inject into another process that you own 1-17
  • 18. Injecting code via AppInit_DLLs The AppInit_DLLs registry value provides another convenient method of DLL injection 1-18
  • 19. Injecting code via Detours Detours is a library developed by Microsoft Research in 1999 The library uses the same techniques already described, wrapped up in slick package 1-19
  • 20. Detours Features Function hooking in running processes Import table modification Attaching a DLL to an existing program file Detours comes with great sample programs: • Withdll • Injdll • Setdll • Traceapi 1-20
  • 21. Setdll Detours can add a new DLL to an existing binary on disk. How? Detours creates a section named “.detours” between the export table and debug symbols The .detours section contains the original PE header, and a new IAT Detours modifies the PE header to point at the new IAT (reversible) 1-21
  • 22. Setdll Demo 1-22
  • 23. Setdll Demo 1-23
  • 24. Avoiding the Disk When we perform DLL injection, LoadLibrary expects the DLL to be on the disk (or at least an SMB share) The Metasploit project eliminates this requirement using a clever hooking strategy By hooking functions that are involved in reading the file from disk, they fool Windows into thinking the DLL is on disk 1-24
  • 25. Meterpreter Hook Call LoadLibrary Unhook Hooked functions: • NtMapViewOfSection • NtQueryAttributesFile • NtOpenFile • NtCreateSection • NtOpenSection See remote_dispatch.c and libloader.c in MSF 3.0 1-25
  • 27. Poison Ivy RAT Tons of malware uses Code Injection We’ll quickly dig into the details of one example 1-27
  • 29. Step 1: Inject to Explorer Poison Ivy client immediately injects to Explorer and then exits Output from WinApiOverride32 for pi.exe 1-29
  • 30. Step 2: Inject again to msnmsgr.exe Explorer.exe injected code then injects again… Interestingly, PI does not grab the SE_DEBUG privilege, so we can’t inject in many existing processes Output from WinApiOverride32 for explorer.exe 1-30
  • 31. Did it Work? 1-31
  • 32. Where is the evil? 1-32
  • 34. Two Halves of the Process User land processes are comprised of two parts • Kernel Portion EPROCESS and KPROCESS ETHREAD and KTHREAD Token Handle Table Page Tables Etc. 1-34
  • 35. Two Halves of the Process User land Portion • Process Environment Block (PEB) • Thread Environment Block (TEB) • Windows subsystem (CSRSS.EXE) • Etc. 1-35
  • 36. Kernel Process Injection Steps Must find suitable target • Has a user land portion • Has kernel32.dll and/or ntdll.dll loaded in its address space • Has an alterable thread (unless hijacking an existing thread) Allocate memory in target process Write the equivalent of “shellcode” that calls LoadLibrary Cause a thread in the parent to execute newly allocated code • Hijack an existing thread • Create an APC 1-36
  • 37. Allocate memory in parent process Change virtual memory context to that of the target • KeAttachProcess/KeStackAttachProcess • ZwAllocateVirtualMemory (HANDLE) -1 means current process MEM_COMMIT PAGE_EXECUTE_READWRITE 1-37
  • 38. Creating the Shellcode “shellcode” that calls LoadLibrary • Copy function parameters into address space • Pass the address of function parameters to calls • Can use the FS register FS contains the address of the TEB TEB has a pointer to the PEB PEB has a pointer to the PEB_LDR_DATA PEB_LDR_DATA contains all the loaded DLLs 1-38
  • 39. Creating the Shellcode As an alternative to using the FS register • Find the address of ntdll.dll from the driver • Parse its exports section • Does not work with all DLLs Only address of ntdll.dll returned by ZwQuerySystemInformation 1-39
  • 40. Thread Hijacking Cause a thread in the parent to execute newly allocated code - Hijack an existing thread • Locate a thread within the parent process • Change its Context record • Change Context record back when done Problems: • Low priority threads • Blocked threads • Changing Context back 1-40
  • 41. Thread Context Hijacking Hijack and Context records lkd> dt nt!_CONTEXT +0x000 ContextFlags : Uint4B +0x004 Dr0 : Uint4B +0x008 Dr1 : Uint4B +0x00c Dr2 : Uint4B +0x010 Dr3 : Uint4B +0x014 Dr6 : Uint4B +0x018 Dr7 : Uint4B +0x01c FloatSave : _FLOATING_SAVE_AREA +0x08c SegGs : Uint4B +0x090 SegFs : Uint4B +0x094 SegEs : Uint4B +0x098 SegDs : Uint4B +0x09c Edi : Uint4B +0x0a0 Esi : Uint4B +0x0a4 Ebx : Uint4B +0x0a8 Edx : Uint4B +0x0ac Ecx : Uint4B +0x0b0 Eax : Uint4B +0x0b4 Ebp : Uint4B +0x0b8 Eip : Uint4B +0x0bc SegCs : Uint4B +0x0c0 EFlags : Uint4B +0x0c4 Esp : Uint4B +0x0c8 SegSs : Uint4B +0x0cc ExtendedRegisters : [512] UChar 1-41
  • 42. Alternative Method: APC Cause a thread in the parent to execute newly allocated code - Create an APC • Threads can be notified to run an Asynchronous Procedure Call (APC) • APC has a pointer to code to execute • To be notified, thread should be Alertable 1-42
  • 43. Alertable Threads and APCs – MSDN 1-43
  • 44. Finding an Alertable Thread PETHREAD FindAlertableThread(PEPROCESS eproc) { PETHREAD start, walk; if (eproc == NULL) return NULL; start = *(PETHREAD *)((DWORD)eproc + THREADOFFSET); start = (PETHREAD)((DWORD)start - THREADFLINK); walk = start; do { DbgPrint("Looking at thread 0x%xn",walk); if (*(PUCHAR)((DWORD)walk + ALERTOFFSET) == 0x01) return walk; walk = *(PETHREAD *)((DWORD)walk + THREADFLINK); walk = (PETHREAD)((DWORD)walk - THREADFLINK); }while (walk != start); return NULL; } 1-44
  • 46. Memory Analysis Motivation • APIs lie. The operating system can be subverted. Example: Unlink injected DLLs from the PEB_LDR_DATA in the PEB. Example: Hooking the Virtual Memory Manager and diverting address translation. • APIs are not available to “classic” forensic investigations – offline analysis 1-46
  • 47. Memory Analysis Requirements • No use of APIs to gather data. • Ability to use any analysis solution on both live memory and offline memory image dumps. (Implies the ability to do all memory translation independently.) • Do not require PDB symbols or any other operating specific information. 1-47
  • 48. Steps to Memory Analysis Ability to access physical memory Derive the version of the OS – important to know how to interpret raw memory Find all Processes and/or Threads Enumerate File Handles, DLLs, Ports, etc. 1-48
  • 49. Steps to Memory Analysis Virtual to Physical Address Translation • Determine if the host uses PAE or non-PAE • Find the Page Directory Table – process specific • Translate prototype PTEs • Use the paging file 1-49
  • 50. Derive the version of the OS Find the System Process • Allows the derivation of: The major operating system version in question The System Page Directory Table Base HandleTableListHead Virtual address of PsInitialSystemProcess PsActiveProcessHead PsProcessType Patent Pending 1-50
  • 51. Operating System Version Find the System image name Walk backwards to identify the Process Block The spatial difference between major versions of the OS is enough to begin to tell us about the operating system version Patent Pending 1-51
  • 52. Operating System Version Drawback: Ghosts • There can be more than one System Process Open a memory crash dump in Windbg Run a Windows operating system in VMWare • Solution: Non-paged kernel addresses are global We know the virtual address of PsActiveProcessHead PsActiveProcessHead and other kernel addresses should be valid and present (translatable) in both live or dead memory Patent Pending 1-52
  • 53. Memory Translation PAE vs non-PAE • Different ways to interpret the address tables • The sixth bit in the CR4 CPU register determines if PAE is enabled • Problem: We do not have access to CPU registers in memory analysis • Solution? Kernel Processor Control Region -> KPCRB -> KPROCESSOR_STATE -> KSPECIAL_REGISTERS -> CR4 1-53
  • 54. Memory Translation CR4 Heuristic • Page Directory Table Base and the Page Directory Table Pointer Base look very different. CR3 is updated in the KPCR • This can be used to identify a valid Page Directory Table • The Page Directory can be used to validate the PsActiveProcessHead Patent Pending 1-54
  • 55. Enumerating Injected DLLs Problem: • APIs lie. • Malware can unlink from the PEB_LDR_DATA lists of DLLs Solution: • Virtual Address Descriptors (VADs) Patent Pending 1-55
  • 56. VADs Self balancing binary tree [1] Contains: • Virtual address range • Parent • Left Child and Right Child • Flags – is the memory executable • Control Area 1. Russinovich, Mark and Solomon, Dave, Microsoft Windows Internals, Microsoft Press 2005 1-56
  • 57. A Memory Map to a Name VAD contains a CONTROL_AREA CONTROL_AREA contains a FILE_OBJECT A FILE_OBJECT contains a UNICODE_STRING with the filename We now have the DLL name Patent Pending 1-57
  • 58. Demo 1-58
  • 59. Conclusion 1-59