SlideShare a Scribd company logo
1
James Wyke
Senior Threat Researcher
Extracting Forensic
Information from Zeus
Derivatives
SOURCE Dublin 2014
22
Agenda
3
Agenda
• Zeus and derivatives overview
• What information do we want to extract and why?
• How do we extract the information?
• Automation
• Conclusion
44
Zeus and Derivatives
5
Zeus and Derivatives
• Highly successful kit
• Source code leaked 2011
• New variants – Citadel, IceIX, KINS, Gameover + many more
• Leaked code also widely used with few or no modifications
• Many variants successful in their own right
• More builders leaked
6
Zeus and Derivatives
• Variant prevalence:
Citadel
19%
Ice9
8%
P2P
31%
2.0.8.9 Based
17%
KINS
12%
Other
13%
Typical Weekly Breakdown
Citadel
Ice9
P2P
2.0.8.9 Based
KINS
Other
77
What information do
we want to extract?
8
High Level Goals
• What was stolen?
○ Network traffic
○ Cache data
• Where was data sent?
○ Drop zone URLs
○ Config file URLs
○ Backup URLs
• What changes were made?
○ Commands executed
○ Web injects – config data
• Who were the attackers?
○ Tracking
9
How to Achieve These Goals?
• C2 addresses
○ Extract from binary, config file, network traffic captures
• Stolen data
○ Decrypt network data, cache files
• Configuration files
○ Obtain, decrypt, decipher config data
○ Webinjects, filters, targeted processes
• Runtime information
○ Exe path, registry keys etc
• Store and track data
○ Keys, URLs, customisations
1010
How do we extract
the information?
11
Key Variants
• Leaked Zeus (2.0.8.9)
○ Original codebase
○ Same process will work for many minor variations
• IceIX
○ Encryption algorithm changes
○ Config file retrieval complications
• Citadel (1.3.5.1)
○ Encryption heavily rewritten
○ More config file retrieval changes
• Gameover
○ Peer 2 peer
• KINS
○ VM based decryption routine
12
Zeus 2.0.8.9
• Config file URL
• Retrieve, decrypt, decipher config file
• Assess stolen data – decrypt network traffic, cache file
• Read runtime information
13
Zeus 2.0.8.9
• Static config details embedded in binary
• Config block XOR encrypted
• Find block offset and XOR key
Config file URL
14
Zeus 2.0.8.9
Config URL
15
Zeus 2.0.8.9
• Regexp search, e.g:
○ "[x50-x57][xb8-xbf].{2}x00x00[x50-x57]x68.{4}[x50-
x57]xe8.{4}x8b.{5}x03“
• Key always at start of ‘.reloc’ section
• Key length = size of StaticConfig
• StaticConfig also contains RC4 key
Config URL
16
Zeus 2.0.8.9
• Retrieved with simple Get request to URL
• RC4 decrypt
○ Using key from StaticConfig (no key scheduling stage)
• VisualDecrypt
○ for (m = (Size-1); m >0; m--)
○ Data[m] = Data[m] ^ Data[m-1]
• Decompress compressed blocks
○ nrv2b
• Covert to something more readable
○ XML is an option
Config File
17
Zeus 2.0.8.9
• Common to many subsequent variants
• Config header structure:
Config file structure
Offset Size Value
0x0 0x14 Random data
0x14 0x4 Size of config file
0x18 0x4 Flags (usually 0)
0x1c 0x4
Number of
Blocks
0x20 0x10 MD5 of data
0x30 … Config blocks
18
Zeus 2.0.8.9
• Config blocks – header then data
• Config block header structure:
Config file structure
Offset Size Value
0x0 0x4 Block ID
0x4 0x4
Flags, e.g.
compressed
0x8 0x4
Compressed
size
0xc 0x4
Decompressed
size
19
Zeus 2.0.8.9
• Block ID identifies specific type of config entry e.g. version,
new exe url, drop zone url, web injects
• Leaked source indicates what each binary value means
• Conversion to XML makes the data easier to interpret:
Config file structure
20
Zeus 2.0.8.9
• Network data
○ RC4 decrypt using key from StaticConfig
○ Data is structured similar to config data
• Cache data
○ Temporary store of data before sending back to drop zone
○ Structure:
Stolen data
Offset Size Value
0x0 0x4
Xor encoded
size of block
0x4 0x1 0
0x5 ??
First encrypted
block
21
Zeus 2.0.8.9
• XOR key stored in runtime data at offset 0x1e2
• Blocks encrypted with VisualEncrypt + RC4
• New RC4 key from runtime data
• Blocks have same structure as network data
• Cache gets deleted when data sent over network
Cache data
22
Zeus 2.0.8.9
• Dynamically created block written by dropper
• See
https://code.google.com/p/volatility/source/browse/trunk/con
trib/plugins/malware/zeusscan.py for structure
• Key fields:
○ RC4 key – encrypting cache data
○ XORkey – cache data block sizes
• Also, registry keys, exe file name, cache file name etc.
Runtime information
23
Zeus 2.0.8.9
• Find block in dump:
• Often appended to file
Runtime information
24
IceIX
• Same goals
○ Config file URL
○ Retrieve, decrypt, decipher config file
○ Assess stolen data – decrypt network traffic, cache file
○ Read runtime information
• How do we identify?
• What are the differences?
25
IceIX
• Config file URL by default ends with config.php
• Strings: “bn=1” and “&sk=1”
• Modified RC4 routine:
Identification
26
IceIX
• RC4 changes
• Config file retrieval requires structured POST request
Modifications
27
IceIX
• Classic:
• Modified:
RC4 changes
28
IceIX
• POST request requires special format or config file is not
delivered
• POST data format:
bn=<BOTID string>&sk=<MD5 of encrypted BOTID string>
• BOTID generated per machine, e.g.: MYPC_737574566769_474
• Encrypted using modified RC4 with key from StaticConfig
• All POST data encrypted before being sent
Config file retrieval
29
Citadel
• Giveaway string:
○ 'Coded by BRIAN KREBS for personal use only. I love my job & wife.‘
• Version number:
• Maybe further strings:
○ cit_ffcookie.module, cit_video.module
Identification
30
Citadel
• Encryption process rewritten – AES + RC4, multiple keys
• Formatted POST request for config file retrieval
• Backup config file URLs
Modifications
31
Citadel
• RC4 has XOR on top with LOGIN_KEY
○ Extra key generated at build time e.g.:
○ "C1F20D2340B519056A7D89B7DF4B0FFF"
• Config data encrypted with AES
• Network traffic requires generating a new RC4 key
Encryption process
32
• Extra non-standard
permutation
• Need to extract salt
value
• All network traffic
encrypted in this way
Citadel
Config file retrieval
33
Citadel
• Formatted similar to config data – header with 2 data blocks
• Block ID 0x2725 – contains the login_key
• Block ID 0x2726 – file name from config URL:
○ http://pubber.ru/images/greater/wisdom/file.php|file=config.dll
○ Everything after the ‘|’ goes in the block data
POST data
34
Citadel
• Switch case based on DWORD value:
POST data custom permutation
35
Citadel
• Python:
POST data custom permutation
36
Citadel
Config file decryption
• RC4 key from StaticConfig
• login_key
• 128-bit config XOR key
37
Citadel
• Found in the AES routine:
Extra config key
38
Gameover/P2P
• Command strings used in the P2P protocol:
○ OPTIONS
○ PROPFIND
○ PROPPATCH
○ SEARCH
○ UNLOCK
○ REPORT
○ MKACTIVITY
○ CHECKOUT
○ M-SEARCH
○ NOTIFY
○ SUBSCRIBE
○ UNSUBSCRIBE
Identification
39
Gameover/P2P
• Static peer list
○ Each peer has its own RC4 key
• Connect to P2P network to retrieve config
• Zlib compression
• https://github.com/arbor/zeus_gameover-re
Modifications
40
KINS/VMZeus
• VM based StaticConfig decryption
• Embedded byte code determines which VM handler is
executed on which byte of ciphertext
• Embedded opcode handler table
• Each element of bytecode is an index into the handler table
Modifications
41
KINS/VMZeus
• Find the entry to the VM handler:
Identification
42
KINS
• RC4 key is in the StaticConfig but now much harder to decrypt
• Need to replicate the handler sequence by running the
bytecode through the handler table
• Leaked KINS source: source/common/configcrypt.cpp
• But handler table order is shuffled by the builder so we must
work out the correct order dynamically for each sample
Key extraction
4343
Automation
44
Automation
• As part of sandbox analysis – e.g. cuckoo
○ Process dump
○ Key extraction and data decryption as part of a processing module
○ Analyzer module to perform the retrieval for non-executing samples
• Volatility
○ Key and data extraction from a memory dump
○ https://code.google.com/p/volatility/source/browse/trunk/contrib/plugin
s/malware/zeusscan.py
4545
Conclusion
46
Conclusion
• Many successful and widespread variants spawned from Zeus
code
• More builders and source code leaked, many variants still
being actively developed
• Despite some significant modifications, new variants are
incremental
• Tools can be updated relatively easy for modifications
47© Sophos Ltd. All rights reserved.

