安基網 首頁 資訊 安全報 查看內容

又見新型Linux勒索軟件,采用GO語言編寫

2019-10-20 10:14| 投稿: xiaotiger |來自: 互聯網


免責聲明:本站系公益性非盈利IT技術普及網,本文由投稿者轉載自互聯網的公開文章,文末均已注明出處,其內容和圖片版權歸原網站或作者所有,文中所述不代表本站觀點,若有無意侵權或轉載不當之處請從網站右下角聯系我們處理,謝謝合作!

摘要: 在過去的兩個月里,我一直在研究采用GO語言編寫的惡意軟件。Go,又稱Golang,是谷歌公司開發的一種編程語言,如今正在被越來越多的惡意軟件開發者所使用的。在這篇文章中,我就將針對一款采用GO語言編寫的新型Linux勒索軟件進行分析。GO二進制文件概述這里分析的樣本,是一個被剝離了編譯和調試信息的E ...
在過去的兩個月里,我一直在研究采用GO語言編寫的惡意軟件。

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

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

GO二進制文件概述

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

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

圖1.惡意軟件的源代碼

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

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

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

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

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

Go二進制文件的動態分析

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

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

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

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

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

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

圖4.生成隨機AES密鑰

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

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

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

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

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

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

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

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

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

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

圖9.目標服務

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

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

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

圖11.遍歷根目錄并加密文件

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

圖12.加密目錄黑名單

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

圖13. README文件

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

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

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

結論

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

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



小編推薦:欲學習電腦技術、系統維護、網絡管理、編程開發和安全攻防等高端IT技術,請 點擊這里 注冊賬號,公開課頻道價值萬元IT培訓教程免費學,讓您少走彎路、事半功倍,好工作升職加薪!

本文出自:https://www.toutiao.com/a6745724693107442189/

免責聲明:本站系公益性非盈利IT技術普及網,本文由投稿者轉載自互聯網的公開文章,文末均已注明出處,其內容和圖片版權歸原網站或作者所有,文中所述不代表本站觀點,若有無意侵權或轉載不當之處請從網站右下角聯系我們處理,謝謝合作!


鮮花

握手

雷人

路過

雞蛋

相關閱讀

最新評論

 最新
返回頂部
湖北快3 购买技巧