Salta ai contenuti

RedEye

RedEye is a visualization and reporting framework designed for red team operations, command-and-control (C2) infrastructure, and authorized adversarial simulations. It aggregates data from various C2 platforms (Cobalt Strike, Empire, Metasploit, Sliver) to provide unified command execution tracking, timeline visualization, and comprehensive operation reporting. Essential for coordinating complex red team engagements and documenting authorized penetration tests.

# Python 3.8+
python3 --version

# Node.js and npm
node --version
npm --version

# Docker (optional but recommended)
docker --version
docker-compose --version
git clone https://github.com/offensive-security/redeye.git
cd redeye
docker-compose up -d
# Web interface: http://localhost:8080
cd backend
pip3 install -r requirements.txt
cd ../frontend
npm install
npm run build
redeye --version
redeye --help
python3 -m redeye --version
# Docker (recommended)
docker-compose up

# Manual startup
python3 -m redeye.server &
npm start  # in frontend directory
CommandPurpose
redeye import cobalt-strike.cobaltstrikeImport Cobalt Strike log
redeye import empire.jsonImport Empire JSON data
redeye list-campaignsList all campaigns
redeye timeline --campaign <id>Generate timeline visualization
redeye report --campaign <id>Generate HTML report
redeye export --campaign <id> --format jsonExport campaign data
redeye search <query> --campaign <id>Search campaign data
redeye stats --campaign <id>Display campaign statistics
redeye deduplicate --campaign <id>Remove duplicate commands
redeye sync --server http://server:portSync with remote server
1. Login to http://localhost:8080
2. Navigate to Campaigns
3. Select campaign to view timeline
4. Access command execution details
5. Export reports and visualizations
1. Create New Campaign
   - Campaign Name
   - Start Date
   - Team Members
   - Objectives
2. Import Logs
   - Select C2 platform
   - Upload operator data
   - Map users and hosts
3. Manage Timeline
   - Filter by date
   - Group by operator
   - Filter by host
# Export from Cobalt Strike
redeye import cobalt-strike.bin \
  --campaign "Operation Alpha" \
  --description "Red team engagement 2026"
# Combine data from multiple C2 systems
redeye import \
  --cobalt-strike cobaltstrike.bin \
  --empire empire-output.json \
  --metasploit msf-data.json \
  --campaign "Multi-C2 Engagement"
redeye import empire.json \
  --campaign "Empire Ops" \
  --sync-users true \
  --auto-timeline
# Sliver operator logs
redeye import sliver-session.log \
  --campaign "Sliver Operations" \
  --parse-implants
redeye timeline \
  --campaign "Operation Alpha" \
  --output timeline.html \
  --format interactive
redeye timeline \
  --campaign "Operation Alpha" \
  --start "2026-01-01" \
  --end "2026-01-31" \
  --output january-ops.html
redeye timeline \
  --campaign "Operation Alpha" \
  --group-by operator \
  --highlight-operators "alice,bob,charlie"
redeye timeline \
  --campaign "Operation Alpha" \
  --pivot-host \
  --include-hosts "server01,workstation02"
redeye search "command:*" \
  --campaign "Operation Alpha" \
  --format table
# Search by command type
redeye search "command_type:process-execution" \
  --campaign "Operation Alpha"

# Search by operator
redeye search "operator:alice" \
  --campaign "Operation Alpha"

# Search by host
redeye search "host:server01" \
  --campaign "Operation Alpha"
redeye stats \
  --campaign "Operation Alpha" \
  --stat-type command-summary
redeye search "status:success" \
  --campaign "Operation Alpha" \
  --count

redeye search "status:failed" \
  --campaign "Operation Alpha" \
  --count
redeye search "operator:*" \
  --campaign "Operation Alpha" \
  --unique
redeye stats \
  --campaign "Operation Alpha" \
  --operator-activity
redeye search "operator:alice" \
  --campaign "Operation Alpha" \
  --include-commands \
  --sort-by timestamp
redeye timeline \
  --campaign "Operation Alpha" \
  --operator-focus alice \
  --output alice-timeline.html
redeye search "host:*" \
  --campaign "Operation Alpha" \
  --unique
redeye search "host:server01" \
  --campaign "Operation Alpha" \
  --include-os \
  --include-users \
  --include-processes
redeye export \
  --campaign "Operation Alpha" \
  --format network-graph \
  --output network.json
redeye timeline \
  --campaign "Operation Alpha" \
  --host-focus server01 \
  --show-access-events
redeye report \
  --campaign "Operation Alpha" \
  --format html \
  --output report.html \
  --include-timeline \
  --include-stats \
  --include-objectives
redeye report \
  --campaign "Operation Alpha" \
  --format executive-summary \
  --output executive.html
redeye report \
  --campaign "Operation Alpha" \
  --format technical \
  --output technical-report.html \
  --include-iocs \
  --include-commands \
  --include-tooling
redeye report \
  --campaign "Operation Alpha" \
  --format timeline-only \
  --output timeline-report.html \
  --group-by date
redeye export \
  --campaign "Operation Alpha" \
  --format json \
  --output campaign-data.json
redeye export \
  --campaign "Operation Alpha" \
  --format csv \
  --output commands.csv \
  --include fields timestamp,operator,host,command,result
redeye export \
  --campaign "Operation Alpha" \
  --format iocs \
  --output indicators.txt \
  --ioc-types ip,domain,hash,process
