一、今日目標
在本機或 VM 建立可復現且安全的釣魚測試環境(以 Gophish 為範例)。
完成基本的 Gophish 設定流程:管理介面、寄件人(sending profile)、landing page、受試者名單匯入、建立與啟動 campaign(僅限測試帳號)。
提供完整的倫理同意範本、風險控管清單與資料去識別化流程。
注意:本文示範所有測試僅應在測試帳號或已獲書面同意之受試者上執行。切勿未經同意對真實使用者發送任何釣魚訊息。
二、環境準備(需求)
作業系統:Linux / macOS / Windows(建議使用 Linux VM 或 WSL2)
軟體:Docker、Docker Compose、git、瀏覽器
建議資源:至少 2 CPU、2 GB RAM、10 GB 磁碟空間(測試環境即可)
建議額外服務(避免外寄郵件):本機 SMTP 擬真服務(MailHog / FakeSMTP / smtp4dev),用於攔截測試郵件避免真實傳遞
三、以 Docker Compose 部署 Gophish(示範)
在專案目錄下建立 docker-compose.yml(示例):
version: '3'
services:
gophish:
image: gophish/gophish:latest
container_name: gophish
ports:
- "3333:3333"  # admin web UI
- "8080:80"    # landing pages
volumes:
- ./gophish-data:/gophish
restart: unless-stopped
mailhog:
image: mailhog/mailhog
container_name: mailhog
ports:
- "1025:1025"  # SMTP
- "8025:8025"  # Web UI
restart: unless-stopped
部署步驟:
建立目錄並放入 docker-compose.yml:
mkdir gophish-docker
cd gophish-docker
docker compose up -d
檢查 Container 狀態:
docker ps
docker logs gophish -f
管理介面(Admin UI):開啟 http://127.0.0.1:3333。
Landing page(測試頁面)會由 Gophish 在 http://127.0.0.1:8080 提供。
初次登入管理介面:若為第一次啟動,Gophish 會顯示預設管理帳號(若有提示預設密碼請記下並立即更改)。建議:進入後立刻修改管理密碼並限制管理介面存取(如必要用防火牆僅允許特定 IP 存取)。
四、建議的安全與隱私設定(重要)
只使用本機/內網 SMTP(不要直接用真實 SMTP 服務):示例使用 MailHog(上面 compose 已包含),可在 http://127.0.0.1:8025 檢視所有測試郵件且不會送出到外部。
限制 Gophish Admin 存取:在 production-like 環境,應把 admin 介面綁在私有網段或透過 VPN/SSH 隧道存取。
立即變更管理密碼,並啟用強密碼。
Landing page 不存放真實憑證:測試的 landing page 不應真實接收或儲存密碼 / 金融資訊;若示範 capture credential,請只在模擬表單中使用 dummy 欄位,或明確標示為測試並進行去識別化。
保留完整同意記錄與實驗流程文件(見同意書範本)。
資料最小化與去識別化:導出結果前,將 email、IP、姓名等個資去識別化或雜湊處理(例如 SHA256),並只保留必要的統計欄位(open rate、click rate、time-to-click)。
五、Gophish 基本操作流程(測試流程示例)
以下步驟示範如何在本地進行完整測試流程(以 MailHog 攔截郵件,受試名單為模擬帳號)。
進入 Admin UI(http://127.0.0.1:3333),登入並變更密碼。
新增 Sending Profile(寄件人設定):
Host: mailhog 或 127.0.0.1 端口 1025(依 docker network 可用服務名稱填寫)
Port: 1025(MailHog)
From name / From address:使用測試寄件人(例如 Phish Test no-reply@example.local)
測試寄送:按 Test 以確認郵件會被 MailHog 攔截(在 http://127.0.0.1:8025 可看到)。
建立 Landing Page(登陸頁):
在 Gophish 的 Landing Pages 選單新增頁面。
內容請標示為「測試頁面」,並避免收集真實帳密。若要示範表單送出,可儲存至 Gophish 的結果(但務必用 dummy 欄位)。
範例 HTML:
注意:不要放真實登入流程或導向真實服務。
建立 Email Template(郵件範本):
新增範本,郵件中放測試連結(使用 Gophish 的替換字元如 {{.URL}})。
範本需清楚標示測試目的(在實驗同意情況下可隱含提示,但若需完整告知則入同意程序)。
建立群組(Recipients):
匯入測試受試者名單 CSV(欄位範例:email,first,last,position)。
僅匯入受試者同意的測試帳號,範例如:test1+local@example.com(可用 +tag 方式創建多個測試地址,或建立 fake domain 的 local address)。
建立 Campaign 並啟動:
選擇剛剛建立的範本、Landing Page、Sending Profile、Recipients,設定發送時間(立即或排程)。
啟動後到 MailHog 檢視郵件,點擊連結觀察 Landing Page 行為與 Gophish 的統計(open/click)。
結果匯出與去識別化:
從 Gophish 匯出 campaign 結果(CSV),在上傳或發表前將 email 欄位 hash 或替換為代號,保留統計數據(open rate、click rate、時間分布)。