切换到宽版
  • 6804阅读
  • 38回复

黑客技术 [复制链接]

上一主题 下一主题
离线游春波

发帖
6734
金钱
54611
贡献值
193
交易币
209
好评度
1569
家乡
广东省河源市
性别
只看该作者 20楼 发表于: 2010-04-03
系统版本扫描 c8Z A5|  
c8Z A5|  
c8Z A5|  
        FIN探测 -- 通过发送一个FIN数据包(或任何未设置ACK或SYN标记位的数据包)   c8Z A5|  
     到一个打开的端口,并等待回应。RFC793定义的标准行为是“不”响   c8Z A5|  
     应,但诸如MS Windows、BSDi、CISCO、HP/UX、MVS和IRIX等操作系   c8Z A5|  
     统会回应一个RESET包。大多数的探测器都使用了这项技术。   c8Z A5|  
c8Z A5|  
     BOGUS(伪造)标记位探测 -- 据我所知,Queso是第一个使用这种更聪明技术的   c8Z A5|  
     探测器。它原理是在一个SYN数据包TCP头中设置未定义的TCP“标记”   c8Z A5|  
     (64或128)。低于2.0.35版本的Linux内核会在回应包中保持这个   c8Z A5|  
     标记,而其它操作系统好象都没有这个问题。不过,有些操作系统   c8Z A5|  
     当接收到一个SYN+BOGUS数据包时会复位连接。所以这种方法能够比   c8Z A5|  
     较有效地识别出操作系统。   c8Z A5|  
c8Z A5|  
     TCP ISN 取样 -- 其原理是通过在操作系统对连接请求的回应中寻找TCP连接初   c8Z A5|  
     始化序列号的特征。目前可以区分的类别有传统的64K(旧UNIX系统   c8Z A5|  
     使用)、随机增加(新版本的Solaris、IRIX、FreeBSD、Digital   c8Z A5|  
     UNIX、Cray和其它许多系统使用)、真正“随机”(Linux 2.0.*及更   c8Z A5|  
     高版本、OpenVMS和新版本的AIX等操作系统使用)等。Windows平台   c8Z A5|  
     (还有其它一些平台)使用“基于时间”方式产生的ISN会随着时间的   c8Z A5|  
     变化而有着相对固定的增长。不必说,最容易受到攻击的当然是老   c8Z A5|  
     式的64K方式。而最受我们喜爱的当然是“固定”ISN!确实有些机器   c8Z A5|  
     总是使用相同的ISN,如某些3Com集线器(使用0x83)和Apple   c8Z A5|  
     LaserWriter打印机(使用0xC7001)。   c8Z A5|  
c8Z A5|  
     根据计算ISN的变化、最大公约数和其它一些有迹可循的规律,还可   c8Z A5|  
     以将这些类别分得更细、更准确。   c8Z A5|  
c8Z A5|  
     “无碎片”标记位 -- 许多操作系统逐渐开始在它们发送的数据包中设置IP“不分   c8Z A5|  
     片(无碎片)”位。这对于提高传输性能有好处(虽然有时它很讨厌   c8Z A5|  
     -- 这也是为什么nmap不对Solaris系统进行碎片探测的原因)。但   c8Z A5|  
     并不是所有操作系统都有这个设置,或许并不并总是使用这个设置,   c8Z A5|  
     因此通过留意这个标记位的设置可以收集到关于目标主机操作系统   c8Z A5|  
     的更多有用信息。   c8Z A5|  
c8Z A5|  
     TCP 初始化“窗口” -- 就是检查返回数据包的“窗口”大小。以前的探测器仅仅通   c8Z A5|  
     过RST数据包的非零“窗口”值来标识为“起源于BSD 4.4”。而象queso   c8Z A5|  
     和nmap这些新的探测器会记录确切的窗口值,因为该窗口随操作系   c8Z A5|  
     统类型有较为稳定的数值。这种探测能够提供许多有用的信息,因   c8Z A5|  
     为某些系统总是使用比较特殊的窗口值(例如,据我所知AIX是唯一   c8Z A5|  
     使用0x3F25窗口值的操作系统)。而在声称“完全重写”的NT5的TCP   c8Z A5|  
     堆栈中,Microsoft使用的窗口值总是0x402E。更有趣的是,这个数   c8Z A5|  
     值同时也被OpenBSD和FreeBSD使用。   c8Z A5|  
c8Z A5|  
     ACK值 -- 也许你认为ACK值总是很标准的,但事实上操作系统在ACK域值的实   c8Z A5|  
     现也有所不同。例如,假设向一个关闭的TCP端口发送一个FIN|PSH|   c8Z A5|  
     URG包,许多操作系统会将ACK值设置为ISN值,但Windows和某些愚   c8Z A5|  
     蠢的打印机会设置为seq+1。如果向打开的端口发送SYN|FIN|URG|   c8Z A5|  
     PSH包,Windows的返回值就会非常不确定。有时是seq序列号值,有   c8Z A5|  
     时是S++,而有时回送的是一个似乎很随机性的数值。我们很怀疑为   c8Z A5|  
     什么MS总是能写出这种莫名其妙的代码。   c8Z A5|  
c8Z A5|  
     ICMP错误信息查询 -- 有些(聪明的)操作系统根据RFC 1812的建议对某些类型 c8Z A5|  
         的错误信息发送频率作了限制。例如,Linux内核(在net/ipv4/   c8Z A5|  
     icmp.h)限制发送“目标不可到达”信息次数为每4秒80次,如果超过   c8Z A5|  
     这个限制则会再减少1/4秒。一种测试方法是向高端随机UDP端口发   c8Z A5|  
     送成批的数据包,并计算接收到的“目标不可到达”数据包的数量。   c8Z A5|  
     在nmap中只有UDP端口扫描使用了这个技术。这种探测操作系统方法   c8Z A5|  
     需要稍微长的时间,因为需要发送大量的数据包并等待它们的返回。   c8Z A5|  
     这种数据包处理方式也会对网络性能造成某种程度的影响。   c8Z A5|  
c8Z A5|  
     ICMP信息引用 -- RFC定义了一些ICMP错误信息格式。如对于一个端口不可到达   c8Z A5|  
     信息,几乎所有操作系统都只回送IP请求头+8字节长度的包,但   c8Z A5|  
     Solaris返回的包会稍微长一点,Linux则返回更长的包。这样即使   c8Z A5|  
     操作系统没有任何监听任何端口,nmap仍然有可能确定Linux和   c8Z A5|  
     Solaris操作系统的主机。   c8Z A5|  
c8Z A5|  
     ICMP错误信息回显完整性 -- 我们在前面已谈到,机器必须根据接收到的数据   c8Z A5|  
     包返回“端口不可到达”(如果确实是这样)数据包。有些操作系统   c8Z A5|  
     会在初始化处理过程中弄乱了请求头,这样当你接收到这种数据包   c8Z A5|  
     时会出现不正常。例如,AIX和BSDI返回的IP包中的“总长度”域会   c8Z A5|  
     被设置为20字节(太长了)。某些BSDI、FreeBSD、OpenBSD、   c8Z A5|  
     ULTRIX和VAX操作系统甚至会修改请求头中的IP ID值。另外,由于   c8Z A5|  
     TTL值的改变导致校验和需要修改时,某些系统(如AIX、FreeBSD   c8Z A5|  
     等)返回数据包的检验和会不正确或为0。有时这种情况也出现在   c8Z A5|  
     UDP包检验和。总的说来,nmap使用了九种不同的ICMP错误信息探   c8Z A5|  
     测技术来区分不同的操作系统。   c8Z A5|  
c8Z A5|  
     服务类型(TOS) -- 对于ICMP的“端口不可到达”信息,经过对返回包的服务类   c8Z A5|  
     型(TOS)值的检查,几乎所有的操作系统使用的是ICMP错误类型   c8Z A5|  
     0,而Linux使用的值是0xC0。   c8Z A5|  
c8Z A5|  
     片段(碎片)处理 -- 不同操作系统在处理IP片段重叠时采用了不同的方式。   c8Z A5|  
     有些用新的内容覆盖旧的内容,而又有些是以旧的内容为优先。有   c8Z A5|  
     很多探测方法能确定这些包是被如何重组的,从而能帮助确定操作   c8Z A5|  
     系统类型。   c8Z A5|  
c8Z A5|  
     TCP选项 -- 这是收集信息的最有效方法之一。其原因是:   c8Z A5|  
c8Z A5|  
     1)它们通常真的是“可选的”,因此并不是所有的操作系统都使用   c8Z A5|  
     它们。   c8Z A5|  
     2)向目标主机发送带有可选项标记的数据包时,如果操作系统支   c8Z A5|  
     持这些选项,会在返回包中也设置这些标记。   c8Z A5|  
     3)可以一次在数据包中设置多个可选项,从而增加了探测的准确   c8Z A5|  
     度。   c8Z A5|  
c8Z A5|  
     Nmap在几乎每一个探测数据包中都设置了如下选项:   c8Z A5|  
c8Z A5|  
     Window Scale=10; NOP; Max Segment Size = 265; Timestamp; End of Ops;   c8Z A5|  
c8Z A5|  
     当接收到返回包时,检查返回了哪些选项,它们就是目标操作系统   c8Z A5|  
     支持的选项。有些操作系统(如较新版本的FreeBSD)支持以上所   c8Z A5|  
     有选项,而有些(如Linux 2.0.x)则几乎都不支持。Linux 2.1.x   c8Z A5|  
     内核支持以上所有选项。   c8Z A5|  
c8Z A5|  
     如果有几个操作系统支持相同的选项,可以通过选项的值来进行区   c8Z A5|  
     分。例如,如果向Linux机器发送一个很小的MSS值,它一般会将此   c8Z A5|  
     MSS值返回,而其它系统则会返回不同数值。   c8Z A5|  
c8Z A5|  
     如果支持相同的选项,返回值也相同,又怎么办呢?仍然可以通过   c8Z A5|  
     返回选项的顺序进行区分。如Solaris系统返回‘NNTNWME',代表: c8Z A5|  
c8Z A5|  
     而如果是Linux 2.1.122系统,相同的选项,相同的返回值,但顺 c8Z A5|  
         序却有所不同:MENNTNW。   c8Z A5|  
c8Z A5|  
     目前还没有其它操作系统探测工具利用TCP选项,但它确实非常有效!   c8Z A5|  
c8Z A5|  
     另外还有其它一些选项也可用于进行探测,如T/TCP支持等。NMAP探测细节和结果   c8Z A5|  
c8Z A5|  
     上面我们讨论了操作系统类型探测的多种技术(除了某些攻击性方法外)。这些技术都在nmap扫描器中实现。Nmap c8Z A5|  
  扫描器收集了众多操作系统端口打开和关闭时的特征,支持目前流行的Linux、*BSD和Solaris 2.5.1/2.6多种操作系统。   c8Z A5|  
c8Z A5|  
     目前版本的nmap扫描器从一个文件中读取操作系统特征模板。下面是一个实例:   p,5i)nEFj  
