なにやら(yara)

はじめに

【紹介・導入の巻】です。yaraについて深く知りたい人や実際使ったことある方は見なくても大丈夫です。

YARAとは?

YARAはマルウェアの解析といった情報セキュリティ方面に有用なツールです。

YARA is a tool aimed at (but not limited to) helping malware researchers to identify and classify malware samples. With YARA you can create descriptions of malware families (or whatever you want to describe) based on textual or binary patterns. Each description, a.k.a rule, consists of a set of strings and a boolean expression which determine its logic.

YARAは、マルウェアのサンプルを識別し、分類するためのマルウェア研究者を支援(これらに限定されない)ことを目的としたツールです。 YARAを使用すると、テキストまたはバイナリパターンに基づいて、(あなたが記述したいか、何でも)マルウェアファミリの記述を作成することができます。それぞれの説明は、ルールa.k.a、文字列の集合とその論理を決定するブール式で構成されています。

導入&インストール

自分の環境

インストール

https://github.com/VirusTotal/yara/releasesからファイルをインストールする。

tar -zxf yara-3.5.0.tar.gz
cd yara-3.5.0
./bootstrap.sh

不足しているパッケージのインストール sudo apt-get automake libtool make gcc

YARAのソースコードを変更する予定がある場合は、lexersとparserを生成するためのパッケージのインストール sudo apt-get flex bison コンパイル

./configure
make
sudo make install

簡易インストール

sudo apt install yara

Pythonのモジュールをインストール

sudo apt install python3-yara

はい、簡単。

YARA の使い方。

Usage: yara [OPTION]... RULES_FILE FILE | DIR | PID

とりあえず、試す。

echo "rule dummy { condition: true }" > my_first_rule
yara my_first_rule my_first_rule

そうすると出力が以下のようになります。

dummy my_first_rule

YARAを試して見る。

ルールファイルを以下のように記載する。

rule ExampleRule
{
    strings:
        $my_text_string = "sample text"
        $my_hex_string = { E2 34 A1 C8 23 FB }

    condition:
        $my_text_string or $my_hex_string
}

sampleテキストを作る

echo "sample text" >> sample.txt

実行する。

$yara my_first_rule sample.txt 

以下の出力が出れば成功です。

ExampleRule sample.txt

参照

YARA - The pattern matching swiss knife for malware researchers

うさみみハリケーン Ver 0.25 最新オンラインヘルプ

Welcome to YARA’s documentation! — yara 3.5.0 documentation

さいごに

ミスや誤りがありましたら指摘をおねがいします。公式のチュートリアルが充実しているので詳しいルールはこちらを見て下さい!! 自分がマルウェア解析の初心者(以下)でバイナリ読解力や脆弱性に関する知識もまだまだ全然、ありません。 なので興味のある方や自分より遥か上に居られる方ともお話をしたいので このブログを見られた方はTwitterなどで喋りかけてください。