信息安全產(chǎn)品開發(fā)實(shí)踐_第1頁
信息安全產(chǎn)品開發(fā)實(shí)踐_第2頁
信息安全產(chǎn)品開發(fā)實(shí)踐_第3頁
信息安全產(chǎn)品開發(fā)實(shí)踐_第4頁
信息安全產(chǎn)品開發(fā)實(shí)踐_第5頁
已閱讀5頁,還剩26頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、Insights and Answers for Security Professionals信息安全產(chǎn)品開發(fā)實(shí)踐信息安全產(chǎn)品開發(fā)實(shí)踐數(shù)據(jù)包的構(gòu)造數(shù)據(jù)包的構(gòu)造Gujianjun (ruth),ec 20071Insights and Answers for Security ProfessionalsLibnet介介紹紹2Insights and Answers for Security ProfessionalsLibnet介紹 Mike D. Schiffman http:/ 專業(yè)專業(yè)的網(wǎng)的網(wǎng)絡(luò)絡(luò)數(shù)據(jù)包構(gòu)造和數(shù)據(jù)包構(gòu)造和發(fā)發(fā)送開送開發(fā)發(fā)包包 包含了多路技包含了多路

2、技術(shù)術(shù)、緩緩沖區(qū)管理、網(wǎng)沖區(qū)管理、網(wǎng)絡(luò)絡(luò)數(shù)據(jù)包數(shù)據(jù)包頭頭信息、字信息、字節(jié)節(jié)流流順順序、操作系序、操作系統(tǒng)統(tǒng)兼容性、校兼容性、校驗(yàn)驗(yàn)和和計(jì)計(jì)算等算等 提供了在提供了在IP層層和和鏈鏈路路層層構(gòu)造數(shù)據(jù)包的功能構(gòu)造數(shù)據(jù)包的功能 應(yīng)應(yīng)用廣泛:用廣泛:ettercap、firewalk、snort、3Insights and Answers for Security ProfessionalsLibnet作用 構(gòu)造任意數(shù)據(jù)內(nèi)容構(gòu)造任意數(shù)據(jù)內(nèi)容 構(gòu)造各種不同構(gòu)造各種不同協(xié)議協(xié)議的數(shù)據(jù)包的數(shù)據(jù)包 支持從支持從鏈鏈路路層層到到IP層層數(shù)據(jù)包構(gòu)造數(shù)據(jù)包構(gòu)造 支持跨平臺(tái)、自支持跨平臺(tái)、自動(dòng)計(jì)動(dòng)計(jì)算校算校驗(yàn)驗(yàn)和和

3、4Insights and Answers for Security ProfessionalsLibnet函數(shù) 核心函數(shù)核心函數(shù) 地址函數(shù)地址函數(shù) 數(shù)據(jù)包構(gòu)造函數(shù)數(shù)據(jù)包構(gòu)造函數(shù) 數(shù)據(jù)包數(shù)據(jù)包發(fā)發(fā)送函數(shù)送函數(shù) 高高級(jí)處級(jí)處理函數(shù)理函數(shù) Libnet句柄句柄隊(duì)隊(duì)列操作函數(shù)列操作函數(shù) 輔輔助函數(shù)具體助函數(shù)具體見見libnet_functions.h5Insights and Answers for Security ProfessionalsLibnet支持協(xié)議類型 具體具體見見libnet-structures.h6Insights and Answers for Security Profes

4、sionalsLibnet的開發(fā)的開發(fā)流程流程7Insights and Answers for Security Professionals初始化初始化libnet_init()構(gòu)造構(gòu)造TCP協(xié)議塊協(xié)議塊Libnet_build_tcp_options()構(gòu)造構(gòu)造IP頭頭Libnet_build_ipv4()發(fā)發(fā)送數(shù)據(jù)包送數(shù)據(jù)包libnet_write()銷毀銷毀libnet_destroy()構(gòu)造構(gòu)造TCP頭頭Libnet_build_tcp()構(gòu)造以太網(wǎng)構(gòu)造以太網(wǎng)頭頭libnet_build_ethernet()8Insights and Answers for Security Pro

5、fessionals初始化 由由libnet_init(int injection_type,char *device,char *err_buf)完成完成 Injection_type:表示構(gòu)造的類型表示構(gòu)造的類型 Device:表示網(wǎng)表示網(wǎng)絡(luò)絡(luò)接口接口 Err_buf:表示存放出表示存放出錯(cuò)錯(cuò)的信息的信息9Insights and Answers for Security Professionals初始化-確定libnet類型 6種類型種類型 LIBNET_LINK:表示構(gòu)造表示構(gòu)造鏈鏈路路層層開始的數(shù)據(jù)包,比開始的數(shù)據(jù)包,比IP層層的更豐富;的更豐富; LIBNET_RAW4:表示構(gòu)造:

