CN103902895A - 僵尸网络控制协议挖掘方法和装置 - Google Patents

僵尸网络控制协议挖掘方法和装置 Download PDF

Info

Publication number
CN103902895A
CN103902895A CN201210568194.6A CN201210568194A CN103902895A CN 103902895 A CN103902895 A CN 103902895A CN 201210568194 A CN201210568194 A CN 201210568194A CN 103902895 A CN103902895 A CN 103902895A
Authority
CN
China
Prior art keywords
code block
track
botnet
execution track
control protocol
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201210568194.6A
Other languages
English (en)
Other versions
CN103902895B (zh
Inventor
王志
邹赞
张晓康
贾春福
蔡亚运
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Technology Shenzhen Co Ltd
Nankai University
Original Assignee
Tencent Technology Shenzhen Co Ltd
Nankai University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd, Nankai University filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN201210568194.6A priority Critical patent/CN103902895B/zh
Publication of CN103902895A publication Critical patent/CN103902895A/zh
Application granted granted Critical
Publication of CN103902895B publication Critical patent/CN103902895B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/566Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Virology (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明涉及一种僵尸网络控制协议的挖掘方法和装置。所述方法包括以下步骤:捕捉僵尸程序的执行轨迹;对所述执行轨迹进行代码块划分;统计所述执行轨迹对每个代码块的覆盖次数,计算得到每个代码块的覆盖率;对所述代码块的覆盖次数及覆盖率分析得到第一类代码块和第二类代码块;根据所述第一类代码块和第二类代码块在执行轨迹中定位可疑区域;对所述可疑区域进行分析提取出恶意控制命令及其对应的特定程序指令;引导所述恶意控制命令所对应的程序覆盖僵尸程序,得到僵尸网络的控制协议。上述僵尸网络控制协议的挖掘方法和装置,提高了分析的准确率,分析的更全面。此外,简化执行轨迹中的指令数目,大幅减小分析所需的时间复杂度和空间复杂度。

Description

僵尸网络控制协议挖掘方法和装置
技术领域
本发明涉及计算机技术,特别是涉及一种僵尸网络控制协议挖掘方法和装置。
背景技术
随着互联网的发展,僵尸网络逐渐发展成规模庞大、功能多样的恶意网络,给当前的信息安全带来了不容忽视的威胁。其中,僵尸网络是指采用一种或多种传播手段将主机感染僵尸病毒,从而在控制者与被感染主机之间形成的可一对多控制的网络。在很多情况下,僵尸网络的控制协议和僵尸程序的高级语言形式的源代码难以得到,能够得到的仅仅是一些通过监视CPU(CentralProcessing Unit,中央处理器)的执行及其状态而捕捉到的僵尸程序执行部分命令时的二进制执行轨迹。如何利用这些执行轨迹挖掘出僵尸程序的全部命令,进而挖掘出该僵尸程序所在僵尸网络的控制协议是一个亟待解决的问题。
传统的对僵尸网络的命令和控制协议的挖掘主要包括动态分析和静态分析。动态分析的研究对象是僵尸网络的数据包,通过统计分析挖掘数据包中的特征,然后开发网络过滤工具阻断僵尸网络的通信;静态分析一般是由病毒分析员手工完成的,从僵尸网络的恶意代码样本中找出其中包含的命令与控制协议。然而传统的技术方案成本较高,需要大量的人力资源,分析的效率低,需要较长的分析时间,漏报率高。
发明内容
基于此,有必要针对传统的对僵尸网络的控制协议的挖掘中漏报率高的问题,提供一种能提高分析准确率的僵尸网络控制协议的挖掘方法。
此外,还有必要针对传统的对僵尸网络的控制协议的挖掘中漏报率高的问题,提供一种能提高分析准确率的僵尸网络控制协议的挖掘装置。
一种僵尸网络控制协议的挖掘方法,包括以下步骤:
捕捉僵尸程序的执行轨迹;
对所述执行轨迹进行代码块划分;
统计所述执行轨迹对每个代码块的覆盖次数,计算得到每个代码块的覆盖率;
对所述代码块的覆盖次数及覆盖率分析得到第一类代码块和第二类代码块,所述第一类代码块为仅被预设数量的执行轨迹中的一个覆盖的代码块,第二类代码块为代码块的覆盖率为百分百、每个执行轨迹对该代码块的覆盖次数均不同且都小于指定阈值的代码块;
根据所述第一类代码块和第二类代码块在执行轨迹中定位可疑区域;
对所述可疑区域进行分析提取出恶意控制命令及其对应的特定程序指令;
引导所述恶意控制命令所对应的程序覆盖僵尸程序,得到僵尸网络的控制协议。
一种僵尸网络控制协议的挖掘装置,包括:
捕捉模块,用于捕捉僵尸程序的执行轨迹;
划分模块,用于对所述执行轨迹进行代码块划分;
获取模块,用于统计所述执行轨迹对每个代码块的覆盖次数,计算得到每个代码块的覆盖率;
分析模块,用于对所述代码块的覆盖次数及覆盖率分析得到第一类代码块和第二类代码块,所述第一类代码块为仅被预设数量的执行轨迹中的一个覆盖的代码块,第二类代码块为代码块的覆盖率为百分百、每个执行轨迹对该代码块的覆盖次数均不同且都小于指定阈值的代码块;
定位模块,用于根据所述第一类代码块和第二类代码块在执行轨迹中定位可疑区域;
提取模块,用于对所述可疑区域进行分析提取出恶意控制命令及其对应的特定程序指令;
引导模块,用于引导所述恶意控制命令所对应的程序覆盖僵尸程序,得到僵尸网络的控制协议。
上述僵尸网络控制协议的挖掘方法和装置,对僵尸网络的执行轨迹进行划分代码块后,对代码块的覆盖率及被覆盖次数进行分析定位可疑区域,针对可疑区域进行分析提取出恶意控制命令及对应的特定程序,将提取的恶意控制命令及特定程序覆盖到僵尸程序,可分析得到僵尸程序的全部控制命令,如此提高了分析的准确率,分析的更全面。且无须高级语言形式的语义支持,能直接通过二进制执行轨迹分析,处理简单。
附图说明
图1为在一个实施例中僵尸网络控制协议的挖掘方法的流程示意图;
图2为代码块划分前执行轨迹中一组指令示例;
图3为图2中执行轨迹的一组指令进行代码块划分后的第一代码块;
图4为图2中执行轨迹的一组指令进行代码块划分后的第二个代码块;
图5为某个执行轨迹划分代码块后得到的代码块序列中的一部分;
图6为化简前的执行轨迹中的一组按序执行的指令示例;
图7为图6中指令简化后的示例;
图8为代码块覆盖次数示例;
图9为计算得到的代码块覆盖率的示例;
图10为代码块覆盖次数、覆盖率结合示例;
图11为第一类代码块示例;
图12为设置阈值r为50时筛选出来的SCB;
图13为设置阈值r为30时筛选出来的SCB;
图14为Zeus僵尸网络的僵尸程序对应的执行轨迹中定位到的可疑区域;
图15为代码块26d879a->26d879c和在它之前执行的代码示例;
图16为一个实施例中僵尸网络控制协议的挖掘装置的结构示意图;
图17为另一个实施例中僵尸网络控制协议的挖掘装置的结构示意图。
具体实施方式
下面结合具体的实施例及附图对僵尸网络控制协议的挖掘方法和装置的技术方案进行详细的描述,以使其更加清楚。
如图1所示,在一个实施例中,一种僵尸网络控制协议的挖掘方法,包括以下步骤:
步骤S102,捕捉僵尸程序的执行轨迹。
本实施例中,捕捉僵尸程序中预设数量个不同输入对应的不同二进制执行轨迹,并将二进制执行轨迹反汇编成汇编指令格式的执行轨迹。具体的,在一个全系统模拟器中运行僵尸程序,监视僵尸程序的执行过程,捕捉僵尸程序在输入为ti的情况下的二进制执行轨迹TRi(i=1,2,…,n)。然后将这n个二进制执行轨迹TRi反汇编成汇编指令格式的执行轨迹tri(i=1,2,…,n)。后续步骤中所指的“执行轨迹”均指汇编语言格式的执行轨迹,n为输入不同的执行轨迹的总个数。
例如在全系统模拟器中运行Zeus僵尸网络的僵尸程序,捕捉到10个输入不同命令时的二进制执行轨迹,然后将这10个二进制执行轨迹进行反汇编,得到10个汇编语言格式的执行轨迹。对每条指令的格式可如下:
地址:汇编指令、参与操作的寄存器或存储器中的数据污点信息。
步骤S104,对该执行轨迹进行代码块划分。
具体的,首先将汇编指令分为两类,一类是可能会直接引起程序执行过程中的执行路径或功能发生变化或指令地址发生转移的指令,即程序转移指令,如无条件转移指令(jump)、条件转移指令(jz、jnz、je、jne、jb等)、循环指令(loop、loopz、loopnz等)、过程调用指令(call)、调用返回指令(ret)、中断指令(INT等)等;另一类是非程序转移指令。
然后再以程序转移指令作为代码块的边界对执行轨迹进行代码块划分。且所有代码块中包含的指令集合的并集等于执行轨迹中包含的指令集合,任意两个代码块的交集为空。如,将执行轨迹tri(i=1,2,…,n)划分成m个代码块cb1,cb2,…,cbm,满足 ∪ j = 1 m I ( cb j ) = I ( tr i ) 且cbj∩cbk=φ
Figure BDA00002643702800042
其中,I(Χ)表示Χ中包含的指令的集合,Χ表示cbj或tri,m个代码块中包含的指令集合的并集等于n个执行轨迹中包含的指令集合的并集,
Figure BDA00002643702800043
表示任意。
图2为代码块划分前执行轨迹中一组指令,图3为图2中执行轨迹的一组指令进行代码块划分后的第一代码块、图4为图2中执行轨迹的一组指令进行代码块划分后的第二个代码块。图2中的执行轨迹中的一组指令中有两个可能会引起程序执行过程中的执行路径或功能发生变化或引起指令地址发生转移的地方,即地址为26dd3cd的jne指令和地址为26dd3e5的call指令,以这两条语句作为块的结尾,将该组指令划分为如图3和图4中所示的两个代码块。
为了简化,可用代码块的起始地址和结束地址代替代码块,图3中的代码块可表示为26dd3ca->26dd3cd,图4中的代码块可表示为26dd3d4->26dd3e5。因同一个僵尸程序在几次不同的执行过程中某一代码块在内存中的绝对地址是不同的,当它的相对地址是相同的,故可把不同执行轨迹中该代码块的地址都进行规格化,如在不同的执行轨迹中的26dd3ca和276d3ca都规格化为200d3ca,而同一执行轨迹中的地址26dd3ca和26e1468可规格化为200d3ca和2011468。通过规格化操作可得到执行轨迹的代码块序列。如图5所示为某个执行轨迹划分代码块后得到的代码块序列中的一部分。通过规格化代码块可简化计算,大幅减小分析所需的时间复杂度和空间复杂度。
在一个实施例中,在步骤S104之前,还可包括步骤:对该执行轨迹进行简化处理。
具体的,把系统空间的指令简化成用户空间对系统函数调用的信息。
在本实例中,系统空间的指令的特点是其地址为8位,而用户空间的指令地址为6位或7位。图6是化简前的执行轨迹中的一组按序执行的指令。其中,从地址为7c80aa26到地址为7c80aa3b的指令段是属于系统空间的指令。图6中指令段是一个系统函数lstrcmpiW,由于暂时无须关心其内部执行的细节,所以可以简化掉它,而仅留下一个描述信息来表示在此处调用过该系统函数。将图6中的指令简化后如图7所示,得到一行调用信息:
7c80aa26:kernel32.dll lstrcmpiW0xaa26。
其中,7c80aa26表示该系统函数的入口地址,kernel32.dll是拥有它的进程,lstrcmpiW是函数名,0xaa26表示该函数的入口地址的相对偏移。
把Zeus僵尸网络中僵尸程序的10个执行轨迹进行简化,简化之前和之后执行轨迹的文件大小对比如表1所示。
表1
执行轨迹 输入的恶意命令 简化前(MB) 简化后(MB) 简化比例
1 user_logoff 606.1 125.8 79.24%
2 user_execute 544.3 122.2 77.55%
3 bot_uninstall 670.2 121.3 81.90%
4 os_shutdown 991.8 206 79.23%
5 os_reboot 1331.2 212.5 84.04%
6 user_homepage_set 1069.3 279.6 73.85%
7 fs_search_remove 843.5 215.7 74.42%
8 fs_search_add 1126.4 341.9 69.65%
9 fs_path_get 926 204 77.97%
10 user_destroy 1353.1 343.4 74.62%
从表1中可以看出,大部分执行轨迹都能简化掉约70%左右,如此大幅度的简化执行轨迹中的指令数目,大幅减小分析所需的时间复杂度和空间复杂度,大大提高了分析效率。
步骤S106,统计执行轨迹对每个代码块的覆盖次数,计算得到每个代码块的覆盖率。
具体的,统计预设数量个执行轨迹对每个代码块的覆盖状态,计算覆盖代码块的执行轨迹的个数与该预设数量的比值,将该比值作为相应的代码块的覆盖率。
首先,统计每一个代码块cbj被执行轨迹tri(i=1,2,…,n)是否覆盖,且令
Figure BDA00002643702800061
其中,ci[j]表示覆盖状态,1表示覆盖,0表示未覆盖。
然后,统计执行轨迹tri(i=1,2,…,n)对每一个代码块cbj的覆盖次数cti[j],令
最后,计算出每一个代码块cbj的覆盖率
Figure BDA00002643702800071
其中,cbcj为代码块cbj的覆盖率,n为对应不同输入的不同执行轨迹的个数。
对Zeus僵尸网络的僵尸程序的10个执行轨迹中每个执行轨迹进行单独统计,统计该执行轨迹对每个代码块的覆盖次数,如图8所示为代码块覆盖次数示例,如200d5f6->200d5fb的覆盖次数为15次。然后对比10个执行轨迹,统计这些执行轨迹中出现的不同代码块的总数,比较这些执行轨迹对每个代码块的覆盖状态,计算每一个代码块的覆盖率。如图9所示为计算得到的代码块覆盖率的示例。
为了便于分析,将计算得到的每个代码块的覆盖率和每一个执行轨迹对代码块的覆盖次数结合在一起,其格式为:
代码块cbj:cbj的覆盖率:每个执行轨迹对cbj是否覆盖:每个执行轨迹对cbj的覆盖次数。
如图10所示,为代码块覆盖次数、覆盖率结合示例。以图10中最后一行的数据为例说明各数据表示的含义。最后一行数据:
20190af->20190b1:40%:0101100001:010014938000057。
其中,20190af->20190b1表示起始地址为20190af,结束地址为20190b1的代码块;40%表示其覆盖率;0101100001表示在统计的10个执行轨迹对该代码块覆盖情况,其中每一个执行轨迹对应其中的一位,1表示覆盖了该代码块,0表示未覆盖;所以,0101100001就表示第1、6、7、9个执行轨迹(从低位即右边开始数起)覆盖了该代码块,其余的执行轨迹都没有覆盖该代码块;后面的数字0,10,0,149,38,0,0,0,0,57则具体记录了这10个执行轨迹对该代码块的覆盖的次数。
步骤S108,对代码块的覆盖次数及覆盖率分析得到第一类代码块和第二类代码块,该第一类代码块为仅被预设数量的执行轨迹中的一个覆盖的代码块,第二类代码块为代码块的覆盖率为百分百、每个执行轨迹对该代码块的覆盖次数均不同且都小于指定阈值的代码块。
对代码块覆盖率cbcj和覆盖次数cti[j]进行统计分析,首先找出仅仅被n个执行轨迹中的一个覆盖的代码块,这些代码块属于某一特定输入所对应的恶意程序部分的概率最大,记该代码块为ECB(exclusive code block),即ECB满足对于某个trk(k∈{1,2,…,n})有ck[ECB]=1,而对于其他
Figure BDA00002643702800081
s≠k有cs[ECB]=0。
如图11所示,为第一类代码块示例,图11中这些代码块的覆盖率是10%,即只有1个执行轨迹覆盖了代码块,该代码块就是该执行轨迹所独有的代码块,该代码块很可能就是僵尸网络的客户端收到某个特定的恶意命令后要执行的特定功能。
然后找出代码块覆盖率为100%但每个执行轨迹对该代码块的覆盖次数又均不相同且都小于某一指定阈值r的代码块,记这些代码块为SCB(specific codeblock),即SCB满足:①cbcSCB=100%;②对于
Figure BDA00002643702800082
有cti[SCB]≠ctj[SCB];③对于
Figure BDA00002643702800083
有cti[SCB]<r;其中,n为对应不同输入的不同执行轨迹的个数。
SCB满足的三个条件是根据如下情况得出:因为僵尸网络的客户端要根据服务器端发来的不同的命令执行不同的操作,那么其需要知道自己接收到的是哪个命令,故要有命令的比较操作。而命令的比较相关的代码块要满足三个条件:其一是所有的执行轨迹都要经过恶意命令比较才知道其接收的是什么命令进而执行相应的操作;其二是不同的恶意命令的比较次数不同;其三是僵尸网络的恶意命令的种类有限,所以每一个执行轨迹中命令比较的次数都会小于某个特定值。
按照三个条件,对所有的代码块进行筛选。如图12是设置阈值r为50时筛选出来的SCB。统计阈值r为50时筛选前后代码块的总数,对比结果如表2所示。
表1
筛选前代码块总数 筛选后代码块总数 筛选后占筛选前的比例
2091 10 0.48%
从表2可以看出,筛选后的代码块总数仅占筛选前代码块总数的0.48%。这有助于快速地定位到可疑区域。
图13是设置阈值r为30时筛选出来的SCB。统计阈值r为30时筛选前后代码块的总数,对比如表3所示。
表2
筛选前代码块总数 筛选后代码块总数 筛选后占筛选前的比例
2091 5 0.24%
步骤S110,根据第一类代码块和第二类代码块在执行轨迹中定位可疑区域。
执行轨迹中先执行第二类代码(SCB)然后紧接着执行第一类代码(ECB)的区域是跟恶意控制命令相关的代码块的可能性最大,称为可疑区域。
当可疑区域很多时,在根据步骤S110之后,还包括步骤:获取每个代码块的污点状态,将没有污点的代码块从所述可疑区域中剔除。污点是指已出现过恶意命令的代码块。
如图14所示为Zeus僵尸网络的僵尸程序对应的执行轨迹中定位到的可疑区域。
步骤S112,对可疑区域进行分析提取出恶意控制命令及其对应的特定程序指令。
具体的,对可疑区域进行分析,从中找到僵尸程序接收的命令存储的地址和该命令对应的特定程序的入口地址,结合二进制代码动态分析方法根据得到的存储地址及入口地址提取出恶意控制命令及其对应的特定程序指令。
例如对图14中的可疑区域进行分析,即代码块200879a->200879c进行分析。以该代码块的起始地址879a为标识,在执行轨迹中找到并分析该代码块和它周围的区域。其中,地址前3位是200,是因为做了规格化,在下面特定的执行轨迹中对应地址前3位是26d。
图15是代码块26d879a->26d879c和在它之前执行的代码。可以看到,首先执行代码块26d878f->26d8792,然后调用了系统函数lstrcmpiW、GetThreadLocale和CompareStringW,最后执行代码块26d879a->26d879c。这些系统函数完成的功能就是字符串的比较,而代码块26d879a->26d879c的作用就是判断字符串比较是否匹配,如果匹配则把程序转移到26d87a6。
然后,进一步分析简化前的执行轨迹中系统函数lstrcmpiW、GetThreadLocale和CompareStringW的对应指令,从中找到字符串比较的两个参数。经过分析得知,第一个参数是该执行轨迹接收到的命令字符串,放在以地址0x2a02740为起始地址的内存中,第二个参数是要与接收到的命令进行比较的字符串,放在以地址0x188f838开始的堆栈中。如果通过比较找到了匹配的恶意命令,则执行其对应的操作,其对应程序的入口地址被放在以0x26d25bc为基址、以比较次数乘以8为偏移的地址中,所以从地址0x26d25bc开始,可以取出所有恶意命令对应的特定操作的入口地址。
提取出的Zeus僵尸程序可以接收的全部恶意命令如表4所示。
表3
命令 比较次序 对应恶意程序的入口地址
os_shutdown 1 8088
os_reboot 2 8092
bot_uninstall 3 809c
bot_update 4 80a6
bot_bc_add 5 815d
bot_bc_remove 6 816f
bot_httpinject_disable 7 8181
bot_httpinject_enable 8 818d
fs_path_get 9 8199
fs_search_add 10 8199
fs_search_remove 11 8199
user_destroy 12 819c
user_logoff 13 81a6
user_execute 14 81b0
user_cookies_get 15 82fe
user_cookies_remove 16 8306
user_certs_get 17 8317
user_certs_remove 18 831c
user_url_block 19 8321
user_url_unblock 20 832d
user_homepage_set 21 8339
user_ftpclients_get 22 8388
user_emailclients_get 23 83ba
user_flashplayer_get 24 83ec
user_flashplayer_remove 25 83f4
经过分析得知,Zeus的僵尸程序在收到恶意控制命令时,首先将该命令和表4中的命令按照表中的比较次序依次比较,当匹配的时候就停止比较,转到对应程序的入口地址处开始执行对应的操作;如果不匹配就继续比较,一直找到匹配的命令或者比较完所有命令为止。
步骤S114,引导恶意控制命令所对应的程序覆盖僵尸程序,得到僵尸网络的控制协议。
具体的,利用二进制代码动态插装技术,引导得到的恶意控制命令所对应的程序在全系统模拟器中执行,进而实现僵尸程序命令空间的全覆盖,从而挖掘出该僵尸程序所在僵尸网络的控制协议。如此即可得到Zeus僵尸网络的全部控制命令和它们对应的操作即操作行为特征,从而得到Zeus僵尸网络的控制协议。
上述僵尸网络控制协议的挖掘方法,对僵尸网络的执行轨迹进行划分代码块后,对代码块的覆盖率及被覆盖次数进行分析定位可疑区域,针对可疑区域进行分析提取出恶意控制命令及对应的特定程序,将提取的恶意控制命令及特定程序覆盖到僵尸程序,可分析得到僵尸程序的全部控制命令,如此提高了分析的准确率,分析的更全面。且无须高级语言形式的语义支持,能直接通过二进制执行轨迹分析,处理简单。
如图16所示,在一个实施例中,一种僵尸网络控制协议的挖掘装置,包括捕捉模块102、划分模块104、获取模块106、分析模块108、定位模块110、提取模块112和引导模块114。其中:
捕捉模块102用于捕捉僵尸程序的执行轨迹。
本实施例中,捕捉僵尸程序中预设数量个不同输入对应的不同二进制执行轨迹,并将二进制执行轨迹反汇编成汇编指令格式的执行轨迹。具体的,在一个全系统模拟器中运行僵尸程序,监视僵尸程序的执行过程,捕捉僵尸程序在输入为ti的情况下的二进制执行轨迹TRi(i=1,2,…,n)。然后将这n个二进制执行轨迹TRi反汇编成汇编指令格式的执行轨迹tri(i=1,2,…,n)。后续步骤中所指的“执行轨迹”均指汇编语言格式的执行轨迹,n为输入不同的执行轨迹的总个数。
例如在全系统模拟器中运行Zeus僵尸网络的僵尸程序,捕捉到10个输入不同命令时的二进制执行轨迹,然后将这10个二进制执行轨迹进行反汇编,得到10个汇编语言格式的执行轨迹。对每条指令的格式可如下:
地址:汇编指令、参与操作的寄存器或存储器中的数据污点信息。
划分模块104用于对所述执行轨迹进行代码块划分。
具体的,首先将汇编指令分为两类,一类是可能会直接引起程序执行过程中的执行路径或功能发生变化或指令地址发生转移的指令,即程序转移指令,如无条件转移指令(jump)、条件转移指令(jz、jnz、je、jne、jb等)、循环指令(loop、loopz、loopnz等)、过程调用指令(call)、调用返回指令(ret)、中断指令(INT等)等;另一类是非程序转移指令。
然后划分模块104以程序转移指令作为代码块的边界对执行轨迹进行代码块划分。且所有代码块中包含的指令集合的并集等于执行轨迹中包含的指令集合,任意两个代码块的交集为空。如,将执行轨迹tri(i=1,2,…,n)划分成m个代码块cb1,cb2,…,cbm,满足 ∪ j = 1 m I ( cb j ) = I ( tr i ) 且cbj∩cbk=φ
Figure BDA00002643702800122
其中,I(Χ)表示Χ中包含的指令的集合,Χ表示cbj或tri,m个代码块中包含的指令集合的并集等于n个执行轨迹中包含的指令集合的并集,表示任意。
图2为代码块划分前执行轨迹中一组指令,图3为图2中执行轨迹的一组指令进行代码块划分后的第一代码块、图4为图2中执行轨迹的一组指令进行代码块划分后的第二个代码块。图2中的执行轨迹中的一组指令中有两个可能会引起程序执行过程中的执行路径或功能发生变化或引起指令地址发生转移的地方,即地址为26dd3cd的jne指令和地址为26dd3e5的call指令,以这两条语句作为块的结尾,将该组指令划分为如图3和图4中所示的两个代码块。
为了简化,可用代码块的起始地址和结束地址代替代码块,图3中的代码块可表示为26dd3ca->26dd3cd,图4中的代码块可表示为26dd3d4->26dd3e5。因同一个僵尸程序在几次不同的执行过程中某一代码块在内存中的绝对地址是不同的,当它的相对地址是相同的,故可把不同执行轨迹中该代码块的地址都进行规格化,如在不同的执行轨迹中的26dd3ca和276d3ca都规格化为200d3ca,而同一执行轨迹中的地址26dd3ca和26e1468可规格化为200d3ca和2011468。通过规格化操作可得到执行轨迹的代码块序列。如图5所示为某个执行轨迹划分代码块后得到的代码块序列中的一部分。通过规格化代码块可简化计算,大幅减小分析所需的时间复杂度和空间复杂度。
获取模块106用于统计所述执行轨迹对每个代码块的覆盖次数,计算得到每个代码块的覆盖率。
具体的,统计预设数量个执行轨迹对每个代码块的覆盖状态,计算覆盖代码块的执行轨迹的个数与该预设数量的比值,将该比值作为相应的代码块的覆盖率。
首先,统计每一个代码块cbj被执行轨迹tri(i=1,2,…,n)是否覆盖,且令
Figure BDA00002643702800131
其中,ci[j]表示覆盖状态,1表示覆盖,0表示未覆盖。
然后,统计执行轨迹tri(i=1,2,…,n)对每一个代码块cbj的覆盖次数cti[j],令
Figure BDA00002643702800132
最后,计算出每一个代码块cbj的覆盖率
Figure BDA00002643702800133
其中,cbcj为代码块cbj的覆盖率,n为对应不同输入的不同执行轨迹的个数。
对Zeus僵尸网络的僵尸程序的10个执行轨迹中每个执行轨迹进行单独统计,统计该执行轨迹对每个代码块的覆盖次数,如图8所示为代码块覆盖次数示例,如200d5f6->200d5fb的覆盖次数为15次。然后对比10个执行轨迹,统计这些执行轨迹中出现的不同代码块的总数,比较这些执行轨迹对每个代码块的覆盖状态,计算每一个代码块的覆盖率。如图9所示为计算得到的代码块覆盖率的示例。
为了便于分析,将计算得到的每个代码块的覆盖率和每一个执行轨迹对代码块的覆盖次数结合在一起,其格式为:
代码块cbj:cbj的覆盖率:每个执行轨迹对cbj是否覆盖:每个执行轨迹对cbj的覆盖次数。
如图10所示,为代码块覆盖次数、覆盖率结合示例。以图10中最后一行的数据为例说明各数据表示的含义。最后一行数据:
20190af->20190b1:40%:0101100001:010014938000057。
其中,20190af->20190b1表示起始地址为20190af,结束地址为20190b1的代码块;40%表示其覆盖率;0101100001表示在统计的10个执行轨迹对该代码块覆盖情况,其中每一个执行轨迹对应其中的一位,1表示覆盖了该代码块,0表示未覆盖;所以,0101100001就表示第1、6、7、9个执行轨迹(从低位即右边开始数起)覆盖了该代码块,其余的执行轨迹都没有覆盖该代码块;后面的数字0,10,0,149,38,0,0,0,0,57则具体记录了这10个执行轨迹对该代码块的覆盖的次数。
分析模块108用于对代码块的覆盖次数及覆盖率分析得到第一类代码块和第二类代码块,所述第一类代码块为仅被预设数量的执行轨迹中的一个覆盖的代码块,第二类代码块为代码块的覆盖率为百分百、每个执行轨迹对该代码块的覆盖次数均不同且都小于指定阈值的代码块。
对代码块覆盖率cbcj和覆盖次数cti[j]进行统计分析,首先找出仅仅被n个执行轨迹中的一个覆盖的代码块,这些代码块属于某一特定输入所对应的恶意程序部分的概率最大,记该代码块为ECB(exclusive code block),即ECB满足对于某个trk(k∈{1,2,…,n})有ck[ECB]=1,而对于其他s≠k有cs[ECB]=0。
如图11所示,为第一类代码块示例,图11中这些代码块的覆盖率是10%,即只有1个执行轨迹覆盖了代码块,该代码块就是该执行轨迹所独有的代码块,该代码块很可能就是僵尸网络的客户端收到某个特定的恶意命令后要执行的特定功能。
然后找出代码块覆盖率为100%但每个执行轨迹对该代码块的覆盖次数又均不相同且都小于某一指定阈值r的代码块,记这些代码块为SCB(specific codeblock),即SCB满足:①cbcSCB=100%;②对于有cti[SCB]≠ctj[SCB];③对于
Figure BDA00002643702800152
有cti[SCB]<r;其中,n为对应不同输入的不同执行轨迹的个数。
SCB满足的三个条件是根据如下情况得出:因为僵尸网络的客户端要根据服务器端发来的不同的命令执行不同的操作,那么其需要知道自己接收到的是哪个命令,故要有命令的比较操作。而命令的比较相关的代码块要满足三个条件:其一是所有的执行轨迹都要经过恶意命令比较才知道其接收的是什么命令进而执行相应的操作;其二是不同的恶意命令的比较次数不同;其三是僵尸网络的恶意命令的种类有限,所以每一个执行轨迹中命令比较的次数都会小于某个特定值。
按照三个条件,对所有的代码块进行筛选。如图12是设置阈值r为50时筛选出来的SCB。统计阈值r为50时筛选前后代码块的总数,对比结果如表2所示。图13是设置阈值r为30时筛选出来的SCB。统计阈值r为30时筛选前后代码块的总数,对比如表3所示。
定位模块110用于根据所述第一类代码块和第二类代码块在执行轨迹中定位可疑区域。
执行轨迹中先执行第二类代码(SCB)然后紧接着执行第一类代码(ECB)的区域是跟恶意控制命令相关的代码块的可能性最大,称为可疑区域。
如图14所示为Zeus僵尸网络的僵尸程序对应的执行轨迹中定位到的可疑区域。
提取模块112用于对所述可疑区域进行分析提取出恶意控制命令及其对应的特定程序指令。
具体的,对可疑区域进行分析,从中找到僵尸程序接收的命令存储的地址和该命令对应的特定程序的入口地址,结合二进制代码动态分析方法根据得到的存储地址及入口地址提取出恶意控制命令及其对应的特定程序指令。
例如对图14中的可疑区域进行分析,即代码块200879a->200879c进行分析。以该代码块的起始地址879a为标识,在执行轨迹中找到并分析该代码块和它周围的区域。其中,地址前3位是200,是因为做了规格化,在下面特定的执行轨迹中对应地址前3位是26d。
图15是代码块26d879a->26d879c和在它之前执行的代码。可以看到,首先执行代码块26d878f->26d8792,然后调用了系统函数lstrcmpiW、GetThreadLocale和CompareStringW,最后执行代码块26d879a->26d879c。这些系统函数完成的功能就是字符串的比较,而代码块26d879a->26d879c的作用就是判断字符串比较是否匹配,如果匹配则把程序转移到26d87a6。
然后,进一步分析简化前的执行轨迹中系统函数lstrcmpiW、GetThreadLocale和CompareStringW的对应指令,从中找到字符串比较的两个参数。经过分析得知,第一个参数是该执行轨迹接收到的命令字符串,放在以地址0x2a02740为起始地址的内存中,第二个参数是要与接收到的命令进行比较的字符串,放在以地址0x188f838开始的堆栈中。如果通过比较找到了匹配的恶意命令,则执行其对应的操作,其对应程序的入口地址被放在以0x26d25bc为基址、以比较次数乘以8为偏移的地址中,所以从地址0x26d25bc开始,可以取出所有恶意命令对应的特定操作的入口地址。
提取模块112提取出的Zeus僵尸程序可以接收的全部恶意命令如表4所示。
经过分析得知,Zeus的僵尸程序在收到恶意控制命令时,首先将该命令和表4中的命令按照表中的比较次序依次比较,当匹配的时候就停止比较,转到对应程序的入口地址处开始执行对应的操作;如果不匹配就继续比较,一直找到匹配的命令或者比较完所有命令为止。
引导模块114用于引导所述恶意控制命令所对应的程序覆盖僵尸程序,得到僵尸网络的控制协议。
具体的,利用二进制代码动态插装技术,引导得到的恶意控制命令所对应的程序在全系统模拟器中执行,进而实现僵尸程序命令空间的全覆盖,从而挖掘出该僵尸程序所在僵尸网络的控制协议。如此即可得到Zeus僵尸网络的全部控制命令和它们对应的操作即操作行为特征,从而得到Zeus僵尸网络的控制协议。
上述僵尸网络控制协议的挖掘装置,对僵尸网络的执行轨迹进行划分代码块后,对代码块的覆盖率及被覆盖次数进行分析定位可疑区域,针对可疑区域进行分析提取出恶意控制命令及对应的特定程序,将提取的恶意控制命令及特定程序覆盖到僵尸程序,可分析得到僵尸程序的全部控制命令,如此提高了分析的准确率,分析的更全面。且无须高级语言形式的语义支持,能直接通过二进制执行轨迹分析,处理简单。
如图17所示,在一个实施例中,上述僵尸网络控制协议的挖掘装置,除了包括捕捉模块102、划分模块104、获取模块106、分析模块108、定位模块110、提取模块112和引导模块114,还包括简化模块116和剔除模块118。其中:
简化模块116用于对执行轨迹进行简化处理。具体的,把系统空间的指令简化成用户空间对系统函数调用的信息。
在本实例中,系统空间的指令的特点是其地址为8位,而用户空间的指令地址为6位或7位。图6是化简前的执行轨迹中的一组按序执行的指令。其中,从地址为7c80aa26到地址为7c80aa3b的指令段是属于系统空间的指令。图6中指令段是一个系统函数lstrcmpiW,由于暂时无须关心其内部执行的细节,所以可以简化掉它,而仅留下一个描述信息来表示在此处调用过该系统函数。将图6中的指令简化后如图7所示,得到一行调用信息:
7c80aa26:kernel32.dll lstrcmpiW0xaa26。
其中,7c80aa26表示该系统函数的入口地址,kernel32.dll是拥有它的进程,lstrcmpiW是函数名,0xaa26表示该函数的入口地址的相对偏移。
把Zeus僵尸网络中僵尸程序的10个执行轨迹进行简化,简化之前和之后执行轨迹的文件大小对比如表1所示。
剔除模块118用于获取每个代码块的污点状态,将没有污点的代码块从所述可疑区域中剔除。
当可疑区域很多时,剔除模块118获取每个代码块的污点状态,将没有污点的代码块从可疑区域中剔除。污点是指已出现过恶意命令的代码块。如此可减少分析量,提高分析效率。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。

Claims (12)

1.一种僵尸网络控制协议的挖掘方法,包括以下步骤:
捕捉僵尸程序的执行轨迹;
对所述执行轨迹进行代码块划分;
统计所述执行轨迹对每个代码块的覆盖次数,计算得到每个代码块的覆盖率;
对所述代码块的覆盖次数及覆盖率分析得到第一类代码块和第二类代码块,所述第一类代码块为仅被预设数量的执行轨迹中的一个覆盖的代码块,第二类代码块为代码块的覆盖率为百分百、每个执行轨迹对该代码块的覆盖次数均不同且都小于指定阈值的代码块;
根据所述第一类代码块和第二类代码块在执行轨迹中定位可疑区域;
对所述可疑区域进行分析提取出恶意控制命令及其对应的特定程序指令;
引导所述恶意控制命令所对应的程序覆盖僵尸程序,得到僵尸网络的控制协议。
2.根据权利要求1所述的僵尸网络控制协议的挖掘方法,其特征在于,所述捕捉僵尸程序的执行轨迹的步骤包括:
捕捉僵尸程序中预设数量个不同输入对应的不同二进制执行轨迹,并将所述二进制执行轨迹反汇编成汇编指令格式的执行轨迹。
3.根据权利要求1所述的僵尸网络控制协议的挖掘方法,其特征在于,在对所述执行轨迹进行代码块划分的步骤之前,还包括步骤:
对所述执行轨迹进行简化处理。
4.根据权利要求1所述的僵尸网络控制协议的挖掘方法,其特征在于,所述计算得到每个代码块的覆盖率的步骤包括:
统计预设数量个执行轨迹对每个代码块的覆盖状态,计算覆盖代码块的执行轨迹的个数与该预设数量的比值,将所述比值作为相应的代码块的覆盖率。
5.根据权利要求1所述的僵尸网络控制协议的挖掘方法,其特征在于,在根据所述第一类代码块和第二类代码块在执行轨迹中定位可疑区域的步骤之后,还包括步骤:
获取每个代码块的污点状态,将没有污点的代码块从所述可疑区域中剔除。
6.根据权利要求1所述的僵尸网络控制协议的挖掘方法,其特征在于,所述对所述执行轨迹进行代码块划分的步骤包括:
以程序转移指令作为代码块的边界对执行轨迹进行代码块划分,且所有代码块中包含的指令集合的并集等于执行轨迹中包含的指令集合,任意两个代码块的交集为空。
7.一种僵尸网络控制协议的挖掘装置,其特征在于,包括:
捕捉模块,用于捕捉僵尸程序的执行轨迹;
划分模块,用于对所述执行轨迹进行代码块划分;
获取模块,用于统计所述执行轨迹对每个代码块的覆盖次数,计算得到每个代码块的覆盖率;
分析模块,用于对所述代码块的覆盖次数及覆盖率分析得到第一类代码块和第二类代码块,所述第一类代码块为仅被预设数量的执行轨迹中的一个覆盖的代码块,第二类代码块为代码块的覆盖率为百分百、每个执行轨迹对该代码块的覆盖次数均不同且都小于指定阈值的代码块;
定位模块,用于根据所述第一类代码块和第二类代码块在执行轨迹中定位可疑区域;
提取模块,用于对所述可疑区域进行分析提取出恶意控制命令及其对应的特定程序指令;
引导模块,用于引导所述恶意控制命令所对应的程序覆盖僵尸程序,得到僵尸网络的控制协议。
8.根据权利要求7所述的僵尸网络控制协议的挖掘装置,其特征在于,所述装置还包括反汇编模块,所述捕捉模块还用于捕捉僵尸程序中预设数量个不同输入对应的不同二进制执行轨迹;所述反汇编模块用于将所述二进制执行轨迹反汇编成汇编指令格式的执行轨迹。
9.根据权利要求7所述的僵尸网络控制协议的挖掘装置,其特征在于,所述装置还包括:
简化模块,用于对所述执行轨迹进行简化处理。
10.根据权利要求7所述的僵尸网络控制协议的挖掘装置,其特征在于,所述获取模块还用于统计预设数量个执行轨迹对每个代码块的覆盖状态,计算覆盖代码块的执行轨迹的个数与该预设数量的比值,将所述比值作为相应的代码块的覆盖率。
11.根据权利要求7所述的僵尸网络控制协议的挖掘装置,其特征在于,所述装置还包括:
剔除模块,用于获取每个代码块的污点状态,将没有污点的代码块从所述可疑区域中剔除。
12.根据权利要求7所述的僵尸网络控制协议的挖掘装置,其特征在于,所述划分模块还用于以程序转移指令作为代码块的边界对执行轨迹进行代码块划分,且所有代码块中包含的指令集合的并集等于执行轨迹中包含的指令集合,任意两个代码块的交集为空。
CN201210568194.6A 2012-12-24 2012-12-24 僵尸网络控制协议挖掘方法和装置 Active CN103902895B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210568194.6A CN103902895B (zh) 2012-12-24 2012-12-24 僵尸网络控制协议挖掘方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210568194.6A CN103902895B (zh) 2012-12-24 2012-12-24 僵尸网络控制协议挖掘方法和装置

Publications (2)

Publication Number Publication Date
CN103902895A true CN103902895A (zh) 2014-07-02
CN103902895B CN103902895B (zh) 2017-07-07

Family

ID=50994207

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210568194.6A Active CN103902895B (zh) 2012-12-24 2012-12-24 僵尸网络控制协议挖掘方法和装置

Country Status (1)

Country Link
CN (1) CN103902895B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106664201A (zh) * 2014-08-28 2017-05-10 三菱电机株式会社 进程解析装置、进程解析方法和进程解析程序
CN107291598A (zh) * 2017-08-07 2017-10-24 腾讯科技(深圳)有限公司 监控方法、监控装置、监控设备和存储介质
CN109033836A (zh) * 2018-07-24 2018-12-18 南开大学 基于统计学习的恶意代码多模型交叉检测方法

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101404658A (zh) * 2008-10-31 2009-04-08 北京锐安科技有限公司 一种检测僵尸网络的方法及其系统
US20090172815A1 (en) * 2007-04-04 2009-07-02 Guofei Gu Method and apparatus for detecting malware infection
US20090249481A1 (en) * 2008-03-31 2009-10-01 Men Long Botnet spam detection and filtration on the source machine
CN101741862A (zh) * 2010-01-22 2010-06-16 西安交通大学 基于数据包序列特征的irc僵尸网络检测系统和检测方法
CN101930517A (zh) * 2010-10-13 2010-12-29 四川通信科研规划设计有限责任公司 一种僵尸程序的检测方法
CN102291397A (zh) * 2011-08-04 2011-12-21 中国科学院计算技术研究所 一种僵尸网络追踪方法
CN102457495A (zh) * 2010-10-21 2012-05-16 中华电信股份有限公司 网络病毒防护方法及系统

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090172815A1 (en) * 2007-04-04 2009-07-02 Guofei Gu Method and apparatus for detecting malware infection
US20090249481A1 (en) * 2008-03-31 2009-10-01 Men Long Botnet spam detection and filtration on the source machine
CN101404658A (zh) * 2008-10-31 2009-04-08 北京锐安科技有限公司 一种检测僵尸网络的方法及其系统
CN101741862A (zh) * 2010-01-22 2010-06-16 西安交通大学 基于数据包序列特征的irc僵尸网络检测系统和检测方法
CN101930517A (zh) * 2010-10-13 2010-12-29 四川通信科研规划设计有限责任公司 一种僵尸程序的检测方法
CN102457495A (zh) * 2010-10-21 2012-05-16 中华电信股份有限公司 网络病毒防护方法及系统
CN102291397A (zh) * 2011-08-04 2011-12-21 中国科学院计算技术研究所 一种僵尸网络追踪方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
杨奇: ""基于异常行为特征的僵尸网络检测方法研究"", 《中国优秀硕士学位论文全文数据库信息科技辑》 *
王威等: ""基于终端行为特征的IRC僵尸网络检测"", 《计算机学报》 *

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106664201A (zh) * 2014-08-28 2017-05-10 三菱电机株式会社 进程解析装置、进程解析方法和进程解析程序
CN107291598A (zh) * 2017-08-07 2017-10-24 腾讯科技(深圳)有限公司 监控方法、监控装置、监控设备和存储介质
CN107291598B (zh) * 2017-08-07 2018-07-06 腾讯科技(深圳)有限公司 监控方法、监控装置、监控设备和存储介质
CN109033836A (zh) * 2018-07-24 2018-12-18 南开大学 基于统计学习的恶意代码多模型交叉检测方法
CN109033836B (zh) * 2018-07-24 2021-07-20 南开大学 基于统计学习的恶意代码多模型交叉检测方法

Also Published As

Publication number Publication date
CN103902895B (zh) 2017-07-07

Similar Documents

Publication Publication Date Title
Yu et al. Deescvhunter: A deep learning-based framework for smart contract vulnerability detection
CN107102941B (zh) 一种测试用例的生成方法及装置
CN108268777A (zh) 一种利用补丁信息进行未知漏洞发现的相似性检测方法
CN103839003A (zh) 恶意文件检测方法及装置
US11263062B2 (en) API mashup exploration and recommendation
CN105677311A (zh) 一种函数调用关系的识别方法及装置
JP2021093176A (ja) セキュリティ情報分析方法、セキュリティ情報分析システム、及び、プログラム
CN108229158A (zh) 一种Android中存储的用户隐私信息的保护方法
CN103294951B (zh) 一种基于文档型漏洞的恶意代码样本提取方法及系统
CN114462044B (zh) 一种基于污点分析的uefi固件漏洞静态检测方法及装置
US11528285B2 (en) Label guided unsupervised learning based network-level application signature generation
CN104866764B (zh) 一种基于对象引用图的Android手机恶意软件检测方法
CN102298681B (zh) 一种基于数据流切片的软件识别方法
CN104360837A (zh) 取证软件中基于自定义脚本实现电子数据取证分析的方法
CN103902895A (zh) 僵尸网络控制协议挖掘方法和装置
CN108055166B (zh) 一种嵌套的应用层协议的状态机提取系统及其提取方法
CN103902906A (zh) 基于应用图标的移动终端恶意代码检测方法及系统
CN108959922B (zh) 一种基于贝叶斯网的恶意文档检测方法及装置
CN107707540A (zh) 一种基于消息字段分隔符识别的网络协议逆向分析方法
CN106528411A (zh) 覆盖率检测方法、装置和设备
CN113779589B (zh) 一种安卓智能手机应用误配置检测方法
CN111245880A (zh) 基于行为轨迹重建的用户体验监控方法及装置
US10474651B2 (en) Analysis of system information
CN103905391B (zh) 僵尸网络命令和控制协议的获取方法及装置
KR101619059B1 (ko) 악성 스크립트 탐지를 위한 경량 시그니처 생성 및 배포 장치, 시스템 및 방법

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant