Ir al contenido

Chaosreader

Chaosreader is a specialized network forensics tool that reconstructs TCP and UDP sessions from packet capture files (pcap). It extracts and reassembles application-level data including HTTP responses, FTP uploads/downloads, SMTP messages, telnet sessions, and more. Widely used in digital forensics, incident response, and network analysis.

# Clone the repository
git clone https://github.com/m57/chaosreader.git
cd chaosreader

# Make scripts executable
chmod +x chaosreader.pl

# Run directly
./chaosreader.pl --help
# Install Perl if not present
sudo apt-get install perl perl-doc

# Install required CPAN modules
cpan install Getopt::Long Data::Dumper

# Verify installation
perl -v
# Ubuntu/Debian
sudo apt-get install chaosreader

# macOS (Homebrew)
brew install chaosreader

# Manual installation
cp chaosreader.pl /usr/local/bin/
chmod +x /usr/local/bin/chaosreader.pl
# Extract all sessions from pcap file
chaosreader.pl capture.pcap

# Specify output directory
chaosreader.pl -D output_dir/ capture.pcap

# Process multiple pcap files
chaosreader.pl *.pcap

# Extract to specific format
chaosreader.pl -w output_dir/ capture.pcap
# Create output directory structure
mkdir analysis-results
chaosreader.pl -D analysis-results/ network-capture.pcap

# View extracted files
ls -la analysis-results/
CommandDescription
-D, --dirSpecify output directory for extracted files
-wOutput format selection (html, text, raw)
-v, --verboseEnable verbose output for detailed analysis
-q, --quietSuppress non-essential output
-i, --inputExplicitly specify input pcap file
-o, --outputSpecify output file base name
--tcpProcess TCP sessions only
--udpProcess UDP sessions only
--filterApply BPF filter to pcap
--no-httpSkip HTTP session extraction
--no-ftpSkip FTP session extraction
--rawOutput raw binary data
# Extract all HTTP requests and responses
chaosreader.pl capture.pcap -D http-output/

# Process HTTPS sessions (encrypted - limited extraction)
chaosreader.pl capture.pcap

# Analyze HTTP headers and bodies
chaosreader.pl -v capture.pcap | grep -i "http\|request\|response"

# Extract specific domain traffic
tcpdump -r capture.pcap "port 80 or port 443" -w http-only.pcap
chaosreader.pl http-only.pcap -D http-analysis/
# Extract FTP upload/download sequences
chaosreader.pl capture.pcap -D ftp-output/

# Analyze FTP commands and responses
chaosreader.pl -v capture.pcap | grep -i "ftp\|retr\|stor"

# Filter FTP-specific traffic
tcpdump -r capture.pcap "port 21" -w ftp-only.pcap
chaosreader.pl ftp-only.pcap -D ftp-analysis/
# Extract email messages
chaosreader.pl capture.pcap -D email-output/

# Process mail server communications
chaosreader.pl -v capture.pcap | grep -i "smtp\|mail"

# Filter SMTP traffic
tcpdump -r capture.pcap "port 25 or port 587 or port 465" -w smtp-only.pcap
chaosreader.pl smtp-only.pcap -D email-analysis/
# Reconstruct telnet terminal sessions
chaosreader.pl capture.pcap -D telnet-output/

# Analyze telnet interactive commands
chaosreader.pl -v capture.pcap | grep -i "telnet\|23"

# Extract telnet credentials (if unencrypted)
tcpdump -r capture.pcap "port 23" -w telnet-only.pcap
chaosreader.pl telnet-only.pcap -D telnet-analysis/
# Extract DNS queries and responses
chaosreader.pl capture.pcap -D dns-output/

# Analyze domain lookups
chaosreader.pl -v capture.pcap | grep -i "dns\|53"

# Filter DNS traffic
tcpdump -r capture.pcap "port 53" -w dns-only.pcap
chaosreader.pl dns-only.pcap -D dns-analysis/
# Extract specific source IP sessions
chaosreader.pl --filter "src 192.168.1.100" capture.pcap -D output/

# Analyze traffic between two hosts
chaosreader.pl --filter "host 192.168.1.100 and host 10.0.0.50" capture.pcap -D output/

# Process traffic on specific port
chaosreader.pl --filter "port 80" capture.pcap -D output/

# Combine multiple filters
chaosreader.pl --filter "tcp and (port 80 or port 443)" capture.pcap -D output/

# Exclude specific traffic
chaosreader.pl --filter "not (port 53 or port 123)" capture.pcap -D output/
# Extract TCP sessions only
chaosreader.pl --tcp capture.pcap -D tcp-output/

# Extract UDP sessions only
chaosreader.pl --udp capture.pcap -D udp-output/

# Skip specific protocol extraction
chaosreader.pl --no-http capture.pcap -D output/

# Verbose analysis
chaosreader.pl -v capture.pcap -D verbose-output/ > analysis.log
# Typical output organization
output/
├── index.html           # HTML index of all sessions
├── conversations/       # TCP/UDP conversation files
   ├── 001_192-168-1-100_to_10-0-0-50.txt
   └── 002_10-0-0-50_to_192-168-1-100.txt
├── files/              # Extracted binary files
   ├── ftp_upload.bin
   └── http_response.bin
├── mail/               # Email messages
├── http/               # HTTP requests/responses
└── raw/                # Raw session data
# Generate HTML report
chaosreader.pl capture.pcap -D html-output/

# View results
open html-output/index.html
# or
firefox html-output/index.html
# Generate text-based analysis
chaosreader.pl -w capture.pcap -D text-output/

# View session summary
cat text-output/chaos.summary
# Step 1: Extract all sessions
chaosreader.pl -v suspicious-traffic.pcap -D incident-analysis/ > analysis.log

# Step 2: Review extracted files
ls -lah incident-analysis/

# Step 3: Examine index
cat incident-analysis/index.html

# Step 4: Analyze specific sessions
cat incident-analysis/conversations/001_*

# Step 5: Document findings
grep -r "GET\|POST\|login\|password" incident-analysis/ > findings.txt
# Extract HTTP traffic
tcpdump -r capture.pcap "port 80 or port 443" -w web-traffic.pcap
chaosreader.pl web-traffic.pcap -D web-analysis/

