ttii写著 ‘其实说起IDS我想管理员朋友们一定不陌生,不过我还是想简单的说一下IDS的定义,这样更有利于大家理解后面的应用,这篇文章还是基于redhat7.3的,为什么呢?希望大家看过我的第一篇文章《浅谈linux安全》,在建立了那种系统的基础上,我们来实现IDS吧。

其实说起IDS我想管理员朋友们一定不陌生,不过我还是想简单的说一下IDS的定义,这样更有利于大家理解后面的应用,这篇文章还是基于redhat7.3的,为什么呢?希望大家看过我的第一篇文章《浅谈linux安全》,在建立了那种系统的基础上,我们来实现IDS吧。
IDS就是入侵监测系统的简称,其主要的作用,我个人理解就是能够收集入侵的蛛丝马迹,然后报告你,当然也不确保它的准确性,这要看软件的分析能力了,现在有很多收费和免费的IDS应用程序,其中比较强的是snort,可能大家都知道的(是地球人都知道:))就是Tripwire,它也是一种入侵监测系统,不过它是监视你的文件是否被修改
今天我给大家介绍一种,没有太繁华的功能,简单实用,能够有效地阻止很多攻击,能够对非法的端口扫描做出反应,经过配置,极端一点的作法甚至能够将扫描你的人的端口反扫描回来,而且阻断它对你主机的所有连接(服务器可不能这么做哦,要不一天阻断几百人,过短时间老板就来说了:最近业绩不好呢?呵呵,服务器真是可怜)

1、理论介绍篇

言归正传,这个软件就是portsentry感知攻击的IDS应用
下载地址
ftp://194.199.20.114/linux/redhat/6.2/en/powertools/i386/i386/portsentry-0.99.1-1.i386.rpm
下载后就是安装了不用我多说
rpm –ivh portsentry-0.99.1-1.i386.rpm

先说说portsentry有什么厉害的功夫吧,他能做下面的事情
1、 丢弃所有使用route命令返回到主机的数据包
2、 自动更新/etc/hosts.deny来阻断基于xinetd的连接,简单的阻断一台主机
3、 自动使用防火墙ipchian,ipfwadm等来阻断连接,相当于添加一条厉害的规则,这个比较实用而且安全的
4、 日志的额外连接,他能将观察到的扫描记录到日志,这个功能很有用,你可以什么都不做,但是不能不没有日志的生成,这样让你有空就看看谁再搞你的宝贝服务器吧
5、 自定义的操作,可能对扫描你主机的机器做一些操作,比如反扫描,呵呵然后记录信息,比较酷吧
说了这么多好处,下面我们来在机器上实现一下吧,安装完毕后,你能够在
/usr/psionic/portsentry
下看到一些文件
ignore.csh 用于忽略的主机脚本
portsentry 执行程序
portsentry.conf 主要配置文件
portsentry.ignore 忽略的主机
portsentry.history 运行和阻断主机才会产生,记录详细的阻断信息
现在开始配置,实现我们的功能吧
vi portsentry.conf
这个文件看上去有几个章节,现在我分别介绍一下它们的配置
其实大家一看他的配置文件基本上都有个数了,配置文件写得很好,我在这里就不一一翻译了,呵呵比我E文好得多了,说几个重要配置吧
Port Configurations
定制那些端口希望被监控,如果你有特殊的端口,加入,就能被监控,注意用逗号分割。

Advanced Stealth Scan Detection Options
监控的范围,
ADVANCED_PORTS_TCP=”1024″
ADVANCED_PORTS_UDP=”1024″
表示监控的范围在1024之下的端口,如果你希望监控如65423这样的端口,那么将这是数字设置大些

Configuration Files
就是配置文件位置,一般不用修改

Ignore Options
忽略的端口设置

Dropping Routes
丢弃路由方案
一般用这个可以
KILL_ROUTE=”/sbin/route add -host $TARGET$ reject”
其他的可以根据操作系统来定,或者根据实际来定
也可以写入一段iptalbes 的代码,后面有

TCP Wrappers
这就是我说得简单的加入hosts.deny来阻断发起扫描的主机
KILL_HOSTS_DENY=”ALL: $TARGET$ : DENY”
把原来那句关闭,上面这句打开,我们用的都是redhat哦

External Command
扩展命令,可以执行很多自定义操作,比如nmap扫描你的主机,反扫描他,后面事例中给他家说说

