Rootkits, Exfil and APT: RAM Conquers All

Transcription

Rootkits, Exfil and APT: RAM Conquers All
Rootkits, Exfil and APT: RAM Conquers All
5/20/2015
Rootkits, Exfil and APT:
RAM Conquers All
Jamie Levy
The Volatility Project
www.encase.com/ceic
All Rights Reserved by The Volatility Project
Rootkits, Exfil and APT: RAM Conquers All
Jamie Levy (@gleeda)
Core Developer on the Volatility Framework
Co-Author of The Art of Memory Forensics
Digital Forensics researcher, developer and investigator
Former speaker at CEIC, IEEE ICC and OMFW
Former professor at Queens College and John Jay College
http://memoryanalysis.net
Page 2
Jamie Levy, Volatility Foundation
1
Rootkits, Exfil and APT: RAM Conquers All
5/20/2015
Documentation
The Art of Memory Forensics
Malware Analyst’s Cookbook
Websites
 volatility-labs.blogspot.com
 volatilityfoundation.org
 memoryanalysis.net
Volatility wiki
 code.google.com/p/volatility/wiki/VolatilityIntroduction
 community documentation: 200+ docs from 60+ different
authors
Page 3
Rootkits, Exfil and APT: RAM Conquers All
What is Memory Forensics?
Memory forensics is the process of acquiring and analyzing
physical memory (RAM) in order to find artifacts and
evidence
Usually performed in conjunction with disk and network
forensics
Page 4
Jamie Levy, Volatility Foundation
2
Rootkits, Exfil and APT: RAM Conquers All
5/20/2015
Rootkits, Exfil and APT: RAM Conquers All
What can be recovered?
Running processes
Active network connections
Loaded kernel drivers
Console input and output
Malware-created artifacts
Application information (URL history, chat logs, emails)
Disk encryption keys
A whole lot more…
Page 5
Rootkits, Exfil and APT: RAM Conquers All
Why does it matter?
Can recover the entire state of the operating system and
running applications at the time of the capture
Can also uncover historical information
Much of the information recovered from memory is never
written to disk or the network (i.e. software encryption keys)
Advanced malware operates only in memory
Sandbox, honeypot, automated analysis
This doesn’t mean you shouldn’t build a live IR toolkit
 It just means you should run them after collecting RAM
Page 6
Jamie Levy, Volatility Foundation
3
Rootkits, Exfil and APT: RAM Conquers All
5/20/2015
Rootkits, Exfil and APT: RAM Conquers All
Data lifetime
Page 7
Rootkits, Exfil and APT: RAM Conquers All
OS view / vs / Memory Forensics
Page 8
Jamie Levy, Volatility Foundation
4
Rootkits, Exfil and APT: RAM Conquers All
5/20/2015
Rootkits, Exfil and APT: RAM Conquers All
Acquisition
The first step in the memory analysis process is acquisition
Acquisition is the copying of physical memory (RAM) to nonvolatile storage
The right tool for the job heavily depends on the job
Page 9
Rootkits, Exfil and APT: RAM Conquers All
When to acquire?
Suspect’s computer
 Do it while the suspect is online?
 Access to logon session information
 Cloud services or remote storage in use
*BEFORE* BEFORE* DISCONNECTING FROM THE NETWORK!
 Encrypted documents being viewed
Victim’s computer
 Do it while the suspect’s NOT online?
 Else you may tip off the suspect
 Monitor network activity to/from the target
computer for some period?
Page 10
Jamie Levy, Volatility Foundation
5
Rootkits, Exfil and APT: RAM Conquers All
5/20/2015
Rootkits, Exfil and APT: RAM Conquers All
When to Acquire?
Not during times of dramatic change
Avoid disk defragmentation
Avoid antivirus scans
Avoid system backups
Limit your interaction with the machine until the acquisition is
done
Page 11
Rootkits, Exfil and APT: RAM Conquers All
Software Acquisition
Done through 3rd-party programs that load a kernel driver to
read physical pages (RAM)
Advantages:
 Can be loaded onto any system running a supported
OS
 Can be performed over the network
Disadvantages:
 Requires administrative access
 Potential for malware interference
Page 12
Jamie Levy, Volatility Foundation
6
Rootkits, Exfil and APT: RAM Conquers All
5/20/2015
Rootkits, Exfil and APT: RAM Conquers All
Sampling
Can query only select portions of memory for triage
Example: Gathering the list of processes requires
transferring less than 1MB of data
Sampling can be used to sweep the network for IOCs and
full acquisition started if any are found
Page 13
Rootkits, Exfil and APT: RAM Conquers All
Hardware Acquisition
Leverages hardware protocols to read physical memory
without software
 Firewire, PCI, Thunderbolt
Advantages
 No need for administrative access
 Less chance for malware interference
Disadvantages
 Hardware usually needs to be pre-installed
 Firewire is limited to first 4GB of memory