p,5i)nEFj  
     FingerPrint IRIX 6.2 - 6.4 # Thanks to Lamont Granquist   p,5i)nEFj  
     TSeq(Class=i800)   p,5i)nEFj  
     T1(DF=N%W=C000|EF2A%ACK=S++%Flags=AS%Ops=MNWNNT)   p,5i)nEFj  
     T2(Resp=Y%DF=N%W=0%ACK=S%Flags=AR%Ops=)   p,5i)nEFj  
     T3(Resp=Y%DF=N%W=C000|EF2A%ACK=O%Flags=A%Ops=NNT)   p,5i)nEFj  
     T4(DF=N%W=0%ACK=O%Flags=R%Ops=)   p,5i)nEFj  
     T5(DF=N%W=0%ACK=S++%Flags=AR%Ops=)   p,5i)nEFj  
     T6(DF=N%W=0%ACK=O%Flags=R%Ops=)   p,5i)nEFj  
     T7(DF=N%W=0%ACK=S%Flags=AR%Ops=)   p,5i)nEFj  
     PU(DF=N%TOS=0%IPLEN=38%RIPTL=148%RID=E%RIPCK=E%UCK=E%ULEN=134%DAT=E)   p,5i)nEFj  
p,5i)nEFj  
     让我们来看一下每一行的含义:   p,5i)nEFj  
p,5i)nEFj  
     > FingerPrint IRIX 6.2 - 6.3 # Thanks to Lamont Granquist   p,5i)nEFj  
p,5i)nEFj  
     它说明这是一个IRIX 6.2 - 6.3操作系统特征,注释指出该特征由Lamont Granquist提供。   p,5i)nEFj  
p,5i)nEFj  
     > TSeq(Class=i800)   p,5i)nEFj  
p,5i)nEFj  
     它说明ISN特征是"i800 class",即每一个新序列号比上一个序列号大800的整数倍。   p,5i)nEFj  
p,5i)nEFj  
     > T1(DF=N%W=C000|EF2A%ACK=S++%Flags=AS%Ops=MNWNNT)   p,5i)nEFj  
p,5i)nEFj  
     T1代表test1。这个测试是向打开的端口发送带有多个TCP选项的SYN数据包。DF=N说明返回包的   p,5i)nEFj  
     "Don't fragment"位必须没有设置。W=C000|EF2A说明返回包的窗口值必须为0xC000或0xEF2A。ACK=S++说明 p,5i)nEFj  
  返回包的ACK值必须为初始化序列号加1。Flags=AS说明返回包的ACK和SYN标记位必须被设置。Ops=MNWNNT说明返回 p,5i)nEFj  
  包的TCP选项及其顺序必须为: p,5i)nEFj  
p,5i)nEFj  
     > T2(Resp=Y%DF=N%W=0%ACK=S%Flags=AR%Ops=)   p,5i)nEFj  
p,5i)nEFj  
     Test 2(第二个测试)向打开端口发送带有相同TCP选项的NULL(空)数据包。Resp=Y说明必须接收到返回包。 p,5i)nEFj  
   Ops= 说明返回包中的所有TCP选项必须都没有被设置。‘%Ops='匹配任意TCP选项。   p,5i)nEFj  
p,5i)nEFj  
     > T3(Resp=Y%DF=N%W=400%ACK=S++%Flags=AS%Ops=M)   p,5i)nEFj  
p,5i)nEFj  
     Test 3(第三个测试)向打开端口发送带有TCP选项的SYN|FIN|URG|PSH数据包。   p,5i)nEFj  
p,5i)nEFj  
     > T4(DF=N%W=0%ACK=O%Flags=R%Ops=)   p,5i)nEFj  
p,5i)nEFj  
     这是向打开端口发送ACK数据包。注意这里没有Resp=字符串。说明返回包不是必须的(例如数据包被丢弃或有 p,5i)nEFj  
   防火墙)。   p,5i)nEFj  
p,5i)nEFj  
     > T5(DF=N%W=0%ACK=S++%Flags=AR%Ops=)   p,5i)nEFj  
     > T6(DF=N%W=0%ACK=O%Flags=R%Ops=)   p,5i)nEFj  
     > T7(DF=N%W=0%ACK=S%Flags=AR%Ops=)   p,5i)nEFj  
p,5i)nEFj  
     以上测试是针对关闭端口的SYN、ACK和FIN|PSH|URG数据包测试,并设置了相同的TCP选项。   p,5i)nEFj  
p,5i)nEFj  
     > PU(DF=N%TOS=0%IPLEN=38%RIPTL=148%RID=E%RIPCK=E%UCK=E%ULEN=134%DAT=E)   p,5i)nEFj  
p,5i)nEFj  
     这个是对“端口不可到达”信息的测试。DF=N前面已经介绍过了。TOS=0说明IP服务类型域应为0。接着的两个是IP p,5i)nEFj  
   包头总长度和返回IP包总长度(16进制值)。RID=E说明期望返回包RID值与发送的UDP包的值相同。RIPCK=E说明校验 p,5i)nEFj  
   和应该正常(如果不正常则RIPCK=F)。UCK说明UDP包校验和也应该正常。ULEN=134是UDP包长度为0x134。DAT=E说 明正确返回UDP数据,这个是大多数情况下的缺省设置。 p,5i)nEFj  
p,5i)nEFj  
     一些较为著名站点的扫描结果 p,5i)nEFj  
p,5i)nEFj  
     注:这些都是以前的扫描结果,仅供参考。不保证它现在仍然有效或准确。   p,5i)nEFj  
p,5i)nEFj  
     # "Hacker" sites or (in a couple cases) sites that think they are   p,5i)nEFj  
     www.l0pht.com => OpenBSD 2.2 - 2.4   p,5i)nEFj  
     www.insecure.org => Linux 2.0.31-34   p,5i)nEFj  
     www.rhino9.ml.org => Windows 95/NT # No comment :)   p,5i)nEFj  
     www.technotronic.com => Linux 2.0.31-34   p,5i)nEFj  
     www.nmrc.org => FreeBSD 2.2.6 - 3.0   p,5i)nEFj  
     www.cultdeadcow.com => OpenBSD 2.2 - 2.4   p,5i)nEFj  
     www.kevinmitnick.com => Linux 2.0.31-34 # Free Kevin!   p,5i)nEFj  
     www.2600.com => FreeBSD 2.2.6 - 3.0 Beta   p,5i)nEFj  
     www.antionline.com => FreeBSD 2.2.6 - 3.0 Beta   p,5i)nEFj  
     www.rootshell.com => Linux 2.0.35 # Changed to OpenBSD after   p,5i)nEFj  
     # they got owned.   p,5i)nEFj  
p,5i)nEFj  
     # Security vendors, consultants, etc.   p,5i)nEFj  
     www.repsec.com => Linux 2.0.35   p,5i)nEFj  
     www.iss.net => Linux 2.0.31-34   p,5i)nEFj  
     www.checkpoint.com => Solaris 2.5 - 2.51   p,5i)nEFj  
     www.infowar.com => Win95/NT   p,5i)nEFj  
p,5i)nEFj  
     # Vendor loyalty to their OS   p,5i)nEFj  
     www.li.org => Linux 2.0.35 # Linux International   p,5i)nEFj  
     www.redhat.com => Linux 2.0.31-34 # I wonder what distribution :)   p,5i)nEFj  
     www.debian.org => Linux 2.0.35   p,5i)nEFj  
     www.linux.org => Linux 2.1.122 - 2.1.126   p,5i)nEFj  
     www.sgi.com => IRIX 6.2 - 6.4   p,5i)nEFj  
     www.netbsd.org => NetBSD 1.3X   p,5i)nEFj  
     www.openbsd.org => Solaris 2.6 # Ahem :)   p,5i)nEFj  
     www.freebsd.org => FreeBSD 2.2.6-3.0 Beta   p,5i)nEFj  
p,5i)nEFj  
     # Ivy league   p,5i)nEFj  
     www.harvard.edu => Solaris 2.6   p,5i)nEFj  
     www.yale.edu => Solaris 2.5 - 2.51   p,5i)nEFj  
     www.caltech.edu => SunOS 4.1.2-4.1.4 # Hello! This is the 90's :)   p,5i)nEFj  
     www.stanford.edu => Solaris 2.6   p,5i)nEFj  
     www.mit.edu => Solaris 2.5 - 2.51 # Coincidence that so many good   p,5i)nEFj  
     # schools seem to like Sun?   p,5i)nEFj  
     # Perhaps it is the 40%   p,5i)nEFj  
     # .edu discount :)   p,5i)nEFj  
     www.berkeley.edu => UNIX OSF1 V 4.0,4.0B,4.0D   p,5i)nEFj  
     www.oxford.edu => Linux 2.0.33-34 # Rock on!   p,5i)nEFj  
p,5i)nEFj  
     # Lamer sites   p,5i)nEFj  
     www.aol.com => IRIX 6.2 - 6.4 # No wonder they are so insecure :)   p,5i)nEFj  
     www.happyhacker.org => OpenBSD 2.2-2.4 # Sick of being owned, Carolyn?   p,5i)nEFj  
     # Even the most secure OS is   p,5i)nEFj  
     # useless in the hands of an   p,5i)nEFj  
     # incompetent admin.   p,5i)nEFj  
p,5i)nEFj  
     # Misc   p,5i)nEFj  
     www.lwn.net => Linux 2.0.31-34 # This Linux news site rocks!   p,5i)nEFj  
     www.slashdot.org => Linux 2.1.122 - 2.1.126   p,5i)nEFj  
     www.whitehouse.gov => IRIX 5.3   p,5i)nEFj  
     sunsite.unc.edu => Solaris 2.6   p,5i)nEFj  
p,5i)nEFj  
p,5i)nEFj  
有志者事竟成
离线游春波

发帖
6734
金钱
54611
贡献值
193
交易币
209
好评度
1569
家乡
广东省河源市
性别
只看该作者 21楼 发表于: 2010-04-03
在Windows中安装和设置Nmap p,5i)nEFj  
p,5i)nEFj  
p,5i)nEFj  
  Nmap原来是用于Unix系统的命令行应用程序。但是,自从2000年以来,这个应用程序就有了Windows版本。本指南将介绍这个开源软件网络扫描器的Windows版本的安装和设置。 p,5i)nEFj  
p,5i)nEFj  
  虽然你可以从Zip文件下载和安装Nmap,但是,最新版本还需要安装免费的WinPcap数据包捕捉库。我建议你选择使用Nmap Windows安装程序。这个安装程序能够为你处理WinPcap安装。这个安装程序的文件名是nmap-4.01-setup.exe,下载网址是http://www.insecure.org/nmap/download.html。这个安装程序不向程序菜单增加Nmap的快捷方式,因为你需要在DOS命令提示符下面运行nmap.exe。虽然添加/删除模板中没有出现WinPcap程序,但是,如果你要删除Nmap程序,你需要在Nmap文件夹中运行卸载程序。这个程序全部安装完毕之后仅占用2.6MB的空间。 p,5i)nEFj  
p,5i)nEFj  
  这个软件默认的安装目录是C:\Program Files\Nmap\。但是,由于安装程序在计算机的“路径”变量环境中增加了Nmap程序,你可以在任何目录下执行Nmap程序。因此,要运行和测试Nmap,你可以打开命令提示符窗口,然后输入如下命令:nmap -A -T4 scanme.insecure.org,就可以开始扫描scanme.insecure.org网站主机。 p,5i)nEFj  
