2018年oakland論文:理解linux惡意軟件
論文地址:http://www.s3.eurecom.fr/~yanick/publications/2018_oakland_linuxmalware.pdf
introduction
論文提出了linux而已軟件長期沒有被關注,尤其是學術界。
早期的幾個linux下惡意軟件的事件有VirusTotal,一些人的博客,以及對Mirai殭屍網絡的一篇分析文章,在原文的引文234中。
這篇文章作爲第一個全面分析linux下惡意軟件的文章,對10548個linux下的惡意軟件進行了長達一年的分析。這篇文章的貢獻在於
1、記錄了設計用來支持分析Linux惡意軟件的幾個工具的設計和實現,並討論了處理這種特殊類型的惡意文件時所涉及的挑戰
2、在一年內首次對10548個Linux惡意軟件樣本進行了大規模的實證研究。
3、揭示並討論了現實世界中惡意軟件使用的一些低層特定於linux的技術,並提供了當前使用情況的詳細統計數據。
挑戰
目標多樣性:目的設備有很多種,比如智能電視,智能攝像頭等待一些IOT設備。而這些設備分析起來都比較複雜
1、架構多樣性:linux支持多種架構,所以要全面分析linux的惡意軟件還需要做多種架構的支持
2、加載器和庫:ELF允許自定義加載器和庫,不同的環境使用的加載器和庫不同,可能會直接造成程序不可執行
3、操作系統:由於ELF也是支持多種操作系統,很難區分開這寫ELF是爲那種系統編寫的,因爲其他系統中甚至連繫統調用號否不一樣
靜態鏈接:會導致庫函數被編譯進可執行文件中,導致二進制分析變得很困難
分析環境:一些嵌入式設備上,惡意軟件假定以管理員權限運行,而在分析惡意軟件時,賦予而已軟件root權限,則會賦予它更改沙箱的能力
缺乏相關工作:這是第一個全面分析惡意軟件的工作,如何分析有很多的問題
分析流程
數據蒐集:從VirusTotal獲得樣本
文件和元數據分析:直接分析ELF文件的格式等信息
靜態分析:利用IDA分析加殼等信息
動態分析:kvm加qemu虛擬機運行,利用systemtap等共計收集運行時的一些信息
行爲分析
1、ELF頭操縱
文章指出而已軟件經常通過更改ELF頭
異常的ELF頭,爲什麼需要更改這些信息
1、刪除節信息:可以執行
2、更改可執行文件所在系統:報出提示但是還是可以執行
無效ELF
1、節表異常
2、重疊段
對用戶程序的影響
IDA對異常ELF的處理最好,readelf、gdb等都不夠好
2、持久性
子系統初始化:/stc/rcX.d下面這些腳本,rc.local腳本等,systemv intit的配置更改
cron進程:cron是Unix系統中基於時間的作業調度程序
文件替換和感染:替換掉關鍵地方的文件,感染關鍵文件
修改用戶主目錄中的配置文件:比如bashrc等
3、欺騙
使用一些特定的名字,比如正常軟件的名字,或是每次執行都更改已從進程的名字
4、權限獲取
隱藏自身痕跡:刪除/var/log文件,刪除/var/log/wtmp(包含登錄信息)
系統漏洞提權
linux模塊
5、打包和多態
UPX
自定義打包器
6、進程交互
多進程DDOS攻擊
使用shell命令,實現持久性和刪除歷史等
進程注入,向運行進程注入代碼來改變進程行爲,或是竊取一些進程信息,3種方式實現進程跟蹤
1、ptrace,子進程執行,執行ptrace,然後父進程也執行
2、ptrace加PID跟蹤目標進程,然後向/proc/<target_pid>/mem中寫值
3、執行process_vm_writev調用。process_vm_writev調用是2012年引入的一個新的系統調用,使用內核3.2在兩個進程的地址空間之間直接傳輸數據。
7、信息獲取
proc文件系統和sys文件系統
/etc目錄下的配置文件
8、逃避
沙盒檢測:蒐集系統中的一些信息來看是不是有Wmware,qemu等信息
進程枚舉:測試機器是否被感染,或是選擇進程去殺死
ptrace反調試
拖延代碼:只是用來進行網絡通信