999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于YARA的Java內存馬檢測方案設計

2023-05-23 06:35:48劉向偉張曉嬌宋金金
無線互聯科技 2023年6期

劉向偉 張曉嬌 宋金金

作者簡介:劉向偉(1993— ),男,浙江嘉興人,工程師,學士;研究方向:網絡安全。

摘要:隨著互聯網的發展,惡意軟件逐漸成為威脅網絡安全的重要因素。而 Java 內存馬作為一種內存駐留的惡意軟件,不僅具有隱蔽性高、易于傳播等特點,還能夠利用一些 Java 的高級特性實現更復雜的攻擊行為,給網絡安全帶來更大的威脅。文章提出了一種基于 YARA的Java內存馬檢測方案,通過向JVM中注入Agent將高風險類導出并通過YARA實現對Java內存中的惡意代碼的檢測和定位,再對該方法進行了實驗驗證。實驗結果表明,該方案能夠有效地檢測Java內存馬,具有較高的檢測準確率和較低的誤報率。

關鍵詞:Java 內存馬;YARA;惡意軟件;檢測方法

中圖分類號:TP399 文獻標志碼:A

0 引言

Java是一種跨平臺的編程語言,因其安全性、易用性和可移植性而廣泛應用于網絡應用程序的開發[1]。然而,隨著Java應用程序的不斷發展,內存馬成為網絡攻擊的一種常見手段。內存馬可以通過修改Java虛擬機(JVM)內存中的字節碼來實現程序的惡意行為,例如,竊取敏感信息、掃描網絡端口、占有服務器資源挖礦等。傳統的基于落地文件的檢測已經難以應對,因此針對注入內存中的惡意代碼可行性檢測方案的研究變得越來越重要。

1 Java內存馬方案設計

1.1 Java 內存馬檢測需求分析

本方案設計之初筆者查詢了大量的現有方案,希望該方案可落地、可實現。同時,在查殺種類上能盡可能覆蓋所有Java內存馬種類與攻擊路徑;在誤報率上可以做到較少誤報,甚至是零誤報;在性能上,作為一個安全類的檢測方案,不會占用太多的服務器資源,將對系統性能造成的影響降到最低;同時,在內存馬攻擊側熱度不減的當下,不斷有新攻擊手段與利用類的更新,希望該方案是可擴展的。

為了達到全面性、低誤報、低占用、可擴展的目標,筆者分別對Java內存馬的種類及攻擊路徑做出分析,對內存的提取思路做出優化,對內存馬檢出的判斷體系做出選取,最終形成了一套明晰的檢測流程與方案。

1.2 Java內存馬的種類及攻擊路徑分析

常見的Java內存馬在實現方式技術上可以劃分為以下3種類型,每種類型的實現原理:(1)基于Java Servlet規范利用的內存馬實現技術。該類型主要是利用了Java Servlet 3.0+規范,通過對Servlet,Filter,Listener組件的注冊來實現[2]。(2)基于特定Java 框架利用的內存馬實現技術。利用Java 框架的技術規范(如,Spring MVC框架),動態注冊框架的組件來實現。(3)基于Java api接口類型的內存馬實現技術。利用Java Agent技術或是JavaSsist技術通過修改JVM中加載類的字節碼的特性來實現。

上述的Java內存馬實現的攻擊路徑主要體現在兩種形式:(1)通過落地文件將木馬注入內存。這種形式下黑客往往通過常見漏洞上傳或寫入惡意文件從而獲取系統權限,為了更好地隱藏自己不被安全檢測工具發現以及穩定地維持訪問,將木馬代碼注入內存中[3]。(2)通過漏洞攻擊直接將木馬注入內存。攻擊者通過反序列化等相關漏洞直接利用寫入的木馬注入內存當中,這種形式下往往無落地文件產生。

通過對常見的Java內存馬的種類分析可以明確查殺種類,做到檢測與查殺的全面性。同時,對內存馬的攻擊路徑進行分析可以發現,常見的木馬檢測針對的落地文件,在內存馬查殺方面效果不大,需要將查殺的重點放在程序運行時內存上。

1.3 可疑內存提取思路

本次方案對內存提取采用了Java Agent技術來實現,Java Agent技術不單單可以作為內存馬的實現,還可以被用來檢測內存馬。通過跟蹤Java進程PID,遍歷JVM中所有加載的類并導出為內存中的字節碼來實現內存的提取。出于性能方面的考慮,通過對現有內存馬技術利用類和方法進行分類總結,在此只對可疑類進行導出。

