信息安全产品开发实践_第1页
信息安全产品开发实践_第2页
信息安全产品开发实践_第3页
信息安全产品开发实践_第4页
信息安全产品开发实践_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Insights and Answers for Security Professionals信息安全产品开发实践信息安全产品开发实践数据包的构造数据包的构造Gujianjun (ruth),ec 20071Insights and Answers for Security ProfessionalsLibnet介介绍绍2Insights and Answers for Security ProfessionalsLibnet介绍 Mike D. Schiffman http:/ 专业专业的网的网络络数据包构造和数据包构造和发发送开送开发发包包 包含了多路技包含了多路

2、技术术、缓缓冲区管理、网冲区管理、网络络数据包数据包头头信息、字信息、字节节流流顺顺序、操作系序、操作系统统兼容性、校兼容性、校验验和和计计算等算等 提供了在提供了在IP层层和和链链路路层层构造数据包的功能构造数据包的功能 应应用广泛:用广泛:ettercap、firewalk、snort、3Insights and Answers for Security ProfessionalsLibnet作用 构造任意数据内容构造任意数据内容 构造各种不同构造各种不同协议协议的数据包的数据包 支持从支持从链链路路层层到到IP层层数据包构造数据包构造 支持跨平台、自支持跨平台、自动计动计算校算校验验和和

3、4Insights and Answers for Security ProfessionalsLibnet函数 核心函数核心函数 地址函数地址函数 数据包构造函数数据包构造函数 数据包数据包发发送函数送函数 高高级处级处理函数理函数 Libnet句柄句柄队队列操作函数列操作函数 辅辅助函数具体助函数具体见见libnet_functions.h5Insights and Answers for Security ProfessionalsLibnet支持协议类型 具体具体见见libnet-structures.h6Insights and Answers for Security Profes

4、sionalsLibnet的开发的开发流程流程7Insights and Answers for Security Professionals初始化初始化libnet_init()构造构造TCP协议块协议块Libnet_build_tcp_options()构造构造IP头头Libnet_build_ipv4()发发送数据包送数据包libnet_write()销毁销毁libnet_destroy()构造构造TCP头头Libnet_build_tcp()构造以太网构造以太网头头libnet_build_ethernet()8Insights and Answers for Security Pro

5、fessionals初始化 由由libnet_init(int injection_type,char *device,char *err_buf)完成完成 Injection_type:表示构造的类型表示构造的类型 Device:表示网表示网络络接口接口 Err_buf:表示存放出表示存放出错错的信息的信息9Insights and Answers for Security Professionals初始化-确定libnet类型 6种类型种类型 LIBNET_LINK:表示构造表示构造链链路路层层开始的数据包,比开始的数据包,比IP层层的更丰富;的更丰富; LIBNET_RAW4:表示构造:

6、表示构造IPV4原始套接字接口类型的原始套接字接口类型的数据包;数据包; LIBNET_RAW6:表示构造:表示构造IPV6原始套接字接口类型的原始套接字接口类型的数据包;数据包;10Insights and Answers for Security Professionals初始化确定网络接口 数据包数据包发发送的接口送的接口 一种是自己指定,可以是网一种是自己指定,可以是网络络接口的名字,如以太网接接口的名字,如以太网接口口”eth0”等,也可以是等,也可以是IP地址;地址; 一种是由一种是由libnet自自动查询动查询搜索,只要在函数搜索,只要在函数libnet_init()的参数的参数

7、device赋值赋值null即可,此即可,此时时libnet会从系会从系统统中搜中搜索可用的网索可用的网络络接口接口11Insights and Answers for Security Professionals初始化获取libnet的句柄执执行完后返回一个行完后返回一个libnet句柄,在句柄,在这这个句柄里面包含了重要的信息不直接打个句柄里面包含了重要的信息不直接打交道交道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构造数据包 构造一个数据包就是构造一系列构造一个数据包就是构造一系列协议块协议块一个数据包是一个数据包是由一个由一个协议块协议块构成的构成的 例如:构造一个例如:构造一个tcp数据包,数据包, 、构造一个、构

