用于分析Linux惡意軟件的沙箱

來源:https://github.com/monnappa22/Limon

Limon是一個用python編寫開發(fā)沙箱的研究項目,它自動收集、分析和報告Linux惡意軟件的運行時指示器。通過使用開源工具執(zhí)行靜態(tài)、動態(tài)和內存分析,可以在執(zhí)行之前、執(zhí)行期間和執(zhí)行之后(事后分析)檢查Linux惡意軟件。Limon在受控環(huán)境中分析惡意軟件,監(jiān)控其活動和子進程,以確定惡意軟件的性質和目的。它確定惡意軟件的進程活動,與文件系統(tǒng)、網(wǎng)絡的交互,它還執(zhí)行內存分析,并存儲分析后的工件供以后分析。

一、Limon的工作原理

Limon以惡意軟件樣本作為輸入,執(zhí)行靜態(tài)分析、動態(tài)分析、內存分析并報告結果。

二、Limon使用的工具

Limon依賴于各種開源工具來執(zhí)行靜態(tài)、動態(tài)和內存分析,這意味著需要安裝這些工具(有些工具需要安裝在主機上,有些工具需要安裝在分析機中,有些工具同時安裝在分析機和分析機中)才能讓Limon工作。其中一些工具是在默認的Linux安裝中安裝的。下面是Limon所依賴的工具列表:

? YARA and YARA-python (https://github.com/plusvic/yara/releases)

? VirusTotal Public API

(https://www.virustotal.com/en/documentation/public-api/)

? ssdeep (http://ssdeep.sourceforge.net/)

? strings utility (http://linux.die.net/man/1/strings)

? ldd (http://linux.die.net/man/1/ldd)

? readelf (https://sourceware.org/binutils/docs/binutils/readelf.html)

? Inetsim (http://www.inetsim.org/downloads.html)

? Tcpdump (http://www.tcpdump.org/)

? strace (http://linux.die.net/man/1/strace)

? Sysdig (http://www.sysdig.org)

? Volatility memory forensics framework

(http://www.volatilityfoundation.org/#!releases/component_7140)

三、建立Limon

要使Limon工作,需要適當?shù)沫h(huán)境設置(這是一次性設置)。Limon應該適用于任何版本的Ubuntu(或其他Linux),但是它是在下面提到的這些版本的Ubuntu Linux上測試的。本節(jié)給出一個示例設置(ip地址可以不同,設置中使用了以下ip地址和網(wǎng)絡配置)

該設置由一臺運行Ubuntu 15.04(64位)的主機和一臺運行Ubuntu 12.04或14.04(64位版本)的VMware Workstation組成,分析機在VMware Workstation中以bridge模式運行。分析機是運行惡意軟件的地方,主機和分析機都以根權限運行。主機的ip地址設置為192.168.1.3和分析機器的ip地址設置為192.168.1.150和網(wǎng)關地址設置為192.168.1.3(主機的ip地址)和dns服務器地址設置為4.2.2.2。這種設置的目的是確保當惡意軟件在分析機器中運行時,它的所有網(wǎng)絡流量都經過主機,而主機將捕獲數(shù)據(jù)包。

1)在主機上配置和安裝工具

本節(jié)主要討論需要安裝在主機上的工具。安裝之后請注意所有這些工具的路徑,稍后需要更新Limon中的變量,以便Limon知道從何處調用這些工具。大多數(shù)時候,Linux上的“which”命令可以用來確定工具的路徑。例如:如果您想確定“l(fā)s”實用程序的路徑,可以使用下面的命令:

# which ls

a) VMware Workstation—在主機上安裝用于Linux的VMware Workstation(在本例中,VMware Workstation 10.0.2安裝在運行Ubuntu 15.04的主機上)。安裝VMware工作站后,在VMware工作站中安裝Ubuntu 12.04或Ubuntu 14.04,這將是您的分析機器,Limon將在其中運行惡意軟件樣本。

b) yara 1.7.2和yara - python

Limon依賴于YARA來檢測包裝程序,并使用YARA規(guī)則來確定惡意軟件的能力。從下面的鏈接下載YARA

https://github.com/plusvic/yara/releases/tag/v1.7.2

安裝YARA如下面的鏈接所述:

http://yara.readthedocs.org/en/v3.4.0/gettingstarted.html#compilingand-installing-yara

要安裝YARA-python,在下載(.zip或.tar.gz)文件之后,提取它并按照yarapython目錄中的README文件中提到的步驟進行。

c) Ssdeep - Limon使用Ssdeep進行模糊哈希。你可以通過執(zhí)行以下命令來安裝ssdeep:

# apt-get install ssdeep

d) Sysdig - Limon依賴Sysdig進行系統(tǒng)事件監(jiān)控,您可以按照下面鏈接中提到的基本安裝或高級安裝過程安裝Sysdig。在我的例子中,我必須遵循基于debian的高級安裝:

http://www.sysdig.org/install/

e) INetSim—Limon依賴INetSim在沙箱模式下運行時模擬所有的服務。按照下面的步驟安裝inetsim:

http://www.inetsim.org/documentation.html

f)Volatility- Limon使用Volatility高級內存取證框架進行內存分析。

Volatility取決于各種python模塊,按照下面鏈接中提到的步驟安裝所有依賴項:

https://github.com/volatilityfoundation/volatility/wiki/Installation#dependencies

安裝了所有依賴項后,請從下面的鏈接下載Volatility 2.4

http://downloads.volatilityfoundation.org/releases/2.4/volatility-2.4.tar.gz

提取它并記錄到vol.py的路徑

g)創(chuàng)建一個目錄來存儲YARA規(guī)則——創(chuàng)建一個目錄/root/yara_rules。此目錄包含將由Limon使用的yara規(guī)則。在我的例子中,這個目錄包含兩個文件打包器。yara(用于封隔器檢測的yara規(guī)則)和功能。yara (yara規(guī)則檢測惡意軟件的功能,如IRC功能)。您可以在這樣的文件中添加自己的規(guī)則(請注意到這些文件的路徑)

h)創(chuàng)建一個目錄來存儲分析結果——創(chuàng)建一個目錄/root/linux_reports來存儲分析結果。這是最終報告、pcap和其他工件在分析惡意軟件后存儲的目錄。

2)在分析機上配置和安裝工具

本節(jié)主要討論需要安裝在分析機器上的工具。安裝之后請注意所有這些工具的路徑,稍后需要更新Limon中的變量,以便Limon知道從何處調用這些工具在分析機器中的路徑。

a)設置根密碼并啟用圖形根登錄-在分析機上設置根密碼,并按照下面鏈接中提到的步驟啟用圖形根登錄:

http://www.thegeekstuff.com/2009/09/ubuntu-tips-how-to-login-usingsu-command-su-gives-authentication-failure-error-message/

您也可以遵循以下步驟(在Ubuntu 12.04上運行)

1)設置root密碼

sudo passwd根目錄

運行下面的命令

# sudo sh -c 'echo " greeting -show- manu- login=true" >>

/etc/lightdm/lightdm.conf

3)重新啟動

4)點擊login

輸入用戶名根和密碼

b) Sysdig - Limon依賴Sysdig進行系統(tǒng)事件監(jiān)控,您可以按照下面鏈接中提到的基本安裝或高級安裝過程安裝Sysdig。在我的例子中,我必須遵循基于debian的高級安裝。

http://www.sysdig.org/install/

c) Strace - Limon依賴于Strace來跟蹤系統(tǒng)調用,默認情況下Strace安裝在標準Linux安裝上。

注意:如果您在分析機器上運行Ubuntu 14.04,那么刪除strace (apt-get remove strace),這是默認Ubuntu 14.04安裝中附帶的,strace有一個bug(主要是strace 4.8版本),因為它不能跟蹤子進程。一旦刪除strace,從該鏈接下載strace。

http://sourceforge.net/projects/strace/

并通過執(zhí)行下面的命令從源代碼安裝strace。

# tar xvzf strace-4.10.tar.xz

# cd strace-4.10

#./configure

# make

# make install

d)要運行PHP腳本,請執(zhí)行下面的命令安裝PHP

# apt-get安裝php5-cli

