28

GPU Powered Malware - WordPress.com · GPGPU echTnologies How could that be used in a malwrea ? Reverse Engineering Packing Conclusion GPU Powered Malware Daniel Reynaud [email protected]

  • Upload
    others

  • View
    4

  • Download
    0

Embed Size (px)

Citation preview

Page 1: GPU Powered Malware - WordPress.com · GPGPU echTnologies How could that be used in a malwrea ? Reverse Engineering Packing Conclusion GPU Powered Malware Daniel Reynaud reynaudd@loria.fr

GPGPU TechnologiesHow could that be used in a malware ?

Reverse EngineeringPacking

Conclusion

GPU Powered Malware

Daniel [email protected]

LORIA - Nancy - France

Ruxcon 2008

Daniel Reynaud [email protected] GPU Powered Malware

Page 2: GPU Powered Malware - WordPress.com · GPGPU echTnologies How could that be used in a malwrea ? Reverse Engineering Packing Conclusion GPU Powered Malware Daniel Reynaud reynaudd@loria.fr

GPGPU TechnologiesHow could that be used in a malware ?

Reverse EngineeringPacking

Conclusion

Motivation

GPGPU (General Purpose programming on GraphicsProcessing Units) is no longer an obscure area

Most consumer hardware is now fully programmable in C

No need to be a specialist to tap into the computing power ofGPUs

What if malware authors start coding on GPUs ?

Daniel Reynaud [email protected] GPU Powered Malware

Page 3: GPU Powered Malware - WordPress.com · GPGPU echTnologies How could that be used in a malwrea ? Reverse Engineering Packing Conclusion GPU Powered Malware Daniel Reynaud reynaudd@loria.fr

GPGPU TechnologiesHow could that be used in a malware ?

Reverse EngineeringPacking

Conclusion

CUDAStream ComputingOpenCLLarrabee

Outline

1 GPGPU TechnologiesCUDAStream ComputingOpenCLLarrabee

2 How could that be used in a malware ?

3 Reverse EngineeringDisassemblingDebuggingEmulation

4 Packing

5 Conclusion

Daniel Reynaud [email protected] GPU Powered Malware

Page 4: GPU Powered Malware - WordPress.com · GPGPU echTnologies How could that be used in a malwrea ? Reverse Engineering Packing Conclusion GPU Powered Malware Daniel Reynaud reynaudd@loria.fr

GPGPU TechnologiesHow could that be used in a malware ?

Reverse EngineeringPacking

Conclusion

CUDAStream ComputingOpenCLLarrabee

NVIDIA's Compute Uni�ed Device Architecture

Requires recent NVIDIA hardware with a CUDA driver

Easily programmable with an extension of the C language

The device code is compiled to an assembly intermediatelanguage, PTX and then assembled in the cubin �le format(undocumented)

Here is the simpli�ed compilation process:

Daniel Reynaud [email protected] GPU Powered Malware

Page 5: GPU Powered Malware - WordPress.com · GPGPU echTnologies How could that be used in a malwrea ? Reverse Engineering Packing Conclusion GPU Powered Malware Daniel Reynaud reynaudd@loria.fr

GPGPU TechnologiesHow could that be used in a malware ?

Reverse EngineeringPacking

Conclusion

CUDAStream ComputingOpenCLLarrabee

AMD's Stream Computing

Requires recent ATI/AMD hardware with a Stream Computingdriver

Easily programmable with an (other) extension of the Clanguage

The device code is compiled to an (other) assemblyintermediate language, AMD IL

Daniel Reynaud [email protected] GPU Powered Malware

Page 6: GPU Powered Malware - WordPress.com · GPGPU echTnologies How could that be used in a malwrea ? Reverse Engineering Packing Conclusion GPU Powered Malware Daniel Reynaud reynaudd@loria.fr

GPGPU TechnologiesHow could that be used in a malware ?

Reverse EngineeringPacking

Conclusion

CUDAStream ComputingOpenCLLarrabee

Apple's OpenCL

Submitted as a standard by Apple, supported by everybodyexcept Microsoft

Will be shipped with Mac OS X Snow Leopard

No reference/documentation for the moment

Daniel Reynaud [email protected] GPU Powered Malware

Page 7: GPU Powered Malware - WordPress.com · GPGPU echTnologies How could that be used in a malwrea ? Reverse Engineering Packing Conclusion GPU Powered Malware Daniel Reynaud reynaudd@loria.fr