More Related Content

What's hot (20)

PDF
Signing DNSSEC answers on the fly at the edge: challenges and solutions
APNIC
 
ODP
Get the most out of your security logs using syslog-ng
Peter Czanik
 
PPTX
(Ab)Using GPOs for Active Directory Pwnage
Petros Koutroumpis
 
PDF
SCaLE 2016 - syslog-ng: From Raw Data to Big Data
BalaBit
 
PDF
OpenStack Paris Summit: Bridges and Tunnels: A Drive Through OpenStack Networ...
markmcclain
 
PDF
Bridges and Tunnels a Drive Through OpenStack Networking
markmcclain
 
PPTX
ION Bucharest - DANE-DNSSEC-TLS
Deploy360 Programme (Internet Society)
 
PDF
Разведка в сетях IPv6
Positive Hack Days
 
PDF
HTTPプロクシライブラリproxy2の設計と実装
inaz2
 
PDF
CNIT 40: 6: DNSSEC and beyond
Sam Bowne
 
PPTX
BlueHat v17 || Dyre to Trickbot: An Inside Look at TLS-Encrypted Command-And-...
BlueHat Security Conference
 
PPTX
BSides SG Practical Red Teaming Workshop
Ajay Choudhary
 
PDF
Securing Data in Transit -
wolfSSL
 
PPTX
DoH, DoT and ESNI
Jisc
 
PDF
CNIT 40: 5: Prevention, protection, and mitigation of DNS service disruption
Sam Bowne
 
PDF
Jose Selvi - Side-Channels Uncovered [rootedvlc2018]
RootedCON
 
PPTX
DANE/DNSSEC/TLS Testing in the go6Lab - ION Cape Town
Deploy360 Programme (Internet Society)
 
PDF
Encrypted DNS - DNS over TLS / DNS over HTTPS
Alex Mayrhofer
 
PDF
CNIT 40: 5: Prevention, protection, and mitigation of DNS service disruption
Sam Bowne
 
PDF
CNIT 40: 4: Monitoring and detecting security breaches
Sam Bowne
 
Signing DNSSEC answers on the fly at the edge: challenges and solutions
APNIC
 
Get the most out of your security logs using syslog-ng
Peter Czanik
 
(Ab)Using GPOs for Active Directory Pwnage
Petros Koutroumpis
 
SCaLE 2016 - syslog-ng: From Raw Data to Big Data
BalaBit
 
OpenStack Paris Summit: Bridges and Tunnels: A Drive Through OpenStack Networ...
markmcclain
 
Bridges and Tunnels a Drive Through OpenStack Networking
markmcclain
 
ION Bucharest - DANE-DNSSEC-TLS
Deploy360 Programme (Internet Society)
 
Разведка в сетях IPv6
Positive Hack Days
 
HTTPプロクシライブラリproxy2の設計と実装
inaz2
 
CNIT 40: 6: DNSSEC and beyond
Sam Bowne
 
BlueHat v17 || Dyre to Trickbot: An Inside Look at TLS-Encrypted Command-And-...
BlueHat Security Conference
 
BSides SG Practical Red Teaming Workshop
Ajay Choudhary
 
Securing Data in Transit -
wolfSSL
 
DoH, DoT and ESNI
Jisc
 
CNIT 40: 5: Prevention, protection, and mitigation of DNS service disruption
Sam Bowne
 
