---
# System prepended metadata

title: Understanding Linux Malware
tags: [Servey]

---


# 前言

:::success
一篇作為Understanding Linux Malware的簡單筆記

[文章連結](https://ieeexplore.ieee.org/document/8418602)

由於這份文件有五個章節，所以分為5章作為筆記
- [x] Introduction
- [x] Challenges
- [x] Analysis Infrastructure
- [ ] Dataset
- [ ] Under the Hood
:::

# Introduction

:::info
主要是在介紹為何有這份研究產生
起因是由於大家主要在研究Windows的惡意軟體居多 (因為Windows在市場上佔的比例太重)，但由於物聯網以及嵌入式系統的崛起，而這些設備的架構與傳統電腦不同，導致開發者較偏好Linux系統，而對於Linux的惡意軟體未有一個完整且系統性的分析，因此產生這篇研究。

再來介紹本篇研究的目的在於大量且系統性分析Linux的惡意軟體，以及說明為何只分析在x86與ARM上面的惡意軟體是遠遠不夠的。作者透過一萬多個樣本去分析以Linux為基礎所設計的惡意軟體，雖然這些軟體的豐富性不如Windows，但仍然可以做出許多行為。

最後作者歸納出一些本篇研究的貢獻

1. 設計並且實作出一些工具去分析Linux惡意軟體，且討論如何克服不同種類的惡意檔案。
2. 在10548份Linux Malware的樣本進行分析
3. 討論現實中如何透過Linux特有的底層技術去製作並使用這些惡意軟體
:::

# Challenge

:::warning
本篇作者介紹了他們在研究時所遇到的挑戰。
:::


:::info

A. Target Diversity
作者在這裡先介紹了會遇到的問題，大部分人主要會覺得的問題是遇到不同的CPU架構，但這僅僅只是其中一個小問題。主要的問題是不同的作業系統，會遇到不同的相依性問題。而由於Linux系統會存在在很多不同的系統中，所以要如何分析問題就會變得更加複雜。實際上，如果分析的目標沒有適當的資訊，那麼很難使用正確的環境去測試。

Computer Architectures

在這裡作者列出了他引用出的文章內的數據，該篇研究指出他們引用了三種不同的架構，MIPS 32-bit、ARM 32-bit、x86 32-bit，並且這篇研究內的Linux Malware的占比卻遠遠不足本篇幅度，這三個架構所包含的測試資料僅佔大約32%。最後，作者也認為部分架構的CPU太過廣泛導致測試資料還有待加強。

Loaders and Libraries

作者提及Libraries以及Loaders對於研究的重要性，因為在某些情況下如果這些東西在環境中有遺漏或是根本不存在就會導致待測試的軟體不能被執行。

Operating System

主要是針對於Linux內現有的Libraries。值得注意的是，如何區分Linux與其他作業系統的ELF程序是有挑戰性的，像是FreeBSD或Android。而在作者文中有提及到有一個惡意軟體就利用了這一技巧。由於ELF的檔案標頭有包含"OS/ABI"等字樣，但Linux Kernel似乎會忽略該字樣，導致通用的字樣在FreeBSD等系統上的文件也可以被Linux執行。實際上，Linux系統與FreeBSD的系統參數互相不匹配，這也使得在靜態連結的程序很容易導致一點差錯而崩潰。對於這份研究最大的影響就是編譯Linux的惡意文件較為困難且不保證所有的Linux系統都可以運行。

B. Static Linking

靜態連結的二進制檔案可以提供以下幾個優點

移植性高
逆向工程較為困難

有可能會因為Kernel的ABI導致預期不同而崩潰

C. Analysis Environment

作者需要有一個理想的沙盒，並且得考慮應該要給惡意軟體怎樣的權限。通常來說，專門設計給惡意軟體所分析的沙盒只會給予未有權限的一般用戶，如果給予到管理員權限可能會導致沙盒被竄改，使得結果的觀察變為更加複雜與困難。除此之外，Windows的樣本也不太需要給予超級用戶的權限。

由於Linux的惡意軟體很常需要root權限才可以被執行，導致這些樣本很難被辨識到，在第三章中也會說明如何解決。


D. Lack of Previous Studies

作者表示這是他所知第一次對於Linux惡意軟體的全方位分析，由於目前的數據不足導致很多問題的產生。包含流程設計、資料蒐集、分析工具的設計以及需要去注意哪些面向等...。
:::

# Analysis Infrastructure
:::warning
由於開頭所提及之事，作者表示對於流程的設計與文件的分析很像一種在試錯的過程，他們會將文件一個一個分析出來，並且若某些問題會影響文件的分析時，就會在引入新的工具去解決問題。
:::

:::info
A. Data Collection

樣本的取得來自2016/11~2017/11 VirusTotal網站上的ELF file，大約每天200筆，選擇的目的在於減少非Linux的二進制樣本。

B. File & Metadata Analysis

在這裡作者說明他們的第一步是數據的分析，包含過濾不必要之文件以及分析異常結構。

C. Static Analysis

動態分析包含兩步驟的作業，二進制代碼分析和打包檢測。
二進制代碼分析：分析程式的函數數量、函數大小和循環複雜度、總體覆蓋率、重疊指令和其他組合語言技巧的存在、系統調用的直接調用，以及直接/間接分支指令的數量。
打包檢測：ELF 標頭和二進制代碼分析中提取的信息，來識別可能打包的應用程序(Chapter V-E)。



D. Dynamic Analysis

工具準備：五組沙盒&一組虛擬機。沙盒分別為

KVM-based virtualized sandbox with hardware support for x86 and x86-64
QEMU-based emulated sandboxes for ARM 32-bit little-endian, MIPS 32-bit big-endian, and PowerPC 32-bit

程式修復：修補SystemTap支持ARM跟MIPS架構的ABI

在分析結束後，會得到一份包含完整系統調用和用戶空間函數的文件，並且取得對於沙盒有用的訊息。這個分析可以辨識缺少的文件以及告訴作者是否測試其用戶權限或試圖執行因權限不足而失敗的操作，並且重新以不同權限執行。

最後，他們有給惡意軟體部分網路權限，但會監控網路避免濫用。
:::

# Dataset
# Under the Hood