GPGPU TechnologiesHow could that be used in a malware ?

Reverse EngineeringPacking

Conclusion

CUDAStream ComputingOpenCLLarrabee

Intel's Larrabee

Announced by Intel at SIGGRAPH 2008

Based on the x86 architecture plus Larrabee-speci�c extensions

Will also come in the form of an add-in card managed by anoperating system driver

No reference/documentation for the moment

Daniel Reynaud [email protected] GPU Powered Malware

Page 8: GPU Powered Malware - WordPress.com · GPGPU echTnologies How could that be used in a malwrea ? Reverse Engineering Packing Conclusion GPU Powered Malware Daniel Reynaud reynaudd@loria.fr

GPGPU TechnologiesHow could that be used in a malware ?

Reverse EngineeringPacking

Conclusion

Outline

1 GPGPU TechnologiesCUDAStream ComputingOpenCLLarrabee

2 How could that be used in a malware ?

3 Reverse EngineeringDisassemblingDebuggingEmulation

4 Packing

5 Conclusion

Daniel Reynaud [email protected] GPU Powered Malware

Page 9: GPU Powered Malware - WordPress.com · GPGPU echTnologies How could that be used in a malwrea ? Reverse Engineering Packing Conclusion GPU Powered Malware Daniel Reynaud reynaudd@loria.fr

Quick Answer (credits: ThreatExpert.com)

Page 10: GPU Powered Malware - WordPress.com · GPGPU echTnologies How could that be used in a malwrea ? Reverse Engineering Packing Conclusion GPU Powered Malware Daniel Reynaud reynaudd@loria.fr

GPGPU TechnologiesHow could that be used in a malware ?

Reverse EngineeringPacking

Conclusion

Algorithm Hiding

The code on the former slide is part of the Kraken botnet

It is the algorithm generating the list of C&C servers that thebots try to contact

Once this list is known, the servers can be shut down and thebotnet can be in�ltrated

This is the kind of algorithms that might end up beingexecuted on GPUs

Daniel Reynaud [email protected] GPU Powered Malware

Page 11: GPU Powered Malware - WordPress.com · GPGPU echTnologies How could that be used in a malwrea ? Reverse Engineering Packing Conclusion GPU Powered Malware Daniel Reynaud reynaudd@loria.fr

GPGPU TechnologiesHow could that be used in a malware ?

Reverse EngineeringPacking

Conclusion

DisassemblingDebuggingEmulation

Outline

1 GPGPU TechnologiesCUDAStream ComputingOpenCLLarrabee

2 How could that be used in a malware ?

3 Reverse EngineeringDisassemblingDebuggingEmulation

4 Packing

5 Conclusion

Daniel Reynaud [email protected] GPU Powered Malware

Page 12: GPU Powered Malware - WordPress.com · GPGPU echTnologies How could that be used in a malwrea ? Reverse Engineering Packing Conclusion GPU Powered Malware Daniel Reynaud reynaudd@loria.fr

GPGPU TechnologiesHow could that be used in a malware ?

Reverse EngineeringPacking

Conclusion

DisassemblingDebuggingEmulation

Disassembling

GPGPU software comes in the form of fat binaries (CUDAterminology), i.e. native executables with embedded devicecode

The goal is to extract the device code and obtain a dump ofthe instructions

Daniel Reynaud [email protected] GPU Powered Malware

Page 13: GPU Powered Malware - WordPress.com · GPGPU echTnologies How could that be used in a malwrea ? Reverse Engineering Packing Conclusion GPU Powered Malware Daniel Reynaud reynaudd@loria.fr

GPGPU TechnologiesHow could that be used in a malware ?

Reverse EngineeringPacking

Conclusion

DisassemblingDebuggingEmulation

Disassembling

Depends heavily on the underlying GPGPU technology

Ability to recover the device-speci�c representation and/or theintermediate language representation

Usually very di�erent from x86 assembly

Daniel Reynaud [email protected] GPU Powered Malware

Page 14: GPU Powered Malware - WordPress.com · GPGPU echTnologies How could that be used in a malwrea ? Reverse Engineering Packing Conclusion GPU Powered Malware Daniel Reynaud reynaudd@loria.fr

GPGPU TechnologiesHow could that be used in a malware ?

Reverse EngineeringPacking

Conclusion

