信息系统审计中的渗透测试

前言:寻找写作灵感?中文期刊网用心挑选的信息系统审计中的渗透测试,希望能为您的阅读和创作带来灵感,欢迎大家阅读并分享。

信息系统审计中的渗透测试

摘要:渗透测试是指经授权对网络或主机进行攻击测试,以评估计算机系统安全性的一种评估方法。本文借鉴了当前渗透测试的常见方式,结合近年来人民银行信息系统开展渗透测试的实践经验,提炼了信息系统审计的渗透测试的思路和方法,并给出了相关建议。

关键词:内部审计;信息系统;渗透测试;信息安全

近年来,随着信息系统在央行履职中的支持作用不断增强,央行信息系统逐渐向外部机构或互联网开放,其面临的入侵风险与日俱增。在信息系统审计中,如何运用各种可信安全工具对信息系统安全性进行渗透测试审计,是当前信息系统审计工作的一个尝试。

一、信息系统安全审计的4种方式

在近两年的信息系统审计中,审计人员已不单局限于传统看配置的检查方式,而是逐渐延伸到挖漏洞、看代码、查日志等多种审计方式。以下是信息系统安全审计的4种方式。

(一)配置检查(看配置)

配置检查是指分析操作系统、数据库、网络设备和中间件的配置文件,评估其是否安全。在传统信息系统审计中,对系统安全的审计通常指配置检查,而近年来对人民银行信息系统的审计,已通过程序化脚本逐步实现对操作系统、数据库和网络设备的自动化配置检查。配置检查的优点是标准化程度高,检查人员只须逐项核对标准,或使用脚本检查即可完成。但配置检查也存在难以评估的问题,并且在配置合规的情况下,由于固有漏洞的存在,信息系统仍可能存在安全风险。传统的配置检查已难以达到信息安全的要求。

(二)渗透测试(挖漏洞)

渗透测试是信息系统审计的重要环节。审计署和中国内部审计协会均对渗透测试方式进行了阐述。审计署《信息系统审计指南》提出工具检测方法:安全工具检测,即利用入侵检测、漏洞扫描等工具的监测结果进行分析评价。中国内部审计协会《内部审计具体准则——信息系统审计》提出“内部审计人员在充分考虑安全的前提下,可以利用可靠的信息安全侦测工具进行渗透性测试”。通过渗透测试,审计人员可以对配置检查发现的问题予以确认并评估影响,使审计结论更具说服力;还可以从攻击者的视角挖掘配置检查难以发现的问题,找出系统安全的薄弱环节,为内审部门对系统安全进行深层次的审计分析和预警提供新思路。

(三)业务逻辑漏洞挖掘和代码审计(看代码)

业务逻辑漏洞是指与业务逻辑相关的漏洞,如身份认证安全、业务一致性、业务数据篡改等漏洞。代码审计是指检查关键代码中的安全缺陷,以发现安全隐患。业务逻辑漏洞可通过黑盒测试发现,也可通过白盒测试(代码审计)发现。

(四)日志审计(查日志)

日志审计是指基于信息系统中的日志,检查内部人员的操作是否合规,并检查系统是否被外部成功攻击。对内而言,通过检查堡垒机日志、数据库操作日志、操作系统日志等,可以发现是否存在影响系统安全的非授权操作;对外而言,通过检查应用日志、Web日志等,可以检查是否有黑客曾经成功入侵信息系统,并获取数据。当前,人民银行信息系统安全通常由科技部门、审计和第三方安全公司进行检查。配置方面,各种检查均有涉及,且较为成熟;挖漏洞方面,科技部门和安全公司通常借助安全工具进行检查,审计较少涉及;看代码方面,各项检查均较少涉及;查日志方面,科技部门和审计通常能检查内部访问日志和外部入侵日志,安全公司因保密所限通常只检查外部入侵日志。由于在挖漏洞和看代码方面仍存在一定的检查盲区,近年来,在人民银行信息系统审计中,审计人员也尝试逐步固化渗透测试流程,并在个别项目中尝试代码审计,取得了一定进展。

