CN112632534A - 一种恶意行为检测方法及装置 - Google Patents
一种恶意行为检测方法及装置 Download PDFInfo
- Publication number
- CN112632534A CN112632534A CN202011507762.2A CN202011507762A CN112632534A CN 112632534 A CN112632534 A CN 112632534A CN 202011507762 A CN202011507762 A CN 202011507762A CN 112632534 A CN112632534 A CN 112632534A
- Authority
- CN
- China
- Prior art keywords
- behavior
- current
- port
- determining
- socket connection
- 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.)
- Pending
Links
Images
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/566—Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
- G06F9/44526—Plug-ins; Add-ons
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Virology (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种恶意行为检测方法及装置,该方法包括获取已注册的安全管理器方法监控到的当前行为,在确定当前行为不是默认允许的行为时,对已注册的安全管理器方法监控到的当前行为进行分析,确定当前行为是否为正常行为,若当前行为不是正常行为,确定当前行为是否与预设的白名单匹配,若否,则确定当前行为是恶意行为,并将恶意行为发送给预设的处理类进行处理。通过对已注册的安全管理器监控到的当前行为进行分析,能够发现应用程序方法调用级别的恶意行为,并结合预设的白名单,能够降低误报率,减少人工干预。
Description
技术领域
本发明涉及金融科技(Fintech)技术领域,尤其涉及一种恶意行为检测方法及装置。
背景技术
随着计算机技术的发展,越来越多的技术应用在金融领域,传统金融业正在逐步向金融科技转变,但由于金融行业的安全性、实时性要求,也对技术提出的更高的要求。在金融领域的网络安全技术中,对于检测网络中部分行为是一个重要的问题。
目前基于主机的入侵检测系统(Host-based Intrusion Detection System,HIDS)是一种入侵检测系统,能够监视和分析计算系统的内部操作,以及其网络接口上的网络数据包。HIDS能够根据其配置的方式监视计算机系统的全部或部分动态行为和状态。除了动态检查针对此特定主机的网络数据包这类活动外,HIDS还可以检测哪个程序访问哪些资源。可将HIDS看作是一个代理,它监视是否有内部或外部的任何对象或任何人绕过了系统的安全策略。但是对于Java程序出现的恶意行为,该HIDS无法检测到方法调用级别的恶意行为,容易出现误报的情况。
发明内容
本发明实施例提供一种恶意行为检测方法及装置,用以实现方法调用级别的恶意行为检测,减少误报率。
第一方面,本发明实施例提供一种恶意行为检测方法,包括:
获取已注册的安全管理器方法监控到的当前行为,所述当前行为是符合预设类型的受监控的行为;
在确定所述当前行为不是默认允许的行为时,对所述已注册的安全管理器方法监控到的当前行为进行分析,确定所述当前行为是否为正常行为;
若所述当前行为不是正常行为,确定所述当前行为是否与预设的白名单匹配,若否,则确定所述当前行为是恶意行为,并将所述恶意行为发送给预设的处理类进行处理。
上述技术方案中,通过对已注册的安全管理器监控到的当前行为进行分析,能够发现应用程序方法调用级别的恶意行为,并结合预设的白名单,能够降低误报率,减少人工干预。
可选的,所述对所述已注册的安全管理器方法监控到的当前行为进行分析,确定所述当前行为是否为正常行为,包括:
根据所述当前行为的类型、所述安全管理器注册的方法监控到当前行为时的调用堆栈和调用参数,对所述当前行为进行分析,确定所述当前行为是否为正常行为。
可选的,所述当前行为的类型包括创建进程行为;
所述根据所述当前行为的类型、所述安全管理器注册的方法监控到当前行为时的调用堆栈和调用参数,对所述当前行为进行分析,确定所述当前行为是否为正常行为,包括:
所述当前行为的类型是创建进程行为时,确定出监控所述创建进程行为时调用的创建进程方法对应的进程路径;
获取所述调用的创建进程方法的原始代码,对所述调用的创建进程方法的原始代码进行分析,确定出指定的进程路径;
若所述指定的进程路径与所述调用创建进程方法时对应的进程路径一致,则确定所述当前行为是正常行为,否则确定所述当前行为不是正常行为。
上述技术方案中,通过对监控创建进程行为时调用的创建进程方法进行分析,能够识别出创建进程行为是否为正常行为。
可选的,所述获取所述调用的创建进程方法的原始代码,包括:
若所述创建进程行为对应的类为应用程序编译后产生的类文件,则对所述应用程序编译后产生的类文件进行反编译,得到所述调用的创建进程方法的原始代码;
若所述创建进程行为对应的类为压缩包中的类文件,则确定所述压缩包中是否存在源代码文件,若存在,则确定所述源代码文件为所述调用的创建进程方法的原始代码,否则对所述压缩包进行解压处理后,对所述压缩包中的类文件进行反编译,得到所述调用的创建进程方法的原始代码;
若所述创建进程行为对应的类为服务器页面文件编译产生的类文件,则使用预设的Web中间件生成所述调用的创建进程方法的原始代码。
上述技术方案中,通过对创建进程行为对应的类中的文件进行分析,进行相应的处理,可以快速的得到原始代码,从而可以从原始代码中获取指定的进程路径。
可选的,所述当前行为的类型包括监听端口行为;
所述根据所述当前行为的类型、所述安全管理器注册的方法监控到当前行为时的调用堆栈和调用参数,对所述当前行为进行分析,确定所述当前行为是否为正常行为,包括:
所述当前行为的类型是监听端口行为时,确定出监控所述监听端口行为时调用的检测监听方法,从所述检测监听方法的参数中获取所述监听端口行为监听的端口;
根据所述监听端口行为对应的线程,得到所述监听端口行为对应的线程的调用堆栈,并根据所述调用堆栈确定出触发所述监听端口行为对应的类名和方法名,对所述触发所述监听端口行为对应的类名及方法名进行分析,确定出指定的监听端口;
若所述监听端口行为监听的端口与所述指定的监听端口一致,则确定所述当前行为是正常行为,否则确定所述当前行为不是正常行为。
上述技术方案中,通过对监控监听端口行为时调用的检测监听方法进行分析,能够识别出监听端口行为是否为正常行为。
可选的,所述对所述触发所述监听端口行为对应的类名及方法名进行分析,确定出指定的监听端口,包括:
对所述触发所述监听端口行为对应的类名及方法名进行识别,若识别到所述监听端口行为属于对HTTP服务端口的监听,则读取当前进程的配置文件,得到指定的监听端口,或获取当前进程的系统属性,得到指定的监听端口;
若识别到所述监听端口行为属于对TCP端口的监听,则获取调用监听端口方法的原始代码,对监听端口方法的原始代码传入端口参数,得到指定的端口。
可选的,所述当前行为的类型包括建立Socket(套接字)连接行为;
所述根据所述当前行为的类型、所述安全管理器注册的方法监控到当前行为时的调用堆栈和调用参数,对所述当前行为进行分析,确定所述当前行为是否为正常行为,包括:
所述当前行为的类型是建立Socket连接行为时,确定出监控所述建立Socket连接行为的调用的建立Socket连接方法对应的服务器IP地址及服务器端口;
根据所述建立Socket连接行为对应的线程,得到所述建立Socket连接行为对应的线程的调用堆栈,根据所述建立Socket连接行为对应的线程的调用堆栈确定出触发所述建立Socket连接行为对应的类名和方法名;
对所述触发所述建立Socket连接行为对应的类名和方法名进行分析,识别出所述建立Socket连接行为的操作类型;
对所述建立Socket连接行为的操作类型进行分析,确定所述当前行为是否为正常行为。
上述技术方案中,通过对监控建立Socket连接行为时调用的建立Socket连接方法进行分析,能够识别出建立Socket连接行为是否为正常行为。
可选的,所述对所述建立Socket连接行为的操作类型进行分析,确定所述当前行为是否为正常行为,包括:
若建立Socket连接行为的操作类型为访问数据库,则获取对数据库连接进行管理的数据源对象,得到实际连接的数据库的服务器IP地址和端口,或从预设的配置文件中读取需要访问的数据库的服务器IP地址和端口,确定数据库的服务器IP地址和端口与建立Socket连接方法的服务器IP地址及服务器端口是否一致,若是,则确定所述当前行为是正常行为,否则确定所述当前行为不是正常行为;
若建立Socket连接行为的操作类型为访问消息队列服务器,则从网络访问策略的配置管理数据库中确定是否存在所述建立Socket连接行为对应的应用程序所在的服务器的IP地址访问所述建立Socket连接方法的服务器IP地址及服务器端口的网络访问策略,若存在,则确定所述当前行为是正常行为,否则确定所述当前行为不是正常行为;
若建立Socket连接行为的操作类型为访问TCP、HTTP服务,则读取所述建立Socket连接行为对应的应用程序的配置文件,根据所述配置文件从配置管理数据库中确定是否存在所述建立Socket连接行为对应的网络访问策略,若存在,则确定所述当前行为是正常行为,否则确定所述当前行为不是正常行为。
可选的,所述当前行为的类型包括接受Socket连接行为;
所述根据所述当前行为的类型、所述安全管理器注册的方法监控到当前行为时的调用堆栈和调用参数,对所述当前行为进行分析,确定所述当前行为是否为正常行为,包括:
所述当前行为的类型是接受Socket连接行为时,确定出监控所述接受Socket连接行为时调用的接受Socket连接方法对应的客户端IP地址和服务器端口;
获取所述接受Socket连接行为对应的应用程序所在的服务器IP地址,从网络访问策略的配置管理数据库中确定是否存在所述客户端IP地址访问所述服务器IP地址对应的服务器端口的网络访问策略,若是,则确定所述当前行为是正常行为,否则确定所述当前行为不是正常行为。
上述技术方案中,通过对监控接受Socket连接行为时调用的接受Socket连接方法进行分析,能够识别出接受Socket连接行为是否为正常行为。
可选的,在获取当前行为之前,还包括:
获取恶意行为检测的配置文件;
从所述配置文件中获取预设的白名单的配置信息并进行存储;
初始化所述预设的白名单的动态更新功能,并确定对恶意行为进行处理的预设的处理类;
创建新的安全管理器,根据所述配置文件配置所述安全管理器的监控功能,并将所述安全管理器注册到Java虚拟机中。
第二方面,本发明实施例提供一种恶意行为检测装置,包括:
获取单元,用于获取已注册的安全管理器方法监控到的当前行为,所述当前行为是符合预设类型的受监控的行为;
处理单元,用于在确定所述当前行为不是默认允许的行为时,对所述已注册的安全管理器方法监控到的当前行为进行分析,确定所述当前行为是否为正常行为;若所述当前行为不是正常行为,确定所述当前行为是否与预设的白名单匹配,若否,则确定所述当前行为是恶意行为,并将所述恶意行为发送给预设的处理类进行处理。
可选的,所述处理单元具体用于:
根据所述当前行为的类型、所述安全管理器注册的方法监控到当前行为时的调用堆栈和调用参数,对所述当前行为进行分析,确定所述当前行为是否为正常行为。
可选的,所述当前行为的类型包括创建进程行为;
所述处理单元具体用于:
所述当前行为的类型是创建进程行为时,确定出监控所述创建进程行为时调用创建进程方法对应的进程路径;
获取所述调用的创建进程方法的原始代码,对所述调用的创建进程方法的原始代码进行分析,确定出指定的进程路径;
若所述指定的进程路径与所述调用创建进程方法时对应的进程路径一致,则确定所述当前行为是正常行为,否则确定所述当前行为不是正常行为。
可选的,所述处理单元具体用于:
若所述创建进程行为对应的类为应用程序编译后产生的类文件,则对所述应用程序编译后产生的类文件进行反编译,得到所述调用的创建进程方法的原始代码;
若所述创建进程行为对应的类为压缩包中的类文件,则确定所述压缩包中是否存在源代码文件,若存在,则确定所述源代码文件为所述调用的创建进程方法的原始代码,否则对所述压缩包进行解压处理后,对所述压缩包中的类文件进行反编译,得到所述调用的创建进程方法的原始代码;
若所述创建进程行为对应的类为服务器页面文件编译产生的类文件,则使用预设的Web中间件生成所述调用的创建进程方法的原始代码。
可选的,所述当前行为的类型包括监听端口行为;
所述处理单元具体用于:
所述当前行为的类型是监听端口行为时,确定出监控所述监听端口行为时调用的检测监听方法,从所述检测监听方法的参数中获取所述监听端口行为监听的端口;
根据所述监听端口行为对应的线程,得到所述监听端口行为对应的线程的调用堆栈,并根据所述调用堆栈确定出触发所述监听端口行为对应的类名和方法名,对所述触发所述监听端口行为对应的类名及方法名进行分析,确定出指定的监听端口;
若所述监听端口行为监听的端口与所述指定的监听端口一致,则确定所述当前行为是正常行为,否则确定所述当前行为不是正常行为。
可选的,所述处理单元具体用于:
对所述触发所述监听端口行为对应的类名及方法名进行识别,若识别到所述监听端口行为属于对HTTP服务端口的监听,则读取当前进程的配置文件,得到指定的监听端口,或获取当前进程的系统属性,得到指定的监听端口;
若识别到所述监听端口行为属于对TCP端口的监听,则获取调用监听端口方法的原始代码,对监听端口方法的原始代码传入端口参数,得到指定的端口。
可选的,所述当前行为的类型包括建立Socket连接行为;
所述处理单元具体用于:
所述当前行为的类型是建立Socket连接行为时,确定出监控所述建立Socket连接行为的调用的建立Socket连接方法对应的服务器IP地址及服务器端口;
根据所述建立Socket连接行为对应的线程,得到所述建立Socket连接行为对应的线程的调用堆栈,根据所述建立Socket连接行为对应的线程的调用堆栈确定出触发所述建立Socket连接行为对应的类名和方法名;
对所述触发所述建立Socket连接行为对应的类名和方法名进行分析,识别出所述建立Socket连接行为的操作类型;
对所述建立Socket连接行为的操作类型进行分析,确定所述当前行为是否为正常行为。
可选的,所述处理单元具体用于:
若建立Socket连接行为的操作类型为访问数据库,则获取对数据库连接进行管理的数据源对象,得到实际连接的数据库的服务器IP地址和端口,或从预设的配置文件中读取需要访问的数据库的服务器IP地址和端口,确定数据库的服务器IP地址和端口与建立Socket连接方法的服务器IP地址及服务器端口是否一致,若是,则确定所述当前行为是正常行为,否则确定所述当前行为不是正常行为;
若建立Socket连接行为的操作类型为访问消息队列服务器,则从网络访问策略的配置管理数据库中确定是否存在所述建立Socket连接行为对应的应用程序所在的服务器的IP地址访问所述建立Socket连接方法的服务器IP地址及服务器端口的网络访问策略,若存在,则确定所述当前行为是正常行为,否则确定所述当前行为不是正常行为;
若建立Socket连接行为的操作类型为访问TCP、HTTP服务,则读取所述建立Socket连接行为对应的应用程序的配置文件,根据所述配置文件从配置管理数据库中确定是否存在所述建立Socket连接行为对应的网络访问策略,若存在,则确定所述当前行为是正常行为,否则确定所述当前行为不是正常行为。
可选的,所述当前行为的类型包括接受Socket连接行为;
所述处理单元具体用于:
所述当前行为的类型是接受Socket连接行为时,确定出监控所述接受Socket连接行为时调用的接受Socket连接方法对应的客户端IP地址和服务器端口;
获取所述接受Socket连接行为对应的应用程序所在的服务器IP地址,从网络访问策略的配置管理数据库中确定是否存在所述客户端IP地址访问所述服务器IP地址对应的服务器端口的网络访问策略,若是,则确定所述当前行为是正常行为,否则确定所述当前行为不是正常行为。
上述技术方案中,通过对监控接受Socket连接行为时调用的接受Socket连接方法进行分析,能够识别出接受Socket连接行为是否为正常行为。
可选的,所述处理单元还用于:
在获取当前行为之前,获取恶意行为检测的配置文件;
从所述配置文件中获取预设的白名单的配置信息并进行存储;
初始化所述预设的白名单的动态更新功能,并确定对恶意行为进行处理的预设的处理类;
创建新的安全管理器,根据所述配置文件配置所述安全管理器的监控功能,并将所述安全管理器注册到Java虚拟机中。
第三方面,本发明实施例还提供一种计算设备,包括:
存储器,用于存储程序指令;
处理器,用于调用所述存储器中存储的程序指令,按照获得的程序执行上述恶意行为检测方法。
第四方面,本发明实施例还提供一种计算机可读非易失性存储介质,包括计算机可读指令,当计算机读取并执行所述计算机可读指令时,使得计算机执行上述恶意行为检测方法。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种系统架构的示意图;
图2为本发明实施例提供的一种恶意行为检测方法的流程示意图;
图3为本发明实施例提供的一种注册恶意行为检测功能执行的示意图;
图4为本发明实施例提供的一种恶意行为检测功能执行的示意图;
图5为本发明实施例提供的一种恶意行为默认处理功能执行的示意图;
图6为本发明实施例提供的一种恶意行为检测装置的结构示意图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
图1为本发明实施例提供的一种系统架构。如图1所示,该系统架构可以为服务器100,该服务器100可以包括处理器110、通信接口120和存储器130。
其中,通信接口120用于与终端设备进行通信,收发该终端设备传输的信息,实现通信。
处理器110是服务器100的控制中心,利用各种接口和线路连接整个服务器100的各个部分,通过运行或执行存储在存储器130内的软件程序/或模块,以及调用存储在存储器130内的数据,执行服务器100的各种功能和处理数据。可选地,处理器110可以包括一个或多个处理单元。
存储器130可用于存储软件程序以及模块,处理器110通过运行存储在存储器130的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器130可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序等;存储数据区可存储根据业务处理所创建的数据等。此外,存储器130可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
基于上述描述,图2详细的示出了本发明实施例提供的一种恶意行为检测方法的流程,该流程可以由恶意行为检测装置执行。
如图2所示,该流程具体包括:
步骤201,获取已注册的安全管理器方法监控到的当前行为。
在本发明实施例中,该当前行为是符合预设类型的受监控的行为,其中行为是指网络中的操作。该预设类型可以包括创建进程、监听端口、接受Socket连接、建立Socket连接等类型。
为了能够实现恶意行为的检测,需要先注册具有恶意行为检测功能的Java安全管理器,具体的需要获取恶意行为检测的配置文件,然后从配置文件中获取预设的白名单的配置信息并进行存储。再初始化预设的白名单的动态更新功能,并确定对恶意行为进行处理的预设的处理类。最后创建新的安全管理器,根据配置文件配置所述安全管理器的监控功能,并将安全管理器注册到Java虚拟机中。
上述步骤也可以称为注册恶意行为检测功能。
步骤202,在确定所述当前行为不是默认允许的行为时,对所述当前行为调用的安全管理器的方法进行分析,确定所述当前行为是否为正常行为。
当得到当前行为后,需要判断当前行为是否为默认允许的行为,例如,接受Socket连接行为,若为本机进行连接时,默认允许;对于建立Socket连接行为,若为连接本机时,或端口号不在正常范围内(小于0或大于0xFFFF)时,默认允许。
当确定不是默认允许的行为时,就需要分析当前行为是否为正常行为,具体的,首先根据当前行为的类型、安全管理器中注册的方法监控到当前行为时的调用堆栈和调用参数,对当前行为进行分析,确定当前行为是否为正常行为。
其中当前行为的类型如上述预设类型,可以包括创建进程行为、监听端口行为、接受Socket连接行为和建立Socket连接行为。下面将对每个类型进行分析:
第一种,当前行为的类型是创建进程行为时。
需要确定出监控创建进程行为时调用的创建进程方法对应的进程路径。
获取调用的创建进程方法的原始代码,对调用的创建进程方法的原始代码进行分析,确定出指定的进程路径。在获取原始代码时,具体包括根据下述方式来获取:
方式一:
若创建进程行为对应的类为应用程序编译后产生的类文件,则对应用程序编译后产生的类文件进行反编译,得到调用的创建进程方法的原始代码。
方式二:
若创建进程行为对应的类为压缩包中的类文件,则确定压缩包中是否存在源代码文件,若存在,则确定源代码文件为调用的创建进程方法的原始代码,否则对压缩包进行解压处理后,对压缩包中的类文件进行反编译,得到调用的创建进程方法的原始代码。
方式三:
若创建进程行为对应的类为服务器页面(JavaServer Pages,JSP)文件编译产生的类文件,则使用预设的Web中间件生成调用的创建进程方法的原始代码。
上述类文件即为Java中的class文件,通过对该class文件反编译可以得到相应的Java原始代码。
识别Java原始代码调用创建进程方法时,传入的进程路径参数的定义方式。若原始代码通过Java代码中的常量定义进程路径,则获取Java原始代码中指定的进程路径;若原始代码通过配置文件中的参数值定义进程路径,则读取对应的配置文件获取指定的进程路径。
若指定的进程路径与创建进程行为调用创建进程方法时对应的进程路径一致,则确定当前行为是正常行为,否则确定当前行为不是正常行为。
比较当前实际创建的进程路径,与从应用程序中获取的原始代码指定的进程路径是否相符。若相符,则说明当前创建进程行为是应用程序中的正常行为,不需要进行处理;若不相符,则说明当前创建进程行为不是应用程序中的正常行为。
第二种,当前行为的类型是监听端口行为时。
确定出监控监听端口行为时调用的检测监听方法,从检测监听方法的参数中获取监听端口行为监听的端口。
根据监听端口行为对应的线程,得到监听端口行为对应的线程的调用堆栈,并根据调用堆栈确定出触发监听端口行为对应的类名和方法名。
对触发监听端口行为对应的类名及方法名进行分析,确定出指定的监听端口。具体的,对触发监听端口行为对应的类名及方法名进行识别,若识别到监听端口行为属于Tomcat对HTTP(HyperText Transfer Protocol,超文本传输协议)服务端口的监听,则读取当前进程的配置文件,得到指定的监听端口,或获取当前进程的系统属性,得到指定的监听端口。若识别到监听端口行为属于对TCP(Transmission Control Protocol,传输控制协议)端口的监听,则获取调用监听端口方法的原始代码,对监听端口方法的原始代码传入端口参数,得到指定的端口。
若监听端口行为监听的端口与指定的监听端口一致,则确定当前行为是正常行为,否则确定当前行为不是正常行为。
第三种,当前行为的类型是接受Socket连接行为时。
为了解决JDK原生安全管理器监控到接受Socket连接行为时无法获取服务器端口的问题,本发明实施例对JDK原生安全管理器类进行了扩展与增强,在checkAccept方法中增加了参数,用于传递Socket服务器IP;并对JDK用于处理服务器Socket的类ServerSocket进行了修改,在调用安全管理器的checkAccept方法时,使用增强后的安全管理器类实例,传入Socket服务器IP。
因此,可以直接从安全管理器的接受Socket连接方法参数中,确定出监控接受Socket连接行为时调用的接受Socket连接方法对应的客户端IP地址和服务器端口。
获取接受Socket连接行为对应的应用程序所在的服务器IP地址,从网络访问策略的配置管理数据库中确定是否存在客户端IP地址访问服务器IP地址对应的服务器端口的网络访问策略,若是,则确定当前行为是正常行为,否则确定当前行为不是正常行为。
第四种,当前行为的类型是建立Socket连接行为时。
需要确定出监控建立Socket连接行为时调用的建立Socket连接方法对应的服务器IP地址及服务器端口。
根据建立Socket连接行为对应的线程,得到建立Socket连接行为对应的线程的调用堆栈,根据建立Socket连接行为对应的线程的调用堆栈确定出触发建立Socket连接行为对应的类名和方法名,对触发建立Socket连接行为对应的类名和方法名进行分析,识别出建立Socket连接行为的操作类型。
对建立Socket连接行为的操作类型进行分析,确定当前行为是否为正常行为。具体的,可以由下述几种方式进行确定:
方式一:
若建立Socket连接行为的操作类型为访问数据库,则获取对数据库连接进行管理的数据源对象,得到实际连接的数据库的服务器IP地址和端口,或从预设的配置文件中读取需要访问的数据库的服务器IP地址和端口,确定数据库的服务器IP地址和端口与建立Socket连接方法的服务器IP地址及服务器端口是否一致,若是,则确定当前行为是正常行为,否则确定当前行为不是正常行为。
方式二:
若建立Socket连接行为的操作类型为访问消息队列服务器,则从网络访问策略的配置管理数据库中确定是否存在建立Socket连接行为对应的应用程序所在的服务器的IP地址访问建立Socket连接方法的服务器IP地址及服务器端口的网络访问策略,若存在,则确定当前行为是正常行为,否则确定当前行为不是正常行为。
方式三:
若建立Socket连接行为的操作类型为访问TCP、HTTP服务,则读取建立Socket连接行为对应的应用程序的配置文件,根据配置文件从配置管理数据库中确定是否存在建立Socket连接行为对应的网络访问策略,若存在,则确定当前行为是正常行为,否则确定当前行为不是正常行为。
步骤203,若所述当前行为不是正常行为,确定所述当前行为是否与预设的白名单匹配,若否,则确定所述当前行为是恶意行为,并将所述恶意行为发送给预设的处理类进行处理。
当确定出当前行为不是正常行为后,需要将当前行为与预设的白名单进行匹配,匹配成功,可以确定当前行为是正常行为,否则确定当前行为是恶意行为,就可以将恶意行为发送给预设的处理类进行处理。该预设的处理类包括默认处理类和自定义处理类,其中默认处理类在对恶意行为进行处理时,会在指定的日志文件中记录对应的告警信息。自定义处理类是由用户自定义的,可以自定义执行包括如下操作:向告警系统发送消息、记录告警日志、对恶意行为进行阻断等。
为了更好的解释本发明实施例,下面将在具体的实施场景下来描述上述恶意行为检测的过程。
在具体实现过程中,本发明实施例提供的恶意行为检测的系统为Java组件(即Jar包)形式,对于需要使用本发明实施例的Java应用程序,需要在程序启动时加载本发明实施例的Java组件并调用初始化方法。
本发明实施例实现的Java组件会注册JDK提供的安全管理器,实现对重要的JavaAPI调用的监控。当监控到疑似恶意行为时,首先由本发明实施例的组件自动分析当前出现的行为是否为Java应用程序产生的正常行为;若发现非正常行为,则再根据用户配置的白名单进行判定;若为白名单中允许的行为,则不进行处理;若为不允许的行为,则发送给恶意行为默认处理类或自定义处理类进行处理。
本发明实施例实现的恶意行为检测系统包含以下几个重要的功能,分别为注册恶意行为检测功能、恶意行为检测功能、恶意行为默认处理功能、恶意行为自定义处理功能、白名单动态更新功能。
首先,需要注册恶意行为检测功能。
使用本发明实施例组件进行恶意行为检测的Java程序,需要引用本发明实施例对应的Jar(压缩包)包。在应用进行初始化操作时,需要调用本发明实施例对应Jar包提供的初始化方法,以使本发明实施例注册恶意行为检测功能。
本发明实施例在注册恶意行为检测功能时,执行的操作如下:
1、加载行为检测白名单。
在注册JVM安全管理器之前,首先需要加载行为检测白名单,读取配置文件中的白名单配置信息并保存至内存,用于后续使用。白名单配置文件的类型包含创建进程、监听端口、接受Socket连接、建立Socket连接等行为。
2、初始化白名单动态更新功能。
完成白名单动态更新功能的初始化,用于启动白名单动态更新功能。
3、选择使用的恶意行为处理类。
判断应用程序中指定的恶意行为处理类,若指定使用默认处理类对恶意行为进行处理,则选择使用默认处理类;否则选择使用自定义处理类。
4、注册JVM安全管理器。
创建一个新的安全管理器,对创建进程、监听端口、接受Socket连接、建立Socket连接等行为进行监控,将并新创建的安全管理器注册到JVM中。
在新创建的安全管理器中,首先判断是否有已存在的安全管理器,若有则先调用已存在安全管理器的检查方法,再调用新创建安全管理器的检查方法;若无则直接调用恶意行为检测功能。以上处理是为了避免影响已存在的安全管理器功能。
完成向JVM注册安全管理器之后,在当前Java进程出现以上受监控的行为时,以上新创建的安全管理器将会接管对应的行为,交给恶意行为检测功能进行处理。
注册恶意行为检测功能的执行步骤可以如图3所示。
当恶意行为检测功能开始执行时,说明当前Java进程出现了以上受监控的行为,本发明实施例创建的安全管理器会接管对应的行为,并交给恶意行为检测功能进行处理。
恶意行为检测功能首先判断当前行为是否为默认允许的行为。对于接受Socket连接行为,若为本机进行连接时,默认允许;对于建立Socket连接行为,若为连接本机时,或端口号不在正常范围内(小于0或大于0xFFFF)时,默认允许。
当判断当前行为不是默认允许的行为时,会自动分析当前行为是否则正常行为,即本发明实施例会自动分析当前监控到的行为是否属于对应Java进程的正常行为,可在监控到疑似恶意行为后进行判定时减少人工干预,提高恶意行为检测的准确率。
对于不同类型的行为,需要分别进行针对性的处理。
第一,对于创建进程行为。
当监控到创建进程行为时,本发明实施例注册的安全管理器的checkExec(检测进程)方法会被调用,通过以下步骤自动分析当前行为是否属于应用的正常行为:
从安全管理器的checkExec方法参数中,获得当前行为调用创建进程方法时,对应的进程路径;
获得当前线程的调用堆栈;
根据调用堆栈,获得触发当前创建进程行为操作对应的完整类名、方法名,以及行号信息对应的列表;
获得调用创建进程方法的原始代码,需要分以下情况考虑:
a、若当前行为对应的类为应用程序编译后产生的class文件,则需要对class文件进行反编译获得Java原始代码。
b、若当前行为对应的类为Jar包中的class文件,则需要判断Jar包中是否存在对应的Java源代码文件,若存在则直接使用对应的Java源代码文件;若不存在则需要对Jar包进行解压处理,对class文件进行反编译获得Java原始代码。
c、若当前行为对应的类为JSP文件编译产生的class文件,则可以直接使用对应的由Web中间件自动生成的Java原始代码文件。
识别Java原始代码调用创建进程方法时,传入的进程路径参数的定义方式。若原始代码通过Java代码中的常量定义进程路径,则获取Java原始代码中指定的进程路径;若原始代码通过配置文件中的参数值定义进程路径,则读取对应的配置文件获取指定的进程路径;
比较当前实际创建的进程路径,与从应用程序中获取的当前代码指定的进程路径是否相符。若相符,则说明当前创建进程行为是应用程序中的正常行为,不需要进行处理;若不相符,则说明当前创建进程行为不是应用程序中的正常行为,需要进行下一步处理。
第二,对于监听端口(网络)行为。
当监控到监听端口行为时,本发明注册的安全管理器的checkListen(检测监听)方法会被调用,通过以下步骤自动分析当前行为是否属于应用的正常行为:
从安全管理器的checkListen方法参数中,获得当前行为监听的端口;
获得当前线程的调用堆栈;
根据调用堆栈,获得触发当前监听端口行为操作对应的完整类名、方法名,以及行号信息对应的列表;
根据以上获取的类名及方法名,识别当前监听端口的行为类型,例如是否属于Tomcat对HTTP服务端口进行监听,或应用程序自定义代码对TCP端口进行监听,需要分以下情况考虑:
a、若识别到当前监听端口行为属于Tomcat对HTTP服务端口进行监听,则读取当前Tomcat进程的配置文件,或获取当前进程的系统属性,获得HTTP服务端口;
b、若识别到当前监听端口行为属于应用程序自定义代码对TCP端口进行监听,则获得调用监听端口方法的原始代码,识别传入的端口参数,从Java代码中或配置文件中获取监听的端口;
比较当前实际监听的端口,与从应用程序中获取的当前代码指定的监听端口是否相符。若相符,则说明当前监听端口行为是应用程序中的正常行为,不需要进行处理;若不相符,则说明当前监听端口行为不是应用程序中的正常行为,需要进行下一步处理。
第三,对于接受Socket连接行为。
当监控到接受Socket连接行为时,本发明实施例注册的安全管理器的checkAccept(检测接受)方法会被调用。
JDK中原生的安全管理器的checkAccept方法接受的参数包括客户端IP、客户端端口,但不包含服务器端口。在安全管理器中监控到接受Socket连接行为时,若不知道服务器端口,则难以与网络访问策略结合,判断当前接受Socket连接行为是否属于应用正常行为。
为了解决JDK原生安全管理器监控到接受Socket连接行为时无法获取服务器端口的问题,本发明实施例对JDK原生安全管理器类进行了扩展与增强,在checkAccept方法中增加了参数,用于传递Socket服务器IP;并对JDK用于处理服务器Socket的类ServerSocket进行了修改,在调用安全管理器的checkAccept方法时,使用增强后的安全管理器类实例,传入Socket服务器IP。
通过以下步骤自动分析当前行为是否属于应用的正常行为:
从安全管理器的checkAccept方法参数中,获得当前行为调用接受Socket连接方法时,对应的客户端IP、服务器端口;
获取当前应用所在服务器的IP;
从保存了网络访问策略的配置管理数据库(Configuration ManagementDatabase,CMDB)中查询网络访问策略,判断是否存在当前客户端IP访问当前服务器(即当前的应用程序所在服务器)IP对应端口的网络访问策略;若存在,则说明当前接受Socket连接行为是应用程序中的正常行为,不需要进行处理;若不相符,则说明当前接受Socket连接行为不是应用程序中的正常行为,需要进行下一步处理。
第四,对于建立Socket连接(网络)行为。
当监控到建立Socket连接行为时,本发明注册的安全管理器的checkConnect(检测连接)方法会被调用。通过以下步骤自动分析当前行为是否属于应用的正常行为:
从安全管理器的checkConnect方法参数中,获得当前行为调用建立Socket连接方法时,对应的服务器IP及端口;
获得当前线程的调用堆栈;
根据调用堆栈,获得触发当前建立Socket连接行为操作对应的完整类名、方法名,以及行号信息对应的列表,根据类名、方法名,可以识别当前建立Socket连接行为对应的具体操作类型,例如访问数据库、访问消息队列服务器、访问其他TCP、HTTP服务等,需要分以下情况考虑:
a、若当前建立Socket连接行为对应的操作类型为访问数据库,则从当前Java进程的内存中获取对数据库连接进行管理的数据源对象,获取实际连接的数据库服务器IP与端口;或者从配置文件读取需要访问的数据库服务器IP与端口。
b、若当前建立Socket连接行为对应的操作类型为访问消息队列服务器(例如ActiveMQ、RocketMQ、RabbitMQ、Kafka等),则从保存了网络访问策略的配置管理数据库CMDB中查询网络访问策略,判断是否存在当前客户端(即当前应用程序所在服务器)IP访问当前服务器(即消息队列服务器)IP对应端口的网络访问策略。
c、若当前建立Socket连接行为对应的操作类型为访问其他TCP、HTTP服务,则通过读取应用程序配置文件、从CMDB获取网络访问策略的方式获取对应正常的网络访问策略。
判断当前实际产生的建立Socket连接行为是否存在对应的网络访问策略,若存在则说明当前建立Socket连接行为是应用程序中的正常行为,不需要进行处理;若不存在,则说明当前建立Socket连接行为不是应用程序中的正常行为,需要进行下一步处理。
当在上述步骤中确定出当前行为不是正常行为时,可以判断当前行为是否存在白名单中。
本发明实施例提供的自动分析当前行为是否属于正常行为的功能,在大部分情况下能够正常运行,不会出现误报。
为了提供更为灵活的控制功能,以及解决少部分情况下误报的情况,本发明提供了通过白名单配置允许行为的功能。
当本发明注册的安全管理器监控到疑似恶意行为时,首先由自动分析功能识别当前行为是否属于应用程序的正常功能,若是则不处理;若否则判断当前行为是否已在白名单配置文件中进行配置。
对于各类行为对应白名单配置的内容,以及检测的维度,可以如表1所示。
表1
行为类型 | 白名单配置的内容及检测的维度 |
创建进程 | 可执行程序的完整路径 |
监听端口 | 被监听的端口 |
接受Socket连接 | 客户端IP |
建立Socket连接 | 服务器IP及端口 |
若当前监控到的疑似恶意行为不是默认允许的行为,且未在白名单中进行配置,则认定为恶意行为。
判断当前已指定的恶意行为处理类,若指定使用默认处理类对恶意行为进行处理,则选择使用默认处理类对当前恶意行为进行处理;否则选择使用自定义处理类对当前恶意行为进行处理。
恶意行为检测功能的执行步骤可以如图4所示。
当检测到恶意行为后,就可以实现恶意行为处理功能,可以包括恶意行为默认处理功能和恶意行为自定义处理功能。
其中,恶意行为默认处理功能:
本发明实施例提供了默认的恶意行为处理功能,在检测到恶意行为时,首先判断在内存中记录的当前恶意行为在当前进程运行期间的出现次数,判断其是否已超过最大值,若已超过则不再处理;若未超过则继续后续处理,并将次数加1。
恶意行为默认处理功能会在指定的日志文件中记录对应的告警信息(需要告警系统发送对应的告警信息),不会对恶意行为进行阻断。为了便于定位恶意程序对应代码类及程序包,也会记录当前线程的调用堆栈,在调用堆栈中包含了恶意行为执行的方法对应的完整类名、方法名,以及行号信息对应的列表,后续可根据以上信息分析攻击者使用的恶意程序原理。
恶意行为默认处理功能的执行步骤如图5所示。
恶意行为自定义处理功能:
恶意行为自定义处理功能需要由用户实现,可在其中执行所需操作,例如向告警系统发送消息、记录告警日志、对恶意行为进行阻断等。对恶意行为进行阻断存在一定风险,需要仔细评估后决定是否使用。
恶意行为自定义处理类在加载本发明实施例实现的Java组件时指定。
本发明实施例还具有白名单动态更新功能。
对于上述白名单的配置文件,本发明实施例实现的Java组件会定时进行读取,当发现有白名单配置文件内容发生变化时,会重新将白名单配置文件中的内容读取至内存中,无需重启应用即可重新加载白名单配置。
在本发明实施例中,获取当前行为,当前行为是符合预设类型的受监控的行为,在确定当前行为不是默认允许的行为时,对当前行为调用的安全管理器的方法进行分析,确定当前行为是否为正常行为,若当前行为不是正常行为,确定当前行为是否与预设的白名单匹配,若否,则确定当前行为是恶意行为,并将恶意行为发送给预设的处理类进行处理。通过对当前行为调用的安全管理器的方法进行分析,能够发现调用级别的恶意行为,并结合预设的白名单,能够降低误报率,减少人工干预。
基于相同的技术构思,图6示例性的示出了本发明实施例提供的一种恶意行为检测装置的结构,该装置可以执行恶意行为检测流程。
如图6所示,该装置具体包括:
获取单元601,用于获取已注册的安全管理器方法监控到的当前行为,所述当前行为是符合预设类型的受监控的行为;
处理单元602,用于在确定所述当前行为不是默认允许的行为时,对所述已注册的安全管理器方法监控到的当前行为进行分析,确定所述当前行为是否为正常行为;若所述当前行为不是正常行为,确定所述当前行为是否与预设的白名单匹配,若否,则确定所述当前行为是恶意行为,并将所述恶意行为发送给预设的处理类进行处理。
可选的,所述处理单元602具体用于:
根据所述当前行为的类型、所述安全管理器注册的方法监控到当前行为时的调用堆栈和调用参数,对所述当前行为进行分析,确定所述当前行为是否为正常行为。
可选的,所述当前行为的类型包括创建进程行为;
所述处理单元602具体用于:
所述当前行为的类型是创建进程行为时,确定出监控所述创建进程行为时调用的创建进程方法对应的进程路径;
获取所述调用的创建进程方法的原始代码,对所述调用的创建进程方法的原始代码进行分析,确定出指定的进程路径;
若所述指定的进程路径与所述调用创建进程方法时对应的进程路径一致,则确定所述当前行为是正常行为,否则确定所述当前行为不是正常行为。
可选的,所述处理单元602具体用于:
若所述创建进程行为对应的类为应用程序编译后产生的类文件,则对所述应用程序编译后产生的类文件进行反编译,得到所述调用的创建进程方法的原始代码;
若所述创建进程行为对应的类为压缩包中的类文件,则确定所述压缩包中是否存在源代码文件,若存在,则确定所述源代码文件为所述调用的创建进程方法的原始代码,否则对所述压缩包进行解压处理后,对所述压缩包中的类文件进行反编译,得到所述调用的创建进程方法的原始代码;
若所述创建进程行为对应的类为服务器页面文件编译产生的类文件,则使用预设的Web中间件生成所述调用的创建进程方法的原始代码。
可选的,所述当前行为的类型包括监听端口行为;
所述处理单元602具体用于:
所述当前行为的类型是监听端口行为时,确定出监控所述监听端口行为时调用的检测监听方法,从所述检测监听方法的参数中获取所述监听端口行为监听的端口;
根据所述监听端口行为对应的线程,得到所述监听端口行为对应的线程的调用堆栈,并根据所述调用堆栈确定出触发所述监听端口行为对应的类名和方法名,对所述触发所述监听端口行为对应的类名及方法名进行分析,确定出指定的监听端口;
若所述监听端口行为监听的端口与所述指定的监听端口一致,则确定所述当前行为是正常行为,否则确定所述当前行为不是正常行为。
可选的,所述处理单元602具体用于:
对所述触发所述监听端口行为对应的类名及方法名进行识别,若识别到所述监听端口行为属于对HTTP服务端口的监听,则读取当前进程的配置文件,得到指定的监听端口,或获取当前进程的系统属性,得到指定的监听端口;
若识别到所述监听端口行为属于对TCP端口的监听,则获取调用监听端口方法的原始代码,对监听端口方法的原始代码传入端口参数,得到指定的端口。
可选的,所述当前行为的类型包括建立Socket连接行为;
所述处理单元602具体用于:
所述当前行为的类型是建立Socket连接行为时,确定出监控所述建立Socket连接行为的调用的建立Socket连接方法对应的服务器IP地址及服务器端口;
根据所述建立Socket连接行为对应的线程,得到所述建立Socket连接行为对应的线程的调用堆栈,根据所述建立Socket连接行为对应的线程的调用堆栈确定出触发所述建立Socket连接行为对应的类名和方法名;
对所述触发所述建立Socket连接行为对应的类名和方法名进行分析,识别出所述建立Socket连接行为的操作类型;
对所述建立Socket连接行为的操作类型进行分析,确定所述当前行为是否为正常行为。
可选的,所述处理单元602具体用于:
若建立Socket连接行为的操作类型为访问数据库,则获取对数据库连接进行管理的数据源对象,得到实际连接的数据库的服务器IP地址和端口,或从预设的配置文件中读取需要访问的数据库的服务器IP地址和端口,确定数据库的服务器IP地址和端口与建立Socket连接方法的服务器IP地址及服务器端口是否一致,若是,则确定所述当前行为是正常行为,否则确定所述当前行为不是正常行为;
若建立Socket连接行为的操作类型为访问消息队列服务器,则从网络访问策略的配置管理数据库中确定是否存在所述建立Socket连接行为对应的应用程序所在的服务器的IP地址访问所述建立Socket连接方法的服务器IP地址及服务器端口的网络访问策略,若存在,则确定所述当前行为是正常行为,否则确定所述当前行为不是正常行为;
若建立Socket连接行为的操作类型为访问TCP、HTTP服务,则读取所述建立Socket连接行为对应的应用程序的配置文件,根据所述配置文件从配置管理数据库中确定是否存在所述建立Socket连接行为对应的网络访问策略,若存在,则确定所述当前行为是正常行为,否则确定所述当前行为不是正常行为。
可选的,所述当前行为的类型包括接受Socket连接行为;
所述处理单元602具体用于:
所述当前行为的类型是接受Socket连接行为时,确定出监控所述接受Socket连接行为时调用的接受Socket连接方法对应的客户端IP地址和服务器端口;
获取所述接受Socket连接行为对应的应用程序所在的服务器IP地址,从网络访问策略的配置管理数据库中确定是否存在所述客户端IP地址访问所述服务器IP地址对应的服务器端口的网络访问策略,若是,则确定所述当前行为是正常行为,否则确定所述当前行为不是正常行为。
上述技术方案中,通过对监控接受Socket连接行为时调用的接受Socket连接方法进行分析,能够识别出接受Socket连接行为是否为正常行为。
可选的,所述处理单元602还用于:
在获取当前行为之前,获取恶意行为检测的配置文件;
从所述配置文件中获取预设的白名单的配置信息并进行存储;
初始化所述预设的白名单的动态更新功能,并确定对恶意行为进行处理的预设的处理类;
创建新的安全管理器,根据所述配置文件配置所述安全管理器的监控功能,并将所述安全管理器注册到Java虚拟机中。
基于相同的技术构思,本发明实施例还提供了一种计算设备,包括:
存储器,用于存储程序指令;
处理器,用于调用存储器中存储的程序指令,按照获得的程序执行上述恶意行为检测方法。
基于相同的技术构思,本发明实施例还提供了一种计算机可读非易失性存储介质,包括计算机可读指令,当计算机读取并执行计算机可读指令时,使得计算机执行上述恶意行为检测方法。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (12)
1.一种恶意行为检测方法,其特征在于,包括:
获取已注册的安全管理器方法监控到的当前行为,所述当前行为是符合预设类型的受监控的行为;
在确定所述当前行为不是默认允许的行为时,对所述已注册的安全管理器方法监控到的当前行为进行分析,确定所述当前行为是否为正常行为;
若所述当前行为不是正常行为,确定所述当前行为是否与预设的白名单匹配,若否,则确定所述当前行为是恶意行为,并将所述恶意行为发送给预设的处理类进行处理。
2.如权利要求1所述的方法,其特征在于,所述对所述已注册的安全管理器方法监控到的当前行为进行分析,确定所述当前行为是否为正常行为,包括:
根据所述当前行为的类型、所述安全管理器注册的方法监控到当前行为时的调用堆栈和调用参数,对所述当前行为进行分析,确定所述当前行为是否为正常行为。
3.如权利要求2所述的方法,其特征在于,所述当前行为的类型包括创建进程行为;
所述根据所述当前行为的类型、所述安全管理器注册的方法监控到当前行为时的调用堆栈和调用参数,对所述当前行为进行分析,确定所述当前行为是否为正常行为,包括:
所述当前行为的类型是创建进程行为时,确定出监控所述创建进程行为时调用的创建进程方法对应的进程路径;
获取所述调用的创建进程方法的原始代码,对所述调用的创建进程方法的原始代码进行分析,确定出指定的进程路径;
若所述指定的进程路径与所述调用创建进程方法时对应的进程路径一致,则确定所述当前行为是正常行为,否则确定所述当前行为不是正常行为。
4.如权利要求3所述的方法,其特征在于,所述获取所述调用的创建进程方法的原始代码,包括:
若所述创建进程行为对应的类为应用程序编译后产生的类文件,则对所述应用程序编译后产生的类文件进行反编译,得到所述调用的创建进程方法的原始代码;
若所述创建进程行为对应的类为压缩包中的类文件,则确定所述压缩包中是否存在源代码文件,若存在,则确定所述源代码文件为所述调用的创建进程方法的原始代码,否则对所述压缩包进行解压处理后,对所述压缩包中的类文件进行反编译,得到所述调用的创建进程方法的原始代码;
若所述创建进程行为对应的类为服务器页面文件编译产生的类文件,则使用预设的Web中间件生成所述调用的创建进程方法的原始代码。
5.如权利要求2所述的方法,其特征在于,所述当前行为的类型包括监听端口行为;
所述根据所述当前行为的类型、所述安全管理器注册的方法监控到当前行为时的调用堆栈和调用参数,对所述当前行为进行分析,确定所述当前行为是否为正常行为,包括:
所述当前行为的类型是监听端口行为时,确定出监控所述监听端口行为时调用的检测监听方法,从所述检测监听方法的参数中获取所述监听端口行为监听的端口;
根据所述监听端口行为对应的线程,得到所述监听端口行为对应的线程的调用堆栈,并根据所述调用堆栈确定出触发所述监听端口行为对应的类名和方法名,对所述触发所述监听端口行为对应的类名及方法名进行分析,确定出指定的监听端口;
若所述监听端口行为监听的端口与所述指定的监听端口一致,则确定所述当前行为是正常行为,否则确定所述当前行为不是正常行为。
6.如权利要求5所述的方法,其特征在于,所述对所述触发所述监听端口行为对应的类名及方法名进行分析,确定出指定的监听端口,包括:
对所述触发所述监听端口行为对应的类名及方法名进行识别,若识别到所述监听端口行为属于对HTTP服务端口的监听,则读取当前进程的配置文件,得到指定的监听端口,或获取当前进程的系统属性,得到指定的监听端口;
若识别到所述监听端口行为属于对TCP端口的监听,则获取调用监听端口方法的原始代码,对监听端口方法的原始代码传入端口参数,得到指定的端口。
7.如权利要求2所述的方法,其特征在于,所述当前行为的类型包括建立套接字Socket连接行为;
所述根据所述当前行为的类型、所述安全管理器注册的方法监控到当前行为时的调用堆栈和调用参数,对所述当前行为进行分析,确定所述当前行为是否为正常行为,包括:
所述当前行为的类型是建立Socket连接行为时,确定出监控所述建立Socket连接行为时调用的建立Socket连接方法对应的服务器IP地址及服务器端口;
根据所述建立Socket连接行为对应的线程,得到所述建立Socket连接行为对应的线程的调用堆栈,根据所述建立Socket连接行为对应的线程的调用堆栈确定出触发所述建立Socket连接行为对应的类名和方法名;
对所述触发所述建立Socket连接行为对应的类名和方法名进行分析,识别出所述建立Socket连接行为的操作类型;
对所述建立Socket连接行为的操作类型进行分析,确定所述当前行为是否为正常行为。
8.如权利要求7所述的方法,其特征在于,所述对所述建立Socket连接行为的操作类型进行分析,确定所述当前行为是否为正常行为,包括:
若建立Socket连接行为的操作类型为访问数据库,则获取对数据库连接进行管理的数据源对象,得到实际连接的数据库的服务器IP地址和端口,或从预设的配置文件中读取需要访问的数据库的服务器IP地址和端口,确定数据库的服务器IP地址和端口与建立Socket连接方法的服务器IP地址及服务器端口是否一致,若是,则确定所述当前行为是正常行为,否则确定所述当前行为不是正常行为;
若建立Socket连接行为的操作类型为访问消息队列服务器,则从网络访问策略的配置管理数据库中确定是否存在所述建立Socket连接行为对应的应用程序所在的服务器的IP地址访问所述建立Socket连接方法的服务器IP地址及服务器端口的网络访问策略,若存在,则确定所述当前行为是正常行为,否则确定所述当前行为不是正常行为;
若建立Socket连接行为的操作类型为访问TCP、HTTP服务,则读取所述建立Socket连接行为对应的应用程序的配置文件,根据所述配置文件从配置管理数据库中确定是否存在所述建立Socket连接行为对应的网络访问策略,若存在,则确定所述当前行为是正常行为,否则确定所述当前行为不是正常行为。
9.如权利要求1至8任一项所述的方法,其特征在于,在获取当前行为之前,还包括:
获取恶意行为检测的配置文件;
从所述配置文件中获取预设的白名单的配置信息并进行存储;
初始化所述预设的白名单的动态更新功能,并确定对恶意行为进行处理的预设的处理类;
创建新的安全管理器,根据所述配置文件配置所述安全管理器的监控功能,并将所述安全管理器注册到Java虚拟机中。
10.一种恶意行为检测装置,其特征在于,包括:
获取单元,用于获取已注册的安全管理器方法监控到的当前行为,所述当前行为是符合预设类型的受监控的行为;
处理单元,用于在确定所述当前行为不是默认允许的行为时,对所述已注册的安全管理器方法监控到的当前行为进行分析,确定所述当前行为是否为正常行为;若所述当前行为不是正常行为,确定所述当前行为是否与预设的白名单匹配,若否,则确定所述当前行为是恶意行为,并将所述恶意行为发送给预设的处理类进行处理。
11.一种计算设备,其特征在于,包括:
存储器,用于存储程序指令;
处理器,用于调用所述存储器中存储的程序指令,按照获得的程序执行权利要求1至9任一项所述的方法。
12.一种计算机可读非易失性存储介质,其特征在于,包括计算机可读指令,当计算机读取并执行所述计算机可读指令时,使得计算机执行如权利要求1至9任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011507762.2A CN112632534A (zh) | 2020-12-18 | 2020-12-18 | 一种恶意行为检测方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011507762.2A CN112632534A (zh) | 2020-12-18 | 2020-12-18 | 一种恶意行为检测方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112632534A true CN112632534A (zh) | 2021-04-09 |
Family
ID=75317644
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011507762.2A Pending CN112632534A (zh) | 2020-12-18 | 2020-12-18 | 一种恶意行为检测方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112632534A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115051905A (zh) * | 2022-07-19 | 2022-09-13 | 广东泓胜科技股份有限公司 | 一种端口安全监控分析方法、装置及相关设备 |
-
2020
- 2020-12-18 CN CN202011507762.2A patent/CN112632534A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115051905A (zh) * | 2022-07-19 | 2022-09-13 | 广东泓胜科技股份有限公司 | 一种端口安全监控分析方法、装置及相关设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10469512B1 (en) | Optimized resource allocation for virtual machines within a malware content detection system | |
US8271608B2 (en) | System and method for a mobile cross-platform software system | |
CN108664793B (zh) | 一种检测漏洞的方法和装置 | |
CN110166459B (zh) | 反序列化漏洞的防护方法、装置、设备及可读存储介质 | |
EP3270319B1 (en) | Method and apparatus for generating dynamic security module | |
CN110765464A (zh) | 漏洞检测方法、装置、设备及计算机存储介质 | |
CN111523097B (zh) | 基于安卓系统的app刷子用户识别方法、设备及存储介质 | |
WO2022199292A1 (zh) | 小程序恶意行为检测 | |
CN112632534A (zh) | 一种恶意行为检测方法及装置 | |
US9104868B2 (en) | System, method, and computer program product for detecting unwanted data based on scanning associated with a payload execution and a behavioral analysis | |
CN111371783B (zh) | 一种sql注入攻击检测方法、装置、设备和存储介质 | |
CN110674508B (zh) | Android组件检测处理方法、检测终端及存储介质 | |
CN109784054B (zh) | 行为堆栈信息获取方法及装置 | |
CN115348086B (zh) | 一种攻击防护方法及装置、存储介质及电子设备 | |
CN115859274B (zh) | 一种监控Windows进程清空系统事件日志行为的方法及系统 | |
CN115828256A (zh) | 一种越权与未授权逻辑漏洞检测方法 | |
CN111049795B (zh) | 分布式Web应用的敏感数据未加密漏洞的检测方法及装置 | |
CN116956272A (zh) | 权限调用监控方法、装置及电子设备 | |
CN105653948B (zh) | 一种阻止恶意操作的方法及装置 | |
US20180276059A1 (en) | Programming language-independent transaction correlation | |
CN113486277A (zh) | Web应用访问方法、装置、电子设备及存储介质 | |
CN113836529A (zh) | 进程检测方法、装置、存储介质以及计算机设备 | |
KR102001814B1 (ko) | 모바일 장치 기반의 악성 스크립트 탐지 방법 및 그 장치 | |
CN111984341B (zh) | 项目监测方法、装置、电子设备和存储介质 | |
CN113127859B (zh) | 待检测文件的检测方法、装置、终端及存储介质 |
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 |