Page 14
Jamie Levy, Volatility Foundation
7
Rootkits, Exfil and APT: RAM Conquers All
5/20/2015
Rootkits, Exfil and APT: RAM Conquers All
Acquisition and Sampling with EnCase® Enterprise
Acquisition
Page 15
Rootkits, Exfil and APT: RAM Conquers All
Volatility Framework
Implemented in Python under the GNU General Public License
Extracts digital artifacts from volatile memory (RAM) samples.
Extraction techniques are performed completely independent of the system being
investigated
Offers visibility into the runtime state of the system
Page 16
Jamie Levy, Volatility Foundation
8
Rootkits, Exfil and APT: RAM Conquers All
5/20/2015
Rootkits, Exfil and APT: RAM Conquers All
Volatility Framework
150+ plugins in the code repository
Features include:
 Sample identification
 Enumerating Processes/DLLs
 Process Memory
 Kernel Memory Objects
 Networking
 Registry
 Sample Conversion to another sample format
 Malware/Rootkit Specific
Page 17
Rootkits, Exfil and APT: RAM Conquers All
Volatility Framework
Single, cohesive framework
 x86 (PAE, non-PAE) and x64
windows
 x86/x64 Linux kernels 2.6.11 – 3.5
 x86/x64 Mac 10.5 (Leopard) – 10.9
(Mavericks)
 32-bit Android
Open source, GNU GPLv2
 read it, learn from it, extend it
 understand how it works
Python
 RE and forensics language
 distorm3, pycrypto, yara
 Modular: add new OS and
architectures
Page 18
Jamie Levy, Volatility Foundation
9
Rootkits, Exfil and APT: RAM Conquers All
5/20/2015
Rootkits, Exfil and APT: RAM Conquers All
Listing Processes
$ python vol.py –f win7x86.dmp --profile=Win7SP1x86 pslist
Volatility Foundation Volatility Framework 2.4
Offset(V)
Name
PID
PPID
Thds
Hnds
Sess
Wow64 Start
---------- -------------------- ------ ------ ------ -------- ------ -----0x84f4a958 System
4
0
95
519 -----29 ------
0 2014-08-17 17:09:40 UTC+0000
0x865b8918 smss.exe
280
4
2
0x86faf4d8 csrss.exe
372
356
9
566
0
0 2014-08-17 17:09:46 UTC+0000
0 2014-08-17 17:09:40 UTC+0000
0x8682e698 wininit.exe
424
356
3
74
0
0 2014-08-17 17:09:46 UTC+0000
0x872a8030 services.exe
508
424
14
226
0
0 2014-08-17 17:09:46 UTC+0000
0x872ac030 lsass.exe
516
424
7
604
0
0 2014-08-17 17:09:46 UTC+0000
0x872ac3b0 lsm.exe
524
424
10
146
0
0 2014-08-17 17:09:46 UTC+0000
0x8733f488 svchost.exe
652
508
11
367
0
0 2014-08-17 17:09:47 UTC+0000
Page 19
Rootkits, Exfil and APT: RAM Conquers All
Active Network Connections
$ python vol.py -f win764bit.raw --profile=Win7SP1x64 netscan
Volatile Systems Volatility Framework 2.1_alpha
Offset(P)
Proto Local Address
Foreign Address State
0xf882a30 TCPv4 0.0.0.0:135
0.0.0.0:0
LISTENING
0xfc13770 TCPv4 0.0.0.0:49154
0.0.0.0:0
LISTENING
0xfdda1e0 TCPv4 0.0.0.0:49154
0.0.0.0:0
LISTENING
0xfdda1e0 TCPv6 :::49154
:::0
LISTENING
0x1121b7b0 TCPv4 0.0.0.0:135
0.0.0.0:0
LISTENING
0x1121b7b0 TCPv6 :::135
:::0
LISTENING
0x11431360 TCPv4 0.0.0.0:49152
0.0.0.0:0
LISTENING
0x11431360 TCPv6 :::49152
:::0
LISTENING
Pid
Owner
628
svchost.exe
916
svchost.exe
916
svchost.exe
916
svchost.exe
628
svchost.exe
628
svchost.exe
332
wininit.exe
332
wininit.exe
[snip]
0x17de8980 TCPv6
0x17f35240 TCPv4
0x17f362b0 TCPv4
0x17f362b0 TCPv6
0x17236010 TCPv4
0x1725d010 TCPv4
0x17270530 TCPv4
0x17285010 TCPv4
:::49153
0.0.0.0:49155
0.0.0.0:49155
:::49155
-:49227
-:49359
10.0.2.15:49363
-:49341
:::0
LISTENING
0.0.0.0:0
LISTENING
0.0.0.0:0
LISTENING
:::0
LISTENING
184.26.31.55:80
CLOSED
93.184.220.20:80 CLOSED
173.194.35.38:80 ESTABLISHED
82.165.218.111:80 CLOSED
444
lsass.exe
880
svchost.exe
880
svchost.exe
880
svchost.exe
2820 iexplore.exe
2820 iexplore.exe
2820 iexplore.exe
2820 iexplore.exe
Page 20
Jamie Levy, Volatility Foundation
10
Rootkits, Exfil and APT: RAM Conquers All
5/20/2015
Rootkits, Exfil and APT: RAM Conquers All
Traditional Uses of Memory Forensics
Memory forensics was initially researched in order to fight advancing malware
capabilities
Artifacts focused on included those related to code injection, API hooking, and attempts
of malware to hide from the live system
 Hidden processes, kernel drivers, etc.
Page 21
Rootkits, Exfil and APT: RAM Conquers All
Traditional Uses of Memory Forensics
Incident response analysts utilized memory forensics to find relevant artifacts not written
to disk
 Command shell input and output
 Process creation
 Network activity
Page 22
Jamie Levy, Volatility Foundation
11
Rootkits, Exfil and APT: RAM Conquers All
5/20/2015
Rootkits, Exfil and APT: RAM Conquers All
Malware Analysis
Page 23
Rootkits, Exfil and APT: RAM Conquers All
Userland Code Injection
The process of placing foreign code into the address space
of another process
Three methods:
 Shellcode Injection
 Remote Library Injection
 Reflective DLL Injection
Page 24
Jamie Levy, Volatility Foundation
12
Rootkits, Exfil and APT: RAM Conquers All
5/20/2015
Rootkits, Exfil and APT: RAM Conquers All
Detecting Shellcode Injection
$ python vol.py -f zeus.vmem malfind -p 1724
Volatile Systems Volatility Framework 2.3
Process: explorer.exe Pid: 1724 Address: 0x1600000
Vad Tag: VadS Protection: PAGE_EXECUTE_READWRITE
Flags: CommitCharge: 1, MemCommit: 1, PrivateMemory: 1, Protection: 6
0x01600000
0x01600010
0x01600020
0x01600030
b8 35 00 00 00 e9 cd d7 30 7b b8 91 00 00 00 e9 .5......0{......
4f df 30 7b 8b ff 55 8b ec e9 ef 17 c1 75 8b ff O.0{..U......u..
55 8b ec e9 95 76 bc 75 8b ff 55 8b ec e9 be 53 U....v.u..U....S
bd 75 8b ff 55 8b ec e9 d6 18 c1 75 8b ff 55 8b .u..U......u..U.
0x1600000 b835000000
0x1600005 e9cdd7307b
0x160000a b891000000
0x160000f e94fdf307b
0x1600014 8bff
0x1600016 55
MOV EAX, 0x35
JMP 0x7c90d7d7
MOV EAX, 0x91
JMP 0x7c90df63
MOV EDI, EDI
PUSH EBP
Page 25
Rootkits, Exfil and APT: RAM Conquers All
Detecting Remote Library Injection
Page 26
Jamie Levy, Volatility Foundation
13
Rootkits, Exfil and APT: RAM Conquers All
5/20/2015
Rootkits, Exfil and APT: RAM Conquers All
Hiding DLLs
$ python vol.py -f flame.raw -p 912 ldrmodules
Volatile Systems Volatility Framework 2.3
Pid
Process
MappedPath
Base
-------- ----------------- ----------
InLoad InInit InMem
------
912 services.exe 0x7c900000 True
\WINDOWS\system32\ntdll.dll
------ ----- ---------True True
912 services.exe 0x7c9c0000 False False False
\WINDOWS\system32\shell32.dll
<snip>
Page 27
Rootkits, Exfil and APT: RAM Conquers All
Detecting Reflective Loading
Page 28
Jamie Levy, Volatility Foundation
14
Rootkits, Exfil and APT: RAM Conquers All
5/20/2015
Rootkits, Exfil and APT: RAM Conquers All
API Hooks
$ python vol.py -f laqma.vmem -p 1624 apihooks
Volatile Systems Volatility Framework 2.3
Hook mode: Usermode
Hook type: Inline/Trampoline
Process: 1624 (explorer.exe)
Victim module: USER32.dll (0x7e410000 - 0x7e4a0000)
Function: USER32.dll!MessageBoxA at 0x7e45058a
Hook address: 0xac10aa
Hooking module: Dll.dll
Disassembly(0):
0x7e45058a 68aa10ac00
0x7e45058f c3
0x7e450590 3dbc04477e
0x7e450595 00742464
0x7e450599 a118000000
0x7e45059e 6a00
0x7e4505a0 ff
0x7e4505a1 70
<snip>
PUSH DWORD 0xac10aa
RET
CMP EAX, 0x7e4704bc
ADD [ESP+0x64], DH
MOV EAX, [0x18]
PUSH 0x0
DB 0xff
DB 0x70
Page 29
Rootkits, Exfil and APT: RAM Conquers All
Kernel Rootkits
Page 30
Jamie Levy, Volatility Foundation
15
Rootkits, Exfil and APT: RAM Conquers All
5/20/2015
Rootkits, Exfil and APT: RAM Conquers All
Hiding Processes
Malware that has both userland and kernel mode components will often hide from the
live system any associated processes
Volatility’s psxview plugin can detect hidden processes by comparing the set of
processes found from a number of sources
Page 31
Rootkits, Exfil and APT: RAM Conquers All
Psxview
Page 32
Jamie Levy, Volatility Foundation
16
Rootkits, Exfil and APT: RAM Conquers All
5/20/2015
Rootkits, Exfil and APT: RAM Conquers All
Services
$ python vol.py -f win764bit.raw svcscan --verbose --profile=Win7SP0x64
Volatile Systems Volatility Framework 2.3
Offset: 0xa26e70
Order: 71
Process ID: 1104
Service Name: DPS
Display Name: Diagnostic Policy Service
Service Type: SERVICE_WIN32_SHARE_PROCESS
Service State: SERVICE_RUNNING
Binary Path: C:\Windows\system32\svchost.exe -k LocalServiceNoNetwork
ServiceDll: %SystemRoot%\system32\dps.dll
Page 33
Rootkits, Exfil and APT: RAM Conquers All
Mutexes
Volatility’s mutantscan plugin can recover active mutexes on
the system
Malware often uses mutexes to mark the system as infected
 One of the Conficker prevention tools was a simple
application that created the same mutex Conficker put
on infected systems
Page 34
Jamie Levy, Volatility Foundation
17
Rootkits, Exfil and APT: RAM Conquers All
5/20/2015
Rootkits, Exfil and APT: RAM Conquers All
Rootkit Controlled Callbacks
Malicious callbacks can be registered for system events:
 Process creation
 Registry key/value read/write/create/delete
 Filesystem registration
 Bug checks (BSOD)
 … many more
Page 35
Rootkits, Exfil and APT: RAM Conquers All
Callbacks
$ python vol.py -f be2.vmem callbacks
Volatile Systems Volatility Framework 2.3
Type
Callback
Owner
PsSetCreateThreadNotifyRoutine
0xff0d2ea7 00004A2A
PsSetCreateProcessNotifyRoutine
0xfc58e194 vmci.sys
KeBugCheckCallbackListHead
0xfc1e85ed
NDIS.sys (Ndis miniport)
KeBugCheckCallbackListHead
0x806d57ca hal.dll
(ACPI 1.0 - APIC platform UP)
KeRegisterBugCheckReasonCallback 0xfc967ac0
mssmbios.sys (SMBiosData)
KeRegisterBugCheckReasonCallback 0xfc967a78
mssmbios.sys (SMBiosRegistry)
Page 36
Jamie Levy, Volatility Foundation
18
Rootkits, Exfil and APT: RAM Conquers All
5/20/2015
Rootkits, Exfil and APT: RAM Conquers All
Malicious Device Handlers
$ python vol.py -f stuxnet.vmem devicetree
Volatile Systems Volatility Framework 2.3
[snip]
DRV 0x0253d180 '\\FileSystem\\Ntfs'
---| DEV 0x82166020 (unnamed) FILE_DEVICE_DISK_FILE_SYSTEM
------| ATT 0x8228c6b0 (unnamed) - '\\FileSystem\\sr'
FILE_DEVICE_DISK_FILE_SYSTEM
---------| ATT 0x81f47020 (unnamed) - '\\FileSystem\\FltMgr'
FILE_DEVICE_DISK_FILE_SYSTEM
------------| ATT 0x81fb9680 (unnamed) - '\\Driver\\MRxNet'
FILE_DEVICE_DISK_FILE_SYSTEM
---| DEV 0x8224f790 Ntfs FILE_DEVICE_DISK_FILE_SYSTEM
------| ATT 0x81eecdd0 (unnamed) - '\\FileSystem\\sr'
FILE_DEVICE_DISK_FILE_SYSTEM
---------| ATT 0x81e859c8 (unnamed) - '\\FileSystem\\FltMgr'
FILE_DEVICE_DISK_FILE_SYSTEM
------------| ATT 0x81f0ab90 (unnamed) - '\\Driver\\MRxNet'
FILE_DEVICE_DISK_FILE_SYSTEM
Page 37
Rootkits, Exfil and APT: RAM Conquers All
Malicious Use of Timers
$ python vol.py -f rustock-c.vmem timers
Volatile Systems Volatility Framework 2.3
Offset(V)
DueTime
Period(ms) Routine
M
odule
---------------------------------------------- -------------0xf730a790 0x00000000:0x6db0f0b4
0
0xf72fb385
srv.sys
0x80558a40 0x00000000:0x68f10168
1000
0x80523026
ntoskrnl.exe
0x821cb240 0x00000000:0x68fa8ad0
0
0xf84b392e
sr.sys
0x8054f288 0x00000000:0x69067692
0
0x804e5aec
ntoskrnl.exe
0x820822e4 0x00000000:0xa2a56bb0
150000 0x81c1642f
UNKNOWN
[snip]
Page 38
Jamie Levy, Volatility Foundation
19
Rootkits, Exfil and APT: RAM Conquers All
5/20/2015
Rootkits, Exfil and APT: RAM Conquers All
Driver IRPs
$ python vol.py -f tdl3.vmem driverirp -r vmscsi --verbose
Volatile Systems Volatility Framework 2.3
-------------------------------------------------DriverName: vmscsi
DriverStart: 0xf9db8000
DriverSize: 0x2c00
DriverStartIo: 0xf97ea40e
0 IRP_MJ_CREATE
0xf9db9cbd vmscsi.sys
0xf9db9cbd a10803dfff
MOV EAX, [0xffdf0308]
0xf9db9cc2 ffa0fc000000 JMP DWORD [EAX+0xfc]
0xf9db9cc8 0000
ADD [EAX], AL
0xf9db9cca 0000
ADD [EAX], AL
1 IRP_MJ_CREATE_NAMED_PIPE
0xf9db9cbd vmscsi.sys
0xf9db9cbd a10803dfff
MOV EAX, [0xffdf0308]
0xf9db9cc2 ffa0fc000000 JMP DWORD [EAX+0xfc]
0xf9db9cc8 0000
ADD [EAX], AL
0xf9db9cca 0000
ADD [EAX], AL
Page 39
Rootkits, Exfil and APT: RAM Conquers All
Extracting Kernel Drivers
$ python vol.py -f win764bit.raw --profile=Win7SP1x64 moddump -D
drivers/
Volatile Systems Volatility Framework 2.3
Module Base
Module Name Result
------------------------------------- ----------------------------------------0xfffff8000261a000 ntoskrnl.exe
OK: driver.fffff8000261a000.sys
0xfffff80002bf7000 hal.dll
OK: driver.fffff80002bf7000.sys
0xfffff88000e5c000 intelide.sys
OK: driver.fffff88000e5c000.sys
0xfffff8800349b000 mouclass.sys
OK: driver.fffff8800349b000.sys
0xfffff88000f7c000 msisadrv.sys
OK: driver.fffff88000f7c000.sys
0xfffff880035c3000 ndistapi.sys
OK: driver.fffff880035c3000.sys
0xfffff88002c5d000 pacer.sys
OK: driver.fffff88002c5d000.sys
[snip]
Page 40
Jamie Levy, Volatility Foundation
20
Rootkits, Exfil and APT: RAM Conquers All
5/20/2015
Rootkits, Exfil and APT: RAM Conquers All
Examine an infected memory sample
Hands On
Page 41
Rootkits, Exfil and APT: RAM Conquers All
Other Uses of Memory Forensics
Recovering historical information
Timelining
Determining end-user activity
Smart string searching (Yara)
Network & file system interactions
Application data
Breaking disk encryption
Page 42
Jamie Levy, Volatility Foundation
21
Rootkits, Exfil and APT: RAM Conquers All
5/20/2015
Rootkits, Exfil and APT: RAM Conquers All
Recovering Historical Information
Data that is freed in memory is not removed until it is reallocated and overwritten
 A very similar process to how file systems work on disk
This allows for recovery of information about previously
terminated processes, network connections, kernel drivers,
and commands entered into cmd.exe
Page 43
Rootkits, Exfil and APT: RAM Conquers All
Timelining
Many of the artifacts in memory have associated timestamps
These can be used to timeline system activity from the view
of the operating system’s data structures
When combined with disk forensics this can be extremely
powerful
Page 44
Jamie Levy, Volatility Foundation
22
Rootkits, Exfil and APT: RAM Conquers All
5/20/2015
Rootkits, Exfil and APT: RAM Conquers All
Timelining
Mon Nov 26 2012 23:01:53,macb,"[ENG IEHISTORY] explorer.exe->Visited:
callb@http://58.64.132.8/download/Symantec-1.43-1.exe PID: 284/Cache type ""URL
"" at 0x2895000“
Mon Nov 26 2012 23:01:54,macb,"[ENG MFT FILE_NAME]
WINDOWS\Prefetch\SYMANTEC-1.43-1[2].EXE-3793B625.pf (Offset: 0x17779800)“
Mon Nov 26 2012 23:01:54,.acb,"[ENG MFT FILE_NAME]
WINDOWS\system32\6to4ex.dll (Offset: 0x324c800)“
Mon Nov 26 2012 23:01:55,m...,"[ENG Registry]
$$$PROTO.HIV\ControlSet001\Services\6to4“
Mon Nov 26 2012 23:01:58,.acb,"[ENG THREAD] svchost.exe PID: 1024/TID: 804“
Page 45
Rootkits, Exfil and APT: RAM Conquers All
Timelining
Mon Nov 26 2012 23:03:10,macb,"[ENG MFT FILE_NAME] WINDOWS\webui (Offset: 0x1bc21000)“
Mon Nov 26 2012 23:06:47,macb,"[ENG MFT FILE_NAME] WINDOWS\webui\gs.exe (Offset:
0x16267c00)“
Mon Nov 26 2012 23:11:58,macb,"[ENG MFT FILE_NAME] WINDOWS\Prefetch\GS.EXE-3796DDD9.pf
(Offset: 0x311800)“
Mon Nov 26 2012 23:11:58,m...,"[ENG Registry] SECURITY\Policy\Secrets“
Mon Nov 26 2012 23:11:58,.a..,"[ENG MFT STD_INFO] WINDOWS\system32\samsrv.dll (Offset:
0x329f000)"
Mon Nov 26 2012 23:11:58,.a..,"[ENG MFT STD_INFO] WINDOWS\system32\cryptdll.dll (Offset:
0x3329c00)"
Page 46
Jamie Levy, Volatility Foundation
23
Rootkits, Exfil and APT: RAM Conquers All
5/20/2015
Rootkits, Exfil and APT: RAM Conquers All
Determining End-User Activity
Which users were logged into the system?
Which privileges did they gain on the system?
How were they logged in (keyboard, RDP, …)?
Who executed rouge software (P2P, anti-forensics, games)?
Who started a network transfer?
Page 47
Rootkits, Exfil and APT: RAM Conquers All
Which Users Were Logged In?
$ python vol.py -f lab-3.1.mem getsids | grep explorer.exe
Volatile Systems Volatility Framework 2.3_alpha
explorer.exe (1540): S-1-5-21-1960408961-1844237615-839522115-1004 (Larry)
explorer.exe (1540): S-1-5-21-1960408961-1844237615-839522115-513 (Domain Users)
explorer.exe (1540): S-1-1-0 (Everyone)
[snip]
explorer.exe (1540): S-1-5-5-0-61177 (Logon Session)
explorer.exe (1540): S-1-2-0 (Local (Users with the ability to log in locally))
explorer.exe (1676): S-1-5-21-1960408961-1844237615-839522115-1003 (Justin)
explorer.exe (1676): S-1-5-21-1960408961-1844237615-839522115-513 (Domain Users)
explorer.exe (1676): S-1-1-0 (Everyone)
<snip>
Page 48
Jamie Levy, Volatility Foundation
24
Rootkits, Exfil and APT: RAM Conquers All
5/20/2015
Rootkits, Exfil and APT: RAM Conquers All
Grrcon: What type of access did the attacker gain?
Page 49
Rootkits, Exfil and APT: RAM Conquers All
How did the user log in?
Page 50
Jamie Levy, Volatility Foundation
25
Rootkits, Exfil and APT: RAM Conquers All
5/20/2015
Rootkits, Exfil and APT: RAM Conquers All
Page 51
Rootkits, Exfil and APT: RAM Conquers All
Printkey and TypedURLs
$ python vol.py -f case003.dmp printkey -K "Software\Microsoft\Internet
Explorer\TypedURLs" --profile=Win8SP1x64
Volatility Foundation Volatility Framework 2.4 (Beta)
Legend: (S) = Stable (V) = Volatile
---------------------------Registry: \Device\HarddiskVolume1\Documents and Settings\NathanG\NTUSER.DAT
Key name: TypedURLs (S)
Last updated: 2013-10-08 03:36:41 UTC+0000
Subkeys:
Values:
REG_SZ url1 : (S) https://www.torproject.org/
REG_SZ url2 : (S) https://www.piriform.com/
REG_SZ url3 : (S) http://www.cnn.com
Page 52
Jamie Levy, Volatility Foundation
26
Rootkits, Exfil and APT: RAM Conquers All
5/20/2015
Rootkits, Exfil and APT: RAM Conquers All
shellbags
$ python vol.py -f win7.vmem --profile=Win7SP1x86 shellbags
Volatile Systems Volatility Framework 2.3_alpha
Scanning for registries....
Gathering shellbag items and building path tree...
***************************************************************************
Registry: \??\C:\Users\user\ntuser.dat
Key: Software\Microsoft\Windows\Shell\Bags\1\Desktop
Last updated: 2011-10-20 15:24:46
Value
File Name
Modified Date
Create Date
Access Date
File Attr
Unicode
Name
------------------------- -------------- -------------------- -------------------- -------------------- ------------------------- -----------ItemPos1176x882x96(1) CCLEAN~1.LNK 2011-10-20 15:20:04 2011-10-20 15:20:04 2011-10-20
15:20:04 ARC
CCleaner.lnk
ItemPos1176x882x96(1) VMWARE~1.LNK 2011-10-20 15:13:06 2011-05-15 23:09:08 2011-10-20
15:13:06 ARC
VMware Shared Folders.lnk
ItemPos1366x768x96(1) ERASE~1.LNK 2011-10-20 15:20:04 2011-10-20 15:20:04 2011-10-20
15:20:04 ARC
Eraser.lnk
Page 53
Rootkits, Exfil and APT: RAM Conquers All
userassist
$ python vol.py -f win7.vmem --profile=Win7SP0x86 userassist
Volatile Systems Volatility Framework 2.0
---------------------------Registry: \??\C:\Users\admin\ntuser.dat
Key name: Count
Last updated: 2010-07-06 22:40:25
REG_BINARY C:\Program Files\Ccleaner\Ccleaner.exe:
Count:
12
Focus Count: 17
Time Focused: 0:05:40.500000
Last updated: 2010-03-09 19:49:20
<snip>
REG_BINARY Z:\tools\Eraser\Eraser.exe :
Count:
11
Focus Count: 266
Time Focused: 1:19:58.045000
Last updated: 2010-03-18 01:56:31
[snip]
Page 54
Jamie Levy, Volatility Foundation
27
Rootkits, Exfil and APT: RAM Conquers All
5/20/2015
Rootkits, Exfil and APT: RAM Conquers All
Cracking Passwords
Page 55
Rootkits, Exfil and APT: RAM Conquers All
lsadump
Page 56
Jamie Levy, Volatility Foundation
28
Rootkits, Exfil and APT: RAM Conquers All
5/20/2015
Rootkits, Exfil and APT: RAM Conquers All
Mftparser and Removable Drives
mftparser scans for MFT records throughout memory
When someone interacts with an NTFS-formatted external device (SD card, USB, etc.),
the MFT of the device’s file system is read into memory
These records can persist long after the device is removed and can be found by
mftparser
Results can be used to prove external media usage and the names and timestamps of
files contained
Page 57
Rootkits, Exfil and APT: RAM Conquers All
MFT Records
Page 58
Jamie Levy, Volatility Foundation
29
Rootkits, Exfil and APT: RAM Conquers All
5/20/2015
Rootkits, Exfil and APT: RAM Conquers All
Alternate Data Streams (ADS)
Page 59
Rootkits, Exfil and APT: RAM Conquers All
Alternate Data Streams (ADS)
Page 60
Jamie Levy, Volatility Foundation
30
Rootkits, Exfil and APT: RAM Conquers All
5/20/2015
Rootkits, Exfil and APT: RAM Conquers All
Recovering Files from Memory
Page 61
Rootkits, Exfil and APT: RAM Conquers All
Dumping Event Logs
Malicious user logged into one machine using stolen credentials
Started a job on another machine using another set of stolen credentials (At2.job)
Need to find the compromised account
Security event logs were wiped from the system and hence from memory
 Attacker forgot about other logs of interest
