引言:數(shù)字證書可與自然人、公司、Web服務等相關聯(lián),它由證書頒發(fā)機構(CA)簽發(fā),并被信任數(shù)字證書的有關各方認可。數(shù)字證書一般用于公鑰的加密。然而利用數(shù)字證書進行攻擊的數(shù)量在過去的幾年可謂觸目驚心,其攻擊的形式和種類也多種多樣,而其造成的后果自然是相當嚴重。
數(shù)字證書是互聯(lián)網通訊中用于標識通訊各方身份信息,數(shù)字證書可與自然人、公 司、Web服務等相關聯(lián),它由證書頒發(fā)機構(CA)簽發(fā),并被信任數(shù)字證書的有關各方認可。因此它提供了一種在互聯(lián)網上驗證通信實體身份的方式,如同公民個人身份證一樣。
數(shù)字證書一般用于公鑰的加密。每一個數(shù)字證書都與一個合法有效的時間段有關,所以數(shù)字證書在到期時可以被撤消??赡軐е鲁废麛?shù)字證書的其它條件還有:私鑰暴露、主體與其公鑰關系的變更(例如,申請者郵件地址的變化)。如圖1顯示不受信任的證書。
在非對稱加密的過程中,每個主體都與一對密鑰(一個公鑰,一個私鑰)相關聯(lián)。任何人都可以用自己的私鑰給一份文檔簽名。試圖驗證文檔身份的真實性的任何人都可以使用簽名人的公鑰來驗證文檔。
圖1 數(shù)字證書
公鑰的用法之一就是加密文檔的發(fā)送。假設你希望發(fā)送一份加密文檔給zhangsan,那么你只要用張三的公鑰(由證書頒發(fā)機構發(fā)布并公開)簽名就足夠了。在這一點上,只有zhangsan可以解密文檔,因為只有他有一個私鑰與用于加密的公鑰相關聯(lián)。
每個主體的公鑰都包含在一個由可信任的第三方簽名的數(shù)字證書中。通過此方法,那些相信第三方的主體只需驗證其簽名從而接受公鑰的合法性。
數(shù)字證書的最流行的標準是 ITU-T X.509,證 書 頒發(fā)機構根據(jù)此標準來發(fā)布數(shù)字證書,并將主體的公鑰與一個獨一無二的名字綁定在一起,或者將其與一個別名(例如,一個電郵地址或一條DNS記錄)綁定在一起。
數(shù)字證書遭受攻擊的數(shù)量在過去的幾年可謂觸目驚心,而其造成的后果自然是相當嚴重。讀者可自行上網查詢,在此不再贅述。
黑客往往對公鑰基礎架構(PKI)環(huán)境顯示出極大興趣,尤其是對于濫用數(shù)字證書執(zhí)行一些非法活動,如網絡間諜、破壞、傳播惡意軟件等。
黑客攻擊管理數(shù)字證書的實體有許多目的。通過竊取與可信任的廠商有關的數(shù)字證書,并用這些數(shù)字證書給惡意代碼簽名,黑客就可以減少惡意軟件被快速檢測到的可能性。
在此舉一個著名的例子:前些年,某些網絡攻擊者使用Stuxnet這個網絡工具感染了伊朗進行鈾濃縮的原子能工廠。黑客使用了某些相關聯(lián)的數(shù)字證書簽名了惡意軟件的源代碼,并將披著“合法外衣”的軟件發(fā)送給了目標系統(tǒng)。
2013年一些惡意黑客們又竊取了與某大型跨國公司相關聯(lián)的數(shù)字證書。當時,有一些黑客正是使用該公司數(shù)字證書簽名了一個惡意軟件,并且破壞了該公司的一臺易受攻擊的服務器。被攻擊的服務器又被黑客用于從公司的代碼簽名系統(tǒng)獲得代碼驗證。
2014年4月,安全研究人員在某地實驗室檢測到了一個流行的木馬的新變種。為防止被檢測到,它通過源代碼的數(shù)字簽名來強化自己。這個例子用一個失竊的微軟的數(shù)字證書實施數(shù)字簽名。
數(shù)字簽名可以保證是誰誰簽署了文檔,用戶可以決定是否相信簽署該文件的個人或公司,以及發(fā)布該證書的企業(yè)。如果數(shù)字證書被竊,受害者的身份就會失竊并被用于非法目的。
惡意軟件的作者可以設計并傳播一個特定的惡意軟件代理,從而竊取數(shù)字證書。如果數(shù)字證書與Web瀏覽器有關聯(lián),惡意軟件就可以欺騙受害人,使其相信釣魚網站的是合法的。
由網絡攻擊者的網絡間諜活動往往就是由被盜的數(shù)字證書執(zhí)行的。攻擊者用數(shù)字證書通過安全連接執(zhí)行中間人攻擊,欺騙用戶認為他們正位于一個合法網站上,而事實上用戶的SSL/TSL通信正被秘密地篡改和截獲。
近年來,數(shù)字證書已經在很多方面被多次濫用。網絡黑客濫用數(shù)字證書對公司、個人和政府等實施網絡攻擊,安全專家們認為數(shù)字證書的最主要的濫用就是中間人攻擊。
黑客可以使用數(shù)字證書竊聽SSL/TLS通信。當服務器向客戶應用程序提供一個由可信任的但意料之外的CA簽發(fā)的SSL/TLS證書時,攻擊者就可以利用這些客戶應用程序的缺乏嚴格控制的漏洞,并實施攻擊。
SSL證書是可以保證網站真實性的特權機制。一般情況下,在我們訪問一個安全的網站時,在瀏覽器的地址欄會出現(xiàn)一個掛鎖標志的符合。
在掛鎖標志出現(xiàn)之前,網站首先提供一個由可信任的機構簽發(fā)的數(shù)字證書,該數(shù)字證書用以證明其身份和加密密鑰。
不幸的是,由于Web瀏覽器的某些不正確的設計和缺乏驗證過程,即使證書并非是瀏覽器所期望的,它也會接受由可信任的CA簽發(fā)的證書。能夠從任何CA獲得虛假證書并在連接階段將其提交給客戶的攻擊者可以冒充受害者訪問的任何加密網站。
多數(shù)瀏覽器都會從任何合法的機構接受新證書。如果竊聽者擁有虛假證書,并能夠訪問特定目標的互聯(lián)網連接,他就可以變成“中間人”,觀察并記錄所有的加密通信。如圖2為計算機瀏覽器所顯示的安全證書形式。
另一種常見的網絡攻擊形式是通過竊用數(shù)字證書簽名的惡意軟件來實施的。這種技術可以使攻擊者改進其惡意代碼的規(guī)避技巧。在攻擊者破壞了與可信任實體相關聯(lián)的私鑰之后,私鑰就被用于簽名惡意軟件的代碼。這種伎倆可以使攻擊者安裝軟件組件(包括驅動程序、軟件更新等),并為這些組件的安裝和執(zhí)行要求簽名代碼。
攻擊者還可以利用惡意軟件來安裝非法的證書,避免安全警告。例如,惡意代碼可充當SSL/TLS通信的一個本地代理服務器,而已安裝的非法的數(shù)字證書可以使攻擊者竊聽通信而不會觸發(fā)任何警告。在受到損害的系統(tǒng)上安裝虛假的根級CA證書可以使攻擊者實施釣魚攻擊。攻擊者需要做的只不過是建立一個使用SSL/TLS并傳送證驗證步驟的虛假域。
圖2 瀏覽器安全證書
惡意軟件是用于竊取與受害者有關聯(lián)的數(shù)字證書和私鑰的特殊工具。例如,有的惡意軟件能夠從Windows的證書庫中同時竊取私鑰和數(shù)字證書。這種惡意軟件利用了操作系統(tǒng)的功能。Windows系列操作系統(tǒng)將數(shù)字證書歸檔到一個證書庫中。程序代碼往往使用PFXExportCertStoreEx函數(shù)導出證書庫的信息,并用一個擴展名為.pfx(其使用的真實文件格式為PKCS#12)的文件來存放此信息。操作者使用PFXExportCertStoreEx函數(shù)并使用EXPORT_PRIVATE_KEYS選項可以存儲數(shù)字證書和相關的私鑰,所以.pfx文件對于攻擊者是很有用的。
CertOpenSystemStoreA函數(shù)可用于打開所存儲的證書,而PFXExportCertStoreEx函數(shù)可以導出證書庫的如下內容:MY(保存證書及相關私鑰的證書庫)、CA(證書頒發(fā)機構的證書)、ROOT(根 證 書)和SPC(軟件發(fā)行商的證書)。其實,通過在調用EXPORT_PRIVATE_KEYS函數(shù)時使用EXPORT_PRIVATE_KEYS選項,任何人都可以導出數(shù)字證書和相關的私鑰。
幾乎每個用于竊取數(shù)字證書的惡意軟件都可以實施以上類似的過程。在計算機開始運行時,惡意代碼就已經被用于竊取證書的存儲信息。
在攻擊者從竊取的證書中獲得了受害者的私鑰后,他就可以使用類似于微軟簽名工具的程序(其中在 Windows DDK、Visual Studio等軟件中就綁定了此工具)。運行簽名工具(即signtool.exe),攻擊者就可以對所有代碼(當然包括惡意軟件的源代碼)進行數(shù)字簽名。因此,對數(shù)字證書應引起足夠的重視。