398 lines
9.2 KiB
Markdown
398 lines
9.2 KiB
Markdown
# Dynamic Analysis Tool Setup Guide
|
|
|
|
Quick reference for configuring essential dynamic analysis tools.
|
|
|
|
## Process Monitor (Procmon) - Sysinternals
|
|
|
|
### Initial Setup
|
|
1. Download from: https://docs.microsoft.com/en-us/sysinternals/downloads/procmon
|
|
2. Run as Administrator
|
|
3. Procmon starts capturing immediately
|
|
|
|
### Essential Filters (Reduce Noise)
|
|
|
|
**Filter by Process:**
|
|
```
|
|
Process Name → is → sample.exe → Include
|
|
Process Name → is → rundll32.exe → Include (if DLL execution)
|
|
Process Name → is → explorer.exe → Exclude
|
|
Process Name → is → svchost.exe → Exclude
|
|
```
|
|
|
|
**Filter by Operation Type:**
|
|
```
|
|
Operation → contains → Reg → Include (registry operations)
|
|
Operation → contains → File → Include (file operations)
|
|
Operation → begins with → Process → Include (process operations)
|
|
```
|
|
|
|
**Filter by Result:**
|
|
```
|
|
Result → is → SUCCESS → Include (focus on successful operations)
|
|
```
|
|
|
|
### Columns to Enable
|
|
- Time
|
|
- Process Name
|
|
- PID
|
|
- Operation
|
|
- Path
|
|
- Result
|
|
- Detail
|
|
|
|
### Export Options
|
|
```
|
|
File → Save → All Events → CSV
|
|
File → Save → Filtered Events → CSV (recommended)
|
|
```
|
|
|
|
### Pro Tips
|
|
- Clear capture (Ctrl+X) before malware execution for clean logs
|
|
- Use bookmarks (Ctrl+B) to mark important events
|
|
- Stack duplicate events: Tools → Count Occurrences
|
|
- Enable boot logging for persistence analysis: Options → Enable Boot Logging
|
|
|
|
---
|
|
|
|
## Wireshark - Network Analysis
|
|
|
|
### Capture Setup
|
|
1. Download from: https://www.wireshark.org
|
|
2. Start → Options → Select adapter connected to INetSim
|
|
3. Start capture before executing malware
|
|
|
|
### Display Filters (During Analysis)
|
|
|
|
**DNS Traffic:**
|
|
```
|
|
dns
|
|
dns.qry.name contains "malicious"
|
|
```
|
|
|
|
**HTTP Traffic:**
|
|
```
|
|
http
|
|
http.request.method == "POST"
|
|
http.request.uri contains "/api"
|
|
```
|
|
|
|
**HTTPS/TLS:**
|
|
```
|
|
tls
|
|
tls.handshake.type == 1
|
|
```
|
|
|
|
**Specific IP:**
|
|
```
|
|
ip.addr == 192.168.1.100
|
|
ip.dst == 192.168.1.100
|
|
```
|
|
|
|
**Specific Port:**
|
|
```
|
|
tcp.port == 443
|
|
udp.port == 53
|
|
```
|
|
|
|
### Export Options
|
|
```
|
|
File → Export Specified Packets → Save as PCAPNG
|
|
File → Export Objects → HTTP (extract downloaded files)
|
|
```
|
|
|
|
### Command-Line Analysis (tshark)
|
|
```bash
|
|
# Extract DNS queries
|
|
tshark -r capture.pcapng -Y dns.qry.name -T fields -e dns.qry.name | sort -u
|
|
|
|
# Extract HTTP hosts
|
|
tshark -r capture.pcapng -Y http.request -T fields -e http.host -e http.request.uri
|
|
|
|
# Extract all contacted IPs
|
|
tshark -r capture.pcapng -T fields -e ip.dst | sort -u
|
|
```
|
|
|
|
---
|
|
|
|
## System Informer (formerly Process Hacker) - Process/Memory Analysis
|
|
|
|
### Setup
|
|
1. Download from: https://systeminformer.sourceforge.io
|
|
2. Run as Administrator
|
|
3. Enable: View → Update Speed → Fast
|
|
|
|
### Key Features
|
|
|
|
**Process Tree View:**
|
|
```
|
|
View → Tree View
|
|
Expand malware process to see child processes
|
|
```
|
|
|
|
**Memory Inspection:**
|
|
```
|
|
Double-click process → Memory tab
|
|
Look for RWX regions (suspicious)
|
|
Right-click memory region → Read/Write → String scan
|
|
```
|
|
|
|
**Handles:**
|
|
```
|
|
Double-click process → Handles tab
|
|
Filter: Type → Mutant (mutexes)
|
|
Filter: Type → File (open files)
|
|
```
|
|
|
|
**Network Connections:**
|
|
```
|
|
Double-click process → Network tab
|
|
Shows all connections made by process
|
|
```
|
|
|
|
**Memory Dump:**
|
|
```
|
|
Right-click process → Create dump file
|
|
Save full memory for Volatility analysis
|
|
```
|
|
|
|
### Highlighting Rules
|
|
```
|
|
Options → Highlight → New
|
|
Condition: Process Name → contains → sample.exe
|
|
Color: Red
|
|
```
|
|
|
|
---
|
|
|
|
## Sysmon - Advanced Windows Logging
|
|
|
|
### Installation
|
|
```powershell
|
|
# Download Sysmon
|
|
# https://docs.microsoft.com/en-us/sysinternals/downloads/sysmon
|
|
|
|
# Install with a community config
|
|
sysmon64.exe -accepteula -i sysmonconfig.xml
|
|
|
|
# Config sources (pick one):
|
|
# https://github.com/olafhartong/sysmon-modular (actively maintained, MITRE-mapped; use sysmonconfig.xml)
|
|
# https://github.com/SwiftOnSecurity/sysmon-config (classic, less frequently updated)
|
|
```
|
|
|
|
### View Logs
|
|
```powershell
|
|
# Event Viewer
|
|
eventvwr.msc → Applications and Services Logs → Microsoft → Windows → Sysmon → Operational
|
|
|
|
# PowerShell
|
|
Get-WinEvent -LogName "Microsoft-Windows-Sysmon/Operational" -MaxEvents 100 | Format-List
|
|
|
|
# Export logs
|
|
wevtutil epl Microsoft-Windows-Sysmon/Operational C:\evidence\sysmon.evtx
|
|
```
|
|
|
|
### Key Event IDs
|
|
- **Event 1**: Process creation (command line, hashes, parent process)
|
|
- **Event 3**: Network connection (source/dest IP, port, process)
|
|
- **Event 5**: Process terminated
|
|
- **Event 7**: Image loaded (DLL loading)
|
|
- **Event 8**: CreateRemoteThread (injection)
|
|
- **Event 10**: ProcessAccess (process manipulation)
|
|
- **Event 11**: FileCreate (file creation time)
|
|
- **Event 12/13/14**: Registry operations
|
|
- **Event 22**: DNS query
|
|
|
|
---
|
|
|
|
## Regshot - Registry Comparison
|
|
|
|
### Workflow
|
|
1. Download from: https://sourceforge.net/projects/regshot/
|
|
2. Run Regshot
|
|
3. Click "1st shot" (before malware execution)
|
|
4. Execute malware
|
|
5. Wait for all malware activity to complete
|
|
6. Click "2nd shot" (after malware execution)
|
|
7. Click "Compare"
|
|
8. Output saved as HTML (registry_changes.html)
|
|
|
|
### Output Interpretation
|
|
- **Keys added**: New persistence mechanisms
|
|
- **Keys deleted**: Cleanup activities
|
|
- **Values modified**: Configuration changes
|
|
- **Values added**: New settings
|
|
|
|
### Pro Tips
|
|
- Scan selected folders only for faster scans
|
|
- Use during specific malware phases (install vs. runtime)
|
|
- Export both shots for archival
|
|
|
|
---
|
|
|
|
## TCPView - Real-Time Network Connections
|
|
|
|
### Setup
|
|
1. Download from: https://docs.microsoft.com/en-us/sysinternals/downloads/tcpview
|
|
2. Run as Administrator
|
|
3. Shows all active TCP/UDP connections
|
|
|
|
### Features
|
|
- Real-time connection monitoring
|
|
- Color-coded (green = new, red = closed)
|
|
- Right-click → Close Connection (for testing)
|
|
- Right-click → Whois (lookup IP)
|
|
|
|
### Save Output
|
|
```
|
|
File → Save → CSV
|
|
```
|
|
|
|
---
|
|
|
|
## Noriben - Automated Procmon Analysis
|
|
|
|
### Setup
|
|
```bash
|
|
# Download from: https://github.com/Rurik/Noriben
|
|
git clone https://github.com/Rurik/Noriben.git
|
|
cd Noriben
|
|
```
|
|
|
|
### Usage
|
|
```bash
|
|
# Automated execution with Procmon
|
|
python Noriben.py --cmd sample.exe --timeout 300
|
|
|
|
# Manual mode (execute malware yourself)
|
|
python Noriben.py --output noriben_report.txt
|
|
```
|
|
|
|
### Output
|
|
- Filtered Procmon events
|
|
- Suspicious behaviors highlighted
|
|
- Timeline of activities
|
|
- File, registry, network artifacts
|
|
|
|
---
|
|
|
|
## INetSim - Fake Internet Simulation
|
|
|
|
### Installation (Linux VM)
|
|
```bash
|
|
sudo apt update
|
|
sudo apt install inetsim
|
|
|
|
# Configure
|
|
sudo nano /etc/inetsim/inetsim.conf
|
|
```
|
|
|
|
### Configuration
|
|
```
|
|
service_bind_address 0.0.0.0
|
|
dns_default_ip 192.168.56.1 # INetSim host IP
|
|
https_bind_port 443
|
|
http_bind_port 80
|
|
smtp_bind_port 25
|
|
```
|
|
|
|
### Start INetSim
|
|
```bash
|
|
sudo inetsim
|
|
```
|
|
|
|
### Configure Windows VM
|
|
```
|
|
Set DNS server to INetSim IP (192.168.56.1)
|
|
Set gateway to INetSim IP (if using NAT)
|
|
```
|
|
|
|
### Verify
|
|
```cmd
|
|
# From Windows VM
|
|
ping google.com # Should resolve to INetSim IP
|
|
nslookup microsoft.com # Should resolve to INetSim IP
|
|
```
|
|
|
|
---
|
|
|
|
## FakeNet-NG - Windows Internet Simulation
|
|
|
|
### Installation
|
|
```bash
|
|
# Download from: https://github.com/mandiant/flare-fakenet-ng
|
|
pip install flare-fakenet-ng
|
|
```
|
|
|
|
### Usage
|
|
```cmd
|
|
# Run as Administrator
|
|
fakenet.exe
|
|
|
|
# Execute malware (FakeNet intercepts all network)
|
|
```
|
|
|
|
### Features
|
|
- Simulates HTTP, HTTPS, DNS, FTP, SMTP
|
|
- Captures all network traffic
|
|
- No external VM needed
|
|
- Logs all requests/responses
|
|
|
|
---
|
|
|
|
## Tool Startup Sequence
|
|
|
|
**Recommended Order:**
|
|
1. Take VM snapshot
|
|
2. Start INetSim (if using)
|
|
3. Start Sysmon (already installed)
|
|
4. Start Procmon (clear capture first)
|
|
5. Start Wireshark
|
|
6. Start System Informer
|
|
7. Start Regshot → 1st shot (if using)
|
|
8. Execute malware
|
|
9. Monitor for 15+ minutes
|
|
10. Regshot → 2nd shot (if using)
|
|
11. Stop all captures
|
|
12. Export all evidence
|
|
13. Revert to snapshot
|
|
|
|
---
|
|
|
|
## Quick Reference Card
|
|
|
|
| Tool | Purpose | When to Use |
|
|
|------|---------|-------------|
|
|
| **Procmon** | File/Registry/Process activity | Always |
|
|
| **Wireshark** | Network traffic | Always |
|
|
| **System Informer** | Process/Memory analysis | Always |
|
|
| **Sysmon** | Windows event logging | Always (background) |
|
|
| **Regshot** | Registry comparison | When need before/after snapshot |
|
|
| **TCPView** | Real-time connections | Quick network checks |
|
|
| **Noriben** | Automated Procmon | Time-constrained analysis |
|
|
| **INetSim** | Fake internet | Always (network isolation) |
|
|
| **FakeNet-NG** | Windows fake internet | Alternative to INetSim |
|
|
|
|
---
|
|
|
|
## Troubleshooting
|
|
|
|
**Procmon not capturing:**
|
|
- Run as Administrator
|
|
- Clear filters (Ctrl+R)
|
|
- Check "Capture Events" is enabled
|
|
|
|
**Wireshark shows no traffic:**
|
|
- Verify correct network adapter selected
|
|
- Check malware actually made network requests
|
|
- Verify VM network settings
|
|
|
|
**System Informer can't dump process:**
|
|
- Run as Administrator
|
|
- Process may be protected
|
|
- Try x64dbg or WinDbg instead
|
|
|
|
**Sysmon not logging:**
|
|
- Verify installation: `sc query sysmon64`
|
|
- Check config file is valid XML
|
|
- View logs: Event Viewer → Sysmon/Operational
|