惡意程式
分析惡意程式所用的 SSL/TLS 憑證
近年來,惡意程式越來越常使用加密來隱藏其網路流量。其實這也很正常,因為一般正常的網路流量也越來越常採用加密連線。Google 在其透明度報告 (Transparency Report) 中指出,目前經由 Google Chrome 瀏覽器所產生的網路流量,絕大部分都經由 HTTPS 加密連線。本文詳細分析惡意程式所使用的 SSL/TLS 憑證。
過去六年以來,我們看到一般惡意程式與目標式攻擊惡意程式大量運用了加密連線。這不僅是為了躲避偵測,更是為了融入一般正常的加密流量。除了惡意程式之外,一些駭客工具平台,如:Cobalt Strike、Metasploit 及 Core Impact 也都使用加密流量。許多案例甚至採用了 SSL/TLS 所使用的 X.509 憑證。
趨勢科技在一篇技術摘要「惡意程式幕後操縱 (C&C) 通訊採用 SSL/TLS 憑證的現況」(The State of SSL/TLS Certificate Usage in Malware C&C Communications) 當中詳細分析了各種惡意程式家族所用的憑證。我們指出了這些憑證的一些特性以及我們觀察到的現象,還有如何迅速偵測這些憑證的技巧。要想盡可能及早攔截惡意程式,最重要的關鍵就是在憑證層次偵測惡意程式的 C&C 通訊流量,尤其是在無法透過代理器 (Proxy) 來進行解密的情況下。
本文將介紹惡意程式所用憑證當中的異常之處,以及如何利用這些特性來偵測惡意活動。我們蒐集並研究了多種惡意程式家族所用的 1,767 個憑證,詳細內容請參閱該份技術摘要。
憑證簽署
潛在惡意活動的第一個徵兆,就是憑證的簽署方式。在我們趨勢科技研究過的憑證當中,有 60% 都是自簽憑證 (self-signed certificate),光這一點就讓人起疑。除此之外,憑證簽署機構的名稱也是一個明顯警訊。有些惡意程式 (如 AsyncRAT 和 BitRAT) 會將自己的名稱填入這個欄位,還有其他惡意程式會使用「default」和「Internet Widgits Pty Ltd」這個奇怪的名稱的排列組合,後者是 OpenSSL 憑證產生時預設填入的名稱。
此外,憑證的效期也差異極大。目前,瀏覽器通常接受的憑證效期最長為 13 個月,憑證機構核發的效期通常比這更短。
惡意程式的憑證大致都遵守這項規定,但也有些例外。我們看過的憑證效期最短是一個月,最長可達數年 (有些樣本甚至高達 99 年)。例如,Gozi 從 2018 年至今一直都使用效期 10 年的憑證。
憑證綁定
憑證綁定 (Certificate Pinning) 是用戶端 (如瀏覽器、惡意程式等等) 限定網站合法憑證數量的方式,也就是說,並非任何合法的憑證都接受。這是有些網站和瀏覽器用來保護流量的方法,所以,就算惡意程式這麼做也不算奇怪。
這樣的作法目前並非特別常見,不過還是有些家族經常使用,如: IcedID、AsyncRAT、DcRAT、Vawtrak 和 PhantomNet。值得一提的是,前述惡意程式家族目前都使用自簽憑證,因此都可用前述的方法來偵測。但此處的偵測技巧,可用於具公信力的憑證機構 (Trusted CA) 所核發的憑證,請看下一節。
具公信力的憑證機構所核發的憑證
雖然前面已經提到,大多數的惡意憑證都是自簽憑證,但仍有一些是由具公信力的憑證機構 (CA) 所核發,下表顯示一些知名憑證機構所核發的惡意憑證數量。
憑證機構 | 簽發的憑證數量 |
Let’s Encrypt Authority X3 | 458 |
COMODO RSA Domain Validation Secure Server CA | 41 |
RapidSSL CA | 19 |
EssentialSSL CA | 18 |
cPanel, Inc. Certification Authority | 13 |
其他 | 26 |
表 1:具公信力的憑證機構所核發的惡意程式憑證數量。 |
有多個惡意程式家族經常使用這類具公信力的憑證,例如 Gozi 就使用了 150 個,其次是 QNodeService 的 61 個、BazaLoader 的 29 個,以及 ZLoader 的 28 個。至於這類憑證的效期,我們發現沒有任何惡意網域的憑證在 Let’s Encrypt 所提供的 3 個月效期過後仍繼續展延。但我們卻發現有某些網域出現不同憑證對應同一個網域的情況。
不同 CA 對於惡意網域憑證的核發各有不同的政策,例如 Let’s Encrypt 所持的態度是,他們不認為憑證機構必須網域上的內容進行審查。如果所有的網域都預設啟用 TLS,那麼加密基本上已經成為所有網路流量的基本要求。撇開我們的立場不談,這確實會讓網路防禦的程序變得複雜。
結論
在正常情況下,加密的 SSL/TLS 流量會阻礙惡意程式 C&C 通訊流量的偵測。不過,我們還是有辦法透過檢查流量所用的憑證來偵測惡意流量,並且產生入侵防護 (IDS/IPS) 特徵碼或過濾規則在憑證交握 (handshake) 層次偵測各種惡意程式家族。此外,這還能提供一些新的資訊來協助威脅調查人員發掘潛在的惡意流量。
有關這些技巧的完整資訊,請參閱這份 技術摘要。