外部記憶媒体による攻撃手法とマルウェア感染

     

概要


ここでは、外部記憶媒体(CD/DVD、USB メモリ等)を用いた攻撃手法とその攻撃に伴いマルウェアが感染する仕組みについて解説する。

制御システム(ICS/OT)のセキュリティ界隈では、「外部記憶媒体(特に USB メモリ)からのマルウェア感染に気を付けなければならない」と数多くの記事で目にする(※ITでも多く目にするが、ここでは制御システムに主眼を置く)。

しかし、具体的な挙動(外部記憶媒体挿入後の可視的特徴など)、感染方法、および防御方法について詳細に解説している文献は少ない。

そこで、本記事では、外部記憶媒体の攻撃手法とマルウェア感染について調査した内容をまとめ、体系的かつ詳細に理解していただくことを目的としている。
(※ここで紹介した内容は、2019年10月時点で著者が調査した内容のものであり、新しい外部記憶媒体を利用した攻撃手法やマルウェア感染が登場した場合、順次本記事に更新していく。)

      

外部記憶媒体の脅威


外部記憶媒体(CD/DVD、USB メモリ等)は、利便性が高いことからデータの授受に関する多くの用途で利用されている。

外部記憶媒体の普及に伴い、サイバー攻撃を行う攻撃者は、外部記憶媒体をマルウェアに感染させる媒介として着目し、外部記憶媒体を利用したマルウェア感染や攻撃を行うようになった。

とりわけ、クローズド環境(インターネットや他ネットワークと接続されていない独立したネットワークやスタンドアロンな環境のこと)で運用されている制御システムにおいても、悪意のある外部記憶媒体が接続されればマルウェアに感染する恐れがあるため、「外部記憶媒体の接続は非常に危険である」と数多くのガイドラインやレポート等で記されている。

現時点での外部記憶媒体からマルウェアに感染させる方法として、Autorun の利用、脆弱性の悪用、USB コントローラファームウェアの書き換えが挙げられる。

以降では、これらの方法について解説していく。
対象とする OS は、Windows とする(Windows 以外の OS は、今後別記事として解説する)。

      

Autorun の利用


autorun とは,Windows に標準で備わっている機能であり,CD/DVD や USB メモリのような外部記憶媒体に記録された任意プログラムをディスクの挿入後に自動で実行(自動実行 or 自動再生)する機能である。

自動実行とは,何も画面表示なく任意プログラムが実行される実行方法である。
例えば、音源が保存された CD を Windows 端末に挿入すると、すぐに音源再生ソフトが起動し、CD/DVD に保存された音源が再生される。

このように利用者が操作をすることなく、自動でプログラムを起動するといった動作が自動実行にあたる。
これは、現行の Windows 10 でもデフォルトで有効化しているが、USBメモリにおいては自動実行はできない設定になっている(詳細は後述)。

自動再生とは,外部記憶媒体の挿入後,下図のような自動再生のウインドウが表示され,利用者がそのウインドウの中に記載された複数の選択内容から処理を選択し、プログラムを実行する方法である。
     

     
この方法は,プログラムの実行前に自動再生のウインドウが表示されるため、自動実行のように勝手にプログラムが実行するといったことはなく、自動再生の画面で利用者が何かを選択しない限りは、プログラムは実行されない。

これらと外部記憶媒体の対応を簡潔に表にまとめてみる。
なお、本検証では、Windows XP, 7, 10 を用いている。
     

外部記憶媒体 自動実行 自動再生
CD/DVD 実行可能 実行可能
USB メモリ 実行不可能 実行可能(Windows 7 以降はレジストリの書き換え等が必要)

     
また,エクスプローラの画面から、読み込んだ外部記憶媒体のアイコンをクリックすることで任意プログラムを実行することもできる(詳細は後述)。

続いて、autorun の具体的な仕組みについて実証した内容と共に解説する。
なお、USB メモリでの autorun を利用したマルウェア感染についての仕組みは、文献 [1] [2] [3] 等も参考にされたい。

      

USB メモリからの autorun の設定

まず、USB メモリからの autorun の設定方法と仕組みについて解説する。
下図のように、USB メモリに、「autorun.inf」と「動作させたいマルウェア」(ここでは、malware.exe とする)を保存する。
     

     
autorun.inf は、外部記憶媒体を接続した際に、どのような処理を行うかを記述する設定ファイルである。
autorun の機能がオンになっている場合、この autorun.inf の内容を実行することになる。
(なお、上図ではアイコンの設定、右クリック時の設定、アイコンクリック時の設定も記述している。)

これらのファイルを USB メモリに保存した後、USB メモリを Windows 端末に挿入すると、2つ前の図のような自動再生の画面が表示され、ここではドクロのアイコンを選択し、クリックすると、malware.exe が実行される。

下図は、エクスプローラーに表示される USB メモリのアイコンを右クリック下ときの様子であり、Auto と呼ばれる選択肢が存在していることが分かる。これをクリックすると malware.exe が実行される。
また、アイコンそのものをダブルクリックしても malware.exe が実行される。
     

     
このように、USB メモリの場合の autorun の機能は、USB メモリの挿入後には必ず自動再生画面が表示されるため、利用者がこれをクリックしなければマルウェアは動作しない。
しかし、利用者がクリックしてしまう可能性は高いため、何らかのセキュリティ対策は必要である(詳細は後述)。
また、エクスプローラーのアイコンから起動する際には、自動再生画面は表示されないため、注意が必要である。

      

