摘要:本文浅谈了盗取比特币的黑客技术,并在此基础上运用编程和一些工具对自有网站和主机进行了攻击实践,希望能为普通用户的数字货币资产安全防护提供一点参考。

黑客盗取比特币的活动屡见报道,这不光使得个人和机构资产出现巨额损失,而且其中的交易所被盗事件还会对市场行情产生影响,引发价格波动。在这样的形势下,资产安全防护已成为个人和机构考虑的首要问题。

因此,对于普通用户而言,了解一些黑客基础技术或许是有一定意义的。本文对网站渗透、木马、宏病毒和DDoS攻击进行了相关的浅显的介绍,为了更形象地说明问题,编写了较为简单的程序并利用一些工具对自有网站和主机进行了攻击实践。

一、网站渗透[1]- [3]

(一)网站渗透——Web应用威胁分析

Web应用程序的体系构架一般被分为上、中、下三个层次,其中上层是与业 务相关的应用程序,中间层是通用组件及Web服务器相关的服务如数据库服务, 底层为操作系统。若其中任何一层出现安全问题或存在安全隐患都会导致整个 Web应用受到安全威胁。

由于现阶段发现和公布安全漏洞的实时性,时不时会有不法分子利用公开的漏洞对各个层次的服务进行攻击,如(1)对底层——利用操作系统漏洞对底层的操作系统进行远程攻击;(2)对中间层——利用运行在Web服务器上的脚本程序(asp、jsp、php等)的漏洞、Web服务器漏洞、数据库服务器漏洞对中间层进行攻击;(3)对上层——利用SQL注入漏洞、XSS漏洞等对网页程序进行攻击。

另一方面,即使Web应用部署了防护设备并采取了一定的防护手段,安全威胁一样可能随时产生,究其原因是因为防火墙或IDS无法实时进行阻断攻击,且受配置参数影响检测精度有限,仅起到亡羊补牢的作用,因此,Web应用程序自身存在漏洞、程序关键参数配置不当及缺少安全防护手段等安全隐患是导致Web应用程序安全事件频发的主要原因。

Web应用受到威胁还有一部分原因可归结为以下几点:一是有的网站建设人 员在建站过程中使用了自身存在安全漏洞的建站模块对网站进行架设;二是在自主开发Web应用程序时,编程人员安全意识不高,未对用户的输入数据进行处理,导致数据过滤不严;三是缺少专业技术人员对Web应用程序进行管理,导致Web应用程序自身参数配置不当;四是Web应用管理人员技术水平不高或者未能履行自身职责,未能对应用程序进行定期安全加固及安全检查;五是没有一个高效的Web应用安全防范策略给管理员进行参考。

现在很多的企业给自己的网络应用了入侵检测系统、网络防火墙、VPN、网络防病毒系统等,但往往不能实现有效的安全。虽然我们应用了诸多的安全设备,但是Web服务还是要对外开放的,也就是说80、443端口需要开放——80及443是HTTP及HTTPS服务的端口。由于防火墙一般不会对经过80端口的数据包进行拦截,所以从研究攻击路径的角度出发,黑客会选择从HTTP等协议端口进行入侵,扫描Web应用程序和服务器等漏洞,发动网络攻击。

(二)主要的几种网站漏洞

根据世界知名的Web安全与数据库安全研究组织OWASP提供的报告,目前对 Web业务系统,威胁最严重的两种攻击方式是SQL注入攻击(SQL Injection)和跨站脚本攻击(XSS)。

攻击者在SQL注入成功后,可能会拥有整个系统的最高权限,可以修改页面和数据,在网页中添加恶意代码,还可以通过查看数据库来获得所有关键数据信息,危害极大。跨站脚本攻击是向Web系统提交恶意脚本,当访问者浏览受到攻击的网页时,会导致恶意脚本被执行,从而泄露用户密码等敏感信息。如果访问者是管理员,则Web系统的管理员权限将有可能泄露,使得攻击者可以提升权限,甚至控制整个网站,其威胁程度更大,威胁波及面更广,同时攻击过程也更加复杂多变。

下面我们先对以上两种漏洞进行介绍,然后再介绍上传漏洞和旁注漏洞:

1、SQL注入漏洞

这种漏洞对网站最具威胁性,一旦攻击成功将能得到网站后台数据库中的所有数据,在这些数据中很有可能包括网站管理员的用户名以及密码,据此进而可能进一步控制整个网站服务器。