Jose Selvi - Side-Channels Uncovered [rootedvlc2018]
RootedCON
 
DANE/DNSSEC/TLS Testing in the go6Lab - ION Cape Town
Deploy360 Programme (Internet Society)
 
Encrypted DNS - DNS over TLS / DNS over HTTPS
Alex Mayrhofer
 
CNIT 40: 5: Prevention, protection, and mitigation of DNS service disruption
Sam Bowne
 
CNIT 40: 4: Monitoring and detecting security breaches
Sam Bowne
 

Viewers also liked (10)

PDF
iBanking - a botnet on Android
Source Conference
 
PDF
Niraj on Financial Derivatives
CA Niraj Thapa
 
PPSX
Guide to Financial Derivatives
Ruben Garcia Navarro
 
PPT
Derivatives lecture1& 2-introduction
iipmff2
 
PDF
Financial Derivatives
Maroof Hussain Sabri
 
PPTX
Applications of Derivatives
Iram Khan
 
ODP
Derivatives basic concept
Sweta Agarwal
 
PPT
Derivatives market
Nikhiliit
 
PPT
Derivatives - Classroom Presentation
Ragumoorthy Nehrumoorthy
 
PPTX
Financial derivatives ppt
Logasakthi Kandasamy
 
iBanking - a botnet on Android
Source Conference
 
Niraj on Financial Derivatives
CA Niraj Thapa
 
Guide to Financial Derivatives
Ruben Garcia Navarro
 
Derivatives lecture1& 2-introduction
iipmff2
 
Financial Derivatives
Maroof Hussain Sabri
 
Applications of Derivatives
Iram Khan
 
Derivatives basic concept
Sweta Agarwal
 
Derivatives market
Nikhiliit
 
Derivatives - Classroom Presentation
Ragumoorthy Nehrumoorthy
 
Financial derivatives ppt
Logasakthi Kandasamy
 
Ad

Similar to Extracting Forensic Information From Zeus Derivatives (20)

PPT
Intro To Hacking
nayakslideshare
 
PDF
Exploiting null byte vm
devanshdubey7
 
PDF
Linux Security Crash Course
UTD Computer Security Group
 
DOCX
Shared Coursework in Cyber Security Instructions Manual .docx
edgar6wallace88877
 
PDF
Ch 5: Port Scanning
Sam Bowne
 
PDF
Hack Attack! An Introduction to Penetration Testing
Steve Phillips
 
PDF
LasCon 2014 DevOoops
Chris Gates
 
PDF
Linux Kernel Security Overview - KCA 2009
James Morris
 
PDF
2008-03-06 Harris Corp Security Seminar
Shawn Wells
 
PPT
hacking and crecjing
parth jasani
 
PPTX
CableTap - Wirelessly Tapping Your Home Network
Christopher Grayson
 
PDF
SOHOpelessly Broken
The Security of Things Forum
 
PPTX
Tcpdump
Sourav Roy
 
PDF
Dissecting ZeuS malware
Cyphort
 
PPTX
Chapman cactus con-2015-nf_workshop
Ryan Chapman
 
PPTX
CTF CyberX-Mind4Future[4].pptx
cifoxo
 
PPTX
Hunting for APT in network logs workshop presentation
OlehLevytskyi1
 
PDF
Filip palian mateuszkocielski. simplest ownage human observed… routers
Yury Chemerkin
 
PDF
Simplest-Ownage-Human-Observed… - Routers
Logicaltrust pl
 
PPT
Attacks and Defences
SensePost
 
Intro To Hacking
nayakslideshare
 
Exploiting null byte vm
devanshdubey7
 
Linux Security Crash Course
UTD Computer Security Group
 
Shared Coursework in Cyber Security Instructions Manual .docx
edgar6wallace88877
 
Ch 5: Port Scanning
Sam Bowne
 
Hack Attack! An Introduction to Penetration Testing
Steve Phillips
 
LasCon 2014 DevOoops
Chris Gates
 
Linux Kernel Security Overview - KCA 2009
James Morris
 
2008-03-06 Harris Corp Security Seminar
Shawn Wells
 
hacking and crecjing
parth jasani
 
