資料介紹
軟件簡(jiǎn)介
FindShell 是一個(gè)自動(dòng)的內存馬查殺工具,可以用于普通內存馬和Java Agent
內存馬。
尤其針對難以查殺的Java Agent
型內存馬,例如冰蝎等主流工具的內存馬都是Java Agent
主要分為以下四步:
-
利用
JDK
提供的sa-jdi
的API
基于黑名單dump
存在于JVM
中真正的字節碼 -
這種字節碼在很多情況下是非法的,所以我修改了
ASM
源碼以分析非法字節碼 -
基于
ASM
做普通的分析和模擬棧幀做深入的分析 -
如果發(fā)現內存馬將會(huì )嘗試自動(dòng)修復目標(利用
Java Agent
動(dòng)態(tài)恢復原始字節碼)
檢測
基本檢測:java -jar FindShell.jar --pid [目標JVM的PID]
這個(gè)pid
的獲取方式可以通過(guò)jps
命令找到你需要的目標JVM
的pid
這種情況下默認必檢測的類(lèi)有以下四個(gè)(最常見(jiàn)的Java Agent
內存馬出現的地方)
類(lèi)名 | 方法名 |
---|---|
javax/servlet/http/HttpServlet | service |
org/apache/catalina/core/ApplicationFilterChain | doFilter |
org/springframework/web/servlet/DispatcherServlet | doService |
org/apache/tomcat/websocket/server/WsFilter | doFilter |
并對以下的黑名單類(lèi)進(jìn)行檢測(如果類(lèi)名出現關(guān)鍵字則dump
并分析該類(lèi)字節碼)
keyword.add("shell"); keyword.add("memshell"); keyword.add("agentshell"); keyword.add("exploit"); keyword.add("payload"); keyword.add("rebeyond"); keyword.add("metasploit");
注意:
-
修改
org.sec.Constant
代碼可以自定義黑名單和關(guān)鍵字 -
加入
--debug
參數保留從JVM
中dump
出的字節碼供自行分析 -
并不是所有類(lèi)的字節碼都可以
dump
成功,但常見(jiàn)的這些類(lèi)測試中沒(méi)問(wèn)題
修復
目前僅做了Java Agent
內存馬的自動(dòng)修復,支持最常見(jiàn)的HttpServlet
和ApplicationFilterChain
檢測和修復:java -jar FindShell.jar --pid [PID] --repair
根目錄存在一個(gè)RepairAgent.jar
文件,這不屬于該項目,但我將代碼放在org.sec.repair
包中供參考
注意:修復手段僅靶機測試成功,在真實(shí)環(huán)境中使用請慎重
原理
-
為什么不直接用
Java Agent
或Alibaba Arthas
工具對JVM
當前字節碼進(jìn)行dump
Java Agent
內存馬是調用redefineClass
方法對字節碼進(jìn)行修改的。而調用retransformClass
方法的時(shí)候參數中的字節碼并不是調用redefineClass
后被修改的類(lèi)的字節碼。對于冰蝎來(lái)講,根本無(wú)法獲取被冰蝎修改后類(lèi)的字節碼。我們自己寫(xiě)Java Agent
清除內存馬的時(shí)候,同樣也是無(wú)法獲取到被redefineClass
修改后的字節碼,只能獲取到被retransformClass
修改后的字節碼。通過(guò)Javaassist
等ASM
工具獲取到類(lèi)的字節碼,也只是讀取磁盤(pán)上響應類(lèi)的字節碼,而不是JVM
中的字節碼
-
那么怎樣獲得存在于
JVM
中真正的字節碼
之前有寬字節安全的師傅提到利用sa-jdi
工具對真正的當前字節碼進(jìn)行dump
后反編譯結合人工分析,該工具也是基于JDK
自帶的sa-jdi
庫實(shí)現的,不過(guò)加入了一些過(guò)濾的選項
- 什么情況下這樣的字節碼為什么是非法的
當目標類(lèi)存在lambda
表達式的時(shí)候會(huì )導致非法字節碼,具體可以參考我的文章
- 修改了哪些源碼以解析非法字節碼
參考連接:修改源碼說(shuō)明
- 為什么要結合普通字節碼分析和模擬棧幀分析兩種呢
因為Runtime.exec
這種調用很不常見(jiàn)且過(guò)程簡(jiǎn)單,用普通的字節碼分析即可解決。但是冰蝎的反射調用defineClass
并反射invoke
以實(shí)現代碼執行效果的方式,過(guò)程比較復雜,且反射調用是程序中的常見(jiàn)功能,簡(jiǎn)單的分析會(huì )導致誤報
- 什么是模擬棧幀分析
參考文章:詳解Java自動(dòng)代碼審計工具實(shí)現?和?基于污點(diǎn)分析的JSP Webshell檢測
免責聲明
工具僅用于安全研究以,由于使用該工具造成的任何后果使用者負責
- EDA工具CADENCE原理圖與PCB設計說(shuō)明 50次下載
- 基于NVM和DRAN的混合內存系統設計方案 12次下載
- 基于內存關(guān)聯(lián)分析的內存預拷貝遷移策略 14次下載
- 一種基于內存關(guān)聯(lián)分析的預拷貝遷移策略 9次下載
- 基于機器學(xué)習的內存泄漏測試腳本預測方法 26次下載
- 液晶電視升級工具mboot使用及強制升級方法 11次下載
- 基于定理證明的內存安全驗證工具算法綜述 5次下載
- 16位CRC驗證碼生成VI工具下載 50次下載
- 內存模塊說(shuō)明 5次下載
- 如何在虛擬環(huán)境下進(jìn)行病毒的查殺詳細資料概述 13次下載
- 騰訊內部內存泄漏分析工具簡(jiǎn)析 0次下載
- 熊貓燒香病毒怎樣進(jìn)行手動(dòng)查殺 1次下載
- 360殺毒軟件v1.2正式版_永久免費 0次下載
- ie首頁(yè)修復工具 21次下載
- 內存芯片測試軟件工具 37次下載
- 用于分析可執行程序和內存轉儲的命令行工具介紹 591次閱讀
- 一款解決大文件內存溢出的 Excel 處理工具 1036次閱讀
- valgrind檢測內存問(wèn)題的原理 1020次閱讀
- 初識內存取證-volatility與Easy_dump 1720次閱讀
- 基于智能狀態(tài)和源代碼插樁的C程序內存安全性動(dòng)態(tài)分析 1024次閱讀
- Memray工具簡(jiǎn)介及安裝與使用方法 2136次閱讀
- 深入了解虛擬內存和內存分頁(yè)的概念 3522次閱讀
- nonecc內存和ecc內存的區別 1.2w次閱讀
- 電腦內存有什么作用?內存適用類(lèi)型有哪些 3681次閱讀
- 新規劃PCI核查工具的使用方法和應用事例 2435次閱讀
- Linux內存管理的細節虛擬內存和內存分頁(yè)管理資料說(shuō)明 3805次閱讀
- 了解虛擬內存和內存分頁(yè)的概念 6716次閱讀
- 共享內存IPC原理,Linux進(jìn)程間如何共享內存? 8284次閱讀
- 兩種常見(jiàn)的內存管理方法:堆和內存池 1.3w次閱讀
- Android內存管理機制與分析工具 4297次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數據手冊
- 1.06 MB | 532次下載 | 免費
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費
- 3TC358743XBG評估板參考手冊
- 1.36 MB | 330次下載 | 免費
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費
- 5元宇宙深度解析—未來(lái)的未來(lái)-風(fēng)口還是泡沫
- 6.40 MB | 227次下載 | 免費
- 6迪文DGUS開(kāi)發(fā)指南
- 31.67 MB | 194次下載 | 免費
- 7元宇宙底層硬件系列報告
- 13.42 MB | 182次下載 | 免費
- 8FP5207XR-G1中文應用手冊
- 1.09 MB | 178次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 2555集成電路應用800例(新編版)
- 0.00 MB | 33566次下載 | 免費
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費
- 4開(kāi)關(guān)電源設計實(shí)例指南
- 未知 | 21549次下載 | 免費
- 5電氣工程師手冊免費下載(新編第二版pdf電子書(shū))
- 0.00 MB | 15349次下載 | 免費
- 6數字電路基礎pdf(下載)
- 未知 | 13750次下載 | 免費
- 7電子制作實(shí)例集錦 下載
- 未知 | 8113次下載 | 免費
- 8《LED驅動(dòng)電路設計》 溫德?tīng)栔?zhù)
- 0.00 MB | 6656次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費
- 2protel99se軟件下載(可英文版轉中文版)
- 78.1 MB | 537798次下載 | 免費
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費
- 6電路仿真軟件multisim 10.0免費下載
- 340992 | 191187次下載 | 免費
- 7十天學(xué)會(huì )AVR單片機與C語(yǔ)言視頻教程 下載
- 158M | 183279次下載 | 免費
- 8proe5.0野火版下載(中文版免費下載)
- 未知 | 138040次下載 | 免費
評論
查看更多