實體異質惡意行為分析架構 (Heterogeneous Malware Behavior Analysis Architecture)


English version please visit:http://X.TWMAN.ORG/InstallE

2014/12/31 補充 整個安裝操作說明及另附上整合 Cuckoo 的方法,還有 Android x86 經過測試是可正常還原實際的 PC 上,實驗環境看 http://mit.twman.org/mit/structure-environment 這邊 !
那麼既然已經有 cuckoo 為何還需要這個呢 ? 可以先讀一下這篇 " 惡意程式大膽進入虛擬機器,VM可能沒你想的那麼安全 ( Does malware still detect virtual machines?) "

Developer & Copyrighted by : TonTon Hsien-De Huang
Community on Google+:http://X.TWMAN.ORG/Community 
SourceForge: http://X.TWMAN.ORG/SourceForge 
FaceBook: http://X.TWMAN.ORG/Facebook

這頁將只說明怎樣藉由現有的自由軟體來建置虛擬及實體分析環境,並搜集相關資料的安裝教學,建議先看一下,後面比較好自己修正;因為如果想做惡意程式分析卻還得要靠自動安裝這好像很囧 ! 繼續往下看之前,請大家先一起感謝 DRBL (ITHOME報導),不然真的整合不出這東西 ... 簡單講,這整個東西我想就是個架構而已 .. 因為弄懂了 DRBL/Clonzilla 的硬碟還原辦法及控制流程,你甚至可以將這樣的實體分析架構擴展到 Android (x86) ~ 甚至 MAC OS 都不是問題 ... 只會卡在那來那麼多的實體機器而已 ~ XD

###################################################################
分層區間二型模糊知識本體模型之異質惡意程式行為分析架構
A Hierarchical IT2FO Model for Heterogeneous Malware Behavior Analysis Architecture
## Malware Analysis Network in Taiwan <MAN in Taiwan, MiT>
## http://MiT.TWMAN.ORG | <TonTon@TWMAN.ORG>
## (C) 2014/12/31 TonTon Hsien-De Huang
## MiT README
###################################################################
This project is open source and distributed under the  GNU General Public License version 3.  Please feel free to add to or modify this source, propose changes, new converters and reference this website.
###################################################################
Official Website: http://MiT.TWMAN.ORG
Community on Google+:http://X.TWMAN.ORG/Community
SourceForge: http://X.TWMAN.ORG/SourceForge
FaceBook: http://X.TWMAN.ORG/Facebook
###################################################################
Install / Setup User Guide: 請務必先撥空讀過下面說明及中英文網誌
Chinese Version: http://X.TWMAN.ORG/InstallC
English Version: http://X.TWMAN.ORG/InstallE
Server 端自動安裝影片 (Video): https://www.youtube.com/watch?v=U3Jrs-83tYQ

(03:40 與 05:10 會有 ONE PIECE 亂入 ... xD)

Client 端自動安裝影片 (Video): https://www.youtube.com/watch?v=jafYXci_Yas


#########################Chinese - How To################################
===2014/12/31===
請自行安裝 Server端為 CentOS x64 6.5 (需兩張網卡),Client 端請自行決定要安裝什麼系統 (EX: Windows XP、Windows 7、Android等;PS: Android的實體動態分析環境建置請恕不加以說明,如有迫切需要歡迎另外討論) ... 說明寫很多,但基本上請 " 務必 " 先對 DRBL/Clonezilla 的備份/還原 的辦法跟 製作映像檔 還有 無碟 Linux 跟開機/重開機等指令 弄熟,保證您一定可以自己建一套 異質架構 橫跨 PC / Android 的 " 實體叢集惡意程式行為分析平台 !

==1. 請下載目前最新的版本 " MiT@20150228.tar.gz " 這個檔案,再解壓縮到您的 CentOS 裡的 " / ",可以看到以下幾個目錄及檔案:


MiT-Server_Auto-Install.sh: 初始安裝設定 script 檔 (沒VM)
MiT-Server_Auto-VM_Install.sh: 初始安裝 script 檔 (有VM)
MiT-Server_Auto-VM_Setup.sh: 初始安裝完設定 script (有VM)
Malware-Sample_MiT: Exes、Queue、Temp,存放分析前後的樣本
Analysis-Report_MiT: 用來存放分析前及分析後的報告
MiT-Start.sh: Server端開始執行 script
Server-Toolkit_MiT.zip: 相關工具包
Client-Toolkit_MiT.exe
README.txt: 本文字檔
MiT-Run.sh
vt.py

