CN112836216B - 基于行为和代码长度的恶意样本逆向任务分配方法及系统 - Google Patents
基于行为和代码长度的恶意样本逆向任务分配方法及系统 Download PDFInfo
- Publication number
- CN112836216B CN112836216B CN202110155785.XA CN202110155785A CN112836216B CN 112836216 B CN112836216 B CN 112836216B CN 202110155785 A CN202110155785 A CN 202110155785A CN 112836216 B CN112836216 B CN 112836216B
- Authority
- CN
- China
- Prior art keywords
- function
- task
- list
- node
- reverse
- 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.)
- Active
Links
- 230000002441 reversible effect Effects 0.000 title claims abstract description 66
- 238000000034 method Methods 0.000 title claims abstract description 54
- 230000006399 behavior Effects 0.000 title claims abstract description 36
- 230000008569 process Effects 0.000 claims abstract description 25
- 230000006870 function Effects 0.000 claims description 292
- 238000012545 processing Methods 0.000 claims description 7
- 238000004590 computer program Methods 0.000 claims description 5
- 238000012544 monitoring process Methods 0.000 claims description 4
- 238000010586 diagram Methods 0.000 claims description 3
- 230000011218 segmentation Effects 0.000 claims description 3
- 241000700605 Viruses Species 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 238000007792 addition Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000001351 cycling effect Effects 0.000 description 1
- 230000036541 health Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 238000013515 script Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/562—Static detection
- G06F21/563—Static detection by source code analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/74—Reverse engineering; Extracting design information from source code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q10/00—Administration; Management
- G06Q10/06—Resources, workflows, human or project management; Enterprise or organisation planning; Enterprise or organisation modelling
- G06Q10/063—Operations research, analysis or management
- G06Q10/0631—Resource planning, allocation, distributing or scheduling for enterprises or organisations
- G06Q10/06311—Scheduling, planning or task assignment for a person or group
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/03—Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
- G06F2221/033—Test or assess software
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Business, Economics & Management (AREA)
- Human Resources & Organizations (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- Strategic Management (AREA)
- Economics (AREA)
- Entrepreneurship & Innovation (AREA)
- Computer Hardware Design (AREA)
- Health & Medical Sciences (AREA)
- Development Economics (AREA)
- Educational Administration (AREA)
- General Health & Medical Sciences (AREA)
- Game Theory and Decision Science (AREA)
- Virology (AREA)
- Marketing (AREA)
- Operations Research (AREA)
- Quality & Reliability (AREA)
- Tourism & Hospitality (AREA)
- General Business, Economics & Management (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Stored Programmes (AREA)
Abstract
本发明提供一种基于行为和代码长度的恶意样本逆向任务分配方法,利用恶意代码的函数调用图,根据恶意代码内部不同功能模块之间的差异性,辅以不同功能模块之间的代码量差异来进行逆向任务的分配,实现过程包括函数调用图的获取过程和逆向任务分配过程。本发明能够解决逆向分析恶意软件过程中逆向任务低效分发管理的问题,可以快速准确地对恶意代码分析任务进行科学性分配,减少了逆向任务分配过程中的人工干预,提升进行逆向分析任务分配的流程效率。
Description
技术领域
本发明属于恶意代码检测与分析领域,具体涉及一种基于行为和代码长度的恶意样本逆向任务分配方法及系统。
背景技术
近年来,恶意代码日益增加,给国家、社会、个人带来了不同程度的危害,如分布式拒绝服务攻击(DDoS)、基于僵尸网络(Botnet)的攻击、勒索病毒(Ransomware)、高级可持续威胁(Advanced Persistent Threat)攻击、利用远程控制木马的信息窃取等。根据AV-TEST在2020年5月公布的数据,全网恶意代码数量规模逐年增长,在2020年已经达到的10.5519亿。目前网络安全形势严峻,网络环境的安全与健康需要依靠所有安全研究人员来维护。当前恶意代码分析形势主要是依赖人工提取特征码,相关资料显示,平均一名熟练的分析人员一天只能分析12.8个样本,供需矛盾严重。再加上近年攻击者为了躲避检测,采用了一系列对抗溯源的措施,恶意代码的质量与复杂程度大幅提高,一定程度上加大了恶意代码逆向分析的难度,给恶意样本逆向分析工作带来严峻的考验。
为了提高恶意代码的逆向分析效率,在同一个逆向分析组织中,通常会有多名分析人员对同一个恶意样本进行逆向分析。在协作的过程中,研究人员可以发挥其各自的长处,并且不用再独自一人面对庞大的恶意代码。通过多人协作进行样本分析涉及到对恶意样本逆向任务的分配问题。掌握好恶意样本的内部结构网络,能够在不破坏原有代码结构框架的基础上进行恶意样本逆向任务的分配和管理,一定程度上保证了恶意样本逆向任务的局部完整性,提高恶意样本的管理以及分配的科学性和合理性,有利于后续逆向分析结果的快速整合。如果管理者想要简化后续整合逆向分析结果的工作,在逆向任务分配的前期工作中就需要根据恶意样本局部功能之间的差别来进行分配管理。虽然在进行恶意样本逆向之前,逆向研究人员可以通过IDA、Ghidra等工具进行分析,了解恶意样本的总体功能。但是恶意样本内部和函数调用关系网结构错综复杂,单纯通过人工很难快速地整理出其内部结构网络,导致在前期逆向任务分配管理环节上消耗太多时间和精力。
发明内容
本发明针对逆向分析恶意软件过程中逆向任务低效分发的问题,提出一种基于行为和代码长度的恶意样本逆向任务分配方法及系统。
本发明的技术方案为一种基于行为和代码长度的恶意样本逆向任务分配方法,包括函数调用图的获取过程和逆向任务分配过程,
所述函数调用图的获取,包括以下步骤,
步骤1,获取引入的动态链接库DLL的数量,根据DLL引入次序依次遍历每一个DLL文件并获取DLL文件的名称;对于每一个引入的DLL文件,获取从该DLL文件中引入的API函数列表;对于每个从DLL文件引入的API函数,获取相关的交叉引用函数列表,得到API函数的所有调用者;将函数调用关系写入有向图中;记录函数关系的同时,记录下函数对应的代码长度,系统函数代码长度记为0;
步骤2,获取每一个代码段的地址,在每一个代码段中遍历改代码段使用到的所有函数的地址;对于每一个使用到的函数,获取相应交叉引用函数列表;获取调用与被调用双方的函数名称后,将函数调用关系写入有向图中,记录函数关系的同时,记录下函数对应的代码长度,所有函数遍历完成后得到的有向图是包含代码长度信息的函数调用图;
所述逆向任务分配过程,根据函数调用图进行逆向任务分配,包括以下步骤,
步骤3,读取函数调用图中的代码长度信息,计算并记录用户自定义函数代码长度的平均值和用户自定义函数集合,准备进行函数功能模块分割;
步骤4,根据不同恶意行为具有的特征API函数进行预分配,对于每一类恶意行为特征API函数列表中的函数,从步骤2中的函数调用图中获取与函数相关的路径;从得到的路径中提取所有函数调用关系,保存到路径集合中;从得到的路径中提取所有函数节点,保存到预分配函数节点集合中,并为每个节点添加用于标记函数功能的属性;将每一类特征API函数对应的预分配函数集合作为一项任务添加到预分配任务列表中,任务列表中每一项任务包含该任务的函数节点信息和代码总长度;
步骤5,将未进行预分配的节点与已进行预分配的节点分开,遍历步骤4所得函数节点集合列表,将函数节点集合列表中存在的节点从步骤3所得用户自定义函数集合中删除,最终得到未进行预分配的函数节点集合;
步骤6,按照函数代码长度进行再分配,直至所有任务列表都符合代码总长度小于代码长度平均值减去阈值的条件;
步骤7,处理未完成分配的函数节点,将剩余仍未被分配的函数节点添加到一个新的任务集合中,并计算该任务集合中所有函数的代码总长度;合并步骤6与步骤7得到任务列表,作为最终的逆向任务分配结果。
而且,步骤4中,不同恶意行为具有的不同特征API函数的类别包括文件操作、服务管理、网络连接、鼠标监控、socket连接、命令执行、加解密和进程管理注册表操作。
而且,步骤4的实现过程如下,
(1)预先定义9类特征API函数列表functions_of_interest[9],每次遍历一类特征API函数;
(2)对于每一类特征API函数,判断其中的特征API函数func是否存在于函数调用图G中,不存在则继续遍历;
(3)遍历函数调用图G的所有节点作为起始节点src,调用函数all_simple_paths(G,src,func),列出起始节点src到特征API函数func的全部路径path;
(4)从路径列表path中获取函数节点信息,添加到函数节点集合nodes中,同时记录该函数集合的代码总长度length;
(5)每一类特征API函数遍历完成之后,将得到的函数节点集合nodes和对应的长度信息length,保存至预分配任务列表autoassign_list中。
而且,步骤6中实现方式如下,
首先从预分配任务列表中读取函数节点列表和代码总长度;如果预分配任务列表为空,则新建一个任务列表,不为空则读取预分配任务列表中的函数节点信息和代码总长度;如果单项任务的代码总长度小于步骤3得到的代码长度平均值减去阈值,从未分配函数节点集合中查找在函数调用图中与预分配任务列表中函数节点至少有2处直接相连的函数节点,将该函数节点添加到该项任务的函数节点集合,将函数节点的代码长度累加至该项任务代码总长度,将该函数节点从未分配函数节点集合中删除;
重复以上过程,直至所有任务列表都符合代码总长度小于代码长度平均值减去阈值的条件。
另一方面,本发明提供一种基于行为和代码长度的恶意样本逆向任务分配系统,用于实现如上所述的一种基于行为和代码长度的恶意样本逆向任务分配方法。
而且,包括处理器和存储器,存储器用于存储程序指令,处理器用于调用存储器中的存储指令执行如上所述的一种基于行为和代码长度的恶意样本逆向任务分配方法。
而且,包括可读存储介质,所述可读存储介质上存储有计算机程序,所述计算机程序执行时,实现如上所述的一种基于行为和代码长度的恶意样本逆向任务分配方法。
本发明利用恶意代码的函数调用图得到程序内部的函数调用关系,根据不同恶意行为具有的不同特征API函数来将恶意软件划分为多个功能模块,根据各个功能模块需要进行分析的代码量差异来进行逆向分析任务的分配,减少了逆向任务分配过程中的人工干预,提高了任务分配流程的处理效率。
附图说明
图1是本发明实施例的函数调用图获取的流程图。
图2是本发明实施例根据函数调用图进行逆向任务分配的流程图。
具体实施方式
本发明针对逆向分析恶意软件过程中逆向任务低效分发管理的问题,提出一种基于行为和代码长度的恶意样本逆向任务分配方法及系统。本发明充分考虑了恶意代码内部不同功能模块之间的差异性,通过恶意代码的函数调用图,辅以不同功能模块之间的代码量差异来进行逆向任务的分配,具体功能分为两部分:一是函数调用图的获取,二是逆向任务分配,其中步骤1至步骤2对应函数调用图的获取,步骤3至步骤7对应根据函数调用图进行逆向任务分配。通过本发明能够准确地对恶意代码分析任务进行科学性分配,提升管理者在进行逆向分析任务分配的管理流程的效率。
实施例以WannaCry勒索病毒对本发明的流程进行一个具体的阐述。实施例中使用到的函数涉及到networkx和idapython两类库函数,其中networkx用来处理图和网络问题,idapython是用来编写IDA(Interactive Disassembler)脚本的一类库函数。实施例提供的基于行为和代码长度的恶意样本逆向任务分配方法,具体实施流程如下:
步骤1:获取引入的动态链接库(Dynamic Link Library,DLL)的数量,根据DLL引入次序依次遍历每一个DLL文件并获取该DLL文件的名称;对于每一个引入的DLL文件,获取从该DLL文件中引入的API函数列表;对于每个从DLL文件引入的API函数,获取与其相关的交叉引用函数列表,即该API函数的所有调用者;将函数调用关系写入有向图中;记录函数关系的同时,记录下函数对应的代码长度,系统函数代码长度记为0;
实施例步骤1的具体实施方案为:
(1)新建一个networkx的有向图G。调用函数get_import_module_qty()获取引入的DLL文件数量nimps。通过循环遍历0~nimps-1,每次循环处理一个引入的DLL文件;
(2)对于第i个引入的DLL文件,调用函数get_import_module_name(i)获取该DLL文件的名称。调用函数enum_import_names(I)获取从第i个DLL文件中引入的API函数;
(3)对于每一个引入的API函数,调用函数process_func()获取所有引用该API函数的函数地址,其中函数process_func()先通过函数get_first_cref_to()获取第一个交叉引用的位置,再根据返回结果决定是否调用函数get_next_cref_to()获取下一个交叉引用的位置,最后将结果保存在交叉引用函数列表call_from_1中;
(4)遍历交叉引用函数列表call_from_1,调用函数get_func_name()获取调用者和被调用者函数对应的函数名称;
(5)调用函数FindFuncEnd()获取调用者函数的结束地址,通过计算调用者函数起始地址与结束地址之间的差值获得函数的代码长度。最后将调用者和被调用者函数调用关系以及相应的函数代码长度写入有向图G中。
循环处理完成后,进入步骤2。
步骤2:获取每一个代码段的地址,在每一个代码段中遍历改代码段使用到的所有函数的地址;对于每一个使用到的函数,获取其交叉引用函数列表,即该函数的所有调用者;获取调用与被调用双方的函数名称后,将函数调用关系写入有向图中,记录函数关系的同时,记录下函数对应的代码长度,所有函数遍历完成后得到的有向图即为包含代码长度信息的函数调用图;
实施例步骤2的具体实施方案为:
(1)调用函数Segments()获取每一个段的首地址,通过SegStart(ea),SegEnd(ea)分别定位每个段的起始地址;
(2)调用函数Functions(SegStart(ea),SegEnd(ea))获取每个段内调用的所有函数地址,并进行遍历;
(3)对于遍历过程中的每一个函数地址,按照实施例步骤1中(3)~(5)的方法进行相同处理,处理完成后得到最终的函数调用图G。
步骤3:读取函数调用图中的代码长度信息,计算并记录用户自定义函数代码长度的平均值和用户自定义函数集合,准备进行函数功能模块分割;
实施例步骤3的具体实施方案为:
(1)遍历函数调用图G的节点,将函数节点信息添加到用户自定义函数集合total中;
(2)读取每个函数节点的代码长度信息,对长度信息进行累计;
(3)累计值计算完成后,根据给定的人数计算逆向分析人员人均分析代码长度average。
步骤4:根据不同恶意行为具有的特征API函数进行预分配,对于每一类恶意行为特征API函数列表中的函数,从步骤2中的函数调用图中获取与该特征API函数相关的路径;从得到的路径中提取所有函数调用关系,保存到路径集合中;从得到的路径中提取所有函数节点,保存到预分配函数节点集合中,并为每个节点添加用于标记函数功能的属性;将每一类特征API函数对应的预分配函数集合作为一项任务添加到预分配任务列表中,任务列表中每一项任务包含该任务的函数节点信息和代码总长度;
实施例步骤4的具体实施方案为:
(1)预先定义9类特征API函数列表functions_of_interest[9],每次遍历一类特征API函数;
(2)对于每一类特征API函数,判断其中的特征API函数func是否存在于函数调用图G中,不存在则继续遍历;
(3)遍历函数调用图G的所有节点作为起始节点src,调用函数all_simple_paths(G,src,func),列出起始节点src到特征API函数func的全部路径path;
(4)从路径列表path中获取函数节点信息,添加到函数节点集合nodes中,同时记录该函数集合的代码总长度length;
(5)每一类特征API函数遍历完成之后,将得到的函数节点集合nodes和对应的长度信息length,保存至预分配任务列表autoassign_list中。
步骤4中提到的不同恶意行为具有的不同特征API函数包含但不限于以下类别:文件操作、服务管理、网络连接、鼠标监控、socket连接、命令执行、加解密、进程管理注册表操作等9类,每一类特征函数列表中分别包含但不限于以下函数:
(1)文件操作:CreateFile,CreateFileMapping,OpenFile,FindFirstFile,FindNextFile,GetModuleFileName,GetModuleHandle,LoadLibraryExW,GetStartupInfo,GetTempPath,GetWindowsDirectory,MapViewOfFile,SetFileTime,Wow64DisableWow64FsRedirection;
(2)服务管理:StartServiceCtrlDispatcherA,RegisterServiceCtrlHandlerA,ChangeServiceConfig2A,SetServiceStatus,OpenSCManagerA,CreateServiceA,CloseServiceHandle,StartServiceA,OpenServiceA;
(3)网络连接:InternetOpenA,InternetOpen,InternetOpenUrl,InternetReadFile,InternetWriteFile,FtpPutFile,InternetOpenA,InternetOpenUrlA,InternetCloseHandle;
(4)鼠标监控:ShowCursor,GetCursor,LoadCursor,SetCapture,GetCapture,ReleaseCapture;
(5)socket连接:closesocket,connect,htonl,htons,ioctlsocket,inet_addr,inet_ntoa,ntohl,recv,select,send,WSAStartup,socket,accept,bind,connect,gethostbyname,gethostname,inet_addr;
(6)命令执行:SHGetFolderPathW,ShellExecuteExW;
(7)加解密:CryptAcquireContext,CryptReleaseContext,CryptEnumProviders,CryptCreateHash,CryptGetHashParam,CryptDestroyHash,CryptHashData,CryptDeriveKey,CryptGetProvParam,CryptSetKeyParam,CryptEncrypt,CryptDecrypt,CryptDestroyKey,CryptGenKey,CryptGetUserKey,CryptContextAddRef,CryptReleaseContext,CryptExportKey,CryptGenRandom,CryptAcquireContextA;
(8)进程管理:GetThreadContext,QueueUserAPC,VirtualAllocEx,VirtualProtectEx;
(9)注册表操作:RegCloseKey,RegCreateKey,RegCreateKeyEx,RegDeleteKey,RegOpenKey,RegOpenKeyEx,RegDeleteValue,RegQueryValue,RegSetValue,RegSetValueEx,RegQueryInfoKey,RegEnumKey,RegEnumKeyEx,RegEnumValue,RegLoadKey,RegReplaceKey,RegRestoreKey,RegSaveKey,RegConnectRegistry,RegNotifyChangeKeyValue,RegUnloadKey。
步骤5:将未进行预分配的节点与已进行预分配的节点分开,遍历步骤4中的函数节点集合列表,将函数节点集合列表中存在的节点从步骤3得到的用户自定义函数集合中删除,最终得到未进行预分配的函数节点集合;
实施例步骤5的具体实施方案为:
(1)遍历步骤4生成的预分配任务列表autoassign_list,将预分配任务列表autoassign_list中存在的节点从用户自定义函数集合total中删除;
(2)预分配任务列表中每一项任务包含该任务的函数节点信息和代码总长度;
(3)遍历完成后用户自定义函数集合total中只剩下未进行预分配的函数节点。
步骤6:按照函数代码长度进行再分配,首先从预分配任务列表中读取函数节点列表和代码总长度;如果预分配任务列表为空,则新建一个任务列表,不为空则读取预分配任务列表中的函数节点信息和代码总长度;如果单项任务的代码总长度小于步骤3得到的代码长度平均值减去阈值,从未分配函数节点集合中查找在函数调用图中与预分配任务列表中函数节点至少有2处直接相连的函数节点,将该函数节点添加到该项任务的函数节点集合,将函数节点的代码长度累加至该项任务代码总长度,将该函数节点从未分配函数节点集合中删除,重复步骤6过程,直至所有任务列表都符合代码总长度小于代码长度平均值减去阈值的条件;
实施例步骤6的具体实施方案为:
(1)遍历步骤4生成的预分配任务列表autoassign_list,每次取出一项任务new_task;
(2)判断任务new_task的总代码长度length是否小于人均分析代码长度average,此处引入一个阈值threshold来设置average的上下浮动范围,当length<average-threshold时,从用户自定义函数集合total中取出一个函数节点加入到任务new_task中;
(3)从用户自定义函数集合total中取出一个新函数节点new_node,遍历任务new_task中所有的函数节点,记录新函数节点new_node与任务new_task中函数节点的调用关系,次数记为times,当times≥2时,即新函数节点new_node至少与任务new_task中的2个函数节点直接相连时,将新函数节点new_node添加到该任务new_task中;
(4)任务new_task再分配完成之后,将任务new_task添加到任务列表assign_list中。
步骤7:处理未完成分配的函数节点,将剩余仍未被分配的函数节点添加到一个新的任务集合中,并计算该任务集合中所有函数的代码总长度;合并步骤6与步骤7得到任务列表即为最终的逆向任务分配结果。
实施例步骤7的具体实施方案为:
(1)如果用户自定义函数集合total中仍存在未分配的函数节点,遍历用户自定义函数集合total中的每一个节点,将函数节点的添加到一项新任务中,同时累计每个函数节点的代码长度,记录到该项新任务中;
(2)遍历完成后将该任务也添加到任务列表assign_list中,得到的任务列表assign_list也就是最终需要生成的逆向任务分配方案。
具体实施时,本发明技术方案提出的方法可由本领域技术人员采用计算机软件技术实现自动运行流程,实现方法的系统装置例如存储本发明技术方案相应计算机程序的计算机可读存储介质以及包括运行相应计算机程序的计算机设备,也应当在本发明的保护范围内。
在一些可能的实施例中,提供一种基于行为和代码长度的恶意样本逆向任务分配系统,包括处理器和存储器,存储器用于存储程序指令,处理器用于调用存储器中的存储指令执行如上所述的一种基于行为和代码长度的恶意样本逆向任务分配方法。
在一些可能的实施例中,提供一种基于行为和代码长度的恶意样本逆向任务分配系统,包括可读存储介质,所述可读存储介质上存储有计算机程序,所述计算机程序执行时,实现如上所述的一种基于行为和代码长度的恶意样本逆向任务分配方法。
本文中所描述的具体实施例仅仅是对本发明精神作举例说明。本发明所属技术领域的技术人员可以对所描述的具体实施例做各种各样的修改或补充或采用类似的方式替代,但并不会偏离本发明的精神或者超越所附权利要求书所定义的范围。
Claims (7)
1.一种基于行为和代码长度的恶意样本逆向任务分配方法,其特征在于:利用恶意代码的函数调用图,根据恶意代码内部不同功能模块之间的差异性,辅以不同功能模块之间的代码量差异来进行逆向任务的分配,实现过程包括函数调用图的获取过程和逆向任务分配过程,所述函数调用图的获取过程,包括以下步骤,
步骤1,获取引入的动态链接库DLL的数量,根据DLL引入次序依次遍历每一个DLL文件并获取DLL文件的名称;对于每一个引入的DLL文件,获取从该DLL文件中引入的API函数列表;对于每个从DLL文件引入的API函数,获取相关的交叉引用函数列表,得到API函数的所有调用者;将函数调用关系写入有向图中;记录函数关系的同时,记录下函数对应的代码长度,系统函数代码长度记为0;
步骤2,获取每一个代码段的地址,在每一个代码段中遍历改代码段使用到的所有函数的地址;对于每一个使用到的函数,获取相应交叉引用函数列表;获取调用与被调用双方的函数名称后,将函数调用关系写入有向图中,记录函数关系的同时,记录下函数对应的代码长度,所有函数遍历完成后得到的有向图是包含代码长度信息的函数调用图;
所述逆向任务分配过程,根据函数调用图进行逆向任务分配,包括以下步骤,
步骤3,读取函数调用图中的代码长度信息,计算并记录用户自定义函数代码长度的平均值和用户自定义函数集合,准备进行函数功能模块分割;
步骤4,根据不同恶意行为具有的特征API函数进行预分配,对于每一类恶意行为特征API函数列表中的函数,从步骤2中的函数调用图中获取与函数相关的路径;从得到的路径中提取所有函数调用关系,保存到路径集合中;从得到的路径中提取所有函数节点,保存到预分配函数节点集合中,并为每个节点添加用于标记函数功能的属性;将每一类特征API函数对应的预分配函数集合作为一项任务添加到预分配任务列表中,任务列表中每一项任务包含该任务的函数节点信息和代码总长度;步骤5,将未进行预分配的节点与已进行预分配的节点分开,遍历步骤4所得函数节点集合列表,将函数节点集合列表中存在的节点从步骤3所得用户自定义函数集合中删除,最终得到未进行预分配的函数节点集合;
步骤6,按照函数代码长度进行再分配,直至所有任务列表都符合代码总长度小于代码长度平均值减去阈值的条件;
步骤7,处理未完成分配的函数节点,将剩余仍未被分配的函数节点添加到一个新的任务集合中,并计算该任务集合中所有函数的代码总长度;合并步骤6与步骤7得到任务列表,作为最终的逆向任务分配结果。
2.根据权利要求1所述基于行为和代码长度的恶意样本逆向任务分配方法,其特征在于:步骤4中,不同恶意行为具有的不同特征API函数的类别包括文件操作、服务管理、网络连接、鼠标监控、socket连接、命令执行、加解密和进程管理注册表操作。
3.根据权利要求2所述基于行为和代码长度的恶意样本逆向任务分配方法,其特征在于:步骤4的实现过程如下,
(1)预先定义9类特征API函数列表functions_of_interest[9],每次遍历一类特征API函数;
(2)对于每一类特征API函数,判断其中的特征API函数func是否存在于函数调用图G中,不存在则继续遍历;
(3)遍历函数调用图G的所有节点作为起始节点src,调用函数all_simple_paths(G,src,func),列出起始节点src到特征API函数func的全部路径path;
(4)从路径列表path中获取函数节点信息,添加到函数节点集合nodes中,同时记录该函数集合的代码总长度length;
(5)每一类特征API函数遍历完成之后,将得到的函数节点集合nodes和对应的长度信息length,保存至预分配任务列表autoassign_list中。
4.根据权利要求1或2或3所述基于行为和代码长度的恶意样本逆向任务分配方法,其特征在于:步骤6中实现方式如下,
首先从预分配任务列表中读取函数节点列表和代码总长度;如果预分配任务列表为空,则新建一个任务列表,不为空则读取预分配任务列表中的函数节点信息和代码总长度;如果单项任务的代码总长度小于步骤3得到的代码长度平均值减去阈值,从未分配函数节点集合中查找在函数调用图中与预分配任务列表中函数节点至少有2处直接相连的函数节点,将该函数节点添加到该项任务的函数节点集合,将函数节点的代码长度累加至该项任务代码总长度,将该函数节点从未分配函数节点集合中删除;
重复以上过程,直至所有任务列表都符合代码总长度小于代码长度平均值减去阈值的条件。
5.一种基于行为和代码长度的恶意样本逆向任务分配系统,其特征在于:用于实现如权利要求1-4任一项所述的一种基于行为和代码长度的恶意样本逆向任务分配方法。
6.根据权利要求5所述基于行为和代码长度的恶意样本逆向任务分配系统,其特征在于:包括处理器和存储器,存储器用于存储程序指令,处理器用于调用存储器中的存储指令执行如权利要求1-4任一项所述的一种基于行为和代码长度的恶意样本逆向任务分配方法。
7.根据权利要求5所述基于行为和代码长度的恶意样本逆向任务分配系统,其特征在于:包括可读存储介质,所述可读存储介质上存储有计算机程序,所述计算机程序执行时,实现如权利要求1-4任一项所述的一种基于行为和代码长度的恶意样本逆向任务分配方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110155785.XA CN112836216B (zh) | 2021-02-04 | 2021-02-04 | 基于行为和代码长度的恶意样本逆向任务分配方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110155785.XA CN112836216B (zh) | 2021-02-04 | 2021-02-04 | 基于行为和代码长度的恶意样本逆向任务分配方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112836216A CN112836216A (zh) | 2021-05-25 |
CN112836216B true CN112836216B (zh) | 2023-11-17 |
Family
ID=75932169
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110155785.XA Active CN112836216B (zh) | 2021-02-04 | 2021-02-04 | 基于行为和代码长度的恶意样本逆向任务分配方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112836216B (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102054149A (zh) * | 2009-11-06 | 2011-05-11 | 中国科学院研究生院 | 一种恶意代码行为特征提取方法 |
KR20110077512A (ko) * | 2009-12-30 | 2011-07-07 | 한양대학교 산학협력단 | 블룸 필터를 사용한 악성 코드 탐지 시스템 및 방법 |
KR20120073018A (ko) * | 2010-12-24 | 2012-07-04 | 한국인터넷진흥원 | 악성 코드 탐지를 위한 시스템 및 방법 |
CN102622536A (zh) * | 2011-01-26 | 2012-08-01 | 中国科学院软件研究所 | 一种恶意代码捕获方法 |
CN102708309A (zh) * | 2011-07-20 | 2012-10-03 | 北京邮电大学 | 恶意代码自动分析方法及系统 |
CN104866765A (zh) * | 2015-06-03 | 2015-08-26 | 康绯 | 基于行为特征相似性的恶意代码同源性分析方法 |
CN107679402A (zh) * | 2017-09-28 | 2018-02-09 | 四川长虹电器股份有限公司 | 恶意代码行为特征提取方法 |
-
2021
- 2021-02-04 CN CN202110155785.XA patent/CN112836216B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102054149A (zh) * | 2009-11-06 | 2011-05-11 | 中国科学院研究生院 | 一种恶意代码行为特征提取方法 |
KR20110077512A (ko) * | 2009-12-30 | 2011-07-07 | 한양대학교 산학협력단 | 블룸 필터를 사용한 악성 코드 탐지 시스템 및 방법 |
KR20120073018A (ko) * | 2010-12-24 | 2012-07-04 | 한국인터넷진흥원 | 악성 코드 탐지를 위한 시스템 및 방법 |
CN102622536A (zh) * | 2011-01-26 | 2012-08-01 | 中国科学院软件研究所 | 一种恶意代码捕获方法 |
CN102708309A (zh) * | 2011-07-20 | 2012-10-03 | 北京邮电大学 | 恶意代码自动分析方法及系统 |
CN104866765A (zh) * | 2015-06-03 | 2015-08-26 | 康绯 | 基于行为特征相似性的恶意代码同源性分析方法 |
CN107679402A (zh) * | 2017-09-28 | 2018-02-09 | 四川长虹电器股份有限公司 | 恶意代码行为特征提取方法 |
Non-Patent Citations (1)
Title |
---|
基于敏感权限及其函数调用图的Android恶意代码检测;祝小兰;王俊峰;杜垚;白金荣;;四川大学学报(自然科学版)(第03期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN112836216A (zh) | 2021-05-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109495520B (zh) | 一体化网络攻击取证溯源方法、系统、设备及存储介质 | |
CN109918907B (zh) | Linux平台进程内存恶意代码取证方法、控制器及介质 | |
CN106534242B (zh) | 一种分布式系统中请求的处理方法以及装置 | |
US11050777B2 (en) | Method and system for remediating cybersecurity vulnerabilities based on utilization | |
Hatada et al. | Empowering anti-malware research in Japan by sharing the MWS datasets | |
CN106649120A (zh) | 一种数据获取方法、分析方法及系统 | |
CN109271807A (zh) | 数据库的数据安全处理方法及系统 | |
Lovanshi et al. | Comparative study of digital forensic tools | |
CN113572780A (zh) | 设备安全策略配置方法 | |
CN111259212B (zh) | 一种遥测数据判读方法、装置、设备及存储介质 | |
CN104182519B (zh) | 一种文件扫描方法及装置 | |
CN108646968A (zh) | 一种基于图像分析重现场景的方法及系统 | |
CN112836216B (zh) | 基于行为和代码长度的恶意样本逆向任务分配方法及系统 | |
CN107920067B (zh) | 一种主动对象存储系统上的入侵检测方法 | |
CN106294185A (zh) | 基于五层框架的自动化测试框架及方法 | |
CN115766258B (zh) | 一种基于因果关系图的多阶段攻击趋势预测方法、设备及存储介质 | |
CN110830385A (zh) | 一种捕包处理方法、网络设备、服务器及存储介质 | |
CN115470504A (zh) | 结合人工智能的数据风险分析方法及服务器 | |
Dubey et al. | Digital Forensics Techniques and Trends: A Review | |
CN116614316B (zh) | 多终端场景的区块链数据安全控制方法和系统 | |
CN113438244B (zh) | 渗透测试方法、装置、计算设备及存储介质 | |
CN115994244B (zh) | 基于大数据的有向图数据处理方法、装置、计算机设备 | |
CN110851750B (zh) | 一种数据获取方法及装置 | |
CN111177097B (zh) | 一种日志收集方法、装置、设备及计算机可读存储介质 | |
CN115412349A (zh) | 一种基于漏洞挖掘的web漏洞扫描方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |