Haow do I sandbox?!?! - RECON.CX Bremer...Haow do I sandbox?!?! Cuckoo Sandbox Internals Jurriaan...

79
Haow do I sandbox?!?! Cuckoo Sandbox Internals Jurriaan Bremer @skier t Student (University of Amsterdam), Freelance Security Researcher June 22, 2013 June 22, 2013 Jurriaan Bremer @skier t Haow do I sandbox?!?! Cuckoo Sandbox Internals 1 / 79

Transcript of Haow do I sandbox?!?! - RECON.CX Bremer...Haow do I sandbox?!?! Cuckoo Sandbox Internals Jurriaan...

Page 1: Haow do I sandbox?!?! - RECON.CX Bremer...Haow do I sandbox?!?! Cuckoo Sandbox Internals Jurriaan Bremer @skier t Student (University of Amsterdam), Freelance Security Researcher June

Haow do I sandbox?!?!Cuckoo Sandbox Internals

Jurriaan Bremer @skier t

Student (University of Amsterdam), Freelance Security Researcher

June 22, 2013

June 22, 2013 Jurriaan Bremer @skier t Haow do I sandbox?!?! Cuckoo Sandbox Internals 1 / 79

Page 2: Haow do I sandbox?!?! - RECON.CX Bremer...Haow do I sandbox?!?! Cuckoo Sandbox Internals Jurriaan Bremer @skier t Student (University of Amsterdam), Freelance Security Researcher June

Introduction - Cuckoo Sandbox Team

Figure : Mark Schloesser, Claudio Guarnieri, Me, Alessandro Tanasi

June 22, 2013 Jurriaan Bremer @skier t Haow do I sandbox?!?! Cuckoo Sandbox Internals 2 / 79

Page 3: Haow do I sandbox?!?! - RECON.CX Bremer...Haow do I sandbox?!?! Cuckoo Sandbox Internals Jurriaan Bremer @skier t Student (University of Amsterdam), Freelance Security Researcher June

Introduction - What this talk is NOT about!

Figure : Dragon Sandbox!

June 22, 2013 Jurriaan Bremer @skier t Haow do I sandbox?!?! Cuckoo Sandbox Internals 3 / 79

Page 4: Haow do I sandbox?!?! - RECON.CX Bremer...Haow do I sandbox?!?! Cuckoo Sandbox Internals Jurriaan Bremer @skier t Student (University of Amsterdam), Freelance Security Researcher June

Introduction - What this talk is about!

I How we built Cuckoo

I How to evade Cuckoo

I Left as an exercise for the attendeeI Who would do such terrible thing though?

June 22, 2013 Jurriaan Bremer @skier t Haow do I sandbox?!?! Cuckoo Sandbox Internals 4 / 79

Page 5: Haow do I sandbox?!?! - RECON.CX Bremer...Haow do I sandbox?!?! Cuckoo Sandbox Internals Jurriaan Bremer @skier t Student (University of Amsterdam), Freelance Security Researcher June

Introduction - Todays problems in Malware

I . . . Insert long list of problems . . .

I In the end, we prefer to blame..

June 22, 2013 Jurriaan Bremer @skier t Haow do I sandbox?!?! Cuckoo Sandbox Internals 5 / 79

Page 6: Haow do I sandbox?!?! - RECON.CX Bremer...Haow do I sandbox?!?! Cuckoo Sandbox Internals Jurriaan Bremer @skier t Student (University of Amsterdam), Freelance Security Researcher June

Introduction - Todays problems in Malware

June 22, 2013 Jurriaan Bremer @skier t Haow do I sandbox?!?! Cuckoo Sandbox Internals 6 / 79

Page 7: Haow do I sandbox?!?! - RECON.CX Bremer...Haow do I sandbox?!?! Cuckoo Sandbox Internals Jurriaan Bremer @skier t Student (University of Amsterdam), Freelance Security Researcher June

Introduction - Todays problems in Malware Analysis

I Static Analysis takes a lot of time

I ObfuscationI Packers

I Dynamic Analysis also takes a lot of time

I Multi-threaded malwareI Anti-debugger, anti-virtual machine, etc.

June 22, 2013 Jurriaan Bremer @skier t Haow do I sandbox?!?! Cuckoo Sandbox Internals 7 / 79

Page 8: Haow do I sandbox?!?! - RECON.CX Bremer...Haow do I sandbox?!?! Cuckoo Sandbox Internals Jurriaan Bremer @skier t Student (University of Amsterdam), Freelance Security Researcher June

Introduction - Sandboxing in General (1)

I Enter Sandboxes

I Automated Malware Analysis - handles all repetitive work

I Process thousands of samples in a reasonable time

I Generic methods for bypassing anti’s

I For the Client

I User friendly - anyone can use itI Setup once, use it for eternity

I For this step, see the manual :p

June 22, 2013 Jurriaan Bremer @skier t Haow do I sandbox?!?! Cuckoo Sandbox Internals 8 / 79

