Skip to content

Malware Analysis

This guide provides comprehensive examples for analyzing malware with friTap, covering C&C communications, data exfiltration, and advanced persistent threats (APTs).

Safety Notice

Always analyze malware in isolated environments (VMs, sandboxes) with no network access to production systems. Use test networks and proper containment procedures.

Malware Analysis Setup

Isolated Environment

Virtual Machine Setup:

# Create isolated VM network
# Disable internet access or use honeypot network
# Install friTap in VM
pip install fritap

# Verify isolation
ping 8.8.8.8  # Should fail or route to honeypot

Container Analysis:

# Docker isolation
docker run -it --network none --name malware-analysis ubuntu:latest
docker exec -it malware-analysis bash
# Install friTap and analyze malware

Network Monitoring Setup

Capture All Network Traffic:

# Start network capture before malware execution
tcpdump -i any -w network_baseline.pcap &
TCPDUMP_PID=$!

# Run friTap analysis
fritap -k malware_keys.log --pcap malware_traffic.pcap ./malware_sample

# Stop network capture
kill $TCPDUMP_PID

C&C Communication Analysis

Basic C&C Analysis

Capture C&C Communications:

# Comprehensive malware analysis with JSON metadata
fritap -k cc_keys.log --pcap cc_traffic.pcap --json cc_metadata.json ./malware_sample

# Monitor for typical C&C patterns
tcpdump -r cc_traffic.pcap -A | grep -E "(POST|GET|PUT)" | head -20

# Analyze JSON metadata for connection patterns
cat cc_metadata.json | jq '.connections[] | select(.dst_port == 443) | .dst_addr' | sort | uniq

C&C Traffic Patterns:

# Look for beaconing behavior
tcpdump -r cc_traffic.pcap -t | awk '{print $1, $3, $5}' | sort | uniq -c

# Check for encrypted C&C
tcpdump -r cc_traffic.pcap 'port 443' -A | grep -E "(Host:|User-Agent:)"

Advanced C&C Analysis

Multi-Stage Malware:

# Capture initial dropper
fritap -k dropper_keys.log --pcap dropper_traffic.pcap ./dropper.exe

# Enable spawn gating for downloaded payloads
fritap --enable_spawn_gating -k all_keys.log --pcap all_traffic.pcap ./dropper.exe

Domain Generation Algorithm (DGA) Detection:

# Extract DNS queries from traffic
tcpdump -r malware_traffic.pcap 'port 53' -A | grep -E "\.com|\.net|\.org"

# Look for algorithmically generated domains
tcpdump -r malware_traffic.pcap 'port 53' -A | grep -E "[a-z]{20,}\.com"

Data Exfiltration Analysis

Credential Harvesting

Banking Trojan Analysis:

# Analyze banking trojan with comprehensive logging
fritap -k banking_keys.log --pcap banking_traffic.pcap --json banking_analysis.json ./banking_trojan.exe

# Search for financial data patterns
tcpdump -r banking_traffic.pcap -A | grep -iE "(password|login|account|balance)"

# Analyze connection metadata
cat banking_analysis.json | jq '.connections[] | select(.data_length > 100) | {dst_addr, dst_port, timestamp}'

Browser Credential Theft:

# Monitor browser data access with metadata collection
fritap --enable_spawn_gating -k browser_keys.log --pcap browser_traffic.pcap --json browser_theft.json ./browser_stealer.exe

# Look for stolen credentials in traffic
tcpdump -r browser_traffic.pcap -A | grep -E "(username|password|cookie)"

# Analyze exfiltration patterns from JSON
cat browser_theft.json | jq '.statistics.total_bytes_captured, .connections | length'

Data Exfiltration Patterns

File Upload Detection:

# Monitor for file uploads
tcpdump -r malware_traffic.pcap 'port 80 or port 443' -A | grep -E "(Content-Type: multipart|boundary=)"

# Extract uploaded filenames
tcpdump -r malware_traffic.pcap -A | grep -E "(filename=|Content-Disposition:)"

Database Exfiltration:

# Look for database connection strings
tcpdump -r malware_traffic.pcap -A | grep -iE "(SELECT|INSERT|UPDATE|DELETE)"

