渗透测试服务

1      渗透测试服务

1.1 目标

通过模拟黑客的攻击方法,测试贵公司业务支撑部指定互联网应用系统的安全性,是否易于遭受黑客攻击。评估其安全防护水平,量化安全风险,为安全改造提供技术依据。

1.2 范围

渗透测试服务范围应包含电子渠道系统,包括(但不限于):门户网站、网上营业厅、掌上营业厅、网上商城、短厅、自助终端系统;内网核心系统,包括(但不限于):电子渠道、CRMNGBOSSESOP/VGOPBOMC4ASMPOACRM手机APPBASS手机APP12580手机APP等核心系统。

1.3 渗透测试服务内容

根据应用系统特点,我方将对应用系统的如下方面进行测试:

测试分类

输入验证

缓冲区溢出,跨站点脚本编写,SQL注入,标准化

身份验证

网络窃听,强力攻击,
  词典攻击,重放cookie,盗窃凭据

授权

提高特权,泄漏机密数据,篡改数据,引诱攻击

配置管理

未经授权访问管理接口,未经授权访问配置存储器,检索明文配置数据,缺乏个人可记帐性,越权进程和服务帐户

敏感数据

访问存储器中的敏感数据;窃听网络;篡改数据

会话管理

会话劫持;会话重放;中间人

加密技术

密钥生成或密钥管理差;脆弱的或者自定义的加密术

参数操作

查询字符串操作;窗体字段操作;cookie操作;HTTP标头操作

异常管理

信息泄漏;拒绝服务

审核和日志记录

用户拒绝执行某项操作;攻击者利用没有跟踪记录的应用程序;攻击者掩饰他或者她的跟踪记录

网络环境和主机系统

通过对电子渠道所属网络环境和基础的主机系统漏洞进行测试,评估其风险。

1.3.1  应用层渗透测试

1.3.1.1       输入输出验证

如果应用程序没有设定输入数据的类型、长度、格式或者范围,输入验证就成为了一个安全问题。然后,攻击者就可以提供精心打造的输入,这会损害应用程序。

如果网络和主机级的入口点被完全保护起来,应用程序公开的公用接口就成为唯一的攻击源。应用程序输入既是测试系统的一种手段,也是为攻击者执行代码的一种方式。应用程序盲目地信任输入时,应用程序可能会很容易受下列因素的影响:

◆缓冲区溢出

跨站点脚本编写

SQL注入

标准化

1.3.1.1.1      缓冲区溢出

缓冲区溢出缺陷可以导致拒绝服务攻击或者代码注入。拒绝服务攻击可以引起进程崩溃;代码注入可以更改程序的执行地址,从而运行攻击者的注入代码。

1.3.1.1.2      跨站点脚本攻击漏洞

当浏览器和某个可信的Web站点连接时,贵S 攻击可以引起任意代码在用户的浏览器中运行。攻击的目标为应用程序的用户而非应用程序本身,但是它以应用程序作为攻击的工具。

由于是从一个可信的站点用浏览器下载了脚本代码,浏览器无从知道这些代码是非法的。Internet Explorer的安全区不能提供任何防护。由于攻击者的代码可以访问与可信站点相关的cookie,这些cookie存储在用户的本地计算机上。一般情况下,用户的身份验证cookie就成为了攻击的目标。

1.3.1.1.3      SQL注入漏洞

SQL注入式攻击利用输入验证中的缺陷来运行数据库中的任意命令。当应用程序使用输入来构造访问数据库的动态SQL语句时就会发生这种攻击。如果代码使用存储过程,传递给该过程的字符串中包含有未筛选的用户输入时,也会发生这种攻击。利用SQL注入攻击,攻击者可以执行数据库中的任意命令。如果应用程序使用一个越权帐户来与数据库连接,问题会更严重。在这种情况下,除了能够检索、操作和破坏数据外,利用数据库服务器来运行操作系统命令是可能的,并有可能危及其他服务器的安全。

1.3.1.1.4      标准化漏洞

将不同形式的输入转化成相同的标准名称(规范名称),这被称为标准化。 如果代码是根据传递给程序的资源名称(它作为输入)来进行安全决策,这样的代码就特别容易受到标准化问题的影响。文件、路径和URL都是容易受标准化影响的资源类型,因为每种情况都有许多表示相同名称的不同方法。文件名称也有这样的问题。

1.3.1.2       身份验证渗透测试

根据业务的需求,有几种身份验证机制供选择。如果选择和实现不正确,身份验证机制就会暴露出缺陷,攻击者利用这些缺陷可以访问系统。身份验证缺陷造成的主要漏洞包括:

◇认证信息被窃听

认证策略失当

没有设置会话超时时间

1.3.1.2.1      认证信息测试

如果将身份验证凭据以明文形式从客户端传递到服务器,在同一网络的某台主机上配备有基本网络监控软件的攻击者可以捕获传递的信息并获取用户的名称和密码。

防止网络窃听的对策包括:

○使用不在网络上传输密码的身份验证机制,例如Kerberos协议或者 Windows身份验证机制。

确信密码已加密(如果必须在网络上传输密码的话),或者使用加密的通信通道,例如SSL

1.3.1.2.2      认证策略测试

如果应用系统在认证页面没有采用验证码机制或者没有限制用户登录失败尝试次数,则系统很容易遭受工具暴力破解,如:

暴力破解密码

暴力破解依靠计算能力来破解散列的密码或者破解其他用散列和加密保护的秘密。为降低风险,可以使用强密码。

利用这种攻击可以获得密码。大多数密码系统不存储明文密码或者加密密码。它们避免使用加密密码是因为,危及安全的密钥可以损害数据存储区中的所有密码。丢失了密钥意味着所有的密码都无效。

大多数用户存储含有密码散列值(或者摘要)的实现。根据用户提供的密码值重新计算散列值,并将它与存储在数据库中的散列值进行比较,以此来验证用户的身份。如果攻击者设法获得了散列密码列表,就能够使用强力攻击来破解密码散列值。

