究竟電子郵件有多安全? 讓我們看看幾種欺騙電郵系統的手法! (1)
如果你看到這篇文章, 不妨也把你攻破各種欺騙/攻擊手法分享出來.
我是從Exchange 2003的角度出發的, 不過其實所有SMTP郵件服務器也大同小異.
解決方法我會在下一篇再逐點說明…讓這篇先來作點前設介紹.
我不知道有多少個Exchange Admin會有這個經驗.
Exchange安裝後, 收件寄件都好好的, 應該都沒問題了吧…
突然有一天, 你發覺公司有些郵件總是發不出去.
上年我就有出過一個文章, 看看怎樣把公司的電郵系統從網際網絡黑名單中移除
如果登入到Exchange的郵件序列裡查看…就會見到驚人的隊列
不過這也是被動的方法, 經過多次失敗,
多次跟網際網絡上的高手(其實就是攻擊我們的人) 過招…
現在總算有點小心得, 所以就把經驗來個小總結.
相信遇到同樣問題的朋友已經看過這一篇微軟的文章了
裡面有教授怎樣避免成為Open Relay, Exchange 2010原本就不能用作Open Relay.
而且也有台灣方面一個測試Open Relay的網站
我也已經依照文章所說明的去設定了, 但是問題就是沒有解決!
俗語說, 自己知彼, 百戰百勝, 所以要解決問題, 就先要看看別人是怎樣做到攻擊的.
微軟的文件沒有錯, 它教我們不要做Open Relay,
甚麼是Open Relay呢? 假設我的公司的電郵域名叫justinlau.com
如果一部電腦發出指令, 要求我的電郵服務器發出一封寄件者和收件者都不是justinlau.com的電郵
而我的Exchange竟然接受這種指令, 而且把電郵發送出去.
這種服務器就叫Open Relay, 通常都是被世界封瑣的…但只要依指示去設定應該就沒有問題
但經過幾次被攻擊後, 我感覺這是不足夠的,
讓我們先了解最基本的SMTP Protocol的幾個指令和寄件的流程 (喜歡的可以跟著做噢~)
首先我以Telnet來接進Exchange Email Server, 藍色字部份是回應
會先收到Welcome Message
220 mail.justinlau.com Microsoft ESMTP MAIL Service, Version: 6.0.3790.4675 ready at Thu, 1 Aug 2013 16:07:25 +0800
EHLO justinlautest.com <--- 接著我們也說聲Hello
250 OK
mail from: justin.lau@justinlau.com
250 2.1.0 justin.lau@justinlau.com.. Sender OK <—Exchange 接受這個寄件人
rcpt to:justin.lau@justinlau.com
250 2.1.5 justin.lau@justinlau.com <--- Exchange也接受我寄件回到justinlau.com
DATA
354 Start mail input; end with <CRLF>.<CRLF>
testing only
.
250 2.6.0 MAIL0127eRBx9b000000db@mail.justinlau.com Queued mail for delivery <- 郵件放進序列當中等候寄件了
從Outlook看這封郵件會像這樣子
只有寄件者, 如果你細心的話更會發現平常的郵件應該會顯示AD裡的Display Name
但這封信只顯示電郵地址.
To, Subject這些東西都從缺, 但我畢竟是收到電郵了.
我們再細心查看這封信的詳細內容:
Microsoft Mail Internet Headers Version 2.0
Received: from justinlautest.com ([192.168.5.72] RDNS failed) by mail.justinlau.com with Microsoft SMTPSVC(6.0.3790.4675); <--寄件電腦的IP Address
Thu, 1 Aug 2013 16:16:54 +0800 <---寄件時間
From: justin.lau@justinlau.com
Bcc:
Return-Path: justin.lau@justinlau.com <--回郵地址
Message-ID: <MAIL0127eRBx9b000000db@mail1.justinlau.com>
X-OriginalArrivalTime: 01 Aug 2013 08:17:00.0951 (UTC) FILETIME=[7F6B0270:01CE8E8F]
Date: 1 Aug 2013 16:17:00 +0800
X-TM-AS-Product-Ver: SMEX-10.5.0.1057-7.000.1014-20050.004
X-TM-AS-Result: No--0.230400-0.000000-31
X-TM-AS-User-Approved-Sender: Yes
X-TM-AS-User-Blocked-Sender: No
這當中我們看到了, justinlautest.com從來就不存在這個世界上, 所以資訊實際上不可信
而且Exchange也做過Reverse DNS lookup, 知道這個IP沒有對映的地址
可是Exchange 2003原生並不能把這種電郵封鎖, 可是IP Address卻是真的, 總算有用.
From和Return-Path是寄件指令產生出來的, 究竟可不可信?
我們不妨再來看看以下例子, 這次我用一個不存在的abc@justinlau.com來寄件
250 OK
mail from: abc@justinlau.com
250 2.1.0 abc@justinlau.com....Sender OK
rcpt to: justin.lau@justinlau.com
250 2.1.5 justin.lau@justinlau.com
data
354 Start mail input; end with <CRLF>.<CRLF>
test again
.
250 2.6.0 <MAIL01rWcc4nUh000000df@mail.justinlau.com> Queued mail for delivery
信件竟然也被接受了…
為什麼呢? 因為我的SMTP並不需要驗證
那麼你會說, 這樣說我們拒絕Anonymous使用者進來不就好了
這個說法是可行的, 我曾經也試過這樣做,
可是我很快就把Anonymous Access重新勾上了
因為這樣做, 網際網絡就幾乎沒有人能寄件進來了 (Exchange 2013也是這樣)
試想想Gmail.com如果要寄件給我們, 就先要連線到我們SMTP 25埠
如果我們要求別人提供帳密驗證, 就會出現很吊詭的狀況
Gmail要給google帳號還是你AD的帳號?
假如Gmail真的胡亂提供帳密, SMTP是用Clear Text來傳送的, 那麼封包被攔截就很不安全了
所以在對應網際網絡的Exchange上, 我們不得而要接受這個設定.
所以說, 寄件人的地址也是不可信的, 媽呀~原來電郵並不是想像中安全…
我們來認真再看看MAIL FROM 和RCPT TO這兩個指令
簡單來說, 這是給Exchange SMTP 看的, 用來做簡單的查證
從上面的的結果已經看到了, Exchange 沒有做很精密的驗證
只要你不是打mail from: hacker@hacker.com 這樣誇張的東西, 這一關通常都能通過.
那麼RCPT to呢? 其實也是沒有大意義的…
雖然如果沒有其他資訊的話Exchange的確也會用這個RCPT TO: email address來寄件
但聰明的人還發現其他指令可以用噢~ 我們來看看以下實驗, 讓電郵顯得更可信一點
以下這種攻擊模式我們叫作Email Spoofing
mail from:justin.lau@justinlau.com
250 2.1.0 justin.lau@justinlau.com....Sender OK
rcpt to:justin.lau@justinlau.com
250 2.1.5 justin.lau@justinlau.com
DATA
354 Start mail input; end with <CRLF>.<CRLF>
subject: You got promoted <---注意這些東西
from: yourboss@justinlau.com <---注意這些東西
to: justin.lau@justinlau.com <---注意這些東西
Please come to my room.
.
250 2.6.0 <MAIL01z2Mb1s7n00000119@mail.justinlau.com> Queued mail for delivery
好了, 電郵會長怎樣呢??
是不是更可怕一點? 這簡直就是一封完完整整的電郵呀!
如果To用的是真的電郵地址, 像真度就更高了.
見到這封電郵, 我當然很高興地衝過去找老闆看看職位進升去那裡了…
但等等, 相信這篇郵件前, 我們能做甚麼去確認呢?!
其實電子郵件這種東西真的充滿各種問題, 現在先說到這裡
下一篇再來講解防騙的要訣!!