该漏洞的成因主要是由于网页编程人员在编写动态脚本页面的时候没有对用户输入的数据进行合法性的判断以及必要的过滤,把用户输入的数据原原本本的提交到后台数据库,并且后台数据库在查询时仅仅是使用预存的SQL查询语句与用户提交的语句进行拼接。那么当该页面需要进行数据库查询时,攻击者可以在提交给数据库的命令中添加自己的数据库查询语句,而这时由于页面没有对于用户的输入进行判断过滤,使得这些数据将会被提交到数据库中执行,并返回相应的数据给代码提交者。这样攻击者便能通过一次次的数据库查询得到整个数据库中的所有数据。通过这种方法不仅能得到攻击者想要得知的数据库数据,还能达到绕过登录验证、执行系统命令和上传监控软件的目的。

SQL注入攻击时提交的输入信息所形成的交互信息与一次正常的页面访问是相同的,不同之处是提交的页面参数是攻击者精心准备并能达到某种目的的数据库查询或者其他一些数据库命令,所以常见的网络防火墙以及防病毒软件等都不会对SQL注入发出警报。如果网站管理员没有定期地查看网站日志信息或者有意识地检索近期上传文件列表的话,可能网站被入侵很久都不会有所察觉。

另外,SQL注入的方法是相当灵活的。在实际进行SQL注入评估时会碰到很多不同的情况(有些网站可能对用户的输入数据进行了过滤,但又过滤得不完整,或者可以使用Cookie注入,使用Cookie信息进行查询字符的拼接),因此在实际检测时需要根据当时的具体情况进行分析,构造合适的SQL语句,从而达到成功获取数据的效果(对于有输入过滤的页面,需要根据不同的情况变换输入数据)。

2、跨站脚本漏洞

跨站脚本漏洞是指恶意用户在网站上的某些可以留言或者其他一些网页上添加精心构造过的HTML脚本代码,并且网站服务器会解析执行这些脚本代码。那么在其他用户访问该页面的时候,嵌入的脚本代码就会被解析执行,从而实现这些经过精心构造的脚本的功能。

跨站脚本漏洞的攻击是属于被动式的攻击,无论嵌入的脚本是在网站的网页中还是在邮件中,都需要用户进行了访问或者点击才能达到预定的效果,这与上文提到的SQL注入攻击的主动方式有较大的区别。

3、上传漏洞

可以上传文件并且该文件上传之后可以到指定网站虚拟目录中进行访问的网站或者论坛上可能会存在上传漏洞。利用上传漏洞可以向网站上传Web shell(Web shell为能达到隐蔽控制效果的网页后门程序,通常有执行cmd命令、查看磁盘文件信息、控制系统等功能)。一旦有Web shell上传到网站上,那么该网站将可能会被长时间地侵入,使网站上的信息以及用户的数据变得不再安全,并且也可能会威胁到同在一个虚拟主机上的其他网站服务器。

上传漏洞形成的原理为:在文件上传时可以更改添加文件类型或者通过/0截断字符串的方式把原本上传的文件类型改为Web shell的文件类型。通过以上的类似方法来绕过类型验证程序达到上传指定文件的目的。

针对于该漏洞的渗透就是在确定能上传的基础上,上传能进一步收集信息和检测的Web shell网页后门。若上传文件大小受限,则还需先上传小型的一句话Web shell或者其他小型Web shell。

4、旁注漏洞

当网站本身不存在漏洞时,若网站服务器运行的虚拟主机上其他的网站存在漏洞,那么也有可能导致该不存在漏洞的网站遭到攻击,这就是旁注漏洞攻击。

旁注漏洞原理是,通过查询同一IP地址上(也就是同一虚拟主机)的其他域名,查看服务器上是否存在可以被利用的漏洞。通过入侵有漏洞的网站,进一步入侵虚拟主机,最后使没有漏洞的网站遭到入侵。

评估网站旁注漏洞的主要原理是,使用whois技术查看同一虚拟主机上是否存在多个网站服务器,如果存在则可能存在旁注漏洞。

(三)Web渗透测试

渗透测试并没有一个标准的定义。国外一些安全组织达成共识的通用说法是,渗透测试是通过模拟恶意黑客的攻击方法,来评估计算机网络系统安全性的一种评估方法。

利用渗透测试技术进行系统安全评估与常用的评估手段有所不同。相比较而言,通常的安全评估方法对被测试系统的评估更具有全面性结果,而渗透测试则更注重安全漏洞的危害性及严重性。在进行渗透测试时,渗透测试人员会站在恶意攻击者的角度,模拟恶意攻击者的思维及利用漏洞发现技术和攻击手法,发现被测试系统中潜在安全隐患及脆弱环节,从而对被测试系统做的一次深入性的安全检测工作。在进行测试过程中,测试人员会采用包括目录猜解、口令猜测、密码破解、端口扫描、漏洞扫描等技术手段,通过不同途径来对被测试网络的各个环节进行安全性检测。

四)Web渗透测试的基本步骤

1、信息收集

对目标网络进行侦查之前,首先要收集汇总各种与目标系统有关的信息,形成对目标网络必要的轮廓认识,并为实施攻击做好准备。

信息的收集可以通过这几种方式进行:DNS域名服务,Finger服务,Whois 服务,Nslookup,Ping与Path Ping,Tracert等信息查询。

2、扫描

通过信息收集掌握了目标网络的外部特征信息之后,可以对目标网络进行有针对性的扫描,扫描的最终结果决定了能否对目标网络进行攻击,任何扫描得到的漏洞信息,都可能成为突破网络的切入点。

当然扫描得到的结果不一定就是可以直接利用的系统漏洞。从利用方式来说,可以将信息分为两类:一类是安全敏感信息,这包括第一阶段收集到的信息,以及扫描阶段得到的关于端口开放以及操作系统类型信息,这些信息虽然不能直接用于对目标网络的渗透与攻击,但有助于全面了解目标网络的信息;另一类就是安全漏洞信息,这类安全漏洞可能是系统配置上的疏忽造成的(例如没有及时打补丁),也可能是操作系统或应用程序自身的缺陷,结果是都可能导致利用漏洞突破并控制目标网络。

探测类扫描的常用手段有:端口扫描、操作系统探测、应用服务探测、路由器探测、防火墙探测等。

漏洞发掘类扫描主要有:Web、CGI安全漏洞扫描,Windows、Unix、Linux操作系统漏洞扫描,SNMP漏洞扫描、SQL Server等数据库服务漏洞扫描,路由器、防火墙漏洞扫描。

扫描过程实际上已经与目标主机或网络发生物理链接,可以看作是程度较轻的攻击行为。扫描结果决定了攻击者的下一步行动。

3、攻击

通过信息收集和扫描阶段得到相关线索以后,经过分析和筹划,下一步就可以采取各种手段以实现直接的攻击目的。

从黑客攻击的目的来看,可以分为两种,一种是给目标以致命打击,使目标系统受损,甚至瘫痪;另一种攻击则更加常见,其目的在于获取直接的利益,比如下载到目标系统的机密信息,或者是得到目标系统的最高控制权,在此过程中,攻击者无意对目标系统的正常能力进行破坏,他可能更希望非常隐蔽地实现自己的目的。

4、植入后门

在一次成功的攻击之后,为了以后的再次进入和控制目标主机,一般要放置一些后门程序。由于网络主机系统经常升级,一些原来被利用突破系统的漏洞在系统升级以后就可能被修补,而后门程序就可以不依赖于原来用于突破的漏洞,保持长期稳定的控制能力。后门可能是一个隐藏的管理员账号、一个具有超级权限的服务进程,有时甚至是一个故意置入的系统漏洞。好的后门程序在保证最高的系统权限的同时,必须不易被目标用户察觉。许多木马程序、远程控制程序都可以作为后门程序植入,最新的一些后门采取可卸载内核模块(LKM)的办法,动态地修改系统内核,一般情况下无法检测出来。功能强大的后门程序,可以利用被控主机运行扫描、嗅探等技术突破整个网络。

5、消除痕迹

作为一次完整的Web攻击,黑客在取得需要的战果以后,就要打扫战场了,也就是消除痕迹。在信息收集、扫描、攻击阶段,即使采取了许多防护措施,也会留下直接或间接的攻击痕迹。攻击痕迹可能会在目标主机的管理员进行例行检查时暴露出来,进一步的安全检查则可能导致攻击行为的完全暴露,甚至发现植入的后门程序;攻击痕迹也可能使富有经验的安全调试员反向跟踪到真正的攻击源头,同时,攻击痕迹是攻击技术和手段的直接反映。

消除痕迹是一项细心的工作,系统的审计日志、Web的访问记录、防火墙的监控日志、攻击留下的残余线索都必须认真清理。对于一些必须留下的后门程序,需要采取进程掩藏、文件隐藏、核心文件替换、程序加密等多种手段避免被发现。

最后,作为Web 渗透测试人员在进行上述测试内容的基础上,还要为被评测单位出具风险评估报告,从而形成一次完整的渗透测试服务。

需要注意的是,真实的网站中有许多可能存在漏洞而被黑客攻陷,从而导致网站被挂马和植入病毒等恶意操作,这使得我们在进行Web渗透测试时可能会中病毒,故可以考虑安装虚拟机,在虚拟机环境中进行安全测试,从而减少本地计算机受危害的几率。

(五)网站渗透实践

1、密码破解攻击实践