具體實現步驟如下:(1)遍歷系統中運行的JVM進程,將Agent注入對應的進程中;(2)遍歷 JVM中所有加載的類,將所有的高風險類在內存中的字節碼DUMP出來。

1.4 YARA判別

為了滿足對惡意代碼鑒別方案的可擴展性,本文選取了YARA引擎進行惡意代碼的判別。YARA 是一個旨在(但不限于)幫助惡意軟件研究人員識別和分類惡意軟件樣本的工具。目前,使用 YARA 的知名軟件有賽門鐵克、火眼、卡巴斯基、McAfee、VirusTotal 等。本文采用Java動態加載YARA方式實現規則判斷,可以輕松地集成開源規則庫。此外,YARA的規則編寫非常簡單,可以輕松地編寫出一條想要的規則,如根據上面提到的Java內存馬的特征分析和提取方法,可以編寫相應的YARA規則來檢測Java內存馬。以下是一個簡單的YARA內存馬檢測規則示例:

rule Java_Memory_Malware

{

meta:

author = "XXX"

description = "Detect Java memory malware"

strings:

$class_name = "Java/lang/reflect/Method"

$method_name = "invoke"

$parameter_types = "Java/lang/Object;[LJava/lang/Object;"

condition:

all of them

}

上述YARA規則是一個非常典型的檢測Java內存馬的示例規則,它檢測使用反射調用Method.invoke()方法的惡意代碼。具體解釋為,(1)rule Java_Memory_Malware:規則名稱用于識別匹配的規則。(2)meta:author = “XXX”,description = “Detect Java memory malware”:規則的元數據,包括作者和描述信息等。(3)strings:字符串匹配部分,定義需要匹配的字符串,包括class_name,method_name和parameter_types。(4)condition: all of them:規則的匹配條件,所有的字符串都必須匹配才能觸發規則。

此外,YARA還支持自定義函數、變量和操作符,可以將多個特征組合成一個復雜的匹配規則。YARA還提供了多種修飾符,可以調整匹配的方式和結果。

1.5 整體方案

本文確立一條明晰的檢出流程,如圖1所示。首先,通過檢索主機JVM進程并對指定進程進行選擇;其次,將Agent注入指定JVM進程中對Class進行遍歷,查找到高風險類將內存中的字節碼Dump到本地;最后,引入YARA引擎對保存在本地的字節碼匹配和判定并進行結果匯總。檢出全流程可分解為開發中的重要模塊:(1)Java進程掃描模塊。用于掃描當前系統中運行的Java進程,獲取Java進程的PID和內存信息。(2)Java進程注入模塊。用于將Agent注入指定Java中。(3)Agent提取模塊。用于遍歷Class并進行高風險類的Dump。(4)YARA規則加載模塊。用于加載YARA規則文件,將規則文件中的規則編譯為可用的規則對象。(5)規則匹配模塊。用于將內存信息和YARA規則進行匹配,識別是否存在Java內存馬。(6)報告生成模塊。用于生成檢測報告,包括檢測結果、惡意代碼位置等信息。

2 程序重點模塊的實現

2.1 Java進程掃描模塊與注入模塊

可跟蹤獲取Java進程的PID,如存在多項,通過大小,命名的方式做簡單區分后將指定JVM的PID賦值給jvm_pid參數,然后將Agent.jar注入進程中去。具體實現代碼如下:

public static void attach(String jvm_pid, String agent_jar_path) throws Exception {

VirtualMachine virtualMachine = null;

VirtualMachineDescriptor virtualMachineDescriptor = null;

for (VirtualMachineDescriptor descriptor : VirtualMachine.list()) {

String pid = descriptor.id();

if (pid.equals(jvm_pid)) {

virtualMachineDescriptor = descriptor;

break;

}}

try {

if (null == virtualMachineDescriptor) {

virtualMachine = VirtualMachine.attach(jvm_pid);

} else {

virtualMachine = VirtualMachine.attach(virtualMachineDescriptor);

}

Properties targetSystemProperties = virtualMachine.getSystemProperties();

virtualMachine.loadAgent(agent_jar_path);

通過VirtualMachine類的attach(pid)方法,便可以attach到一個運行中的Java進程上,之后便可以通過loadAgent(agentJarPath)來將agent的jar包注入對應的進程,然后對應的進程會調用agentmain方法。

2.2 Agent模塊

Agent模塊的主要作用遍歷Class類并找到定義的危險類和接口。可以定義出一套黑客常調用的數據類型。如riskInterface.add(“Javax.servlet.Servlet”),遍歷相關類找到上述可疑名單并將其保存,實現代碼如下:

for (String inter : riskInterface) {

if (interfaces.contains(inter)) {

resultClasses.add(clazz);

break;}}

最后,通過ClassUtils.dumpClass(ins,resultClasses)將字節碼檢出。

2.3 YARA規則加載模塊

YARA規則加載模塊的主要作用是將YARA規則文件加載到程序中,將規則編譯為可用的規則對象。在Java中可以使用YARA-Java庫來實現YARA規則的加載和編譯。具體實現代碼如下:

import com.github.plusvic.yara.*;

public class RuleLoader {

private YaraCompiler compiler;

private YaraRules rules;

public RuleLoader(String rulePath) {

compiler = new YaraCompiler();

compiler.addRulesFile(rulePath);

rules = compiler.createRules();}

public YaraRules getRules() {

return rules;}}

上述代碼中,RuleLoader類用于加載YARA規則文件,并將規則編譯為可用的規則對象。構造函數中,通過傳入規則文件路徑來加載規則文件,使用YaraCompiler對象將規則文件編譯為可用的規則對象,然后通過getRules()方法獲取規則對象。

2.4 規則匹配模塊

在Java中可以使用YARA庫來實現YARA規則的匹配,具體實現代碼如下:

import com.github.plusvic.yara.YaraCompiler;

import com.github.plusvic.yara.YaraMatch;

public class RuleMatcher {

public static void match(resultClasses, String ruleFilePath) throws Exception {

YaraCompiler compiler = new YaraCompiler();

compiler.addFile(ruleFilePath);

compiler.load();

YaraScanner scanner = compiler.createScanner();

for (CodeInfo codeInfo : resultClasses.getCodeInfoList()) {

List matches = scanner.match(fileData);

for (YaraMatch match : matches) {

process.addMatchInfo(match.getRule().getIdentifier(), codeInfo.getClassName(), codeInfo.getMethodName(),

codeInfo.getSignature(), codeInfo.getMd5(), match.getOffset(), match.getLength());}}}}

上述代碼中,RuleMatcher類用于將內存信息和YARA規則進行匹配,識別是否存在Java內存馬。首先,使用YaraCompiler對象編譯YARA規則文件;其次,創建YaraScanner對象;最后,遍歷resultClasses對象中的CodeInfo列表,使用YaraScanner對象進行匹配,獲取匹配信息。

3 測試與結果

為了驗證所提出的基于YARA的Java內存馬檢測方案的有效性和準確性,本文設計了一組實驗,使用一組包含Java內存馬的樣本集進行測試。實驗包括以下步驟:

3.1 獲取Java內存馬樣本集

本方案從公開的樣本庫中獲取了一組Java內存馬樣本集,包括20個不同的樣本,這些樣本使用不同的混淆技術、攻擊路徑以及加載方式以此來判斷該方案的全面性。分別部署在不同的3組Java容器中,且分別部署了開源的Web系統,以模擬真實世界中的Java內存馬,以此來判定其誤報率。

3.2 設計YARA規則

本文設計了一組YARA規則,用于檢測Java內存馬中常見的特征。這些規則包括檢測Java類名、方法名、字節碼序列、代碼簽名等特征。筆者使用YARA語言編寫這些規則,并將其保存在規則文件中。

3.3 進行實驗測試

本方案使用收集的Java內存馬樣本集對檢測工具進行測試,以評估其準確性和性能。筆者記錄了檢測工具的檢測結果,包括每個樣本的匹配結果、匹配時間等信息;比較了該檢測工具與現有的Java內存馬檢測工具的性能和準確性。

3.4 實驗結果

本文提出的基于YARA的Java內存馬檢測方法具有較高的準確性和良好的性能,如表1所示。在測試集中,該檢測工具成功檢測出了所有的Java內存馬樣本,同時沒有發生誤報。相對現有的Java內存馬檢測工具來說,具有更高的實用性和應用價值。

4 結語

本文提出了一種基于YARA的Java內存馬檢測方法,該方法可以在運行時對Java進程中的內存信息進行掃描,并使用預定義的YARA規則進行匹配,以檢測是否存在Java內存馬。實驗結果顯示,該方法具有較高的準確性、良好的性能和可擴展性。未來筆者將進一步改進方法提高準確性和性能,并將其應用于實際的惡意代碼檢測和安全防御中。未來工作的方向包括但不限于以下幾個方面。(1)優化算法性能:盡管采用多種技術手段優化算法性能,但仍有可能出現性能瓶頸。因此,筆者將繼續研究如何進一步提高算法性能,以確保檢測系統的高效穩定運行。(2)支持更多的內存馬類型:目前,該檢測系統只能檢測到Java內存馬攻擊。但隨著網絡攻擊技術的不斷發展和演進,還有許多其他類型的內存馬攻擊。因此,筆者將研究如何支持更多類型的內存馬攻擊,并不斷更新和完善檢測系統。(3)實現自動化檢測:筆者希望能夠在不影響程序性能的同時實現一套自動化檢測系統,能夠自動檢測Java應用程序中的內存馬攻擊,并實現實時監測和告警。這將使得Java應用程序的安全檢測更加便捷和高效。

總之,Java內存馬檢測是一個充滿挑戰的領域,需要不斷地研究和探索,以實現更加高效、準確、穩定的檢測方案。相信在不久的將來,Java內存馬檢測技術將得到進一步的發展和完善,為Java應用程序的安全提供更加全面的保障。

參考文獻

[1]陳強.精通Java開發技術[M].北京:清華大學出版社,2014.

[2]孟正,梅瑞,張濤,等.Linux下基于SVM分類器的WebShell檢測方法研究[J].信息網絡安全,2014(5):5-9.

[3]朱魏魏,胡勇.基于NN-SVM的Webshell檢測方法[J].通信與信息技術,2015(2):55-58.

(編輯 姚 鑫)

Abstract: With the development of the Internet, malware has gradually become an important factor threatening network security. As a type of memory-resident malware, Java memory-resident malware not only has high concealment and ease of propagation, but also can use some advanced features of Java to implement more complex attack behaviors, posing greater threats to network security. This paper proposes a YARA-based method for detecting Java memory-resident malware, which defines some feature strings and regular expression rules to detect and locate malicious code in Java memory, and verifies the method through experiments. The experimental results show that the method can effectively detect Java memory-resident malware with high detection accuracy and low false positive rate.

Key words: Java memory-resident malware; YARA; malware; detection method

主站蜘蛛池模板: 日韩大片免费观看视频播放| 国产欧美精品一区二区| 亚洲av日韩综合一区尤物| 秋霞一区二区三区| 日韩色图在线观看| 国产激情无码一区二区APP| 男人天堂亚洲天堂| 白丝美女办公室高潮喷水视频| 丰满人妻一区二区三区视频| 欧美伊人色综合久久天天| 无码日韩视频| 亚洲an第二区国产精品| аv天堂最新中文在线| 99视频精品全国免费品| 国产精品久久久久久久伊一| 欧美成人免费午夜全| 国产99久久亚洲综合精品西瓜tv| 精品无码国产一区二区三区AV| 中日无码在线观看| 国产日韩精品欧美一区灰| 亚洲成a人在线观看| 亚洲精品手机在线| 日韩在线2020专区| 亚洲乱伦视频| 亚洲成人一区二区| 色婷婷亚洲综合五月| 亚洲乱码精品久久久久..| 毛片久久久| 国产激情在线视频| 亚洲va在线观看| 欧美 国产 人人视频| 日韩免费中文字幕| 国产成人永久免费视频| 精品免费在线视频| 亚洲欧美成人在线视频| 青青青亚洲精品国产| 露脸真实国语乱在线观看| 玩两个丰满老熟女久久网| 欧美三級片黃色三級片黃色1| 2021国产乱人伦在线播放| 九九这里只有精品视频| 国产一区三区二区中文在线| 天堂亚洲网| 99久久精品无码专区免费| 精品乱码久久久久久久| 国产91精品久久| 中文字幕一区二区人妻电影| 天天摸夜夜操| 香蕉色综合| 人妖无码第一页| 91无码人妻精品一区二区蜜桃| 亚国产欧美在线人成| a在线观看免费| 高h视频在线| 久久96热在精品国产高清| 久操线在视频在线观看| 亚洲成年人网| 曰韩免费无码AV一区二区| 欧美精品啪啪| 青青操国产| 亚洲Av综合日韩精品久久久| 亚洲黄色视频在线观看一区| 亚洲国产天堂久久综合226114| 亚洲欧美天堂网| 色偷偷av男人的天堂不卡| 国产精品熟女亚洲AV麻豆| 华人在线亚洲欧美精品| 成人精品区| 久久夜色精品国产嚕嚕亚洲av| 久久婷婷五月综合97色| 青青青亚洲精品国产| 亚洲男人的天堂久久香蕉| 欧美激情一区二区三区成人| 一区二区理伦视频| 国产午夜无码专区喷水| 蝴蝶伊人久久中文娱乐网| 国产呦视频免费视频在线观看| 波多野一区| 精品福利国产| 97精品伊人久久大香线蕉| 国产精品美乳| 国产免费久久精品99re不卡|