Page 9: Haow do I sandbox?!?! - RECON.CX Bremer...Haow do I sandbox?!?! Cuckoo Sandbox Internals Jurriaan Bremer @skier t Student (University of Amsterdam), Freelance Security Researcher June

Introduction - Sandboxing in General (2)

I Existing Solutions

I Closed Source

I Not 100% customizable

I Very expensive

I Enter Cuckoo Sandbox

I Entirely Open SourceI Free to use

June 22, 2013 Jurriaan Bremer @skier t Haow do I sandbox?!?! Cuckoo Sandbox Internals 9 / 79

Page 10: Haow do I sandbox?!?! - RECON.CX Bremer...Haow do I sandbox?!?! Cuckoo Sandbox Internals Jurriaan Bremer @skier t Student (University of Amsterdam), Freelance Security Researcher June

Introduction - Disadvantages of Sandboxing

I Environment could be detected

I Anti-sandboxI Randomize environment

I Can only randomize so many things

I Various limitations depending on the implementation

I We try our best to bypass these

I E.g., Hook Detection by Malware

I Reports still have to be read by somebody

June 22, 2013 Jurriaan Bremer @skier t Haow do I sandbox?!?! Cuckoo Sandbox Internals 10 / 79

Page 11: Haow do I sandbox?!?! - RECON.CX Bremer...Haow do I sandbox?!?! Cuckoo Sandbox Internals Jurriaan Bremer @skier t Student (University of Amsterdam), Freelance Security Researcher June

Cuckoo Sandbox Architecture

June 22, 2013 Jurriaan Bremer @skier t Haow do I sandbox?!?! Cuckoo Sandbox Internals 11 / 79

Page 12: Haow do I sandbox?!?! - RECON.CX Bremer...Haow do I sandbox?!?! Cuckoo Sandbox Internals Jurriaan Bremer @skier t Student (University of Amsterdam), Freelance Security Researcher June

Demonstration of analyzing a PDF exploit

I Demo showing the entire analysis process

I Quick look through the report

June 22, 2013 Jurriaan Bremer @skier t Haow do I sandbox?!?! Cuckoo Sandbox Internals 12 / 79

Page 13: Haow do I sandbox?!?! - RECON.CX Bremer...Haow do I sandbox?!?! Cuckoo Sandbox Internals Jurriaan Bremer @skier t Student (University of Amsterdam), Freelance Security Researcher June

Cuckoo Sandbox Internals

June 22, 2013 Jurriaan Bremer @skier t Haow do I sandbox?!?! Cuckoo Sandbox Internals 13 / 79

Page 14: Haow do I sandbox?!?! - RECON.CX Bremer...Haow do I sandbox?!?! Cuckoo Sandbox Internals Jurriaan Bremer @skier t Student (University of Amsterdam), Freelance Security Researcher June

Inside the Virtual Machine - Agent

I Listening Agent

I Accepts a connectionI Host connectsI Host sends zip file

I Agent unpacks zip file

I Python code

I Easily upgrade Cuckoo to a new version!

I Configuration filesI The sample

I Agent runs the Analyzer

I Which has been sent through the zip

June 22, 2013 Jurriaan Bremer @skier t Haow do I sandbox?!?! Cuckoo Sandbox Internals 14 / 79

Page 15: Haow do I sandbox?!?! - RECON.CX Bremer...Haow do I sandbox?!?! Cuckoo Sandbox Internals Jurriaan Bremer @skier t Student (University of Amsterdam), Freelance Security Researcher June

Inside the Virtual Machine - Analyzer

I Analyzer

I Initializes Cuckoo stuff

I Open IPC Channel (Named Pipe)I Some handwaving etc

I Dumps Configuration for the first Process

I Name of the Named PipeI IP and Port of the Result ServerI (Will come back to that later)

I Runs the specified Package

June 22, 2013 Jurriaan Bremer @skier t Haow do I sandbox?!?! Cuckoo Sandbox Internals 15 / 79

Page 16: Haow do I sandbox?!?! - RECON.CX Bremer...Haow do I sandbox?!?! Cuckoo Sandbox Internals Jurriaan Bremer @skier t Student (University of Amsterdam), Freelance Security Researcher June

Inside the Virtual Machine - Packages

I Package starts an application with commandline parameters

I Wrappers around CreateProcess(CREATE SUSPENDED)

I Packages for EXE, DLL, PDF, DOC, etc.

I Inject Cuckoo Monitor DLL into the process

I Using APC, QueueUserAPC(...)

I Resume main thread of the process

June 22, 2013 Jurriaan Bremer @skier t Haow do I sandbox?!?! Cuckoo Sandbox Internals 16 / 79

Page 17: Haow do I sandbox?!?! - RECON.CX Bremer...Haow do I sandbox?!?! Cuckoo Sandbox Internals Jurriaan Bremer @skier t Student (University of Amsterdam), Freelance Security Researcher June

Inside the Application - Cuckoo Monitor

I When resuming the main thread

I Cuckoo Monitor is executed first

I Due to the APC callback

I Initializes internals & installs API HooksI Notifies the Analyzer

I Through Named Pipes

I Real application is started

June 22, 2013 Jurriaan Bremer @skier t Haow do I sandbox?!?! Cuckoo Sandbox Internals 17 / 79

Page 18: Haow do I sandbox?!?! - RECON.CX Bremer...Haow do I sandbox?!?! Cuckoo Sandbox Internals Jurriaan Bremer @skier t Student (University of Amsterdam), Freelance Security Researcher June

Outside the Virtual Machine - Result Server

I Cuckoo Monitor logs directly to the Host, over TCP/IP

I IP and Port retrieved from the Configuration

I More stability than before, when we logged to a local file

I VM Crashes resulted in no logsI Now real-time results

June 22, 2013 Jurriaan Bremer @skier t Haow do I sandbox?!?! Cuckoo Sandbox Internals 18 / 79

Page 19: Haow do I sandbox?!?! - RECON.CX Bremer...Haow do I sandbox?!?! Cuckoo Sandbox Internals Jurriaan Bremer @skier t Student (University of Amsterdam), Freelance Security Researcher June

So, what now?

I We’ve covered the basics

I Useful for single-process stuff

I What’s next?

June 22, 2013 Jurriaan Bremer @skier t Haow do I sandbox?!?! Cuckoo Sandbox Internals 19 / 79

Page 20: Haow do I sandbox?!?! - RECON.CX Bremer...Haow do I sandbox?!?! Cuckoo Sandbox Internals Jurriaan Bremer @skier t Student (University of Amsterdam), Freelance Security Researcher June

More Advanced Malware (1)

I Some samples run new processes

I RunPE, for PackersI Internet ExploderˆWExplorer for URLs

I Some malware injects into other processes

I Explorer.exe Injection to evade FirewallsI Banking Trojans

June 22, 2013 Jurriaan Bremer @skier t Haow do I sandbox?!?! Cuckoo Sandbox Internals 20 / 79

Page 21: Haow do I sandbox?!?! - RECON.CX Bremer...Haow do I sandbox?!?! Cuckoo Sandbox Internals Jurriaan Bremer @skier t Student (University of Amsterdam), Freelance Security Researcher June

Child Process Injection

Before the new Process is executed, we want to inject CuckooMonitor.

I Cuckoo Monitor notifies Analyzer

I Asks to be injected into the target processI Analyzer dumps configuration fileI Injection using APC

June 22, 2013 Jurriaan Bremer @skier t Haow do I sandbox?!?! Cuckoo Sandbox Internals 21 / 79

Page 22: Haow do I sandbox?!?! - RECON.CX Bremer...Haow do I sandbox?!?! Cuckoo Sandbox Internals Jurriaan Bremer @skier t Student (University of Amsterdam), Freelance Security Researcher June

Child Injection

June 22, 2013 Jurriaan Bremer @skier t Haow do I sandbox?!?! Cuckoo Sandbox Internals 22 / 79

Page 23: Haow do I sandbox?!?! - RECON.CX Bremer...Haow do I sandbox?!?! Cuckoo Sandbox Internals Jurriaan Bremer @skier t Student (University of Amsterdam), Freelance Security Researcher June

Child Injection

June 22, 2013 Jurriaan Bremer @skier t Haow do I sandbox?!?! Cuckoo Sandbox Internals 23 / 79

Page 24: Haow do I sandbox?!?! - RECON.CX Bremer...Haow do I sandbox?!?! Cuckoo Sandbox Internals Jurriaan Bremer @skier t Student (University of Amsterdam), Freelance Security Researcher June

Child Injection

June 22, 2013 Jurriaan Bremer @skier t Haow do I sandbox?!?! Cuckoo Sandbox Internals 24 / 79

Page 25: Haow do I sandbox?!?! - RECON.CX Bremer...Haow do I sandbox?!?! Cuckoo Sandbox Internals Jurriaan Bremer @skier t Student (University of Amsterdam), Freelance Security Researcher June

Child Injection

June 22, 2013 Jurriaan Bremer @skier t Haow do I sandbox?!?! Cuckoo Sandbox Internals 25 / 79

Page 26: Haow do I sandbox?!?! - RECON.CX Bremer...Haow do I sandbox?!?! Cuckoo Sandbox Internals Jurriaan Bremer @skier t Student (University of Amsterdam), Freelance Security Researcher June

Child Injection

June 22, 2013 Jurriaan Bremer @skier t Haow do I sandbox?!?! Cuckoo Sandbox Internals 26 / 79

Page 27: Haow do I sandbox?!?! - RECON.CX Bremer...Haow do I sandbox?!?! Cuckoo Sandbox Internals Jurriaan Bremer @skier t Student (University of Amsterdam), Freelance Security Researcher June

Child Injection

June 22, 2013 Jurriaan Bremer @skier t Haow do I sandbox?!?! Cuckoo Sandbox Internals 27 / 79

