曖昧

確かなことなんてなにもない

趣味でやるマルウェア解析

はじめに

これはセキュリティキャンプ 修了生進捗 #seccamp OB/OG Advent Calendar 2018 の22日目の記事です

今夏のセキュリティキャンプのチューターをやったときあたりから、本格的にマルウェア解析に興味が湧いてきたので、色々調べたことを公開するエントリを書くことにしました。マルウェア解析というものは独学でやるには敷居もリスクも高く、企業や研究機関に所属していないと本格的に行うことは難しいと思います。そこで、ここでは趣味でやるマルウェア解析と称して、出来るだけ敷居を下げられるように色々とマルウェア解析関連の資料をまとめました。

ただ、私はマルウェア解析については全くの初心者で、このエントリで私がマルウェア解析について指南することは基本的にありませんし、載せているリンクも質を保証するものではありません。ここでまとめているものは私がぱっと見で良さそうと思ったものであり、私自身に対するこれからの課題でもあります。

環境構築

マルウェア解析をするにあたって環境構築は重要な項目になります。間違っても(少なくとも趣味の範囲では)実機でマルウェアを動作させるのはいけませんし、仮想環境上でも適切な設定を行わなければなりません。この辺りの注意事項については暗黙の了解なのか詳しく書いてあるところはあまりなく、私がみた中ではこちらの書籍の環境構築の部分に詳しく書いてあります。

Practical Malware Analysis: The Hands-On Guide to Dissecting Malicious Software

Practical Malware Analysis: The Hands-On Guide to Dissecting Malicious Software

アナライジング・マルウェア ―フリーツールを使った感染事案対処 (Art Of Reversing)

アナライジング・マルウェア ―フリーツールを使った感染事案対処 (Art Of Reversing)

マルウェア解析の環境は主にwindowsになると思います。そのほかのOSのマルウェアももちろん存在しますが、一般的なwindowsのシェアからか、マルウェアも主にwindows上で動作するものが多い印象です。これから始めるならwindowsの用意が必須になります。しかしwindowsは有料で安くはないので私はこちらのサービスを使いました。

developer.microsoft.com 前はmodern.IEと呼ばれていたものですが、名前だけ変わっています。windowsのバージョンも選べるので便利。

マルウェア解析では非常に多様なツールを使用します。

github.com

ツールなどの用意はこのツールで簡単にできてしまいます。簡単な手順で主要なツールを導入してくれます。インストール方法など詳細はこちらにも書いてありますが、インストールはgithubのREADMEに従ってやるのが良いと思います。動画でも紹介されていますが、この動画と同じようにできるかどうかは保証できません(実際私は失敗した)ので、実際にやるときには公式のサイトを参考にすると良いです。でも、ツールの紹介などをしてくれるので一度見ておくと良いと思います。

https://www.fireeye.com/blog/threat-research/2018/11/flare-vm-update.html


Fastest Malware Analysis Lab Setup With FREE VM and Tools

しかし、解析系のツールは非常に多く、似たようなものもいろいろあります。その中で選ぶのは本当に好みに左右されることもあり、FLAREVMではその全てを導入してくれるわけではありません。慣れてきたらいろいろ使ってみて自分の環境を揃えて行くと良いかもしれません。

PEフォーマット

windowsマルウェアを解析する際、windowsの実行可能ファイルの形式であるPEフォーマットについての知識は必須です。日本語の資料だと、上記のアナライジングマルウェアや、以下のものが良いと思います。

www.atmarkit.co.jp

codezine.jp

マルウェア解析系の記事や資料には冒頭にPEの解説が入ることがよくありますので、これだけをずっと読むよりは色々見ていく方が良いと思います。 またこれはよく言われていることなのですが、PEフォーマットはかなり複雑なものになっていて、全てを暗記して理解している人は少ないらしいです。なので全体をざっと理解して、よく参照される部分(インポートテーブルなど)の繋がりを理解しておけば、良いと思います。

ちなみに、PEフォーマットの全体像を一枚にまとめたPDFがあります。

PEformat

眺める程度に一度見ておくと面白いです。

解析

マルウェアを解析するには表層解析、静的解析、動的解析があると言われていますが、基本的に何をするにしてもアセンブリ言語の知識は必須だと思っています。また、私がフォレンジックツールなどを用いて解析するよりもアセンブリ言語を読んだりする方が好きなことから、リバースエンジニアリングの方をまとめていくことにしました。 まず、マルウェアリバースエンジニアリングの入門にはこちらの書籍が良かったです。ソフトウェアの実行の仕組みからアセンブリ言語の解説、簡易デバッガの作成やシリアルコード抽出まで色々とやっているので結構楽しんで読めると思います。

