博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【Socket】linux黑客之网络嗅探底层原理
阅读量:6910 次
发布时间:2019-06-27

本文共 3634 字,大约阅读时间需要 12 分钟。

 
1.mystery引入
  1)网络嗅探属于网络攻防类的安全软件,其基于原始套接字技术开发的
  2)原始套接字是一种套接字底层技术,它工作在网络层
  3)谈到网络安全,刚好本学期学过这门课程,这里mystery总结下基于原始套接字技术开发的网络安全软件类型
   木马中的通信模块:为了躲避杀毒软件的检测,有一些木马程序采用原始套接字技术进行通信,例如,开启本地嗅探,对特定格式的ICMP报文进行响应触发。对外传输数据时采用自定义的报文格式,比如伪造成80端口中的请求或响应数据以逃过防火墙的阻断。
   伪造IP地址:生成自定义格式的IP报文,填充任意的IP源地址,以达到伪装自己的目的。在局域网上的ARP病毒就是基于这种原理
   拒绝服务攻击:类似于伪造IP地址,通过自定义特定格式的IP报文,向目标机器以送大量的同类型信息,以达到淹没对方处理能力的目的。由于这种非法报文会占据大量的目标机器的资源,造成服务不能正常运行,从而实现拒绝服务的目的。
   数据包嗅探:数据包嗅探是原始套接字技术最广泛的一项应用,通过设置网卡的工作模式,采集所有流经本网卡的网络数据包,通过分析数据包,以达到既定的目的
   4)在原始套接字中,执行数据发送要调用setsocketopt函数进行套接字的首部设定。设定套接字的首部选项IP_HDRINCL,不然系统会自动填充套接字的首部

2.实例操作

   1)实现一个简单的网络数据包嗅程序
   2)基本原理是:将网卡设为混杂模式,然后采集网络数据包,针对到来的数据包,按相应的协议字段进行反向解析,并输出到终端
   3)基本流程
   1)创建一个原始套接字,设置属性为SOCK_RAW,协议号htons(ETH_P_IP)
   2)循环调用recvfrom()函数,采集到来的网络数据包,并进行如下解析
   3)解析源MAC地址
   4)解析目的MAC地址
   5)解析源IP地址
   6)解析目的IP地址
   7)解析协议号
   8)若协议号为TCP或UDP,则解析数据包中的源端口与目的端口

   4)源代码

1 //rawsocket.c 2 #include 
3 #include
4 #include
5 #include
6 #include
7 #include
8 #include
9 #define BUFFER_MAX 204810 int main(int argc, char *argv[])11 {12 int rawsock;13 char buffer[BUFFER_MAX];14 char *ethhead;15 char *iphead;16 char *tcphead;17 char *udphead;18 char *icmphead;19 char *pHead;20 if((rawsock = socket(PF_PACKET,SOCK_RAW,htons(ETH_P_IP))) < 0)21 {22 printf("error: create raw socket!!!\n");23 exit(0);24 }25 long framecount = 0;26 while(1)27 {28 int readnum = recvfrom(rawsock, buffer,2048,0, NULL, NULL);29 if(readnum < 42)30 {31 printf("error: Header is incomplete!!!\n");32 continue;33 }34 ethhead = (char *)buffer;35 pHead = ethhead;36 int ethernetmask = 0XFF;37 framecount++;38 printf("------------------Analysis Packet [%d]---------------------\n",framecount);39 printf("MAC:");40 int i = 6;41 for(; i <=11; i++)42 {43 printf("%.2X:",pHead[i]&ethernetmask);44 }45 printf("---->");46 for(i = 0; i <=5; i++)47 {48 printf("%.2X:",pHead[i]&ethernetmask);49 }50 printf("\n");51 iphead = ethhead + 14;52 pHead = iphead + 12;53 printf("IP:");54 for(i = 0; i <=3; i++)55 {56 printf("%d",pHead[i]&ethernetmask);57 if(i != 3)58 printf(".");59 }60 printf("---->");61 for(i = 4; i <=7; i++)62 {63 printf("%d",pHead[i]&ethernetmask);64 if(i != 7)65 printf(".");66 }67 printf("\n");68 int prototype = (iphead + 9)[0];69 pHead = iphead + 20;70 printf("Protocol: ");71 switch(prototype)72 {73 case IPPROTO_ICMP:74 printf("ICMP\n");75 break;76 case IPPROTO_IGMP:77 printf("IGMP\n");78 break;79 case IPPROTO_IPIP:80 printf("IP\n");81 break;82 case IPPROTO_TCP :83 printf("TCP | source port: %u | ",(pHead[0]<<8)&0XFF00 | pHead[1]&0XFF);84 printf("dest port: %u\n", (pHead[2]<<8)&0XFF00 | pHead[3]&0XFF);85 break;86 case IPPROTO_UDP :87 printf("UDP | source port: %u | ",(pHead[0]<<8)&0XFF00 | pHead[1]&0XFF);88 printf("dest port: %u\n", (pHead[2]<<8)&0XFF00 | pHead[3]&0XFF);89 break;90 case IPPROTO_RAW :91 printf("RAW\n");92 break;93 default:94 printf("Unkown\n");95 }96 printf("-------------------------end-----------------------\n");97 }98 }
View Code

 

 