Port Banner Section
理论上是可以给监听你服务的人一个警告,修改PORT_BANNER=这行,写点吓人的话,不过我也不知道其作用不,呵呵

设置完毕后,用portsentry –stcp来启动,这样能够防止SYN等隐蔽的扫描,你可以找个机器用nmap等扫描器扫描一下,看看日志是不是记录了?你的主机是不是被添加到/etc/hosts.deny了。

有几点需要注意的,据说实施了portsentry后一些扫描软件可能会挂起,汗~~~不过我觉得不像,但是确实能防止一点点,
第二,据说portsentry把你的网卡开为混杂模式,但是据我观察网卡并没有变为混杂模式,不过还是提醒大家,因为混杂模式可能会降低系统的反应,就要看你自己权衡了。
个人认为,服务器上实施portsentry软件,不用作出什么反应,只需要记录就行了,定期的查看一下,我觉得能做的就是去掉路由啊,或者nmap扫描入侵的主机,可以这样做,让他自动反扫描扫描你的主机

External command部分
加入
KILL_RUN_CMD=”/usr/bin/nmap –O $TARGET$”>> /var/log/scanIP.log
然后可以在/var/log/scanIP.log中查看这些主机的信息。你扫描他哦,呵呵
最后记得运行哦,忘记给大家说几种运行参数了
-tcp 基本简单的监听tcp
-udp 基本简单监听udp
-stcp 建议使用这个参数,可以监听带欺骗的tcp扫描,比如SYN,FIN等扫描,很强
-atcp 禁止所有portsentry.conf中指定的连接,必须手工配置合法的主机,不建议使用
-sudp 同stcp差不多,不过是udp
-adup 和atcp差不多,不过是udp

注意,如果你需要转贴到你的网站或者论坛,可以随意转贴,也请你发邮件告诉我一声转到什么地方了,谢谢,我的联系方式qq:8537798,email:ttii@sohu.com’

-入侵者如何进入系统?
-入侵者为什么要侵入系统?
-入侵者如何获得口令?
-典型的入侵过程?
-一般的侵入类型有哪些?
-什么是漏洞(exploits)?
-什么是侦察(reconnaisance)[译注:原文如此,疑为reconnaissance?]
-什么是拒绝服务(DoS)?
-现在的攻击有多危险?
-哪里可以找到现在攻击行为的统计?
2.架构
-入侵如何被检测?
-NIDS如何分辨流入数据?
-检测到被攻击后NIDS作些什么?
-除了NIDS还有什么类似的措施?
-我应该在网络的什么地方安装NIDS?
-如何让IDS适合安全架构的其他部分?
-如何检测是否运行了IDS?
3.对策
-如何提高WinNT下的入侵检测和预防?
-如何提高Win95/98下的入侵检测和预防?
-如何提高Unix下的入侵检测和预防?
-如何提高Macintosh下的入侵检测和预防?
-如何提高企业的入侵检测和预防?
-怎样在企业内实现入侵检测?
-被攻击后我应该作什么?
-有人说他们从我这里被攻击,我应怎么作?
-如何收集足够多的关于入侵者的证据?
4.产品
-有哪些自由软件(freeware)或者共享软件(shareware)的入侵检测系统?
-有哪些商业的入侵检测系统?
-什么是”网络查找”(network grep)系统?
-入侵者使用什么工具进入我的系统?
-我应该关心的其他的入侵检测系统?
6.资源
-哪里可以发现新的系统漏洞的更新?
-其他的有关安全和入侵检测的资源?
-有哪些值得注意的站点?
7.IDS和防火墙(firewall)
-为什么有了防火墙还需要IDS?
-有了入侵检测,还需要防火墙么?
-IDS从哪里取得信息?防火墙么?
8.实现指南
-我应该问IDS提供商哪些问题?
-我如何在持续(on-going)的基础上维护系统?
-我如何制止不适当的网络浏览?
-我如何建立我自己的IDS(写代码)?
-NIDS合法么(既然这是一种窃听)?
-如何保护日志文件不被篡改证据?
9.NIDS的局限
-交换网络(固有的局限)
-资源局限
-NIDS攻击
-简单原因
-复杂原因
-工具
10.杂项
-哪些标准/互操作的努力
11.蜜罐和欺骗系统
-什么是蜜罐?
-蜜罐有哪些优点?
-蜜罐有哪些不利?
-如何设置我自己的蜜罐?
-蜜罐有哪些类型?
-建立一个可被攻击的系统的正反作用?
-有人们使用蜜罐的例子么?
-有哪些蜜罐的产品?
-什么是欺骗对策?