デバッガによるx86プログラム解析入門【x64対応版】

デバッガによるx86プログラム解析入門【x64対応版】

また直接マルウェア解析と関係はないですが、著者のサイトも面白いです。

他にはこちらがかなり参考になると思います。上記の書籍よりもアンチデバッグや難読化についての記述が多く、C++やDLLの解析についても書かれています。

リバースエンジニアリングバイブル ~コード再創造の美学~

リバースエンジニアリングバイブル ~コード再創造の美学~

次に、マルウェア解析全般的に解説してくれているサイトです。

このサイトはかなり読みやすくて、絵やGIFも多用されていてわかりやすいと思います。

malwareunicorn.org - RE101

また、海外では動画でマルウェア解析関連の動画がよく上がっています。チャンネルをいくつか載せておきます。

www.youtube.com

www.youtube.com

www.youtube.com

マルウェア解析というよりはライブアンパッキングという感じですが面白いです。その他マルウェア解析系の様々な技術の紹介をしてくれたりします。

最後に、結構有名なものだとは思いますが、OPEN SECURITY TRANINGがあります。こちらはコンピュータセキュリティに関する様々な技術の資料や講義がフリーで公開されています。マルウェア解析だと以下のようなものが良いと思います。

IntroX86

IntroductionToReverseEngineering

MalwareDynamicAnalysis

ReverseEngineeringMalware

資料も講義の動画も全部英語の上、ボリュームもすごいことになっているので全部すぐに理解するのは難しいとは思いますが、いろんなところからリンクを貼られているので、質はお墨付きではないかと思います。

また、OpenSecurityのトレーニングに載っているこちらの画像によると、マルウェア解析のスキルツリーはこのようになっているらしく、この通りに技術をつけていきたいですね。

f:id:attox:20181222174523j:plain

解析は実際に手を動かして経験を積むのが一番なのですが、いきなりマルウェアを読み始めたりするのは億劫になる人もいると思うので、こういうCrackMeと呼ばれるようなトレーニングで色々触ってみると良いと思います。

www.malwaretech.com

blog.malwarebytes.com

あとは、CTFのbinaryやreversingといったカテゴリーの問題を解くのも良いと思います。

検体

マルウェアを解析しようと思っても肝心のマルウェアがなければ話になりません。ハニーポットを建てて自分で集めるのも良いですが、すでに公開されている検体をもらってくるのが最も簡単な方法です。こちらで色々公開されています。普通にマルウェアなので取り扱いには重々注意してください。

VirusTotalです。ファイルをアップロードしたら色々解析してくれるサービスですが、課金ユーザーになるとアップロードされたファイルをダウンロードできるようになります。 VirusTotal

こちらも同じようなサービスですが、無料でもアップロードされたファイルをダウンロードできます。

https://www.hybrid-analysis.com/

以下、マルウェアがまとめられているサイトなどです。 malshare.com

https://83.133.184.251/virensimulation.org/

news

マルウェアなどの動向は絶えず変化し続けていくので、最新の情報を常に取得することが大切だと思います。プロの方々は人それぞれ情報網を持っていたり、選別したサイトなどを見てキャッチアップしていると思います。この辺りは僕も本当に知りたいところなのですが、個人的に良いなと思ったニュースサイトを上げていきます。

この辺りは有名ですし、日本語で書いてあって読みやすいし良いと思います。

blog.trendmicro.co.jp

blog.kaspersky.co.jp

japan.zdnet.com

英語ですが、マルウェア関連のニュースを多く扱っているサイトです。

blog.malwarebytes.com

www.bleepingcomputer.com

redditのセキュリティ系のチャンネルです。

www.reddit.com

その他、自分はここを見ている、こうやって情報収拾しているというものあれば、コメントなどで教えていただけると嬉しいです!

おわりに

本来は全く別の技術的な記事を書くつもりだったのですが進捗が全然間に合わず、急遽別の候補であるこの記事を書きました。まともな文章も書かず、ムラだらけのリンク集みたいな記事になってしまい すみません。

はじめにでも書いたようにこれは私自身への課題という側面があるのですが、こういう記事を見てマルウェア解析に興味を持って、一緒に勉強してくれる人が出てきてくれたら嬉しいなという思いもあります。

来年の今頃にはもっと技術的に面白い記事が書けるように頑張ります。

明日は tmyk_kym さんの記事です。