Triển khai GoPhish cho Mô phỏng Phishing Nội bộ: Xây dựng Chương trình Nâng cao Nhận thức Bảo mật Thực sự Hiệu quả

Security tutorial - IT technology blog
Security tutorial - IT technology blog

Firewall của bạn đã được cấu hình. WAF đang hoạt động. IDS đang giám sát lưu lượng. Nhưng không có thứ nào trong số đó ngăn được một nhân viên nhấp vào đường link trong một email giả mạo thuyết phục thông báo rằng mật khẩu của họ sắp hết hạn.

Phishing vẫn là vector tấn công ban đầu #1 trong các vụ rò rỉ dữ liệu — không phải vì đội ngũ bảo mật lơ là, mà vì con người là thứ khó “vá lỗi” nhất. Dữ liệu ngành liên tục cho thấy 20–30% nhân viên nhấp vào các đường link phishing mô phỏng trong lần kiểm tra đầu tiên. Chạy mô phỏng nội bộ với GoPhish cho phép bạn đo lường chính xác vị trí của đội nhóm, sau đó xây dựng chương trình đào tạo dựa trên con số thực tế thay vì phỏng đoán.

Chúng ta sẽ đề cập đến việc cài đặt GoPhish trên một Linux VPS, chạy chiến dịch đầu tiên từ đầu đến cuối, và biến kết quả thành chương trình đào tạo có mục tiêu cho đúng đối tượng.

So sánh Phương pháp: Cách Chạy Mô phỏng Phishing

Có ba phương pháp chính để chạy mô phỏng phishing nội bộ. Hiểu rõ sự đánh đổi giúp bạn chọn đúng phương án.

1. Nền tảng SaaS trả phí (KnowBe4, Proofpoint, Cofense)

Các nền tảng đầy đủ tính năng với mẫu phishing dựng sẵn, tự động đăng ký đào tạo và bảng điều khiển tuân thủ chi tiết. Phù hợp với doanh nghiệp lớn có yêu cầu kiểm toán. Nhược điểm: chi phí dao động từ $15–$40+ mỗi người dùng mỗi năm. Bạn cũng trao quyền kiểm soát cơ sở hạ tầng gửi email kiểm tra cho bên thứ ba.

2. Bài tập Red Team thủ công

Đội bảo mật tự soạn email phishing và theo dõi lượt nhấp thủ công. Độ chân thực tối đa, nhưng chi phí nhân lực đáng kể. Kiểm tra 500 nhân viên hàng quý theo cách này không thực tế với hầu hết các đội nhóm.

3. Tự lưu trữ Open Source (GoPhish)

GoPhish là framework mô phỏng phishing miễn phí, mã nguồn mở viết bằng Go. Bạn chạy nó trên server của riêng mình, sở hữu domain gửi thư và có khả năng hiển thị đầy đủ mọi phần của chiến dịch. Với các đội nhóm từ 50–500 nhân viên, bạn có được khả năng mô phỏng chuyên nghiệp ở mức chi phí phần mềm gần như bằng không.

Ưu và Nhược điểm của GoPhish

GoPhish Làm Tốt Những Gì

  • Miễn phí và mã nguồn mở — không có phí cấp phép theo đầu người. Một VPS, chiến dịch không giới hạn.
  • Toàn quyền kiểm soát hạ tầng — bạn sở hữu domain gửi thư, server landing page và dữ liệu thu thập được. Không có gì đến tay bên thứ ba.
  • REST API — tự động tạo chiến dịch và đẩy kết quả vào SIEM hoặc dashboard nội bộ.
  • Giao diện web rõ ràng — thiết lập chiến dịch, theo dõi và xem kết quả đều qua trình duyệt. Không cần kiến thức CLI cho công việc hàng ngày.
  • Theo dõi chi tiết — ghi lại lượt mở email, nhấp link, gửi thông tin đăng nhập và dữ liệu form theo từng người dùng.

Những Hạn chế Cần Biết Trước

  • Deliverability là trách nhiệm của bạnSPF, DKIM và DMARC trên domain gửi thư hoàn toàn thuộc về bạn. Bỏ qua những thứ này và email kiểm tra sẽ vào spam. Dữ liệu vô nghĩa.
  • Không có nội dung đào tạo tích hợp — GoPhish cho bạn biết ai đã nhấp. Nó không tự động đăng ký họ vào module đào tạo. Bạn cần liên kết đến đào tạo bên ngoài hoặc tự xây dựng trang redirect sau khi nhấp.
  • Thư viện mẫu hạn chế — các mẫu phishing tích hợp sẵn rất ít. Hãy chuẩn bị tự viết hầu hết.
  • Không có báo cáo tuân thủ — bằng chứng SOC 2 hoặc ISO 27001 có nghĩa là phải xuất CSV và tự định dạng báo cáo.

