專利名稱:用于網(wǎng)絡(luò)安全滲透測試的緩沖區(qū)溢出的植入代碼快速生成系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及網(wǎng)絡(luò)安全的技術(shù)領(lǐng)域,特別是一種用于網(wǎng)絡(luò)安全滲透測試的緩沖區(qū)溢 出的植入代碼快速生成系統(tǒng)。
背景技術(shù):
緩沖區(qū)溢出攻擊是一種攻擊計算機系統(tǒng)的手段,通過往被攻擊程序的緩沖區(qū)寫入 精心安排的超長內(nèi)容,造成緩沖區(qū)溢出、越界,破壞程序執(zhí)行邏輯,使之轉(zhuǎn)向執(zhí)行其他指令, 從而達到攻擊者的目的。由于緩沖區(qū)溢出涉及CPU、操作系統(tǒng)、高級程序語言和編譯器等原 因,長期以來由緩沖區(qū)溢出所造成的安全隱患一直是網(wǎng)絡(luò)安全漏洞的主要原因。
滲透測試作為網(wǎng)絡(luò)安全中用于檢測網(wǎng)絡(luò)防御方案實際效果的主要手段,需要再現(xiàn) 真實的攻擊技術(shù),因此緩沖區(qū)溢出攻擊是滲透測試過程中獲取訪問權(quán)限,入侵目標系統(tǒng)的 重要手段。長期以來,實現(xiàn)緩沖區(qū)溢出的主要技術(shù)難點集中在實現(xiàn)溢出的植入代碼的構(gòu)造 方面,滲透測試人員需要花費大量的精力尋找或者手工定制二進制代碼,在該定制過程中 需要考慮漏洞的具體特征、所在操作系統(tǒng)的內(nèi)存管理方式和CPU指令類型等諸多因素,任 何微小的錯誤都會造成測試的失敗。因此,如何幫助測試人員快速的生成可用于滲透測試 的緩沖區(qū)溢出植入代碼,會對滲透測試的工作效率和準確性產(chǎn)生重大影響。發(fā)明內(nèi)容
本發(fā)明為克服現(xiàn)有技術(shù)中存在的不足,提出了一種用于網(wǎng)絡(luò)安全滲透測試的緩沖 區(qū)溢出的植入代碼快速生成系統(tǒng)及方法,以解決滲透領(lǐng)域植入代碼需要人工分析定制的現(xiàn) 狀,提高滲透測試的工作效率和準確率。
本發(fā)明采用的技術(shù)方案為一種用于網(wǎng)絡(luò)安全滲透測試的緩沖區(qū)溢出的植入代碼 快速生成系統(tǒng),該快速生成系統(tǒng)主要有以下幾部分組成
植入代碼屬性描述器其提供系統(tǒng)的人機交互接口,由滲透測試的使用者對目標 相關(guān)屬性做出描述,而后輸入到語言解釋構(gòu)造器;
語言解釋構(gòu)造器其是快速生成系統(tǒng)的核心部件,負責從外部讀入植入代碼的描 述語言,而后依據(jù)語言解釋構(gòu)造器自身的規(guī)則,從漏洞特征庫和執(zhí)行代碼庫中獲取有關(guān)的 信息,最后加以組合,產(chǎn)生植入代碼;
漏洞特征庫其主要存放具體的漏洞信息,包括該漏洞的用于快速檢索的所屬的 服務類型、植入代碼的類型、返回值地址;
執(zhí)行代碼庫其在該數(shù)據(jù)庫中主要存放著構(gòu)造植入代碼所需要的可執(zhí)行代碼 (shellcode)信息和填充數(shù)據(jù),同時以漏洞特征庫里面返回的植入代碼類型作為進一步檢 索依據(jù),返回滿足特定代碼需求的shellcode。
所述的植入代碼類型和主機類型分別為操作系統(tǒng)版本信息和CPU類型。
所述的存放著構(gòu)造植入代碼所需要的可執(zhí)行代碼信息和填充數(shù)據(jù)和CPU、操作系統(tǒng)聯(lián)系密切,需要以CPU和操作系統(tǒng)的類型作為檢索條件。
本發(fā)明與現(xiàn)有技術(shù)相比的優(yōu)點在于
(I)、滲透測試人員只需要按照描述語言格式輸入需要產(chǎn)生的植入代碼屬性,既可 以從系統(tǒng)中獲取準確的植入代碼,提高了滲透測試的效率。
(2)、為生成系統(tǒng)提供支撐的漏洞庫、執(zhí)行代碼庫等數(shù)據(jù)庫系統(tǒng)可以及時獲取網(wǎng)絡(luò) 的資源更新,確保滲透測試的成功運行。
圖1為本發(fā)明所使用的系統(tǒng)結(jié)構(gòu)圖2為植入代碼四種基本類型的示意圖3生成系統(tǒng)工作流程圖。
具體實施方式
下面結(jié)合附圖和具體實施方式
進一步說明本發(fā)明。
一種用于網(wǎng)絡(luò)安全滲透測試的緩沖區(qū)溢出的植入代碼快速生成系統(tǒng),該快速生成 系統(tǒng)主要有以下幾部分組成
植入代碼屬性描述器提供系統(tǒng)的人機交互接口,由滲透測試的使用者對目標相 關(guān)屬性做出描述,而后輸入到語言解釋構(gòu)造器。
語言解釋構(gòu)造器語言解釋構(gòu)造器是快速生成系統(tǒng)的核心部件,負責從外部讀入 植入代碼的描述語言,而后依據(jù)解釋構(gòu)造器內(nèi)部的規(guī)則,從已知的漏洞特征庫和執(zhí)行代碼 庫中獲取有關(guān)的信息,最后加以組合,產(chǎn)生植入代碼。
漏洞特征庫主要存放具體的漏洞信息,包括該漏洞的所屬的服務類型(用于快速 檢索)、植入代碼的類型、返回值地址等,具體的內(nèi)容需要對漏洞分析得出。
執(zhí)行代碼庫在該數(shù)據(jù)庫中主要存放著構(gòu)造植入代碼所需要的shellcode信息和 填充數(shù)據(jù),這類信息和CPU、操作系統(tǒng)聯(lián)系密切,因此需要以CPU和操作系統(tǒng)的類型作為檢 索條件,同時以漏洞特征庫里面返回的植入代碼類型作為進一步檢索依據(jù),返回滿足特定 代碼需求的shellcode。
本發(fā)明系統(tǒng)的實施步驟為
(I)初始化階段,滲透測試人員按照預先獲取的測試節(jié)點的信息(包括滲透測試的 目標IP和端口號、溢出漏洞具體信息、主機的操作系統(tǒng)類型和CPU類型和攻擊效果等),使 用描述語言對其進行描述,而后將這些信息輸入到植入代碼構(gòu)造語言的解釋器中。
(2)語言解釋器是在收到植入代碼的描述語句之后,根據(jù)自身的規(guī)則,以輸入的信 息為條件,執(zhí)行數(shù)據(jù)庫查詢工作,通過對漏洞特征庫和執(zhí)行代碼庫的查詢,獲取組成植入代 碼的基本元素shellcode、返回地址、填充數(shù)據(jù)和植入代碼的類型。
(3)語言解釋器按照植入代碼的類型,將shellcode、返回地址和填充數(shù)據(jù)進行組 裝,輸出產(chǎn)生的植入代碼。
具體的植入代碼組裝技術(shù)如下
植入代碼一般由shellcode、返回地址和填充數(shù)據(jù)三部分組成。其中shellcode負 責溢出后代碼的具體執(zhí)行,是植入代碼的核心部分,實現(xiàn)基本的獲權(quán)訪問或其他的系統(tǒng)操作。返回地址表示shellcode的入口地址,滲透測試過程中通過返回地址改變程序的執(zhí)行流程,轉(zhuǎn)向執(zhí)行預先準備的代碼,通常伴隨跳轉(zhuǎn)指令實現(xiàn)??紤]到內(nèi)存的分配,跳轉(zhuǎn)的地址通常會處于一個較小的地址空間內(nèi)并具有規(guī)律性。同時為了提高跳轉(zhuǎn)的成果概率,需要使用一定數(shù)量的填充數(shù)據(jù)用于保障跳轉(zhuǎn)地址可以落在指定的區(qū)域內(nèi),保證shellcode的正常執(zhí)行。
針對shellcode、返回地址(簡記為R)和填充數(shù)據(jù)(記做N或者A)的組合方式,可以分為以下幾種類型
NSR型該類型主要在shellcode后安排一定數(shù)量的返回地址,用于指令跳轉(zhuǎn),前面則安排大量的返回地址,這種情況下代碼向前跳轉(zhuǎn)執(zhí)行指令。該類型適用于緩沖區(qū)比較大的情況。
RNS型該類型適用于緩沖區(qū)比較小的情況,返回地址放在植入代碼的前段,其后仿真填充數(shù)據(jù),而把shellcode放置在最后的位置,可以安排在緩沖區(qū)之外的空間,用以實現(xiàn)獲權(quán) 訪問等活動。
AR型該類型的植入代碼分做兩部分,進入緩沖區(qū)的植入代碼主要為填充數(shù)據(jù)和返回地址,shellcode代碼則直接放置在其他位置,該類植入代碼適合用于本地的滲透測試。
NRS型該類型主要通過植入代碼的跳轉(zhuǎn)到指定系統(tǒng)動態(tài)鏈接庫,再通過動態(tài)鏈接庫的函數(shù)調(diào)用跳轉(zhuǎn)回指定的shellcode。這種方式可以通過動態(tài)鏈接庫有效的定位溢出代碼,同時也可以避免shellcode在內(nèi)存限制區(qū)域被破壞的情況。
植入代碼主要由字符集、單詞集、表達式和語句四部分組成,其中字符集為
〈字符集>二=<字母> I <數(shù)字>1〈符號>I〈|P基數(shù)>
〈字母>::=[a-zA-Z]
〈數(shù)字=
〈符號=-L
〈IP基數(shù)>::=(
[1-9]
11
2
I 25
)
單詞集
<單詞集>::=〈保留字>1〈常量〉
常量=〈字符常量>〈整數(shù)常量> I〈ip常量〉
<字符常量>::= <字母> I <字符常量 >〈字母> I <字符常量X數(shù)字> I <量X符號>
<整數(shù)常量>=<數(shù)字〉<整數(shù)常量X數(shù)字>
〈IP 常量 >:::=〈IP基數(shù)>·〈IP基數(shù)>·〈IP基數(shù)>·〈IP基數(shù)>
表達式
<表達式>:::=<賦值表達式>
<賦值表達式 >::=〈保留字 >’=’ < 常量>
語句
<語句>::=<賦值語句>
植入代碼屬性描述器使用的語句語法規(guī)則為
規(guī)則⑴
<attack_description>::=<descrip_sentence>
I<descrip_sentence><attack_description>
它表植入代碼的屬性描述可以由若干條描述語句構(gòu)成;
規(guī)則(2):〈descrip_sentence>:: =〈key_word>,=,〈constant〉。它表不描述語句可以由賦值表達式組成。
規(guī)則(3) <constant>::=<char_constant>|<integer_constant>I<ip_ constant〉。表示常量(constant)可以由字符常量(char_constant)或者整數(shù)常量 (integer_constant)或者 ip 常量(ip_constant)構(gòu)成。
規(guī)則(4)是
<char_constant>::=<letter>
<char_constant><letter>
<char_constant><digit>
<char_constant><symbol>
表示字符常量可以是由字母、數(shù)字和一些符號構(gòu)成,并且開頭必須是字母。
規(guī)則(5) <integer_constant>: : =<digit> | <integer_constant><digit>0 表不整數(shù)常量是由若干個阿拉伯數(shù)字組成。
規(guī)則(6)
<ip_constant> : : = <ip_dotted_decimal_numer>. <ip_dotted_decimal_ numer>. <ip_dotted_decimal_numer>.〈ip_dotted_decimal_numer>。
表示ip_constant常量等于ipv4地址常量,是由4個點分十進制數(shù)(ip_dotted_ decimal_numer)組成。
規(guī)貝丨J(7) :〈key_word>: : =vulner_id I os I cpu I ip I port I effect。表不在第 2 條規(guī)則中的key_word可以由vulner_id或者os或者cpu或者ip或者port構(gòu)成。
規(guī)則(8)<digit>::=0|l|2|3|4|5|6|7|8|9o 表示阿拉伯數(shù)字是 O— 9 這十個數(shù)字。
規(guī)則(9)
〈letter〉::=a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z
a|b|c|d|e|f|g|h|11j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z0
表示letter可以是26個小寫英文和26個大寫英文共52個字母。
規(guī)則(10) <symbol>::=-|_0表示symbol可以是連接符號和下劃線“_”兩個符號組成。
規(guī)則(11)
<ip_dotted_decimal_numer>:: = (
| [1-9]
|I
|2
I 25
)。
表示點分十進制數(shù)(ip_dotted_decimal_numer)可以是
或者[1-9]
或者I
或者2
或者25
這幾種數(shù)字形式組成。
11條語法規(guī)則中,7-11條是字母表,而1-6條規(guī)則在該字母表的基礎(chǔ)上產(chǎn)生相應的單詞集,再由該單詞集組合而成表達式,最后表達式組成描述植入代碼的語句形式
〈IP地址I端口 X溢出漏洞名稱X目標操作系統(tǒng)類型X目標CPU類型X滲透效果>
當描述植入代碼的語句輸入到解釋器后,語言解釋器按照如下規(guī)則實現(xiàn)植入代碼 的生成
A.已知溢出漏洞,就能夠知道漏洞的返回地址R、溢出構(gòu)造類型及其服務提供的連 接類型。
B.已知目標操作系統(tǒng)類型、CPU類型和攻擊效果,就能夠確定shellcode及其長度。
C.已知目標操作系統(tǒng)類型、CPU類型,就能夠確定填充數(shù)據(jù)。
D.已知R及其數(shù)量、shellcode和填充數(shù)據(jù),就能夠構(gòu)造合適的溢出代碼。
在生成系統(tǒng)運行過程中(如圖3所示),首先對輸入的語句執(zhí)行詞法掃描,在確認 無誤后,實行語法掃描,即執(zhí)行A D的規(guī)則,若無誤,則分別從輸入的語句中提取出漏洞、 shellcode等信息,填充元素等,最后構(gòu)造植入代碼。
例如對windows2000SP4操作系統(tǒng)環(huán)境下,漏洞編號2006002,CPU類型為x86,IP 地址/端口 202. 193. 161. 241 :4444,滲透效果為4級。
描述語言表示為
Attack—description { os=windows2000;cpu=x86;ip=202J93.16L241;por=4444;vulner_id=e004}
可得到如下的植入代碼
權(quán)利要求
1.一種用于網(wǎng)絡(luò)安全滲透測試的緩沖區(qū)溢出的植入代碼快速生成系統(tǒng),其特征在于, 該快速生成系統(tǒng)主要有以下幾部分組成植入代碼屬性描述器其提供系統(tǒng)的人機交互接口,由滲透測試的使用者對目標相關(guān)屬性做出描述,而后輸入到語言解釋構(gòu)造器;語言解釋構(gòu)造器其是快速生成系統(tǒng)的核心部件,負責從外部讀入植入代碼的描述語言,而后依據(jù)語言解釋構(gòu)造器自身的規(guī)則,從漏洞特征庫和執(zhí)行代碼庫中獲取有關(guān)的信息, 最后加以組合,產(chǎn)生植入代碼;漏洞特征庫其主要存放具體的漏洞信息,包括該漏洞的用于快速檢索的所屬服務類型、植入代碼的類型、返回值地址;執(zhí)行代碼庫其在該數(shù)據(jù)庫中主要存放著構(gòu)造植入代碼所需要的可執(zhí)行代碼 (shellcode)信息和填充數(shù)據(jù),以漏洞特征庫里面返回的植入代碼類型作為檢索依據(jù),返回滿足特定代碼需求的shellcode。
2.根據(jù)權(quán)利要求1所述的一種用于網(wǎng)絡(luò)安全滲透測試的緩沖區(qū)溢出的植入代碼快速生成系統(tǒng),其特征在于,所述的植入代碼類型和主機類型分別為操作系統(tǒng)版本信息和CPU 類型。
3.根據(jù)權(quán)利要求1所述的一種用于網(wǎng)絡(luò)安全滲透測試的緩沖區(qū)溢出的植入代碼快速生成系統(tǒng),其特征在于,所述的存放著構(gòu)造植入代碼所需要的可執(zhí)行代碼信息和填充數(shù)據(jù)和CPU、操作系統(tǒng)聯(lián)系密切,需要以CPU和操作系統(tǒng)的類型作為檢索條件。
全文摘要
本發(fā)明公開了一種用于網(wǎng)絡(luò)安全滲透測試的緩沖區(qū)溢出的植入代碼快速生成系統(tǒng),該系統(tǒng)基于植入代碼生成的描述語言,滲透測試方根據(jù)滲透目標的CPU、操作系統(tǒng)、漏洞信息,描述出植入代碼的需求特征,使用特定語言解釋器,調(diào)用漏洞特征庫和執(zhí)行代碼庫等數(shù)據(jù)庫,快速產(chǎn)生用于滲透測試的植入代碼。該發(fā)明避免了滲透測試過程中手工產(chǎn)生植入代碼的繁瑣過程,使用者只需給出攻擊目標的一些特征,系統(tǒng)就會按照預先生成的產(chǎn)生規(guī)則快速生成滲透測試所需要的植入代碼,提高了滲透測試的工作效率和準確率。
文檔編號G06F21/54GK102999717SQ20121047262
公開日2013年3月27日 申請日期2012年11月20日 優(yōu)先權(quán)日2012年11月20日
發(fā)明者焦健, 李肖堅, 鐘達夫 申請人:北京信息科技大學