亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

自動(dòng)二進(jìn)制惡意代碼行為分析系統(tǒng)的制作方法

文檔序號(hào):6337479閱讀:177來(lái)源:國(guó)知局
專利名稱:自動(dòng)二進(jìn)制惡意代碼行為分析系統(tǒng)的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及一種惡意代碼行為分析系統(tǒng),特別是涉及一種自動(dòng) 二進(jìn)制惡意代碼行為分析系統(tǒng)。背景技術(shù)
惡意代碼是威脅計(jì)算機(jī)系統(tǒng)和網(wǎng)絡(luò)安全的重要因素之一。 惡意代碼是對(duì)在不被用戶所知的情況下滲透或破壞計(jì)算機(jī)系統(tǒng)的具有惡意行為的軟件的 總稱,是各種攻擊、入侵、破壞軟件或代碼的泛指,包括計(jì)算機(jī)病毒、蠕蟲(chóng)、特洛伊木 馬、Rootkits、間諜軟件等。惡意代碼分析用于提取惡意代碼的特征信息,是惡意代碼檢 測(cè)和發(fā)現(xiàn)的基礎(chǔ)和前提,近年來(lái),由于惡意代碼發(fā)展迅猛,自動(dòng)分析二進(jìn)制惡意代碼顯 得十分必要,分析結(jié)果不僅在設(shè)計(jì)防御系統(tǒng)方面很有用,還有助于了解攻擊者的攻擊能 力。目前,惡意代碼分析的方法之一是人工使用調(diào)試器,并且對(duì)代碼執(zhí)行行為進(jìn)行 推理。然而,人工分析的效率很低,還比較容易出錯(cuò),無(wú)法與大量涌現(xiàn)的惡意代碼進(jìn)行 對(duì)抗。二進(jìn)制惡意分析的另一種方法就是在一個(gè)有條件限制的環(huán)境(比如虛擬機(jī)環(huán)境) 中運(yùn)行一段二進(jìn)制代碼程序觀察并記錄其行為。然而,此類方法提供的信息十分有限, 日志信息只記錄了在具體設(shè)置下運(yùn)行的惡意代碼的表象行為。二進(jìn)制惡意代碼某些功 能,只在某些特定的環(huán)境或是條件下(比如當(dāng)收到一個(gè)正確的命令或是設(shè)置了一個(gè)特定 的register key)才會(huì)被觸發(fā)。如果用于測(cè)試的環(huán)境設(shè)置沒(méi)有滿足所需條件,相關(guān)的惡意 功能不會(huì)被激活。人們可以在各種不同的環(huán)境設(shè)置下對(duì)程序示例進(jìn)行測(cè)試,并且隨意給 定網(wǎng)絡(luò)輸入。然而,設(shè)置不同的環(huán)境,并在這個(gè)環(huán)境下測(cè)試程序的花費(fèi)較大,并且效率 較低,猜測(cè)滿足條件的正確環(huán)境的可能性非常小。因此,這種方法不能完全有效地對(duì)二 進(jìn)制惡意代碼進(jìn)行分析。為了研究有效的惡意代碼防御技術(shù),自動(dòng)分析惡意代碼就顯得 尤為重要了。
發(fā)明內(nèi)容
本發(fā)明要解決的技術(shù)問(wèn)題是克服現(xiàn)有技術(shù)的缺陷,提供一種自動(dòng)二進(jìn)制 惡意代碼行為分析系統(tǒng),該系統(tǒng)基于全系統(tǒng)模擬技術(shù),采用動(dòng)態(tài)符號(hào)執(zhí)行探查可 執(zhí)行程序中所有可能的執(zhí)行路徑,發(fā)現(xiàn)其中惡意代碼的操作行為,分析惡意行為與輸入 的關(guān)聯(lián)關(guān)系,并可以有效分析出惡意代碼執(zhí)行行為的控制結(jié)構(gòu)關(guān)系,建立相應(yīng)的控制流 圖,提取出惡意行為執(zhí)行的觸發(fā)輸入條件,給出惡意行為執(zhí)行與輸入的關(guān)聯(lián)關(guān)系;該系 統(tǒng)可以有效提高惡意代碼分析的效率。本發(fā)明的技術(shù)方案
一種自動(dòng)二進(jìn)制惡意代碼行為分析系統(tǒng),含有全系統(tǒng)模擬器、符號(hào)執(zhí)行模 塊、路徑解析模塊、路徑選擇模塊、惡意行為分析模塊、控制流分析模塊和有效輸 入集分析模塊,符號(hào)執(zhí)行模塊為全系統(tǒng)模擬器的插件,符號(hào)執(zhí)行模塊為輸入源引入符號(hào) 變量的輸入,符號(hào)執(zhí)行模塊發(fā)現(xiàn)二進(jìn)制惡意代碼中依賴于符號(hào)變量的分支后,為每一條 分支構(gòu)建一個(gè)路徑判定謂詞邏輯;路徑解析模塊對(duì)符號(hào)執(zhí)行模塊生成的路徑判定謂詞邏 輯進(jìn)行解析,并對(duì)分支進(jìn)行排序,如果路徑判定謂詞邏輯是可滿足的,路徑解析模塊返回的是使路徑判定謂詞邏輯滿足的輸入實(shí)例集,并且路徑解析模塊產(chǎn)生一條新的執(zhí)行路 徑加入到路徑存儲(chǔ)池中;路徑選擇模塊對(duì)路徑存儲(chǔ)池中的路徑進(jìn)行優(yōu)先級(jí)設(shè)置,選擇當(dāng) 前最優(yōu)路徑反饋給符號(hào)執(zhí)行模塊,作為符號(hào)執(zhí)行模塊下一步的執(zhí)行路徑;控制流分析模 塊為符號(hào)執(zhí)行模塊的插件,控制流分析模塊在二進(jìn)制惡意代碼動(dòng)態(tài)符號(hào)執(zhí)行過(guò)程中動(dòng)態(tài) 生成并連續(xù)更新控制流圖CFG (Control FlowGraph);惡意行為分析模塊依據(jù)惡意行為 列表分析符號(hào)執(zhí)行模塊中是否調(diào)用相關(guān)Windows API函數(shù)實(shí)現(xiàn)的相應(yīng)惡意行為,并分析 和這些相關(guān)Windows API函數(shù)相關(guān)聯(lián)的關(guān)聯(lián)代碼段,提取關(guān)聯(lián)代碼段實(shí)現(xiàn)的惡意行為特 征和結(jié)構(gòu)特征;有效輸入集分析模塊可根據(jù)惡意行為分析模塊的結(jié)果找出使惡意行為程 序按照特定路徑執(zhí)行的輸入值集。全系統(tǒng)模擬器用于對(duì)二進(jìn)制惡意代碼執(zhí)行的系統(tǒng)環(huán)境進(jìn)行模擬,它能夠?qū)拇?器和內(nèi)存的狀態(tài)、外設(shè)的執(zhí)行情況等各種硬件組件進(jìn)行模擬,還能夠?qū)Σ僮飨到y(tǒng)內(nèi)核里 的操作以及在多種進(jìn)程之間的交互進(jìn)行模擬,并提供相應(yīng)的開(kāi)發(fā)接口,因此全系統(tǒng)模擬 器可以搭建一個(gè)全系統(tǒng)模擬環(huán)境。全系統(tǒng)模擬器采用動(dòng)態(tài)插樁技術(shù)對(duì)系統(tǒng)執(zhí)行進(jìn)行細(xì)粒 度監(jiān)視,提取程序執(zhí)行、系統(tǒng)內(nèi)核操作和進(jìn)程間交互信息。符號(hào)執(zhí)行模塊通過(guò)動(dòng)態(tài)插樁技術(shù)提取被檢測(cè)軟件的執(zhí)行狀態(tài)信息,并分析
被檢測(cè)軟件的指令來(lái)自于哪一個(gè)進(jìn)程或模塊;如果所述全系統(tǒng)模擬器正在執(zhí)行的指 令為輸入指令,符號(hào)執(zhí)行模塊則將輸入變量的值定義為符號(hào)值,在后續(xù)指令中該輸入變 量以符號(hào)值形式參加執(zhí)行,使得任何依賴于輸入的指令都一定會(huì)被符號(hào)地執(zhí)行,執(zhí)行結(jié) 果為符號(hào)表達(dá)式,例如,指令add X,y (x,y是由輸入得來(lái)的,被設(shè)為符號(hào))產(chǎn)生了符號(hào) 表達(dá)式x = x + y,并且它不會(huì)被x,y的具體值所限制;在指令被符號(hào)地執(zhí)行的過(guò)程中條件 跳轉(zhuǎn)真分支的成立條件是當(dāng)前的符號(hào)公式的值必須為非零;在指令被符號(hào)地執(zhí)行的過(guò) 程中條件跳轉(zhuǎn)假分支的成立條件是當(dāng)前的符號(hào)公式的值為零;符號(hào)執(zhí)行模塊根據(jù)當(dāng)前 的符號(hào)公式的值得出不同的程序路徑,從而在不同的條件下觀察惡意代碼的執(zhí)行行為; 所述輸入源為網(wǎng)絡(luò)輸入,或?yàn)槲募枋龇?,或?yàn)閹?kù);每一個(gè)路徑判定謂詞邏輯描述了符 號(hào)輸入需要滿足程序執(zhí)行規(guī)定路徑的條件約束,新的路徑判定謂詞邏輯是當(dāng)前分支的路 徑約束條件和當(dāng)前分支之前的路徑約束條件的并;所述路徑判定謂詞邏輯是一個(gè)布爾函 數(shù),要么滿足,要么不滿足。符號(hào)執(zhí)行模塊采用hook方式截取全系統(tǒng)模擬器的windows API函數(shù)調(diào)用,當(dāng)全 系統(tǒng)模擬器的模擬CPU到達(dá)第一 hook函數(shù)的入口點(diǎn)處時(shí),模擬CPU將執(zhí)行第一 hook函 數(shù),第一 hook函數(shù)執(zhí)行結(jié)束后,模擬CPU執(zhí)行windows API函數(shù)或跳過(guò)windows API函 數(shù),如果windows API函數(shù)被調(diào)用了,那么當(dāng)windows API函數(shù)返回時(shí),第二 hook函數(shù)
就能被動(dòng)態(tài)地添加從而被調(diào)用,第二 Hook函數(shù)將Windows API函數(shù)調(diào)用時(shí)的返回值或返 回的緩沖區(qū)標(biāo)記為符號(hào)變量。符號(hào)執(zhí)行模塊用于以符號(hào)而非具體值的形式為二進(jìn)制惡意代碼的執(zhí)行提供輸 入,為分支跳轉(zhuǎn)語(yǔ)句生成路徑判定謂詞邏輯,使得探查的代碼執(zhí)行路徑不受具體輸入的 限制,和傳統(tǒng)方法相比,可以探查到更多的程序片段,獲取更多的程序信息,為進(jìn)一步 的分析奠定基礎(chǔ)。一個(gè)能滿足的路徑判定謂詞邏輯意味著路徑謂詞中的符號(hào)變量有一個(gè)賦值,該 賦值使得路徑判定謂詞為真。由于路徑判定謂詞邏輯中的符號(hào)變量是輸入變量,因此,能滿足的路徑判定謂詞邏輯說(shuō)明存在一個(gè)輸入集,該輸入集能使代碼執(zhí)行該路徑。相 反,一個(gè)不能滿足的路徑判定謂詞邏輯說(shuō)明不存在輸入集使代碼執(zhí)行該路徑。路徑判定 謂詞邏輯可以采用多種方法來(lái)解析,如判定過(guò)程(decision procedure)方法和定理證明 (theory prove)方法等,以檢查路徑判定謂詞邏輯是否是可滿足的。路徑解析模塊檢查每一個(gè)生成的路徑判定謂詞邏輯是否是可滿足的,有以下三 種情況1.路徑判定謂詞邏輯是可滿足的,則意味著路徑是可行的,在這種情況下,路 徑解析模塊將可行路徑添加至待進(jìn)一步探索的路徑池中。同時(shí),返回使程序執(zhí)行該路徑 的輸入例集,也就是說(shuō),使得程序按照可行路徑執(zhí)行的輸入值。2.路徑判定謂詞邏輯是 不可滿足的,則意味著路徑不可行,也就是說(shuō),沒(méi)有執(zhí)行特定路徑的輸入。3.解析耗費(fèi) 太多的時(shí)間和內(nèi)存,就不再進(jìn)一步考慮這條路徑,選擇一些其他的方法,比如增加超時(shí) 時(shí)間。路徑解析模塊可以采用已有的定理證明和過(guò)程判定工具以插件的形式實(shí)現(xiàn),充分 利用最先進(jìn)的技術(shù)。路徑存儲(chǔ)池中的路徑第一次出現(xiàn)的時(shí)候,路徑選擇模塊將該路徑的優(yōu)先級(jí)設(shè)為 最高,該路徑每執(zhí)行一次之后,路徑選擇模塊就將其優(yōu)先級(jí)降低一級(jí);路徑選擇模塊將 還可采用全系統(tǒng)模擬器的用戶交互功能,對(duì)于用戶感興趣的路徑設(shè)置高級(jí)別的優(yōu)先級(jí)。路徑選擇模塊的總目標(biāo)是解決路徑的選擇問(wèn)題,在代碼實(shí)際執(zhí)行過(guò)程中,路徑 分支的數(shù)量是非常巨大的,尤其是在程序的循環(huán)執(zhí)行過(guò)程中。因此,需要算法區(qū)分這些 路徑的優(yōu)先次序,從而在一個(gè)合理的時(shí)間內(nèi)找到感興趣的路徑。解決這個(gè)問(wèn)題的一個(gè)有 效辦法是為每條已發(fā)掘的路徑設(shè)置優(yōu)先級(jí),并在代碼執(zhí)行過(guò)程中動(dòng)態(tài)修改優(yōu)先級(jí)。由于不同的方法在不同的情況下的運(yùn)行效果是不同的,路徑選擇模塊是一種模 型,可以允許不同算法,比如,廣度優(yōu)先算法、縱向優(yōu)先算法等。路徑選擇模塊通過(guò)相 應(yīng)的算法可以有效解決重復(fù)路徑的選擇問(wèn)題。路徑選擇模塊將已發(fā)現(xiàn)的待進(jìn)一步探查的 可行路徑集作為輸入,輸出下一條待探查的路徑。廣度優(yōu)先算法使用的策略是盡可能多地探查出依賴于符號(hào)輸入的條件跳轉(zhuǎn),它 將試圖探查一個(gè)重訪循環(huán)主體前從未見(jiàn)過(guò)的依賴于符號(hào)輸入的分支。首先,它將試圖探 查出循環(huán)頭部(循環(huán)頭部是條件跳轉(zhuǎn),一條分支執(zhí)行循環(huán)主體,另外的分支離開(kāi)循環(huán)) 的分支。這模仿了執(zhí)行循環(huán),附加的循環(huán)將被反復(fù)添加至路徑選擇隊(duì)列的隊(duì)尾。當(dāng)符號(hào)執(zhí)行模塊發(fā)現(xiàn)并執(zhí)行新路徑時(shí),控制流分析模塊把該新路徑添加至控制 流圖CFG;控制流分析模塊通過(guò)執(zhí)行不同的代碼路徑來(lái)繪制控制流圖CFG,當(dāng)該代碼路 徑被動(dòng)態(tài)解壓、解密、生成時(shí),控制流分析模塊將轉(zhuǎn)儲(chǔ)內(nèi)存映像并且執(zhí)行靜態(tài)全程序控 制流分析以將新代碼路徑添加至控制流圖CFG。如果被分析的二進(jìn)制惡意代碼可以預(yù)先進(jìn)行靜態(tài)反匯編,控制流分析模塊的分 析可以建立在靜態(tài)反匯編生成的控制流的基礎(chǔ)之上??刂屏鞣治瞿K用于在動(dòng)態(tài)符號(hào)執(zhí)行過(guò)程中生成二進(jìn)制代碼控制流圖CFG,用 于解決諸如二進(jìn)制使用的是什么樣的系統(tǒng)或是庫(kù)的調(diào)用,調(diào)用順序如何等問(wèn)題??刂屏?為后續(xù)分析提供了一個(gè)重要的依據(jù),并且給出了一個(gè)關(guān)于不同代碼段是如何關(guān)聯(lián)的描述 圖??刂屏鞣治瞿K通過(guò)靜態(tài)分析生成了盡可能多的控制流圖CFG,然后根據(jù)二進(jìn)制代 碼的動(dòng)態(tài)符號(hào)執(zhí)行連續(xù)更新CFG。在符號(hào)執(zhí)行模塊的工作過(guò)程中,惡意行為分析模塊始終監(jiān)視每條指令的執(zhí)行,如果符號(hào)執(zhí)行模塊執(zhí)行了惡意行為列表中的Windows API函數(shù),惡意行為分析模塊就對(duì) 與Windows API函數(shù)相關(guān)聯(lián)的關(guān)聯(lián)代碼段采用反向切片的方法進(jìn)行分析。惡意行為分析模塊分析惡意代碼的行為類型,通過(guò)符號(hào)執(zhí)行探查到依賴于特定 Windows API調(diào)用的控制流結(jié)構(gòu),通過(guò)解析符號(hào)執(zhí)行過(guò)程中建立的謂詞邏輯約束條件,就 能探索所有依賴于這些API調(diào)用的代碼。與只簡(jiǎn)單運(yùn)行可執(zhí)行代碼相比,利用該方法能 觀察到更多的結(jié)果。除此之外,還在上述動(dòng)作運(yùn)行期間,對(duì)惡意軟件的行為進(jìn)行記錄。通常我們需要了解一段二進(jìn)制惡意代碼執(zhí)行了那些惡意行為,如是否執(zhí)行了刪 除文件或是發(fā)送網(wǎng)絡(luò)數(shù)據(jù)包的操作,這些行為通過(guò)各種Windows API函數(shù)調(diào)用來(lái)實(shí)現(xiàn), 因此惡意行為分析模塊基于一個(gè)指定的感興趣的惡意行為API函數(shù)調(diào)用列表,通常系統(tǒng) 包含一個(gè)默認(rèn)的常用的典型API函數(shù)列表,用戶還可以根據(jù)需要增加新的感興趣的API調(diào) 用對(duì)列表實(shí)現(xiàn)擴(kuò)展。有效輸入集分析模塊還可根據(jù)惡意行為分析模塊的結(jié)果生成目標(biāo)導(dǎo)向的輸入, 找出能使惡意行為程序朝著特定目標(biāo)執(zhí)行的輸入,并利用控制流圖CFG提取惡意行為模 塊,跟蹤記錄在惡意行為分析模塊中已經(jīng)探索過(guò)的惡意行為程序中的路徑;如果惡意代 碼被加密,有效輸入集分析模塊仍然能通過(guò)將分支對(duì)象制定為目標(biāo)對(duì)象來(lái)探索先前未執(zhí) 行的分支。有效輸入集分析模塊通過(guò)生成只包含從惡意行為程序入口到目標(biāo)節(jié)點(diǎn)的路徑的 控制流圖CFG分片,把能達(dá)到目標(biāo)節(jié)點(diǎn)的路徑單獨(dú)區(qū)分出來(lái),然后選取了從源到目的的 最短路徑,稱為目標(biāo)路徑;目標(biāo)路徑包括一系列待執(zhí)行的條件跳轉(zhuǎn)目標(biāo),有效輸入集分 析模塊根據(jù)條件跳轉(zhuǎn)目標(biāo)所在執(zhí)行路徑上的路徑謂詞,求解出使條件跳轉(zhuǎn)目標(biāo)滿足的符 號(hào)變量的輸入值集,該輸入值即為觸發(fā)惡意代碼執(zhí)行的輸入值集,依據(jù)確定的符號(hào)變量 的輸入值集,全系統(tǒng)模擬器可以對(duì)惡意代碼模擬執(zhí)行,在受控環(huán)境下記錄惡意代碼的執(zhí) 行行為。全系統(tǒng)模擬器為Bochs全系統(tǒng)模擬器,或?yàn)閂mware全系統(tǒng)模擬器,或?yàn)镼EMU
全系統(tǒng)模擬器。QEMU全系統(tǒng)模擬器是一個(gè)使用動(dòng)態(tài)翻譯技術(shù)的模擬器,客戶系統(tǒng)中的指令 塊被翻譯為主機(jī)中的一段代碼然后被執(zhí)行,使得能在客戶系統(tǒng)中對(duì)任何代碼實(shí)現(xiàn)動(dòng)態(tài)插 樁,為符號(hào)執(zhí)行提供了基礎(chǔ)。本發(fā)明的有益效果
1、本發(fā)明可以發(fā)現(xiàn)惡意代碼執(zhí)行了什么動(dòng)作、惡意代碼潛藏行為之間的控制流 (如惡意軟件是否對(duì)文件進(jìn)行寫或刪除操作、是否發(fā)出網(wǎng)絡(luò)數(shù)據(jù)包、是否接受遠(yuǎn)程命 令等問(wèn)題),利用本發(fā)明還可以得出使得惡意行為執(zhí)行的觸發(fā)輸入集、惡意行為和輸入 之間的關(guān)聯(lián)關(guān)系。本發(fā)明為發(fā)現(xiàn)和檢測(cè)惡意代碼提供有力的支持,其分析的結(jié)果不僅在 設(shè)計(jì)防御系統(tǒng)方面很有用,還有助于了解攻擊者的攻擊能力。