<正文>
1.介绍
1.1 什么是网络侵入检测系统(NIDS)?
入侵是指一些人(称为’黑客’, ‘骇客’)试图进入或者滥用你的系统。词语
‘滥用’的范围是很广泛的,可以包括从严厉的偷窃机密数据到一些次要的
事情,比如滥用你的电子邮件系统发垃圾邮件(虽然对我们中许多人呢,
这个是主要的)。

侵入检测系统(IDS)是用来检测这些入侵的系统。根据这个FAQ的打算,IDS
可以有如下的分类:

网络侵入检测系统(NIDS) 监视网线的数据包并试图是否有黑客/骇客试图
进入系统(或者进行拒绝服务攻击DoS)。一个典型的例子是一个系统观察
到一个目标主机的很多不同端口的大量TCP连接请求(SYN),来发现是否有人
正在进行TCP的端口扫描。一个NIDS可以运行在目标主机上观察他自己的
流量(通常集成在协议栈或服务本身),也可以运行在独立主机上观察整个
网络的流量(集线器, 路由器, 探测器[probe])。注意一个”网络”IDS监视
很多主机,然而其他的只是监视一个主机(他们所安装的)。

系统完整检验(SIV) 监视系统文件试图发现是否有侵入者更改了文件(可能
留个后门)。这样系统最著名的就是Tripwire。一个SIV也应该能监视其他
的组件,比如Windows的注册表和chron的配置, 目的是发现知名的迹象。
他也应该能检测到一个一般用户偶然获得root/Administrator级别权限。
这个领域更多的产品应该被认为是工具而不是一个系统:比如Tripwire
类似的工具检测临界系统组件的更改,却不能产生实时的告警。

日志文件监视器(LFM) 监视网络设备产生的日志文件。同NIDS类似,这些
系统通过对日志文件的模式匹配提出是否有入侵者攻击的建议。一个典型的
例子就是分析HTTP日志文件来发现入侵者试图一些知名漏洞(比如phf攻击)
实例有swatch。

诱骗系统(包括decoys,lures,fly-traps,honeypots) 还有一些伪服务,目
的是模拟一些知名 洞来诱陷黑客。参见 掌 统工具包中的例子:
http://www.all.net/dtk/。也可以简单的通过重新命名NT的系统管理员
帐号,然后建立一个无权限的虚帐号进行广泛的审计。在此文档后面有关于
诱骗系统的更多描述。同时参见
http://www.enteract.com/~lspitz/honeypot.html

其他
更多信息参见: http://www.icsa.net/idswhite/.

1.2 谁在滥用(misusing)系统?
有两个词来描述攻击者: 黑客和骇客。黑客是一个一般术语:喜欢进入东西
的人。良性的黑客是那些喜欢进入他/她自己的计算机发现如何工作的人。
恶意的黑客是那些喜欢进入其他人系统的人。良性黑客希望媒体能停止对
所有黑客的苛刻批评,使用骇客来做替代。很不幸,这个想法没有被接受
无论如何,在这个FAQ使用的词语是’入侵者’,来一般表示那些想要进入其
他人系统的人。

侵入者可以被分为两类:
外部的: 你网络外面的侵入者,或者可能攻击你的外部存在(乱改的web
服务器,通过e-mail服务器转来的垃圾邮件)。外部的侵入者可能来自
Internet, 拨号线, 物理介入, 或者从同你网络连接的伙伴网络(卖主,
客户, 中间商等)。
内部的: 合法使用你的互连网络的侵入者。包括滥用权力的人(比如社会
安全雇员因为不喜欢某人就将其标志为死亡)和模仿更改权力的人(比如使用
别人的终端)。一个常被引用的统计就是80%的安全问题同内部人有关。

有几种类型的侵入者: ‘快乐骑士'(Joy riders)因能而黑;’文化破坏者’
(Vandals)意于毁坏或更改Web页面; 奸商 (Profiteers)意于利益,如控制
系统勒索或者窃取数据得利。

1.3 入侵者如何进入系统?
入侵者进入系统的主要途径:

物理侵入: 如果一个侵入者对主机有物理进入权限。(比如他们能使用键盘
或者参与系统),应该可以进入。方法包括控制台特权一直到物理参与系统
并且移走磁盘(在另外的机器读/写)。甚至BIOS保护也很容易穿过的: 事实
上所有的BIOS都有后门口令。