CD/DVD からの autorun の設定

続いて、CD/DVD に先ほどと同様の autorun.inf と malware.exe を書き込んで autorun が実行されるか試したところ、Windows XP はもちろん、Windows 7 と Widows 10 においても、下図(この図は Windows 10 での自動再生)の自動再生画面が表示され、ドクロのアイコンをクリックすると malware.exe が実行された。
     

     
また、USB メモリの時と同様に、エクスプローラからも malware.exe が実行できた(下図参考)。
     

    
これらの検証結果を以下の表にまとめる。
     

外部記憶媒体 自動再生(XP/VISTA) explorer からの実行(XP/VISTA) 自動再生(7 以降) explorer からの実行(7 以降)
CD/DVD 実行可能 実行可能 実行可能 実行可能
USB メモリ 実行可能 実行可能 実行不可能 実行不可能

     
Windows 7 以降において、USB メモリに関しては autorun は実行できなかったが、CD/DVD は自動再生の設定がオンになっている場合、Windows 7 以降でも autorun 機能が有効に実行されたことが分かった。
(ちなみに,USB ポートを利用する外付け CD/DVD ドライブでも,CD/DVD ドライブだと認識されるため,autorun は実行された。)

これより、Hipopos の検証では、USB メモリより CD/DVD の方が危険性が高いという見解となった(Windows 10 でも、Windows XP と同じ挙動を示すことが分かった。また、Windows 10 でも CD/DVD の自動再生はデフォルトで有効化されている。)。

USB メモリからのマルウェア感染についての危険性が多くの記事等で取り上げられることが多いが、CD/DVD も同程度に利用されている個所では、CD/DVD の利用も注意していただきたい。

     

対策方法

【対策1】:自動再生機能をオフにする(下図参照)
     

    
この対策では、自動再生の画面表示はされなくなるが、エクスプローラーには外部記憶媒体のアイコンが表示されるため、そのアイコンをクリックすると、任意プログラムが実行される。
自動再生機能をオフにする他の方法としては、レジストリ(「HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer」の「NoDriveTypeAutoRun」の値を「0x000000ff」に書き換える)を書き換えてオフにする方法(Windows 10 では左記のレジストリは見当たらなかった)がある。

      
【対策2】:事前に別端末で中身や動作を検査する
これは運用的な対策であるが、対策1 のみではも十分完璧な対策ではないため、事前に外部記憶媒体の中身や動作を別端末で検査するといった運用にすることが効果的であると考える。

      

.LNK の脆弱性(MS010-046)の悪用

.LNK の脆弱性 [4](MS010-046, CVE-2010-2568)とは、Windows シェル(explorer.exe で利用している shell32.dll のこと)において、ショートカットファイル(.lnk の拡張子のファイル)を読み込む処理に、CWE-20(不適切な入力確認)の脆弱性が存在するというものである。

ここで記した「ショートカットファイルを読み込む処理」とは、利用者がショートカットファイルをダブルクリック等で選択して実行することではなく、エクスプローラーにショートカットファイルを表示する処理自体のことを指す

つまり、本脆弱性は、ショートカットファイルがエクスプローラーの画面で表示された時には既に攻撃は実行されている(うまく伝えることができないので、後述の参考文献の動画で理解していただければと思う)。

CWE-20 は、「外部からの入力を適切に検証してしない」という内容の脆弱性であり、本脆弱性では、ショートカットファイルの内部構造を改変することで、正常な処理とは異なる処理にフローが進み、最終的に LoadLibraryW を呼び出し、任意のコード(任意の DLL といった方が正確である)を実行していると推察される。
本脆弱性の詳細は、文献 [7]が詳しく解説しているため、参考にされたい。

Metasploit Flamework にも本脆弱性を利用した疑似攻撃を実証できるため、興味がある方は分析してみてもいいだろう [5] [6]

この脆弱性を利用することで、攻撃者はユーザ権限で任意コードを実行することができる。

Stuxnet [3]は、USB メモリの中に本脆弱性を悪用するショートカットファイル(.lnk)を保存し、その USB メモリを利用者に閲覧させることで、任意コードを実行(恐らく、攻撃者が用意した DLL ファイルを実行)し、感染および感染拡大を実施した(当時はゼロデイの脆弱性であった)。

    

対策方法

【対策1】:本脆弱性に対応したパッチを適用する
脆弱性が攻撃の発端であるので、技術的な対策としてはパッチ適用が一番の対策である。
CWE-20 を検知する仕組みやツールなどがあるのであれば、それを適用するのも有効である(アンチウイルスソフト、EDR、脆弱性緩和ツール等が対応している可能性もある)。

【対策2】:接続したい端末に当該 USB メモリを別端末で検査(アンチウイルスソフト等で検査する)する
脆弱性を防止することはできないかもしれないが、実際に動作するプログラム自体をマルウェアとして検知できる可能性がある。

       