Page 28: Haow do I sandbox?!?! - RECON.CX Bremer...Haow do I sandbox?!?! Cuckoo Sandbox Internals Jurriaan Bremer @skier t Student (University of Amsterdam), Freelance Security Researcher June

Child Injection

June 22, 2013 Jurriaan Bremer @skier t Haow do I sandbox?!?! Cuckoo Sandbox Internals 28 / 79

Page 29: Haow do I sandbox?!?! - RECON.CX Bremer...Haow do I sandbox?!?! Cuckoo Sandbox Internals Jurriaan Bremer @skier t Student (University of Amsterdam), Freelance Security Researcher June

Child Injection

June 22, 2013 Jurriaan Bremer @skier t Haow do I sandbox?!?! Cuckoo Sandbox Internals 29 / 79

Page 30: Haow do I sandbox?!?! - RECON.CX Bremer...Haow do I sandbox?!?! Cuckoo Sandbox Internals Jurriaan Bremer @skier t Student (University of Amsterdam), Freelance Security Researcher June

Child Injection

June 22, 2013 Jurriaan Bremer @skier t Haow do I sandbox?!?! Cuckoo Sandbox Internals 30 / 79

Page 31: Haow do I sandbox?!?! - RECON.CX Bremer...Haow do I sandbox?!?! Cuckoo Sandbox Internals Jurriaan Bremer @skier t Student (University of Amsterdam), Freelance Security Researcher June

Process Injection

Before a sample injects and executes code into another process, wealso want to inject Cuckoo Monitor.

Process Injection is similar to Child Injection, except for a fewsteps.

I No APC, but CreateRemoteThread(...)

I Can’t guarantee APC finishes in time

I Entirely inject Cuckoo Monitor before resuming execution

I For Child Processes

June 22, 2013 Jurriaan Bremer @skier t Haow do I sandbox?!?! Cuckoo Sandbox Internals 31 / 79

Page 32: Haow do I sandbox?!?! - RECON.CX Bremer...Haow do I sandbox?!?! Cuckoo Sandbox Internals Jurriaan Bremer @skier t Student (University of Amsterdam), Freelance Security Researcher June

Process Injection

June 22, 2013 Jurriaan Bremer @skier t Haow do I sandbox?!?! Cuckoo Sandbox Internals 32 / 79

Page 33: Haow do I sandbox?!?! - RECON.CX Bremer...Haow do I sandbox?!?! Cuckoo Sandbox Internals Jurriaan Bremer @skier t Student (University of Amsterdam), Freelance Security Researcher June

Process Injection

June 22, 2013 Jurriaan Bremer @skier t Haow do I sandbox?!?! Cuckoo Sandbox Internals 33 / 79

Page 34: Haow do I sandbox?!?! - RECON.CX Bremer...Haow do I sandbox?!?! Cuckoo Sandbox Internals Jurriaan Bremer @skier t Student (University of Amsterdam), Freelance Security Researcher June

Process Injection

June 22, 2013 Jurriaan Bremer @skier t Haow do I sandbox?!?! Cuckoo Sandbox Internals 34 / 79

Page 35: Haow do I sandbox?!?! - RECON.CX Bremer...Haow do I sandbox?!?! Cuckoo Sandbox Internals Jurriaan Bremer @skier t Student (University of Amsterdam), Freelance Security Researcher June

Process Injection

June 22, 2013 Jurriaan Bremer @skier t Haow do I sandbox?!?! Cuckoo Sandbox Internals 35 / 79

Page 36: Haow do I sandbox?!?! - RECON.CX Bremer...Haow do I sandbox?!?! Cuckoo Sandbox Internals Jurriaan Bremer @skier t Student (University of Amsterdam), Freelance Security Researcher June

Process Injection

June 22, 2013 Jurriaan Bremer @skier t Haow do I sandbox?!?! Cuckoo Sandbox Internals 36 / 79

Page 37: Haow do I sandbox?!?! - RECON.CX Bremer...Haow do I sandbox?!?! Cuckoo Sandbox Internals Jurriaan Bremer @skier t Student (University of Amsterdam), Freelance Security Researcher June

Process Injection

June 22, 2013 Jurriaan Bremer @skier t Haow do I sandbox?!?! Cuckoo Sandbox Internals 37 / 79

Page 38: Haow do I sandbox?!?! - RECON.CX Bremer...Haow do I sandbox?!?! Cuckoo Sandbox Internals Jurriaan Bremer @skier t Student (University of Amsterdam), Freelance Security Researcher June

Process Injection

June 22, 2013 Jurriaan Bremer @skier t Haow do I sandbox?!?! Cuckoo Sandbox Internals 38 / 79

Page 39: Haow do I sandbox?!?! - RECON.CX Bremer...Haow do I sandbox?!?! Cuckoo Sandbox Internals Jurriaan Bremer @skier t Student (University of Amsterdam), Freelance Security Researcher June

Process Injection

June 22, 2013 Jurriaan Bremer @skier t Haow do I sandbox?!?! Cuckoo Sandbox Internals 39 / 79

