企業資安簡易指南:網域監控 – 如何在網路釣魚出現前主動偵測並封鎖?(上)

網路釣魚(Phishing)是最古老的網路騙局之一。已經普遍到每個使用者和企業都可能看過好幾個釣魚網頁。許多防止網路釣魚建議都會教使用者如何避免或防禦網路釣魚攻擊,但使用者(特別是企業)該如何在它們出現前主動偵測並封鎖呢?

網域名稱內有什麼?

許多網路釣魚攻擊(特別是關於金融詐騙和信用卡資料竊取)都會複製正常網頁來偽造出詐騙網頁。例如,使用者可能會被騙去點入詐騙郵件內的連結,雖然他以為自己點的是正常電子郵件。結果就會被送到詐騙者所控制的山寨網頁。一旦使用者在該網頁輸入自己的帳號密碼和信用卡號,網路犯罪分子就可以攔截並竊取。

有許多種方法可以用來建立假網頁。最常見的是購買或註冊跟正常網域非常相似的新網域,然後放上詐騙網頁。接下來詐騙者就可以寄送網路釣魚郵件來吸引使用者連上。

這些準備工作可能需要數小時或數天,取決於註冊服務商的回應,代管服務的處理速度及詐騙者自己的時間安排和技術能力。所以企業就可以對新網域註冊進行監控和偵測。但具體該如何運作呢?

如何處理網域名稱?

網域名稱是一組定義網路行政自治權、管理權或控制權的字串。網域名稱由網域名稱系統(DNS)的規則和程序構成,並且以階層式架構組織起來。它由“DNS根網域”開始,接著是用“.”(點)隔開的下級或子網域。

比方說網域名稱trendmicro.com,裡面有第一級的“.com”和第二級的“trendmicro”。第一級稱為“頂級網域(TLD)”。它們分成幾類:

  • gTLD – 通用頂級網域;原本只有7個(.com、.edu、.gov、.int、.mil、.net、.org),但現在變得多很多
  • ccTLD – 國碼頂級網域;這些由各​​國所擁有,如法國的.fr,台灣的.tw等。

二級和三級網域通常由公司或個人所購買註冊。可以去處理更多層,但後幾層的所有者也是購買第二層的人。例如:technical.support.portal.trendmicro.com是有效的網域名稱,屬於註冊trendmicro.com的人。不過如果擁有二級子網域的人去出租或提供底下幾層時就會讓情況變得更加複雜。比方說DynDNS或afraid.org這些公司,它們註冊了網域,並且將子網域提供出去。

動態DNS所使用網域名稱的例子 – 由AFRAID提供

 

如何註冊網域?

註冊網域需要經由註冊服務商或是透過經銷商(即網路服務代管公司)與註冊服務商(處理註冊的組織)合作。他們會與註冊管理執行機構(為每個TLD儲存網域名稱檔案/資料庫)協調,最終由網際網路名稱與數字位址分配機構(ICANN)管理。

頂級網域(TLD)的授權(認證碼)被用來幫助識別網域的註冊商。對通用頂級網域(gTLD)來說,這類註冊商需要得到ICANN認證。ccTLD則不一定,其中有些保留給國家內的國民使用。

介紹區域檔案(zone file

區域檔案(zone file)或“DNS區域檔案”是包含DNS區域資訊的文字檔案。區域代表的是單一管理者所掌握的部分網路空間。也就是會有.com、.net、.fr等等的DNS區域檔案。

在網路上有一定數量的區域檔案被分享和免費提供。可以想見有許多不同的區域檔案 – 1,574個。ICANN的集中式區域資料服務(CZDS)提供集中大量下載這些檔案的服務。不過沒有辦法透過CZDS存取到所有的區域檔案。

某些區域檔案僅提供或出售給特定組織。像維護.FR(及其他一些頂級網域)的法國網域註冊機構(AFNIC)提供可每日存取他們所維護WhoIs資料庫的許可證。這許可證只提供給證明存在超過三年的法律實體,在法國或其他歐盟成員國內設有辦事處。而且必須提供資料使用目的等等資訊來進行審查。同時這些資訊也非無償使用。

在區域檔案內尋找

下載區域檔案後就可以開始尋找可疑的詐騙跡象。區域資料格式很簡單,所以很容易篩選。因為這份文件非常龐大,包含了數百萬個網域,所以顯然無法手動解析。可以開發自動化腳本來幫助尋找可疑網域。這需要解析所有網域並尋找可觸發警訊的相似處或模式。

比方說對銀行來說,通常是需要尋找被第三方註冊的公司名稱變體。一個作法是建立可能為潛在威脅的字串列表。以Trend Micro(趨勢科技)為例,可以在區域檔案內尋找的可疑字串包括:trendmicro、trendmicr0、trendm1cro、trendm1cr0、trend-micro、trend-micr0、trend-m1cro、trend-m1cr0等。可以看到這會有許多可能。不過詐騙者總是會想辦法找出你遺漏掉的部分。

使用正規表達式(regular expression或regex,regexp)有助於解決此問題。正規表達式可以定義用來監視的搜尋模式字串序列。像是上述的trendmicro相關字串可以只用一個正規表達式表示:trend.*m[i1]cr[o0]。

可以在線上找到各種工具來測試正規表達式。trend.*m[i1]cr[o0]可以這樣理解:字串中含“trend”,後面跟“m”之間可以出現任何字元(0次或多次),然後是“i”或“1”,然後接“cr”,然後是“o”或“0”。“任何字元出現0次或多次”是為了偵測像“trend—micro”這樣的網域。

要注意詐騙者也會設法讓網域使用更具可信度的名稱,像是使用trendmicro-support.com。雖然看起來正常,但它並非公司的官方網域​​。

為了更加有效率,必須經常下載區域檔案來讓分析人員可以盡快找到新網域。還需要建立系統來“移除”已經檢查過的舊網域。同時也要知道已經檢查過的網域可能隨時撤銷並由其他人再次註冊,因此在偵測可疑網域時要考慮到網域註冊日期。

如何偵測不提供區域檔案的TLD的詐騙性網域?定期發送搜查用DNS請求有助於涵蓋這部分。像是趨勢科技這樣的公司會發送多個可以比對各種可疑或詐騙性網域的DNS請求。再次用Trend Micro做例子,可以自動發送DNS請求(給不提供區域檔案的TLD)來嘗試解析網域名稱,例如:

  • < tld >
  • < tld >
  • < tld >
  • < tld >
  • trendmicro-support.< tld >
  • trendm1cro-support.< tld >
  • trendmicr0-support.< tld >
  • trendm1cr0-support.< tld >
  • trendmicro-supp0rt.< tld >
  • trendm1cro-supp0rt.< tld >
  • trendmicr0-supp0rt.< tld >
  • trendm1cr0-supp0rt.< tld >
  • trendmicro-solutions.< tld >

 

正如以上所見,這列表可以很長並包含數百個不同網域名稱。這種做法的問題是不能使用正規表達式(regex)來尋找新的註冊網域。必須要發送真正的DNS請求,因此需要完整的網域名稱。

另一種作法是使用腳本或服務,所以還是可以寫正規表達式,讓腳本生成所有可能的DNS請求。有些DNS伺服器不喜歡被大量查詢,所以最好在每個DNS請求之間停頓一下。

一旦發現可疑網域,並分析確認該網域並非被公司或個人所註冊,或與詐騙活動有關,就應該立即啟動刪除程序。這程序讓企業可以關閉網域或讓詐騙者無法使用。

 

偵測可疑網域

一旦寫好所需的正規表達式,就可以更有效率地解析區域檔案,並且達到滿意的偵測率。請注意這些都需要盡可能地自動化。推薦的作法是要定期進行(最好每日一次):

  • 透過CZDS/其他方式下載所有資料。
  • 使用正規表達式搜尋可疑網域;然後檢查偵測到的所有網域。
  • 出現誤報或錯誤時可以更新/改進正規表達式。
  • 更新所得情報,不管是用何方式儲存:Excel工作表、MISP、自己的工具等。

 

雖然大部分的TLD區域檔案應該可以取得,但還是會有缺少的部分。這時候就建議要定期發送網域名稱組合的DNS請求。

另一個找出和偵測可疑網域的好方法是利用網路犯罪分子常用的類似作法:模式。比方說DNS資料(DNS解析資料紀錄的被動系統)為資安專家和系統管理員提供特定網域的時間變化資訊。這不僅有助於關聯入侵指標,還提供識別相關或更多可疑網域的脈絡資訊。關聯特定可疑網域與使用相似網域註冊資訊所註冊的網域也有助於找出網路犯罪分子的基礎設施。

事實上,監控網域可以協助組織對抗業務和品牌遭受濫用的風險。在網路基礎設施內部署網頁信譽評比安全防護機制也有幫助。而在對抗使用偽造網域、郵件標頭和類似手法的網路釣魚攻擊或其他郵件威脅時,保護電子郵件閘道也相當重要。

@原文出處:InfoSec Guide: Domain Monitoring — Detecting Phishing Attacks (Part 1) 作者:Cedric Pernet(資深威脅研究員,趨勢科技網路安全解決方案團隊)