收藏 分享(赏)

臭探原理与反臭探技术详解.doc

上传人:mcady 文档编号:8638402 上传时间:2019-07-06 格式:DOC 页数:15 大小:40KB
下载 相关 举报
臭探原理与反臭探技术详解.doc_第1页
第1页 / 共15页
臭探原理与反臭探技术详解.doc_第2页
第2页 / 共15页
臭探原理与反臭探技术详解.doc_第3页
第3页 / 共15页
臭探原理与反臭探技术详解.doc_第4页
第4页 / 共15页
臭探原理与反臭探技术详解.doc_第5页
第5页 / 共15页
点击查看更多>>
资源描述

1、臭探原理与反臭探技术详解一臭探器的基础知识11 什么是臭探器?臭探器的英文写法是 Sniff,可以理解为一个安装在计算机上的窃听设备它可以用来窃听计算机在网络上所产生的众多的信息。简单一点解释:一部电话的窃听装置, a 可以用来窃听双方通话的内容,而计算机网络臭探器则可以窃听计算机程序在网络上发送和接收到的数据。可是,计算机直接所传送的数据,事实上是大量的二进制数据。因此, 一个网络窃听程序必须也使用特定的网络协议来分解臭探到的数据, 臭探器也就必须能够识别出那个协议对应于这个数据片断,只有这样才能够进行正确的解码。计算机的臭探器比起电话窃听器,有他独特的优势: 很多的计算机网络采用的是“共享

2、媒体“。 也就是说,你不必中断他的通讯,并且配置特别的线路,再安装臭探器,你几乎可以在任何连接着的网络上直接窃听到你同一掩码范围内的计算机网络数据。我们称这种窃听方式为“基于混杂模式的臭探” (promiscuous mode) 。 尽管如此,这种“共享” 的技术发展的很快,慢慢转向“交换” 技术,这种技术会长期内会继续使用下去, 它可以实现有目的选择的收发数据。12 臭探器是如何工作的121 如何窃听网络上的信息刚才说了,以太网的数据传输是基于“共享”原理的:所有的同一本地网范围内的计算机共同接收到相同的数据包。这意味着计算机直接的通讯都是透明可见的。 正是因为这样的原因,以太网卡都构造了硬

3、件的“过滤器”这个过滤器将忽略掉一切和自己无关的网络信息。事实上是忽略掉了与自身 MAC地址不符合的信息。臭探程序正是利用了这个特点,它主动的关闭了这个臭探器,也就是前面提到的设置网卡“混杂模式” 。因此,臭探程序就能够接收到整个以太网内的网络数据了信息了。122 什么是以太网的 MAC地址MAC:Media Access Control.由于大量的计算机在以太网内“共享“数据流,所以必须有一个统一的办法用来区分传递给不同计算机的数据流的。这种问题不会发生在拨号用户身上,因为计算机会假定一切数据都由你发动给modem然后通过电话线传送出去。可是,当你发送数据到以太网上的时候,你必须弄清楚,哪台

4、计算机是你发送数据的对象。的确,现在有大量的双向通讯程序出现了,看上去,他们好像只会在两台机器内交换信息,可是你要明白,以太网的信息是共享的,其他用户,其实一样接收到了你发送的数据,只不过是被过滤器给忽略掉了。 MAC地址是由一组 6个 16进制数组成的,它存在于每一块以太网卡中。后面的章节将告诉你如何查看自己计算机的 MAC地址。如果你对网络结构不太熟悉,建议参考一下 OSI 7-Layer Model,这将有助于你理解后面的东西以太网所使用的协议主要是 TCP/IP,并且 TCP/IP也用于其他的网络模型(比如拨号用户,他们并不是处于一个以太网环境中)。举例一下,很多的小团体计算机用户都为

5、实现文件和打印共享,安装了“NetBEUI” 因为它不是基于 TCP/IP协议的, 所以来自于网络的黑客一样无法得知他们的设备情况。基于 Raw协议,传输和接收都在以太网里起着支配作用。你不能直接发送一个 Raw数据给以太网,你必须先做一些事情,让以太网能够理解你的意思。这有点类似于邮寄信件的方法,你不可能直接把一封信投递出去,你必须先装信封,写地址,贴邮票,网络上的传输也是这样的。下面给出一个简单的图示,有助于你理解数据传送的原理:_ /. /Internet. +-+ +-+.+-+ |UserA|-|路由|.|UserB| +-+ +-+.+-+ | ./ | -/ +-+ |臭探器|

6、+-+ UserA IP 地址: 10.0.0.23UserB IP 地址: 192.168.100.54现在知道 UserA要于 UserB进行计算机通讯,UserA 需要为10.0.0.23到 192.168.100.54的通讯建立一个 IP包这个 IP包在网络上传输,它必须能够穿透路由器。因此, UserA必须首先提交这个包给路由器。由每个路由器考查目地 IP地址然后决定传送路径。UserA 所知道的只是本地与路由的连接,和 UserB的 IP地址。UserA并不清楚网络的结构情况和路由走向。UserA必须告诉路由预备发送的数据包的情况,以太网数据传输结构大概是这样的:+-+-+-+-+

