(黃獻德) Hsien-De Huang | E-Mail:TonTon (at) TWMAN.ORG | TonTon (痛痛)
Malware Analysis Network in Taiwan (MiT) | 惡意程式分析網在台灣 (抬丸郎)
Deep Learning (深度學習), Malware Analysis (惡意程式分析), Ontology (知識本體)
Android Reverse Engineering (Android 逆向工程), Type-2 Fuzzy Logic (第二型模糊邏輯)

ONE PIECE (海賊王)

ONE PIECE (海賊王)

2013年1月29日

Build python-ssdeep with ssdeep2.9 on Python 2.7.2 of Cent OS

這篇又是一個系統開發的小筆記 ... 因為我深怕我又會不小心腦殘 ...


想要達到的功能就如同上圖一樣 .... 因為我需要在判斷 Mail 附檔時先判斷是不是跟現有的病毒樣本相近 ... 至於為啥挑 Python ... 嗯 ~ 因為它是 Google 官方語言啊 ! xD (而且我的 IT2FS 也用 Python 寫的嘛 )

請注意 ! 使用的Python 版本為 Python 2.7.2

那接著就開始裝吧 !

# yum install gcc gcc-c++ -y
# wget http://www.python.org/ftp/python/2.7.2/Python-2.7.2.tgz
# tar -zxf Python-2.7.2.tgz
# cd Python-2.7.2
# ./configure
# make
# make install

上面就是很一般的安裝動作 ... 到這邊你可以先看看你的 Python 是在那

# which Python ( 會得到 /usr/bin/python )
# Python -V ( 會得到 Python 2.4.3 )
所以馬上把它改掉吧 !
# mv /usr/bin/python /usr/bin/python.2.4.3
# ln -s /usr/local/bin/python2.7 /usr/bin/python

到這邊就算搞定了 ! 但是很可惜在 CentOS 上很多軟體都需要 Python 2.4 ... (EX: yum) 所以

vi /usr/bin/yum 把第一行的 #!/usr/bin/python 改成 #!/usr/bin/python.2.4.3 吧 !

Update: Cent OS 6.4_2013/08/01
在 Cent OS 6.4 底下會發現
# python -V
Python 2.6.6
# which python
/usr/local/bin/python

所以要跟著修正

# mv /usr/bin/python /usr/bin/python.2.6.6
# ln -s /usr/local/bin/python2.7 /usr/bin/python

同時為了配合 yum 也要修正為
#  mv /usr/bin/python /usr/bin/python.2.6.6
把 #!/usr/bin/python.2.6.6 第一行的 #!/usr/bin/python 改成 #!/usr/bin/python.2.6.6

Update: Cent OS 6.5_2014/03/31:直接升級為 python 2.7.2 好像可以直接yum ... ??


接著是要安裝一下 Python 安裝 Module 的好用工具 setuptool

wget http://peak.telecommunity.com/dist/ez_setup.py
python ez_setup.py

這樣就裝好啦 ! 再來就是要裝一下 ssdeep 了 ! ( http://ssdeep.sourceforge.net/ )
有用過 TWMAN 的人都知道,我在一些地方有套用了這個套件做一些判斷 ...
那麼現在因為要在進行分析前做一點預掃的動作以及把這個分析值當做輸入
所以必需改用 Python 來做一些控制 ....

wget http://sourceforge.net/projects/ssdeep/files/ssdeep-2.9/ssdeep-2.9.tar.gz/download
tar -zxf ssdeep-2.9.tar.gz
./configure
make
make install
ldconfig


這樣就可以算是已經安裝好了 ! 可以自己用一下 ssdeep -V 測試 ... 官網有很多使用說明 !

再來就是重頭戲 ... python-ssdeep: https://github.com/DinoTools/python-ssdeep

git clone https://github.com/cython/cython.git cython
python setup.py build
python setup.py install


git clone https://github.com/DinoTools/python-ssdeep.git python-ssdeep
python setup.py build
python setup.py install

嗯 ... 別懷疑 ! 人家網頁上有寫 ! 就照著做一定要安裝就對啦 !
到這邊您就可以依著官網上面寫的做測試啦 ! (就是我最上面的截圖啦)
這樣我就可以來控制在分析前先做一下判斷跟已知樣本有多大的相似性 !
並且把這個值輸入到我的 IT2FS 裡 ...

除此之外,我又找到了另一個 pydeep ... 安裝一樣是非常的簡單 (想不到工具那麼多啊 !)
git clone https://github.com/kbandla/pydeep.git
python setup.py build
python setup.py install



再來則是要順便測的 pyinotify: 用來監控資料夾變化
(過去我是使用 AIDE,但有個很重大的困難就是不能即時...)
(一定要我先dd整個client的OS再來做比較)

以下直接截錄 " 強大的檔案控管機制-Inotify "
在講到inotify這個機制前,可能要說一下它的使用限制,如果OS不是用LINUX,請按上一頁,再者如果Linux版本不是2.6.13以上,也請按上一頁,如果OS條件都符合以上兩項,請繼續往下看

什麼是inotify
我截錄一段inotify創作人Rober Love在Linux Journal上所說的一段話
inotify is a file change notification system—a kernel feature that allows applications to request the monitoring of a set of files against a list of events. When the event occurs, the application is notified. To be useful, such a feature must be simple to use, lightweight with little overhead and flexible. It should be easy to add new watches and painless to receive notification of events.
上面那段話簡單的來說,inotify可以幫助你即時的觀測檔案的改變,並回送通知給你,而inotify把檔案狀態的變化分為以下十類

1.IN_ACCESS:File was read from.
2.IN_MODIFY:File was written to.
3.IN_ATTRIB:File's metadata (inode or xattr) was changed.
4.IN_CLOSE_WRITE:File was closed (and was open for writing).
5.IN_CLOSE_NOWRITE:File was closed (and was not open for writing).
6.IN_OPEN:File was opened.
7.IN_MOVED_FROM:File was moved away from watch.
8.IN_MOVED_TO:File was moved to watch.
9.IN_DELETE File:was deleted.
10.IN_DELETE_SELF:The watch itself was deleted.

所以不論讀,寫,開啟,刪除,或attribute改變,都可以從inotify收到通知,使用這樣的機制好處是,你再也不用去polling你所有要監測的檔案了,這對embedded device來說是十分重要的功能,因為它可以簡化你所有監測的動作並且節省device的資源
以上直接截錄 " 強大的檔案控管機制-Inotify "

wget http://peak.telecommunity.com/dist/ez_setup.py
python ez_setup.py
easy_install pyinotify
python -m pyinotify -v /tmp


一整個就是超簡單的啊 ! 至於效果就像是下面這樣 ... 監控某個資料夾的動作 !


當然啦 ... 這一切都是拜 Open Source 的好處 ... 怎麼做大家都可以自己調整 ...

所以請不要再來說我疑似侵犯啥商標跟專利權了 ... 拜託 !

至於後續要怎麼做 ?  ~ 攤手 ~