6、表示構(gòu)造IPV4原始套接字接口類型的原始套接字接口類型的數(shù)據(jù)包;數(shù)據(jù)包; LIBNET_RAW6:表示構(gòu)造:表示構(gòu)造IPV6原始套接字接口類型的原始套接字接口類型的數(shù)據(jù)包;數(shù)據(jù)包;10Insights and Answers for Security Professionals初始化確定網(wǎng)絡(luò)接口 數(shù)據(jù)包數(shù)據(jù)包發(fā)發(fā)送的接口送的接口 一種是自己指定,可以是網(wǎng)一種是自己指定,可以是網(wǎng)絡(luò)絡(luò)接口的名字,如以太網(wǎng)接接口的名字,如以太網(wǎng)接口口”eth0”等,也可以是等,也可以是IP地址;地址; 一種是由一種是由libnet自自動(dòng)查詢動(dòng)查詢搜索,只要在函數(shù)搜索,只要在函數(shù)libnet_init()的參數(shù)的參數(shù)

7、device賦值賦值null即可,此即可,此時(shí)時(shí)libnet會(huì)從系會(huì)從系統(tǒng)統(tǒng)中搜中搜索可用的網(wǎng)索可用的網(wǎng)絡(luò)絡(luò)接口接口11Insights and Answers for Security Professionals初始化獲取libnet的句柄執(zhí)執(zhí)行完后返回一個(gè)行完后返回一個(gè)libnet句柄,在句柄,在這這個(gè)句柄里面包含了重要的信息不直接打個(gè)句柄里面包含了重要的信息不直接打交道交道struct libnet_context#if (_WIN32_) & !(_CYGWIN_) SOCKET fd; LPADAPTER lpAdapter;#else int fd; /* file descrip

8、tor of packet device */#endif 12Insights and Answers for Security Professionalsint injection_type; /* raw (ipv4 or ipv6) or link */#define LIBNET_LINK 0 x00 /* link-layer interface */#define LIBNET_RAW4 0 x01 /* raw socket interface (ipv4) */#define LIBNET_RAW6 0 x02 /* raw socket interface (ipv6) *

9、/* the following should actually set a flag in the flags variable above */#define LIBNET_LINK_ADV 0 x08 /* advanced mode link-layer */#define LIBNET_RAW4_ADV 0 x09 /* advanced mode raw socket (ipv4) */#define LIBNET_RAW6_ADV 0 x0a /* advanced mode raw socket (ipv6) */#define LIBNET_ADV_MASK 0 x08 /*

10、 mask to determine adv mode */ 13Insights and Answers for Security Professionals libnet_pblock_t *protocol_blocks; /* protocol headers / data */ libnet_pblock_t *pblock_end; /* last node in list */ u_int32_t n_pblocks; /* number of pblocks */ int link_type; /* link-layer type */ int link_offset; /*

11、link-layer header size */ int aligner; /* used to align packets */ char *device; /* device name */14Insights and Answers for Security Professionals struct libnet_stats stats; /* statistics */ libnet_ptag_t ptag_state; /* state holder for pblock tag */ char labelLIBNET_LABEL_SIZE; /* textual label fo

12、r cq interface */ char err_bufLIBNET_ERRBUF_SIZE; /* error buffer */ u_int32_t total_size; /* total size */;typedef struct libnet_context libnet_t;15Insights and Answers for Security Professionals構(gòu)造數(shù)據(jù)包 構(gòu)造一個(gè)數(shù)據(jù)包就是構(gòu)造一系列構(gòu)造一個(gè)數(shù)據(jù)包就是構(gòu)造一系列協(xié)議塊協(xié)議塊一個(gè)數(shù)據(jù)包是一個(gè)數(shù)據(jù)包是由一個(gè)由一個(gè)協(xié)議塊協(xié)議塊構(gòu)成的構(gòu)成的 例如:構(gòu)造一個(gè)例如:構(gòu)造一個(gè)tcp數(shù)據(jù)包,數(shù)據(jù)包, 、構(gòu)造一個(gè)、構(gòu)

13、造一個(gè)tcp協(xié)議塊協(xié)議塊,然后插入,然后插入?yún)f(xié)議塊鏈協(xié)議塊鏈表;表; 2、在構(gòu)造一個(gè)、在構(gòu)造一個(gè)ip協(xié)議塊協(xié)議塊,插入到,插入到tcp協(xié)議塊協(xié)議塊后面;后面; 、最后構(gòu)造一個(gè)以太網(wǎng)、最后構(gòu)造一個(gè)以太網(wǎng)協(xié)議塊協(xié)議塊,插入到,插入到ip協(xié)議塊協(xié)議塊后后面面16Insights and Answers for Security Professionals數(shù)據(jù)包檢測(cè) 數(shù)據(jù)包的數(shù)據(jù)包的檢測(cè)檢測(cè)最主要的是最主要的是計(jì)計(jì)算校算校驗(yàn)驗(yàn)和,如果不想自己和,如果不想自己計(jì)計(jì)算校算校驗(yàn)驗(yàn)和,只需要將校和,只需要將校驗(yàn)驗(yàn)和的參數(shù)和的參數(shù)賦值為賦值為即可,即可,libnet就會(huì)自就會(huì)自動(dòng)計(jì)動(dòng)計(jì)算校算校驗(yàn)驗(yàn)和和17Ins