假如我们知道某自有测试网站中某用户的ID,可以尝试进行密码破解攻击。安装Python的sqlmap模块,将其中的wordlist.tx_文件解压后得到wordlist.txt文件,该文件中包含超过120万个密码。编写程序,以便从该文件中逐个读取密码,反复尝试登录,直到获得正确的密码:

图1

2、Web shell攻击实践

在获知用户ID和密码的情况下有多种方式可以获得完整或不完整的Cookie(包括手动登录网站,找到完整Cookie进行复制),而采用Python的Selenium模块一般可以获得完整的Cookie,以便程序登录我们的某自有网站。Selenium模块是一个用于Web应用程序测试的工具,它直接运行在浏览器中,就像真的用户在操作一样。在获得了完整的Cookie后,使用程序来进行各种操作就很便捷了。

编写一个简单的窃取Web服务器的多种环境信息的文件webshell.html,尝试使用程序或手动将其上传至某自有测试网站,这可借助该网站登录后可上传如头像之类的功能来实现。对于头像,由于按网站限制往往只能上传图像格式,因此先把待传文件的扩展名进行修改,例如改为webshell.jpg。

使用Fiddler可在一定程度上绕开网站对图像上传格式的限制。Fiddler是一个免费的Web调试代理工具,它记录计算机和因特网之间的所有HTTP(S)流量,可以检查通讯,设置断点和处理请求/响应。我们使用Fiddler设置断点,选择在请求之前截断请求,然后在网站中选择“伪装的头像”webshell.jpg上传。在拦截的Request信息中,Fiddler提供了方便的查看方式,其中包括Cookies、Raw、WebForms等。我们可将webshell.jpg改回webshell.html,然后继续响应请求。这样便成功上传了webshell.html文件。

图2

图2展示了Fiddler在本次操作的部分界面。本次操作绕过了客户端验证。而在网站加强安全防范,例如添加了包括服务器端验证等安全措施之后,对于此类攻击行为和疑似的攻击请求将被自动拦截。

二、木马[4]- [7]

木马全称为特洛伊木马程序,它与病毒的区别在于木马不把自己的代码拷贝到宿主文件或引导区中,而是将自己伪装成其它程序,病毒的特点却是把自身变成其它程序的一部分,因此它们的传播方式是不同的。

病毒主要特殊性是能自我复制,具有传染性和破坏性;木马的特殊性是木马攻击者能够对木马实施控制,具有可控性。病毒的传染是没有可控性的传染,即使是病毒编制者也可能无法对其进行控制,它以自我复制的方式进行繁殖和感染文件;而木马并不刻意地去感染其他文件,其主要作用是向控制端打开目标系统的门户,使控制端能远程操控目标系统。

木马在植入目标系统后能够接受控制端的指令、完成控制端交给的任务。随着技术的发展融合,木马制造者借助病毒的传染技术,进行木马植入,使木马的危害更加严重。

(一)木马的隐蔽方式

1、集成到程序中

在被用户发现后,木马为了达到难以被删除的目的,常常把自身集成到程序里,即木马被激活后,木马文件被捆绑到某一个应用程序中。在这种情况下,即便它被删除了,但只要运行了那个应用程序,它又会被安装上去。

2、隐藏在配置文件中

计算机中一般使用的是图形化界面,这使得我们容易忽略那些不太重要的配置文件。木马会利用这些配置文件的一些特殊作用使得自身可以在计算机中运行,不过这种隐藏方式不是很高明,被发现的概率较大。

3、潜伏在Win.ini中

这样便可安全地在系统启动时自动运行。

4、伪装在普通文件中

这种木马目前比较流行,用户若对Windows不熟悉会很容易被欺骗。例如将可执行文件装扮成合法的图片或者文本文件。

5、内置到注册表中

把木马内置到复杂的注册表中是更加不易被发现的办法。

6、在System.ini中藏身

把木马隐藏在Windows安装目录下的System.ini文件,这也是一种比较隐蔽的地方。

7、隐形于启动组中

这使得木马在启动组中能自动加载运行。

8、捆绑在启动文件中

这里的启动文件指的是应用程序的启动配置文件,控制端利用这些文件能够启动的特点,将带有木马启动命令的同名文件对其进行覆盖,这样启动木马的目的就实现了。

9、设置在超级链接中

用户点击网页上的恶意链接就有可能感染木马。

目前出现了驱动程序及动态链接库技术,这使得木马变得更加隐蔽。这种技术摆脱了原有的木马监听端口模式,改为了去改写驱动程序或动态链接库。这样造成的结果是没有新的文件出现在系统中(故不能用扫描的方法查杀)、不用去打开新的端口(所以不能用端口监视的方法查杀)、也没有出现新的进程(因此不能够用进程查看去检测它,同样也不能够用杀进程的方法停止其运行),而且这类木马在平时运行时没有任何的症状,木马程序在木马的控制端向被控制端发出特定信息后才开始运行。