7、-+-+| 目标 MAC |+-+-+-+-+-+-+| 源 MAC |+-+-+-+-+-+-+|08 00| +-+-+-+| |. . IP 包 . .| |+-+-+-+-+-+| CRC校验 |+-+-+-+-+理解一下这个结构,UserA 的计算机建立了一个包假设它由 100个字节的长度(我们假设一下,20 个字节是 IP信息,20 个字节是TCP信息,还有 60个字节为传送的数据) 。现在把这个包发给以太网,放 14个字节在目地 MAC地址之前,源 MAC地址,还要置一个0x0800的标记,他指示出了 TCP/IP栈后的数据结构。同时,也附加了 4个字节用于做 CRC校验 (CR

8、C 校验用来检查传输数据的正确性) 。现在发送数据到网络。所有在网内的计算机通过适配器都能够发现这个数据片,其中也包括路由适配器,臭探器和其他一些机器。通常,适配器都具有一块芯片用来做结构比较的,检查结构中的目地 MAC地址和自己的 MAC地址,如果不相同,则适配器会丢弃这个结构。这个操作会由硬件来完成,所以,对于计算机内的程序来说,整个过程时毫无察觉的。当路由器的以太网适配器发现这个结构后,它会读取网络信息,并且去掉前 14个字节,跟踪 4个字节。查找 0x8000标记,然后对这个结构进行处理(它将根据网络状况推测出下一个最快路由节点,从而最快传送数据到预定的目标地址) 。设想,只有路由机器

9、能够检查这个结构,并且所有其他的机器都忽略这个 结构,则臭探器无论如何也无法检测到这个结构的。1.3.1 MAC地址的格式是什么?以太网卡的 MAC地址是一组 48比特的数字,这 48比特分为两个部分组成,前面的 24比特用于表示以太网卡的寄主,后面的 24比特是一组序列号,是由寄主进行支派的。这样可以担保没有任何两块网卡的 MAC地址是相同的(当然可以通过特殊的方法实现) 。如果出现相同的地址,将发生问题,所有这一点是非常重要的。这 24比特被称之为 OUI(Organizationally Unique Identifier) 。 可是,OUI 的真实长度只有 22比特,还有两个比特用于其

10、他:一个比特用来校验是否是广播或者多播地址,另一个比特用来分配本地执行地址(一些网络允许管理员针对具体情况再分配 MAC地址) 。举个例子,你的 MAC地址在网络中表示为 03 00 00 00 00 01 。第一个字节所包含的值二进制表示方法为 00000011。 可以看到,最后两个比特都被置为真值。他指定了一个多播模式,向所有的计算机进行广播,使用了“NetBEUI”协议(一般的,在 Windows计算机的网络中,文件共享传输等是不使用 TCP/IP协议的) 。. 132 我如何得到自己计算机的 MAC地址?Win9x Win9x自带的这个程序将告诉你答案:“winipcfg.exe” W

11、inNT 在命令行的状态下运行这个命令:“ipconfig /all“它会显示出你的 MAC网卡地址,下面是一个例子: Windows 2000 IP ConfigurationHost Name . . . . . . . . . . . . : bigballPrimary DNS Suffix . . . . . . . :Node Type . . . . . . . . . . . . : HybridIP Routing Enabled. . . . . . . . : NoWINS Proxy Enabled. . . . . . . . : NoEthernet adapter

12、 本地连接:Connection-specific DNS Suffix . :Description . . . . . . . . . . . : Legend/D-Link DFE-530TX PCI Fast Ethernet Adapter (Rev B)Physical Address. . . . . . . . . : 00-50-BA-25-5D-E8DHCP Enabled. . . . . . . . . . . : NoIP Address. . . . . . . . . . . . : 192.168.10.254Subnet Mask . . . . . . .

13、. . . . : 255.255.128.0Default Gateway . . . . . . . . . : 192.168.10.3Ethernet adapter SC12001:Description . . . . . . . . : DEC DC21140 PCI Fast Ethernet Linux 运行“ifconfig” 。结果如下:eth0 Link encap:Ethernet HWaddr 08:00:17:0A:36:3Einet addr:192.0.2.161 Bcast:192.0.2.255 Mask:255.255.255.0UP BROADCAST

14、 RUNNING MULTICAST MTU:1500 Metric:1RX packets:1137249 errors:0 dropped:0 overruns:0TX packets:994976 errors:0 dropped:0 overruns:0Interrupt:5 Base address:0x300 Solaris 用 “arp” 或者 “netstat p” 命令 133 我如何才能知道有那些计算机和我的 MAC地址直接关联?对于 WinNT和 Unix机器,可以直接使用“arp a”查看。 134 我能够改变我的 MAC地址吗?可以。简单的说一下:第一种方法,你要做地