Page 62
Jamie Levy, Volatility Foundation
31
Rootkits, Exfil and APT: RAM Conquers All
5/20/2015
Rootkits, Exfil and APT: RAM Conquers All
Dumping Evtx Example
Part of the “Microsoft-Windows-TaskScheduler.evtx” log was memory resident
 It is normal that the entire log is not in memory
Page 63
Rootkits, Exfil and APT: RAM Conquers All
APT-like scenario
Hands On
Page 64
Jamie Levy, Volatility Foundation
32
Rootkits, Exfil and APT: RAM Conquers All
5/20/2015
Rootkits, Exfil and APT: RAM Conquers All
Smart String Searching (SSS)
When performing forensics you are often given a list of keywords to search and produce
results for
When working fraud/identity theft cases you often want to search for credit card
numbers, SSNs, etc.
You can certainly search across memory for search terms, but how do you know what
they mean (their context)?
 Was the URL string you found inside browser memory, a file cached on disk, or a
spam email the person viewed?
 What about the credit number you found? Inside the person’s password manager?
Inside Stolen-CCs.xls?
Page 65
Rootkits, Exfil and APT: RAM Conquers All
Adding Context to Strings
yarascan
 A Volatility plugin that leverages Yara to search processes memory and the kernel
for rule matches
 All matches are reported with their associated PID, kernel driver, or kernel region
strings
 A plugin that maps physical offsets from the strings command to virtual addresses
Page 66
Jamie Levy, Volatility Foundation
33
Rootkits, Exfil and APT: RAM Conquers All
5/20/2015
Rootkits, Exfil and APT: RAM Conquers All
Adding Context to Strings
$ python vol.py -f win7_x64.dmp --profile=Win7SP0x64 yarascan -p 3004 -Y "/[a-zA-Z0-9\-\.]+\.(com|org|net|mil|edu|biz|name|info)/"
Volatile Systems Volatility Framework 2.3_alpha
Rule: r1
Owner: Process iexplore.exe Pid 3004
0x003e90dd 77 77 77 2e 72 65 75 74 65 72 73 2e 63 6f 6d 2f www.reuters.com/
0x003e90ed 61 72 74 69 63 6c 65 2f 32 30 31 31 2f 30 34 2f article/2011/04/
0x003e90fd 32 34 2f 75 73 2d 73 79 72 69 61 2d 70 72 6f 74 24/us-syria-prot
0x003e910d 65 73 74 73 2d 69 64 55 53 54 52 45 37 33 4c 31 ests-idUSTRE73L1
0x003e911d 53 4a 32 30 31 31 30 34 32 34 22 20 69 64 3d 22 SJ20110424".id="
0x003e912d 4d 41 41 34 41 45 67 42 55 41 4a 67 43 47 6f 43 MAA4AEgBUAJgCGoC
0x003e913d 64 58 4d 22 3e 3c 73 70 61 6e 20 63 6c 61 73 73 dXM"><span.class
0x003e914d 3d 22 74 69 74 6c 65 74 65 78 74 22 3e 52 65 75 ="titletext">Reu
Page 67
Rootkits, Exfil and APT: RAM Conquers All
Building Context with the Strings Plugin
Page 68
Jamie Levy, Volatility Foundation
34
Rootkits, Exfil and APT: RAM Conquers All
5/20/2015
Rootkits, Exfil and APT: RAM Conquers All
Network Share Interactions
symlinkscan plugin
\Device\LanmanRedirector\;Z:0000000000016d56\192.168.2
28.141\Public
\Device\LanmanRedirector\WIN-L8ANB3HN32M\IPC$
Page 69
Rootkits, Exfil and APT: RAM Conquers All
Application Data
Many applications hold interesting data related to user’s
activity
 Chat clients
 Browsers
 Mail clients
 Text Editors
