Volatility - plugins
Volatility - volshell
-
Explore Processes
- ps() ->
List processes
- cc(pid=4) ->
Change to another process
-
EPROCESS structure analysis
- dt(proc()) ->
list current process EPROCESS structure
- dt("_EPROCESS", virtualadderss, space=addrspace) ->
Expand the EPROCEES structure using virtual address
- dt("_EPROCESS", physicaladderss, space=addrspace) ->
Expand the EPROCEES structure using physical address
-
PEB structure analysis
- dt(proc().Peb) ->
list current process PEB structure
- dt("_PEB", virtualadderss, space=addrspace) ->
Expand the PEB structure using virtual address
- dt("_PEB", physicaladderss, space=addrspace) ->
Expand the PEB structure using physical address
-
Important info in PEB structure
- BeingDebugged ->
some malicious programs set up a process and then connect a "debugger" to it
- OSMajorVersion & OSMinorVersion ->
correspond to the host operating system
- OSBuildNumber
- OSCSDVersion ->
the service pack number multiplied by 0x100
- ProcessParameters ->
The pointer is to the process parameters.
- Ldr ->
Contains information about the loaded modules for the process.
Rekall - plugins
Notes
- Providing KDBG virtual offsets to volatility with '-g' will speed up the process.
- Use redline to get a quick insight on the memory dump
-
Suspicious Processes Indicators
- Check parent/child relationships
Processes run by users -> Have Explorer as an ancestor & Processes run by SYSTEM -> Have system as an ancestor
- Look for irrelvant imports
network apis used by notepad process
- Valid Program Names:
Programmers choose human readable names. Lookout for random series of characters.
- Ending in .exe:
Legitimate programs have a valid extension. Malware often leaves a blank extension.
- More than one or two characters in the filename:
Legitimate programs have a name, not just an ID number.
- Spelling mistakes:
Malware authors may not be native English speakers.
- Correct file locations:
Finding an executable starting from any uncommon directory is a sign of trouble.
- Valid command line arguments:
Processes are often launched with specific parameters.
- Check Process Singletons:
Some processes should never have more than one copy in process list
- Use impfuzzy to compare Import Table hash with known variants
-
Dealing with suspicious processes
- Dump process executables
- Use strings to look for Indicators of Packing and Persistence
- Submit executables to online services as VirusTotal
- Check opened handles for this process