银行业信息安全攻防与风险管控
上QQ阅读APP看书,第一时间看更新

2.2 攻击阶段

如果准备阶段的素材收集充分,试探与分析都比较准确,那么攻击者在攻击阶段便会发动精确攻击,先是巧妙地绕过各个防御系统,然后依据事先制定的攻击路径,进入内网驻留且在目标“合规”的时间段进行内网的横向扩展,以发现高价值目标,并利用系统脆弱性逐步入侵目标系统,在核心系统提升权限,最终取得目标数据的访问权限。

2.2.1 绕过防御机制

在准备阶段里,攻击者已经识别了目标系统中存在的各种防御机制,那么发动攻击的第一步便是选择绕开这些防御机制,目的是在攻击中保持隐身状态,不去触动目标系统中信息安全监控系统的警戒线。攻击者经常会轻松绕过一些主流的防御系统,如防火墙(FireWall,FW)、反病毒(AntiVirus)、入侵检测系统(Intrusion Dection System,IDS)、入侵防御系统(Intrusion Prevention System,IPS)、统一威胁管理(United Threat Management,UTM)、Web应用防护(Web Application Firewall,WAF)等。攻击者采用网络逃逸等技术(详见3.5.3高级逃逸技术AET)绕过防火墙、入侵检测等防御系统,将木马病毒程序植入目标系统,采用病毒免杀等技术绕过反病毒、UTM、WAF等防御系统。

1. 鱼叉式攻击

鱼叉式攻击,又称为鱼叉式钓鱼攻击,是一种针对特定目标的网络钓鱼攻击。鱼叉式攻击一般通过电子邮件等电子方式进行,针对特定企业、组织或个人。通常来说,攻击者会花时间了解攻击目标姓名、邮箱、社交媒体等网络信息,假冒组织、部门、政府机构等名义发送钓鱼邮件,邮件中会包含漏洞文档、可执行程序附件或正文包含恶意网站链接,诱使攻击目标点击或者输入账号密码等,攻击者借机安装木马等恶意程序,持续破坏目标电脑。恶意程序一般首先会进行压缩,以压缩包形态传输,存在少数采用压缩包加密后发送的情况,这种情况一般通过正文或其他方式将压缩包密码提供给攻击目标。通过压缩加密的方式,恶意程序能逃避部分杀毒软件的检测。

鱼叉式攻击具有定制化、精准化的特性,传统的防御机制往往无法有效识别并阻止此类攻击。某个员工一旦不小心点击钓鱼邮件,可能会为企业和组织带来严重后果。除此之外,鱼叉式攻击还可以部署恶意软件来劫持计算机,将该计算机所在的网络变成可用于拒绝服务的庞大僵尸网络。

2. 水坑式攻击

与鱼叉式攻击类似,水坑式攻击的目标也是特定的企业、组织或个人。攻击者首先通过猜测(或观察)确定攻击目标经常访问的网站,然后入侵其中一个或多个网站,植入恶意软件。在攻击目标访问该网站时,会被重定向到恶意网址或触发恶意软件执行,导致攻击目标中部分成员甚至全部成员被感染。水坑式攻击是一种看似简单但成功率很高的网络攻击方式。由于采用曲线攻击方式,绕过企业或组织的防御机制,攻击手段隐蔽,水坑式攻击难以被发现,大大降低了攻击被安全产品检测发现的概率。

3. 病毒免杀

病毒的攻击手段主要有以下四种:编码、加壳、白名单以及进程注入。

(1)编码。正常编写的木马病毒程序如果没有进行编码加密就载入执行,很容易被杀毒软件查杀。一般情况下通过编码绕过反病毒软件的方式有两种:base64加密绕过和XOR加密绕过。

(2)加壳。加壳是一种以文件“穿马甲”形式给程序加密保护的功能,有缩小文件体积、躲避杀毒软件查杀、文件保护的功能。当被加壳的程序运行时,外壳程序先被执行,然后由这个外壳程序负责将用户原有的程序在内存中解压缩,并把控制权交还给脱壳后的真正程序。一切操作自动完成,用户不知道也无须知道壳程序是如何运行的。一般情况下,加壳程序和未加壳程序的运行结果是一样的。

(3)白名单。各大杀毒软件厂商对不知名程序查杀较严,但是对一些比较著名的软件程序设置了白名单,攻击者利用这个特点绑定这些程序后做一些加密处理,就可以在一定程度上逃脱杀毒软件的查杀。

(4)进程注入。进程注入也叫线程插入、DLL注入,对于应用程序来说,进程就像一个大容器。在应用程序被运行后,就相当于将应用程序装进容器里了,攻击者可以往容器里加其他东西(如应用程序在运行时所需的变量数据、需要引用的DLL文件等),当应用程序被运行两次时,容器里的东西并不会被清除,系统会找一个新的进程容器来容纳它。

2.2.2 内网横向移动

内网横向移动攻击指的是攻击者以某台内网主机为跳板,利用已窃取的某个账户(如普通用户或服务账户)的有效凭证,建立与目标主机之间的连接。内网的这台跳板主机通常是一台已被攻陷的主机。在大多数情况下,攻击者会通过包含恶意附件的钓鱼邮件或恶意网站链接,攻陷第一台主机作为跳板。一旦攻击成功,攻击者通常会提升权限、提取存储在源主机中的凭证信息,开展后续的横向移动攻击。

金融企业网络和业务系统众多,网络拓扑一般比较复杂,大部分应用运行在内网中,少部分业务暴露在互联网中,图2-6是银行比较常见的业务系统。银行网络一般由广域网骨干网络、机构总部局域网骨干网络、分支机构局域网骨干网络构成一个整体的网络体系,这些骨干网络由总行、一级分行、二级分行、支行和各个网点组成。银行业务系统由网络设备、安全设备、前置机、终端机构成。由此可见,要完成内网的横向移动可从下面几点进行:

  • 通过前置机终端攻击渗透接入内网
  • 通过业务办公区域的人、无线、终端渗透接入内网
  • 通过银行对外服务业务系统渗透接入内网
  • 通过其他网络第三方接口接入内网
  • 通过下属各单位渗透接入内网

图2-6 银行业务系统

2.2.3 常见的攻击手段

当攻击者完成初步的准备阶段工作,了解完银行的基本网络结构、应用体系以及物理侦察后可通过以下这些比较常见的攻击手段入手,对目标进行渗透攻击。

1. 网络嗅探

任何东西都具有两面性,网络嗅探原本是管理人员用来掌握实时网络情况、测试网络性能、发现网络问题的一种技术,但是在攻击者手里,它可以用来做ARP欺骗、ARP攻击+网络嗅探、协议分析等。

(1)ARP欺骗。地址解析协议是一个位于TCP/IP协议栈中的网络层协议,负责将某个IP地址解析成对应的MAC地址,ARP攻击仅能在以太网(局域网如机房、内网、企业网络等)中进行。ARP攻击的方式较多,常见的有以下几种:仿冒网关攻击、仿冒用户攻击、泛洪攻击。

(2)ARP攻击+网络嗅探。当攻击者身处于局域网中,比如在攻入某台内网服务器的环境下时,往往利用ARP欺骗+网络嗅探组合攻击方式,便能够获取用户的敏感信息。

(3)协议分析。协议分析是指通过程序分析网络数据包的协议头和协议尾,从而了解数据在产生和传送过程中的行为。协议分析的工具包括对DNS、SMB、SSL、IPS/IDS的识别、VPN等,典型工具包括:

1)SMB工具。尝试创建IPC链接和admin链接,如果能成功地创立链接,就代表猜到了用户名和密码。它还可使用用户名和密码字典枚举尝试与目标IP/IP列表进行IPC与admin链接。

图2-7 使用SMB工具猜测用户名和密码

2)SMTP分析工具。smtp-user-enum可以通过请求目标主机枚举一些用户名和密码。

3)SSL分析工具。例如sslscan,其可扫描服务器SSL接受的加密方式、公钥等其他信息。

图2-8 使用SSL分析工具

图 2-9

4)数据包分析工具。Wireshark是一个网络封包分析软件,能帮助使用者对网络行为有更清楚的了解。

图2-10 Wireshark软件

2. 命令执行

(1)系统命令执行。系统命令执行是指攻击者可操控如exec、system等执行系统命令的函数的参数,将输入篡改为恶意系统命令,从而进行系统命令执行攻击。当应用程序在调用这些系统命令函数执行系统命令的时候,如果将用户的输入直接作为系统命令的参数拼接到命令行中,同时又未过滤用户输入的情况下,就会出现命令执行漏洞。

bash远程命令执行漏洞(CVE-2014-6271)的原理:bash除了可以将shell变量导出为环境变量,还可以将shell函数导出为环境变量!当前版本的bash通过以函数名作为环境变量名,以“(){”开头的字串作为环境变量的值来将函数定义导出为环境变量。

(2)代码命令执行。在应用系统中,有时候会用到一些命令执行的函数,如php中system、exec、shell_exec等,当程序没有对用户输入的命令进行限制或者过滤不严导致用户可以执行任意命令时,就会出现代码命令执行漏洞。

(3)文件上传。文件上传漏洞是指攻击者利用服务器漏洞上传了一个可执行的脚本文件,并通过此脚本文件获得了执行命令的能力。这种攻击方式是最为直接和有效的,技术门槛较低。

3. 注入

(1)SQL注入。SQL注入是指攻击者在前端提交的请求参数中构造恶意的SQL语句,传入后台相关程序处理后在数据库中执行,从而达到非授权的增删改查数据库的目的。当攻击者发现此类漏洞后,一般都会对数据库中的敏感信息进行窃取、修改甚至是删除的操作。

SQL注入按参数类型可以分为两种:数字型和字符型。当注入点参数为整数时,属于数字型注入。当注入点参数为字符串时,属于字符型注入,需要引号来闭合。SQL注入按数据库返回结果可以分为三类:回显注入、报错注入、盲注,其中:

  • 回显注入:直接在存在注入点的当前页面中获取返回结果
  • 报错注入:程序将数据库的返回错误信息直接显示在页面中,虽然没有返回数据库查询结果,但可通过构造一些报错语句从错误信息中获取想要的结果
  • 盲注:程序后端屏蔽了数据库的错误信息,没有直接显示结果也没有报错信息,只能通过数据库的逻辑和延时函数来判断注入的结果。盲注根据不同表现形式可以细分为基于布尔型SQL盲注和基于时间型SQL盲注

(2)XML注入。XML是用于标记电子文件使其具有结构性的标记语言,通常用来标记数据、定义数据类型,它是一种允许用户对自己的标记语言进行定义的源语言。XML文档结构包括XML声明、DTD文档类型定义(可选)、文档元素。当XML允许引用外部实体时,攻击者可通过构造恶意内容,导致读取任意文件、执行系统命令、探测内网端口、攻击内网网站等危害。

(3)XPath注入。XPath注入攻击是指利用XPath解析器的松散输入和容错特性,能够在URL、表单或其他信息上附带恶意的XPath查询代码,以获得权限信息的访问权并更改这些信息。XPath注入攻击是针对Web服务应用新的攻击方法,它允许攻击者在事先不知道XPath查询相关知识的情况下,通过XPath查询得到一个XML文档的完整内容。XPath是xml的路径语言,用于配置文件的查找。它的数据库就是XML文件。

4. 跨站类攻击

跨站类攻击也称为XSS跨站脚本(Cross Site Scripting,XSS),当目标网站目标用户浏览器渲染HTML文档时执行未预期的脚本指令,此时就发生跨站脚本攻击。通常分为三类:反射型跨站脚本、存储型跨站脚本和DOM型跨站脚本。

(1)反射型跨站脚本。反射型跨站脚本又称非持久性跨站脚本,它是指攻击者发送带有恶意参数的URL,当此URL地址被用户点开时,所包含的恶意参数即会被浏览器解析、执行,从而达到入侵的目的。它的特点是非持久化,必须由用户点击带有特定参数的链接才能触发。反射型跨站脚本的测试语句千变万化,这是由于大多数用户都会使用过滤器及部分安全产品来防范此类攻击,因此攻击者通常会以查看源代码的方式来构造不同反射性跨站脚本的语句。

(2)存储型跨站脚本。攻击者提交恶意脚本至服务器,由于服务器未过滤或者过滤不严而导致恶意脚本存储在服务器的存储介质中,当脚本调用该数据并输出至用户端浏览器等载体中进行解析时,就此触发该恶意脚本并且遭受攻击。由于该类型恶意数据的持久特性,因此称该漏洞为存储型跨站脚本。

(3)DOM型跨站脚本。DOM型跨站脚本与反射型跨站脚本、存储型跨站脚本不同,其差别在于DOM型跨站脚本代码不需要服务器为其解析响应,触发跨站脚本是依靠浏览器的DOM解析。DOM是指文档对象模型(Document Object Model),可以理解为JavaScript执行的输出页面,因此DOM型跨站脚本是由客户端直接触发执行的。

5. 中间人攻击

中间人攻击的思路就是劫持局域网中被攻击机器和服务器间的对话。被攻击机器和服务器表面上工作正常,实际上已经被中间人劫持。网站开发使用HTTPS传输协议时未对本地和服务器证书进行校验,导致攻击者可使用中间人攻击窃取和伪造数据。客户端和服务端通信时需交互大量数据,其中的密码、身份证号、Token、ID、配置信息等敏感信息在传输时若未经加密,攻击者便可通过中间人抓包等手段获取明文的敏感信息,导致个人及企业遭受不必要的损失。

6. 中间件缺陷攻击

中间件是提供系统软件和应用软件之间的连接,在应用框架如Web服务、面向服务的体系结构等框架中应用非常广泛,例如Apache的Tomcat,IBM的WebSphere,Oracle的WebLogic以及国内厂商的中间件产品。中间件的安全问题主要来源于两部分,自身由于设计缺陷而导致的安全问题,以及默认配置或错误配置导致的安全问题。

中间件自身缺陷的典型例子是Java反序列化漏洞,大多数的金融机构业务系统会使用Java开发,在Java开发中有一种机制是序列化和反序列化,用来将Java中的对象的状态加以转换,以方便轻松地传输或保存Java对象,ObjectInputStream类的readObject()方法是被设计用来进行Java对象的反序列化的,在正常情况下,数据流被反序列化后会得到预期的对象,但readObject()方法在执行时并没有对输入数据流做安全性校验,如若被选序列化的数据是一组被攻击者恶意构造的序列化数据流,那么就会发生非预期的结果,虽然程序会抛出Exception异常,但事实上这个对象已经被创建出来,构造函数已经被调用执行了,这就为远程命令执行提供了可能。通过Java反序列化漏洞,攻击者可用来攻击主流中间件,包括WebLogic、WebSphere、JBoss等,实现远程代码执行。

配置错误通常包括默认口令或弱口令、访问目录未限制、分配权限过大等。以开源中间件Tomcat为例,Tomcat支持远程部署,通过访问管理地址远程上传WAR格式的文件,便可以发布到网站,方便开发人员部署代码。另外,管理地址如使用默认口令或弱口令,攻击者可远程上传木马,控制服务器。

7. 配置类攻击

(1)协议配置。协议配置主要有两种方法。

1)HTTP方法。除标准的GET和POST方法,HTTP请求还使用其他各种方法。许多这类方法主要用于完成不常见与特殊的任务。如果低权限用户可以访问这些方法,他们就能够以此向应用程序实施有效攻击。

2)WebSocket测试。WebSocket是一个能够给单TCP连接提供全双工信道的HTML5特性。它的持续性连接功能,使得构建B/S模式的实时应用成为可能。WebSocket常常用在那些带有聊天功能的WEB应用上。不幸的是,WebSocket相关的安全漏洞也逐步被披露出来,其中最容易发生的就是跨站点WebSocket劫持漏洞。

(2)组件配置。组件配置主要面临4个漏洞。

1)默认凭证。默认凭证漏洞是指组件使用默认配置运行所带来的安全问题。例如很多中间件默认配置会存在默认的管理员登录密码等。

2)目录遍历。对于安全的Web服务器来说,所承载的Web内容应当进行恰当的访问控制,这是极为关键的。目录遍历是HTTP存在的一个安全漏洞,它使得攻击者能够访问受限制的目录,并在Web服务器的根目录以外执行命令。

3)PaddingOracle测试。PaddingOracle针对的是加密算法中的CBCMode,当加密算法使用CBCMode时,如果满足攻击条件,那么利用PaddingOracle能够在不知道密钥的情况下,解密任意密文,或者构造出任意明文的合法密文。

4)SSL/TLS加密算法测试。安全套接层(Secure Sockets Layer,SSL)及传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。TLS与SSL在传输层对网络连接进行加密,是一个被广泛使用的加密协议。SSL/TLS协议加密算法RC4存在漏洞。由于通过“受戒礼”攻击,攻击者可以在特定环境下只通过嗅探监听就可以还原采用RC4保护的加密信息中的纯文本,导致账户、密码、信用卡信息等重要敏感信息泄露,并且可以通过中间人攻击(Man-in-the-middle)进行会话劫持。

