17771 views
マルウェア解析に必要な素養 ==== 筆者:[友利奈緒 (@K_atc)](https://twitter.com/K_atc) __ターゲットの読者__ マルウェアの感染原理を少し知っている程度、マルウェアの事例をいくつか知っている程度の者で、かつ、ここで得た知識を善行に役立てられる者。 :::danger 怪物と闘う者は、その過程で自らが怪物と化さぬよう心せよ。おまえが長く深淵を覗くならば、深淵もまた等しくおまえを見返すのだ。 (フリードリヒ・ニーチェ) ::: __目標__ マルウェアが絡んだ事情を体系的に学ぶ。攻撃者、防衛者、解析者の各視点から"マルウェア"のチョメチョメを理解する。インターネットで公開しているメリットを活かすため、取り上げる情報はなるべく3年以内程度のものを優先し、古いもの(イカタコウイルスとか…キーロガーとか…)は取り上げないか、簡単に済ませる。 __お断り__ 日本語資料優先なので情報源が偏っています(最近の加筆分はそんなことないですが)。気が向いたときに執筆しているので __気長に完成を待ってください__ 。(裏話をすると、このメモの執筆は勉強と知識の体系化を目的としていますw)  アセンブリ解析を伴う実践的な解析技術は、セキュリティベンダやセキュリティカンファレンスで開催される高額なトレーニングなどで会得できるかと思いますので、そのトレーニングで言及されないと思われるトピックを優先して書いています。  未熟な者が本書を見て攻撃を試すことがないように、試しやすい攻撃技術の説明はかなりぼかして書いています。また、ワームの拡散に関わる脆弱なシステムの探索~ペネトレーション(侵入)までの一連の方法は汎用目的で悪用されるとまずいので解説の対象外とします。必要に応じて部分部分の解説はしますが、知っていることすべては書きません。この内容を会得したい方はSANSのトレーニング(例えば国内でも開催されるSEC504)や、25歳未満の場合はセキュリティ・キャンプの地方大会(※ただしかなりぼかしが効きます)など受講をすることをおすすめします。  個人的な主義で外来語の表記(特に長音付けルール)は[文科省の通達](http://www.mext.go.jp/b_menu/hakusho/nc/k19910628002/k19910628002.html)に従っています。C言語を理解しているものとして話を進めます。 マルウェアと法律 ---- 序章に先んじて、マルウェアに関わる法律面に触れる。 **TODO**: * 不正アクセス禁止法 ### 不正指令電磁的記録に関する罪 (電磁的記録不正作出及び供用) 第百六十一条の二 人の事務処理を誤らせる目的で、その事務処理の用に供する権利、義務又は事実証明に関する電磁的記録を不正に作った者は、五年以下の懲役又は五十万円以下の罰金に処する。 2 前項の罪が公務所又は公務員により作られるべき電磁的記録に係るときは、十年以下の懲役又は百万円以下の罰金に処する。 3 不正に作られた権利、義務又は事実証明に関する電磁的記録を、第一項の目的で、人の事務処理の用に供した者は、その電磁的記録を不正に作った者と同一の刑に処する。 4 前項の罪の未遂は、罰する。 (不正指令電磁的記録作成等) 第百六十八条の二 正当な理由がないのに、人の電子計算機における実行の用に供する目的で、次に掲げる電磁的記録その他の記録を作成し、又は提供した者は、三年以下の懲役又は五十万円以下の罰金に処する。 一 人が電子計算機を使用するに際してその意図に沿うべき動作をさせず、又はその意図に反する動作をさせるべき不正な指令を与える電磁的記録 二 前号に掲げるもののほか、同号の不正な指令を記述した電磁的記録その他の記録 2 正当な理由がないのに、前項第一号に掲げる電磁的記録を人の電子計算機における実行の用に供した者も、同項と同様とする。 3 前項の罪の未遂は、罰する。 (不正指令電磁的記録取得等) 第百六十八条の三 正当な理由がないのに、前条第一項の目的で、同項各号に掲げる電磁的記録その他の記録を取得し、又は保管した者は、二年以下の懲役又は三十万円以下の罰金に処する。 [不正指令電磁的記録に関する罪 警視庁](http://www.keishicho.metro.tokyo.jp/kurashi/cyber/law/virus.html) > __ウイルス作成・提供罪とは__ > 正当な目的がないのに、その使用者の意図とは無関係に勝手に実行されるようにする目的で、コンピュータ・ウイルスやコンピュータ・ウイルスのプログラム(ソースコード)を作成、提供する行為をいいます。 3年以下の懲役又は50万円以下の罰金が課せられます。 > > __ウイルス供用罪とは__ > > 正当な目的がないのに、コンピュータ・ウイルスを、その使用者の意図とは無関係に勝手に実行される状態にした場合や、その状態にしようとした行為をいいます。 > 3年以下の懲役又は50万円以下の罰金が課せられます。 > > __ウイルスの取得・保管罪とは__ > > 正当な目的がないのに、その使用者の意図とは無関係に勝手に実行されるようにする目的で、コンピュータ・ウイルスやコンピュータ・ウイルスのソースコードを取得、保管する行為をいいます。 > 2年以下の懲役又は30万円以下の罰金が課せられます。 法律家による解説: * [刑事法・刑事弁護トピックス(1) 平成23年刑法等の改正(コンピュータ・ウイルス作成罪等の新設等の改正)|川井総合法律事務所](http://www.kawailaw-japan.com/computervirus.html) ### 「マルウェアを作成しました」と言うその前に 「マルウェアを作成しました」という表現は、周りの人から上記法律の要件を満たす不正指令電磁的記録を作成したと見られてしまいます。以下のような表現が適切です。 * 模擬マルウェア * 疑似マルウェア * マルウェアもどき * マルウェアのようなもの * 評価用マルウェア まずアセンブリ(正確にはELF/PEバイナリ)と英語を読めるようになろう ---- アセンブリを読むのに慣れない者がIDA Proをいきなり使うのは時期尚早と考える。objdumpでもわかるのはどこまでか、IDA Proが気を利かせて表示してくれる情報がPE/ELFのどこを見たものなのかということをIDAを前にして察することができるくらいに、まずobjdumpを使い倒して欲しい。IDAを使い始めるのはその後だ。 アセンブリが初めてで、本を読んで学びたい場合は以下の本が良いと思われる。リストの下にある本ほど内容が高度である。 * セキュリティコンテストチャレンジブック CTFで学ぼう!情報を守るための戦い方 * 自作エミュレータで学ぶx86アーキテクチャ * x64はx86とはだいぶ違うので注意。 * コンピュータの構成と設計 第5版 上 * 時間があればこの本でしっかり学ぶとGood * 大学の情報系の専門科目で使われる本。通称パタヘネ。 アセンブリというものが分かってきたら、デコンパイラを使わずにバイナリをリバーシングすることをおすすめする。題材はCTF(Capture The Flagの略。セキュリティの競技の1つ)のReversingカテゴリで出題されるような問題がやりやすい。次におすすめを示す。 * https://ctf.lse.epita.fr/ex/ (Crackme) * http://reversing.kr/challenge.php 分からない命令があったら公式ドキュメントを読もう。Intelなら以下のサイトで配布されている。この資料はバイナリアン必携と言ってもいい。その命令の引数のパターンではなく、疑似命令を覚えておくことを勧める。 Intel® 64 and IA-32 Architectures Software Developer Manuals https://software.intel.com/en-us/articles/intel-sdm 英語が読めない、読むのにすごく時間がかかってしまうのは致命的だ。レベルを抑えた英語の本やニュースサイト(gizmodeの本家とか?)が世の中にあるのでたくさん読むといいと思う。いつそれを始めるかは問題ではないと思う。個人的には中学・高校で読まされるOxfordの"薄い本"を多読することで英語を読むことの抵抗感が薄れた感じがする。 (余談だが、大学の英語の先生曰く、英語力の高さはその人の母国語の運用能力で抑えられてしまうらしい。日本語の上達も大事ということだ。) 計算機アーキテクチャとOSの仕組みを知ろう ---- マルウェア解析の場面では以下の用語に出くわすだろう。 * カーネルモード、ユーザーモード * ハイパーバイザー、モニター * システムコール(syscall) * コンパイル * 動的リンクライブラリ(DLL) * ローダー * ヒープ領域、スタック領域 * 仮想アドレス、実アドレス ※PEの話ではない これらの用語は、大学の学部で「計算機ハードウェア/アーキテクチャ」と「オペレーティングシステム」というような名前の講義で出てくるものである。未履修の方には次の本を推薦する。(ただ講義の"教科書"なので初学者が独習するのは大変すぎるかもしれない。←手っ取り早いのは大学に入ることですかね)マルウェア解析の世界を堪能するために、この辺の理解を期待する。 * コンピュータの構成と設計 第5版 上/下 * 大学の単位6単位相当のボリューム * 前時代的な内容が出てくるが、基本的に網羅的に書かれている良い本 * [オぺレーティングシステム (IT Text) ](https://www.amazon.co.jp//dp/4274132501/) * 小さくて薄い教科書だが、内容がしっかり詰まっている良書 * 大学の単位2単位相当のボリューム 本やインターネットとうまく接しよう ---- 逆アセンブラをうまく使えるように練習を重ねるのもいいが、本やインターネットで知識をため込んでいくことも大事だ。以下におすすめ(?)の資料を紹介する。簡単な書評も付けた。もちろんOSSのソースコードも資料扱いする。 個人的におすすめな本の付き合い方は、書かれていることを覚えはしないが理解しつつ、何がどこに書かれていたのかを覚えておくとよい。たくさん読んでも苦になりにくいし、読む速度が安定するので1週間以内に読み切れる。 最後まで読めずに積読してしまう人は、1週間で読み切ることを目標にするとよいでしょう。読みきれなかったら諦めて次の本を読むのが一番です。 うまく理解できない内容に直面したら、そこを読むのに時間をかけないほうがよいです。次の章はその内容とは関係ない話のはずなので飛ばしても問題ないです。自己研鑽なのでそれをしても誰も減点しないよ。うまく理解できなかった内容は、同じことを説明している他の人の本・記事を何本か読むと理解できたりします。 [余談](工学部生向けの)数学書は、証明を自分でし直しながら読むことはしないと理解したつもりで終わってしまいますよ。単位を取れればいいや~の気持ちでは半人前です。 【高校生・大学生の方へ】お財布事情で本を買い込むことに抵抗があるかもしれませんが、読めば値段以上の価値のある知識を得られます。ためらわず読み進めていって欲しいと思います。(人によりますが、今はIPAの未踏や、サイボウズラボユースや、ラックのすごうでなどの若者支援プログラム的なもので簡単にペイできたりしますね。)。  1週間でさくっと読んでしまう速読派は、図書館に購入申請するとよいでしょう。好意的に対応してくれるはずです。 以下のリストにはExploitに関する資料が含まれている。Exploitはマルウェアの本質ではないが、いずれ必要になる知識なので遅くならないうちに理解して欲しい。ExploitはスタックBOFでさえも初心者には難解な内容であり、ブラウザエクスプロイトでも使われるようなUAF、ROPまで実践していると長い学習時間が必要になると思われる(筆者は思い出したときに勉強したので1年くらい要した)。 __資料名の前の記号の意味__:\* 特におすすめ(手元においておきたい)/\*\* 必読 ### Baby * [最短距離でマルウェア解析職人になる方法 - @IT](http://www.atmarkit.co.jp/fsecurity/column/ueno/61.html) * セキュリティコンテストチャレンジブック CTFで学ぼう!情報を守るための戦い方 * Exploitの触りとして十分 * [CTFのだいたいジャンルはバイナリ解析らしい](https://twitter.com/oudon8101/status/649191923513626624)(あながち間違っていない) ### Easy * \* たのしいバイナリの歩き方 * Exploitの説明が遠回しな感じがしたので「セキュリティコンテストチャレンジブック(以下略」を併読すると良さそう。アセンブリの知識はさほど必要でない。 * 第5章の「ツールを駆使してより深い世界へ」が他の本にない内容で自分好み * \* [セキュア・プログラミング講座 > C/C\+\+言語編 > 総論 > C/C\+\+がもたらす問題](https://www.ipa.go.jp/security/awareness/vendor/programmingv2/clanguage.html) の「著名な脆弱性対策」 * ○○脆弱性って何?となった時にここを見ると大体載っていたりする。説明が分かりやすく、例も載っている。初心者はここを一通り見ておくことを求める * \* 実践Metasploit * Metasploitについては[別章](#metasploit)を参照 * マルウェアとは直接関係がないツールだけど、セキュリティ従事者なら知ってて損はないはず * \* [Ransomware - Defending Against Digital Extortion](http://shop.oreilly.com/product/0636920054290.do) (2016/11; O'Reilly Media) * これから初めてランサムウェアに触れるよって人は、いろんな解析記事を読む前に読んだほうがいいかも。典型的な動きとか対策時の注意点が書かれている。 * 聞きなれない単語が多くて少し難しく感じる(※個人の感想です)。第1章はポエム気味。 * \*\* 『マスタリングTCP/IP』シリーズ * 少なくとも基礎編・応用編の内容は知っていたほうがよい * 情報系の学部でもここまで教えないので、さっさと読んだほうが得かも? ### Medium Easy * \*\* Practical Malware Analysis * 「リバースエンジニアリングバイブル」を先に読むと復習として読める。内容の重複は多いように見えるが、本書はWindowsのInternalに少し触れている。セキュリティ系の研究室で、学部4年生の輪講で使用されることもある。Easy〜Medium Easyといった難易度。 * \* Haking: 美しき策謀(第二版) * 書式文字列攻撃(Format String Bug;FSB)に重点を置いている * FSBの説明は他の資料でよくされており、必ずしも先んじて読むべき本とはいえない * 攻撃を検知されないための工夫にもかなりのページ数を割いている * [サイバーセキュリティプログラミング――Pythonで学ぶハッカーの思考](http://www.oreilly.co.jp/books/9784873117317/) * タイトルが本書の内容をかけ離れている印象(←日本での出版の都合でそうなったらしいが)。付け直すならば「マルウェア開発に役立つ技術とPythonによる実装」かな * 付録は日本語版のオリジナルで、原書Black Hat Pythonにはない。お得感が半端ない * マルウェアがPythonを使うことがあるので、ここに書かれていることは現実的な話である。Pythonでマルウェアがおこなう攻撃の要素技術について書かれている * 実装は単純であり、読まないといけないというわけではない(仕組みを理解していればわざわざ読むものでもない気がする) * サンドボックス検知の初心者には付録Bの「さまざまなサンドボックス検知」は興味深い内容で面白い。付録目当てで買ってもよいくらいである(実のところ、筆者はこの章を一番楽しみにしていた) * \* [slide shareに上がっているbataさんの資料](http://www.slideshare.net/bata_24/) * マルウェアでも用いられるExploitの手法の図解があり分かりやすい * 時間があれば題材になっているCTFのpwn問題を解くと理解が進む * ガチャピン先生の[\*\* malloc動画](https://www.youtube.com/watch?v=0-vWT-t0UHg)も見よう * [urandom vol.1](http://urandom-ctf.github.io/post/c89-digital-book/) * 日本語同人誌 * IDA ProのPythonプラグインの作成方法の言及あり * \*\* [ももいろテクノロジー(ももテク)](http://inaz2.hatenablog.com/) * 基本的なExploit手法を丁寧に試している。USENIX(セキュリティ系学会のトップカンファレンス)の論文で引用されることが度々ある * \* [アナライジング・マルウェア](https://www.oreilly.co.jp/books/9784873114552/)(初版2010年) * 翻訳本と見せかけて日本発の本。フリーツールでマルウェアを解析してみた、という内容。 * 32ビット時代の本なので、64ビットが主流の今どうすればよいのかという疑問には答えてくれないので注意 * [ブラウザハック](https://www.amazon.co.jp/dp/479814343X/) * 不正通信の話あり * \*\* [体系的に学ぶ 安全なWebアプリケーションの作り方 脆弱性が生まれる原理と対策の実践](https://www.amazon.co.jp/dp/4797361190) (2011年;通称、徳丸本) * Webマルウェアと関連がある内容。マルウェアの感染原理(攻撃ベクター)の理解のために、ここに書かれていることは知っていることを求める ### Medium Hard * \*\* リバースエンジニアリングバイブル * 本当にReversingに特化した内容。文章が少し読みづらく感じたのは筆者の実力不足?(読み通すのに一週間かかってしまった) * Anti-Debuggerやパッカーに関する記述もある。バイナリ初心者は必読 * [Return-oriented programming以後 | 一生あとで読んでろ](http://ntddk.github.io/2014/09/11/after-rop/) * エクスプロイトの話。分かっている人向け * The Art of Memory Forensics * Medium Hardかな…。量が多いのでvolatilityとWinDbgの逆引きとして使うと良さげ * volatilityは独特な操作感なので、一度動かしてみた後に読み進めると理解しやすい ### Hard * [phrack](http://phrack.org/) * 2017年3月31日、FBIにサイトを遮断される事件が発生したが、しれっと同年5月に新しいIssueが発行された。2012年ぶり。 ### 読んでいないため判定不能 * \*\* [The Antivirus Hacker's Handbook (Wiley)](http://as.wiley.com/WileyCDA/WileyTitle/productCd-1119028752.html) (2015/9) * \*\* [Windows Internals (7th Edition)](https://www.amazon.co.jp/dp/0735684189) (2017/5) * 避けては通れない道…。Windows 10の話題は少なめ?(WSLは軽くしか書かれてない) * WSL→[Windows Subsystem for Linux Internals // Speaker Deck](https://speakerdeck.com/ntddk/windows-subsystem-for-linux-internals) (2016/10/8) * [C/C++ セキュアコーディング 第2版](https://www.jpcert.or.jp/securecoding_book_2nd.html) * Binary Hacks * [Wizard Bible](http://wizardbible.org/) * **TODO**:読むと勉強になるセキュリティ関係のソフトウェアソースコードを推薦 * [YARA](http://virustotal.github.io/yara/) * ファイルの特徴をルールベースで検出するOSSソフトウェア * ルールファイルの文法定義ファイル(yファイル)は読むには地獄です。 * libyara/modulesの中のコードを読むのがおすすめです。かなり読みやすい部類のコードです。 * [ClamAV](https://github.com/vrtadmin/clamav-devel) - OSSのパターンファイルベースのマルウェア検知ソフト(精度がよろしくないように見える)。YARAルールでシグネチャを自作できるので勉強用としていいかも(詳細は『たのしいバイナリの歩き方』を参照されたし)。ドキュメントが充実している * ヒューリスティック検出もしてるっぽい?(検出名から判断) * **TODO**:読むと勉強になるAnti-Malware/Anti-anti-Malwareな論文 * **TODO**: Torが分かる何か * ~~[未知ウイルス検出技術に関する調査(2004年;IPA)](https://www.ipa.go.jp/security/fy15/reports/uvd/documents/uvd_report.pdf)~~ * **TODO**: DNSのセキュリティに関する本なんかないかなー? * DNSSECをキーワードに探すと見つかる? 略語リスト ---- abbr|non-abbr :-:|:-: AV|アンチウイルス MS|Microsoft Win|Windows VM|仮想マシン(Virtual Machine) VT|VirusTotal アーキ|アーキテクチャ バイナリ解析環境を整えよう ---- ### objdump 各CPUアーキテクチャ向けのbinutilsで入る。より便利にするやつはあるのかな? objdumpの類似として[radare](http://www.radare.org/)がある。個人的にはradareは組み込み機器の解析によく使われている印象が強いのだが、CTFのwriteupで2016年頃からちらほら見かけるようになった。 ### IDA Pro IDAの読み方は「あいだ」「あい・でぃー・えー」のどちらでも通じる。 IDA Freeはx86(32bit)のバイナリオンリーなので有用性の壁がある。 https://www.hex-rays.com/products/ida/support/download_freeware.shtml IDA Demoは試用期間があるものの、x86_64(64bit)もOK。定期的にポップアップが出るようになっている。 逆アセンブラだけの Pro の Named License は15万円ほどなので、そんな高くない気も。ライセンスを与えるPCは1年間だけ好きに変えられるという契約らしい。研究室などではFloating Licenseで買うことになる。Decompilerまで含めるとべらぼうに高くなる。 IDAは静的解析が特にしやすい作りになっており、バイナリ解析ツールの入門としてうってつけである。IDA Proが無い方はIDA Freeだけはインストールしておくとよい。(個人的にはobjdumpとテキストエディタとgrep+lessだけでバイナリを読み進めるようにはなって欲しいとおもいます。) ### IDAもどきたち 趣味レベルの解析であればそんなに悪くはないと思いますよ。ただ、構造体の解析がIDAほどできるのがない? #### Hopper Disassembler https://www.hopperapp.com/ 貧乏人用IDAとも言われる。筆者はCTFで使っているが、objdumpライクのUIで、これはこれで好き。グラフ表示はGraphvizっぽい表示してくれるが、スクロールせずに入る情報量が少ないので、筆者はあまり使用していない。Cライクなコードにデコンパイル可能。macOSとLinux(Ubuntu 14.04/REMnuxでは、依存パッケージのバージョンのせいでHopper v4をインストールできないので注意)向け。 プラグインをPythonで書ける。APIのマニュアルがあるにはあるが見づらい。APIは少なめだが、最低限必要な機能は揃っているので問題ない。 構造体の復元(アノテーション)機能:貧弱 or ほぼ不可能? #### Binary Ninja https://binary.ninja/ 性能と独自の中間言語(LLIL)とマルチプラットフォーム(Linux/Windows/macOS)を売りにしたデコンパイラ。 プラグインはPythonで書ける。APIのマニュアルはRead The Docsで書かれてて見やすい。API多め。 ### デバッガー #### gdb おなじみのやつ。使えて当然。CTFの問題を解きながら慣れるのがお手軽だと思う。ただ素の状態で使うのは苦行。 ##### 便利なgdbの補助スクリプト Ubuntu 14.04に入っているgdbがPythonに対応してないというトラップに注意(これは昔の話で今は使える可能性が微レ存)。 * gdb-peda * gef #### [x64dbg](http://x64dbg.com/#start) 本家にて32ビット版とx64ビット版のプレビルドが同時に配布されている。PEバイナリを動的解析可能(動かしながら解析可能)。少なくともCTFでは実用レベルのモダンなデバッガーで筆者のおすすめです。 // TODO: スクショ TODO:気が向いたら使い方動画(結月ゆかりちゃんボイス欲しいなぁ|д゚)チラッチラッ) プラグイン:https://github.com/x64dbg/x64dbg/wiki/Plugins 便利ポイント: * 実行した命令時点の作用を受けたメモリの内容とレジスタの値を後から遡れる * 実行中のコード周辺の基本ブロックのツリーを表示できる * レジスタウインドウに出ているアドレスを左クリックして、ダンプウインドウにそのアドレス周辺の内容を表示できる #### OllyDbg 32ビットのPEバイナリを動的解析できる。※64ビットPEバイナリ非対応 #### WinDbg **FixMe**:別のメモとして独立 資料: * [1] The Art of Memory Forensics 使用例: * 32/64ビットのPEバイナリの解析 * WindowsのObjectをいい感じに扱う([1]) * 型情報の表示:`dt("_OBJECT_HEADER")` * Windowsのクラッシュダンプの解析([1]) * ページファイルの解析(integrationとして;[1] p.110) #### Immunity Debugger TODO:(今から使い始める理由が無い気もする) ### 使えると良さそうなやつ #### Unicorn Engine TODO: コード片の動作を確認するときに便利かも? #### Pin (Intel) インテルの公式ソフトウェア。アーキはIntel CPU限定かな。 個人的にIntel Pinって呼んでるんだけど、正式名はPin。ググラビリティが低い悪い名前。 マルウェア解析の話でちょこちょこ出てくるツール。シンボリック実行の件でも出てくる(Mayhemとか)。 ### 解析用VM #### REMnux https://remnux.org/ Ubuntu 14.04をベースにしたLinuxディストリビューションかつマルウェア解析環境。表層解析+αに特化した印象(まぁLinuxだしね)。WindowsでClamAVのセットアップするのは大変なので、これを使うと楽かも。 [Googleドライブに置かれたVMイメージをダウンロード](https://docs.google.com/uc?id=0B6fULLT_NpxMampUWlBCQXVJZzA&export=download)してVirtualBoxにインポートするか、[Ubuntu 14.04 (64bit)で環境構築スクリプトを実行する](https://remnux.org/docs/distro/get/#install-remnux-on-an-existing-system)のどちらかを行うとREMnuxが手に入る。 #### Windows 普段使ってるWindowsが感染するとアカンので別のWindowsが必要。趣味で解析する人はライセンスを買うことになる。 以下ライセンス上の注意点: * PCにプリインストールされていたWindowsはたいていOEM版のWindows。これはそのPCで使うことしか許されない。例えばVMで動くように移植させるのはエンドユーザーライセンス(EULA)違反。 * 学校が契約しているMicrosoft Imagine(旧DreamSpark)にWindowsが置いてあるが、これは学校が所有するPCにインストールすることを前提にしているため、個人所有のPC・VMにインストールするのはNG。 グレー: * 評価版 * Modern IEに置かれている、IEの動作確認用VM #### FLARE VM [FLARE VM: The Windows Malware Analysis Distribution You’ve Always Needed! « Threat Research Blog | FireEye Inc](https://www.fireeye.com/blog/threat-research/2017/07/flare-vm-the-windows-malware.html) (2017/7/26) Windows 7以上のWindowsを想定した環境構築スクリプトが↑で配布されている。 実行すると解析に役立つツールがインストールされる。Chocolateyのラッパーコマンドも入るみたい。 ### [VirusTotal](https://virustotal.com/)(オンラインサービス) これをブックマークに登録しておく。検体やWebサイトをオンラインで提出して、各アンチウイルスソフトでの検出結果を一覧できる。かなり便利。良性か悪性かどうかの投票機能もある。 有料版はVirusTotal Intelligenceという名前みたい。有料版ではアップロードされたファイルが見れるので、無料版ユーザーは気をつけてね。 Microsoftが配布している[Sysinternals Suite](https://technet.microsoft.com/ja-jp/sysinternals/bb842062)(Windows用)のProcess Explorerに、実行中のプロセスをVirusTotalでチェックする機能が付いていて地味に便利。 [閑話休題]某検索エンジンが悪性のサイトであるかどうかを判断するために、VirusTotalの投票結果を当てにしていたため、いたずらにされたDown Voteのせいで、とあるまとめサイトが意図せずブロックされたことがあった。(そのサイトの名前を伏せる必要あるかな…) [閑話休題]VirusTotalに「社外秘」のファイルが大量にアップロードされていたことが2016年に発覚した。第三者がファイルを取り寄せて開いた形跡も得られているため、アップロードするファイルには気をつけたほうがいい。セキュリティソフトには検疫機能があるのでまずそちらに目を向けてみては?(情報源:[セキュリティ研究センターブログ: VirusTotalへアップロードされる機微情報](http://blog.macnica.net/blog/2016/03/virustotal-7ab2.html)) [機械学習マルウェア対策のCylance、オンライン検査のVirusTotalで利用可能に | IT Leaders](http://it.impressbm.co.jp/articles/-/14708) (2017/7/10) * 検出しても "Unsafe" としかでない… * elfファイルは無視されるっぽい(2017/7/11現在) ### その他、表層解析系 * mutexを使い出すのはマルウェアに特徴的らしい ### その他お役立ちツール * Chocolatey * Windows用のパッケージマネージャー。コマンドプロンプトでアプリケーションのインストールがとても容易になる * [Compiler Explorer - C++](https://godbolt.org/) * オンラインコンパイラーがアセンブリを表示してくれる感じのWebアプリケーション 他に必要なスキル ---- * Python * 16進数の脳内演算 * エクスプロイトにおいて重要なスキル * アセンブリに潜む16進数を意識的に追っていれば慣れてきます。 マルウェアとは何なのか? ---- ひとつ言えるのは、マルウェア=Malicious Software、悪意のあるソフトウェア、だということ。 国内法では次のいずれかを満たすもの: * 人が電子計算機を使用するに際してその意図に沿うべき動作をさせず、又はその意図に反する動作をさせるべき不正な指令を与える電磁的記録 * 不正な指令を記述した電磁的記録その他の記録 用語 ---- 以降の章を読むために理解しておきたい用語を挙げていく。英語表記を併記しているのは覚えてほしいからで、ググる時に思い出して欲しい。 ### 攻撃ベクター(Attack Vector)、Attack Surface TODO ### 標的型攻撃(Targeted Attack) TODO 特に「特定の相手に狙いを定め、その相手に適合した方法・手段を適宜用いて侵入・潜伏し、数か月から数年にわたって継続するサイバー攻撃」(独立行政法人 情報通信研究機構(NICT)のサイバー攻撃対策総合研究センター(CYREC))のことをAPT攻撃(Advanced persistent threat)と呼ばれる。 ### PDB TODO ### 攻撃キャンペーン TODO 2016年の主要な攻撃キャンペーン: * Pseudo-Darkleech * Afraidgate * EITest 2017年の主要な攻撃キャンペーン: * AdGholas * 不正広告を利用 ### IOC(Indicator of Compromise) 日本語訳がベンダーによって不定。システムにセキュリティー侵害があったことを示す痕跡のことで、検体のファイル名・ハッシュ値、変更されたレジストリキー、通信先のドメイン・IPアドレスなどの情報が入る。 TODO ### Tor TODO ### ISP インターネットサービスプロバイダのこと。インターネット接続を提供する企業で、一般にはプロバイダと呼ばれている。 \# 光コラボレーションがきっかけで、なにかセキュリティ対策の動きがあったりしないかな? ### DNS TODO <blockquote class="twitter-tweet" data-lang="ja"><p lang="ja" dir="ltr">攻撃者や「セキュリティエンジニア」ってそこまでDNS知らなさそうだし、DNSのことよく知ってる人の方が攻撃者を出し抜ける感ある</p>&mdash; しゅーと (@shutingrz) <a href="https://twitter.com/shutingrz/status/878787177404022784">2017年6月25日</a></blockquote> <script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script> #### DNSSEC TODO DNSSECはクソ: * [DNSSEC はなぜダメなのか](http://www.e-ontap.com/dns/criticism/) ### Deep Web、ダークウェブ(Dark Web) TODO。ダークネットと混同されがちなので気をつけて。 * [お勧めのダークウェブ検索エンジンを紹介します - 週刊 ピンク・ハッカー](http://www.pinkhacker.com/entry/2017/06/16/090000) (2017/6/16) ### ダークネット(Darknet) 組織に割り当てられたグローバルIPアドレス領域のうち未使用部分を指す言葉。未使用のアドレスにパケットが飛んで来るのはおかしいよねという前提。 未使用のグローバルアドレスにセンサーを設置し、外部からの攻撃を観測することが行われている。例えばNICTのnicter([プレスリリース](https://www.nict.go.jp/publication/NICT-News/1205/06.html)、[NICTERWEB 2.0](http://www.nicter.jp/#))。 ### ブラックマーケット 闇市場。クレジットカード情報、アカウントなどの個人情報、違法薬物の売買、マネーロンダリング(資金洗浄)がされている模様。TODO * [AlphaBay消滅後のダークマーケットはどうなる? | THE ZERO/ONE](https://the01.jp/p0005415/) (2017/7/21) ### マネーロンダリング(資金洗浄) TODO:話が逸れ始めたぞ… ### IV(初期化ベクトル;Initiation Vector)とKey(鍵) TODO ### トロイの木馬(Trojan Horse) TODO ### ボット(Bot) TODO **TODO**:疑問点 * 侵入可能なコンピュータを探索し、特定のサーバーに報告するタイプのマルウェア(例えば、Mirai(2016年))に感染したコンピュータはボットに含まれる?←入りそう ### ペイロード(Payload) データから、ヘッダないしはメタ情報を除いた部分というくらいの意味合い。 ### シェルコード(Shellcode) 最小限の定義をするならば、シェルを獲得するためのコード(機械語コード、アセンブリ、マクロコード、…)のこと。 最小のシェルコードはC言語で書き下すと `sys_execve("/bin/sh", 0, 0);` のような形をしている。これはシステムコールを直接叩く。 ### エクスプロイト(Exploit) サービス、アプリケーションの脆弱性を利用した攻撃のこと。エクスプロイトコードはそれを実現するためのスクリプト(C言語で書かれることもある)。 前述のシェルコードはこのエクスプロイトコードに含まれて書かれる。 ホワイトハッカーはWindowsでエクスプロイトを成功したときに電卓を起動したりする。 #### ローカル型/リモート型 TODO:(Wikipediaにある説明で十分な気も…) #### connect-back方式(reverseshell)/bindshell TODO:(Wikipediaにある説明で十分な気も…) 使い分けのポイント: * アウトバウンド通信がどの程度許可されているかどうか * connect-back shellの場合は内→外に通信が発生するので、公開サーバーが外に接続を開始するのはおかしいとする前提ではファイヤーウォールのDropルールに引っかかるおそれがある。 * アウトバウンド通信が許可されていて、外から見えないホストから攻撃者にシェルを張りたいときは、connect-back shellが有効 * インバウンド通信で使えるポート番号の制限 * ファイヤーウォールのせいで特定のポート以外に接続できないときはbindshellは無力 ### 権限昇格(Privilege Escalation) (権限昇格の英語(のスペル)が覚えにくくないすか。) 一般的なOSではユーザーまたはグループの権限レベルを管理し、レベルごとにシステムに可能な操作を制限している。権限昇格とは(Exploit対象の)現在のユーザーの権限レベルを昇格させることをいう。昇格先として、Linuxではroot、WindowsではAdministratorsやSYSTEMがある。 ### 難読化(Obfuscation) コードを読みにくくすること。対義語はDe-obfuscation。 TODO:各言語での代表的な難読化手法を列挙したい… ### SOC(Security Operation Center) 読み:そっく。SoC(読み:えすおーしー、そっく)と書くと組込みシステムの話になるので地味に注意。客先に置かれたネットワーク機器から上がってくるログをSOCで収集して __集中的に__ 人力で監視するというのがコンセプト。話を聞く限りは、SOCのアイデア自体は新しいものではなく、以前からされていて、別々のサービスでログ監視をしていたManaged Security Service(MSS)の部隊を集約してSOCと称しているケースもあるようだ。 国内だとIIJがMSSを90年代に先駆けて始めたんだっけな(←曖昧な記憶だし、裏取りがまだ)。 TODO:国内のSOCと運用形態書いたほうがいい? TODO:よくあるSOCの構成。 TODO:マイクロソフトとIBMはSOCとは別の呼び方をしてたはず [閑話休題]SOCからインテリジェンスレポートが発行することがある。マルウェア界隈の情報を毎日キャッチアップできない人は特にそれを読んでおくことをおすすめする。攻撃者に配慮してか、詳細なレポートの提供を数ヶ月遅らせるケースがあるように見える(※あくまで個人の感想です)。 後学のための資料: * [情報セキュリティポリシーサンプル改版](http://www.jnsa.org/result/2016/isog-j/index.html) (2016/12/26) * > 本書では、セキュリティ対応を専門として実施しているセキュリティオペレーション事業者の視点から、改めてセキュリティ対応組織における実用的な機能や役割について整理する。 ### CSIRT(Computer Security Incident Response Team、シーサート) 読み:しーさーと。(組織内)CSIRTがやること: * セキュリティインシデントに対応するための各サービス・システムに向けたガイドラインの策定 * セキュリティパッチが公開されたあとのアップデートの周知 * 外部組織・CSIRT要員からの情報収集 * 場合により不正通信を遮断するルールをネットワーク機器に追加するとか * 発生したセキュリティインシデントの初期対応・収束(=自組織向けのインシデントレスポンス(IR)) 日本シーサート協議会が出してる『[CSIRT:構築から運用まで](https://www.amazon.co.jp/dp/4757103697)』で基礎が抑えられると思う(ただ読み物としては退屈な部類の本)。ただディープな話は期待する本では無いように見えます。それを期待する方はリクルートテクノロジーズの『[実践CSIRT 現場で使えるセキュリティ事故対応](https://www.amazon.co.jp/dp/482223777X)』が良さげ。 * [CSIRTスターターキット Ver2.0](http://www.nca.gr.jp/imgs/CSIRTstarterkit.pdf) (by 日本コンピュータセキュリティインシデント対応チーム協議会) (2011/8/1) [ステマ]NRIセキュアとかが組織内CSIRTの立ち上げ支援とかしてるらしいっすよ。 CSIRTの中の人の話: * [2017 InternetWeek Showcase (Day 2): 昨今の標的型攻撃との向き合い方 ](https://internetweek.jp/sc-program/day2-sato.pdf) (2016/6/2) 標的型攻撃を見据えたCSIRTに求められるもの(もう解析関係ない…): * [企業セキュリティ、七つの鉄則 - CSIRTがうまくいく、たった二つの条件:ITpro](http://itpro.nikkeibp.co.jp/atcl/column/17/062200257/062300001/) (2017/7/3) ### CIC(Cyber Inteligence Center) TODO ### トラフィック 第一に、帯域、そこに存在している通信のことを指す。トラヒックと表記されることもある。 第二に、改ざんされたサイトへのアクセスをまとめてトラフィックと言い回すことがある。 ### ### mangle/demangle TODO objdump/radareを使うときに気をつければいい話(Dlangバイナリの場合は、自動でdemangleしてくれないGUI逆アセンブラが多いかも) ### 改ざん(改竄;compromise) TODO 改竄と表記することは少ない。 ファイル形式 ---- 今ではいろいろな形式のファイルにmaliciousなコードが潜んでいる。実行ファイルだけでなく、画像ファイルといった一般的なファイルの形式を頭に入れる必要がある。画像ファイルでいえば、[\#ステガノグラフィー](#ステガノグラフィー) という情報隠蔽技術を警戒せねばならない。 種々のファイル形式のチートシートもある。 https://github.com/corkami/pics ### 実行ファイル #### PE Windowsにおける実行ファイルの形式。 抑えておきたい用語(?): * RVA(Relative Virtual Address) * IAT(Import Address Table) * OEP(Original Entry Point)※パッカーのくだりで登場 参考: * Microsoftが公開しているPEファイルフォーマットの仕様書(pecoff.docx)→ https://www.microsoft.com/en-us/download/details.aspx?id=19509 * Portable Executable File Format(by OpenRCE)http://www.openrce.org/reference_library/files/reference/PE%20Format.pdf * PEの構造を図解している一枚図 * 『アナライジング・マルウェア』の2.2節 * 必要なところだけをかいつまむスタイル #### ELF LinuxなどのフリーなOSで利用される実行ファイルの形式。 抑えておきたい用語(?): * .pltセクションとGOT(Global Offset Table) * .rdataセクション 参考: * TODO ### 画像ファイル #### JPEG * [JPEG画像形式の概要(フォーマット) - ウェブで用いられる画像形式。](https://www.marguerite.jp/Nihongo/Labo/Image/JPEG2.html) #### PNG * [PNG ファイルフォーマット](http://www.setsuki.com/hsp/ext/png.htm) #### GIF * [GIF ファイルフォーマット](http://www.setsuki.com/hsp/ext/gif.htm) ### Exif ファイルの形式でなくメタ情報のフォーマットだが重要なので取り上げる。 TODO ### 文書ファイル #### PDF TODO #### MS Officeのマクロファイル TODO #### Word/Excel 本当のファイル形式:zip(+xml/画像ファイル) xmlにmalicousなコード(Powershellコード)を仕込むテクがあったと記憶。 ちなみにちまちま編集して保存するほどxmlが複雑になってファイルが大きくなる。 #### PowerPoint * リンクをホバーするとPowershellコードが実行! * [PowerPoint File Downloads Malware When You Hover a Link, No Macros Required](https://www.bleepingcomputer.com/news/security/powerpoint-file-downloads-malware-when-you-hover-a-link-no-macros-required/) (2017/6/2) * > Whenever the user hovers the URL, malicious code is executed that will invoke PowerShell and attempt to execute the following code. * [TrendLabs Security Intelligence BlogMouse Over, Macro: Spam Run in Europe Uses Hover Action to Deliver Banking Trojan - TrendLabs Security Intelligence Blog](http://blog.trendmicro.com/trendlabs-security-intelligence/mouseover-otlard-gootkit/) (2017/6/9) * [マウスオーバとマクロを利用、PowerPoint文書閲覧時に感染させる攻撃手法に注意 | トレンドマイクロ セキュリティブログ](http://blog.trendmicro.co.jp/archives/15257) (2017/6/19) ### スマホアプリ #### apk 本当のファイル形式:zip Androidで使用されるアプリのパッケージファイル。 ### その他 #### lnk(Windows) ショートカットファイル。リンクファイル。TODO 脆弱性の実績: * [JVNVU#92360223: Microsoft Windows のショートカットファイルで指定されたコードが自動的に実行される脆弱性](https://jvn.jp/vu/JVNVU92360223/index.html) (2017/08/04) * 過去に同様の脆弱性報告ありなので要チェック ### 形式不明のdataファイル エントロピーによって種別を推定できる。圧縮・暗号系はエントロピーが大きくなるのでわかりやすい。zipは格納ファイルの名前が含まれるのでアタリを付けやすい(ファイル名を非ASCIIにされたらそれまで)。 本章ではエントロピー解析に便利なツールやテクニックを紹介する。 #### 010 Editor 有料の高機能バイナリエディタ。Win/Mac/Linux対応。ライセンスは永久に有効で、購入から1年間は無償でソフトウェアをアップデートてきる。 非商用のHome版は初年度7000円。2000円ほどでFree Upgradeの権利を1年延長できる。 TODO テクニック: * [君にもできる目grepを使わない目grepリローデッドへの挑戦 (010 Editor編) ](https://gist.github.com/yoggy/4116843) #### binwalk TODO: 確か`-E`オプションと何か。 ### その他テクニック * マルウェア関連でよく出てくるプロトコルやアプリケーション --- ### SMB NASなどで使われている、主にWindowsで使われるネットワークファイル共有のプロトコル。 SMBに脆弱性があってポートが空いているPCがアクセス可能な範囲にあると、感染が拡大してしてしまって厄介。 #### Eternal Blue (MS17-010) WannaCry, PETYAが使用。 ### Active Directory Pass-the-hash, Pass-the-ticketのくだりで出てくる。 エンコード、デコード ---- マルウェアに組み込むsecret文字列として使われたリ、C2通信で使われたりする。 TODO: エンコード、デコードの数学的な説明 ### Base64 TODO ### Hex TODO Webアプリケーションでよく使われるHMACとバイナリデータのHex表現ってかなり似てるよねー。 ### XOR 論理演算のxorを用いた簡単な暗号。XORの性質により、暗号化関数Encと復号関数Decは同じ関数である。 次はXOR暗号をPythonとCで実装したものである。多くの場合は鍵(xor key)は1バイトの値だが、鍵長は自由である。(無限長の鍵が生成可能なとき、このXOR暗号はストリーム暗号として機能する) ```python= Enc = lambda plain, key: ''.join([chr(ord(x) ^ key) for x in plain]) Dec = Enc print(Dec(Enc("abcd", 0x4f), 0x4f)) # => "abcd" ``` ```clike= #include <stdio.h> #include <string.h> void Enc(char* plain, char* cipher, char key){ int p_len = strlen(plain); for(int i = 0; i < p_len; i+=1){ cipher[i] = plain[i] ^ key; } } void Dec(char* cipher, char* plain, char key){ return Enc(cipher, plain, key); } int main(){ char plain[5] = "abcd"; char cipher[5] = ""; char key = 0x80; Enc(plain, cipher, key); Dec(cipher, plain, key); printf("%s", plain); // => "abcd" } ``` XOR暗号をしているアセンブリの場合は、xorが入った小さい基本ブロックの周りにループ矢印があり大変見つけやすい。 ### NetBIOS Encoding/Decoding TODO ステガノグラフィー ---- 古代から使われている情報隠蔽技術。 ### 画像 画像の電子透かしはこのテクニックを援用している。 * [ステガノグラフィーの解析について](https://digitaltravesia.jp/usamimihurricane/webhelp/_RESOURCE/MenuItem/another/anotherAboutSteganography.html) * [CpawCTF-Steganography // Speaker Deck](https://speakerdeck.com/kuroiwasi/cpawctf-steganography) ### 音声 * [ステガノグラフィーの解析について](https://digitaltravesia.jp/usamimihurricane/webhelp/_RESOURCE/MenuItem/another/anotherAboutSteganography.html) ### 文章 例: * 縦読み * マルウェアの分類 ---- 機能で見たときのマルウェアの分類をまとめる。 * バインダ(Binder)型 * ダウンローダ(Downloader)型 … 他のマルウェアを感染機にダウンロードする。初期感染フェーズで登場 * バックドア(Backdoor)型 … 侵入口を用意するタイプ。C2とやりとりするのが特徴 * トロイの木馬/バンキングトロイ(バンキング型トロイの木馬;バンキングトロジャン) * 情報窃取型 … 窃取対象はネットバンキングの口座情報など * 身代金要求型 … ランサムウェア。ファイル・データという資産を人質に金銭を要求する * 偽セキュリティソフト型マルウェア … 「当職はアンチウイルスソフトなり。他のAVを無効化して欲しいナリ」 * ワーム(Worm) … 自己複製機能があるタイプ * __※気軽に動的解析してはいけないマルウェアランキング第一位__ * ボット(Bot) … C2で命令を受けて攻撃するタイプ→Backdoorに統合しても良さげ * 自己完結型 * スケアウェア/アドウェア/スパイウェア(キーロガー含む) 感染対象によって、以下の分類も可能。 * ブートセクタ感染型 * ファイル感染型 * レジストリ値を操作するタイプも含む * 複合感染型 * Web感染型 * USBメモリ感染型 よくある感じのマルウェアの挙動 ---- **TODO**:基本的にマルウェアは単体ではいろいろしない、複数のマルウェアと協調して事をなすことを述べる 悪性の実行可能ファイルがターゲットのコンピュータでマルウェアを含むファイルを生成することをドロップ(Drop)と表現する。悪性の実行可能ファイルはドロッパー(Dropper)と呼ばれる。 \# dropperとbinderって使い分けられてるのかな… Note: 目的によってはフェーズの移り方が変わるだろうし、まとめ方が難しい ### 感染フェーズ 第一のマルウェアが攻撃ベクター(Attack Vector)を通じてターゲットに侵入する。 #### 能動的感染 ユーザー操作により感染フェーズが始まるときに登場するのはバインダ(Binder)と呼ばれるもので、それがトロイの木馬などのインストーラだとは分からないような細工をする。 例えば、企業のシステム管理部門を騙って追加でインストールが必要なセキュリティソフト(実際はマルウェア)があるとして騙してインストールさせる、圧縮されたファイルと見せかけて裏でマルウェアのインストールを完了する。 例えば、BLACKGEAR(2012年)では、実行ファイルであるバインダをフォルダに見せかけてクリックさせるという手法を取っていたとCODEBLUE 2016でトレンドマイクロの人が話していたと記憶している。 具体的な感染ケースは以下の通り: * 標的型攻撃 * 脅迫じみた広告(「お使いのPCが危険です!」) * 野良DLL、野良インストーラ #### 受動的感染 ユーザーが意図せず感染フェーズを開始してしまう場合は、脆弱性を抱えるソフトウェア(オフィスソフト、ブラウザ等)がmaliciousなファイルを読み込んでしまう場合である。 具体的な感染ケースは以下の通り(**TODO**:もっとありそう): * Malvertising * ブラウザーのJavaScriptエンジン/Flash Player/Silverlightの脆弱性を利用するタイプ * 具体例は [RIG EKの節](#rig(リグ;20169〜)) を参照されたし **疑問点**:標的型攻撃において、ドロッパー/バインダと配布形態とバインダが実行するまでの流れ←別章を立てたほうがよさそう #### 自動起動 TODO:レジストリ登録、サービス登録、MBR書き換え TODO ### C&Cフェーズ C&CはCommand & Controlの略称である。C&CはC2とも表記される。 マルウェア(=ボット)がC2サーバーに接続し、攻撃のための設定情報を受け取るフェーズ。Command & Controlの通り、外部サーバーから指令を受ける体をとる場合に、C&Cフェーズがあるという。したがって、自律して動くマルウェアはC&Cフェーズをもたない。ただし、セキュリティベンダー次第ではC2接続先情報を入手するステップもC2フェーズに含める場合がある([という](http://www.atmarkit.co.jp/ait/articles/1607/27/news016.html))。本書はこの解釈を採用する。 C&Cフェーズは次のステップで構成される。 1. マルウェアは、自身に隠されたファーストステージC2への接続先情報を読み出す。ファーストステージC2は、ブログ記事やコメント欄などで"本物の"C2サーバーのありかを示すWebページのことである。ここで読み出す情報の詳細は、[\#ファーストステージC2での情報の秘匿](#ファーストステージC2での情報の秘匿) 参照。 2. 前のステップで得た情報を使ってセカンドステージC2に接続する。セカンドステージC2は、本当のC2の役割を果たすサーバーを指す。 解析時の注意事項: * C2サーバーに接続するための情報を起動時の引数で与えるケースあり(TODO:具体例) #### Domain Generation Algorithm(DGA) 以下の記事が詳しい。DGAについては、とりあえずリンク先を読んでほしい。 http://blog.trendmicro.co.jp/archives/3799 > DGAは接続先ドメイン名生成の仕組みのことで、多くの被害を及ぼしたワーム「WORM_DOWNAD(別名:Conficker)」が用いることで有名になりましたし、最近でも ボットネット「ZeuS」と関連して動作する「PE_LICAT」が利用することが分かっています。では攻撃者がこの DGA の仕組みを用いる理由は何でしょうか。それは明らかに URLフィルタリングへの対策でしょう。 > ※抜粋のために一部改変 DGAネタ: * [Now Mirai Has DGA Feature Built in](http://blog.netlab.360.com/new-mirai-variant-with-dga/) #### ファーストステージC2での情報の秘匿 マルウェア自身が持っているKeyで所定の暗号文を復号して得た平文がファーストステージC2への接続情報の場合もある。 ファーストステージC2の場所と、そこでC2の設定情報をどう暗号化しているのかどうかは、マルウェアによって異なるため、個別にどうなっているのかを見ていくことにする。 ##### BKDR_ELIRKSの場合 BKDR_ELIRKSは、BLACKGEARのバックドアとして機能するマルウェアで、次のような挙動をする[1]。 1. さまざまなブログやミニブログのサービスから、暗号化されている C&C の設定情報を取得 1. 設定情報が復号されると、C&Cサーバへ接続し、攻撃者からの指令を待つ > ![「BKDR_ELIRKS」の暗号化アルゴリズム](http://blog.trendmicro.co.jp/wp-content/uploads/2016/11/161103comment04.png) > 「BKDR_ELIRKS」の暗号化アルゴリズム([1]より) [1] [標的型サイバー攻撃キャンペーン「BLACKGEAR」日本も攻撃対象に | トレンドマイクロ セキュリティブログ](http://blog.trendmicro.co.jp/archives/13990) #### BKDR_YMALRの場合 `BKDR_ELIRKS` は、BLACKGEARのバックドアとして機能するマルウェアで、`BKFR_ELICKS` と同様の不正活動を実行するが、C2設定情報を得るまでに次のようなステップを経る[1]。 1. BKDR_YMALRには、複数の暗号化された文字列が含まれている 2. 暗号化された文字列は、ブログの URL と識別子を、最初に Base64方式でエンコードし、次に DES方式で暗号化したもの。暗号鍵と初期ベクトルがハードコードされており、どちらも「1q2w3e4r」 3. 暗号文が復号されると、「BKDR_YMALR」は「ELIRKS」と同じアルゴリズムで C&C情報を取得する > ![「BKDR_YMALR」のブログURL と識別子](http://blog.trendmicro.com/trendlabs-security-intelligence/files/2016/10/blackgear6.png) > 「BKDR_YMALR」のブログURL と識別子 > ![「BKDR_YMALR」の復号アルゴリズム](http://blog.trendmicro.co.jp/wp-content/uploads/2016/11/161103comment07.png) > 「BKDR_YMALR」の復号アルゴリズム > ![ブログ投稿記事から取得された「BKDR_YMALR」の C&C設定情報](http://blog.trendmicro.co.jp/wp-content/uploads/2016/11/161103comment08.png) > 「BKDR_YMALR」の復号アルゴリズム > ※図はいずれも[1]より [1] [標的型サイバー攻撃キャンペーン「BLACKGEAR」日本も攻撃対象に | トレンドマイクロ セキュリティブログ](http://blog.trendmicro.co.jp/archives/13990) ### 攻撃フェーズ 文字通りの意味。C2サーバーを必要とするマルウェアは、この時点でターゲットはボットと化している。つまり、攻撃者からの司令によりDDoS攻撃を仕掛ける(TODO:要確認)。 ### 探索(拡散)フェーズ? TODO #### [shodan](https://www.shodan.io/) TODO TODO:shodanみたいのが原因で電力システムがダウンした話(たしか) ### 実例 #### BLACKGEAR(2012年〜TODO年) (en) [BLACKGEAR Espionage Campaign Evolves, Adds Japan To Target List - TrendLabs Security Intelligence Blog](http://blog.trendmicro.com/trendlabs-security-intelligence/blackgear-espionage-campaign-evolves-adds-japan-target-list/) (ja) [標的型サイバー攻撃キャンペーン「BLACKGEAR」日本も攻撃対象に | トレンドマイクロ セキュリティブログ](http://blog.trendmicro.co.jp/archives/13990) * 台湾と日本をターゲットにしたキャンペーン #### Emdivi(2014年) 年金機構を狙ったマルウェア TODO 標的型攻撃 ---- TODO ポイント: * 人を相手にするのでその人が分かる言語に対応せねばならない。必然的に特定の国に対する攻撃となる。 * 攻撃を受けた組織のなかで "1人さえ" 引っかかれば侵入可能となる * メールで言えば開封率0%が必達目標となってしまう。開封を許容するような仕組みづくりが求められる 例: * [IPAテクニカルウォッチ「標的型攻撃メールの例と見分け方」](https://www.ipa.go.jp/files/000043331.pdf) 標的型攻撃の調査レポート: * [CODE BLUE 2015:日本の組織をターゲットにした攻撃キャンペーンの詳細](https://www.jpcert.or.jp/present/2015/20151028_codeblue_ja.pdf) (2015/10/28) * [日本企業を狙う高度なサイバー攻撃の全貌 – BRONZE BUTLER | SecureWorks](https://www.secureworks.jp/resources/rp-bronze-butler) (2017/6/23) ### malspam マルウェア付きのスパムメール。(TODO:ばらまき型マルウェアという分類でもいい気がするんだけどどうなんだろ←たぶんOK?) * [Malware-Traffic-Analysis.net - 2017-06-21 - Hancitor malspam (from "De Leons Transport, Inc.")](http://malware-traffic-analysis.net/2017/06/21/index2.html) (2017/6/21) #### ばらまき型マルウェア TODO。口頭では単に「ばらまき型」と言われがち。 ### スピアフィッシング ### やりとり型攻撃 ### メール添付ファイルの元ネタ 大学の研究室、学会などのサイトで公開されている個人情報を含んだファイルを元にすることもある。 あとはgoogle検索で「[filetype:xls site:ac.jp](https://www.google.co.jp/search?q=filetype%3Axls+site%3Aac.jp)」とググるとか。 ### 事例集 * [日本学術振興会を騙った標的型攻撃メール 調査メモ | (n)inja csirt](http://csirt.ninja/?p=1103) #### ONI(2017年6月?7月?) * [日本をターゲットにしたGlobeImposterの亜種(”ONI”の正体) | Cylance Japan株式会社](https://www.cylance.com/ja_jp/blog/jp-oni-ransomware-globeimposter.html) ### TODO: 未分類 [日本人を標的としたAveoマルウェア ファミリを特定](https://www.paloaltonetworks.jp/company/in-the-news/2016/160817_unit42-aveo-malware-family-targets-japanese-speaking-users.html) ### 水飲み場攻撃 だいぶマイナーな攻撃(呼称)になってしまった。2000年後半はIT Pro等でわりとよく出てきた用語かな。 ある属性の人が利用すると思われるサイトにマルウェアに感染するトラップを仕掛ける攻撃。いつも使っているサイトだから安心という暗黙の了解に付け込む。 下は厳密には水飲み場攻撃では無い気がするが、比較的水飲み場攻撃ぽい。 * dropbooksにマルウェアがアップロードされていた話 * twitterで流れたんだけどどのツイートか思い出せぬ… 情報窃取型マルウェア ---- TODO:(といっても文字通り)。銀行口座情報の窃取が目的の場合は、バンキングトロイ、バンキング型トロイ(の木馬)と呼ばれることもある。 ### URSNIF(Gozi)(2016年~2017年) 読み:あーすにふ。バンキングマルウェアの一種。 解析報告: * [バンキングマルウェア「URSNIF」 解析レポート - NTT Security](https://www.nttsecurity.com/-/media/nttsecurity/files/resource-center/what-we-think/ursnif_20161215.pdf)(2016/12/26) ツール類: [DreamBot・Gozi感染チェックサイト|一般財団法人日本サイバー犯罪対策センター](https://www.jc3.or.jp/info/dgcheck.html) > JC3では、不正送金被害につながるインターネットバンキングマルウェアDreamBot及びGoziによる感染拡大及びこれによる被害の防止のため、DreamBot又はGoziへの感染状況を確認するためのウェブサイトを試験運用しています。 #### URSNIF亜種:DreamBot(2017年) [国内ネットバンキングを狙う新たな脅威「DreamBot」を解析 | トレンドマイクロ セキュリティブログ](http://blog.trendmicro.co.jp/archives/14588)(2017/3/16) [【セキュリティ ニュース】4月修正のOffice脆弱性、不正送金マルウェアの拡散に悪用される(1ページ目 / 全2ページ):Security NEXT](http://www.security-next.com/082874) > 国内を対象とした不正送金マルウェア「DreamBot」の感染活動に、マイクロソフトが4月の月例セキュリティ更新で修正した脆弱性「CVE-2017-0199」が悪用されている。 > > 「CVE-2017-0199」は、「Office」に関する脆弱性で悪用されるとリモートよりコードを実行されるおそれがある。 > > 同脆弱性は、修正プログラムの公開当初よりゼロデイ攻撃が指摘されていたものの、国内における目立った攻撃は確認されていなかった。しかし、4月下旬に攻撃コードが公開されて以降、状況が変わりつつあるようだ TODO: 後で調べる ### EyePyramid(2017年) [イタリアで発生したハッキング事例「EyePyramid」を解析 | トレンドマイクロ セキュリティブログ](http://blog.trendmicro.co.jp/archives/14363) ランサムウェア(Ransomware) ---- システムへのアクセスを制限して、身代金(Ransom)を要求するマルウェア。 ファイルを一方的に暗号化し、復号を条件にビットコインで身代金を支払うことを要求する。親切なことに、ビットコイン初心者でも支払いができるようにステップバイステップで解説するページが付いている。支払いや手順解説はTorで公開されるサイトで行われることもある。 2016年はランサムウェアの話が本当によく出た。2017年に減少傾向?(TODO) [増長する「ランサムウェアビジネス」、2016年の脅威動向を分析 | トレンドマイクロ セキュリティブログ](http://blog.trendmicro.co.jp/archives/14526) 企業に対するアンケート結果では、同じような被害に遭い、…**TODO** **TODO**: 疑問点 * 使っている暗号方式 * IVやKey, IDをどうしているのか? * 検体ごとに固定?ターゲットごとに生成? * 感染経路 概要はここを読んだほうが早いかもしれない: * [IPAテクニカルウォッチ「ランサムウェアの脅威と対策」:IPA 独立行政法人 情報処理推進機構](http://www.ipa.go.jp/security/technicalwatch/20170123.html) ランサムウェアの本が出た(2016/11): [Ransomware - Defending Against Digital Extortion (2016/11; O'Reilly Media)](http://shop.oreilly.com/product/0636920054290.do) TODO: ランサムウェアの動作 資料: * [Cisco Japan Blog » Cerber スパム:すべての原因は ToR に](http://gblogs.cisco.com/jp/2016/12/cerber-spam-tor/) ランサムウェアの最新情報はTwitterで検索すると出てきたりする。 * [Twitterでの \#SAGE ransomeware の検索結果](https://twitter.com/search?q=%23SAGE%20ransomeware&src=typd) * sage mathなどの検索ノイズに注意 ### Petya(2016年~2017年) [新暗号型ランサムウェア「PETYA」、MBRを上書きしてPCへのアクセス不能に | トレンドマイクロ セキュリティブログ](http://blog.trendmicro.co.jp/archives/13106) (2016/3/28) このときは特に話題ならず。2017年6月に亜種が猛威を振るいだした。 [大規模な暗号化型ランサムウェア攻撃が欧州で進行中、被害甚大 | トレンドマイクロ セキュリティブログ](http://blog.trendmicro.co.jp/archives/15339) (2017/6/28) ### Locky(2016年) [世界で猛威を振るうランサムウェア「Locky」の再来 | FireEye](https://www.fireeye.jp/company/press-releases/2016/locky-is-back-asking-for-unpaid-debts.html) ### TeslaCrypt(2016年) TODO ### CERBER(2016年〜) ↓ CERBER 4.0 [解析情報:「CERBER」、データベースファイルの暗号化機能を追加 | トレンドマイクロ セキュリティブログ](http://blog.trendmicro.co.jp/archives/14102)(2016/11/28) ### Spora(2017年) 1月から報道が始まり、6月に国内セキュリティベンダから情報が出るようになった。トレンドマイクロは世界では1月から、国内では2月から観測できたと報告した。 [Forbes] [史上最も洗練された「身代金ウィルス」Sporaの恐るべき機能性 (Forbes JAPAN) - Yahoo!ニュース](http://zasshi.news.yahoo.co.jp/article?a=20170115-00014874-forbes-bus_all) (2016/1/15) [Spora Is The Highly-Sophisticated Future Of Ransomware](http://www.forbes.com/sites/leemathews/2017/01/12/spora-is-the-highly-sophisticated-future-of-ransomware/#1750f1c9608b) (2016/1/12) [TM] [2017年第1四半期 セキュリティラウンドアップ | トレンドマイクロ](http://www.trendmicro.co.jp/jp/security-intelligence/sr/sr-2017q1/index.html) Sporaで分かっていること: * 初期はロシア語圏を対象 [Forbes] * エクスプロイトキットで感染 [TM] * 非ドライブバイダウンロード。フォントのインストールを称する形式 [TM] * > 「SPORA」を拡散させるEKサイトでは、使用ブラウザがGoogleChromeだった場合、「使用フォントがインストールされていないため表示が乱れている」という旨のメッセージを表示し、フォントのインストールに見せかけてランサムウェア「SPORA」をインストールさせます。[TM] * ファイル名はChrome font.exe(※筆者の推測) * > 脅迫状の代わりにコンソールを表示し、「ファイルの完全復旧」、「感染回避措置」、「ランサムウェアの削除」、「個別ファイルの復旧」、「ファイル2件のみ無料で復旧」等の選択肢を異なる料金で提示します。「支払い期限」や「支払い方法の選択」も提示され、チャット機能も備えています。コンソールの言語は、感染PCの国別コードに応じて表示されます。 [TM] * IDに国コードが入る(JPなど) * 従来のC2なし (?) 解析報告: * [Explained: Spora ransomware - Malwarebytes Labs | Malwarebytes Labs](https://blog.malwarebytes.com/threat-analysis/2017/03/spora-ransomware/) * ダウンロード可能な検体(welcome to dreamland.scr): https://www.hybrid-analysis.com/sample/e3af616583327f189f2d9e0b1c38199e1f35dda391b6a559253be0fb4410a0e9?environmentId=100 * Virtual BoxのWIndows 8では動作せず(ファイルサイズが0になって何も表示されず終了) * オンラインサンドボックスの解析結果(検体入手可)→[Free Automated Malware Analysis Service - powered by VxStream Sandbox - Viewing online file analysis results for 'Chrome Font.exe'](https://www.hybrid-analysis.com/sample/5a67dbbf83535f21a29adf3e5045da02b115bfce13e790d70f87633cda88c868?environmentId=100) ### WannaCry(2017年) TODO: * [WannaCry: Two Weeks and 16 Million Averted Ransoms Later](https://blog.kryptoslogic.com/malware/2017/05/29/two-weeks-later.html) * [世界各地で発生したランサムウェア WannaCry の感染事案についてまとめてみた - piyolog](http://d.hatena.ne.jp/Kango/20170513/1494700355) [しくじり話]ランサムウェアは暗号化したファイルを復号してくれるという信頼があってこその収益モデルである。そんな中WannaCryはしくじった。暗号通貨により支払いが行われるときは支払い先のアドレス(=口座)がバグにより同じになってしまって(ハードコードされてたアドレスが使われた模様)、誰が支払ったのかが分からなくなってしまった\*。WannaCryを操る攻撃者は、 __TODO__:救済策を用意した(内容忘れた;支払う前に攻撃者にほげほげな方法で連絡してってアナウンスがあったらしいが、記憶が不鮮明)。 \* [20万人以上が感染したランサムウェア「WannaCry」は身代金として約300万円をゲットしていることが明らかに - GIGAZINE](http://gigazine.net/news/20170515-wannacry-ransom-money/), https://twitter.com/threatintel/status/864504502682099716 ### Erebus(2016年~2017年) [1] [続報:暗号化型ランサムウェア「Erebus」が Linux を標的に | トレンドマイクロ セキュリティブログ](http://blog.trendmicro.co.jp/archives/15273) (2016/6/19) ↓おそらく(感染規模の割に)これが取り上げられている理由 > 2017 年 6 月 10 日、韓国の Web ホスティング企業「NAYANA」が暗号化型ランサムウェア「Erebus(エレブス)(「RANSOM_ELFEREBUS.A」として検出)」による攻撃を受け、同社が管理する153台のLinuxサーバ感染と3,400以上の企業のWebサイトの影響が確認されました。 > > NAYANA は、6月12日、同社の Web サイトで告知し、管理するすべてのサーバのファイルを復号するために、攻撃者が「Bitcoin(ビットコイン、BTC)」で 550BTC(162万米ドル)にも上る高額な身代金を要求していることを明らかにしました。そして6 月 14 日の告知で、攻撃者との交渉の結果、身代金が 397.6BTC(2017 年 6 月 19 日の時点でおよそ 101 万米ドルに相当)に減額され [1] http://www.nayana.com/bbs/set_list.php?b_name=notice にハッカー側との交渉の様子なども報告されている([らしい](https://twitter.com/MasafumiNegishi/status/875547244048465920)) ![NAYANAとハッカーの交渉の様子(?)](https://i.imgur.com/s44ia3r.png "NAYANAとハッカーの交渉の様子(?)") <!-- http://imgur.com/a/57ubV --> NAYANAのその後: <blockquote class="twitter-tweet" data-lang="ja"><p lang="ja" dir="ltr">ランサムウェア Erebusに感染した韓国のWebホスティング会社「NAYANA」は1次復号処理が完了したとのこと。ユーザへの補償内容も記載されています。 保証内容を訳したものは画像の通りです。 / <a href="https://t.co/ogOjV0UcYb">https://t.co/ogOjV0UcYb</a> <a href="https://twitter.com/hashtag/1%E4%BA%BACSIRT?src=hash">#1人CSIRT</a> <a href="https://twitter.com/hashtag/NAYANA?src=hash">#NAYANA</a> <a href="https://t.co/AAdmBpkNcX">pic.twitter.com/AAdmBpkNcX</a></p>&mdash; 辻 伸弘(nobuhiro tsuji) (@ntsuji) <a href="https://twitter.com/ntsuji/status/882932341240324097">2017年7月6日</a></blockquote> <script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script> ### Mole(2017年4月~?) CryptoMixの亜種(?) [ランサムウェア「Mole」、英大学などが被害--汚染サイトを訪問しただけで感染 - ZDNet Japan](https://japan.zdnet.com/article/35103147/) (2017/6/22) > ランサムウェアがネットワークに侵入できたのは、ユーザーが悪意ある広告をクリックする必要すらなかったのも、理由の1つだ。「Astrum」という脆弱性攻撃ツール(エクスプロイトキット)を利用する攻撃者のせいで、汚染されたサイトを訪問するだけで感染する。 [Ransomware Recap: Expanding Distribution Methods - Security News - Trend Micro USA](https://www.trendmicro.com/vinfo/us/security/news/cybercrime-and-digital-threats/ransomware-recap-expanding-distribution-methods) (2017/4/25) > A CryptoMix variant calling itself Mole (Detected by Trend Micro as CRYPAURA.MOLE) has been detected abusing Google Doc URLs to infect victims. > ### No More Ransom Project https://www.nomoreransom.org/ 身代金はもう払わないぞ!の精神で暗号化解除ツールの開発と配布をするプロジェクト。セキュリティ対策ソフトの開発会社も協力している。 * [「No More Ransom」参加ベンダー4社のランサムウェア復号ツールの無償提供が開始](http://internet.watch.impress.co.jp/docs/news/1035579.html)(INTERNET Watch;2016年12月16日) Webマルウェア ---- 本章では、以下のマルウェアを対象にする * Webサーバー上のコンテンツが改ざんされ、そのサーバーから配布されるマルウェア * 不正広告から配布されるマルウェア(Malvertising) ### 攻撃ベクター * CMSの脆弱性 * CMS=Wordpress、Joomla!(ジュームラ)、Drupal(ドルーパル) * CMS自体またはそのプラグインのセキュリティホールが放置されている * 特に有志によるプラグインの脆弱性は開発者に放置されやすい * 管理者アカウントのパスワードが弱い * 「弱い」とはパスワードリスト攻撃(アカウントリスト攻撃)により容易に推測できるようなものを指す * ログイン制限をしていない * 外部からの多数のログイン試行をブロックする機構が無いなど * FTP * パスワードが弱い * (改ざんされた)静的・動的HTML * iframeタグ * scriptタグ * Web広告/不正広告/Malvertising * Flash * JavaScript * オープンリダイレクト脆弱性 * [Unvalidated Redirects and Forwards Cheat Sheet - OWASP](https://www.owasp.org/index.php/Unvalidated_Redirects_and_Forwards_Cheat_Sheet) * ブラウザ * see ドライブバイダウンロード攻撃 * ブラウザプラグイン * 有名なプラグインと類似のmaliciousなプラグインとか * 有名なプラグインがmaliciousな動きをしたケースもある * 例: [Chromeの拡張機能Window Resizerがマルウェアを含んでいたことが発覚 - GIGAZINE](http://gigazine.net/news/20140114-window-resizer-malware/) (2014/1/14) ### 感染経路 > (下図は)JPCERT/CCが確認した、代表的なWebサイトへの攻撃です。 ![Webマルウェアの感染経路](https://www.jpcert.or.jp/pr/2016/img/pr160004_picture02.png) ~ 画像は https://www.jpcert.or.jp/pr/2016/pr160004.html より ### ドライブバイダウンロード(Drive-by download;DbD, DbyD) TODO ### Malvertising TODO 事例: * Astrum EK(2017年) #### Web広告の形態 TODO: 広告の枠を購入するタイプと、リアルタイム入札の2種があるのは知ってる。もっと調べないとなぁ。広告効果が低いサイトでは広告単価が低くなるのでチョメチョメな広告が表示されるとかないとか。 キーワード: * 入札 * アドテク * アドネットワーク ### Web Browser Fingerprint アドテクノロジー界隈が使っているトラッキング技術だけど参考情報として。 * まずは試してみよう→ https://amiunique.org/ * [Fingerprint解説サイト](https://www.saitolab.org/fp_site/) * [Advanced Tor Browser Fingerprinting](http://jcarlosnorte.com/security/2016/03/06/advanced-tor-browser-fingerprinting.html) * Canvas Fingerprinting * HTML5で追加されたcanvasに文字をレンダリングされたときの画像ハッシュ値を根拠とする * 試されたい方→ https://browserleaks.com/canvas TODO:Exploit Kitと関連してOSやJSエンジンの種類やバージョンを取る方法(本当にこれ使ってるの?←yes) ### 「攻撃者の用意したWebサイト」に見られる挙動 #### アンチ検索エンジン * ユーザーエージェントによる制限/リファラの制限に注意 * 検索結果から流入してきたかどうか、など * googlebotなどに不正コードを踏ませないようにする * Googleには検索結果から不正サイトを開こうとしたときに警告を表示してブロックする機能がある。これは攻撃者にとって不都合 #### 解析者避け * 複数回同一IPからアクセスした場合、不正コードが挿入されない場合がある #### 発信元の国制限 目的は知らないが、国内から改ざんされたサイトにアクセスしても不正コンテンツが挿入されないことがある。 回避テク: * オープンプロキシ * 例)[1]の「図14:国外のIPアドレスが割り当てられたプロキシON/OFF時の応答ページの違い」 [1] [CYBER GRID VIEW Vol.3猛威を振るうRIG Exploit Kitの全貌と対策 | LAC WATCH | 株式会社ラック](https://www.lac.co.jp/lacwatch/report/20170202_001203.html) HTA ---- 本章はmalicous な HTML Applicationsを扱う。 [Smuggling HTA files in Internet Explorer/Edge](https://www.nccgroup.trust/uk/about-us/newsroom-and-events/blogs/2017/august/smuggling-hta-files-in-internet-exploreredge/) (2017/8/) > A HTA file is usually made up of HTML and script such as JScript or VBScript, much like a normal web page. TODO:HTAをよく理解してないのでやってみたい [PowerShell Empireを利用した標的型攻撃 | LAC WATCH | 株式会社ラック](https://www.lac.co.jp/lacwatch/people/20170807_001352.html) (2017/8/7) > 中身はリンク先としてHTML Application (HTA)を実行する機能を持つmshta.exeがIPアドレス(80[.]209[.]252[.]70)を引数として指定されています > HTAファイルは、図7に示す通り、VBScriptを利用して、PowerShellスクリプトを実行します。オプション「-enc」以降のPowerShellスクリプトはコードがエンコードされており、図8(筆者注:省略)がデコードしたものです。 C2サーバー(C&Cサーバー) ---- C2(C&C)はCommand and Controlを意味する。 C2サーバーは単にC2とも呼ばれることもある。 ### 現状(~2016年) __TODO__: * Torの利用状況は? * DNSレベルでマルウェアのアクセスを弾くのもあるね(IIJとどっかのISPだっけ?) * 404エラーベース * ファイアーウォールをかいくぐるため * 404エラー=そこで通信が終了した、そこには何の情報もない、という思い込みを利用 ### DNSトンネリング(DNS Tunneling) [Detecting DNS Tunneling - detecting-dns-tunneling-34152](https://www.sans.org/reading-room/whitepapers/dns/detecting-dns-tunneling-34152) ### Twitterに潜むC&Cサーバー TODO:調査 * とあるExploit Kitがこの手法を使うらしい ### Cookie * [Cookieヘッダーを用いてC&CサーバとやりとりするマルウエアChChes(2017-01-26)](http://www.jpcert.or.jp/magazine/acreport-ChChes.html) ### いろいろ * [Hiding in Plain Paste Site: Malware Encoded as Base64 on Pastebin](https://www.recordedfuture.com/base64-pastebin-analysis/)(Recorded Future; 2016/12/13) * これもC2と言えなくもない? * 中身はPowerShell scripts 攻撃者の事情・思考 ---- マルウェア関連のツールはブラックマーケットで販売されている。そのツールは初心者でも扱える設計になっているという。ビジネスモデルとしては、ツール購入者がそのツールで得た収入の何%を販売者に支払うものがある。 本章では著名な攻撃者に関わるサービスやツールを紹介する。繰り返しになるが、ここで得た情報は悪用してはならないことを肝に銘じること。 ### 電子通貨 ビットコイン(BitCoin)が代表的。匿名性は高いが、台帳が公開されているため何人がいくら支払ったのかを調べやすいのがネック。支払先のアドレス(財布)を感染者ごとに変えることはある。 ### Ransomware as a service(RaaS) ググればいくらでも出るので簡単に。 [暗号化型ランサムウェア「STAMPADO」の価格設定から考える「Ransomware as a service」のビジネス | トレンドマイクロ セキュリティブログ](http://blog.trendmicro.co.jp/archives/13636)(2016/7/28) > ランサムウェアが金のなる木とみなされるようになり、サイバー犯罪者はこぞって分け前にあずかろうとしています。その結果、知識を持つサイバー犯罪者が、ランサムウェアを利用した自作のサービスを「Ransomware as a Service(RaaS)」として、新人や志望者向け材料キットの形で提供していることが確認されています。 2016年がランサムウェアが重大な脅威として認められた年というのが筆者の印象。重要なデータを人質に取られたために支払いに応じた人が多かった模様… [【海外セキュリティ】 サイバー犯罪の投資対効果と業務パスワードの傾向 - INTERNET Watch](http://internet.watch.impress.co.jp/docs/column/security/710001.html)(2015/7/3) > サイバー犯罪の投資対効果は1425% そうとは書かれてないけど、これもRaaSの話ではないかと。 ### 攻撃者が用いるテクニック ---- 五十音順で掲載。【無効化済み】は既にシステムがデフォルトで無効化していることを意味する。\*印は別の章で解説している項である。 ### [Windows] UAC回避と権限昇格 [NEUREVTボットの解析 - フォーティネット](http://www.fortinet.co.jp/security_blog/140129-NEUREVT-BOT-ANALYSIS.html) > UACが有効になっているシステムでは、特権を昇格させる必要があっても、このマルウェアはユーザーへのプロンプトを妨害したり、UACを無効化してしまうようなトリックは使いません。その代わり、直接ユーザーに許可を「求め」ます。 > このマルウェアは「Cmd.exe」のプロセスを作成し、マルウェアのファイルパスをコマンドラインの引数に置きます。プロンプトウィンドウがポップアップするということはつまり、Windowsのアプリケーションである「Cmd.exe」が特権昇格を求めていることになります。不注意なユーザーはこのリクエストに許可を与えてしまうでしょう。その後、マルウェアの新たなプロセスが「Cmd.exe」により作成され、「Cmd.exe」のシステム特権を引き継ぎます。 > このマルウェアは次の言語で警告を行うことが可能です。ロシア語、ポルトガル語、ドイツ語、フランス語、オランダ語、アラビア語、ヒンディー語、ペルシャ語、簡体字中国語、トルコ語、インドネシア語、イタリア語、スペイン語、ポーランド語、日本語、ベトナム語 > システムのデフォルトの言語ロケールに基づいてこれらの1つを選択し、ユーザーに疑念を抱かせるような言語の不一致を避けます。 ### [Windows] アイコンとファイル拡張子でのごまかし TODO ### [Windows] autoran.ini 【無効化済み】 TODO ### exif情報 exif情報にマルウェアのコンポーネントを仕込むケースがある。 実例: * [JPGファイルを隠ぺいに利用するWebサーバ専用バックドア「BKDR_ZZPEG」の被害を日本で確認 | トレンドマイクロ セキュリティブログ](http://blog.trendmicro.co.jp/archives/7760) ### \*[Windows] MBR(Master Boot Record)の改竄 TODO:軽い説明 [別章](#MBR)に詳細あり。 ### 画像ファイル 画像ファイルに以下のデータを仕込むことがある。(cf. [\#exif情報](#exif情報)) * C2接続情報などconfigデータ * 例)開くと正常な画像に見えるが、実は終端にマリシャスなデータを隠している(by [JSOC INSIGHT Vol.10 by ラック](http://www.lac.co.jp/security/report/pdf/20160106_jsoc_j001w.pdf)) * 例)HTTP GETするときに、画像ファイルをフェッチするように見せて、実はXORする必要がある(Daserf;[Cyber Grid View Vol.2 by ラック](http://www.lac.co.jp/security/report/pdf/20160802_cgview_vol2_a001t.pdf)) ### [Windows] ショートカット・ファイル TODO 例: * [世界のセキュリティ・ラボから - Windowsショートカット・ファイルの悪用:ITpro](http://itpro.nikkeibp.co.jp/article/COLUMN/20090215/324745/?rt=nocnt) (2009/02/20) * [ドキュメントにないLNKの機能に隠れるJanicab | エキサイトセキュリティ](http://security.excite.co.jp/fsecureblog/article/3148) (原文:2015/4/22) * [LNKファイルを利用してマルウェアをダウンロードする手法が増加中 | トレンドマイクロ セキュリティブログ](http://blog.trendmicro.co.jp/archives/15091) (2017/5/31) ### セキュリティソフトの停止 例: * 「インストールの妨げになるのでセキュリティソフトは停止してください」というようなインストラクションを加える TODO: Emdiviがやってたような気がする…(曖昧な記憶) ### ソーシャルエンジニアリング 真面目な話、人を騙すのは容易い。ゼロ知識から予見することは困難なので、人の悪意はどのような形をしているのかをまじで知ったほうがいいし、身構えやすい。 攻撃ベクター: * 対面 * 電話 * 電子メール * 郵便 * 裁判の訴状 * 架空請求で使われる手口。マルウェアはもう関係ないっす TODO:これを専門に扱う本 TODO:情報漏えいしたケースとかを列挙すれば十分かなぁ(←さすがに脱線しすぎてるかな←まあいいんじゃない)→JTBのお漏らしと伊勢志摩サミット [脱線]筆者は小学生の時に2度おもらし事故をしてこの手のやり口にはもう懲りているのです。で、赤の他人にされるお願いごとはすべて純粋な善意によるものであると暗に信じている方、他人の悪意に触れてみてください。<span style="color:gray">ステマになりますが、セキュリティの専門会社などに依頼して社内で標的型攻撃を模擬することも大切です。どうやって行うべきかはその会社のコンサルに相談してください…</span> ### \* DNSクエリ TODO ### DNSチェンジャー(DNSサーバー設定改ざん) 2通り: * OSのDNS設定を書き換える * ルーターのDNS設定を書き換える([別章](#狙われるルーター)へ) ### ドメイン名ハイジャック(DNS Hijacking) TODO DNS hijacking using cloud providers (2017/5) https://2017.appsec.eu/presos/Developer/DNS%20hijacking%20using%20cloud%20providers%20%E2%80%93%20no%20verification%20needed%20-%20Frans%20Rosen%20-%20OWASP_AppSec-Eu_2017.pdf ### 日本人が使用しているかチェック 警告のポップアップの言語を適切にするため、等 * キーボード配置 ### Pass-the-Hash パスワードクラッキングの手法の一つ。認証システムではユーザーのパスワードをハッシュ化して保存していることが多い。Pass-the-Hash攻撃はハッシュを元に認証を行う攻撃のこと。 Active Directory関連で、Pass-the-Ticketという攻撃もある。 [Active Directoryに対する攻撃の検知と対策手法のドキュメント、JPCERT/CCが公開 - クラウド Watch](http://cloud.watch.impress.co.jp/docs/news/1049364.html) (2017/3/14) ### パスワードリスト攻撃 あるあるなパスワード・既知のパスワードでアカウントへのログインを試みる古典的な攻撃方法。 ### Hidden Process TODO ### \*[Human] 標的型攻撃 [別章](#標的型攻撃、水飲み場攻撃)参照 ### Pinnig TODO: 正直良く知らん ### ポートスキャン ここにnmapの使い方を書くのは危なすぎるので各自で調べてください。 学内・公共のネットワークでポートスキャンをかけるのやめましょう。あなたの腕試し/技術力誇示の場所ではありません。 #### [Shodan](http://shodan.io/) 攻撃への転用を含めたちゃんとした紹介をするのは危なっかしいので各自で調べてください。 ### hostファイル書き換え TODO ### メモリインジェクション TODO 覚えておくといいWin32 API(Windows API) ---- ### kernel32.dll API name | 機能 | 返り値 :-:|:-:|:-: IsDebuggerPresent | 自プロセスにデバッガがアタッチしているかどうかを調べる<br/>回避可能 | 0: No TODO ### ### 学習に役立つ便利情報 #### HSP Win32APIを使って簡単にプログラミングができるCでもC#でもVBAでもない言語(インタプリタ系)。これを使うとマルウェアライクな挙動をする何かを作れる。 #### WinSpy++ Windowオブジェクトとかの情報をとれる。デバッグに役立つ。プログラムはspyxx.exeという名前でVisualStudioに付属したツール。 Windows Exploitation ---- Windowsでチョメチョメな(※検索避けです)ことをする方法。 ### Mimikatz https://github.com/gentilkiwi/mimikatz 攻撃者を知るために使い慣れておくといいかもしれないツール。AV回避にも使われたりしてる。 できること: * これはアクセス制限可能なマテリアルに書きたい内容だ… RAT ---- **TODO**: RAT(Remote Access Trojan) \# 利用したい脆弱性を指定すると勝手にマルウェアを生成するツールがあったような…(Metasploitじゃない方) 本章では2016年までに代表的なRATを紹介する。 TODO:(この用語、死語になってないか) ### CyberGate https://www.blackhat.com/docs/asia-15/materials/asia-15-Chubachi-Slime-Automated-Anti-Sandboxing-Disarmament-System.pdf "Popular RAT tools" "CyberGate can generates remote access server for targeting host" "Anti-sandbox option enabled" Exploit Kit ---- **TODO**:Exploit Kitとは Exploit KitはEKと略されることもある。 * [DbD/EKの情報を集めるときに見ると良いサイト](https://gist.github.com/koike/2d9e4b40f9ad24ad453b18cc1a3b9832) (by nao_sec kkrnt) 本章では2017年現在で代表的なExploit Kitを紹介する。 ※活発な活動期間は「CYBER GRID VIEW Vol.3」(ラック)、「RIGエクスプロイトキット解析レポート」(NTT Security)を参考にした ### Angler(〜2016/6) (オワコンなので興味なし) ### Nutrino(ニュートリノ;2016/6〜2016/9) (オワコンなので興味なし) ### RIG(リグ;2016/9〜) > NTTセキュリティ・ジャパン株式会社のSOCでは、2016年9月頃からRIGエクスプロイトキットによる攻撃を多く観測しました。RIGエクスプロイトキットはドライブ・バイ・ダウンロード攻撃を行うためのパッケージの1つであり、改ざんサイトや不正広告から誘導され、マルウェアへの感染を引き起こします。 [NTT] 次表はRIG EKの攻撃ステップを解説したものである([NTT]の表2より引用)。言葉足らずなところは赤字で加筆した。 Step | 説明 :-:|:- ① | 改ざんサイトや広告はユーザ端末からのアクセスを待ち受け、RIGエクスプロイトキットが設置された攻撃サイトに転送する。 ② | 攻撃サイトはJavaScriptコードを送付し、ブラウザ判定を行い<font color=red>条件を満たしていれば</font>③へ進む。 ③ | 攻撃サイトは2つ目のJavaScriptコードを送付し、<font color=red>IEの</font>動作環境をチェックした後、脆弱性を悪用する攻撃を行う。また、並行してFlashファイルを読み込ませる。 ④ | 攻撃サイトは不正なFlashファイルを送付し、脆弱性を悪用する攻撃を行う。 ⑤ | ③もしくは④で脆弱性の悪用に成功した場合、シェルコードを実行してマルウェアのダウンロードとインストールを行う。 補足: * __[NTT] ②のブラウザ判定__ 一般のWeb開発でもされるようなUser-Agentに基づくブラウザ判定([NTT]の図5)とIE固有機能に基づく判定([NTT]の図6)がされる。両者の判定結果は一致しなければならない * __Javascriptに対する脆弱性攻撃__ 利用するのはCVE-2013-2551(〜2017/3)またはCVE-2016-0189+CVE-2015-2419(2017/3〜)。任意メモリ書き換えが可能なのでOSのバージョンを確認した後、ROPチェーンを組む。シェルコードはマルウェアのダウンロードと実行をする。詳細は[NTT]のp.15参照 * __Flashファイルによる脆弱性攻撃__ 使用する脆弱性と難読化手法は検体によって異なる[NTT]。攻撃ステップは次の通り[NTT]。(各詳細が[NTT]でp.17〜p.21の5ページに渡って解説されている) 1. Flashファイルが実行されている環境を調査する。 2. 脆弱性をついて任意のコードを実行可能にする。 3. シェルコードを実行することで、マルウェア感染を引き起こす。 * __シェルコード__ javaScriptとFalshで挿入されるシェルコードは共通。[NTT] * __マルウェアをダンロードするとき__ CreateProcess関数によりcmd.exeを実行。JScriptコードを生成してwscriptを実行する。引数で指定されたUser-Agentを用いてURLにアクセスし、マルウェアをダウンロードする。ダウンロードするマルウェアには多数の種類が報告されているが、SecurityのSOCではCerberが最も多く観測された。[NTT] 解析報告(と対策方法): * [LAC] [CYBER GRID VIEW Vol.3猛威を振るうRIG Exploit Kitの全貌と対策 | LAC WATCH | 株式会社ラック](https://www.lac.co.jp/lacwatch/report/20170202_001203.html) (2017/2/2) * 「図3:攻撃キャンペーンが利用するエクスプロイトキットの変遷(2016年)」もおもしろい * [NTT] [RIGエクスプロイトキット解析レポート(by NTTセキュリティ・ジャパン株式会社)](https://www.nttsecurity.com/-/media/nttsecurity/files/resource-center/what-we-think/rigek-analysis-report.pdf) (2017/5/16) * アングラな市場での調査レポートも載っていておもしろい * [nao-sec] [初めての Rig Exploit Kit リーディング](https://github.com/nao-sec/RigEK) (2017/5/15) * [Twitterでの \#RigEK の検索結果](https://twitter.com/search?q=%23RigEK&src=typd) ### Magnitude TODO ### Sundown(2016年X月~2017年Y月?) [ステガノグラフィの手法を駆使するエクスプロイトキット「Sundown EK」を確認 | トレンドマイクロ セキュリティブログ](http://blog.trendmicro.co.jp/archives/14214) (2017/1/5) ### Sundown-Pirate Exploit Kit(Sundown-Pirate EK)(2017年6月~)※トレンドマイクロでの命名 [不正広告キャンペーン「ProMediads」、新型エクスプロイトキットを利用しランサムウェアなどを拡散 | トレンドマイクロ セキュリティブログ](http://blog.trendmicro.co.jp/archives/15488) (2017/7/24) ### Terror(2017年1月~?) [Terror Evolved: Exploit Kit Matures](https://blogs.cisco.com/security/talos/terror-evolved-exploit-kit-matures) (2017/5/18) [エクスプロイトキット戦国時代! 新興ツールが急速な進化を見せる | THE ZERO/ONE](https://the01.jp/p0005184/) (2017/6/15) ### Astrum EK/Stegano EK(2016年下半期~) [「Astrum EK」の更新を確認。エクスプロイトキット脅威再燃となるか | トレンドマイクロ セキュリティブログ](http://blog.trendmicro.co.jp/archives/15034) (2017/5/22) [1] [AdGholas Malvertising Campaign Using Astrum EK to Deliver Mole Ransomware | Proofpoint](https://www.proofpoint.com/us/threat-insight/post/adgholas-malvertising-campaign-using-astrum-ek-deliver-mole-ransomware) (2017/6/20) AdGholasという攻撃キャンペーンがAstrum EKを使っていて、Moleランサムウェアが落ちてくるっぽい(→関連:Moleランサムウェア)(TODO:読み間違えてる気がする) > At this point, we began to consider whether AdGholas into Astrum EK (also known as Stegano EK) might be the infection vector, despite the fact that the ransomware payload was inconsistent with the activity of their usual customers who normally spread banking malware. [1] [不正広告キャンペーン「AdGholas」、追跡困難化した脆弱性攻撃の利用で攻撃を拡大 | トレンドマイクロ セキュリティブログ](http://blog.trendmicro.co.jp/archives/15325) (2017/6/27) > 2017年5月15日に、解析回避機能を備えた「Astrum EK」の活動再開が確認されました。そして、それは不正広告キャンペーン「AdGholas」によって拡散されたことがわかりました。「AdGholas」は、ダウンローダやオンライン銀行詐欺ツール(バンキングトロジャン)「URSNIF(別名Dreambot/Gozi)」や「RAMNIT」など多様な不正プログラムを拡散します。 > > 弊社も、CRYPAURAファミリの亜種を確認しています。その中には CRYPTOMIX の亜種、「MOLE」があります。Google ドキュメントの共有URL を悪用して拡散するランサムウェア「MOLE」は、4月下旬に確認されました。 Root Kit ---- TODO Boot Kit ---- > ブートキットとは、コンピュータの起動ドライブに感染する不正プログラムの一種です。PC などのコンピュータでは電源投入後、まず起動ドライブ内のブートセクタや MBR(マスターブートレコード)などと呼ばれる部分に保存されているプログラムが動き、OS を起動させます。ブートキットはこの仕組みを利用して Windows OS 起動前に不正プログラムを活動開始させます。結果的に Windowsシステム上に不正プログラムのファイルや自動起動設定などの「感染の痕跡」を残さずに不正プログラムを活動させることなどが可能になります。 [1] [1] [国内ネットバンキングを狙う「URSNIF」が新たに「Bootkit」を利用 | トレンドマイクロ セキュリティブログ](http://blog.trendmicro.co.jp/archives/15144) Metasploit ---- 読み:めたすぷろいと。解析経験が乏しいので攻撃に使われているのか不明だが、攻撃にも使われうるツールなので一応取り上げる。絶対悪用するなよ。 MetasploitはRapid7社の製品で、脆弱性スキャナ、つまりペネトレーションテストをするためのツールである。無料版と有料版(商用版)が用意されており、学習用に軽く使う程度なら無料版で差し支えない。 MSFconsoleはMetasploit Frameworkが抱えている攻撃コードデータベースを利用するためのコンソールである。コマンドラインで指定された設定ファイルを読み込むのではなく、msfconsole(MSFconsoleのコマンド名)で対話しながら攻撃条件を設定することに特徴がある。攻撃コードの検索、設定、実行の各ステップの操作に慣れが必要である上に、msfconsoleの使い方をいい感じにまとめたサイトが無いので(筆者調べ)学習が難しいという印象がある。しかし、次の1冊さえあればMetasploitを大体使いこなせるようになるはずで、筆者はこれをMetasploitを利用する上で必携の一冊と捉えている。 実践 Metasploit――ペネトレーションテストによる脆弱性評価 http://www.oreilly.co.jp/books/9784873115382/ 不正行為の教唆に当たらないようにやり方は伏せるが、MetasploitにはWindows向けにシェルコードを生成する機能がある。そこで生成されたコードをネタに解析するのも面白い(筆者はIIJのインターンでそれをやったことがあって、実際おもしろい動き方をする)。 悪性文書ファイル ---- Maliciousな文書ファイルは、主に研究方面で「悪性文書ファイル」と呼ばれる。maldocとも。 ### VBAマクロ@Microsoft Office 例: * [Metasploitを使ってconnect-back shellを起動するWord文書を作ってみる - ももいろテクノロジー](http://inaz2.hatenablog.com/entry/2015/11/13/225247) * [電卓を起動するWord文書を作ってみる - ももいろテクノロジー](http://inaz2.hatenablog.com/entry/2015/10/12/155137) ### PDF TODO 参考: * [Abusing Adobe Reader’s JavaScript APIs by Abdul-Aziz Hariri & Brian G…](http://www.slideshare.net/codeblue_jp/abusing-adobe-readers-javascript-apis-by-abdulaziz-hariri-brian-gorenc-code-blue-2015) ### RTF リッチテキストファイル。 TODO 気になる子ちゃん: * Webページで利用可能なリッチテキストエディタはExploit可能なのだろうか? PowerShell ---- 急増中。特にダウンローダーがよく使っている [PowerShell マルウェアが急増: 解析したスクリプトの 95.4% が悪質 | Symantec Connect](https://www.symantec.com/connect/tr/blogs/powershell-954-0?page=1) [セキュリティ研究センターブログ: マルウェア解析奮闘記 Powershell多用マルウェアの解析](http://blog.macnica.net/blog/2016/10/powershell-38fc.html) TODO: 概要説明 疑問点(TODO): * PowerShellスクリプトの実行ポリシーによらずこういったコードが実行されてしまうのだろうか? ### 攻撃経路:LNKファイル→PowerShell * [LNKファイルを利用してマルウェアをダウンロードする手法が増加中 | トレンドマイクロ セキュリティブログ](http://blog.trendmicro.co.jp/archives/15091) (2017/5/31) ### 攻撃経路:LNKファイル→HTAファイル→VBScript→PowerShell/RTFファイル→HTAファイル→VBScript→PowerShell * [PowerShell Empireを利用した標的型攻撃 | LAC WATCH | 株式会社ラック](https://www.lac.co.jp/lacwatch/people/20170807_001352.html) (2017/8/7) ### 攻撃経路:Powerpointファイル→リンクをホバー→Powershell * [PowerPoint File Downloads Malware When You Hover a Link, No Macros Required](https://www.bleepingcomputer.com/news/security/powerpoint-file-downloads-malware-when-you-hover-a-link-no-macros-required/) (2017/6/2) * [マウスオーバとマクロを利用、PowerPoint文書閲覧時に感染させる攻撃手法に注意 | トレンドマイクロ セキュリティブログ](http://blog.trendmicro.co.jp/archives/15257) (2017/6/19) ### 難読化と難読化解除 TODO 参考: * `-enc`(頻出) UTF-16をBase64でエンコードしたやつ? ### PowerShell Empire TODO JavaScript ---- 標的型メールの添付ファイルとして登場する。 TODO:具体例 ### 難読化 TODO MBR ---- MBR(Master Boot Record) MBRを書き換え、OSよりも先に自分を起動することを目的とする。以降TODO ### 例 [緊急レポート:韓国サイバー攻撃マルウェア詳細解析結果│セキュリティ・リサーチのFFRI(エフエフアールアイ)](http://www.ffri.jp/blog/2013/03/2013-03-27.htm) ファイルシステム ---- ### 復元対策 削除後のセクタにファイルの痕跡を消すことを考える。まさにバイナリ解析から逸脱してフォレンジック対策のお話。 TODO:トピックを集める ### NTFS 代替データストリーム→例:Zone.Identifier #### 隠し領域 ### FAT #### 隠し領域 ### USB Backdoor DNSクエリ ---- [DNSクエリにPowerShellコマンドを乗せて運ぶ攻撃を確認 | マイナビニュース](http://news.mynavi.jp/news/2017/03/07/101/) ### DNSトンネリング TODO スマホアプリに潜むマルウェア ---- ### バックドア型不正アプリ [音声や動画を窃取する Android 端末向けバッグドア型不正アプリ「GhostCtrl」 | トレンドマイクロ セキュリティブログ](http://blog.trendmicro.co.jp/archives/15502) (2017/7/25) [モバイル端末向けランサムウェア「LeakerLocker」、ユーザ情報の流出と引き換えに身代金を要求 | トレンドマイクロ セキュリティブログ](http://blog.trendmicro.co.jp/archives/15624) (2017/8/3) 狙われる家庭用ルーター ---- TODO:概要 * 家庭用ルーターの脆弱性 * 管理者アカウントのパスワードが初期のまま * 管理画面にXSS脆弱性 * PHPの任意コード実行脆弱性 * [DNS 設定を書き換えるマルウエア (DNS Changer) 感染に関する注意喚起](https://www.jpcert.or.jp/at/2012/at120008.html) TODO:DNSチェンジャーとは * [DNSチェンジャーの脅威とは | トレンドマイクロ:セキュリティ情報](http://about-threats.trendmicro.com/RelatedThreats.aspx?language=jp&name=How+DNS+Changer+Trojans+Direct+Users+to+Threats) 一見外部からアクセスできないように見えるルーターは、以下の経路によりアクセス可能である。ルーターのセキュリティは重要視されるべきで、内部ネットワークで使っているからそんなに影響がないと思ってはいけない。 * ~~改ざんされた正規サイト→ルーターにアクセス→ルーターのDNS設定書き換え~~ 該当事例発見できず * マルウェア感染済み端末→ルーターにアクセス→ルーターのDNS設定書き換え ルーターにアクセス出来てしまうのは、脆弱性の利用でそれが容易であったり、管理者のアカウントパスワードが初期設定のままであるか、推測が容易なものであるからという理由による。 ### JITON(2016年~;PC&スマホ) * [ニュース - 家庭のルーターやテレビに迫るサイバー攻撃、トレンドマイクロが解説:ITpro](http://itpro.nikkeibp.co.jp/atcl/news/16/110703280/?rt=nocnt) * [家庭用ルータを狙う不正スクリプト「JITON」、国内でも攻撃継続中 | トレンドマイクロ セキュリティブログ](http://blog.trendmicro.co.jp/archives/13114) > 問題の不正な JavaScript は、改ざんされた正規サイトに仕掛けられており、日本国内のサイトにおいても該当の改ざんを確認しています。このような活動は以前にも「家庭用ルータの DNS設定変更を行う不正プログラムを確認」で報告をしていますが、不正サイトへの誘導により、結果として不正プログラム感染や、アカウント認証情報の詐取などの被害に遭う恐れがあります。 ### Switcher(2016年~;Andorid) * [Androidを標的にした新種のマルウェア “Switcher” が発見される。Android経由でWi-Fiルーターを乗っ取りDNS設定を書き換えて詐欺サイトに誘導 | juggly.cn](http://juggly.cn/archives/213740.html) * [Switcher: Android joins the ‘attack-the-router’ club - Securelist](https://securelist.com/blog/mobile/76969/switcher-android-joins-the-attack-the-router-club/) ### Moose(2015年:Linux) 読み:むーす。 * [Linuxルーターを狙うワーム「ムース」がSNSをむさぼり尽くす | マルウェア情報局](https://eset-info.canon-its.jp/malware_info/news/detail/150618.html) ### ルーターの防衛手段 こんなのがある。筆者はTrendMicroの回し者ではない。 [ウイルスバスター for Home Network - トレンドマイクロ](http://safe.trendmicro.jp/products/vbhn.aspx) TODO:このInternals IoTマルウェア ---- IoT機器に対するマルウェア感染は2016年頃からホットになった。2017年で下火になった感。 #### Mirai(2016年) TODO。2016年12月がピーク?(TODO)2017年はMiraiよりもHajimeのイメージ。 2017年のUSENIXでMiraiに関する報告がありそうです。期待ですね。 [Understanding the Mirai Botnet | USENIX](https://www.usenix.org/conference/usenixsecurity17/technical-sessions/presentation/antonakakis) TODOだらけで良ければこちらも→[All about Mirai (Malware) ](https://hackmd.io/s/S122vFpQl#) #### Hajime(2016年9月~) TODO: Miraiの亜種でもなく、Miraiとは正反対らしい TODO: あとで裏取り→[IoTのボットネットの新入りマルウェア「PERSIRAI」 | THE ZERO/ONE](https://the01.jp/p0005224/) ### PERSIRAI(2017年) > OEMで生産されたネットワークカメラを対象にしており、影響のあるモデルは1,000以上になります。PERSIRAI は、既にインターネット上でソースコードが公開されている「MIRAI」から派生したマルウェアとして出現しました。 [1] [1] [IoTの新たな脅威、ネットワークカメラをボット化する「PERSIRAI」の出現 | トレンドマイクロ セキュリティブログ](http://blog.trendmicro.co.jp/archives/14836) ### BrickerBot(2017年) > BrickerBot の場合、IoT機器のストレージ機能とカーネルパラメータの設定を変更する、インターネットへの接続を妨害する、動作速度を低下させる、機器内のファイルを削除するなどの一連の不正な Linuxコマンドを実行することで機器に致命的な改変を加え、最終的に使用不能にします。 [1] [1] [IoT機器を「使用不能」にするマルウェア、「BrickerBot」 | トレンドマイクロ セキュリティブログ](http://blog.trendmicro.co.jp/archives/14757) ### 以下ネタ枠 #### Linux.MulDrop.14(2017年) [「Raspberry Pi」を狙うマルウェアが出現--暗号通貨をマイニング - ZDNet Japan](https://japan.zdnet.com/article/35102503/) ロシアのDoctor Webがおとりのラズパイで発見。pi:raspberry(Raspbianのデフォルトユーザーとパスワード)で外部からログインできるラズパイをターゲットにする。拡散活動あり。ビットコインではない暗号通貨のマイングもおこなうとのこと。 [Shodanで"ssh raspbian"と検索すると](https://www.shodan.io/search?query=ssh+raspbian)約7万台ヒットするので、目のつけどころはいいのかもしれない。__※勝手にログインするのは不正アクセスなのでやってはいけませんよ__ 狙われる産業システム ---- 産業システムで使われるシステムは外界からの攻撃を想定していない作りであることがあり、それが今になっても使われ続けてしまったためにこのような現状となっている。 ### Stuxnet(2010年) 読み:すたっくすねっと。TODO: (もう古すぎないか…) <!-- 要点(大昔に調べたときの記憶で書いてるのでここの情報は暫定): * USBデバイスを起点に感染 * 未知のWindowsの脆弱性を複数利用 * 特定のネットワーク構成でのみ動作 * PLCの制御コードに不正コードを挿入 * 異常な動作をするような制御命令を出させる * シマンテック、トレンドマイクロから詳細な解析レポートが出ている。シマンテックはStuxnetが動作するようなネットワークを実際に組んで動作検証した --> ### BlackEnergy 2(2010年) TODO ### CrashOverride(2016年) ESETの検出名はWIN32/INDUSTROYERっぽい。 * [JVNTA#99970831: 制御システムを狙う CrashOverride マルウェアの脅威](https://jvn.jp/ta/JVNTA99970831/index.html) (2017/6/13) * [停電の原因は産業制御システム狙うマルウェアか 「Stuxnet以来、最大の脅威」 - ITmedia エンタープライズ](http://www.itmedia.co.jp/enterprise/articles/1706/13/news052.html) (2017/6/13) * > セキュリティ企業のESETは6月12日、ウクライナの首都キエフで2016年12月に発生した停電について、産業制御システムを狙うマルウェアを使ったサイバー攻撃だった公算が大きいと発表した。「Stuxnet以来最大の産業制御システムに対する脅威」と位置付けている。 * [ESET: WIN32/INDUSTROYER - A New Threat for Industrial Control Systems](https://www.welivesecurity.com/wp-content/uploads/2017/06/Win32_Industroyer.pdf) (2017/6/12) * [Welcome to Dragos](https://www.dragos.com/blog/crashoverride/) (2017/6/12) * PDF Report: [CRASHOVERRIDE: Analysis of the Threat to Electric Grid Operations - CrashOverride-01.pdf](https://www.dragos.com/blog/crashoverride/CrashOverride-01.pdf) マルウェア対策(Anti-Malware) ---- ### 積極的対策 積極的なマルウェア対策の主要なアプローチは次の通り。 * 非実行状態のマルウェアの検出 * 詳しくは、後章「マルウェアの検知手法の分類」参照 * メールサーバーでの添付ファイルの検疫 * 例)GMail * 実行状態のマルウェアの検出 * TODO:章を立てねばならぬか… ### 消極的対策 消極的なマルウェア対策の主要なアプローチは次の通り。 #### 物理レベル * プラットフォームレベルの環境の分離(Trusted execution environment;TEE) * ある意味サンドボックスのハードウェア実装ともいえる。最も信頼を置くことになるファームウェア(ブートローダー)がセキュアに実装されていることがすべての前提になる * Intel系:Trusted Execution Technology * ARM系:TrustZone, (ELx Architecture) * 実行コアを共有するものの、実行環境(レジスタ除く)をSecure、Non-Secureに分け、さらに実行レベルを複数段階に分けることを特徴とする * iPhone 5以降で使用されているとされている * (解説したほうがいい?といってもARMv8-Aの方しか分からない) #### 論理レベル/実行環境レベル * サンドボックスによる環境の分離 * ブラウザ:Chrome(確か) * モバイル:iOS, Dalvik VM * ユーザーアプリケーション向け:UWP * TODO: 中身どうなってるんかな。これを突っついている研究者いないんかな #### ネットワークレベル * ネットワークの分離 * DMZ、VLAN * ネットワークトラフィックの監視 * パーソナルファイヤーウォール(要はセキュリティソフトについてくるファイヤーウォール機能) * ファイヤーウォール、IDS、IPS、**TODO** * snort * 人力部門→MSS(Managed Security Service)、SOC(Security Operation Center) * DNSレベルでのマルウェア通信のシャットアウト * TODO:サービス例 #### アプリケーションレベル * サンドボックス環境でのWebページの事前レンダリング * サービス例 * マクニカ(Menlo Security)[[プレスリリース](http://www.macnica.net/pressrelease/menlosecurity_20150825.html/)]、IIJ[[プレスリリース](http://www.iij.ad.jp/news/pressrelease/2017/0116.html)] * JavaScriptの無害化とサンドボックス内実行 * 例)Google Apps Script(※GAS側で無効化可能) 被感染環境でのマルウェアの検知手法の分類 ---- ### シグネチャ TODO * yara ### ヒューリスティック技術 資料: * たのしいバイナリの歩き方 * ### ログベース(動的解析) TODO: * Symantecがクラウドで動的解析環境を提供しているらしい * クラウドなのは解析基盤を秘密にしたいからだそうで ### 静的解析+機械学習 **TODO**: Cylance(サイランス)PROTECT * [AIで定義ファイル不要の軽さを実現、マルウェア対策ソフト「CylancePROTECT」 -INTERNET Watch](http://internet.watch.impress.co.jp/docs/news/1039391.html) [閑話休題]要は完全なものなど無いという話です。 * CylancePROTECTの輝かしい戦績→ [CylancePROTECT vs. X](https://www.google.co.jp/search?q=CylancePROTECT+vs.+site%3Acylance.com) * タコ殴りにされるCylancePROTECT→[CylancePROTECT vs. X](https://www.symantec.com/connect/blogs/cylanceprotect-symantec-labs-analysis) [余談]機械学習は信頼ならないかも。 <blockquote class="twitter-tweet" data-partner="tweetdeck"><p lang="ja" dir="ltr">Cylance等の機械学習を使ったAVはある意味で凄い・・<br> <a href="https://twitter.com/hashtag/include?src=hash">#include</a> &lt;stdio.h&gt;<br> int main()<br> {<br> printf(&quot;Hello world!\n&quot;);<br> return 0;<br> } <a href="https://t.co/Z5atznKECP">pic.twitter.com/Z5atznKECP</a></p>&mdash; yamatosecurity (@yamatosecurity) <a href="https://twitter.com/yamatosecurity/status/896293163375001600">August 12, 2017</a></blockquote> <script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script> マルウェア(バイナリ)の表層解析 ---- 表層解析(Surface Analysis)は、バイナリをリバースエンジニアリングすることも、実行することもせず、ただファイルをパースして得られる情報を解析することをいう。解析の初期段階にこれを行う。 表層解析で得ておきたい情報は次の通りである。 * ファイルの形式:PE、ELF、js、ps1、swf、jpg、png… * 対象のCPUアーキテクチャ:x86、x86_64、ARM、… * 実行ファイルの場合→パッカーの有無、パッカーの種類:UPX、ASPack、… * PEの場合→使用しているWindows API * APIの種類が少ないときはパッカーの存在を疑う * スクリプトファイルの場合→難読化の有無 * 画像ファイルの場合→exif情報、ヘッダ * ファイルのmd5、sha1、sha256ハッシュ * ハッシュ値でググったり、Virus Totalにハッシュ値を投げる 表層解析で役立つツールは次の通りである。 * file * linuxのコマンド * ファイルのMIME(ファイルの種類)を表示してくれる * readelf * binutils付属コマンド * `-h`オプション: ELFのヘッダを表示→対象アーキテクチャが分かる * `-s`オプション: シンボル情報(関数など)を表形式で表示 * 同binutilsのnm コマンドの方が楽の可能性がある * PEiD * __32ビットPEファイル限定__。開発停止中 * 主要なパッカーの検出を行える * 【宣伝】64ビットPEほかにも対応した[Yet AnotherなPEiD](https://github.com/K-atc/PEiD/)作りました * yara * 種々のルールでパターンマッチングすることが得意。理論上ファイルの形式を問わないのも強み(Cuckoo SandboxのログもOK) * PEiDの代替になる ? * python-yaraはyaraのpython向けラッパー * strings(コマンド)ないしは解析ツールのstringsウインドウ * どんなAscii文字列が含まれているのかを知ることは重要。解析の省力化につながる * 解析ツール:IDA Pro、x64dbgなど * 呼び出しているWindows APIの一覧がImportsウインドウにあるはず * 010Editor * ファイルをパースしてフィールドごとの値をチェックできたり、フィールドごとに色を付けたりする機能あり。特に画像ファイルや正体不明ファイルの解析向き マルウェアの静的解析とその妨害 ---- 静的解析(Static Aanlysis)は、検体を __実行せずに__ 動作内容を把握することを目標とする解析方法である。実行しないとしても、解析ツールに対する攻撃が存在するため、 __解析環境は解析専用の環境__ であることが望ましい。 手法: * ディスアセンブラ、デコンパイラ(=解析ソフト)の利用 * [#バイナリ解析環境を整えよう](#バイナリ解析環境を整えよう)で述べた通り * シグネチャ * 例:yara anti-静的解析の手法: * IDA Proなどの解析ソフトの脆弱性への攻撃 * パッカー([別章](#パッカー、アンパック)を参照されたし) * 難読化([別章](#難読化と難読化解除)を参照されたし) * 特定の引数・ファイル(復号鍵など)を与えないと動かなくする * TODO:具体的な検体を見つける 参考になる資料: * [Edomae 2015 - マルウェアを解析してみよう](http://www.slideshare.net/SatoshiMimura/edomae-2015) [余談]バイナリ解析ツールへの攻撃: * [IDAの脆弱性とBug Bounty by 千田 雅明](https://www.slideshare.net/codeblue_jp/masaaki-chida-japub) マルウェアの動的解析とその妨害 ---- 動的解析(Dynamic Analysis)は、検体を実行しながら動作内容を把握することを目標とする解析方法である。 手法: * 検体をアンパックして静的解析に回す * メモリインジェクションされたコードを抽出して静的解析に回す * APIコールトレース * Process Monitor(Sysinternals Suiteの1つ) * イベントを収集できるが、簡易的。正確にはAPIでなくイベントのトレース * 全部収集してからフィルターでほしいものを表示するアプローチ * [API Monitor](http://www.rohitab.com/apimonitor) * Win32APIなどの呼出しを引数とともに表示する。引数をHexdumpで見ることができ地味に便利 * 欲しいものを指定してから(kernel32.dllのAPIだけという指定も可能)それだけを収集するアプローチ * サンドボックスでの実行 * [#仮想化技術、サンドボックス](#仮想化技術、サンドボックス) を参照されたし。 * テイント解析(Taint Analysis) * TODO:章を立てる anti-動的解析: * anti-debug * Anti-VM/Anti-Sandbox ### 上記手法を利用できるツール TODO:別の章に移動 #### DECAF #### SLIME Sandbox https://www.blackhat.com/docs/asia-15/materials/asia-15-Chubachi-Slime-Automated-Anti-Sandboxing-Disarmament-System.pdf "SLIME Sandbox fakes different sandbox-related artifacts each malware execution" "SLIME logs instruction per execution" 実際のマルウェア解析例 ---- * [IDA Pro・Responder Pro・Shadow3を用いたマルウェアの解析例 | フォーカスシステムズ サイバーフォレンジックセンター](https://cyberforensic.focus-s.com/support/1284/) * 目次を見れば分かる通り、細かく見ている サンドボックスで安全な解析をする --- ### AppJail系(TODO:←くくりが雑すぎる) [Microsoft didn’t sandbox Windows Defender, so I did | Trail of Bits Blog](https://blog.trailofbits.com/2017/08/02/microsoft-didnt-sandbox-windows-defender-so-i-did/) (2017/8/2) Windows DefenderのスキャナがSYSTEM(Windowsの最上位の権限)で動いていて危なっかしいので、俺がサンドボックスを追加してあげたぜって話? 1枚目のgifはWannaCry検体のシステムへのアクセスを拒否させたってデモかな? ### VM系 ### Hypervisor系 仮想化技術(サンドボックス)を用いた動的解析 ---- [3] 仮想化技術によるマルウェア対策とその問題点(2012年;須崎@横国大) http://www.slideshare.net/suzaki/ss-13589611 ### VM型 #### QEMU [1] 仮想化技術を用いたマルウェア解析(2014年;by ntddk): https://speakerdeck.com/ntddk/jia-xiang-hua-ji-shu-woyong-itamaruueajie-xi * DECAF(QEMUのプラグイン) * テイント解析 * シンボリック実行 おすすめ書籍([1]の受け売り): * [Virtual Machines: Versatile Platforms for Systems and Processes (The Morgan Kaufmann Series in Computer Architecture and Design)](http://www.amazon.co.jp/dp/B006NV2EO0/) [1] * 9,000円 ### Cuckoo [マルウェア対策“一部”内製化大解剖(2):Recruit-CSIRTがマルウェアの「培養」用に内製した動的解析環境、その目的と工夫とは (1/2) - @IT](http://www.atmarkit.co.jp/ait/articles/1707/06/news032.html) (2017/7/10) [マルウェア対策“一部”内製化大解剖(終):Cuckoo Sandbox、Selenium WebDriver、bson解析――独自マルウェア解析環境を自動化した際に施した2つの工夫 (1/2) - @IT](http://www.atmarkit.co.jp/ait/articles/1707/28/news011.html) (2017/7/28) ←自社にとって最適な動的解析環境を追求した話 ### VMM型 VMMにトレーサー機能を付けたタイプ。システム全体の動きが分かるのがVM型に対するメリットかな [2] FFR GreenKiller (AVAR 2009@kyoto; by Junichi Murakami) http://www.ffri.jp/assets/files/research/research_papers/avar-2009-murakami.pdf * [BitVisor](http://www.bitvisor.org) * "Open-source VMM software(BSD License)" * "GreenKiller uses BitVisor as a VMM framework" Alkanet: http://www.iwsec.org/mws/2015/pdf/IPSJCSS2015111.pdf rVMI - A New Paradigm For Full System Analysis https://github.com/fireeye/rvmi ### オンラインサンドボックス セットアップが不要で、レポートも見れて、手軽 サービス | ベース | ゲストOS | Poweshell | サンプルログ :---:|:---:|:---:|:---:|:---: [hybrid-analysis.com](https://www.hybrid-analysis.com/) | VxStream | Win7? | Yes | TODO [Deepviz](https://sandbox.deepviz.com/) | Deepviz | Win7 | Yes | TODO [Malwr](https://malwr.com/submission/) | Cuckoo | WinXP | <font color="red">No</font> | TODO * [Free Automated Malware Analysis Sandboxes and Services](https://zeltser.com/automated-malware-analysis/) ### QEMU **FixMe**:別章に移動するか章として独立? ソースコードを読もうとすると遭難するとの噂。 #### Dynamic Binary Translation (DBT) QEMUのDynamic Binary Translationがあって良かったねという話: https://speakerdeck.com/ntddk/qemufalsedynamic-binary-translationgaatuteliang-katutanetoiuhua * __"DBTがQEMUの肝"__ * Tiny Code Generator (TCG) * "ゲストのコードを逆アセンブルし中間コードに変換→中間コードをホストのコードに変換" * Translation Block * 基本ブロック的なもの? * TCGで可能なこと:"バイナリをLLVMに逆コンパイル(S2E[ASPLOS11])" * KLEE←S2Eが依存。"与えられたソースコードをLLVMでビルド" ### bhyve <blockquote class="twitter-tweet" data-lang="ja"><p lang="ja" dir="ltr">僕がbhyveを広めたいのは、KVMを知ろうとしてQEMUのソースコードを読み始めたまま遭難して帰らぬ人となる若者を増やしたくないからです。</p>&mdash; СЮУ1228 (@syuu1228) <a href="https://twitter.com/syuu1228/status/460748398962806787">2014年4月28日</a></blockquote> ### BitVisor TODO ### [Cuckoo](https://cuckoosandbox.org/) __TODO__:マルウェアの動的解析の実例としてもう一度登場させる > Cuckoo Sandbox is an advanced, extremely modular, and 100% open malware analysis system with infinite application opportunities. By default it is able to: > * Analyze many different malicious files (executables, document expoits, Java applets) as well as malicious websites, in Windows, OS X, Linux, and Android virtualized environments. > * Trace API calls and general behavior of the file. > * Dump and analyze network traffic, even when encrypted. > * Perform advanced memory analysis of the infected virtualized system with integrated support for Volatility. > http://www.iwsec.org/mws/2014/files/FFRI_Dataset_2014.pdf > オープンソース(一部非公開)のマルウェア解析システム > * 仮想環境内でマルウェアを実行 > * 実行時のふるまいをモニタリング > * VirusTotal連携、yara連携等 ### FFRI yarai analyzer professional ※商用製品 2017年1月、ver. 2.8よりFFR yarai改め、FFRI yaraiになった。 > http://www.iwsec.org/mws/2014/files/FFRI_Dataset_2014.pdf > * 仮想環境内でマルウェアを実行 > * 実行時のふるまいをモニタリング > * プロセス毎のAPI呼び出し履歴を取得可能 > * 解析対策機能を持つマルウェアを解析可能 > > データの利用例 > * マルウェア検知・分類 > * ベンチマーク > * 自身の自動解析システムとの比較、有効性検証 アンチデバッグ(Anti-debug) ---- TODO 手法: * デバッガのアタッチを検出するAPIの利用 * WindowsだとKernel32のIsDebuggerPresent() * 設定されたブレークポイント数を取得 * Hidden Process * リモートプロセスへのコードインジェクション VM(VMM)検知、Anti-VM、Anti-Sandbox ---- マルウェアはVM(VMM; Virtual Machine Monitor)で動いているかどうかを気にする。VMMで動いていることがわかればおとりの動きをする。そうすることで解析者に自分はマルウェアでないと勘違いさせることができる。そうなれば今後自分を駆除するための努力をさせずにすむ。(TODO:見直し) マルウェアが用いるサンドボックス検知の手法は主に以下の手法がある。 * Execution Environment Fingerprinting * Execution Timing Detection * 特定の仮想環境でしか使用できないCPU命令 * TODO 上以外に、もっと単純な方法が存在する。意外と効果があるらしい * 起動時間(uptime) * デスクトップのファイルの数や種類 * 画面の比率 ? * キーボードの配列 ? * 壁紙 ? * ユーザー名 ? * コンピュータ名 ? 日本を狙う特定の環境でしか動作しないマルウェアの特徴とは? http://news.mynavi.jp/articles/2016/12/08/malware_kas/ ### Execution Environment Fingerprinting https://www.blackhat.com/docs/asia-15/materials/asia-15-Chubachi-Slime-Automated-Anti-Sandboxing-Disarmament-System.pdf * Sandbox/VM environment specific files * Sandbox/VM environment specific registory keys * Sandbox/VM environment specific devices and its attributes * e.g. QEMU HDD vendor name * Sandbox/VM Speficic I/O port * Sandbox/VM related process * Like vm ware, virtualbox etc. * Using virtual machine implementation specific platform value and reaction * CPUID instruction result * Redpill * using LDT/GDT and IDT incongrusness * interesting research here: Cardinal Pill Testing 追加: * ARP Table * > サンドボックス製品のネットワークは仮想化されており、同じセグメントにはデフォルトゲートウェイのみがあり、ARPテーブルは1行のみというケースが多いようです [1] [1] [マルウェアの視点で見るサンドボックス:合法マルウェアで実感「リアルとサンドボックスの違い」 (2/3) - @IT](http://www.atmarkit.co.jp/ait/articles/1404/18/news004_2.html) ### Execution timing detection https://www.blackhat.com/docs/asia-15/materials/asia-15-Chubachi-Slime-Automated-Anti-Sandboxing-Disarmament-System.pdf * Using clock count differential * Traditional anti-debug technique ### 特定の仮想環境でしか使用できないCPU命令 TODO: 『サイバーセキュリティプログラミング』に書かれている ### AlicanAkyol/sems Anti-Sandbox and Anti-Virtual Machine Tool: https://github.com/AlicanAkyol/sems > Once the tool is run in a virtual machine(Virtualbox, Vmware, Qemu), it performs all the checks which are shown below and drops logs to the console about detected signatures until the "control" text is shown. In addition to that a separate .txt file with the finding name is created in the running directory for each detected signatures. Example; vboxBios.txt will be created for virtualbox bios signature. ### デスクトップのファイルを根拠にする TODO:実例 ### VM Evasion TODO:VMからの脱出。 Anti-anti-malware ---- AV(Anti-Virus, Antivirus)回避とも。マルウェア対策技術を無力化しうる策(攻撃者のための対抗策)を紹介するが、当然セキュリティソフトで対応されているものもある。 TODO: [CODE BLUE 2014 : マルウエアによる検出回避方法の解説 by 篠塚 大志 HIROSHI SHINOTSUKA](https://www.slideshare.net/codeblue_jp/cb14-hiroshi-shinotsukaja) ### ファイル拡張子によるスキャナの回避 * スキャナが検査するファイルがexe, dllだけなので別のファイルの拡張子ならOKとか * メールの添付ファイルをスキャンする対象の拡張子に該当しない拡張子をつける [1] [1] Ransomware - Defending Against Digital Extortion (2016/11; O’Reilly Media) ### ヒューリスティック検出の回避 例: * [ランサムウェア「CERBER」、機械学習を利用したセキュリティ対策を回避 | トレンドマイクロ セキュリティブログ](http://blog.trendmicro.co.jp/archives/14661) * > 暗号化型ランサムウェア CERBER は、既に各セキュリティ対策製品によって対策が講じられています。そのため、通常のプロセス上で CERBER自身の不正コード を実行することで振る舞い検知を回避し、自身の検出を困難にさせることを狙ったのです。。 * > 自動解凍アーカイブのファイルや簡易なファイルの利用も同様に、静的な機械学習を用いた検出にとって課題を突きつけられることになります。自動解凍アーカイブのファイルは、ファイルの内容に違いがあっても、どれも類似した構造となります。そして、特定の機能でファイルを復号することも、必ずしも不正な振る舞いでありません。 ### メモリインジェクション(memory injection) 例: * [国内ネットバンキングを狙う「URSNIF」が新たに「Bootkit」を利用 | トレンドマイクロ セキュリティブログ](http://blog.trendmicro.co.jp/archives/15144) ### [malWASH](https://www.usenix.org/conference/woot16/workshop-program/presentation/ispoglou) WOOT'16にてKyriakos K. Ispoglou and Mathias Payer, Purdue Universityによって提案された手法。 TODO ### エクスプロイト保護の回避 使われているのか…? [asintsov: Bypassing Exploit protection of NORTON Security](http://asintsov.blogspot.jp/2016/12/bypassing-exploit-protection-of-norton.html) パッカー、アンパック ---- **検討課題**: * Anti-anti-malware の一種になるが、量がなければそこに合体するのもアリかも? * 暗号化し、実行時に復号する動作方式はここで扱うべきか?(きわどい) TODO 難読化と難読化解除 ---- Anti-(anti-)anti-malwareのお話。 資料: * [1] [QEMUのDynamic Binary Translationがあって良かったねという話 // Speaker Deck](https://speakerdeck.com/ntddk/qemufalsedynamic-binary-translationgaatuteliang-katutanetoiuhua) ### 難読化解除 #### OptiCode[Syscan13]([1]) * "バイナリをLLVM bitcodeに変換" * "LLVMの最適化パスによって難読化を除去" * e.g. "レジスタに無意味な値を挿入する難読化(`-dse, -simplifycfg`)" * e.g. "NOPと投下の命令を挿入する難読化(`-constprop, -instcombine`)" * e.g. "レジスタへの代入をばらけさせる難読化(`-instcombine`)" * Opaque Predicate * "LLVMによる最適化では解除できない" * "常に真(偽)となる条件文を挿入。実行されない箇所にコードを配置するというもの" * "LLVM bitcode に対して symboric execution"して解除 #### Adwind(Javaのマルウェア) ストリーム暗号ベースの難読化を自身に行う。 [JPCERT CC] [Adwindが持つ難読化された文字列の解読(2016-04-25)](https://www.jpcert.or.jp/magazine/acreport-adwind.html) (2016/4/25) * 難読化解除ツール(Python製)を提供 [各OSに対応するJavaのRAT「ADWIND」が再び確認。スパムメールで拡散 | トレンドマイクロ セキュリティブログ](http://blog.trendmicro.co.jp/archives/15445) (2017/7/14) memory-patching ---- TODO:章見直し http://www.ffri.jp/assets/files/research/research_papers/avar-2009-murakami.pdf "We can detect memory-patching by malware" * [Viton, Hypervisor IPS(BlackHatUSA 08)](http://www.fourteenforty.jp/research/research_papers/bh-japan-08-Murakami.pdf) * Manipulate Guest PageTable/PageTableEntry, * To protect memory patching by malicious driver 脆弱性の緩和策:EMET ---- EMETはMicrosoft WindowsのOSおよびWindowsアプリケーションのセキュリティ機能を拡張するためのソフトウェアである。言い換えるとシステムを全域的に脆弱性の影響を緩和するための策である。 <blockquote class="twitter-tweet" data-partner="tweetdeck"><p lang="ja" dir="ltr">Windows 10を使っても、EMETは必要なセキュリティ対策 <a href="https://t.co/2TMB4nhyfe">pic.twitter.com/2TMB4nhyfe</a></p>&mdash; yamatosecurity (@yamatosecurity) <a href="https://twitter.com/yamatosecurity/status/801994901726498818">November 25, 2016</a></blockquote> <script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script> \# Win10のあるタイミングからEMET対応をやめるというアナウンスがあった気がする EMET 4.0の調査 http://www.ffri.jp/assets/files/monthly_research/MR201307_Investigation_into_EMET4.0_JPN.pdf EMETによるSEHOP実装の改良の提案 http://www.ffri.jp/assets/files/research/research_papers/EMETReport.pdf 不正通信の検出 ---- __TODO__:SOCや客先でも使われる技術も載せていきたいぞ… ### IDS #### snort 読み:すのーと。TODO #### Suricata https://suricata-ids.org/ ### SIEM 読み:しーむ。TODO ### HTTPリクエストヘッダに残る痕跡 TODO ### データセット #### KDD Cup 99 Data > サイバーセキュリティに携わる者なら一度くらいはKDD Cup 99 Dataなるデータセットの名を耳にしたことがあるのではないだろうか.KDD Cupは国際会議SIGKDDによるデータマイニングのコンペで,KDD Cup 99 Dataはそのためのネットワーク侵入検知にまつわるデータ.正常通信と攻撃を分類するタスクが与えられた. > [KDD Cup 99 Dataおぼえがき | 一生あとで読んでろ](http://ntddk.github.io/2016/11/23/kdd-cup-99-data/)(by ntddk) より ### パケットに残る特徴の利用 通信プロトコルのヘッダの特徴に基づく不正通信の検知・分類手法 https://ipsj.ixsq.nii.ac.jp/ej/index.php?active_action=repository_view_main_item_detail&page_id=13&block_id=8&item_id=106530&item_no=1 特徴的なTCP/IPヘッダによるパケット検知ツールtkiwa http://ipsr.ynu.ac.jp/tkiwa/ ### 分類待ち [マルウェア通信検知手法におけるUser-Agentの有効性の一考察](http://www.slideshare.net/recruitcojp/useragent-54370987) マルウェアの不正ネットワークの分析によるルールファイル自動化の設計と実装 https://ipsj.ixsq.nii.ac.jp/ej/?action=pages_view_main&active_action=repository_view_main_item_detail&item_id=108925&item_no=1&page_id=13&block_id=8 特徴量の時間的な状態遷移を考慮したマルウェア感染検知手法に関する研究(修士論文) https://dspace.wul.waseda.ac.jp/dspace/handle/2065/36065 [データ圧縮アルゴリズムを用いたマルウェア感染通信ログの判定](http://www.slideshare.net/JubatusOfficial/ss-63592780) 解析者のテクニック ---- ### 公的機関からの情報を得る [JPCERT コーディネーションセンター](https://www.jpcert.or.jp/) > 注意喚起、Weekly Report、脆弱性情報(JVN)、JPCERT/CCからのお知らせやイベントの新着情報をまとめて提供 [警察庁セキュリティポータルサイト@police](https://www.npa.go.jp/cyberpolice/) > 警察庁によるセキュリティ情報提供サイト。サイバー犯罪・サイバーテロの未然防止及び被害の拡大防止を図るべく、ネットワークセキュリティに関する様々な情報を提供します。 [警察庁セキュリティポータルサイト@police-インターネット定点観測](https://www.npa.go.jp/cyberpolice/detect/observation.html) 「全国の警察施設のインターネット接続点に設置されたセンサーで観測したアクセス(件数)の平均を集計」したものが表示される。 ### セキュリティベンダーからの情報を得る #### Twitterアカウント TODO #### トレンドマイクロ * [トレンドマイクロ セキュリティブログ](http://blog.trendmicro.co.jp/) * [TrendLabs Security Intelligence BlogTrendLabs Security Intelligence Blog](http://blog.trendmicro.com/trendlabs-security-intelligence/) TrendLabsが情報発信して、トレンドマイクロの日本語ブログに掲載されるときは3日~1週間の遅延がある。Twitterの日本アカウントは記事掲載後の翌日にツイートするので、掲載されてからすぐに読みたい場合はRSSを使うのがおすすめ。 ##### Threat Encycropedia https://www.trendmicro.com/vinfo/us/threat-encyclopedia/ * 検出名から感染経路の予想はつく * ぼかしが多くて役に立たない? #### Norton #### Kaspersky #### ESET #### Intel Security #### Cisco ### 日本のSecurity Researcherからの情報を得る * [piyolog](http://d.hatena.ne.jp/Kango/) ※情報セキュリティインシデントにまつわる圧倒的情報量のインテリジェンスに特化 * [辻 伸弘(nobuhiro tsuji)](https://twitter.com/ntsuji)さん * [(n)inja csirt](http://csirt.ninja/)もよろしく * [nao_sec](https://twitter.com/nao_sec) * [PR] 友利奈緒たちも頑張ってます! ### 世界のSecurity Researcherからの情報を得る TODO ### インシデントレスポンスとフォレンジック インシデントレスポンス = インシデントに対応すること。IRと略される。 インシデントハンドラー = インデントに対応する人 インシデントハンドリングの実際: * [サイバーレスキュー隊(J-CRAT)分析レポート2016(IPA)](https://www.ipa.go.jp/files/000057175.pdf) (2017/1/27) * [2017 InternetWeek ショーケース (Day 2): 実践インシデント対応 -侵入された痕跡を発見せよ-](https://internetweek.jp/sc-program/day2-takeda.pdf) (2017/6/2) * [インシデント調査のための攻撃ツール等の実行痕跡調査に関する報告書(by JPCERT/CC)](http://www.jpcert.or.jp/research/ir_research.html)/[English Ver.](https://www.jpcert.or.jp/english/pub/sr/ir_research.html) (2017/6/12) [余談]丁寧なマルウェア解析はウン百万円を積めば外部機関がやってくれる。インシデントハンドラー向けの資格に[GCIH](https://www.giac.org/certification/certified-incident-handler-gcih)がある。業務でやってる人は取ってるっぽい。 ### マルウェアのクラスタリング マルウェアをファミリー/亜種で分類する話。 クラスタリングに役立つ情報: * コンパイル日時 * 機械学習向け:ビットマップの特徴、n-gram上の特徴 クラスタリングツールと使用例: * [impfuzzy for Neo4jを利用したマルウエア分析(2017-07-03)](https://www.jpcert.or.jp/magazine/acreport-impfuzzy_neo4j-2.html) (2017/7/3) ### 名前をつける 攻撃者グループ名をつけてみよう! by Akira Miyata(seraph) https://speakerdeck.com/seraph/gong-ji-zhe-gurupuming-wotuketemiyou > AVTOKYO2016での講演資料です。 > 攻撃者に迫るために、どう言った分析を行っているのか、攻撃者グループ名やキャンペーン名を名付けるまでの過程をマルウェア解析等で得た特徴の具体例を交えて紹介します。 > http://ja.avtokyo.org/avtokyo2016/speakers#seraph ### ドメイン、IPアドレスのトラッキング #### Passive Total https://www.passivetotal.org/ 登録が必要。無料アカウント(Community Edition)でも利用可。 <span style="color: gray">Company Mail Addressはgmail.comでも通る。</span> 機能と分かること: * __OSINT:__ あるドメインから特定ドメインへの参照(ブログエントリーからのreferlal linkとか) * __Resolusions:__ 特定のIPアドレスに紐付いていたドメイン * __WHOIS:__ whois情報 * __Subdomains:__ サブドメイン * タグ検索: * System Tag(e.g. Blacklist)は検索できない? Community Edision のクォーター設定: * Web Searches: 200 ←連続1時間も使えない厳し目の設定 * API Searches: 15 * Public Projects: 1000 * Private Projects: 1 ### URL Reputation / Web Reputation #### Virus Total 先の説明通り。 Malicious/PhishingなURLはユーザーのコメントを収集すると集められる。マルウェアが降ってくることが多いのでおすすめ。 #### Site Safety Center (Trend Micro) https://global.sitesafety.trendmicro.com/ トレンドマイクロの見解を得るには役立つが、機能が少ない。URLを入れて「今すぐ確認」すると、「トレンドマイクロによるWebサイトの安全性の評価」と「トレンドマイクロによるWebサイトのカテゴリ」が表示される。 トップページに掲載されているTop Malicous URLsは一部が伏せられててURLを収集するには役に立たない。 #### urlquery https://urlquery.net/ Reputationと言うほどではないが、関連として。デマ情報が多い。公開APIは無い? BASIC認証が必要なはずのURLをcompromised siteと報告する怪しさもある。(もしかしてクラックした?) ### zone-h http://www.zone-h.org ### プロキシ系 #### aguse(アグス) https://www.aguse.jp/ > あやしいサイトや知らないサイトを訪れる前に、URLを入力するだけでサイト背景情報を調査したり、迷惑メールの送付経路を表示したりすることが出来ます。 機能: * 対象のWebページをスクリーンショット(画像)で見られる * マルウェアの検出情報(カスペルスキーを使用) * whois情報とサーバーの位置情報 * サーバー証明書の内容を表形式で表示 ### データ保全ツール(インシデントハンドラー向け) #### 初動対応用データ保全ツール CDIR Collector https://github.com/CyberDefenseInstitute/CDIR 特徴: * 国産のフリーソフト(国産OSS) * 揮発しやすい(書き換わりやすい)データを素早く保全することを目的とする。そのためディスクのフルコピー機能は提供しない * __専門的なツールと英語に疎い日本人でも簡便に扱える__ ようなツールを提供 * 保全されていることを保証するために、ファイルのハッシュ値も残す 参考: * [初動対応用データ保全ツール「CDIR Collector」解説(前編):セキュリティ事故対応における“オープンソース”活用法指南 (1/3) - @IT](http://www.atmarkit.co.jp/ait/articles/1609/15/news006.html) * [初動対応用データ保全ツール「CDIR Collector」解説(後編):セキュリティ事故対応における“オープンソース”活用法指南(応用・解析編) (1/3) - @IT](http://www.atmarkit.co.jp/ait/articles/1609/30/news005.html) ### メモリフォレンジック #### Volatility TODO: Volatilityとその使い方を紹介し、「周辺領域」にあるVolatilityの項を消す 関連: * [既知のマルウエアをメモリイメージから簡易に検知できるツールを開発 ~impfuzzy for Volatility~(2016-11-01)](https://www.jpcert.or.jp/magazine/acreport-impfuzzy_volatility.html) #### Comae Stardust [Comae Stardustで、ゼロから学ぶメモリフォレンジック - セキュリティごった煮ブログ|ネットエージェント](http://www.netagent.co.jp/study/blog/hard/2017727.html) ### DNS偽装 ### C2通信の観測 感染端末の通信で使っていたドメインのうち、失効したドメインを買って(←そう書いてないけど)通信を観測するテクニック。 過去の実施例: * [Avalancheボットネット解体により明らかになった国内マルウエア感染端末の現状(2017-06-12)](http://www.jpcert.or.jp/magazine/irreport-avalanche.html) * > オペレーションアバランチでは、オペレーションに協力する組織がAvalancheボットネットに関わるドメインを取得して、そのドメイン情報をもとにマルウエア感染端末からの通信を観測しています。 ### パケットのキャプチャー Wirehsark, tcpdumpなどを利用する。 アンチ解析 ---- ### Anti Forensics すること: * セキュリティログの消去 例: * PETYA (2017年) 巨大マルウェアデータベースの構築 ---- :::warning __※注意※__:関係法律の解釈次第では単純所持であっても違法になりうるため、運用には細心の注意を払うこと(データベースサーバーが外部にマルウェアを放流しているなんて状況は、リサーチャーとして以ての外) ::: 収集方法は、大きく分けて2つある。 ### 誰かに期待する マルウェアは有志により以下のサイトで収集&保管されている。ここでは利用方法の説明は一切せず、紹介に留める。 * Open Malawre: http://www.offensivecomputing.net/, http://openmalware.org/ * [VirusShare](https://virusshare.com) ※招待制 * [malware.lu](https://avcaesar.malware.lu/) * [theZoo](https://github.com/ytisf/theZoo) <!-- [Got a Virus site ? Post it here (Page 1) — Virus eXchange — VX Heaven](http://vxheaven.org/forum/viewtopic.php?id=155) --> ほか: * 「malware dataset」でググる * https://zeltser.com/malware-sample-sources/ * [マルウェア検体を入手する方法について](http://www.japan-secure.com/entry/blog-entry-198.html) 手動でちまちま集めることをいとわない場合は、オンラインサンドボックスの結果に添付されている検体を集めるのも方法の一つである。 特定のファミリーの検体を集めたい場合は、アンチウイルスベンダーのインテリジェンスブログのエントリーの下部に記載されているIOC(Indicator of Compromise)をもとに当該検体を検索エンジンで見つけられるときがある。 #### hashes https://virusshare.com/hashes/ ### 自分で集める :::info サーバーが国内にある場合は、平成23年度時点では __過失__ により他者へのマルウェア感染を引き起こした場合は罪(168条の2)に問われないが、最新の動向に注意すること。 ::: ハニーポットを使う。TODO(以降はよく知らなくもないが、調べながらまとめることになり時間がかかるので後回し)。個人だけででなく、ハニーポットを運用している企業もある。 [閑話休題]ハニーポットを運用している人は自らを「ハニーポッター」と名乗るため見つけやすい。ハニーポットの略称はハニポ。 ハニーポットの情報源: * 総本山:[The Honeynet Project](https://www.honeynet.org/) * まとめ:[paralax/awesome-honeypots](https://github.com/paralax/awesome-honeypots/blob/master/README.md) * 個人ブログ:[www.morihi-soc.net](http://www.morihi-soc.net/) * 『[サイバー攻撃の足跡を分析するハニーポット観察記録](https://www.amazon.co.jp/gp/product/4798049085/)』(森久和昭・著)(2017/1/27)もよろしく? ハニーポット運用に必要なもの: * どんな攻撃を集めたいのかという目的 * ハニーポットによって集められる攻撃の種類が異なる * 攻撃者になった気持ちでShodanやCensysを眺めて、今後きそうなネタを探すのもいいかも(絶対ポート叩くなよ) * 以下ヒント * 筆者注目:ELKスタック(Elastic Search, Logstash, Kibana) * 2015か2016年頃から世界的な空前のログ可視化ブームが来ている。セキュリティ設定はあまり言及されていない(ように見える) * 周回遅れ:Wordpress\*, Joomla!\*, Drupal\*, Apache Struts 2\*\*, SCADA\*\*\*, SMB(今からやる人はこの辺がいいかも。成果報告期待してま~す) * \* CMS御三家で、The脆弱性の塊。Wordpressは個人ブログでもよく使われ、Drupalは政府機関も使っているという感じ。攻撃の影響が残るので、Dockerなどの仮想化により破棄&初期化が容易な環境が望ましい * [PR] 筆者の[vuln-wordpress](https://github.com/K-atc/vuln-wordpress)ようにDockerizeするのが1つの方法 * \*\* StrutsはSIerが使いがち。PoCが公開されると攻撃が来るみたい * \*\*\* トレンドマイクロがやってる * n周遅れ:SSH, Telnet(この辺の攻撃情報はみんな集めてるから、発表したところで面白くない) * ありふれているので情報が多く、立てやすい点ではおすすめ * グローバルIPアドレス * VPSやクラウドサービスだとIPアドレスから契約先の事業者とローケーションが分かる * 例)AWSのIPアドレスの範囲:https://docs.aws.amazon.com/ja_jp/general/latest/gr/aws-ip-ranges.html * 1つのグローバルアドレスに公開ポートがたくさんぶら下がっているのは怪しいですよ。数も要検討 * OS * Windows Server + Active Directoryハニポも面白そう * 任意コード実行脆弱性に備えて、セキュリティパッチを必ず当てよう! * 自宅サーバー/VPS/クラウドサーバー * DMZまたはVLAN ※家の中に設置する場合 * ドメイン(※できれば) * 最近失効した有名なドメインが狙い目? * Pastebinなどの不特定多数のアクセスが期待できる情報公開サービス(※あるとよい) * 既存の脆弱性の知識 * 低インタラクティブのハニポでは設置時に必要ない知識かも? * Webアプリ系のハニポでは必須。ログ解析でも大いに役立つ * ログと解析能力 * ハニポを動かす前にログが取れているのかをちゃんと確認 * ログを保存するストレージの空き容量は大丈夫? * 特にEC2インスタンスとラズパイ * クラウドに立てているときはダウンロード容量に注意 * 静的データをS3バケットなどに移動させるなどの対策も考えよう。S3は速度の面でも有利! * フォレンジックの知識の出番か~? IoT機器をターゲットにした攻撃をログするための「IoTPOT」が横浜国立大の情報・物理セキュリティ研究拠点で開発され、論文化している。読んでみたが、試みとして面白い(筆者は、Telnetを想定していることと環境再現方法にさらなる検討の余地があると感じた)。 [IoTPOT: Analysing the Rise of IoT Compromises](https://www.usenix.org/conference/woot15/workshop-program/presentation/pa) (USENIX, WOOT'15) __※注意※__ 利用規約により、ハニーポットなどの脆弱なサーバーをVPS、クラウドサービスで運用することを禁止されている場合があるため、外部サービスでの運用を考えている場合はよく確認し、不明ならば問い合わせること。また、学内のサーバーで運用する場合も、特別な申請が必要な場合があるため識者に相談すること。 * Amazon Web Services (AWS):ハニポをAWSに立てたと明言する人もいるが、筆者はNGと判断(どなたか問い合わせて結果をブログなどに書いてください><):ng: * [Amazon Web Services 適正利用規約 | アマゾン ウェブ サービス(AWS 日本語)](https://aws.amazon.com/jp/aup/) * > サービス利用者は、違法な、有害な、詐欺的な、第三者の権利を侵害する、もしくは不快な使用のために、または違法な、==有害な==、詐欺的な、==第三者の権利を侵害する==、もしくは不快なコンテンツの==送信、保存、表示、配信、その他の提供==のために、本サービスや AWS サイトを使用してはならず、かつ、==他人がかかる使用をすることを奨励、促進、助長、もしくは指示してはならない==ものとします (筆者注:NGと判断できる箇所をハイライトした) * ※許可のないペネトレーションテストは明示的に禁止されている→[侵入テスト - AWS クラウドセキュリティ | AWS](https://aws.amazon.com/jp/security/penetration-testing/) * Microsoft Azure * TODO * Google Cloud Computing * TODO * DigitalOcean:ハニポOK? * [Terms of Service Agreement on DigitalOcean](https://www.digitalocean.com/legal/terms/) * 根拠:公式のコミュニティーのチュートリアルにKippoのインストール方法を掲載している(掲載したままにしている) * [How To Install Kippo, an SSH Honeypot, on an Ubuntu Cloud Server | DigitalOcean](https://www.digitalocean.com/community/tutorials/how-to-install-kippo-an-ssh-honeypot-on-an-ubuntu-cloud-server) * 問い合わせ結果(情報Thanks!): * [1] 「セキュアにハニーポットを運用している限りは問題ないけど、十分気をつけろ」(意訳)←原文も欲しかった… * このは(ConoHa):ハニポNG :ng: * [ConoHa会員規約](https://www.conoha.jp/agreement/) * 会員規約が全体的に犯罪行為の助長を禁じているので、ハニーポットを暗黙的に禁じていると解釈するのは無理ではない * [ハニーポットの可否に関する美雲このはのTwitterの発言](https://twitter.com/MikumoConoHa/status/512116623918907392) * > や・・・やめて!くまのプーさんが、寄ってくるじゃないの!!!RT @TwitterID: ConoHaでハニーポットって立ててもいいのかな? * 問い合わせ結果(情報Thanks!): * [1] 「規約違反ではないが、他のお客様に影響する可能性があるので控えてほしい」 * さくらインターネット:おそらくNG :ng: * [基本約款](https://www.sakura.ad.jp/agreement/[a]yakkan0_kihon.pdf) * > xi. 当社もしくは第三者の設備等またはサーバ設備もしくは電気通信設備等の利用もしくは運営に支障を与える行為、または与えるおそれのある行為 * > xii. 第三者の通信に支障を与える方法もしくは態様において本サービスを利用する行為、またはそのおそれのある行為 『基本約款』より あとサーバーを日本国内・国外のどちらに立てるのかという問題がある。法的な問題を起こした場合、サーバーが設置された国の法律にもとづいて判断される。お気をつけいただきたい。 参照: [1] [あなたは、ハニーポットがお好きですか?! // Speaker Deck](https://speakerdeck.com/blackle0pard/anataha-hanipotutogaohao-kidesuka) (2017/8/9) マルウェアに感染したときにすること ---- 企業向けの章になります。 __TODO__:[NIST SP800-83の邦訳](https://www.ipa.go.jp/files/000025349.pdf)、IPAの勧告、[ここの連載](http://itpro.nikkeibp.co.jp/atcl/column/15/110900259/)を元に再構成。「誰が、いつ」するのかを明確にする。 * ネットワークの遮断 * フォレンジックツールの使用 * 公的機関に届け出 * IPA→[届出:ウイルスの届出:IPA 独立行政法人 情報処理推進機構](http://www.ipa.go.jp/security/outline/todokede-j.html) * 今の窓口はJPCERTだったような気も→[JPCERT コーディネーションセンター インシデント対応依頼](https://www.jpcert.or.jp/form/) __NG行為__: * HDD/SSDのフォーマット * 何が起こっていたのかの確認が困難になる最悪手 * (サーバーの)電源遮断 * 個人使用の業務PCをつけっぱにするのはOK?NG? * ランサムウェア感染の場合は、メモリに残存する復号に使える情報が消える可能性があるのでNG。アプリケーションの立ち上げもNG 参考: * [実践、セキュリティ事故対応:ITpro](http://itpro.nikkeibp.co.jp/atcl/column/15/110900259/) 周辺領域 ---- ### データセット マルウェア対策のための研究用データセット ~ MWS 2011 Datasets ~ http://www.iwsec.org/mws/2011/manuscript/1A1-1.pdf * マルウェアを提供ししたのはFFRI [[出典](http://www.ffri.jp/assets/files/monthly_research/MR201407_An%20Example%20of%20Antivirus%20Detection%20Rates%20and%20Similarity%20of%20Undetected%20Malware_ENG.pdf)] FFRI Dataset 2014のご紹介 http://www.iwsec.org/mws/2014/files/FFRI_Dataset_2014.pdf TODO: ネットワークパケットの集積データ ### 検知・分類 ロジスティック回帰分析による未知ファイル分類の有効性 http://www.ffri.jp/assets/files/monthly_research/MR201402_Effectiveness%20of%20unknown%20malware%20classification%20by%20logistic%20regression%20analysis_JPN.pdf 動的情報に基づいたマルウェアのクラスタリング http://www.ffri.jp/assets/files/monthly_research/MR201311_Behavioral-based_malware_clustering_JPN.pdf 機械学習のセキュリティ技術応用 http://www.ffri.jp/assets/files/monthly_research/MR201306_Machine_learning_for_computer_security_JPN.pdf Fighting advanced malware using machine learning http://www.ffri.jp/assets/files/research/research_papers/psj13-murakami_EN.pdf #### 機械学習 マルウェアは一種の文字列もしくは画像なので適用できる。 Microsoft Malware Classification Challenge (2015) https://www.kaggle.com/c/malware-classification * 機械学習によりマルウェアを分類するコンテスト * データセットは今でもダウンロードできる(2016年4月現在) #### 異常検知 TODO #### [yara](https://plusvic.github.io/yara/) > The pattern matching swiss knife for malware researchers 平たく言うとファイル中のバイト列の特徴を元に検出・分類するOSSツール install on Arch Linux: ``` sudo pacman -S yara yara-python ``` usage: ``` % yara --help YARA 3.5.0, the pattern matching swiss army knife. Usage: yara [OPTION]... RULES_FILE FILE | DIR | PID Mandatory arguments to long options are mandatory for short options too. -t, --tag=TAG print only rules tagged as TAG -i, --identifier=IDENTIFIER print only rules named IDENTIFIER -n, --negate print only not satisfied rules (negate) -D, --print-module-data print module data -g, --print-tags print tags -m, --print-meta print metadata -s, --print-strings print matching strings -e, --print-namespace print rules' namespace -p, --threads=NUMBER use the specified NUMBER of threads to scan a directory -l, --max-rules=NUMBER abort scanning after matching a NUMBER of rules -d VAR=VALUE define external variable -x MODULE=FILE pass FILE's content as extra data to MODULE -a, --timeout=SECONDS abort scanning after the given number of SECONDS -k, --stack-size=SLOTS set maximum stack size (default=16384) -r, --recursive recursively search directories -f, --fast-scan fast matching mode -w, --no-warnings disable warnings -v, --version show version information -h, --help show this help and exit Send bug reports and suggestions to: vmalvarez@virustotal.com. ``` * yarファイルに __errorがあるときは解析がストップ__(このとき何も表示しない?) するので注意 実行例 \*1: ``` [katc@K_atc originalfile]$ yara -v yara 3.5.0 [katc@K_atc originalfile]$ yara -w ~/malware/rules/index.yar PlugX_RTF_dropper_42fba80f105aa53dfbf50aeba2d73cae maldoc_OLE_file_magic_number PlugX_RTF_dropper_42fba80f105aa53dfbf50aeba2d73cae RTF_Shellcode PlugX_RTF_dropper_42fba80f105aa53dfbf50aeba2d73cae Big_Numbers0 PlugX_RTF_dropper_42fba80f105aa53dfbf50aeba2d73cae Big_Numbers1 PlugX_RTF_dropper_42fba80f105aa53dfbf50aeba2d73cae Big_Numbers3 PlugX_RTF_dropper_42fba80f105aa53dfbf50aeba2d73cae Big_Numbers4 PlugX_RTF_dropper_42fba80f105aa53dfbf50aeba2d73cae contentis_base64 PlugX_RTF_dropper_42fba80f105aa53dfbf50aeba2d73cae with_urls PlugX_RTF_dropper_42fba80f105aa53dfbf50aeba2d73cae without_images PlugX_RTF_dropper_42fba80f105aa53dfbf50aeba2d73cae without_attachments PlugX_RTF_dropper_42fba80f105aa53dfbf50aeba2d73cae ``` この結果では `RTF_Shellcode` が検出されたことが興味深い。筆者はRTFファイルにおけるシェルコードはあまり詳しくないが、アドレス調整のためのnop seld(\x90はIntel系CPUではnop命令に当たる。nop sledはそのnopの連なりのことで、エクスプロイトにおけるテクニックの一つ)による不自然な\x90の連続を根拠として検出したと思われる。以下に `RTF_Shellcode` のルール定義を示す。 ``` // This rule have beed improved by Javier Rascon rule RTF_Shellcode : maldoc { meta: author = "RSA-IR – Jared Greenhill" date = "01/21/13" description = "identifies RTF's with potential shellcode" filetype = "RTF" strings: $rtfmagic={7B 5C 72 74 66} /* $scregex=/[39 30]{2,20}/ */ $scregex=/(90){2,20}/ condition: ($rtfmagic at 0) and ($scregex) } ``` (\*1) 検体→ ac7d02465d0b1992809e16aaae2cd779470a99e0860c4d8a2785d97ce988667b (sha256), [VirusTotal](https://virustotal.com/ja/file/ac7d02465d0b1992809e16aaae2cd779470a99e0860c4d8a2785d97ce988667b/analysis/), [hybrid-analysis](https://www.hybrid-analysis.com/sample/ac7d02465d0b1992809e16aaae2cd779470a99e0860c4d8a2785d97ce988667b?environmentId=100), [YaraRules Anlayzer](https://analysis.yararules.com/analysis/586b8bbfe41a9c3e9aa25467) #### yara rules `RULES_FILE` のファイルはここを利用できる: https://github.com/Yara-Rules/rules/ * [commit 42ce524](https://github.com/Yara-Rules/rules/commit/42ce524845c10649f99b231bb206261ac8522191) 時点では、"./malware/MALW_DirtyCow.yar"のimportをコメントアウトをしないとろくに動かないので注意 オンライン版: https://analysis.yararules.com ごった煮(ライセンス関係不明): https://github.com/mikesxrs/Open-Source-YARA-rules ##### yara ruleを書いてみよう * [Writing YARA rules — yara 3.4.0 documentation](http://yara.readthedocs.io/en/v3.4.0/writingrules.html) TODO:同人誌に書いた内容軽く載せようかな…? ### メモリフォレンジック 資料: * The Art of Memory forensics **TODO**:OSSのフォレンジックツール #### Volatility Volatility Plugin Contest: http://www.volatilityfoundation.org/#!contest/ck3 ### IAT再構築 職人技が光る。 ### 脆弱性の利用を検知する技術 資料: * たのしいバイナリの歩き方 #### ROP検知 FFRI… ### 脆弱性の自動探索のための技術 資料: * [angr, AFL, Driller | 一生あとで読んでろ](http://ntddk.github.io/2016/08/27/angr-afl-driller/) #### [AFL](http://lcamtuf.coredump.cx/afl/) (american fuzzy lop) TODO #### シンボリック実行 シンボリック実行に入門しようとした: http://ntddk.github.io/2014/09/12/symexec-intro/ #### ???(ファジング+シンボリック実行) TODO ### ログ解析技術 TODO:SOC(Security Operation Center)で使われているテクとか無いかな?←SIEMなどの客先の機器をどう使うかが肝なのでは? TODO: 分類待ち ---- 実行環境に応じて動作を変えるマルウェアに関する調査 http://www.ffri.jp/assets/files/monthly_research/MR201405_A_Survey_of_Environment_Sensitive_Malware_JPN.pdf Fuzzy hashingの利用に関する検討及び評価 http://www.ffri.jp/assets/files/monthly_research/MR201403_Consideration_and_evaluation_of_using_fuzzy_hashing_JPN.pdf Freeze Drying for Capturing Environment-Sensitive Malware Alive http://www.ffri.jp/assets/files/research/research_papers/bheu14_chubachi_public_EN.pdf Exploring the x64 http://www.ffri.jp/assets/files/research/research_papers/psj10-murakami_JP.pdf Linuxマルウェアについて - FFRI http://www.ffri.jp/assets/files/monthly_research/MR201501_Latest_Trends_in_Linux_Malware_JPN.pdf 未知ウィルス検知のための新手法と実装(NICT) http://www.nict.go.jp/publication/shuppan/kihou-journal/kihou-vol51no1.2/02-08.pdf [「AngleWare」の出現とオープンソースランサムウェア「Hideen Tear」の比較検証 | MBSD Blog](https://www.mbsd.jp/blog/20170331.html) > 弊社のマルウェア解析チームにて「AngleWare」の検体を入手し解析を行った結果、過去にオープンソースとしてgithubに公開されたことで有名な「Hidden Tear」のコードと酷似する点が複数あることを確認しました。 ### POSマルウェア POS マルウェアについて - 株式会社FFRI http://www.ffri.jp/assets/files/monthly_research/MR201409_Survey%20of%20POS%20Malware_JPN.pdf - - - 2017/2/4 章の数が50に達してもおかしくない増加具合だ…(現在40前半) 2017/7/3 文字数が8万を超えた…あと2万文字しか書けないorz 2017/8/8 文字数が9万字を超えた!あと1万字なのでそろそろメモを分割せねば