e)安裝在64位Ubuntu系統(tǒng)上運行32位可執(zhí)行文件的包

要在64位多架構Ubuntu系統(tǒng)上運行32位可執(zhí)行文件,您必須添加i386架構,并安裝三個庫包libc6:i386、libncurses5:i386和libstdc++6:i386。這些包可以通過在Ubuntu 14.04上運行下面的命令來安裝,上面運行下面的命令

# dpkg --add-architecture i386

# apt-get update

#apt-get install libc6:i386 libncurses5:i386 libstdc++6:i386

在Ubuntu 12.04及以下運行以下命令

# echo“foreign architecture i386”> /etc/dpkg/dpkg.cfg.d/multiarch

# sudo apt-get update

# sudo apt-get install libc6:i386 libncurses5:i386 libstdc++6:i386

f)創(chuàng)建目錄傳輸惡意軟件樣本

在分析機器上創(chuàng)建一個目錄“/root/malware_analysis”和/root/logdir

按照以下步驟將/root/malware_analysis添加到PATH環(huán)境變量

使用文本編輯器編輯/etc/environment,然后在最后添加路徑

/root/malware_analysis(所有路徑都應該用冒號as分隔 如下所示)

ex: PATH=/usr/bin:/root/malware_analysis

g)創(chuàng)建Volatility概要——Limon依賴Volatility來執(zhí)行內存分析。在分析機中執(zhí)行惡意軟件后,暫停分析機以捕獲其內存映像并執(zhí)行內存分析。要成功地為分析機器執(zhí)行內存分析Volatility概要文件(在我們的例子中是Ubuntu 12.04或Ubuntu 14.04),需要創(chuàng)建。要為分析機創(chuàng)建概要文件,請遵循以下鏈接中提到的步驟:

https://github.com/volatilityfoundation/volatility/wiki/Linux

概要文件本質上是一個zip文件,包含關于內核數(shù)據(jù)結構和調試符號的信息。創(chuàng)建此zip之后,將此zip文件移動到主機上的“volatility/plugins/overlay /linux”(安裝了volatility及其依賴項)下

h)清除Bash歷史記錄—通過運行下面的命令清除分析機器上的Bash歷史記錄

# history -c && history –w

i)獲取一個cleansnapshot—一旦所有的工具都安裝好了,關閉分析機器的電源,打開它,然后獲取一個快照,在我的例子中,快照的名稱是“cleansnapshot”(記下名稱)

四、配置Limon

一旦所有必要的工具都安裝到主機和分析機器上,下一步就是配置Limon

首先從下面的鏈接下載Limon:

https://github.com/monnappa22/Limon

解壓縮Limon。配置Limon涉及使用conf.py文件中的適當值更新變量。這些變量大多是直接的,需要用適當?shù)闹翟O置這些變量。使用示例值更新conf.py中的變量以供參考。下面是conf.py中的一些變量,如果它與默認值不同(不要修改其他變量),那么可能需要修改這些變量。

1)py_path - >該變量包含python解釋器的路徑在主機上。您可以通過運行下面的命令來獲得此路徑。

# which python

Example: py_path = r'/usr/bin/python'

2)report_dir - >這是通往最終報告的目錄將存儲在我們的案例中是/root/linux_reports。

Example: report_dir = r'/root/linux_reports'

3) virustotal_key ->這個變量應該包含virustotal公共api密鑰

Example: virustotal_key = "enter virustotal public key here"

4) host_analysis_vmpath ->這個變量應該包含到分析機器的.vmx文件的路徑。在我們的示例中,.vmx位于/root/virtual_machines/Ubuntu12_04/Ubuntu12_04.vmx中

Example: host_analysis_vmpath = r'/root/virtual_machines/Ubuntu12_04/Ubuntu12_04.vmx'

5)host_vmrunpath - >這個變量應該包含vmrun utilitly的路徑。這個路徑可以通過運行命令來確定

# which vmrun

Example: host_vmrunpath = r'/usr/bin/vmrun'

6) host_vmtype ->這是VMware類型,在我們的例子中它是工作站,所以這個變量應該設置為值“ws”

Example: host_vmtype = r'ws'