3.mystery注解
   1)运行效果

 

   2)如图所示,运行此程序需要root权限
    原因:原始套接字提供管理下层传输的能力,他们可能会被恶意利用。因此,仅root组的成员能够窗口SOCK_RAW类型的套接字

   3)本程序是采用的PF_PACKET来创建的SOCK_RAW,即工作在数据链路层,另外也可以指定在网络层使用

 

 


4.mystery说明

    这只是我在学习计算机网络时一个小小的知识点验证实验,记录了一些知识总结和心得体会,这只是学习,无关任何作业或者开发之说。

 

 

算法的艺术:

算法之美,解剖艺术:

 

   在此附上我学习计算机网络时的一系列心得体会,我相信不管是对自己,还是对别人,总会有一定的帮助。

 

linux无连接编程技术:

linux套接字技术之tcp:

linux多路复用IO技术:

linux网络嗅探底层原理:

linux广播技术:

linux组播技术:

linux高性能网络服务:

linux网络扫描程序开发:

linux下http服务器开发:

 

   我一直比较认同一句话:其实我们一直都不是很优秀,是别人的赞赏和鼓励,让我们有机会成为别人期待的样子!所以,我也一直用我希望被对待的方式去对待别人,在此感谢各们同行以及老师们的认可和支持,谢谢!我会努力做得更好!

 

转载地址:http://txycl.baihongyu.com/

你可能感兴趣的文章
安全运维之端口安全
查看>>
【转载】什么是站点,Active Directory系列之十一
查看>>
Red Hat Enterprise Liunx6 配置apache 全攻略
查看>>
CentOS 5.5下LVM的分区管理
查看>>
[Template]HTML Template 简介
查看>>
用传统的NAT方式替代H3C的DNS-MAP功能
查看>>
我的友情链接
查看>>
mysql数据(一)
查看>>
jeecg查询条件组装器使用or关键字
查看>>
我的友情链接
查看>>
我的友情链接
查看>>
我的友情链接
查看>>
禁止 centos 休眠
查看>>
列表删除页代码
查看>>
亚马逊的EC2云计算系统
查看>>
分别让div浮层靠左靠右和居中
查看>>
如何解决 JMeter 通过 JDBC 访问 Oracle 和 MySQL 的问题 (留言中有 Test Plan 实例下载)...
查看>>
19.7 主动模式和被动模式;19.8 添加监控主机;19.9 添加自定义模板19.10处理图形中的...
查看>>
SCOM2012功能测试(14)—创建.NET应用程序性能监控
查看>>
我的友情链接
查看>>