CableTap - Wirelessly Tapping Your Home Network
Christopher Grayson
 
SOHOpelessly Broken
The Security of Things Forum
 
Tcpdump
Sourav Roy
 
Dissecting ZeuS malware
Cyphort
 
Chapman cactus con-2015-nf_workshop
Ryan Chapman
 
CTF CyberX-Mind4Future[4].pptx
cifoxo
 
Hunting for APT in network logs workshop presentation
OlehLevytskyi1
 
Filip palian mateuszkocielski. simplest ownage human observed… routers
Yury Chemerkin
 
Simplest-Ownage-Human-Observed… - Routers
Logicaltrust pl
 
Attacks and Defences
SensePost
 
Ad

More from Source Conference (20)

PPTX
Million Browser Botnet
Source Conference
 
PPTX
I want the next generation web here SPDY QUIC
Source Conference
 
PPTX
From DNA Sequence Variation to .NET Bits and Bobs
Source Conference
 
PPTX
How to Like Social Media Network Security
Source Conference
 
PDF
Wfuzz para Penetration Testers
Source Conference
 
PDF
Security Goodness with Ruby on Rails
Source Conference
 
PDF
Securty Testing For RESTful Applications
Source Conference
 
PPSX
Esteganografia
Source Conference
 
PPTX
Men in the Server Meet the Man in the Browser
Source Conference
 
PDF
Advanced Data Exfiltration The Way Q Would Have Done It
Source Conference
 
PPTX
Adapting To The Age Of Anonymous
Source Conference
 
PDF
Are Agile And Secure Development Mutually Exclusive?
Source Conference
 
PDF
Advanced (persistent) binary planting
Source Conference
 
PPTX
Legal/technical strategies addressing data risks as perimeter shifts to Cloud
Source Conference
 
PDF
Who should the security team hire next?
Source Conference
 
PDF
The Latest Developments in Computer Crime Law
Source Conference
 
PDF
JSF Security
Source Conference
 
PPTX
How To: Find The Right Amount Of Security Spend
Source Conference
 
PPTX
Everything you should already know about MS-SQL post-exploitation
Source Conference
 
PPTX
Keynote
Source Conference
 
Million Browser Botnet
Source Conference
 
I want the next generation web here SPDY QUIC
Source Conference
 
From DNA Sequence Variation to .NET Bits and Bobs
Source Conference
 
How to Like Social Media Network Security
Source Conference
 
Wfuzz para Penetration Testers
Source Conference
 
Security Goodness with Ruby on Rails
Source Conference
 
Securty Testing For RESTful Applications
Source Conference
 
Esteganografia
Source Conference
 
Men in the Server Meet the Man in the Browser
Source Conference
 
Advanced Data Exfiltration The Way Q Would Have Done It
Source Conference
 
Adapting To The Age Of Anonymous
Source Conference
 
Are Agile And Secure Development Mutually Exclusive?
Source Conference
 
Advanced (persistent) binary planting
Source Conference
 
Legal/technical strategies addressing data risks as perimeter shifts to Cloud
Source Conference
 
Who should the security team hire next?
Source Conference
 
The Latest Developments in Computer Crime Law
Source Conference
 
JSF Security
Source Conference
 
How To: Find The Right Amount Of Security Spend
Source Conference
 
Everything you should already know about MS-SQL post-exploitation
Source Conference
 

Recently uploaded (20)

PPTX
Introduction to Flutter by Ayush Desai.pptx
ayushdesai204
 
PDF
The Future of Artificial Intelligence (AI)
Mukul
 
PPTX
AI and Robotics for Human Well-being.pptx
JAYMIN SUTHAR
 
PDF
Tea4chat - another LLM Project by Kerem Atam
a0m0rajab1
 
PDF
NewMind AI Weekly Chronicles – July’25, Week III
NewMind AI
 
PPTX
Dev Dives: Automate, test, and deploy in one place—with Unified Developer Exp...
AndreeaTom
 
PDF
MASTERDECK GRAPHSUMMIT SYDNEY (Public).pdf
Neo4j
 
PDF
Brief History of Internet - Early Days of Internet
sutharharshit158
 
PPTX
What-is-the-World-Wide-Web -- Introduction
tonifi9488
 
