喬娜
摘要分析了Windows操作系統(tǒng)多線程計(jì)算環(huán)境下存在的安全威脅和安全需求,研究了針對(duì)遠(yuǎn)程線程注入的線程“白名單”防護(hù)技術(shù)和保證應(yīng)用軟件可靠運(yùn)行的線程安全監(jiān)控技術(shù)。能夠防止木馬程序利用遠(yuǎn)程線程注入技術(shù)對(duì)應(yīng)用軟件進(jìn)行破壞和竊密,建立“主動(dòng)防御”的管控系統(tǒng),具備計(jì)算資源自保護(hù)、自恢復(fù)的能力,使系統(tǒng)可靠有效運(yùn)行。實(shí)驗(yàn)表明,這種技術(shù)實(shí)現(xiàn)的線程安全防護(hù)與管控效果明顯。
關(guān)鍵詞線程安全;線程管控;線程注入;計(jì)算資源管控
中圖分類(lèi)號(hào):TP3 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1671-7597(2014)11-0049-02
受?chē)?guó)家信息產(chǎn)業(yè)基礎(chǔ)薄弱的制約,大部分服務(wù)器和終端操作系統(tǒng)均使用國(guó)外商用產(chǎn)品,各類(lèi)“漏洞”和“后門(mén)”帶來(lái)了隱患,安全防護(hù)不得不依靠外圍打補(bǔ)丁的方式,無(wú)法從根本上消除操作系統(tǒng)的不安全因素,國(guó)家頒布的計(jì)算機(jī)信息系統(tǒng)安全保護(hù)條例已把計(jì)算機(jī)操作系統(tǒng)的安全列為核心要求。目前終端和服務(wù)器使用采用的操作系統(tǒng)都支持多任務(wù)操作,多線程技術(shù)已經(jīng)在軟件系統(tǒng)開(kāi)發(fā)中得到了相當(dāng)廣泛的應(yīng)用,尤其是隨著多處理器計(jì)算機(jī)的大規(guī)模部署,并發(fā)多進(jìn)程之間的并行通信和同步,都需要多線程來(lái)解決。
在這種情況下,線程作為操作系統(tǒng)獨(dú)立調(diào)度和分配的最小單位,有必要對(duì)其存在的安全隱患進(jìn)行深入分析,明確安全防護(hù)需求,并研究相關(guān)安全防護(hù)技術(shù)手段,為計(jì)算環(huán)境安全可靠提供支撐,保障應(yīng)用軟件的安全穩(wěn)定運(yùn)行和業(yè)務(wù)處理的正常開(kāi)展。
1安全需求分析
計(jì)算環(huán)境線程級(jí)的安全防護(hù)需求體現(xiàn)在兩個(gè)方面,一是安全防護(hù),二是安全管控。包括以下幾點(diǎn)內(nèi)容。
1)對(duì)應(yīng)用軟件系統(tǒng)進(jìn)行加固,形成線程“白名單”,防止木馬程序利用遠(yuǎn)程線程注入技術(shù)對(duì)應(yīng)用軟件進(jìn)行破壞和竊密。
木馬是危害計(jì)算機(jī)安全并導(dǎo)致嚴(yán)重破壞的惡意程序,其重要特點(diǎn)就是隱身,采用偽裝方法欺騙用戶(hù)。隱藏技術(shù)一直是木馬設(shè)計(jì)者研究的重要技術(shù),目前最新的隱身技術(shù)就是利用遠(yuǎn)程線程注入技術(shù),通過(guò)特殊的內(nèi)核編程手段,將自身注入到目標(biāo)進(jìn)程的內(nèi)存地址空間。這樣,一方面實(shí)現(xiàn)了自身代碼的隱藏,另一方面擁有了目標(biāo)進(jìn)程的權(quán)限,可以任意實(shí)施對(duì)進(jìn)程的破壞,如盜取密碼、刪除并破壞文件、獲取機(jī)密信息等。木馬使用的這種遠(yuǎn)程線程注入[4]技術(shù)不會(huì)生成一個(gè)新的進(jìn)程,也不形成服務(wù),用查看進(jìn)程的方式無(wú)法找出木馬的蹤跡,現(xiàn)有的安全防護(hù)軟件也很難對(duì)其進(jìn)行查殺。鑒于以上安全威脅,應(yīng)該建立針對(duì)遠(yuǎn)程線程注入技術(shù)的防護(hù)手段,對(duì)應(yīng)用軟件系統(tǒng)進(jìn)行加固,形成線程“白名單”,只允許指定進(jìn)程執(zhí)行合法的線程,阻斷非法線程訪問(wèn),防止對(duì)應(yīng)用軟件的破壞和竊密。
2)對(duì)操作系統(tǒng)中各線程的運(yùn)行狀況進(jìn)行實(shí)時(shí)監(jiān)控,防止因木馬等惡意軟件產(chǎn)生大規(guī)模多線程訪問(wèn)耗盡計(jì)算資源,而導(dǎo)致應(yīng)用系統(tǒng)和操作系統(tǒng)崩潰,并對(duì)異常進(jìn)程采取相應(yīng)的管控措施,使系統(tǒng)可靠有效運(yùn)行。
目前軟件系統(tǒng)開(kāi)發(fā)已經(jīng)廣泛使用了多線程技術(shù)[1],能夠?qū)崿F(xiàn)在單個(gè)進(jìn)程的執(zhí)行中使用多個(gè)線程,同一個(gè)進(jìn)程可以在不同的處理器上同時(shí)執(zhí)行,服務(wù)器進(jìn)程可以使用多個(gè)線程處理多個(gè)用戶(hù)同時(shí)發(fā)出的請(qǐng)求。在這種情況下,軟件系統(tǒng)的復(fù)雜性也增加了用戶(hù)程序的不可靠性。應(yīng)該建立“主動(dòng)防御”的管控系統(tǒng),具備計(jì)算資源自保護(hù)、自恢復(fù)的能力。重點(diǎn)解決當(dāng)計(jì)算資源瀕臨耗盡時(shí),啟動(dòng)自保護(hù)機(jī)制,限制應(yīng)用對(duì)資源的占用;當(dāng)應(yīng)用程序運(yùn)行異常時(shí),啟動(dòng)自恢復(fù)機(jī)制,重新分配計(jì)算資源,確保應(yīng)用運(yùn)行可靠。
目前有一些工具也提供了安全監(jiān)控的功能,如微軟操作系統(tǒng)自帶的性能監(jiān)視器和任務(wù)管理器,但這些工具僅提供操作系統(tǒng)的相關(guān)性能信息,是系統(tǒng)級(jí)的監(jiān)視工具,只能監(jiān)控某個(gè)具體的應(yīng)用程序進(jìn)程級(jí)使用的系統(tǒng)資源情況,如CPU時(shí)間、內(nèi)存使用和包含的線程數(shù)等。但對(duì)于監(jiān)控某一個(gè)具體應(yīng)用軟件系統(tǒng)的運(yùn)行狀態(tài)來(lái)說(shuō),這點(diǎn)信息是遠(yuǎn)遠(yuǎn)不夠的,很多數(shù)據(jù)并不能支撐對(duì)應(yīng)用軟件的性能分析。應(yīng)該深入到應(yīng)用軟件系統(tǒng)中,實(shí)現(xiàn)軟件線程級(jí)的細(xì)粒度監(jiān)控,提供滿(mǎn)足需要的監(jiān)控?cái)?shù)據(jù)。同時(shí)還要考慮監(jiān)控手段既不影響軟件系統(tǒng)的性能和效率,又能獲取所需的信息。
2線程“白名單”防護(hù)技術(shù)方案
防護(hù)木馬程序利用遠(yuǎn)程線程注入的思想是建立應(yīng)用軟件系統(tǒng)線程“白名單”,明確軟件系統(tǒng)正常運(yùn)行時(shí)的可信線程列表,通過(guò)實(shí)時(shí)檢測(cè),確保軟件運(yùn)行時(shí)只允許軟件進(jìn)程執(zhí)行“白名單”內(nèi)的線程,并攔截非法遠(yuǎn)程線程的注入執(zhí)行。其技術(shù)方案示意圖如圖1所示。
圖1軟件線程“白名單”防護(hù)示意圖
在各類(lèi)應(yīng)用軟件進(jìn)程正常運(yùn)行的情況下,也就是沒(méi)有被非法遠(yuǎn)程線程注入的情況下,枚舉出當(dāng)前進(jìn)程運(yùn)行時(shí)所加載的所有可信線程列表,稱(chēng)為線程“白名單”。線程“白名單”的建立是一個(gè)長(zhǎng)期學(xué)習(xí)訓(xùn)練的過(guò)程,大部分軟件所產(chǎn)生的線程是相對(duì)穩(wěn)定的,但是隨著運(yùn)行環(huán)境的變化,進(jìn)程中所加載的線程也會(huì)發(fā)生一定的變化,如軟件運(yùn)行了以前沒(méi)有使用過(guò)的新功能,這些新功能所起的線程也屬于可信線程的范疇,也應(yīng)該添加到線程“白名單”中去。應(yīng)用軟件最終線程“白名單”的確立需要一定時(shí)間的學(xué)習(xí)和實(shí)驗(yàn)。
在指定應(yīng)用軟件運(yùn)行時(shí),通過(guò)對(duì)軟件進(jìn)程加載線程“白名單”實(shí)施加固,實(shí)時(shí)監(jiān)測(cè)該進(jìn)程當(dāng)前所執(zhí)行的所有線程,當(dāng)發(fā)現(xiàn)“白名單”之外的非法線程企圖啟動(dòng)時(shí),使用線程阻斷技術(shù)對(duì)其進(jìn)行攔截,同時(shí)記錄日志并立即向安全管理員告警。相當(dāng)于為每個(gè)指定的應(yīng)用軟件安裝了一個(gè)粒度到最小單位的線程級(jí)“防火墻”。
線程“白名單”安全防護(hù)方案中的主要技術(shù)難點(diǎn)是遠(yuǎn)程線程注入攔截技術(shù)[4]。通過(guò)研究分析,遠(yuǎn)程線程注入使用的最關(guān)鍵技術(shù)是利用Windows操作系統(tǒng)提供的一套公開(kāi)API函數(shù)(包括CreateRemoteThread()[1]、WriteProcessMemory()等)[1]在目標(biāo)進(jìn)程中通過(guò)插入特定的代碼來(lái)實(shí)現(xiàn)注入的功能。安全防護(hù)可行的方法是使用API攔截技術(shù),自定義一系列偽函數(shù)用于替換Windows提供的API函數(shù),一旦監(jiān)視到指定API被調(diào)用,就強(qiáng)制轉(zhuǎn)入到所注入的DLL中執(zhí)行自定義偽函數(shù),從而使得木馬和攻擊程序無(wú)法注入,無(wú)法隱藏。遠(yuǎn)程線程注入攔截系統(tǒng)框架如圖2所示。
圖2遠(yuǎn)程線程注入攔截系統(tǒng)框架示意圖
3線程安全管控技術(shù)方案
應(yīng)用軟件線程安全管控主要實(shí)現(xiàn)三個(gè)功能。一是能夠采集線程監(jiān)控?cái)?shù)據(jù),如線程的創(chuàng)建事件、線程的狀態(tài)、線程的存儲(chǔ)區(qū)信息和線程的資源占用情況等;二是能夠?qū)ΡO(jiān)控?cái)?shù)據(jù)進(jìn)行分析和統(tǒng)計(jì),對(duì)采集到的原始數(shù)據(jù)進(jìn)行加工和分析,如排序、求最大值、最小值、平均值以及生成各種圖表和報(bào)告等,發(fā)現(xiàn)不可靠因素所在;三是能夠?qū)M(jìn)程占用的資源進(jìn)行管控,在個(gè)別線程的CPU、內(nèi)存利用率超過(guò)一定限值時(shí)立即向安全管理員告警,并在必要時(shí)根據(jù)系統(tǒng)資源占用率和軟件的運(yùn)行需要?jiǎng)討B(tài)調(diào)整指定進(jìn)程的資源占用率上限,保障重要應(yīng)用軟件的資源分配和可靠運(yùn)行[3]。線程安全管控技術(shù)方案示意圖如圖3所示。
線程安全管控方案中的主要技術(shù)難點(diǎn)是計(jì)算資源控制技術(shù),包括控制應(yīng)用軟件對(duì)計(jì)算機(jī)的CPU占用和對(duì)內(nèi)存的占用。
內(nèi)存占用控制層面的研究分析表明,在Windows操作平臺(tái)上,一個(gè)進(jìn)程占用的內(nèi)存,可以根據(jù)類(lèi)型區(qū)分為分頁(yè)內(nèi)存和非分頁(yè)內(nèi)存。在進(jìn)程的內(nèi)核態(tài),兩類(lèi)內(nèi)存同時(shí)存在;而在用戶(hù)態(tài),則只有分頁(yè)內(nèi)存,這意味著用戶(hù)態(tài)的內(nèi)存是可以交換出去的。這個(gè)機(jī)制為我們實(shí)現(xiàn)進(jìn)程的內(nèi)存控制提供了可行性。在i386體系中,內(nèi)存可以分為物理內(nèi)存和虛擬內(nèi)存,正在運(yùn)行的代碼和使用的數(shù)據(jù)必須位于物理內(nèi)存中,但是當(dāng)它們“長(zhǎng)期”不被運(yùn)行或使用時(shí),將會(huì)被操作系統(tǒng)自動(dòng)交換到虛擬內(nèi)存中(通常是硬盤(pán)),并在需要時(shí)將其重新交換進(jìn)物理內(nèi)存中,這個(gè)過(guò)程稱(chēng)為“壓縮內(nèi)存”?;谏鲜鲈?,應(yīng)用軟件內(nèi)存占用控制可行的技術(shù)方案是強(qiáng)制將進(jìn)程占用的一部分內(nèi)存交換到虛擬內(nèi)存(即硬盤(pán))中,達(dá)到壓縮內(nèi)存的目的。然而,由于要保持進(jìn)程的運(yùn)行狀態(tài),進(jìn)程內(nèi)存中的部分?jǐn)?shù)據(jù)仍需要使用,因此被交換的內(nèi)存必然受到一定限制,只能交換出有限數(shù)量,根據(jù)當(dāng)前測(cè)試數(shù)據(jù)約為當(dāng)前應(yīng)用軟件進(jìn)程占用總內(nèi)存的50%。另外,被交換出去的內(nèi)存在一段時(shí)間內(nèi)將逐漸恢復(fù)到實(shí)際占用的數(shù)據(jù),所以需要定時(shí)反復(fù)地壓縮內(nèi)存。需要注意的是:交換的內(nèi)存越多,進(jìn)程產(chǎn)生的缺頁(yè)中斷(即頁(yè)面錯(cuò)誤)次數(shù)也會(huì)越多,所以?xún)?nèi)存控制應(yīng)該限定為合理的水平。
endprint
圖3線程安全管控技術(shù)方案示意圖
CPU占用控制層面的研究分析表明,在Windows的運(yùn)行調(diào)度中,線程是基本單位,進(jìn)程的CPU占用實(shí)際上是所有線程的CPU占用之和。Windows對(duì)進(jìn)程的CPU占用量采取了百分比的表示方式,以下公式表示了在一個(gè)時(shí)間段內(nèi)進(jìn)程的CPU占用情況:
(內(nèi)核態(tài)時(shí)間 + 用戶(hù)態(tài)時(shí)間) / 時(shí)間段 / CPU數(shù)量
因此,要控制進(jìn)程的CPU占用,必須要減少內(nèi)核態(tài)和(或)用戶(hù)態(tài)的執(zhí)行時(shí)間,而要減少這些時(shí)間,標(biāo)準(zhǔn)的方法是調(diào)整線程優(yōu)先級(jí)。優(yōu)先級(jí)是線程調(diào)度的重要參數(shù),優(yōu)先級(jí)越低,線程越不容易被調(diào)度系統(tǒng)選中,占用的執(zhí)行時(shí)間自然就會(huì)減少。但是線程優(yōu)先級(jí)調(diào)整的控制效果是有限的,在很多情況下,即使最低的線程優(yōu)先級(jí)仍然占用大量的CPU時(shí)間,不能滿(mǎn)足實(shí)際的需要。應(yīng)用軟件CPU占用控制可行的技術(shù)方案是采用強(qiáng)制閃斷線程技術(shù),使指定進(jìn)程的所有線程定時(shí)產(chǎn)生一次閃斷,即在一個(gè)極短的瞬間暫停,然后迅速繼續(xù)執(zhí)行。該技術(shù)可以有效降低CPU占用,并能根據(jù)實(shí)際情況控制進(jìn)程的CPU占用率減少到可容許的范圍。根據(jù)試驗(yàn)數(shù)據(jù)(取樣時(shí)間60分鐘,CPU占用率控制目標(biāo)為25%),指定進(jìn)程CPU占用率控制誤差范圍在10%,如下表所示。
進(jìn)程名 用途 原始CPU平均占用率(取樣時(shí)間60分鐘) 設(shè)置為低優(yōu)先級(jí)后CPU平均占用率(取樣時(shí)間60分鐘) 強(qiáng)制線程閃斷后CPU平均占用率(取樣時(shí)間60分鐘) CPU控制誤差
AVScan.exe 病毒
掃描 53% 51% 27% 8%
Winrar.exe 文件
壓縮 38% 38% 26% 4%
FileManager.exe 文件
加密 47% 45% 27% 8%
Wireshark.exe 網(wǎng)絡(luò)
抓包 28% 27% 25% 0%
需要考慮的是,由于要不斷地控制目標(biāo)進(jìn)程的CPU占用,那么控制者本身也將占用一定的CPU,如何均衡二者的關(guān)系,會(huì)是該技術(shù)的一個(gè)難點(diǎn),需要在實(shí)現(xiàn)中觀察并獲取大量測(cè)試數(shù)據(jù)作為參考。
4結(jié)束語(yǔ)
本文提出了基于線程“白名單”防護(hù)技術(shù)和線程安全管控技術(shù)的線程級(jí)安全防護(hù)系統(tǒng),能夠?qū)?yīng)用軟件系統(tǒng)進(jìn)行加固,防止木馬程序利用遠(yuǎn)程線程注入技術(shù)對(duì)應(yīng)用軟件進(jìn)行破壞和竊密;對(duì)終端和服務(wù)器應(yīng)用軟件系統(tǒng)中各線程的運(yùn)行狀況進(jìn)行監(jiān)視,建立“主動(dòng)防御”的管控系統(tǒng),具備計(jì)算資源自保護(hù)、自恢復(fù)的能力,使系統(tǒng)可靠有效運(yùn)行,在實(shí)際應(yīng)用中有著較為理想的效果。此外,在對(duì)計(jì)算資源的控制時(shí),如何保證被控制軟件系統(tǒng)的正常工作和穩(wěn)定運(yùn)行,是下一步重點(diǎn)研究的內(nèi)容。
參考文獻(xiàn)
[1]王險(xiǎn)峰,劉寶宏.Windows環(huán)境下的多線程編譯原理與應(yīng)用[M].清華大學(xué)出版社,2002.
[2]張慧成,謝余強(qiáng),王華.一種并行調(diào)試與監(jiān)測(cè)分析軟件的體系結(jié)構(gòu)設(shè)計(jì)[J].計(jì)算機(jī)工程,2003,29(8):5-7.
[3]寇雅楠,李增智,王建國(guó).計(jì)算機(jī)軟件測(cè)試研究[J].計(jì)算機(jī)工程與應(yīng)用,2002,38(10):103-105.
[4]雷校勇,黃小平.Windows RootKit技術(shù)原理及防御策略[D].開(kāi)發(fā)研究與設(shè)計(jì)技術(shù),2007(12):428-429.
[5]GREG H,JAMES B.RootKit:Subverting the Windows kernel[D].Boston:Addison Wesley,2005.
endprint
圖3線程安全管控技術(shù)方案示意圖
CPU占用控制層面的研究分析表明,在Windows的運(yùn)行調(diào)度中,線程是基本單位,進(jìn)程的CPU占用實(shí)際上是所有線程的CPU占用之和。Windows對(duì)進(jìn)程的CPU占用量采取了百分比的表示方式,以下公式表示了在一個(gè)時(shí)間段內(nèi)進(jìn)程的CPU占用情況:
(內(nèi)核態(tài)時(shí)間 + 用戶(hù)態(tài)時(shí)間) / 時(shí)間段 / CPU數(shù)量
因此,要控制進(jìn)程的CPU占用,必須要減少內(nèi)核態(tài)和(或)用戶(hù)態(tài)的執(zhí)行時(shí)間,而要減少這些時(shí)間,標(biāo)準(zhǔn)的方法是調(diào)整線程優(yōu)先級(jí)。優(yōu)先級(jí)是線程調(diào)度的重要參數(shù),優(yōu)先級(jí)越低,線程越不容易被調(diào)度系統(tǒng)選中,占用的執(zhí)行時(shí)間自然就會(huì)減少。但是線程優(yōu)先級(jí)調(diào)整的控制效果是有限的,在很多情況下,即使最低的線程優(yōu)先級(jí)仍然占用大量的CPU時(shí)間,不能滿(mǎn)足實(shí)際的需要。應(yīng)用軟件CPU占用控制可行的技術(shù)方案是采用強(qiáng)制閃斷線程技術(shù),使指定進(jìn)程的所有線程定時(shí)產(chǎn)生一次閃斷,即在一個(gè)極短的瞬間暫停,然后迅速繼續(xù)執(zhí)行。該技術(shù)可以有效降低CPU占用,并能根據(jù)實(shí)際情況控制進(jìn)程的CPU占用率減少到可容許的范圍。根據(jù)試驗(yàn)數(shù)據(jù)(取樣時(shí)間60分鐘,CPU占用率控制目標(biāo)為25%),指定進(jìn)程CPU占用率控制誤差范圍在10%,如下表所示。
進(jìn)程名 用途 原始CPU平均占用率(取樣時(shí)間60分鐘) 設(shè)置為低優(yōu)先級(jí)后CPU平均占用率(取樣時(shí)間60分鐘) 強(qiáng)制線程閃斷后CPU平均占用率(取樣時(shí)間60分鐘) CPU控制誤差
AVScan.exe 病毒
掃描 53% 51% 27% 8%
Winrar.exe 文件
壓縮 38% 38% 26% 4%
FileManager.exe 文件
加密 47% 45% 27% 8%
Wireshark.exe 網(wǎng)絡(luò)
抓包 28% 27% 25% 0%
需要考慮的是,由于要不斷地控制目標(biāo)進(jìn)程的CPU占用,那么控制者本身也將占用一定的CPU,如何均衡二者的關(guān)系,會(huì)是該技術(shù)的一個(gè)難點(diǎn),需要在實(shí)現(xiàn)中觀察并獲取大量測(cè)試數(shù)據(jù)作為參考。
4結(jié)束語(yǔ)
本文提出了基于線程“白名單”防護(hù)技術(shù)和線程安全管控技術(shù)的線程級(jí)安全防護(hù)系統(tǒng),能夠?qū)?yīng)用軟件系統(tǒng)進(jìn)行加固,防止木馬程序利用遠(yuǎn)程線程注入技術(shù)對(duì)應(yīng)用軟件進(jìn)行破壞和竊密;對(duì)終端和服務(wù)器應(yīng)用軟件系統(tǒng)中各線程的運(yùn)行狀況進(jìn)行監(jiān)視,建立“主動(dòng)防御”的管控系統(tǒng),具備計(jì)算資源自保護(hù)、自恢復(fù)的能力,使系統(tǒng)可靠有效運(yùn)行,在實(shí)際應(yīng)用中有著較為理想的效果。此外,在對(duì)計(jì)算資源的控制時(shí),如何保證被控制軟件系統(tǒng)的正常工作和穩(wěn)定運(yùn)行,是下一步重點(diǎn)研究的內(nèi)容。
參考文獻(xiàn)
[1]王險(xiǎn)峰,劉寶宏.Windows環(huán)境下的多線程編譯原理與應(yīng)用[M].清華大學(xué)出版社,2002.
[2]張慧成,謝余強(qiáng),王華.一種并行調(diào)試與監(jiān)測(cè)分析軟件的體系結(jié)構(gòu)設(shè)計(jì)[J].計(jì)算機(jī)工程,2003,29(8):5-7.
[3]寇雅楠,李增智,王建國(guó).計(jì)算機(jī)軟件測(cè)試研究[J].計(jì)算機(jī)工程與應(yīng)用,2002,38(10):103-105.
[4]雷校勇,黃小平.Windows RootKit技術(shù)原理及防御策略[D].開(kāi)發(fā)研究與設(shè)計(jì)技術(shù),2007(12):428-429.
[5]GREG H,JAMES B.RootKit:Subverting the Windows kernel[D].Boston:Addison Wesley,2005.
endprint
圖3線程安全管控技術(shù)方案示意圖
CPU占用控制層面的研究分析表明,在Windows的運(yùn)行調(diào)度中,線程是基本單位,進(jìn)程的CPU占用實(shí)際上是所有線程的CPU占用之和。Windows對(duì)進(jìn)程的CPU占用量采取了百分比的表示方式,以下公式表示了在一個(gè)時(shí)間段內(nèi)進(jìn)程的CPU占用情況:
(內(nèi)核態(tài)時(shí)間 + 用戶(hù)態(tài)時(shí)間) / 時(shí)間段 / CPU數(shù)量
因此,要控制進(jìn)程的CPU占用,必須要減少內(nèi)核態(tài)和(或)用戶(hù)態(tài)的執(zhí)行時(shí)間,而要減少這些時(shí)間,標(biāo)準(zhǔn)的方法是調(diào)整線程優(yōu)先級(jí)。優(yōu)先級(jí)是線程調(diào)度的重要參數(shù),優(yōu)先級(jí)越低,線程越不容易被調(diào)度系統(tǒng)選中,占用的執(zhí)行時(shí)間自然就會(huì)減少。但是線程優(yōu)先級(jí)調(diào)整的控制效果是有限的,在很多情況下,即使最低的線程優(yōu)先級(jí)仍然占用大量的CPU時(shí)間,不能滿(mǎn)足實(shí)際的需要。應(yīng)用軟件CPU占用控制可行的技術(shù)方案是采用強(qiáng)制閃斷線程技術(shù),使指定進(jìn)程的所有線程定時(shí)產(chǎn)生一次閃斷,即在一個(gè)極短的瞬間暫停,然后迅速繼續(xù)執(zhí)行。該技術(shù)可以有效降低CPU占用,并能根據(jù)實(shí)際情況控制進(jìn)程的CPU占用率減少到可容許的范圍。根據(jù)試驗(yàn)數(shù)據(jù)(取樣時(shí)間60分鐘,CPU占用率控制目標(biāo)為25%),指定進(jìn)程CPU占用率控制誤差范圍在10%,如下表所示。
進(jìn)程名 用途 原始CPU平均占用率(取樣時(shí)間60分鐘) 設(shè)置為低優(yōu)先級(jí)后CPU平均占用率(取樣時(shí)間60分鐘) 強(qiáng)制線程閃斷后CPU平均占用率(取樣時(shí)間60分鐘) CPU控制誤差
AVScan.exe 病毒
掃描 53% 51% 27% 8%
Winrar.exe 文件
壓縮 38% 38% 26% 4%
FileManager.exe 文件
加密 47% 45% 27% 8%
Wireshark.exe 網(wǎng)絡(luò)
抓包 28% 27% 25% 0%
需要考慮的是,由于要不斷地控制目標(biāo)進(jìn)程的CPU占用,那么控制者本身也將占用一定的CPU,如何均衡二者的關(guān)系,會(huì)是該技術(shù)的一個(gè)難點(diǎn),需要在實(shí)現(xiàn)中觀察并獲取大量測(cè)試數(shù)據(jù)作為參考。
4結(jié)束語(yǔ)
本文提出了基于線程“白名單”防護(hù)技術(shù)和線程安全管控技術(shù)的線程級(jí)安全防護(hù)系統(tǒng),能夠?qū)?yīng)用軟件系統(tǒng)進(jìn)行加固,防止木馬程序利用遠(yuǎn)程線程注入技術(shù)對(duì)應(yīng)用軟件進(jìn)行破壞和竊密;對(duì)終端和服務(wù)器應(yīng)用軟件系統(tǒng)中各線程的運(yùn)行狀況進(jìn)行監(jiān)視,建立“主動(dòng)防御”的管控系統(tǒng),具備計(jì)算資源自保護(hù)、自恢復(fù)的能力,使系統(tǒng)可靠有效運(yùn)行,在實(shí)際應(yīng)用中有著較為理想的效果。此外,在對(duì)計(jì)算資源的控制時(shí),如何保證被控制軟件系統(tǒng)的正常工作和穩(wěn)定運(yùn)行,是下一步重點(diǎn)研究的內(nèi)容。
參考文獻(xiàn)
[1]王險(xiǎn)峰,劉寶宏.Windows環(huán)境下的多線程編譯原理與應(yīng)用[M].清華大學(xué)出版社,2002.
[2]張慧成,謝余強(qiáng),王華.一種并行調(diào)試與監(jiān)測(cè)分析軟件的體系結(jié)構(gòu)設(shè)計(jì)[J].計(jì)算機(jī)工程,2003,29(8):5-7.
[3]寇雅楠,李增智,王建國(guó).計(jì)算機(jī)軟件測(cè)試研究[J].計(jì)算機(jī)工程與應(yīng)用,2002,38(10):103-105.
[4]雷校勇,黃小平.Windows RootKit技術(shù)原理及防御策略[D].開(kāi)發(fā)研究與設(shè)計(jì)技術(shù),2007(12):428-429.
[5]GREG H,JAMES B.RootKit:Subverting the Windows kernel[D].Boston:Addison Wesley,2005.
endprint