Thiết lập Khuyến nghị

Một mô phỏng thực sự đến được hộp thư đến cần ba thứ ngoài file nhị phân GoPhish: một domain gửi thư riêng, các bản ghi xác thực email đúng chuẩn và TLS trên server landing page.

Đây là bố cục hạ tầng được khuyến nghị:

  • Một VPS (2 vCPU, 2GB RAM là đủ) chạy Ubuntu 22.04 hoặc Debian 12
  • Một domain phụ mua riêng cho các bài kiểm tra phishing — tên gì đó hợp lý như it-helpdesk-portal.com hoặc mẫu subdomain phản ánh các công cụ nội bộ của bạn
  • Bản ghi MX và SMTP trỏ đến VPS của bạn
  • SPF, DKIM, DMARC được cấu hình trên domain gửi thư
  • Chứng chỉ TLS qua Let’s Encrypt cho landing page

Đừng bao giờ dùng domain công ty chính thức cho các bài kiểm tra phishing. Nếu danh tiếng gửi thư của bạn bị ảnh hưởng, nó chỉ nên tác động đến một domain dùng một lần — không phải hạ tầng email thực sự của bạn.

Để tạo mật khẩu admin GoPhish và thông tin đăng nhập server, tôi dùng trình tạo mật khẩu tại toolcraft.app/vi/tools/security/password-generator. Nó chạy hoàn toàn trên trình duyệt — không có dữ liệu nào được truyền đi. Điều này quan trọng ở đây, vì bạn đang tạo thông tin đăng nhập cho một server đang lưu trữ hạ tầng phishing.

Hướng dẫn Triển khai

Bước 1: Cài đặt GoPhish trên VPS

SSH vào VPS và tải phiên bản GoPhish mới nhất từ GitHub. Kiểm tra trang releases để biết số phiên bản hiện tại — ví dụ dưới đây dùng v0.12.1:

# Tải và giải nén GoPhish
wget https://github.com/gophish/gophish/releases/latest/download/gophish-v0.12.1-linux-64bit.zip
unzip gophish-v0.12.1-linux-64bit.zip -d /opt/gophish
cd /opt/gophish
chmod +x gophish

Trước khi khởi động, hãy chỉnh sửa config.json để bind admin panel chỉ với localhost — bạn sẽ truy cập qua SSH tunnel — và đặt phishing server lắng nghe trên cổng 80:

{
  "admin_server": {
    "listen_url": "127.0.0.1:3333",
    "use_tls": true,
    "cert_path": "gophish_admin.crt",
    "key_path": "gophish_admin.key"
  },
  "phish_server": {
    "listen_url": "0.0.0.0:80",
    "use_tls": false
  },
  "db_name": "sqlite3",
  "db_path": "gophish.db",
  "logging": {
    "filename": "",
    "level": ""
  }
}

Khởi động GoPhish và lấy mật khẩu admin tạm thời được in ra trong lần chạy đầu tiên:

./gophish
# Kết quả hiển thị: Please login with the username admin and the password [MẬT_KHẨU_TẠO_TỰ_ĐỘNG]

Bước 2: Cấu hình Domain Gửi Thư

Thêm các bản ghi DNS này vào domain phishing của bạn. Thay IP server thực tế và domain kiểm tra của bạn vào:

# Bản ghi A
yourdomain.com.       300  IN  A     YOUR_VPS_IP

# Bản ghi MX
yourdomain.com.       300  IN  MX 10 mail.yourdomain.com.

# SPF
yourdomain.com.       300  IN  TXT   "v=spf1 ip4:YOUR_VPS_IP ~all"

# DMARC
_dmarc.yourdomain.com. 300 IN  TXT   "v=DMARC1; p=none; rua=mailto:[email protected]"

DKIM yêu cầu tạo cặp key trên chính server. Cài đặt opendkim và chạy:

apt install opendkim opendkim-tools -y
opendkim-genkey -t -s mail -d yourdomain.com
# Tạo ra mail.private và mail.txt
cat mail.txt  # Sao chép giá trị bản ghi TXT này vào DNS của bạn

Bước 3: Tạo Chiến dịch Đầu tiên trong GoPhish

Mở SSH tunnel để truy cập admin panel:

ssh -L 3333:127.0.0.1:3333 user@YOUR_VPS_IP

Sau đó mở https://localhost:3333 trong trình duyệt. GoPhish tổ chức chiến dịch xung quanh bốn đối tượng bạn cấu hình một lần và tái sử dụng:

  1. Sending Profile — thông tin SMTP server của bạn: host, port, thông tin đăng nhập và địa chỉ From mà người nhận sẽ thấy.
  2. Email Template — HTML email phishing. Điểm khởi đầu hiệu quả: thông báo đặt lại mật khẩu IT, thông báo tài liệu được chia sẻ từ công cụ quen thuộc như SharePoint, hoặc cập nhật phúc lợi từ HR.
  3. Landing Page — trang người dùng đến sau khi nhấp. Nhập HTML trang đăng nhập thực của công ty bạn, sau đó thêm pixel theo dõi của GoPhish. Thêm redirect đến trang đào tạo thực sau khi gửi form.
  4. Users & Groups — nhập danh sách mục tiêu dưới dạng CSV với bốn cột.