7)analysis_username - >分析機器的用戶名

Example: analysis_username = "enter username of the analysis machine"

8)analysis_password - >分析計算機的密碼

Example: analysis_password = "enter password of the analysis machine"

9)analysis_clean_snapname - > cleansnapshot的名稱。在我們的示例中,它是“cleansnapshot”

Example: analysis_clean_snapname = "cleansnapshot"

10) analysis_mal_dir ->這是分析機器上的路徑,惡意軟件樣本將在這里傳輸。在我們的例子中就是這樣:“/root/malware_analysis”

Example: analysis_mal_dir = r"/root/malware_analysis"

11)analysis_py_path - >分析機上的python解釋器路徑

Example: analysis_py_path = r'/usr/bin/python'

12)analysis_perl_path - >分析機上的perl解釋器路徑

Example: analysis_perl_path = r'/usr/bin/perl'

13)analysis_bash_path - > bash shell的路徑

Example: analysis_bash_path = r'/bin/bash'

14) analysis_sh_path ->到shell的路徑

Example: analysis_sh_path = r'/bin/sh'

15)analysis_insmod_path - > insmod路徑

Example: analysis_insmod_path = r'/sbin/insmod'

16) analysis_php_path ->php解釋器的路徑

Example: analysis_php_path = r'/usr/bin/php'

17) yara_packer_rules ->到y(tǒng)ara規(guī)則的路徑以檢測packers

Example: yara_packer_rules = r'/root/yara_rules/packer.yara'

18) yara_rules ->yara規(guī)則的路徑,在我們的例子中,它包含檢測惡意軟件功能(如IRC功能)的規(guī)則

Example: yara_rules = r'/root/yara_rules/capabilities.yara'

19)analysis_ip - >分析機器的IP地址在我們的設置是192.168.1.150

Example: analysis_ip = "192.168.1.150"

20)host_iface_to_sniff - >這是接口在主機上的數(shù)據(jù)包將被捕獲而惡意軟件正在執(zhí)行

Example: host_iface_to_sniff = "eth0"

21) host_tcpdumppath ->主機上的tcpdump路徑,該路徑可以使用命令“which tcpdump”來確定

Example: host_tcpdumppath = "/usr/sbin/tcpdump"

22)vol_path ->在主機上的volatile (vol.py)腳本的路徑。

Example: vol_path = r'/root/Volatility/vol.py'

23)mem_image_profile ->分析機器的volatile 配置文件的名稱。在我們的示例中,配置文件的名稱是“LinuxUbuntu1204x64”。因此,變量的值設置如下:

Example: mem_image_profile = '--profile=LinuxUbuntu1204x64'

24) inetsim_path? ->到INetSim的路徑

Example: inetsim_path = r"/usr/share/inetsim/inetsim"

25)inetsim_log_dir- > INetSim日志目錄路徑

Example: inetsim_log_dir = r"/usr/share/inetsim/log"

26)inetsim_report_dir- > INetSim報告目錄路徑

Example: inetsim_report_dir = r"/usr/share/inetsim/report"

27)analysis_sysdig_path - >分析機上的sysdig路徑

Example: analysis_sysdig_path = r'/usr/bin/sysdig'

28)host_sysdig_path - >主機上sysdig的路徑

Example: host_sysdig_path = r'/usr/bin/sysdig'

29 analysis_capture_out_file ->這是分析機器上保存sysdig事件的臨時文件。不要修改這個值,并確保logdir存在于/root目錄下。默認值如下所示:

Example: analysis_capture_out_file = r'/root/logdir/capture.scap'

30)analysis_strace_path - >分析機上的strace路徑,例:/usr/bin/strace

Example: analysis_strace_path = r'/usr/bin/strace'

31)analysis_strace_out_file - >這是分析機器上的臨時文件,保存調用跟蹤事件。不要修改這個值,并確保logdir存在于/root目錄下。默認值如下所示:

Example: analysis_strace_out_file = r'/root/logdir/trace.txt'

32) analysis_log_outpath ->這是將保存臨時工件的分析機器上的目錄。不要修改這個值,并確保logdir存在于/root. .之下。默認值如下所示