Page 40: Haow do I sandbox?!?! - RECON.CX Bremer...Haow do I sandbox?!?! Cuckoo Sandbox Internals Jurriaan Bremer @skier t Student (University of Amsterdam), Freelance Security Researcher June

Process Injection

June 22, 2013 Jurriaan Bremer @skier t Haow do I sandbox?!?! Cuckoo Sandbox Internals 40 / 79

Page 41: Haow do I sandbox?!?! - RECON.CX Bremer...Haow do I sandbox?!?! Cuckoo Sandbox Internals Jurriaan Bremer @skier t Student (University of Amsterdam), Freelance Security Researcher June

Process Injection

June 22, 2013 Jurriaan Bremer @skier t Haow do I sandbox?!?! Cuckoo Sandbox Internals 41 / 79

Page 42: Haow do I sandbox?!?! - RECON.CX Bremer...Haow do I sandbox?!?! Cuckoo Sandbox Internals Jurriaan Bremer @skier t Student (University of Amsterdam), Freelance Security Researcher June

That said..

Figure : What the malware thinks it’s doing.

June 22, 2013 Jurriaan Bremer @skier t Haow do I sandbox?!?! Cuckoo Sandbox Internals 42 / 79

Page 43: Haow do I sandbox?!?! - RECON.CX Bremer...Haow do I sandbox?!?! Cuckoo Sandbox Internals Jurriaan Bremer @skier t Student (University of Amsterdam), Freelance Security Researcher June

That said..

Figure : What Cuckoo Sandbox thinks it’s doing.

June 22, 2013 Jurriaan Bremer @skier t Haow do I sandbox?!?! Cuckoo Sandbox Internals 43 / 79

Page 44: Haow do I sandbox?!?! - RECON.CX Bremer...Haow do I sandbox?!?! Cuckoo Sandbox Internals Jurriaan Bremer @skier t Student (University of Amsterdam), Freelance Security Researcher June

That said..

Figure : What really happens.

June 22, 2013 Jurriaan Bremer @skier t Haow do I sandbox?!?! Cuckoo Sandbox Internals 44 / 79

Page 45: Haow do I sandbox?!?! - RECON.CX Bremer...Haow do I sandbox?!?! Cuckoo Sandbox Internals Jurriaan Bremer @skier t Student (University of Amsterdam), Freelance Security Researcher June

API Hooking - Overview

I Core functionality of Cuckoo Monitor

I Cuckoo Monitor logs about 170 APIs

I We’re adding APIs where needed

I Hooks lowest level APIs without loosing context

I Not CreateProcessAI Not CreateProcessWI Not CreateProcessInternalAI But CreateProcessInternalW

I However, we also hook higher-level APIs

I ShellExecute (supports protocol handlers, URLs, ..)I system (can pipe multiple processes)

June 22, 2013 Jurriaan Bremer @skier t Haow do I sandbox?!?! Cuckoo Sandbox Internals 45 / 79

Page 46: Haow do I sandbox?!?! - RECON.CX Bremer...Haow do I sandbox?!?! Cuckoo Sandbox Internals Jurriaan Bremer @skier t Student (University of Amsterdam), Freelance Security Researcher June

API Hooking - Trampolines (1)

I Redirect execution using trampolines

I Create a trampolineI Patch the function

http://jbremer.org/x86-api-hooking-demystified/

June 22, 2013 Jurriaan Bremer @skier t Haow do I sandbox?!?! Cuckoo Sandbox Internals 46 / 79

Page 47: Haow do I sandbox?!?! - RECON.CX Bremer...Haow do I sandbox?!?! Cuckoo Sandbox Internals Jurriaan Bremer @skier t Student (University of Amsterdam), Freelance Security Researcher June

API Hooking - Trampolines (2)

Figure : Trampolines are really basic.

June 22, 2013 Jurriaan Bremer @skier t Haow do I sandbox?!?! Cuckoo Sandbox Internals 47 / 79

Page 48: Haow do I sandbox?!?! - RECON.CX Bremer...Haow do I sandbox?!?! Cuckoo Sandbox Internals Jurriaan Bremer @skier t Student (University of Amsterdam), Freelance Security Researcher June

API Hooking - Trampolines (3)

Figure : A day in the life of.. a hooked API.

June 22, 2013 Jurriaan Bremer @skier t Haow do I sandbox?!?! Cuckoo Sandbox Internals 48 / 79

Page 49: Haow do I sandbox?!?! - RECON.CX Bremer...Haow do I sandbox?!?! Cuckoo Sandbox Internals Jurriaan Bremer @skier t Student (University of Amsterdam), Freelance Security Researcher June

API Hooking - Avoiding Hook Recursion (1)

Figure : Hello Hook?

June 22, 2013 Jurriaan Bremer @skier t Haow do I sandbox?!?! Cuckoo Sandbox Internals 49 / 79

Page 50: Haow do I sandbox?!?! - RECON.CX Bremer...Haow do I sandbox?!?! Cuckoo Sandbox Internals Jurriaan Bremer @skier t Student (University of Amsterdam), Freelance Security Researcher June