redeye export \
  --campaign "Operation Alpha" \
  --format mitre-attack \
  --output attack-mapping.json
redeye deduplicate \
  --campaign "Operation Alpha" \
  --analyze-only
redeye deduplicate \
  --campaign "Operation Alpha" \
  --execute
redeye merge \
  --source "Operation Alpha" \
  --target "Operation Beta" \
  --strategy keep-both
redeye sanitize \
  --campaign "Operation Alpha" \
  --remove-passwords \
  --redact-usernames \
  --output cleaned-campaign.json
redeye timeline \
  --campaign "Operation Alpha" \
  --activity-filter "command,file-access,process-creation" \
  --output filtered-timeline.html
redeye timeline \
  --campaign "Operation Alpha" \
  --start "2026-01-15 08:00:00" \
  --end "2026-01-15 17:00:00" \
  --output daily-timeline.html
redeye timeline \
  --campaign "Operation Alpha" \
  --status-filter success \
  --output successful-only.html
redeye timeline \
  --campaign "Operation Alpha" \
  --format interactive \
  --output timeline-interactive.html
redeye timeline \
  --campaign "Operation Alpha" \
  --format linear \
  --output timeline-linear.html
redeye export \
  --campaign "Operation Alpha" \
  --format network-graph \
  --output network-graph.html
redeye export \
  --campaign "Operation Alpha" \
  --format sunburst \
  --output sunburst.html
redeye campaign create \
  --name "Operation Alpha" \
  --start-date "2026-01-01" \
  --team-members alice,bob,charlie
redeye list-campaigns \
  --include-stats
redeye compare \
  --campaign1 "Operation Alpha" \
  --campaign2 "Operation Beta" \
  --output comparison.html
redeye archive \
  --campaign "Operation Alpha" \
  --output archive.tar.gz
# Search all fields
redeye search "malware" --campaign "Op Alpha"

# Specific field
redeye search "command:whoami" --campaign "Op Alpha"

# Multiple conditions
redeye search "operator:alice AND host:server01" --campaign "Op Alpha"
# Wildcards
redeye search "command:*creds*" --campaign "Op Alpha"

# Range
redeye search "timestamp:[2026-01-01 TO 2026-01-31]" --campaign "Op Alpha"

# Exclusion
redeye search "NOT status:failed" --campaign "Op Alpha"

# OR logic
redeye search "host:server01 OR host:server02" --campaign "Op Alpha"
redeye map-attack \
  --campaign "Operation Alpha" \
  --output attack-mapping.json
redeye export \
  --campaign "Operation Alpha" \
  --format attack-navigator \
  --output navigator.json
redeye report \
  --campaign "Operation Alpha" \
  --format attack-coverage \
  --output technique-coverage.html
redeye server start --host 0.0.0.0 --port 8080
redeye sync \
  --server http://remote-server:8080 \
  --campaign "Operation Alpha"
redeye user add --username analyst --password secure
redeye user list
redeye user delete --username analyst
redeye backup \
  --campaign "Operation Alpha" \
  --output backup.tar.gz
# ~/.redeye/config.yaml
server:
  host: 0.0.0.0
  port: 8080
  debug: false

database:
  type: sqlite
  path: ./redeye.db

import:
  auto-deduplicate: true
  merge-similar: false

export:
  include-sensitive: true
  sanitize: false

timeline:
  group-by-default: date
  highlight-failed: true
export REDEYE_HOST=0.0.0.0
export REDEYE_PORT=8080
export REDEYE_DB_PATH=/data/redeye.db
export REDEYE_DEBUG=true
  1. Segregate Operations - Keep campaigns separate for security and organization
  2. Regular Backups - Export campaigns regularly for record preservation
  3. Sanitize Reports - Remove sensitive data before sharing reports
  4. Document Objectives - Clearly define and track engagement objectives
  5. Timestamp Everything - Ensure accurate timeline data for forensics
  6. Access Control - Limit who can view sensitive operation data
  7. Archive Completed - Archive finished campaigns for long-term storage
  8. Validate Imports - Verify C2 data integrity before importing
# Day 1: Import Cobalt Strike data
redeye import cobalt-strike.bin --campaign "Engagement 2026"

# Day 2: Add Empire data
redeye import empire.json --campaign "Engagement 2026"

# Day 3: Generate daily report
redeye report --campaign "Engagement 2026" \
  --format html --output day3-report.html

# End of week: Executive summary
redeye report --campaign "Engagement 2026" \
  --format executive-summary --output executive.html
# Import suspicious activity logs
redeye import activity.json --campaign "IR-2026-001"

# Timeline visualization
redeye timeline --campaign "IR-2026-001" \
  --output incident-timeline.html

# Export IOCs for blocking
redeye export --campaign "IR-2026-001" \
  --format iocs --output blocking-list.txt
# Generate comprehensive report
redeye report --campaign "Engagement 2026" \
  --format technical \
  --include-timeline \
  --include-stats \
  --include-objectives \
  --output compliance-report.html

# Export for audit trail
redeye export --campaign "Engagement 2026" \
  --format json --output audit-trail.json
# Verify file format
file cobalt-strike.bin

# Check compatibility
redeye import --validate cobalt-strike.bin

# Verbose import
redeye import --verbose cobalt-strike.bin
# Check database integrity
redeye database check

# Repair database
redeye database repair

# Reset database
redeye database reset
# Check server status
curl http://localhost:8080/api/health

# Restart services
docker-compose restart

# Check logs
docker-compose logs -f