系统侵入: 这类侵入表现为侵入者已经拥有在系统用户的较低权限。如果系
统没有打最新的漏洞补丁,就会给侵入者提供一个利用知名漏洞获得系统
管理员权限的机会。

远程侵入: 这类入侵指入侵者通过网络远程进入系统。侵入者从无特权开始
这种侵入方式包括多种形式。比如如果在他/她和受害主机之间有防火墙存在
侵入者就复杂得多。

应该注意网络侵入检测系统主要关心远程侵入。

1.4 入侵者为什么能侵入系统?
软件总是存在bug。系统管理员和开发人员永远无法发现和解决所有的可能
漏洞。侵入者只要发现一个漏洞就可以入侵系统。

1.4.1 软件bug

软件bug存在于服务器后台程序(Daemons), 客户程序, 操作系统, 网络
协议栈。软件bug可以分为如下几种:

缓冲区溢出: 我们读来的几乎所有的安全漏洞归于这一类。一个典型的
例子是一个开发人员设定了一个256字符长的缓冲区来存储用户名。
开发人员想当然的认为没有人的名字比这个长。但是黑客想,如果我
输入一个错误的很长的用户名会发生什么呢? 附加的字符会去哪里?
如果黑客恰巧做对了, 他们发送300个字符, 包括了被服务器执行的
代码,并且,他们进入了系统。黑客们通过几个方法发现这些bug。
首先,很多服务的源代码在网络上是公开的。黑客们经常读这些代码
寻找有缓冲区溢出问题的程序。第二,黑客们可以读程序本身来看是否
有问题存在,虽然读汇编代码输出真的很难。第三,黑客们会检查程序
所有的输入并且试图利用随机数据来溢出。如果程序崩溃了,就会存在
让黑客认真构造输入并且允许进入的机会。应该注意这个问题在C/C++
编写的程序中普遍存在,却很少出现在Java的程序当中。
意外结合: 程序通常被组合成很多层代码,包括了潜在的作为最下面
的操作系统层。侵入者常可以发送一些对于一层无意义的输入, 却对
其他层有意义。Web上最常见的控制用户输入的语言就是Perl。Perl写
的程序往往发送这些输入到其他的程序来进一步的处理。一个常见的
黑客技术就是输入字符串”|mail < /etc/passwd”。这个命令得以执行
是因为操作系统为这个输入启动一个附加的程序。然而操作系统解释
管道符”|”并且按语义启动”mail”程序,结果是将password文件寄给
侵入者。

未处理的输入: 很多程序写成处理有效的输入,很多程序员不知道
当一些人的输入不符合规格的后果。

竞争(Race)条件: 现在的许多系统是多任务/多线程的。这就意味着他
们可以同时运行多个程序。如果两个程序同时访问同一个数据就会发生
危险。想象A和B的两个程序,需要修改同一个文件。为了修改,每个
程序将文件读入内存,在内存中改变内容,然后将内存复制到文件。
当程序A将文件读入内存并且进行修改的时候,产生了一个竞争条件。
在A写文件前,程序B执行并且获得读写权限。现在程序A将内存复制到
文件中。因为程序A 在B修改前开始,所有B的修改丢失了。因为你必须
获得正确的执行顺序,所以竞争条件是非常稀有的。侵入者通常不得不
试上千次,然后获得权限,进入系统。

1.4.2 系统配置
系统配置bug可以分为如下类别:

缺省配置: 许多系统交付给客户的时候采用的缺省的易用的配置。不幸
的是,”易用”就意味着”易侵入”。几乎所有的交付给你的Unix和WinNT
系统可以很容易的被攻击。

懒惰的系统管理员: 惊人的数字的主机被配置成没有系统管理员口令。
这个是因为系统管理员太懒惰了以至于懒得马上配置一个,他们只是
希望系统最好能少麻烦的尽快启动运行。不幸,他们再也不回来设置一
个,让侵入者轻易的进来。侵入者最容易的事情就是先扫描所有的机器
找没有口令的主机。

生成的漏洞: 事实上所有的程序可能被配置成一个非安全的模式。有的
时候系统管理员将不注意的在主机上打开一个漏洞。许多系统管理员
手册都建议系统管理员关掉所有不是绝对必要的程序和服务来避免意外
漏洞。应该注意安全审计包通常可以发现这些漏洞并且提醒系统管理员

信任的关系: 侵入者常用”岛跳”的方法利用信任关系攻击网络。一个
互相信任主机的网络和他们最脆弱的连结一样安全。

1.4.3 口令解密
这个是一个特殊的部分。

真正脆弱的口令: 很多人使用他们自己的名字,孩子的名字,配偶的名
字,宠物的名字,或者小车的型号做口令。也有的用户使用”password”
或者简单到什么也没有。这给出了侵入者可以自己键入的不多与30个
可能性的列表。

字典攻击: 上述攻击失败后,侵入者开始试图”字典攻击”。这种方法,
侵入者利用程序尝试字典中的单词的每种可能。字典攻击可以利用重复
的登陆或者收集加密的口令并且试图同加密后的字典中单词匹配。侵入
者通常利用一个英语字典或其他语言的字典。他们也使用附加的类字典
数据库,比如名字和常用的口令。

强力攻击(Brute force attacks): 同字典攻击类似,侵入者可能尝试
所有的字符组合方式。一个4个由小写字母组成的口令可以在几分钟内
被破解。(大约的共有50万个可能的组合)一个较长的由大小写字母组成
的口令,包括数字和标点(10万亿种可能的组合)可以在一个月内破解,
如果你可以每秒试100万种组合。(实际上,一个单机每秒可以算上几千
次。)

1.4.4 监听不安全的通信
共享媒体: 传统的以太网中, 你只要在线上启动Sniffer就可以看到在
一个网段的所有通信。现在这个方法由于更多公司采用交换以太网而困
难。

服务器监听: 然而在一个交换的网络里,如果你可以在一个服务器(特
别是做路由器的)安装sniffer程序,你就可以可以使用得到的信息来
攻击客户主机和信任主机。比如,你可能不知道某个用户的口令,通过
在他登陆的时候监听Telnet会话,就可以得到他的口令。

远程监听: 大量的主机可以RMON,带有公共团体字符串。当带宽非常低
的时候(你不能监听所有的通信),则呈现有趣的可能性。

1.4.5 设计的缺点
甚至当一个软件完全按照设计来实现的时候,仍然可能因为设计时的
bug带来被侵入。

TCP/IP 协议缺点: TCP/IP协议在我们有很多被黑经验前被设计。结果
有很多可能引起安全问题的设计缺点。一些例子比如smurf攻击,ICMP
不可达的连结, IP哄骗, 和SYN floods。最大的问题是IP协议本身非常
信任: 黑客自由的伪造和更改IP数据。IPSec被设计成解决了很多的
缺点,但是没有被广泛的应用。

Unix 设计缺点: 有很多Unix固有的缺点使得Unix系统频繁的被入侵。
主要问题是权限控制系统, 只有”root”才是系统管理员权限。结果:

1.5 入侵者如何获得口令?

入侵者利用如下方法获得口令:

明文监听: 一些协议(Telnet, FTP, 基本HTTP)使用明文的口令,意味着
他们在比如客户/服务器传输过程中不进行加密。入侵者可以使用一个协议
分析仪观察线缆上的这样的口令。不需要更多的努力;入侵者马上可以使用
这些口令来登陆。

密文监听: 许多协议,使用加密的口令。这种情况下,入侵者就需要执行
字典或者强力攻击口令来试图解密。应该注意到你不能发现入侵者的存在,
因为他/她是完全被动并且不用向线缆传送任何东西。口令破解在入侵者利
用自己的机器来鉴权的时候,不许要发送人和东西到线缆。

重放(Replay)攻击: 很多情况下,入侵者不必解密口令。他们可以使用加密
的格式来代替登陆系统。这通常需要重新编码客户端软件来使用加密的口令

口令文件窃取: 所有的用户数据库通常存储在磁盘上的一个单个文件。UNIX
下这个文件是/etc/passwd(或者这个文件的其他镜像),WinNT下,是SAM文件
每个方法,一旦入侵者取得了这个文件,他/她就能运行解密程序(如上面所
述)来发现文件中一些脆弱的密码。

观察: 一个传统的口令安全问题是口令必须长而且难猜(使得字典和强力攻
击不合理的困难)。然而,这样的口令往往很难记忆,所以用户就在某地写
下来。入侵者常可以搜寻一个个人办公桌来发现写到小字条上的口令(一般
在键盘下面)。入侵者也可以自己训练在用户后面观察口令的键入。

交际工程: 一个普通(且成功)的技巧是简单的打个电话给用户并且说 “hi,
我是MIS组的Bob, 我们正跟踪网络上的一些问题,并且出现在你的机器里。
你用的是什么口令呢?”许多用户会在这种情况下放弃他们的口令。(许多公
司有政策让用户永远不要给出他们的口令,甚至他们自己的MIS部门,但是
这个伎俩仍然成功。一个简单的解决方法就是MIS组打电话给6个月的雇员
问他们口令,然后批评他们的错误,这样他们就不会忘记了

1.6典型的入侵过程?

一个典型的入侵过程也许如下:

步骤1.外部侦查–
入侵者会尽可能地找出实际上并不直接给予他们的资讯.
他们常通过公开资讯或伪装成正常的使用者.
用这种方式的入侵者, 将使你实在难以察觉. 如你的
网络跟你的Domain Name 一起 注册的(例如 foobar.com),入侵者可以
使用’whois’这种查表(lookup)来尽量找出你的网路(network)资讯.

入侵者也许经由你的DNS表(使用’nslookup’,’dig’,或
其他的工具程序 来作 domain 的转换)来找出你机器的名字.
入侵者会浏览其他的公开资讯, 例如 你的公开站点和
匿名(anonymous)FTP 站点. 入侵者也许会寻找关于你公司的
新闻文件和报刊的发行品.

步骤2.内部侦查–
入侵者使用更具侵略性的技术来对资讯扫描,但不会破坏
任何东西.他们将由你全部的网页来找出CGI scripts(CGI
scripts 经常是容易被入侵的).他们也许会为了试探主机的存
在而使用’ping’.他们也许会用 UDP/TCP scan/strob(扫描)来
找出目标主机的可获得服务(services).他们也许会执行一个
如同 ‘rpcinfo’,’showmount’, ‘snmpwalk’等等 的工具程序
, 来寻找可获得的资讯.关于这点,入侵者只是做出”正常的”
网路行为,并且没有作出任何被归类为闯入(intrusion)的举动.
针对这点,NIDS会告诉你”有人在检查你的大门握把”,但没有人
真的去试着把门打开.

步骤3.入侵–
入侵者违越了规矩,并开始对目标主机作了可能的漏洞入侵.
入侵者尝试 在一个输入资料里,传递一个shell 指令,因而
危及CGI script.入侵者试图以传递大量的资料的方式,来侵害
一个已知的缓冲区溢位(buffer-overrun)漏洞.入侵者开始检查
有无 简单可猜(甚至 没有)密码的户帐号.一个黑客,会由
几个阶段性的入侵.例如,如果黑客可以得到一个用户的帐号,
他将试图作更进一步的入侵举动来获得 root/admin.

步骤4.立足–
在这阶段中,入侵者已经由机器的入侵,成功地在你的网路中立足.

入侵者主要的目的就是藏匿入侵证据(修改稽核(audit trail)与log档)
并确认他可以再次侵入.他们也许会安装可让他们执行的’toolkits’
.用他们有着后门(backdoor)密码的木马(Trojanhorses)置换原先的服务
,或 创造一个属于自己的使用者帐户.System IntegrityVerifiers
(SIVs)可以 注意到 档案的改变 而对使用这些手段的入侵者

做出检测.由于大部分的网路难以防御来自内部的侵害,入侵者将利用
这个机器作为其他机器的跳岛.

步骤5.利益–
入侵者利用他们的优势偷取机密资料,滥用系统资源(阶段性的由其他机器
侵扰你的机器)或破坏你的网页.

其他的情节也许开始情况不同.不管是入侵特定的站点或者是随机地在
网路世界中扫描特定的漏洞.例如 入侵者可能会企图扫描有着
SendMail DEBUG漏洞机器的整个网路.他们可以轻易入侵有漏洞的机器.
他们不会直接针对你,甚至不知道你是谁.(就好像’birthdayattack’般,
列出已知的系统漏洞与IP位置,凭运气的找到有着其中一项漏洞的机器)

1.7一般的入侵类型有哪些?

有三种攻击方式:

侦察–包括ping扫描,DNS zone 转换,e-mail侦察,
TCP 或 UDP 端口(port)扫描(scan),与经由公开网页伺服
器可能的索引(indexing),来发现CGI漏洞.

漏洞–入侵者将会利用隐密的特性或缺陷(bugs)来存取系统.

拒绝服务(denial-of-service)(DOS)攻击–入侵者试图
破坏服务(或机器),使网路连结(link)超载,CPU超载,填满硬盘.
入侵者不是想获得资讯,而是仅仅以如破坏者般的
行为而不让你使用机器.

1.8 常见漏洞有哪些?

1.8.1 CGI脚本(scripts)

CGI程式是恶名昭彰地不安全.典型的安全漏洞
包括 经由shell特殊字元(metacharacters)
的利用,直接传递变质的输入 于 命令shell里.
使用隐藏的变数,指定系统里的档案名(filename)
,或揭示更多系统的种种.最为人知的CGI缺陷就是
装载于NCSA httptd的’phf’数据库(library).
‘phf’library 假定为允许 伺服解析(sever-parsed)HTML,
而造成 传回任何档案 的漏洞. 其他入侵者试图使用的
知名CGI脚本漏洞有:TextCounter, GuestBook, EWS,
info2www, Count.cgi, handler, webdist.cgi,
php.cgi, files.pl, nph-test-cgi, nph-publish,
AnyForm, FormMail.如果你发现有人试图存取上述
的CGI脚本(但你没有使用他们),这便清楚显示了一
个入侵的意图(假设你没有把你想使用的CGI脚本
用那个缺陷版本安装).

1.8.2 Web 服务器(server) 攻击

在CGI程序执行后,Web服务器可能有了其他的漏洞.
非常多的self-written Web服务器(包括IIS 1.0 与 NetWare2.x)
会因为在一 档案名
之中,能把一连串的”../”写在路径(path)名里,
因而跳到 系统档案 的其他地方,得到任何档案.
其他的一般漏洞,就是在 请求(request)域(field) ,
或 其他 HTTP数据 的 缓冲区溢出.

Web服务器常因为与其底层的operating system
有着互动的关系 ,而产生漏洞.在Microsoft IIS
里有个古老的漏洞被使用,因档案有两个档案名–
一个 长档名与 一个短的相应8.3形式名 ,有时能
绕过允许机制 而获得存取.NTFS (the new file system)
有一个特色,名为–“alternate data streams” 相似于
Macintosh系统的 数据与 资源 forks.你可以在通过stream
name时,添加上”::$DATA”(这是为了看他的脚本而不是执行什么)
,来存取他的档案.
服务器长久以来因URLs而存在着问题.例如
“death by a thousand slashes”
问题,导致Apache产生大量的
CPU负载,因它试着在数以千计的”/” URL中处理每一个目录.

1.8.3 Web浏览器 攻击
Microsoft与Netscape的Web浏览器,都有安全漏洞(当然啦,虽然

最新版本的,我们还没发现),这包括了URL, HTTP, HTML,
JavaScript, Frames, Java, 与 ActiveX 攻击.

URL数据段,会有缓冲区溢位的情况,当它由HTTP标头(header)
被解悉时,在屏幕上显示时,或于某种形式被处理(如
由cache history储存).而且,有着古老Internet
Explorer漏洞的在浏览器,在执行 LNK或URL命令时会伴随着
能在内部造成影响的漏洞.

HTTP 头可能因为传递给只收特定值的函数而产生漏洞

HTML常会存在漏洞,如 MIME-type 缓冲区溢位 于
Netscape Communicator的 <EMBED> 命令.

JavaScript长久以来都很受喜爱,并常常试着经由
产生一个档名 与 自动地隐藏”SUBMIT” button
来侵害 “file upload” 函式 . 已有许多不同的这
种漏洞被修正了,然而会有新发现的方法来绕过修正.

Frames 常如 JavaScript的一部份般, 或 Java hack
来使用 经由一个象素大小的屏幕,把网页隐藏)
但它们呈现了特别的问题.如 我能 包含一个连结 到
一个可信赖的 使用者frames 的站点,然后以我自己站
点的网页置换那些frames的一部份,于是它们将会以那
个远程站点的一部份般 出现在你面前.

