大手飲料メーカーアサヒビールと通販大手アスクルの2社がサイバー攻撃を受けた。報道によると、両社ともにランサムウェア(暗号化ウイルス)に感染したとみられ、うちアサヒビールは件数は明らかにしていないものの、個人情報が外部に流出したという。近年増加するランサムウェア被害はどのようにして発生するのか、今回は一例としてショートカットを用いたウイルス感染を取り上げる。
外部サーバーがあればウイルス不要の時代に
かつてのコンピューターウイルスは、外部の不正なファイルをダウンロードして実行し、感染するケースが多かった。そのため、ウイルス対策ソフトで容易に検出され、実行前に削除されることが多かった。しかし現在は、ウイルスをわざわざダウンロードさせる必要はない。PCのユーザー本人にショートカットを踏ませるだけで十分になった。有名な手法はショートカットリンクの偽装、他にはPDF上にJS(JavaScript)を埋め込む、Exploit kitで攻撃するなどの手法があるが、今回は最もポピュラーなショートカットリンクによる攻撃例を紹介する。この攻撃手法は、対象者にウイルスを実行させる必要がなく、かつユーザーアカウント制御の対象外になることが挙げられる。
ショートカットリンクの悪用
ショートカットリンクは、特定のファイル(例えば共有ドライブ上のファイル)へのアクセスをし易くするために日頃よく使われるが、それ以外にも普段使っているブラウザソフトやアプリケーションにも用いられている。そのため、実行ファイルを引数に設定することも容易だ。例えばGoogle Chromeの場合は「”C:\Program Files\Google\Chrome\Application\chrome.exe”」にリンクを貼って実行している。これをPowerShellに置き換えると、当然のことながらWindowsPowerShellが立ち上がる。ただ立ち上がるだけなら問題ないが、攻撃者はありとあらゆる手を使ってウイルスを封入する工夫をする。
「プロパティ」から「アイコンの変更」を押すと、通常はPowerShellのアイコンだけが表示されるが、これを「%SystemRoot%\System32\SHELL32.dll」とすると、システムで使用される正規のフォルダアイコンの一覧に変わる。この中から通常のWindowsのフォルダアイコンを選ぶと、アイコンはPowerShellの物から変わる。さらに名前を「01201_東亜合成様分_苛性ソーダご請求書」などと変えてしまえば、一応「種類」の項目にはショートカットと表示されるものの、見分けがつかなくなってしまう。これがまず、初手の悪用だ。

PowerShellの引数悪用
とはいえ、PowerShellにリンクを貼っただけで何か起きることはない。問題はその引数にある。例えば引数を変えるだけでウイルスが実行されてしまう。
- powershell.exe Windows標準のシェル
- -ExecutionPolicy Bypass PowerShellのスクリプト実行ポリシーを無視してコマンドを実行する指定で、Bypassオプションにより、管理者が設定したセキュリティ制限を強制的に無効化する。
これにより、感染コードが本格的に動き出す。このペイロードがランサムウェアなどのマルウェアであれば、感染が完了する(不正な使用を避けるため一部を削除しました)。
実際にどう悪用されるのか?
このようなショートカットリンクが含まれたZIPファイルやメール添付ファイルが、取引先を装って送られてくる。ファイル名は「請求書」「納品書」「出荷予定表」「報告書」などとされており、業務上の通常のやり取りに紛れてユーザーが開いてしまうよう誘導されている。そして、誤ってクリックしてしまったが最後、PowerShellが自動的に外部からスクリプトをダウンロードし、payload.ps1として一時フォルダに保存、それを即座に実行してしまう。これにより、マルウェア本体のダウンロード・実行や、内部ネットワーク内での水平移動の準備、情報窃取、認証情報の窃取が一瞬で始まってしまう。この攻撃の怖い点は、「ユーザーがマルウェア本体をダウンロード・実行していない」点にある。ユーザーはただ「フォルダっぽいものを開いた」だけであり、その中でPowerShellが実行されていたとしても、警告は一切出ない。なぜならWindowsのユーザーアカウント制御(UAC)は、PowerShellの通常実行では警告を出さないからだ。
回避技術と検出困難性
攻撃者はさらに検出を回避するための技術も組み合わせてくる。たとえば:
- スクリプトを多段階に分割して実行
→ 第一段階のスクリプトは単に第二段階をダウンロードするだけ、といった形式にすることで、セキュリティ製品の検出を逃れる。 - バッチファイルやWSH(Windows Script Host)経由での起動
→*.vbsや*.jsといったWindows Scriptファイルに偽装し、.lnkからPowerShellを経由して呼び出すケースもある。 - Base64エンコードや難読化
→ 実行コマンドをBase64でエンコードし、スクリプトの内容を直接見えなくしてしまう。
例:-EncodedCommandオプションを用いたPowerShell実行。 - ファイルレス化
→ スクリプトをRAM上のみで動作させ、ディスクにマルウェアを一切保存しない手法。こうなると、従来型のアンチウイルスでは検知できなくなる。
企業はどう対策すべきか?
- ショートカットファイル(.lnk)の運用制限
- ファイルサーバ上での
.lnkファイルの実行制限や、メールでの受信制限を行う。
- ファイルサーバ上での
- PowerShellの制限と監視
ExecutionPolicyを厳格にし、管理者以外のユーザーによるスクリプト実行を制限。- AppLockerやWindows Defender Application Control(WDAC)による
powershell.exeの使用制御も有効。
- Base64や-EncodedCommandの監視
- セキュリティログやEDR製品で、Base64形式のPowerShell実行コマンドを検出対象とする。
- ふるまい検知の導入
- ファイルが開かれた直後にPowerShellが起動している、ネットワーク通信が始まっているなど、動作の異常を捉える製品(EDRなど)を活用する。
- 従業員教育の強化
- 「ショートカットファイルの中にもウイルスが潜む」という認識を全社員が持つよう、定期的な研修を実施。
おわりに:シンプルな攻撃こそが怖い時代に
かつてのウイルスは「EXEファイルを踏まない限り安全」という認識が通用した。しかし現代では、「フォルダのように見えるショートカット」を開いただけで、PowerShellを経由してファイルレスマルウェアが発動する。しかも、ユーザー自身が何も「インストールしていない」ことが大半であり、ログにも残りにくい。システムよりも人間の注意力を突く攻撃が主流になった今、従来のウイルス対策に加え、「振る舞い」や「操作の裏側で何が起きているか」を意識するセキュリティ文化の醸成が求められている。



