Your Ad Here
首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 网络安全 > 黑客技术 > 嗅探原理与反嗅探技术详解(3)
【标  题】:嗅探原理与反嗅探技术详解(3)
【关键字】:原理
【来  源】:网络

嗅探原理与反嗅探技术详解(3)

Your Ad Here 嗅探原理与反嗅探技术详解(3)

二.反嗅探技术
2.1我如何才能检测网内是否存在有嗅探程序?

理论上,嗅探程序是不可能被检测出来的,因为嗅探程序是一种被动的接收程序,属于被动触发的,它只会收集数据包,而不发送出任何数据,尽管如此,嗅探程序有时候还是能够被检测出来的。

一个嗅探程序,不会发送任何数据,但是当它安装在一台正常的局域网内的计算机上的时候会产生一些数据流。举个例子,它能发出一个请求,始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. 没有任何人能够看到发送的数据包,因为每台计算机的MAC地址无法与这个数据包中的目地MAC不符,所以,这个包应该会被丢弃。

6. 如果你看到了应答,说明这个MAC包没有被丢弃,也就是说,很有可能有嗅探器存在。

现在,这种方法已经得到了广泛的推崇和宣扬,新一代的黑客们也学会了在他们的代码中加入虚拟的MAC地址过滤器很多的计算机操作系统(比如Windows)都支持MAC过滤器(很多过虑器只检查MAC的第一个字节,这样一来,MAC地址FF-00-00-00-00-00和FF-FF-FF-FF-FF-FF就没有区别了。(广播地址消息会被所有的计算机所接收)。这种技术通常会用在交换模型的以太网中。当交换机发现一个未知的MAC地址的时候,它会执行类似“flood”的操作,把这个包发送给每个节点。

2.2本机嗅探程序的检测

本机嗅探的程序检测方法比较简单,只要检查一下网卡是否处于混杂模式就可以了,在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;

struct sockaddr_in sAddr,addr;

char RecvBuf[MAX_PACK_LEN];

char FAR name[MAX_HOSTNAME_LAN];

struct hostent FAR * pHostent;

char *Buf=(char *)malloc(128);

int settimeout=1000;//这里我们设置了一秒钟超时

printf("UNSniffer for Win2k v1.0\nPower by BigBall\nHomePage:http:\/\/www.patching.net\/liumy\nEmail:liumy@patching.net\nOicq:9388920\n\nChecking your system ,wait a moment please...\n");

WSAStartup(MAKEWORD(2,2),&wsaData);

//建立一条RawSocket

SockRaw=socket(AF_INET,SOCK_RAW,IPPROTO_IP);

再建立一条UDP

Sock=socket(AF_INET,SOCK_DGRAM,IPPROTO_UDP);

memset(&sAddr,0,sizeof(sAddr));

memset(&addr,0,sizeof(addr));

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(RecvBuf,0, sizeof(RecvBuf));

pHostent=malloc(sizeof(struct hostent));

gethostname(name, MAX_HOSTNAME_LAN);

pHostent=gethostbyname(name);

//取得自己的IP地址

memcpy(&sAddr.sin_addr.S_un.S_addr, pHostent->h_addr_list[0], pHostent->h_length);

free(pHostent);

//绑定一个本机的接收端口

bind(SockRaw, (struct sockaddr *)&sAddr, sizeof(sAddr));

//虚连接到本机的一个未打开的端口

connect(Sock,(struct sockaddr *)&addr,sizeof(addr));

Buf="1234567890!@#$%^&*";

//设置超时

setsockopt(SockRaw,SOL_SOCKET,SO_RCVTIMEO,(char *)&settimeout,sizeof(int));

//向虚连接端口发送一个数据包

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

{

//进行ChkSum

if(Buf=="1234567890!@#$%^&*")

printf("Warning!!! Found sniffer!!!\n");

}

closesocket(Sock);

closesocket(SockRaw);

free(pHostent);

free(Buf);

WSACleanup();

return 0;

}

程序比较简单,所有不做详细说明了,如果你还有问题,请访问我的主页http://bigball.xici.net,或者QQ:9388920(全文完)

通用UNIX系统安全检查列表(UNIX Security Checklist)(1):【上一篇】
嗅探原理与反嗅探技术详解(2):【下一篇】
【相关文章】
  • 病毒检测软件的作用原理
  • 浅析手机病毒原理及特性
  • sina邮箱网页特洛依木马的实现原理
  • QQ尾巴病毒的发送原理分析
  • 破解:Windows新版算号器技术原理
  • 对Win 98和Win 2000的攻击原理
  • 黑客Web欺骗的工作原理和解决方案
  • Linux入侵监测系统LIDS原理(2)
  • Linux入侵监测系统LIDS原理(1)
  • 【随机文章】
  • gperf--GNU完美哈希函数生成器用户手册(翻译)
  • FreeBSD 5-CURRENT 的内核配置与优化
  • [安全资料]200608期黑客X档
  • 机械加工企业利用第三方物流进行采购规划
  • Oracle Data Provider for .NET 的使用经验(3)
  • 服务器安装备忘录
  • ASP.NET學習-5
  • 一位项目经理经验总结
  • RIM: 挟民众以令法律
  • 评:好大一颗雷
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 bbb软讯网络 All Rigths Reserved.