(3)策略配置。策略配置主要面临4个漏洞。

1)弱密码规则测试。通过在用户注册页面查看分析密码规则,攻击者可根据系统密码强度校验机制的不完善来破解用户账号密码。例如部分网站密码规则校验不完善,用户注册时可使用弱口令作为密码,存在安全隐患。

2)错误代码分析。尝试访问不存在的页面,构造一些恶意或者非恶意的字符串提交,获取服务器返回错误信息,错误信息中可能会泄露网站目录、网站容器等信息,攻击者可通过收集这些信息来制定下一步攻击策略。

3)代码异常处理攻击。代码的异常处理,是指代码运行异常后导致错误处理行为。代码异常处理出现的原因主要是由于开发人员对代码运行出现异常后的处理不当造成的。攻击者可提交敏感参数致使程序抛出异常,某些异常页面可能导致一些敏感信息的泄露。

4)敏感信息泄露。敏感信息是指不为公众所知悉,具有实际和潜在利用价值的信息。攻击者通常会通过分析各个请求和响应数据,查找敏感数据,收集网站的敏感信息以制定下一步的攻击策略。

(4)账户配置。账户配置主要面临3个漏洞。

1)账户恶意锁定。攻击者提交大量异常操作数据造成正常账户无法登录。例如很多网站有登录次数限制,如果账号密码连续输入错误超过指定的次数,就会锁定该账号一定的时间。

2)登出测试。登出测试是指用户正常退出系统后,攻击者尝试使用上次登录的cookie做登录测试,验证是否能登录成功。部分网站账号登出后仅设置了新的cookie,而没有将之前的cookie做失效处理,导致利用旧cookie仍能成功登录。

3)用户账户唯一性测试。用户账户唯一性测试是指攻击者尝试使用相同的账号注册多个用户,观察是否能注册成功。

8. 业务逻辑攻击

在业务应用开发过程中,开发者未对数据、流程进行保密性、完整性以及可用性校验,攻击者通过篡改参数、绕过流程校验步骤等方式实现对业务逻辑的攻击,导致资金损失、隐私泄露、非授权访问等业务问题。

(1)数据篡改。数据篡改主要分为3种形式。

1)金额数据篡改。抓包修改金额等字段,例如在支付页面抓取请求中商品的金额字段,修改成任意数额的金额并提交,查看能否以修改后的金额数据完成业务流程。

2)商品数量篡改。商品数量篡改是指攻击者按照正常流程下单后,抓取有商品数量的数据包,修改商品数量为负值,购买后支付金额为负值,直接从网站运营者处获得正值金额,从而导致网站运营者的直接经济损失。