(二)木马的通信原理

木马被安装在服务端后,当控制端、服务端都在线的时候,控制端就能够用木马端口与服务端建立连接了。

木马通信的方法很多,最常见是用TCP或者UDP协议,这种方法的隐蔽性比较差,容易被监测到,例如用netstat命令就可以查看到当前活动的TCP、UDP连接。

除此之外也可以采用其他方法,其中一种就是把木马的通信连接与通用端口进行绑定,这样的话木马就可以用这些端口来传送信息。例如,木马把服务端的信息转化成普通的电子邮件形式发送到指定的地方,或者利用FTP协议把在服务端得到的信息传送到指定的FTP主机上(后者容易被发现)。还有一种相对来说比较安全的办法是利用HTTP协议来传送信息,此时防火墙一般难以判断这些信息是属于正常的通信信息还是木马要传送的信息。

以上所有的办法都有一个共同的缺陷,即木马必须要打开一个和外部联系的端口才能够发送数据。对此,有一种改进办法是用ICMP协议来进行数据通信——ICMP报文由系统内核或进程来直接处理,无需通过端口。

现将木马的通信原理具体介绍如下:

1、TCP/IP木马通信原理

假设A机为控制端,B机为服务端,A机如果知道了B机的服务端端口与IP地址就可以与之建立连接。由于服务端端口是事先设定的,为已知项,所以最重要的是获得B机的IP地址。获得该IP地址的方法主要有两种:信息反馈和IP扫描。

所谓信息反馈是指木马成功安装后会收集一些服务端的软硬件信息,并通过E-MAIL,IRC或ICQ的方式告知控制端用户,从而获得服务端的IP等信息。

对于IP扫描技术,由于B机在被木马程序侵入后,其某端口(例如7626端口)显示为开放的,故A机只要扫描IP地址段中7626端口开放的主机即可。例如B机的地址是202.102.45.53,当A机扫描到这个IP时发现它的7626端口是开放的,则此IP会被添加到列表中,此时A机就能够通过木马的控制端程序向B机发出连接信号,B机里的木马程序收到信号后立即做出响应,当A机收到响应的信号后,开启一个随机端口(例如1031端口)与B机的木马端口7626建立连接,这使得一个木马连接被成功建立起来了。而假如用户每次上网的IP地址不同——它的变动是在一定的范围以内的,例如B机的IP是202.102.45.53,则B机上网IP的变动范围是在202.102.000.000~202.102.255.255,因此控制端只需按照这个方法进行搜索。

值得一提的要扫描整个地址段显然费时费力,一般来说控制端都是先通过信息反馈获得服务端的地址。

2、ICMP木马通信原理

ICMP木马技术便是为了摆脱端口的束缚而出现的。ICMP报文由系统内核或进程直接处理而不通过端口,如果木马将自己伪装成一个Ping进程,系统就会将ICMP-ECHOREPLY(Ping的回应包)的监听、处理权交给木马进程,一旦事先约定好的ICMP-ECHOREPLY包出现(这样的包经过修改ICMP包头,加入了木马的控制字段),木马就会接受、分析并从报文中解析出命令和数据。防火墙一般不会对ICMP-ECHOREPLY报文进行过滤,因为过滤ICMP-ECHOREPLY报文就意味着主机无法对外进行Ping等路由诊断操作。

3、反向连接技术

从本质上来说,反向连接和正向连接的区别并不大。

在正向连接的情况下,服务器端也就是被控制端,在编程实现的时候是采用服务器端的编程方法,而控制端在编程实现的时候是采用客户端的编程方法。

当采用反向连接技术编程时,实际上就是将服务器端变成了采用客户端的编程方法,而将控制端变成了采用服务器端的编程方法。防火墙一般会对于连入的链接进行严格的过滤,而对于连出的链接疏于防范,于是,与一般的木马相反,反弹端口型木马采用反向连接技术的编程方法将服务器端(被控制端)使用主动端口,客户端(控制端)使用被动端口。被植入反弹木马服务器端的计算机定时监测控制端的存在,发现控制端上线立即弹出端口主动连接控制端打开的端口。这种连接模式还能突破内网与外部建立连接。

4、端口复用技术

在winsock的实现中,对于服务器的绑定是可以多重绑定的,在确定多重绑定使用谁的时候,根据的原则是谁的指定最明确则将包递交给谁,而且没有权限之分,就是说低级权限的用户是可以重绑定在高级权限如服务启动的端口上的。

