39
The Binary Whisperer Asking binaries about their intentions

Asking binaries about their intentions - microsoftrnd.co.ilmicrosoftrnd.co.il/Press Kit/BlueHat IL Decks/MarionMarschalek.pdf · Multiple execution paths Common sandboxes are fairly

  • Upload
    lelien

  • View
    216

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Asking binaries about their intentions - microsoftrnd.co.ilmicrosoftrnd.co.il/Press Kit/BlueHat IL Decks/MarionMarschalek.pdf · Multiple execution paths Common sandboxes are fairly

The Binary WhispererAsking binaries about their

intentions

Page 2: Asking binaries about their intentions - microsoftrnd.co.ilmicrosoftrnd.co.il/Press Kit/BlueHat IL Decks/MarionMarschalek.pdf · Multiple execution paths Common sandboxes are fairly

Marion [email protected]

@pinkflawd

Page 3: Asking binaries about their intentions - microsoftrnd.co.ilmicrosoftrnd.co.il/Press Kit/BlueHat IL Decks/MarionMarschalek.pdf · Multiple execution paths Common sandboxes are fairly

Malware AnalystsAnd their issues…

Page 4: Asking binaries about their intentions - microsoftrnd.co.ilmicrosoftrnd.co.il/Press Kit/BlueHat IL Decks/MarionMarschalek.pdf · Multiple execution paths Common sandboxes are fairly

Malware analysis and its issuesThe average malicious binary is not interesting

- Repetitive code- Repetitive techniques- Self-taught developers- Limited interests

Wouldn‘t it be neat to see at one glance roughlywhat a binary is about?

Page 5: Asking binaries about their intentions - microsoftrnd.co.ilmicrosoftrnd.co.il/Press Kit/BlueHat IL Decks/MarionMarschalek.pdf · Multiple execution paths Common sandboxes are fairly

Limitations of contemporaryautomated malware analysis

Obfuscation

Self-modifying code

Byte code and virtual machines

Dynamic API loading

Asynchronous code

Object oriented code

Sandbox detection

Missing dependencies/components

Need for interaction

Time based evasion

Missing input values

Multiple execution paths

Incompatibilities

Static Dynamic

Page 6: Asking binaries about their intentions - microsoftrnd.co.ilmicrosoftrnd.co.il/Press Kit/BlueHat IL Decks/MarionMarschalek.pdf · Multiple execution paths Common sandboxes are fairly

Multiple execution pathsCommon sandboxes are fairly limited in their analysis capabilitiesof multi-purpose malware

In almost all cases they are totally useless for

analyzing benign binaries

Packer /Evasion

Setup Call home

might or might notbe analyzed

Page 7: Asking binaries about their intentions - microsoftrnd.co.ilmicrosoftrnd.co.il/Press Kit/BlueHat IL Decks/MarionMarschalek.pdf · Multiple execution paths Common sandboxes are fairly

Wicked plan…Look at all areas of a binary

API callsStringsStructure

GraphsRadare2

Page 8: Asking binaries about their intentions - microsoftrnd.co.ilmicrosoftrnd.co.il/Press Kit/BlueHat IL Decks/MarionMarschalek.pdf · Multiple execution paths Common sandboxes are fairly
Page 9: Asking binaries about their intentions - microsoftrnd.co.ilmicrosoftrnd.co.il/Press Kit/BlueHat IL Decks/MarionMarschalek.pdf · Multiple execution paths Common sandboxes are fairly

Indicators for packersbenign

targeted random

EP section name abnormal

EP section entropy too high/low

Use of TLS sections

API calls / KB ratio

Section count too low

Imphash missing

Page 10: Asking binaries about their intentions - microsoftrnd.co.ilmicrosoftrnd.co.il/Press Kit/BlueHat IL Decks/MarionMarschalek.pdf · Multiple execution paths Common sandboxes are fairly

No big dataNo clusteringFor sure no machinelearningNo binary diffingNo serious mathNo software licenses ^^

Help in static analysis

Persisting of analysis results

Small to medium scale sample sets

Tool thats easy to handle andextendable

Metrics

Creative indicator extraction

Page 11: Asking binaries about their intentions - microsoftrnd.co.ilmicrosoftrnd.co.il/Press Kit/BlueHat IL Decks/MarionMarschalek.pdf · Multiple execution paths Common sandboxes are fairly
Page 12: Asking binaries about their intentions - microsoftrnd.co.ilmicrosoftrnd.co.il/Press Kit/BlueHat IL Decks/MarionMarschalek.pdf · Multiple execution paths Common sandboxes are fairly

So yeah.. I used radare2

Radare2 accessed through r2pipe, scripted from Python

Available for free

Disassemble (and assemble for) many different architectures

Debug with local native and remote debuggers (gdb, rap, webui, r2pipe, winedbg, windbg)

Run on Linux, *BSD, Windows, OSX, Android, iOS, Solaris and Haiku

Perform forensics on filesystems and data carving