==2. 並且於 Server 端執行 (MiT-Server_Auto-Install.sh) or (MiT-Server_Auto-VM_Install.sh 和 MiT-Server_Auto-VM_Setup.sh),記得要修改 DRBL 的 bridge 設定後重開機 (如果不做 VM 的話就不用);到這邊應該已經都設定完成,請記得編修 Client 的相關批次檔以及製作需使用的還原印像檔

==3. 同時將 Client-Toolkit_MiT.exe 放到Client端並執行 (這裡有影片: https://www.youtube.com/watch?v=jafYXci_Yas),執行後會看到 CaptureBAT-Setup-2.0.0-5574.exe、drbl-winroll-1.4.0-194-setup.exe、MiT-Client-Installer.exe等3個安裝檔以及ppt.bat等與MiT-CaptureBAT.bat幾個執行時的批次檔以及會COPY相關套件到C:\WINDOWS\System32裡

==4. 搜集各台的 mac 值填入 (有範例) 解壓後 Server-Toolkit_MiT的macadr-br0.txt及 Client 的 hosts.conf裡,供 drbl 及 drbl-winroll 使用;關於DRBL及 drbl-winroll 請自行參考官方網站及我另外寫的相關Blog說明

==5. 需確認 Server 是否可以控制 Client: 這裡沒辦法預設定,需要自己確認Client的網卡MAC以及IP或者是VM的DOMAIN,然後相關設定寫入到 MiT-Start.sh 裡,裡面有範例,同時也有判斷特定檔案格式來啟動特定Client的範例;Client端則需調整ppt(pptx/xls/xlsx/doc/docx/pdf).bat,MiT-CaptureBAT.bat需使其開機便啟動;此外 ! 要記得編輯控制DRBL做還原的指令檔!

#########################English - How To################################
Welcome to contact us (TonTon@TWMAN.ORG) if you are interested in collaborating with us.
Also, you can download the last version til now, the latest version is " MiT@2014.tar.gz ".

Step 1: unzip MiT@20150228.tar.gz , and find txt file and directory:
l   MiT-Server_Auto_Install.sh: install the toolkits for server initial
l   MiT-Server_Auto-VM_Install.sh: install the toolkits for server initial
l   MiT-Server_Auto-VM_SetUp.sh: set up the toolkits for server
l   Malware-Sample_MiT: store the malicious sample
l   Analysis-Report_MiT: store the analysis reports
l   Client-Toolkit_MiT.exe: set up the toolkits for clients
l   Server-Toolkit_MiT.zip: the toolkits for server install & set up
l   MiT-Start.sh, MiT-Run.sh, README.txt, and vt.py
Step 2: Execute the MiT-Server_Auto-Install.sh (or MiT-Server_Auto-VM_Install.sh) and MiT-Server_Auto-VM_Setup.sh), and the server install & setup is complete.
Step 3: If you wish to run MiT on Physical Machines, please setup the related information (EX:MAC address) for DRBL. Otherwise, if you wish to run MiT on Virtual Machines, please setup the related information (EX:qemu) for libvirtd. You need complete this on Default. You also need to prepare the related OS environment (EX: Windows7, Windows 7 SP1 ... on Virtual Machine / Physical Machine).
Step 4: Upon completing these steps, please execute the Client-Toolkit_MiT.exe on Clients. It will install automated basic software for clients. You also need install CaptureBAT-Setup-2.0.0-5574.exedrbl-winroll-1.4.0-194-setup.exeMiT-Client-Installer.exe.
Step 5: Please check to see if you can send messages to control clients from server (for example open file by some program or restore client image); for this request, you need to create a clean environment and run images for clients by DRBL (Phtsical Macheine), or set up the libvirtd by qemu !

###################################################################
​Thanks for taking the time to read this README.
For more information you may need, please do not hesitate to inform me.
Best regards,