p,5i)nEFj  
  A和T4的选项启动了操作系统和版本检测,并且把时间模板设置为“积极的”。这个程序有数百个命令行选项,其中一些选项我们将在今后的应用指南中介绍。请注意,命令行是区分大小写的。 p,5i)nEFj  
p,5i)nEFj  
  在Windows平台上的Nmap程序没有在Unix平台上的效率高,特别是连接扫描(-sT)经常是速度非常慢,因为Windows的网络应用程序接口有缺陷。你可以用鼠标双击Nmap目录中的nmap_performance.reg文件来提高连接扫描的性能。这个操作将在注册表中做出三个修改,以便增加为Nmap等应用程序保留的临时端口数量,减少一个关闭的连接的重新使用之前的时间。如果你在运行Windows平台的Nmap软件时遇到了问题,你可以查看Windows事件记录中的错误信息,然后查看http://seclists.org/#nmap-dev网站的“Nmap-dev”列表中是否包含了这个错误。还有一个网页上有许多Nmap软件的技术支持文件,网址是http://www.insecure.org/nmap/docs.html。订阅Nmap-黑客邮件列表也是值得的。 p,5i)nEFj  
p,5i)nEFj  
  Nmap作为一个命令行的应用程序的主要优势是,这个程序很容易从脚本程序运行,不需要设置许多不同的选项就能够进行准确的扫描。然而,新手和不常使用这个程序的人会感到很害怕。虽然这个软件有用于Unix平台的图形用户接口,但是,还没有用于Windows平台的稳定的接口。幸运的是这种情况今年将发生变化。目前还没有正式的发布日期。但是,Nmap的制作者Fyodor希望今年推出一个兼容Windows版本的NmapFE。NmapFE是最流行的用于Unix的图形用户接口。目前还有一些跨平台的图形用户接口正在开发之中,如UMIT (http://umit.sourceforge.net/)。 p,5i)nEFj  
p,5i)nEFj  
有志者事竟成
离线游春波

发帖
6734
金钱
54611
贡献值
193
交易币
209
好评度
1569
家乡
广东省河源市
性别
只看该作者 22楼 发表于: 2010-04-03
nmap使用方法 p,5i)nEFj  
p,5i)nEFj  
p,5i)nEFj  
描述 p,5i)nEFj  
p,5i)nEFj  
   nmap被开发用于允许系统管理员察看一个大的网络系统有哪些主机以及其上运行何种服务。它支持多种协议的扫描如UDP,TCP connect(),TCP SYN (half open), ftp proxy (bounce attack),Reverse-ident, ICMP (ping sweep), FIN, ACK sweep,Xmas Tree, SYN sweep, 和Null扫描。你可以从SCAN TYPES一节中察看相关细节。nmap还提供一些实用功能如通过tcp/ip来甄别操作系统类型、秘密扫描、动态延迟和重发、平行扫描、通过并行的PING侦测下属的主机、欺骗扫描、端口过滤探测、直接的RPC扫描、分布扫描、灵活的目标选择以及端口的描述。   p,5i)nEFj  
p,5i)nEFj  
   对非ROOT的用户来说,nmap的正式版可以做很多重要的东西了。不幸的是部份关键的核心功能(比如raw sockets)需要root权限。所以尽量以root的身份运行nmap。   p,5i)nEFj  
p,5i)nEFj  
  运行nmap后通常会得到一个关于你扫描的机器的一个实用的端口列表。nmap总是显示该服务的服务名称,端口号,状态以及协议。状态有'open','filtered'和'unfiltered'三种。'open'指的是目标机器将会在该端口接受你的连接请求。'filtered'指的是有防火墙、过滤装置或者其它的网络障碍物在这个端口阻挡了nmap 进一步查明端口是否开放的动作。至于'unfiltered'则只有在大多数的扫描端口都处在'filtered'状态下才会出现的。   p,5i)nEFj  
p,5i)nEFj  
  根据选项的使用,nmap还可以报告远程主机下面的特性:使用的操作系统、TCP连续性、在各端口上绑定的应用程序用户的用户名、DNS名、主机是否是个smurf地址以及一些其它功能。   p,5i)nEFj  
p,5i)nEFj  
  选项 p,5i)nEFj  
  ----*   p,5i)nEFj  
p,5i)nEFj  
  这些选项通常都是可组合使用的。使用参数可以精确地定义一个扫描模式。nmap将会尽力捕捉并对不规范的参数组合作出提示。如果你急于开始,你可以跳过本文未尾的示例节——那儿有最基本的使用方法的示范。你也可以使用nmap -h来打开关于nmap选项参数的简介。 p,5i)nEFj  
   p,5i)nEFj  
p,5i)nEFj  
扫描类型 p,5i)nEFj  
  --------*   vz,LF=s2  
vz,LF=s2  
  -sT TCP connect()扫描:这是对TCP的最基本形式的侦测。在该操作下,该connect()对目标主机上你感兴趣的端口进行试探,如果该端口被监听,则连接成功——否则代表这个端口无法到达。这个技术的很大好处就是你无须任何特殊权限,在大多数的UNIX系统下这个命令可以被任何人自由地使用。 vz,LF=s2  
vz,LF=s2  
  但是这种形式的探测很容易被目标主机察觉并记录下来。因为服务器接受了一个连接但它却马上断开,于是其记录会显示出一连串的连接及错误信息。   vz,LF=s2  
vz,LF=s2  
  -sS TCP SYN 扫描:这类技术通常涉及一种“半开”式的扫描——因为你不打开完整的TCP连接,你发送一个SYN信息包就象你要打开一个真正的连接而且你在等待对方的回应。一个SYN│ACK(应答)会表明该端口是开放监听的。一个RST(空闲?)则代表该端口未被监听。如果SYN│ACK的回应返回,则会马上发送一个RST包来中断这个连接(事实上是我们的系统核心在干这事)。这种扫描的最大好处是只有极少的站点会对它作出记录,但是——你需要有root权限来定制这些SYN包。   vz,LF=s2  
vz,LF=s2  
  -sF -sX -sN vz,LF=s2  
vz,LF=s2  
  Stealth FIN,Xmas Tree 或者Null扫描模式:有时甚至SYN扫描都不够隐蔽——一些防火墙及信息包过滤装置会在重要端口守护,SYN包在此时会被截获,一些应用软件如Synlogger以及Courtney对侦测这类型的扫描都是行家。所以呢,在另一方面要有更进一步的扫描能在不遇到麻烦的情况下通过它们…… vz,LF=s2  
vz,LF=s2  
  这个主意是关闭的端口会对你发送的探测信息包返回一个RST,而打开的端口则对其忽略不理(你可以参阅RFC 973 PP64)。所以FIN扫描使用空的FIN信息包作为探针、Xmas tree使用FIN,URG,PUSH标记、Null扫描则不用任何标记。但是不幸的是微软以他们一贯的风格不理睬这一标准……所以这一扫描在WINDOWS9X以及NT下不能工作。 vz,LF=s2  
vz,LF=s2  
  从积极方面来讲,这其实也是一个很好的区分两种平台的办法——如果这次扫描发现了打开的端口,那你就能明白这台机器不是运行WINDOWS。如果-sF,-sX,-sN的扫描显示所有端口都是关闭的但一个SYN(-sS)扫描却显示有打开端口,那你就能大致推断它是WINDOWS平台。这只是一个简单应用,因为现在nmap已经有了更彻底的操作系统判别方法——当然它的原理类似上面所提到的. vz,LF=s2  
vz,LF=s2  
  这些平台包括Cisco, BSDI, HP/UX, MVS, 和IRIX。   vz,LF=s2  
vz,LF=s2  
   -sP vz,LF=s2  
vz,LF=s2  
  Ping扫描:有时你仅希望了解网络上有哪些主机是开放的,nmap可以通过对你指定的IP地址发送ICMP的echo request信息包来做到这一点,有回应的主机就是开放的啦。但令人讨厌的是一些站点比如microsoft.com对echo request包设置了障碍。这样的话nmap还能发送一个TCP ack包到80端口(默认),如果获得了RST返回,机器是开放的。第三个方法是发送一个SYN信息包并等待RST 或SYN/ACK响应了。作为非root的用户可以使用的,常用connect()模式。对root来说,默认的nmap同时使用ICMP和ACK的方法扫描,当然你也可以改变-P选项。注意你最好先ping一下用户,只有有回应的主机才有必要扫描,只有你不想探测任何的实际端口扫描只想大面积地搜索一下活动的主机,你可以使用此选项。 vz,LF=s2  
   -sU vz,LF=s2  
vz,LF=s2  
   UDP扫描:这一方法是用来确定哪个UDP(User Datagram Protocol,RFC 768)端口在主机端开放。这一技术是以发送零字节的UDP信息包到目标机器的各个端口,如果我们收到一个ICMP端口无法到达的回应,那么该端口是关闭的,否则我们可以认为它是敞开大门的。有些人或许会认为UDP扫描是无意义的,我通常会以最近的Solaris rcpbind漏洞来提醒他们。Rpcbind会隐藏在一个非正式的UDP端口于32770口以上,因此对111进行防火墙过滤是无关紧要的.但你是否查找过在30000以上的端口是否处在监听状态中……,用UDP扫描你就能轻松地做到这一点! vz,LF=s2  
vz,LF=s2  
   或者大家还可以想想cDc出品的Back Orifice木马(BO),它可以在Windows的机器中配置一个UDP端口,更不用说如此众多可以利用UDP的、易受攻击的服务如snmp,tftp,NFS等了。但有一点不得不提及的是UDP扫描在目标主机按照RFC 1812(4.3.2.8节)建议的那样限制ICMP错误信息的传送速率时会令人痛苦的缓慢。举例来说吧,Linux 的核心配置(在net/ipv4/icmp.h)限制了每4秒产生80次的无法到达信息——每次产生1/4秒的延迟。Solaris有着更严格的限制(大约每秒两次就会延迟),所以这要耗费相当长的时间。nmap会侦测到这种限制并自动减缓速度——这也胜过用无意义的会被目标主机忽略的大量信息包来填充这个网络。如以往一样,微软还是不在乎RFC所建议的事而且没有任何限制性措施实行于WINDOWS或NT上,这样我们可以把多达65K的端口以极高的速度扫描完毕,欢呼吧!   vz,LF=s2  
vz,LF=s2  
   -sR vz,LF=s2  
vz,LF=s2  
   RPC扫描:这一方法是结合nmap多种扫描的一种模式,它取得所有的TCP/UDP开放端口并且用SunRPC程序NULL命令来试图确定是否是RPC端口并且——如果是的话,其上运行什么程序,何种版本。这样你可以在目标主机躲在防火墙后或者由TCP wrappers防护着,它都能取得效果近似于'rpcinfo -p'的信息。但Decoys现在还不能正常工作在RPC扫描下,在以后我会在UDP RPC扫描中加入Decoy支持的。   vz,LF=s2  
vz,LF=s2  
   -b(ftp relay host) vz,LF=s2  
