引言:數(shù)字證書(shū)可與自然人、公司、Web服務(wù)等相關(guān)聯(lián),它由證書(shū)頒發(fā)機(jī)構(gòu)(CA)簽發(fā),并被信任數(shù)字證書(shū)的有關(guān)各方認(rèn)可。數(shù)字證書(shū)一般用于公鑰的加密。然而利用數(shù)字證書(shū)進(jìn)行攻擊的數(shù)量在過(guò)去的幾年可謂觸目驚心,其攻擊的形式和種類(lèi)也多種多樣,而其造成的后果自然是相當(dāng)嚴(yán)重。
數(shù)字證書(shū)是互聯(lián)網(wǎng)通訊中用于標(biāo)識(shí)通訊各方身份信息,數(shù)字證書(shū)可與自然人、公 司、Web服務(wù)等相關(guān)聯(lián),它由證書(shū)頒發(fā)機(jī)構(gòu)(CA)簽發(fā),并被信任數(shù)字證書(shū)的有關(guān)各方認(rèn)可。因此它提供了一種在互聯(lián)網(wǎng)上驗(yàn)證通信實(shí)體身份的方式,如同公民個(gè)人身份證一樣。
數(shù)字證書(shū)一般用于公鑰的加密。每一個(gè)數(shù)字證書(shū)都與一個(gè)合法有效的時(shí)間段有關(guān),所以數(shù)字證書(shū)在到期時(shí)可以被撤消。可能導(dǎo)致撤消數(shù)字證書(shū)的其它條件還有:私鑰暴露、主體與其公鑰關(guān)系的變更(例如,申請(qǐng)者郵件地址的變化)。如圖1顯示不受信任的證書(shū)。
在非對(duì)稱(chēng)加密的過(guò)程中,每個(gè)主體都與一對(duì)密鑰(一個(gè)公鑰,一個(gè)私鑰)相關(guān)聯(lián)。任何人都可以用自己的私鑰給一份文檔簽名。試圖驗(yàn)證文檔身份的真實(shí)性的任何人都可以使用簽名人的公鑰來(lái)驗(yàn)證文檔。

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

圖2 瀏覽器安全證書(shū)
惡意軟件是用于竊取與受害者有關(guān)聯(lián)的數(shù)字證書(shū)和私鑰的特殊工具。例如,有的惡意軟件能夠從Windows的證書(shū)庫(kù)中同時(shí)竊取私鑰和數(shù)字證書(shū)。這種惡意軟件利用了操作系統(tǒng)的功能。Windows系列操作系統(tǒng)將數(shù)字證書(shū)歸檔到一個(gè)證書(shū)庫(kù)中。程序代碼往往使用PFXExportCertStoreEx函數(shù)導(dǎo)出證書(shū)庫(kù)的信息,并用一個(gè)擴(kuò)展名為.pfx(其使用的真實(shí)文件格式為PKCS#12)的文件來(lái)存放此信息。操作者使用PFXExportCertStoreEx函數(shù)并使用EXPORT_PRIVATE_KEYS選項(xiàng)可以存儲(chǔ)數(shù)字證書(shū)和相關(guān)的私鑰,所以.pfx文件對(duì)于攻擊者是很有用的。
CertOpenSystemStoreA函數(shù)可用于打開(kāi)所存儲(chǔ)的證書(shū),而PFXExportCertStoreEx函數(shù)可以導(dǎo)出證書(shū)庫(kù)的如下內(nèi)容:MY(保存證書(shū)及相關(guān)私鑰的證書(shū)庫(kù))、CA(證書(shū)頒發(fā)機(jī)構(gòu)的證書(shū))、ROOT(根 證 書(shū))和SPC(軟件發(fā)行商的證書(shū))。其實(shí),通過(guò)在調(diào)用EXPORT_PRIVATE_KEYS函數(shù)時(shí)使用EXPORT_PRIVATE_KEYS選項(xiàng),任何人都可以導(dǎo)出數(shù)字證書(shū)和相關(guān)的私鑰。
幾乎每個(gè)用于竊取數(shù)字證書(shū)的惡意軟件都可以實(shí)施以上類(lèi)似的過(guò)程。在計(jì)算機(jī)開(kāi)始運(yùn)行時(shí),惡意代碼就已經(jīng)被用于竊取證書(shū)的存儲(chǔ)信息。
在攻擊者從竊取的證書(shū)中獲得了受害者的私鑰后,他就可以使用類(lèi)似于微軟簽名工具的程序(其中在 Windows DDK、Visual Studio等軟件中就綁定了此工具)。運(yùn)行簽名工具(即signtool.exe),攻擊者就可以對(duì)所有代碼(當(dāng)然包括惡意軟件的源代碼)進(jìn)行數(shù)字簽名。因此,對(duì)數(shù)字證書(shū)應(yīng)引起足夠的重視。