Example: analysis_log_outpath = r'/root/logdir'

四、選擇Limon

Limon提供了各種選項,并支持分析各種文件類型。下面的截圖顯示了Limon中的選項,并運行一個Linux惡意軟件樣本“tsuna”40秒。使用-m選項Limon還可以執(zhí)行內存分析:

Limon默認情況下使用帶有過濾調用跟蹤的strace來執(zhí)行動態(tài)分析。在經過過濾的調用跟蹤中,它只跟蹤少數(shù)常被惡意軟件(如進程、文件和與網(wǎng)絡相關的系統(tǒng)調用)使用的系統(tǒng)調用。對于更詳細的調用跟蹤(例如:追蹤所有系統(tǒng)調用)

-C(—ufctrace):可以使用-C(——ufctrace)選項,這將使用strace跟蹤所有的系統(tǒng)調用。這將生成詳細的輸出:

Limon還可以使用Sysdig監(jiān)控系統(tǒng)調用,Sysdig只支持對x64位文件的事件監(jiān)控。

-e(—femonitor):這個選項使用Sysdig執(zhí)行事件監(jiān)視,在這種情況下,只監(jiān)視惡意軟件常用的系統(tǒng)調用。這樣噪音就小了。

-E(—ufemonitor)這個選項使用Sysdig執(zhí)行事件監(jiān)視,在本例中監(jiān)視所有系統(tǒng)調用。這是生成詳細輸出。

-m(—memfor)這個選項執(zhí)行內存分析(以及靜態(tài)和動態(tài)分析)。Limon依賴于揮發(fā)性內存取證框架來執(zhí)行內存分析。這個選項運行大部分的易變插件,除了一些需要一些時間運行的插件。

-M(—vmemfor)這個選項使用Volatility執(zhí)行詳細的內存分析(以及靜態(tài)和動態(tài)分析)。這個選項運行所有的Volatility插件,包括那些需要時間的插件。這可能有點慢。

-x(—printhexdump)這個選項在調用跟蹤中打印十六進制轉儲。

五、例子

這里可以找到一些使用Limon的例子:

https://www.blackhat.com/docs/eu-15/materials/eu-15-KA-AutomatingLinux-Malware-Analysis-Using-Limon-Sandbox.pdf

下面的例子應該對運行Limon有一個概念

1)使用sanbox模式在Limon中運行ELF二進制文件(默認運行60秒),不進行內存分析(只執(zhí)行靜態(tài)和動態(tài)分析)

# python limon.py <malware sample>

2)使用internet模式在Limon中運行ELF二進制文件(默認運行60秒),不進行內存分析(只執(zhí)行靜態(tài)和動態(tài)分析)

# python limon.py <malware sample> -i

3)在Limon中運行ELF二進制文件,在沙箱模式下運行40秒,使用未過濾的調用跟蹤

# python limon.py <malware sample> -t 40 -C

4)在Limon中運行perl腳本25秒,并過濾系統(tǒng)監(jiān)視

# python limon.py –p <malicious.pl> -t 25 –e

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 今天有點咸??想做一只沒有夢想的搬運工 十六進制編輯器 十六進制編輯器(二進制文件編輯器或字節(jié)編輯器)是一種允許操縱...
    Honny_Boo閱讀 2,728評論 0 7
  • 前言 2019年來了,2020年還會遠嗎? 請把下一年的年終獎發(fā)一下,謝謝。。。 回顧逝去的2018年,最大的改變...
    qiye閱讀 1,700評論 0 6
  • 前言 網(wǎng)上有很多Cuckoo的安裝教程,但隨著Cuckoo的版本更新,安裝過程也會發(fā)生些許變化。截止本文時,Cuc...
    行樹閱讀 12,085評論 4 6
  • pyspark.sql模塊 模塊上下文 Spark SQL和DataFrames的重要類: pyspark.sql...
    mpro閱讀 9,918評論 0 13
  • IndexedDB概述 為什么要用IndexedDB? 1.大量數(shù)據(jù)儲存在客戶端,這樣可以減少從服務器獲取數(shù)據(jù)的次...
    雷銀閱讀 733評論 0 1

友情鏈接更多精彩內容