# Review HTTP requests
cat web-analysis/http/*

# Check for injection attempts
grep -i "script\|sql\|union\|select" web-analysis/conversations/*

# Analyze response codes
grep -i "200\|301\|401\|403\|500" web-analysis/*
# Extract email sessions
tcpdump -r capture.pcap "port 25 or port 587 or port 465 or port 110 or port 143" -w email.pcap
chaosreader.pl email.pcap -D email-analysis/

# Review sender/recipient
grep -i "from:\|to:\|subject:" email-analysis/mail/*

# Check attachments
ls -la email-analysis/files/

# Analyze headers
cat email-analysis/conversations/*
# Extract all sessions
chaosreader.pl capture.pcap -D exfil-analysis/

# Check for file transfers
ls -la exfil-analysis/files/

# Analyze file sizes
du -sh exfil-analysis/files/*

# Review FTP sessions
cat exfil-analysis/conversations/*ftp*

# Check HTTP uploads
grep -i "post\|upload\|multipart" exfil-analysis/conversations/*
# Reconstruct complete TCP streams
chaosreader.pl capture.pcap -D streams/

# Review stream files
cat streams/conversations/001_*

# Verify stream integrity
wc -l streams/conversations/*
# Process packets with sequence verification
chaosreader.pl -v capture.pcap -D reordered/ > reorder.log

# Check for packet loss
grep -i "lost\|missing\|sequence" reorder.log

# Analyze packet drops
tcpdump -r capture.pcap -n | tail -20
# Extract temporal information
chaosreader.pl -v capture.pcap -D timeline/ 2>&1 | grep -i "time\|date"

# Review session start/end times
cat timeline/index.html | grep -i "time"

# Create chronological analysis
ls -lt timeline/conversations/* | head -20
# Calculate pcap file hash
sha256sum capture.pcap > evidence.sha256

# Document analysis results
md5sum analysis-results/* > file-hashes.txt

# Create evidence inventory
ls -lah analysis-results/ > inventory.txt
# Document original capture
file capture.pcap
stat capture.pcap

# Log analysis activities
echo "Analysis started: $(date)" > analysis-log.txt
chaosreader.pl capture.pcap -D results/ 2>&1 | tee -a analysis-log.txt

# Generate final report
echo "Analysis completed: $(date)" >> analysis-log.txt
# Comprehensive analysis report
{
  echo "=== Chaosreader Analysis Report ==="
  echo "Capture file: $(file capture.pcap)"
  echo "Analysis date: $(date)"
  echo "Analysis directory: $(pwd)/results/"
  echo ""
  echo "=== Sessions Extracted ==="
  wc -l results/conversations/*
  echo ""
  echo "=== Files Recovered ==="
  ls -lah results/files/
} > forensic-report.txt
# Verify pcap file validity
tcpdump -r capture.pcap -c 5

# Check file size
ls -lh capture.pcap

# Enable verbose mode
chaosreader.pl -v capture.pcap -D debug/ > debug.log

# Review debug output
tail -50 debug.log
# Process large pcaps in chunks
tcpdump -r large-capture.pcap -w chunk1.pcap -c 100000
tcpdump -r large-capture.pcap -w chunk2.pcap -c 100000

# Process each chunk
chaosreader.pl chunk1.pcap -D output1/
chaosreader.pl chunk2.pcap -D output2/
# Check file encoding
file results/conversations/*

# Convert encoding if needed
iconv -f ISO-8859-1 -t UTF-8 input.txt -o output.txt

# Review binary data
hexdump -C results/files/* | head -20
# Export filtered traffic from Wireshark
# File > Export Specified Packets > pcap format

# Analyze exported file
chaosreader.pl wireshark-export.pcap -D ws-analysis/
# Capture and analyze in one workflow
tcpdump -i eth0 -w live-capture.pcap
chaosreader.pl live-capture.pcap -D live-analysis/
# Export alerts as pcap
# Use IDS logs to identify sessions of interest

# Analyze specific malicious sessions
chaosreader.pl suspicious-session.pcap -D alert-analysis/
# Process in batches
for pcap in *.pcap; do
  chaosreader.pl "$pcap" -D "${pcap%.pcap}_output/"
done

# Parallel processing
parallel chaosreader.pl {} -D {.}_output/ ::: *.pcap
# Use filters to reduce data
chaosreader.pl --filter "tcp and port 80" large-capture.pcap -D filtered/

# Process subset first
tcpdump -r large.pcap -w subset.pcap -c 50000
chaosreader.pl subset.pcap -D preview/
  • Verify hash: Always verify pcap integrity before and after analysis
  • Document procedure: Record all commands and parameters used
  • Preserve evidence: Create read-only copies of original files
  • Cross-reference: Compare findings with other tools (Wireshark, tshark)
  • Timeline analysis: Build chronological timeline of events
  • Export findings: Save all extracted data with proper metadata
  • Chain of custody: Maintain detailed logs of analysis activities
ScenarioApproach
Web attack investigationFilter port 80/443, review HTTP requests/responses
Credential theftSearch for FTP, telnet, HTTP Basic Auth sessions
Data exfiltrationIdentify large file transfers, check FTP uploads
Malware communicationExtract DNS queries, HTTP beacons, C2 traffic
Email investigationFilter SMTP/POP3/IMAP ports, extract messages
Network reconnaissanceAnalyze DNS queries, port scans, service probes