ExcelやWordなど米Microsoft(マイクロソフト)のOfficeソフトで作成した文書ファイルでは「マクロ」機能を利用できる。文字の検索や置換を一括処理する、グラフを作成する、書式を変更するといった処理を自動化できるので、利用している人も多いだろう。
このマクロを悪用して、不正な処理を実行するのが「マクロウイルス」である。例えば、2020年に猛威を振るったウイルス「Emotet(エモテット)」はマクロを利用していた。メールに添付された文書ファイルを開くと、マクロによってEmotetに感染させられたのだ。
ところが、マクロウイルスはウイルス対策ソフトやサービスで検知されにくいといわれている。Emotetに感染した被害企業もウイルス対策ソフトを利用していたが、Emotetに感染させる文書ファイルを検知できなかったという。
そこで今回は、マクロでどのような操作ができるのかを紹介し、ウイルスのような振る舞いをするマクロを自作してそれをウイルス対策ソフトが検知するのかどうかを調べた。
外部のプログラムを呼び出せる
まずはマクロの概要を説明しよう。
マクロは操作内容を記録して、その内容を自動で実行できるようにする機能である。冒頭に書いた「文字の検索や置換を一括処理する」といった処理はマクロの処理に向いている。
ただマクロはOfficeソフト上の操作だけでなく、外部のプログラムを呼び出すといったことが可能だ。例えば、「Wordファイルを開いたときに電卓アプリを起動する」という処理をマクロで記録する。その内容(スクリプト)は以下のような記述になる。
Dim ret As Long
ret = Shell("C:\WINDOWS\SYSTEM32\CALC.EXE")
End Sub
これを設定したWordファイルを開くと、画面上部に「セキュリティの警告」と表示される。この警告内にある「コンテンツの有効化」ボタンをクリックすると電卓が起動される。
マクロで呼び出せるプログラムは、電卓のようなWindows標準のアプリだけではない。さまざまなプログラムを指定できるようになっている。