FFRIエンジニアブログ

株式会社FFRIセキュリティのエンジニアが執筆する技術者向けブログです

マルウェアの拡張子、ファイル偽装について

はじめに

セキュリティサービス本部 セキュリティエンジニアの都築です。 マルウェアを使う攻撃者は被害者にマルウェアを実行させるために多くの工夫を凝らします。被害者にマルウェアを実行させることで、被害者の持つ権限でマルウェアを動作させることができ、機密情報の窃取、ファイルの削除などの目的を達成しやすくなるからです。 本ブログでは、古くから使われているが、いまだによく使われるマルウェアの拡張子に行われる工夫、ファイル偽装についてまとめました。また、合わせてその対策について説明します。

マルウェアの拡張子に行われる工夫

マルウェアで主に使われている拡張子は以下の通りです。※もちろんマルウェアでない正常なファイルもこれらの拡張子を使用します。

  • Windows 実行ファイル(exe、scr、cpl、…)
  • スクリプト(js、bat、…)
  • ショートカット(lnk)
  • Office ファイル(docx、xlsx、…)、PDF ファイル(pdf)
  • 上記ファイルを zip、暗号化 zip したファイル(zip)

どの拡張子も 10 年以上前から継続して悪用されていますが、近年は JavaScript(js) の悪用が増加しているようです。 各拡張子、形式について説明します。

Windows実行ファイル(exe、scr、cpl、…)

Windows の実行ファイルはマルウェア本体であるケース、マルウェア本体ではなくダウンローダー、ドロッパー、などであるケースがあります。いずれにせよ実行するとマルウェアに感染します。

実行ファイルの拡張子は基本的には exe ですが、 scr や cpl という拡張子のファイルをダブルクリックすることでも実行できます。 scr は本来スクリーンセーバーの拡張子で、 cpl は本来コントロールパネル項目の拡張子です。攻撃者は、被害者になじみのない scr や cpl を exe の代わりに悪用することで、意図せずマルウエアを実行させようとします。

スクリプト(js、bat、…)

Windows のスクリプトもマルウェア本体であるケース、マルウェア本体ではなくダウンローダー、ドロッパー、などであるケースがありますが、実行するとマルウェアに感染します。

JavaScript ファイル(拡張子 js)、バッチファイル(拡張子 bat、cmd)はデフォルトでは、ダブルクリックするとスクリプトが実行されるようになっています。それにより、被害者がスクリプトの拡張子、アイコンを知らないと実行してしまう可能性があります。

ショートカット(lnk)

Windows のショートカットの「リンク先」属性を PowerShell などのプログラムにできます。ダブルクリック時にショートカット先のファイルが表示される代わりに、マルウェア本体のダウンロード、実行などが行われ、マルウェアに感染します。

ショートカットの「リンク先」属性

なお、「リンク先」属性は、以下の手順にて確認できます。

ショートカットを右クリック → プロパティ → ショートカットタブ → リンク先

Office ファイル(docx、xlsx、…)、PDF ファイル(pdf)

Office ファイルを被害者に開かせ、マルウェアに感染させる手口について説明します。 まず、Office ファイルのマクロを悪用してマルウェアに感染させる手口があります。マクロはデフォルトで無効になっているため、Office ファイルを開いただけではマルウェアに感染しません。しかし、ファイルを開いた後、上部に表示される「コンテンツの有効化」ボタンをクリックすると、マクロが有効になりマルウェア感染します。

また、Office ファイルの脆弱性を悪用し、マルウェアに感染させる手口があります。 例えば、Word の数式エディタの脆弱性 CVE-2017-11882 を悪用した手口があります。 CVE-2017-11882 は、すでに 2017 年に修正パッチがリリースされていますが、修正パッチを適用していない Microsoft Word でファイルを開くとマルウェアに感染します。

PDF ファイルにも Office ファイルと同様の手口が存在します。 PDF ファイルに埋め込んだ JavaScript を悪用してマルウェアに感染させる手口があります(JavaScript の実行前に Acrobat Reader の警告ダイアログが表示されます)。また、 Acrobat Reader の脆弱性を悪用しマルウェアに感染させる手口があります。

上記ファイルを zip、暗号化 zip したファイル(zip)

攻撃者は、前述のファイルをパスワード付き zip として暗号化して配布することで、アンチウイルスソフトの検出を回避しようとします。また、zip の他に rar、lzh などを悪用するケースもあります。なお、パスワードなしで zip 圧縮するだけだと、アンチウイルスソフトにより高い可能性でスキャンできます。

マルウェアのファイル偽装

マルウェアの可能性があるファイル、特に実行ファイル、スクリプト、ショートカットは実行しないようにすべきです。 しかし、攻撃者はファイルを偽装することで、被害者をだまし、実行ファイル、スクリプト、ショートカットを実行させようとします。

