こんにちは。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)
以下のように指定してスキャンします。
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
セキュリティ系連載案内
OSSセキュリティ技術の会による日経Linuxでの連載「IoT時代の最新SELinux入門」がITPro上で読めるようになりました。技術の会代表で第一人者である中村さん等による、最新のSELinuxの情報やコマンド類等も更新されているのでお薦めです。
OSSセキュリティ技術の会によるThinkITでの連載「開発者のためのセキュリティ実践講座」がThinkIT上で開始しました。技術の会の中の人間で、最新の代表的なOSSセキュリティ技術を紹介していきます。
OSSセキュリティ技術の会により、ThinkITでLinuxSecuritySummit 2017のレポートが紹介されています。
OSSセキュリティ技術の会の面により、@ITで「OSS脆弱性ウォッチ」が連載されています。
OSSセキュリティ技術の会の面により、@ITで「OpenSCAPで脆弱性対策はどう変わる?」が連載されています。
セミナー情報 1
2018年10月22日から10月25日のCSS(Computer Security Symposium)2018で、「OSSセキュリティ技術ワークショップ(OWS) 2018特別セッション」 と題しまして、OSSセキュリティ技術の会後援で特別セッションを開催します。
https://www.iwsec.org/ows/2018/index.htmlにプログラム内容と一般論文申し込みの詳細を載せていきますので、是非御確認下さい(ページは更新中です)。