vz,LF=s2  
  FTP 跳跃攻击:FTP协议的一个有趣的特点是它支持代理FTP连接(RFC 959),用另一句话说,我可以从evil.com连接到一个FTP服务器target.com并且要求目标主机发送文件到因特网的*任何地方*!在1985年这一RFC被写下来后这一特性便渐渐施行,但在现在的网络上我们不允许人们能够随意地“抢劫”一个FTP SERVER并请求数据到任何地方。所以在Hobbit于1995年写下的有关这一协议缺陷时说到“它可以用来从许多站台上发出事实上难以追查的信件、新闻以及攻击性行为——填充你的硬盘,试图使防火墙失效或者更多是烦人而无意义的骚扰。我开发出它来是为了通过一个代理FTP服务器察看TCP端口,这样你可以连上一个在防火墙后的FTP服务器然后扫描它看来仿佛堵塞的端口(139是很好的例子)。如果FTP服务器允许你读甚至写进某些目录(比如/incoming),你可以发送任意信息到你发现打开了的端口(当然nmap不干这事)。对于你要通过'b'选项来使主机成为你的代理时,标准的URL格式形式是:username:password@server:port。要确定一个服务器是否易受这样的攻击,你可以看看我在Phrack 51期上的文章。它的更新版本在http://www.insecure.org/nmap vz,LF=s2  
  常规选项 vz,LF=s2  
  --------* vz,LF=s2  
vz,LF=s2  
  这些选项并非必需的,但有些会非常实用。 vz,LF=s2  
vz,LF=s2  
   -P0 在扫描前不尝试或者PING主机,这是用来扫描那些不允许ICMP echo 请求(或应答)的主机。microsoft.com就是这其中的一个例子,我们就必须使用-P0或者-PT80来察看microsoft.com的端口。   vz,LF=s2  
vz,LF=s2  
   -PT 用TCP的ping来确定主机是否打开。作为替代发送ICMP echo请求包并等待回应的方式,我们可以大量发送TCP ACK包往目标网络(或者单机)并一点点地等待它的回应,打开的主机会返回一个RST。这一参数可以让你在ping信息包阻塞时仍能高效率地扫描一个网络/主机。对非root的用户,我们用connect(),以如下格式设置目标探针-PT,默认的端口是80,因为这相端口往往未被过滤。   vz,LF=s2  
vz,LF=s2  
   -PS 这一选项是root用户使用的,能用SYN(连接请求)包替代ACK包,打开的主机会有一个RST(或者SYN│ACK——但比较少见)应答。   vz,LF=s2  
vz,LF=s2  
   -PI 这一选项是使用一个真正的ping(ICMP echo request)包。它找到开放的主机并且将该子网中的广播地址全数搜寻——该广播地址是能够到达并能正确解析IP包的。如果其会被大量的DoS(denial of service)攻击时,我们就能找到它。   vz,LF=s2  
vz,LF=s2  
   -PB 默认的ping形式,它用于ACK(-PT)与ICMP(-PI)并行攻击,以这一形式可以通过防火墙或包过滤。   vz,LF=s2  
vz,LF=s2  
   -O 经由TCP/IP获取‘指纹’来判别主机的OS类型,用另一说法,就是用一连串的信息包探测出你所扫描的主机位于操作系统有关堆栈信息并区分其精细差别,以此判别操作系统。它用搜集到的信息建立一个“指纹”用来同已知的操作系统的指印相比较(the nmap-os-fingerprints file) vz,LF=s2  
vz,LF=s2  
   ——这样判定操作系统就有了依据。 vz,LF=s2  
vz,LF=s2  
   如果你发现一台机器开了至少一个端口并得到错误的诊断信息,那么你可以写信告诉我相关细节比如操作系统版本或侦测到的操作系统版本图,如果他有端口开放但nmap返回'不可识别的操作系统',这可能也是有用的,你可以将它的IP告诉我或者另一个办法是用nmap的-d参数并告诉我它返回的“指印”——操作系统和版本号,这样做,也算是对nmap在判定操作系统的进一步开发中做了些事情,以便后续版本中它能更精确地判别系统类型。      vz,LF=s2  
   -I 这是用ident扫描方式的参数,如Dave Goldsmith于1996年在Bugtraq中所说的,这个ident协议(rfc 1413)允许通过TCP连接得到拥有进程的用户名——即使这个连接不是由该进程发起的。所以呢,举个例吧,你可以通过ident连接到一个http端口并找出该进程是否由root运行,但这只能在“全开”的对目标端口的TCP连接中使用(象-sT扫描参数)。当你用-I参数时,远程主机的identd在开放的端口接受连接质询——很明显的,如果主机不运行identd的话,那它就无法正常工作。 vz,LF=s2  
   vz,LF=s2  
   -f 这个参数配置以细小的IP碎片包实现SYN,FIN,XMAS或NULL扫描请求。这个想法是把TCP包头分别放在几个不同的信息包中,使包过滤器难于运作,而后你就可以闯入系统做你想做的事了。但要注意,部份程序可能会对这些小信息包处理错误。比方说我最喜欢的sniffer segmentation在接收第一个36字节的信息碎片时就出现麻烦,之后又来了个24字节的!当包过滤器和能将IP碎片排列的防火墙没有获得此顺序时(就象linux内核中的CON-FIG_IP_ALWAYS_DEFRAG选项),一些网络系统就不能反映出找到目标,并且放弃。 vz,LF=s2  
vz,LF=s2  
   记住这个参数不一定能很好地工作在任何系统上,它在我的Linux,FreeBSD以及OpenBSD下是正常的,当然也有一些人说它能在部份不同的*NIX环境下工作。   vz,LF=s2  
vz,LF=s2  
  -v 详细模式。这是被强烈推荐的选项,因为它能带来你想要的更多信息。你可以重复使用它以获得更大效果。如果你需要大量翻动屏幕请使用 -d 命令两次   vz,LF=s2  
vz,LF=s2  
  -h 这是一个快捷的帮助选项,可以在屏幕上显示nmap的参数使用方法——象你注意到的那样,这个man page实在不是一个“快速入门参考”:)   vz,LF=s2  
vz,LF=s2  
  -o vz,LF=s2  
vz,LF=s2  
  这是用来指定一个放置扫描结果的文件的参数——这个结果是易于阅读的。   vz,LF=s2  
vz,LF=s2  
  -m vz,LF=s2  
vz,LF=s2  
  这也是存放扫描结果的参数,但它是存放机器可解析(machine parseable)结果的,你可以用-m 带'-'(引号不用)将其输出到标准输出里(用shell的管道符……)。在这种形式下,正常的输出被禁止了,你需要察看一些错误信息来了解情况。   vz,LF=s2  
vz,LF=s2  
  -i vz,LF=s2  
vz,LF=s2  
  从指定文件而不是从命令行读取数据。该文件可以存放一个主机或网络的列表,中间用空格、TAB键或者换行来分隔。如果希望从标准输入设备(文件)读取——比如在管道符的末端,你要将连字号(-)用于文件名。你可以从目标规格里找到更多关于写这一文件的资料。   vz,LF=s2  
vz,LF=s2  
  -p vz,LF=s2  
vz,LF=s2  
  这一参数可以指定你希望扫描的端口,举例来说吧'-p 23'则只会对主机的23端口进行探测,默认扫描的是从1到1024端口,或者也可以用nmap里带的services file里的端口列表。   vz,LF=s2  
vz,LF=s2  
  -F 快速扫描模式。指定只希望扫描nmap里提供的services file中列出的端口列表里的端口。这明显会比扫描所有65535个端口来得快。 vz,LF=s2  
  -D vz,LF=s2  
vz,LF=s2  
有志者事竟成
离线游春波

发帖
6734
金钱
54611
贡献值
193
交易币
209
好评度
1569
家乡
广东省河源市
性别
只看该作者 23楼 发表于: 2010-04-03
  这是一种带有诱骗模式的扫描,在远程主机的连接记录里会记下所有你所指定的诱骗性的地址。这样的话他们的数据存储器会显示有一些端口扫描从某个IP发起,然而他们无法辩别哪个是真正的IP而哪个是用来作为掩护的,这可以击败一些通过路由进行跟踪的行为,所以它是一项隐藏你的IP的很实用的技术。用逗号分隔各个欺骗地址,你可以随意地将'me'放进任意一个你希望显示真实IP的地方,如果你将'ME'放在第六位甚至最后,有些端口扫描记录器(比如Solar Designer's excellent scanlogd)可能根本就不会显示你的IP,如果你不用'ME'的话,nmap将会将它随机放置。 vz,LF=s2  
vz,LF=s2  
  记住你用来诱骗的主机必须是开放的或者你可以半开扫描一下你的目标。因为要从一堆实际上没有用的IP地址里判别出哪个是真正的入侵者是相当容易的。你还可能要用IP地址来代替名字,这样诱骗主机的nameserver logs里才不会记录下你来。还要记得有些(愚蠢的)"端口扫描探测器"会拒绝到达主机的端口扫描尝试。这样你无意中就会导致你扫描的主机与“诱骗主机”连接的丢失,这样可能会带来一个很大的问题是——如果这个“诱骗主机”是一个网上的网关或者甚至就是其本地的机子,其连接一样会断开!所以大家最好小心使用这个参数——从道德上的原因——这仅仅是一个诱骗,不是么?这种诱骗可以用在最初的ping扫描(用ICMP,SYN,ACK或其它)与实际的端口状态扫描中,它还可以用于远程OS的判别(-O)。当然如果你写入太多的诱骗地址也是没什么用处的,那只能减缓扫描速度以及降低一些精确度。而且一些指令处理系统还可能会过滤掉你的欺骗包,虽然多数(几乎是全部了)不会对欺骗包作出任何限制。   vz,LF=s2  
vz,LF=s2  
  -S vz,LF=s2  
vz,LF=s2  
  在某些环境下nmap可能无法确定你的源地址——这种情况下nmap会有提示,这时你就要用-S带IP地址来标注。另一种使用的可能性是用来欺骗目标使它认为某人在扫描它。设想一下,某个公司发现被竞争者持续不断的扫描:),这是一个不被支持的用法,或者说,不是主要目的。我只是用它来提醒人们在发现一个端口扫描者时别光顾责难,可能他是无辜的呢。-e能够说明这个参数的一般用法。   vz,LF=s2  
vz,LF=s2  
  -e vz,LF=s2  
vz,LF=s2  
  告诉nmap哪个界面要发送或接收。nmap能够自动探测它,如果无法做到,亦会有提示信息。 vz,LF=s2  
vz,LF=s2  
  -g vz,LF=s2  
vz,LF=s2  
  在扫描中设定源端口号。许多“天真”的防火墙或包过滤器除了它们建立的允许DNS(53)或FTP-DATA(20)的包进来建立连接之外,其余一概过滤,显然这是很轻率的做法,因为入侵者能够轻易地编辑一个来自FTP或DNS的源端口。比如说,你如果无法从一个主机的host:port通过TCP ISN取得信息,那么通过用-g 命令,nmap会改变源端口再次尝试。需要了解的是,使用这个选项可能会有小小的延迟,因为我有时需要在源端口号中存储有用信息.   vz,LF=s2  
vz,LF=s2  
  -M vz,LF=s2  
