一种干扰恶意程序的方法与流程

文档序号:29403561发布日期:2022-03-26 10:04阅读:119来源:国知局
一种干扰恶意程序的方法与流程

1.本技术涉及网络安全技术领域,具体涉及一种干扰恶意程序的方法。


背景技术:

2.cobaltstrike(简称cs)作为一款渗透测试神器,采用c/s架构,可进行分布式团队协作。cs集成了端口转发、服务扫描、自动化溢出、多模式端口监听、windows exe与dll木马生成、java木马生成、office宏病毒生成、木马捆绑等强大功能,深受广大红队同学的喜爱。
3.但是目前市面上的安全产品只能检测到原生版本的cobaltstrike的攻击,但是在攻防演练中,防守方要想实现对进阶攻击者的对抗、干扰,普通的安全产品无法实现这一点。


技术实现要素:

4.本技术针对现有技术中的缺点,提供了一种干扰恶意程序的方法,突破了现有的安全产品仅有检测恶意程序功能,而无法与恶意程序对抗的瓶颈。
5.为了解决上述技术问题,本技术通过下述技术方案得以解决:
6.一种干扰恶意程序的方法,包括以下步骤:
7.从交换机上获取服务端与主机流量通信的流量交互信息,并发送给检测引擎;
8.通过所述检测引擎检测出恶意程序交互信息,并产生警告信号;
9.根据所述恶意程序交互信息,获取流量通信两端的ip地址和端口号,同时根据所述警告信号,阻断服务端与主机的流量通信;
10.构造下载请求,并将所述下载请求发送至服务端,通过逆向分析恶意程序源代码获取第一密钥;
11.根据所述下载请求从服务端下载加密配置文件,通过第一密钥对加密配置文件进行解密,得到解密配置文件,并根据所述解密配置文件构造若干组干扰请求包后,将若干所述干扰请求包重复发送至服务端;
12.判断服务端是否下发攻击者任务,若是,则构造干扰结果发送至服务端,若否,则继续重复发送干扰请求包至服务端。
13.可选的,通过所述检测引擎检测出恶意程序交互信息,包括以下步骤:
14.编写匹配规则,并将所述匹配规则存储至检测引擎;
15.当初始流量交互信息发送给检测引擎后,检测引擎判断初始流量交互信息与匹配规则是否相符;
16.若是,则为恶意程序交互信息。
17.可选的,构造下载请求后,还需将所述下载请求进行字符序列校验,将校验通过的下载请求发送至服务端。
18.可选的,将所述下载请求进行字符序列校验,包括以下步骤:
19.计算字符序列的ascll编码值,得到计算值;
20.设定固定值,判断计算值是否与固定值相等;
21.若相等,则校验通过,若不相等,则校验不通过。
22.可选的,根据所述解密配置文件构造若干组干扰请求包后,将若干所述干扰请求包重复发送至服务端,包括以下步骤:
23.获取所述解密配置文件内的干扰基础数据,并将所述干扰基础数据按照json格式进行罗列;
24.根据所述干扰基础数据,获取服务端的ip地址、服务端进行恶意程序交互的端口号、服务端的发包请求url路径和主机的虚假基础信息;
25.获取所述解密配置文件内的rsa公钥,并根据rsa公钥对所述虚假基础信息进行加密,得到加密虚假基础信息;
26.将所述服务端的ip地址、服务端进行恶意程序交互的端口号、服务端的发包请求url路径和加密虚假基础信息生成若干组主机干扰数据,并根据aes算法,对每组所述主机干扰数据生成第二密钥;
27.将每一组所述主机干扰数据和对应的第二密钥进行打包,并通过rsa加密方法,得到若干组干扰请求包;
28.将每组所述干扰请求包通过服务端的发包请求url路径重复发送至服务端。
29.可选的,判断服务端是否下发攻击者任务,包括以下步骤:
30.将干扰请求包发送至服务端后,判断服务端是否下发返回数据;
31.若是,则服务端下发过攻击者任务;
32.若否,则服务端未下发过攻击者任务。
33.可选的,所述攻击者任务为根据aes算法进行加密过的任务数据。
34.可选的,所述构造干扰结果,包括以下步骤:
35.获取服务端发送给主机的攻击者任务,通过所述第二密钥对所述攻击者任务进行解密,得到明文数据;
36.根据所述明文数据,构造虚假任务执行结果,并通过aes加密方法对所述虚假任务执行结果进行加密,得到干扰结果。
37.可选的,所述虚假基础信息包括主机ip地址、主机用户名、主机名称、主机程序名、主机进程控制符和主机架构。
38.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时,实现上述任意一项所述的干扰恶意程序的方法。
39.采用本技术提供的技术方案,与现有技术相比,具有如下有益效果:
40.通过检测引擎实现对服务端下发至主机的流量交互信息进行检测,从而识别出携带有攻击者下发的恶意程序的恶意程序交互信息,从而使开发者通过恶意程序交互信息阻断服务端与主机的流量通信,对主机起到防止攻击者控制的作用,然后通过构造下载请求得到加密配置文件,并逐步构造出用于迷惑干扰攻击者的干扰请求包和干扰结果,通过将干扰请求包重复上传至服务端的方法,给攻击者制造干扰请求包中的信息均为真实主机信息的假象,起到迷惑并干扰攻击者的恶意程序控制的作用,同时通过干扰结果的反馈,更进一步真实地模拟了主机被攻击者恶意程序控制的场景,从而提高了干扰恶意程序控制的迷惑性。
附图说明
41.为了更清楚地说明本技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
42.图1为本实施例一提出的一种干扰恶意程序的方法流程图;
43.图2为本实施例二提出的一种干扰恶意程序的硬件图。
具体实施方式
44.下面结合实施例对本技术做进一步的详细说明,以下实施例是对本技术的解释而本技术并不局限于以下实施例。
45.实施例一
46.如图1所示,一种干扰恶意程序的方法,包括以下步骤:从交换机上获取服务端与主机流量通信的流量交互信息,并发送给检测引擎;cs服务器与主机交互过程中,需要经过交换机进行流量交互,而攻击者在进行对主机进行恶意程序控制时,通常会通过cs服务器的流量交互进行下发,从而完成恶意程序的控制,因此,在对抗、干扰恶意程序前,采用从交换机上获取初始流量交互信息、发送给检测引擎的方法,来检测出攻击者下发的恶意程序。
47.具体的,通过检测引擎检测出恶意程序交互信息,包括以下步骤:编写匹配规则,并将匹配规则存储至检测引擎;当初始流量交互信息发送给检测引擎后,检测引擎判断初始流量交互信息与匹配规则是否相符;若是,则为恶意程序交互信息。
48.其中检测引擎可以为suricata引擎,suricata引擎是一个开源且成熟的网络威胁检测引擎,其有自带的检测规则,开发者通过编写匹配规则并提供给suricata引擎,从而使得在初始流量交互信息发送给suricata引擎后,suricata引擎进行检测初始流量交互信息是否符合开发者所编写的匹配规则,其中编写的匹配规则为yaml规则,且在符合匹配规则后,发出警告信号,提示符合匹配规则的该条初始流量交互信息为携带攻击者所下发的恶意程序的流量交互信息,即本技术所说的恶意程序交互信息。
49.根据恶意程序交互信息,获取流量通信两端的ip地址和端口号,同时根据警告信号,阻断服务端与主机的流量通信,检测出恶意程序交互信息后,首先获取cs服务端的ip地址、主机的ip地址、cs服务端的端口号以及主机的端口号,从而为后续发送干扰请求包、干扰结果以及接收返回数据提供通信地址基础,并在获取后对cs服务端和主机的流量通信进行阻断。
50.构造下载请求,然后将下载请求进行字符序列校验,将校验通过的下载请求发送至服务端,其中,将下载请求进行字符序列校验,包括以下步骤:计算字符序列的ascll编码值,得到计算值;设定固定值,判断计算值是否与固定值相等;若相等,则校验通过,若不相等,则校验不通过。
51.完成检测以及阻断过程后,开发者需要向cs服务端发送下载请求,而在发送下载请求前,发送下载请求的url需要进行校验,具体的,通过checksum8函数进行校验,而只有符合校验,cs服务端才会通过下载加密配置文件的请求,此处的配置文件专业名称为stager,包括了主机与cs服务端通信的规则、通信地址、通信格式以及通信间隔时间等信
息,另一方面,需要说明的是,cs服务端有两种stager,分别为针对
×
86架构和
×
64架构操作系统,且cs服务端生成stager并下发需要ip地址、端口号和url,三者缺一不可。
52.通过checksum8函数进行校验时,需要判断字符序列的ascll和与256的模是否等于固定值,对于固定值而言,其并非唯一值,而是开发者可进行设定,例如,32位的stager使用92为固定值,64位的stager使用93为固定值。
53.cs服务端在生成加密配置文件前,会通过xor加密方法对初始配置文件进行加密,得到加密配置文件,因此cs服务端通过下载请求后,需要对加密配置文件进行解密,此时需要通过对cs恶意程序源代码进行逆向分析,从而获取到用于解密加密配置文件的第一密钥,即xor key,需要说明的是,不同版本的cobaltstrike使用不同的加密key字节,其第一密钥也会不同,例如3.x版本使用0
×
69,而4.x版本使用0
×
2e,该值为通过逆向cobaltstrike代码发现。
54.其中,对于初始配置文件的生成,是攻击者启动cs服务端时加载的文件以及cs客户端设置的监听器所做的设置,通常攻击者启动cs客户端时,第一件事就是设置监听器,具体为设置被攻击者的主机主动连接的ip地址、端口号以及通信协议,这些信息都将写在初始配置文件中,并进行xor加密后,等待被攻击者下载。
55.通过第一密钥对加密配置文件进行解密,得到解密配置文件,并根据解密配置文件构造若干组干扰请求包,对若干干扰请求包进行加密后,重复发送至服务端,具体的包括以下步骤:获取解密配置文件内的干扰基础数据,并将干扰基础数据按照json格式进行罗列;
56.解密配置文件包含很多内容,其中只需列出后期需要上线使用以及与cs服务端交互所需的关键信息,即罗列出干扰基础数据即可,然后通过json格式罗列。
57.其中,干扰基础数据包括port信息、publickey信息、c2server信息、httpget_metadata信息、httppost_metadata信息、httpposturi信息和useragent信息,具体的,port为cs服务端接收主机信息的端口号;publickey为rsa公钥,后期主机上线时将使用rsa公钥加密自己的数据再发送至cs服务端;c2server为主机上线信息的地址;httpget_metadata为主机发送get请求的数据格式;httppost_metadata为主机发送post请求的数据格式;httpposturi为主机发送post请求的地址;useragent的中文名为用户代理,发请求时需要用到。
58.完成罗列后,根据干扰基础数据,获取服务端的ip地址、port、服务端的发包请求url路径和主机的虚假基础信息,其中port为服务端进行恶意程序交互的端口号,具体的,以上述解密配置文件的内容为例,从c2server参数中获取cs服务端的ip和url路径,再加上port和主机的虚假基础信息,其中虚假基础信息包括虚假构造的被控主机的主机名称、ip地址、系统结构等信息。
59.具体的,在获取到虚假基础信息的数据后,还需要获取解密配置文件内的rsa公钥,并根据rsa公钥对虚假基础信息进行加密,从而得到加密虚假基础信息,然后将服务端的ip地址、服务端进行恶意程序交互的端口号、服务端的发包请求url路径和加密虚假基础信息生成若干组主机干扰数据,并根据aes算法,对每组主机干扰数据生成第二密钥。
60.其中,虚假基础信息还包括主机用户名、主机程序名、主机进程控制符和主机架构,开发者通过构造的虚假基础信息,从而扰乱攻击者视线,例如,ip地址虚假设置为
192.168.2.56;用户名虚假设置为admin;电脑名称虚假设置为desktop-zjjz0az;程序名称虚假设置为cmd.exe;pid虚假设置为8100;架构虚假设置为x64,其中pid即为进程控制符,根据该虚假设置方式,得到若干组主机干扰数据,其中虚假基础信息的虚假设置的方法为使用s.urandom方法,即python语言中自带返回随机字节字符串函数实现,使得需要构造的虚假参数通过随机生成的方式实现。
61.生成主机干扰数据后,将每一组主机干扰数据和对应的第二密钥进行打包,并通过rsa加密方法得到若干组干扰请求包;将每组干扰请求包通过服务端的发包请求url路径重复发送至服务端。
62.具体的,对于构造的虚假基础信息,还需要按照配置文件中的要求进行编码,并且对于主机干扰数据而言,还需一个32位的aes密钥,只需通过aes算法生成即可,即第二密钥,然后将主机干扰数据与对应的第二密钥进行打包,同时,为使打包后的主机干扰数据与对应的第二密钥能够发送至cs服务端,还需要通过rsa加密方法再一次加密后,从而得到干扰请求包,方能达到发送要求,然后将干扰请求包按照配置文件中的要求存储在指定的位置,例如存储至cookie中,即可将干扰请求包通过发包请求url路径发送至cs服务端,从而使得攻击者的界面显示多条虚假主机信息。
63.另一方面,由于cobaltstrike对请求的格式有要求,我们还需要对干扰请求包的请求头的user-agent和accept-encoding这些参数进行配置,例如干扰请求包的请求头格式可以如下设置:{'user-agent':”,'accept-encoding':'gzip,deflate',}。
64.在不断发送加密后的干扰请求包至cs服务端后,虽然攻击者的界面上会出现多条虚假的主机信息,但由于显示的是构造的虚假主机信息,当攻击者对这些虚假主机信息下发命令后,虚假主机并不会执行下发的命令,当攻击者得不到命令执行结果,便会快速发现,此为构造的虚假主机信息。
65.另一方面,在攻击者的cs客户端界面的最后有一栏“last”,这是主机最近一次获取任务的时间,这个获取任务的时间间隔在攻击者生成恶意程序时就已经被设定,通常是60秒,之后攻击者可以通过下发任务修改这个时间,两次获取任务的时间间隔通常也被称作为“心跳时间”,例如当“last”栏显示的是8m时,说明这个主机已经8分钟没有到cs服务端获取任务了,如果主机长时间没有获取任务,时间超过攻击者设定的时间,将不能够迷惑攻击者。
66.基于此,为解决心跳时间问题,在发送干扰请求包至cs服务端后,每条干扰请求包都需要进行重复发送动作,以此证明该虚假构造的主机是能够获取攻击者任务的,同时,还需要判断服务端是否下发攻击者任务,具体的,包括以下步骤:将干扰请求包发送至服务端后,判断服务端是否下发返回数据;若是,则服务端下发过攻击者任务;若否,则服务端未下发过攻击者任务。
67.若服务端下发过攻击者任务,则构造干扰结果发送至服务端,若服务端未下发过攻击者任务,则继续重复发送干扰请求包至服务端,由于攻击者任务为根据aes算法进行加密过的任务数据,因此,在进行构造干扰结果时,需要先获取服务端发送给主机的攻击者任务,然后通过第二密钥对攻击者任务进行解密,得到明文数据;根据明文数据,构造虚假任务执行结果,并通过aes加密方法对虚假任务执行结果进行加密,得到干扰结果。
68.具体的,主机不需要真正的去执行攻击者任务,而是根据攻击者任务编造一个虚
假任务执行结果发送给cs服务端,具体编造的方法为,将虚假任务执行结果与此前设置好的“任务字典”进行匹配,若匹配成功,则返回这个虚假任务执行结果,如果没有匹配成功,则返回一个“权限不足”给cs服务端,需要说明的是,“任务字典”是开发者预先设置好的攻击者任务与虚假任务执行结果一一对应的程序,而“权限不足”则指的是当攻击者任务不在任务字典内时,主机则直接反馈无法执行的“权限不足”给cs服务端,这也符合主机在实际执行任务时,选择性执行任务的规律,因此不会引起攻击者的注意,使攻击者一直被迷惑为,本台主机已被其控制。
69.例如,若主机执行ipconfig命令后的结果的ipv4地址是192.168.8.103,开发者可将其ipv4地址修改成192.168.17.158,默认网关进行修改成空,然后将修改过的信息进行打包得到虚假任务执行结果,并加密后得到干扰结果,最后通过发包请求url路径发送至cs服务端,从而既解决了心跳问题,又提高了构造的虚假主机的真实性,进而对攻击者起到干扰其恶意程序控制,迷惑其控制行为的目的。
70.通过本技术的方法,采用检测引擎实现对服务端下发至主机的流量交互信息进行检测,从而识别出携带有攻击者下发的恶意程序的恶意程序交互信息,从而使开发者通过恶意程序交互信息阻断服务端与主机的流量通信,对主机起到防止攻击者控制的作用,然后通过构造下载请求得到加密配置文件,并逐步构造出用于迷惑干扰攻击者的干扰请求包和干扰结果,通过将干扰请求包重复上传至服务端的方法,给攻击者制造干扰请求包中的信息均为真实主机信息的假象,起到迷惑并干扰攻击者的恶意程序控制的作用,同时通过干扰结果的反馈,更进一步真实地模拟了主机被攻击者恶意程序控制的场景,从而提高了干扰恶意程序控制的迷惑性。
71.实施例二
72.如图2所示,一种干扰恶意程序的系统,包括服务端、交换模组、被控主机模组、检测模组、决策模组和干扰模组,其中服务端为cs服务器,交换模组为交换机,检测模组为suricata检测。
73.其中服务端与被控主机模组之间通过交换模组实现流量交互,检测模组通过交换模组复制出流量初始流量交互信息,并通过检测模组检测出恶意程序交互信息,然后获取恶意程序交互信息的cs服务端的ip地址和端口信号,并发送给决策模组,决策模组收到cs服务端的ip地址和端口信号后进行阻断cs服务器的ip地址和端口信号,同时将cs服务端的ip地址和端口信号发送给干扰模组,进而干扰模组生成干扰请求包并重复发送给cs服务端,同时接收cs服务端下发的攻击者任务,并根据攻击者任务发送干扰结果给cs服务端,从而实现对攻击者的恶意程序的干扰。
74.一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,计算机程序被处理器执行时,实现上述任意一项的干扰的方法。
75.计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线段的电连接、便携式计算机磁盘、硬盘、随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。
76.在本技术中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本技术中,计算机可读
的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线段、电线段、光缆、rf等等,或者上述的任意合适的组合。
77.在本技术所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块、模组或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元、模组或组件可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。
78.所述单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是一个物理单元或多个物理单元,即可以位于一个地方,或者也可以分布到多个不同地方。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
79.另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
80.特别地,根据本发明公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分从网络上被下载和安装,和/或从可拆卸介质被安装。在该计算机程序被中央处理单元(cpu)执行时,执行本技术的方法中限定的上述功能。需要说明的是,本技术上述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是但不限于电、磁、光、电磁、红外线段、或半导体的系统、装置或器件,或者任意以上的组合。
81.附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
82.以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何在本发明揭露的技术范围内的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1