you are not hiding from me .net! - def con con china 1/def con... · office macros. powershell, a...

55
YOU ARE NOT HIDING FROM ME .NET!

Upload: others

Post on 19-Jul-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: YOU ARE NOT HIDING FROM ME .NET! - DEF CON CON China 1/DEF CON... · Office Macros. POWERSHELL, A HOT FAVOURITE Load shellcode into memory Call upon .NET API Call upon native API

YOU ARE NOT HIDING

FROM ME .NET!

Page 2: YOU ARE NOT HIDING FROM ME .NET! - DEF CON CON China 1/DEF CON... · Office Macros. POWERSHELL, A HOT FAVOURITE Load shellcode into memory Call upon .NET API Call upon native API

FOUR THINGS ABOUT MYSELF

Netflix addict

Attack detection blogger Threat Hunter @ Countercept

Code junkie

Page 3: YOU ARE NOT HIDING FROM ME .NET! - DEF CON CON China 1/DEF CON... · Office Macros. POWERSHELL, A HOT FAVOURITE Load shellcode into memory Call upon .NET API Call upon native API

THE AGENDA

Detect

Why .NET ?

Page 4: YOU ARE NOT HIDING FROM ME .NET! - DEF CON CON China 1/DEF CON... · Office Macros. POWERSHELL, A HOT FAVOURITE Load shellcode into memory Call upon .NET API Call upon native API

IN THE NOT SO DISTANT PAST

PowerShell

VBScript

Office Macros

Page 5: YOU ARE NOT HIDING FROM ME .NET! - DEF CON CON China 1/DEF CON... · Office Macros. POWERSHELL, A HOT FAVOURITE Load shellcode into memory Call upon .NET API Call upon native API

POWERSHELL, A HOT FAVOURITE

Load shellcode

into memory

Call upon

.NET API

Call upon

native API

Powerful

Page 6: YOU ARE NOT HIDING FROM ME .NET! - DEF CON CON China 1/DEF CON... · Office Macros. POWERSHELL, A HOT FAVOURITE Load shellcode into memory Call upon .NET API Call upon native API

DEFENCES ARE GETTING BETTER

EDR AGENTS

Command Line Arguments Logging

CommandLine powershell write host “This is an evil command”

Parent-Child Process Relationship

Page 7: YOU ARE NOT HIDING FROM ME .NET! - DEF CON CON China 1/DEF CON... · Office Macros. POWERSHELL, A HOT FAVOURITE Load shellcode into memory Call upon .NET API Call upon native API

DEFENCES ARE GETTING BETTER

AMSI assisting Anti-Virus with script-based detection

PowerShell Script Block Logging to aid with detection

Page 8: YOU ARE NOT HIDING FROM ME .NET! - DEF CON CON China 1/DEF CON... · Office Macros. POWERSHELL, A HOT FAVOURITE Load shellcode into memory Call upon .NET API Call upon native API

INDUSTRY AS A WHOLE

More opportunities to

detect bad PowerShell

Page 9: YOU ARE NOT HIDING FROM ME .NET! - DEF CON CON China 1/DEF CON... · Office Macros. POWERSHELL, A HOT FAVOURITE Load shellcode into memory Call upon .NET API Call upon native API

ADVERSARIES JUST DON’T GIVE UP

Invoke .NET directly

instead of via PowerShell

Page 10: YOU ARE NOT HIDING FROM ME .NET! - DEF CON CON China 1/DEF CON... · Office Macros. POWERSHELL, A HOT FAVOURITE Load shellcode into memory Call upon .NET API Call upon native API

WHY .NET THOUGH?

Powerful

functions

Installed by

default

Lack of

telemetry

Page 11: YOU ARE NOT HIDING FROM ME .NET! - DEF CON CON China 1/DEF CON... · Office Macros. POWERSHELL, A HOT FAVOURITE Load shellcode into memory Call upon .NET API Call upon native API

10

LET’S COMPARE POWERSHELL AND .NET

Write a registry key

through a .NET API

Pop a Message box

with a native API

Page 12: YOU ARE NOT HIDING FROM ME .NET! - DEF CON CON China 1/DEF CON... · Office Macros. POWERSHELL, A HOT FAVOURITE Load shellcode into memory Call upon .NET API Call upon native API

11

POWERSHELL VS .NET DEMO

Page 13: YOU ARE NOT HIDING FROM ME .NET! - DEF CON CON China 1/DEF CON... · Office Macros. POWERSHELL, A HOT FAVOURITE Load shellcode into memory Call upon .NET API Call upon native API

POWERSHELL VS .NET

Page 14: YOU ARE NOT HIDING FROM ME .NET! - DEF CON CON China 1/DEF CON... · Office Macros. POWERSHELL, A HOT FAVOURITE Load shellcode into memory Call upon .NET API Call upon native API

HOW DID I EXECUTE MY .NET PAYLOAD?

In-memory

assembly loading

Page 15: YOU ARE NOT HIDING FROM ME .NET! - DEF CON CON China 1/DEF CON... · Office Macros. POWERSHELL, A HOT FAVOURITE Load shellcode into memory Call upon .NET API Call upon native API

IN MEMORY .NET ASSEMBLY LOADING

Compile

Serialize

Load into memory

De-serialize

Instantiate

Page 16: YOU ARE NOT HIDING FROM ME .NET! - DEF CON CON China 1/DEF CON... · Office Macros. POWERSHELL, A HOT FAVOURITE Load shellcode into memory Call upon .NET API Call upon native API

A FUN FACT

This does exactly the same thing

Page 17: YOU ARE NOT HIDING FROM ME .NET! - DEF CON CON China 1/DEF CON... · Office Macros. POWERSHELL, A HOT FAVOURITE Load shellcode into memory Call upon .NET API Call upon native API

WHAT CAN THE LOADED OBJECT DO?

Load shellcode

into memory

Call upon .NET API

Call upon native API

Similar to

PowerShell

Page 18: YOU ARE NOT HIDING FROM ME .NET! - DEF CON CON China 1/DEF CON... · Office Macros. POWERSHELL, A HOT FAVOURITE Load shellcode into memory Call upon .NET API Call upon native API

MID-POINT CHECK

Challenge: Can we detect this?

Similar to PowerShell

Lack of telemetry

Page 19: YOU ARE NOT HIDING FROM ME .NET! - DEF CON CON China 1/DEF CON... · Office Macros. POWERSHELL, A HOT FAVOURITE Load shellcode into memory Call upon .NET API Call upon native API

THE AGENDA

Detect

Why .NET ?

Page 20: YOU ARE NOT HIDING FROM ME .NET! - DEF CON CON China 1/DEF CON... · Office Macros. POWERSHELL, A HOT FAVOURITE Load shellcode into memory Call upon .NET API Call upon native API

…… WITH PROCESS HACKER

Process Hacker

Mshta.exe

Analyze

Page 21: YOU ARE NOT HIDING FROM ME .NET! - DEF CON CON China 1/DEF CON... · Office Macros. POWERSHELL, A HOT FAVOURITE Load shellcode into memory Call upon .NET API Call upon native API

DETECTING .NET LOADED DLLS

Loading of .NET runtime DLLs can be observed

Page 22: YOU ARE NOT HIDING FROM ME .NET! - DEF CON CON China 1/DEF CON... · Office Macros. POWERSHELL, A HOT FAVOURITE Load shellcode into memory Call upon .NET API Call upon native API

DEFINITELY DODGY

MSHTA typically

only runs HTML or

JavaScript code!

Page 23: YOU ARE NOT HIDING FROM ME .NET! - DEF CON CON China 1/DEF CON... · Office Macros. POWERSHELL, A HOT FAVOURITE Load shellcode into memory Call upon .NET API Call upon native API

HOLDS TRUE FOR OTHER BINARIES

Page 24: YOU ARE NOT HIDING FROM ME .NET! - DEF CON CON China 1/DEF CON... · Office Macros. POWERSHELL, A HOT FAVOURITE Load shellcode into memory Call upon .NET API Call upon native API

WHAT IF A BINARY RELATED TO .NET WAS USED

Msbuild.exe

3rd Party Application

Not uncommon to have .NET

runtime DLL

Page 25: YOU ARE NOT HIDING FROM ME .NET! - DEF CON CON China 1/DEF CON... · Office Macros. POWERSHELL, A HOT FAVOURITE Load shellcode into memory Call upon .NET API Call upon native API

WE NEED SOMETHING BETTER

And the answer lies deep

within Process Hacker

Page 26: YOU ARE NOT HIDING FROM ME .NET! - DEF CON CON China 1/DEF CON... · Office Macros. POWERSHELL, A HOT FAVOURITE Load shellcode into memory Call upon .NET API Call upon native API

.NET ASSEMBLIES

Events of assembly loads

Page 27: YOU ARE NOT HIDING FROM ME .NET! - DEF CON CON China 1/DEF CON... · Office Macros. POWERSHELL, A HOT FAVOURITE Load shellcode into memory Call upon .NET API Call upon native API

.NET ASSEMBLIES

Lack of a path indicates potential in-memory

assembly loads

Page 28: YOU ARE NOT HIDING FROM ME .NET! - DEF CON CON China 1/DEF CON... · Office Macros. POWERSHELL, A HOT FAVOURITE Load shellcode into memory Call upon .NET API Call upon native API