Page 70
Jamie Levy, Volatility Foundation
35
Rootkits, Exfil and APT: RAM Conquers All
5/20/2015
Rootkits, Exfil and APT: RAM Conquers All
Chat Clients
People often discuss illegal topics over chat clients
They may use network encryption (e.g OTR), but this does
not protect against on premise forensics
By using yarascan and strings you can find chat messages,
timestamps, etc
Page 71
Rootkits, Exfil and APT: RAM Conquers All
Browsers
Browsers process a tremendous amount of data that cannot
be recovered from disk after the fact or the network if SSL is
used
Relevant projects:
 pdgmail – recovers Gmail and Yahoo messages, inbox
views, and attachment names from memory (or page
files)
Page 72
Jamie Levy, Volatility Foundation
36
Rootkits, Exfil and APT: RAM Conquers All
5/20/2015
Rootkits, Exfil and APT: RAM Conquers All
Browsers and Social Media
For the 2013 Volatility plugin contest Jeff Bryner submitted
plugins that search process memory for Facebook and
Twitter artifacts
 https://github.com/jeffbryner/volatilityPlugins
Information recovered included:
 Private (direct) messages
 Pages of other user accounts viewed
 URLs clicked from people’s walls and messages
Page 73
Rootkits, Exfil and APT: RAM Conquers All
Private Browsing
“Private” browsing isn’t private
The browsers only attempt to hide from casual (nontechnical) inspection of a user’s browsing history or cookies
This does not hide well from disk forensics and certainly not
memory forensics
Page 74
Jamie Levy, Volatility Foundation
37
Rootkits, Exfil and APT: RAM Conquers All
5/20/2015
Rootkits, Exfil and APT: RAM Conquers All
Text Editors
Page 75
Rootkits, Exfil and APT: RAM Conquers All
Breaking Encryption
… with Memory Forensics
Software encryption works by utilizing an
encryption key that decrypts data as it is
read from the encrypted store and
encrypts data that is being written to the
store
In order for the encryption software to
operate the encryption key must be
available at all times
Your password to encryption applications
unlocks the key, which is stored in a key
file
In 99.9% of applications this means it will
be stored in physical memory (RAM)
By finding the key we can decrypt the store
in the same manner that the software does
Page 76
Jamie Levy, Volatility Foundation
38
Rootkits, Exfil and APT: RAM Conquers All
5/20/2015
Rootkits, Exfil and APT: RAM Conquers All
Truecrypt
Most popular encryption software
Can encrypt entire disks or virtual file systems known as containers
Supports Windows, Linux, and Mac
Page 77
Rootkits, Exfil and APT: RAM Conquers All
Non-Volatility Key Recovery Methods
Passware Kit Forensic
 Requires a disk image, memory image, and $995
