Menu
快讀
  • 旅遊
  • 生活
    • 美食
    • 寵物
    • 養生
    • 親子
  • 娛樂
    • 動漫
  • 時尚
  • 社會
  • 探索
  • 故事
  • 科技
  • 軍事
  • 国际
快讀

針對一款采用GO語言編寫的新型Linux勒索軟件的分析

2020 年 1 月 7 日 黑客视界
針對一款采用GO語言編寫的新型Linux勒索軟件的分析

在過去的兩個月裏,我一直在研究采用GO語言編寫的惡意軟件。

Go,又稱Golang,是谷歌公司開發的一種編程語言,如今正在被越來越多的惡意軟件開發者所使用的。

在這篇文章中,我就將針對一款采用GO語言編寫的新型Linux勒索軟件進行分析。

GO二進制文件概述

這裏分析的樣本,是一個被剝離了編譯和調試信息的ELF可執行文件,這使得逆向工程變得困難。值得慶幸的是,一款補救工具(REDRESS: https://go-re.tk/redress/)可以爲我們提供幫助。

下面是使用參數“-src”分析此樣本的輸出:

針對一款采用GO語言編寫的新型Linux勒索軟件的分析

圖1.惡意軟件的源代碼

通過圖1,我們可以看出該惡意軟件由三個Go文件組成。

此外,我們還可以看到它所有的函數以及它們的代碼行號。根據一些函數的名稱,我們大致就能判定,它應該是一種勒索軟件。

源代碼僅有300多行,說明這款勒索軟件並不複雜,可能還處于初始開發階段。

接下來,就讓我們在調試器中開始動態調試吧。

在這裏,我使用的是Radare2(Radare2: https://rada.re/r/)。這是因爲對于分析被剝離了的Go二進制文件而言,它比GDB更合適。

Go二進制文件的動態分析

我在Radare2中發出命令“aaa”以執行自動分析,在圖2中,我們可以看到Radare2很好地還原並識別了函數名和符號名。

針對一款采用GO語言編寫的新型Linux勒索軟件的分析

圖2.使用Radare2還原的函數名稱和符號

如你所見,函數init()在主函數之前執行,函數check()在函數init()中調用。

在函數check()中,勒索軟件首先會通過向hxxps://ipapi.co/json/發送一個http請求來獲取受感染主機的位置信息,目的是避免感染一些特定國家的用戶,如白俄羅斯(BY)、俄羅斯(RU)和烏克蘭(UA)。

針對一款采用GO語言編寫的新型Linux勒索軟件的分析

圖3.過濾掉白俄羅斯(BY)、俄羅斯(RU)和烏克蘭(UA)

在main()函數中,它將首先刪除Go二進制文件,然後調用函數randSeq()生成一個隨機AES密鑰,其大小爲0x20字節,如下圖所示:

針對一款采用GO語言編寫的新型Linux勒索軟件的分析

圖4.生成隨機AES密鑰

接下來,它將調用函數makesecret(),目的是使用以二進制形式硬編碼的RSA公鑰來加密AES密鑰。在這個函數中,它通過調用函數EncryptPKCS1v15以使用RSA加密和PKCS#1 v1.5中的填充方案對給定的AES密鑰進行加密。

針對一款采用GO語言編寫的新型Linux勒索軟件的分析

圖5. Go二進制文件中的硬編碼RSA公鑰

使用RSA加密後的數據如下:

針對一款采用GO語言編寫的新型Linux勒索軟件的分析

圖6.使用RSA加密後的AES密鑰

接下來,它將在Golang包編碼/base64中調用函數EncodeToString,以使用base64算法對先前加密的數據進行編碼。

針對一款采用GO語言編寫的新型Linux勒索軟件的分析

圖7.使用Base64編碼的AES密鑰

然後,它將爲解密的README文件(贖金票據)形成一個緩沖區,如圖8所示:

針對一款采用GO語言編寫的新型Linux勒索軟件的分析

圖8.解密的README文件的緩沖區

我們可以看到,加密的AES密鑰以Base64編碼的形式被寫入了解密的README文件中。

在加密文件之前,它還會通過發出命令“service stop [pname]”或“systemctl stop [pname]”來殺死以下進程。

針對一款采用GO語言編寫的新型Linux勒索軟件的分析

圖9.目標服務

當它嘗試停止apache2.service時,會彈出一個標題爲“Authentication Required(需要身份驗證)”的對話框,提示用戶輸入系統密碼以完成此操作。

針對一款采用GO語言編寫的新型Linux勒索軟件的分析

圖10. apache2.service身份驗證對話框

最後,它將通過在Golang包“path/filepath”中調用函數Walk(根字符串,walkFn WalkFunc)來遍曆根目錄“/”,然後開始加密文件。

針對一款采用GO語言編寫的新型Linux勒索軟件的分析

圖11.遍曆根目錄並加密文件

值得一提的是,該勒索軟件還包含一份加密目錄黑名單,目的是避免加密這些目錄下面的文件。

針對一款采用GO語言編寫的新型Linux勒索軟件的分析

圖12.加密目錄黑名單

加密算法使用的是AES-256-CFB,被加密文件將被附加擴展名“.encrypted”,README文件如圖13所示:

針對一款采用GO語言編寫的新型Linux勒索軟件的分析

圖13. README文件

用于執行加密的函數是EncFile(),它首先會獲取目標文件的大小。如果文件小于0x986880(1,000,000)字節,它將使用AES-256-CFB算法加密所有文件數據。否則,它將讀取數據的前0x986880(1,000,000)字節並將其加密,然後將原始文件的剩余數據複制到加密後文件的末尾。

針對一款采用GO語言編寫的新型Linux勒索軟件的分析

圖14.檢查目標文件的大小

針對一款采用GO語言編寫的新型Linux勒索軟件的分析

圖15.大于0x989680字節的文件經過加密後的數據

結論

通過上述分析,我們可以看到這種勒索軟件並不複雜,可能還處于初始開發階段。

但是,我們應該意識到,Go語言正在被用來開發越來越多的惡意軟件,各大殺毒軟件廠商更是有必要注意這一點。

相關文章:

  • 🇸🇬新加坡烏節路美食推薦大合集 超詳細介紹😋😏
  • 🇸🇬Singapore 🇸🇬Day1⃣️
科技

發佈留言 取消回覆

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

©2025 快讀 | 服務協議 | DMCA | 聯繫我們