# Định dạng file users.csv mẫu
First Name,Last Name,Email,Position
John,Smith,[email protected],Developer
Sarah,Lee,[email protected],Accountant
Mike,Jones,[email protected],HR Manager

Bước 4: Phân tích Kết quả và Xây dựng Chương trình Đào tạo

Sau khi cửa sổ chiến dịch đóng lại — 72 giờ phù hợp với hầu hết các đội nhóm — GoPhish cung cấp bảng phân tích theo từng người dùng: email đã mở, link đã nhấp, thông tin đăng nhập đã gửi. Xuất CSV ngay lập tức để lưu hồ sơ.

Phân loại nhóm theo dõi theo mức độ rủi ro:

  • Đã gửi thông tin đăng nhập — rủi ro cao nhất. Những người này cần được trao đổi trực tiếp, không chỉ gửi link video đào tạo.
  • Đã nhấp nhưng không gửi — rủi ro trung bình. Một module tập trung vào nhận biết trang đăng nhập giả mạo sẽ giải quyết đúng điểm yếu.
  • Đã mở nhưng không nhấp — rủi ro thấp. Hãy ghi nhận điều đó. Người di chuột qua link và kiểm tra URL đang làm đúng những gì bạn muốn.
  • Chưa mở — kiểm tra thư mục spam trước. Nếu email đã được giao đúng, nhóm này hoặc rất thận trọng hoặc đã bỏ qua email hoàn toàn, điều này tạo ra một loại rủi ro khác.

Chạy lại đúng mẫu chiến dịch đó sau 90 ngày với cùng nhóm đó. Sự sụt giảm trong tỷ lệ nhấp là kết quả đo lường được của bạn. Con số đó là thứ bạn mang đến cho ban lãnh đạo khi cuộc trò chuyện về ngân sách bảo mật diễn ra.

Bước 5: Tự động hóa Chiến dịch Định kỳ qua API

REST API của GoPhish giúp việc lập lịch chiến dịch theo chương trình trở nên đơn giản. Ví dụ Python tối giản sử dụng requests:

import requests
import json

API_KEY = "your-gophish-api-key"
BASE_URL = "https://localhost:3333/api"

headers = {
    "Authorization": f"Bearer {API_KEY}",
    "Content-Type": "application/json"
}

# Lấy tất cả chiến dịch
response = requests.get(
    f"{BASE_URL}/campaigns/",
    headers=headers,
    verify=False  # chứng chỉ tự ký trên admin panel
)

campaigns = response.json()
for c in campaigns:
    print(f"Chiến dịch: {c['name']} | Trạng thái: {c['status']}")

Từ đó, chỉ cần thêm một bước nữa là có một cron job hàng quý tự động tạo chiến dịch, lấy danh sách nhân viên mới nhất từ hệ thống HR và gửi thông báo Slack khi cửa sổ chiến dịch đóng lại.

Chạy Mô phỏng một cách Có trách nhiệm

Hãy nhận được ủy quyền bằng văn bản từ ban lãnh đạo và HR trước khi gửi bất kỳ email kiểm tra nào. Ghi lại phạm vi một cách rõ ràng: nhân viên nào, phòng ban nào, khung thời gian chính xác. Lưu tài liệu đó ở nơi bạn có thể lấy ra trong vòng 30 giây. Bởi vì sẽ có lúc một giám đốc điều hành gọi đến bộ phận hỗ trợ IT để báo cáo một email đáng ngờ — và đó chính là email của bạn. Có giấy tờ sẵn sàng biến khoảnh khắc đó từ lúng túng thành bình thường.

Đặt đúng tông giọng trước khi ra mắt. Mục tiêu không phải là bắt lỗi người ta và làm họ xấu hổ — mà là tìm ra lỗ hổng và khắc phục chúng. Người hiểu lý do tại sao chương trình tồn tại sẽ nghiêm túc tham gia đào tạo tiếp theo. Còn người cảm thấy bị phục kích sẽ trở nên phòng thủ và ngừng báo cáo email đáng ngờ, đó là điều ngược lại với những gì bạn đang cố gắng xây dựng.

GoPhish cung cấp lớp đo lường. Sự thay đổi hành vi thực sự đến từ cách bạn truyền đạt kết quả, ai thiết kế chương trình đào tạo và tần suất bạn triển khai. Tỷ lệ nhấp chỉ là một con số. Những gì bạn làm với nó mới là chương trình.

Share: