Burp Suite DR Plan

Burp Suite Pro Disaster Recovery Plan Backup Configuration Project Files Extensions License Recovery Automation RTO RPO Security Testing

Backup ItemLocationFrequencyPriority
Configuration Files%APPDATA%/BurpSuite/ทุกวันCritical
Project Files (.burp)Project DirectoryทุกวันCritical
Extensions (JAR)Extensions Directoryทุกสัปดาห์High
Intruder PayloadsPayloads Directoryทุกสัปดาห์Medium
License KeyPassword Managerเมื่อเปลี่ยนCritical
SSL CertificatesCert DirectoryทุกเดือนHigh

Backup Script

# === Burp Suite Automated Backup Script ===

# #!/bin/bash
# # burp_backup.sh - Run daily via cron
# # 0 2 * * * /opt/scripts/burp_backup.sh
#
# BACKUP_DIR="/backup/burpsuite"
# DATE=$(date +%Y%m%d)
# BURP_CONFIG="$HOME/.BurpSuite"
# BURP_PROJECTS="$HOME/BurpProjects"
# BURP_EXTENSIONS="$HOME/BurpExtensions"
# BURP_PAYLOADS="$HOME/BurpPayloads"
# S3_BUCKET="s3://company-backups/burpsuite"
#
# # Create backup directory
# mkdir -p "$BACKUP_DIR/$DATE"
#
# # Backup Configuration
# cp -r "$BURP_CONFIG" "$BACKUP_DIR/$DATE/config/"
#
# # Backup Project Files (last 7 days modified)
# find "$BURP_PROJECTS" -name "*.burp" -mtime -7 \
# -exec cp {} "$BACKUP_DIR/$DATE/projects/" \;
#
# # Backup Extensions
# cp -r "$BURP_EXTENSIONS" "$BACKUP_DIR/$DATE/extensions/"
#
# # Backup Payloads
# cp -r "$BURP_PAYLOADS" "$BACKUP_DIR/$DATE/payloads/"
#
# # Compress
# tar -czf "$BACKUP_DIR/burp_backup_$DATE.tar.gz" \
# -C "$BACKUP_DIR" "$DATE"
#
# # Upload to S3
# aws s3 cp "$BACKUP_DIR/burp_backup_$DATE.tar.gz" \
# "$S3_BUCKET/burp_backup_$DATE.tar.gz"
#
# # Cleanup old backups (keep 30 days)
# find "$BACKUP_DIR" -name "*.tar.gz" -mtime +30 -delete
# aws s3 ls "$S3_BUCKET/" | awk '{print $4}' | sort | head -n -30 | \
# xargs -I {} aws s3 rm "$S3_BUCKET/{}"
#
# echo "Backup completed: burp_backup_$DATE.tar.gz"

from dataclasses import dataclass

@dataclass
class BackupItem:
 item: str
 path: str
 size: str
 frequency: str
 retention: str

items = [
 BackupItem("user_options.json",
 "~/.BurpSuite/user_options.json",
 "~100KB",
 "ทุกวัน + เมื่อเปลี่ยน",
 "90 วัน + Git History"),
 BackupItem("project_options.json",
 "~/.BurpSuite/project_options.json",
 "~50KB",
 "ทุกวัน",
 "90 วัน"),
 BackupItem("Project Files (.burp)",
 "~/BurpProjects/*.burp",
 "100MB-10GB per project",
 "ทุกวัน (modified only)",
 "30 วัน"),
 BackupItem("Extensions (JAR)",
 "~/BurpExtensions/*.jar",
 "~50MB total",
 "ทุกสัปดาห์",
 "90 วัน"),
 BackupItem("Intruder Payloads",
 "~/BurpPayloads/",
 "~500MB total",
 "ทุกสัปดาห์",
 "90 วัน"),
 BackupItem("CA Certificate",
 "~/.BurpSuite/cacert.der",
 "~2KB",
 "เมื่อสร้างใหม่",
 "ตลอด"),
]

print("=== Backup Items ===")
for b in items:
 print(f" [{b.item}] Size: {b.size}")
 print(f" Path: {b.path}")
 print(f" Freq: {b.frequency} | Retain: {b.retention}")

Recovery Procedure

# === Automated Recovery Playbook ===

# # Ansible Playbook: burp_recovery.yml
# ---
# - name: Burp Suite Pro Recovery
# hosts: security-workstation
# vars:
# burp_version: "2024.1"
# backup_date: "20240115"
# s3_bucket: "s3://company-backups/burpsuite"
# tasks:
# - name: Download Burp Suite installer
# get_url:
# url: "https://portswigger.net/burp/releases/download"
# dest: "/tmp/burpsuite_pro.jar"
#
# - name: Download backup from S3
# aws_s3:
# bucket: company-backups
# object: "burpsuite/burp_backup_{{ backup_date }}.tar.gz"
# dest: "/tmp/burp_backup.tar.gz"
#
# - name: Extract backup
# unarchive:
# src: "/tmp/burp_backup.tar.gz"
# dest: "/tmp/burp_restore/"
#
# - name: Restore configuration
# copy:
# src: "/tmp/burp_restore/config/"
# dest: "{{ ansible_env.HOME }}/.BurpSuite/"
#
# - name: Restore extensions
# copy:
# src: "/tmp/burp_restore/extensions/"
# dest: "{{ ansible_env.HOME }}/BurpExtensions/"

@dataclass
class RecoveryStep:
 step: int
 action: str
 method: str
 duration: str
 verify: str

recovery = [
 RecoveryStep(1, "Install Burp Suite Pro",
 "Download + Install same version",
 "10 นาที",
 "เปิด Burp Suite ได้ปกติ"),
 RecoveryStep(2, "Restore License",
 "ใส่ License Key จาก Password Manager",
 "2 นาที",
 "Activation สำเร็จ Pro features ใช้ได้"),
 RecoveryStep(3, "Restore Configuration",
 "Copy user_options.json project_options.json",
 "5 นาที",
 "Settings ตรงกับเดิม Proxy Scope Target"),
 RecoveryStep(4, "Install Extensions",
 "BApp Store + Copy Custom JARs",
 "15 นาที",
 "Extensions โหลดไม่มี Error"),
 RecoveryStep(5, "Restore Project Files",
 "Copy .burp files เปิด Project",
 "10 นาที",
 "Scan Results Issues Sitemap ครบ"),
 RecoveryStep(6, "Restore Payloads",
 "Copy Intruder Payloads Wordlists",
 "5 นาที",
 "Intruder Attack ทำงาน Payloads ครบ"),
 RecoveryStep(7, "Verify & Test",
 "ทดสอบ Scan Proxy Intruder Repeater",
 "15 นาที",
 "ทุกฟีเจอร์ทำงานปกติ"),
]

total_minutes = sum(int(r.duration.split()[0]) for r in recovery)
print("=== Recovery Procedure ===")
for r in recovery:
 print(f" Step {r.step}: {r.action} ({r.duration})")
 print(f" Method: {r.method}")
 print(f" Verify: {r.verify}")
print(f"\n Total RTO: ~{total_minutes} นาที")

DR Testing

# === Disaster Recovery Testing ===

@dataclass
class DRTest:
 test_name: str
 scenario: str
 frequency: str
 success_criteria: str
 responsible: str

dr_tests = [
 DRTest("Full Recovery Test",
 "สร้างเครื่องใหม่ Restore ทุกอย่างจาก Backup",
 "ทุก 3 เดือน",
 "Recovery ภายใน 1 ชั่วโมง ทุกฟีเจอร์ทำงาน",
 "Security Team Lead"),
 DRTest("Config Recovery Test",
 "ลบ Config Directory แล้ว Restore จาก Backup",
 "ทุกเดือน",
 "Settings ตรงกับเดิม Extensions โหลดครบ",
 "Security Engineer"),
 DRTest("Project Recovery Test",
 "เปิด Backup Project File ตรวจ Scan Results",
 "ทุกเดือน",
 "Issues Sitemap ครบ Scan Resume ได้",
 "Security Analyst"),
 DRTest("Backup Integrity Test",
 "Verify Backup File ไม่เสียหาย Checksum ตรง",
 "ทุกสัปดาห์ (Automated)",
 "Checksum Match Extract ได้ไม่มี Error",
 "Automated Script"),
 DRTest("Cross-platform Migration",
 "ย้ายจาก Windows ไป macOS หรือ Linux",
 "ทุก 6 เดือน",
 "Config ใช้ได้ข้าม Platform Extensions Compatible",
 "Security Team Lead"),
]

print("=== DR Test Schedule ===")
for t in dr_tests:
 print(f"\n [{t.test_name}] Frequency: {t.frequency}")
 print(f" Scenario: {t.scenario}")
 print(f" Success: {t.success_criteria}")
 print(f" Owner: {t.responsible}")

เคล็ดลับ

  • Git: ใช้ Git Track Configuration Changes Version Control
  • Cron: ตั้ง Cron Job Backup อัตโนมัติทุกวัน
  • S3: Upload Backup ไป Cloud Storage ป้องกัน Disk Failure
  • Test: ทดสอบ Recovery ทุกเดือน ไม่ใช่แค่ Backup
  • Document: เขียน Runbook ชัดเจน คนใหม่ทำตามได้

Disaster Recovery Plan คืออะไร

แผนกู้คืน Burp Suite Backup Config Project Extensions License Recovery RTO 1 ชั่วโมง RPO 1 วัน Automation Script Ansible