「YARAルール」とClamAV



今回は、ClamAVが対応したということを踏まえて、AntiVirusの「YARAルール」について簡単に触れてみます。


こんにちは。SIOS OSSエバンジェリスト/セキュリティ担当の面です。

今回は、ClamAVが対応したということを踏まえて、AntiVirusの「YARAルール」について簡単に触れてみます。


YARAとは

YARAとは、マルウェアの研究者たちのために作られた、マルウェアを検知・解析・分類するための、オープンソースのプログラム(Pythonベース)です。Windows/Linux/Mac OS Xと、幅広く対応しているマルチプラットフォームのツールで、『YARAルール』という文字列と条件、条件演算子、正規表現などを用いて、マルウェアのファミリーの記述を作成し、”yara”コマンドで

# yara [OPTION]... [RULEFILE]... FILE | PID

とすることで、ルールに沿ってFILE or PIDからマルウェアを検出します。

YARA ルールの構造は、以下のようになっています。

rule dummy
{
condition:
false
}

例えば、stingを用いて検知する場合には、以下のようになります。

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

HEX文字列では、WildCardのようにJump(4-6byteのスキップ)を指定することも出来ます。例えば

rule JumpExample
{
strings:
$hex_string = { F4 23 [4-6] 62 B4 }
condition:
$hex_string
}

この場合には、下記のようなパターンが対照となります。

F4 23 01 02 03 04 62 B4
F4 23 00 00 00 00 00 62 B4
F4 23 15 82 A3 04 45 22 62 B4

YARAルールのSample

代表的なYARAルールは、http://yararules.com/からダウンロードできます。

以下では、テキストでマッチする簡単なYARA Ruleを作ってテストしてみます。。

sampe_text.yar)

rule YARA_Rule_Sample {
strings:
$my_text_string = "Test"
condition:
$my_text_string
}

下記のようなサンプルのtextファイルを用意します。

sample_malware.txt)

This is a Test file
"Test Test Test"

yaraを用いてスキャンすると、該当するRule節が表示されます。

$ yara sample_text.yar sample_malware.txt
Example_Rule sample_malware.txt

YARA情報とセキュリティベンダ

例えば、ESETでは、2014年3月に起きた、「Windigo(OpenSSHの脆弱性をついて認証情報を盗み、そのサーバを汚染して大量のスパムを送信したり、攻撃サイトへリダイレクトしたりする攻撃)」を検知するために、snort(IDS)およびYARAのルールファイルを公開しています。

また、RSAのセキュリティモニタリング/SIEMソリューションである『Security Analytics』製品でも、YARAをベースにしたビルトインの組み込み型IOC(セキュリティ侵害インジケータ)を用いており、RSA Liveで公開しています。

このように、最近では代表的なセキュリティベンダが、攻撃検知や解析のためにYARAを用いる/サポートする事が増えてきています。

ClamAVとYARA

ClamAVでは0.99からYARAをサポートするようになっており、clamscanなどでYARA Ruleファイルをシグネチャとしてスキャンすることが可能となっています。

ClamAVでYARAを使用するときには、以下のように使用します。

  • YARA Ruleを”.yar”または”.yara”という拡張子で、clamavのDBがあるディレクトリ(例えば、Debianの場合には/var/lib/clamav)に配置します。
  • user@localhost:/var/lib/clamav$ ls
    bytecode.cvd  daily.cvd  main.cvd  mirrors.dat  sample_text.yar
    user@localhost:/var/lib/clamav$ clamscan /tmp/sample_malware.txt
    /tmp/sample_malware.txt: YARA.Example_Rule.UNOFFICIAL FOUND
    ----------- SCAN SUMMARY -----------
    Known viruses: 4137933
    Engine version: 0.99
    Scanned directories: 0
    Scanned files: 1
    Infected files: 1
    Data scanned: 0.00 MB
    Data read: 0.00 MB (ratio 0.00:1)
    Time: 7.264 sec (0 m 7 s)
    

    YARAルールに該当していないファイルの場合には以下のようになります。

    user@localhost:/var/lib/clamav$ clamscan /tmp/test123.txt
    /tmp/test123.txt: OK
    ----------- SCAN SUMMARY -----------
    Known viruses: 4137933
    Engine version: 0.99
    Scanned directories: 0
    Scanned files: 1
    Infected files: 0
    Data scanned: 0.00 MB
    Data read: 0.00 MB (ratio 0.00:1)
    Time: 7.178 sec (0 m 7 s)
    
  • YARA Ruleのファイル(“.yar”)をclamscanなどで直接”–database=”で指定する。
  • 以下のように指定してスキャンします。

    user@localhost:/tmp$ clamscan --database=sample_text.yar ./sample_malware.txt
    ./sample_malware.txt: YARA.Example_Rule.UNOFFICIAL FOUND
    ----------- SCAN SUMMARY -----------
    Known viruses: 1
    Engine version: 0.99
    Scanned directories: 0
    Scanned files: 1
    Infected files: 1
    Data scanned: 0.00 MB
    Data read: 0.00 MB (ratio 0.00:1)
    Time: 0.003 sec (0 m 0 s)
    

まとめ

YARAはセキュリティベンダーやOSS製品が、検知や解析のために使用するものとして取り込まれてきています。YARAルールは簡単ですので、一度テストしてみたほうが良いかと思われます。


[参考]

http://blog.clamav.net/2015/06/clamav-099b-meets-yara.html

https://bruteforce.gr/yara-a-beginners-guide.html

セキュリティ系連載案内


セミナー情報 1

2018年10月22日から10月25日のCSS(Computer Security Symposium)2018で、「OSSセキュリティ技術ワークショップ(OWS) 2018特別セッション」 と題しまして、OSSセキュリティ技術の会後援で特別セッションを開催します。

https://www.iwsec.org/ows/2018/index.htmlにプログラム内容と一般論文申し込みの詳細を載せていきますので、是非御確認下さい(ページは更新中です)。

タイトルとURLをコピーしました