API Hooking - Avoiding Hook Recursion (2)

I The first hooked API call is interesting, ignore the others.

I Sounds easy enough right?

I Around 170 hooks.

I Can’t add code to each hook.

I We’re not coding for our local University.

I Solution: Transparently in the hooking mechanism.

June 22, 2013 Jurriaan Bremer @skier t Haow do I sandbox?!?! Cuckoo Sandbox Internals 50 / 79

Page 51: Haow do I sandbox?!?! - RECON.CX Bremer...Haow do I sandbox?!?! Cuckoo Sandbox Internals Jurriaan Bremer @skier t Student (University of Amsterdam), Freelance Security Researcher June

API Hooking - Avoiding Hook Recursion (3)

I We need a counter

I Zero -> execute the hook handlerI Not Zero -> ignore this API call

I Let’s go back to WriteFile()

I count = 0

I Increase counterI Execute the Hook Handler

I count = 1

I Ignore the Hook Handler

June 22, 2013 Jurriaan Bremer @skier t Haow do I sandbox?!?! Cuckoo Sandbox Internals 51 / 79

Page 52: Haow do I sandbox?!?! - RECON.CX Bremer...Haow do I sandbox?!?! Cuckoo Sandbox Internals Jurriaan Bremer @skier t Student (University of Amsterdam), Freelance Security Researcher June

API Hooking - Avoiding Hook Recursion (4)

I We need one counter per thread

I Thread Local Storage it is

I Increase it before executing the hook handler

I Decrease it after returning from the hook handler

I Oh, we have to run our code after the hook handler returnsI So we have to patch the return addressI Oh, we have to store the original return address temporarily

I TLS to the rescue?

I More on this later.

June 22, 2013 Jurriaan Bremer @skier t Haow do I sandbox?!?! Cuckoo Sandbox Internals 52 / 79

Page 53: Haow do I sandbox?!?! - RECON.CX Bremer...Haow do I sandbox?!?! Cuckoo Sandbox Internals Jurriaan Bremer @skier t Student (University of Amsterdam), Freelance Security Researcher June

API Hooking - Get Last Error (1)

I Thread-specific Error Value, equivalent to errno

I Let’s assume CreateProcessInternalW() returns failure

I However, logging the failure is successfulI Great!

I Last Error is stored in TLS as well

I After calling the trampoline function, we copy the Last Error

I (Right before execution goes back to the hook handler)

June 22, 2013 Jurriaan Bremer @skier t Haow do I sandbox?!?! Cuckoo Sandbox Internals 53 / 79

Page 54: Haow do I sandbox?!?! - RECON.CX Bremer...Haow do I sandbox?!?! Cuckoo Sandbox Internals Jurriaan Bremer @skier t Student (University of Amsterdam), Freelance Security Researcher June

API Hooking - Get Last Error (2)

Figure : Example CreateProcessInternalW hook.

June 22, 2013 Jurriaan Bremer @skier t Haow do I sandbox?!?! Cuckoo Sandbox Internals 54 / 79

Page 55: Haow do I sandbox?!?! - RECON.CX Bremer...Haow do I sandbox?!?! Cuckoo Sandbox Internals Jurriaan Bremer @skier t Student (University of Amsterdam), Freelance Security Researcher June

API Hooking - Get Last Error (3)

I We have to temporarily backup the Last Error

I Until the function returns, where we restore it

I TLS anyone?

June 22, 2013 Jurriaan Bremer @skier t Haow do I sandbox?!?! Cuckoo Sandbox Internals 55 / 79

Page 56: Haow do I sandbox?!?! - RECON.CX Bremer...Haow do I sandbox?!?! Cuckoo Sandbox Internals Jurriaan Bremer @skier t Student (University of Amsterdam), Freelance Security Researcher June

API Hooking - Special Hooks (1)

I What about our Advanced Persistent Hooks?

I Some hook handlers should always be executed

I Special CreateProcessInternalW()

I Somebody has to inject those system()’d processes

I (The normal CreateProcessInternalW() only logs)

June 22, 2013 Jurriaan Bremer @skier t Haow do I sandbox?!?! Cuckoo Sandbox Internals 56 / 79

Page 57: Haow do I sandbox?!?! - RECON.CX Bremer...Haow do I sandbox?!?! Cuckoo Sandbox Internals Jurriaan Bremer @skier t Student (University of Amsterdam), Freelance Security Researcher June

API Hooking - Special Hooks (2)

I Treated as another hook

I Special hook hooks the target function first

I Normal hook hooks the Special hooks’ hook (oboy)

I Special hooks keeps its own data (Last Error, count, . . . )

June 22, 2013 Jurriaan Bremer @skier t Haow do I sandbox?!?! Cuckoo Sandbox Internals 57 / 79

Page 58: Haow do I sandbox?!?! - RECON.CX Bremer...Haow do I sandbox?!?! Cuckoo Sandbox Internals Jurriaan Bremer @skier t Student (University of Amsterdam), Freelance Security Researcher June