PPTX
Applied-Statistics-Mastering-Data-Driven-Decisions.pptx
parmaryashparmaryash
 
PDF
Economic Impact of Data Centres to the Malaysian Economy
flintglobalapac
 
PDF
Per Axbom: The spectacular lies of maps
Nexer Digital
 
PDF
AI Unleashed - Shaping the Future -Starting Today - AIOUG Yatra 2025 - For Co...
Sandesh Rao
 
PDF
GDG Cloud Munich - Intro - Luiz Carneiro - #BuildWithAI - July - Abdel.pdf
Luiz Carneiro
 
PPTX
Agile Chennai 18-19 July 2025 Ideathon | AI Powered Microfinance Literacy Gui...
AgileNetwork
 
PDF
introduction to computer hardware and sofeware
chauhanshraddha2007
 
PPTX
IT Runs Better with ThousandEyes AI-driven Assurance
ThousandEyes
 
PDF
Peak of Data & AI Encore - Real-Time Insights & Scalable Editing with ArcGIS
Safe Software
 
PDF
Research-Fundamentals-and-Topic-Development.pdf
ayesha butalia
 
PDF
Market Insight : ETH Dominance Returns
CIFDAQ
 
Introduction to Flutter by Ayush Desai.pptx
ayushdesai204
 
The Future of Artificial Intelligence (AI)
Mukul
 
AI and Robotics for Human Well-being.pptx
JAYMIN SUTHAR
 
Tea4chat - another LLM Project by Kerem Atam
a0m0rajab1
 
NewMind AI Weekly Chronicles – July’25, Week III
NewMind AI
 
Dev Dives: Automate, test, and deploy in one place—with Unified Developer Exp...
AndreeaTom
 
MASTERDECK GRAPHSUMMIT SYDNEY (Public).pdf
Neo4j
 
Brief History of Internet - Early Days of Internet
sutharharshit158
 
What-is-the-World-Wide-Web -- Introduction
tonifi9488
 
Applied-Statistics-Mastering-Data-Driven-Decisions.pptx
parmaryashparmaryash
 
Economic Impact of Data Centres to the Malaysian Economy
flintglobalapac
 
Per Axbom: The spectacular lies of maps
Nexer Digital
 
AI Unleashed - Shaping the Future -Starting Today - AIOUG Yatra 2025 - For Co...
Sandesh Rao
 
GDG Cloud Munich - Intro - Luiz Carneiro - #BuildWithAI - July - Abdel.pdf
Luiz Carneiro
 
Agile Chennai 18-19 July 2025 Ideathon | AI Powered Microfinance Literacy Gui...
AgileNetwork
 
introduction to computer hardware and sofeware
chauhanshraddha2007
 
IT Runs Better with ThousandEyes AI-driven Assurance
ThousandEyes
 
Peak of Data & AI Encore - Real-Time Insights & Scalable Editing with ArcGIS
Safe Software
 
Research-Fundamentals-and-Topic-Development.pdf
ayesha butalia
 
Market Insight : ETH Dominance Returns
CIFDAQ
 