DisassemblingDebuggingEmulation

Disassembling

Sample PTX code:

Daniel Reynaud [email protected] GPU Powered Malware

Page 15: GPU Powered Malware - WordPress.com · GPGPU echTnologies How could that be used in a malwrea ? Reverse Engineering Packing Conclusion GPU Powered Malware Daniel Reynaud reynaudd@loria.fr

GPGPU TechnologiesHow could that be used in a malware ?

Reverse EngineeringPacking

Conclusion

DisassemblingDebuggingEmulation

Disassembling

Sample AMD IL code:

Daniel Reynaud [email protected] GPU Powered Malware

Page 16: GPU Powered Malware - WordPress.com · GPGPU echTnologies How could that be used in a malwrea ? Reverse Engineering Packing Conclusion GPU Powered Malware Daniel Reynaud reynaudd@loria.fr

GPGPU TechnologiesHow could that be used in a malware ?

Reverse EngineeringPacking

Conclusion

DisassemblingDebuggingEmulation

Debugging

Short version: GPUs do not support hardware debugging

This means: no breakpoints, no single-stepping, nodebugger-based tracing

However, developers want to debug applications, so the answeris the emulation mode...

An excerpt of the CUDA documentation:

Daniel Reynaud [email protected] GPU Powered Malware

Page 17: GPU Powered Malware - WordPress.com · GPGPU echTnologies How could that be used in a malwrea ? Reverse Engineering Packing Conclusion GPU Powered Malware Daniel Reynaud reynaudd@loria.fr

GPGPU TechnologiesHow could that be used in a malware ?

Reverse EngineeringPacking

Conclusion

DisassemblingDebuggingEmulation

Debugging

Short version: GPUs do not support hardware debugging

This means: no breakpoints, no single-stepping, nodebugger-based tracing

However, developers want to debug applications, so the answeris the emulation mode...

And an excerpt of the Stream Computing documentation:

Daniel Reynaud [email protected] GPU Powered Malware

Page 18: GPU Powered Malware - WordPress.com · GPGPU echTnologies How could that be used in a malwrea ? Reverse Engineering Packing Conclusion GPU Powered Malware Daniel Reynaud reynaudd@loria.fr

GPGPU TechnologiesHow could that be used in a malware ?

Reverse EngineeringPacking

Conclusion

DisassemblingDebuggingEmulation

Debugging

So developers can debug their applications if they compilethem with an emulation option

This means no debugging without the source code

But at least, we have emulation, right ?

Daniel Reynaud [email protected] GPU Powered Malware

Page 19: GPU Powered Malware - WordPress.com · GPGPU echTnologies How could that be used in a malwrea ? Reverse Engineering Packing Conclusion GPU Powered Malware Daniel Reynaud reynaudd@loria.fr

GPGPU TechnologiesHow could that be used in a malware ?

Reverse EngineeringPacking

Conclusion

DisassemblingDebuggingEmulation

Emulation

Let's read again the CUDA documentation: �When compiling

an application in this mode (using the -deviceemu option), the

device code is compiled for and runs on the host�

This means that no GPU code is produced, everything iscompiled for the CPU

Therefore, no emulation without the source code

This is bad news for malware analysts, because having afull-software GPU emulator would allow the use of breakpoints,single-stepping and tracing (as with Bochs)

Daniel Reynaud [email protected] GPU Powered Malware

Page 20: GPU Powered Malware - WordPress.com · GPGPU echTnologies How could that be used in a malwrea ? Reverse Engineering Packing Conclusion GPU Powered Malware Daniel Reynaud reynaudd@loria.fr

GPGPU TechnologiesHow could that be used in a malware ?

Reverse EngineeringPacking

Conclusion

Outline

1 GPGPU TechnologiesCUDAStream ComputingOpenCLLarrabee

2 How could that be used in a malware ?

3 Reverse EngineeringDisassemblingDebuggingEmulation

4 Packing

5 Conclusion

Daniel Reynaud [email protected] GPU Powered Malware

Page 21: GPU Powered Malware - WordPress.com · GPGPU echTnologies How could that be used in a malwrea ? Reverse Engineering Packing Conclusion GPU Powered Malware Daniel Reynaud reynaudd@loria.fr

GPGPU TechnologiesHow could that be used in a malware ?

Reverse EngineeringPacking

Conclusion

Motivation

