0%

社交工程郵件 —— 員工們的信任崩壞頭腦戰

Gophish

Gophish 是一款開源的釣魚框架。

什麼是釣魚 🎣

網路釣魚是常見的社交工程手法,惡意人士會透過模仿真正的登入頁面來獲取使用者的帳號密碼又或是透過 email 來誘騙使用者下載或開啟。

其中影響則是會導致帳號密碼洩漏,嚴重的情況則是惡意程式開啟後電腦被他人所掌控而不知。

大部分的公司為了預防這種情況,都會在內部進行社交工程的演練,透過發送釣魚信件讓員工能對各個郵件有所警惕。

對於目前熱門的開源框架大多數公司採用 Gophish。那我們就來學習一下如何「釣魚」

Gophish

Gophish 是一個網路釣魚框架,可以簡單地去模擬現實世界的網路釣魚攻擊。 gophish 背後的想法很簡單——讓每個人都能接受行業級的網路釣魚培訓。

安裝

透過二進位檔案直接安裝

這邊以 ubuntu 當作例子

  1. 根據自己作業系統到 GitHub gophish/gophish下載相對應的壓縮檔。

  2. 在 config.json 要先做設定
    如果希望在別台電腦連到 admin server 的話,需要讓將他的 listen_url 改為 0.0.0.0:3333

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
{
"admin_server": {
"listen_url": "0.0.0.0:3333",
"use_tls": true,
"cert_path": "gophish_admin.crt",
"key_path": "gophish_admin.key",
"trusted_origins": []
},
"phish_server": {
"listen_url": "0.0.0.0:80",
"use_tls": false,
"cert_path": "example.crt",
"key_path": "example.key"
},
"db_name": "sqlite3",
"db_path": "gophish.db",
"migrations_prefix": "db/db_",
"contact_address": "",
"logging": {
"filename": "",
"level": ""
}
}
  1. 調整檔案權限 $ chmod +x gofish
  2. 執行檔案 $ ./gofish
  3. 帳號密碼會顯示在終端機上,登入後會要求更改密碼

如下所示,帳號為 admin,密碼為 182196af82309bbb
console

1
time="2025-03-13T20:12:38+08:00" level=info msg="Please login with the username **admin** and the password **182196af82309bbb**"

使用 Docker 啟動 gophsi

1
$ docker compose up -d

接下來就可以使用 https://127.0.0.1:3333/ 連線了

Login Page

介面介紹

Dashboard Page

  • Dashboard
    • 查看釣魚活動總覽
  • Campaigns
    • 發起釣魚活動
  • Users & Groups
    • 管理使用者及將使用者分群
  • Email Templates
    • 製作 email 範本,可以藉由收到的 mail 輸出原始碼直接匯入再做修改
  • Landing Pages
    • 製作假的登入頁面
  • Sending Profiles
    • 製作寄送的檔案
  • Account Settings
    • 設定個人帳號
  • User Management (Admin)
    • 管理使用者,新增刪除修改以及給予權限
  • Webhooks (Admin)
    • 新增 webhook

Users & Groups

釣魚測試需要精準的目標設定,透過 Users & Groups 功能,可以事先建立不同部門或團隊的受測群組。

建立測試群組

以「A 部門」為例,可以:

  • 在 Name 欄位輸入群組名稱(例如:A部門)
  • 透過手動新增或匯入 .csv 檔,將該部門的所有人員資料加入群組

這樣可以確保釣魚活動鎖定特定單位,方便後續追蹤成效。

群組總覽介面:
user_groups

新增個人資料範例:
users_groups_me

可以輸入姓名、電子郵件等基本資訊,快速建立測試名單。

Email Template

為了讓使用者能夠點進我們製作的釣魚頁面,需要先發送 email,而假 email 的製作就成了很重要的一個步驟。

製作假郵件的兩種常見方式

手刻

如果沒有收到釣魚 email 又或是有新的想法,可以自己手刻一份,但如果有收到 email 的話,可以將他下載下來修改

下載現有 mail 原始碼修改

若曾經收到特定郵件,直接複製郵件的原始碼進行修改,能大幅提高真實性:

  1. 點擊郵件右上角「更多選項」(三個點)
  2. 選擇 顯示原始碼 或 下載郵件

show_source

mail_source

原始碼的話比較單純,可以直接透過複製貼上達成,但似乎中文郵件會有編碼問題,導致複製貼上出錯。