词典破解密码

利用词典攻击,攻击者利用一个程序循环访问字典中的所有的单词(或多种语言的多个字典)并计算每个单词的散列值。将获得的散列值与数据存储区中的值进行比 较。脆弱密码,例如“Yankees”(一个喜爱的团队)或者“Mustang”(一辆喜欢的轿车),将会很快被破解。较强的密码,例如“? You'LlNevaFiNdMeyePasSWerd!”,被破解的可能性要小一些。

:一旦攻击者获得了散列密码列表,可以离线进行词典攻击,并且不需要与应用程序进行交互。

防止词典攻击的对策包括:

使用复杂、非寻常的单词作为强密码,并且是包含大小写、数字和特殊字符的混合体。

在用户的存储器中存储非可逆的散列密码。同时散列密码要组合一个有力的数值(一个加密的强随机数)。

1.3.1.2.3      会话超时时间测试

利用这类攻击,攻击者可以利用监控软件捕获用户的身份验证cookie,并且将它重放给应用程序以便能够以假身份进行访问。

防止cookie重放的对策包括:

当传输身份验证cookie时,使用SSL提供的加密通信通道。

利用一个cookie超时时间值,强迫在某个相对短的时间间隔后进行身份验证。虽然这种方法不能防止进行重放攻击,但它减小了攻击者重放请求的时间间隔,这期间无需强迫进行再次身份验证,因为会话已经超时。

1.3.1.3       信任机制漏洞渗透测试

根据用户的身份和角色成员身份,对特殊的资源或者服务进行授权,要么允许访问,要么拒绝访问。授权层面主要存在的漏洞包括:

权限过高

未授权访问

篡改数据

引诱攻击

1.3.1.3.1      权限过高测试

在设计授权模型时,必须要考虑攻击者试图提升特权,以成为一个超级帐户如本地管理员组成员或者本地系统帐户的威胁。这样做,攻击者就完全能够控制应用程序和本地计算机。例如,利用传统的ASP编程,从一个组件调用 RevertToSelf API可能会造成正在执行的线程以本地系统帐户身份运行,而该本地系统帐户拥有本地计算机的超级特权。

可以用来防止提升特权的主要对策就是使用最低特权进程、服务和用户帐户。

1.3.1.3.2      未授权访问测试

如果未授权用户可以查看敏感数据,就会发生机密数据泄漏的问题。机密数据包括应用程序专用的数据,例如信用卡号、雇员详细资料、财务记录等,还包括应用程序 配置数据,例如服务帐户凭据以及数据库连接字符串。为了防止泄漏机密数据,应在网络上传输时对其进行保护,还应在持久性存储区中进行保护(例如数据库和配 置文件)。只有经过身份验证和授权的用户才能访问他们专用的数据。应当限制只有管理员才能访问系统级配置数据。

防止泄漏机密数据的对策包括:

在允许访问可能暴露敏感数据的操作之前,进行角色检查。

利用强ACL来保护Windows资源。

利用标准的加密技术将敏感数据存储到配置文件和数据库中。

1.3.1.4       配置管理渗透测试

许多应用程序支持配置管理界面和功能,以允许操作者和管理员更改配置参数,更新Web站点的内容,以及进行日常的维护。配置管理层面主要的漏洞包括:

管理界面缺乏保护

管理操作缺乏日志记录

1.3.1.4.1      管理界面保护测试

应通过另外的Web页或者单独的Web应用程序提供管理界面,它允许管理员、操作者和内容开发人员来管理站点内容和配置。这些管理界面只应当由有限的和授权的用户使用。恶意的用户能够访问配置 管理功能可能会破坏Web站点、访问下游系统和数据库,或者通过破坏配置数据而使应用程序出现故障。

防止未授权访问管理界面的对策包括:

将管理界面的数量减到最少。

使用强身份验证,例如,使用证书。

使用带有多个网关守卫的强授权。

考虑只支持本地管理。如果完全需要远程管理,那么利用加密通道,例如,VPN技术或者SSL,这是由于在管理界面上传递的数据的敏感性所导致的。为了进一步降低风险,还要考虑使用IPSec 策略来限制对 Internet网络上的计算机进行远程管理。

由于配置存储区中维护的数据的敏感性,应当确保存储区得到了足够的保护。

保护配置存储区的对策包括:

配置基于文本的配置文件(例如Machine.configWeb.config)中的受限的ACL

保持自定义的配置存储区位于Web空间之外。这样就消除了下载Web服务器配置以利用其缺陷的可能性。

1.3.1.4.2      管理操作日志记录测试

缺乏对更改配置信息的审核和日志记录就会威胁识别以下情况的能力:什么时候进行的更改以及谁做的更改。当由诚实操作者的错误或者恶意的更改导致出现中断更改,从而允许特权访问时,首先要采取行动纠正这些修改。然后采取预防措施,防止以同样的方式引入中断更改。要牢记,共享帐户可以躲避审核和日志记录,这对管理帐户与用户/应用程序/服务帐户都适用。不能共享管理帐户。分配用户/应用程序/服务帐户的级别时必须允许使用该帐户标识单一的访问源,并考虑对赋予该帐户的特权的破坏。

1.3.1.5       敏感数据渗透测试

敏感数据遭受各种威胁。试图查看或者更改敏感数据的攻击目标是持久性存储区和网络。敏感数据层面主要的漏洞为:

敏感数据存储缺乏保护

敏感数据明文传输

1.3.1.5.1      敏感数据存储渗透测试

必须要保护存储区的敏感数据,以防止恶意的或者其他的用户访问和读取这些数据。

保护存储区的敏感数据的对策包括:

对包含敏感数据的持久性数据存储区使用受限ACL

存储加密数据。

使用基于身份和角色的授权,确保只有具有适当授权级别的用户才允许访问敏感数据。用基于角色的安全机制来区分用户,谁可以查看数据,谁可以更改数据。

1.3.1.5.2      敏感数据明文传输测试

Web应用程序的HTTP数据以明文的形式在网络上传输,并遭受网络窃听攻击,攻击者利用网络监视软件捕获并有可能更改敏感数据。

防止网络窃听并提供私密性的对策包括:

加密数据

使用加密通道,例如:SSL

1.3.1.6       会话管理渗透测试

Web应用程序的会话管理是应用程序层的一项职责。会话的安全性对于应用程序的整体安全性非常重要。

会话管理层面的主要弱点包括:

认证会话明文传输

没有设置会话超时时间

1.3.1.6.1      认证会话明文传输测试

当攻击者利用网络监视软件捕获用来表示用户与应用程序进行会话的身份验证标记(通常是一个cookie)时,就会发生会话劫持攻击。利用捕获的cookie,攻击者可以欺骗用户会话,访问应用程序。攻击者具有和合法用户同级的特权。

防止会话劫持的对策包括:

利用SSL创建一条安全的通信通道,并只在HTTPS连接上传输身份验证cookie

实现注销功能,允许用户在启动另一个会话时结束强制身份验证会话。

如果不使用SSL,确保要限制会话cookie 的有效期。虽然这不能防止会话劫持,但是它减小了攻击者可利用的时间。

1.3.1.6.2      会话超时测试

没有设置会话超时时间容易遭受会话重放攻击。

当用户的会话标记被攻击者中途截取和提交以绕过身份验证机制时,就会发生会话重放。例如,如果会话标记为cookie或者URL中的明文,攻击者可以探查到它。然后,攻击者利用被劫持的会话标记来发出请求。

帮助解决会话重放威胁的对策包括:

当执行关键功能时,重新进行身份验证。例如,在银行应用中传输金融信息之前,让用户再次提供帐户密码。

使会话经适当时间后过期,包括所有的cookie和会话标记。

创建"不要提醒我"选项,不允许客户端存储会话数据。

1.3.1.7       加密技术渗透测试

大多数应用程序利用加密技术来保护数据,确保它的私密性并不被更改。围绕应用程序使用加密技术的主要漏洞包括:

密钥测试

加密技术测试

1.3.1.7.1      密钥测试

攻击者得到密钥或者可以推导出密钥,他们就可以解密加密的数据。如果不妥善管理密钥或者不以随机的方式产生密钥,攻击者就可以找出密钥。

解决糟糕的密钥生成和密钥管理机制的漏洞的对策包括:

使用内置的加密例程,这种例程包含安全密钥管理。数据保护应用程序编程接口 (DPAPI) 就是一个加密服务示例,它由Windows 2000及其以后的操作系统提供,其中操作系统管理密钥。

使用强随机密钥生成函数,并将密钥存储在一个受限制的地方 - 例如,存储在用受限制的ACL保护的注册表密钥中 - 如果使用需要生成或管理密钥的加密机制。

DPAPI加密密钥,增加安全性。

定期使密钥过期。

1.3.1.7.2      加密技术测试

如果加密技术被破解或者很容易被强力破解,加密算法就不具有安全性。如果没有经过测试,自定义的算法特别容易受到攻击。相反,要使用公布的、著名的加密算法,它们都经受住了多年的苛刻攻击和审查。

针对脆弱的或者自定义的加密技术容易受到攻击的对策包括:

不开发自己自定义的算法。

使用由平台提供、经受考验的加密服务。

了解被破解的算法和用来破解算法的技术。

1.3.1.8       参数操作渗透测试

操作参数攻击是一种依靠更改在客户端和Web应用程序之间发送的参数数据的攻击。这包括查询字符串、窗体字段、cookieHTTP标头。主要的操作参数层面漏洞为:HTTP HEAD信息泄漏。

用户很容易就可以操作由HTTP HEAD传递的从客户端到服务器的查询字符串值。如果应用程序依靠这些信息来进行安全决策,或者如果该值代表的是诸如资金数量的敏感数据,那么该应用程序就很容易受到攻击。

1.3.1.9       异常管理渗透测试

允许传播给客户端的异常可以泄漏内部实现的详细资料,它对最终用户没有意义,但对攻击者却非常有用。不使用异常处理或者异常处理实现得非常糟糕的应用程序,也会遭受拒绝服务攻击。测试主要包括:

泄漏系统敏感信息

如果系统出错时向客户端显示详细出错信息,这些资料对于开发人员具有极大价值。如果这同样的信息落到攻击者的手中,它将会大大帮助攻击者利用潜在的缺陷 以及规划将来的攻击。可以被返回的信息类型包括平台版本、服务器名称、SQL命令字符串以及数据库连接字符串。

1.3.1.10  审核和日志记录渗透测试

应当使用审核和日志记录来帮助发现可疑的活动,例如足迹或者真正攻击之前的可能破解密码企图。它还有助于处理否认威胁。如果多个服务器上的一系列同步日志条目表明用户执行过某项交易,那么用户就很难否认执行过这项操作。与审核和日志记录有关的主要漏洞包括:

日志记录不完整

如果系统记录的日志不完整,会存在否认威胁。

否认问题就是用户否认他或她执行过某个操作或者发起过某项交易。需要适当的防护机制来确保可以追踪和记录所有的用户活动。

1.3.1.11  WEB服务渗透测试

相关WEB服务的测试内容如下:

1WS信息收集

2WSDL测试

3XML结构测试

4XML内容级别测试

5HTTP获取参数/REST测试

6、重现测试

 

1.3.2  主机层渗透测试

1.3.2.1       操作系统渗透测试

通过专业的漏洞扫描工具对相关主机进行漏洞扫描,收集主机的相关信息,同时通过社会工程学方式对相关主机进行人工信息收集,根据工具扫描及人工信息收集的信息进行相应的系统层渗透。

◇缓冲区溢出


通过向一个有限空间的缓冲区写入过长的字符串造成缓冲区的溢出,从而破坏系统堆栈。由于过长的字符串覆盖了临近的缓冲区而造成程序出错,甚至机器瘫痪;利用这种漏洞使程序转而执行其他指令,甚至取得系统特权。

(注:执行缓冲区溢出操作前会确定该操作的风险,并与系统值守人员电话取得联系,系统值守人员应实时监控系统在被溢出时的异常情况,如出现服务不可提供则采取相应的恢复措施)

本地权限提升

利用操作系统内核、以高权限用户执行的服务程序或者是suid程序的安全漏洞,将普通用户的权限提升到更高的权限(如Administrator/SYSTEM/root权限)。利用本地权限提升漏洞可能会导致机器瘫痪或者服务不可用。

1.3.2.2       数据库渗透测试

一般的数据库有MSSQLOracleDB2三种,各种数据库的攻击方法均不同。各数据库平台在各应用环境攻击方法大体相同,这里主要讲注入攻击。

Ø  针对MSSQL的攻击

利用SQL注入漏洞一般会有以下攻击效果:列出其他用户的数据,列出数据库内所有数据,渗透测试过程中会试着读取操作系统一些配置内容,甚至尝试取得控制数据库所承载操作系统的权限,如果会向数据库内写入文件,渗透测试工程师会详细记录写入数据的详细内容,以便渗透测试结束后,方便系统管理员恢复系统。例如如下语句:

 Or 1=1

select @@VERSION

select top 1 name from db.dbo.sysobjects where xtype='U'

Ø  针对Oracle的攻击:

mssql的攻击后果一样,但oracle数据库运行平台分两种,一种是windows,一种是linux/unix,受操作类型不同,造成的后果也有一定的差别,一般在运行在windows平台的注射后果和mssql一样,linux/unix平台所造成的后果则要小得多。但是两种平台的相同之处就是能取得数据库内所有数据,也可能向数据库插入数据,但渗透测试过程中,工程师如果有这类操作的话,会记录具体的过程,以便渗透测试工作结束后,利于系统的恢复,有如下语句可供参考:

Union select 1,(select banner from sys.v_$version where rownum=1),NULL,NULL,NULL,NULL,NULL from dual—

union select 1,NULL,(select table_name||chr(35)||column_name from all_tab_columns where column_name like '%25PASS%25' and ROWNUM=1),NULL,NULL,NULL,NULL from dual—

Ø  针对DB2数据库的攻击:

DB2数据库的结构,攻击DB2数据库有较大的难度,目前发现的技术仅限于能取得操作系统信息、取出、写入数据,但仅凭这一点,也足够给应用系统带来致使的伤害,实际的渗透测试操作中,渗透工程师如果要往数据库内写入数据,会记录写在哪个表内,写入了什么数据,便于应用系统管理员渗透后恢复。例如以下句子对DB2数据库进行攻击:

0<(SELECT count(NAME) FROM SYSIBM.SYSTABLES where CREATOR=USER)

3<(SELECT ASCII(SUBSTR(NAME,1,1)) FROM SYSIBM.SYSTABLES where name not in('COLUMNS') fetch first 1 rows only)

 

1.3.2.3       中间件渗透测试

常见有IISApacheTomcatWeblogicWebsphere等其它中间件,针对以上平台,不同的版本,有不同的漏洞利用方法,以上应用平台容易产生以下漏洞:

Ø  不安全的HTTP方法:

以上平台均可能存在,但IISApache经常出现此类问题。当web目录权限配置不严格时,可能导致使用不安全的HTTP方法写入、删除或是更改文件,可能导致直接向web目录植入web页面或是木马。

Ø  源代码泄露:

以上平台均可能存在,在Tomcat中很容易出现。由于版本过低或是补丁更新不及时,导致提交特殊请求,服务器会直接返回页面源代码。如WindowsTomcat对大小写扩展名处理导致源代码泄露,IIS对空格处理导致源代码泄露等,利用得到的源代码,能进一步分析应用程序的结构。例如提交:http://aa.com/aa.jSP可能造成源代码泄露。

Ø  错误处理:

以上平台均可能存在,web服务器未配置自定义错误页面,当应用程序运行出错的时候,可能会向用户返回详细的错误信息,可能会包含路径信息、数据库信息等。

Ø  缓冲区溢出:

以上平台均可能存在,由于版本过低或是补丁更新不及时,导致缓冲区溢出漏洞,轻则造成DOS攻击,重则取得应用平台运行权限。

Ø  关键传输未加密:

以上平台均可能存在,敏感页面的数据传输未加密,例如登录页面,使用sniff则可能休嗅探到网络中传输的明文信息,渗透测试中不会利用此漏洞进行攻击测试。

Ø  目录遍历:

以上平台均可能存在,但是IISApachetomcat中出现非常频繁,是因为web软件配置不正确导致,利用此漏洞可以完整的看到web目录结构,结合其它攻击,能给应用系统带来新的威胁。

 

1.3.2.4       邮件服务渗透测试

邮件服务器常见的测试攻击方法如下:

Ø  缓冲区溢出漏洞

当邮件服务器软件在一个数据缓冲区中,存储了超过最初允许量的更多的数据,并且未曾防备始料未及的输入时,就会发生缓冲区溢出。虽然缓冲区溢出是由于偶然的编程错误导致的,但是它对于数据完整性而言却是一种很常见的安全漏洞。攻击者可以利用这个缺陷让邮件服务器执行它未计划执行的其它程序。让多余的数据包含被设计用于触发特定行为的代码,如:向被攻击的服务器发送可能损坏用户文件、修改数据或暴露绝密信息的新指令。

