2024年4月16日发(作者:)

入侵检测工具Watcher

入侵检测工具Watcher

===================

参考资料 Watcher by hyperion

一、写在前面

你如何了解系统是否被攻克?在你发现系统中多了些奇怪的帐号或者某些特洛伊程序时,

一切已经太迟了。除非你的机器非常强大,否则你的机会只存在于当你在机器被扫描后、

而攻击发生前的短暂的时间段里。当然你可以用类似于tcp wrappers的程序来保证系统

连接的安全,但它并不能监测到stealth扫描或者DOS攻击,你也可以购买商业版本的入

侵监测系统——只要你不嫌贵的话,其实性价比最高的就是从互联网上获取类似的免费

的软件,安装或者改造它以适应你的需求,watcher就是这么一个家伙。

二、功能

watcher检测所有通过的信息包,并且将它认为是恶意的攻击行为记录在syslog中,当前

的watcher能够检测下列的攻击行为:

- 所有的TCP扫描

- 所有的UDP扫描

- Synflood攻击

- Teardrop攻击

- Land攻击

- Smurf攻击

- Ping of death攻击

所有的参数以及配置都是在命令行给出的,你可以配置它仅仅监视扫描行为或者仅仅监

视DOS攻击。它的监测行为是这样的:如果在短时间内有超过7个以上的端口收到信息包

(不管类型如何),那么这一事件就被当成端口扫描记录下来。UDP扫描认定的原理也一

样。当watcher在同一端口收到超过8个的syn包没有带ack或者fin位的话,就会认定是

synflood攻击事件。如果UDP的碎片包——IP包的id号是242,它就认为是teardrop攻击,

因为发布的攻击代码使用的是242的id号——这点存在不足;(。对同一端口的大量TCP

SYN包,带源地址及目标地址的,将被认为是land攻击,如果有超过5个icmp echo replies

在很短时间内出现(时间可以自定义),将记录为smurf攻击……

Watcher有三种监测模式,在默认的模式下,它仅仅监测对本台主机的攻击行为,第二种

模式可以监测在C类子网内的所有主机,第三种模式则可以监测所有能接收到信息包的主

机。当你把watcher放在外部主机上时,监测多主机特别有效,当一台主机的log文件被

破坏时,其它主机上还有记录。

由于watcher把所有的信息包都当成“攻击”,然后再进行分析,这种判断是极为粗糙的,

可能会误判,所以在代码中作者加入了一些过滤的技巧。

比如一些web server上会有漂亮的gif图片或者flash等玩意儿,而客户端这时往往会开了

多个线程来下载它,这时watcher的规则就会认为这是一次tcp scan,所以作者只好加上了

只有超过40个tcp连接才记录下的的规则——这些都是可定制的。就不详述了,你可以自行

参看下面的代码。

它的输出是非常简单的,每隔10秒它就将可能的攻击行为记录在syslog当中,同时源IP以及

目标IP甚至相关的信息比如端口号,包的数量等等也将被记录下来,如果该攻击行为的IP是

假的,那么它同时将记下MAC地址——如果攻击来自外部,地址将是你本地接收到该包的route

的地址,如果攻击来自内部的话,呵,你可以用自己的方式来"感谢"攻击者;)

三、程序参数

Watcher是用于linux系统的,通常你只需要在命令行后台运行它就可以了,它的参数如下:

Usage: watcher [参数]

-d device 将'device'设定为当前的网卡,默认为第一个non-loopback的interface

-f flood 设定接收到多少不完全的连接后才认为是flood的攻击

-h 帮助信息

-i icmplimit 设定接收到多少icmp echo replies就认为是smurf攻击

-m level 可以设定监控的机器,比如subnet为子域中的机器,或者all为所有

-p portlimit 在timeout的限制时间内有多少端口接收到信息包算是一次端口扫描

-r reporttype 如果reporttype设为dos,那么只有拒绝服务攻击会被记录,如果是scan

的话,只有扫描行为会被记录,默认则记录所有东西

-t timeout 每隔timeout的时间就记录信息包并打印出潜在的攻击行为

-w webcount 设定我们从80口接收到多少信息包才算是一次端口扫描(cgi)

希望这个小玩意能使你的系统稍微安全一些,但是得警告你的是,系统安全是多方面的,别

指望一个应用程序或者什么东西能使你绝对安全——如果你不信,迟早都得重装系统的;)

----[ 代码

<++> EX/Watcher.c

/*********************************************************************

Program: watcher

A network level monitoring tool to detect incoming packets indicative of

potential attacks.