這時候可以下載郵件並使用我所撰寫的小工具 emlParser ,他可以將 .eml 郵件檔案解析為可用的 HTML 格式,避免編碼錯亂,提升郵件真實性與製作效率。

landing Page

Landing Page(釣魚網站)是用來模擬真實登入畫面的關鍵環節,設計得越逼真,釣魚測試的效果越接近實戰。

與 Email Template 類似,Landing Page 可以選擇手動編寫或直接複製現有網站。不過,單純下載網頁原始碼容易遺漏 CSS、JavaScript 等靜態資源,導致頁面錯亂。因此,推薦使用專業擴充套件完整封裝整個頁面。

常用工具推薦

  • SingleFile:將整個網頁打包為單一 HTML 檔案,保留版型與資源

  • Save Page WE:功能類似的工具,操作簡單、效果穩定

  • 使用這些工具,能避免因靜態資源缺漏導致的版面跑版,確保釣魚網站與原始目標網站外觀高度一致。

表單設計小細節

建議保留輸入框 name 屬性,方便後續在 Gophish 後台收集資料。

1
2
3
4
5
6
7
<form action="" method="post" name="form">

<input name="username" placeholder="email@test.com" type="email"/>
<input name="password" placeholder="Password" type="password"/>

<button class="color-button" type="submit" value="Submit">Sign in</button>
</form>

變數參考

為了提升釣魚郵件與網站的仿真度,Gophish 支援變數動態替換,以下為常見變數範例:

1
2
3
4
5
6
7
Hi {{.FirstName}},

您的帳號 {{.Email}} 有不正常的登入行為,如果不是您本人操作,請至下方連結更改密碼

{{.URL}}

{{.Tracker}}

實際寄送效果

以測試人員資料為例:

實際收到郵件內容會是:

1
2
3
4
5
Hi Marco,

您的帳號 mlgzackfly@gmail.com 有不正常的登入行為,如果不是您本人操作,請至下方連結更改密碼

[http://example.com](http://example.com)

釣魚郵件追蹤機制說明

在 Gophish 釣魚測試中,平台能夠即時追蹤目標使用者的互動行為,以下為常見的監控指標:

1️⃣ 開信紀錄(Email Opened)

當目標使用者開啟釣魚郵件時,Gophish 後台的 Dashboard 會即時更新「已開啟」數量。

這項功能依賴郵件中的隱藏追蹤技術:

{{.Tracker}}

  • 實際上是一個隱藏式的 1x1 像素透明圖片
  • 當使用者打開郵件,郵件內容中的圖片會向 Gophish 伺服器發送請求
  • 系統透過圖片讀取行為,判斷該封郵件已被開啟

⚠️ 注意:若目標使用者的郵件客戶端禁止自動載入圖片,開信紀錄可能不會立即被偵測。

2️⃣ 點擊紀錄(Clicked Link)

若使用者進一步點擊郵件中的釣魚連結,則 Gophish 在 Clicked Link 指標下顯示該行為。

⚠️ 注意:當使用者直接點擊 URL 時,會導致 Email Opened 一定會被增加(因為一定要開啟郵件才會點得到連結)。

Sending Profiles

Landing Page 及 Email Template 製作完成後,接下來要決定寄送的資訊,這時候就需要使用到 Sending Profiles 了!

Sending Profiles 主要負責設定發信伺服器的相關資訊,包括 SMTP 伺服器位址、連接埠、驗證帳號與密碼等,確保釣魚郵件能順利發出。

sending_profile

補充 - 附件追蹤

純文字的 Email 或許有點無聊,偶爾需要搭配點附件來提升真實性。而附件追蹤在官方也有一些解法 Attachment Tracking

簡單來說,如果使用的是 Office 軟體製作的附件,會透過物件方式將 {{.TrackerURL}} 插入成圖片。當使用者開啟附件檔案時,圖片會被讀取,達到類似先前提到的 Gcker}} 隱藏追蹤效果。

不過要注意的是,如同在「Clicked Link」部分提到的,使用者只要直接點擊郵件中的 URL,系統就會判定郵件已被開啟,因此無法同時精準追蹤「點開連結」與「附件中追蹤圖片被讀取」的兩種行為。

換句話說,Email Opened 事件會被先行觸發,導致兩者無法完全區分,這是目前追蹤技術上的限制。

當然有其他的解決方案,但這留到下一篇 gophish 的文章再提了。

當然,有其他替代方案可以解決這類追蹤上的限制,但這部分我們會留待下一篇 Gophish 文章中詳細探討。

參考資料

Gophish