自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

詳解Windows、Linux中“可信路徑”安全機(jī)制

運(yùn)維 系統(tǒng)運(yùn)維
可信路徑[trusted path]可以避過(guò)應(yīng)用層,在用戶(hù)與內(nèi)核之間開(kāi)辟一條直接的可信任的交互通道,本文中我們將介紹Windows可信路徑的安全機(jī)制和Linux可信路徑的安全機(jī)制。

計(jì)算機(jī)系統(tǒng)中,用戶(hù)在一般情況并不直接與內(nèi)核打交道,中間還有一層應(yīng)用層作為接口在用戶(hù)與內(nèi)核之間相互作用著,但這種設(shè)計(jì)能夠保護(hù)內(nèi)核不會(huì)被用戶(hù)肆意修改窺測(cè),但也隨之帶來(lái)了安全問(wèn)題,由于應(yīng)用層并不是能完全信任之的,因此在操作系統(tǒng)安全功能中,往往會(huì)提供可信路徑這一功能[這也是橘皮書(shū) B2 級(jí)的安全要求]。

可信路徑[trusted path]是怎么樣的概念?顧名思義,它就是這么一種功能的實(shí)現(xiàn):避過(guò)應(yīng)用層,在用戶(hù)與內(nèi)核之間開(kāi)辟一條直接的可信任的交互通道。真的有必要那么麻煩,不得不在進(jìn)行高風(fēng)險(xiǎn)操作時(shí)使用可信路徑與內(nèi)核互動(dòng)嗎?遺憾地告訴你:確實(shí)是!有經(jīng)驗(yàn)的系統(tǒng)管理員普遍都很清楚來(lái)自網(wǎng)絡(luò)的威脅有多么嚴(yán)重。黑帽子們能使用特洛伊木馬[Trojan horse],記錄你在登陸及其它敏感操作時(shí)的行動(dòng),從而竊取你的寶貴口令。

你一定對(duì)"ctrl + alt + del"三鍵序列極有印象,在DOS年代,我們用它快速重啟機(jī)器,并稱(chēng)之為"熱啟動(dòng)",而在WINDOWS 9X時(shí)代,我們則用它查看進(jìn)程,不過(guò)也許你沒(méi)有注意到,在WINDOWS9X 向WINNT過(guò)渡后,我們的PC也運(yùn)行著NT內(nèi)核的WIN2000/XP時(shí),事實(shí)上"ctrl + alt + del"三鍵的職能已經(jīng)有了些微改變,微軟在它的官方文檔中,稱(chēng)"ctrl + alt + del"為SAS[Secure Attention Sequence],并且將之列為安全功能-可信路徑的構(gòu)成部分,而在linux下,也有著類(lèi)似的按鍵序列可用。

Linux 環(huán)境下的安全留意鍵—— SAK[Secure Attention Key],這個(gè)SAK是一組鍵, 在我們常見(jiàn)的X86平臺(tái)下,它是"alt+sysrq+k",而在SPARC下,SAK則是"alt+STOP+k", SAK默認(rèn)不打開(kāi),需要用 echo "1" > /proc/sys/kernel/sysrq 這條命令激活,當(dāng)然,你也可以將它寫(xiě)進(jìn)登錄腳本中,這樣就不必每次麻煩了。對(duì)SAK實(shí)現(xiàn)有興趣的朋友,可以參考參考 linux/drivers/char/sysrq.c和 linux/drivers/char/tty_io.c::do_SAK

SAK序列鍵其實(shí)是被稱(chēng)做"magic sysrq key" 中的一組,"magic sysrq key" 還有一些特殊鍵,與SAK一樣,它們都是使用"alt + sysrq + ..."格式,其中的...可換為某些特殊的字母比如"i",在《MAGIC SYSRQ KEY DOCUMENTATION v1.32》手冊(cè)上,"alt + sysrq +i" 所代表的行為是"Send a SIGKILL to all processes, except for init." 意思就是向除了 init 外的所有進(jìn)程發(fā)送一條kill 信號(hào);現(xiàn)在我們看看在《MAGIC SYSRQ KEY DOCUMENTATION v1.32》手冊(cè)中對(duì)"alt + sysrq +k"的解釋吧:

"sa'K' (Secure Access Key) is usefull when you want to be

sure there are no trojan program is running at console and

which could grab your password when you would try to login.

