Chinaunix首页 | 论坛 | 博客
  • 博客访问: 572997
  • 博文数量: 609
  • 博客积分: 4000
  • 博客等级: 上校
  • 技术积分: 4995
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-17 13:59
文章分类

全部博文(609)

文章存档

2011年(1)

2008年(608)

我的朋友

分类:

2008-10-17 14:02:21


  你是否曾经有过这样的感觉,你的Web站点曾经受到威胁,但你又不能确定?诚然,你可以紧跟补丁的速度,你可以保证所有的ACL(访问控制列表)都进行了正确的设置,但是现在每周都有许多新的攻击出现,还有许多攻击没有被公开,在这种情况下,如何才能确信你受到了保护?有些攻击者会让你明白你受到了黑客袭击,但是也确有一些人来去都不让你知道,但你会感觉到不对劲,怀疑自己受到了攻击,这种情况更加危险。
  
  如何才能判断自己的是否受到了威胁?本文通过模拟实例来介绍一些在入侵发生时进行检测的技术,以及一些自我保护策略。有许多第三方应用程序能帮助我们实现入侵检测目的,但在这里我将演示使用 2000的内置程序执行入侵检测。其实,最重要的是通过分析攻击者的行为方式,了解哪些技术对发现攻击最有效。
  
  假设入侵行为1及应对措施
  
  
  现在假设出于某种原因我决定要侵入你的网络。我将从哪里开始呢?首先,我要尽可能地收集你的网络信息,这可以通过一系列程序完成,如whois、dig、nslookup、tracert,还可以使用一些在Internet上公开的信息。假设通过这些操作,我发现你的网络中有一小部分没有被所保护。然后,通过执行端口扫描,我注意到有许多机器的135、139、389和445端口都是开放的。
  
  
  445端口是Win2K的一个致命后门。在Win2K中,SMB(Server Message Block,用于文件和打印共享服务)除了基于NBT(NetBIOS over TCP/IP,使用端口137, UDP端口138 和TCP端口139来实现基于TCP/IP的NETBIOS网际互联)的实现,还有直接通过445端口实现。如果win2000允许NBT, 那么UDP端口137, 138, TCP 端口 139, 445将开放。如果 NBT 被禁止, 那么只有445端口开放。445端口的使用方式有以下2种:
  
  # 当Win2K在允许NBT情况下作为客户端连接SMB时,它会同时尝试连接139和445端口,如果445端口有响应,那么就发送TCP RST包给139端口断开连接,以455端口通讯来继续;当445端口无响应时,才使用139端口。
  
  # 当Win2K在禁止NBT情况下作为客户端来连接SMB服务器时,那么它只会尝试连接445端口,如果无响应,那么连接失败。
  
  现在继续我的发现假设。我还注意到许多机器的端口80和443也是开放的,这可能是一个IIS 5 Web服务器。
  Ok,我做了以上的窥视工作,你能检测到我的活动吗?下面来分析一下。首先,发生了端口扫描,在扫描的过程中,你应该注意到网络的通信量有一个突然的增加。端口扫描通常表现为持续数分钟的稳定的通信量增加,时间的长短取决于扫描端口的多少。如何发现网络通信量的突然增加呢?有许多程序都可以完成这个功能,以下介绍3种Win2K内置方法:
  
  方法一
  
  在Win2K中,可以启动“性能”程序,创建一个预设定流量限制的性能警报信息。例如,比较好的网络通信量指标包括TCP-Segments/Sec和Network Interface-Packets/Sec:
   
   
  方法二
  
  
  在一个不是很忙碌的计算机上还有一个简单的网络通信量指示器,那就是为网络适配器建立一个任务栏图标。创建步骤是:选择“开始/设置/控制面板”,点击“网络和拨号连接”,右键点击“本地连接”,选择“属性”,选中“连接后在任务栏中显示图标”复选框:
   
  这样,随着所有信息进出网络,将会有一个图标点亮在任务栏中一闪一闪:
   
  方法三
  
  
  如果怀疑自己受到扫描,还可以使用一个内置的命令行工具netstat。键入以下命令:
  
  
  Netstat -p tcp -n
  
  
  如果目前正在被扫描,根据扫描所使用的工具,就会得到以下类似结果:
  
  
  Active Connections
  
  
  Proto Local Address Foreign Address State
  
  
  TCP 127.13.18.201:2572 127.199.34.42:135 TIME_WAIT
  
  TCP 127.13.18.201:2984 127.199.34.42:1027 TIME_WAIT
  
  TCP 127.13.18.201:3106 127.199.34.42:1444 SYN_SENT
  
  TCP 127.13.18.201:3107 127.199.34.42:1445 SYN_SENT
  
  TCP 127.13.18.201:3108 127.199.34.42:1446 SYN_SENT
  
  TCP 127.13.18.201:3109 127.199.34.42:1447 SYN_SENT
  
  TCP 127.13.18.201:3110 127.199.34.42:1448 SYN_SENT
  
  TCP 127.13.18.201:3111 127.199.34.42:1449 SYN_SENT
  
  TCP 127.13.18.201:3112 127.199.34.42:1450 SYN_SENT
  
  TCP 127.13.18.201:3113 127.199.34.42:1451 SYN_SENT
  
  TCP 127.13.18.201:3114 127.199.34.42:1452 SYN_SENT
  
  
  
  
  
  以上信息中,我们要重点注意在本地和外部地址上的连续端口以及大量的SYN_SENT信息。有些扫描工具还会显示ESTABLISHED或TIME_WAIT信息。总之,信息的关键在于连续的端口序列和来自同一主机的大量连接。
  
  
  假设入侵行为2及应对措施
  
  
  再回到假设的环境中来。在发现了一些机器没有被保护以及扫描到一些开放端口后,现在有几条路摆在我面前。其一是寻找你的网络中的弱点。网络口令用于使用Web服务器上的Web服务,这些网络登录信息对我来说是最有用的,因此我决定朝这个方向试一试。首先从一个机器帐号名列表,从中选出一个很少使用的,例如guest帐号。我用这个帐号尝试多次登录直到它被锁住,这样我就能推测设置的是什么帐号锁住策略了。然后我编写一个脚本对每个帐号都尝试多次登录,但不触发锁住条件。当然,管理员帐号一般是不会被锁住的。我启动脚本,并运行Whisker扫描器程序,它使用我为IIS服务器编写的一个脚本,来试探公共代理服务器信息。现在,可以坐等结果了。
  
  
  在我的上述探测过程中,你那端应该从一些关键入侵检测记数器指标中接收到许多警报信息。第一个应该是Web Service-Connection Attempts/sec:
   
  这个指标能显示出Web信息量的突然增加。
  
  
  另一个非常重要的记数器是Web Service-Not Found Errors/sec:
   
  由于类似于Whisker 的Web 扫描器要检查指定URL的存在,因此以上性能记数器就会显示出通信量的急剧增长和404 错误信息。因此,可以预先设定通信量的正常水平,然后一旦有针对你的扫描行为时,就会发出警报。
  与此同时,在你的网络上也会有穷举法攻击(brute-force attack)。在这种情况下,能够帮助你的两个性能记数器分别是Server-Logon/sec和Server-Errors Logon:
   
   
  对每秒两个以上的登录和五个以上的登录错误设置警报,这样就能知道是否有穷举攻击正在发生。同时,对安全事件日志进行检查,就能验证出大量的失败登录是否来自同一个计算机。
  假设入侵行为3及应对措施
  
  
  继续回到假设的环境中。现在,我的探测脚本已经结束运行,我发现你的网络中一台计算机的系统管理员口令为空,这表明该系统刚刚安装不久,还没有来得及进行保护。我用管理员帐号和空口令连接到那个机器上,将要做的第一件事就是上传一些木马类程序和运行状况检测程序,例如nc.exe、lsadump2.exe、tlist.exe以及一些扫描脚本。当然,你的系统上已经内置了我所需要的其它工具,如nbtstat.exe。我启动服务器的定时服务,设定nc.exe在一分钟后运行,并将cmd.exe重新定向到一个端口,如1234。一分钟后,我使用nc.exe从本地连接到远程计算机进入命令行状态,运行tlist.exe得到了当前程序列表,运行lsadump2.exe来查看的口令,或者浏览硬盘,得到想要的内容。
  
  
  现在看看你能对以上攻击有何察觉以及能够采取的措施。打开任务管理器,你会注意到cmd.exe,它有一个很高的程序ID值;你还会注意到定时服务正在运行;你查看C:\Winnt\SchedLgU.txt,注意到就在刚才有一个nc.exe程序的内容,在任务列表中也同样有一个;使用Explorer的查找功能,你可以寻找最后一天中生成的所有文件,这不奇怪,你会在System32目录中发现许多新的可执行文件,包括nc.exe。你试图结束命令行操作,但是却未被允许,这时就可以断定发生了一个侵入行为,马上可以开始收集证据了。现在关闭计算机告诫攻击者已经被发现,因为你不想留给他进行实际攻击的时间。事件日志显示失败的登录尝试,在最后也会将成功的登录显示出来。但是,事件日志中的条目没有显示另一端计算机的IP地址,只是显示了计算机的名字。为了确定其IP地址,可以键入以下命令:
  netstat -a –n
  
  从显示信息中找到与本地 TCP端口139、UDP端口137以及端口445处于连接状态的IP地址信息。将输出保存在一个文件中,然后使用nbtstat程序在那个IP地址上执行一个名字查找:
  
  nbtstat -A
  
  在netstat 的输出中,你还应该能注意到一个与TCP端口1234的连接,这属于nc进程。你可能还会注
【责编:admin】

--------------------next---------------------

阅读(243) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~