# Monitor for SQL injection attempts
tcpdump -r malware_traffic.pcap -A | grep -E "(UNION|SELECT|DROP|INSERT)"

Ransomware Analysis

Ransomware Communication

Ransomware C&C Analysis:

# Analyze ransomware communications with session tracking
fritap -k ransomware_keys.log --pcap ransomware_traffic.pcap --json ransomware_analysis.json ./ransomware.exe

# Look for key exchange communications
tcpdump -r ransomware_traffic.pcap -A | grep -E "(key|encrypt|ransom)"

# Extract C&C server information
cat ransomware_analysis.json | jq '.connections[] | .dst_addr' | sort | uniq

Payment Infrastructure:

# Monitor cryptocurrency communications
tcpdump -r ransomware_traffic.pcap -A | grep -iE "(bitcoin|btc|cryptocurrency|wallet)"

# Look for payment gateway communications
tcpdump -r ransomware_traffic.pcap 'port 443' -A | grep -iE "(payment|gateway|transaction)"

File Encryption Monitoring

Encryption Activity:

# Monitor file system access during encryption
fritap --enable_spawn_gating -k encryption_keys.log --pcap encryption_traffic.pcap ./ransomware.exe

# Check for network-based key storage
tcpdump -r encryption_traffic.pcap -A | grep -E "(encrypt|decrypt|key|cipher)"

APT Analysis

Advanced Persistent Threat Tactics

Initial Access Analysis:

# Analyze spear-phishing payload with timeline tracking
fritap -k apt_keys.log --pcap apt_traffic.pcap --json apt_timeline.json ./phishing_payload.exe

# Look for initial C&C beaconing
tcpdump -r apt_traffic.pcap -t | head -50

# Analyze initial contact timeline
cat apt_timeline.json | jq '.connections[] | {timestamp, dst_addr, dst_port}' | head -10

Lateral Movement Detection:

# Monitor for lateral movement attempts
fritap --enable_spawn_gating -k lateral_keys.log --pcap lateral_traffic.pcap ./apt_tool.exe

# Check for internal network scanning
tcpdump -r lateral_traffic.pcap 'icmp or port 22 or port 3389'

Living-off-the-Land Analysis

PowerShell-based Attacks:

# Analyze PowerShell-based malware with detailed logging
fritap -k powershell_keys.log --pcap powershell_traffic.pcap --json powershell_analysis.json powershell.exe -File malicious_script.ps1

# Look for encoded commands
tcpdump -r powershell_traffic.pcap -A | grep -E "(FromBase64String|EncodedCommand)"

# Check for command execution patterns
cat powershell_analysis.json | jq '.connections[] | select(.data_length > 500)'

WMI-based Attacks:

# Monitor WMI-based persistence
fritap --enable_spawn_gating -k wmi_keys.log --pcap wmi_traffic.pcap ./wmi_backdoor.exe

# Check for WMI network communications
tcpdump -r wmi_traffic.pcap 'port 135 or port 445'

Mobile Malware Analysis

Android Malware

Mobile Banking Trojan:

# Analyze Android banking malware with comprehensive tracking
fritap -m -k android_malware_keys.log --pcap android_malware_traffic.pcap --json android_banking.json com.malware.banking

# Look for SMS interception
tcpdump -r android_malware_traffic.pcap -A | grep -iE "(sms|message|text)"

# Analyze mobile communication patterns
cat android_banking.json | jq '.connections[] | select(.dst_port != 443) | {dst_addr, dst_port}'

Android Spyware:

# Monitor spyware communications
fritap -m --enable_spawn_gating -k spyware_keys.log --pcap spyware_traffic.pcap com.malware.spy

# Check for data exfiltration
tcpdump -r spyware_traffic.pcap -A | grep -iE "(location|contact|call|photo)"

iOS Malware

iOS Malware Analysis:

# Analyze iOS malware (requires jailbreak)
fritap -m -k ios_malware_keys.log --pcap ios_malware_traffic.pcap com.malware.ios

# Monitor for certificate abuse
tcpdump -r ios_malware_traffic.pcap 'port 443' -A | grep -E "(certificate|cert|ssl)"

