Cuckoo Sandboxを実行したらYaraに関して怒られたので、その原因の調査と解決策です。
原因がバージョンにあると考え、Yaraの違うバージョンを入れようとしたら更に詰まったので、忘れないようにメモ。
エラーを一つ解決すると新しいエラーが登場してくれるおかげで退屈せずにすみました。
本来自分用であるということと、同じエラーが出た人の少しでも役に立てばと考えて、試行錯誤した過程をそのまま書いてますが、一応最後にまとめてあります。
#参考
- http://community.cuckoosandbox.org/posts/show/yara-error-error_on_warning/
- http://rayschippers.wordpress.com/2014/01/11/install-yara-on-ubuntu-13-10-saucy-salamander/
- http://yara.readthedocs.org/en/latest/gettingstarted.html
- https://github.com/styx/YARA/tree/master/yara-python
#環境
- OS
- Ubuntu 14.04
- Cuckoo Sandbox
- 1.2-dev
- Yara
- 1.7 => 3.1
#エラー内容と解決策
##Yaraのエラー
cuckoo.py
を実行したら怒られました。
以下がその内容です。
$ python cuckoo/cuckoo.py
_____________________________________/\/\_______________________________
___/\/\/\/\__/\/\__/\/\____/\/\/\/\__/\/\__/\/\____/\/\/\______/\/\/\___
_/\/\________/\/\__/\/\__/\/\________/\/\/\/\____/\/\__/\/\__/\/\__/\/\_
_/\/\________/\/\__/\/\__/\/\________/\/\/\/\____/\/\__/\/\__/\/\__/\/\_
___/\/\/\/\____/\/\/\/\____/\/\/\/\__/\/\__/\/\____/\/\/\______/\/\/\___
________________________________________________________________________
Cuckoo Sandbox 1.2-dev
www.cuckoosandbox.org
Copyright (c) 2010-2014
Checking for updates...
Good! You have the latest version available.
2014-10-11 17:13:09,487 [lib.cuckoo.core.scheduler] INFO: Using "kvm" machine manager
2014-10-11 17:13:09,919 [lib.cuckoo.core.scheduler] INFO: Loaded 1 machine/s
2014-10-11 17:13:09,925 [lib.cuckoo.core.scheduler] INFO: Waiting for analysis tasks.
2014-10-11 17:13:30,206 [lib.cuckoo.core.scheduler] INFO: Starting analysis of FILE "/home/cuckoo/ZeuS_binary_9498ff82a64ff445398c8426ed63ea5b.exe" (task=2)
2014-10-11 17:13:30,218 [lib.cuckoo.core.scheduler] INFO: File already exists at "/home/cuckoo/cuckoo/storage/binaries/8b2e701e91101955c73865589a4c72999aeabc11043f712e05fdb1c17c4ab19a"
2014-10-11 17:13:30,331 [lib.cuckoo.core.scheduler] INFO: Task #2: acquired machine Windows7_default_1412852245584_47636 (label=Windows7_default_1412852245584_47636)
2014-10-11 17:13:30,339 [modules.auxiliary.sniffer] INFO: Started sniffer with PID 14069 (interface=hostonly0, host=192.168.124.2, dump path=/home/cuckoo/cuckoo/storage/analyses/2/dump.pcap)
2014-10-11 17:13:39,623 [lib.cuckoo.core.guest] INFO: Starting analysis on guest (id=Windows7_default_1412852245584_47636, ip=192.168.124.2)
2014-10-11 17:14:06,404 [lib.cuckoo.core.guest] INFO: Windows7_default_1412852245584_47636: analysis completed successfully
2014-10-11 17:14:08,420 [modules.processing.behavior] WARNING: Analysis results folder does not contain any file.
2014-10-11 17:14:08,748 [lib.cuckoo.common.objects] WARNING: Unable to import pydeep (install with `pip install pydeep`)
2014-10-11 17:14:08,749 [lib.cuckoo.common.objects] WARNING: Unable to match Yara signatures: 'error_on_warning' is an invalid keyword argument for this function
2014-10-11 17:14:09,797 [lib.cuckoo.core.scheduler] INFO: Task #2: reports generation completed (path=/home/cuckoo/cuckoo/storage/analyses/2)
2014-10-11 17:14:09,894 [lib.cuckoo.core.scheduler] INFO: Task #2: analysis procedure completed
WARNING二つ出てますがとりあえず置いておいて、先にYaraのWARNINGを解決したいと思います。
2014-10-11 17:14:08,749 [lib.cuckoo.common.objects] WARNING: Unable to match Yara signatures: 'error_on_warning' is an invalid keyword argument for this function
ここです。
調べたところ、Yaraのバージョンが違うのではないかという話が出ています。
CuckooではYaraのv1.7以上を使うようにと書いてあったのでv1.7を使っていたのですが、最新版を試してみようと思います。
##Yaraの最新版を入れる
現在は、v3.1.0が最新のようです。
https://github.com/plusvic/yara/releases/tag/v3.1.0
Yaraのドキュメントに従いたいと思います。
http://yara.readthedocs.org/en/latest/gettingstarted.html
$ wget https://github.com/plusvic/yara/archive/v3.1.0.tar.gz
$ tar zxvf v3.1.0.tar.gz
$ cd yara-3.1.0/
$ ./bootstrap.sh
== bootstraping yara
libtoolize...
Did not find a supported libtoolize
何か怒られました。
libtoolize
がないっぽいので、libtool
パッケージを入れてみます。
###libtoolを入れる
$ sudo apt-get install libtool
./bootstrap.sh
== bootstraping yara
libtoolize...
libtoolize: putting auxiliary files in `.'.
libtoolize: linking file `./ltmain.sh'
libtoolize: putting macros in AC_CONFIG_MACRO_DIR, `m4'.
libtoolize: linking file `m4/libtool.m4'
libtoolize: linking file `m4/ltoptions.m4'
libtoolize: linking file `m4/ltsugar.m4'
libtoolize: linking file `m4/ltversion.m4'
libtoolize: linking file `m4/lt~obsolete.m4'
aclocal...
Did not find a supported aclocal
さっきより進んだ気がしますが、今度はaclocal
がないと言われます。
aclocal
を入れるためにはautomake
パッケージを入れれば良いようです(というか入ってなかったのか)。
###automakeを入れる
$ sudo apt-get install automake
$ ./bootstrap.sh
== bootstraping yara
libtoolize...
libtoolize: putting auxiliary files in `.'.
libtoolize: linking file `./ltmain.sh'
libtoolize: putting macros in AC_CONFIG_MACRO_DIR, `m4'.
libtoolize: linking file `m4/libtool.m4'
libtoolize: linking file `m4/ltoptions.m4'
libtoolize: linking file `m4/ltsugar.m4'
libtoolize: linking file `m4/ltversion.m4'
libtoolize: linking file `m4/lt~obsolete.m4'
aclocal...
autoheader...
automake...
autoconf...
お、いけたっぽいです。
ということでコンパイルしていきたいと思います。
###コンパイルする
まず、必要なライブラリを入れます。
cuckooの場合、JSONをparseするためにJanssonを使っているそうなので予め入れる必要がありますが、libjansson-dev
に入っているようなのでインストールします。
さらにmagicにはlibmagic-dev
が必要みたいなのでそれもインストールしておきます。
不必要かもしれませんが、あとでハマるの嫌なので(もう疲れたのです)。
$ sudo apt-get install libjansson-dev libmagic-dev
インストールが終わったら、ドキュメントを見ます。
cuckooで使う場合は--enable-cuckoo
をつけないといけないみたいです。
なのでオプションを付けてmake
します。
$ ./configure --enable-cuckoo --enable-magic
(中略)
checking for pthread_create in -lpthread... yes
checking that generated files are newer than configure... done
configure: creating ./config.status
config.status: creating Makefile
config.status: creating libyara/Makefile
config.status: creating config.h
config.status: executing depfiles commands
config.status: executing libtool commands
$ make
$ sudo make install
特にエラーが出ていなければOKです。
###yara-pythonのインストール
Cuckooではyaraを入れたあとyara-pythonも必要なので、入れておきます。
先ほどyaraを落としてきた時のディレクトリ内に入っているのでビルドしてインストールするだけ!
簡単!(だと思ってました)
$ cd yara-python/
$ python setup.py build
$ sudo python setup.py install
これで準備が整ったので再度cuckooを実行してみます。
cuckoo.py
を実行したあと、適当なマルウェアをsubmit.py
によりsubmitしています。
$ python ~/cuckoo/cuckoo.py
_ _ _ _ _ _
/\ \ /\_\ /\ \ /\_\ /\ \ /\ \
/ \ \ / / / _ / \ \ / / / _ / \ \ / \ \
/ /\ \ \ \ \ \__ /\_\ / /\ \ \ / / / /\_\ / /\ \ \ / /\ \ \
/ / /\ \ \ \ \___\ / / // / /\ \ \ / / /__/ / / / / /\ \ \ / / /\ \ \
/ / / \ \_\ \__ / / / // / / \ \_\ / /\_____/ / / / / \ \_\ / / / \ \_\
/ / / \/_/ / / / / / // / / \/_/ / /\_______/ / / / / / // / / / / /
/ / / / / / / / // / / / / /\ \ \ / / / / / // / / / / /
/ / /________ / / /___/ / // / /________ / / / \ \ \ / / /___/ / // / /___/ / /
/ / /_________\/ / /____\/ // / /_________\/ / / \ \ \ / / /____\/ // / /____\/ /
\/____________/\/_________/ \/____________/\/_/ \_\_\\/_________/ \/_________/
Cuckoo Sandbox 1.2-dev
www.cuckoosandbox.org
Copyright (c) 2010-2014
Checking for updates...
Good! You have the latest version available.
2014-10-11 21:54:13,566 [lib.cuckoo.core.scheduler] INFO: Using "kvm" machine manager
2014-10-11 21:54:14,611 [lib.cuckoo.core.scheduler] INFO: Loaded 1 machine/s
2014-10-11 21:54:14,618 [lib.cuckoo.core.scheduler] INFO: Waiting for analysis tasks.
2014-10-11 21:54:22,819 [lib.cuckoo.core.scheduler] INFO: Starting analysis of FILE "/home/cuckoo/ZeuS_binary_9498ff82a64ff445398c8426ed63ea5b.exe" (task=7)
2014-10-11 21:54:22,830 [lib.cuckoo.core.scheduler] INFO: File already exists at "/home/cuckoo/cuckoo/storage/binaries/8b2e701e91101955c73865589a4c72999aeabc11043f712e05fdb1c17c4ab19a"
2014-10-11 21:54:22,959 [lib.cuckoo.core.scheduler] INFO: Task #7: acquired machine Windows7_default_1412852245584_47636 (label=Windows7_default_1412852245584_47636)
2014-10-11 21:54:22,967 [modules.auxiliary.sniffer] INFO: Started sniffer with PID 13437 (interface=hostonly0, host=192.168.124.2, dump path=/home/cuckoo/cuckoo/storage/analyses/7/dump.pcap)
2014-10-11 21:54:39,130 [lib.cuckoo.core.guest] INFO: Starting analysis on guest (id=Windows7_default_1412852245584_47636, ip=192.168.124.2)
2014-10-11 21:55:11,988 [lib.cuckoo.core.guest] INFO: Windows7_default_1412852245584_47636: analysis completed successfully
2014-10-11 21:55:13,435 [modules.processing.behavior] WARNING: Analysis results folder does not contain any file.
2014-10-11 21:55:13,843 [lib.cuckoo.common.objects] WARNING: Unable to import yara (please compile from sources)
2014-10-11 21:55:14,883 [lib.cuckoo.core.scheduler] INFO: Task #7: reports generation completed (path=/home/cuckoo/cuckoo/storage/analyses/7)
2014-10-11 21:55:15,028 [lib.cuckoo.core.scheduler] INFO: Task #7: analysis procedure completed
再びエラーが出ています。
悲しい...
WARNING: Unable to import yara (please compile from sources)
yara
をソースからコンパイルしろって?さっきやったよ!!
どうやらうまくimportできていないようです。
$ python
Python 2.7.6 (default, Mar 22 2014, 22:59:56)
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import yara
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: libyara.so.3: cannot open shared object file: No such file or directory
確かにimportできてない。
https://github.com/styx/YARA/tree/master/yara-python
を見ると、エラーが出たらldconfig
しろと書いてある。
http://www.atmarkit.co.jp/flinux/rensai/linuxtips/300sharelib.html によれば
/usr/local/libディレクトリが登録されていないので、ldconfigコマンドを実行する前に/etc/ld.so.confファイルを編集しなければならない。
ということらしい。
ということで
$ sudo su
# echo "/usr/local/lib" >> /etc/ld.so.conf
# ldconfig
してみる。
ld.so.conf
に既に/usr/local/lib
が書いてあれば恐らくldconfig
するだけで良い気がします。
ということで再挑戦。
$ python
Python 2.7.6 (default, Mar 22 2014, 22:59:56)
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import yara
>>>
今度はエラーが出なくなりました。
この状態で実行するとエラーが出なくなるはずです。
$ python ~/cuckoo/cuckoo.py
(中略)
2014-10-11 23:44:29,156 [lib.cuckoo.core.plugins] DEBUG: Running non-evented signatures
2014-10-11 23:44:29,156 [lib.cuckoo.core.plugins] DEBUG: Running signature "creates_exe"
2014-10-11 23:44:29,157 [lib.cuckoo.core.plugins] DEBUG: Running signature "generic_metrics"
2014-10-11 23:44:29,178 [lib.cuckoo.core.plugins] DEBUG: Executed reporting module "JsonDump"
2014-10-11 23:44:29,462 [lib.cuckoo.core.plugins] DEBUG: Executed reporting module "ReportHTML"
2014-10-11 23:44:29,462 [lib.cuckoo.core.scheduler] INFO: Task #18: reports generation completed (path=/home/cuckoo/cuckoo/storage/analyses/18)
2014-10-11 23:44:29,601 [lib.cuckoo.core.scheduler] INFO: Task #18: analysis procedure completed
これで良かったです。
#まとめ
試行錯誤してきた過程をそのまま載せましたが、まとめると
- Yaraのバージョンが違っているので新しいバージョンを入れる
- Yaraのコンパイルの際、必要なライブラリが足りていないのでそれらを入れる
- ld.so.confに/usr/local/libが入っていない場合は加える
という感じです。
以下がコマンド一覧です。
#コンパイル時に必要なライブラリなど
$ sudo apt-get install libtool automake
#Cuckooなどで使う場合に必要なライブラリなど
$ sudo apt-get install libjansson-dev libmagic-dev
#yaraの最新版を入れてコンパイルする
$ wget https://github.com/plusvic/yara/archive/v3.1.0.tar.gz
$ tar zxvf v3.1.0.tar.gz
$ cd yara-3.1.0/
$ ./bootstrap.sh
$ ./configure --enable-cuckoo --enable-magic
$ make
$ sudo make install
#yara-pythonをコンパイルする
$ cd yara-python/
$ python setup.py build
$ sudo python setup.py install
#ldconfigする
$ sudo su
# echo "/usr/local/lib" >> /etc/ld.so.conf
# ldconfig
これらの操作によって私の環境ではエラーが発生しなくなりました。
他の方の環境では分かりませんので自己責任でお願いします。