14、ights and Answers for Security Professionals數(shù)據(jù)包發(fā)送 非常非常簡(jiǎn)單簡(jiǎn)單,只需要由函數(shù),只需要由函數(shù)libnet_write()函數(shù)完成的函數(shù)完成的18Insights and Answers for Security Professionals構(gòu)造構(gòu)造arp數(shù)據(jù)包的流程數(shù)據(jù)包的流程19Insights and Answers for Security Professionals過程說明 1、利用函數(shù)、利用函數(shù)libnet_init()進(jìn)進(jìn)行初始化操作,因行初始化操作,因?yàn)闉閍rp協(xié)協(xié)議議在網(wǎng)在網(wǎng)絡(luò)層絡(luò)層,所以必,所以必須須先構(gòu)造先構(gòu)造arp協(xié)議塊協(xié)

15、議塊,也就是利用,也就是利用函數(shù)函數(shù)libnet_build_arp()來構(gòu)造來構(gòu)造arp協(xié)議塊協(xié)議塊; 、利用函數(shù)、利用函數(shù)libnet_autobuild_ethernet()或者或者libnet_build_ethernet()來構(gòu)造以太網(wǎng)來構(gòu)造以太網(wǎng)協(xié)議塊協(xié)議塊; 、利用函數(shù)、利用函數(shù)libnet_write()發(fā)發(fā)送數(shù)據(jù)包;送數(shù)據(jù)包;20Insights and Answers for Security Professionals初始化初始化libnet_init()構(gòu)造構(gòu)造ARP協(xié)議塊協(xié)議塊Libnet_build_arp()Libnet_autobuild_arp()構(gòu)造以太網(wǎng)構(gòu)

16、造以太網(wǎng)協(xié)議塊協(xié)議塊Libnet_build_ethernet()Libnet_autobuild_ethernet()發(fā)發(fā)送數(shù)據(jù)包送數(shù)據(jù)包libnet_write()銷毀銷毀libnet_destroy()21Insights and Answers for Security Professionals數(shù)據(jù)包的構(gòu)造及數(shù)據(jù)包的構(gòu)造及設(shè)計(jì)設(shè)計(jì)22Insights and Answers for Security Professionals過程簡(jiǎn)單說明 1、對(duì)內(nèi)存進(jìn)行初試化; 2、對(duì)網(wǎng)絡(luò)進(jìn)行初始化; 3、構(gòu)造各種網(wǎng)絡(luò)數(shù)據(jù)包; 4、對(duì)數(shù)據(jù)包進(jìn)行合法性檢查 5、發(fā)送網(wǎng)絡(luò)數(shù)據(jù)包23Insights an

17、d Answers for Security Professionals初始化函數(shù) 由由libnet_init(int injection_type,char *device,char *err_buf)完成完成 函數(shù)返回函數(shù)返回值值:如果成功就返回一個(gè):如果成功就返回一個(gè)libnet句柄,如果失句柄,如果失敗敗,則則返回返回null 參數(shù)描述:參數(shù)描述:Injection_type:表示構(gòu)造的類型,表示構(gòu)造的類型,Device:表示網(wǎng)表示網(wǎng)絡(luò)絡(luò)接口,接口,Err_buf:表示存放出表示存放出錯(cuò)錯(cuò)的信息的信息24Insights and Answers for Security Profess

18、ionals地址函數(shù) 由由char * libnet_addr2name4(u_init32_t,u_int8_t usr_name)完成完成 函數(shù)返回函數(shù)返回值值:返回:返回IPV4地址的文字面熟字符串格式地址的文字面熟字符串格式 參數(shù)描述:參數(shù)參數(shù)描述:參數(shù)in表示網(wǎng)表示網(wǎng)絡(luò)絡(luò)字字節(jié)順節(jié)順序的序的ipv4地址,參數(shù)地址,參數(shù)use_name表示是否需要表示是否需要進(jìn)進(jìn)行名字行名字25Insights and Answers for Security Professionals構(gòu)造函數(shù) 由由u_int32_t libnet_name2addr4(libnet_t *l,char * host

19、_name,u_int8_t use_name)完成完成 函數(shù)返回函數(shù)返回值值:返回網(wǎng):返回網(wǎng)絡(luò)絡(luò)字字節(jié)順節(jié)順序序IPV4地址地址 參數(shù)描述:參數(shù)參數(shù)描述:參數(shù)l表示表示libnet句柄,參數(shù)句柄,參數(shù)host_name表示表示主機(jī)名字,參數(shù)主機(jī)名字,參數(shù)use_name表示是否要表示是否要進(jìn)進(jìn)行域名解析行域名解析 destination_ip=libnet_name2addr4(1,destination_ip_str,LIBNET_RESOLVE)26Insights and Answers for Security Professionals構(gòu)造函數(shù)libnet_build_arp()() 函數(shù)返回函數(shù)返回值值:返回一個(gè):返回一個(gè)協(xié)議標(biāo)協(xié)議標(biāo)志,失志,失敗敗返回返回27Insights and Answers for Security Professionals構(gòu)造函數(shù) lib

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論