3)最大限制突破。很多时候,开发人员为了提升服务器效率,会将一些流程设计在客户端完成校验,如字符输入的长度、字符类型等。当这些限制在客户端进行的时候就可能会产生一系列的安全问题,攻击者可以修改客户端验证字段,轻松绕过安全设置的限制。

(2)密码找回漏洞。密码找回漏洞主要分为以下13种形式。

1)用户凭证暴力破解。用户凭证暴力破解是指网站未对用户登录次数做限制,导致攻击者可以使用账户密码字典不断尝试登录系统。

2)返回凭证。返回凭证是指验证码输出在客户端或者cookie中,导致攻击者可以直接从客户端代码查看验证码。

3)邮箱弱Token。Token就是令牌,最大的特点就是随机性、不可预测,攻击者很难猜测。Token的作用一般在两个地方,一是防止表单重复提交,二是anticsrf攻击,两者在原理上都是通过SessionToken来实现的。当客户端请求页面时,服务器会生成一个随机数Token,并且将Token放置到Session中,然后将Token发给客户端,下次客户端提交请求时,Token会随着表单一起提交到服务器端。

邮箱弱Token是指邮箱登录或者其他一些需要防止恶意提交的地方采取Token防护机制,但是因为邮箱服务器返回到客户端的Token可以猜测或者服务端未对返回的Token校验造成Token防护机制形同虚设。

4)用户凭证有效性。服务端发送的验证凭证无效导致攻击者可以直接修改任意用户的密码。

5)重新绑定。很多网站为了加强用户账户的安全会采用多因素认证,最常见的办法就是通过绑定手机号或者绑定邮箱的方式实现;但是部分网站手机或邮箱绑定业务程序存在缺陷,致使攻击者可以修改绑定的手机号,攻击者修改绑定的手机号码后可以按照正常流程找回密码或者越权访问绑定手机号的相关信息。

6)服务器验证。服务端发送的验证凭证可控导致攻击者可以修改他人的密码。

7)用户身份验证。部分网站身份校验不严格,校验短信验证码时使用cookie校验,而不会校验请求中的手机号,这样导致攻击者可以把手机号改为目标用户手机号,从而重置任意用户密码。

8)密码找回。密码找回功能本意是设计给那些忘记密码的用户,以便他们能够找回自己的密码。找回密码的步骤一般是:输入用户名→验证身份→重置密码→完成。但攻击者通常会尝试跳过验证身份环节、找回方式环节,直接跳到重置密码界面。

9)本地验证。本地验证是指重置密码过程中,在本地验证服务器返回的信息来确定是否执行重置密码请求,但是返回的信息中有可控内容,攻击者可通过修改可控内容控制重置流程。

10)注入。通常“找回密码”的环节,某些参数过滤不严会导致存在SQL注入。

11)Token生成。一个正常的找回密码流程应该遵循以下步骤:填写找回账号→选择通过邮箱找回→服务器发送验证码到邮箱→邮件中给出一串链接,链接中包含找回账号及一串Token进行校验,此时再点击链接即可进行密码找回。攻击者通常会对此处的Token加以利用。网站本是想通过Token校验找回密码链接是否正确,但是一旦Token生成不够复杂,便容易被攻击者猜测到,导致了任意账号密码重置。

12)注册覆盖。注册覆盖是指在用户注册时没有校验用户是否注册过,当注册相同用户名的账号时,覆盖了之前的账号信息。

13)Session覆盖。Session实际上是一个特定的时间概念,代表浏览器与服务器的一次会话过程。例如在我们浏览百度网站的时候,从打开网站到关闭网站的时间段就是一个Session。

(3)验证码突破。验证码突破的方式有以下4种。

1)暴力破解。验证码暴力破解是指根据网站验证码变化规律生成对应的字典表,字典表包括了所有验证码可能的情况范围,并对在此范围内的所有可能情况逐一验证,直到全部验证完毕。很多网站验证码时效设置较长,且没有对验证码频率做限制导致了验证码暴力破解。