vz,LF=s2  
  设定用来并行进行TCP connect()扫描的最大的sockets数目(默认)。这对将扫描适度减缓是相当有效的,它可以避免把远程主机crashing。另一个途径是用-sS。  -D vz,LF=s2  
vz,LF=s2  
  这是一种带有诱骗模式的扫描,在远程主机的连接记录里会记下所有你所指定的诱骗性的地址。这样的话他们的数据存储器会显示有一些端口扫描从某个IP发起,然而他们无法辩别哪个是真正的IP而哪个是用来作为掩护的,这可以击败一些通过路由进行跟踪的行为,所以它是一项隐藏你的IP的很实用的技术。用逗号分隔各个欺骗地址,你可以随意地将'me'放进任意一个你希望显示真实IP的地方,如果你将'ME'放在第六位甚至最后,有些端口扫描记录器(比如Solar Designer's excellent scanlogd)可能根本就不会显示你的IP,如果你不用'ME'的话,nmap将会将它随机放置。 vz,LF=s2  
vz,LF=s2  
  记住你用来诱骗的主机必须是开放的或者你可以半开扫描一下你的目标。因为要从一堆实际上没有用的IP地址里判别出哪个是真正的入侵者是相当容易的。你还可能要用IP地址来代替名字,这样诱骗主机的nameserver logs里才不会记录下你来。还要记得有些(愚蠢的)"端口扫描探测器"会拒绝到达主机的端口扫描尝试。这样你无意中就会导致你扫描的主机与“诱骗主机”连接的丢失,这样可能会带来一个很大的问题是——如果这个“诱骗主机”是一个网上的网关或者甚至就是其本地的机子,其连接一样会断开!所以大家最好小心使用这个参数——从道德上的原因——这仅仅是一个诱骗,不是么?这种诱骗可以用在最初的ping扫描(用ICMP,SYN,ACK或其它)与实际的端口状态扫描中,它还可以用于远程OS的判别(-O)。当然如果你写入太多的诱骗地址也是没什么用处的,那只能减缓扫描速度以及降低一些精确度。而且一些指令处理系统还可能会过滤掉你的欺骗包,虽然多数(几乎是全部了)不会对欺骗包作出任何限制。   vz,LF=s2  
  定时选项 vz,LF=s2  
  --------*  vz,LF=s2  
vz,LF=s2  
  虽然nmap在一般情况下都能够很好地在运行时间里尽可能迅速地完成扫描任务,但偶尔还是会有一些主机/端口无法侦测,这可能是nmap默认的时间策略和你的目标不太一致(相当于timeout的设定),下面就是一些选项能对扫描的时间进行控制:   vz,LF=s2  
vz,LF=s2  
  -T vz,LF=s2  
vz,LF=s2  
  这是一个可以用来便利地表达nmap时间策略优先权的参数设置。Paranoid模式用极慢的速度来扫描以避免被数字记录系统记录。它使扫描连续而不是并发而且通常等待至少五分钟才发送一个信息包。Sneaky也是类似的,只是它是每15秒发送一个信息包。Polite模式是用来减轻网络负载以减少当机的可能性,它是连续发送探针并在两个包的间隙等待0.4秒。Normal是nmap的常规用法,是尽其所能地快速扫描——除非主机或端口连接丢失。Aggressive模式是对每台主机设定了五分钟的timeout,并且等待每个探针应答不超过1.25秒。Insane模式是适应非常快的网络或者你不在乎丢失一些信息——因为太快!它的timeout设定于75秒并且只等待回应0.3秒,它允许对一个很快的网络系统进行“扫荡”:),你也可以用数字(0-5)来代表参数,比如'-t 0'表示Paranoid而'-t 5'代表Insane模式。注意,这些时间设定无法在底层的控制中联合使用。(NOT be used in combination with the lower level controls given below.)   vz,LF=s2  
vz,LF=s2  
  --host_timeout vz,LF=s2  
vz,LF=s2  
  具体指定nmap对某个IP的扫描时间总量,超过则作不通处理,默认是不做设定。   vz,LF=s2  
vz,LF=s2  
  --max_rtt_timeout vz,LF=s2  
vz,LF=s2  
  指定nmap对一个探针从远程端返回回应的最大时间,默认是9000。 vz,LF=s2  
vz,LF=s2  
  --initial_rtt_timeout vz,LF=s2  
vz,LF=s2  
  指定最初探针的timeout时间,这通常在用-P0扫描有防火墙保护的主机时很有效,nmap会通过ping得到一个好的RTT评估以及最初少数的探针。默认值为6000。 vz,LF=s2  
vz,LF=s2  
   --max_parallelism vz,LF=s2  
vz,LF=s2  
   指定nmap允许的最大并行扫描数目,设定为1表明nmap每次只扫描个端口,它同样会对其它扫描如ping sweep, RPC scan等产生影响。   vz,LF=s2  
vz,LF=s2  
  --scan_delay vz,LF=s2  
vz,LF=s2  
  指定nmap必须等待的两个探针间的最小的时间。这是减少网络负载及使扫描在综合数据存储的记录下不那么显眼的办法。   vz,LF=s2  
    目标说明 vz,LF=s2  
  --------*   vz,LF=s2  
vz,LF=s2  
  所有不带参数的选项都会被视为是nmap的目标主机描述。最简单的实例是仅仅在命令行列出单一的主机名或IP地址。如果你希望扫描一个IP地址的子网,你可以在主机名和IP地址中加入'/mask'。mask必需是在0(扫描整个网络)和32(特定的单一主机)。用/24则表明扫找一个C类地址,而/16则是扫描B类 vz,LF=s2  
vz,LF=s2  
  nmap还有一些更有用的符号说明方式可以让你用list/ranges来为每个元素指定IP地址。比如你要扫描B类网址128.210.*.*,则可以用'128.210.*.*'或'128.210.0-255.0-255'或者甚至是'128.210.1-50,51-255.1,2,3,4,5-255'来表示。当然你也可以用上面提过的mask来表示:'128.210.0.0/16'。所有这些都是等价的,当你用'*'的时候记住多数的shell都要求用定界符比如引号将其标注。   vz,LF=s2  
vz,LF=s2  
  另一个有趣的是你可以用其它方法将整个网络“分割”,比如你可以用'*.*.5.6-7'来扫描所有以.5.6或 .5.7结束的IP地址。要得到更多信息,你可以看看示例节。   vz,LF=s2  
vz,LF=s2  
  扫描范例 vz,LF=s2  
  --------* vz,LF=s2  
vz,LF=s2  
  这里是一些运用nmap的扫描范例,从最简单普通的到有一些复杂的例子都有。注意这里有真实的数字以及一些真实的域名——这样可以让扫描行为看起来更具体。在这里你可以用自己的网络里的名称代替其中的addresses/names。虽然端口扫描的结果分析可能会使某些人容易攻击,但我不认为它是不合法的,我曾经扫描过成百上千的机器但只收到一次抱怨。但我不是律师而一些(anal)人们对nmap探测觉得烦恼,所以最好在取得允许后扫描或者——冒险,后果由你自己承担。   vz,LF=s2  
vz,LF=s2  
  nmap -v www.hackervip.com   vz,LF=s2  
vz,LF=s2  
  这样对target.example.com上所有的保留TCP端口做了一次扫描,-v表示用详细模式。   vz,LF=s2  
vz,LF=s2  
  nmap -sS -O www.hackervip.com/24 vz,LF=s2  
vz,LF=s2  
  这将开始一次SYN的半开扫描,针对的目标是target.example.com所在的C类子网,它还试图确定在其上运行的是什么系统。这需要root权限,因为用到了半开扫描以及系统侦测。   vz,LF=s2  
vz,LF=s2  
  nmap -sX -p 22,53,110,143,4564 128.210.*.1-127   vz,LF=s2  
vz,LF=s2  
  发送一个Xmas tree扫描到B类128.210所在子网的一半范围内,我们将检测系统是否运行sshd, DNS, pop3d, imapd, 或者端口4564。要注意由于微软TCP堆栈的不完善,Xmas扫描将不能在其平台上运行成功,同样的问题可能存在于CISCO, IRIX, HP/UX, 和BSDI。   vz,LF=s2  
vz,LF=s2  
  nmap -v -p 80 '*.*.2.3-5'   vz,LF=s2  
vz,LF=s2  
  这是定位一个网域(将整个网络分隔成许多小部份)再进行扫描的方式,这里扫描的是所有以.2.3,.2.4, 或.2.5结束的IP地址。如果你是ROOT的话也可以用-sS。同样的你可以从127开始搜寻更多有趣的机器,你可以用'127-222'替代前面的星号——恕我直言,那个区域有着大量有趣的机器。  vz,LF=s2  
vz,LF=s2  
  host -l chkh.com │ cut '-d ' -f 4 │ ./nmap -v -i -   vz,LF=s2  
vz,LF=s2  
  做一个DNS zone transfer来寻找在company.com进而的主机并且将IP地址送至nmap(feed the IP addresses to nmap)。这个命令是在我的GNU/Linux平台下运行的,你可能需要用不同的选项参数或者不同的操作系统。 vz,LF=s2  
3wEVjT-  
有志者事竟成
离线游春波

