專利名稱:獲取遠(yuǎn)程計算機信息的方法及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明實施例涉及計算機技術(shù),特別涉及一種獲取遠(yuǎn)程計算機信息的方 法及裝置。
背景技術(shù):
一些計算機病毒是利用操作系統(tǒng)漏洞、用戶空口令賬戶或弱口令賬戶對 遠(yuǎn)程計算機進(jìn)行攻擊的惡意代碼,這些病毒在局域網(wǎng)中感染和傳播迅速,難 于徹底清除。
現(xiàn)有的軟件防火墻能夠在遠(yuǎn)程計算機向本地計算機發(fā)出網(wǎng)絡(luò)連接請求或 發(fā)起攻擊時報警,軟件防火墻可以從遠(yuǎn)程計算機發(fā)出的請求包中獲取遠(yuǎn)程計 算機信息,但是軟件防火墻無法區(qū)分遠(yuǎn)程計算機發(fā)起的請求是正常訪問還是 網(wǎng)絡(luò)攻擊,因此,容易造成誤報警,甚至造成局域網(wǎng)中計算機無法正常通信 訪問。
現(xiàn)有的殺毒軟件當(dāng)遠(yuǎn)程計算機在本地計算機上生成惡意程序或者修改本 地計算機上的用戶程序時,能夠根據(jù)行為特征或者病毒特征碼發(fā)現(xiàn)病毒并報 警。該方法主要是在識別出病毒后對病毒加以清除,而無法獲知傳播病毒的 遠(yuǎn)程計算機信息,因此很難有效遏制病毒在局域網(wǎng)內(nèi)的傳播。
發(fā)明內(nèi)容
本發(fā)明實施例提供一種獲取遠(yuǎn)程計算機信息的方法及裝置,用以在監(jiān) 控到文件操作后區(qū)分正常文件操作和異常文件操作,并根據(jù)文件操作的函 數(shù)調(diào)用棧的參數(shù)來獲取遠(yuǎn)程計算機信息,實現(xiàn)發(fā)現(xiàn)病毒入侵后的第 一 時間 準(zhǔn)確報警及定位病毒來源,進(jìn)而可以實現(xiàn)對病毒的迅速攔截及對發(fā)起攻擊的遠(yuǎn)程計算機進(jìn)行維護(hù)。
一方面,本發(fā)明實施例提供一種獲取遠(yuǎn)程計算才幾信息的方法,該方法包
括
當(dāng)監(jiān)控到文件操作時,將所述文件操作分為正常文件操作或異常文件
操作;
若所述正常文件操作或所述異常文件操作屬于系統(tǒng)進(jìn)程,則判斷所述 正常文件操作或所述異常文件操作對應(yīng)的線程的起始地址是否位于所述系 統(tǒng)進(jìn)程中處理遠(yuǎn)程文件訪問的模塊內(nèi);
若所述起始地址位于所述處理遠(yuǎn)程文件訪問的模塊內(nèi),則根據(jù)所述正 常文件操作或所述異常文件操作的函數(shù)調(diào)用棧的參數(shù)獲取所述正常文件操 作或所述異常文件操作對應(yīng)的遠(yuǎn)程計算機信息。
另一方面,本發(fā)明實施例還提供一種獲取遠(yuǎn)程計算機信息的裝置,該裝
置包括
解析模塊,用于當(dāng)監(jiān)控到文件操作時,將所述文件操作分為正常文件
操作或異常文件操作;
判斷模塊,用于若所述正常文件操作或所述異常文件操作屬于系統(tǒng)進(jìn) 程,則判斷所述正常文件操作或所述異常文件操作對應(yīng)的線程的起始地址
是否位于所述系統(tǒng)進(jìn)程中處理遠(yuǎn)程文件訪問的模塊內(nèi);
處理模塊,用于若所述起始地址位于所述處理遠(yuǎn)程文件訪問的模塊內(nèi), 根據(jù)所述正常文件操作或所述異常文件操作的函數(shù)調(diào)用棧的參數(shù)獲取所述 正常文件操作或所述異常文件操作對應(yīng)的遠(yuǎn)程計算機信息。
本發(fā)明實施例提供的獲取遠(yuǎn)程計算機信息的方法及裝置,通過監(jiān)控到 文件操作后區(qū)分該操作是正常文件操作或異常文件操作,并根據(jù)該文件操 作對應(yīng)的函數(shù)調(diào)用參數(shù)獲取操作源信息,實現(xiàn)發(fā)現(xiàn)病毒入侵后的第 一 時間 準(zhǔn)確報警及對異常遠(yuǎn)程文件訪問的遠(yuǎn)程計算機定位,可以實現(xiàn)在病毒入侵 的第一時間定位病毒來源,實現(xiàn)對病毒的迅速攔截及對發(fā)起攻擊的遠(yuǎn)程計算機進(jìn)行維護(hù)。
圖1為本發(fā)明實施例提供的獲取遠(yuǎn)程計算機信息的方法第一實施例流程
圖2為本發(fā)明實施例提供的獲取遠(yuǎn)程計算機信息的方法第二實施例流程
圖3為本發(fā)明函數(shù)調(diào)用過程中內(nèi)存中的函數(shù)調(diào)用棧示意圖; 圖4為本發(fā)明實施例提供的獲取遠(yuǎn)程計算機信息的裝置第 一實施例結(jié)構(gòu) 示意圖5為本發(fā)明實施例提供的獲取遠(yuǎn)程計算機信息的裝置第二實施例結(jié)構(gòu) 示意圖。
具體實施例方式
下面通過附圖和實施例,對本發(fā)明的技術(shù)方案做進(jìn)一步的詳細(xì)描述。 圖1為本發(fā)明實施例提供的獲取遠(yuǎn)程計算機信息的方法第一實施例流程
圖,如圖1所示,該方法包括
步驟101、當(dāng)監(jiān)控到文件操作時,將文件操作分為正常文件操作或異
常文件操作;
Windows系統(tǒng)通過文件系統(tǒng)驅(qū)動(File System Driver;以下筒稱FSD ) 處理來自本地和遠(yuǎn)程的文件訪問。遠(yuǎn)程FSD分為客戶端FSD與月l務(wù)器端 FSD,客戶端FSD首先接收來自應(yīng)用程序的1/0請求,并將該請求轉(zhuǎn)換為 網(wǎng)絡(luò)文件系統(tǒng)協(xié)議命令,再通過網(wǎng)絡(luò)發(fā)送給服務(wù)器端FSD。服務(wù)器端FSD 監(jiān)聽網(wǎng)絡(luò)命令并接收網(wǎng)絡(luò)文件系統(tǒng)協(xié)議命令,通過向本地FSD發(fā)送I/O請 求來實現(xiàn)這些命令。
處理本地FSD的1/0請求時,文件系統(tǒng)過濾驅(qū)動可以實時監(jiān)控到是否有文件操作,并可以進(jìn)一 步區(qū)分文件操作為正常文件操作或異常文件操作, 異常文件操作可能為生成新的可執(zhí)行文件,修改可執(zhí)行文件內(nèi)容或者將可 執(zhí)行文件改名等操作,這些操作可以通過病毒的行為特征加以區(qū)分。
步驟102、若該正常文件操作或異常文件操作屬于系統(tǒng)進(jìn)程,則判斷 該正常文件操作或異常文件操作對應(yīng)的線程的起始地址是否位于系統(tǒng)進(jìn)程 中處理遠(yuǎn)程文件訪問的模塊內(nèi);
由于Windows系統(tǒng)本地處理遠(yuǎn)程文件訪問的FSD主要通過srv.sys模 塊進(jìn)行,當(dāng)有遠(yuǎn)程文件訪問時,系統(tǒng)會在系統(tǒng)進(jìn)程中啟動一個系統(tǒng)線程, 該系統(tǒng)線程的起始地址位于srv.sys模塊內(nèi)。因此,可以據(jù)此判斷某文件操 作的操作源是否為遠(yuǎn)程計算機。
首先判斷該正常文件操作或異常文件操作是否屬于系統(tǒng)進(jìn)程,可以根 據(jù)該文件操作當(dāng)前進(jìn)程的標(biāo)識(Identity;以下簡稱ID)進(jìn)行判斷。若該 文件操作發(fā)生在系統(tǒng)進(jìn)程中,則進(jìn)一 步判斷該文件操作的當(dāng)前線程的起始 地址是否位于系統(tǒng)進(jìn)程中加載的srv.sys模塊內(nèi),若是,則說明該操作的操 作源為遠(yuǎn)程計算機。
步驟103、若當(dāng)前線程起始地址位于處理遠(yuǎn)程文件訪問的模塊內(nèi),則 根據(jù)正常文件操作或異常文件操作的函數(shù)調(diào)用棧的參數(shù)獲取該正常文件操 作或異常文件操作對應(yīng)的遠(yuǎn)程計算機信息。
若該正常文件操作或異常文件操作對應(yīng)的當(dāng)前線程起始地址位于系 統(tǒng)進(jìn)程中加載的srv.sys模塊內(nèi),則該文件操作的操作源為遠(yuǎn)程計算機,由 于遠(yuǎn)程文件操作發(fā)生時,遠(yuǎn)程FSD在處理過程中,會將遠(yuǎn)程計算機信息作 為參數(shù)的一個成員在各層處理函數(shù)中傳遞,因此,可以通過解析函數(shù)調(diào)用 棧的參數(shù)獲取遠(yuǎn)程計算機信息,該信息為遠(yuǎn)程計算機的互聯(lián)網(wǎng)協(xié)議 (Internet Protocol;以下簡稱IP )地址或計算機名信息。若為異常文件 操作,則在獲取該異常文件操作對應(yīng)的遠(yuǎn)程計算機信息后,可直接對本次 異常文件操作進(jìn)行報警,也可以通知局域網(wǎng)管理員對該異常文件操作的遠(yuǎn)程計算機進(jìn)行管理或維護(hù)。這樣可以避免對正常文件操作的錯誤報警,并 且可以在發(fā)現(xiàn)病毒入侵的第 一時間內(nèi)準(zhǔn)確定位病毒來源。
而對于正常文件操作,獲取該遠(yuǎn)程計算機信息后,如果后續(xù)發(fā)現(xiàn)該正 常文件操作具有一定危險性或該正常文件操作會引發(fā)其他狀況,則可以對 該正常文件操作對應(yīng)的遠(yuǎn)程計算機進(jìn)行一些相應(yīng)處理。
本實施例通過監(jiān)控到文件操作后區(qū)分正常文件操作或異常文件操作, 若操作者為遠(yuǎn)程計算機,則根據(jù)文件操作對應(yīng)的函數(shù)調(diào)用參數(shù)獲取操作源 信息,實現(xiàn)了對異常遠(yuǎn)程文件訪問的準(zhǔn)確報警及對該異常文件操作的遠(yuǎn)程 計算機進(jìn)行定位,進(jìn)而可以在病毒入侵的第一時間定位病毒來源,實現(xiàn)對 病毒的迅速攔截及對病毒的來源進(jìn)行迅速維護(hù)。
圖2為本發(fā)明實施例提供的獲取遠(yuǎn)程計算機信息的方法第二實施例流程 圖,如圖2所示,該方法包括 步驟201、監(jiān)控到文件操作;
步驟202、將該文件操作分為正常文件操作或異常文件操作;
步驟203、判斷該正常文件操作或異常文件操作對應(yīng)的當(dāng)前進(jìn)程是否 屬于系統(tǒng)進(jìn)程;是則執(zhí)行步驟204,否則程序不再執(zhí)行;
步驟204、判斷是否已經(jīng)獲取系統(tǒng)進(jìn)程中處理遠(yuǎn)程文件訪問的模塊的 起始地址及容量信息;是則執(zhí)行步驟206,否則執(zhí)行步驟205;
步驟205、獲取處理遠(yuǎn)程文件訪問的模塊的起始地址及容量信息;
步驟206、判斷該正常文件操作或異常文件操作對應(yīng)的線程起始地址 是否位于系統(tǒng)進(jìn)程中處理遠(yuǎn)程文件訪問的模塊內(nèi);是則執(zhí)行步驟208,否 則程序不再執(zhí)行;
步驟207、獲取當(dāng)前函數(shù)調(diào)用棧的棧幀及返回地址;
步驟208、判斷該返回地址是否在處理遠(yuǎn)程文件訪問的模塊內(nèi);是則 執(zhí)行步驟210,否則執(zhí)行步驟209;
步驟209、讀取堆棧,獲取上一層函數(shù)調(diào)用棧的棧幀及返回地址,并執(zhí)行步驟208;
步驟210、根據(jù)棧幀獲取當(dāng)前函數(shù)調(diào)用棧的調(diào)用參數(shù);
步驟211、判斷調(diào)用參數(shù)是否有效;是則執(zhí)行步驟214,否則執(zhí)行步驟212;
步驟212、判斷調(diào)用參數(shù)是否已經(jīng)到達(dá)預(yù)設(shè)個數(shù),是則執(zhí)行步驟209, 否則執(zhí)行步驟213;
步驟213、獲取下一個調(diào)用參數(shù),并執(zhí)行步驟210;
步驟214、判斷調(diào)用參數(shù)指向內(nèi)存塊的兩個固定偏移位置所存儲的數(shù) 據(jù)是否相等,是則執(zhí)行步驟215,否則執(zhí)行步驟212;
步驟215、判斷固定偏移位置存儲的數(shù)據(jù)所指向的數(shù)據(jù)類型是否對應(yīng) 同一有效內(nèi)存;是則執(zhí)行步驟216,否則執(zhí)行步驟212;
步驟216、判斷有效內(nèi)存存儲的第一個雙字內(nèi)容是否為SMB數(shù)據(jù)包標(biāo) 識,是則執(zhí)行步驟217,否則執(zhí)行步驟212;
步驟217、根據(jù)調(diào)用參數(shù)指向的內(nèi)存塊固定偏移位置獲取遠(yuǎn)程計算機 信息;
步驟218、若為正常文件操作,則對正常文件操作及對應(yīng)的遠(yuǎn)程計算 機信息進(jìn)行記錄;若為異常文件操作,則產(chǎn)生報警信號。
其中,首先需要獲取處理遠(yuǎn)程文件訪問的模塊,即系統(tǒng)當(dāng)前加載的 srv.sys模塊的起始地址和容量信息,因此可以獲得srv.sys模塊的結(jié)束地址, 則可以據(jù)此判斷監(jiān)控到的正常文件操作或異常文件操作對應(yīng)的線程起始地 址是否在srv.sys模塊內(nèi)。若該操作發(fā)生在系統(tǒng)進(jìn)程中且線程的起始地址位 于srv.sys模塊內(nèi),則該正常文件操作或異常文件操作的操作源為遠(yuǎn)程計算 機。根據(jù)C語言的調(diào)用規(guī)則,所有參數(shù)入棧后,在函數(shù)調(diào)用前,會將調(diào)用 返回地址入棧,在被調(diào)用函數(shù)入口處,會將當(dāng)前棧幀入棧,參見圖3,圖3 為本發(fā)明函數(shù)調(diào)用過程中內(nèi)存中的函數(shù)調(diào)用棧示意圖??梢垣@取當(dāng)前函數(shù) 調(diào)用棧的棧幀及返回地址,并進(jìn)一 步獲取函數(shù)調(diào)用關(guān)系和每層函數(shù)調(diào)用的 調(diào)用參數(shù),可以對每層函數(shù)調(diào)用的調(diào)用參數(shù)依次進(jìn)行判斷,在每一層中,通常可以選取前三個調(diào)用參數(shù)進(jìn)行判斷。根據(jù)遠(yuǎn)程FSD調(diào)用規(guī)則,當(dāng)某一 層中出現(xiàn)選取的調(diào)用參數(shù)為數(shù)據(jù)結(jié)構(gòu)指針時,首先判斷該調(diào)用參數(shù)是否有 效,即該參數(shù)指向的內(nèi)存是否可以讀取,若該調(diào)用參數(shù)有效,則進(jìn)一步判 斷該調(diào)用參數(shù)是否符合遠(yuǎn)程訪問傳遞的數(shù)據(jù)結(jié)構(gòu)類型,判斷方法為首先 判斷調(diào)用參數(shù)指向的內(nèi)存塊兩個偏移位置所存儲的數(shù)據(jù)是否相等;若相等 則繼續(xù)判斷固定偏移位置存儲的數(shù)據(jù)所指向的數(shù)據(jù)類型是否對應(yīng)同一有效 內(nèi)存,若是則再判斷該有效內(nèi)存存儲的第一個雙字內(nèi)容為遠(yuǎn)程過程調(diào)用協(xié) 議(Server Message Block;以下簡稱SMB)數(shù)據(jù)包標(biāo)識。若是,則該調(diào) 用參數(shù)即為存儲有遠(yuǎn)程計算機信息的數(shù)據(jù)結(jié)構(gòu),則該調(diào)用指向內(nèi)存塊中的 一固定偏移位置中存儲有遠(yuǎn)程計算機信息。其中,內(nèi)存塊的偏移位置在不 同操作系統(tǒng)上有一定差異,但對每個操作系統(tǒng)而言該偏移位置是確定的。 該偏移位置對應(yīng)的內(nèi)存中存儲有文件操作的遠(yuǎn)程計算機信息,該信息可能 為IP地址信息、計算機名或其他相關(guān)信息,其中,計算機名保存為一個最 大長度為16字節(jié)的字符串。在找到符合上述條件的調(diào)用參數(shù)后便可以返回 遠(yuǎn)程計算機的信息。
若為異常文件操作,則在獲取該異常文件操作對應(yīng)的遠(yuǎn)程計算機信息 后,可直接對本次異常文件操作進(jìn)行報警,也可以通知局域網(wǎng)管理員對該 異常文件操作的遠(yuǎn)程計算機進(jìn)行管理或維護(hù)。這樣可以避免對正常文件操 作的錯誤報警,并且可以在發(fā)現(xiàn)病毒入侵的第一時間內(nèi)準(zhǔn)確定位病毒來源。
對于正常文件操作,獲取該遠(yuǎn)程計算機信息后,還可以對該正常文件 操作及其對應(yīng)的遠(yuǎn)程計算機信息進(jìn)行記錄,以便后續(xù)發(fā)現(xiàn)該正常文件操作 具有一定危險性或該正常文件操作會引發(fā)其他狀況時,可以對該正常文件 操作對應(yīng)的遠(yuǎn)程計算機進(jìn)行一些相應(yīng)處理。
本實施例通過監(jiān)控到文件操作之后將該文件操作分為正常文件操作或 異常文件操作,若該文件搡作的操作者為遠(yuǎn)程計算機,則根據(jù)文件操作對 應(yīng)的函數(shù)調(diào)用參數(shù)獲取遠(yuǎn)程計算機信息,實現(xiàn)了對異常遠(yuǎn)程文件訪問的準(zhǔn)確報警及對該異常文件操作的遠(yuǎn)程計算機進(jìn)行定位,進(jìn)而可以實現(xiàn)對病毒 的迅速攔截及對病毒來源的管理,通過對正常文件操作進(jìn)行記錄,實現(xiàn)當(dāng) 后續(xù)發(fā)現(xiàn)該正常文件搡作具有一定危險性等情況時,可以對對應(yīng)的操作源 進(jìn)行維護(hù)或管理。
本領(lǐng)域普通技術(shù)人員可以理解實現(xiàn)上述方法實施例的全部或部分步 驟可以通過程序指令相關(guān)的硬件來完成,前述的程序可以存儲于一計算機 可讀取存儲介質(zhì)中,該程序在執(zhí)行時,執(zhí)行包括上述方法實施例的步驟; 而前述的存儲介質(zhì)包括ROM、 RAM、》茲碟或者光盤等各種可以存儲程序 代碼的介質(zhì)。
圖4為本發(fā)明實施例提供的獲取遠(yuǎn)程計算機信息的裝置第一實施例結(jié)構(gòu) 示意圖,如圖4所示,該裝置包括解析模塊l、判斷模塊2和處理模塊3;其 中,解析模塊l用于當(dāng)監(jiān)控到文件操作時,將文件操作分為正常文件操作或 異常文件操作;判斷模塊2用于若該正常文件操作或異常文件操作屬于系 統(tǒng)進(jìn)程,則判斷該正常文件操作或異常文件操作對應(yīng)的線程起始地址是否 位于系統(tǒng)進(jìn)程中處理遠(yuǎn)程文件訪問的模塊內(nèi);處理模塊3用于若線程起始 地址位于處理遠(yuǎn)程文件訪問的模塊內(nèi),根據(jù)該正常文件操作或異常文件操 作的函數(shù)調(diào)用棧的參數(shù)獲取操作對應(yīng)的遠(yuǎn)程計算機信息。
由于Windows系統(tǒng)本地處理遠(yuǎn)程文件訪問的FSD主要通過srv.sys模 塊進(jìn)行,即系統(tǒng)進(jìn)程中處理遠(yuǎn)程文件訪問的模塊為srv.sys模塊。當(dāng)有遠(yuǎn)程 文件訪問時,系統(tǒng)會在系統(tǒng)線程中啟動一個系統(tǒng)線程,該系統(tǒng)線程的起始 地址位于srv.sys模塊內(nèi)。因此,可以據(jù)此判斷某文件操作的操作源是否為 遠(yuǎn)程計算機。
處理本地FSD的1/0請求時,文件過濾驅(qū)動可以實時監(jiān)控文件操作, 解析模塊1可以解析出這些文件操作為正常文件操作或異常文件操作,異 常文件操作可能為生成新的可執(zhí)行文件,修改可執(zhí)行文件內(nèi)容或者將可執(zhí) 行文件改名等。判斷模塊2首先判斷該文件操作是否屬于系統(tǒng)進(jìn)程,可以根據(jù)當(dāng)前進(jìn)程的標(biāo)識(Identity;以下簡稱ID)進(jìn)行判斷。若該操作發(fā)生 在系統(tǒng)進(jìn)程中,則判斷模塊2進(jìn)一步判斷該操作對應(yīng)的當(dāng)前線程的起始地 址是否位于系統(tǒng)進(jìn)程中加載的srv.sys模塊內(nèi),若是,則說明該操作的操作 源為遠(yuǎn)程計算機。
若該操作對應(yīng)的當(dāng)前線程起始地址位于系統(tǒng)進(jìn)程中加載的srv.sys模 塊內(nèi),則該操作的操作源為遠(yuǎn)程計算機,由于遠(yuǎn)程文件操作發(fā)生時,遠(yuǎn)程 FSD在處理過程中,會將遠(yuǎn)程計算機信息作為參數(shù)的一個成員在各層處理 函數(shù)中傳遞,因此,可以通過處理模塊3解析函數(shù)調(diào)用棧的參數(shù)獲取遠(yuǎn)程 計算機信息,該信息為遠(yuǎn)程計算機的互聯(lián)網(wǎng)協(xié)議(Internet Protocol;以下 簡稱IP)地址或計算機名信息。
獲取到遠(yuǎn)程計算機信息后,若文件操作為異常文件操作,則可以直接 對本次文件操作進(jìn)行報警,并通知局域網(wǎng)管理員對該異常文件操作的操作 源進(jìn)行維護(hù)。
本實施例實現(xiàn)了對文件操作源的定位,能夠獲取進(jìn)行遠(yuǎn)程文件操作的 遠(yuǎn)程計算機的信息,進(jìn)而可以在病毒入侵的第 一 時間進(jìn)行準(zhǔn)確報警并定位 遠(yuǎn)程計算機,進(jìn)而可以實現(xiàn)對病毒的迅速攔截及對病毒來源進(jìn)行清除。
圖5為本發(fā)明實施例提供的獲取遠(yuǎn)程計算機信息的裝置第二實施例結(jié)構(gòu) 示意圖,如圖5所示,該裝置包括解析模塊l、判斷模塊2和處理模塊3;還 可以包括獲取模塊4、記錄模塊5和報警模塊6;獲取模塊4用于獲取系統(tǒng)進(jìn) 程中處理遠(yuǎn)程文件訪問的模塊的起始地址及容量信息;記錄模塊5用于若 文件操作為正常文件操作,則對正常文件操作及對應(yīng)的遠(yuǎn)程計算機信息進(jìn) 行記錄;報警模塊6用于若文件操作為異常文件操作,則產(chǎn)生報警信號。 進(jìn)一步地,判斷模塊2可以包括第一判斷模塊21和第二判斷模塊22;第 一判斷模塊21用于判斷該正常文件操作或異常文件操作是否屬于系統(tǒng)進(jìn) 程;第二判斷模塊22用于判斷該正常文件操作或異常文件操作對應(yīng)的線程 的起始地址是否位于系統(tǒng)進(jìn)程中處理遠(yuǎn)程文件訪問的模塊內(nèi);處理模塊3還可以包括第一獲取子模塊31、第一判斷子模塊32、第二獲取子模塊33、 第二判斷子模塊34、第三判斷子模塊35和處理子模塊36;其中,第一獲 取子模塊31用于獲取當(dāng)前函數(shù)調(diào)用?;蛏弦粚雍瘮?shù)調(diào)用棧的棧幀及返回 地址;第一判斷子模塊32用于判斷當(dāng)前函數(shù)調(diào)用?;蛏弦粚雍瘮?shù)調(diào)用棧的 返回地址是否在處理遠(yuǎn)程文件訪問的模塊內(nèi);第二獲取子模塊33用于若當(dāng) 前函數(shù)調(diào)用棧或上一層函數(shù)調(diào)用棧返回地址在處理遠(yuǎn)程文件訪問的模塊 內(nèi),根據(jù)當(dāng)前函數(shù)調(diào)用?;蛏弦粚雍瘮?shù)調(diào)用棧棧幀獲取當(dāng)前函數(shù)調(diào)用?;?上一層函數(shù)調(diào)用棧的至少一個調(diào)用參數(shù);第二判斷子模塊34用于判斷當(dāng)前 函數(shù)調(diào)用?;蛏弦粚雍瘮?shù)調(diào)用棧的至少一個調(diào)用參數(shù)是否為數(shù)據(jù)結(jié)構(gòu)指針 以及是否有效;第三判斷子模塊35用于若當(dāng)前函數(shù)調(diào)用?;蛏弦粚雍瘮?shù)調(diào) 用棧至少一個調(diào)用參數(shù)為數(shù)據(jù)結(jié)構(gòu)指針且有效,判斷當(dāng)前函數(shù)調(diào)用?;蛏?一層函數(shù)調(diào)用棧至少一個調(diào)用參數(shù)是否符合遠(yuǎn)程訪問傳遞的數(shù)據(jù)結(jié)構(gòu)類 型;處理子模塊36用于若當(dāng)前函數(shù)調(diào)用?;蛏弦粚雍瘮?shù)調(diào)用棧至少一個調(diào) 用參數(shù)符合遠(yuǎn)程訪問傳遞的數(shù)據(jù)結(jié)構(gòu)類型,根據(jù)當(dāng)前函數(shù)調(diào)用?;蛏弦粚?函數(shù)調(diào)用棧至少一個調(diào)用參數(shù)指向的內(nèi)存塊偏移位置獲取遠(yuǎn)程計算機信 息;控制子模塊37,用于若當(dāng)前函數(shù)調(diào)用?;蛏弦粚雍瘮?shù)調(diào)用棧的至少一 個調(diào)用參數(shù)無效,或當(dāng)前函數(shù)調(diào)用?;蛏弦粚雍瘮?shù)調(diào)用棧的至少一個調(diào)用 參數(shù)不是數(shù)據(jù)結(jié)構(gòu)指針,或當(dāng)前函數(shù)調(diào)用棧或上一層函數(shù)調(diào)用棧的至少一 個調(diào)用參數(shù)不符合數(shù)據(jù)結(jié)構(gòu)類型時,控制第一獲取子模塊31獲取上一層函 數(shù)調(diào)用棧的棧幀及返回地址。
首先,可以通過獲取模塊4獲得srv.sys模塊的起始地址及容量信息, 進(jìn)而得出srv.sys模塊的結(jié)束地址,當(dāng)解析模塊1解析出監(jiān)控到的文件操作 為正常文件操作或異常文件操作時,第一判斷模塊21判斷該操作是否屬于 系統(tǒng)進(jìn)程,笫二判斷模塊22則根據(jù)srv.sys模塊的起始地址和結(jié)束地址判 斷該文件操作對應(yīng)的線程的起始地址是否在srv.sys模塊內(nèi)。若該文件操作 發(fā)生在系統(tǒng)進(jìn)程中且線程的起始地址位于srv.sys模塊內(nèi),則該文件操作的操作源為遠(yuǎn)程計算機。根據(jù)c語言的調(diào)用規(guī)則,所有參數(shù)入棧后,在函數(shù) 調(diào)用前,會將調(diào)用返回地址入棧,在被調(diào)用函數(shù)入口處,會將當(dāng)前棧幀入
棧,參見圖3??梢酝ㄟ^第一獲取子模塊31獲取當(dāng)前函數(shù)調(diào)用棧的棧幀及 返回地址,通過第一判斷子模塊32判斷返回地址是否在srv.sys模塊內(nèi), 若在,則第二獲取子模塊33根據(jù)棧幀獲取當(dāng)前函數(shù)調(diào)用棧的調(diào)用參數(shù),對 于每層的函數(shù),可以選取前三個調(diào)用參數(shù)進(jìn)行判斷。根據(jù)遠(yuǎn)程FSD調(diào)用規(guī) 則,在某層調(diào)用中,第二判斷子模塊34判斷出該層的某個調(diào)用參數(shù)是數(shù)據(jù) 結(jié)構(gòu)指針且有效,則第三判斷子模塊35進(jìn)一步判斷該調(diào)用參數(shù)是否符合遠(yuǎn) 程訪問傳遞的數(shù)據(jù)結(jié)構(gòu)類型,判斷方法為首先判斷調(diào)用參數(shù)對應(yīng)指向的 內(nèi)存塊的兩個固定偏移位置所存儲的數(shù)據(jù)是否相等;其中,固定偏移位置 對于各個操作系統(tǒng)有所不同,但對每個操作系統(tǒng)而言是確定的。若兩個固 定偏移位置所存儲的數(shù)據(jù)相等則繼續(xù)判斷固定偏移位置存儲的數(shù)據(jù)所指向 的數(shù)據(jù)類型是否對應(yīng)同一有效內(nèi)存,若是則進(jìn)一步判斷該有效內(nèi)存存儲的 第一個雙字內(nèi)容為遠(yuǎn)程過程調(diào)用協(xié)議(Server Message Block;以下簡稱 SMB)數(shù)據(jù)包標(biāo)識。如果調(diào)用參數(shù)符合上述條件,則該調(diào)用參數(shù)即為存儲 有遠(yuǎn)程計算機信息的數(shù)據(jù)結(jié)構(gòu),該固定偏移位置存儲有文件操作的遠(yuǎn)程計 算機信息,該信息可能為IP地址信息、計算機名或其他相關(guān)信息,可以通 過處理子模塊36根據(jù)調(diào)用參數(shù)對應(yīng)的數(shù)據(jù)結(jié)構(gòu)指針指向的內(nèi)存塊偏移處 獲取操作源信息。若在當(dāng)前函數(shù)調(diào)用棧的調(diào)用參數(shù)均不符合上述條件,則 通過控制子模塊37控制第一獲取子模塊31獲取上一層函數(shù)調(diào)用棧的棧幀 和返回地址后,再對該層的調(diào)用參數(shù)進(jìn)行上述判斷,這樣可以依次對每層 的調(diào)用參數(shù)進(jìn)行判斷,每層的調(diào)用參數(shù)可以選取三個,當(dāng)然也可以根據(jù)需 要選取多個調(diào)用參數(shù),直到找到符合上述條件的調(diào)用參數(shù)為止。在獲得遠(yuǎn) 程計算機的信息后,若文件操作為正常文件操作,則可以采用記錄模塊5 對該正常文件操作及對應(yīng)的遠(yuǎn)程計算機信息進(jìn)行記錄,以便在后續(xù)發(fā)現(xiàn)該 正常文件操作存在一定危險性等情況時,對該操作對應(yīng)的操作源進(jìn)行維護(hù)或管理。而對于異常文件操作,則可以通過報警模塊6產(chǎn)生報警信號,以 通知用戶對該異常文件操作對應(yīng)的遠(yuǎn)程計算才幾進(jìn)行維護(hù)或管理。
本實施例實現(xiàn)了對文件操作源的定位,能夠獲取進(jìn)行遠(yuǎn)程文件操作的 遠(yuǎn)程計算機的信息,進(jìn)而可以在病毒入侵的第一時間進(jìn)行準(zhǔn)確報警并對病 毒來源進(jìn)行定位,進(jìn)而可以實現(xiàn)對病毒的迅速攔截及對病毒來源進(jìn)行管理 和維護(hù)。
最后應(yīng)說明的是以上實施例僅用以說明本發(fā)明的技術(shù)方案,而非對 其限制;盡管參照前述實施例對本發(fā)明進(jìn)行了詳細(xì)的說明,本領(lǐng)域的普通 技術(shù)人員應(yīng)當(dāng)理解其依然可以對前述各實施例所記載的技術(shù)方案進(jìn)行修 改,或者對其中部分技術(shù)特征進(jìn)行等同替換;而這些修改或者替換,并不 使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實施例技術(shù)方案的精神和范圍。
權(quán)利要求
1、一種獲取遠(yuǎn)程計算機信息的方法,其特征在于,包括當(dāng)監(jiān)控到文件操作時,將所述文件操作分為正常文件操作或異常文件操作;若所述正常文件操作或所述異常文件操作屬于系統(tǒng)進(jìn)程,則判斷所述正常文件操作或所述異常文件操作對應(yīng)的線程的起始地址是否位于所述系統(tǒng)進(jìn)程中處理遠(yuǎn)程文件訪問的模塊內(nèi);若所述起始地址位于所述處理遠(yuǎn)程文件訪問的模塊內(nèi),則根據(jù)所述正常文件操作或所述異常文件操作的函數(shù)調(diào)用棧的參數(shù)獲取所述正常文件操作或所述異常文件操作對應(yīng)的遠(yuǎn)程計算機信息。
2、 根據(jù)權(quán)利要求1所述的獲取遠(yuǎn)程計算機信息的方法,其特征在于, 還包括若所述文件操作為正常文件操作,則對所述正常文件操作及對應(yīng)的遠(yuǎn) 程計算機信息進(jìn)行記錄;若所述文件操作為異常文件操作,則產(chǎn)生報警信 號。
3、 根據(jù)權(quán)利要求1或2所述的獲取遠(yuǎn)程計算機信息的方法,其特征在 于,所述將所述文件操作分為正常文件操作或異常文件操作包括根據(jù)所述文件操作的行為特征將所述文件操作分為正常文件操作或異 常文件操作;或根據(jù)所述文件操作對應(yīng)的文件特征碼將所述文件操作分為正常文件操 作或異常文件操作。
4、 根據(jù)權(quán)利要求1所述的獲取遠(yuǎn)程計算機信息的方法,其特征在于, 所述判斷所述正常文件操作或所述異常文件操作對應(yīng)的線程的起始地址是 否位于所述系統(tǒng)進(jìn)程中處理遠(yuǎn)程文件訪問的模塊內(nèi)之前還包括獲取所述系統(tǒng)進(jìn)程中處理遠(yuǎn)程文件訪問的模塊的起始地址及容量信自
5、 根據(jù)權(quán)利要求1所述的獲取遠(yuǎn)程計算機信息的方法,其特征在于, 所述根據(jù)所述正常文件操作或所述異常文件操作的函數(shù)調(diào)用棧的參數(shù)獲取 所述正常文件操作或所述異常文件操作對應(yīng)的遠(yuǎn)程計算機信息包括a、 獲取當(dāng)前函數(shù)調(diào)用棧的棧幀及返回地址;b、 若所述當(dāng)前函數(shù)調(diào)用棧的返回地址在所述處理遠(yuǎn)程文件訪問的模塊 內(nèi),則根據(jù)所述當(dāng)前函數(shù)調(diào)用棧的棧幀獲取所述當(dāng)前函數(shù)調(diào)用棧的至少一 個調(diào)用參數(shù);c、 若所述當(dāng)前函數(shù)調(diào)用棧的至少一個調(diào)用參數(shù)為有效的數(shù)據(jù)結(jié)構(gòu)指 針,則判斷所述當(dāng)前函數(shù)調(diào)用棧的至少 一個調(diào)用參數(shù)是否符合遠(yuǎn)程訪問傳 遞的數(shù)據(jù)結(jié)構(gòu)類型;d、 若所述當(dāng)前函數(shù)調(diào)用棧的至少一個調(diào)用參數(shù)符合所述數(shù)據(jù)結(jié)構(gòu)類 型,則根據(jù)所述當(dāng)前函數(shù)調(diào)用棧的至少一個調(diào)用參數(shù)指向的內(nèi)存塊固定偏 移位置獲取所述異常文件操作對應(yīng)的遠(yuǎn)程計算機信息。
6、 根據(jù)權(quán)利要求5所述的獲取遠(yuǎn)程計算機信息的方法,其特征在于, 所述判斷所述當(dāng)前函數(shù)調(diào)用棧的至少一個調(diào)用參數(shù)是否符合遠(yuǎn)程訪問傳遞 的數(shù)據(jù)結(jié)構(gòu)類型包括判斷所述當(dāng)前函數(shù)調(diào)用棧的至少一個調(diào)用參數(shù)指向的內(nèi)存塊的兩個固 定偏移位置存儲的數(shù)據(jù)是否相等;若相等,則判斷所述固定偏移位置存儲的數(shù)據(jù)所指向的數(shù)據(jù)類型是否 3于應(yīng)同一有歲文內(nèi)存;若是,則判斷所述有效內(nèi)存存儲的第一個雙字內(nèi)容是否為遠(yuǎn)程過程調(diào) 用協(xié)議數(shù)據(jù)包標(biāo)識。
7、 根據(jù)權(quán)利要求5所述的獲取遠(yuǎn)程計算機信息的方法,其特征在于, 若所述當(dāng)前函數(shù)調(diào)用棧的至少一個調(diào)用參數(shù)無效,或所述當(dāng)前函數(shù)調(diào)用棧的至少一個調(diào)用參數(shù)不是數(shù)據(jù)結(jié)構(gòu)指針,或若所述至少一個調(diào)用參數(shù) 不符合所述數(shù)據(jù)結(jié)構(gòu)類型,則執(zhí)行a,、獲取上一層函數(shù)調(diào)用棧的棧幀及返回地址;b,、若所述上一層函數(shù)調(diào)用棧的返回地址在所述處理遠(yuǎn)程文件訪問的 模塊內(nèi),則根據(jù)所述上一層函數(shù)調(diào)用棧的棧幀獲取所述上一層函數(shù)調(diào)用棧 的至少一個調(diào)用參數(shù);c,、若所述上一層函數(shù)調(diào)用棧的至少一個調(diào)用參數(shù)為有效的數(shù)據(jù)結(jié)構(gòu) 指針,則判斷所述上一層函數(shù)調(diào)用棧的至少一個調(diào)用參數(shù)是否符合遠(yuǎn)程訪 問傳遞的數(shù)據(jù)結(jié)構(gòu)類型;若所述上一層函數(shù)調(diào)用棧的至少一個調(diào)用參數(shù)無 效或所述上一層函數(shù)調(diào)用棧的至少一個調(diào)用參數(shù)不是數(shù)據(jù)結(jié)構(gòu)指針,則返 回a,;d,、若所述上一層函數(shù)調(diào)用棧的至少一個調(diào)用參數(shù)符合所述數(shù)據(jù)結(jié)構(gòu) 類型,則根據(jù)所述上一層函數(shù)調(diào)用棧的至少 一個調(diào)用參數(shù)指向的內(nèi)存塊固定偏移位置獲取所述異常文件操作對應(yīng)的遠(yuǎn)程計算機信息;若所述上一層函數(shù)調(diào)用棧的至少一個調(diào)用參數(shù)不符合所述數(shù)據(jù)結(jié)構(gòu)類型,則返回a,。
8、 根據(jù)權(quán)利要求7所述的獲取遠(yuǎn)程計算機信息的方法,其特征在于, 所述判斷所述上一層函數(shù)調(diào)用棧的至少 一個調(diào)用參數(shù)是否符合遠(yuǎn)程訪問傳 遞的數(shù)據(jù)結(jié)構(gòu)類型包括判斷所述上一層函數(shù)調(diào)用棧的至少 一個調(diào)用參數(shù)指向的內(nèi)存塊的兩個 固定偏移位置存儲的數(shù)據(jù)是否相等;若相等,則判斷所述固定偏移位置存儲的數(shù)據(jù)所指向的數(shù)據(jù)類型是否 對應(yīng)同一有效內(nèi)存;若是,則判斷所述有效內(nèi)存存儲的第 一個雙字內(nèi)容是否為遠(yuǎn)程過程調(diào) 用協(xié)議數(shù)據(jù)包標(biāo)識。
9、 一種獲取遠(yuǎn)程計算機信息的裝置,其特征在于,包括 解析模塊,用于當(dāng)監(jiān)控到文件操作時,將所述文件操作分為正常文件操作或異常文件操作;判斷模塊,用于若所述正常文件操作或所述異常文件操作屬于系統(tǒng)進(jìn)程,則判斷所述正常文件操作或所述異常文件操作對應(yīng)的線程的起始地址是否位于所述系統(tǒng)進(jìn)程中處理遠(yuǎn)程文件訪問的模塊內(nèi);處理模塊,用于若所述起始地址位于所述處理遠(yuǎn)程文件訪問的模塊內(nèi), 根據(jù)所述正常文件操作或所述異常文件操作的函數(shù)調(diào)用棧的參數(shù)獲取所述 正常文件操作或所述異常文件操作對應(yīng)的遠(yuǎn)程計算機信息。
10、 根據(jù)權(quán)利要求9所述的獲取遠(yuǎn)程計算機信息的裝置,其特征在于, 還包括記錄模塊,用于若所述文件操作為正常文件操作,則對所述正常文件 操作及對應(yīng)的遠(yuǎn)程計算機信息進(jìn)行記錄。
11、 根據(jù)權(quán)利要求9所述的獲取遠(yuǎn)程計算機信息的裝置,其特征在于, 還包括報警模塊,用于若所述文件操作為異常文件操作,則產(chǎn)生報警信號。
12、 根據(jù)權(quán)利要求9或IO所述的獲取遠(yuǎn)程計算機信息的裝置,其特征 在于,所述判斷模塊包括第 一判斷模塊,用于判斷所述正常文件操作或所述異常文件操作是否 屬于系統(tǒng)進(jìn)程;第二判斷模塊,用于判斷所述正常文件操作或所述異常文件操作對應(yīng) 的線程的起始地址是否位于所述系統(tǒng)進(jìn)程中處理遠(yuǎn)程文件訪問的模塊內(nèi)。
13、 根據(jù)權(quán)利要求9或IO所述的獲取遠(yuǎn)程計算機信息的裝置,其特征 在于,還包括獲取模塊,用于獲取所述系統(tǒng)進(jìn)程中處理遠(yuǎn)程文件訪問的模塊的起始 地址及容量信息。
14、 根據(jù)權(quán)利要求9或IO所述的獲取遠(yuǎn)程計算機信息的裝置,其特征 在于,所述處理模塊包括第一獲取子模塊,用于獲取當(dāng)前函數(shù)調(diào)用?;蛏弦粚雍瘮?shù)調(diào)用棧的棧 幀及返回i也址;第 一判斷子模塊,用于判斷所述當(dāng)前函數(shù)調(diào)用棧或所述上一層函數(shù)調(diào)用棧的返回地址是否在所述處理遠(yuǎn)程文件訪問的模塊內(nèi);第二獲取子模塊,用于若所述當(dāng)前函數(shù)調(diào)用棧或所述上一層函數(shù)調(diào)用 棧的返回地址在所述處理遠(yuǎn)程文件訪問的模塊內(nèi),根據(jù)所述當(dāng)前函數(shù)調(diào)用 棧或所述上一層函數(shù)調(diào)用棧棧幀獲取所述當(dāng)前函數(shù)調(diào)用?;蛩錾弦粚雍瘮?shù)調(diào)用棧的至少一個調(diào)用參數(shù);第二判斷子模塊,用于判斷所述當(dāng)前函數(shù)調(diào)用棧或所述上一層函數(shù)調(diào)用棧的至少一個調(diào)用參數(shù)是否為數(shù)據(jù)結(jié)構(gòu)指針以及是否有效;第三判斷子模塊,用于若所述當(dāng)前函數(shù)調(diào)用棧或所述上一層函數(shù)調(diào)用 棧的至少一個調(diào)用參數(shù)為數(shù)據(jù)結(jié)構(gòu)指針且有效,判斷所述當(dāng)前函數(shù)調(diào)用棧 或所述上 一層函數(shù)調(diào)用棧的至少 一 個調(diào)用參數(shù)是否符合遠(yuǎn)程訪問傳遞的數(shù) 據(jù)結(jié)構(gòu)類型;處理子模塊,用于若所述當(dāng)前函數(shù)調(diào)用棧或所述上一層函數(shù)調(diào)用棧的 至少 一 個調(diào)用參數(shù)符合遠(yuǎn)程訪問傳遞的數(shù)據(jù)結(jié)構(gòu)類型,根據(jù)所述當(dāng)前函數(shù) 調(diào)用?;蛩錾弦粚雍瘮?shù)調(diào)用棧的至少一個調(diào)用參數(shù)指向的內(nèi)存塊固定偏 移位置獲取所述操作對應(yīng)的遠(yuǎn)程計算機信息;控制子模塊,用于若所述當(dāng)前函數(shù)調(diào)用?;蛩錾弦粚雍瘮?shù)調(diào)用棧的 至少一個調(diào)用參數(shù)無效,或所述當(dāng)前函數(shù)調(diào)用棧或所述上一層函數(shù)調(diào)用棧 的至少一個調(diào)用參數(shù)不是數(shù)據(jù)結(jié)構(gòu)指針,或所述當(dāng)前函數(shù)調(diào)用?;蛩錾?一層函數(shù)調(diào)用棧的至少一個調(diào)用參數(shù)不符合所述數(shù)據(jù)結(jié)構(gòu)類型,則控制所 述第一獲取子模塊獲取所述上一層函數(shù)調(diào)用棧的棧幀及返回地址。
全文摘要
本發(fā)明實施例提供一種獲取遠(yuǎn)程計算機信息的方法及裝置。該方法包括當(dāng)監(jiān)控到文件操作時,將文件操作分為正常文件操作或異常文件操作;若正常文件操作或異常文件操作屬于系統(tǒng)進(jìn)程,則判斷該正常文件操作或異常文件操作對應(yīng)的線程的起始地址是否位于系統(tǒng)進(jìn)程中處理遠(yuǎn)程文件訪問的模塊內(nèi);若起始地址位于處理遠(yuǎn)程文件訪問的模塊內(nèi),則根據(jù)該正常文件操作或異常文件操作的函數(shù)調(diào)用棧的參數(shù)獲取異常文件操作對應(yīng)的遠(yuǎn)程計算機信息。本發(fā)明實施例能夠獲取進(jìn)行遠(yuǎn)程文件操作的遠(yuǎn)程計算機的信息,實現(xiàn)在病毒入侵的第一時間準(zhǔn)確報警并對病毒來源進(jìn)行定位,進(jìn)而可以實現(xiàn)對病毒的迅速攔截及對病毒來源進(jìn)行管理和維護(hù)。
文檔編號G06F21/00GK101587521SQ200910086688
公開日2009年11月25日 申請日期2009年6月17日 優(yōu)先權(quán)日2009年6月17日
發(fā)明者強 郭 申請人:北京東方微點信息技術(shù)有限責(zé)任公司