(1)一个木马绑定到一个己经合法存在的端口上进行端口隐藏,它通过自己特定的包格式判断是不是自己的包,如果是,就自己处理,如果不是,则通过127.0.0.1的地址交给真正的服务器应用进行处理。

(2)一个木马可以在低权限用户上绑定高权限的服务应用的端口,进行该处理信息的嗅探,本来在一个主机上监听一个socket的通信需要具备非常高的权限要求,但其实利用socket重绑定,可监听这种具备socket编程漏洞的通信,而无须采用挂接,钩子或低层的驱动技术(这些都需要具备管理员权限才能达到)。

目前新的木马理论层出不穷,基于木马的原理分析也在不断加深,新木马和变种每天都有出现。例如,现在木马技术和病毒的发展相互借鉴,也使得木马具有了更好的传播性,病毒具有了远程控制能力,这使得木马程序和病毒的区别日益模糊,我们在研究木马理论和实践上还任重道远。

(三)木马攻击实践

Bitcoin Core钱包的关键文件是wallet.dat,若该文件被盗且知道其对应的钱包密码,就能盗取里面的比特币。为了形象地展示完成这一目标的流程,我们编写了一个简单的木马程序来进行说明。

对某台安装了Bitcoin Core钱包的自有服务器进行攻击,在其中植入木马。需要注意的是,假如控制端和服务端涉及到了内网,则编程中还需要做内网穿透的相关处理。运行控制端程序,按照预设提示依次执行相关步骤如下图所示:

图3

这里的口令是为了防止其他黑客连接上我们的木马而设置的简单屏障,我们接着往下执行程序:

图4

以上程序还可进一步做成图形化界面。由上图可知,我们获取了wallet.dat文件在目标中的路径并将其拷贝到了自己的主机中。随后可利用木马键盘记录和截图的功能来获取钱包密码,这样就成功完成了一次盗取比特币的木马攻击。

三、宏病毒

(一)宏病毒简介[8]-[9]

宏是若干个单独命令的组合,能够完成某项特定的任务。这是软件设计者为了避免一再地重复相同的动作而设计出来的一种工具,它使用宏语言——VBA语言把常用的动作写成宏,利用宏自动运行来完成任务。微软在Office系列软件中开发了对宏的支持,在方便用户的同时,也给攻击者带来了较大的便利,使Office系列文档变成了宏病毒攻击的最大目标。

宏病毒通常会寄存在办公文档或模板之中,一旦带有宏病毒的文档被打开, 就会触发宏病毒,将自身复制到计算机上,并停留在文档模板上。至此,该电脑上自动保存的文档会被感染,当用户在其他电脑上打开了这些被感染的文档后, 宏病毒又会将自身转移到他的计算机上。

以Word宏病毒为例,Word宏病毒一般都首先隐藏在一个指定的Word文档中,一旦打开了这个Word文档,宏病毒就被执行,它要做的第一件事就是将自己拷贝到全局宏的区域,使得所有打开的文档都可以使用这个宏;当Word退出的时候,全局宏将被储存在某个全局的模板文档(.dot文件)中,这个文件的名字通常是“Normal.dot”,即Normal模板;如果全局宏模板被感染,则Word再启动时将自动载入宏病毒并自动执行。

在一般情况下,我们可通过将Office文档中宏的安全性设置调高以便不运行宏来避免感染风险,但部分行业必须使用宏,这使得宏的感染风险依然存在。此外,黑客还可能会提示用户“某文档由较高版本的Office所创建,为了显示内容,必须启用宏”或“某文档受到保护,为了显示图片须启用宏”等来欺骗用户开启宏,从而达到感染用户电脑的目的。

宏病毒的特征包括传播迅速、制作变种方便、破坏力大和多平台交叉感染。以破坏力大为例,宏病毒能够获得很多系统级底层调用的权限,如调用Windows API、DLL及DOS系统命令等。这些底层接口均可能对系统造成巨大威胁,而Office应用程序在指令安全性和完整性上的检测能力较弱,使得破坏系统的指令很容易就能够得到执行,从而对系统本身直接产生危害。

(二)宏病毒攻击实践

我们使用渗透测试框架Metasploit Framework来制作宏病毒,实现木马功能,在内网中进行渗透测试。与自主编写代码相比,在此工具下宏病毒的制作变得十分便捷。

在监听端,以制作电子表格Excel的宏病毒为例,在Metasploit Framework中,我们只需一句代码即可自动生成所有必要的VBA代码:

图5

如上图所示,这些VBA代码在生成的new.vba文件之中。将这些代码复制到电子表格的Visual Basic编辑器中,并将宏名称取为“Auto_Open”,以便启动电子表格时自动运行。这样,此电子表格的宏只要被运行就将感染目标电脑。另外,还可以在此宏中添加一些其他代码以实现特定的任务,例如创建一个计划任务,每隔固定时间执行一次(非必要),并添加一个提示框。随后,我们将该电子表格进行传播。