发帖
6734
金钱
54611
贡献值
193
交易币
209
好评度
1569
家乡
广东省河源市
性别
只看该作者 24楼 发表于: 2010-04-03
网络的核心所在 深入了解交换机漏洞 3wEVjT-  
3wEVjT-  
3wEVjT-  
IDC报告显示,交换机市场近年来一直保持着较高的增长势头,到2009年市场规模有望达到15.1亿美元。交换机在企业网中占有重要的地位,通常是整个网络的核心所在,这一地位使它成为黑客入侵和病毒肆虐的重点对象,为保障自身网络安全,企业有必要对局域网上的交换机漏洞进行全面了解。以下是利用交换机漏洞的五种攻击手段。 3wEVjT-  
VLAN跳跃攻击 3wEVjT-  
虚拟局域网(VLAN)是对广播域进行分段的方法。VLAN还经常用于为网络提供额外的安全,因为一个VLAN上的计算机无法与没有明确访问权的另一个VLAN上的用户进行对话。不过VLAN本身不足以保护环境的安全,恶意黑客通过VLAN跳跃攻击,即使未经授权,也可以从一个VLAN跳到另一个VLAN。 3wEVjT-  
VLAN跳跃攻击(VLAN hopping)依靠的是动态中继协议(DTP)。如果有两个相互连接的交换机,DTP就能够对两者进行协商,确定它们要不要成为802.1Q中继,洽商过程是通过检查端口的配置状态来完成的。 3wEVjT-  
VLAN跳跃攻击充分利用了DTP,在VLAN跳跃攻击中,黑客可以欺骗计算机,冒充成另一个交换机发送虚假的DTP协商消息,宣布他想成为中继; 真实的交换机收到这个DTP消息后,以为它应当启用802.1Q中继功能,而一旦中继功能被启用,通过所有VLAN的信息流就会发送到黑客的计算机上。图1表明了这个过程。 3wEVjT-  
中继建立起来后,黑客可以继续探测信息流,也可以通过给帧添加802.1Q信息,指定想把攻击流量发送给哪个VLAN。 3wEVjT-  
生成树攻击 3wEVjT-  
生成树协议(STP)可以防止冗余的交换环境出现回路。要是网络有回路,就会变得拥塞不堪,从而出现广播风暴,引起MAC表不一致,最终使网络崩溃。 3wEVjT-  
使用STP的所有交换机都通过网桥协议数据单元(BPDU)来共享信息,BPDU每两秒就发送一次。交换机发送BPDU时,里面含有名为网桥ID的标号,这个网桥ID结合了可配置的优先数(默认值是32768)和交换机的基本MAC地址。交换机可以发送并接收这些BPDU,以确定哪个交换机拥有最低的网桥ID,拥有最低网桥ID的那个交换机成为根网桥(Root Bridge)。 3wEVjT-  
根网桥好比是小镇上的社区杂货店,每个小镇都需要一家杂货店,而每个市民也需要确定到达杂货店的最佳路线。比最佳路线来得长的路线不会被使用,除非主通道出现阻塞。 3wEVjT-  
根网桥的工作方式很相似。其他每个交换机确定返回根网桥的最佳路线,根据成本来进行这种确定,而这种成本基于为带宽所分配的值。如果其他任何路线发现摆脱阻塞模式不会形成回路(譬如要是主路线出现问题),它们将被设成阻塞模式。 3wEVjT-  
恶意黑客利用STP的工作方式来发动拒绝服务(DoS)攻击。如果恶意黑客把一台计算机连接到不止一个交换机,然后发送网桥ID很低的精心设计的BPDU,就可以欺骗交换机,使它以为这是根网桥,这会导致STP重新收敛(Reconverge),从而引起回路,导致网络崩溃。 3wEVjT-  
MAC 表洪水攻击 3wEVjT-  
交换机的工作方式是: 帧在进入交换机时记录下MAC源地址,这个MAC地址与帧进入的那个端口相关,因此以后通往该MAC地址的信息流将只通过该端口发送出去。这可以提高带宽利用率,因为信息流用不着从所有端口发送出去,而只从需要接收的那些端口发送出去。 3wEVjT-  
MAC地址存储在内容可寻址存储器(CAM)里面,CAM是一个128K大小的保留内存,专门用来存储MAC地址,以便快速查询。如果恶意黑客向CAM发送大批数据包,就会导致交换机开始向各个地方发送大批信息流,从而埋下了隐患,甚至会导致交换机在拒绝服务攻击中崩溃。 3wEVjT-  
ARP攻击 3wEVjT-  
ARP(Address Resolution Protocol)欺骗是一种用于会话劫持攻击中的常见手法。地址解析协议(ARP)利用第2层物理MAC地址来映射第3层逻辑IP地址,如果设备知道了IP地址,但不知道被请求主机的MAC地址,它就会发送ARP请求。ARP请求通常以广播形式发送,以便所有主机都能收到。 3wEVjT-  
恶意黑客可以发送被欺骗的ARP回复,获取发往另一个主机的信息流。图2显示了一个ARP欺骗过程,其中ARP请求以广播帧的形式发送,以获取合法用户的MAC地址。假设黑客Jimmy也在网络上,他试图获取发送到这个合法用户的信息流,黑客Jimmy欺骗ARP响应,声称自己是IP地址为10.0.0.55(MAC地址为05-1C-32-00-A1-99)的主人,合法用户也会用相同的MAC地址进行响应。结果就是,交换机在MAC地表中有了与该MAC表地址相关的两个端口,发往这个MAC地址的所有帧被同时发送到了合法用户和黑客Jimmy。 3wEVjT-  
VTP攻击 3wEVjT-  
VLAN中继协议(VTP,VLAN Trunk Protocol)是一种管理协议,它可以减少交换环境中的配置数量。就VTP而言,交换机可以是VTP服务器、VTP客户端或者VTP透明交换机,这里着重讨论VTP服务器和VTP客户端。用户每次对工作于VTP服务器模式下的交换机进行配置改动时,无论是添加、修改还是移除VLAN,VTP配置版本号都会增加1,VTP客户端看到配置版本号大于目前的版本号后,就知道与VTP服务器进行同步。 3wEVjT-  
恶意黑客可以让VTP为己所用,移除网络上的所有VLAN(除了默认的VLAN外),这样他就可以进入其他每个用户所在的同一个VLAN上。不过,用户可能仍在不同的网络上,所以恶意黑客就需要改动他的IP地址,才能进入他想要攻击的主机所在的同一个网络上。 3wEVjT-  
恶意黑客只要连接到交换机,并在自己的计算机和交换机之间建立一条中继,就可以充分利用VTP。黑客可以发送VTP消息到配置版本号高于当前的VTP服务器,这会导致所有交换机都与恶意黑客的计算机进行同步,从而把所有非默认的VLAN从VLAN数据库中移除出去。 3wEVjT-  
3wEVjT-  
3wEVjT-  
有志者事竟成
离线游春波

发帖
6734
金钱
54611
贡献值
193
交易币
209
好评度
1569
家乡
广东省河源市
性别
只看该作者 25楼 发表于: 2010-04-03
网络欺骗技术 3wEVjT-  
3wEVjT-  
3wEVjT-  
什么是网络欺骗? 3wEVjT-  
计算机系统及网络的信息安全将是新世纪中各国面临的重大挑战之一。在我国,这一问题已引起各方面的高度重视,一些典型技术及相关产品如密码与加密、认证与访问控制、入侵检测与响应、安全分析与模拟和灾难恢复都处于如火如荼的研究和开发之中。近年来,在与入侵者周旋的过程中,另一种有效的信息安全技术正渐渐地进入了人们的视野,那就是网络欺骗。 3wEVjT-  
网络欺骗就是使入侵者相信信息系统存在有价值的、可利用的安全弱点,并具有一些可攻击窃取的资源(当然这些资源是伪造的或不重要的),并将入侵者引向这些错误的资源。它能够显著地增加入侵者的工作量、入侵复杂度以及不确定性,从而使入侵者不知道其进攻是否奏效或成功。而且,它允许防护者跟踪入侵者的行为,在入侵者之前修补系统可能存在的安全漏洞。 3wEVjT-  
从原理上讲,每个有价值的网络系统都存在安全弱点,而且这些弱点都可能被入侵者所利用。网络欺骗主要有以下三个作用: 3wEVjT-  
  影响入侵者使之按照你的意志进行选择; 3wEVjT-  
  迅速地检测到入侵者的进攻并获知其进攻技术和意图; 3wEVjT-  
  消耗入侵者的资源。 3wEVjT-  
一个理想的网络欺骗可以使入侵者感到他们不是很容易地达到了期望的目标(当然目标是假的),并使其相信入侵取得了成功。 3wEVjT-  
网络欺骗的主要技术 3wEVjT-  
Honey Pot和分布式Honey Pot 3wEVjT-  
网络欺骗一般通过隐藏和安插错误信息等技术手段实现,前者包括隐藏服务、多路径和维护安全状态信息机密性,后者包括重定向路由、伪造假信息和设置圈套等等。综合这些技术方法,最早采用的网络欺骗是Honey Pot技术,它将少量的有吸引力的目标(我们称之为Honey Pot)放置在入侵者很容易发现的地方,以诱使入侵者上当。 3wEVjT-  
这种技术的目标是寻找一种有效的方法来影响入侵者,使得入侵者将技术、精力集中到Honey Pot而不是其它真正有价值的正常系统和资源中。Honey Pot技术还可以做到一旦入侵企图被检测到时,迅速地将其切换。 3wEVjT-  
但是,对稍高级的网络入侵,Honey Pot技术就作用甚微了。因此,分布式Honey Pot技术便应运而生,它将欺骗(Honey Pot)散布在网络的正常系统和资源中,利用闲置的服务端口来充当欺骗,从而增大了入侵者遭遇欺骗的可能性。它具有两个直接的效果,一是将欺骗分布到更广范围的IP地址和端口空间中,二是增大了欺骗在整个网络中的百分比,使得欺骗比安全弱点被入侵者扫描器发现的可能性增大。 3wEVjT-  
尽管如此,分布式Honey Pot技术仍有局限性,这体现在三个方面:一是它对穷尽整个空间搜索的网络扫描无效;二是只提供了相对较低的欺骗质量;三是只相对使整个搜索空间的安全弱点减少。而且,这种技术的一个更为严重的缺陷是它只对远程扫描有效。如果入侵已经部分进入到网络系统中,处于观察(如嗅探)而非主动扫描阶段时,真正的网络服务对入侵者已经透明,那么这种欺骗将失去作用。 3wEVjT-  
欺骗空间技术 3wEVjT-  
有志者事竟成
离线游春波

发帖
6734
金钱
54611
贡献值
193
交易币
209
好评度
1569
家乡
广东省河源市
性别
只看该作者 26楼 发表于: 2010-04-03
欺骗空间技术就是通过增加搜索空间来显著地增加入侵者的工作量,从而达到安全防护的目的。利用计算机系统的多宿主能力(multi-homed capability),在只有一块以太网卡的计算机上就能实现具有众多IP地址的主机,而且每个IP地址还具有它们自己的MAC地址。这项技术可用于建立填充一大段地址空间的欺骗,且花费极低。实际上,现在已有研究机构能将超过4000个IP地址绑定在一台运行Linux的PC上。这意味着利用16台计算机组成的网络系统,就可做到覆盖整个B类地址空间的欺骗。尽管看起来存在许许多多不同的欺骗,但实际上在一台计算机上就可实现。 3wEVjT-  
从效果上看,将网络服务放置在所有这些IP地址上将毫无疑问地增加了入侵者的工作量,因为他们需要决定哪些服务是真正的,哪些服务是伪造的,特别是这样的4万个以上IP地址都放置了伪造网络服务的系统。而且,在这种情况下,欺骗服务相对更容易被扫描器发现,通过诱使入侵者上当,增加了入侵时间,从而大量消耗入侵者的资源,使真正的网络服务被探测到的可能性大大减小。 3wEVjT-  
当入侵者的扫描器访问到网络系统的外部路由器并探测到一欺骗服务时,还可将扫描器所有的网络流量重定向到欺骗上,使得接下来的远程访问变成这个欺骗的继续。 3wEVjT-  
当然,采用这种欺骗时网络流量和服务的切换(重定向)必须严格保密,因为一旦暴露就将招致攻击,从而导致入侵者很容易将任一已知有效的服务和这种用于测试入侵者的扫描探测及其响应的欺骗区分开来。 3wEVjT-  
增强欺骗质量 3wEVjT-  
面对网络攻击技术的不断提高,一种网络欺骗技术肯定不能做到总是成功,必须不断地提高欺骗质量,才能使入侵者难以将合法服务和欺骗区分开来。 3wEVjT-  
网络流量仿真、网络动态配置、多重地址转换和组织信息欺骗是有效增强网络欺骗质量的几种主要方法,下面分别予以介绍。 3wEVjT-  
网络流量仿真 3wEVjT-  
产生仿真流量的目的是使流量分析不能检测到欺骗。在欺骗系统中产生仿真流量有两种方法。一种方法是采用实时方式或重现方式复制真正的网络流量,这使得欺骗系统与真实系统十分相似,因为所有的访问连接都被复制了。第二种方法是从远程产生伪造流量,使入侵者可以发现和利用。 3wEVjT-  
网络动态配置 3wEVjT-  
真实网络是随时间而改变的,如果欺骗是静态的,那么在入侵者长期监视的情况下就会导致欺骗无效。因此,需要动态配置欺骗网络以模拟正常的网络行为,使欺骗网络也象真实网络那样随时间而改变。为使之有效,欺骗特性也应该能尽可能地反映出真实系统的特性。例如,如果办公室的计算机在下班之后关机,那么欺骗计算机也应该在同一时刻关机。其它的如假期、周末和特殊时刻也必须考虑,否则入侵者将很可能发现欺骗。 3wEVjT-  
多重地址转换(multiple address translation) 3wEVjT-  
地址的多次转换能将欺骗网络和真实网络分离开来,这样就可利用真实的计算机替换低可信度的欺骗,增加了间接性和隐蔽性。其基本的概念就是重定向代理服务(通过改写代理服务器程序实现),由代理服务进行地址转换,使相同的源和目的地址象真实系统那样被维护在欺骗系统中。右图中,从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。并且还可将欺骗服务绑定在与提供真实服务主机相同类型和配置的主机上,从而显著地提高欺骗的真实性。还可以尝试动态多重地址转换。 3wEVjT-  
创建组织信息欺骗 3wEVjT-  
如果某个组织提供有关个人和系统信息的访问,那么欺骗也必须以某种方式反映出这些信息。例如,如果组织的DNS服务器包含了个人系统拥有者及其位置的详细信息,那么你就需要在欺骗的DNS列表中具有伪造的拥有者及其位置,否则欺骗很容易被发现。而且,伪造的人和位置也需要有伪造的信息如薪水、预算和个人记录等等。 3wEVjT-  
结束语 3wEVjT-  
本文阐述了网络欺骗在信息系统安全中的作用及实现的主要技术,并介绍了增强欺骗质量的具体方法。高质量的网络欺骗,使可能存在的安全弱点有了很好的隐藏伪装场所,真实服务与欺骗服务几乎融为一体,使入侵者难以区分。因此,一个完善的网络安全整体解决方案,离不开网络欺骗。在网络攻击和安全防护的相互促进发展过程中,网络欺骗技术将具有广阔的发展前景。 3wEVjT-  
3wEVjT-  
有志者事竟成
离线游春波