13、造一个tcp协议块协议块,然后插入,然后插入协议块链协议块链表;表; 2、在构造一个、在构造一个ip协议块协议块,插入到,插入到tcp协议块协议块后面;后面; 、最后构造一个以太网、最后构造一个以太网协议块协议块,插入到,插入到ip协议块协议块后后面面16Insights and Answers for Security Professionals数据包检测 数据包的数据包的检测检测最主要的是最主要的是计计算校算校验验和,如果不想自己和,如果不想自己计计算校算校验验和,只需要将校和,只需要将校验验和的参数和的参数赋值为赋值为即可,即可,libnet就会自就会自动计动计算校算校验验和和17Ins

14、ights and Answers for Security Professionals数据包发送 非常非常简单简单,只需要由函数,只需要由函数libnet_write()函数完成的函数完成的18Insights and Answers for Security Professionals构造构造arp数据包的流程数据包的流程19Insights and Answers for Security Professionals过程说明 1、利用函数、利用函数libnet_init()进进行初始化操作,因行初始化操作,因为为arp协协议议在网在网络层络层,所以必,所以必须须先构造先构造arp协议块协

15、议块,也就是利用,也就是利用函数函数libnet_build_arp()来构造来构造arp协议块协议块; 、利用函数、利用函数libnet_autobuild_ethernet()或者或者libnet_build_ethernet()来构造以太网来构造以太网协议块协议块; 、利用函数、利用函数libnet_write()发发送数据包;送数据包;20Insights and Answers for Security Professionals初始化初始化libnet_init()构造构造ARP协议块协议块Libnet_build_arp()Libnet_autobuild_arp()构造以太网构

16、造以太网协议块协议块Libnet_build_ethernet()Libnet_autobuild_ethernet()发发送数据包送数据包libnet_write()销毁销毁libnet_destroy()21Insights and Answers for Security Professionals数据包的构造及数据包的构造及设计设计22Insights and Answers for Security Professionals过程简单说明 1、对内存进行初试化; 2、对网络进行初始化; 3、构造各种网络数据包; 4、对数据包进行合法性检查 5、发送网络数据包23Insights an

17、d Answers for Security Professionals初始化函数 由由libnet_init(int injection_type,char *device,char *err_buf)完成完成 函数返回函数返回值值:如果成功就返回一个:如果成功就返回一个libnet句柄,如果失句柄,如果失败败,则则返回返回null 参数描述:参数描述:Injection_type:表示构造的类型,表示构造的类型,Device:表示网表示网络络接口,接口,Err_buf:表示存放出表示存放出错错的信息的信息24Insights and Answers for Security Profess

18、ionals地址函数 由由char * libnet_addr2name4(u_init32_t,u_int8_t usr_name)完成完成 函数返回函数返回值值:返回:返回IPV4地址的文字面熟字符串格式地址的文字面熟字符串格式 参数描述:参数参数描述:参数in表示网表示网络络字字节顺节顺序的序的ipv4地址,参数地址,参数use_name表示是否需要表示是否需要进进行名字行名字25Insights and Answers for Security Professionals构造函数 由由u_int32_t libnet_name2addr4(libnet_t *l,char * host

19、_name,u_int8_t use_name)完成完成 函数返回函数返回值值:返回网:返回网络络字字节顺节顺序序IPV4地址地址 参数描述:参数参数描述:参数l表示表示libnet句柄,参数句柄,参数host_name表示表示主机名字,参数主机名字,参数use_name表示是否要表示是否要进进行域名解析行域名解析 destination_ip=libnet_name2addr4(1,destination_ip_str,LIBNET_RESOLVE)26Insights and Answers for Security Professionals构造函数libnet_build_arp()() 函数返回函数返回值值:返回一个:返回一个协议标协议标志,失志,失败败返回返回27Insights and Answers for Security Professionals构造函数 lib

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论