block-nuke-telemetry/scripts/decrypt_nuke_traffic.sh
Nicholai 6fada7889a Initial public release - Nuke telemetry monitoring toolkit
This toolkit provides comprehensive monitoring, analysis, and blocking capabilities
for network telemetry sent by The Foundry's Nuke compositor on Linux.

Key features:
- Network monitoring scripts with automated alerts
- Multi-tier blocking methods (hosts, firewall, namespace, AppArmor)
- Detailed packet capture analysis and documentation
- EULA legal analysis and privacy assessment
- Sanitized example captures and comprehensive guides

All sensitive data (personal IPs, usernames, packet captures) removed.
Ready for public sharing on Gitea.
2025-11-26 15:28:21 -07:00

243 lines
9.6 KiB
Bash
Executable File

#!/bin/bash
# Automated HTTPS decryption for Nuke telemetry
# Tries mitmproxy method, provides instructions for frida fallback
OUTPUT_DIR="$HOME/Documents/obsidian-vault/2-projects/Nuke-monitoring/dump/decrypted"
mkdir -p "$OUTPUT_DIR"
TIMESTAMP=$(date +%Y-%m-%d_%H-%M-%S)
echo "═══════════════════════════════════════════════════════"
echo " Nuke HTTPS Traffic Decryption Tool"
echo "═══════════════════════════════════════════════════════"
echo ""
echo "This tool will attempt to decrypt HTTPS traffic from Nuke"
echo "using SSL/TLS interception (mitmproxy method)."
echo ""
echo "LEGAL NOTE: This intercepts YOUR traffic from YOUR software"
echo "on YOUR computer. This is legal and ethical for privacy research."
echo ""
# Check if mitmproxy is installed
if ! command -v mitmproxy &> /dev/null; then
echo "ERROR: mitmproxy is not installed."
echo ""
echo "Install with:"
echo " sudo pacman -S mitmproxy"
echo ""
exit 1
fi
# Check if Nuke is running (it shouldn't be yet)
if pgrep -f Nuke > /dev/null 2>&1; then
echo "WARNING: Nuke is currently running."
echo "For best results, close Nuke before starting interception."
echo ""
read -p "Continue anyway? (y/n): " continue_anyway
if [ "$continue_anyway" != "y" ]; then
echo "Aborted."
exit 0
fi
fi
echo ""
echo "═══════════════════════════════════════════════════════"
echo " Step 1: Setup mitmproxy certificate"
echo "═══════════════════════════════════════════════════════"
echo ""
# Generate mitmproxy certificate if not exists
if [ ! -f "$HOME/.mitmproxy/mitmproxy-ca-cert.pem" ]; then
echo "Generating mitmproxy certificate..."
mitmproxy --version > /dev/null 2>&1
sleep 2
if [ ! -f "$HOME/.mitmproxy/mitmproxy-ca-cert.pem" ]; then
echo "Running mitmproxy briefly to generate certificate..."
timeout 3 mitmproxy 2>/dev/null || true
fi
fi
# Install certificate to system trust store
if [ -f "$HOME/.mitmproxy/mitmproxy-ca-cert.pem" ]; then
echo "Installing mitmproxy certificate to system trust store..."
sudo cp "$HOME/.mitmproxy/mitmproxy-ca-cert.pem" /etc/ca-certificates/trust-source/anchors/mitmproxy.crt 2>/dev/null || true
sudo trust extract-compat 2>/dev/null || true
sudo update-ca-trust 2>/dev/null || true
echo "✓ Certificate installed"
else
echo "WARNING: Could not generate mitmproxy certificate."
echo "Interception may not work properly."
fi
echo ""
echo "═══════════════════════════════════════════════════════"
echo " Step 2: Start mitmproxy web interface"
echo "═══════════════════════════════════════════════════════"
echo ""
MITM_LOG="$OUTPUT_DIR/nuke_traffic_$TIMESTAMP.mitm"
echo "Starting mitmweb on http://127.0.0.1:8081"
echo "Log file: $MITM_LOG"
echo ""
# Start mitmweb in background
mitmweb --mode transparent --showhost --set block_global=false -w "$MITM_LOG" > "$OUTPUT_DIR/mitmproxy_$TIMESTAMP.log" 2>&1 &
MITMPROXY_PID=$!
echo "mitmproxy PID: $MITMPROXY_PID"
sleep 3
# Check if mitmproxy started successfully
if ! kill -0 $MITMPROXY_PID 2>/dev/null; then
echo "ERROR: mitmproxy failed to start."
echo "Check log: $OUTPUT_DIR/mitmproxy_$TIMESTAMP.log"
exit 1
fi
echo "✓ mitmproxy started successfully"
echo ""
echo "═══════════════════════════════════════════════════════"
echo " Step 3: Setup iptables traffic redirection"
echo "═══════════════════════════════════════════════════════"
echo ""
# Save current iptables rules for restoration
sudo iptables-save > "$OUTPUT_DIR/iptables_backup_$TIMESTAMP.rules"
echo "Redirecting Foundry traffic through mitmproxy..."
# Redirect Honeycomb traffic
sudo iptables -t nat -A OUTPUT -p tcp -d 52.205.16.9 --dport 443 -j REDIRECT --to-port 8080
# Redirect learn.foundry.com
sudo iptables -t nat -A OUTPUT -p tcp -d 52.50.232.31 --dport 443 -j REDIRECT --to-port 8080
sudo iptables -t nat -A OUTPUT -p tcp -d 52.50.232.31 --dport 80 -j REDIRECT --to-port 8080
# Redirect any other foundry.com domains (by name - requires DNS)
# Note: This might not work for direct IP connections
echo "✓ iptables rules applied"
echo ""
echo "═══════════════════════════════════════════════════════"
echo " Step 4: Launch Nuke and capture traffic"
echo "═══════════════════════════════════════════════════════"
echo ""
echo "INSTRUCTIONS:"
echo ""
echo "1. Open your browser to: http://127.0.0.1:8081"
echo " (mitmproxy web interface)"
echo ""
echo "2. Launch Nuke now and use it normally"
echo ""
echo "3. Watch the mitmproxy interface for captured requests"
echo " Look for requests to:"
echo " - api.honeycomb.io"
echo " - learn.foundry.com"
echo " - sentry.foundry.com"
echo ""
echo "4. Click on any request to see:"
echo " - Full HTTP headers"
echo " - Complete request/response body (JSON)"
echo " - Timing information"
echo ""
echo "5. When done capturing, return to this terminal and press Enter"
echo ""
echo "═══════════════════════════════════════════════════════"
read -p "Press Enter after you're done capturing traffic..."
echo ""
echo "═══════════════════════════════════════════════════════"
echo " Step 5: Cleanup"
echo "═══════════════════════════════════════════════════════"
echo ""
echo "Stopping mitmproxy..."
kill $MITMPROXY_PID 2>/dev/null
wait $MITMPROXY_PID 2>/dev/null
echo "Restoring iptables rules..."
sudo iptables -t nat -F OUTPUT 2>/dev/null
echo "✓ Cleanup complete"
echo ""
echo "═══════════════════════════════════════════════════════"
echo " Results"
echo "═══════════════════════════════════════════════════════"
echo ""
if [ -f "$MITM_LOG" ]; then
CAPTURE_SIZE=$(du -h "$MITM_LOG" | cut -f1)
echo "Capture saved to: $MITM_LOG"
echo "Capture size: $CAPTURE_SIZE"
echo ""
echo "To replay and analyze:"
echo " mitmproxy -r $MITM_LOG"
echo ""
echo "To export to JSON:"
echo " mitmdump -r $MITM_LOG -w $OUTPUT_DIR/nuke_traffic_$TIMESTAMP.json"
echo ""
echo "To view in web interface again:"
echo " mitmweb -r $MITM_LOG"
echo ""
else
echo "WARNING: No capture file created."
echo "This could mean:"
echo " 1. No traffic was captured (Nuke didn't connect)"
echo " 2. Nuke rejected the mitmproxy certificate (certificate pinning)"
echo " 3. Traffic went around the proxy"
echo ""
echo "TROUBLESHOOTING:"
echo ""
echo "If Nuke showed SSL/certificate errors:"
echo " → Nuke likely uses certificate pinning"
echo " → Try Method 3 (frida) instead"
echo " → See INTERCEPTING-HTTPS.md for instructions"
echo ""
echo "If no errors but no traffic captured:"
echo " → Check that Foundry IPs are correct"
echo " → Try capturing during Nuke startup"
echo " → Monitor /tmp/mitmproxy_*.log for errors"
fi
echo ""
echo "═══════════════════════════════════════════════════════"
echo " Next Steps"
echo "═══════════════════════════════════════════════════════"
echo ""
if [ -f "$MITM_LOG" ] && [ -s "$MITM_LOG" ]; then
echo "✓ SUCCESS! Traffic was captured and decrypted."
echo ""
echo "Review the capture to find:"
echo " - Email domain transmission"
echo " - Geographic location data"
echo " - System information collected"
echo " - Usage profiling details"
echo " - Any sensitive data (file paths, project names)"
echo ""
echo "Document findings in:"
echo " $OUTPUT_DIR/analysis_$TIMESTAMP.txt"
echo ""
echo "Update the master document:"
echo " Foudry-Nuke-Monitoring.md"
else
echo "✗ No traffic captured."
echo ""
echo "OPTION 1: Try again with different approach"
echo " ./decrypt_nuke_traffic.sh"
echo ""
echo "OPTION 2: Use frida method (more reliable)"
echo " See: INTERCEPTING-HTTPS.md - Method 3"
echo ""
echo "OPTION 3: Check if telemetry is already blocked"
echo " cat /etc/hosts | grep foundry"
fi
echo ""
echo "For detailed instructions and alternative methods:"
echo " See: INTERCEPTING-HTTPS.md"
echo ""