USB コントローラファームウェアの書き換え


USB コントローラファームウェアの書き換えは、USB デバイスに限定された手法である。
本手法は,2014年に BlackHat USA 2014 にて発表された USB メモリのファームウェアをキーボードコントローラに書き換えて,キーボードとして振舞いをさせる BadUSB というタイトルの講演で始めて登場した [8]

書き換え予定のファームウェアにあらかじめキー入力する文字列を書き込んでおくことで,任意のキー入力が可能となる [9]

簡単な方法としては、AVR マイコンを搭載したデバイス等に USB コネクタを接続することで、ファームウェアを書き換えなくても BadUSB と同様の USB デバイスを作成する方法もある [10] [11] [12]

また,WiFi モジュールと組み合わせてリモートからキー入力を遠隔操作するもの、イーサネット/シリアルコンソール/フラッシュストレージの機能や切替機能を搭載したもの、Linux がインストールされているもの、マウス等の USB デバイスに組み込むものなど、様々なバリエーションが登場しており、危険性も高く、見た目も通常の USB デバイスと区別がつかないようになっている [13] [14] [15] [16]

      

対策方法

【対策1】:すべての USB デバイスをブロックする
USB ポートを防いだり、システム側で USB デバイスの機能をオフにすることで、本対策を実施できる。
しかし、USB デバイスを必ず使用しなければならない端末には、本対策は適用できない等のデメリットがある。

【対策2】:USB デバイスの接続を制御する
USB デバイスの固有の識別番号(複数の値を組み合わせて固有番号を生成することもある)を基に、あらかじめ許可された USB デバイスのみしか接続を許可しない設定とすることで、本攻撃を防ぐことができる。

【対策3】:事前に別端末で中身や動作を検査する
これは運用的な対策であるが、事前に外部記憶媒体の中身や動作を別端末で検査するといった運用にすることが効果的であると考える。
      

      

おわりに


本記事では、外部記憶媒体からのマルウェア感染や攻撃手法、および対策方法について解説した。
外部記憶媒体は非常に便利なツールであるが、危険性を十分に理解した上で利用しなければ、マルウェア感染の被害に及ぶことを理解していただけたと思う。

奇しくも autorun の検証においては、CD/DVD のような光学ディスクの方が USB メモリよりも危険性が高いことが判明した。
ソフトウェアのインストールディスクなどでは、光学ディスクは現役であり、利用個所によっては USB メモリよりも利用頻度が多いこともあるため、CD/DVD 等に保存されたデータを実行する際は注意する必要がある。

最後に、本記事は制御システムに主眼を置いているが、ITシステムにも共通する脅威であるので、社内教育やセキュリティポリシーの作成等に活用していただければと思う。

      

参考文献


[1] USBメモリで拡がるウイルス「オートラン」は、なぜ怖い:https://ascii.jp/elem/000/000/544/544216/
[2] USB メモリ経由の感染機能を持つマルウエア調査報告書:https://www.jpcert.or.jp/research/2009/usbmalware_20090619.pdf
[3] HIRT-PUB09003:USBメモリの自動再生/自動実行:http://www.hitachi.co.jp/hirt/publications/hirt-pub09003/
[4] Windows シェルの脆弱性(MS10-046)について:https://www.ipa.go.jp/security/ciadr/vul/20100803-ms10-046.html
[5] Microsoft LNK Exploit MS10-046:https://www.youtube.com/watch?v=r7QIsXvXrIo
[6] Microsoft Windows - Shell LNK Code Execution (MS10-046) (Metasploit):https://www.exploit-db.com/exploits/16574
[7] Windows Lnk Vul Analysis:From CVE-2010-2568(Stuxnet 1.0) to CVE-2017-8464(Stuxnet 3.0):http://ith4cker.com/content/uploadfile/201804/44eb1522835054.pdf
[8] BadUSB - On accessories that turn evil:https://srlabs.de/wp-content/uploads/2014/07/SRLabs-BadUSB-BlackHat-v1.pdf
[9] Psychsonを使用したBadUSBの作成方法:http://kikuzou.hateblo.jp/entry/2014/11/21/143115
[10] USBキーボードを実装してキーボードとPCの間で通信を行う(Windows編):https://qiita.com/binzume/items/980a4d21987a7b1831e9
[11] BadUSB体験会:https://qiita.com/halt/items/9e7f5d4ccfd28f89a11b
[12] 超高速Lチカ技術を応用したBadUSB自作入門:https://tech.recruit-mp.co.jp/iot/badusb/
[13] spacehuhn/wifi_ducky:https://github.com/spacehuhn/wifi_ducky
[14] BASH BUNNY:https://shop.hak5.org/products/bash-bunny
[15] Weaponize a Mouse with WHID Injector for Fun & W00t:https://whid-injector.blogspot.com/
[16] Building Trojan Hardware at Home:https://www.blackhat.com/docs/asia-14/materials/Dunning/Asia-14-Dunning-Building-Trojan-Hardware-At-Home.pdf
     

登録日時2019-10-16 20:33:41
更新日時2020-01-11 23:22:16