Java
有一个健全的安全模型(model),但经证实那个模型有着
特殊的漏洞(虽然与其他的任何事物相比,它被证实是整个系统
最为安全的元件之一).再者,它的健全安全性,也许是
它的undoing:正常的Java applets 无法存取当地
(local)系统,但有时,如果他们真能存取当地系统的话,

它们将会更为有用.因此,”信任(trust)”模型的完成,更容易被入侵.

ActiveX 甚至比 Java更危险, 当它是由一个 信任模型
纯粹运作
并 执行 原有的(native)程序码. 你甚至会偶然地
感染到病毒(virus)( 在贩售商的程序码中意外
地被植入(imbeded)).

1.8.4 SMTP (SendMail) 攻击
SendMail 是一个极端复杂并被广泛使用的程序, 是以,
它频为安全漏洞的来源. 在过去( ’88 Morris Worm的时期),
黑客 会利用 DEBUG 命令的漏洞 或 隐藏 WIZ 的特徵,
来闯入 SMTP. 近来, 他们经常试着用 缓冲区溢位 手段.
SMTP 也被用做侦察(reconnaissance) 攻击, 如利用
VRFY 命令找出使用者名子.

1.8.5 Access
失败的 login 企图,失败的档案存取企图, password
cracking,
管理者权力的滥用.

1.8.6 IMAP
使用者经由 IMAP 协定从服务器收email (在对比之下, SMTP 介于
服务器之间传送e-mail ). 黑客
已在一些受欢迎的IMAP服务器里发现漏洞.

1.8.7 IP spoofing
有些类型的攻击是利用技术来伪造(或 ‘spoof’)你的IP地址.
一个 原始地址 伴随着 每个IP包(packet)被传送时,
实际上它可以不是被用于routing. 这表示当与服务
器交谈(talkin)时,一个入侵者可以佯装成你 . 入侵者
不会收到应答(response)包 (虽然你的机器有见到,
但把他们丢弃了, 因为 它们不符合你之前传递的任何
请求(request) ). 入侵者不会经由这种方式取得数据,
而是仍假装成你,传送命令给服务器.

IP spoofing 经常有如其他的攻击的部分般使用着:
SMURF
以伪造的源地址广播方式ping,导致大量的机器
应答,经由地址,回覆到 受害者, 使它 (或 它的连结)负载.

TCP序号预选
在 TCP连接 的起始, 你这端必须选择一个 序号, 而
服务器端也必须选择一个序号. 较老的 TCP
栈选择一个可预测的有续数字, 而让入侵者由一个 伪造的
IP地址(他们本来不应该看到应答包)想必能绕过安全机制.

DNS 通过可预知序号中毒

DNS服务器 会 “递归” 解析 DNS 名.
因此,在它满足一个用户端 要求(request) 时,它本身也
成为递归链下个服务器的客户
它使用的有序号是可预测的.
因此, 一个入侵者可以传送 一个要求到DNS服务器 并
传送一个 回应 到 服务器 以伪装成为 链结中的
下一个服务器. 它会相信 伪装 回应, 并使用它来
满足其他的用户端.

1.8.8 缓冲区溢位
一些其他的 缓冲区溢位 攻击有:
DNS 溢位.
过长的 DNS名,传送到服务器中. DNS名 限制了
每一个次要成分(subcomponent)是64-bytes而总体是于256-bytes.

statd 溢位
当提交了过长的 档案名.

1.8.9 DNS 攻击
DNS 是一个首要的目标.因为如果你能侵害(corrupt)
DNS服务器, 你便能利用 信任关系 .
DNS 缓存中毒
每个 DNS包, 包括了一个 “询问(Question)” 节
与”回答(Answer)”节. 有缺陷的服务器 将会
相信 (并 缓存)在传送问题时伴随的 回答
大部分,但不
是全部的 DNS 服务器 已于 1998 11月,被补丁(patched) .
DNS poisoning through sequence prediction
如上
DNS 溢位
如上

1.10 什么是拒绝服务? (DoS)?
1.10.1 Ping-of-Death
传送一个 开始于包(packet)的尾末之前 ,但
扩展到包的尾末之后的无效片段(fragment).

1.10.2 SYN 泛滥(Flood)
很快速地传送 TCP SYN包(做为连接(connection)的开启)
, 让受害者处于 等待完成大量连接 的状态, 造成他 资
源的耗尽 与 丢弃合法的连接. 一个新的
防范措施 –“SYN cookies”. 每一个连结端 有
他自己的序数(sequence-number).对于一个SYN的反应,
被攻击的机器 产生一个 特别的序数(一个连结的”cookie”)
然后 忘却关于连接的一切 . 然后当一个合法的连接的包来到
时,它便能 再创造 关于连接的遗漏资讯.

1.10.3 Land/Latierra
传送与 来源/目的 地址/阜号 相同的
伪造SYN包 ,受害系统便 试着完成TCP连接

的无穷回路(infinite loop).

1.10.4 WinNuke
在TCP连接时 传送 OOB/URG资料 到
阜号139(NetBIOS Session/SMB)上,
造成Windows系统(死机)hang.