15、址欺骗,因为 MAC地址是数据包结构的一部分, 因此,当你向以太网发送一个数据包的时候,你可以覆盖源始的 MAC信息。第二种方法,很多网卡允许在一定的时间内修改内部的 MAC地址。第的三种方法, 你可以通过重新烧录 EEPROM来实现 MAC地址的修改。但是这种方法要求你必须有特定的硬件设备和适用的芯片才能修改,而且这种方法将永远的修改你的 MAC地址。二反臭探技术21 我如何才能检测网内是否存在有臭探程序?理论上,臭探程序是不可能被检测出来的,因为臭探程序是一种被动的接收程序,属于被动触发的,它只会收集数据包,而不发送出任何数据,尽管如此,臭探程序有时候还是能够被检测出来的。 一个臭探程序,

16、不会发送任何数据,但是当它安装在一台正常的局域网内的计算机上的时候会产生一些数据流。举个例子,它能发出一个请求,始 DNS根据 IP地址进行反相序列查找。下面一种简单的检测方法:ping 方法很多的臭探器程序,如果你发送一个请求给哪台有臭探程序的机器,它将作出应答说明:1. 怀疑 IP地址为 10.0.0.1的机器装有臭探程序,它的 MAC地址确定为 00-40-05-A4-79-32. 2. 确保机器是在这个局域网中间。3. 现在修改 MAC地址为 00-40-05-A4-79-33. 4. 现在用 ping命令 ping这个 IP地址。5. 没有任何人能够看到发送的数据包,因为每台计算机的

17、 MAC地址无法与这个数据包中的目地 MAC不符,所以,这个包应该会被丢弃。6. 如果你看到了应答,说明这个 MAC包没有被丢弃,也就是说,很有可能有臭探器存在。现在,这种方法已经得到了广泛的推崇和宣扬,新一代的黑客们也学会了在他们的代码中加入虚拟的 MAC地址过滤器很多的计算机操作系统(比如 Windows)都支持 MAC过滤器(很多过虑器只检查 MAC的第一个字节,这样一来,MAC 地址 FF-00-00-00-00-00和 FF-FF-FF-FF-FF-FF就没有区别了。 (广播地址消息会被所有的计算机所接收) 。这种技术通常会用在交换模型的以太网中。当交换机发现一个未知的 MAC地址的

18、时候,它会执行类似“flood”的操作,把这个包发送给每个节点。 22 本机臭探程序的检测本机臭探的程序检测方法比较简单,只要检查一下网卡是否处于混杂模式就可以了,在 Linux下,这个比较容易实现,而在 Windows平台上,并没有现成的函数可供我们实现这个功能,我们来用一点小技巧:#include #define MAX_PACK_LEN 65535#define MAX_HOSTNAME_LAN 255#pragma comment (lib , “ws2_32.lib“)int main()SOCKET SockRaw,Sock;WSADATA wsaData;int ret=0;st

19、ruct sockaddr_in sAddr,addr;char RecvBufMAX_PACK_LEN;char FAR nameMAX_HOSTNAME_LAN;struct hostent FAR * pHostent;char *Buf=(char *)malloc(128);int settimeout=1000;/这里我们设置了一秒钟超时printf(“UNSniffer for Win2k v1.0nPower by BigBallnHomePage:http:/ your system ,wait a moment please.n“);WSAStartup(MAKEWORD(

20、2,2),/建立一条 RawSocketSockRaw=socket(AF_INET,SOCK_RAW,IPPROTO_IP);再建立一条 UDPSock=socket(AF_INET,SOCK_DGRAM,IPPROTO_UDP);memset(memset(sAddr.sin_family=AF_INET;sAddr.sin_port=htons(5257);addr.sin_family=AF_INET;addr.sin_port=htons(5258);/把 IP地址指向本机addr.sin_addr.S_un.S_addr=inet_addr(“127.0.0.1“);memset(

21、RecvBuf,0, sizeof(RecvBuf);pHostent=malloc(sizeof(struct hostent);gethostname(name, MAX_HOSTNAME_LAN);pHostent=gethostbyname(name);/取得自己的 IP地址memcpy(free(pHostent);/绑定一个本机的接收端口bind(SockRaw, (struct sockaddr *)/虚连接到本机的一个未打开的端口connect(Sock,(struct sockaddr *)Buf=“1234567890!#$%/设置超时setsockopt(SockRaw,

22、SOL_SOCKET,SO_RCVTIMEO,(char *) /向虚连接端口发送一个数据包send(Sock,Buf,strlen(Buf),0);/使用 SockRaw尝试接收这个数据包ret=recv(SockRaw,RecvBuf,sizeof(RecvBuf),0);if(ret=SOCKET_ERROR | ret=0)printf(“No found any sniffer in your system!n“);else/进行 ChkSumif(Buf=“1234567890!#$%closesocket(Sock);closesocket(SockRaw);free(pHostent);free(Buf);WSACleanup();return 0;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报