Cryptocurrency Mining Malware

Cryptojacking Analysis

Mining Pool Communication:

# Analyze cryptocurrency miner with pool tracking
fritap -k mining_keys.log --pcap mining_traffic.pcap --json mining_analysis.json ./cryptominer.exe

# Look for mining pool connections
tcpdump -r mining_traffic.pcap | grep -E "(stratum|pool|mining)"

# Extract mining pool IPs and statistics
cat mining_analysis.json | jq '.connections[] | select(.dst_port == 4444 or .dst_port == 14444) | .dst_addr'

Resource Consumption:

# Monitor system resource usage
fritap -k miner_keys.log --pcap miner_traffic.pcap ./miner.exe &
FRITAP_PID=$!

# Monitor CPU/memory usage
watch -n 1 "ps -p $FRITAP_PID -o pid,ppid,cmd,%mem,%cpu"

Advanced Analysis Techniques

Behavioral Analysis

Dynamic Analysis Integration:

# Combine with behavioral analysis
fritap -k behavior_keys.log --pcap behavior_traffic.pcap ./malware.exe &
FRITAP_PID=$!

# Monitor file system changes
inotifywait -m -r --format '%w%f %e' /tmp /var/tmp &
INOTIFY_PID=$!

# Stop monitoring
kill $FRITAP_PID $INOTIFY_PID

Anti-Analysis Evasion

Packed Malware:

# Analyze packed malware
fritap --enable_spawn_gating -k packed_keys.log --pcap packed_traffic.pcap ./packed_malware.exe

# Monitor for unpacking behavior
tcpdump -r packed_traffic.pcap -A | grep -E "(unpack|decode|decrypt)"

Anti-VM Detection:

# Bypass VM detection
fritap --enable-anti-detection -k vm_keys.log --pcap vm_traffic.pcap ./vm_aware_malware.exe

# Check for VM detection attempts
tcpdump -r vm_traffic.pcap -A | grep -iE "(vmware|virtualbox|qemu|hyperv)"

Malware Family Analysis

Family-Specific Analysis

Emotet Analysis:

# Emotet-specific patterns
fritap -k emotet_keys.log --pcap emotet_traffic.pcap ./emotet_sample.exe

# Look for Emotet C&C patterns
tcpdump -r emotet_traffic.pcap -A | grep -E "(POST.*HTTP/1\.[01])" | head -10

TrickBot Analysis:

# TrickBot banking module
fritap --enable_spawn_gating -k trickbot_keys.log --pcap trickbot_traffic.pcap ./trickbot.exe

# Monitor for web injection attempts
tcpdump -r trickbot_traffic.pcap -A | grep -iE "(inject|webinject|banking)"

RAT Analysis

Remote Access Trojan:

# Analyze RAT communications
fritap -k rat_keys.log --pcap rat_traffic.pcap ./rat_client.exe

# Look for remote control commands
tcpdump -r rat_traffic.pcap -A | grep -E "(cmd|command|execute|shell)"

Automated Malware Analysis

Analysis Pipeline

#!/bin/bash
# Automated malware analysis pipeline

MALWARE_SAMPLE="$1"
OUTPUT_DIR="malware_analysis_$(date +%Y%m%d_%H%M%S)"

mkdir -p "$OUTPUT_DIR"
cd "$OUTPUT_DIR"

echo "Starting malware analysis of $MALWARE_SAMPLE"

# System baseline
ps aux > baseline_processes.txt
netstat -an > baseline_network.txt

# Start network capture
tcpdump -i any -w network_capture.pcap &
TCPDUMP_PID=$!

# friTap analysis with comprehensive logging
fritap -k malware_keys.log \
       --pcap malware_traffic.pcap \
       --json malware_metadata.json \
       -v "$MALWARE_SAMPLE" 2>&1 | tee malware_analysis.log

# Stop network capture
kill $TCPDUMP_PID

# Post-analysis comparison
ps aux > post_processes.txt
netstat -an > post_network.txt