2)时间次数突破。部分网站验证码没有过期处理,导致攻击者可以反复使用之前的验证码从而绕过验证码限制。抓取携带验证码的数据包不断重复提交,例如在某网站投诉建议页面输入要投诉的内容信息及验证码参数,此时抓包重复提交数据包,查看历史投诉中是否存在重复提交的参数信息。

3)回显测试。部分网站验证码输出在客户端,攻击者可通过抓包获取服务端返回的验证码。当客户端有需要和服务器进行交互,发送验证码时,使用firefox浏览器,通过按F12调出firebug即可看到客户端与服务器进行交互的详细信息。

4)绕过测试。绕过测试是指篡改或者清空验证码,验证该步骤验证码是否可以绕过。某网站通过验证码对暴力破解做了防范,当登录一个账号密码错误时,再次登录就需要填写验证码。

(4)授权攻击。授权攻击的方式主要有以下两种。

1)未授权访问。非授权访问是指用户在没有通过认证授权的情况下,能够直接访问需要授权才能访问到的页面或文本信息。

2)越权测试。越权漏洞的成因主要是因为开发人员在对数据进行增、删、改、查询时对客户端请求的数据未进行权限的判定,越权可分为垂直越权、水平越权:

  • 垂直越权是指使用低权限用户访问高权限用户才能访问到的内容
  • 水平越权是指可以使用相同级别不同用户的访问权限

(5)业务流程乱序。业务流程乱序的方式主要是程序执行缺陷。开发者进行程序开发时设计的网站逻辑通常是这样:首先进行A过程→其次进行B过程→再次进行C过程→最后进行D过程。程序执行缺陷是指攻击者能够修改程序执行的流程,例如从B过程直接进入D过程,绕过C过程的攻击手段。如果C是支付过程,那么用户就绕过了支付过程而买到了一件商品。如果C是验证过程,那么用户就绕过了验证过程直接进入网站程序。

(6)业务接口调用。业务接口调用的方式主要有以下3种。

1)恶意注册。一般网站开发者为了保证注册用户的真实性,往往都会要求验证手机、验证邮箱,通过发送验证码的方式来保证注册账号并非僵尸账号。但是攻击者会利用部分网站验证码功能可被绕过的缺陷,进行恶意注册,导致系统新增大量无用数据。

2)短信炸弹。短信炸弹是一种类似于DDoS的攻击方式,攻击者利用网站发送短信功能未做限制,长时间不间断对用户的手机发送短信,导致手机瘫痪。很多网站仅在前端通过JS校验时间来控制短信发送按钮,但后台并未对发送次数做任何限制,导致攻击者可通过重放包的方式大量发送恶意短信。

3)短信内容编辑。短信内容编辑是指攻击者通过抓取数据包分析,发现参数如sendData/inserttxt的内容由客户端控制,攻击者可将短信内容修改为任意想要发送的内容进行短信欺诈。

(7)时效绕过安全。时效绕过安全的方式主要有以下两种。

1)时间刷新缺陷。时间刷新是指针对那些需要每隔一段时间定时刷新的业务,由于时间刷新控制代码存储在客户端,导致攻击者可以将时间关联变量重新设置成1s或者更小的缺陷。

2)时间范围攻击。时间范围测试是指针对带有时间限制的业务,修改其时间限制范围,例如在某项时间限制范围内查询业务,修改含有时间明文字段的请求并提交,查看是否能绕过时间限制完成业务流程。例如:通过更改查询手机网厅的受理记录的month范围,可以突破默认只能查询6个月记录的限制。

9. 拒绝服务攻击

拒绝服务攻击(Denial of Service,DoS)是以破坏目标系统业务连续性为目的的攻击行为,它通过发送海量的有效或无效的数据报文,致使目标网络出口过载拥堵,或是使得目标系统超负载运作、崩溃,无法正常对外提供服务。

DoS的攻击原理并不复杂,攻击者利用向目标系统发送大量的虚假源地址报文,使得目标系统接收后占用一定的系统资源等待后续报文,由于攻击报文的源地址是伪造的,因此目标系统不可能接收到回应,系统资源便会一直得不到释放,从而导致系统资源耗尽,无法提供正常业务的处理与响应。常见的DoS攻击有SYNFlood、UDP洪水攻击、Ping洪流攻击、Ping of Death攻击、TearDrop攻击、Land攻击等。