Be scripted in Python, Javascript, Go and more

Support collaborative analysis using the embedded webserver

Visualize data structures of several file types

Patch programs to uncover new features or fix vulnerabilities

Use powerful analysis capabilities to speed up reversing

Aid in software exploitation

Page 13: Asking binaries about their intentions - microsoftrnd.co.ilmicrosoftrnd.co.il/Press Kit/BlueHat IL Decks/MarionMarschalek.pdf · Multiple execution paths Common sandboxes are fairly

ScalableScriptableGUI-freeGreat supportQuick bug fixes

With splendid reasoning

Can analyze entire binariesProvides

- functions and cross references- symbols- strings- basic PE information

Page 14: Asking binaries about their intentions - microsoftrnd.co.ilmicrosoftrnd.co.il/Press Kit/BlueHat IL Decks/MarionMarschalek.pdf · Multiple execution paths Common sandboxes are fairly

Color merainbow ^^

Page 15: Asking binaries about their intentions - microsoftrnd.co.ilmicrosoftrnd.co.il/Press Kit/BlueHat IL Decks/MarionMarschalek.pdf · Multiple execution paths Common sandboxes are fairly

Many thanks topancake, maijin & friends <3

Page 16: Asking binaries about their intentions - microsoftrnd.co.ilmicrosoftrnd.co.il/Press Kit/BlueHat IL Decks/MarionMarschalek.pdf · Multiple execution paths Common sandboxes are fairly

GraphityPython project built on

radare2 / r2pipeNetworkXpyplotpefileNeo4j

graphity

graphityOut

graphityFunc

graphityUtil

Published athttps://github.com/GDATAAdvancedAnalytics/r2graphity

Page 17: Asking binaries about their intentions - microsoftrnd.co.ilmicrosoftrnd.co.il/Press Kit/BlueHat IL Decks/MarionMarschalek.pdf · Multiple execution paths Common sandboxes are fairly

Binary Cartography

Function call graphsFunction cross references within code section

References to function offsetsReferences to code w/o functionOutside executable section(s)

Nodes: functions

Edges: calls, handler functions

Page 18: Asking binaries about their intentions - microsoftrnd.co.ilmicrosoftrnd.co.il/Press Kit/BlueHat IL Decks/MarionMarschalek.pdf · Multiple execution paths Common sandboxes are fairly

StringsString parsingEvaluation: ASCII, cross references,character frequency analysis

String list detectionstring length + alingmentstring following w/o cross reference

Fitting strings into the graph

Page 19: Asking binaries about their intentions - microsoftrnd.co.ilmicrosoftrnd.co.il/Press Kit/BlueHat IL Decks/MarionMarschalek.pdf · Multiple execution paths Common sandboxes are fairly

APIsCross references on symbols

Indirect calls- parsing for mov/lea- disassembling further- call and jmp considered xref

Thunk pruning

Dynamic loading

Page 20: Asking binaries about their intentions - microsoftrnd.co.ilmicrosoftrnd.co.il/Press Kit/BlueHat IL Decks/MarionMarschalek.pdf · Multiple execution paths Common sandboxes are fairly

Callbacks / Handler Functions„Top-down“

Disassemble upwards

Check the push instructions for function cross references

Add edge and tag

Currently only CreateThread and SetWindowsHookEx, becausecontext

„Bottom-up“

Sweep for nodes without inbound edgesCheck for cross references within functionsAdd edge and tag

Page 21: Asking binaries about their intentions - microsoftrnd.co.ilmicrosoftrnd.co.il/Press Kit/BlueHat IL Decks/MarionMarschalek.pdf · Multiple execution paths Common sandboxes are fairly

STUFFVisualizationBehaviorMetricsGraphDB

Page 22: Asking binaries about their intentions - microsoftrnd.co.ilmicrosoftrnd.co.il/Press Kit/BlueHat IL Decks/MarionMarschalek.pdf · Multiple execution paths Common sandboxes are fairly

Backdoor: Win32/Redsip.A

https://github.com/citizenlab/malware-indicators/blob/master/file-indicators.csv

Page 23: Asking binaries about their intentions - microsoftrnd.co.ilmicrosoftrnd.co.il/Press Kit/BlueHat IL Decks/MarionMarschalek.pdf · Multiple execution paths Common sandboxes are fairly

Thread handler function

C&C command parsing

Page 24: Asking binaries about their intentions - microsoftrnd.co.ilmicrosoftrnd.co.il/Press Kit/BlueHat IL Decks/MarionMarschalek.pdf · Multiple execution paths Common sandboxes are fairly

System shutdown feature

Writing to logfile

Who‘s Paul Pierce?!

Page 25: Asking binaries about their intentions - microsoftrnd.co.ilmicrosoftrnd.co.il/Press Kit/BlueHat IL Decks/MarionMarschalek.pdf · Multiple execution paths Common sandboxes are fairly
Page 26: Asking binaries about their intentions - microsoftrnd.co.ilmicrosoftrnd.co.il/Press Kit/BlueHat IL Decks/MarionMarschalek.pdf · Multiple execution paths Common sandboxes are fairly