API Hooking - Result

Please enter Brainfart mode now.

The following represents a system() hook as if it were the onlyhook.

June 22, 2013 Jurriaan Bremer @skier t Haow do I sandbox?!?! Cuckoo Sandbox Internals 58 / 79

Page 59: Haow do I sandbox?!?! - RECON.CX Bremer...Haow do I sandbox?!?! Cuckoo Sandbox Internals Jurriaan Bremer @skier t Student (University of Amsterdam), Freelance Security Researcher June

API Hooking - Result

June 22, 2013 Jurriaan Bremer @skier t Haow do I sandbox?!?! Cuckoo Sandbox Internals 59 / 79

Page 60: Haow do I sandbox?!?! - RECON.CX Bremer...Haow do I sandbox?!?! Cuckoo Sandbox Internals Jurriaan Bremer @skier t Student (University of Amsterdam), Freelance Security Researcher June

API Hooking - Result

June 22, 2013 Jurriaan Bremer @skier t Haow do I sandbox?!?! Cuckoo Sandbox Internals 60 / 79

Page 61: Haow do I sandbox?!?! - RECON.CX Bremer...Haow do I sandbox?!?! Cuckoo Sandbox Internals Jurriaan Bremer @skier t Student (University of Amsterdam), Freelance Security Researcher June

API Hooking - Result

June 22, 2013 Jurriaan Bremer @skier t Haow do I sandbox?!?! Cuckoo Sandbox Internals 61 / 79

Page 62: Haow do I sandbox?!?! - RECON.CX Bremer...Haow do I sandbox?!?! Cuckoo Sandbox Internals Jurriaan Bremer @skier t Student (University of Amsterdam), Freelance Security Researcher June

API Hooking - Result

June 22, 2013 Jurriaan Bremer @skier t Haow do I sandbox?!?! Cuckoo Sandbox Internals 62 / 79

Page 63: Haow do I sandbox?!?! - RECON.CX Bremer...Haow do I sandbox?!?! Cuckoo Sandbox Internals Jurriaan Bremer @skier t Student (University of Amsterdam), Freelance Security Researcher June

API Hooking - Result

June 22, 2013 Jurriaan Bremer @skier t Haow do I sandbox?!?! Cuckoo Sandbox Internals 63 / 79

Page 64: Haow do I sandbox?!?! - RECON.CX Bremer...Haow do I sandbox?!?! Cuckoo Sandbox Internals Jurriaan Bremer @skier t Student (University of Amsterdam), Freelance Security Researcher June

API Hooking - Result

June 22, 2013 Jurriaan Bremer @skier t Haow do I sandbox?!?! Cuckoo Sandbox Internals 64 / 79

Page 65: Haow do I sandbox?!?! - RECON.CX Bremer...Haow do I sandbox?!?! Cuckoo Sandbox Internals Jurriaan Bremer @skier t Student (University of Amsterdam), Freelance Security Researcher June

API Hooking - Result

June 22, 2013 Jurriaan Bremer @skier t Haow do I sandbox?!?! Cuckoo Sandbox Internals 65 / 79

Page 66: Haow do I sandbox?!?! - RECON.CX Bremer...Haow do I sandbox?!?! Cuckoo Sandbox Internals Jurriaan Bremer @skier t Student (University of Amsterdam), Freelance Security Researcher June

API Hooking - Result

June 22, 2013 Jurriaan Bremer @skier t Haow do I sandbox?!?! Cuckoo Sandbox Internals 66 / 79

Page 67: Haow do I sandbox?!?! - RECON.CX Bremer...Haow do I sandbox?!?! Cuckoo Sandbox Internals Jurriaan Bremer @skier t Student (University of Amsterdam), Freelance Security Researcher June

API Hooking - Result

June 22, 2013 Jurriaan Bremer @skier t Haow do I sandbox?!?! Cuckoo Sandbox Internals 67 / 79

Page 68: Haow do I sandbox?!?! - RECON.CX Bremer...Haow do I sandbox?!?! Cuckoo Sandbox Internals Jurriaan Bremer @skier t Student (University of Amsterdam), Freelance Security Researcher June

API Hooking - Result

June 22, 2013 Jurriaan Bremer @skier t Haow do I sandbox?!?! Cuckoo Sandbox Internals 68 / 79

Page 69: Haow do I sandbox?!?! - RECON.CX Bremer...Haow do I sandbox?!?! Cuckoo Sandbox Internals Jurriaan Bremer @skier t Student (University of Amsterdam), Freelance Security Researcher June

API Hooking - Result

June 22, 2013 Jurriaan Bremer @skier t Haow do I sandbox?!?! Cuckoo Sandbox Internals 69 / 79

Page 70: Haow do I sandbox?!?! - RECON.CX Bremer...Haow do I sandbox?!?! Cuckoo Sandbox Internals Jurriaan Bremer @skier t Student (University of Amsterdam), Freelance Security Researcher June