.NET ASSEMBLIES

How did Process

Hacker achieve this?

Page 29: YOU ARE NOT HIDING FROM ME .NET! - DEF CON CON China 1/DEF CON... · Office Macros. POWERSHELL, A HOT FAVOURITE Load shellcode into memory Call upon .NET API Call upon native API

DEEP WITHIN PROCESS HACKER

A set of .NET ETW providers

Microsoft-Windows-DotNETRuntime

Microsoft-Windows-DotNETRuntimeRundown

Page 30: YOU ARE NOT HIDING FROM ME .NET! - DEF CON CON China 1/DEF CON... · Office Macros. POWERSHELL, A HOT FAVOURITE Load shellcode into memory Call upon .NET API Call upon native API

PROOF-OF-CONCEPT

.NET ETWConsumes

Page 31: YOU ARE NOT HIDING FROM ME .NET! - DEF CON CON China 1/DEF CON... · Office Macros. POWERSHELL, A HOT FAVOURITE Load shellcode into memory Call upon .NET API Call upon native API

LET’S TRY TO DETECT MY ATTACK

Indicators for in-memory

assembly load

Indicators for .NET API

related to registry creation

Indicators for invoking of native API

Page 32: YOU ARE NOT HIDING FROM ME .NET! - DEF CON CON China 1/DEF CON... · Office Macros. POWERSHELL, A HOT FAVOURITE Load shellcode into memory Call upon .NET API Call upon native API

IN-MEMORY ASSEMBLY LOAD

Events

related to

in-memory

assembly

load

Loading of .NET

assemblies

Just In Time

compilation

Page 33: YOU ARE NOT HIDING FROM ME .NET! - DEF CON CON China 1/DEF CON... · Office Macros. POWERSHELL, A HOT FAVOURITE Load shellcode into memory Call upon .NET API Call upon native API

.NET CODE COMPILATION ARCHITECTURE

CompileCLR

Compile Native code

Upon

executionJIT

Compiler

Compilation time Runtime

Page 34: YOU ARE NOT HIDING FROM ME .NET! - DEF CON CON China 1/DEF CON... · Office Macros. POWERSHELL, A HOT FAVOURITE Load shellcode into memory Call upon .NET API Call upon native API

JIT COMPILATION

Events generated

whenever a .NET

method is first utilized

Page 35: YOU ARE NOT HIDING FROM ME .NET! - DEF CON CON China 1/DEF CON... · Office Macros. POWERSHELL, A HOT FAVOURITE Load shellcode into memory Call upon .NET API Call upon native API

IN-MEMORY ASSEMBLY LOAD INDICATORS

Loading of .NET

assemblies

Just In Time

compilation

Page 36: YOU ARE NOT HIDING FROM ME .NET! - DEF CON CON China 1/DEF CON... · Office Macros. POWERSHELL, A HOT FAVOURITE Load shellcode into memory Call upon .NET API Call upon native API

IN-MEMORY ASSEMBLY LOAD INDICATORS

Detect execution of the MyAssembly

constructor

Page 37: YOU ARE NOT HIDING FROM ME .NET! - DEF CON CON China 1/DEF CON... · Office Macros. POWERSHELL, A HOT FAVOURITE Load shellcode into memory Call upon .NET API Call upon native API

REMEMBER THIS?

In-memory loading of assembly attempts

to replicate the above behavior

Page 38: YOU ARE NOT HIDING FROM ME .NET! - DEF CON CON China 1/DEF CON... · Office Macros. POWERSHELL, A HOT FAVOURITE Load shellcode into memory Call upon .NET API Call upon native API

DETECTION SUMMARY

Indicators for in-memory

assembly load

Indicators for .NET API

related to registry creation

Indicators for invoking

of native API

Page 39: YOU ARE NOT HIDING FROM ME .NET! - DEF CON CON China 1/DEF CON... · Office Macros. POWERSHELL, A HOT FAVOURITE Load shellcode into memory Call upon .NET API Call upon native API

JIT ETW

Just In Time compilation

Can we use this?

Page 40: YOU ARE NOT HIDING FROM ME .NET! - DEF CON CON China 1/DEF CON... · Office Macros. POWERSHELL, A HOT FAVOURITE Load shellcode into memory Call upon .NET API Call upon native API

UNFORTUNATELY….

JIT compilation

doesn’t occur for

native .NET assemblies

Page 41: YOU ARE NOT HIDING FROM ME .NET! - DEF CON CON China 1/DEF CON... · Office Macros. POWERSHELL, A HOT FAVOURITE Load shellcode into memory Call upon .NET API Call upon native API

NATIVE .NET ASSEMBLIES?

System.text

Console.writeLine()