二、信息系统审计中渗透测试的基本流程

本节参考渗透测试执行标准(PenetrationTestingExecutionStandard,PTES),并结合人民银行信息系统审计的实际情况,对审计中的渗透测试(含业务逻辑漏洞挖掘)流程进行介绍。

(一)前期交互

在前期交互中,确定渗透测试的范围、环境、使用的工具等,并提前告知,经授权后方可实施。其中,范围指需要测试的系统和设备,应全面覆盖所有子站和设备;环境指测试或生产环境,应尽量选择非工作时间在测试环境进行测试,并限制扫描频率,必要情况下可在生产环境进行验证;工具指测试用的硬件或软件,包括漏洞扫描设备或软件等,在生产环境中进行测试验证应选择可信的软件,防止工具带有病毒影响生产环境。

(二)信息收集

1.信息系统资产信息

收集所有服务的系统和设备,包括IP地址、域名和端口等。对内网的系统,可使用扫描工具收集所有在用IP和端口;对外网的系统,可以通过搜索引擎搜索指定网站的后台管理等敏感页面。

2.操作系统、中间件和应用版本信息

获取各操作系统、数据库、服务、应用和中间件的版本信息,通常未更新的系统或中间件可能存在漏洞。

3.安全防护软件信息

信息系统的网站配有安全防护软件,用以防护恶意扫描及渗透测试。检查对应安全防护软件是存在能绕过,并确定漏洞扫描策略。

4.历史漏洞信息

通过国家信息安全漏洞共享平台等网站获取已发现的历史漏洞,检查漏洞是否被修复,或是否有相似的漏洞。此外,对审计人员而言,除上述渠道外,还可直接调阅相关资料。如针对信息系统资产,可调阅被审计单位IP分配表、运维操作手册、网络设备配置来获取相关信息;针对操作系统、中间件、应用、安全防护软件信息,可调取部署和变更文档;针对历史漏洞信息,可调阅第三方安全公司的渗透测试报告等。在必要情况下,审计人员还可调阅涉及输入、流程管理等核心部分的代码进行检查。

(三)漏洞挖掘

漏洞挖掘是渗透测试中最重要的环节,主要有以下方法。

1.漏洞扫描

一是使用通用扫描工具进行扫描。包括AWVS,Nessus等工具,其中AWVS主要针对网站进行漏洞扫描,Nessus除扫描网站漏洞外还可扫描系统漏洞。二是使用专用扫描工具进行扫描。包括Sqlmap,Xsser等工具,其中Sqlmap主要针对数据库注入漏洞,Xsser主要针对跨站漏洞。三是代码扫描。使用代码扫描软件,检查代码关键节点(如输入框、上传文件位置)是否存在漏洞。

2.查找系统和中间件漏洞

一是检查旧版本存在的漏洞。根据前期信息收集中的版本信息,通过CVEDetail等查找对应版本存在的漏洞,并查找是否存在相关漏洞利用代码。二是检查系统和中间件是否使用弱口令。通过Hashcat等工具检查系统、数据库等中间件是否存在弱口令。

3.挖掘业务逻辑漏洞

即使用各种工具,挖掘关键业务流程中是否存在业务逻辑漏洞。一是使用各种工具。包括浏览器自带的开发者工具、Wireshark,Fiddler,Burpsuite等抓包和改包工具。二是挖掘关键业务流程。关键业务流程包括信息修改、密码修改、支付流程,以及手机或邮箱验证的流程等。三是发现业务逻辑漏洞。常见的业务逻辑漏洞包括重放攻击、数据篡改、流程绕过、验证模块暴力破解、越权漏洞等。对涉及资金的业务而言,业务逻辑漏洞的危害性更大。在上述漏洞挖掘过程中,漏洞扫描可以发现大部分安全问题。但是在无法使用扫描工具的情况下,需要通过抓包和改包软件对业务逻辑进行黑盒测试,或进一步通过代码审计进行白盒测试才能发现安全漏洞。

(四)报告

1.描述过程

