荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: haoa (好啊嘿), 信区: Security
标  题: win2k入侵检测
发信站: 荔园晨风BBS站 (Wed Oct 29 11:53:37 2003), 站内信件

Win2000 Server的安全配置,经过精心配置的Win2000服务器可以防御90%以上的入

侵和渗透,但是,系统安全是一个连续的过程,随着新漏洞的出现和服务器应用的
变化
,系统的安全状况也在不断变化着;同时由于攻防是矛盾的统一体,道消魔长和魔
消道
长也在不断的转换中,因此,再高明的系统管理员也不能保证一台正在提供服务的
服务
器长时间绝对不被入侵。
  所以,安全配置服务器并不是安全工作的结束,相反却是漫长乏味的安全工作
的开
始,我将初步探讨Win2000服务器入侵检测的初步技巧,希望能帮助您长期维护服
务器的
安全。
  入侵检测指的是利用Win2000 Server自身的功能及系统管理员自己编写的软件
/脚本
进行的检测,使用防火墙(Firewall)或入侵监测系统(IDS)的技巧并不在本文
的讨论
范围之内。
  现在假定:我们有一台Win2000 Server的服务器,并且经过了初步的安全配置
(关
于安全配置的详情可以参阅Win2000 Server安全配置入门<一>),在这种情况下,
大部
分的入侵者将被拒之门外。(哈哈,我管理员可以回家睡大觉去了)慢着,我说的
是大
部分,不是全部,经过初步安全配置的服务器虽然可以防御绝大多数的Script
kid(脚
本族-只会用别人写的程序入侵服务器的人),遇到了真正的高手,还是不堪一击
的。虽
然说真正的高手不会随便进入别人的服务器,但是也难保有几个品行不端的邪派高
手看
上了你的服务器。(我真的这么衰么?)而且,在漏洞的发现与补丁的发布之间往
往有
一段时间的真空,任何知道漏洞资料的人都可以乘虚而入,这时,入侵检测技术就
显得
非常的重要。
  入侵的检测主要还是根据应用来进行,提供了相应的服务就应该有相应的检测
分析
系统来进行保护,对于一般的主机来说,主要应该注意以下几个方面:
1、 基于80端口入侵的检测
  WWW服务大概是最常见的服务之一了,而且由于这个服务面对广大用户,服务
的流量
和复杂度都很高,所以针对这个服务的漏洞和入侵技巧也最多。对于NT来说,IIS
一直是
系统管理员比较头疼的一部分(恨不得关了80端口),不过好在IIS自带的日志功
能从某
种程度上可以成为入侵检测的得力帮手。IIS自带的日志文件默认存放在
System32/LogF
iles目录下,一般是按24小时滚动的,在IIS管理器中可以对它进行详细的配置。
(具体
怎么配我不管你,不过你要是不详细记录,回头查不到入侵者的IP可不要哭)
  现在我们再假设(怎么老是假设呀,烦不烦?)别急呀,我不能为了写这篇文
章真
的去黑掉一台主机,所以只好假设了,我们假设一台WEB服务器,开放了WWW服务,
你是
这台服务器的系统管理员,已经小心地配置了IIS,使用W3C扩展的日志格式,并至
少记
录了时间(Time)、客户端IP(Client IP)、方法(Method)、URI资源(URI
Stem)、
URI查询(URI Query),协议状态(Protocol Status),我们用最近比较流行的
Unicode漏
洞来进行分析:打开IE的窗口,在地址栏输入:127.0.0.1/scripts/..%c1% 1c..
/winn
t/system32/cmd.exe?/c+dir 默认的情况下你可以看到目录列表(什么?你已经做
过安
全配置了,看不到?恢复默认安装,我们要做个实验),让我们来看看IIS的日志
都记录
了些什么,打开Ex010318.log(Ex代表W3C扩展格式,后面的一串数字代表日志的
记录日
期):07:42:58 127.0.0.1 GET /scripts/..\../winnt/system32\cmd.exe
/c+dir 20
0上面这行日志表示在格林威治时间07:42:58(就是北京时间23:42:58),有一个
家伙(
入侵者)从127.0.0.1的IP在你的机器上利用Unicode漏洞(%c1%1c被解码为"\",
实际的
情况会因为Windows语言版本的不同而有略微的差别)运行了cmd.exe,参数是/c
dir,
运行结果成功(HTTP 200代表正确返回)。(哇,记录得可真够全的,以后不敢随
便乱玩
Unicode了)
  大多数情况下,IIS的日志会忠实地记录它接收到的任何请求(也有特殊的不
被IIS
记录的攻击,这个我们以后再讨论),所以,一个优秀的系统管理员应该擅长利用
这点
来发现入侵的企图,从而保护自己的系统。但是,IIS的日志动辄数十兆、流量大
的网站
甚至数十G,人工检查几乎没有可能,唯一的选择就是使用日志分析软件,用任何
语言编
写一个日志分析软件(其实就是文本过滤器)都非常简单,不过考虑到一些实际情
况(
比如管理员不会写程序,或者服务器上一时找不到日志分析软件),我可以告诉大
家一
个简单的方法,比方说你想知道有没有人从80端口上试图取得你的Global.asa文件
,可
以使用以下的CMD命令:find "Global.asa" ex010318.log /i这个命令使用的是
NT自带
的find.exe工具(所以不怕紧急情况找不着),可以轻松的从文本文件中找到你想
过滤
的字符串,"Global.asa"是需要查询的字符串,ex010318.log是待过滤的文本文件
,/i
代表忽略大小写。因为我无意把这篇文章写成微软的Help文档,所以关于这个命令
的其
他参数以及它的增强版FindStr.exe的用法请去查看Win2000的帮助文件。
  无论是基于日志分析软件或者是Find命令,你都可以建立一张敏感字符串列表
,包
含已有的IIS漏洞(比如"+.htr")以及未来将要出现的漏洞可能会调用的资源(比
如Gl
obal.asa或者cmd.exe),通过过滤这张不断更新的字符串表,一定可以尽早了解
入侵者
的行动。
  需要提醒的是,使用任何日志分析软件都会占用一定的系统资源,因此,对于
IIS日
志分析这样低优先级的任务,放在夜里空闲时自动执行会比较合适,如果再写一段
脚本
把过滤后的可疑文本发送给系统管理员,那就更加完美了。同时,如果敏感字符串
表较
大,过滤策略复杂,我建议还是用C写一个专用程序会比较合算。
2、 基于安全日志的检测
  通过基于IIS日志的入侵监测,我们能提前知道窥伺者的行踪(如果你处理失
当,窥
伺者随时会变成入侵者),但是IIS日志不是万能的,它在某种情况下甚至不能记
录来自
80端口的入侵,根据我对IIS日志系统的分析,IIS只有在一个请求完成后才会写入
日志
,换言之,如果一个请求中途失败,日志文件中是不会有它的踪影的(这里的中途
失败
并不是指发生HTTP400错误这样的情况,而是从TCP层上没有完成HTTP请求,例如在
POST
大量数据时异常中断),对于入侵者来说,就有可能绕过日志系统完成大量的活动

  而且,对于非80 Only的主机,入侵者也可以从其它的服务进入服务器,因此
,建立
一套完整的安全监测系统是非常必要的。
  Win2000自带了相当强大的安全日志系统,从用户登录到特权的使用都有非常
详细的
记录,可惜的是,默认安装下安全审核是关闭的,以至于一些主机被黑后根本没法
追踪
入侵者。所以,我们要做的第一步是在管理工具-本地安全策略-本地策略-审核策
略中打
开必要的审核,一般来说,登录事件与账户管理是我们最关心的事件,同时打开成
功和
失败审核非常必要,其他的审核也要打开失败审核,这样可以使得入侵者步步维艰
,一
不小心就会露出马脚。仅仅打开安全审核并没有完全解决问题,如果没有很好的配
置安
全日志的大小及覆盖方式,一个老练的入侵者就能够通过洪水般的伪造入侵请求覆
盖掉
他真正的行踪。通常情况下,将安全日志的大小指定为50MB并且只允许覆盖7天前
的日志
可以避免上述情况的出现。
  设置了安全日志却不去检查跟没有设置安全日志几乎一样糟糕(唯一的优点是
被黑
了以后可以追查入侵者),所以,制定一个安全日志的检查机制也是非常重要的,
作为
安全日志,推荐的检查时间是每天上午,这是因为,入侵者喜欢夜间行动(速度快
呀,
要不你入侵到一半的时候连不上了,那可是哭都哭不出来)上午上班第一件事正好
看看
日志有没有异常,然后就可以放心去做其他的事了。如果你喜欢,也可以编写脚本
每天
把安全日志作为邮件发送给你(别太相信这个了,要是哪个高手上去改了你的脚本
,每
天发送"平安无事"……)
  除了安全日志,系统日志和应用程序日志也是非常好的辅助监测工具,一般来
说,
入侵者除了在安全日志中留下痕迹(如果他拿到了Admin权限,那么他一定会去清
除痕迹
的),在系统和应用程序日志中也会留下蛛丝马迹,作为系统管理员,要有不放过
任何
异常的态度,这样入侵者就很难隐藏他们的行踪。
3、 文件访问日志与关键文件保护
  除了系统默认的安全审核外,对于关键的文件,我们还要加设文件访问日志,
记录
对他们的访问。
  文件访问有很多的选项:访问、修改、执行、新建、属性更改......一般来说
,关
注访问和修改就能起到很大的监视作用。
  例如,如果我们监视了系统目录的修改、创建,甚至部分重要文件的访问(例
如cm
d.exe,net.exe,system32目录),那么,入侵者就很难安放后门而不引起我们的
注意,
要注意的是,监视的关键文件和项目不能太多,否则不仅增加系统负担,还会扰乱
日常
的日志监测工作
(哪个系统管理员有耐心每天看四、五千条垃圾日志?)
  关键文件不仅仅指的是系统文件,还包括有可能对系统管理员/其他用户构成
危害的
任何文件,例如系统管理员的配置、桌面文件等等,这些都是有可能用来窃取系统
管理
员资料/密码的。
4、 进程监控
  进程监控技术是追踪木马后门的另一个有力武器,90%以上的木马和后门是以
进程的
形式存在的(也有以其他形式存在的木马,参见《揭开木马的神秘面纱三》),作
为系
统管理员,了解服务器上运行的每个进程是职责之一(否则不要说安全,连系统优
化都
没有办法做),做一份每台服务器运行进程的列表非常必要,能帮助管理员一眼就
发现
入侵进程,异常的用户进程或者异常的资源占用都有可能是非法进程。除了进程外
,DL
L也是危险的东西,例如把原本是exe类型的木马改写为dll后,使用rundll32运行
就比较
具有迷惑性。
5、 注册表校验
  一般来说,木马或者后门都会利用注册表来再次运行自己,所以,校验注册表
来发
现入侵也是常用的手法之一。一般来说,如果一个入侵者只懂得使用流行的木马,
那么
由于普通木马只能写入特定的几个键值(比如Run、Runonce等等),查找起来是相
对容
易的,但是对于可以自己编写/改写木马的人来说,注册表的任何地方都可以藏身
,靠手
工查找就没有可能了。(注册表藏身千变万化,例如需要特别提出来的FakeGina技
术,
这种利用WINNT外嵌登录DLL(Ginadll)来获得用户密码的方法最近比较流行,一
旦中招
,登录用户的密码就会被记录无遗,具体的预防方法我这里就不介绍了。)应对的
方法
是监控注册表的任何改动,这样改写注册表的木马就没有办法遁形了。监控注册表
的软
件非常多,很多追查木马的软件都带有这样的功能,一个监控软件加上定期对注册
表进
行备份,万一注册表被非授权修改,系统管理员也能在最短的时间内恢复。
6、端口监控
  虽然说不使用端口的木马已经出现,但是大部分的后门和木马还是使用TCP连
接的,
监控端口的状况对于由于种种原因不能封锁端口的主机来说就是非常重要的了,我
们这
里不谈使用NDIS网卡高级编程的IDS系统,对于系统管理员来说,了解自己服务器
上开放
的端口甚至比对进程的监控更加重要,常常使用netstat查看服务器的端口状况是
一个良
好的习惯,但是并不能24小时这样做,而且NT的安全日志有一个坏习惯,喜欢记录
机器
名而不是IP(不知道比尔盖子怎么想的),如果你既没有防火墙又没有入侵检测软
件,
倒是可以用脚本来进行IP日志记录的,看着这个命令:
netstat -n -p tcp 10>>Netstat.log,这个命令每10秒钟自动查看一次TCP的连接
状况,
基于这个命令我们做一个Netlog.bat文件:
time /t>>Netstat.log
Netstat -n -p tcp 10>>Netstat.log
  这个脚本将会自动记录时间和TCP连接状态,需要注意的是:如果网站访问量
比较大
,这样的操作是需要消耗一定的CPU时间的,而且日志文件将越来越大,所以请慎
之又慎
。(要是做个脚本就完美无缺,谁去买防火墙?:)
  一旦发现异常的端口,可以使用特殊的程序来关联端口、可执行文件和进程(
如inz
ider就有这样的功能,它可以发现服务器监听的端口并找出与该端口关联的文件,
inzi
der可以从http://www.nttoolbox.com下载到),这样无论是使用TCP还是UDP的木马
都无
处藏身。
7、终端服务的日志监控
  单独将终端服务(Terminal Service)的日志监控分列出来是有原因的,微软
Win2
000服务器版中自带的终端服务Terminal Service是一个基于远程桌面协议(RDP)
的工
具,它的速度非常快,也很稳定,可以成为一个很好的远程管理软件,但是因为这
个软
件功能强大而且只受到密码的保护,所以也非常的危险,一旦入侵者拥有了管理员
密码
,就能够象本机一样操作远程服务器(不需要高深的NT命令行技巧,不需要编写特
殊的
脚本和程序,只要会用鼠标就能进行一切系统管理操作,实在是太方便、也实在是
太可
怕了)。虽然很多人都在使用终端服务来进行远程管理,但是,并不是人人都知道
如何
对终端服务进行审核,大多数的终端服务器上并没有打开终端登录的日志,其实打
开日
志审核是很容易的,在管理工具中打开远程控制服务配置(Terminal Service
Configr
ation),点击"连接",右击你想配置的RDP服务(比如 RDP-TCP(Microsoft RDP
5.0),
选中书签"权限",点击左下角的"高级",看见上面那个"审核"了么?我们来加入一
个Ev
eryone组,这代表所有的用户,然后审核他的"连接"、"断开"、"注销"的成功和"
登录"
的成功和失败就足够了,审核太多了反而不好,这个审核是记录在安全日志中的,
可以
从"管理工具"->"日志查看器"中查看。现在什么人什么时候登录我都一清二楚了,
可是
美中不足的是:这个破烂玩艺居然不记录客户端的IP(只能查看在线用户的IP),
而是
华而不实的记录什么机器名,倒!要是别人起个PIG的机器名你只好受他的嘲弄了
,不知
道微软是怎么想的,看来还是不能完全依赖微软呀,我们自己来吧?写个程序,一
切搞
定,你会C么?不会?VB呢?也不会?Delphi?……什么?你什么编程语言都不会
?我倒
,毕竟系统管理员不是程序员呀,别急别急,我给你想办法,我们来建立一个bat
文件,
叫做TSLog.bat,这个文件用来记录登录者的IP,内容如下:
time /t >>TSLog.log
netstat -n -p tcp | find ":3389">>TSLog.log
start Explorer
我来解释一下这个文件的含义:
  第一行是记录用户登录的时间,time /t的意思是直接返回系统时间(如果不
加/t,
系统会等待你输入新的时间),然后我们用追加符号">>"把这个时间记入TSLog.
log作为
日志的时间字段;
  第二行是记录用户的IP地址,netstat是用来显示当前网络连接状况的命令,
-n表示
显示IP和端口而不是域名、协议,-ptcp是只显示tcp协议,然后我们用管道符号
"|"把这
个命令的结果输出给find命令,从输出结果中查找包含":3389"的行(这就是我们
要的客
户的IP所在的行,如果你更改了终端服务的端口,这个数值也要作相应的更改),
最后
我们同样把这个结果重定向到日志文件TSLog.log中去,于是在SLog.log文件中,
记录格
式如下:
22:40
TCP  192.168.12.28:3389  192.168.10.123:4903   ESTABLISHED
22:54
TCP  192.168.12.28:3389   192.168.12.29:1039   ESTABLISHED
  也就是说只要这个TSLog.bat文件一运行,所有连在3389端口上的IP都会被记
录,那
么如何让这个批处理文件自动运行呢?我们知道,终端服务允许我们为用户自定义
起始
的程序,在终端服务配置中,我们覆盖用户的登录脚本设置并指定TSLog.bat为用
户登录
时需要打开的脚本,这样每个用户登录后都必须执行这个脚本,因为默认的脚本(
相当
于shell环境)是Explorer(资源管理器),所以我在TSLog.bat的最后一行加上了
启动
Explorer的命令startExplorer,如果不加这一行命令,用户是没有办法进入桌面
的!当
然,如果你只需要给用户特定的Shell:
  例如cmd.exe或者word.exe你也可以把start Explorer替换成任意的shell。这
个脚
本也可以有其他的写法,作为系统管理员,你完全可以自由发挥你的想象力、自由
利用
自己的资源,例如写一个脚本把每个登录用户的IP发送到自己的信箱对于重要的服
务器
也是一个很好的方法。正常情况下一般的用户没有查看终端服务设置的权限,所以
他不
会知道你对登录进行了IP审核,只要把TSLog.bat文件和TSLog.log文件放在比较隐
蔽的
目录里就足够了,不过需要注意的是这只是一个简单的终端服务日志策略,并没有
太多
的安全保障措施和权限机制,如果服务器有更高的安全要求,那还是需要通过编程
或购
买入侵监测软件来完成的。
8、陷阱技术
  早期的陷阱技术只是一个伪装的端口服务用来监测扫描,随着矛和盾的不断升
级,
现在的陷阱服务或者陷阱主机已经越来越完善,越来越象真正的服务,不仅能截获
半开
式扫描,还能伪装服务的回应并记录入侵者的行为,从而帮助判断入侵者的身份。

  我本人对于陷阱技术并不是非常感兴趣,一来从技术人员角度来说,低调行事
更符
合安全的原则;二来陷阱主机反而成为入侵者跳板的情况并不仅仅出现在小说中,
在现
实生活中也屡见不鲜,如果架设了陷阱反而被用来入侵,那真是偷鸡不成了。
  记得CoolFire说过一句话,可以用来作为对陷阱技术介绍的一个结束:在不了
解情
况时,不要随便进入别人的系统,因为你永远不能事先知道系统管理员是真的白痴
或者
伪装成白痴的天才......
  入侵监测的初步介绍就到这里,在实际运用中,系统管理员对基础知识掌握的
情况
直接关系到他的安全敏感度,只有身经百战而又知识丰富、仔细小心的系统管理员
才能
从一点点的蛛丝马迹中发现入侵者的影子,未雨绸缪,扼杀入侵的行动。

也是一个很好的方法。正常情况下一般的用户没有查看终端服务设置的权限,所以
他不
会知道你对登录进行了IP审核,只要把TSLog.bat文件和TSLog.log文件放在比较隐
蔽的
目录里就足够了,不过需要注意的是这只是一个简单的终端服务日志策略,并没有
太多
的安全保障措施和权限机制,如果服务器有更高的安全要求,那还是需要通过编程
或购
买入侵监测软件来完成的。
8、陷阱技术
  早期的陷阱技术只是一个伪装的端口服务用来监测扫描,随着矛和盾的不断升
级,
现在的陷阱服务或者陷阱主机已经越来越完善,越来越象真正的服务,不仅能截获
半开
式扫描,还能伪装服务的回应并记录入侵者的行为,从而帮助判断入侵者的身份。

  我本人对于陷阱技术并不是非常感兴趣,一来从技术人员角度来说,低调行事
更符
合安全的原则;二来陷阱主机反而成为入侵者跳板的情况并不仅仅出现在小说中,
在现
实生活中也屡见不鲜,如果架设了陷阱反而被用来入侵,那真是偷鸡不成了。
  记得CoolFire说过一句话,可以用来作为对陷阱技术介绍的一个结束:在不了
解情
况时,不要随便进入别人的系统,因为你永远不能事先知道系统管理员是真的白痴
或者
伪装成白痴的天才......
  入侵监测的初步介绍就到这里,在实际运用中,系统管理员对基础知识掌握的
情况
直接关系到他的安全敏感度,只有身经百战而又知识丰富、仔细小心的系统管理员
才能
从一点点的蛛丝马迹中发现入侵者的影子,未雨绸缪,扼杀入侵的行动。

--
※ 来源:·荔园晨风BBS站 bbs.szu.edu.cn·[FROM: 192.168.44.227]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店