发帖
6734
金钱
54611
贡献值
193
交易币
209
好评度
1569
家乡
广东省河源市
性别
只看该作者 27楼 发表于: 2010-04-03
网络攻击概览 3wEVjT-  
3wEVjT-  
3wEVjT-  
1、服务拒绝攻击 3wEVjT-  
服务拒绝攻击企图通过使你的服务计算机崩溃或把它压跨来阻止你提供服务,服务拒绝攻击是最容易实施的攻击行为,主要包括: 3wEVjT-  
死亡之ping (ping of death) 3wEVjT-  
概览:由于在早期的阶段,路由器对包的最大尺寸都有限制,许多操作系统对TCP/IP栈的实现在ICMP包上都是规定64KB,并且在对包的标题头进行读取之后,要根据该标题头里包含的信息来为有效载荷生成缓冲区,当产生畸形的,声称自己的尺寸超过ICMP上限的包也就是加载的尺寸超过64K上限时,就会出现内存分配错误,导致TCP/IP堆栈崩溃,致使接受方当机。 3wEVjT-  
防御:现在所有的标准TCP/IP实现都已实现对付超大尺寸的包,并且大多数防火墙能够自动过滤这些攻击,包括:从windows98之后的windows,NT(service 3wEVjT-  
pack 3之后),linux、Solaris、和Mac OS都具有抵抗一般ping of 3wEVjT-  
death攻击的能力。此外,对防火墙进行配置,阻断ICMP以及任何未知协议,都讲防止此类攻击。 3wEVjT-  
泪滴(teardrop) 3wEVjT-  
概览:泪滴攻击利用那些在TCP/IP堆栈实现中信任IP碎片中的包的标题头所包含的信息来实现自己的攻击。IP分段含有指示该分段所包含的是原包的哪一段的信息,某些TCP/IP(包括service 3wEVjT-  
pack 4以前的NT)在收到含有重叠偏移的伪造分段时将崩溃。 3wEVjT-  
防御:服务器应用最新的服务包,或者在设置防火墙时对分段进行重组,而不是转发它们。 3wEVjT-  
UDP洪水(UDP flood) 3wEVjT-  
概览:各种各样的假冒攻击利用简单的TCP/IP服务,如Chargen和Echo来传送毫无用处的占满带宽的数据。通过伪造与某一主机的Chargen服务之间的一次的UDP连接,回复地址指向开着Echo服务的一台主机,这样就生成在两台主机之间的足够多的无用数据流,如果足够多的数据流就会导致带宽的服务攻击。 3wEVjT-  
防御:关掉不必要的TCP/IP服务,或者对防火墙进行配置阻断来自Internet的请求这些服务的UDP请求。 3wEVjT-  
SYN洪水(SYN flood) 3wEVjT-  
概览:一些TCP/IP栈的实现只能等待从有限数量的计算机发来的ACK消息,因为他们只有有限的内存缓冲区用于创建连接,如果这一缓冲区充满了虚假连接的初始信息,该服务器就会对接下来的连接停止响应,直到缓冲区里的连接企图超时。在一些创建连接不受限制的实现里,SYN洪水具有类似的影响。 3wEVjT-  
防御:在防火墙上过滤来自同一主机的后续连接。 3wEVjT-  
未来的SYN洪水令人担忧,由于释放洪水的并不寻求响应,所以无法从一个简单高容量的传输中鉴别出来。 3wEVjT-  
Land攻击 3wEVjT-  
概览:在Land攻击中,一个特别打造的SYN包它的原地址和目标地址都被设置成某一个服务器地址,此举将导致接受服务器向它自己的地址发送SYN-ACK消息,结果这个地址又发回ACK消息并创建一个空连接,每一个这样的连接都将保留直到超时掉,对Land攻击反应不同,许多UNIX实现将崩溃,NT变的极其缓慢(大约持续五分钟)。 3wEVjT-  
防御:打最新的补丁,或者在防火墙进行配置,将那些在外部接口上入站的含有内部源地址滤掉。(包括 3wEVjT-  
10域、127域、192.168域、172.16到172.31域) 3wEVjT-  
Smurf攻击 3wEVjT-  
概览:一个简单的smurf攻击通过使用将回复地址设置成受害网络的广播地址的ICMP应答请求(ping)数据包来淹没受害主机的方式进行,最终导致该网络的所有主机都对此ICMP应答请求作出答复,导致网络阻塞,比ping 3wEVjT-  
of death洪水的流量高出一或两个数量级。更加复杂的Smurf将源地址改为第三方的受害者,最终导致第三方雪崩。 Pu'lp O  
防御:为了防止黑客利用你的网络攻击他人,关闭外部路由器或防火墙的广播地址特性。为防止被攻击,在防火墙上设置规则,丢弃掉ICMP包。 Pu'lp O  
Fraggle攻击 Pu'lp O  
概览:Fraggle攻击对Smurf攻击作了简单的修改,使用的是UDP应答消息而非ICMP Pu'lp O  
防御:在防火墙上过滤掉UDP应答消息 Pu'lp O  
电子邮件炸弹 Pu'lp O  
概览:电子邮件炸弹是最古老的匿名攻击之一,通过设置一台机器不断的大量的向同一地址发送电子邮件,攻击者能够耗尽接受者网络的带宽。 Pu'lp O  
防御:对邮件地址进行配置,自动删除来自同一主机的过量或重复的消息。 Pu'lp O  
畸形消息攻击 Pu'lp O  
概览:各类操作系统上的许多服务都存在此类问题,由于这些服务在处理信息之前没有进行适当正确的错误校验,在收到畸形的信息可能会崩溃。 Pu'lp O  
防御:打最新的服务补丁。 Pu'lp O  
2、利用型攻击 Pu'lp O  
利用型攻击是一类试图直接对你的机器进行控制的攻击,最常见的有三种: Pu'lp O  
口令猜测 Pu'lp O  
概览:一旦黑客识别了一台主机而且发现了基于NetBIOS、Telnet或NFS这样的服务的可利用的用户帐号,成功的口令猜测能提供对机器的控制。 Pu'lp O  
防御:要选用难以猜测的口令,比如词和标点符号的组合。确保像NFS、NetBIOS和Telnet这样可利用的服务不暴露在公共范围。如果该服务支持锁定策略,就进行锁定。 Pu'lp O  
有志者事竟成
离线游春波