​TonTon
###################################################################
Malware Analysis Network in Taiwan <MAN in Taiwan, MiT>
http://MiT.TWMAN.ORG | <TonTon@TWMAN.ORG>
(C) 2014/12/31 TonTon Hsien-De Huang
MiT README
###################################################################

剩下的下面就是比較細部的參考說明了 !

=========相關套件安裝測試文=========
=========雲端運算相關測試=========
====================================

痛痛的人生-我在國家高速網路與計算中心的那1075天及離開後的730天
再次聲明:這是整個重新整合開發測試調整,跟過去我個人於 NCHC 服研發替代役時(2011/09/28 已服役期滿離職)所做的完全不相關 ! 特地利用修課跑去修 SPECIAL ISSUES IN INTELLECTUAL PROPERTY POLICY (智財法規專論 ) 這門英文課,解決了長期來的一些疑慮 ... 絕對不會特地去申請商標、專利,只會整合相關工具跟簡化流程,繼續 Open Source ,只是用自己的時間做點東西 ! (PS: 2014年11月28日 更新受雇人利用 GPL 元件開發公司產品的著作權歸屬與運用疑義解析 " 一文說明我應該要要求著作人格權 (在其所創作的著作上標示姓名或筆名) !!! 

2014/12/31補充
想不到會有機會在台灣講 " 抬丸郎 " 還是在 HITCON X (2014臺灣駭客年會) 



而且連 第六屆台灣區 Botnet 偵測與防治技術研討會 (PPT) 這個也沒錯過 ! XD




= = 以下分三個主題解釋整體所整合環境的相關文件 = =
請自己安裝好 CentOS 6.4 x64 以及有版權的  Microsoft Windows以及準備下面的工具和環境

=========Server以及Client環境=========
Server端是 CentOS 6.5 x64,安裝時請選擇 Basic Server,且需有兩張網卡, python 版本需注意是 2.6;Client端是 Microsoft Windows XP and 7 (x86或x64),同時請自己先建好 Client 端還原使用的映像檔

========= 實體以及虛擬機制=========
KVM, Libvirt & Virt-Manager 是虛擬機器需使用之工具
DRBL (Bridge), Clonezilla & DRBL-Winroll 是實體機器需使用之工具

==========分析機制===============
Inetsim 當作偽裝網路服務
File 檢測欲分析樣本之檔案格式
virustotal 檢測樣本特徵碼
請自行新增欲使用的分析工具 (EX:process等工具)

=========處理Server端相關工具及環境=========

========首先是幫 server 做 bridge========


網路上已經很多 KVM 做 Bridge 的教學都沒錯,但前提是要先關閉 NetworkManager 在做後續設定,或者直接參考這篇 " CentOS 6.4 x64之DRBL環境做Bridge "

========關閉用不到的 libvirt 所產生的 virbr0 網卡========
# virsh net-destroy default
# virsh net-undefine default
# service libvirtd restart


=========修改 Selinux========
# vi /etc/selinux/config (把 SELINUX=enforcing 改為 SELINUX=disabled)


========接著更新系統及安裝其它套件========
# egrep '(vmx|svm)' --color=always /proc/cpuinfo 
(確認CPU支援虛擬化)

# yum update -y (可做可不做)

# yum -y install tigervnc-server tigervnc qemu-kvm libvirt python-virtinst bridge-utils  perl-Digest-SHA1  gcc-c++ gcc virt-manager

# yum -y groupinstall "General Purpose Desktop" "X Window System" "Desktop" 

(個人建議裝一下X視窗會方便一點)

===安裝設定 volatility-2.2===安裝設定 file-5.14===安裝設定 inetsim-1.2.4===
上面的相關工具已經直接打包會自動裝好到這邊已經很快速的把相關工具套件都裝好了

rm -f GPG-KEY-DRBL; wget http://drbl.nchc.org.tw/GPG-KEY-DRBL; rpm --import GPG-KEY-DRBL  
(DRBL 安裝需求)

# wget http://free.nchc.org.tw/drbl-core/x86_64/RPMS.drbl-stable/drbl-2.4.17-drbl1.noarch.rpm 
(下載 DRBL rpm 安裝檔)

# rpm -Uvh drbl-2.4.17-drbl1.noarch.rpm 
(DRBL rpm 安裝)

# drblsrv -i -c n -n n -m n -g n -k 2 -o 1 -x n -t n -a n -l 2 -s  
(DRBL 安裝參數)


正常來講應該是會這樣直接就選了就過去才對

*****************************************************.
如果找到新版的程式,嘗試升級某些需要的程式...
*****************************************************.
準備用戶端電腦用的核心,在儲藏庫中尋找可用的核心...
只有一個核心符合你設定的條件:  kernel_2.6.32-358.18.1.el6.x86_64 x86_64 (from this DRBL server), use it.
選定的核心為: kernel_2.6.32-358.18.1.el6.x86_64
*****************************************************.

但是不知為何在測試過程還是有跳出來問過我 !!! 囧 .. 就選 from this DRBL server


這個我看參數是使用 -k, --client_archi [0/1/2]: set the client's CPU arch, 0 for i386, 1 for i586, 2 for same level with DRBL server (for x86_64, use 2). 

到這邊後,如果用到虛擬環境那就需要手動修正 (在原始碼尚未更新前建議這樣改 )
主要是讓你的 DRBL Clients 的 VM 可以直接做 Bridge 連線出去

# vi /usr/bin/mkpxeinitrd-net
找到這行並新增 brctl
include_bin_prog_from_server="sleep lspci insmod modprobe rmmod lsmod pkill strings mount umount mount.nfs umount.nfs brctl"

找到 
# Deal with firmwares 並且在下面新增
cp -a --parents kernel/net/802/stp.ko $initrd/lib/modules/$kernel_ver/ 
cp -a --parents kernel/net/bridge/bridge.ko $initrd/lib/modules/$kernel_ver/

# vi  /usr/lib/mkpxeinitrd-net/initrd-skel/linuxrc-or-init
找到 
# IF the netdevices is not assign in /etc/netdev.conf, we use get-nic-devs to detect the network devices and do dhcpc request each one 並新增
brctl addbr br0
brctl addif br0 eth0
ifconfig eth0 0.0.0.0
ifconfig br0 0.0.0.0

# vi /usr/share/drbl/setup/files/misc/init.drbl
找到 
# find my IP address 
+NETDEVICES="$(LC_ALL=C cat /proc/net/dev | awk -F: '/eth.:|tr.:|br.:|p.p.:/{print $1}')"


完成後請再重新下一次指令

# drblsrv -i -c n -n n -m n -g n -k 2 -o 1 -x n -t n -a n -l 2 -s 

到這邊請準備好你的 Clients 的 mac address,因為有些細項設定,所以建議手動做

# drblpush -i 


基本上這個動作只要做一次,以後就可以直接透過 drblpush -c /etc/drbl/drblpush.conf 搞定


最後補充一下一行一行輸入挺累的,所以我也簡單弄了 script 把一些動作自動化啦 ! xD

就是下載了檔案以後,放在 / 目錄,然後下兩個指令,接著便會自己全部裝好了

# tar -zxf MiT.tar.gz
# /MiT/MiT-Server-Install.sh


中間應該最多只會停住 4 次等你下指令
1. 跑到安裝 perlipq-1.25.tar.gz 時會要你直接按 Enter 用預設值 [/usr/local/]
2. drblsrv 會要你選擇 client 端預使用的核心,選 from this DRBL server,有兩次 (不一定會有)
3. drblpush 會要你按一次 Enter


跑完就像這樣


最後來個合照 ! xD


====處理Client端相關工具及環境 (需手動)====
========確認你的網路卡具 WOL 以及 PXE-BOOT 功能========



 

========安裝設定相關工具========

Ninite - Install or Update Multiple Apps at Once
基本上就是你可以自己決定要在分析端做什麼事跟裝什麼軟體這樣


可以預先自動執行一些相關的套件安裝,但其中有幾個軟體 (下圖)還是需要手動安裝


但多虧有 Ninite 可以解決掉一些裝的問題 ... 所以我拿掉了一些軟體 !


剩的就是前面剛剛提過的,一定要去看一下 DRBL 還有 DRBL-Winroll


========DRBL-Winroll是讓 Sevrer 跟 client 的 ssh 互通========

官網的說明更清楚哩 !!! http://drbl-winroll.nchc.org.tw






Server下:ssh-copy-id Administrator@192.168.0.1 (第一次會問密碼)
Client下:ssh-copy-id root@192.168.0.100 (第一次會問密碼)

最後呢 ! 如果希望做到大家都能同步樣本以及報表 !
======設定樣本及報表同步 (請mail至TonTon@TWMAN.ORG索取)======

最後就可以好好的研究一下 Interval Type-2 Fuzzy Logic System (IT2FLS) 區間二型模糊邏輯系統

===2014-12-31 補充整合 cuckoo ===

基本上 Cuckoo 我想玩惡意程式的都應該要會才對 ! 所以這邊就是補充一下在做完上面的 cluster 整合安裝後 ~ 怎樣再把 cuckoo 給綁進來 ... 當然 官方文件 還是要自己 k 一下比較實在

# python -V
Python 2.6.6
注意一下 python 版本

wget --no-check-certificate https://pypi.python.org/packages/source/s/setuptools/setuptools-1.4.2.tar.gz
tar -xvf setuptools-1.4.2.tar.gz
cd setuptools-1.4.2
python setup.py install
easy_install pip
這邊是確認一下 python lib 安裝的工具

pip install sqlalchemy bson --upgrade
pip install cybox==2.0.1.4
pip install maec==4.0.1.0
pip install jinja2 pymongo bottle pefile django chardet libmagic

再來是安裝一些會用到的 lib

yum groupinstall -y development
yum install -y zlib-dev openssl-devel sqlite-devel bzip2-devel zlib zlib-devel python-jinja2 python-magic python-pymongo python-chardet python-babel python-bson  gcc tcpdump libvirt-python python-virtinst python-devel libxml2-devel libxslt-devel libffi-devel jansson curl curl-devel jansson-devel Django 

wget https://dpkt.googlecode.com/files/dpkt-1.8.tar.gz
tar -zxf dpkt-1.8.tar.gz
cd dpkt-1.8
python setup.py install
cd ..

*****在 /MiT/Server-Toolkit_MiT/ 裡有 ssdeep *****
wget O ssdeep-2.12.tar.gz http://downloads.sourceforge.net/project/ssdeep/ssdeep-2.12/ssdeep-2.12.tar.gz?r=http%3A%2F%2Fssdeep.sourceforge.net%2F&ts=1417876565&use_mirror=jaist
mv ssdeep-2.12.tar.gz\?r\=http\:%2F%2Fssdeep.sourceforge.net%2F ssdeep-2.12.tar.gz
tar -zxf ssdeep-2.12.tar.gz
cd ssdeep-2.12
./configure
make
make install
cd ..

git clone https://github.com/kbandla/pydeep.git
cd pydeep/
python setup.py build
python setup.py install
cd ..

wget http://downloads.volatilityfoundation.org/releases/2.4/volatility-2.4.tar.gz
tar -zxf volatility-2.4.tar.gz
cd volatility-2.4
python setup.py install
cd ..

wget ftp://ftp.astron.com/pub/file/file-5.21.tar.gz
tar -zxf file-5.21.tar.gz
cd file-5.21
./configure
make
make install
cd ..

接著就是要安裝 yara

git clone https://github.com/plusvic/yara.git
cd yara/
./bootstrap.sh
autoreconf
./configure --enable-cuckoo --enable-magic
make
make install
cd yara-python/
python setup.py build
python setup.py install
cd ../..

wget https://pefile.googlecode.com/files/pefile-1.2.10-139.tar.gz
tar -zxf pefile-1.2.10-139.tar.gz
cd pefile-1.2.10-139
python setup.py install
cd ..

wget http://ftp.de.debian.org/debian/pool/main/d/distorm3/distorm3_3.0.orig.tar.gz
tar -zxf distorm3_3.0.orig.tar.gz
cd distorm3-3.0/
python setup.py install
cd ..

最後則是準備下載 cuckoo !!! 完成

git clone git://github.com/cuckoobox/cuckoo.git
cd cuckoo/
adduser cuckoo
usermod -G root cuckoo
vi conf/kvm.conf
python cuckoo.py