1.问:都有哪些重要的IDS系统?
根据监测对象不同,IDS系统分为很多种,以下是几种很重要的IDS系统:
1、NIDS
NIDS是network intrusion detection system的缩写,即网络入侵检测系统,主要用于检测hacker或cracker通过网络进行的入侵行为。NIDS的运行方式有两种,一种是在目标主机上运行以监测其本身的通讯信息,另一种是在一台单独的机器上运行以监测所有网络设备的通讯信息,比如hub、路由器。
2、SIV
SIV是system integrity verifiers的缩写,即系统完整性检测,主要用于监视系统文件或者Windows 注册表等重要信息是否被修改,以堵上攻击者日后来访的后门。SIV更多的是以工具软件的形式出现,比如著名的“Tripwire”,它可以检测到重要系统组件的变换情况,但并不产生实时的报警信息。
3、LFM
LFM是log file monitors的缩写,即日志文件监测器,主要用于监测网络服务所产生的日志文件。LFM通过检测日志文件内容并与关键字进行匹配的方式判断入侵行为,例如对于HTTP服务器的日志文件,只要搜索“swatch”关键字,就可以判断出是否有“phf”攻击。
4、Honeypots
蜜罐系统,也就是诱骗系统,它是一个包含漏洞的系统,通过模拟一个或多个易受攻击的主机,给黑客提供一个容易攻击的目标。由于蜜罐没有其它任务需要完成,因此所有连接的尝试都应被视为是可疑的。蜜罐的另一个用途是拖延攻击者对其真正目标的攻击,让攻击者在蜜罐上浪费时间。与此同时,最初的攻击目标受到了保护,真正有价值的内容将不受侵犯。蜜罐最初的目的之一是为起诉恶意黑客搜集证据,这看起来有“诱捕”的感觉。
1.2问:谁是入侵者?
通常我们将入侵者称为hacker,但实际上这是不准确的。可以这么说:hacker是发现系统漏洞并修补漏洞的,cracker才是利用漏洞占山头搞破坏的入侵者。为了不混淆视听,在此干脆统一叫作入侵者吧。一般来说,入侵者分为两类:内部和外部。内部入侵者通常利用社会工程学盗用非授权帐户进行非法活动,比如使用其他人的机器、冒充是处长或局长;外部入侵者则要借助一定的攻击技术对攻击目标进行监测、查漏,然后采取破坏活动。
有一点请牢记:统计表明,入侵行为有80%来自内部。
1.3问:入侵者如何进入系统?
主要有三种方式:
1、物理入侵
指入侵者以物理方式访问一个机器进行破坏活动,例如趁人不备遛进机房重地赶紧敲打两下键盘试图闯入操作系统、拿着钳子改锥卸掉机器外壳“借”走硬盘装在另一台机器上进行深入研究。
2、系统入侵
指入侵者在拥有系统的一个低级账号权限下进行的破坏活动。通常,如果系统没有及时“打”最近的补丁程序,那么拥有低级权限的用户就可能利用系统漏洞获取更高的管理特权。
3、远程入侵
指入侵者通过网络渗透到一个系统中。这种情况下,入侵者通常不具备任何特殊权限,他们要通过漏洞扫描或端口扫描等技术发现攻击目标,再利用相关技术执行破坏活动。NIDS主要针对的就是这种入侵。
1.4问:入侵者为何能闯入系统?
苍蝇不盯无缝的蛋,入侵者只要找到复杂的计算机网络中的一个缝,就能轻而易举地闯入系统。所以,了解这些缝都有可能在哪里,对于修补它们至关重要。通常,裂缝主要表现在软件编写存在bug、系统配置不当、口令失窃、明文通讯信息被监听以及初始设计存在缺陷等方面。
1、软件编写存在bug
无论是服务器程序、客户端软件还是操作系统,只要是用代码编写的东西,都会存在不同程度的bug。Bug主要分为以下几类:
(1)缓冲区溢出:指入侵者在程序的有关输入项目中了输入了超过规定长度的字符串,超过的部分通常就是入侵者想要执行的攻击代码,而程序编写者又没有进行输入长度的检查,最终导致多出的攻击代码占据了输入缓冲区后的内存而执行。别以为为登录用户名留出了200个字符就够了而不再做长度检查,所谓防小人不防君子,入侵者会想尽一切办法尝试攻击的途径的。
(2) 意料外的联合使用问题:一个程序经常由功能不同的多层代码组成,甚至会涉及到最底层的操作系统级别。入侵者通常会利用这个特点为不同的层输入不同的内容,以达到窃取信息的目的。例如:对于由Perl编写的程序,入侵者可以在程序的输入项目中输入类似“| mail < /etc/passwd”的字符串,从而使perl让操作系统调用邮件程序,并发送出重要的密码文件给入侵者。借刀杀人、借Mail送“信”,实在是高!
(3) 不对输入内容进行预期检查:有些编程人员怕麻烦,对输入内容不进行预期的匹配检查,使入侵者输送炸弹的工作轻松简单。
(4)Race conditions:多任务多线程的程序越来越多,在提高运行效率的同时,也要注意Race conditions的问题。比如说:程序A和程序B都按照“读/改/写”的顺序操作一个文件,当A进行完读和改的工作时,B启动立即执行完“读/改/写”的全部工作,这时A继续执行写工作,结果是A的操作没有了表现!入侵者就可能利用这个处理顺序上的漏洞改写某些重要文件从而达到闯入系统的目的,所以,编程人员要注意文件操作的顺序以及锁定等问题。
1.4.2、系统配置不当
(1)默认配置的不足:许多系统安装后都有默认的安全配置信息,通常被称为easy to use。但遗憾的是,easy to use还意味着easy to break in。所以,一定对默认配置进行扬弃的工作。
(2)管理员懒散:懒散的表现之一就是系统安装后保持管理员口令的空值,而且随后不进行修改。要知道,入侵者首先要做的事情就是搜索网络上是否有这样的管理员为空口令的机器。
(3)临时端口:有时候为了测试之用,管理员会在机器上打开一个临时端口,但测试完后却忘记了禁止它,这样就会给入侵者有洞可寻、有漏可钻。通常的解决策略是:除非一个端口是必须使用的,否则禁止它!一般情况下,安全审计数据包可用于发现这样的端口并通知管理者。
(4)信任关系:网络间的系统经常建立信任关系以方便资源共享,但这也给入侵者带来借牛打力、间接攻击的可能,例如,只要攻破信任群中的一个机器,就有可能进一步攻击其他的机器。所以,要对信任关系严格审核、确保真正的安全联盟。
1.4.3、口令失窃
(1)弱不禁破的口令:就是说虽然设置了口令,但却简单得再简单不过,狡猾的入侵者只需吹灰之力就可破解。
(2)字典攻击:就是指入侵者使用一个程序,该程序借助一个包含用户名和口令的字典数据库,不断地尝试登录系统,直到成功进入。毋庸置疑,这种方式的关键在于有一个好的字典。
(3)暴力攻击:与字典攻击类似,但这个字典却是动态的,就是说,字典包含了所有可能的字符组合。例如,一个包含大小写的4字符口令大约有50万个组合,1个包含大小写且标点符号的7字符口令大约有10万亿组合。对于后者,一般的计算机要花费大约几个月的时间才能试验一遍。看到了长口令的好处了吧,真正是一两拨千斤啊!
1.4.4、嗅探未加密通讯数据
(1)共享介质:传统的以太网结构很便于入侵者在网络上放置一个嗅探器就可以查看该网段上的通讯数据,但是如果采用交换型以太网结构,嗅探行为将变得非常困难。
(2)服务器嗅探:交换型网络也有一个明显的不足,入侵者可以在服务器上特别是充当路由功能的服务器上安装一个嗅探器软件,然后就可以通过它收集到的信息闯进客户端机器以及信任的机器。例如,虽然不知道用户的口令,但当用户使用Telnet软件登录时就可以嗅探到他输入的口令了。
(3) 远程嗅探:许多设备都具有RMON(Remote monitor,远程监控)功能以便管理者使用公共体字符串(public community strings)进行远程调试。随着宽带的不断普及,入侵者对这个后门越来越感兴趣了。
1.4.5、设计存在缺陷
(1)TCP/IP协议的缺陷:TCP/IP协议现在已经广为应用、但是它设计时却是在入侵者猖狂肆虐的今天之很早以前设计出来的。因此,存在许多不足造成安全漏洞在所难免,例如smurf攻击、ICMP Unreachable数据包断开、IP地址欺骗以及SYN flood。然而,最大的问题在于IP协议是非常容易“轻信”的,就是说入侵者可以随意地伪造及修改IP数据包而不被发现。现在Ipsec协议已经开发出来以克服这个不足,但还没有得到广泛的应用。
1.5问:入侵者如何获取口令?
(1)、监听明文口令信息 大量的通讯协议比如Telnet、Ftp、基本HTTP都使用明文口令,这意味着它们在网络上是赤裸裸地以未加密格式传输于服务器端和客户端,而入侵者只需使用协议分析器就能查看到这些信息,从而进一步分析出口令,成为真用户的克隆。
(2)、监听加密口令信息 :当然,更多的通讯协议是使用加密信息传输口令的。这时,入侵者就需要借助字典或者采用暴力攻击法来解密了。注意,我们并不能察觉到入侵者的监听行为,因为他在暗处,是完全被动的,没有发送任何信息到网络上,入侵者的机器仅被用于分析这些口令信息。
(3)、重放攻击(Replay attack) 这又是一种间接的攻击方式,就是说:入侵者不必对口令进行解密,需要的是重新编写客户端软件以使用加密口令实现系统登录。
(4)、窃取口令文件: 口令文件通常都保存在一个单独的文件中,例如UNIX系统的口令文件是/etc/passwd(也可能是那个文件的镜像),WinNT系统的口令文件是/winnt/system32/config/sam。入侵者一旦获取了口令文件,就可以使用破解程序发现其中的弱口令信息。
(5)、观察 用户可能由于设置的口令复杂难记而将它写在一张纸上压在键盘下随时查看,或者在输入口令的时候不管身后有没有站着一位“看客”。入侵者的搜索力与记忆力都非常好,这些操作习惯对他们来说简直就是轻松练兵。所以,别忽视入侵者的眼睛!
(6)、社交工程 社交工程就是指采用非隐蔽方法让用户把密码说出来.例如你突然接到一个电话,我是某某,现在需要检测你的网络,你的密码多少。很多人就会不加考虑的把密码说出来。所以很多公司要求员工无论任何情况都不能说出自己的密码。
1.6问:典型的入侵步骤?
(1)信息的收集 :知己知彼,百战不殆。入侵者攻击的第一步就是尽一切可能对攻击目标进行信息收集以获取充足的资料。采取的方法包括:使用whois工具获取网络注册信息;使用nslookup或dig工具搜索DNS表以确定机器名称;确定了攻击目标的基本属性(站点地址、主机名称),入侵者将对它们进行深入剖析。方法有:遍历每个Web页面搜索是否存在CGI漏洞;使用ping工具一一探寻“活”着的机器;对目标机器执行UDP/TCP扫描以发现是否有可用服务。这些行为都属于正常的网络操作,还不能算作入侵行为,但是NIDS系统将能够告诉管理者“有人正在撼动门把手……”
(2)、漏洞利用:现在到了开始动手的时候了!破坏花样实在繁多,在此择优列举如下:通过在输入项目中写入壳命令字符串(shell command)来考验CGI脚本的安全性;通过发送大量数据以确定是否存在臭名昭著的缓冲区溢出漏洞;尝试使用简单口令破解登录障碍。当然,混合使用多种方式是攻占成功的不二法门。
(3)安装后门,清除日志:对于入侵者而言,一旦成功地入侵了网络中的一台机器,入侵者现在要做的就是隐藏入侵痕迹并制造日后再攻的后门,这就需要对日志文件或其他系统文件进行改造,或者安装上木马程序、或者替换系统文件为后门程序。这时,SIV(系统完整性检测)系统会注意到这些文件的变化。由于内部网络中的安全措施通常都比较少,进一步地,入侵者将以这第一台机器作为跳板,攻击网络中的其他机器,寻找下一个安身之家。
以上讨论是的有目的入侵者的通常行为。另外还有一种是无目的的入侵,仅仅是初级入侵者为了练手.用扫描器扫描一个网段地址;搜索其上是否有指定的漏洞;如果有,根据已知的漏洞利用方法进行攻击。
1.7问:入侵有哪些特征?
(1)、探测 探测方式有很多,包括ping扫描、探测操作系统类别、系统及应用软件的弱帐号扫描、侦探电子邮件、TCP/UDP端口扫描、探测Web服务器CGI漏洞等。
(2)、漏洞利用 指入侵者利用系统的隐藏功能或漏洞尝试取得系统控制权。
(3)拒绝式攻击:
1.8问:通常有哪些漏洞?
(1):CGI漏洞:编写CGI程序需要考虑得非常完善才有可能避免安全威胁。入侵者经常要尝试访问系统中的一些具有知名漏洞的CGI程序,以期寻找到突破口。这些CGI程序有:TextCounter、GuestBook、EWS、info2www、Count.cgi、handler、webdist.cgi、php.cgi、files.pl、nph-test-cgi、nph-publish、AnyFORM、FORMMail。如果我们没有使用这些文件却发现有人正在频繁地访问其中之一,就可以清楚地断明一个入侵行为正在进行了。
(2)Web服务器漏洞:比如文件名中包含一系列“../”字符串从而可以访问系统中的任意文件;URL路径后添加上“::$DATA”就可以查看脚本源代码。
(3)Web浏览器漏洞:这方面的漏洞涉及面同样很广,冲浪者绝不能掉以轻心。比如可能导致缓冲区溢出或执行.LNK命令的URL、畸形的HTTP header内容、MIME类型溢出(例如Netscape浏览器的命令)、总是有漏可乘的javascript脚本(例如利用文件上传功能创建后门程序)、偶尔犯些错误的Java代码以及现在更为厉害、更为猖獗的ActiveX组件。
(4)STMP漏洞:比如利用缓冲区溢出攻击STMP、使用VRFY命令搜索用户名称。
(5)IMAP漏洞:IMAP即Internet信息控制协议(Internet Message Access Protocol),是指从邮件服务器上获取Email信息或直接收取邮件的协议。传统的POP3收信过程中,用户无法得知邮件的具体信息,只有在邮件全部下载到硬盘后,才能慢慢地浏览或删除,用户几乎没有对邮件的控制决定权。IMAP解决的就是这个问题。但是许多流行的IMAP服务器都存在重大漏洞。
(6)IP地址欺骗:由于路由选择不需要判断来源地址,因此入侵者就可将IP数据包的来源地址替换为伪造地址以期隐藏其攻击地点。而且,由于是伪造的来源地址,入侵者也不会接收到目标机器的返回通讯信息,真正做到了“攻不还手”。
(7)缓冲区溢出:除了前面提及的缓冲区溢出种类外,还有DNS溢出(超长DNS名字发送给服务器)、statd溢出(超长文件名)。
3、DoS或DDoS(拒绝服务攻击或分布式拒绝服务攻击)
这种攻击是真正的“损人不利己”,不需要别人的数据,只想等别人出错看热闹。这种攻击行为越来越多,是不是因为这种人也越来越 ...... 常见的DoS有死亡之Ping、SYN湮没、Land攻击。
2.1问:检测入侵有哪些方式?
(1)、异常行为检测 最普通的检测入侵的方式是对异常行为进行统计,并与设备的基准行为进行对比以判断是否存在入侵。例如,检查CPU利用率是否猛烈增长、磁盘空间是否一下子缩小、用户登录失败次数增加、文件锁定过多等等。这种检测方式的优点是不必了解异常行为背后的黑幕就能判断出发生了入侵,所谓不见其人已闻其声。
(2)、特征行为检测 大多数的商业产品是基于特征标志对入侵行为进行检测的,就是说,采用对号入坐的方式,一旦发现了与特征数据库中匹配的行为,就认为发生了某种入侵。例如,如果发现网络上有信息包含有字符串“/cgi-bin/phf?”,就可以初步判断有人正在试图利用Web服务器上的phf CGI漏洞。注意,这种方式下的特征数据库非常关键,根据新入侵行为及特征的出现,要不断地更新补充,是活水不能是死水。
问:NIDS系统如何对通讯信息进行特征比较?
通讯信息就是穿越网络的IP数据包流,NIDS系统能够捕获它们并利用其自身的TCP/IP堆栈对它们重新组织进行分析。其中使用到的技术包括:
(1)、协议栈验证 协议栈就是一些以层次结构组成的协议,例如TCP/IP协议栈。协议栈中的每一层都为它的上层协议提供功能,而向其下层协议要求服务。许多入侵行为比如“死亡之Ping”、“TCP隐蔽扫描”都是以反规则使用底层IP、TCP、UDP和ICMP协议的方式攻击系统的,因此,建立协议栈验证系统对非法数据包进行标记十分必要。
(2)、应用协议验证 许多入侵还使用非法应用协议进行攻击,比如WinNuke攻击就使用到NetBIOS应用协议。因此,NIDS系统必须有能力重新实现广泛的应用层协议,从而有效地检测可疑或非法行为。
(3)、创建新日志事件 通过记录一个机器使用的所有应用层协议,NIDS系统就可用于扩展网络管理软件的审计功能。这样,下游事件日志系统例如Win2K事件管理器、UNIX的系统日志、SNMP TRAP等等就能够将它们与其他网络上的其他事件进行关联分析。