本發(fā)明涉及計(jì)算機(jī)安全技術(shù)領(lǐng)域,更具體地涉及一種惡意代碼加密配置定位方法及系統(tǒng)。
背景技術(shù):
互聯(lián)網(wǎng)技術(shù)的發(fā)展進(jìn)步給人們的生活生產(chǎn)帶來了諸多的益處,社交、金融、媒體、購物等各個(gè)方面都依托互聯(lián)網(wǎng)技術(shù)進(jìn)行運(yùn)作,產(chǎn)生效益。在互聯(lián)網(wǎng)創(chuàng)造巨大的經(jīng)濟(jì)效益的大環(huán)境下,有價(jià)值的數(shù)據(jù)、各種競爭關(guān)系誘發(fā)了通過互聯(lián)網(wǎng)的竊密、控制、破壞的惡意行為。木馬程序便是當(dāng)下比較流行的竊密、控制、破壞手段。網(wǎng)絡(luò)黑客通過一段特定的程序(木馬程序)來控制另一臺(tái)計(jì)算機(jī)。木馬通常有兩個(gè)可執(zhí)行程序:一個(gè)是控制端,另一個(gè)是被控制端。植入電腦的是被控制端部分,黑客正是利用控制端進(jìn)入運(yùn)行了被控制端的電腦。
當(dāng)下的木馬程序?yàn)榱穗[蔽自身不被發(fā)現(xiàn),在程序運(yùn)行后,會(huì)刪除隱蔽自身,而為了對抗殺軟和安全人員的檢測,一些木馬甚至?xí)用茏陨硐嚓P(guān)的配置信息,使得木馬程序的發(fā)現(xiàn)與檢測變得困難。木馬文件配置信息位置有了各種加密和隱藏處理,傳統(tǒng)的方法不好定位配置信息的位置,通過嘗試各種算法定位查找配置信息位置,工作量大,難度大,耗時(shí)長。
技術(shù)實(shí)現(xiàn)要素:
為了解決上述技術(shù)問題,提供了根據(jù)本發(fā)明的一種惡意代碼加密配置定位方法及系統(tǒng)。
根據(jù)本發(fā)明的第一方面,提供了一種惡意代碼加密配置定位方法,包括:記錄通過調(diào)用處理得到的包括接口函數(shù)信息、參數(shù)地址信息;標(biāo)記所述接口函數(shù)中文件操作的參數(shù)地址為初始地址位置,設(shè)置位置信息為p1、...、pn;基于文件內(nèi)容讀取操作,標(biāo)記文件內(nèi)存位置為內(nèi)存起始地址x1、...、xn;基于網(wǎng)絡(luò)連接、設(shè)置服務(wù)和自啟動(dòng)、數(shù)據(jù)拷貝操作,標(biāo)記內(nèi)存地址傳遞位置的目標(biāo)地址為y1、...、yn,并記錄所述目標(biāo)地址對應(yīng)的字符串信息,所述字符串信息包括配置信息;基于目標(biāo)地址y1、...、yn進(jìn)行對應(yīng)地址反查,判斷y1、...、yn是否為反查操作中ip參數(shù)對應(yīng)的地址,如果是則定位所述yn的初始地址位置為pn。
在一些實(shí)施例中,包括:提取包含惡意數(shù)據(jù)的所述pn對應(yīng)的配置信息,所述惡意數(shù)據(jù)包括終端配置信息。
在一些實(shí)施例中,所述提取包含惡意數(shù)據(jù)的pn對應(yīng)的配置信息,包括:基于所述配置信息進(jìn)行判斷,如果所述配置信息中的配置信息包括終端配置信息,則通過程序腳本對配置信息進(jìn)行提取。
在一些實(shí)施例中,所述配置信息包括終端cpu運(yùn)算速度、終端名稱、內(nèi)存大小、ip及端口地址信息。
在一些實(shí)施例中,所述初始地址位置為文件讀取位置的字符串路徑。
根據(jù)本發(fā)明的第二方面,提供一種惡意代碼加密配置定位系統(tǒng),包括:記錄模塊,用于記錄通過調(diào)用處理得到的包括接口函數(shù)信息、參數(shù)地址信息;第一標(biāo)記模塊,用于標(biāo)記所述接口函數(shù)中文件操作的參數(shù)地址為初始地址位置,設(shè)置位置信息為p1、...、pn;第二標(biāo)記模塊,用于基于文件內(nèi)容讀取操作,標(biāo)記文件內(nèi)存位置為內(nèi)存起始地址x1、...、xn;第三標(biāo)記模塊,用于基于網(wǎng)絡(luò)連接、設(shè)置服務(wù)和自啟動(dòng)、數(shù)據(jù)拷貝操作,標(biāo)記內(nèi)存地址傳遞位置的目標(biāo)地址為y1、...、yn,并記錄所述目標(biāo)地址對應(yīng)的字符串信息,所述字符串信息包括配置信息;判斷模塊,用于基于目標(biāo)地址y1、...、yn進(jìn)行對應(yīng)地址反查,判斷y1、...、yn是否為反查操作中ip參數(shù)對應(yīng)的地址,如果是則定位所述yn的初始地址位置為pn。
在一些實(shí)施例中,包括:提取模塊,用于提取包含惡意數(shù)據(jù)的所述pn對應(yīng)的配置信息,所述惡意數(shù)據(jù)包括終端配置信息。
在一些實(shí)施例中,所述提取模塊包括:用于基于所述字符串信息進(jìn)行判斷,如果所述字符串信息中的配置信息包括終端配置信息,則通過程序腳本對配置信息進(jìn)行提取。
在一些實(shí)施例中,所述配置信息包括終端cpu運(yùn)算速度、終端名稱、內(nèi)存大小、ip及端口地址信息。
在一些實(shí)施例中,所述初始地址位置為文件讀取位置的字符串路徑。
通過使用本發(fā)明的方法和系統(tǒng),記錄調(diào)用處理得到的包括接口函數(shù)信息、參數(shù)地址信息,在文件操作、內(nèi)容讀取、網(wǎng)絡(luò)連接、設(shè)置服務(wù)和自啟動(dòng)、數(shù)據(jù)拷貝操作過程中,進(jìn)行關(guān)聯(lián)api參數(shù)內(nèi)存地址傳遞跟蹤標(biāo)記,回溯定位??焖贉?zhǔn)確定位惡意代碼文件配置信息位置,不需要進(jìn)行各種解密方法的嘗試也能達(dá)到獲取文件內(nèi)容中配置信息的目的,免去了人工定位解密工作量大,難度大,耗時(shí)長的困難。
附圖說明
為了更清楚地說明本發(fā)明的技術(shù)方案,下面將對實(shí)施例中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明中記載的一些實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為根據(jù)本發(fā)明實(shí)施例的一種惡意代碼加密配置定位方法的流程圖;
圖2為根據(jù)本發(fā)明實(shí)施例的一種惡意代碼加密配置定位系統(tǒng)的框圖。
具體實(shí)施方式
下面參照附圖對本發(fā)明的優(yōu)選實(shí)施例進(jìn)行詳細(xì)說明,在描述過程中省略了對于本發(fā)明來說是不必要的細(xì)節(jié)和功能,以防止對本發(fā)明的理解造成混淆。雖然附圖中顯示了示例性實(shí)施例,然而應(yīng)當(dāng)理解,可以以各種形式實(shí)現(xiàn)本發(fā)明而不應(yīng)被這里闡述的實(shí)施例所限制。相反,提供這些實(shí)施例是為了能夠更透徹地理解本公開,并且能夠?qū)⒈景l(fā)明的范圍完整的傳達(dá)給本領(lǐng)域的技術(shù)人員。
本發(fā)明中將使用hook記錄木馬調(diào)用的api(應(yīng)用程序編程接口)以及參數(shù)地址信息,而hook是一個(gè)消息的攔截機(jī)制,是消息處理中的一個(gè)環(huán)節(jié),用于監(jiān)控消息在系統(tǒng)中的傳遞,并在這些消息到達(dá)最終的消息處理過程前,處理某些特定的消息,實(shí)際上這個(gè)技術(shù)在操作系統(tǒng)里面被廣泛使用。
圖1示出了根據(jù)本發(fā)明實(shí)施例的一種惡意代碼加密配置定位方法的流程圖。如圖1所示,方法包括如下步驟:
s110,記錄通過調(diào)用處理得到的包括接口函數(shù)信息、參數(shù)地址信息。
通過hookwindowsapi的調(diào)用,處理得到api信息以及參數(shù)地址信息,其中,地址信息可以是將api的參數(shù)處理為16進(jìn)制的地址形式(比如:0x1effc220)保存下來的信息。
s120,標(biāo)記接口函數(shù)中文件操作的參數(shù)地址為初始地址位置,設(shè)置位置信息為p1、...、pn。
首先監(jiān)控文件操作一類的api,監(jiān)控到打開配置文件動(dòng)作。接口函數(shù)中的文件操作相關(guān)函數(shù)(比如:createfile、writefile、readfile、setfiltpoint)對文件進(jìn)行對應(yīng)操作時(shí),文件操作相關(guān)函數(shù)的參數(shù)為初始地址位置,將參數(shù)初始地址位置放入一個(gè)以文件操作函數(shù)命名的列表中,單獨(dú)保存并進(jìn)行標(biāo)記,設(shè)置為p1、...、pn,其中,n為任意正整數(shù),一般為路徑相關(guān)的內(nèi)容。其中,初始地址位置為文件讀取位置的字符串路徑。
s130,基于文件內(nèi)容讀取操作,標(biāo)記文件內(nèi)存位置為內(nèi)存起始地址x1、...、xn。
通過文件內(nèi)容讀取函數(shù)讀取到文件在內(nèi)存中的位置,作為起始內(nèi)存地址,被處理為16進(jìn)制數(shù)據(jù)形式(比如:0x1effc220),并標(biāo)記x1、...、xn,其中,n為任意正整數(shù)。
s140,基于網(wǎng)絡(luò)連接、設(shè)置服務(wù)和自啟動(dòng)、數(shù)據(jù)拷貝操作,標(biāo)記內(nèi)存地址傳遞位置的目標(biāo)地址為y1、...、yn,并記錄目標(biāo)地址對應(yīng)的字符串信息。
木馬配置信息中有被感染的機(jī)器需要連接的ip和端口信息,但是是加密的,文件位置也不清楚。木馬程序要傳遞信息需要調(diào)用相關(guān)的拷貝函數(shù)將配置內(nèi)容拷貝出來到一個(gè)變量中,把ip和端口信息傳遞給網(wǎng)絡(luò)連接相關(guān)的函數(shù),同時(shí)在這個(gè)過程中也會(huì)收集被感染的終端配置信息。
通過木馬網(wǎng)絡(luò)連接需要調(diào)用的網(wǎng)絡(luò)信息查詢、連接、發(fā)送等函數(shù)(gethostbyname、connect、send等),設(shè)置服務(wù)和自啟動(dòng)需要調(diào)用的注冊表項(xiàng)值、打開注冊表項(xiàng)等函數(shù)(regsetvalue、regopenkey等),拷貝數(shù)據(jù)調(diào)用的標(biāo)準(zhǔn)庫復(fù)制、內(nèi)存拷貝等函數(shù)(strcpy、memcpy、strncpy等),進(jìn)行內(nèi)存地址傳遞位置的標(biāo)記,一直跟蹤拷貝操作的目標(biāo)地址,并標(biāo)記為y1、...、yn,其中,n為任意正整數(shù),記錄目標(biāo)地址對應(yīng)的字符串信息,其中包括配置信息。
s150,基于目標(biāo)地址y1、...、yn進(jìn)行對應(yīng)地址反查,判斷y1、...、yn是否為反查操作中ip參數(shù)對應(yīng)的地址,如果是則定位yn的初始地址位置為pn。
在木馬程序數(shù)據(jù)的傳遞過程中,地址都是可以被記錄下來的,并且關(guān)聯(lián)著。具體的,地址傳遞關(guān)聯(lián)方法如下描述:
strcpy數(shù)據(jù):{"retaddr":"004059ba","process":"wine","module":"ntdll.dll","details":{"dest":"0091e918",
"src":"0091dea8\"win2003sp2\""},"apiname":"strcpy","retval":"0091e918"}
其中,包含終端操作系統(tǒng)版本的信息被拷貝到了0091e918的地址中,接下來:
{"retaddr":"00405a8f","process":"wine","module":"ntdll.dll","details":{"dest":"0091e978",
"src":"0091df9c\"1*3491mhz\""},"apiname":"strcpy","retval":"0091e978"}
其中,包含cpu處理速度的信息被拷貝了到了0091e978的地址中。
{"retaddr":"00403685","process":"wine","module":"msvcrt.dll","details":{"dest":"0091e418","src":"0091e914","count":"000000b0"},"apiname":"memcpy","retval":"0091e418"}
使用memcpy將地址0091e914地址,長度為000000b0的信息拷貝到了0091e418的內(nèi)存地址中。0091e914----0091e914+000000b0(0091e9c4)之間的信息都被拷貝到了0091e418中。而0091e914----0091e9c4中間包含了0091e918、0091e9178中的內(nèi)容。所以相應(yīng)的終端配置信息也是被拷貝到了內(nèi)存地址中。最后我們找到send的地址:
{"retaddr":"004036a6","process":"wine","module":"ws2_32.dll","details":{"flags":"00000000","buf":"0091e410","socket":"00000068","len":"000000b8"},"apiname":"send","retval":"000000b8"}
可以清楚的看到sendbuf的地址為0091e410send的len為000000b8,也就是包含了終端配置信息地址0091e418在0091e410--0091e410+000000b8中,全被發(fā)出去了。至此就可以判斷樣本發(fā)送了終端配置信息。而這種行為是ddos回傳終端配置信息的典型操作。通過對應(yīng)的socket地址,反查connect的對應(yīng)地址。
最終地址指的是在send函數(shù)中buf參數(shù)對應(yīng)的地址。如果拷貝操作的參數(shù)地址,在buf對應(yīng)的地址范圍內(nèi)。就可以通過send函數(shù)中的socket找到connect中對應(yīng)相同的sokcet,connet函數(shù)中除了sokcet這個(gè)參數(shù)外,還有ip和端口信息。
判斷yn是否為connect中的ip相關(guān)參數(shù)對應(yīng)的地址,如果是就可以定位到y(tǒng)n的初始地址位置為pn,如否,則沒有提取到相關(guān)信息。在跟蹤過程中根據(jù)地址對應(yīng)得到字符串相關(guān)的信息,包括終端配置信息(如cpu運(yùn)算速度,計(jì)算機(jī)名,計(jì)算機(jī)內(nèi)存大?。┒伎梢杂涗浵聛怼Mㄟ^這個(gè)過程把ip和端口信息與配置信息關(guān)聯(lián)起來。比如connect鏈接的是192.168.50.45:8080,那配置信息中就應(yīng)該有這個(gè)信息。
在一些方面,進(jìn)一步還包括:
s160,提取包含惡意數(shù)據(jù)的pn對應(yīng)的配置信息。
在提取過程中,首先需要確定哪些數(shù)據(jù)是惡意數(shù)據(jù),即判斷看是否可以為污點(diǎn)數(shù)據(jù)(包含有終端配置的信息),基于字符串信息中的配置信息進(jìn)行判斷,如果字符串信息包括終端配置信息,則該字符串信息中包含惡意數(shù)據(jù),然后,利用程序腳本對配置信息進(jìn)行提取,其內(nèi)容中含有ip及端口地址等相關(guān)信息。
其中,配置信息包括終端cpu運(yùn)算速度、終端名稱、內(nèi)存大小、ip及端口地址信息。
圖2為根據(jù)本發(fā)明實(shí)施例的一種惡意代碼加密配置定位系統(tǒng)的框圖。如圖2所述,系統(tǒng)可以包括:記錄模塊210、第一標(biāo)記模塊220、第二標(biāo)記模塊230、第三標(biāo)記模塊240、判斷模塊250、提取模塊260。
記錄模塊210,用于記錄通過調(diào)用處理得到的包括接口函數(shù)信息、參數(shù)地址信息。
第一標(biāo)記模塊220,用于標(biāo)記接口函數(shù)中文件操作的參數(shù)地址為初始地址位置,設(shè)置位置信息為p1、...、pn。
其中,以上涉及到的n為任意正整數(shù),初始地址位置為文件讀取位置的字符串路徑。
第二標(biāo)記模塊230,用于基于文件內(nèi)容讀取操作,標(biāo)記文件內(nèi)存位置為內(nèi)存起始地址x1、...、xn(n為任意正整數(shù))。
第三標(biāo)記模塊240,用于基于網(wǎng)絡(luò)連接、設(shè)置服務(wù)和自啟動(dòng)、數(shù)據(jù)拷貝操作,標(biāo)記內(nèi)存地址傳遞位置的目標(biāo)地址為y1、...、yn,記錄目標(biāo)地址對應(yīng)的字符串信息,字符串信息包括配置信息。
其中,n為任意正整數(shù),配置信息包括終端cpu運(yùn)算速度、終端名稱、內(nèi)存大小、ip及端口地址信息。
判斷模塊250,用于基于目標(biāo)地址y1、...、yn進(jìn)行對應(yīng)地址反查,判斷y1、...、yn是否為反查操作中ip參數(shù)對應(yīng)的地址,如果是則定位yn的初始地址位置為pn。
在一些實(shí)施例中,系統(tǒng)還包括:
提取模塊260,用于提取包含惡意數(shù)據(jù)的pn對應(yīng)的配置信息,惡意數(shù)據(jù)包括終端配置信息。
進(jìn)一步,提取模塊260還包括:用于基于字符串信息進(jìn)行判斷,如果字符串信息中的配置信息包括終端配置信息,則通過程序腳本對配置信息進(jìn)行提取。
通過使用本發(fā)明的方法和系統(tǒng),記錄調(diào)用處理得到的包括接口函數(shù)信息、參數(shù)地址信息,在文件操作、內(nèi)容讀取、網(wǎng)絡(luò)連接、設(shè)置服務(wù)和自啟動(dòng)、數(shù)據(jù)拷貝操作過程中,進(jìn)行關(guān)聯(lián)api參數(shù)內(nèi)存地址傳遞跟蹤標(biāo)記,回溯定位??焖贉?zhǔn)確定位惡意代碼文件配置信息位置,不需要進(jìn)行各種解密方法的嘗試也能達(dá)到獲取文件內(nèi)容的目的,免去了人工定位解密工作量大,難度大,耗時(shí)長的困難。
至此已經(jīng)結(jié)合優(yōu)選實(shí)施例對本發(fā)明進(jìn)行了描述。應(yīng)該理解,本領(lǐng)域技術(shù)人員在不脫離本發(fā)明的精神和范圍的情況下,可以進(jìn)行各種其它的改變、替換和添加。因此,本發(fā)明的范圍不局限于上述特定實(shí)施例,而應(yīng)由所附權(quán)利要求所限定。