主なファイルの偽装方法は以下の通りです。

  • 偽装アイコン + 2重拡張子

    例) 1.参考資料.pdf.exe

  • 偽装アイコン + 大量のスペースによる偽装

    例) 2.参考資料{大量のスペース}.exe

  • 偽装アイコン + RLO による偽装

    例) 3.参考資料{RLO}fdp.exe (「3.参考資料 exe.pdf」のように見える)

エクスプローラにて「中アイコン」、「拡張子を表示しない設定」にすると、偽装ファイルは以下のように表示され、拡張子が exe の実行ファイルなのに pdf ファイルのように見えます。Windows10、Windows11(※) のどちらも、デフォルトが「拡張子を表示しない設定」であることが攻撃者の狙いどころになっています。

(※)Windows 11 Insider Preview (Beta Channel) - Build 22000.132 にて確認。

なお、実際には偽装アイコンは本物の PDF によく似たアイコンが多く使用されます(正規のアイコンはハッシュ値から検知されるので使われない)。

「中アイコン」、「拡張子を表示しない設定」での偽装ファイルの見え方

なお、RLO による偽装とは、Unicode の特殊文字 RLO (Right to Left Override) を入力し、左から右へと読むファイル名の流れを途中から右→左に変更したものです。

例として、実行ファイル「参考資料fdp.exe」を「参考資料exe.pdf」に偽装する方法を説明します。

1.「参考資料fdp.exe」にファイル名変更し、「参考資料」と「fdp.exe」の間にカーソルを合わせます。

RLO による偽装 1/3

2.右クリック→ Unicode 制御文字の挿入→ RLO をクリックします。

RLO による偽装 2/3

3.ファイル名が「参考資料exe.pdf」に偽装されます。

RLO による偽装 3/3

マルウェアの拡張子の工夫やファイル偽装への対策

攻撃者がファイル偽装でマルウェアを配布することへの対策として、以下などが考えられます。

  • エクスプローラの拡張子の表示設定を行う

    詳細は後述します。

  • エクスプローラを詳細表示にする

    詳細は後述します。

    さらに、マルウェアへの一般的な対策として、以下も挙げられます。

  • 最新のセキュリティパッチの適用

    Office、PDF などの脆弱性を悪用されないように、最新のセキュリティパッチを適用します。

  • アンチウイルスソフトの利用

    例えば、偽装したファイルをブラウザからダウンロードしようとすると、Microsoft Defender がブロックしてくれます。

    ブラウザのダウンロードエラー

    Microsoft Defender によるブロック

  • メーラーのセキュリティ機能の利用

    例えば、Microsoft Outlook ではメールに実行ファイル、スクリプト、ショートカットが添付されていた場合、ダウンロードを禁止してくれます。これは偽装ファイルでも同様です。  

    Microsoft Outlook によるダウンロード禁止

    なお、Microsoft Outlook のダウンロード禁止対象の拡張子については以下のリンクをご参照ください。
    Outlook でブロックされる添付ファイル

「エクスプローラの拡張子の表示設定を行う」、「エクスプローラを詳細表示にする」について詳細を説明します。設定方法は以下となります。

エクスプローラを表示 → 表示タブ → 表示/非表示欄のファイル名拡張子をチェック、レイアウト欄の詳細を選択

設定前後の画面コピーを以下に示します。設定後は2重拡張子が見えるようになっています。また、種類列の値により偽装ファイルかどうかがわかるようになっています。

設定前)

「中アイコン」、「拡張子を表示しない設定」での偽装ファイルの見え方

設定後)

「詳細アイコン」、「拡張子を表示する設定」での偽装ファイルの見え方

ただし、ショートカットについては、エクスプローラで拡張子を表示する設定をしても、拡張子(lnk)が表示されない仕様のため、2重拡張子が見えるようにはなりません。しかし、種類列の値から偽装ファイルかどうかがわかるようになっています。

設定後)

「詳細アイコン」、「拡張子を表示する設定」でのショートカットの見え方

Windows10、Windows11(※) のどちらも「エクスプローラを詳細表示にする」はデフォルトで設定されています。しかし、エクスプローラの拡張子の表示設定はオフになっているので、オンにすることを推奨いたします。

(※)Windows 11 Insider Preview (Beta Channel) - Build 22000.132 にて確認。

おわりに

マルウェアの拡張子に行われる工夫、ファイル偽装については MITRE ATT&CK の以下にも記載があります。

User Execution: Malicious File

FFRIセキュリティでは、疑似攻撃による診断サービスや、マルウェアの解析、脅威分析などを行っています。また、採用に関してはこちらを御覧ください。