Packing is a software protection method that generates codedynamically (turns data into code)

To unpack a program, you generally have to set a breakpointat the entry point of the dynamically created code or toemulate the program and match the current address with thewritten addresses

No debugging in GPUs + no emulators (yet) = really strongpacking

Daniel Reynaud [email protected] GPU Powered Malware

Page 22: GPU Powered Malware - WordPress.com · GPGPU echTnologies How could that be used in a malwrea ? Reverse Engineering Packing Conclusion GPU Powered Malware Daniel Reynaud reynaudd@loria.fr

GPGPU TechnologiesHow could that be used in a malware ?

Reverse EngineeringPacking

Conclusion

Based on the Underlying Hardware

The lowest-level target but still hardware-independant targetfor execution is the intermediate language (such as PTX orAMD IL)

To program self-modifying code, we need data-transferinstructions and control-�ow instructions with the same targets

But...

Daniel Reynaud [email protected] GPU Powered Malware

Page 23: GPU Powered Malware - WordPress.com · GPGPU echTnologies How could that be used in a malwrea ? Reverse Engineering Packing Conclusion GPU Powered Malware Daniel Reynaud reynaudd@loria.fr

GPGPU TechnologiesHow could that be used in a malware ?

Reverse EngineeringPacking

Conclusion

Based on the Underlying Hardware

Excerpt of the PTX documentation:

Daniel Reynaud [email protected] GPU Powered Malware

Page 24: GPU Powered Malware - WordPress.com · GPGPU echTnologies How could that be used in a malwrea ? Reverse Engineering Packing Conclusion GPU Powered Malware Daniel Reynaud reynaudd@loria.fr

GPGPU TechnologiesHow could that be used in a malware ?

Reverse EngineeringPacking

Conclusion

Based on the Underlying Hardware

And an excerpt of the AMD IL documentation:

Daniel Reynaud [email protected] GPU Powered Malware

Page 25: GPU Powered Malware - WordPress.com · GPGPU echTnologies How could that be used in a malwrea ? Reverse Engineering Packing Conclusion GPU Powered Malware Daniel Reynaud reynaudd@loria.fr

GPGPU TechnologiesHow could that be used in a malware ?

Reverse EngineeringPacking

Conclusion

Based on a Virtual Machine

There seems to be no natural / documented way to writeself-modifying code with PTX or AMD IL

However, even if the underlying environment does not supportself-modifying code, it is still possible to develop a virtualexecution environment in device code

Since we control the virtual execution environment, everythingis possible, including self-modifying code

Not malware speci�c, DRM systems may use it in the future(GPU-Themida and GPU-VMProtect ?)

Daniel Reynaud [email protected] GPU Powered Malware

Page 26: GPU Powered Malware - WordPress.com · GPGPU echTnologies How could that be used in a malwrea ? Reverse Engineering Packing Conclusion GPU Powered Malware Daniel Reynaud reynaudd@loria.fr

GPGPU TechnologiesHow could that be used in a malware ?

Reverse EngineeringPacking

Conclusion

Based on a Virtual Machine

Daniel Reynaud [email protected] GPU Powered Malware

Page 27: GPU Powered Malware - WordPress.com · GPGPU echTnologies How could that be used in a malwrea ? Reverse Engineering Packing Conclusion GPU Powered Malware Daniel Reynaud reynaudd@loria.fr

GPGPU TechnologiesHow could that be used in a malware ?

Reverse EngineeringPacking

Conclusion

Outline

1 GPGPU TechnologiesCUDAStream ComputingOpenCLLarrabee

2 How could that be used in a malware ?

3 Reverse EngineeringDisassemblingDebuggingEmulation

4 Packing

5 Conclusion

Daniel Reynaud [email protected] GPU Powered Malware

Page 28: GPU Powered Malware - WordPress.com · GPGPU echTnologies How could that be used in a malwrea ? Reverse Engineering Packing Conclusion GPU Powered Malware Daniel Reynaud reynaudd@loria.fr

GPGPU TechnologiesHow could that be used in a malware ?

Reverse EngineeringPacking

Conclusion

Conclusion

Current GPGPU technologies o�er programmable hardwareblack boxes

If one of these technologies becomes a standard, available bydefault, it will be used by malware and DRM

GPU-based packers will be particularly e�cient due to the lackof hardware debugging and emulators

Daniel Reynaud [email protected] GPU Powered Malware