Extracting Forensic Information From Zeus Derivatives

  • 1. 1 James Wyke Senior Threat Researcher Extracting Forensic Information from Zeus Derivatives SOURCE Dublin 2014
  • 3. 3 Agenda • Zeus and derivatives overview • What information do we want to extract and why? • How do we extract the information? • Automation • Conclusion
  • 5. 5 Zeus and Derivatives • Highly successful kit • Source code leaked 2011 • New variants – Citadel, IceIX, KINS, Gameover + many more • Leaked code also widely used with few or no modifications • Many variants successful in their own right • More builders leaked
  • 6. 6 Zeus and Derivatives • Variant prevalence: Citadel 19% Ice9 8% P2P 31% 2.0.8.9 Based 17% KINS 12% Other 13% Typical Weekly Breakdown Citadel Ice9 P2P 2.0.8.9 Based KINS Other
  • 7. 77 What information do we want to extract?
  • 8. 8 High Level Goals • What was stolen? ○ Network traffic ○ Cache data • Where was data sent? ○ Drop zone URLs ○ Config file URLs ○ Backup URLs • What changes were made? ○ Commands executed ○ Web injects – config data • Who were the attackers? ○ Tracking
  • 9. 9 How to Achieve These Goals? • C2 addresses ○ Extract from binary, config file, network traffic captures • Stolen data ○ Decrypt network data, cache files • Configuration files ○ Obtain, decrypt, decipher config data ○ Webinjects, filters, targeted processes • Runtime information ○ Exe path, registry keys etc • Store and track data ○ Keys, URLs, customisations
  • 10. 1010 How do we extract the information?
  • 11. 11 Key Variants • Leaked Zeus (2.0.8.9) ○ Original codebase ○ Same process will work for many minor variations • IceIX ○ Encryption algorithm changes ○ Config file retrieval complications • Citadel (1.3.5.1) ○ Encryption heavily rewritten ○ More config file retrieval changes • Gameover ○ Peer 2 peer • KINS ○ VM based decryption routine
  • 12. 12 Zeus 2.0.8.9 • Config file URL • Retrieve, decrypt, decipher config file • Assess stolen data – decrypt network traffic, cache file • Read runtime information
  • 13. 13 Zeus 2.0.8.9 • Static config details embedded in binary • Config block XOR encrypted • Find block offset and XOR key Config file URL
  • 15. 15 Zeus 2.0.8.9 • Regexp search, e.g: ○ "[x50-x57][xb8-xbf].{2}x00x00[x50-x57]x68.{4}[x50- x57]xe8.{4}x8b.{5}x03“ • Key always at start of ‘.reloc’ section • Key length = size of StaticConfig • StaticConfig also contains RC4 key Config URL
  • 16. 16 Zeus 2.0.8.9 • Retrieved with simple Get request to URL • RC4 decrypt ○ Using key from StaticConfig (no key scheduling stage) • VisualDecrypt ○ for (m = (Size-1); m >0; m--) ○ Data[m] = Data[m] ^ Data[m-1] • Decompress compressed blocks ○ nrv2b • Covert to something more readable ○ XML is an option Config File
  • 17. 17 Zeus 2.0.8.9 • Common to many subsequent variants • Config header structure: Config file structure Offset Size Value 0x0 0x14 Random data 0x14 0x4 Size of config file 0x18 0x4 Flags (usually 0) 0x1c 0x4 Number of Blocks 0x20 0x10 MD5 of data 0x30 … Config blocks
  • 18. 18 Zeus 2.0.8.9 • Config blocks – header then data • Config block header structure: Config file structure Offset Size Value 0x0 0x4 Block ID 0x4 0x4 Flags, e.g. compressed 0x8 0x4 Compressed size 0xc 0x4 Decompressed size
  • 19. 19 Zeus 2.0.8.9 • Block ID identifies specific type of config entry e.g. version, new exe url, drop zone url, web injects • Leaked source indicates what each binary value means • Conversion to XML makes the data easier to interpret: Config file structure
  • 20. 20 Zeus 2.0.8.9 • Network data ○ RC4 decrypt using key from StaticConfig ○ Data is structured similar to config data • Cache data ○ Temporary store of data before sending back to drop zone ○ Structure: Stolen data Offset Size Value 0x0 0x4 Xor encoded size of block 0x4 0x1 0 0x5 ?? First encrypted block
  • 21. 21 Zeus 2.0.8.9 • XOR key stored in runtime data at offset 0x1e2 • Blocks encrypted with VisualEncrypt + RC4 • New RC4 key from runtime data • Blocks have same structure as network data • Cache gets deleted when data sent over network Cache data
  • 22. 22 Zeus 2.0.8.9 • Dynamically created block written by dropper • See https://code.google.com/p/volatility/source/browse/trunk/con trib/plugins/malware/zeusscan.py for structure • Key fields: ○ RC4 key – encrypting cache data ○ XORkey – cache data block sizes • Also, registry keys, exe file name, cache file name etc. Runtime information
  • 23. 23 Zeus 2.0.8.9 • Find block in dump: • Often appended to file Runtime information
  • 24. 24 IceIX • Same goals ○ Config file URL ○ Retrieve, decrypt, decipher config file ○ Assess stolen data – decrypt network traffic, cache file ○ Read runtime information • How do we identify? • What are the differences?
  • 25. 25 IceIX • Config file URL by default ends with config.php • Strings: “bn=1” and “&sk=1” • Modified RC4 routine: Identification
  • 26. 26 IceIX • RC4 changes • Config file retrieval requires structured POST request Modifications
  • 28. 28 IceIX • POST request requires special format or config file is not delivered • POST data format: bn=<BOTID string>&sk=<MD5 of encrypted BOTID string> • BOTID generated per machine, e.g.: MYPC_737574566769_474 • Encrypted using modified RC4 with key from StaticConfig • All POST data encrypted before being sent Config file retrieval
  • 29. 29 Citadel • Giveaway string: ○ 'Coded by BRIAN KREBS for personal use only. I love my job & wife.‘ • Version number: • Maybe further strings: ○ cit_ffcookie.module, cit_video.module Identification
  • 30. 30 Citadel • Encryption process rewritten – AES + RC4, multiple keys • Formatted POST request for config file retrieval • Backup config file URLs Modifications
  • 31. 31 Citadel • RC4 has XOR on top with LOGIN_KEY ○ Extra key generated at build time e.g.: ○ "C1F20D2340B519056A7D89B7DF4B0FFF" • Config data encrypted with AES • Network traffic requires generating a new RC4 key Encryption process
  • 32. 32 • Extra non-standard permutation • Need to extract salt value • All network traffic encrypted in this way Citadel Config file retrieval
  • 33. 33 Citadel • Formatted similar to config data – header with 2 data blocks • Block ID 0x2725 – contains the login_key • Block ID 0x2726 – file name from config URL: ○ http://pubber.ru/images/greater/wisdom/file.php|file=config.dll ○ Everything after the ‘|’ goes in the block data POST data
  • 34. 34 Citadel • Switch case based on DWORD value: POST data custom permutation
  • 35. 35 Citadel • Python: POST data custom permutation
  • 36. 36 Citadel Config file decryption • RC4 key from StaticConfig • login_key • 128-bit config XOR key
  • 37. 37 Citadel • Found in the AES routine: Extra config key
  • 38. 38 Gameover/P2P • Command strings used in the P2P protocol: ○ OPTIONS ○ PROPFIND ○ PROPPATCH ○ SEARCH ○ UNLOCK ○ REPORT ○ MKACTIVITY ○ CHECKOUT ○ M-SEARCH ○ NOTIFY ○ SUBSCRIBE ○ UNSUBSCRIBE Identification
  • 39. 39 Gameover/P2P • Static peer list ○ Each peer has its own RC4 key • Connect to P2P network to retrieve config • Zlib compression • https://github.com/arbor/zeus_gameover-re Modifications
  • 40. 40 KINS/VMZeus • VM based StaticConfig decryption • Embedded byte code determines which VM handler is executed on which byte of ciphertext • Embedded opcode handler table • Each element of bytecode is an index into the handler table Modifications
  • 41. 41 KINS/VMZeus • Find the entry to the VM handler: Identification
  • 42. 42 KINS • RC4 key is in the StaticConfig but now much harder to decrypt • Need to replicate the handler sequence by running the bytecode through the handler table • Leaked KINS source: source/common/configcrypt.cpp • But handler table order is shuffled by the builder so we must work out the correct order dynamically for each sample Key extraction
  • 44. 44 Automation • As part of sandbox analysis – e.g. cuckoo ○ Process dump ○ Key extraction and data decryption as part of a processing module ○ Analyzer module to perform the retrieval for non-executing samples • Volatility ○ Key and data extraction from a memory dump ○ https://code.google.com/p/volatility/source/browse/trunk/contrib/plugin s/malware/zeusscan.py
  • 46. 46 Conclusion • Many successful and widespread variants spawned from Zeus code • More builders and source code leaked, many variants still being actively developed • Despite some significant modifications, new variants are incremental • Tools can be updated relatively easy for modifications
  • 47. 47© Sophos Ltd. All rights reserved.

Editor's Notes

  • #7: Typical weekly breakdown of Zeus variants seen by SophosLabs.
  • #37: Ref: http://nakedsecurity.sophos.com/2012/12/05/the-citadel-crimeware-kit-under-the-microscope/