It will kill all programs on given console and thus

letting you make sure that the login prompt you see is

actually the one from init, not some trojan program. "

這段話(huà)正是SAK的功能寫(xiě)照:SAK對(duì)你確定在登陸時(shí)沒(méi)有試圖竊取密碼的特洛伊木馬程序運(yùn)行在當(dāng)前控制臺(tái)上,它能殺死當(dāng)前控制臺(tái)上的全部應(yīng)用程序,以此令你確信看到的登陸畫(huà)面來(lái)自init,而非木馬程序。當(dāng)你按下這組鍵時(shí),也就是引發(fā)了這一特定事件,那么按照設(shè)計(jì)的流程,系統(tǒng)陷入核心狀態(tài),這時(shí)你將可以直接與內(nèi)核溝通,也就是說(shuō),出現(xiàn)在你的“理應(yīng)”是如假包換的真實(shí)登陸提示信息,為什么是理應(yīng)?我們下文分析:->

#p#在討論SAK的脆弱點(diǎn)之前,我們先來(lái)看看當(dāng)你按下SAK時(shí),系統(tǒng)發(fā)生了什么事情吧,當(dāng)系統(tǒng)處在正常狀態(tài)下時(shí),用戶(hù)按下鍵盤(pán)時(shí),此事件將進(jìn)入核心以解釋?zhuān)羝鋻呙璐a對(duì)應(yīng)為SAK,則內(nèi)核將找出引發(fā)此SAK的終端,之后為了創(chuàng)建可信路徑,則需要?dú)⑺浪蟹呛诵倪M(jìn)程,也就是說(shuō)在此時(shí),任何此終端上用戶(hù)建立的進(jìn)程都將死亡,當(dāng)然,可能存在的木馬進(jìn)程也被殺死了,系統(tǒng)最后將重新打開(kāi)登陸進(jìn)程,使用戶(hù)獲得放心的交互。

注意:

1:事實(shí)上這里提到的與內(nèi)核交互,確切地說(shuō)應(yīng)該是與TCB[Trusted Computing Base,可信計(jì)算基]的軟件部分打交道,包括安全內(nèi)核與可信系統(tǒng)程序,TCB事實(shí)上是個(gè)很廣泛的概念,包括了安全內(nèi)核、特權(quán)程序、系統(tǒng)命令與相關(guān)硬件設(shè)備,甚至在邏輯上包括了系統(tǒng)管理員和安全管理員,離題太遠(yuǎn),請(qǐng)各位對(duì)TCB感興趣的朋友查詢(xún)相關(guān)手冊(cè)`:->

2:Q:SAK怎樣判斷該殺死哪些進(jìn)程,以免少殺及誤殺?

A:這可真是一個(gè)好問(wèn)題,因?yàn)榫幹频顷懩M器木馬的的黑客必須深刻理解SAK殺死應(yīng)用進(jìn)程的實(shí)現(xiàn)方式,已此試圖破壞這機(jī)制,事實(shí)上,SAK命令殺死應(yīng)用進(jìn)程是根據(jù)進(jìn)程的PID來(lái)執(zhí)行的,linux系統(tǒng)剛剛啟動(dòng)時(shí)是運(yùn)行在核心狀態(tài)的,這時(shí)只有一個(gè)初始化進(jìn)程,初始化完畢時(shí),初始化進(jìn)程將啟動(dòng)一個(gè)init進(jìn)程,自己進(jìn)入 idle循環(huán),init的PID=1,它是一個(gè)真正的進(jìn)程,也將是進(jìn)程樹(shù)上的根,之后的所有進(jìn)程都是init進(jìn)程的“子子孫孫”,可以使用pstree命令查看系統(tǒng)中當(dāng)前的進(jìn)程樹(shù)圖,以此了解進(jìn)程間的關(guān)系。

剛剛我們已經(jīng)了解了linux操作系統(tǒng)下的可信路徑的相關(guān)知識(shí),但是我想已經(jīng)有不少朋友更想了解在WINDOWS NT/2000/XP下的可信路徑的情況,Now,let's go.

在NT系列windows操作系統(tǒng)中的可信路徑的引發(fā)方法是把 ctrl+alt+del這三個(gè)鍵同時(shí)按下,這稱(chēng)為標(biāo)準(zhǔn)SAS[Secure Attention Sequence],當(dāng)系統(tǒng)檢測(cè)到一個(gè)標(biāo)準(zhǔn)SAS序列的掃描碼時(shí),將由winlogon 進(jìn)程將系統(tǒng)設(shè)置為已注銷(xiāo)、已登陸、已鎖定三種不同狀態(tài),然后切換當(dāng)前桌面到 Winlogon 桌面。不過(guò)要注意到,WINDOWS中的可信路徑的實(shí)現(xiàn)似乎與linux下大不一樣。比如在WIN2000下,按下ctrl+alt+del,切換到winlogon桌面,但是當(dāng)前用戶(hù)的進(jìn)程并沒(méi)有在這個(gè)時(shí)候被殺死,比如你可以聽(tīng)著mp3按ctrl+alt+del,這樣做你將在winlogon桌面下,照樣聽(tīng)mp3,如果其意義是需要注銷(xiāo)再登陸,那自然的,注銷(xiāo)的時(shí)候,當(dāng)前用戶(hù)的進(jìn)程都會(huì)被殺死,不過(guò)那樣的操作從開(kāi)始菜單中的關(guān)機(jī)命令有什么區(qū)別,并且,我們也可以在winlogon桌面上邊改密碼邊聽(tīng)著mp3,不會(huì)有木馬在后臺(tái)偷偷地記錄嗎?對(duì),用戶(hù)進(jìn)程并不是像在 linux 下那樣被簡(jiǎn)單地殺死,事實(shí)上,在winlogon 桌面初始化過(guò)程中,創(chuàng)建了三個(gè)桌面:應(yīng)用程序桌面(\Windows\WinSta0\default)、Winlogon桌面(\Windows\WinSta0\Winlogon)和屏幕保護(hù)桌面(\Windows\WinSta0\ScrenSaver)。而在安全策略上,只有winlogon進(jìn)程可以訪(fǎng)問(wèn)到winlogon桌面,其它兩個(gè)桌面才允許用戶(hù)及其所屬進(jìn)程訪(fǎng)問(wèn),因此雖然用戶(hù)進(jìn)程在SAS激發(fā)后并不會(huì)被殺死,但它們也不能訪(fǎng)問(wèn)winlogon桌面以偷竊用戶(hù)口令,這就是“Windows特色的可信路徑實(shí)現(xiàn)道路” :->

等等,你也許會(huì)想到GINA木馬,它不就是偽造的登陸窗口嗎?在登陸到windowsNT時(shí),我們按下ctrl+alt+del這個(gè)所謂的可信路徑時(shí),怎么沒(méi)有將它殺掉?事實(shí)上,GINA木馬并不是直接擊敗可信路徑這一功能,而是破壞了可信路徑下層的TCB,改變了TCB中軟件結(jié)構(gòu)的一部分!現(xiàn)在我們來(lái)回憶一下GINA木馬的一些細(xì)節(jié),還記得吧?

GINA[GINA: Graphical Identification and Authentication,圖形身份驗(yàn)證 ] 在windows中,缺省的GINA就是msgina.dll ,它是運(yùn)行在winlogon.exe的進(jìn)程空間中的,由注冊(cè)表中\(zhòng)HKEY_LOCAL_MACHINE\Softwar

e\Microsoft\Windows NT\CurrentVersion\Winlogon\GinaDLL=yourgina.dll 定義,默認(rèn)情況下則就是msgina.dll,而GINA木馬的實(shí)現(xiàn)機(jī)理則就是通過(guò)修改注冊(cè)表,將原來(lái)的msgina.dll替換為自己的木馬GINA,以此實(shí)現(xiàn)將截獲的用戶(hù)名和密碼保存在某個(gè)文件中,供黑帽子讀取。嚴(yán)格來(lái)說(shuō)這確實(shí)不算是直接擊敗了SAS可信路徑功能,因?yàn)楸仨氂衋dministrator權(quán)限才能進(jìn)行操作注冊(cè)表,完成替換系統(tǒng)文件的工作,而這種方式是微軟提供給客戶(hù)的一種功能,方便客戶(hù)以自己的方式來(lái)進(jìn)行用戶(hù)身份驗(yàn)證,比如使用指紋鑒別儀,視網(wǎng)膜掃校儀等非口令驗(yàn)證方式,只要替換msgina.dll為特定的GINA,就可以完成這種銜接工作,因此這只是一種功能,不是缺陷,更不能算是漏洞;并且,在WINDOWS這種操作系統(tǒng)中,若得到了admin權(quán)限,則再也沒(méi)有什么不能做的事。在美國(guó)foundstone公司編撰的《黑客大曝光》[Hacking Exposed]一書(shū)中,也提到了一個(gè)能捕獲ctrl + alt + del 三鍵序列之后的密碼操作的工具,Invisible Keylogger Stealth (IKS),它能遠(yuǎn)程安裝,安裝后需要重啟,之后就能運(yùn)行在后臺(tái),偷偷竊取用戶(hù)的密碼,并將其記錄在iks.dat 文件中,且該iks.dat 文件是二進(jìn)制格式,需專(zhuān)用的datview程序解讀,隱蔽性不可謂不好,不過(guò)這個(gè)程序仍然不是直接擊敗可信路徑,而是破壞了目標(biāo)機(jī)器的TCB,與GINA木馬類(lèi)似的,它也需要管理員權(quán)限,因?yàn)樗腔诰幹圃O(shè)備驅(qū)動(dòng)程序來(lái)實(shí)現(xiàn)其功能的,而在一臺(tái)WINNT機(jī)器上安全設(shè)備驅(qū)動(dòng),自然必須管理員才能完成操作。因此這仍然不能算是一個(gè)漏洞,從TCB概念的角度來(lái)分析也是如此,是TCB中的一部分改變了另一部分,記得我們前面所說(shuō)的系統(tǒng)管理員也是TCB的構(gòu)成部分嗎?這里指的系統(tǒng)管理員并非具體的人,而是擁有管理權(quán)限的帳戶(hù),機(jī)器、程序是不會(huì)辨別人類(lèi)的,誰(shuí)控制了管理帳戶(hù),機(jī)器就聽(tīng)誰(shuí)的指揮。

NT系列windows操作系統(tǒng)的啟動(dòng)過(guò)程中關(guān)于SAS的定義過(guò)程是:

初始化時(shí)GINA已經(jīng)收到VOID WlxUseCtrlAltDel(HANDLE hWlx);這個(gè)函數(shù)它的作用就是通知winlogon.exe,GINA默認(rèn)使用ctrl+alt+del這個(gè)標(biāo)準(zhǔn)SAS.如果要用自己定義SAS序列的話(huà),開(kāi)發(fā)者必須在編制自己的GINA.dll時(shí)

自行HOOK熱鍵.并且通過(guò):

WlxSasNotify(hGlobalWlx, dwSasType);

這個(gè)函數(shù)來(lái)報(bào)告將使用的SAS。

GINA將提供給winlogon.exe一個(gè)函數(shù):

VOID WINAPI WlxDisplaySASNotice(PVOID pContext);

用于顯示歡迎畫(huà)面以及驗(yàn)證是否使用了自定義的SAS序列。

【編輯推薦】

  1. Linux安全訪(fǎng)問(wèn)控制模型應(yīng)用及方案設(shè)計(jì) 
  2. Linux安全攻略 如何才能讓內(nèi)存不再/泄漏
  3. Windows與Linux安全性權(quán)威比較
責(zé)任編輯:趙寧寧 來(lái)源: 中國(guó)IT實(shí)驗(yàn)室
相關(guān)推薦

2012-05-25 09:09:25

Windows Pho

2020-04-02 15:10:57

Kubernetes集群安全

2011-09-27 10:23:24

Java反射機(jī)制

2009-07-03 18:59:02

2010-07-07 18:34:43

UML公共機(jī)制

2021-11-24 08:33:09

Android廣播機(jī)制應(yīng)用程序

2021-08-05 13:20:26

安全多方計(jì)算加密數(shù)據(jù)安全

2009-12-25 10:02:39

2011-01-13 12:46:13

2009-12-08 13:49:21

2021-01-18 10:35:18

網(wǎng)絡(luò)安全Windows代碼

2025-02-05 12:22:21

2011-06-29 17:20:20

Qt 內(nèi)存 QOBJECT

2010-02-26 09:50:57

WCF傳輸安全機(jī)制

2010-01-12 12:04:28

2015-06-23 09:22:13

2009-11-03 14:11:39

2009-12-08 17:56:11

2019-03-04 08:14:35

LinuxIDBash

2017-05-05 14:26:43

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)