如果邮件服务器的运行享有特权的话,就会危及到整个系统的安全。即便邮件服务器不享有特权,攻击者还是能够危及它的安全,并获得对它的资源的完全控制权限。这种攻击会导致两个严重后果。首先,邮件服务器被危及安全意味着攻击者可以阅读公司的来往邮件。结果可能是灾难性的。其次,攻击者可以使用公司的服务器资源 发送垃圾邮件。这种情况会给公司带来坏名声,并违反ISP合同,常常意味着服务终止。

Ø  拒绝服务攻击

拒绝服务(Denia1 of ServiceDoS)攻击会降低目标系统的能力。比方说一个邮件服务器,攻击者试图放慢它或者把它搞瘫痪。攻击者以几种方式发起拒绝服务攻击,包括消耗网络资源和发起目录收集攻击。

当攻击者通过网络资源消耗实施拒绝服务攻击时,攻击常常集中在消耗目标机器的所有可获得的进入连接上。因为SMTP是一个TCP协议,一个成功的漏洞攻击只要求攻击者请求的TCP连接的数目比能够获得的TCP连接数更多。也就是说,攻击者创建比邮件服务器所能处理的连接数更多的指向邮件服务器的连接。这样邮件服务器就不能再接受来自合法的邮件服务器的有效的进入连接了。

Ø  目录收集攻击

目录收集攻击是由垃圾邮件发送者发起的资源密集型攻击,从而为将来发送垃圾邮件确定可用的有效地址。在发生目录收集攻击时,邮件服务器负载会大大增加,影响有效邮件的传输。此外,本地邮件服务器会为无效地址试图向垃圾邮件发送者所使用的From地址返回未送达报告。

返回未送达报告生成另外的外发邮件通讯,消耗昂贵的带宽,进而增加邮件服务器的负载。因为垃圾邮件发送者使用的大多数From地址都是假的,所以传输未送达报告总是超时,要求邮件服务器晚些时候再尝试传输。总之,目录收集攻击是一种代价昂贵的攻击邮件服务器的形式。

Ø  弱口令测试

通过弱口令扫描工具,测试邮箱帐号是否存在弱口令情况

1.3.2.5       FTP服务渗透测试

常见FTP服务存在的漏洞及入侵测试如下:

1FTP远程溢出漏洞

FTP服务器中NLST命令存在一个缓冲区溢出漏洞,这个漏洞可能使攻击者在服务器上非法运行一条命令,如果溢出地址不正确的话,也可能会造成服务器关闭。

2 匿名FTP入侵

如果允许匿名账号FTP登录的设定,会给入侵者带来了突破Windows NT Server的机会,接下来看看入侵者是如何入侵允许匿名账号FTP登录的服务器。

3 Serv-U入侵

Serv-U是一款很出色的FTP服务器软件,在网上的应用很广泛,其设置简单,小巧玲珑,很受用户喜爱。 但是在2000123Zoa_Chien (zoachien securax.org)发现了Serv-U的一个重大漏洞,这个漏洞使安装有Serv-U软件的服务器的硬盘暴露在网络上。这个漏洞在2.5i以前版本中全部存在,但是现在还有很多的网站仍然在使用2.5i以前的版本。下面就来看看入侵者是如何利用该漏洞的。

1.3.2.6       恶意代码渗透测试

恶意代码是指故意编制或设置的、对网络或系统会产生威胁或潜在威胁的计算机代码。最常见的恶意代码有计算机病毒(简称病毒)、特洛伊木马(简称木马)、计算机蠕虫(简称蠕虫)、后门、逻辑炸弹等。测试中使用到的方式如下:

Ø  远程访问特洛伊

远程访问特洛伊RAT 是安装在受害者机器上,实现非授权的网络访问的程序,比如NetBus SubSeven 可以伪装成其他程序,迷惑用户安装,比如伪装成可以执行的电子邮件,或者Web下载文件,或者游戏和贺卡等,也可以通过物理接近的方式直接安装。

Ø  Zombies

恶意代码不都是从内部进行控制的,在分布式拒绝服务攻击中,Internet的不少 站点受到其他主机上 zombies程序的攻击。zombies程序可以利用网络上计算机系统的安全漏洞将自动攻击脚本安装到多台主机上,这些主机成为受害者而听从攻击者指挥,在某个时刻,汇集到一起去再去攻击其他的受害者。

Ø  非法访问权限

口令破解、网络嗅探和网络漏洞扫描是公司内部人员侦察同事,取得非法的资源访问权限的主要手段,这些攻击工具不是自动执行, 而是被隐蔽地操纵。

Ø  键盘记录程序

某些用户组织使用PC活动监视软件监视使用者的操作情况,通过键盘记录,防止雇员不适当的使用资源,或者收集罪犯的证据。这种软件也可以被攻击者用来进行信息刺探和网络攻击。

Ø  P2P 系统

基于Internet的点到点(peer-to-peer)的应用程序比如NapsterGotomypcAIMGroove,以及远程访问工具通道像Gotomypc,这些程序都可以通过HTTP或者其他公共端口穿透防火墙,从而让雇员建立起自己的VPN,这种方式对于组织或者公司有时候是十分危险的。因为这些程序首先要从内部的PC远程连接到外边的Gotomypc主机,然后用户通过这个连接就可以访问办公室的PC。这种连接如果被利用,就会给组织或者企业带来很大的危害。

Ø  逻辑炸弹和时间炸弹

逻辑炸弹和时间炸弹是以破坏数据和应用程序为目的的程序。一般是由组织内部有不满情绪的雇员植入,逻辑炸弹和时间炸弹对于网络和系统有很大程度的破坏,Omega工程公司的一个前网络管理员Timothy Lloyd1996年引发了一个埋藏在原雇主计算机系统中的软件逻辑炸弹,导致了1千万美元的损失,而他本人最近也被判处41个月的监禁。

 

1.3.2.7       远程服务渗透测试