Page 42: YOU ARE NOT HIDING FROM ME .NET! - DEF CON CON China 1/DEF CON... · Office Macros. POWERSHELL, A HOT FAVOURITE Load shellcode into memory Call upon .NET API Call upon native API

WHY THOUGH?

Compile

Native Image Generator (NGEN)

compiles .NET assemblies to native

images, and caches them

Cache

Page 43: YOU ARE NOT HIDING FROM ME .NET! - DEF CON CON China 1/DEF CON... · Office Macros. POWERSHELL, A HOT FAVOURITE Load shellcode into memory Call upon .NET API Call upon native API

WHY THOUGH?

Compile

JIT compilation would not occur

Cache

Page 44: YOU ARE NOT HIDING FROM ME .NET! - DEF CON CON China 1/DEF CON... · Office Macros. POWERSHELL, A HOT FAVOURITE Load shellcode into memory Call upon .NET API Call upon native API

DETECTION SUMMARY

Indicators for in-memory

assembly load

Indicators for .NET API

related to registry creation

Indicators for invoking

of native API

Page 45: YOU ARE NOT HIDING FROM ME .NET! - DEF CON CON China 1/DEF CON... · Office Macros. POWERSHELL, A HOT FAVOURITE Load shellcode into memory Call upon .NET API Call upon native API

.NET ETW EVENTS

Interop events

Page 46: YOU ARE NOT HIDING FROM ME .NET! - DEF CON CON China 1/DEF CON... · Office Macros. POWERSHELL, A HOT FAVOURITE Load shellcode into memory Call upon .NET API Call upon native API

INTEROP EVENTS

Events generated

during calls made to

Window’s native API

Page 47: YOU ARE NOT HIDING FROM ME .NET! - DEF CON CON China 1/DEF CON... · Office Macros. POWERSHELL, A HOT FAVOURITE Load shellcode into memory Call upon .NET API Call upon native API

NATIVE CODE

Native function imported from User32.dll

Page 48: YOU ARE NOT HIDING FROM ME .NET! - DEF CON CON China 1/DEF CON... · Office Macros. POWERSHELL, A HOT FAVOURITE Load shellcode into memory Call upon .NET API Call upon native API

INTEROP EVENTS

Detected a call towards MessageBox

Page 49: YOU ARE NOT HIDING FROM ME .NET! - DEF CON CON China 1/DEF CON... · Office Macros. POWERSHELL, A HOT FAVOURITE Load shellcode into memory Call upon .NET API Call upon native API

THIS IS REALLY USEFUL

Logging of

keystrokes

Credential

extraction from

memory

Other malicious

activities

Page 50: YOU ARE NOT HIDING FROM ME .NET! - DEF CON CON China 1/DEF CON... · Office Macros. POWERSHELL, A HOT FAVOURITE Load shellcode into memory Call upon .NET API Call upon native API

DETECTION SUMMARY

Indicators for in-memory

assembly load

Indicators for .NET API

related to registry creation

Indicators for invoking

of native API

Page 51: YOU ARE NOT HIDING FROM ME .NET! - DEF CON CON China 1/DEF CON... · Office Macros. POWERSHELL, A HOT FAVOURITE Load shellcode into memory Call upon .NET API Call upon native API

REAL WORLD EXAMPLE, SILENTRINITY

51

Launch a .NET

assembly

Launch SafetyKatz,

a credential

extraction tool

Page 52: YOU ARE NOT HIDING FROM ME .NET! - DEF CON CON China 1/DEF CON... · Office Macros. POWERSHELL, A HOT FAVOURITE Load shellcode into memory Call upon .NET API Call upon native API

52

SILENTRINITY DEMO

Page 53: YOU ARE NOT HIDING FROM ME .NET! - DEF CON CON China 1/DEF CON... · Office Macros. POWERSHELL, A HOT FAVOURITE Load shellcode into memory Call upon .NET API Call upon native API

53

.NET TELEMETRIES

.NET runtime

DLLS

.NET ETW

events

Page 54: YOU ARE NOT HIDING FROM ME .NET! - DEF CON CON China 1/DEF CON... · Office Macros. POWERSHELL, A HOT FAVOURITE Load shellcode into memory Call upon .NET API Call upon native API

HOW ABOUT OTHER TELEMETRY?

ObjectiveLateral

Movement

Control

Persistence

Execution

Delivery

Recon

Attacker

Page 55: YOU ARE NOT HIDING FROM ME .NET! - DEF CON CON China 1/DEF CON... · Office Macros. POWERSHELL, A HOT FAVOURITE Load shellcode into memory Call upon .NET API Call upon native API

TO WRAP IT UP

1.NET isn’t that invisible

2

PowerShell, still

deadly but…..

3

Try it yourself!