现在服务器上安装有TOMCAT,被扫描出安全漏洞,需要通过打补丁来解决,谁知道?
1、TOMCAT很少有漏洞,最近好像只有manager有漏洞,删了就是了
2、TOMCAT没有补丁的,只能下载新的版本覆盖原版本
3、覆盖前备份一下配置文件,覆盖后,把配置文件copy过去即可
漏洞扫描技术是一类重要的网络安全技术。它和防火墙、入侵检测系统互相配合,能够有效提高网络的安全性。通过对网络的扫描,网络管理员能了解网络的安全设置和运行的应用服务,及时发现安全漏洞,客观评估网络风险等级。网络管理员能根据扫描的结果更正网络安全漏洞和系统中的错误设置,在黑客攻击前进行防范。如果说防火墙和网络监视系统是被动的防御手段,那么安全扫描就是一种主动的防范措施,能有效避免黑客攻击行为,做到防患于未然。 1 定期的网络安全自我检测、评估
配备漏洞扫描系统,网络管理人员可以定期的进行网络安全检测服务,安全检测可帮助客户最大可能的消除安全隐患,尽可能早地发现安全漏洞并进行修补,有效的利用已有系统,优化资源,提高网络的运行效率。
2 安装新软件、启动新服务后的检查
由于漏洞和安全隐患的形式多种多样,安装新软件和启动新服务都有可能使原来隐藏的漏洞暴露出来,因此进行这些操作之后应该重新扫描系统,才能使安全得到保障。
3 网络建设和网络改造前后的安全规划评估和成效检验
网络建设者必须建立整体安全规划,以统领全局,高屋建瓴。在可以容忍的风险级别和可以接受的成本之间,取得恰当的平衡,在多种多样的安全产品和技术之间做出取舍。配备网络漏洞扫描/网络评估系统可以让您很方便的进行安全规划评估和成效检验
网络的安全系统建设方案和建设成效评估
4 网络承担重要任务前的安全性测试
网络承担重要任务前应该多采取主动防止出现事故的安全措施,从技术上和管理上加强对网络安全和信息安全的重视,形成立体防护,由被动修补变成主动的防范,最终把出现事故的概率降到最低。配备网络漏洞扫描/网络评估系统可以让您很方便的进行安全性测试。
5网络安全事故后的分析调查
网络安全事故后可以通过网络漏洞扫描/网络评估系统分析确定网络被攻击的漏洞所在,帮助弥补漏洞,尽可能多得提供资料方便调查攻击的来源。
6重大网络安全事件前的准备
重大网络安全事件前网络漏洞扫描/网络评估系统能够帮助用户及时的找出网络中存在的隐患和漏洞,帮助用户及时的弥补漏洞。
7公安、保密部门组织的安全性检查
互联网的安全主要分为网络运行安全和信息安全两部分。网络运行的安全主要包括以ChinaNet、ChinaGBN、CNCnet等10大计算机信息系统的运行安全和其它专网的运行安全;信息安全包括接入Internet的计算机、服务器、工作站等用来进行采集、加工、存储、传输、检索处理的人机系统的安全。网络漏洞扫描/网络评估系统能够积极的配合公安、保密部门组织的安全性检查。 依据扫描执行方式不同,漏洞扫描产品主要分为两类:漏洞扫描不仅仅是以下三类,还有针对WEB应用、中间件等
1针对网络的扫描器
2针对主机的扫描器
3针对数据库的扫描器
基于网络的扫描器就是通过网络来扫描远程计算机中的漏洞;而基于主机的扫描器则是在目标系统上安装了一个代理(Agent)或者是服务(Services),以便能够访问所有的文件与进程,这也使得基于主机的扫描器能够扫描到更多的漏洞。二者相比,基于网络的漏洞扫描器的价格相对来说比较便宜;在操作过程中,不需要涉及到目标系统的管理员,在检测过程中不需要在目标系统上安装任何东西;维护简便。
主流数据库的自身漏洞逐步暴露,数量庞大;仅CVE公布的Oracle漏洞数已达1100多个;数据库漏扫可以检测出数据库的DBMS漏洞、缺省配置、权限提升漏洞、缓冲区溢出、补丁未升级等自身漏洞。 1 主机扫描:
确定在目标网络上的主机是否在线。
2 端口扫描:
发现远程主机开放的端口以及服务。
3 OS识别技术:
根据信息和协议栈判别操作系统。
4 漏洞检测数据采集技术:
按照网络、系统、数据库进行扫描。
5智能端口识别、多重服务检测、安全优化扫描、系统渗透扫描
6多种数据库自动化检查技术,数据库实例发现技术;
7多种DBMS的密码生成技术,提供口令爆破库,实现快速的弱口令检测方法。
零、前言
渗透测试在未得到被测试方授权之前依据某些地区法律规定是违法行为。 这里我们提供的所有渗透测试方法均为(假设为)合法的评估服务,也就是通常所说的道德黑客行为(Ethical hacking),因此我们这里的所有读者应当都是Ethical Hackers,如果您还不是,那么我希望您到过这里后会成为他们中的一员 ;)
这里,我还想对大家说一些话:渗透测试重在实践,您需要一颗永不言败的心和一个有着活跃思维的大脑。不是说您将这一份文档COPY到您网站上或者保存到本地电脑您就会了,即使您将它打印出来沾点辣椒酱吃了也不行,您一定要根据文档一步一步练习才行。而且测试重在用脑,千万别拿上一两个本文中提到的工具一阵乱搞,我敢保证:互联网的安全不为因为这样而更安全。祝您好运。。。
一、简介
什么叫渗透测试?
渗透测试最简单直接的解释就是:完全站在攻击者角度对目标系统进行的安全性测试过程。
进行渗透测试的目的?
了解当前系统的安全性、了解攻击者可能利用的途径。它能够让管理人员非常直观的了解当前系统所面临的问题。为什么说叫直观呢?就像Mitnick书里面提到的那样,安全管理(在这里我们改一下,改成安全评估工作)需要做到面面俱到才算成功,而一位黑客(渗透测试)只要能通过一点进入系统进行破坏,他就算是很成功的了。
渗透测试是否等同于风险评估?
不是,你可以暂时理解成渗透测试属于风险评估的一部分。事实上,风险评估远比渗透测试复杂的多,它除渗透测试外还要加上资产识别,风险分析,除此之外,也还包括了人工审查以及后期的优化部分(可选)。
已经进行了安全审查,还需要渗透测试吗?
如果我对您说:嘿,中国的现有太空理论技术通过计算机演算已经能够证明中国完全有能力实现宇航员太空漫步了,没必要再发射神8了。您能接受吗?
渗透测试是否就是黑盒测试?
否,很多技术人员对这个问题都存在这个错误的理解。渗透测试不只是要模拟外部黑客的入侵,同时,防止内部人员的有意识(无意识)攻击也是很有必要的。这时,安全测试人员可以被告之包括代码片段来内的有关于系统的一些信息。这时,它就满足灰盒甚至白盒测试。
渗透测试涉及哪些内容
技术层面主要包括网络设备,主机,数据库,应用系统。另外可以考虑加入社会工程学(入侵的艺术/THE ART OF INTRUSION)。
渗透测试有哪些不足之处?
主要是投入高,风险高。而且必须是专业的Ethical Hackers才能相信输出的最终结果。
你说的那么好,为什么渗透测试工作在中国开展的不是很火热呢?
我只能说:会的,一定会的。渗透测试的关键在于没法证明你的测试结果就是完善的。用户不知道花了钱证明了系统有问题以后,自己的安全等级到了一个什么程序。但是很显然,用户是相信一个专业且经验丰富的安全团队的,这个在中国问题比较严重。在我接触了一些大型的安全公司进行的一些渗透测试过程来看,测试人员的水平是对不住开的那些价格的,而且从测试过程到结果报表上来看也是不负责的。我估计在三年以后,这种情况会有所改观,到时一方面安全人员的技术力量有很大程度的改观,另一方面各企业对渗透测试会有一个比较深刻的理解,也会将其做为一种IT审计的方式加入到开发流程中去。渗透测试的专业化、商业化会越来越成熟。
二、制定实施方案
实施方案应当由测试方与客户之间进行沟通协商。一开始测试方提供一份简单的问卷调查了解客户对测试的基本接收情况。内容包括但不限于如下:
目标系统介绍、重点保护对象及特性。
是否允许数据破坏?
是否允许阻断业务正常运行?
测试之前是否应当知会相关部门接口人?
接入方式?外网和内网?
测试是发现问题就算成功,还是尽可能的发现多的问题?
渗透过程是否需要考虑社会工程?
。。。
在得到客户反馈后,由测试方书写实施方案初稿并提交给客户,由客户进行审核。在审核完成后,客户应当对测试方进行书面委托授权。这里,两部分文档分别应当包含如下内容:
实施方案部分:
书面委托授权部分:
三、具体操作过程
1、信息收集过程
网络信息收集:
在这一部还不会直接对被测目标进行扫描,应当先从网络上搜索一些相关信息,包括Google Hacking, Whois查询, DNS等信息(如果考虑进行社会工程学的话,这里还可以相应从邮件列表/新闻组中获取目标系统中一些边缘信息如内部员工帐号组成,身份识别方式,邮件联系地址等)。
1使用whois查询目标域名的DNS服务器
2nslookup
>set type=all
><domain>
>server <ns server>
>set q=all
>ls -d <domain>
涉及的工具包括:Google,Demon,webhostinginfo,Apollo,Athena,GHDBXML,netcraft,seologs 除此之外,我想特别提醒一下使用Googlebot/21绕过一些文件的获取限制。
Google hacking 中常用的一些语法描述
1搜索指定站点关键字site。你可以搜索具体的站点如site:wwwnosecorg。使用site:nosecorg可以搜索该域名下的所有子域名的页面。甚至可以使用site:orgcn来搜索中国政府部门的网站。
2搜索在URL网址中的关键字inurl。比如你想搜索带参数的站点,你可以尝试用inurl:aspid=
3搜索在网页标题中的关键字intitle。如果你想搜索一些登陆后台,你可以尝试使用intitle:"admin login"
目标系统信息收集:
通过上面一步,我们应当可以简单的描绘出目标系统的网络结构,如公司网络所在区域,子公司IP地址分布,***接入地址等。这里特别要注意一些比较偏门的HOST名称地址,如一些backup开头或者temp开关的域名很可能就是一台备份服务器,其安全性很可能做的不够。
从获取的地址列表中进行系统判断,了解其组织架构及操作系统使用情况。最常用的方法的是目标所有IP网段扫描。
端口/服务信息收集:
这一部分已经可以开始直接的扫描操作,涉及的工具包括:nmap,thc-amap
1我最常使用的参数
nmap -sS -p1-10000 -n -P0 -oX filenamexml --open -T5 <ip address>
应用信息收集:httprint,SIPSCAN,smap
这里有必要将SNMP拿出来单独说一下,因为目前许多运营商、大型企业内部网络的维护台通过SNMP进行数据传输,大部分情况是使用了默认口令的,撑死改了private口令。这样,攻击者可以通过它收集到很多有效信息。snmp-gui,HiliSoft MIB Browser,mibsearch,net-snmp都是一些很好的资源。
2、漏洞扫描
这一步主要针对具体系统目标进行。如通过第一步的信息收集,已经得到了目标系统的IP地址分布及对应的域名,并且我们已经通过一些分析过滤出少许的几个攻击目标,这时,我们就可以针对它们进行有针对性的漏洞扫描。这里有几个方面可以进行:
针对系统层面的工具有:ISS, Nessus, SSS, Retina, 天镜, 极光
针对WEB应用层面的工具有:AppScan, Acunetix Web Vulnerability Scanner, WebInspect, Nstalker
针对数据库的工具有:ShadowDatabaseScanner, NGSSQuirreL
针对VOIP方面的工具有:PROTOS c07 sip(在测试中直接用这个工具轰等于找死)以及c07 h225, Sivus, sipsak等。
事实上,每个渗透测试团队或多或少都会有自己的测试工具包,在漏洞扫描这一块针对具体应用的工具也比较个性化。
3、漏洞利用
有时候,通过服务/应用扫描后,我们可以跳过漏洞扫描部分,直接到漏洞利用。因为很多情况下我们根据目标服务/应用的版本就可以到一些安全网站上获取针对该目标系统的漏洞利用代码,如milw0rm, securityfocus,packetstormsecurity等网站,上面都对应有搜索模块。实在没有,我们也可以尝试在GOOGLE上搜索“应用名称 exploit”、“应用名称 vulnerability”等关键字。
当然,大部分情况下你都可以不这么麻烦,网络中有一些工具可供我们使用,最著名的当属metasploit了,它是一个开源免费的漏洞利用攻击平台。其他的多说无益,您就看它从榜上无名到冲进前五(top 100)这一点来说,也能大概了解到它的威力了。除此之外,如果您(您们公司)有足够的moeny用于购买商用软件的话,CORE IMPACT是相当值得考虑的,虽然说价格很高,但是它却是被业界公认在渗透测试方面的泰山北斗,基本上测试全自动。如果您觉得还是接受不了,那么您可以去购买CANVAS,据说有不少0DAY,不过它跟metasploit一样,是需要手动进行测试的。最后还有一个需要提及一下的Exploitation_Framework,它相当于一个漏洞利用代码管理工具,方便进行不同语言,不同平台的利用代码收集,把它也放在这里是因为它本身也维护了一个exploit库,大家参考着也能使用。
上面提到的是针对系统进行的,在针对WEB方面,注入工具有NBSI, OWASP SQLiX, SQL Power Injector, sqlDumper, sqlninja, sqlmap, Sqlbftools, priamos, ISR-sqlget等等。
在针对数据库方面的工具有:
数据库 工具列表 Oracle(1521端口): 目前主要存在以下方面的安全问题:
1、TNS监听程序攻击(sid信息泄露,停止服务等)
2、默认账号(default password list)
3、SQL INJECTION(这个与传统的意思还不太一样)
4、缓冲区溢出,现在比较少了。 thc-orakel, tnscmd, oscanner, Getsids, TNSLSNR, lsnrcheck, OAT, Checkpwd, orabf MS Sql Server(1433、1434端口) Mysql(3306端口) DB2(523、50000、50001、50002、50003端口) db2utils Informix(1526、1528端口)
在针对Web服务器方面的工具有:
WEB服务器 工具列表 IIS IISPUTSCANNER Tomcat 想起/admin和/manager管理目录了吗?另外,目录列表也是Tomcat服务器中最常见的问题。比如5版本中的http://127001/;indexjsp
http://wwwexamplecom/foo/"/manager/html
http://wwwexamplecom:8080/examples/servlets/servlet/CookieExamplecookiename=HAHA&cookievalue=%5C%22FOO%3B+Expires%3DThu%2C+1+Jan+2009+00%3A00%3A01+UTC%3B+Path%3D%2F%3B
http://wwwexamplecom:8080/servlets-examples/servlet/CookieExamplecookiename=BLOCKER&cookievalue=%5C%22A%3D%27%3B+Expires%3DThu%2C+1+Jan+2009+00%3A00%3A01+UTC%3B+Path%3D%2Fservlets-examples%2Fservlet+%3B JBOSS jboss的漏洞很少,老版本中8083端口有%符号的漏洞:
GET % HTTP/10可以获取物理路径信息,
GET %serverpolicy HTTP/10可以获取安全策略配置文档。
你也可以直接访问GET %org/xxx/libclass来获取编译好的java程序,再使用一些反编译工具还原源代码。 Apache Resin http://victim/C:%5C/
http://victim/resin-doc/viewfile/file=indexjsp
http://victim/resin-doc/viewfile/contextpath=/otherwebapp&servletpath=&file=WEB-INF/webxml
http://victim/resin-doc/viewfile/contextpath=/&servletpath=&file=WEB-INF/classes/com/webapp/app/targetclass
http://victim/[path]/[device][extension]
http://victim/%20"web-inf
http://victim/%20
http://victim/[path]/%20xtp WebLogic
Web安全测试主要围绕几块进行:
Information Gathering:也就是一般的信息泄漏,包括异常情况下的路径泄漏、文件归档查找等
Business logic testing:业务逻辑处理攻击,很多情况下用于进行业务绕过或者欺骗等等
Authentication Testing:有无验证码、有无次数限制等,总之就是看能不能暴力破解或者说容不容易通过认证,比较直接的就是“默认口令”或者弱口令了
Session Management Testing:会话管理攻击在COOKIE携带认证信息时最有效
Data Validation Testing:数据验证最好理解了,就是SQL Injection和Cross Site Script等等
目前网上能够找到许多能够用于进行Web测试的工具,根据不同的功能分主要有:
枚举(Enumeration): DirBuster, http-dir-enum, wget
基于代理测试类工具:paros, webscarab, Burp Suite
针对WebService测试的部分有一些尚不是很成熟的工具,如:wsbang,wschess,wsmap,wsdigger,wsfuzzer
这一部分值得一提的是,很多渗透测试团队都有着自己的测试工具甚至是0DAY代码,最常见的是SQL注入工具,现网开发的注入工具(如NBSI等)目前都是针对中小企业或者是个人站点/数据库进行的,针对大型目标系统使用的一些相对比较偏门的数据库系统(如INFORMIX,DB2)等,基本上还不涉及或者说还不够深入。这时各渗透测试团队就开发了满足自身使用习惯的测试工具。
在针对无线环境的攻击有:WifiZoo
4、权限提升
在前面的一些工作中,你或许已经得到了一些控制权限,但是对于进一步攻击来说却还是不够。例如:你可能很容易的能够获取Oracle数据库的访问权限,或者是得到了UNIX(AIX,HP-UX,SUNOS)的一个基本账号权限,但是当你想进行进一步的渗透测试的时候问题就来了。你发现你没有足够的权限打开一些密码存储文件、你没有办法安装一个SNIFFER、你甚至没有权限执行一些很基本的命令。这时候你自然而然的就会想到权限提升这个途径了。
目前一些企业对于补丁管理是存在很大一部分问题的,他们可能压根就没有想过对一些服务器或者应用进行补丁更新,或者是延时更新。这时候就是渗透测试人员的好机会了。经验之谈:有一般权限的Oracle账号或者AIX账号基本上等于root,因为这就是现实生活。
5、密码破解
有时候,目标系统任何方面的配置都是无懈可击的,但是并不是说就完全没办法进入。最简单的说,一个缺少密码完全策略的论证系统就等于你安装了一个不能关闭的防盗门。很多情况下,一些安全技术研究人员对此不屑一顾,但是无数次的安全事故结果证明,往往破坏力最大的攻击起源于最小的弱点,例如弱口令、目录列表、SQL注入绕过论证等等。所以说,对于一些专门的安全技术研究人员来说,这一块意义不大,但是对于一个ethical hacker来说,这一步骤是有必要而且绝大部分情况下是必须的。;)
目前比较好的网络密码暴力破解工具有:thc-hydra,brutus
>hydraexe -L userstxt -P passwordstxt -o testtxt -s 2121 wwwheimiancom ftp
目前网络中有一种资源被利用的很广泛,那就是rainbow table技术,说白了也就是一个HASH对应表,有一些网站提供了该种服务,对外宣称存储空间大于多少G,像rainbowcrack更是对外宣称其数据量已经大于13T。
针对此种方式对外提供在线服务的有:
网址 描述 rainbowcrack 里面对应了多种加密算法的HASH。 http://gdataonlinecom/seekhashphp http://wwwmilw0rmcom/cracker/infophp http://wwwhashcheckercom/_sls=search_hash http://bokehmancom/cracker/ http://passcrackingru/ http://wwwmd5orgcn http://wwwcmd5com/ 数据量全球第一,如果本站无法破解,那么你只能去拜春哥
当然,有些单机破解软件还是必不可少的:Ophcrack,rainbowcrack(国人开发,赞一个),cain,L0phtCrack(破解Windows密码),John the Ripper(破解UNIX/LINUX)密码,当然,还少不了一个FindPass
针对网络设备的一些默认帐号,你可以查询http://wwwrouterpasswordscom/和http://wwwphenoelit-usorg/dpl/dplhtml
在渗透测试过程中,一旦有机会接触一些OFFICE文档,且被加了密的话,那么,rixler是您马上要去的地方,他们提供的OFFICE密码套件能在瞬间打开OFFICE文档(2007中我没有试过,大家有机会测试的话请给我发一份测试结果说明,谢谢)。看来微软有理由来个补丁什么的了。对于企业来说,您可以考虑使用铁卷或者RMS了。
6、日志清除
It is not necessary actually
7、进一步渗透
攻入了DMZ区一般情况下我们也不会获取多少用价值的信息。为了进一步巩固战果,我们需要进行进一步的内网渗透。到这一步就真的算是无所不用其及。最常用且最有效的方式就是Sniff抓包(可以加上ARP欺骗)。当然,最简单的你可以翻翻已入侵机器上的一些文件,很可能就包含了你需要的一些连接帐号。比如说你入侵了一台Web服务器,那么绝大部分情况下你可以在页面的代码或者某个配置文件中找到连接数据库的帐号。你也可以打开一些日志文件看一看。
除此之外,你可以直接回到第二步漏洞扫描来进行。
四、生成报告
报告中应当包含:
薄弱点列表清单(按照严重等级排序)
薄弱点详细描述(利用方法)
解决方法建议
参与人员/测试时间/内网/外网
五、测试过程中的风险及规避
在测试过程中无可避免的可能会发生很多可预见和不可预见的风险,测试方必须提供规避措施以免对系统造成重大的影响。以下一些可供参考:
1 不执行任何可能引起业务中断的攻击(包括资源耗竭型DoS,畸形报文攻击,数据破坏)。
2 测试验证时间放在业务量最小的时间进行。
3 测试执行前确保相关数据进行备份。
4 所有测试在执行前和维护人员进行沟通确认。
5 在测试过程中出现异常情况时立即停止测试并及时恢复系统。
6 对原始业务系统进行一个完全的镜像环境,在镜像环境上进行渗透测试。
渗透测试会用到的工具有很多,为大家列举几个:
1、Invicti Pro
invicti是一种自动化但完全可配置的web应用程序安全扫描程序,使您能够扫描网站、web应用程序和web服务,并识别安全漏洞。
2、BurpSuite
与web浏览器配合使用,可发现给定APP的功能和安全问题,是发起定制攻击的基础。目前,免费版本功能很有限,但付费版本提供全面的网络爬取和扫描功能、多攻击点、基于范围的配置。关于此工具最常见的评价是,它可用于自动化重复功能,提供app与服务器互动的良好视图。
3、Nmap
Nmap以隐秘的手法,避开闯入检测系统的监视,并尽可能不影响目标系统的日常操作。同时它还提供防火墙规避和欺骗功能。
4、Metasploit Pro
Metasploit是一款开源的安全漏洞检测工具,可以帮助安全和IT专业人士识别安全性问题,验证漏洞的缓解措施,并管理专家驱动的安全性进行评估,提供真正的安全风险情报。这些功能包括智能开发,代码审计,web应用程序扫描,社会工程。
5、Cobalt Strike
Cobalt Strike是一款GUI的框架式渗透工具,集成了端口转发、服务扫描,自动化溢出,多模式端口监听,win exe木马生成,win
dll木马生成,Java木马生成,office宏病毒生成,木马捆绑;钓鱼攻击包括:站点克隆,目标信息获取,Java执行,浏览器自动攻击等等。
6、AWVS
AWVS,全称Acunetix Web Vulnerability
Scanner,是一款知名的网络漏洞扫描工具,它通过网络爬虫测试你的网站安全,检测流行安全漏洞。
7、Fortify
Fortify是一个静态的、白盒的软件源代码安全测试工具。它通过内置的五大主要分析引擎:数据流、语义、结构、控制流、配置流等对应用软件的源代码进行静态的分析,通过与软件安全漏洞规则集进行匹配、查找,从而将源代码中存在的安全漏洞扫描出来,并可导出报告。
8、OWASP ZAP
是一款web
application集成渗透测试和漏洞工具,是免费开源跨平台的。OWASP_ZPA支持截断代理,主动、被动扫描,Fuzzy,暴力破解并且提供API。
9、DarkAngel
DarkAngel是一款全自动白帽漏洞扫描器,从hackerone、bugcrowd资产监听到漏洞报告生成、企业微信通知。
10、fscan
一款内网综合扫描工具,方便一键自动化、全方位漏扫扫描。支持主机存活探测、端口扫描、常见服务的爆破、ms17010、redis批量写公钥、计划任务反弹shell、读取win网卡信息、web指纹识别、web漏洞扫描、netbios探测、域控识别等功能。
瑞星杀毒 有漏洞扫描的
漏洞扫描器是一种自动检测远程或本地主机安全性弱点的程序。通过使用漏洞扫描器,系统管理员能够发现所维护的Web服务器的各种TCP端口的分配、提供的服务、Web服务软件版 本和这些服务及软件呈现在Internet上的安全漏洞。从而在计算机网络系统安全保卫战中做到“有的放矢”,及时修补漏洞,构筑坚固的安全长城。
1.引言
随着科学技术的飞速发展,21世纪的地球人已经生活在信息时代。20世纪人类两大科学技术成果--计算机技术和网络技术,均已深入到人类社会的各个领域,Internet把"地球村"的居民紧密联系在一起,"天涯若比邻"已然成为现实。互联网之所以能这样迅速蔓延,被世人接受,是因为它具备特有的信息资源。无论对商人、学者,还是对社会生活中的普通老百姓,只要你进入网络的世界,就能找到其隐藏的奥妙,就能得到你所需要的价值,而这其中种种的人类社会活动,它们的影响又是相互的。近年来Internet的迅速发展,给人们的日常生活带来了全新的感受,"网络生存"已经成为时尚,同时人类社会诸如政治、科研、经济、军事等各种活动对信息网络的依赖程度已经越来越强,"网络经济"时代已初露端倪。
然而,网络技术的发展在给我们带来便利的同时也带来了巨大的安全隐患,尤其是Internet和Intranet的飞速发展对网络安全提出了前所未有的挑战。技术是一把双刃剑,不法分子试图不断利用新的技术伺机攻入他人的网络系统,而肩负保护网络安全重任的系统管理员则要利用最新的网络技术来防范各种各样的非法网络入中形�J率狄丫�砻鳎�孀呕チ��娜涨髌占埃�诨チ��系姆缸锘疃�苍嚼丛蕉啵�乇鹗荌nternet大范围的开放以及金融领域网络的接入,使得越来越多的系统遭到入侵攻击的威胁。但是,不管入侵者是从外部还是从内部攻击某一网络系统,攻击机会都是通过挖掘操作系统和应用服务程序的弱点或者缺陷来实现的,1988年的"蠕虫事件" 就是一个很好的实例。目前,对付破坏系统企图的理想方法是建立一个完全安全的没有漏洞的系统。但从实际上看,这根本是不可能的。美国Wisconsin大学的Miller给出一份有关现今流行操作系统和应用程序的研究报告,指出软件中不可能没有漏洞和缺陷。因此,一个实用的方法是,建立比较容易实现的安全系统,同时按照一定的安全策略建立相应的安全辅助系统,漏洞扫描器就是这样一类系统。就目前系统的安全状况而言,系统中存在着一定的漏洞,因此也就存在着潜在的安全威胁,但是,如果我们能够根据具体的应用环境,尽可能地早地通过网络扫描来发现这些漏洞,并及时采取适当的处理措施进行修补,就可以有效地阻止入侵事件的发生。因此,网络扫描非常重要和必要。
.漏洞扫描器概述
漏洞扫描器是一种自动检测远程或本地主机安全性弱点的程序。通过使用漏洞扫描器,系统管理员能够发现所维护的Web服务器的各种TCP端口的分配、提供的服务、Web服务软件版本和这些服务及软件呈现在Internet上的安全漏洞。从而在计算机网络系统安全保卫战中做到"有的放矢",及时修补漏洞,构筑坚固的安全长城。
按常规标准,可以将漏洞扫描器分为两种类型:主机漏洞扫描器(Host Scanner)和网络漏洞扫描器(Network Scanner)。主机漏洞扫描器是指在系统本地运行检测系统漏洞的程序,如著名的COPS、tripewire、tiger等自由软件。网络漏洞扫描器是指基于Internet远程检测目标网络和主机系统漏洞的程序,如Satan、ISS Internet Scanner等。
本文针对目前TCP/IP网络和各种网络主机的安全现状,设计并实现了一个网络漏洞扫描器,在实际使用中取得了很好的效果。
3.网络漏洞扫描器的设计
31 网络漏洞扫描器的总体结构
我们设计的漏洞扫描器基于浏览器/服务器(B/S)结构,整个扫描器实现于一个Linux、UNIX和Windows操作系统相混合的TCP/IP网络环境中,其总体结构如图1所示,其中运行Linux的工作站作为发起扫描的主机(称为扫描主机),在其上运行扫描模块和控制平台,并建有漏洞库。扫描模块直接从扫描主机上通过网络以其他机器为对象(称为目标主机,其上运行的操作系统可以是UNIX、Linux、Windows 2000/NT等)进行扫描。而控制平台则提供一个人机交互的界面。
32 网络漏洞扫描器的扫描原理和工作原理
网络漏洞扫描器通过远程检测目标主机TCP/IP不同端口的服务,记录目标给予的回答。通过这种方法,可以搜集到很多目标主机的各种信息(例如:是否能用匿名登陆,是否有可写的FTP目录,是否能用Telnet,httpd是否是用root在运行)。在获得目标主机TCP/IP端口和其对应的网络访问服务的相关信息后,与网络漏洞扫描系统提供的漏洞库进行匹配,如果满足匹配条件,则视为漏洞存在。此外,通过模拟黑客的进攻手法,对目标主机系统进行攻击性的安全漏洞扫描,如测试弱势口令等,也是扫描模块的实现方法之一。如果模拟攻击成功,则视为漏洞存在。
在匹配原理上,该网络漏洞扫描器采用的是基于规则的匹配技术,即根据安全专家对网络系统安全漏洞、黑客攻击案例的分析和系统管理员关于网络系统安全配置的实际经验,形成一套标准的系统漏洞库,然后再在此基础之上构成相应的匹配规则,由程序自动进行系统漏洞扫描的分析工作。
所谓基于规则是基于一套由专家经验事先定义的规则的匹配系统。例如,在对TCP 80端口的扫描中,如果发现/cgi-bin/phf或/cgi-bin/Countcgi,根据专家经验以及CGI程序的共享性和标准化,可以推知该WWW服务存在两个CGI漏洞。同时应当说明的是,基于规则的匹配系统也有其局限性,因为作为这类系统的基础的推理规则一般都是根据已知的安全漏洞进行安排和策划的,而对网络系统的很多危险的威胁是来自未知的安全漏洞,这一点和PC杀毒很相似。
实现一个基于规则的匹配系统本质上是一个知识工程问题,而且其功能应当能够随着经验的积累而利用,其自学习能力能够进行规则的扩充和修正,即是系统漏洞库的扩充和修正。当然这样的能力目前还需要在专家的指导和参与下才能实现。但是,也应该看到,受漏洞库覆盖范围的限制,部分系统漏洞也可能不会触发任何一个规则,从而不被检测到。
整个网络扫描器的工作原理是:当用户通过控制平台发出了扫描命令之后,控制平台即向扫描模块发出相应的扫描请求,扫描模块在接到请求之后立即启动相应的子功能模块,对被扫描主机进行扫描。通过对从被扫描主机返回的信息进行分析判断,扫描模块将扫描结果返回给控制平台,再由控制平台最终呈现给用户。
33 CGI的应用
整个漏洞扫描系统利用了浏览器/服务器(B/S)架构,目的是为了消除由于操作系统平台的不同而给程序的运行带来的差异,还为了能利用HTML提供的一系列功能,如超文本功能、灵活的版面编辑功能来构建一个美观灵活的人机接口。在该网络漏洞扫描器的实现中,我们通过CGI技术来连接前台的浏览器和后台的扫描程序。
CGI是通用网关接口,作为一种规范,它允许Web服务器执行其他程序并将它们的输出以相应的方式储存在发给浏览器的文本、图形和音频中。CGI程序能够提供从简单的表单处理到复杂的数据库查询等各种功能,这大大增强了Web的动态处理能力和交互能力。服务器和CGI程序相结合能够扩充和自定义World Wide Web的能力。
CGI过程的主要步骤如下:
浏览器将URL的第一部分解码并联系服务器;
浏览器将URL的其余部分提供给服务器;
服务器将URL转换成路径和文件名;
服务器意识到URL指向一个程序,而非一个静态的文件;
服务器准备环境变量,执行CGI程序;
程序执行,读取环境变量和STDIN;
程序为将来的内容向STDOUT发送正确的MIME头信息;
程序向STDOUT发送其输出的其余部分,然后终止;
服务器发现程序终止,关闭与浏览器的连接;
浏览器从程序中显示输出。
STDIN和STDOUT是标准输入和标准输出的助记符。对Web服务器,STDOUT送至CGI程序的STDIN,程序的STDOUT反馈回服务器的STDIN。在激活具有POST方法的CGI程序时,服务器使用它的STDOUT;对于GET方法,服务器不使用STDOUT。两种情况下,服务器都要求CGI程序通过STDOUT返回信息。在我们的程序中选择了POST方法。
漏洞扫描有以下四种检测技术:
1基于应用的检测技术。它采用被动的、非破坏性的办法检查应用软件包的设置,发现安全漏洞。
2基于主机的检测技术。它采用被动的、非破坏性的办法对系统进行检测。通常,它涉及到系统的内核、文件的属性、操作系统的补丁等。这种技术还包括口令解密、把一些简单的口令剔除。因此,这种技术可以非常准确地定位系统的问题,发现系统的漏洞。它的缺点是与平台相关,升级复杂。
3基于目标的漏洞检测技术。它采用被动的、非破坏性的办法检查系统属性和文件属性,如数据库、注册号等。通过消息文摘算法,对文件的加密数进行检验。这种技术的实现是运行在一个闭环上,不断地处理文件、系统目标、系统目标属性,然后产生检验数,把这些检验数同原来的检验数相比较。一旦发现改变就通知管理员。
4基于网络的检测技术。它采用积极的、非破坏性的办法来检验系统是否有可能被攻击崩溃。它利用了一系列的脚本模拟对系统进行攻击的行为,然后对结果进行分析。它还针对已知的网络漏洞进行检验。网络检测技术常被用来进行穿透实验和安全审记。这种技术可以发现一系列平台的漏洞,也容易安装。但是,它可能会影响网络的性能。
网络漏洞扫描
在上述四种方式当中,网络漏洞扫描最为适合我们的Web信息系统的风险评估工作,其扫描原理和工作原理为:通过远程检测目标主机TCP/IP不同端口的服务,记录目标的回答。通过这种方法,可以搜集到很多目标主机的各种信息(例如:是否能用匿名登录,是否有可写的FTP目录,是否能用Telnet,httpd是否是用root在运行)。
在获得目标主机TCP/IP端口和其对应的网络访问服务的相关信息后,与网络漏洞扫描系统提供的漏洞库进行匹配,如果满足匹配条件,则视为漏洞存在。此外,通过模拟黑客的进攻手法,对目标主机系统进行攻击性的安全漏洞扫描,如测试弱势口令等,也是扫描模块的实现方法之一。如果模拟攻击成功,则视为漏洞存在。
在匹配原理上,网络漏洞扫描器采用的是基于规则的匹配技术,即根据安全专家对网络系统安全漏洞、黑客攻击案例的分析和系统管理员关于网络系统安全配置的实际经验,形成一套标准的系统漏洞库,然后再在此基础之上构成相应的匹配规则,由程序自动进行系统漏洞扫描的分析工作。
所谓基于规则是基于一套由专家经验事先定义的规则的匹配系统。例如,在对TCP80端口的扫描中,如果发现/cgi-bin/phf/cgi-bin/Countcgi,根据专家经验以及CGI程序的共享性和标准化,可以推知该WWW服务存在两个CGI漏洞。同时应当说明的是,基于规则的匹配系统有其局限性,因为作为这类系统的基础的推理规则一般都是根据已知的安全漏洞进行安排和策划的,而对网络系统的很多危险的威胁是来自未知的安全漏洞,这一点和PC杀毒很相似。
这种漏洞扫描器是基于浏览器/服务器(B/S)结构。它的工作原理是:当用户通过控制平台发出了扫描命令之后,控制平台即向扫描模块发出相应的扫描请求,扫描模块在接到请求之后立即启动相应的子功能模块,对被扫描主机进行扫描。通过分析被扫描主机返回的信息进行判断,扫描模块将扫描结果返回给控制平台,再由控制平台最终呈现给用户。
另一种结构的扫描器是采用插件程序结构。可以针对某一具体漏洞,编写对应的外部测试脚本。通过调用服务检测插件,检测目标主机TCP/IP不同端口的服务,并将结果保存在信息库中,然后调用相应的插件程序,向远程主机发送构造好的数据,检测结果同样保存于信息库,以给其他的脚本运行提供所需的信息,这样可提高检测效率。如,在针对某FTP服务的攻击中,可以首先查看服务检测插件的返回结果,只有在确认目标主机服务器开启FTP服务时,对应的针对某FTP服务的攻击脚本才能被执行。采用这种插件结构的扫描器,可以让任何人构造自己的攻击测试脚本,而不用去了解太多扫描器的原理。这种扫描器也可以用做模拟黑客攻击的平台。采用这种结构的扫描器具有很强的生命力,如着名的Nessus就是采用这种结构。这种网络漏洞扫描器的结构如图2所示,它是基于客户端/服务器(C/S)结构,其中客户端主要设置服务器端的扫描参数及收集扫描信息。具体扫描工作由服务器来完成。
网站漏洞扫描工作分几个层面进行的,分别是:
1、在线添加了域名之后,提交漏洞扫描进行扫描。
2、扫描后发现的漏洞详细信息查看,修复以及加固建议分析根据系统检测的结果,分析系统服务器存在的威胁情况。
3、扫描后的日志汇总,通过多维度的大数据安全漏洞库对比分析,完整的扫描报告分析。
(本回答由网堤安全---网站漏洞扫描--提供)
随着网站业务所承载内容的日益增多且重要性日益增强,网站本身的价值也越来越大,随之由网站漏洞带来的安全性问题也愈发严峻。新开通网站、新增专栏的准入质量评估,网站系统日常运行状况的检查预防和风险掌控,这些已成为各行业每年安全大检查中的关键要素。作为具体落实定期检查工作的安全人员,也急需选择一款优秀的网站扫描产品进行高效彻底的Web脆弱性评估检查,而如何选择一款真正实用的产品成为一个比较纠结的难题。
常见Web扫描方案的优劣势
目前常见的支持Web扫描解决方案的产品有很多,大家比较熟悉的有集成Web扫描模块的多合一系统扫描器,网上可免费下载的开源扫描器软件以及近几年刚崭露头角的独立Web扫描器产品等,都可以进行一定程度的Web安全扫描和漏洞发现。那么面对如此琳琅满目的选择时,大家如何细致区分辨识其差异,就需严格立足于实际需要,最终做出最佳的判断。
多合一的系统扫描器,通常会集主机扫描、配置核查、Web扫描及弱口令扫描于一身,是一款强大全面的多功能产品。但多合一的高度封装导致其在进行安全扫描时,除不能分配全部计算资源在Web扫描方面,扫描引擎自身还要兼顾到全方位的权衡与调优。反观目标Web应用呈现的种类多样性、规模庞大性和运行特殊性,在面对动辄上万、十万甚至百万级别网页数量的网站时,这种多合一产品就表现得差强人意,使用起来有种牛拉火车的感觉;同时,高效执行扫描评估就必须具备高并发的网页链接爬虫识别和Web插件交互逻辑判断能力,这一现实的冲突导致多合一扫描器在Web扫描及性能体验方面效果平平,优势不突出。
网上开源的Web扫描器软件,尽管完全免费并可以发现一些基本的漏洞信息,但其在第一时间发现新爆Web漏洞和漏洞趋势跟踪分析、修补方面,完全不具备后期支撑能力。而且在人性化设计及低学习门槛方面也存在太多先天的不足,其性能与稳定性更是与商业软件相差甚远。
面对综上同类产品,困惑于Web扫描场景需求种种局限的我们,很欣喜地看到了近几年声名鹊起的Web扫描器产品。它作为一款自动化评估类工具,依据制定的策略对Web应用系统进行URL深度发现并全面扫描,寻找出Web应用真实存在的安全漏洞,如跨站点脚本、SQL注入,命令执行、目录遍历和不安全的服务器配置。Web扫描器产品可以通过主动生成统计分析报告来帮助我们正确了解Web应用漏洞的详细分布、数量和风险优先级,并对发现的安全漏洞提出相应有力的改进意见供后续修补参考,是帮助我们高效彻底地进行Web脆弱性评估检查的坚实利器。
Web扫描器的三个误区
针对现有市面上诸多品牌的Web扫描器,大家在评价它们孰优孰劣时时常过于片面极端,主要表现为三个认识误区。
误区1:多就是好!
认为漏洞库条目多,检查出来的漏洞多就是好。Web扫描器面对庞大繁多、千差万别的应用系统,为提升检测性能,多采用高效率的Web通用插件,以一扫多,其不再局限于某个专门应用系统,深层次聚合归并,尽可能多地发现多种应用系统的同类漏洞。同时,对于扫描出来的非误报漏洞,若同属某一页面不同参数所致的相同漏洞,归纳整理,让最终呈现的漏洞报表简约而不简单,避免数量冗余、杂乱无章。故若以毫无插件归并能力,仅靠大量专门Web系统插件、罗列各类漏洞列表数量多来博取赞许的Web扫描器,其本质存在太多的不专业性。
误区2:快就是好!
认为扫描速度快耗时短的就是好。网站规模日趋复杂,日常检查时我们期待Web扫描器能有更高效率地完成扫描任务,这点无可厚非,但检查的本质是要最大限度地提前发现足够多的漏洞,并第一时间制定后续相应的修补计划。故在面对同一目标站点时,Web扫描器若能在单位时间内检测出来的有效存在漏洞数越多,这个快才是真的好。
误区3:小就是好!
认为扫描过程中对目标业务影响小就是好!这句话本身也没有问题,只要Web扫描器在执行扫描过程中,对目标系统负载响应和网络链路带宽占用,影响足够小,也就是我们常说的“无损扫描”,它就具备了一款优秀Web扫描器应有的先决条件。但是,这必须是在能最大限度发现Web漏洞的前提下才能考虑的关键因素,脱离这个产品本质,就本末倒置了。
五个基本评优标准
那么,评优一款Web扫描器,我们该从何处着手具体的判断标准有哪些呢
全——识别种类繁多的Web应用,集成最全的Web通用插件,通过全面识别网站结构和内容,逐一判断每一种漏洞可能性,换句话说,漏洞扫描的检测率一定要高,漏报率务必低,最终才能输出全面详尽的扫描报告。这就要求其在Web应用识别方面,支持各类Web语言类型(php、asp、net、html)、应用系统类型(门户网站、电子政务、论坛、博客、网上银行)、应用程序类型(IIS、Apache、Tomcat)、第三方组件类型(Struts2、WebLogic、WordPress)等;插件集成方面,支持国际标准漏洞分类OWASP TOP 10和WASC插件分类模板,允许自定义扫描插件模板,第一时间插件更新速度等。
准——较高的漏洞准确性是Web扫描器权威的象征,可视化分析可助用户准确定位漏洞、分析漏洞。而误报是扫描类产品不能回避的话题。Web扫描器通过通用插件与目标站点任一URL页面进行逻辑交互,通过可视化的漏洞跟踪技术,精准判断和定位漏洞,并提供易读易懂的详细整改分析报告。除此之外,一款好的Web扫描器还要更具人性化,在漏洞发现后,允许扫描者进行手工、自动的漏洞批量验证,进而双重保障较高的准确性结果。
快——快速的扫描速度,才能在面对越来越大的网站规模,越发频繁的网站检查时游刃有余,进度保障。一款快速的Web扫描器除了有强劲马力的扫描引擎,高达百万/天的扫描速度,还要具备弹性灵活的集群扫描能力,任意增添扫描节点,轻松应对可能苛刻的扫描周期时间要求。
稳——稳定可靠的运行过程,对目标环境近乎零影响的Web扫描器,才能在诸行业大面积投入使用,特别是一些对业务影响要求苛刻的行业会更受青睐,毕竟没有人能够接受一款评估类产品,会对目标造成额外的损伤。市面上现在已有一些Web扫描器产品,其通过周期探寻目标系统,网络链路,自身性能负载等机制,依据目标环境的负载动态变化而自动调节扫描参数,从而保障扫描过程的足够稳定和几乎零影响。此外,随着网站规模,检查范围的不断扩大,保证持续稳定的扫描执行和统计评估,尽量避免扫描进度的半途而废,也提出了较高的可靠性运行要求。
易——人性化的界面配置,低成本的报表学习和强指导性修补建议。尤其是漏洞分布详情和场景重现方面,市面上大多数Web扫描器的报表都需要专业安全人员的二次解读后,普通的安全运维检查人员才能看懂,才知道长达百页报表给出的重要建议和下一步的具体修补措施,这无疑给使用者造成了较高的技术门槛,那么如何解决此易读、易用问题,就成为评定其优劣与否的一个重要指标。
总之,一款优秀的Web扫描器产品,它需要严格恪守五字核心方针,全、准、快、稳、易,做到全方位均衡,这样才能做到基本优秀。同时,随着网站检查诉求的日益多元化,它若能附带一些差异化特性,满足大家不同场景的网站安全运维扫描要求,如网站基本信息搜集,漏洞全过程时间轴跟踪,逐步可视化的漏洞验证和场景重现,自动修补直通车等,定会大大增加该款扫描器的评优力度。
0条评论