Holistic viewNeeds human analystNot always feasible

So..

Page 27: Asking binaries about their intentions - microsoftrnd.co.ilmicrosoftrnd.co.il/Press Kit/BlueHat IL Decks/MarionMarschalek.pdf · Multiple execution paths Common sandboxes are fairly

Binary WhisperingAPI call gadgets

„pattern matching“ of APIs

Iterate nodes

Iterate neighbors

If feasible, further iterations

Problems:

-indirect function calls

-bigger call gadgets lowerhit chances

-human analyst to drawfinal conclusions

Page 28: Asking binaries about their intentions - microsoftrnd.co.ilmicrosoftrnd.co.il/Press Kit/BlueHat IL Decks/MarionMarschalek.pdf · Multiple execution paths Common sandboxes are fairly
Page 29: Asking binaries about their intentions - microsoftrnd.co.ilmicrosoftrnd.co.il/Press Kit/BlueHat IL Decks/MarionMarschalek.pdf · Multiple execution paths Common sandboxes are fairly

Backdoor: Win32/Redsip.A

Page 30: Asking binaries about their intentions - microsoftrnd.co.ilmicrosoftrnd.co.il/Press Kit/BlueHat IL Decks/MarionMarschalek.pdf · Multiple execution paths Common sandboxes are fairly

Random Dropper

Win32/Banito

Page 31: Asking binaries about their intentions - microsoftrnd.co.ilmicrosoftrnd.co.il/Press Kit/BlueHat IL Decks/MarionMarschalek.pdf · Multiple execution paths Common sandboxes are fairly

Packed / obfuscated binaries

Page 32: Asking binaries about their intentions - microsoftrnd.co.ilmicrosoftrnd.co.il/Press Kit/BlueHat IL Decks/MarionMarschalek.pdf · Multiple execution paths Common sandboxes are fairly

Some binariesgot _something_ to hide

Page 33: Asking binaries about their intentions - microsoftrnd.co.ilmicrosoftrnd.co.il/Press Kit/BlueHat IL Decks/MarionMarschalek.pdf · Multiple execution paths Common sandboxes are fairly

Why metrics?Measuring things is fun

Lack of metrics for sophistication

Lack of metrics for complexity

IOCs suck- they ain‘t no metrics that aren‘t cheaply tricked

Little ability to measure suspiciousness

Little ability to masure benign-ness

Page 34: Asking binaries about their intentions - microsoftrnd.co.ilmicrosoftrnd.co.il/Press Kit/BlueHat IL Decks/MarionMarschalek.pdf · Multiple execution paths Common sandboxes are fairly

Backdoor: Win32/Redsip.ARandom Info

Page 35: Asking binaries about their intentions - microsoftrnd.co.ilmicrosoftrnd.co.il/Press Kit/BlueHat IL Decks/MarionMarschalek.pdf · Multiple execution paths Common sandboxes are fairly

Graph Measurement

Numbers: simplified representation, allow for distancemeasurement, help finding outliers and anomalies

Page 36: Asking binaries about their intentions - microsoftrnd.co.ilmicrosoftrnd.co.il/Press Kit/BlueHat IL Decks/MarionMarschalek.pdf · Multiple execution paths Common sandboxes are fairly

Fat node detectionAlso called spaghetti code metric

interesting

awkward

interesting

Page 37: Asking binaries about their intentions - microsoftrnd.co.ilmicrosoftrnd.co.il/Press Kit/BlueHat IL Decks/MarionMarschalek.pdf · Multiple execution paths Common sandboxes are fairly

Math, FTWUseful for graph complexity evaluation

Page 38: Asking binaries about their intentions - microsoftrnd.co.ilmicrosoftrnd.co.il/Press Kit/BlueHat IL Decks/MarionMarschalek.pdf · Multiple execution paths Common sandboxes are fairly

Thank You

Page 39: Asking binaries about their intentions - microsoftrnd.co.ilmicrosoftrnd.co.il/Press Kit/BlueHat IL Decks/MarionMarschalek.pdf · Multiple execution paths Common sandboxes are fairly

Good Papers

„Jackdaw: Towards Automated Reverse Engineering of Large Datasets of Binaries“, Polino, Scorti, Maggi, Zanerohttps://iseclab.org/media/uploads/zotero/Polino%20et%20al_2015_Jackdaw.pdf

„Distributing the Reconstruction of High-Level Intermediate Representation forLarge Scale Malware Analysis“, Matrosov, Rodionov, Barbosa, Brancohttps://github.com/REhints/BlackHat_2015/blob/master/slides_BHUS_2015.pdf

„Automated Reverse Engineering“, Halvar Flakehttp://www.blackhat.com/presentations/win-usa-04/bh-win-04-flake.pdf