API Hooking - Result

June 22, 2013 Jurriaan Bremer @skier t Haow do I sandbox?!?! Cuckoo Sandbox Internals 70 / 79

Page 71: Haow do I sandbox?!?! - RECON.CX Bremer...Haow do I sandbox?!?! Cuckoo Sandbox Internals Jurriaan Bremer @skier t Student (University of Amsterdam), Freelance Security Researcher June

API Hooking - Result

June 22, 2013 Jurriaan Bremer @skier t Haow do I sandbox?!?! Cuckoo Sandbox Internals 71 / 79

Page 72: Haow do I sandbox?!?! - RECON.CX Bremer...Haow do I sandbox?!?! Cuckoo Sandbox Internals Jurriaan Bremer @skier t Student (University of Amsterdam), Freelance Security Researcher June

API Hooking - Result

June 22, 2013 Jurriaan Bremer @skier t Haow do I sandbox?!?! Cuckoo Sandbox Internals 72 / 79

Page 73: Haow do I sandbox?!?! - RECON.CX Bremer...Haow do I sandbox?!?! Cuckoo Sandbox Internals Jurriaan Bremer @skier t Student (University of Amsterdam), Freelance Security Researcher June

Results

I What kind of logs are we interested in?

I Process ManagementI Thread ManagementI RegistryI File Input /OutputI SocketsI ..

I Signatures & Reporting modules

June 22, 2013 Jurriaan Bremer @skier t Haow do I sandbox?!?! Cuckoo Sandbox Internals 73 / 79

Page 74: Haow do I sandbox?!?! - RECON.CX Bremer...Haow do I sandbox?!?! Cuckoo Sandbox Internals Jurriaan Bremer @skier t Student (University of Amsterdam), Freelance Security Researcher June

Work in Progress - Return Address Checking Module (1)

I Sometimes APIs are not relevant

I When injected into another process

I Check Return Address in the Stack Trace

I Nothing interesting?

I Don’t log it

I As usual, sounds easier than it is

I Needs Taint Data

I One process can write to another process

June 22, 2013 Jurriaan Bremer @skier t Haow do I sandbox?!?! Cuckoo Sandbox Internals 74 / 79

Page 75: Haow do I sandbox?!?! - RECON.CX Bremer...Haow do I sandbox?!?! Cuckoo Sandbox Internals Jurriaan Bremer @skier t Student (University of Amsterdam), Freelance Security Researcher June

Work in Progress - Return Address Checking Module (2)

I Inter Process Communication required

I VirtualAllocEx/VirtualFreeEx/.. go through the Analyzer

I CreateRemoteThread(&LoadLibraryA, "evil.dll")

I &LoadLibraryA is now interesting

June 22, 2013 Jurriaan Bremer @skier t Haow do I sandbox?!?! Cuckoo Sandbox Internals 75 / 79

Page 76: Haow do I sandbox?!?! - RECON.CX Bremer...Haow do I sandbox?!?! Cuckoo Sandbox Internals Jurriaan Bremer @skier t Student (University of Amsterdam), Freelance Security Researcher June

Work in Progress - Return Address Checking Module (3)

We were testing this code earlier, but got generic Cuckoo errors.

I Segfaults on NtClose/VirtualFreeEx

I Unrelated to this moduleI However, necessary

I Once fixed, should work.

June 22, 2013 Jurriaan Bremer @skier t Haow do I sandbox?!?! Cuckoo Sandbox Internals 76 / 79

Page 77: Haow do I sandbox?!?! - RECON.CX Bremer...Haow do I sandbox?!?! Cuckoo Sandbox Internals Jurriaan Bremer @skier t Student (University of Amsterdam), Freelance Security Researcher June

Work in Progress - StubDLL (1)

Some malware checks against hooks for common functions.if(*(uint8 t *) addr == 0xe9) { ... }

I StubDLL doesn’t hook a function

I It generates a Shadow DLL in-memory

I Trampolines for every exported function

I Restores context and jumps to original function

I Prologue is not altered

June 22, 2013 Jurriaan Bremer @skier t Haow do I sandbox?!?! Cuckoo Sandbox Internals 77 / 79

Page 78: Haow do I sandbox?!?! - RECON.CX Bremer...Haow do I sandbox?!?! Cuckoo Sandbox Internals Jurriaan Bremer @skier t Student (University of Amsterdam), Freelance Security Researcher June

Work in Progress - StubDLL (2)

Figure : Simple old versus new system.

June 22, 2013 Jurriaan Bremer @skier t Haow do I sandbox?!?! Cuckoo Sandbox Internals 78 / 79

Page 79: Haow do I sandbox?!?! - RECON.CX Bremer...Haow do I sandbox?!?! Cuckoo Sandbox Internals Jurriaan Bremer @skier t Student (University of Amsterdam), Freelance Security Researcher June

Questions?

.. :)

June 22, 2013 Jurriaan Bremer @skier t Haow do I sandbox?!?! Cuckoo Sandbox Internals 79 / 79