SYNFlood利用服务器的连接缓冲区和特殊程序设置TCP的Header,向服务器不断成倍发送具有只有SYN标志的TCP连接请求。当服务器接收之后,判断为均是没有建立起来的连接请求,于是给这些请求建立会话,排到缓冲区队列中。直到发送的SYN请求超过了服务器的缓冲区,服务器便不再接受其他的合法请求。

(1)UDP洪水攻击。攻击者利用简单的TCP/IP服务,如Chargen和Echo来传送毫无用处的占满带宽的数据。通过伪造与某一主机的Chargen服务之间的一次的UDP连接,回复地址指向开着Echo服务的一台主机,这样就生成在两台主机之间存在很多的无用数据流,这些无用数据流就会导致带宽的服务攻击。

(2)Ping洪水攻击。由于在早期的阶段,路由器对包的最大尺寸都有限制。许多操作系统对TCP/IP堆栈的实现在ICMP包上都是规定64KB,并且在对包的标题头进行读取之后,要根据该标题头里包含的信息来为有效载荷生成缓冲区。当产生畸形的,声称自己的尺寸超过ICMP上限的包也就是加载的尺寸超过64KB上限时,就会出现内存分配错误,导致TCP/IP堆栈崩溃,致使接收方死机。

(3)TearDrop[1]攻击。泪滴攻击利用在TCP/IP堆栈中实现信任IP碎片中的包的标题头所包含的信息来实现自己的攻击。IP分段含有指明该分段所包含的是原包的哪一段的信息,某些TCP/IP(包括service pack 4以前的NT)在收到含有重叠偏移的伪造分段时将崩溃。

(4)Land攻击。Land攻击原理是用一个特别打造的SYN包,它的原地址和目标地址都被设置成某一个服务器地址。此举将导致接收服务器向它自己的地址发送SYN-ACK消息,结果这个地址又发回ACK消息并创建一个空连接。被攻击的服务器每接收一个这样的连接都将保留,直到超时。不同操作系统对Land攻击反应不同,许多Unix将崩溃,NT变得极其缓慢(大约持续5分钟)。

(5)Smurf攻击。一个简单的Smurf攻击原理就是:通过使用将回复地址设置成受害网络的广播地址的ICMP应答请求(ping)数据包来淹没受害主机的方式进行攻击。最终导致该网络的所有主机都对此ICMP应答请求做出答复,从而造成网络阻塞。它比Ping of Death的流量高出1个或2个数量级。更加复杂的Smurf将源地址改为第三方的受害者,最终导致第三方崩溃。

DoS攻击经常被用来瘫痪目标系统,同时它也能用来干扰部分安全防御系统,使其失去辨识能力,其攻击力度强、威胁巨大、反攻击成本高,因此成为目前攻击者最喜欢的攻击手段之一。

随着系统性能的飞速发展,攻击者原本使用的单一的攻击程序已无法造成瘫痪高性能的目标系统的目的,这时攻击者会扩大攻击源的规模,利用诸如僵尸网络那样庞大的受控系统内大量的信息节点,同时启动攻击程序,制造海量的攻击报文像洪水一般涌向目标系统,即使目标系统的性能再强大,也会因为资源有限而力不从心。这样的新型攻击方式被称为DDoS。

DDoS是在DoS攻击基础之上产生的一类攻击方式。单一的DoS攻击一般是采用一对一方式进行,而DDoS则可以利用网络上已被攻陷的计算机作为“僵尸”主机针对特定目标进行攻击。所谓“僵尸”主机,即感染了僵尸程序(即实现恶意控制功能的程序代码)的主机,这些主机可以被控制者远程控制来发动攻击。在“僵尸”主机量非常大的情况下(如10万甚至更多),可以发动大规模DDoS攻击,其产生的破坏力是惊人的。


[1] TearDrop攻击,又称泪滴攻击。