发帖
6734
金钱
54611
贡献值
193
交易币
209
好评度
1569
家乡
广东省河源市
性别
只看该作者 28楼 发表于: 2010-04-03
特洛伊木马 Pu'lp O  
概览:特洛伊木马是一种或是直接由一个黑客,或是通过一个不令人起疑的用户秘密安装到目标系统的程序。一旦安装成功并取得管理员权限,安装此程序的人就可以直接远程控制目标系统。最有效的一种叫做后门程序,恶意程序包括:NetBus、BackOrifice和BO2k,用于控制系统的良性程序如:netcat、VNC、pcAnywhere。理想的后门程序透明运行。 Pu'lp O  
防御:避免下载可疑程序并拒绝执行,运用网络扫描软件定期监视内部主机上的监听TCP服务。 Pu'lp O  
缓冲区溢出 Pu'lp O  
概览:由于在很多的服务程序中大意的程序员使用象strcpy(),strcat()类似的不进行有效位检查的函数,最终可能导致恶意用户编写一小段利用程序来进一步打开安全豁口然后将该代码缀在缓冲区有效载荷末尾,这样当发生缓冲区溢出时,返回指针指向恶意代码,这样系统的控制权就会被夺取。 Pu'lp O  
防御:利用SafeLib、tripwire这样的程序保护系统,或者浏览最新的安全公告不断更新操作系统。 Pu'lp O  
3、信息收集型攻击 Pu'lp O  
信息收集型攻击并不对目标本身造成危害,如名所示这类攻击被用来为进一步入侵提供有用的信息。主要包括:扫描技术、体系结构刺探、利用信息服务 Pu'lp O  
扫描技术 Pu'lp O  
地址扫描 Pu'lp O  
概览:运用ping这样的程序探测目标地址,对此作出响应的表示其存在。 Pu'lp O  
防御:在防火墙上过滤掉ICMP应答消息。 Pu'lp O  
端口扫描 Pu'lp O  
概览:通常使用一些软件,向大范围的主机连接一系列的TCP端口,扫描软件报告它成功的建立了连接的主机所开的端口。 Pu'lp O  
防御:许多防火墙能检测到是否被扫描,并自动阻断扫描企图。 Pu'lp O  
Pu'lp O  
反响映射 Pu'lp O  
概览:黑客向主机发送虚假消息,然后根据返回“host Pu'lp O  
unreachable”这一消息特征判断出哪些主机是存在的。目前由于正常的扫描活动容易被防火墙侦测到,黑客转而使用不会触发防火墙规则的常见消息类型,这些类型包括:RESET消息、SYN-ACK消息、DNS响应包。 Pu'lp O  
防御:NAT和非路由代理服务器能够自动抵御此类攻击,也可以在防火墙上过滤“host unreachable”ICMP应答。 Pu'lp O  
慢速扫描 Pu'lp O  
概览:由于一般扫描侦测器的实现是通过监视某个时间桢里一台特定主机发起的连接的数目(例如每秒10次)来决定是否在被扫描,这样黑客可以通过使用扫描速度慢一些的扫描软件进行扫描。 Pu'lp O  
防御:通过引诱服务来对慢速扫描进行侦测。 Pu'lp O  
体系结构探测 Pu'lp O  
概览:黑客使用具有已知响应类型的数据库的自动工具,对来自目标主机的、对坏数据包传送所作出的响应进行检查。由于每种操作系统都有其独特的响应方法(例NT和Solaris的TCP/IP堆栈具体实现有所不同),通过将此独特的响应与数据库中的已知响应进行对比,黑客经常能够确定出目标主机所运行的操作系统。 Pu'lp O  
防御:去掉或修改各种Banner,包括操作系统和各种应用服务的,阻断用于识别的端口扰乱对方的攻击计划。 Pu'lp O  
利用信息服务 Pu'lp O  
DNS域转换 Pu'lp O  
概览:DNS协议不对转换或信息性的更新进行身份认证,这使得该协议被人以一些不同的方式加以利用。如果你维护着一台公共的DNS服务器,黑客只需实施一次域转换操作就能得到你所有主机的名称以及内部IP地址。 Pu'lp O  
防御:在防火墙处过滤掉域转换请求。 Pu'lp O  
Finger服务 Pu'lp O  
概览:黑客使用finger命令来刺探一台finger服务器以获取关于该系统的用户的信息。 Pu'lp O  
防御:关闭finger服务并记录尝试连接该服务的对方IP地址,或者在防火墙上进行过滤。 Pu'lp O  
LDAP服务 Pu'lp O  
概览:黑客使用LDAP协议窥探网络内部的系统和它们的用户的信息。 Pu'lp O  
防御:对于刺探内部网络的LDAP进行阻断并记录,如果在公共机器上提供LDAP服务,那么应把LDAP服务器放入DMZ。 Pu'lp O  
4、假消息攻击 Pu'lp O  
用于攻击目标配置不正确的消息,主要包括:DNS高速缓存污染、伪造电子邮件。 Pu'lp O  
DNS高速缓存污染 Pu'lp O  
概览:由于DNS服务器与其他名称服务器交换信息的时候并不进行身份验证,这就使得黑客可以将不正确的信息掺进来并把用户引向黑客自己的主机。 Pu'lp O  
防御:在防火墙上过滤入站的DNS更新,外部DNS服务器不应能更改你的内部服务器对内部机器的认识。 Pu'lp O  
伪造电子邮件 Pu'lp O  
概览:由于SMTP并不对邮件的发送者的身份进行鉴定,因此黑客可以对你的内部客户伪造电子邮件,声称是来自某个客户认识并相信的人,并附带上可安装的特洛伊木马程序,或者是一个引向恶意网站的连接。 Pu'lp O  
防御:使用PGP等安全工具并安装电子邮件证书。 Pu'lp O  
Pu'lp O  
有志者事竟成
离线游春波

发帖
6734
金钱
54611
贡献值
193
交易币
209
好评度
1569
家乡
广东省河源市
性别
只看该作者 29楼 发表于: 2010-04-03
远程攻击 Pu'lp O  
Pu'lp O  
Pu'lp O  
⒈什么是远程攻击? Pu'lp O  
一个远程攻击是这样一种攻击,其攻击对象是攻击者还无法控制的计算机;也可以说,远程攻击是一种专门攻击除攻击者自己计算机以外的计算机(无论被攻击的计算机和攻击者位于同一子网还是有千里之遥)。“远程 计算机”此名词最确切的定义是:“一台远程计算机是这样一台机器,它不是你正在其上工作的平台,而是能利用某协议通过Internet网或任何其他网络介质被使用的计算机”。 Pu'lp O  
Pu'lp O  
⒉第一步 Pu'lp O  
进行远程攻击的第一步并不需要和攻击目标进行密切地接触(换句话说,如果入侵者聪明的话,那第一步可以不要)。入侵者的第一个任务(在识别出目标机及其所在的网络的类型后)是决定他要对付谁。此类信息的获得毋需干扰目标的正常工作(假设目标没有安装防火墙。因为大部分的网络都没有安装防火墙,长期以来一直如此)。此类的某些信息可通过下面的技术获得: Pu'lp O  
■运行一个查询命令host。通过此命令,入侵者可获得保存在目标域服务器中的所有信息。其查询结果所含信息量的多少主要依靠于网络的大小和结构。 Pu'lp O  
■WHOIS查询。此查询的方法可识别出技术管理人员。这类信息也被认为是无用的。实际上不然。因为通常技术管理人员需要参与目标网的日常管理工作,所以这些人的电子邮件地址会有些价值(而且同时使用host和WHOIS查询有助于你判断目标是一个实实在在的系统还是一个页结点,或是由另一个服务形成的虚拟的域等等)。 Pu'lp O  
■运行一些Usenet和WEB查询。在入侵者和目标进行实际接触之前,他还有许多查询工作要做。其中之一就是查询某位技术管理人员的名字信息(使用强制的、区分大小写的、完全匹配用的条件查询)。通过些查询入侵者可了解这些系统管理员和技术管理员是否经常上Usenet。同样,也可在所有可用的安全邮件列表的可查询集合中查询他们的地址。 Pu'lp O  
“你应该如何做呢?首先试着收集目标的信息。有许多网络服务可于此目的,finger、showmount和rpcinfo都是好的起点。但不要停滞于此,你还能利用DNS、Whois、Sendmail(smtp)、ftp、uucp和其他的可用的各种服务。” Pu'lp O  
收集系统管理员的相关信息是最为重要的。系统管理员的职责是维护站点的安全,当他们遇到各种问题时,许多管理员会迫不及待地将这些问题发到Usenet或邮件列表上以寻求答案。 Pu'lp O  
只要肯花一定时间来寻找此系统管理员的地址(和其他的一些信息),你便能彻底地了解他的网络、他的安全概念以及他的个性。因为发出这种邮件的系统管理员总会指明他们的组织结构、网络的拓朴结构和他们面临的问题。 Pu'lp O  
注意:对Windows NT网络进行攻击却截然不同。你必须一直跟踪每台机器上的根帐号(或者说系统管理员帐号)。因为NT并未设计出su等命令,用以完面只有根帐号才能完成的任务。而且NT上系统管理员帐号和UNIX上的根帐号有着极大的差异。 Pu'lp O  
因为不直接被使用根帐号,所以系统管理员的ID可为任何字符串。让我们假设你知道那个 ID:walrus。进一步假设通过host查询命令,你得到了150台计算机的有关信息,其中包括每台计算机的名字。例如,他们可以是mail.victim.net、news.victim.net、shell.victim.net、 Pu'lp O  
cgi.victim.net等等(尽管在实践中,它们可能会有“主题”名,从而使外人不知道某台机器负担何种工作,如sabertooth.victim.net、bengal.victim.net等)。 Pu'lp O  
入侵者应该在每台机器上试一试管理员的地址。例如,他会试一试walrus@shell.victim.netwalrus@sabertooth.victim.net Pu'lp O  
等。换句话说,除了在网络的每台计算机上尝试管理员的地址,还要在每台计算机上尝试所有的具有普遍性的东西。也许可以发现walrus喜欢用的计算机,所在信件都是从这台计算机邮出的。 Pu'lp O  
请注意,如果目标是一个服务提供者(或者允许用户对它进行合法访问的系统),那么通过观察系统管理员从哪进入系统能获得此管理员的更多信息。一般从外部联合使用finger和rusers命令即可获得这些信息。换句话说,你要一直留意外部网(除目标网以外的网,在这些网络上那个系统管理有一些帐号),如果他最近的一次登录是在Netcom,跟踪他在Netcom帐号一天左右,看看会发生什么。 Pu'lp O  
Pu'lp O  
⒊关于finger查询 Pu'lp O  
finger很可能暴露你的行为,为了避免finger查询产生标记,绝大多数入侵者使用finger gateways(finger网关)。finger网关是一些WEB主页,通常包含了一个简单的输入框(field),此框指向在远地服务器硬盘上的一个CGI程序。此远程服务器执行finger查询。 Pu'lp O  
下面提供了此类finger网关的一个例子 Pu'lp O  
http://www.hgp.med.umich.edu/cgi-bin/finger Pu'lp O  
通过finger网关的使用,入侵者能隐藏其源地址。 Pu'lp O  
Pu'lp O  
⒋操作系统 Pu'lp O  
也许你已经使用了各种方法(包括在上文中所提及的方法和另外一些方法)来识别在目标网络上使用的操作系统的类型的版本。无论如何,一旦判断出目标网络上的操作系统和结构是多样的,下一步的研究工作就可以进行了。首先作一张表,列出每个操作系统和机器的类型(这张表对于你进一步进行研究有极大地帮助),然后对每个平台进行研究并找出它们中的漏洞。 Pu'lp O  
知道操作系统后可到如下地址查找相关的安全报告: Pu'lp O  
http://info.arc.com/sec_bull/sec_bullsearch.html Pu'lp O  
Pu'lp O  
⒌进行测试 Pu'lp O  
实际上只有那些对入侵极热衷的入侵者才会做攻击过程中测试部分。大部分的入侵者并不想尝试这种行为,因为这需要一定的费用。然而我却推荐入侵者不要跳过此步骤。 Pu'lp O  
在此步骤中,首先要建立一个和目标一样的环境。一旦将此环境建立起来后,你就可对它进行一系列的攻击。在此过程中,有两件事需要注意: Pu'lp O  
■从攻击方来看这些攻击行为看上去像什么 Pu'lp O  
■从受攻击方来看这些攻击行为看上去像什么 Pu'lp O  
通过检查攻击方的日志文件,入侵者能大致了解对一个几乎没有保护措施的目标进行攻击时攻击行为看上去像什么(目标没有保护措施是指目标机上没有运行传统的守护程序)。这能给入侵者提供一些提示;如果真正的攻击行为和实验结果不一致,那么一定存在着某些原因。一台相同配置的机器(或者,我应说成一台配置明显一致的机器)在相同的攻击下应产生相同的反应。如果结果并非如此,那说明管理目标机的人暗中已有了应急计划。在 Pu'lp O  
这种情况下,入侵者应谨慎行动。 Pu'lp O  
通过检查被攻击方的日志,入侵者可了解攻击过程中留下的“痕迹”看上去像什么。这对入侵者来说很重要。在一个异构系统中,存在着不同的日志过程。入侵至少应该知道这些日志过程是什么,换句话说,他需要了解保存入侵“痕迹”的每个文件(在相同配置的计算机上)。这些信息是至关重要的,并具有指导作用:它能告诉入侵者删除哪些文件来毁灭其入侵的证据。找到这些文件的唯一方法就是在自己控制的环境中进行测试并检查日志。 Pu'lp O  
Pu'lp O  
有志者事竟成
快速回复
限100 字节
 
上一个 下一个