Elcomsoft Forensic Disk Decryptor
 Requires a disk image, memory image, and $299
Cryptoscan, circa 2008
 Passwords must be cached
 TrueCrypt versions after 4.x or 5.x not supported
Key scanning
 AESKeyfinder, Bulk Extractor, etc.
 Only works if AES was used
Page 78
Jamie Levy, Volatility Foundation
39
Rootkits, Exfil and APT: RAM Conquers All
5/20/2015
Rootkits, Exfil and APT: RAM Conquers All
Cached Passphrase Recovery
Page 79
Rootkits, Exfil and APT: RAM Conquers All
Where is the Container?
Page 80
Jamie Levy, Volatility Foundation
40
Rootkits, Exfil and APT: RAM Conquers All
5/20/2015
Rootkits, Exfil and APT: RAM Conquers All
What if the Passphrase Isn’t Cached?
Page 81
Rootkits, Exfil and APT: RAM Conquers All
Conclusions
Memory forensics is useful in many more situations than just
malware analysis and incident response
It can be used to uncover relevant artifacts in nearly all
investigative situations and many of these artifacts exist only
in memory
If you aren’t acquiring memory as part of your seizure policy
then you should change that
 Acquire memory first!
Page 82
Jamie Levy, Volatility Foundation
41
Rootkits, Exfil and APT: RAM Conquers All
5/20/2015
Rootkits, Exfil and APT: RAM Conquers All
Questions?
@volatility / @gleeda
Email:
jamie@memoryanalysis.net
Trainings (http://memoryanalysis.net):
•
Stratford-Upon-Avon: June 1st-5th 2015
•
Amsterdam: August 31st-September 4th 2015
•
Reston, VA: October 5th-9th 2015
Page 83
Jamie Levy, Volatility Foundation
42