在目标电脑端的测试中,若用户点击了此电子表格,该提示框便提示木马已成功运行或暗示用户已被感染(实际运用中不加此项):

图6

此时,在监听端的Metasploit Framework下执行msfconsole后,发现已连接上目标电脑:

图7

随后,我们便可继续在监听端录入简单的指令,在监听端实现将其对目标电脑的权限提升至系统权限、列出目标电脑的系统进程、截获音频、截屏、摄像头拍照和拍视频、记录键盘击键过程、开启远程桌面等功能。

四、针对Web服务器的DDoS攻击

DDoS攻击似乎与直接盗取比特币的关系不大,但其在数字货币领域会偶尔出现,故值得进行简要的阐述。2020年3月13日,BitMEX交易所就分别在北京时间10:16和20:56遭受了两次DDoS攻击。

(一)针对Web服务器的DDoS攻击简介[10]- [11]

DDoS攻击是指攻击者采用分布式攻击平台对一个或多个制定目标进行拒绝服务攻击,致使受到攻击的Web服务器或者网络无可用资源提供服务。

黑客们为了建立僵尸网络通常使用网络木马和网络蠕虫两种方法,网络木马通过恶意捆绑或程序漏洞等进行扩散,网络蠕虫通过系统漏洞、欺诈等方式传播。当计算机感染僵尸程序后,便在主控端和被感染计算机之间建立一个可一对多控制的网络——僵尸网络,僵尸网络的拥有者便可远程控制网络内的所有主机对目标服务器或目标主机发动应用层DDoS攻击。

为了达到既定的攻击伤害,僵尸网络建成之后,攻击者需对攻击目标进行探测,确定目标开放的服务和站点,即决定使用何种攻击流量。对于Web服务器的DDoS攻击往往需要探测更多信息数据,例如,需要探测Web服务器上哪些网页包含大内存的图片、哪些网页包含数据库动态查询功能。这些网页被攻击者所利用,会对Web服务器造成巨大威胁,通过不断地请求这些网页中资源消耗较大的节点,无形中增加了Web服务器资源消耗的速度,提高了攻击效率。DDoS 攻击开始时,僵尸主机将按照攻击者规划的攻击程序运行,向受害目标发送大量具有攻击行为的请求,因攻击行为皆为模仿正常用户访问行为所设计的,这造成目标服务器难以区分合法请求与非法请求,最终达到受害目标无可用服务资源提供服务的目的。

按照BitMEX交易所的博客所述,其在今年3月13日受到了两次相同的DDoS攻击,僵尸网络通过一个精心设计的聊天室功能查询使得该平台不堪重负。

据称,聊天室有七种语言,每种语言的简单频道ID为1到7,首先是英语,最后两个是西班牙语和法语。BitMEX相应的接口允许按频道ID来查询最后的100行。考虑到表的大小(大约5000万行),执行反向顺序扫描,然后进行筛选实际上会更快。查询优化程序对所有语言执行反向顺序扫描,直到最终找到要返回的100行。就西班牙语而言,很久没人聊天了,以至于扫描了849748行才能找到足够符合条件的行数。这种昂贵的顺序扫描快速地分配和释放大量内存,溢出到磁盘上,并通过系统调用迅速使得系统不堪重负。在攻击发生时,数据库只花了0.6%的时间处理请求,其余99.4%的时间用于IO等待,这便导致所有查询都非常慢。

虽然与用户相关的数据(电子邮件、活动、聊天室、登录事件等)与交易数据(仓位、交易、保证金等)是分开的,但是聊天室与用户有关,访问令牌和API密钥也是如此。这意味着这种资源消耗引发了位于交易引擎前面的身份验证和访问控制层的严重问题。交易引擎运行正常,市场数据、存款和提现也没有中断,但在这段时间内,请求几乎不可能到达引擎,导致服务质量严重下降。

这对于已经登录网站的用户,会发现攻击前原本因行情大幅波动而波涛汹涌的盘口,瞬间成为了平静的湖面,偶尔有小鱼跳动引发的涟漪,而当用户退出后就再也无法登录成功。

没有一个系统能够抵御DDoS的干扰,而有许多技术可以用来减少或消除影响。BitMEX称其已经解决了潜在的问题,并一直在昼夜不停地引入额外的检测和响应层,他们也将进行其他努力,以提高负载下的自动化扩展性和进一步隔离关键系统。BitMEX强调,作为上述持续监察和缓解措施的一部分,其安全团队正在审查系统中历史最悠久且因此最脆弱的部分,以简化、解耦、提高性能和隔离系统。同时,其团队正在开发关于宕机、市场暂停、市场恢复和通信的面向公众的协议,在将来其服务出现任何中断的时候,为其用户提供更大的透明度。

