LoginSignup
4
6

More than 5 years have passed since last update.

Cuckoo Sandboxの実行でYaraのエラーが出る

Last updated at Posted at 2014-10-12

Cuckoo Sandboxを実行したらYaraに関して怒られたので、その原因の調査と解決策です。
原因がバージョンにあると考え、Yaraの違うバージョンを入れようとしたら更に詰まったので、忘れないようにメモ。
エラーを一つ解決すると新しいエラーが登場してくれるおかげで退屈せずにすみました。
本来自分用であるということと、同じエラーが出た人の少しでも役に立てばと考えて、試行錯誤した過程をそのまま書いてますが、一応最後にまとめてあります。

参考

環境

  • 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

これで良かったです。

まとめ

試行錯誤してきた過程をそのまま載せましたが、まとめると
1. Yaraのバージョンが違っているので新しいバージョンを入れる
2. Yaraのコンパイルの際、必要なライブラリが足りていないのでそれらを入れる
3. 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

これらの操作によって私の環境ではエラーが発生しなくなりました。
他の方の環境では分かりませんので自己責任でお願いします。

4
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
6