SlideShare une entreprise Scribd logo
1  sur  105
Télécharger pour lire hors ligne
Toward Dynamic Analysis of
Obfuscated Android Malware
ZongXian Shen
About Me
• Passionate Security Researcher and Developer
• Earned Master in CS from NCTU,Taiwan
• Now the system engineer @appier
andy.zsshen@gmail.com
ZSShen
@AndyZSShen
ZongXian Shen
Outline
• Android runtime quick review - p3
• Fighting encrypted DEX code - p29
• Fighting native protector – p60
Android Runtime
Quick Review
Framework Startup Roadmap
ServiceManager
A Linux Daemon
• Marshall framework Binder
inter process communication
• Record the information of
each started servers
(framework services)
• Offer the interface for clients
(apps or framework services)
to access servers
Zygote
Original framework process
and Java world creator
• Initialize Android Runtime
• Fork the framework service
process SystemServer
• Wait for the app forking task
requested from
ActivityManagerService
Framework Services
Specialized service threads
forked from SystemServer
• App lifecycle management
• Package installation
• Media and Personalization
• Power and Network
• and etc …
Startup of Java World
In system/core/rootdir/init.zygote.rc
service zygote /system/bin/app_process -Xzygote /system/bin --zygote --start-system-server
class main
socket zygote stream 660 root system
onrestart write /sys/android_power/request_state wake
onrestart write /sys/power/state on
onrestart restart media
onrestart restart netd
Zygote startup command
Unix domain socket created to
interact with ActivityManagerService
framework/base/cmds/app_process/app_main.cpp
Zygote Native Source Entry
Zygote Creation
app_main.cpp
Zygote Process Memory Zygote
Initialization
libart.so
app_main.cpp
runtime.cc
1. Load theVM
library into memory
Zygote Process Memory Zygote
Initialization
libart.so
app_main.cpp
runtime.cc
1. Load theVM
library into memory
2. Transfer to ART entry
Zygote Process Memory Zygote
Initialization
libart.so
app_main.cpp
runtime.cc
boot.oat
1. Load theVM
library into memory
2. Transfer to ART entry
3. Load the precompiled
framework Java libraries
Dex Info & Bytecode
Native code
Zygote Process Memory Zygote
Initialization
libart.so
app_main.cpp
runtime.cc
boot.oat
1. Load theVM
library into memory
2. Transfer to ART entry
3. Load the precompiled
framework Java libraries
4. Link the indexes to access
• Java class members
• Method bytecode & its
compiled native code
Dex
ClassField
Method
Dex Info & Bytecode
Native code
Zygote Process Memory Zygote
Initialization
libart.so
app_main.cpp
runtime.cc
boot.oat
1. Load theVM
library into memory
2. Transfer to ART entry
3. Load the precompiled
framework Java libraries
4. Link the indexes to access
• Java class members
• Method bytecode & its
compiled native code
Dex
ClassField
Method
Dex Info & Bytecode
Native code
5. Find and transfer
to Zygote Java entry
Zygote Process Memory Zygote
Initialization
Zygote Initialization
1. framework/base/core/jni/AndroidRuntime.cpp
2. libnativehelper/JniInvocation.cpp
3. art/runtime/jni_internal.cpp
4. libnativehelper/include/nativehelper/jni.h
Load libart.so
Transfer to libart.so
• Initialize ART environment
• Load the framework libraries
• Index to class definitions
Find and transfer to
Zygote java entry
1 2 3 4
ART Initialization
• The heart of Zygote initialization
• Many complicated tasks like initializing theVM
memory layout and the garbage collector
• We focus on how ART find the specified class
and link to the method code – Class Linking
Class Linking
• Open the container file in the specified class path
• Classes are compiled and wrapped in Oat file
• Map the located Oat file into memory
• The class field and method definition
• The method bytecode and its compiled native code
• Link the indexes for class member access
• Transfer from ART to a certain compiled method
• Transfer between compiled methods
ART Indexing Structure
ART to Method Native Code
JNIEnv::GetStaticMethodId()
JNIEnv::CallStaticVoidMethod()
ArtMethod::Invoke()
art_quick_invoke_stub()
entry_point_from_quick_compiled_code()
Get ArtMethod pointer
Construct native
call stack
Dive into method
native code
Between Method Native Code
0x00: sget-object v0, Ljava/util/ArrayList; org.dsns.cleango.CleanGo.gRecord
0x02: invoke-virtual {v3}, java.lang.String java.lang.Object.toString()
0x05: move-result-object v1
0x06: invoke-virtual {v0, v1}, boolean java.util.ArrayList.add(java.lang.Object)
……
dex PC: 0x00
……
ldr.w r6, [r0, #432]
mov r1, r8
ldr r0, [r1, #0]
dex PC: 0x02
ldr.w r0, [r0, #396]
ldr.w lr, [r0, #40]
blx lr
……
Native Code Get Object object
Get toString() ArtMethod pointer
Get entry to compiled native code
Branch and link to the callee
Dex Bytecode
ART constructs the indexes to access the
class members of framework libraries
Let’s see how boot oat is processed
Oat Format
DEX Info &
Byte Code
Compiled
Methods
The Elf file embedded with
• DEX files bundling definition of classes
• Compiled method native codes
• Links between class definition & native code
Oat File Parsing
• Iterate through each DEX item
• Parse DEX structure to resolve all the bundled
class definitions
• Class field and method definition
• Method bytecode body
• Use class and method definition ids to access the
Oat indexes for method native code
DEX Class
Member Indexing
DEX Method
Bytecode
Oat Method
Code Indexing
After initialization,ART transfer to the first
Java world method ZygoteInit.main()
JNIEnv::FindClass()
JNIEnv::GetStaticMethod()
JNIEnv::CallStaticVoidMethod()
Zygote Routine in Java World
Initialize the domain socket to
interact with ActivityManagerService
Fork SystemServer process
which further forks
framework service threads
Wait for the request from
ActivityManageService
1. framework/base/core/java/com/android/internal/os/Zygote.java
2. framework/base/core/java/com/android/internal/os/RuntimeInit.java
1 2
Dynamic Analysis
against Obfuscated Code
Sample1 – Encrypted DEX Code
File: Fobus.apk
Sha1: 4a56c57b6731533e174c94745524a3bd4fe13313
VirusTotal: https://goo.gl/IldlLJ
Fobus Surface Info
Requested Permissions
Telephony related privilege for potential:
• Sensitive information stealing
• Premium rate service dialing
Fobus Surface Info
Component Definition
Activated when
SMS received
Activated when
boot completed
Activated when device admin
privilege is granted/canceled
Component names are obfuscated
Fobus Surface Info
Resource Definition
Disguise itself as legal Android updater
Nice description to
cheat naïve victims
App icon after
installation
Fobus Surface Info
How about the Code
Significant Obfuscation !
Fighting Encrypted DEX Code
• Emulator – Genymotion
• https://www.genymotion.com/download/
• Debugging tool – Android Studio
• https://developer.android.com/studio/index.html
• DEX tracing plugin – Smalidea
• https://github.com/JesusFreke/smali/wiki/smalidea
Fobus Analysis Preparation
1. Select the target API level
(API 18 for Fobus malware)
2. Turn on Android SDK
tools for the created device
CreateVirtual Device
Fobus Analysis Preparation
Install Smalidea Plugin
Download the newest
Smalidea package and
install it as Studio plugin
Fobus Analysis Preparation
Import Fobus Smali
1. Import the existing Smali
artifacts as Studo project
2. Set the source root for
the newly created project
Fobus Analysis Preparation
Repackage Fobus
1. Turn on the
debug flag in
Manifest
java -jar apktool.jar b Fobus -o FobusDbg.apk
2. Apply Apktool to repackage the sample
keytool -genkeypair -alias mykey_alias -keyalg RSA -validity 128 -keystore mykey
3. Create the package key if necessary
jarsigner -keystore mykey -signedjar FobusDbg.apk FobusDbg.apk maykey_alias
4. Sign the package with our key
Target Source
Fobus Analysis Preparation
Install and Launch Fobus
adb shell am start -D -n com.zwodrxcj.xnynjps/.L
1. Drag and drop the package for setup
2. Launch the main activity of Fobus
Package/MainActivity
3. Time to start our Smali debugging
Fobus Analysis Preparation
Attach to Fobus
1. Open Android Device Monitor
2. Create a remote debugging
configuration bound to port 8700
Fobus Analysis Preparation
Attach to Fobus
3. Set our first break point in the
constructor of Fobus Application class
4. Run debugging and we
should stop at the break point
Fobus Analysis Objective
• Tracing the code decryption and loading logic
• Dynamic String and class decryption
• Java reflection for class loading and member resolving
• Realizing the anti-tamper technique
• Original signing certificate for code decryption to
prevent software repackaging
• Tiptoeing through part of the malicious actions
Fobus Analysis
Overloaded Appliation.onCreate() which is
actually the common decryption routine
• The frequently appearing behavior footprint
• Put the encrypted content in a virtual register
• Invoke the decryption routine
• Set the decrypted result in that register
How do we see the decrypted result?
Dynamic Content Decryption
Fobus Analysis
Right click the register and
add it to the watch list
before/after the
decryption
Dynamic Content Decryption
Fobus Analysis
1. Decrypt the class name
com.zwodrxcj.xnynjps.Application$RA
2. Resolve the class type
3. Resolve the constructor
4. Prepare the input argument
5. Create the class instance via
the specified constructor
Decryption & Java Reflection
Fobus Analysis
Drop the Encrypted Package
1. Decrypt the
package embedded in
a constant string
2. Drop the package in
{PRIVATE}/app_dex/new.apk
and apply DexFile.loadDex()
to load the 2nd layer code
CFG of Application.dfae()
Fobus Analysis
Deploy 2nd Layer Analysis
java -jar apktool.jar d new.apk
1. Extract the decrypted payload
from {PRIVATE}/app_dex/new.apk
2. Disassemble and copy the
smali files into our Studio project
3. Set the break point in that class
Fobus Analysis
Dive into 2nd Layer
Delete the dropped package
Load Application$d class
Resolve its unpack() method
Call to Application$d.unpack()
Tasks after the 2nd DEX
file is loaded
A more stealthy decryption
routine which restores the
protected malicious code
Fobus Analysis
Anti-Tamper Technique
Entry of Application$d.unpack()
1. Get the signing
certificate associated
with the APK
2. Apply the 1st signature
for decryption later
Fobus Analysis
Anti-Tamper Technique
Entry of Application$d.unpack()
Open the classes.dex
file in assets
Not DEX magic, the file
is actually encrypted
Fobus Analysis
Anti-Tamper Technique
CFG of Application$d.unpack()
1. Call to Application$decrypt() with the
APK signing signature for decryption
2. Still drop the package to
{PRIVATE}/app_dex/new.apk
3. Apply DexFile.loadDex()
to load the 3rd layer code
Fobus Analysis
Anti-Tamper Technique
• Since we repackage the sample, the 3rd layer code
will not be presented due to wrong signature
• Two possible solutions
• Debug the original sample in the custom ROM with
modified default.prop
• Use dynamic instrumentation to mimic the signature
Fobus Analysis
Deploy 3rd Layer Analysis
1. Disassemble the package and we
get the main Activity component
2. Import the Smali files and set the
break points on that Activity
• Focusing on the critical parts
• Registering itself as the device administrator to
prevent uninstallation
• Sniffing incoming SMS messages and performing
premium rate dialing
• Key point to capture the complete behavior
• Set break points at the “onXYZ()” series callbacks
to follow the implicit control flow
Fobus Analysis
Malicious Behavior Exploration
Fobus Analysis
Register the repeating
launch of “A” and “T”
services to AlarmManager
Tiptoe through the Darkness
Is admin privilege
granted ?
Call to “L.b()”
Call to “L.a()” to start
admin request activity
CFG of “L.onCreate()”
Background Services
• “T” monitors the activation
of admin privilege
• “A” handles the telephony
relevant hacking
Initially, the control flow
should fall through here
Fobus Analysis
Acquire Admin Privilege
Still string encryption in
unpacked malicious code
Start the activity to
request admin privilege
Activation of L.a()
Fobus Analysis
Lure naïve victims to grant
the admin privilege
Activation of L.onActivityResult()
After privilege granted
Start to hide itself
Acquire Admin Privilege
Fobus Analysis
Hide App IconEntry of L.b()
COMPONENT_ENABLED_STATE_DISABLED
DONT_KILL_APP
Apply PackageManager.
setComponentEnabledSetting()
to hide the app icon
Fobus Analysis
Prevent Uninstallation
If the victim tries to deactivate the
admin privilege acquired by Fobus
Activation of AD.onDisableRequested()
The defense is triggered
The screen will be locked
Sample2 – Native Protector
File: Locker.apk
Sha1: 3d0e995d4a795ab4c59b4285f62c4c4585c11fa6
VirusTotal: https://goo.gl/o2oG1i
Locker Surface Info
Manifest Analysis
Highly suspicious
permission usage for
potential privacy leak
Locker Surface Info
Manifest Analysis
Disguise itself as the phone performance
booster to lure Chinese users
App icon after
installation
Activated when device admin privilege is granted
Locker Surface Info
How about the Code
The app logic is hidden and protected
in the native shared library
Fighting Native Protector
• Emulator – SDKVirtual Device, Genymotion
• Debugging tool – IDAPro, Android Studio
• https://www.hex-rays.com/products/ida/
• Dynamic Instrument Framework – Xposed
• http://repo.xposed.info/
• ELF related stuff – readelf, oat2dexes
• https://github.com/wuyongzheng/oat2dexes
Unpacking Library StaticView
1. Try to disassemble libsecexe.so
2. Cannot be processed due to
the corrupt section header table
Unpacking Library StaticView
Truncated Section Header Table
Metadata to index section
header table are all wiped out
Library Loading Review
Library Loading Review
1. bionic/linker/dlfcn.cpp
2. bionic/linker/linker.cpp
3. bionic/linker/linker_phdr.cpp
1 2 3
Dynamic linker/loader
relies on program header
table to load segments for
library execution
Section header table is
“don’t care” here
 Hard to statically analyze the library code
Must emulate the linker/loader behavior
 How about dynamic tracing ?
Must realize the timings to set break points
Things to Think
Unpacking Library StaticView
Dynamic Segment
Important information for the linker/loader
• Dependent libraries
• Symbols and Strings
• Address of relocation table
• Library initialization functions
Defined in art/runtime/elf.h
Unpacking Library StaticView
Initialization Function
Library initializers specified with
__attribute__((constructor)) or
__attribute__((section(“.init_array”)))
which will be first executed by
the linker/loader when the
library is loaded into memory
Library Loading Review Cont.
1. bionic/linker/linker.cpp
1
Invoke the library initializer
stored in .init section
Invoke the library initializers
stored in .init_array sectionWe can force the debugger to stop at
soinfo::CallFunction()
to monitor the library initialization
Library Tracing Preparation
CreateVirtual Device
1. Choose the phone device definition
2. Select the armeabi-v7a
image with API level 21
Library Tracing Preparation
Set Debug Server
1. Push the IDAPro Android debug
server under /dbgserv into the emulator
adb push android_server /data/local/tmp
chmod 755 /data/local/tmp/android_server
2. Launch the debug server in the emulator
adb forward tcp:23946 tcp:23946
3. Forward the default
port for the debug server
In Guest
Library Tracing Preparation
Launch and Install Locker
adb shell am start -D -n
tx.qq898507339.bzy9/tx.qq898507339.bzy9.MainActivity
2. Launch the main activity of Locker
Package/MainActivity
1. Install the Locker package
3. Time to start our IDA debugging
Library Tracing Preparation
Attach to Target Process
1. Attach to the remote
Android debug server
2. Specify the server address
3. Force the debugger to
stop at image load/unload
Library Tracing Preparation
Attach to Target Process
Attach to Locker process
and wait for IDA to initialize
debugging session
Library Tracing Preparation
Resume the Paused Process
1. Open Android Device Monitor
jdb -connect
com.sun.jdi.SocketAttach:hostname=127.0.0.1,port=8700
2. Release the process
paused by JDWP
3. Start IDA debugging session
Library Tracing
Stop at Library Loading
Before monitoring library initializers, there is
a worth noting attribute
Library Tracing
Packed Unpacking Library
Before Dex unpacking, we must conquer
the library packing first
Library Tracing
Dive into Library Initializer
Set the break point at soinfo::CallFunction()
Library Tracing
Dive into Library Initializer
Set the break point at library initializer entry
 Is it really necessary to trace the
unpacking logic ?
 How about set the break point at
JNI_OnLoad() to check the result ?
Things to Think
Library Tracing
Trapped by Anti-DebugTricks
Set the break point at JNI_OnLoad()
and resume the process
Not that easy, some anti-debug
tricks set in the unpacking logic
Library Tracing
Code around the Targeted SysCalls
SysCall #C0 means mmap() which
may relate to the unpacked data
Library Tracing
SVC Call #7D means mprotect()
which may relate to unpacking logic
Change a memory block with
PROT_READ ^ PROT_EXEC permission
and jump to it for execution
Code around the Targeted SysCalls
The successive code block of the
previous snippet
 Is there more efficient approach to catch
the unpacked original DEX ?
Back to DEX level, can we set the break point
at DexClassLoader.<init>() ?
Things to Think
The list of jar/apk files containing
classes and resources
We can get the original DEX via
the intercepted path string
Unpacking Wrapper Tracing
Original DEX Loader
The call trace to create
the class loader for the
original DEX
Set the break point
here to intercept
the original DEX
Unpacking Wrapper Tracing
Intercept the Original DEX
adb pull /data/data/tx.qq898507339.bzy9/.cache/classes.jar
Pull out the DEX file for
further analysis
Unpacking Wrapper Tracing
Intercept the Original DEX
Not a valid DEX file
and still packed
The protector may implement its own
class loading procedure to evade analysis
 Is it possible for the protector to fully re-
implements the class loading procedure ?
 The procedure crossing Java and native scope is
quite complicated
 Likely, it unpacks in some hooked native functions
and passes the legal DEX to the procedure
Things to Think
Class Loader Tracing
Work in the native scope
for class loading and linking
Return the valid address of
the linked declaring DexFileAfter DexFile.loadDex(), the legal
DexFile and its containing Oat file
should lie in memory
Deeper Inspection
Dynamic Binary Instrumentation
• How do we
• Intercept the timing after DexFile.loadDex() finished
• Scan the process memory for Oat file magic
• Dump the Oat file from memory
• Here comes the DBI gadget based on Xposed
Xposed DBI Deployment
1. Apply GenyMotion
emulator with API Level
21 for Locker malware
2. After device booting
up, install GenyFlash for
Xposed deployment
https://github.com/rovo89/GenyFlash
CreateVirtual Device
Xposed DBI Deployment
Install Framework1. Drag and drop the package for installation
2. Reboot the device
for Xposed activation
DBI Gadget Development
Android Studio Project Setup
1. Link the Xposed library
2. Create the asset file to hint Xposed
Please refer to
https://github.com/rovo89/XposedBridge/w
iki/Development-tutorial for more details
DBI Gadget Development
Dex File Hunter Key Steps
• Java scope
1. Stall the process after DexFile.loadDex() finished
2. Invoke the JNI to scan the process memory
• Native scope
3. Open /proc/self/map to hunt for the segments
“/data/data/tx.qq898507339.bzy9/.cache/classes.dex”
4. Dump the segments
DBI Gadget Development
Craft DEX File Hunter
1. Load the native memory scanner
2. Hint Xposed to hook the
method DexFile.loadDex()
3. Start to hunt for the unpacked
result loaded in memory
DBI Gadget Development
Craft DEX File Hunter
1. Open /proc/self/map
2. Pinpoint the memory
segments which are the
possible unpacked result
3. Dump the segments
for further analysis
Locker Unpacking Final
Deploy DBI Gadget
1. Drag and drop the package for installation
2. Activate our Xposed module
(Remember to reboot the device)
3. Push the native memory
scanner to /system/lib
Locker Unpacking Final
Run Locker for UnpackingDexFileHunter Java scope log
Native scope log
Locker Unpacking Final
Extract the Unpacked Code
Legal Oat file structure
Extract the DEX
embedded in the Oat file
Locker Unpacking Final
Finally, the Main Entry
Locker Unpacking Final
Finally, the Main Entry
C&C action to lock
the victim’s screen
OK, we end here to close the
complete unpacking story
See https://github.com/ZSShen/XposedGadget
for the related source

Contenu connexe

Tendances

U-boot and Android Verified Boot 2.0
U-boot and Android Verified Boot 2.0U-boot and Android Verified Boot 2.0
U-boot and Android Verified Boot 2.0GlobalLogic Ukraine
 
Architecture Of The Linux Kernel
Architecture Of The Linux KernelArchitecture Of The Linux Kernel
Architecture Of The Linux Kernelguest547d74
 
U boot porting guide for SoC
U boot porting guide for SoCU boot porting guide for SoC
U boot porting guide for SoCMacpaul Lin
 
Linux Preempt-RT Internals
Linux Preempt-RT InternalsLinux Preempt-RT Internals
Linux Preempt-RT Internals哲豪 康哲豪
 
Inside Android's UI
Inside Android's UIInside Android's UI
Inside Android's UIOpersys inc.
 
Bootloaders (U-Boot)
Bootloaders (U-Boot) Bootloaders (U-Boot)
Bootloaders (U-Boot) Omkar Rane
 
Learning AOSP - Android Linux Device Driver
Learning AOSP - Android Linux Device DriverLearning AOSP - Android Linux Device Driver
Learning AOSP - Android Linux Device DriverNanik Tolaram
 
Scheduling in Android
Scheduling in AndroidScheduling in Android
Scheduling in AndroidOpersys inc.
 
Device tree support on arm linux
Device tree support on arm linuxDevice tree support on arm linux
Device tree support on arm linuxChih-Min Chao
 
Find & Locate utility Linux
Find & Locate utility LinuxFind & Locate utility Linux
Find & Locate utility LinuxBhavik Bhansali
 
Rootless Kubernetes
Rootless KubernetesRootless Kubernetes
Rootless KubernetesAkihiro Suda
 
Android Binder IPC for Linux
Android Binder IPC for LinuxAndroid Binder IPC for Linux
Android Binder IPC for LinuxYu-Hsin Hung
 
Linux field-update-2015
Linux field-update-2015Linux field-update-2015
Linux field-update-2015Chris Simmonds
 
05.2 virtio introduction
05.2 virtio introduction05.2 virtio introduction
05.2 virtio introductionzenixls2
 

Tendances (20)

U-boot and Android Verified Boot 2.0
U-boot and Android Verified Boot 2.0U-boot and Android Verified Boot 2.0
U-boot and Android Verified Boot 2.0
 
Android IPC Mechanism
Android IPC MechanismAndroid IPC Mechanism
Android IPC Mechanism
 
Architecture Of The Linux Kernel
Architecture Of The Linux KernelArchitecture Of The Linux Kernel
Architecture Of The Linux Kernel
 
U boot porting guide for SoC
U boot porting guide for SoCU boot porting guide for SoC
U boot porting guide for SoC
 
Embedded Android : System Development - Part II (Linux device drivers)
Embedded Android : System Development - Part II (Linux device drivers)Embedded Android : System Development - Part II (Linux device drivers)
Embedded Android : System Development - Part II (Linux device drivers)
 
Linux Preempt-RT Internals
Linux Preempt-RT InternalsLinux Preempt-RT Internals
Linux Preempt-RT Internals
 
Inside Android's UI
Inside Android's UIInside Android's UI
Inside Android's UI
 
Low Level View of Android System Architecture
Low Level View of Android System ArchitectureLow Level View of Android System Architecture
Low Level View of Android System Architecture
 
Bootloaders (U-Boot)
Bootloaders (U-Boot) Bootloaders (U-Boot)
Bootloaders (U-Boot)
 
Learning AOSP - Android Linux Device Driver
Learning AOSP - Android Linux Device DriverLearning AOSP - Android Linux Device Driver
Learning AOSP - Android Linux Device Driver
 
RPM (LINUX)
RPM (LINUX)RPM (LINUX)
RPM (LINUX)
 
Scheduling in Android
Scheduling in AndroidScheduling in Android
Scheduling in Android
 
Device tree support on arm linux
Device tree support on arm linuxDevice tree support on arm linux
Device tree support on arm linux
 
Find & Locate utility Linux
Find & Locate utility LinuxFind & Locate utility Linux
Find & Locate utility Linux
 
Rootless Kubernetes
Rootless KubernetesRootless Kubernetes
Rootless Kubernetes
 
Improve Android System Component Performance
Improve Android System Component PerformanceImprove Android System Component Performance
Improve Android System Component Performance
 
Android Binder IPC for Linux
Android Binder IPC for LinuxAndroid Binder IPC for Linux
Android Binder IPC for Linux
 
Linux Kernel Overview
Linux Kernel OverviewLinux Kernel Overview
Linux Kernel Overview
 
Linux field-update-2015
Linux field-update-2015Linux field-update-2015
Linux field-update-2015
 
05.2 virtio introduction
05.2 virtio introduction05.2 virtio introduction
05.2 virtio introduction
 

En vedette

Hardware-Assisted Rootkits & Instrumentation
Hardware-Assisted Rootkits & InstrumentationHardware-Assisted Rootkits & Instrumentation
Hardware-Assisted Rootkits & InstrumentationEndgameInc
 
Update from android kk to android l
Update from android kk to android lUpdate from android kk to android l
Update from android kk to android lBin Yang
 
Windows 10 - Endpoint Security Improvements and the Implant Since Windows 2000
Windows 10 - Endpoint Security Improvements and the Implant Since Windows 2000Windows 10 - Endpoint Security Improvements and the Implant Since Windows 2000
Windows 10 - Endpoint Security Improvements and the Implant Since Windows 2000CTruncer
 
ProbeDroid - Crafting Your Own Dynamic Instrument Tool on Android for App Beh...
ProbeDroid - Crafting Your Own Dynamic Instrument Tool on Android for App Beh...ProbeDroid - Crafting Your Own Dynamic Instrument Tool on Android for App Beh...
ProbeDroid - Crafting Your Own Dynamic Instrument Tool on Android for App Beh...ZongXian Shen
 
HKG15-300: Art's Quick Compiler: An unofficial overview
HKG15-300: Art's Quick Compiler: An unofficial overviewHKG15-300: Art's Quick Compiler: An unofficial overview
HKG15-300: Art's Quick Compiler: An unofficial overviewLinaro
 
Attacking and Defending Mobile Applications
Attacking and Defending Mobile ApplicationsAttacking and Defending Mobile Applications
Attacking and Defending Mobile ApplicationsJerod Brennen
 
Understanding the Dalvik bytecode with the Dedexer tool
Understanding the Dalvik bytecode with the Dedexer toolUnderstanding the Dalvik bytecode with the Dedexer tool
Understanding the Dalvik bytecode with the Dedexer toolGabor Paller
 
Learning by hacking - android application hacking tutorial
Learning by hacking - android application hacking tutorialLearning by hacking - android application hacking tutorial
Learning by hacking - android application hacking tutorialLandice Fu
 
Did Toyota fool the lean community for decades?
Did Toyota fool the lean community for decades?Did Toyota fool the lean community for decades?
Did Toyota fool the lean community for decades?EmielVanEst
 
AMSI: How Windows 10 Plans to Stop Script-Based Attacks and How Well It Does It
AMSI: How Windows 10 Plans to Stop Script-Based Attacks and How Well It Does ItAMSI: How Windows 10 Plans to Stop Script-Based Attacks and How Well It Does It
AMSI: How Windows 10 Plans to Stop Script-Based Attacks and How Well It Does ItNikhil Mittal
 
Women in Islam & Refutation of some Common Misconceptions
Women in Islam & Refutation of some Common MisconceptionsWomen in Islam & Refutation of some Common Misconceptions
Women in Islam & Refutation of some Common MisconceptionsIslamic Invitation
 
employee-awareness-and-training-the-holy-grail-of-cybersecurity
employee-awareness-and-training-the-holy-grail-of-cybersecurityemployee-awareness-and-training-the-holy-grail-of-cybersecurity
employee-awareness-and-training-the-holy-grail-of-cybersecurityPaul Ferrillo
 
창원오피톡 창원오피방 창원오피 오피톡[ optok4] 창원op 창원건마 창원건전마사지
창원오피톡 창원오피방 창원오피 오피톡[ optok4] 창원op 창원건마 창원건전마사지창원오피톡 창원오피방 창원오피 오피톡[ optok4] 창원op 창원건마 창원건전마사지
창원오피톡 창원오피방 창원오피 오피톡[ optok4] 창원op 창원건마 창원건전마사지tok opop
 
Los 12 mandamientos del periodista
Los 12 mandamientos del periodistaLos 12 mandamientos del periodista
Los 12 mandamientos del periodistaIgnacioRamosMancheno
 
Calendrier des activités de JEADER _ AFRIQUE _ 2016
Calendrier des activités de JEADER  _ AFRIQUE _ 2016 Calendrier des activités de JEADER  _ AFRIQUE _ 2016
Calendrier des activités de JEADER _ AFRIQUE _ 2016 JEADER
 

En vedette (20)

Hardware-Assisted Rootkits & Instrumentation
Hardware-Assisted Rootkits & InstrumentationHardware-Assisted Rootkits & Instrumentation
Hardware-Assisted Rootkits & Instrumentation
 
Update from android kk to android l
Update from android kk to android lUpdate from android kk to android l
Update from android kk to android l
 
Windows 10 - Endpoint Security Improvements and the Implant Since Windows 2000
Windows 10 - Endpoint Security Improvements and the Implant Since Windows 2000Windows 10 - Endpoint Security Improvements and the Implant Since Windows 2000
Windows 10 - Endpoint Security Improvements and the Implant Since Windows 2000
 
ProbeDroid - Crafting Your Own Dynamic Instrument Tool on Android for App Beh...
ProbeDroid - Crafting Your Own Dynamic Instrument Tool on Android for App Beh...ProbeDroid - Crafting Your Own Dynamic Instrument Tool on Android for App Beh...
ProbeDroid - Crafting Your Own Dynamic Instrument Tool on Android for App Beh...
 
HKG15-300: Art's Quick Compiler: An unofficial overview
HKG15-300: Art's Quick Compiler: An unofficial overviewHKG15-300: Art's Quick Compiler: An unofficial overview
HKG15-300: Art's Quick Compiler: An unofficial overview
 
Reverse Engineering Android Application
Reverse Engineering Android ApplicationReverse Engineering Android Application
Reverse Engineering Android Application
 
Qemu Introduction
Qemu IntroductionQemu Introduction
Qemu Introduction
 
Attacking and Defending Mobile Applications
Attacking and Defending Mobile ApplicationsAttacking and Defending Mobile Applications
Attacking and Defending Mobile Applications
 
Understanding the Dalvik bytecode with the Dedexer tool
Understanding the Dalvik bytecode with the Dedexer toolUnderstanding the Dalvik bytecode with the Dedexer tool
Understanding the Dalvik bytecode with the Dedexer tool
 
Wound Swabs basics
Wound Swabs basics Wound Swabs basics
Wound Swabs basics
 
Learning by hacking - android application hacking tutorial
Learning by hacking - android application hacking tutorialLearning by hacking - android application hacking tutorial
Learning by hacking - android application hacking tutorial
 
Did Toyota fool the lean community for decades?
Did Toyota fool the lean community for decades?Did Toyota fool the lean community for decades?
Did Toyota fool the lean community for decades?
 
AMSI: How Windows 10 Plans to Stop Script-Based Attacks and How Well It Does It
AMSI: How Windows 10 Plans to Stop Script-Based Attacks and How Well It Does ItAMSI: How Windows 10 Plans to Stop Script-Based Attacks and How Well It Does It
AMSI: How Windows 10 Plans to Stop Script-Based Attacks and How Well It Does It
 
Women in Islam & Refutation of some Common Misconceptions
Women in Islam & Refutation of some Common MisconceptionsWomen in Islam & Refutation of some Common Misconceptions
Women in Islam & Refutation of some Common Misconceptions
 
employee-awareness-and-training-the-holy-grail-of-cybersecurity
employee-awareness-and-training-the-holy-grail-of-cybersecurityemployee-awareness-and-training-the-holy-grail-of-cybersecurity
employee-awareness-and-training-the-holy-grail-of-cybersecurity
 
창원오피톡 창원오피방 창원오피 오피톡[ optok4] 창원op 창원건마 창원건전마사지
창원오피톡 창원오피방 창원오피 오피톡[ optok4] 창원op 창원건마 창원건전마사지창원오피톡 창원오피방 창원오피 오피톡[ optok4] 창원op 창원건마 창원건전마사지
창원오피톡 창원오피방 창원오피 오피톡[ optok4] 창원op 창원건마 창원건전마사지
 
Los 12 mandamientos del periodista
Los 12 mandamientos del periodistaLos 12 mandamientos del periodista
Los 12 mandamientos del periodista
 
Calendrier des activités de JEADER _ AFRIQUE _ 2016
Calendrier des activités de JEADER  _ AFRIQUE _ 2016 Calendrier des activités de JEADER  _ AFRIQUE _ 2016
Calendrier des activités de JEADER _ AFRIQUE _ 2016
 
Sri Lankan Tours
Sri Lankan  ToursSri Lankan  Tours
Sri Lankan Tours
 
Portadas nacionales 22 marzo-17
Portadas nacionales 22 marzo-17Portadas nacionales 22 marzo-17
Portadas nacionales 22 marzo-17
 

Similaire à Toward dynamic analysis of obfuscated android malware

1 java programming- introduction
1  java programming- introduction1  java programming- introduction
1 java programming- introductionjyoti_lakhani
 
Auscert 2022 - log4shell and history of Java deserialisation RCE
Auscert 2022 - log4shell and history of Java deserialisation RCEAuscert 2022 - log4shell and history of Java deserialisation RCE
Auscert 2022 - log4shell and history of Java deserialisation RCEDavid Jorm
 
iOS Application Penetration Testing for Beginners
iOS Application Penetration Testing for BeginnersiOS Application Penetration Testing for Beginners
iOS Application Penetration Testing for BeginnersRyanISI
 
Real World Application Threat Modelling By Example
Real World Application Threat Modelling By ExampleReal World Application Threat Modelling By Example
Real World Application Threat Modelling By ExampleNCC Group
 
Lions, Tigers and Deers: What building zoos can teach us about securing micro...
Lions, Tigers and Deers: What building zoos can teach us about securing micro...Lions, Tigers and Deers: What building zoos can teach us about securing micro...
Lions, Tigers and Deers: What building zoos can teach us about securing micro...Sysdig
 
FIWARE Wednesday Webinars - How to Debug IoT Agents
FIWARE Wednesday Webinars - How to Debug IoT AgentsFIWARE Wednesday Webinars - How to Debug IoT Agents
FIWARE Wednesday Webinars - How to Debug IoT AgentsFIWARE
 
Introduction to Android Development and Security
Introduction to Android Development and SecurityIntroduction to Android Development and Security
Introduction to Android Development and SecurityKelwin Yang
 
Nguyen Phuong Truong Anh - Some new vulnerabilities in modern web application
Nguyen Phuong Truong Anh  - Some new vulnerabilities in modern web applicationNguyen Phuong Truong Anh  - Some new vulnerabilities in modern web application
Nguyen Phuong Truong Anh - Some new vulnerabilities in modern web applicationSecurity Bootcamp
 
PPS Java Overview Unit I.ppt
PPS Java Overview Unit I.pptPPS Java Overview Unit I.ppt
PPS Java Overview Unit I.pptRajeshSukte1
 
PPS Java Overview Unit I.ppt
PPS Java Overview Unit I.pptPPS Java Overview Unit I.ppt
PPS Java Overview Unit I.pptCDSukte
 
Byte code manipulation and instrumentalization in Java
Byte code manipulation and instrumentalization in JavaByte code manipulation and instrumentalization in Java
Byte code manipulation and instrumentalization in JavaAlex Moskvin
 
j-chap1-Basics.ppt
j-chap1-Basics.pptj-chap1-Basics.ppt
j-chap1-Basics.pptSmitaBorkar9
 
Thick Application Penetration Testing: Crash Course
Thick Application Penetration Testing: Crash CourseThick Application Penetration Testing: Crash Course
Thick Application Penetration Testing: Crash CourseScott Sutherland
 
Introduction to Dynamic Analysis of Android Application
Introduction to Dynamic Analysis of Android ApplicationIntroduction to Dynamic Analysis of Android Application
Introduction to Dynamic Analysis of Android ApplicationKelwin Yang
 
Introduction to java by priti sajja
Introduction to java by priti sajjaIntroduction to java by priti sajja
Introduction to java by priti sajjaPriti Srinivas Sajja
 
Android Application WebAPI Development Training
Android Application WebAPI Development TrainingAndroid Application WebAPI Development Training
Android Application WebAPI Development TrainingOESF Education
 

Similaire à Toward dynamic analysis of obfuscated android malware (20)

CS8392 OOP
CS8392 OOPCS8392 OOP
CS8392 OOP
 
oop unit1.pptx
oop unit1.pptxoop unit1.pptx
oop unit1.pptx
 
1 java programming- introduction
1  java programming- introduction1  java programming- introduction
1 java programming- introduction
 
Auscert 2022 - log4shell and history of Java deserialisation RCE
Auscert 2022 - log4shell and history of Java deserialisation RCEAuscert 2022 - log4shell and history of Java deserialisation RCE
Auscert 2022 - log4shell and history of Java deserialisation RCE
 
iOS Application Penetration Testing for Beginners
iOS Application Penetration Testing for BeginnersiOS Application Penetration Testing for Beginners
iOS Application Penetration Testing for Beginners
 
Real World Application Threat Modelling By Example
Real World Application Threat Modelling By ExampleReal World Application Threat Modelling By Example
Real World Application Threat Modelling By Example
 
iOS Application Exploitation
iOS Application ExploitationiOS Application Exploitation
iOS Application Exploitation
 
Lions, Tigers and Deers: What building zoos can teach us about securing micro...
Lions, Tigers and Deers: What building zoos can teach us about securing micro...Lions, Tigers and Deers: What building zoos can teach us about securing micro...
Lions, Tigers and Deers: What building zoos can teach us about securing micro...
 
FIWARE Wednesday Webinars - How to Debug IoT Agents
FIWARE Wednesday Webinars - How to Debug IoT AgentsFIWARE Wednesday Webinars - How to Debug IoT Agents
FIWARE Wednesday Webinars - How to Debug IoT Agents
 
Introduction to Android Development and Security
Introduction to Android Development and SecurityIntroduction to Android Development and Security
Introduction to Android Development and Security
 
Nguyen Phuong Truong Anh - Some new vulnerabilities in modern web application
Nguyen Phuong Truong Anh  - Some new vulnerabilities in modern web applicationNguyen Phuong Truong Anh  - Some new vulnerabilities in modern web application
Nguyen Phuong Truong Anh - Some new vulnerabilities in modern web application
 
PPS Java Overview Unit I.ppt
PPS Java Overview Unit I.pptPPS Java Overview Unit I.ppt
PPS Java Overview Unit I.ppt
 
PPS Java Overview Unit I.ppt
PPS Java Overview Unit I.pptPPS Java Overview Unit I.ppt
PPS Java Overview Unit I.ppt
 
Byte code manipulation and instrumentalization in Java
Byte code manipulation and instrumentalization in JavaByte code manipulation and instrumentalization in Java
Byte code manipulation and instrumentalization in Java
 
How to debug IoT Agents
How to debug IoT AgentsHow to debug IoT Agents
How to debug IoT Agents
 
j-chap1-Basics.ppt
j-chap1-Basics.pptj-chap1-Basics.ppt
j-chap1-Basics.ppt
 
Thick Application Penetration Testing: Crash Course
Thick Application Penetration Testing: Crash CourseThick Application Penetration Testing: Crash Course
Thick Application Penetration Testing: Crash Course
 
Introduction to Dynamic Analysis of Android Application
Introduction to Dynamic Analysis of Android ApplicationIntroduction to Dynamic Analysis of Android Application
Introduction to Dynamic Analysis of Android Application
 
Introduction to java by priti sajja
Introduction to java by priti sajjaIntroduction to java by priti sajja
Introduction to java by priti sajja
 
Android Application WebAPI Development Training
Android Application WebAPI Development TrainingAndroid Application WebAPI Development Training
Android Application WebAPI Development Training
 

Dernier

A healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfA healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfMarharyta Nedzelska
 
Odoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 EnterpriseOdoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 Enterprisepreethippts
 
Intelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmIntelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmSujith Sukumaran
 
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company OdishaBalasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odishasmiwainfosol
 
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024StefanoLambiase
 
Best Web Development Agency- Idiosys USA.pdf
Best Web Development Agency- Idiosys USA.pdfBest Web Development Agency- Idiosys USA.pdf
Best Web Development Agency- Idiosys USA.pdfIdiosysTechnologies1
 
Introduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfIntroduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfFerryKemperman
 
Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Velvetech LLC
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based projectAnoyGreter
 
PREDICTING RIVER WATER QUALITY ppt presentation
PREDICTING  RIVER  WATER QUALITY  ppt presentationPREDICTING  RIVER  WATER QUALITY  ppt presentation
PREDICTING RIVER WATER QUALITY ppt presentationvaddepallysandeep122
 
Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesPhilip Schwarz
 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEOrtus Solutions, Corp
 
What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...Technogeeks
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWave PLM
 
What are the key points to focus on before starting to learn ETL Development....
What are the key points to focus on before starting to learn ETL Development....What are the key points to focus on before starting to learn ETL Development....
What are the key points to focus on before starting to learn ETL Development....kzayra69
 
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...OnePlan Solutions
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanyChristoph Pohl
 
CRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceCRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceBrainSell Technologies
 
How to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationHow to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationBradBedford3
 
Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Hr365.us smith
 

Dernier (20)

A healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfA healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdf
 
Odoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 EnterpriseOdoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 Enterprise
 
Intelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmIntelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalm
 
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company OdishaBalasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
 
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
 
Best Web Development Agency- Idiosys USA.pdf
Best Web Development Agency- Idiosys USA.pdfBest Web Development Agency- Idiosys USA.pdf
Best Web Development Agency- Idiosys USA.pdf
 
Introduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfIntroduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdf
 
Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based project
 
PREDICTING RIVER WATER QUALITY ppt presentation
PREDICTING  RIVER  WATER QUALITY  ppt presentationPREDICTING  RIVER  WATER QUALITY  ppt presentation
PREDICTING RIVER WATER QUALITY ppt presentation
 
Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a series
 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
 
What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need It
 
What are the key points to focus on before starting to learn ETL Development....
What are the key points to focus on before starting to learn ETL Development....What are the key points to focus on before starting to learn ETL Development....
What are the key points to focus on before starting to learn ETL Development....
 
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
 
CRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceCRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. Salesforce
 
How to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationHow to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion Application
 
Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)
 

Toward dynamic analysis of obfuscated android malware

  • 1. Toward Dynamic Analysis of Obfuscated Android Malware ZongXian Shen
  • 2. About Me • Passionate Security Researcher and Developer • Earned Master in CS from NCTU,Taiwan • Now the system engineer @appier andy.zsshen@gmail.com ZSShen @AndyZSShen ZongXian Shen
  • 3. Outline • Android runtime quick review - p3 • Fighting encrypted DEX code - p29 • Fighting native protector – p60
  • 6. ServiceManager A Linux Daemon • Marshall framework Binder inter process communication • Record the information of each started servers (framework services) • Offer the interface for clients (apps or framework services) to access servers
  • 7. Zygote Original framework process and Java world creator • Initialize Android Runtime • Fork the framework service process SystemServer • Wait for the app forking task requested from ActivityManagerService
  • 8. Framework Services Specialized service threads forked from SystemServer • App lifecycle management • Package installation • Media and Personalization • Power and Network • and etc …
  • 9. Startup of Java World In system/core/rootdir/init.zygote.rc service zygote /system/bin/app_process -Xzygote /system/bin --zygote --start-system-server class main socket zygote stream 660 root system onrestart write /sys/android_power/request_state wake onrestart write /sys/power/state on onrestart restart media onrestart restart netd Zygote startup command Unix domain socket created to interact with ActivityManagerService framework/base/cmds/app_process/app_main.cpp Zygote Native Source Entry Zygote Creation
  • 10. app_main.cpp Zygote Process Memory Zygote Initialization
  • 11. libart.so app_main.cpp runtime.cc 1. Load theVM library into memory Zygote Process Memory Zygote Initialization
  • 12. libart.so app_main.cpp runtime.cc 1. Load theVM library into memory 2. Transfer to ART entry Zygote Process Memory Zygote Initialization
  • 13. libart.so app_main.cpp runtime.cc boot.oat 1. Load theVM library into memory 2. Transfer to ART entry 3. Load the precompiled framework Java libraries Dex Info & Bytecode Native code Zygote Process Memory Zygote Initialization
  • 14. libart.so app_main.cpp runtime.cc boot.oat 1. Load theVM library into memory 2. Transfer to ART entry 3. Load the precompiled framework Java libraries 4. Link the indexes to access • Java class members • Method bytecode & its compiled native code Dex ClassField Method Dex Info & Bytecode Native code Zygote Process Memory Zygote Initialization
  • 15. libart.so app_main.cpp runtime.cc boot.oat 1. Load theVM library into memory 2. Transfer to ART entry 3. Load the precompiled framework Java libraries 4. Link the indexes to access • Java class members • Method bytecode & its compiled native code Dex ClassField Method Dex Info & Bytecode Native code 5. Find and transfer to Zygote Java entry Zygote Process Memory Zygote Initialization
  • 16. Zygote Initialization 1. framework/base/core/jni/AndroidRuntime.cpp 2. libnativehelper/JniInvocation.cpp 3. art/runtime/jni_internal.cpp 4. libnativehelper/include/nativehelper/jni.h Load libart.so Transfer to libart.so • Initialize ART environment • Load the framework libraries • Index to class definitions Find and transfer to Zygote java entry 1 2 3 4
  • 17. ART Initialization • The heart of Zygote initialization • Many complicated tasks like initializing theVM memory layout and the garbage collector • We focus on how ART find the specified class and link to the method code – Class Linking
  • 18. Class Linking • Open the container file in the specified class path • Classes are compiled and wrapped in Oat file • Map the located Oat file into memory • The class field and method definition • The method bytecode and its compiled native code • Link the indexes for class member access • Transfer from ART to a certain compiled method • Transfer between compiled methods
  • 20. ART to Method Native Code JNIEnv::GetStaticMethodId() JNIEnv::CallStaticVoidMethod() ArtMethod::Invoke() art_quick_invoke_stub() entry_point_from_quick_compiled_code() Get ArtMethod pointer Construct native call stack Dive into method native code
  • 21. Between Method Native Code 0x00: sget-object v0, Ljava/util/ArrayList; org.dsns.cleango.CleanGo.gRecord 0x02: invoke-virtual {v3}, java.lang.String java.lang.Object.toString() 0x05: move-result-object v1 0x06: invoke-virtual {v0, v1}, boolean java.util.ArrayList.add(java.lang.Object) …… dex PC: 0x00 …… ldr.w r6, [r0, #432] mov r1, r8 ldr r0, [r1, #0] dex PC: 0x02 ldr.w r0, [r0, #396] ldr.w lr, [r0, #40] blx lr …… Native Code Get Object object Get toString() ArtMethod pointer Get entry to compiled native code Branch and link to the callee Dex Bytecode
  • 22. ART constructs the indexes to access the class members of framework libraries Let’s see how boot oat is processed
  • 23. Oat Format DEX Info & Byte Code Compiled Methods The Elf file embedded with • DEX files bundling definition of classes • Compiled method native codes • Links between class definition & native code
  • 24. Oat File Parsing • Iterate through each DEX item • Parse DEX structure to resolve all the bundled class definitions • Class field and method definition • Method bytecode body • Use class and method definition ids to access the Oat indexes for method native code
  • 25. DEX Class Member Indexing DEX Method Bytecode
  • 27. After initialization,ART transfer to the first Java world method ZygoteInit.main() JNIEnv::FindClass() JNIEnv::GetStaticMethod() JNIEnv::CallStaticVoidMethod()
  • 28. Zygote Routine in Java World Initialize the domain socket to interact with ActivityManagerService Fork SystemServer process which further forks framework service threads Wait for the request from ActivityManageService 1. framework/base/core/java/com/android/internal/os/Zygote.java 2. framework/base/core/java/com/android/internal/os/RuntimeInit.java 1 2
  • 30. Sample1 – Encrypted DEX Code File: Fobus.apk Sha1: 4a56c57b6731533e174c94745524a3bd4fe13313 VirusTotal: https://goo.gl/IldlLJ
  • 31. Fobus Surface Info Requested Permissions Telephony related privilege for potential: • Sensitive information stealing • Premium rate service dialing
  • 32. Fobus Surface Info Component Definition Activated when SMS received Activated when boot completed Activated when device admin privilege is granted/canceled Component names are obfuscated
  • 33. Fobus Surface Info Resource Definition Disguise itself as legal Android updater Nice description to cheat naïve victims App icon after installation
  • 34. Fobus Surface Info How about the Code Significant Obfuscation !
  • 35. Fighting Encrypted DEX Code • Emulator – Genymotion • https://www.genymotion.com/download/ • Debugging tool – Android Studio • https://developer.android.com/studio/index.html • DEX tracing plugin – Smalidea • https://github.com/JesusFreke/smali/wiki/smalidea
  • 36. Fobus Analysis Preparation 1. Select the target API level (API 18 for Fobus malware) 2. Turn on Android SDK tools for the created device CreateVirtual Device
  • 37. Fobus Analysis Preparation Install Smalidea Plugin Download the newest Smalidea package and install it as Studio plugin
  • 38. Fobus Analysis Preparation Import Fobus Smali 1. Import the existing Smali artifacts as Studo project 2. Set the source root for the newly created project
  • 39. Fobus Analysis Preparation Repackage Fobus 1. Turn on the debug flag in Manifest java -jar apktool.jar b Fobus -o FobusDbg.apk 2. Apply Apktool to repackage the sample keytool -genkeypair -alias mykey_alias -keyalg RSA -validity 128 -keystore mykey 3. Create the package key if necessary jarsigner -keystore mykey -signedjar FobusDbg.apk FobusDbg.apk maykey_alias 4. Sign the package with our key Target Source
  • 40. Fobus Analysis Preparation Install and Launch Fobus adb shell am start -D -n com.zwodrxcj.xnynjps/.L 1. Drag and drop the package for setup 2. Launch the main activity of Fobus Package/MainActivity 3. Time to start our Smali debugging
  • 41. Fobus Analysis Preparation Attach to Fobus 1. Open Android Device Monitor 2. Create a remote debugging configuration bound to port 8700
  • 42. Fobus Analysis Preparation Attach to Fobus 3. Set our first break point in the constructor of Fobus Application class 4. Run debugging and we should stop at the break point
  • 43. Fobus Analysis Objective • Tracing the code decryption and loading logic • Dynamic String and class decryption • Java reflection for class loading and member resolving • Realizing the anti-tamper technique • Original signing certificate for code decryption to prevent software repackaging • Tiptoeing through part of the malicious actions
  • 44. Fobus Analysis Overloaded Appliation.onCreate() which is actually the common decryption routine • The frequently appearing behavior footprint • Put the encrypted content in a virtual register • Invoke the decryption routine • Set the decrypted result in that register How do we see the decrypted result? Dynamic Content Decryption
  • 45. Fobus Analysis Right click the register and add it to the watch list before/after the decryption Dynamic Content Decryption
  • 46. Fobus Analysis 1. Decrypt the class name com.zwodrxcj.xnynjps.Application$RA 2. Resolve the class type 3. Resolve the constructor 4. Prepare the input argument 5. Create the class instance via the specified constructor Decryption & Java Reflection
  • 47. Fobus Analysis Drop the Encrypted Package 1. Decrypt the package embedded in a constant string 2. Drop the package in {PRIVATE}/app_dex/new.apk and apply DexFile.loadDex() to load the 2nd layer code CFG of Application.dfae()
  • 48. Fobus Analysis Deploy 2nd Layer Analysis java -jar apktool.jar d new.apk 1. Extract the decrypted payload from {PRIVATE}/app_dex/new.apk 2. Disassemble and copy the smali files into our Studio project 3. Set the break point in that class
  • 49. Fobus Analysis Dive into 2nd Layer Delete the dropped package Load Application$d class Resolve its unpack() method Call to Application$d.unpack() Tasks after the 2nd DEX file is loaded A more stealthy decryption routine which restores the protected malicious code
  • 50. Fobus Analysis Anti-Tamper Technique Entry of Application$d.unpack() 1. Get the signing certificate associated with the APK 2. Apply the 1st signature for decryption later
  • 51. Fobus Analysis Anti-Tamper Technique Entry of Application$d.unpack() Open the classes.dex file in assets Not DEX magic, the file is actually encrypted
  • 52. Fobus Analysis Anti-Tamper Technique CFG of Application$d.unpack() 1. Call to Application$decrypt() with the APK signing signature for decryption 2. Still drop the package to {PRIVATE}/app_dex/new.apk 3. Apply DexFile.loadDex() to load the 3rd layer code
  • 53. Fobus Analysis Anti-Tamper Technique • Since we repackage the sample, the 3rd layer code will not be presented due to wrong signature • Two possible solutions • Debug the original sample in the custom ROM with modified default.prop • Use dynamic instrumentation to mimic the signature
  • 54. Fobus Analysis Deploy 3rd Layer Analysis 1. Disassemble the package and we get the main Activity component 2. Import the Smali files and set the break points on that Activity
  • 55. • Focusing on the critical parts • Registering itself as the device administrator to prevent uninstallation • Sniffing incoming SMS messages and performing premium rate dialing • Key point to capture the complete behavior • Set break points at the “onXYZ()” series callbacks to follow the implicit control flow Fobus Analysis Malicious Behavior Exploration
  • 56. Fobus Analysis Register the repeating launch of “A” and “T” services to AlarmManager Tiptoe through the Darkness Is admin privilege granted ? Call to “L.b()” Call to “L.a()” to start admin request activity CFG of “L.onCreate()” Background Services • “T” monitors the activation of admin privilege • “A” handles the telephony relevant hacking Initially, the control flow should fall through here
  • 57. Fobus Analysis Acquire Admin Privilege Still string encryption in unpacked malicious code Start the activity to request admin privilege Activation of L.a()
  • 58. Fobus Analysis Lure naïve victims to grant the admin privilege Activation of L.onActivityResult() After privilege granted Start to hide itself Acquire Admin Privilege
  • 59. Fobus Analysis Hide App IconEntry of L.b() COMPONENT_ENABLED_STATE_DISABLED DONT_KILL_APP Apply PackageManager. setComponentEnabledSetting() to hide the app icon
  • 60. Fobus Analysis Prevent Uninstallation If the victim tries to deactivate the admin privilege acquired by Fobus Activation of AD.onDisableRequested() The defense is triggered The screen will be locked
  • 61. Sample2 – Native Protector File: Locker.apk Sha1: 3d0e995d4a795ab4c59b4285f62c4c4585c11fa6 VirusTotal: https://goo.gl/o2oG1i
  • 62. Locker Surface Info Manifest Analysis Highly suspicious permission usage for potential privacy leak
  • 63. Locker Surface Info Manifest Analysis Disguise itself as the phone performance booster to lure Chinese users App icon after installation Activated when device admin privilege is granted
  • 64. Locker Surface Info How about the Code The app logic is hidden and protected in the native shared library
  • 65. Fighting Native Protector • Emulator – SDKVirtual Device, Genymotion • Debugging tool – IDAPro, Android Studio • https://www.hex-rays.com/products/ida/ • Dynamic Instrument Framework – Xposed • http://repo.xposed.info/ • ELF related stuff – readelf, oat2dexes • https://github.com/wuyongzheng/oat2dexes
  • 66. Unpacking Library StaticView 1. Try to disassemble libsecexe.so 2. Cannot be processed due to the corrupt section header table
  • 67. Unpacking Library StaticView Truncated Section Header Table Metadata to index section header table are all wiped out
  • 69. Library Loading Review 1. bionic/linker/dlfcn.cpp 2. bionic/linker/linker.cpp 3. bionic/linker/linker_phdr.cpp 1 2 3 Dynamic linker/loader relies on program header table to load segments for library execution Section header table is “don’t care” here
  • 70.  Hard to statically analyze the library code Must emulate the linker/loader behavior  How about dynamic tracing ? Must realize the timings to set break points Things to Think
  • 71. Unpacking Library StaticView Dynamic Segment Important information for the linker/loader • Dependent libraries • Symbols and Strings • Address of relocation table • Library initialization functions Defined in art/runtime/elf.h
  • 72. Unpacking Library StaticView Initialization Function Library initializers specified with __attribute__((constructor)) or __attribute__((section(“.init_array”))) which will be first executed by the linker/loader when the library is loaded into memory
  • 73. Library Loading Review Cont. 1. bionic/linker/linker.cpp 1 Invoke the library initializer stored in .init section Invoke the library initializers stored in .init_array sectionWe can force the debugger to stop at soinfo::CallFunction() to monitor the library initialization
  • 74. Library Tracing Preparation CreateVirtual Device 1. Choose the phone device definition 2. Select the armeabi-v7a image with API level 21
  • 75. Library Tracing Preparation Set Debug Server 1. Push the IDAPro Android debug server under /dbgserv into the emulator adb push android_server /data/local/tmp chmod 755 /data/local/tmp/android_server 2. Launch the debug server in the emulator adb forward tcp:23946 tcp:23946 3. Forward the default port for the debug server In Guest
  • 76. Library Tracing Preparation Launch and Install Locker adb shell am start -D -n tx.qq898507339.bzy9/tx.qq898507339.bzy9.MainActivity 2. Launch the main activity of Locker Package/MainActivity 1. Install the Locker package 3. Time to start our IDA debugging
  • 77. Library Tracing Preparation Attach to Target Process 1. Attach to the remote Android debug server 2. Specify the server address 3. Force the debugger to stop at image load/unload
  • 78. Library Tracing Preparation Attach to Target Process Attach to Locker process and wait for IDA to initialize debugging session
  • 79. Library Tracing Preparation Resume the Paused Process 1. Open Android Device Monitor jdb -connect com.sun.jdi.SocketAttach:hostname=127.0.0.1,port=8700 2. Release the process paused by JDWP 3. Start IDA debugging session
  • 80. Library Tracing Stop at Library Loading Before monitoring library initializers, there is a worth noting attribute
  • 81. Library Tracing Packed Unpacking Library Before Dex unpacking, we must conquer the library packing first
  • 82. Library Tracing Dive into Library Initializer Set the break point at soinfo::CallFunction()
  • 83. Library Tracing Dive into Library Initializer Set the break point at library initializer entry
  • 84.  Is it really necessary to trace the unpacking logic ?  How about set the break point at JNI_OnLoad() to check the result ? Things to Think
  • 85. Library Tracing Trapped by Anti-DebugTricks Set the break point at JNI_OnLoad() and resume the process Not that easy, some anti-debug tricks set in the unpacking logic
  • 86. Library Tracing Code around the Targeted SysCalls SysCall #C0 means mmap() which may relate to the unpacked data
  • 87. Library Tracing SVC Call #7D means mprotect() which may relate to unpacking logic Change a memory block with PROT_READ ^ PROT_EXEC permission and jump to it for execution Code around the Targeted SysCalls The successive code block of the previous snippet
  • 88.  Is there more efficient approach to catch the unpacked original DEX ? Back to DEX level, can we set the break point at DexClassLoader.<init>() ? Things to Think The list of jar/apk files containing classes and resources We can get the original DEX via the intercepted path string
  • 89. Unpacking Wrapper Tracing Original DEX Loader The call trace to create the class loader for the original DEX Set the break point here to intercept the original DEX
  • 90. Unpacking Wrapper Tracing Intercept the Original DEX adb pull /data/data/tx.qq898507339.bzy9/.cache/classes.jar Pull out the DEX file for further analysis
  • 91. Unpacking Wrapper Tracing Intercept the Original DEX Not a valid DEX file and still packed The protector may implement its own class loading procedure to evade analysis
  • 92.  Is it possible for the protector to fully re- implements the class loading procedure ?  The procedure crossing Java and native scope is quite complicated  Likely, it unpacks in some hooked native functions and passes the legal DEX to the procedure Things to Think
  • 93. Class Loader Tracing Work in the native scope for class loading and linking Return the valid address of the linked declaring DexFileAfter DexFile.loadDex(), the legal DexFile and its containing Oat file should lie in memory Deeper Inspection
  • 94. Dynamic Binary Instrumentation • How do we • Intercept the timing after DexFile.loadDex() finished • Scan the process memory for Oat file magic • Dump the Oat file from memory • Here comes the DBI gadget based on Xposed
  • 95. Xposed DBI Deployment 1. Apply GenyMotion emulator with API Level 21 for Locker malware 2. After device booting up, install GenyFlash for Xposed deployment https://github.com/rovo89/GenyFlash CreateVirtual Device
  • 96. Xposed DBI Deployment Install Framework1. Drag and drop the package for installation 2. Reboot the device for Xposed activation
  • 97. DBI Gadget Development Android Studio Project Setup 1. Link the Xposed library 2. Create the asset file to hint Xposed Please refer to https://github.com/rovo89/XposedBridge/w iki/Development-tutorial for more details
  • 98. DBI Gadget Development Dex File Hunter Key Steps • Java scope 1. Stall the process after DexFile.loadDex() finished 2. Invoke the JNI to scan the process memory • Native scope 3. Open /proc/self/map to hunt for the segments “/data/data/tx.qq898507339.bzy9/.cache/classes.dex” 4. Dump the segments
  • 99. DBI Gadget Development Craft DEX File Hunter 1. Load the native memory scanner 2. Hint Xposed to hook the method DexFile.loadDex() 3. Start to hunt for the unpacked result loaded in memory
  • 100. DBI Gadget Development Craft DEX File Hunter 1. Open /proc/self/map 2. Pinpoint the memory segments which are the possible unpacked result 3. Dump the segments for further analysis
  • 101. Locker Unpacking Final Deploy DBI Gadget 1. Drag and drop the package for installation 2. Activate our Xposed module (Remember to reboot the device) 3. Push the native memory scanner to /system/lib
  • 102. Locker Unpacking Final Run Locker for UnpackingDexFileHunter Java scope log Native scope log
  • 103. Locker Unpacking Final Extract the Unpacked Code Legal Oat file structure Extract the DEX embedded in the Oat file
  • 105. Locker Unpacking Final Finally, the Main Entry C&C action to lock the victim’s screen OK, we end here to close the complete unpacking story See https://github.com/ZSShen/XposedGadget for the related source