圖1為自動(dòng)二進(jìn)制惡意代碼行為分析系統(tǒng)的工作原理框圖示意圖。具體實(shí)施例方式
實(shí)施例一參見(jiàn)圖1,圖中,自動(dòng)二進(jìn)制惡意代碼行為分析系統(tǒng)含有全系 統(tǒng)模擬器、符號(hào)執(zhí)行模塊、路徑解析模塊、路徑選擇模塊、惡意行為分析模塊、控制流分析模塊和有效輸入集分析模塊,符號(hào)執(zhí)行模塊為全系統(tǒng)模擬器的插件,符號(hào)執(zhí)行 模塊為輸入源引入符號(hào)變量的輸入,符號(hào)執(zhí)行模塊發(fā)現(xiàn)二進(jìn)制惡意代碼中依賴于符號(hào)變 量的分支后,為每一條分支構(gòu)建一個(gè)路徑判定謂詞邏輯;路徑解析模塊對(duì)符號(hào)執(zhí)行模塊 生成的路徑判定謂詞邏輯進(jìn)行解析,并對(duì)分支進(jìn)行排序,如果路徑判定謂詞邏輯是可滿 足的,路徑解析模塊返回的是使路徑判定謂詞邏輯滿足的輸入實(shí)例集,并且路徑解析模 塊產(chǎn)生一條新的執(zhí)行路徑加入到路徑存儲(chǔ)池中;路徑選擇模塊對(duì)路徑存儲(chǔ)池中的路徑進(jìn) 行優(yōu)先級(jí)設(shè)置,選擇當(dāng)前最優(yōu)路徑反饋給符號(hào)執(zhí)行模塊,作為符號(hào)執(zhí)行模塊下一步的執(zhí) 行路徑;控制流分析模塊為符號(hào)執(zhí)行模塊的插件,控制流分析模塊在二進(jìn)制惡意代碼動(dòng) 態(tài)符號(hào)執(zhí)行過(guò)程中動(dòng)態(tài)生成并連續(xù)更新控制流圖CFG (Control Flow Graph);惡意行為 分析模塊依據(jù)惡意行為列表分析符號(hào)執(zhí)行模塊中是否調(diào)用相關(guān)Windows API函數(shù)實(shí)現(xiàn)的 相應(yīng)惡意行為,并分析和這些相關(guān)Windows API函數(shù)相關(guān)聯(lián)的關(guān)聯(lián)代碼段,提取關(guān)聯(lián)代 碼段實(shí)現(xiàn)的惡意行為特征和結(jié)構(gòu)特征;有效輸入集分析模塊可根據(jù)惡意行為分析模塊的 結(jié)果找出使惡意行為程序按照特定路徑執(zhí)行的輸入值集。全系統(tǒng)模擬器用于對(duì)二進(jìn)制惡意代碼執(zhí)行的系統(tǒng)環(huán)境進(jìn)行模擬,它能夠?qū)拇?器和內(nèi)存的狀態(tài)、外設(shè)的執(zhí)行情況等各種硬件組件進(jìn)行模擬,還能夠?qū)Σ僮飨到y(tǒng)內(nèi)核里 的操作以及在多種進(jìn)程之間的交互進(jìn)行模擬,并提供相應(yīng)的開(kāi)發(fā)接口,因此全系統(tǒng)模擬 器可以搭建一個(gè)全系統(tǒng)模擬環(huán)境。全系統(tǒng)模擬器采用動(dòng)態(tài)插樁技術(shù)對(duì)系統(tǒng)執(zhí)行進(jìn)行細(xì)粒 度監(jiān)視,提取程序執(zhí)行、系統(tǒng)內(nèi)核操作和進(jìn)程間交互信息。符號(hào)執(zhí)行模塊通過(guò)動(dòng)態(tài)插樁技術(shù)提取被檢測(cè)軟件的執(zhí)行狀態(tài)信息,并分析
被檢測(cè)軟件的指令來(lái)自于哪一個(gè)進(jìn)程或模塊;如果所述全系統(tǒng)模擬器正在執(zhí)行的指 令為輸入指令,符號(hào)執(zhí)行模塊則將輸入變量的值定義為符號(hào)值,在后續(xù)指令中該輸入變 量以符號(hào)值形式參加執(zhí)行,使得任何依賴于輸入的指令都一定會(huì)被符號(hào)地執(zhí)行,執(zhí)行結(jié) 果為符號(hào)表達(dá)式,例如,指令add X,y (x,y是由輸入得來(lái)的,被設(shè)為符號(hào))產(chǎn)生了符號(hào) 表達(dá)式χ = χ + y,并且它不會(huì)被x,y的具體值所限制;在指令被符號(hào)地執(zhí)行的過(guò)程中條件 跳轉(zhuǎn)真分支的成立條件是當(dāng)前的符號(hào)公式的值必須為非零;在指令被符號(hào)地執(zhí)行的過(guò) 程中條件跳轉(zhuǎn)假分支的成立條件是當(dāng)前的符號(hào)公式的值為零;符號(hào)執(zhí)行模塊根據(jù)當(dāng)前 的符號(hào)公式的值得出不同的程序路徑,從而在不同的條件下觀察惡意代碼的執(zhí)行行為; 所述輸入源為網(wǎng)絡(luò)輸入,或?yàn)槲募枋龇?,或?yàn)閹?kù);每一個(gè)路徑判定謂詞邏輯描述了符 號(hào)輸入需要滿足程序執(zhí)行規(guī)定路徑的條件約束,新的路徑判定謂詞邏輯是當(dāng)前分支的路 徑約束條件和當(dāng)前分支之前的路徑約束條件的并;所述路徑判定謂詞邏輯是一個(gè)布爾函 數(shù),要么滿足,要么不滿足。符號(hào)執(zhí)行模塊采用hook方式截取全系統(tǒng)模擬器的windows API函數(shù)調(diào)用,當(dāng)全 系統(tǒng)模擬器的模擬CPU到達(dá)第一 hook函數(shù)的入口點(diǎn)處時(shí),模擬CPU將執(zhí)行第一 hook函 數(shù),第一 hook函數(shù)執(zhí)行結(jié)束后,模擬CPU執(zhí)行windows API函數(shù)或跳過(guò)windows API函 數(shù),如果windows API函數(shù)被調(diào)用了,那么當(dāng)windows API函數(shù)返回時(shí),第二 hook函數(shù)
就能被動(dòng)態(tài)地添加從而被調(diào)用,第二 Hook函數(shù)將Windows API函數(shù)調(diào)用時(shí)的返回值或返 回的緩沖區(qū)標(biāo)記為符號(hào)變量。符號(hào)執(zhí)行模塊用于以符號(hào)而非具體值的形式為二進(jìn)制惡意代碼的執(zhí)行提供輸 入,為分支跳轉(zhuǎn)語(yǔ)句生成路徑判定謂詞邏輯,使得探查的代碼執(zhí)行路徑不受具體輸入的限制,和傳統(tǒng)方法相比,可以探查到更多的程序片段,獲取更多的程序信息,為進(jìn)一步 的分析奠定基礎(chǔ)。一個(gè)能滿足的路徑判定謂詞邏輯意味著路徑謂詞中的符號(hào)變量有一個(gè)賦值,該 賦值使得路徑判定謂詞為真。由于路徑判定謂詞邏輯中的符號(hào)變量是輸入變量,因此, 能滿足的路徑判定謂詞邏輯說(shuō)明存在一個(gè)輸入集,該輸入集能使代碼執(zhí)行該路徑。相 反,一個(gè)不能滿足的路徑判定謂詞邏輯說(shuō)明不存在輸入集使代碼執(zhí)行該路徑。路徑判定 謂詞邏輯可以采用多種方法來(lái)解析,如判定過(guò)程(decision procedure)方法和定理證明
(theory prove)方法等,以檢查路徑判定謂詞邏輯是否是可滿足的。路徑解析模塊檢查每一個(gè)生成的路徑判定謂詞邏輯是否是可滿足的,有以下三 種情況1.路徑判定謂詞邏輯是可滿足的,則意味著路徑是可行的,在這種情況下,路 徑解析模塊將可行路徑添加至待進(jìn)一步探索的路徑池中。同時(shí),返回使程序執(zhí)行該路徑 的輸入例集,也就是說(shuō),使得程序按照可行路徑執(zhí)行的輸入值。2.路徑判定謂詞邏輯是 不可滿足的,則意味著路徑不可行,也就是說(shuō),沒(méi)有執(zhí)行特定路徑的輸入。3.解析耗費(fèi) 太多的時(shí)間和內(nèi)存,就不再進(jìn)一步考慮這條路徑,選擇一些其他的方法,比如增加超時(shí) 時(shí)間。路徑解析模塊可以采用已有的定理證明和過(guò)程判定工具以插件的形式實(shí)現(xiàn),充分 利用最先進(jìn)的技術(shù)。路徑存儲(chǔ)池中的路徑第一次出現(xiàn)的時(shí)候,路徑選擇模塊將該路徑的優(yōu)先級(jí)設(shè)為 最高,該路徑每執(zhí)行一次之后,路徑選擇模塊就將其優(yōu)先級(jí)降低一級(jí);路徑選擇模塊將 還可采用全系統(tǒng)模擬器的用戶交互功能,對(duì)于用戶感興趣的路徑設(shè)置高級(jí)別的優(yōu)先級(jí)。路徑選擇模塊的總目標(biāo)是解決路徑的選擇問(wèn)題,在代碼實(shí)際執(zhí)行過(guò)程中,路徑 分支的數(shù)量是非常巨大的,尤其是在程序的循環(huán)執(zhí)行過(guò)程中。因此,需要算法區(qū)分這些 路徑的優(yōu)先次序,從而在一個(gè)合理的時(shí)間內(nèi)找到感興趣的路徑。解決這個(gè)問(wèn)題的一個(gè)有 效辦法是為每條已發(fā)掘的路徑設(shè)置優(yōu)先級(jí),并在代碼執(zhí)行過(guò)程中動(dòng)態(tài)修改優(yōu)先級(jí)。由于不同的方法在不同的情況下的運(yùn)行效果是不同的,路徑選擇模塊是一種模 型,可以允許不同算法,比如,廣度優(yōu)先算法、縱向優(yōu)先算法等。路徑選擇模塊通過(guò)相 應(yīng)的算法可以有效解決重復(fù)路徑的選擇問(wèn)題。路徑選擇模塊將已發(fā)現(xiàn)的待進(jìn)一步探查的 可行路徑集作為輸入,輸出下一條待探查的路徑。廣度優(yōu)先算法使用的策略是盡可能多地探查出依賴于符號(hào)輸入的條件跳轉(zhuǎn),它 將試圖探查一個(gè)重訪循環(huán)主體前從未見(jiàn)過(guò)的依賴于符號(hào)輸入的分支。首先,它將試圖探 查出循環(huán)頭部(循環(huán)頭部是條件跳轉(zhuǎn),一條分支執(zhí)行循環(huán)主體,另外的分支離開(kāi)循環(huán)) 的分支。這模仿了執(zhí)行循環(huán),附加的循環(huán)將被反復(fù)添加至路徑選擇隊(duì)列的隊(duì)尾。當(dāng)符號(hào)執(zhí)行模塊發(fā)現(xiàn)并執(zhí)行新路徑時(shí),控制流分析模塊把該新路徑添加至控制 流圖CFG;控制流分析模塊通過(guò)執(zhí)行不同的代碼路徑來(lái)繪制控制流圖CFG,當(dāng)該代碼路 徑被動(dòng)態(tài)解壓、解密、生成時(shí),控制流分析模塊將轉(zhuǎn)儲(chǔ)內(nèi)存映像并且執(zhí)行靜態(tài)全程序控 制流分析以將新代碼路徑添加至控制流圖CFG。如果被分析的二進(jìn)制惡意代碼可以預(yù)先進(jìn)行靜態(tài)反匯編,控制流分析模塊的分 析可以建立在靜態(tài)反匯編生成的控制流的基礎(chǔ)之上??刂屏鞣治瞿K用于在動(dòng)態(tài)符號(hào)執(zhí)行過(guò)程中生成二進(jìn)制代碼控制流圖CFG,用 于解決諸如二進(jìn)制使用的是什么樣的系統(tǒng)或是庫(kù)的調(diào)用,調(diào)用順序如何等問(wèn)題??刂屏鳛楹罄m(xù)分析提供了一個(gè)重要的依據(jù),并且給出了一個(gè)關(guān)于不同代碼段是如何關(guān)聯(lián)的描述 圖。控制流分析模塊通過(guò)靜態(tài)分析生成了盡可能多的控制流圖CFG,然后根據(jù)二進(jìn)制代 碼的動(dòng)態(tài)符號(hào)執(zhí)行連續(xù)更新CFG。在符號(hào)執(zhí)行模塊的工作過(guò)程中,惡意行為分析模塊始終監(jiān)視每條指令的執(zhí)行, 如果符號(hào)執(zhí)行模塊執(zhí)行了惡意行為列表中的Windows API函數(shù),惡意行為分析模塊就對(duì) 與Windows API函數(shù)相關(guān)聯(lián)的關(guān)聯(lián)代碼段采用反向切片的方法進(jìn)行分析。惡意行為分析模塊分析惡意代碼的行為類型,通過(guò)符號(hào)執(zhí)行探查到依賴于特定 Windows API調(diào)用的控制流結(jié)構(gòu),通過(guò)解析符號(hào)執(zhí)行過(guò)程中建立的謂詞邏輯約束條件,就 能探索所有依賴于這些API調(diào)用的代碼。與只簡(jiǎn)單運(yùn)行可執(zhí)行代碼相比,利用該方法能 觀察到更多的結(jié)果。除此之外,還在上述動(dòng)作運(yùn)行期間,對(duì)惡意軟件的行為進(jìn)行記錄。通常我們需要了解一段二進(jìn)制惡意代碼執(zhí)行了那些惡意行為,如是否執(zhí)行了刪 除文件或是發(fā)送網(wǎng)絡(luò)數(shù)據(jù)包的操作,這些行為通過(guò)各種Windows API函數(shù)調(diào)用來(lái)實(shí)現(xiàn), 因此惡意行為分析模塊基于一個(gè)指定的感興趣的惡意行為API函數(shù)調(diào)用列表,通常系統(tǒng) 包含一個(gè)默認(rèn)的常用的典型API函數(shù)列表,用戶還可以根據(jù)需要增加新的感興趣的API調(diào) 用對(duì)列表實(shí)現(xiàn)擴(kuò)展。有效輸入集分析模塊還可根據(jù)惡意行為分析模塊的結(jié)果生成目標(biāo)導(dǎo)向的輸入, 找出能使惡意行為程序朝著特定目標(biāo)執(zhí)行的輸入,并利用控制流圖CFG提取惡意行為模 塊,跟蹤記錄在惡意行為分析模塊中已經(jīng)探索過(guò)的惡意行為程序中的路徑;如果惡意代 碼被加密,有效輸入集分析模塊仍然能通過(guò)將分支對(duì)象制定為目標(biāo)對(duì)象來(lái)探索先前未執(zhí) 行的分支。有效輸入集分析模塊通過(guò)生成只包含從惡意行為程序入口到目標(biāo)節(jié)點(diǎn)的路徑的 控制流圖CFG分片,把能達(dá)到目標(biāo)節(jié)點(diǎn)的路徑單獨(dú)區(qū)分出來(lái),然后選取了從源到目的的 最短路徑,稱為目標(biāo)路徑;目標(biāo)路徑包括一系列待執(zhí)行的條件跳轉(zhuǎn)目標(biāo),有效輸入集分 析模塊根據(jù)條件跳轉(zhuǎn)目標(biāo)所在執(zhí)行路徑上的路徑謂詞,求解出使條件跳轉(zhuǎn)目標(biāo)滿足的符 號(hào)變量的輸入值集,該輸入值即為觸發(fā)惡意代碼執(zhí)行的輸入值集,依據(jù)確定的符號(hào)變量 的輸入值集,全系統(tǒng)模擬器可以對(duì)惡意代碼模擬執(zhí)行,在受控環(huán)境下記錄惡意代碼的執(zhí) 行行為。全系統(tǒng)模擬器為Bochs全系統(tǒng)模擬器,或?yàn)閂mware全系統(tǒng)模擬器,或?yàn)镼EMU
全系統(tǒng)模擬器。QEMU全系統(tǒng)模擬器是一個(gè)使用動(dòng)態(tài)翻譯技術(shù)的模擬器,客戶系統(tǒng)中的指令 塊被翻譯為主機(jī)中的一段代碼然后被執(zhí)行,使得能在客戶系統(tǒng)中對(duì)任何代碼實(shí)現(xiàn)動(dòng)態(tài)插 樁,為符號(hào)執(zhí)行提供了基礎(chǔ)。
權(quán)利要求
1.一種自動(dòng)二進(jìn)制惡意代碼行為分析系統(tǒng),其特征是含有全系統(tǒng)模擬器、符號(hào)執(zhí)行模塊、路徑解析模塊、路徑選擇模塊、惡意行為分析模塊、控制流 分析模塊和有效輸入集分析模塊,符號(hào)執(zhí)行模塊為全系統(tǒng)模擬器的插件,符號(hào)執(zhí)行模塊 為輸入源引入符號(hào)變量的輸入,符號(hào)執(zhí)行模塊發(fā)現(xiàn)二進(jìn)制惡意代碼中依賴于符號(hào)變量的 分支后,為每一條分支構(gòu)建一個(gè)路徑判定謂詞邏輯;路徑解析模塊對(duì)符號(hào)執(zhí)行模塊生 成的路徑判定謂詞邏輯進(jìn)行解析,并對(duì)分支進(jìn)行排序,如果路徑判定謂詞邏輯是可滿足 的,路徑解析模塊返回的是使路徑判定謂詞邏輯滿足的輸入實(shí)例集,并且路徑解析模塊 產(chǎn)生一條新的執(zhí)行路徑加入到路徑存儲(chǔ)池中;路徑選擇模塊對(duì)路徑存儲(chǔ)池中的路徑進(jìn)行 優(yōu)先級(jí)設(shè)置,選擇當(dāng)前最優(yōu)路徑反饋給符號(hào)執(zhí)行模塊,作為符號(hào)執(zhí)行模塊下一步的執(zhí)行 路徑;控制流分析模塊為符號(hào)執(zhí)行模塊的插件,控制流分析模塊在二進(jìn)制惡意代碼動(dòng)態(tài) 符號(hào)執(zhí)行過(guò)程中動(dòng)態(tài)生成并連續(xù)更新控制流圖CFG ;惡意行為分析模塊依據(jù)惡意行為列 表分析符號(hào)執(zhí)行模塊中是否調(diào)用相關(guān)Windows API函數(shù)實(shí)現(xiàn)的相應(yīng)惡意行為,并分析和 這些相關(guān)Windows API函數(shù)相關(guān)聯(lián)的關(guān)聯(lián)代碼段,提取關(guān)聯(lián)代碼段實(shí)現(xiàn)的惡意行為特征 和結(jié)構(gòu)特征;有效輸入集分析模塊可根據(jù)惡意行為分析模塊的結(jié)果找出使惡意行為程序 按照特定路徑執(zhí)行的輸入值集。
2.根據(jù)權(quán)利要求1所述的自動(dòng)二進(jìn)制惡意代碼行為分析系統(tǒng),其特征是所述符號(hào)執(zhí)行模塊通過(guò)動(dòng)態(tài)插樁技術(shù)提取被檢測(cè)軟件的執(zhí)行狀態(tài)信息,并分析 被檢測(cè)軟件的指令來(lái)自于哪一個(gè)進(jìn)程或模塊;如果所述全系統(tǒng)模擬器正在執(zhí)行的指令為 輸入指令,符號(hào)執(zhí)行模塊則將輸入變量的值定義為符號(hào)值,在后續(xù)指令中該輸入變量以 符號(hào)值形式參加執(zhí)行,使得任何依賴于輸入的指令都一定會(huì)被符號(hào)地執(zhí)行,執(zhí)行結(jié)果為 符號(hào)表達(dá)式;在指令被符號(hào)地執(zhí)行的過(guò)程中條件跳轉(zhuǎn)真分支的成立條件是當(dāng)前的符號(hào) 公式的值必須為非零;在指令被符號(hào)地執(zhí)行的過(guò)程中條件跳轉(zhuǎn)假分支的成立條件是當(dāng) 前的符號(hào)公式的值為零;符號(hào)執(zhí)行模塊根據(jù)當(dāng)前的符號(hào)公式的值得出不同的程序路徑, 從而在不同的條件下觀察惡意代碼的執(zhí)行行為;所述輸入源為網(wǎng)絡(luò)輸入,或?yàn)槲募枋?符,或?yàn)閹?kù);每一個(gè)路徑判定謂詞邏輯描述了符號(hào)輸入需要滿足程序執(zhí)行規(guī)定路徑的條 件約束,新的路徑判定謂詞邏輯是當(dāng)前分支的路徑約束條件和當(dāng)前分支之前的路徑約束 條件的并;所述路徑判定謂詞邏輯是一個(gè)布爾函數(shù)。
3.根據(jù)權(quán)利要求1所述的自動(dòng)二進(jìn)制惡意代碼行為分析系統(tǒng),其特征是所述符號(hào)執(zhí)行模塊采用hook方式截取全系統(tǒng)模擬器的windows API函數(shù)調(diào)用, 當(dāng)全系統(tǒng)模擬器的模擬CPU到達(dá)第一 hook函數(shù)的入口點(diǎn)處時(shí),模擬CPU將執(zhí)行第一 hook函數(shù),第一 hook函數(shù)執(zhí)行結(jié)束后,模擬CPU執(zhí)行windows API函數(shù)或跳過(guò)windows API函數(shù),如果windows API函數(shù)被調(diào)用了,那么當(dāng)windows API函數(shù)返回時(shí),第二 hook 函數(shù)就能被動(dòng)態(tài)地添加從而被調(diào)用,第二 Hook函數(shù)將Windows API函數(shù)調(diào)用時(shí)的返回值 或返回的緩沖區(qū)標(biāo)記為符號(hào)變量。
4.根據(jù)權(quán)利要求1所述的自動(dòng)二進(jìn)制惡意代碼行為分析系統(tǒng),其特征是所述路徑存儲(chǔ)池中的路徑第一次出現(xiàn)的時(shí)候,路徑選擇模塊將該路徑的優(yōu)先級(jí)設(shè)為 最高,該路徑每執(zhí)行一次之后,路徑選擇模塊就將其優(yōu)先級(jí)降低一級(jí);路徑選擇模塊將 還可采用全系統(tǒng)模擬器的用戶交互功能,對(duì)于用戶感興趣的路徑設(shè)置高級(jí)別的優(yōu)先級(jí)。
5.根據(jù)權(quán)利要求1所述的自動(dòng)二進(jìn)制惡意代碼行為分析系統(tǒng),其特征是當(dāng)所述符號(hào)執(zhí)行模塊發(fā)現(xiàn)并執(zhí)行新路徑時(shí),所述控制流分析模塊把該新路徑添加至控制流圖 CFG;控制流分析模塊通過(guò)執(zhí)行不同的代碼路徑來(lái)繪制控制流圖CFG,當(dāng)該代碼路徑被 動(dòng)態(tài)解壓、解密、生成時(shí),控制流分析模塊將轉(zhuǎn)儲(chǔ)內(nèi)存映像并且執(zhí)行靜態(tài)全程序控制流 分析以將新代碼路徑添加至控制流圖CFG。
6.根據(jù)權(quán)利要求1所述的自動(dòng)二進(jìn)制惡意代碼行為分析系統(tǒng),其特征是如果被分 析的二進(jìn)制惡意代碼可以預(yù)先進(jìn)行靜態(tài)反匯編,控制流分析模塊的分析可以建立在靜態(tài) 反匯編生成的控制流的基礎(chǔ)之上。
7.根據(jù)權(quán)利要求1所述的自動(dòng)二進(jìn)制惡意代碼行為分析系統(tǒng),其特征是如果所 述符號(hào)執(zhí)行模塊執(zhí)行了惡意行為列表中的Windows API函數(shù),惡意行為分析模塊就對(duì)與 Windows API函數(shù)相關(guān)聯(lián)的關(guān)聯(lián)代碼段采用反向切片的方法進(jìn)行分析。
8.根據(jù)權(quán)利要求1所述的自動(dòng)二進(jìn)制惡意代碼行為分析系統(tǒng),其特征是所述有效 輸入集分析模塊還可根據(jù)惡意行為分析模塊的結(jié)果生成目標(biāo)導(dǎo)向的輸入,找出能使惡意 行為程序朝著特定目標(biāo)執(zhí)行的輸入,并利用控制流圖CFG提取惡意行為模塊,跟蹤記錄 在惡意行為分析模塊中已經(jīng)探索過(guò)的惡意行為程序中的路徑;如果惡意代碼被加密,有 效輸入集分析模塊仍然能通過(guò)將分支對(duì)象制定為目標(biāo)對(duì)象來(lái)探索先前未執(zhí)行的分支。
9.根據(jù)權(quán)利要求1所述的自動(dòng)二進(jìn)制惡意代碼行為分析系統(tǒng),其特征是所述有效輸入集分析模塊通過(guò)生成只包含從惡意行為程序入口到目標(biāo)節(jié)點(diǎn)的路徑的 控制流圖CFG分片,把能達(dá)到目標(biāo)節(jié)點(diǎn)的路徑單獨(dú)區(qū)分出來(lái),然后選取了從源到目的的 最短路徑,稱為目標(biāo)路徑;目標(biāo)路徑包括一系列待執(zhí)行的條件跳轉(zhuǎn)目標(biāo),有效輸入集分 析模塊根據(jù)條件跳轉(zhuǎn)目標(biāo)所在執(zhí)行路徑上的路徑謂詞,求解出使條件跳轉(zhuǎn)目標(biāo)滿足的符 號(hào)變量的輸入值集,該輸入值即為觸發(fā)惡意代碼執(zhí)行的輸入值集,依據(jù)確定的符號(hào)變量 的輸入值集,全系統(tǒng)模擬器可以對(duì)惡意代碼模擬執(zhí)行,在受控環(huán)境下記錄惡意代碼的執(zhí) 行行為。
10.根據(jù)權(quán)利要求1所述的自動(dòng)二進(jìn)制惡意代碼行為分析系統(tǒng),其特征是所述全系統(tǒng)模擬器為Bochs全系統(tǒng)模擬器,或?yàn)閂mware全系統(tǒng)模擬器,或?yàn)镼EMU 全系統(tǒng)模擬器。
全文摘要
本發(fā)明涉及一種自動(dòng)二進(jìn)制惡意代碼行為分析系統(tǒng);該系統(tǒng)含有全系統(tǒng)模擬器、符號(hào)執(zhí)行模塊、路徑解析模塊、路徑選擇模塊、惡意行為分析模塊、控制流分析模塊和有效輸入集分析模塊,符號(hào)執(zhí)行模塊發(fā)現(xiàn)二進(jìn)制惡意代碼中依賴于符號(hào)變量的分支后產(chǎn)生路徑判定謂詞邏輯;路徑解析模塊對(duì)路徑判定謂詞邏輯進(jìn)行解析,并產(chǎn)生新的執(zhí)行路徑加入到路徑存儲(chǔ)池中;路徑選擇模塊對(duì)路徑存儲(chǔ)池中的路徑進(jìn)行優(yōu)先級(jí)設(shè)置;控制流分析模塊生成并連續(xù)更新控制流圖CFG;惡意行為分析模塊提取關(guān)聯(lián)代碼段實(shí)現(xiàn)的惡意行為特征和結(jié)構(gòu)特征;有效輸入集分析模塊找出使惡意行為程序按照特定路徑執(zhí)行的輸入值集;本發(fā)明提供了一種高效的自動(dòng)二進(jìn)制惡意代碼行為分析系統(tǒng)。
文檔編號(hào)G06F21/00GK102012987SQ201010570299
公開(kāi)日2011年4月13日 申請(qǐng)日期2010年12月2日 優(yōu)先權(quán)日2010年12月2日
發(fā)明者張平, 曾光裕, 李清寶 申請(qǐng)人:李清寶
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1