描述产生业务影响的漏洞攻击的过程,包括漏洞发现、利用和验证的全过程。

2.评估风险

综合考虑发现的所有漏洞,评估可能产生的业务风险。如当系统交易数据库同时存在弱口令和网络访问控制不严的漏洞时,攻击者可以远程修改数据威胁资金安全。

3.评估影响

对发现的漏洞,从日志层面评估相关数据是否已泄露或被篡改。目前,国家法规和行业规范均对日志提出要求,如《网络安全法》规定网络日志不少于6个月,因此可以根据日志评估漏洞已经造成的影响。

4.提出改进

从防御角度分析安全防御体系中的薄弱环节,并提出修补与升级的方案。

三、渗透测试审计发现的问题及应对方法

(一)系统中间件漏洞问题

该类问题通常使用漏洞扫描工具发现,常见的漏洞包括旧版本Struts2存在的远程执行漏洞等。通常系统的核心主站安全建设较好,难以发现该类问题,而系统的FTP、邮件系统、后台管理等旁站,则容易因安全管控不严而产生遗漏。为应对该类问题,建议对信息系统所有资产进行漏洞扫描,确保不留遗漏。

(二)系统弱口令问题

该类问题通常可通过穷举弱口令、Hashcat等工具逆向密码表的方式发现,常见的漏洞包括操作系统、数据库和应用用户使用弱口令。审计过程中发现,由于应用使用的操作系统和数据库用户通常在系统上线时设置了初始口令,而后期因配置相对固定,口令不会变更,因此,应用相关用户更易存在弱口令问题。为应对该类问题,建议信息系统将应用使用的口令单独保存成配置文件,而非固化在代码中。

(三)系统代码漏洞问题

该类问题通常使用漏洞扫描工具或代码审计发现,常见的代码漏洞包括注入、任意文件读写、跨站等。审计中发现,部分信息系统针对代码漏洞,仅在安全防护软件中增加相应的屏蔽规则进行修复,而并未从根源上修复代码中的漏洞。为应对该类问题,建议加强代码审计工作,力求在代码源头修复漏洞。

(四)业务逻辑漏洞问题

该类问题通常使用网络数据截包、改包软件发现常见的漏洞,包括流程绕过、数据篡改等。审计中发现,部分信息系统因在内网环境中运行,认为内部用户难以发现相关漏洞,而忽视了对业务逻辑漏洞的检查。为应对该类问题,建议在系统上线测试时,就测试是否存在业务逻辑漏洞。

(五)移动App及硬件设备漏洞问题

由于传统的漏洞扫描等工具均无法对移动App或硬件设备进行扫描,因此,目前相关平台的漏洞还只能通过手工测试的方式发现。为应对该类问题,建议在相关平台上线前,增加对业务逻辑漏洞的手工测试环节。

四、推进信息系统安全审计的建议

(一)扎实编程基础

信息系统安全审计,特别是渗透测试及代码审计,对审计人员的编程水平要求较高。检查人员首先要看得懂代码,才能查代码。因此,相关审计人员要扎实学习编程基础,及时更新知识结构。

(二)紧跟技术趋势

网络安全的发展日新月异,新漏洞层出不穷。审计人员也应不断跟踪网络安全情报,尝试新的安全工具,了解最新的漏洞信息,关注大数据云平台等新架构的安全问题。确保在审计前有所准备,在审计时有所应用。

(三)注重审计实践

一是在审计前,可在各类CTF(夺旗赛)在线平台中实践渗透测试流程,在比赛中学习。二是在审计中,尝试将渗透性测试固化在审计流程中,在审计实践中学习。

参考文献:

[1]王世轶,吴江,张辉. 渗透测试在网络安全等级保护测评中的应用[J]. 计算机应用与软件,2018(11):190-193.

[2]刘阳. 基于渗透测试的漏洞危害实例分析与防范策略[J]. 网络空间安全,2018(2):76-78.

[3]严俊龙. 基于Metasploit框架自动化渗透测试研究[J]. 信息网络安全,2013(2):53-56.

作者:陈唯源 单位:中国人民银行福州中心支行