一文详谈木马攻击原理

电子说

1.3w人已加入

描述

木马攻击原理

木马程序是一种客户机服务器程序,典型结构为客户端/服务器(Client/Server,C/S)模式,服务器端(被攻击的主机)程序在运行时,黑客可以使用对应的客户端直接控制目标主机。操作系统用户权限管理中有一个基本规则,就是在本机直接启动运行的程序拥有与使用者相同的权限。假设你以管理员的身份使用机器,那么从本地硬盘启动的一个应用程序就享有管理员权限,可以操作本机的全部资源。但是从外部接入的程序一般没有对硬盘操作访问的权限。木马服务器端就是利用了这个规则,植入目标主机,诱导用户执行,获取目标主机的操作权限,以达到控制目标主机的目的的。

木马程序的服务器端程序是需要植入到目标主机的部分,植入目标主机后作为响应程序。客户端程序是用来控制目标主机的部分,安装在控制者的计算机上,它的作用是连接木马服务器端程序,监视或控制远程计算机。

典型的木马工作原理是:当服务器端程序在目标主机上执行后,木马打开一个默认的端口进行监听,当客户端(控制端)向服务器端(被控主机)提出连接请求时,被控主机上的木马程序就会自动应答客户端的请求,服务器端程序与客户端建立连接后,客户端(控制端)就可以发送各类控制指令对服务器端(被控主机)进行完全控制,其操作几乎与在被控主机的本机操作的权限完全相同。

木马软件的终极目标是实现对目标主机的控制,但是为了实现此目标,木马软件必须采取多种方式伪装,以确保更容易地传播,更隐蔽地驻留在目标主机中。

下面介绍木马的种植原理和木马的隐藏。

(1)木马种植原理

木马程序最核心的一个要求是能够将服务器端程序植入目标主机。木马种植(传播)的方式一般包括以下3种。

1)通过电子邮件附件夹带

这是最常用也是比较有效的一种方式。木马传播者将木马服务器端程序以电子邮件附件的方式附加在电子邮件中,针对特定主机发送或漫无目的地群发,电子邮件的标题和内容一般都非常吸引人,当用户点击阅读电子邮件时,附件中的程序就会在后台悄悄下载到本机。

2)捆绑在各类软件中

黑客经常把木马程序捆绑在各类所谓的补丁、注册机、破解程序等软件中进行传播,当用户下载相应的程序时,木马程序也会被下载到自己的计算机中,这类方式的隐蔽度和成功率较高。

3)网页挂马

网页挂马是在正常浏览的网页中嵌入特定的脚本代码,当用户浏览该网页时,嵌入网页的脚本就会在后台自动下载其指定的木马并执行。其中网页是网页木马的核心部分,特定的网页代码使网页被打开时木马能随之下载并执行。网页挂马大多利用浏览器的漏洞来实现,也有利用ActiveX控件或钓鱼网页来实现的。

(2)木马程序隐藏

木马程序为了能更好地躲过用户的检查,以悄悄控制用户系统,必须采用各种方式将其隐藏在用户系统中。木马为了达到长期隐藏的目的,通常会同时采用多种隐藏技术。木马程序隐藏的方式有很多,主要包括以下4类:

① 通过将木马程序设置为系统、隐藏或是只读属性来实现隐藏;

② 通过将木马程序命名为和系统文件的名称极度相似的文件名,从而使用户误认为其是系统文件而忽略之;

③ 将木马程序存放在不常用或难以发现的系统文件目录中;

④ 将木马程序存放的区域设置为坏扇区的硬盘磁道。

(3)木马启动隐藏

木马程序在启动时必须让操作系统或杀毒软件无法发现自身才能驻留系统。木马程序启动的隐藏方式介绍如下。

1)文件伪装

木马最常用的文件隐藏方式是将木马文件伪装成本地可执行文件。例如,木马程序经常会将自己伪装成图片文件,修改其图标为Windows默认的图片文件图标,同时修改木马文件扩展名为.jpg、.exe等,由于Windows默认设置不显示已知的文件后缀名,因此文件将会显示为.jpg,当用户以正常图片文件打开并浏览其时就会启动木马程序。

2)修改系统配置

利用系统配置文件的特殊作用,木马程序很容易隐藏在系统启动项中。例如,Windows系统配置文件MSCONFIG.sys中的系统启动项system.ini是众多木马的隐藏地。Windows安装目录下的system.ini[boot]字段中,正常情况下有boot=“Explorer.exe”,如果其后面有其他的程序,如boot=“Explorer.exe file.exe”,则这里的file.exe就有可能是木马服务端程序。

3)利用系统搜索规则

Windows系统搜寻一个不带路径信息的文件时遵循“从外到里”的规则,它会由系统所在的盘符的根目录开始向系统目录深处递进查找,而不是精确定位。这就意味着,如果有两个同样名称的文件分别放在“C:\”和“C:\WINDOWS”下时,搜索会执行C:\下的程序,而不是C:\WINDOWS下的程序。这样的搜寻规则就给木马提供了一个机会,木马可以把自己改为系统启动时必定会调用的某个文件,并复制到比原文件的目录浅一级的目录里,操作系统就会执行这个木马程序,而不是正常的那个程序。若要提防这种占用系统启动项而做到自动运行的木马,则用户必须了解自己的计算机里所有正常的启动项信息。

4)替换系统文件

木马程序会利用系统里的那些不会危害到系统正常运行而又会被经常调用的程序文件,如输入法指示程序。木马程序会替换掉原来的系统文件,并把原来的系统文件名改成只有木马程序知道的一个生僻文件名。只要系统调用那个被替换的程序,木马就能继续驻留内存。木马程序作为原来的程序被系统启动时,会获得一个由系统传递来的运行参数,此时,木马程序就把这个参数传递给被改名的程序执行。

(4)木马进程隐藏

木马程序运行后的进程隐藏有两种情况:一种是木马程序的进程存在,只是不出现在进程列表里,采用APIHOOK技术拦截有关系统函数的调用以实现运行时的隐藏;另一种是木马不以一个进程或者服务的方式工作,而是将其核心代码以线程或DLL的方式注入合法进程,用户很难发现被插入的线程或DLL,从而达到木马隐藏的目的。

在Windows系统中常见的隐藏方式有注册表DLL插入、特洛伊DLL、动态嵌入技术、CreateProcess插入和调试程序插入等。

(5)木马通信时的信息隐藏

木马运行时需要通过网络与外机通信,以获取外机的控制命令或向外机发送信息。木马通信时的信息隐藏主要包括通信内容、流量、信道和端口的隐藏。

木马常用的通信内容隐藏方法是对通信内容进行加密。通信信道的隐藏一般采用网络隐蔽通道技术。在TCP/IP族中,有许多冗余信息可用于建立网络隐蔽通道。木马可以利用这些网络隐蔽通道突破网络安全机制。比较常见的有:ICMP畸形报文传递、HTTP隧道技术、自定义 TCP/UDP报文等。木马采用网络隐蔽通道技术时,如果选用一般的安全策略都会允许的端口(如80端口)进行通信,则可轻易穿透防火墙和避过入侵检测系统等安全机制的检测,从而获得较强的隐蔽性。通信流量的隐藏一般采用监控系统网络通信的方式,当监测到系统中存在其他通信流量时,木马程序就会启动通信;当不存在其他通信流量时,木马程序就会处于监听状态,等待其他通信开启。

(6)木马隐蔽加载

木马隐蔽加载是指通过修改虚拟设备驱动程序(VxD)或动态链接库(DLL)来加载木马。这种方法基本上摆脱了原有的木马模式——监听端口,而采用了替代系统功能的方法(改写VxD或DLL文件):木马用修改后的DLL替换系统原来的DLL,并对所有的函数调用进行过滤。对于常用函数的调用,木马会使用函数转发器将其直接转发给被替换的系统DLL;对于一些事先约定好的特殊情况,木马会自动执行。一般情况下,DLL只是进行监听,一旦发现控制端的请求,其就会激活自身。这种木马没有增加新的文件,不需要打开新的端口,没有新的进程,使用常规的方法无法监测到。在正常运行时,木马几乎没有任何踪迹,只有在木马的控制端向被控制端发出特定的信息后,隐藏的木马程序才会开始运行。
责编AJX

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分