(二)DDoS攻击实践

由于我们用于攻击的主机数量较少,严格地讲,我们下面进行的攻击实践应属于DoS攻击(拒绝服务攻击),只有当大量的主机参与攻击时才能称其为DDoS攻击(分布式拒绝服务攻击)。

通过编写程序,我们使用一些主机不断发送大量的数据包到某台自有服务器,希望造成该服务器资源耗尽,以至于宕机崩溃。不过由于发动攻击的主机数量较少,不易达成目标。此类攻击的程序示例在网络上比较多,这里就不再进行更详细的阐述和展示了。

我们也可以使用相关工具来开展攻击——下载pyloris模块来进行DoS中的Slowloris攻击。

在Slowloris攻击中,即使只使用一台PC也有可能使Web服务器陷入瘫痪。分析攻击原因时,通常使用Web服务器的日志,由于头文件分析结束时才记录日志,所以Slowloris攻击不会在日志文件中留下痕迹,这样就很难对其进行探测。正常的HTTP头以/r/n/r/n结束,Web服务器通过查找/r/n/r/n判断HTTP头结束,然后进行分析,处理服务请求。Slowloris攻击使用的HTTP头只以/r/n结尾,所以Web服务器认为HTTP头尚未结束,就无法对HTTP头进行分析,从而继续保持连接。当服务器连接数达到最大值时便无法继续处理新的请求,继而拒绝对外提供服务[12]。

从官网下载的pyloris模块的版本号是3.2,适用于Python 2。我们将其源码进行修改,使其能在Python 3中运行,然后在运行界面中填入要攻击的某自有测试网站的地址和端口:

图8

点击“Launch”按钮便可开始攻击。如下图所示,运行界面分为两个区域,Status区域用于显示当前执行的攻击状态,其中Attacks代表当前使用的连接个数,Threads表示目前为止创建的线程数;Log区域显示用于发送攻击的程序日志:

图9

五、结语

为了阐明盗取比特币的一些黑客技术,上文对网站渗透、木马、宏病毒和DDoS攻击进行了相关的浅显的介绍。尽管其中的DDoS攻击与直接盗取比特币的关系不大,但鉴于其重要程度以及对数字货币交易所的巨大影响,本文对其也做了简要的介绍。同时,我们还编写了较为简单的程序并利用一些工具对自有网站和主机进行了攻击实践。这在一定程度上有助于普通用户对黑客基础技术的了解,促使人们积极地做好数字货币资产安全的防护工作。

由于篇幅所限,对于以上黑客技术和其他部分技术的综合运用以及相关的安全防护措施,我们将在今后的文章中进行详细的讨论。

参考文献

[1]吴松泽. 基于Web安全的渗透测试技术研究. 哈尔滨师范大学硕士学位论文, 2015. 9-11

[2] 蒲石. Web安全渗透测试研究. 西安电子科技大学硕士学位论文, 2010. 2-17

[3] 钱伟. 网站评估渗透系统的研究与实现. 复旦大学硕士学位论文, 2011. 6-7

[4] 贺瑞强. 木马的攻击及新型的木马检测技术的研究. 西安建筑科技大学硕士学位论文, 2009. 3-18

[5] 谢宗仁. 木马原理分析与实现. 山东大学硕士学位论文, 2009. 16-19

[6] 朱腾绩. 64位Windows木马关键技术研究与实现. 西安理工大学硕士学位论文, 2015. 2

[7]刘成光. 基于木马的网络攻击技术研究. 西北工业大学硕士学位论文,2004. 14

[8] 王津梁. Office漏洞挖掘与分析技术研究. 重庆理工大学硕士学位论文, 2017. 8-9

[9] 宏病毒原理及实现. 百度文库. 

https://wenku.baidu.com/view/c4f763dfa200a6c30c22590102020740bf1ecd32.html?fr=search

[10] 任皓. 针对WEB服务器的DDoS攻击与防御技术研究. 河北科技大学硕士学位论文, 2019. 9-10

[11] Arthur Hayes.我们对于3月13日所遭受的DDoS攻击的回应. BitMEX Blog. https://blog.bitmex.com/zh_cn-how-we-are-responding-to-last-weeks-ddos-attacks/

[12] 赵诚文, 郑暎勋. Python黑客攻防入门. 武传海译. 北京: 人民邮电出版社, 2018. 182-183

原标题:前车之鉴——盗取比特币的黑客技术

发布方:XBITRUST & Paiclub Capital

作者:苏文杰