***************************************************
閱讀以下內容之前,請先發誓:
如果看了以下內容之後,利用文章所教的技巧進行詐騙行為,
男的 GG 爛掉,女的奶奶爆掉。
***************************************************
這幾年不斷有企業收到偽冒供應商的帳款通知、變更匯款帳號的 Email 後,未經查證就依指示匯款,造成雙方的損失。
為了維持長久合作關係,通常就是各賠一半。
發生這種事,不管是雙方的資訊部門,或是資安公司,都是著重在寄件端是否被駭,講得越嚴重,錢收得越多。(資安、保險、黑道,都是靠恐嚇賺錢)
很倒楣的是,小弟處理的個案,剛開始幾個都是寄件端用我們公司的軟體,資安公司就把責任全部推給我們,說是我們的系統被駭。問他哪裡被駭,有什麼證據又提不出來,只說客戶收到的信件內容、Email Address 都是和原來的一樣,一定是由寄件端寄出的。
為了捍衛我們的清白,所以有幾個案子我就親自下海去查,結果都是收件端的問題,信件都不是由 Email Address 上顯示的寄件端寄出。
因為處理過幾個個案,所以後來有些同業發生類似的狀況,也要我去幫忙看,因為都很低調,也不願意報警。同樣的結果,還是收信端問題。
其實觀念很簡單,當您收到假冒地檢署的詐騙信件,您是該去查個資如何洩漏,還是去查地檢署!
但是,大部分討論到 Mail 被入侵,都是在講 SMTP 被當跳板寄垃圾信,或是密碼被破解,寄出詐騙信件。
依據處理的經驗,這個稱不上被駭,只是一般的冒名詐騙信件,而且幾乎都是收件端的問題。
以下就分享個人的經驗,不代表適用在所有的案例。
以下將分成三個部分說明
1. 詐騙流程
2. 電子郵件 SMTP/POP3 的必要瑕疵
3. 如何防治
============ 詐騙流程 ===============
S 代表寄件端
R 代表收件端
1. 利用 POP3 字典攻擊,取得 R 的密碼
2. 登入 R 的信箱,收取信件,並選擇保留伺服器副本,這樣 R 就不知道信件已被收取過
3. 如果 R 自己也勾選收信後保留伺服器副本,那這一次就可以收取 R 的所有信件。如果沒有,少數也會收個一段時間,再作分析。
4. 利用關鍵字分析,例如"貨款",找到相關信件,即可掌控所有的帳務往來信件內容,以及時程(很重要)
5. 很多作帳的貨款通知並不是那麼準時,所以提前發出一封偽冒寄件人 S 的貨款通知信,R 收到後,如果沒確認,錢就出去了。直到收到真正的付款通知才知被詐騙。
6. 有的帳款通知是系統定期發出,通常會在夜間寄送,這時候趕在上班前攔截這封信件,將這封信收下來,並且由伺服器刪除,再寄一封冒名信件。
看完以上的流程,各位是不是發現,和寄件端 S 完全沒關係。
您可能會認為,如果 S 的信箱沒有被駭,詐騙者如何寄出冒名信件。
這個就是後續要說明的【電子郵件 SMTP/POP3 的必要瑕疵】
=========== 電子郵件 SMTP/POP3 的必要瑕疵 =============
在這裡不去詳細的解說 Mail Server 的工作原理,簡單的說,不論是透過寄信軟體(例如 outlook)將送到 Mail Server ,或是 Mail Server 與 Mail Server 之間的郵件交換,使用的就是 SMTP 通訊協定。而 POP3,則是讓您用來將信件【下載】到您的電腦的。
這兩個古老的通訊協定,設計上本身就存在了一些的瑕疵,因此讓詐騙者有機可趁。
【 POP3 】
依據 POP3 的協定,收件軟體收取信件是採一封一封下載的方式,每下載一封信件,必須再送出一個 DELE 指令,Server 端才會將這封信移除。
如果 Server 端沒有收到這個指令,信件就會保留在 Server 上。
因此,如果您的 POP3 密碼被猜到了,有心人在您收信之前,或是您也習慣不刪除伺服器的信件,他就可以輕易地下載您的信件,而您卻完全不知道。
所以信件被盜收,根本不需要什麼駭客技術,也不需要入侵電腦系統。
【 SMTP 】
依據 SMTP 通訊規範,寄件人的郵件地址(MAIL FROM指令)和登入伺服器的帳號(AUTH 指令)是不需要一樣的。
顯示名稱、Email Address、登入帳號,這是三個不同的東西。
寄件人的 Email Address 、顯示名稱這是可以隨便填的,真正決定能不能透過 mail server 寄信的是登入帳號。
以 Outlook 為例,當您設定一個新的帳號的時候,您必須輸入顯示名稱,或是俗稱的【暱稱】,底下還有一個欄位是 Email Address,接下來則是登入帳號(POP3 用的),在進階設定則可以設定 SMTP 外寄的登入帳號,一般的 ISP 則大多使用 IP 驗證,所以這個地方不用填。簡單的說,依據 SMTP 的規範,登入帳號、顯示名稱、Email Address 三個是不一樣的,否則收信軟體有提供一個欄位就好,沒必要開三個欄位。
例如,您用 Hinet 的線路,外寄郵件伺服器使用 msa.hinet.net 等郵件主機,您是不需要驗證就可以寄信的,所以您的寄件人寫誰有差嗎?
根本不需要駭入寄件人的電腦或是 mail server 去寄信。
=========== 如何防治 =============
【行政流程】
1. 變更帳款方式還是以書面為準,小弟公司和各大廠合作都是這樣,不會簡單的 Email 去變更。
2. 任何變更一律是下期貨款才適用,收到對帳單的時候,不會再確認一次嗎。
3. 就算要簡化流程,電話,或是 Email 的雙重確認,應該花不了多少時間。
【Mail Server】
1. 要求密碼強度。
2. 最重要的,啟用登入失敗保護,阻絕字典攻擊。大部分的 Mail Server 都有這個功能,例如登入失敗3次鎖 IP。如果 3 次就猜對了,那就回到第 1 點。
3. 使用虛擬帳號。大部分公司都會有 PO, Sales, services 這類的信箱,盡量使用虛擬或群組帳號。也就是這些帳號本身是無法寄信,也沒有實體信箱,收信後力可轉給其他真實的帳號。例如 Mail Server 收到寄給 [email protected] 的信件,自動將信件送給 UserA, UserB, UserC 等,PO 本身是沒有信件的。
=========== 2016/08/05 補充 =============
冒名信件不需要什麼技術,人人都可做到,以 outlook 為例,使用者資訊的使用者名稱、Email Address、登入資訊的使用者名稱,這三個彼此是不相干的。
其中使用者資訊的文字,就是收件軟體看到的內容
登入資訊,則是決定寄件者的 mail server 是否幫它把信傳遞出去的依據。
所以簡單說,只要找一台願意幫你把信寄出去的郵件伺服器,使用者資訊的使用者名稱、Email Address這兩個欄位隨便填沒關係。
如何找到願意幫你寄信的伺服器?
最簡單的方式,就是使用 ISP 的 SMTP Server,因為幾乎所有 ISP 的 SMTP Server 都是使用 IP 驗證,也就使您只要知道現在是用誰的網路,就可以透過它們的伺服器寄信。
外寄郵件驗證部分,選擇不驗證,這樣就可以了。
另外免費信箱,包括 Gmail 也可以自行設定顯示名稱,但是會被加上紀錄。
這樣是不是很簡單。