背景 黑客文化的变迁
黑客技术的出现像计算机出现一样长久,黑客通过对系统重配置或者重编程获得本来没有的权限。早期的黑客因为对计算机的神秘功能着迷,本着自由的精神在计算机世界里流连而不能自拔。这种自由精神一方面吸引了大批聪明的青年学生投入其中,从而在早期推动了计算机的飞速发展。
在上世纪六十年代,他们利用一些技术破坏计算机网络的使用范围,七十年代因为特殊的美国的那种背景,他们提出了计算机应该为人民所用的口号,他们是电脑史上的英雄。到了八十年代,PC已经很便宜了,美国与欧洲的经济得到了长足的发展,黑客们开始为信息共享而奋斗,当时美苏争霸,他们认为应该使两国处于平衡状态,任何一个国家都不能过分强大,否则就会给新的和平带来威胁,他们就积极联络各国,把通过黑客技术拿到的资料卖给各国,一方面自己获得了经济收入,另一方面他们也认为有助于世界的和平,认为自己为世界和平作出了贡献。九十年代可以说是黑客的灾难和混乱时期,作为信息共享的产物,INTERNET一方面为我们提供了极大的便利,另一方面,使用的人多了,技术不再是少数人的专有权力,越来越多的人都掌握了这些,导致了黑客的概念与行为都发生了很大的变化。
到了二十一世纪,随着互联网的高速发展以及网民爆发式的增长,一个黑客市场已经形成。境外情报机构、企业公司和犯罪团伙都愿意付钱买下有关安全漏洞——以及如何加以利用——的信息。各种网络犯罪每天充斥在我们生活当中,黑客们通过入侵各类网站论坛进行盗取用户数据,并挂上网页木马继续盗取访问网站用户的个人虚拟财产等等。
2011年度网络犯罪调查报告显示,全球每天就有100万人成为网络犯罪的受害者,全球因网络犯罪造成的直接损失每年达 1140 亿美元。因处理网络犯罪问题而浪费的时间价值是2740亿。因此,网络犯罪导致的损失约为3880亿美元,远远超过了大麻、可卡因和海洛因全球黑市的交易总额(2880亿美元)。从网络犯罪受害者人数来看,中国地区的网络犯罪相较于全球可能更加恶劣:去年,全球有4.31亿成人遭受过网络犯罪的侵害,这其中就有差不多一半的受害者(1.96亿人)来自中国。黑客的网络犯罪已经达到了一个前所未有的高度。#p#
一、互联网的安全威胁
从1969年区域性的大学主机相连而构成的互联网发展到今天覆盖全球点点滴滴的强大互联网,特别在是互联网的经济与科技领域取得的显著成果,给互联网披上的神话般的面纱。如今,互联网丰富了我们的生活,这所有的一切都来源于Web,Web系统是互联网的重要组成部分,形形色色的Web系统正在改变着我们的生活互联网应用已经渗透我们生活的方方面面,我们可以通过百度在线搜索想要的资料、可以通过网上银行完成在线购物和支付、可以通过微博和博客发表自己的“声音”、可以通过在线交友网站交到朋友。
但是由于这些WEB应用在设计时是允许任何人、从任何地方登陆进入访问,因而也成为了通往隐藏在深处的重要数据的桥梁。据推算,互联网至少每39秒就有一次攻击。
国家互联网应急响应中心发布的《2011年中国互联网网络安全态势报告》
2011年年底的CSDN泄密门事件导致国内600万程序员的个人信息被盗取,虽然CSDN及时修复了漏洞,警方也及时抓住了犯罪嫌疑人,但今年依然有犯罪分子通过去年CSDN泄漏的帐号密码偷窃国内知名电商“京东商城”的用户账户,通过账户里的剩余资金大量购买商品。
这些曝光的安全泄密事件仅仅是个警钟,被公开的这些网站的数据库很早之前就被黑客拖库,而且转手买来卖去,眼下所见的都是被人榨干最后一滴水的陈年资料。谁能保证隐藏在暗处中的黑客们还有其他更多未曝光的资料呢。
那么,黑客们是如何获取我们的重要信息,网站又是如何被拖库的呢?#p#
二、黑客攻击WEB典型案例分解
下面我们为大家分解黑客入侵者的渗透WEB网站的主流手段。
假设目标站点http://192.168.40.21/是一个大型综合类网站,会员数目众多。
1.锁定目标、搜集信息
黑客入侵一个目标站点的时候,首先要看该站点是否存在利益价值。目前黑客入侵者的商业攻击主要针对在线购物网站、社交网站、网络游戏、大型论坛、慈善机构、电子政务、金融证券网站等网站。这些网站可以窃取会员用户信息进行社工欺骗,比如利用获取的身份信息对用户亲属进行电话诈骗、利用大部分人习惯用同一个帐号密码的习惯去尝试登录其他网站,并且这些会员信息可以多次出售专卖;黑客入侵者还可以通过入侵政府网站挂“黑链”,因为政府网站在搜索引擎中占据的权重较高,攻击者可以通过此方法使自己指定的网站插入到政府网站页面中,从而提供其在搜索引擎中的排名靠前并盈利。
黑链是SEO手法中相当普遍的一种手段,笼统地说,它就是指一些人用非正常的手段获取的其它网站的反向链接,最常见的黑链就是通过各种网站程序漏洞获取搜索引擎权重或者PR较高的网站的WEBSHELL,进而在被黑网站上链接自己的网站,其性质与明链一致,都是属于为高效率提升排名,而使用的作弊手法。
#p#
在确定目标后,黑客入侵者就会搜集该目标站点的相关信息,一次入侵的成功与前期的信息收集关系很大。搜集信息可以让入侵起到事半功倍的效果,只经过一些简单的操作就可以得到一些服务器的Webshell,甚至于系统管理权限,搜集信息一般分为三种:
①工具扫描:黑客入侵者会使用各种扫描工具对入侵目标进行大规模扫描,得到系统信息和运行的服务信息,如对方所使用的操作系统、开放了哪些端口、存在哪些漏洞。典型的扫描工具有:
Nmap扫描目标网站端口开放信息
②社会工程攻击:利用各种查询手段得到与被入侵目标相关的一些信息,通常通过这种方式得到的信息,会被社会工程学这种入侵手法用到,而且社会工程学入侵手法也是最难察觉和防范的。
社会工程学(Social Engineering):通常是利用大众的疏于防范的诡计,让受害者掉入陷阱。该技巧通常以交谈、欺骗、假冒或口语用字等方式,从合法用户中套取敏感的信息,例如:用户名单、用户密码及网络结构,即使很警惕很小心的人,一样也有可能被高明的社会工程学手段损害利益,可以说是防不胜防。网络安全是一个整体,对于某个目标在久攻不下的情况下,黑客会把矛头指向目标的系统管理员,因为人在这个整体中往往是最不安全的因素,黑客通过搜索引擎对系统管理员的一些个人信息进行搜索,比如电子邮件地址、MSN、QQ等关键词,分析出这些系统管理员的个人爱好,常去的网站、论坛,甚至个人的真实信息。然后利用掌握的信息与系统管理员拉关系套近乎,骗取对方的信任,使其一步步落入黑客设计好的圈套,最终造成系统被入侵。这也就是我们常说的“没有绝对的安全,只有相对的安全,只有时刻保持警惕,才能换来网络的安宁”。
③公开域信息:主要通过Google Hacking和Whios等手段获取信息。
Google Hacking:指利用Google Google搜索引擎搜索信息来进行入侵的技术和行为,不少入侵者利用Google强大的搜索功能来搜索某些关键词,找到有系统漏洞和Web漏洞的服务器,打造成自己的肉鸡。
敏感的信息包括:
目标站点的信息
已丢失信息的追回
存储密码的文件
后台管理和上传文件的 Web 页
数据库
特定扩展名的文件
特定的Web程序,如论坛
Whios:Whois协议,是一种信息服务,通过向服务器的TCP端口43建立一个连接后,对输入的关键词进行查询,能够提供有关所有DNS域和负责各个域的系统管理员数据,其中记录着每个互连网站点的详细信息,其中包括域名、服务器地址、联络人、电话号码和地址。我们可以以Web方式查询,比如到http://whois.www.net.cn/或者http://whois.webhosting.info查询,假设我们要查询www.baidu.com的域名信息,我们到http://whois.www.net.cn/查询的结果如图:
通过上面的介绍我们对黑客攻击前的踩点和信息搜集有了认识,目前我们已经得知目标站点http://192.168.40.21/主要开放了HTTP 80端口,远程登录RDP 3389端口;服务器采用的WINDOWS系统,中间件使用的Apache Tomcat,网站脚本语言用的JSP。#p#
2、深入攻击阶段
利用SQL注入“拖库”
在深入攻击的过程中,首先攻击者需要找到一个动态链接的URL看是否存在SQL注入漏洞,例如现在找到一个http://192.168.40.21/news.jsp?id=127,通过简单的注入尝试语句发现该URL确实存在SQL注入漏洞,攻击者一般为了节省时间都会使用工具来促进效率。
通过工具攻击者获取到了服务器的环境变量,数据库结构,并且获取了该网站的所有用户数据,共7580条用户数据信息,这个获取用户数据的过程就是我们常说的“拖库”。
拖库:拖库一词多用于数据库程序员专业人士使用,语意:从数据库导出数据。很多时候数据库的资料需要导出来在别的地方使用,并且数据库资料可以导出好几种格式,例如:TXT,XLS等格式。黑客攻击者拖库最简单的形式就是找SQL注入点直接写工具拖。
拖库的危害:根据资料显示部分网民习惯为邮箱、微博、游戏、网上支付、购物等帐号设置相同密码,一旦数据库被泄漏,所有的用户资料被公布于众,任何人都可以拿着密码去各个网站去尝试登录,对一些敏感的金融行业是致命的危害,对普通用户可能造成财产,个人隐私的损失或泄漏。
“拖库”完成后如果还想扩大攻击范围,我们可以继续尝试其他攻击手段,获取WEBshell。
WEBshell:“web”的含义是显然需要服务器开放web服务,“shell”的含义是取得对服务器某种程度上操作权限。webshell常常被称为匿名用户(入侵者)通过网站端口对网站服务器的某种程度上操作的权限。由于webshell其大多是以动态脚本的形式出现,也有人称之为网站的后门工具。#p#
利用FCKeditor编辑器漏洞获取WEBshell
现在打开网站先注册一个会员账户testweb,在用户管理中信——投稿管理——发布稿件的地方发现该网站使用了一款名为FCKeditor在线编辑器。FCKeditor是一款在线编辑器,能够在线进行文字和图片的编辑等工作,通常会作为一个编辑部件嵌入其他的一些程序中。我们平时泡论坛,写博客,经常可以在网页中对我们的文字或图片进行简单的编辑。FCKeditor的应用十分广泛,但是漏洞也非常多。
现在来测试下FCKeditor最为普遍的上传漏洞。打开图片上传选项,然后选择准备好的JSP木马上传,发现被禁止上传图片文件格式以外的文件。不过它在上传文件判断的时候采用的是本地验证后缀名方式,所以攻击者可以通过代理工Burpsuitepro来进行上传,先修改JSP木马的后缀为JPG图片格式,比如把1.jsp改为2.jpg;然后Burpsuitepro抓包阻断上传的内容,把上传的2.jpg再改回1.jsp,从而绕过网站编辑器本地验证的过程,成功上传文件得到一个Webshell。
图 利用工具抓包修改上传内容
图 成功上传JSP木马,得到一个WEBshell
#p#
利用WEBshel获取服务器系统权限
利用WEBshell先查看下网站的配置文件,看是否有可以利用的资源。
图 网站配置文件
上图的配置文件可以看到网站的数据库服务器的地址及帐号密码,如果数据库服务器没有做安全防护配置,攻击者就可以直接通过获取到的信息链接到数据库服务器导出网站的全部数据。
现在再看看网站的账户权限,在WEBshell中执行cmd命令:whoami
得到的反馈结果是“nt authority\system”,现在可以判断网站本身的权限是服务器系统管理员权限,攻击者就可以执行添加系统用户的命令:
◆Net user hacker hacker /add 添加用户名是hacker密码也是hacker的普通用户
◆Net localgroup administrators hacker /add 讲hacker账户的权限提升为管理员权限
图 添加帐号hacker
图 提升hacker的权限
之前在搜集信息的时候就得知网站服务器开放了远程登录3389端口,现在攻击者就用刚刚添加的管理员hacker帐号登录服务器。
现在攻击者已经成功登录网站服务器。
#p#
恶意篡改网页
现在整个网站和服务器都在攻击者的掌控之中,攻击者可以随意删除、修改、增加网页,插入网页木马等。现在假设攻击者要令网站首页成为黑页。
黑页:一些计算机被入侵后,入侵者为了证明自己的存在,对网站主页(在服务器开放WEB服务的情况下) 进行改写,从而公布入侵者留下的信息,这样的网页通常称为黑页。
入侵者对网站主页的破坏,无疑会给网站带来经济、信誉等等方面的损失。
同时另一方面传播着入侵者留下的带有负面影响的信息或者病毒,严重影响网络安全。#p#
三、WEB应用安全与数据库安全的防护
前面我们已经了解了黑客是如何入侵窃取我们的数据并破坏网站的过程,所以我们对WEB应用安全的威胁应该采取积极防御并及时解决的态度。
首先我们要了解为什么网站会出现这么多的问题这么多的漏洞:由于某些开发人员犯了非常低级的编程错误,比如:应用ID只能被应用使用,而不能被单独的用户或是其它进程使用。但是开发人员不这么做,他们给予了应用程序更多的数据访问权限。这就类似于医生因没有洗手而传播了传染病,从而导致各种漏洞的出现。
我们必须接受已经存在的应用缺陷和漏洞。通过发挥数据库管理员的安全职责去阻止因为应用缺陷和漏洞所造成的不良后果。如果开发人员不重视应用与数据交互的安全性,坚持最小权限原则,数据库管理员则有权在这场互动中占取主动,不给开发人员全权委托,数据库管理员可以不允许那么多的交互被授权;为了阻止黑客的渗透攻击从不可避免的网络程序应用漏洞中占便宜,数据库管理员也有权进行其他有效的安全控制。并且数据库管理员应对数据库进行加密保护,如密码不能使用明文保存;对所有应用层和数据层通信的审计监控将有助于快速识别和解决问题以及准确地判断任何安全事件的范围,直到实现安全风险最小化的目标。
假如出现数据外泄事件(如2011年年底的CSDN等网站的用户数据信息泄密事件),责任也不止是在数据库管理员身上,开发人员也需要共同承担责任。其中一个非常重要的方面,开发人员能做的就是在用户能输入的地方最好过滤危险字符,这样可以防止黑客通过诸如SQL注入攻击获取到数据库的敏感信息。目前在各类行业网站上,各种WEB应用漏洞随处可见,可以被黑客们检测到(他们一般会用软件同时扫描数千个网站)。
开发人员在完成一套新的应用程序后应使用安全检测工具对其进行反复白盒测试,有条件的情况下可以请信息安全人员模拟黑客进行黑盒渗透测试,尽可能的发现应用程序的弱点并进行修补。如果想实现更完整的解决方案,更多有关的保护数据和数据库是应当实施源代码分析。这是一项冗长的处理过程,可以请安全服务提供商用专业的源码审计软件对应用程序代码进行详细的分析处理,这些工具会直接查找出更精确的缺陷结果。
同时应该与开发商或者安全厂商合作并确保能提供安全解决方案,这对于任何致力于部署网络应用数据库正常安全访问的用户都至关重要,WEB应用安全测试对于确保数据库的安全性有至关重要的作用。
一款好的工具可以有助于加快进度并且提供更好的检测结果和解决方案,以提供应用程序更好的的安全性,关键是进行反复评估以确保管理工作正常,对结果实施验证并加固,确保风险一经发现立即补救,并保证管理人员能够了解到相关问题的存在。#p#
黑盒测试
黑盒测试是一种把软件产品当成是一个黑箱的测试技术,这个黑箱有入口和出口,测试过程中只需要了解黑箱的输入和输出结果,不需要了解黑箱里面具体是怎样操作的。这当然很好,因为测试人员不用费神去理解软件里面的具体构成和原理,测试人员只需要像用户一样看待软件产品就行了。
例如,银行转账系统提供给用户转账的功能,则测试人员在使用黑盒测试方法时,不需要知道转账的具体实现代码是怎样工作的,只需要把自己当成用户,模拟尽可能多的转账情况来检查这个软件系统能否按要求正常实现转账功能即可。
如果只像用户使用和操作软件一样去测试软件黑盒测试可能存在一定的风险。例如,某个安全性要求比较高的软件系统,开发人员在设计程序时考虑到记录系统日志的必要性,把软件运行过程中的很多信息都记录到了客户端的系统日志中,甚至把客户端连接服务器端的数据库连接请求字符串也记录到了系统日志中,像下面的一段字符串:
"Data Source=192.168.100.99;Initial Catalog=AccountDB;User ID=sa;PassWord=123456;
那么按照黑盒测试的观点,这是程序内部的行为,用户不会直接操作数据库的连接行为,因此检查系统日志方面的测试是不会做的。这明显构成了一个Bug,尤其是对于安全性要求高的软件系统,因为它暴露了后台数据库账号信息。
有人把黑盒测试比喻成中医,做黑盒测试的测试人员应该像一位老中医一样,通过“望、闻、问、切”的方法,来判断程序是否“有病”。这比单纯的操作黑箱的方式进了一步,这种比喻给测试人员一个启示,不要只是简单地看和听,还要积极地去问,积极地去发现、搜索相关的信息。应该综合应用中医看病的各种“技术”和理念来达到找出软件“病症”的目的,具体作法如下:
“望”,观察软件的行为是否正常;
“闻”,检查输出的结果是否正确;
“问”,输入各种信息,结合“望”、“闻”来观察软件的响应程度;
“切”,像中医一样给软件“把脉”,敲击一下软件的某些“关节”。
#p#
白盒测试
如果把黑盒测试比喻成中医看病,那么白盒测试无疑就是西医看病了。测试人员采用各种仪器和设备对软件进行检测,甚至把软件摆上手术台解剖来看个究竟。白盒测试是一种以理解软件内部结构和程序运行方式为基础的软件测试技术,通常需要跟踪一个输入经过了哪些处理,这些处理方式是否正确。
在很多测试人员,尤其是初级测试人员看来,白盒测试是一种只有非常了解程序代码的高级测试人员才能做的测试。熟悉代码结构和功能实现的过程当然对测试有很大的帮助,但是从黑盒测试与白盒测试的区别可以看出,有些白盒测试是不需要测试人员懂得每一行程序代码的。
如果把软件看成一个黑箱,那么白盒测试的关键是给测试人员戴上一副X光透视眼镜,测试人员通过这副X光透视眼镜可以看清楚输入到黑箱中的数据是怎样流转的。
一些测试工具就像医院的检测仪器一样,可以帮助了解程序的内部运转过程。例如,对于一个与SQL Server数据库连接的软件系统,可以简单地把程序的作用理解为:把用户输入的数据通过SQL命令请求后台数据库,数据库把请求的数据返回给程序的界面层展示给用户。可以把SQL Server自带的工具事件探查器当成是一个检查SQL数据传输的精密仪器,它可以记录软件客户端与服务器数据库之间交互的一举一动,从而让测试人员可以洞悉软件究竟做了哪些动作。
在测试过程中,应该综合应用黑盒测试方法和白盒测试方法,按需要采用不同的技术组合。不要用黑盒测试方法和白盒测试方法来划分自己属于哪一类测试人员,一名优秀的测试人员应该懂得各种各样的测试技术和查找Bug的手段。
最后我们谈谈新的防火墙问题。到目前为止,我们都是侧重于预防措施。但在现实世界中,我们不可能总是改编程序和环境,所以我们必须采用其他技术措施。这就是为什么会产生新的防火墙。
防火墙用于应用程序或者监控流量的运行监控,也可以在执行运行时进行分析。防火墙可以找出攻击,并阻止尝试或修改的要求,来确保WEB服务器和数据库服务器的安全运行。
目前不光有WEB应用防火墙和网络防火墙能防范攻击者透过应用层和网络层的攻击;“数据库防火墙”也于这两年在不断的数据库泄密事件中出现在公众的视线里,国内称之为“数据库审计”产品,这些产品能给数据库提供实时的网络存储与访问的安全。
任何一个好的数据库安全策略都应包括监控和审计,以确保保护对象正常运行,并且运行在正确的位置上,这也是个非常耗时的过程。由于缺乏时间和工具,大多数用户对于数据库配置的检查往往也仅是抽查而已。
这里还需要指出的是目前多数人认为“数据库审计”等同于数据库安全,事实上,数据库安全远远不是数据库审计可以搞定的,数据库审计只是数据库安全的一个很小的方面,之所以有时候对等起来,一方面是由于市场宣传导致的误导,另一方面的确是这个部分的问题比较容易产品化/工具化,技术实现相对比较成熟。数据库安全应该包括:数据库资产管理、数据库配置加固、职责分离、特权用户控制、数据库弱点扫描和补丁管理、数据库加密、数据库审计。
最后,我们还是回到应用程序的安全以及与数据库之间的相互作用问题上。即我们必须要考虑到的问题是应用程序的安全以及与数据库之间的相互作用,尤其是对于当今流行的高度动态的和互动的网络应用程序而言。理解数据库与应用程序和系统环境之间的作用可以更加提升数据的安全性。