现在人们谈到黑客攻击,一般所指的绝大部分的都是以主动方式进行的,比如说是利用漏洞或者是猜测操作操作系统密码的方式对操作操作系统进行攻击.但是当然还有一类危害非常大的被动攻击方式往往为大家所忽视,那就是利用Sniffer进行嗅探攻击.
Sniffer,中文可以翻译为嗅探器,是一种威胁性极大的被动攻击工具.使用这种工具,可以监视网络的状态,数据(Data)流动情况以及网络上传输的信息.当信息以明文的形式在网络上传输时,便可以使用网络监听的方式来进行攻击.将网络接口设置在监听模式,便可以将网上传输的源源不断的信息截获.黑客们通常用他来截获用户的口令.据说某个骨干网络的(路由器的缩写)器(局域网中常用的一种设备,可以很好的防止Arp病毒)曾经被黑客攻人,并嗅探到大量的用户口令.本文将详细介绍Sniffer的原理和应用.
一,Sniffer 原理
1.网络技术与设备简介
在讲述Sni计er的概念之前,最开始需要讲述局域网设备的一些基本概念.
数据(Data)在网络上是以很小的称为帧(Frame)的单位传输的,帧由几部分组成,不相同的部分执行不相同的功能.帧通过特定的称为网络驱动程序(Procedures)(Procedures)的软件(soft)进行成型,然后通过网卡发送到网线上,通过网线到达他们的目的机器,在目的机器的一端执行相反的过程.接收端机器的以太网卡捕获到这些帧,并告诉操作操作操作系统帧已到达,然后对其进行存储.就是在这一个传输和接收的过程当中,嗅探器会带来安全方面的基本问题.
每一个在局域网(LAN)上的工作(Work)站都有其硬件地址,这些地址惟一地表示了网络上的机器(这一点与Internet地址操作操作系统比较相似).当用户发送一个数据(Data)包时,这些数据(Data)包就会发送到LAN上所有可以用的机器.
在一般情况下,网络上所有的机器都可以“听”到通过的流量,但对不属于自己的数据(Data)包则不予响应(换句话说,工作(Work)站A不怎么会捕获属于工作(Work)站B的数据(Data),而不能是是简单地忽略这些数据(Data)).如果某个工作(Work)站的网络接口处于混杂模式(关于混杂模式的概念会在后面解释),那么他就可以捕获网络上所有的数据(Data)包和帧.
2.网络监听原理
Sniffor程序(Procedures)(Procedures)是一种利用以太网的特性把网络适配卡(NIC,一般为以太同卡)置为杂乱(promiscuous)模式状态的工具,一旦同卡设置为这种模式,他就可以接收传输在网络上的每一个信息包.
普通的情况下,阿卡只接收和自己的地址有关的信息包,即传输到本地主机的信息包.要使Sniffer能接收并处理这种方式的信息,操作操作系统需要支持BPF,Linux下需要支持SOCKET一PACKET.但一般情况下,网络硬件和TCP/IP堆栈不支持接收或者是发送与本地电脑无关的数据(Data)包,所以,为了绕过标准的TCP/IP堆栈,网卡就必须设置为我们刚开始讲的混杂模式.一般情况下,要激活这种方式,内核必须支持这种伪设备Bpfilter,而不能是且需要root权限来运行这种程序(Procedures)(Procedures),所以sniffer需要root身份安装,如果只是以本地用户的身份进人了操作操作系统,那么不可能唤探到root的密码,因为不能运行Sniffer.
基于Sniffer这样的模式,可以分析各种各样信息包并描述出网络的结构和使用的机器,由于他接收任何一个在同一网段上传输的数据(Data)包,所以也就存在着捕获密码,各种各样信息,秘密文档等一些没有加密的信息的可能性.这成为黑客们常用的扩大战果的方法,用来夺取其他主机的控制权
3 Snifffer的分类
Sniffer分为软件(soft)和硬件两种,软件(soft)的Sniffer有 NetXray,Packetboy,Net monitor等,其优点是物美价廉,易于学习使用,同时也易于交流;缺点是根本没有办法抓取网络上所有的传输,某一些情况下也就根本没有办法真正了解网络的故障和运行情况.硬件的Sniffer通常称为
协议分析仪,一般绝大部分的都是商业性的,价格也比较贵.
实际上本文中所讲的Sniffer指的是软件(soft).他把包抓取下来,然后打开并查看当中的内容,可以得到密码等.Sniffer只能抓取一个物理网段内的包,就是说,您和监听的目标中间不能有(路由器的缩写)或者是其他屏蔽广播包的设备,这一点很重要.所以,对一般拨号上网的用户来说,是不可能利用Sniffer来窃听到其他人们的通信内容的.
4.网络监听的目的
当一个黑客成功地攻陷了一台主机,并拿到了root权限,而不能是且还想利用这台主机去攻击同一网段上的其他主机时,他就会在这台主机上安装Sniffer软件(soft),对以太网设备上传送的数据(Data)包进行侦听,从而不能是发现感兴趣的包.如果发现符合条件的包,就把他存到一个LOg文件中去.通常设置的这些条件是包含字“username”或者是“password”的包,这样的包里面通常有黑客感兴趣的密码之类的东西.一旦黑客截获得了某台主机的密码,他就会立刻进人这台主机.
如果Sniffer运行在(路由器的缩写)器(局域网中常用的一种设备,可以很好的防止Arp病毒)上或者是有(路由器的缩写)功能的主机上,就可以对大量的数据(Data)进行监控,因为所有进出网络的数据(Data)包都要经过(路由器的缩写)器(局域网中常用的一种设备,可以很好的防止Arp病毒).
Sniffer属于第M层次的攻击.就是说,只有在攻击者已经进入了目标操作操作系统的情况下,才能使用Sniffer这种攻击手段,以便得到更多的信息.
Sniffer除了能得到口令或者是用户名外,还能得到更多的其他信息,譬如一个重要的信息,在网上传送的金融信息等等.Sniffer几乎能得到任何在以大网上传送的数据(Data)包.
Sniffer是一种比较复杂的攻击手段,一般只有黑客老手才有能力使用他,而不能是对于一个网络新手来说,即使在一台主机上成功地编译并运行了Sniffer,一般也不怎么会得到什么有用的信息,因为通常网络上的信息流量是相当大的,如果不加选择(Choose)地接收所有的包,然后从中找到所需要的信息非常困难;而不能是且,如果长时间进行监听,还有可能把放置Snifkr的机器的计算机硬盘(Hard)撑爆.
5.一个简单的Sniffer程序(Procedures)(Procedures)
下面是一个非常简单的C程序(Procedures)(Procedures),他可以完成一般的监听功能,/* */中的内容是本文的注解.
#include〈stdio.h〉
#include〈sys/socket.h〉
#include〈netinet/in.h〉
#include〈arpa/inet.h〉
struct IP{
unsigned int ip_length:4;
unsigned int ip_version:4;
unsigned char ip_tos;
unsigned short
ip_total_length;
unsigned short ip_id;
unsigned short ip_flags;
unsigned char ip_ttl;
unsigned char ip_protocol;
unsigned short ip_cksum;
unsigned int ip_source ;
unsigned int ip_source;
};
struct tcp{
unsigned short tcp_source_port;
unsigned short tcp_dest_port;
unsigned short tcp_seqno;
unsigned int tcp_ackno;
unsigned int tcp_res1:4;
tcp_hlen:4
tcp_fin:1,
tcp_syn:1,
tcp_rst:1,
tcp_psh:1,
tcp_ack:1,
tcp_urg:1,
tcp_res2:2;
unsignd short tcp_winsize;
unsigned short tcp_cksum;
unsigned short tcp_urgent;
};
int main()
{
int sock,bytes_recieved,fromlen;
char buffer[65535];
struct sockaddr_in from;
struct ip ip;
struct tcp *tcp;
sock=socket(AF_INET,SOCK_RAW,IPPROTO_TCP);
whileI.
{
fromlen=sizeof from;
bytes_recieved=recvfrom(sock,buffer,sizeofbuffer,0,(struct sockaddr *)&from,&fromlen);
print("\nBytes received ::: %5d\n",bytes_recieved);
printf("source address ::: %s\n",inet_ntoa(from.sin_addr));
ip=(struct ip *)buffer;
printf("IP header length ::: %d\n",ip->ip_length);
print("Protocol ::: %d\n",ip->ip_protocol);
tcp=(struct tcp *)(buffer + (4*ip->ip_iplength));
printf("Source port ::: %d\n",ntohs(tcp->tcp_source_port);
printf("Dest prot ::: %d\n",ntohs(tcp->tcp_dest_port));
以上这一个C程序(Procedures)(Procedures)是为了说明Sniffer的接收原理而不能是列举的一个最简单的例子,他只是完成了Sniffer的接收功能,在运行他之前,我们还需要手工把同卡设为混杂模式,在root权限下用如下系统命令设置:
ifconfig eth0 promisc
假设etho是您的以太网设备接口,然后运行编译好的程序(Procedures)(Procedures),就可以看到接收的数据(Data)包了.
这一个程序(Procedures)(Procedures)虽然简单,但是他说明了Sniffer的基本原理,就是先把同卡设备设为混杂模式,然后直接或者间接接收IP层的数据(Data).
当然这一个程序(Procedures)(Procedures)的功能也太简单,只能显示源地址,目标地址和源端口(Port),目标端口(Port)等极为简单的信息,这对于黑客来说是没有什么用处的,黑客要的是密码之类的信息,这可以使用一些免费的Sniffer程序(Procedures)(Procedures)来完成.
我想看看
kankan
正是我需要的
dadad
DDDDDDDDDDDDDDDDDDDDDDDDDd :flamethr:
:uzi: 太贵啦!!!!!!!!!!!!!!!!1
ssssssssssssssssssssssssssssssssssssss
什么?
看看了再f
var tagarray =['软件(soft)','网络','工具','操作操作系统','
网吧','电脑','破解','服务器(Server)','VPN','(路由器的缩写)器(局域网中常用的一种设备,可以很好的防止Arp病毒)'];var tagencarray =['%C8%ED%BC%FE','%CD%F8%C2%E7','%B9%A4%BE%DF','%CF%B5%CD%B3','%CD%F8%B0%C9','%B5%E7%C4%D4','%C6%C6%BD%E2','%B7%FE%CE%F1%C6%F7','VPN','%C2%B7%D3%C9%C6%F7'];parsetag(174882);