Windows服务器服务漏洞(MS08-067)只要扫描到开放139445端口,就有可能利用该漏洞来实施远程溢出,MS08-067漏洞的全称为“Windows Server服务RPC请求缓冲区溢出漏洞,如果用户在受影响的系统上收到特制的RPC 请求,则该漏洞可能允许远程执行代码。 Microsoft Windows 2000Windows XPWindows Server 2003系统上,攻击者可能未经身份验证即可利用此漏洞运行任意代码,此漏洞可用于进行蠕虫攻击,目前已经有利用该漏洞的蠕虫病毒。防火墙最佳做法和标准的默认防火墙配置有助于保护网络资源免受从企业外部发起的攻击,默认情况下能建立空连接。

1.3.3  网络层渗透测试

1.3.3.1       网络边界渗透测试

网络边界主要由一些安全设备组成,如防火墙、WAFIPSIDS、抗DDOS设备等,常见的测试方法如下:

1、        设备自身漏洞测试

2、        认证弱口令测试

3、        数据传输安全测试

4、        边界有效性测试

5、        攻击行为检测有效性测试

6、        DDOS防御能力测试

1.3.3.2       网络设备渗透测试

对于网络设备的渗透测试,重点针对OSI模型的第一层到第三次:

1.png

Ø  第一层:物理层中的测试内容如下:

1、 物理中间人攻击

Ø  第二层:数据链路层中的测试内容如下:

1、 ARP欺骗

2、 嗅探广播通讯

3、 VLAN跳跃

4、 STPSpanning Tree Protocol)生成树攻击

5、 VTPVLAN Trunking Protocol)攻击

Ø  第三层:网络层中的测试内容如下:

1、 网络层嗅探(tcpdump

2、 弱口令扫描

3、 MIB信息块进行读/写(SNMP

4、 攻击Cisco设备口令字弱加密算法

5、 TFTP下载

6、 针对各种路由协议的攻击手段(RIPIGRPOSPFBGP等)

7、 Cisco IOS 系统定时器堆缓冲区溢出

1.4 渗透测试实施步骤

1.4.1  信息获取阶段

这一阶段主要是获取目标系统如电子渠道业务应用系统中有关网络、主机、数据库以及业务应用系统相关的信息,如下:

进行一个渗透测试,首先需要进行信息收集。这个阶段是整个过程最为重要的一个阶段。信息收集一般包括:前期的信息收集、漏洞扫描和攻击程序(脚本)的收集。

■前期信息收集

前期信息收集主要是进行一些漏洞扫描前的准备和预扫描的工作,需要收集的信息主要包括如下方面:

Ø  服务器的域名注册信息

Ø  IP地址范围的所有者

Ø  主、次,以及ISP的域名服务器对查询请求的响应

Ø  利用各种跟踪方式确定网络的边界

Ø  InternetWeb服务器、新闻组和论坛获得测试目标的相关信息;

Ø  如果测试对象提供Web服务,则尝试获得其Web页面、脚本(CGIPHPASPJSP等)的源代码以及内部的连接;

Ø  e-mail的头、反弹地址和收件人等部分获得服务器的某些信息;

Ø  搜索测试对象的网络是否存在P2P服务,并尽量从中收集可用信息;

√收集目标网络的广播响应;

利用Firewalk等工具测试防火墙的策略;

使用ICMP和反向域名查询来判断目标网络中存在的主机;

TCP序列号的随机性检查;

网络高端端口(主要用于RPC或者DCOM等服务)的测试;

TCP碎片扫描,判断目标系统的TCP/IP协议栈行为;

TCP SYNNULLFIN等方式进行端口扫描;

使用FTP、代理服务器对服务器的2281111132161 等端口进行反弹扫描;

使用UDP扫描发现存在的UDP端口;

测试使用的路由协议;

测试目标系统使用的非标准协议;

测试目标系统使用的加密协议;

发现开放端口提供的网络服务以及使用的协议;

目标系统的操作系统、补丁情况;

通过banner或者指纹识别技术获得提供服务的应用程序的名称、版本和补丁情况;

识别系统其他应用程序的名称、版本和补丁情况;

定位和识别服务的映射和冲定向;

向目标发送基于UDP协议的请求或者发送特洛伊木马请求;

测试Web服务器和FTP服务器的目录结构;

查询目标主机的Whois信息(如果是公网地址);

筛选从P2P中获得资料,发现有用的信息;

漏洞扫描和测试程序收集

扫描器是用于分析网络上的设备安全性的弱点评估软件。它检查路由器、Web服务器、Unix服务器、Windows NT服务器、桌面系统和防火墙的弱点,从而识别能被入侵者用来非法进入网络的漏洞。这一阶段主要实现如下目标:

-发现系统、应用程序或者服务的漏洞;

-发现可能存在的拒绝服务漏洞;

-消除存在的误报;

-获得整个网络拓扑结构;

-收集漏洞测试程序或者脚本。

安全工程师利用上一步获得的有关信息,使用一些商业的、免费的和本公司的扫描工具对测试对象进行扫描以确认可能存在的漏洞和可以利用的安全漏洞,以便于开展下一步的工作。

 

扫描

说明

Backdoors

在系统中寻找攻击者放置的后门。

Browser

检查Internet ExplorerNetscape Navigator的漏洞,并根据如何将主机或Web站点分类对安全级别进行测试。

Brute Force

测试弱的账号、口令以及常用的组排列的服务。

CGI-Bin

测试使用万维网的CGI文件和程序中的漏洞。

Daemons

检查Unix进程(等价于Windows服务)的漏洞版本或较弱的安全性。

DCOM

测试DCOM注册表主键和DCOM许可。

DNS

测试分布式名称服务实现的漏洞。

E-mail

测试与简单邮件传输协议(SNMP)相关的漏洞。

Firewalls

对于默认用户安全弱点,测试防火墙。

FTP

测试与文件传输协议相关的漏洞。

Information   Gathering

收集信息,诸如攻击者可在安装协同攻击之前获得的用户账号名。

LDAP

测试轻目录访问协议(LDAP)服务。

Network

测试TCPIP以及数据传输漏洞。

Network   Sniffers

检测并报告所有监控网络通信的设备或软件。

NFS

测试NFS文件系统。

NIS

测试网络信息系统实现的漏洞。

NT Critical   Issues

包含在Windows NT机器上加强和监控与域安全相关的行为的安全测试。

NT Groups

对于用户账号和以建立的用户组,确定适当的用户组成员。

NT Networking

确定Windows NT特定的网络安全弱点。

NT Password

测试Windows NT的账号,包括用户、口令以及锁定检查。

NT Patches

确定系统是否包含最新的Windows NT软件的更新。

NT Policy   Issues

检测可导致未授权访问的安全策略设置。

NT Registry

测试主机注册表的安全,包括保护简单邮件传输协议(SNMP)的主键。

NT Services

检测正在运行的Windows NT服务以及与服务相关的安全漏洞。

NT Users

包括确定在您扫描的计算机上是否已执行了其它用户级安全的检查。

Protocol   Spoofing

测试TCP的序列号可预测性。

Router/Switch

测试包路由器和网络硬件的漏洞。

RPC

测试特定的远程过程调用的相关漏洞。

Shares

测试NetBIOS/SMB共享的弱点或潜在的未授权访问。

SNMP

测试简单网络管理协议实现的漏洞。

Web Scan

测试使用万维网的文件和程序中的漏洞,诸如IISHTTP

X Window

测试X-Window系统

1.4.2  实施流程

1.4.2.1 实施流程图

渗透测试实施流程定义如下:


1.4.2.2 各实施阶段描述

1.4.2.2.1 准备阶段

◆我们职责

Ø   提交《应用系统渗透测试工作说明书》,并与客户沟通渗透测试实施方案,让客户知晓渗透测试的实施流程、服务类型、测试内容以及渗透测试可能引入的安全风险,和相应的风险规避措施

Ø   提交《应用系统渗透测试授权书》、与客户协商渗透测试的时间、范围、执行人、协调人以及需要客户提供的相关资源

客户职责

Ø   客户相关负责人签署《应用系统渗透测试授权书》,并准备渗透测试申请表中涉及的资源

Ø   在测试前,做好相关数据备份工作

1.4.2.2.2 测试阶段

我们职责

Ø   在测试前,与客户确认是否已经做好相关数据备份工作

Ø   对目标应用系统进行全面的渗透测试工作,并对发现的安全弱点进行风险评级

客户职责

Ø   客户相关负责人对被测试对象加强监控,如出现异常状况,及时与我方取得联系。

1.4.2.2.3 输出阶段

我们职责

Ø   测试工程师完成渗透测试正式报告的编写工作,将文档加密后提交给质量审核人员,并将文档、扫描结果以及中间输出物归档后上传至文档服务器。

Ø   质量审核人员完成报告的质量审核工作,将文档提交给项目经理

Ø   项目经理审阅后,将文档转成PDF提交给客户,并使用其他途径告知客户文档加密口令(如使用电话或短信的方式)

Ø   如果客户对报告的内容有疑问,我方测试工程师会做出相应的解答,并配合客户完成安全弱点整改工作

客户职责

Ø   根据我方提供的应用系统渗透测试报告,完成安全弱点整改工作

1.4.2.2.4 复查阶段

我们职责

Ø   当客户完成整改工作后,进行安全弱点复查工作

Ø   测试工程师完成渗透测试复查报告的编写工作,将文档加密后提交给项目经理,并将文档、扫描结果以及中间输出物归档后上传至文档服务器

Ø   项目经理审阅后,将文档转成PDF提交给客户,并使用其他途径告知客户文档加密口令(如使用电话或短信的方式)

客户职责

Ø   如果仍有未修复的安全弱点,根据我方提供的复查报告,完成后续的整改工作

1.4.2.3 测试阶段实施步骤说明

在测试阶段中划分了3个子阶段,如下:

1.4.2.3.1 信息收集及工具扫描阶段

阶段描述

Ø   进行必要的信息收集,如IP地址、DNS记录、应用版本信息、IP 段和网络拓扑等

Ø   进行端口扫描及服务识别(Nmap)

Ø   进行系统层弱点扫描(Nessus)

Ø   进行应用层弱点扫描(WVS、IBM_Appscan)

测试规范

Ø   关闭DDOS、CC等可能导致服务器无法正常工作的扫描策略

Ø   如果测试人员在工具扫描过程遇到问题,例如被测试服务器出现异常、或是由于各种原因,扫描器无法正常工作,测试人员应及时通知项目经理进行处理

1.4.2.3.2 弱点验证及人工测试阶段

阶段描述

Ø   人工验证扫描结果,排除误报

Ø   手工提交HTTP请求,进行全面的安全弱点发现工作(重点针对扫描器无法完成的测试,详细测试内容参见3章节)

测试规范

Ø   不对安全弱点进行深度利用测试

Ø   不使用DDOS、CC等可能导致服务器无法正常工作的手法

Ø   如果测试人员在测试过程遇到问题,例如被测试服务器出现异常、或是由于各种原因,测试无法进行,测试人员应及时通知项目经理进行处理

Ø   如果在测试的过程中,发现高风险安全弱点时,当日测试人员完成简报编写工作,加密后提交给项目经理,项目经理审阅后,将文档转成PDF提交给客户,并使用其他途径告知客户文档加密口令(如使用电话或短信的方式),通知客户尽快整改,将风险将到最低

1.4.2.3.3 利用测试及风险评级阶段

阶段描述

Ø   手工提交HTTP请求,针对已发现的安全弱点进行深度利用测试,重点测试安全弱点的可利用性以及利用的难易程度,分析安全弱点被成功利用后可能对应用系统造成的影响

Ø   对已发现的安全弱点进行归类和风险评级(评级方法参见《风险评级方法论》)

测试规范

Ø   不使用DDOS、CC等可能导致服务器无法正常工作的手法

Ø   如果测试人员在测试过程遇到问题,例如被测试服务器出现异常、或是由于各种原因,测试无法进行,测试人员应及时通知项目经理进行处理

Ø   如果在测试的过程中,发现高风险安全弱点时,当日测试人员完成简报编写工作,加密后提交给项目经理,项目经理审阅后,将文档转成PDF提交给客户,并使用其他途径告知客户文档加密口令(如使用电话或短信的方式),通知客户尽快整改,将风险将到最低

1.4.3  测试风险及规避措施

1.4.3.1 信息收集及工具扫描阶段

1.4.3.1.1 测试风险说明

◇如果网站存在一些文件写入方面的漏洞(如PUT上传漏洞),扫描时可能会自动写入临时文件进行测试,但不对现有的文件进行修改、删除等操作

如果网站存在一些数据插入的功能模块(如留言板、论坛发帖及新建帐号等),可能在扫描时插入大量测试数据

如果网站存在一些数据修改及删除的功能模块(如编辑留言、删贴或删帐号等),可能在扫描时提交修改和删除的操作

在扫描时,由于提交一定数量的HTTP请求,可能会引起服务器负载升高,如果服务器本身就负载较高,可能会导致服务器无响应

某些安全监控设备会可能会对扫描行为发出告警

1.4.3.1.2 风险规避措施

首先建议在测试环境或模拟环境中进行工具扫描

生产环境风险规避措施如下

Ø   工具扫描尽量安排在非工作空闲时间

Ø   扫描前,建议对WEB应用程序和数据库进行备份

Ø   扫描时,请系统相关负责人进行应用状况监控,出现异常时可以及时中断

Ø   扫描后,检查系统运行情况,清理临时文件和临时数据;如果没有权限操作,及时通知系统管理员进行清理(在提交的测试报告中会列出测试中可能留下测试文件和测试数据的地方)

如果不能接受本阶段带来的风险,可以跳过此阶段,但对整体的测试效果有一定影响,如下

Ø   降低渗透测试效率

Ø   漏洞测试不完整

1.4.3.2 弱点验证及人工测试阶段

1.4.3.2.1 测试风险说明

由于需要构造一些特殊的URL或POST请求测试漏洞,可能会插入少量测试数据(如留言板留言、论坛发帖等)

如果网站存在较严重的漏洞、如文件上传、SQL注入或存储型跨站脚本等,可能会在服务器上写入一些临时文件,或在数据库中插入一些临时数据,但不影响网站正常运行

如果网站管理后台存在弱口令或认证绕过等漏洞,可能会登录后台系统进一步测试,但不会修改配置内容

在弱口令测试中,可能会导致后台登陆帐号被锁定

某些安全监控设备会可能会对测试行为发出告警

1.4.3.2.2 风险规避措施

首先建议在测试环境或模拟环境中进行渗透测试

生产环境风险规避措施如下

Ø   测试前,建议对WEB应用程序和数据库进行备份

Ø   测试时,请系统相关负责人进行应用状况监控,出现异常时可以及时中断

Ø   测试后,检查系统运行情况,清理临时文件和临时数据;如果没有权限操作,及时通知系统管理员进行清理(在提交的测试报告中会列出测试中可能留下测试文件和测试数据的地方)

如果不能接受本阶段带来的风险,可以跳过此阶段,但对整体的测试效果有一定影响,如下

Ø   不能验证扫描结果的准确性

Ø   漏洞测试不完整

1.4.3.3 利用测试及风险评级阶段

1.4.3.3.1 测试风险说明

如果网站存在SQL注入等相关数据库方面的漏洞,可能对数据库进行操作,如读取用户表、创建临时表、利用数据反向连接、执行存储过程等

利用本地缓冲区溢出漏洞提权时,可能会导致服务器无响应

测试中可能会上传测试文件,但不会删改已有的正常文件

某些安全监控设备会可能会对测试行为发出告警

1.4.3.3.2 风险规避措施

首先建议在测试环境或模拟环境中进行渗透测试

生产环境风险规避措施如下

Ø   测试前,建议对WEB应用程序和数据库进行备份

Ø   测试时,请系统相关负责人进行应用状况监控,出现异常时可以及时中断

Ø   测试后,检查系统运行情况,清理临时文件和临时数据;如果没有权限操作,及时通知系统管理员进行清理(在提交的测试报告中会列出测试中可能留下测试文件和测试数据的地方)

如果不能接受本阶段带来的风险,可以跳过此阶段,但对整体的测试效果有一定影响,如下

Ø   由于不进行深度利用测试,只能粗略的估计安全弱点可能对应用系统造成的影响,无法准确评估安全风险及风险的严重程度

1.5 实施周期

我们安全提供的渗透测试服务应按照甲方要求,电子渠道系统每月执行一次,实施完成后3日内提交报告,包括但不限于以下系统

Ø  门户网站系统

Ø  网上营业厅系统

Ø  掌上营业厅

Ø  网上商城

Ø  短厅

Ø  自助终端系统

我们安全每二个月提供内网核心系统提供一次完整的评估服务,包括但不限于以下系统:

Ø  BOSS系统

Ø  CRM系统

Ø  经分系统

Ø  BOMC系统

Ø  P-BOSS系统

Ø  VPN系统

Ø  4A系统

Ø  SMP系统

1.6 交付件

《贵公司贵贵系统渗透测试报告》

 

 


上一篇等保咨询服务
下一篇

地 址:上海市普陀区怒江北路399号318室

邮政编码:201101

电 话:021-61472929

传 真:021-61472929

邮 箱:hr@pretops.com

投诉邮 箱:boss@pretops.com