# Generate analysis report
echo "Malware Analysis Report" > analysis_report.txt
echo "Sample: $MALWARE_SAMPLE" >> analysis_report.txt
echo "Date: $(date)" >> analysis_report.txt
echo "TLS Keys: $(grep -c CLIENT_RANDOM malware_keys.log)" >> analysis_report.txt
echo "Network Connections: $(tcpdump -r malware_traffic.pcap | wc -l)" >> analysis_report.txt
echo "SSL Sessions: $(cat malware_metadata.json | jq '.statistics.total_connections')" >> analysis_report.txt
echo "Total Bytes: $(cat malware_metadata.json | jq '.statistics.total_bytes_captured')" >> analysis_report.txt

echo "Analysis complete. Results in $OUTPUT_DIR"

IOC Extraction

#!/bin/bash
# Extract Indicators of Compromise

PCAP_FILE="$1"
OUTPUT_FILE="iocs.txt"

echo "Extracting IOCs from $PCAP_FILE"

# Extract IP addresses
tcpdump -r "$PCAP_FILE" -n | grep -oE "\b([0-9]{1,3}\.){3}[0-9]{1,3}\b" | sort -u > ips.txt

# Extract domains
tcpdump -r "$PCAP_FILE" -A | grep -oE "\b[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}\b" | sort -u > domains.txt

# Extract URLs
tcpdump -r "$PCAP_FILE" -A | grep -oE "https?://[^\s]+" | sort -u > urls.txt

# Extract file hashes (if present in traffic)
tcpdump -r "$PCAP_FILE" -A | grep -oE "\b[a-f0-9]{32}\b" | sort -u > md5_hashes.txt
tcpdump -r "$PCAP_FILE" -A | grep -oE "\b[a-f0-9]{40}\b" | sort -u > sha1_hashes.txt

# Combine all IOCs
{
    echo "# IP Addresses"
    cat ips.txt
    echo -e "\n# Domains"
    cat domains.txt
    echo -e "\n# URLs"
    cat urls.txt
    echo -e "\n# MD5 Hashes"
    cat md5_hashes.txt
    echo -e "\n# SHA1 Hashes"
    cat sha1_hashes.txt
} > "$OUTPUT_FILE"

echo "IOCs extracted to $OUTPUT_FILE"

Threat Intelligence Integration

IOC Matching

# Check extracted IOCs against threat intelligence
#!/bin/bash
IOC_FILE="$1"
TI_FEED="$2"

echo "Matching IOCs against threat intelligence"

# Match IP addresses
grep -f <(grep -E "^[0-9]+\." "$IOC_FILE") "$TI_FEED" > matched_ips.txt

# Match domains
grep -f <(grep -E "\.[a-zA-Z]{2,}$" "$IOC_FILE") "$TI_FEED" > matched_domains.txt

echo "Matches found:"
echo "IPs: $(wc -l < matched_ips.txt)"
echo "Domains: $(wc -l < matched_domains.txt)"

Best Practices

1. Isolation and Containment

# Always use isolated environments
# Disable network access to production systems
# Use honeypots for network analysis
# Document all analysis activities

2. Comprehensive Data Collection

# Collect multiple data sources with JSON metadata
fritap -k keys.log --pcap traffic.pcap --json metadata.json malware.exe
tcpdump -i any -w full_network.pcap &
strace -f -o syscalls.txt malware.exe

# Analyze collected JSON data
cat metadata.json | jq '.session_info, .statistics'

3. Timeline Analysis

# Correlate events across time
grep -E "^\[.*\]" malware_analysis.log | sort
tcpdump -r malware_traffic.pcap -t | sort

4. Evidence Preservation

# Create forensic images
md5sum malware.exe > evidence.md5
sha256sum malware.exe > evidence.sha256
tar -czf evidence.tar.gz malware_analysis_*

Safety Considerations

Environment Security

  • Use air-gapped networks
  • Implement proper containment
  • Regular VM snapshots
  • Network traffic monitoring
  • Obtain proper authorization
  • Follow responsible disclosure
  • Document analysis procedures
  • Maintain chain of custody

Next Steps

  • Advanced Features: Learn about Pattern-based Hooking
  • Automation: Explore Python API for automated analysis
  • Incident Response: Use -l flag for live analysis and real-time monitoring
  • Platform-Specific: Review Platform Guides for OS-specific analysis