來源: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