祝贺IT168安全频道成功的推出了这个活动,很久没有人提到了“白帽黑客”了,这次活动将白帽黑客们又一次集合到一起,这个举动不是区区一千元能够吸引大家共同参与的本意。
一.入侵视频反思
观看入侵视频后,感觉这个获奖者(攻击者)似乎跳跃了传统黑客的入侵系统的过程。传统的黑客入侵包含了一下几个环节:
信息采集→漏洞发现→弱点利用→获得目标系统权限→完成破坏行为→放置后门→擦除犯罪痕迹→对入侵目标保持监控。由于是虚拟环境的入侵,所以后面环节的缺少是必然的,但入侵者直接利用asp脚本注入工具进行扫描,这是我始料未及的。
1.非完整性扫描
对于黑客们来说,在开始真正肆虐之前,首先要完成的步骤——踩点(国外的黑客称作footprinting),这是收集目标信息的一种黑客攻击技巧。举例来说,就像我们玩“红色警戒”游戏一样,我们在地图没有完全打开的时候,总要派遣出去一个小兵,让他摸索一下对方的建筑规模和防范的弱点。就网络安全而以,主动的攻击者可以通过对某个组织进行有计划、有步骤的踩点,收集整理出一份关于该组织信息安防现状的完整剖析图。他们结合使用各种工具和技巧,攻击者完全可以从对某个组织公开渠道查出该组织具体使用的域名、网络地址块、与因特网直接相联的各有关系统的IP地址以及与信息安防现状有关的其他细节。
有很多种技术可以用来进行踩点,但它们的主要目的不外乎发现和收集与以下几种与网络环境相关的信息:外部接口的信息、内部的网络环境、远程访问中的信息资源以及分支机构的网络连接。下表中(表1.1)罗列出了这些环境以及攻击者要收集和确认的重要信息。
表1攻击者踩点信息
网络环境 |
需要确认的信息 |
外部接口的信息 |
域名 |
网络地址范围 |
可以直接从Internet进行访问的各个系统的具体IP地址 |
已被发现的各个系统上运行的TCP和UDP服务 |
防火墙的品牌和操作系统的版本信息 |
访问控制机制和相关的访问控制表(access
control list,ACL) |
入侵检测系统(intrusion
detection system,IDS) |
各有关系统的细节信息(管理员的个人信息、负责人的Mail、路由表、SNMP信息等等) |
DNS主机名 |
分支网络连接 |
连接的源地址和目标地址 |
连接的类型 |
访问控制机制 |
内部的网络环境 |
组网协议(比如说,IP、IPX、DecNET等等) |
内部域名(常常合外部域名分开) |
网络地址范围 |
可以直接从内联网进行访问的各个系统的具体IP地址 |
已被发现的各系统上运行的TCP和UDP服务 |
已被发现的各系统的体系结构(例如,SPARC还是X86) |
访问控制机制和相关的访问控制表(access
control list,ACL) |
入侵检测系统(intrusion
detection system,IDS) |
远程访问 |
VOIP的类型和组织方式 |
远程系统的类型 |
身份验证机制 |
VPN和相关的协议(IPSec和PPTP) |
黑客在踩点阶段已经确认得到了一定的信息之后,开始针对你的系统进行弱点扫描,这是他们寻找突破点的关键。扫描技术也是网络安全领域的重要技术之一,其中包括两种主要技术:端口扫描技术和漏洞扫描技术。(当然,我们在网络加固中常使用的扫描技术主要来源于早期“黑客”的设计思路)一次完整的弱点扫描分为3个阶段:
第1阶段:发现目标主机或网络
第2阶段:发现目标后进一步搜集目标信息,包括操作系统类型、运行的服务以及服务软件的版本等。如果目标是一个网络,还可以进一步发现该网络的拓扑结构、路由设备以及各主机的信息。
第3阶段:根据搜集到的信息判断或者进一步测试系统是否存在安全漏洞。如果入侵者经过信息采集阶段的过程,很可能就会发现59.151.29.110还开放了除TCP
80之外的不安全端口,如图1所示。
图1 59.151.29.110 TS 端口开放
在此次获奖者和其他参与者的回帖中我发现了一个值得深思的问题,即:黑客技术平民化。
2.黑客技术平民化
很多时候,我非常敬佩的一些网络管员,他们用无限的学习和工作时间,甚至在用自己的身体健康去换得网络的安全稳定。但是,一个人的力量终究有限,再加上技能差距等因素,组织的信息安全平台都有可能遭受到重大打击。对于大型的网络机构和信息中心,为了保障处理安全事务的及时,满足提高整体信息化安全等级的需求,付出了更多的资源和风险成本。有许多网络安全技术人员或者网管员自己不能单独完成一个网络安全的整体规划,这是因为网络安全技术涵盖的范围太广,而许多安全产品本身就漏洞,网络管理员不可能对每个产品的或方案了如指掌,互联网成立他们最主要的学习平台。
下面引用一段黑客教学网站的宣言:“我们力争把这里建设成为黑客初学者的网上家园,我们建站目的就是让更多想学习黑客技术的朋友们能通过本站获得最基础、最系统的知识,使黑客技术平民化!”看似高级神秘的攻击技术,被许多网络安全领域的“高手”们设计成不同功能模块,或者是集合上述多个步骤的集成化入侵工具,随意让人下载,我们一直面对的黑客可能就是你身边的同事和朋友。攻击技术“平民化”,为本来就存在众多安全隐患的网络“雪上加霜,火上浇油!”
此次活动的入侵者使用了3个黑客攻击软件,即:注入工具(扫描与溢出)、暴力破解词典(MD5散列数据库网站)、ASP脚本控制程序(已经归属于木马类病毒)。三个黑客工具即可控制目标对象的入侵过程,让我们反思,很多安全网站攻防教程是教会了防御者防护的方法还是培养了最新一代“工具型”的黑客。
3.应用层弱点成为黑客首选
威胁是一种对组织及其资产构成潜在破坏的可能性因素,是客观存在的。造成威胁的因素可分为物理环境、系统漏洞、人为因素。根据威胁的动机,环境因素包括自然界不可抗的因素和其它物理因素;系统漏洞可以包括网络设备漏洞、操作系统漏洞、代码漏洞等;人为因素又可分为恶意和无意两种。
网络所面临的威胁很多,其中包括:物理威胁(偷窃、废物搜寻、间谍行为、身份识别错误)、系统漏洞(乘虚而入、不安全服务、配置和初始化)、身份鉴别威胁(口令圈套、口令破解、算法考虑不周、编辑口令)、线缆连接威胁(窃听、拨号进入、冒名顶替)、有害程序(病毒、代码炸弹、特洛伊木马)等。
概括起来,由于TCP/IP的设计漏洞,这些攻击包括:
源地址欺骗(Source address spoofing)或IP欺骗(IP
spoofing)。
源路由选择欺骗(Source Routing spoofing)。
路由选择信息协议攻击(RIP Attacks)。
鉴别攻击(Authentication Attacks)。
TCP序列号欺骗(TCP Sequence number spoofing)。
TCP/IP协议数据流采用明文传输。
TCP序列号轰炸攻击(TCP SYN Flooding Attack),简称SYN攻击。
易欺骗性(Ease of spoofing)。
如今的互联网中基于TCP/IP协议的服务很多,人们比较熟悉的有WWW服务,FTP服务,电子邮件服务,不太熟悉的有TFTP服务,NFS服务,Finger服务等等。这些服务都存在不同程度上的安全缺陷,当用户构建安全可信网络时,就需要考虑,该提供哪些服务,要禁止哪些服务。观看演示视频中我们得到了一个结论,直接从应用层的代表Web服务漏洞直接攻击可获得意外的收获。
Web 服务器位于宿主基础结构的前端,它与 Internet 直接相连,负责接收来自客户端的请求,创建动态
Web 页并响应请求数据。最初WWW服务只提供静态的HTML页面,为力改变人们对网络互动请求的愿望,人们引入了CGI程序,CGI程序让人们的主页活起来。CGI程序可以接收用户的输入信息,一般用户是通过表格把输入信息传给CGI程序的,然后CGI程序可以根据用户的要求进行一些处理,一般情况下会生成一个HTML文件,并传回给用户。CGI程序很多都存在安全漏洞,很容易被黑客利用做一些非法的事情。
有很多人都认可“没有Web,就没有Internet”。Web 服务是一种可以用来解决跨网络应用集成问题的开发模式,这种模式为实现“软件作为服务”提供了技术保障。而“软件作为服务”实质上是一种提供软件服务的机制,这种机制可以在网络上暴露可编程接口,并通过这些接口来共享站点开放出来的功能。可是在很多情况下,Web应用程序及
Web站点往往易遭受到各种各样的攻击,数据在网络传输过程中也很容易被窃取或盗用。很多安全厂商和专家预计在未来很长时间里,Web网络威胁还将进一步增加,各种人为的威胁将通过互联网执行具有“自我延续性”的恶意活动,尤其应注意那些针对大众网站的Web威胁。
二.漏洞分析
漏洞是在硬件、软件、协议的具体实现或系统安全策略上存在的缺陷,从而可以使攻击者能够在未授权的情况下访问或破坏系统。具体举例来说,比如在Intel
Pentium芯片中存在的逻辑错误、在Sendmail早期版本中的编程错误、在NFS协议中认证方式上的弱点、在Unix系统管理员设置匿名Ftp服务时配置不当的问题都可能被攻击者使用。因而这些都可以认为是系统中存在的安全漏洞,威胁到系统的安全。
安全漏洞向来是网络安全领域首要关注的问题,发现系统的安全漏洞也是黑客进行入侵和攻击的重要步骤。据调查,约有80%的国内网站存在明显漏洞。漏洞的存在使网络上不法分子的非法入侵与袭扰破坏有可乘之机,给网络安全带来了巨大的潜在危险。具体来说,观看动画后感觉此系统的设置存在多处漏洞,漏洞分析如下。
1.代码编写漏洞
检查代码中的安全性缺陷,是网站创建过程中的一个关键要素,它与计划、设计和测试同等重要。SQL
注入的症结在于使用字符串连接来构建 SQL 语句,我们可以扫描代码实现。一般而言,检查的重点应放到搜索诸如“update”、“select”、“insert”、“exec”以及列举表名或数据库名之类的单词。“阿D”等注入工具的扫描机制有很多,这里引用阿D主页上的信息:
//看看是什么权限的 and 1=(Select IS_MEMBER('db_owner')) And char(124)+Cast(IS_MEMBER('db_owner') as varchar(1))+char(124)=1 ;-- //检测是否有读取某数据库的权限 and 1= (Select HAS_DBACCESS('master')) And char(124)+Cast(HAS_DBACCESS('master') as varchar(1))+char(124)=1 -- 数字类型 and char(124)+user+char(124)=0 字符类型 ' and char(124)+user+char(124)=0 and ''=' 搜索类型 ' and char(124)+user+char(124)=0 and '%'=' 爆用户名 and user>0 ' and user>0 and ''=' 检测是否为SA权限 and 1=(select IS_SRVROLEMEMBER('sysadmin'));-- And char(124)+Cast(IS_SRVROLEMEMBER(0x730079007300610064006D0069006E00) as varchar(1))+char(124)=1 -- ……..(从略) //爆出长度 And (Select char(124)+Cast(Count(1) as varchar(8000))+char(124) From D99_Tmp)=0 ;-- 更改sa口令方法:用sql综合利用工具连接后,执行命令: exec sp_password NULL,'新密码','sa' 添加和删除一个SA权限的用户test: exec master.dbo.sp_addlogin test,ptlove exec master.dbo.sp_addsrvrolemember test,sysadmin 删除扩展存储过过程xp_cmdshell的语句: exec sp_dropextendedproc 'xp_cmdshell' 添加扩展存储过过程 EXEC [master]..sp_addextendedproc 'xp_proxiedadata', 'c:\winnt\system32\sqllog.dll' GRANT exec On xp_proxiedadata TO public 停掉或激活某个服务。 exec master..xp_servicecontrol 'stop','schedule' exec master..xp_servicecontrol 'start','schedule' dbo.xp_subdirs 只列某个目录下的子目录。 xp_getfiledetails 'C:\Inetpub\wwwroot\SQLInject\login.asp' dbo.xp_makecab 将目标多个档案压缩到某个目标档案之内。 所有要压缩的档案都可以接在参数列的最后方,以逗号隔开。 dbo.xp_makecab 'c:\test.cab','mszip',1, 'C:\Inetpub\wwwroot\SQLInject\login.asp', 'C:\Inetpub\wwwroot\SQLInject\securelogin.asp' xp_terminate_process 停掉某个执行中的程序,但赋予的参数是 Process ID。 利用”工作管理员”,透过选单「检视」-「选择字段」勾选 pid,就可以看到每个执行程序的 Process ID xp_terminate_process 2484 xp_unpackcab //更新表内容 Update films SET kind = 'Dramatic' Where id = 123 //删除内容 delete from table_name where Stockid = 3 |
2.密码设置漏洞
哈希函数将任意长度的二进制字符串映射为固定长度的小型二进制字符串。加密哈希函数有这样一个属性:在计算上不大可能找到散列为相同的值的两个不同的输入;也就是说,两组数据的哈希值仅在对应的数据也匹配时才会匹配。数据的少量更改会在哈希值中产生不可预知的大量更改。MD5
算法的哈希值大小为 128 位。MD5 类的 ComputeHash 方法将哈希作为 16 字节的数组返回。请注意,某些
MD5 实现会生成 32 字符的十六进制格式哈希。若要与此类实现进行互操作,请将 ComputeHash
方法的返回值格式化为十六进制值。
一般来说,形如ef0020cf8c5e45b9(77169)的16位或者32位密码就是经过MD5加密的,MD5是一种不可逆的算法,但入侵者为什么能快速的就破解了呢?我分析有两点原因:
(1)那些所谓的在线破解MD5密码,不过就是用一个庞大的MD5原文密码:加密密码数据库比对而已。数据库中正好包含了77169的反向散列值。
(2)77169这个密码设置的过于简单,5位数字组成,这还是有可能被大型高性能主机破解的。
当然还有很多字典破解的工具,不过密码简单的让人无法置信。要说注入是由于程序员书写不规范造成的,造成系统被突破的最根本原因依然是密码问题。还有很多网站提供MD5密码查询,但都无法对数据库中的“d7f9061ae314ca0a”进行反向解密。
3.FCKeditor上传漏洞
现在,许多的 Web 应用程序被设计成可包含用于收集富文本数据的用户界面,因此,它们在外观和使用方面看起来更像桌面应用程序。随着越来越多的网站将其内容交由访问者创建,标准文本框很快变得陈旧过时。
对于许多 Web 应用方案而言,标准 HTML 文本框无法提供富文本编辑器所能提供的功能或优势。借助 FCKeditor,无论服务器端采用何种技术,均可简便而轻松地嵌入富文本数据收集功能。此网站后来也使用了FCKeditor,入侵者正式从FCKeditor找到了可以上传asa文件类型的漏洞。
三.网络加固建议
针对Web服务的攻击有很多,例如对WEB应用程序的破坏、绕过验证与Session验证、获取管理权限、获取资源、针对主机漏洞与WEB安全漏洞攻击、跨站脚本攻击及SQL注射攻击等等。另外,硬件与物理环境的错误,也都会导致资源无法被客户端访问到。安全面的Web安全防御要从以下几个方面入手,构建出一个安全的防御架构:
1、资源保护
重要资源,如数据库中或文件系统上的数据;物理环境,如UPS供电、磁盘冗余、双机冗余;Internet访问接口的访问控制,数据的授权与认证访问。
2、威胁和威胁建模
所有类型的威胁包括网络威胁、主机威胁、与应用的威胁;重点放在Web应用的威胁,如:SQL注入、跨网站脚本、输入篡改、劫获会话等;掌握威胁建模的方法与步骤,使你能系统地全面地了解Web应用可能的威胁。
3、程序缺陷与服务漏洞
包括操作系统在某方面的弱点或特性,以及它有可能造成威胁的发生。网络、主机或应用程序编写过程中可能存在缺陷。
4、攻击与对策
100%的安全是不存在的,当某人或者设备采取的危害资源的行为之后,应对威胁、减小危险的安全措施。最后是应急响应、犯罪证据的取证,以及灾难恢复工作的执行效率。
在多数的网络中,我们不可能将Web主机直接曝露在Internet上,所以使用NAT(Network
Address Translation,网络地址翻译)技术,将局域网中Web服务器的内部地址翻译成合法的Internet
IP地址使用,这是提高Web主机安全性的普遍做法。例如:在一台路由器上要想对外发布IIS / FTP站点,则只能使用路由器的端口映射(端口地址翻译)NAT技术来完成,如80端口映射成Web服务器,21端口映射成FTP服务器。假定192.168.1.1和192.168.1.2
是企业内部局域网的Web和FTP服务器的地址,80是Web服务器的端口21是FTP服务器的端口。在CISCO
的路由器做端口映射,可以通过下面两个命令实现:
ip nat inside source static tcp 192.168.1.1
80 202.86.149.1 80
ip nat inside source static tcp 192.168.1.2
21 202.86.149.1 21
最后是配合ACL入口规则的使用:
access-list 101 permit tcp any host 202.86.149.1 eq 80 intface e0 ip access-group 101 in |
本网站加固可首先利用传统方法,架构网络防护层,比如关闭外部网络访问3389端口等。
1.构建反向代理机制
大家熟知的IIS Unicode攻击,以及此次攻击中使用的注入技术,因为这种攻击是选择了防火墙所允许的80端口,而包过滤的防火墙无法对数据包内容进行核查,此时防火墙等同于虚设,即使在防火墙的屏障之后,也会被攻击者轻松拿下超级用户的管理权限。
另外一种做法就是使用反向代理技术,反向代理服务器可以避免有效的减少上述攻击。它对外就表现为一个Web服务器,不同之处在于的这个服务器没有保存任何网页的真实数据,所有的静态网页或者CGI程序,都保存在内部的Web服务器上。因此对反向代理服务器的攻击并不会使得网页信息遭到破坏,这样就增强了Web服务器的安全性。
图2反向代理访问模式
反向代理能以软件方式来实现,如Apache mod_proxy、ISA
proxy等;也可以在高速缓存器、负载均衡器等硬件设备上实现。基于软件技术的反向代理负载均衡可以将优化的负载均衡策略和代理服务器的高速缓存技术结合在一起,提升静态网页的访问速度。
2.密码与后台管理
密码问题是直接导致系统被入侵原因,因此网站管理员需要变更为复杂性密码,其规则可以参考微软的操作系统建议,同样适合Web服务器页面的后台管理验证,如:
是否允许用户重新使用旧的密码(强制密码历史),在两次更改密码之间的时间(最大密码寿命以及最小密码寿命),最小密码长度(最小密码长度),以及用户是否必须混合使用大小写字母、数字和特殊字符(密码必须满足复杂性要求)。我建议你最低要求,也应该采用每45天更改一次密码,或要求至少8个字符的密码,并确保开启了密码必须满足复杂性要求设置。
另外需要防止后台入口的使用标准目录结构,如更换成某些注入工具字典中没有的后台目录名称。当然,如果有更高安全要求可以启用SSL+CA+验证码的组合登录凭证,或者采用更高等级的动态(令牌)认证。
3.多层身份验证
在此方案中,Web 服务器验证调用方的身份,并通过使用调用方的标识限制对本地资源的访问。数据库验证
ASP默认进程标识(它是权限最少的帐户)的身份(即数据库信任 ASP 应用程序),可监测ASP代码安全,并升级到SQL
Server数据库实现多层身份认证,参见表2。
表2 安全措施
类别 |
详细信息 |
身份验证 |
通过在 IIS
中使用集成 Windows 身份验证,在 Web 服务器上提供增强身份验证来验证原调用方的身份。
|
在 ASP.NET
内使用 Windows 身份验证(不模拟)。 |
通过将 SQL
Server 配置为使用 Windows 身份验证,确保数据库连接的安全。 |
数据库信任
ASP.NET 辅助进程以进行调用。可以在数据库中验证 ASP.NET 进程标识的身份。 |
授权 |
使用绑定到原调用方的
ACL 在 Web 服务器上配置资源。为了简化管理,将用户添加到 Windows 组中并在 ACL
中使用组。 |
Web 应用程序对原调用方执行
.NET 角色检查,以限制对页面的访问。 |
安全通信 |
保护在 Web
服务器和数据库之间传送的机密数据 |
保护在原调用方和
Web 应用程序之间传送的机密数据 |
升级网页代码以及FCKeditor属性后,图3显示了此方案的建议安全配置。
4.防范ASP木马
Asp木马中最核心的技术就是利用脚本创建对象,然后利用cmd.exe命令来执行对文件的创建、删除以及修改等操作。目前较为流行的利用FSO以及不利用FSO技术的木马程序源代码。
说明:FSO是对FileSystemObject的简称,IIS4以及后续版本中的ASP的文件操作都可以通过FileSystemObject实现,包括文本文件的读写目录操作、文件的拷贝改名删除等。FileSystemObject带来方便的同时,也具有非常大的风险性,利用FileSystemObject可以篡改并下载Fat以及FAT32分区上的任何文件,即使是ntfs,如果没有对权限进行很好的设置,同样也能遭到破坏。
在众多的asp木马中,海阳顶端网asp木马应该是比较成熟的,也是用得最多的asp木马,就其版本而言,到目前为止已经推出了数个版本:海阳顶端网asp木马第一版、海阳顶端网asp木马xp版、海阳顶端网asp木马xp-net版、海阳顶端网asp木马2003版、海阳顶端asp木马安装插件版以及本次入侵中用到的海阳顶端网asp木马2006版。
目前有很多软件可以对asp源代码进行加密,例如asp木马免杀工具等。其原理是采用一定的算法将源代码或者源代码中的关键字进行某种转换,经过转换后,源代码已经变为乱码或者显示为特定的字符形式。但是随着杀毒技术的提高和版本的升级,经过加密后的asp木马仍然不能保证躲过杀毒软件的查杀。
ASP木马主要是通过三种组件FileSystemObject、WScript.Shell和Shell.Application来操作的,因此只要你在服务器上修改注册表,将这三种组件改名,即可禁止木马运行、防范黑客入侵了。这一招能防范所有类型的上传漏洞,因为即使黑客将木马成功上传到服务器中,但是由于组件已经被改名,木马程序也是无法正常运行的!
具体而言,需要将FileSystemObject组件、WScript.Shell组件、Shell.Application组件改名,然后禁用Cmd.exe,就可以预防漏洞上传攻击。
总结
其实我们可以把这次攻防比赛看成是一次模拟入侵测试,模拟入侵测试是一种从外部观点来评价安全控制措施的方法,它可以更加有效检查防范、跟踪、内部及外部入侵报警等所有的控制措施。但是必须注意的是,尽管渗透性测试是评估组织的控制措施的最好方法之一,但这种方法的有效性依赖于测试者的水平和努力程度。你需要明白,没有经过“模拟入侵”检测的安全体系根本就是如同虚设,没有意义。
|