摘要:随着信息化不断发展,黑客利用这些信息系统的各种漏洞进行黑客攻击,造成了国家、企业和人民的大量損失,本文通过对黑客攻击中远程控制原理介绍,可对防范研究提供技术支撑。
关键词: 黑客 远程控制 防范
中图分类号:G4 文献标识码:A
随着信息化社会不断的发展,各种信息化基础设施不断完善,各种信息化系统有了蓬勃的发展,随之而来也出现了很多安全问题,有不少黑客利用这些信息系统的各种漏洞进行黑客攻击,造成了国家、企业和人民的大量损失。在黑客攻击中,远程控制攻击是危险性最高,破坏性最大的一种攻击。黑客一旦完成了远程控制,就可以进行窃取用户数据、盗取用户账号、破快用户系统和勒索等破坏性行动。
远程控制的原理主要就是要在客户主机安插一个木马,木马的安插方式多种多样,五花八门。但是木马的主要作用是一样的,都是通过TCP和远端的黑客建立连接,从而让黑客能够控制受害设备。在这个远程控制的原理中,有两种方式。一种方式称为主动模式,这种模式需要让木马在受害主机运行,并且在受害主机使用socket监听一个TCP端口,然后黑客计算机通过TCP尝试连接受害主机的对应端口号,连接成功就可以进行控制。当然这里的主动模式,还有WEB服务这种情况,这种情况需要生成PHP或者JSP的木马。
主动控制
另一种被称为被动模式,这种模式需要在黑客计算机使用socket监听一个TCP端口,然后设法让木马在受害主机运行,这个木马会使用socket的TCP连接去尝试连接黑客主机对应的端口号,如果连接成功,受害主机就会被黑客控制。
被动控制
在上述的远程控制过程中,首先需要考虑黑客是如何制作和植入一个木马到受害主机上的。最快速直接的方式可以使用kali linux来进行生成,也可以使用各种编程语言自己编写。
这里黑客一般会根据目标主机的操作系统来生成对应的木马。比如windows操作系统的木马,Linux操作系统的木马,android操作系统的木马和ARM嵌入式设备上运行的木马。同时对于一些WEB应用也可以生成对应的木马,比如对于jsp可以生成java木马,对于php可以生成php木马。至于木马如何才能植入受害主机呢?一种方式,黑客会利用一些系统的文件上传漏洞进行木马的上传。还有一种方式,黑客会制作恶意的URL链接,通过恶意网站,劫持网站和发送短信等各种方式诱导受害者点击链接,从而在受害者主机植入木马。各种各样的木马层出不穷,应该如何防范呢?首先,我们应该在我们的计算机设备上安装杀毒软件,这些杀毒软件拥有自己的木马病毒库,能够对文件系统中存在的木马进行扫描和确认。同时他们的病毒库也在不断更新,确保对于潜在的木马病毒具有较高的识别率。作为一般用户,也要养成良好的上网习惯。使用浏览器时,不要访问可疑网站,不要点击可疑链接。
主动模式中防火墙可以阻止黑客
目前流行的杀毒软件都会对用户操作系统的文件系统中的文件进行扫描,找出可疑的木马,并且删除,从而免除系统被控制的危险。这些杀毒软件会分析程序文件的编码特征来判断目标文件是否是一个木马文件。然而新的木马层出不穷,黑客也会不断想出新的方式来进行代码混淆,导致杀毒软件无法识别出这些新型木马。所以对于杀毒软件的选择,我们也要慎重,要选择的杀毒软件应该具有完善的病毒编码特征库,同时这些病毒编码特征库应该有一个安全团队在维护,确保特征库能够不断更新,从而达到对于新型木马也有很好的识别率。
除了硬盘上的木马,还有可能存在绕过硬盘直接在内存运行的木马,这种木马攻击方式主要是利用了操作系统的漏洞或者是操作系统上安装运行了的软件的漏洞。这里我们说的操作系统可以是Windows操作系统(主要见于个人计算机),也可以是Linux操作系统(主要见于互联网服务器、企业服务器)。软件可以是一切安装在Windows或者Linux上的软件。
比如永恒之蓝漏洞就是Windows操作系统的一个著名漏洞,2017年4月,黑客组织公布了一大批网络攻击工具,其中就有“永恒之蓝”的漏洞利用工具,这个工具利用Windows的SMB漏洞获取操作系统的最高权限。恶意工具会通过扫描寻找开放了445端口的Windows计算机,用户计算机只要是开机状态和联网状态,不需要用户的任何操作,黑客就可以在受害计算机中运行远程控制木马。这种木马是一段shellcode,由黑客通过网络发送数据到达受害计算机,并且在受害计算机的内存中执行了,配合黑客计算机达到远程控制的目的。
上面的漏洞是操作系统级别的漏洞,应用软件由于种类繁多,应用广泛,如果编写软件的代码存在不规范,就会出现可以利用的漏洞。比如EasyFileSharing在2015年被发现的一个漏洞。还有vsftpd-2.3.4上存在的笑脸漏洞。黑客首先研究这些漏洞,精心设计好一串数据,发送给运行了有漏洞的软件的受害计算机,覆盖进程中函数调用的返回地址,劫持进程的运行流程,让进程执行一段黑客指定的shellcode(也就是运行一个内存木马),配合黑客计算机达到远程控制的目的。
这种攻击方式就是黑客们常常研究的栈溢出攻击。黑客通过研究进程运行时函数调用和返回的原理,再结合反汇编技术,计算出缓冲区起始位置到达函数栈中返回地址的具体偏移量。构造字符串,利用程序漏洞覆盖函数调用栈中的返回地址,改变进程的执行内容,从而劫持进程,这个过程主要有四种方式。
第一种,覆盖返回地址,让它指向栈溢出数据串中的一段指令(shellcode)。这种方式需要在栈溢出数据中包含一段二进制攻击指令,并且用使用攻击指令的开始地址覆盖掉返回地址的值。攻击指令的作用一般都是运行之后会打开一个shell,进而获得了当前进程的具体控制权,shellcode的生成方式有很多种,可以用汇编语言写好代码片段,然后转化成对应的机器码。也可以使用kali Linux 中的工具来生成。
第二种,Return2libc,修改函数返回地址,让它指向内存中某个已存在的函数。首先,在内存中确定某个函数的地址,并且用这个地址的值覆盖掉返回地址。由于libc这个动态链接库被十分广泛的应用,这个库中包含了一些重要的系统函数,如果能够运行这些系统级函数,就可以获得当前进程的控制权。
第三种,return oriented programming,这个方法修改返回地址,让它指向内存中已经存在的一段二进制指令。首先需要在内存中确定某一段二进制指令的内存地址,并用这个地址覆盖返回地址,如果我们需要达成的目标操作没有某个特定的函数可以完全满足要求,我们此时就需要在内存中搜索多个二进制指令片段,拼接一系列二进制代码片段来完成目标功能。
第四种,Hijack GOT,主要需要修改程序中某个调用函数的地址,让它指向我们需要的函数。首先,我们要弄清楚函数调用发生时,调用者是怎样找到被调用者,进行调用的。接着,在内存中修改我们选中函数的内存地址,使它指向我们需要的函数。
被动模式和主动模式虽然都可以达到远程控制的目的,但是他们的应用场景和特点却有很大的不同。在主动模式中,我们是在受害主机打开了一个TCP端口的监听,黑客进行主动的连接,这里要求满足两个基本条件,黑客才能成功进行控制。第一,受害主机拥有一个可以访问的公网IP;第二,受害主机的防火墙对这个特定的TCP端口的流量进行了放行操作(这个防火墙可以时iptables这种主机防火墙,也可以是硬件防火墙)。如果这个受害主机是一个私网设备,没有公网IP,那么第一个基本条件不满足,黑客无法成功控制受害主机。如果受害主机的防火墙进行了相应的防护,拒绝了除了业务端口以外所有端口的流量,那么第二个条件不满足,黑客也无法成功控制受害主机。在被动模式中,黑客计算机会监听一个TCP端口,在受害主机运行木马用TCP主动连接黑客计算机对应TCP端口,完成黑客的远程控制。这种模式下,不会在受害主机监听一个TCP端口,防火墙的入方向的流量拒绝不能起到防护作用,也不需要·受害主机拥有一个公网IP,黑客想要形成远程控制相对容易。所以我们应当在我们的计算机设备上安装杀毒软件,对可疑的木马进行扫描。这种模式下,木马程序中会包含黑客的公网IP,可以作为网警破案的证据。
Metasploit和Meterpreter是黑客最喜欢用的两个工具,其中Metasploit是高度的模块化的软件工具,整个框架由多个模块组成,是一款开放源代码的漏洞测试工具和安全漏洞利用工具,整个框架集成了各种平台和应用软件上的常见漏洞,可以使用msfvenom工具生成可以在各种平台运行的shellcode,包括服务器操作系统(Linux,centos,debian,ubuntu,Windows Server),移动设备(Android),嵌入式设备(ARM,solaris)和个人计算机(WindowsXP,Windows7,Windows10)等,shellcode的payload类型运行起来的作用一般相当于一个Meterpreter远程被控端,metasploit本身就带有数百个已经发现的应用软件漏洞的相应的专业级漏洞利用攻击工具模塊,配合不同硬件平台的shellcode,可以对不同的硬件平台上的操作系统和应用软件进行渗透测试。
Meterpreter主要用于在获取到了目标计算机访问的权限之后,进行后期的渗透测试,具有平台通用性,命令格式与Linux的命令行和Windows的CMD兼容,可以采用纯内存工作模式,在执行漏洞渗透的攻击操作时会直接把meterpreter的动态链接库装载到目标进程的内存空间中,使得meterpreter的被控端启动和运行十分的隐蔽,传统的硬盘扫描型杀毒软件很难检测出来。而且meterpreter会对meterpreter主控端和meterpreter被控端之间的通信流量进行加密。而防火墙很难识别出加密的流量。Meterpreter的这些特性大大增加了防控难度。建议使用有内存监控和进程监控功能的杀毒软件,对所有进程进行监控,通过进程对TCP端口的使用情况,以及进程运行内存空间的二进制代码,来识别可疑的木马进程。
Meterpreter为了隐藏自己的进程,也有很多其他的技术手段,Meterpreter可以使用execute命令打开一个windows已经安装好的应用程序,比如记事本(对应notepad.exe这个应用程序文件),命令行窗口(对应cmd.exe这个应用程序文件),计算器(对应calculator.exe这个应用程序文件),execute命令通过-H参数的使用,可以在后台启动这些应用程序,不会在受害机的前台桌面显示。这样就可以很好的隐藏,受害计算机如果通过任务管理器查看进程列表,看到名字是notepad.exe或者cmd.exe,就不会产生怀疑,同时,meterpreter有一个migrate命令,可以让meterpreter被控端的内存木马进行进程迁移,通常黑客都是利用某个应用软件的漏洞进行渗透攻击,如果攻击成功,meterpreter被控端木马就会在这个有漏洞的应用程序的内存空间运行,这个时候黑客已经完成了远程控制,控制会话(session)就已经建立好了,但是一旦这个有漏洞的应用程序被关闭或者相应的进程被结束,meterpreter被控端的木马就会随着一起结束运行,黑客建立好的远程控制会话就会被断开,黑客为了避免这种情况发生,会使用migrate进行meterpreter内存木马的进程迁移,可以迁移到使用execute命令打开的notepad.exe或者cmd.exe进程中,相应的进程编号可以使用ps | grep notepad.exe 进行查询。黑客甚至可以使用migrate命令迁移木马进程到Windows操作系统的explorer进程中,explorer是Windows操作系统中的文件资源管理器和程序管理器,主要用来管理Windows操作系统的图形壳,这个图形壳包含了文件管理和桌面管理,如果这个进程被终止,会导致Windows图形界面无法使用。如果黑客利用migrate命令把木马病毒附着到了explorer进程上就可以得到一个稳定运行的木马,从而得到一个稳定的远程控制会话。这个时候,受害计算机如果想要摆脱黑客计算机的远程控制,只能对计算机进行重启操作。重启之后,黑客对于受害计算机就失去了远程控制。通过远程控制工具的控制持久化方案,可以确保,即使受害计算机进行了重启,黑客依然可以获得远程控制会话。
相应的Meterpreter这个工具提供了控制持久化的方案,一种通过受害计算机上的服务启动,另一种是会通过启动项进行启动。通过服务进行启动的方式,相对来说命令较为简单,这个后门不会进行反向回连,而是在受害计算机启动之后开启一个服务来等待黑客的计算机来主动连接,缺点也较为明显,如果其他黑客扫描到了这个服务,同样可以通过这个后门进入这台受害计算机。另一种方式,是通过启动项进行启动的方式(persistence),它的缺点是使用的参数相对较为复杂,一些特定的权限问题可能导致设置失败,没有相应的错误信息返回显示,有一定的可能性导致失败的持久化控制。这种方式是在目标计算机上通过反向TCP的方式去主动连接黑客的TCP服务端。因为这种流量对于目标计算机来说属于出方向流量,所以目标计算机上的防火墙对于这样的流量的一般操作是放行。相应的后门的存活率较高。
为了应对这种持久化控制的威胁,在我们的计算机上安装杀毒软件,并且及时更新病毒库,定期扫描C盘,删除可疑的木马文件(VBScript 文件),要及时的关注操作系统和应用程序不同版本中可能存在的漏洞,及时的更新操作系统和应用软件的版本。同时,选择的杀毒软件最好具有进程监控的能力,对于一些进程行为进行追踪。
参考文献
[1]计算机网络系统安全维护策略研究[J]. 黄明源. 网络安全技术与应用. 2021(07)
[2]网络工程中的安全防护技术的思考探讨[J]. 李蔚耀. 数码世界. 2020(05)
作者简介:万松 ,性别:男,出生年月:1982年4月出生,籍贯:江西南昌人,民族: 汉, 学历:硕士, 讲师,研究方向:计算机网络;
基金项目:2020年度江西省教育厅科学技术课题“基于CTF平台的Web网络安全研究”(一般项目)
课题项目编号:205105。