CN115659319A - 基于JavaAgent的Java应用防篡改方法 - Google Patents
基于JavaAgent的Java应用防篡改方法 Download PDFInfo
- Publication number
- CN115659319A CN115659319A CN202211612149.6A CN202211612149A CN115659319A CN 115659319 A CN115659319 A CN 115659319A CN 202211612149 A CN202211612149 A CN 202211612149A CN 115659319 A CN115659319 A CN 115659319A
- Authority
- CN
- China
- Prior art keywords
- java application
- file
- java
- value
- target
- 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
- 238000000034 method Methods 0.000 title claims abstract description 53
- 238000005516 engineering process Methods 0.000 claims description 7
- 238000004364 calculation method Methods 0.000 description 6
- 238000012795 verification Methods 0.000 description 4
- 239000000523 sample Substances 0.000 description 3
- 238000011161 development Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 230000002411 adverse Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000004904 shortening Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Images
Landscapes
- Stored Programmes (AREA)
Abstract
本发明涉及计算机软件开发技术领域,公开了一种基于JavaAgent的Java应用防篡改方法,本发明通过构建两个jar包,两个jar包分别计算目标Java应用初始化运行时所有被加载的class文件的MD5值,以及目标Java应用运行时内存中的class文件的MD5值,然后将两个相同文件名的class文件运行前的MD5值和运行后的MD5值进行比较,判断两者是否一致,最终判断目标Java应用是否被篡改,最后执行相应的防篡改操作。本发明能够在Java应用程序运行过程中及时发现篡改操作,极大的缩短了发现系统被篡改的时间提升了目标Java应用程序运行端的安全性。
Description
技术领域
本发明涉及计算机软件开发技术领域,具体涉及一种基于JavaAgent的Java应用防篡改方法。
背景技术
随着互联网的飞速发展,各种应用程序APP也呈井喷态势,相应的应用程序安全也面临着严峻考验。当网络攻击使Java应用程序类文件在运行中被篡改,往往会对程序运行端及目标应用程序个人、企业乃至社会造成严重威胁。
公开号为CN110909345A,公开日为2019年12月02日,发明名称为“一种Java系统开源软件防篡改方法及系统”的发明专利申请公开了一种软件防篡改方法,其具体的技术方案为:本发明提供了一种Java系统开源软件防篡改方法及系统,所述方法包括:接收Java系统应用程序中Jvm模块传输的启动指令;通过基于JavaAgent形成的探针确定应用程序中的所有开源软件,根据预设校验规则对所述开源软件进行校验得到校验结果;根据所述校验结果确定开源软件是否被篡改,若被篡改,执行预警操作,本发明可通过在Java系统开源软件中设置探针,在每次开源软件启动时对开源软件进行校验,以确定开源软件是否被篡改。
上述现有技术虽然具有防篡改的功能与效果,但是只能针对应用启动之前发生的篡改进行校验,应用一旦运行,则无法对运行过程中发生的篡改进行实时的校验与发现。
发明内容
为了解决上述现有技术存在的问题和缺陷,本发明提出了一种基于JavaAgent的Java应用防篡改及内存取证的方法,能够及时发现Java应用运行过程中发生的篡改操作,缩短了发现应用程序被篡改的时间,并且针对篡改能够更加快速的进行相应的预警。
为了实现上述发明目的,本发明的技术方案如下:
一种基于JavaAgent的Java应用防篡改方法,具体包括以下步骤:
步骤S1.构建Java应用启动时,计算class文件MD5值并进行存储的第一jar包;
步骤S2.在目标Java应用初始化运行时,通过应用启动命令添加启动参数,第一jar包运行并计算目标Java应用中所有被加载的class文件的MD5值,将class文件的文件名称以及对应的MD5值存储至指定的本地磁盘文件中;
步骤S3.在目标Java应用运行过程中,通过Java虚拟机进程状态获取目标Java应用的进程号;
步骤S4.构建Java应用运行过程中,校验class文件MD5值的第二jar包,第二jar包链接至处于运行状态的目标Java应用中,定时获取目标Java应用运行时内存中的class文件,并计算出相应的MD5值;
步骤S5.第二jar包将获取的class文件的文件名称与步骤S2中存储的文件名称进行匹配,检测该class文件此时计算得到的MD5值与存储的MD5值是否一致;若一致,则跳过该文件,继续遍历下一个文件;若不一致则表示该class文件被篡改,发出预警信息,同时中断该Java应用的运行。
作为优选地,所述步骤S5还包括:若第二jar包检测到class文件的MD5值与存储的MD5值不一致,则根据二进制流导出该被篡改的class文件至本地磁盘进行保存。
作为优选地,所述步骤S5还包括:第二jar包间隔固定时间重复执行步骤S5,用于判断目标Java应用在运行过程中是否被篡改。
作为优选地,所述步骤S5中,预警信息通过短信或邮件发送至用户端。
作为优选地,所述第二jar包利用JavaAgent技术的JavaAttach机制,根据目标Java应用的进程号链接至目标Java应用。
本发明的有益效果:
(1)本发明能够在Java应用程序运行过程中及时发现篡改操作,极大的缩短了发现程序或系统被篡改的时间;进一步地,本发明针对程序或系统的篡改能够更加快速的进行响应预警操作,通过消息通知并及时进行熔断处理,极大地提升了目标Java应用程序运行端的安全性。
(2)本发明对Java应用程序被篡改后的class文件进行内存取证存储至本地路径,提取保留与网络攻击或网络犯罪相关的数字证据,能够提高抓取被攻击的程序或系统的证据的速度和准确性。
附图说明
本发明的前述和下文具体描述在结合以下附图阅读时变得更清楚,附图中:
图1为本发明方法流程图。
具体实施方式
为了使本领域的技术人员更好地理解本发明中的技术方案,下面将通过几个具体的实施例来进一步说明实现本发明发明目的的技术方案,需要说明的是,本发明要求保护的技术方案包括但不限于以下实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
随着互联网的飞速发展,各种应用程序APP也呈井喷态势,相应的应用程序安全也面临着严峻考验。当网络攻击使Java应用程序类文件在运行中被篡改时,往往会对程序运行端及目标应用程序个人、企业乃至社会造成严重威胁。
目前,应用程序或系统被篡改后,大多情况是应用程序被修改后并且造成严重的不良后果后才会被发现,暂无在程序或系统运行过程中及时发现篡改操作,并同时进行预警以及熔断处理的现有技术出现。
基于此,本发明的实施例提出了一种基于JavaAgent的Java应用防篡改方法,通过计算并对比Java应用程序中相同文件名的class文件,在程序运行前和运行过程中的MD5值来判断应用是否被篡改,若前后的MD5值不一致,则表示应用被篡改,那么则会发出相应的预警信息,并同时中断该Java应用程序的运行;若两者前后是一致的,则表示此时应用未被篡改,继续遍历Java应用程序运行时的class文件字节流,根据MD5值来判断应用是否被篡改。本发明能够在Java应用程序运行过程中及时发现篡改操作,极大的缩短了发现系统或程序被篡改的时间。
本实施例公开了一种基于JavaAgent的Java应用防篡改方法,参照说明书附图1所示,所述方法主要包括以下步骤。
步骤S1.构建Java应用启动时,计算所有class文件字节流MD5值并进行存储的第一jar包。
在本实施例中,需要说明的是,MD5值为MD5信息摘要算法产生出的散列值。
在本实施例中,还需要说明的是,构建的第一jar包内包括两个模块,分别为MD5值第一计算模块和MD5值第一存储模块。
在本实施例中,第一jar包实现了JavaAgent探针技术,JavaAgent探针技术是一种Java技术,使用命令示例:java -javaagent xx.jar -jar application.jar ,其中xx.jar指该步骤构建的jar包,application.jar为待检测目标Java应用jar包。该技术能在待检测的目标Java应用启动指令发起后,加载class文件时,获取class文件流信息。获取class文件流是第一jar包的MANIFEST.MF配置文件指定一个Java类作为Premain-Class,该类中包含premain方法,该方法可以在目标Java应用的class文件在加载时获取所有class文件的名称以及class文件二进制流,并调用MD5值第一计算模块对class文件字节流进行MD5值的计算,接着又调用MD5值第一存储模块进行信息存储。
在本实施例中,第一jar包主要是对Java编译后的class文件字节流进行打包,类似zip包,可作为应用程序运行。
步骤S2.在被检测校验的目标Java应用初始化运行时,通过应用启动命令添加启动参数,第一jar包运行后,首先调用其中的MD5值第一计算模块计算目标Java应用中所有被加载的class文件字节流的MD5值,然后再调用MD5值第一存储模块将class文件字节流的文件名称以及对应的MD5值存储至指定的本地磁盘文件中。
步骤S3.在被检测校验的目标Java应用运行成功后,通过JPS获取目标Java应用程序的PID。
在本实施例中,需要说明的是,JPS是指Java虚拟机进程状态。
在本实施例中,还需要说明的是,PID是指目标Java应用程序的进程号。
步骤S4.构建实现JavaAgent技术和JavaAttach机制针对Java应用运行过程中,计算和校验class文件字节流MD5值的第二jar包;第二jar包链接至处于运行状态的目标Java应用中,定时获取目标Java应用运行时内存中的class文件字节流,并计算出相应的MD5值。
在本实施例中,构建的第二jar包同样也实现了JavaAgent探针技术,能够实现agentmain方法,同时结合JavaAttach机制获取目标Java应用程序的class文件字节流。
在本实施例中,JavaAttach机制为Java提供的一种Java应用间通信的能力,能让一个Java应用传命令或数据给另外一个目标Java应用,让目标应用执行一些操作或或替换一些文件。
在本实施例中,需要说明的是,第二jar包内包括MD5值第二计算模块,MD5值第二存储模块、MD5值匹配模块、预警及中断模块以及定时任务模块。
MD5值第二计算模块,用于计算目标Java应用运行过程中内存中的class文件字节流,并计算出相应的MD5值。
MD5值第二存储模块,用于将篡改后的class文件字节流存储至指定的磁盘中。
MD5值匹配模块,用于获取目标Java应用运行中的class文件流的文件名及对应的MD5值,然后将该MD5值与S2步骤中存储的相同文件名的class文件字节流的MD5值进行匹配,并判断应用是否被篡改。
预警及中断模块,用于发现应用被篡改后发起预警操作并及时中断应用的运行。
定时任务模块,用于在设置的时间间隔内,重复执行匹配class文件流MD5值的任务。
步骤S5.第二jar包调用MD5值匹配模块,获取目标Java应用运行中的class文件字节流的文件名以及对应的MD5值,然后与步骤S2中存储的文件名进行匹配,接着判断该class文件字节流此时的MD5值与步骤S2存储的MD5值是否一致;若一致,则表示目标Java应用未被篡改,跳过该文件,继续遍历下一个文件;若不一致则表示该class文件被篡改,即目标Java应用被篡改,第二jar包调用预警及中断模块,发出相应的预警信息,同时中断该Java应用的运行。
在本实施例中,需要说明的是,若第二jar包检测到class文件字节流的MD5值与存储的MD5值不一致,则调用MD5值第二存储模块,根据二进制流导出该被篡改的class文件字节流至本地磁盘进行保存。
在本实施例中,还需要说明的是,第二jar包通过定时任务模块,间隔固定时间重复执行步骤S5,用于判断目标Java应用在运行过程中是否被篡改。
在本实施例中,还需要进一步说明的是,第二jar包发出的预警信息可采用但不限于发送短信或邮件的方式将该预警信息传输至用户的手机或者电子邮箱中。
在本实施例中,第二jar包实现调用VirtualMachine.attach(PID)实现Attach机制,该PID为步骤S3获取。
在本实施例中,第二jar包中实现了名为ClassFileTransformer的Java接口transform方法,该方法对获取到的class文件字节流进行MD5值的计算。
以上所述,仅是本发明的较佳实施例,并非对本发明做任何形式上的限制,凡是依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化,均落入本发明的保护范围之内。
Claims (5)
1.一种基于JavaAgent的Java应用防篡改方法,其特征在于,具体包括以下步骤:
步骤S1.构建Java应用启动时,计算class文件MD5值并进行存储的第一jar包;
步骤S2.在目标Java应用初始化运行时,通过应用启动命令添加启动参数,第一jar包运行并计算目标Java应用中所有被加载的class文件的MD5值,将class文件的文件名称以及对应的MD5值存储至指定的本地磁盘文件中;
步骤S3.在目标Java应用运行过程中,通过Java虚拟机进程状态获取目标Java应用的进程号;
步骤S4.构建Java应用运行过程中,校验class文件MD5值的第二jar包,第二jar包链接至处于运行状态的目标Java应用中,定时获取目标Java应用运行时内存中的class文件,并计算出相应的MD5值;
步骤S5.第二jar包将获取的class文件的文件名称与步骤S2中存储的文件名称进行匹配,检测该class文件此时计算得到的MD5值与存储的MD5值是否一致;若一致,则跳过该文件,继续遍历下一个文件;若不一致则表示该class文件被篡改,发出预警信息,同时中断该Java应用的运行。
2.根据权利要求1所述的基于JavaAgent的Java应用防篡改方法,其特征在于,所述步骤S5还包括:若第二jar包检测到class文件的MD5值与存储的MD5值不一致,则根据二进制流导出该被篡改的class文件至本地磁盘进行保存。
3.根据权利要求1所述的基于JavaAgent的Java应用防篡改方法,其特征在于,所述步骤S5还包括:第二jar包间隔固定时间重复执行步骤S5,用于判断目标Java应用在运行过程中是否被篡改。
4.根据权利要求1所述的基于JavaAgent的Java应用防篡改方法,其特征在于,所述步骤S5中,预警信息通过短信或邮件发送至用户端。
5.根据权利要求1所述的基于JavaAgent的Java应用防篡改方法,其特征在于,所述第二jar包利用JavaAgent技术的JavaAttach机制,根据目标Java应用的进程号链接至目标Java应用。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211612149.6A CN115659319A (zh) | 2022-12-15 | 2022-12-15 | 基于JavaAgent的Java应用防篡改方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211612149.6A CN115659319A (zh) | 2022-12-15 | 2022-12-15 | 基于JavaAgent的Java应用防篡改方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115659319A true CN115659319A (zh) | 2023-01-31 |
Family
ID=85023518
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211612149.6A Pending CN115659319A (zh) | 2022-12-15 | 2022-12-15 | 基于JavaAgent的Java应用防篡改方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115659319A (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101668166A (zh) * | 2003-12-18 | 2010-03-10 | 松下电器产业株式会社 | 用于存储、认证以及执行应用程序的方法 |
CN106778249A (zh) * | 2017-01-23 | 2017-05-31 | 湖南文盾信息技术有限公司 | 一种Java程序可信执行环境的构建方法及构建系统 |
CN113886825A (zh) * | 2021-09-29 | 2022-01-04 | 中国工商银行股份有限公司 | 代码检测方法、装置、系统、设备及存储介质 |
CN114357387A (zh) * | 2021-12-29 | 2022-04-15 | 杭州涂鸦信息技术有限公司 | java应用程序防篡改的判断方法、编译方法及设备 |
CN115358402A (zh) * | 2022-08-29 | 2022-11-18 | 深圳前海环融联易信息科技服务有限公司 | 基于drool的动态规则解决方法、电子设备及可读存储介质 |
-
2022
- 2022-12-15 CN CN202211612149.6A patent/CN115659319A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101668166A (zh) * | 2003-12-18 | 2010-03-10 | 松下电器产业株式会社 | 用于存储、认证以及执行应用程序的方法 |
CN106778249A (zh) * | 2017-01-23 | 2017-05-31 | 湖南文盾信息技术有限公司 | 一种Java程序可信执行环境的构建方法及构建系统 |
CN113886825A (zh) * | 2021-09-29 | 2022-01-04 | 中国工商银行股份有限公司 | 代码检测方法、装置、系统、设备及存储介质 |
CN114357387A (zh) * | 2021-12-29 | 2022-04-15 | 杭州涂鸦信息技术有限公司 | java应用程序防篡改的判断方法、编译方法及设备 |
CN115358402A (zh) * | 2022-08-29 | 2022-11-18 | 深圳前海环融联易信息科技服务有限公司 | 基于drool的动态规则解决方法、电子设备及可读存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111294345B (zh) | 一种漏洞检测方法、装置及设备 | |
US20190028495A1 (en) | Program, information processing device, and information processing method | |
CN110888838B (zh) | 基于对象存储的请求处理方法、装置、设备及存储介质 | |
CN109325349A (zh) | 一种安全管理方法、终端设备及计算机可读存储介质 | |
CN113051034B (zh) | 一种基于kprobes的容器访问控制方法与系统 | |
CN109800577B (zh) | 一种识别逃逸安全监控行为的方法及装置 | |
CN110008719B (zh) | 一种文件处理、文件检测方法及装置 | |
CN111651754A (zh) | 入侵的检测方法和装置、存储介质、电子装置 | |
CN103617396A (zh) | 一种漏洞利用的检测方法和系统 | |
CN112685745B (zh) | 一种固件检测方法、装置、设备及存储介质 | |
WO2021243555A1 (zh) | 一种快应用检测方法、装置、设备及存储介质 | |
CN115659319A (zh) | 基于JavaAgent的Java应用防篡改方法 | |
CN112257065A (zh) | 一种进程事件处理方法和装置 | |
CN112199668A (zh) | 一种检测容器中应用层消耗CPU的DoS攻击的方法和装置 | |
CN111552967A (zh) | 一种应用软件安全漏洞检测方法 | |
CN110674499A (zh) | 一种识别计算机威胁的方法、装置及存储介质 | |
WO2020000741A1 (zh) | 一种rookit检测方法、装置及服务器 | |
CN110602051A (zh) | 基于共识协议的信息处理方法及相关装置 | |
CN112214769B (zh) | 基于SGX架构的Windows系统的主动度量系统 | |
CN116956272A (zh) | 权限调用监控方法、装置及电子设备 | |
CN112632534A (zh) | 一种恶意行为检测方法及装置 | |
CN114979109A (zh) | 行为轨迹检测方法、装置、计算机设备和存储介质 | |
CN111475783A (zh) | 数据检测方法、系统及设备 | |
CN115952025B (zh) | 一种数据管控方法、系统、终端设备及存储介质 | |
CN110569646B (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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20230131 |