Windows

Windows起動時にexeを自動実行する方法

これまでリモートでコード実行したり入力されたキーを外部に送信するスクリプトについて解説してきました。ただペネトレーションテストなどの演習を行ううえで疑似マルウェアを検査対象の端末で実行させることに成功したとしても、情報収集に時間がかかる場合途中端末がシャットダウンされてしまうケースもあり得るでしょう。シャットダウンすると実行されていたファイルは停止してしまうため、対策しないと再度検査対象の端末で疑似マルウェアを実行させる工程が生じてしまいます。逆に言い換えれば今回紹介する手順はウイルス等悪意のあるプログラムがバックドアを設置する際などによく利用されるため、セキュリティ管理者は影響度を正しく把握するためにも今回紹介する手順を理解しておくことを推奨します。

それではWIndows起動時に自動でファイル実行するための方法を学習しておきましょう。

関連記事

今回紹介する内容は自分が管理している環境においてシステムの防御機構を確かめたり(ペネトレーションテスト等)、レジストリを有効にするとどういった悪影響があるかを解説することでセキュリティ管理者に向けた啓蒙を行う等、正当な目的のために作成したものです。悪用することを目的として利用すると法律に問われる可能性があります。

方法1.レジストリを変更する

Windows起動時にファイル実行するための手順としてまずレジストリを変更する方法があります。レジストリはWindowsの設定情報を保持しているデータベースのことで、今回のように起動時に実行するファイルの指定やキーボード、各種管理ツール(コマンドプロンプト)の有効/無効など様々な設定を行うことができます。悪意のあるプログラムに感染すると操作が一部無効化されたり壁紙が怖いものに変えられてしまうような場面を見たことがあるかもしれませんが、あのような設定はレジストリを変更することでも実現できたりします。では実際に変更する方法についてみていきましょう。

1.「Win+R」を押下してダイアログからレジストリエディタを開く

ファイル名を指定して実行する画面が出てきますのでここで「regedit」と入力してEnterを押下します。

2.レジストリエディターを開いたら以下の階層に移動する

コンピューター>HKEY_LOCAL_MACHINE>SOFTWARE>Microsoft\Windows>CurrentVersion>Run

3.エディター画面右側で右クリックし「新規」>「文字列値」を選択

4.新しく作成された「新しい値#1」をクリックし文字列の編集画面を開く

作成された「新しい値#1」を右クリックすると名前を変更することができます。私は特に変更しませんが名前を変更したい方は適宜変えてください。

5.「値のデータ」にWindowsを起動時に実行したいexeファイルを指定する

今回は【ネットワーク】PowerShellとPythonを用いたTCP通信プログラムの作成の記事内で作成した、リモートコード実行のPowershellスクリプトをexeに変換したファイルを指定します。

6.入力した値が反映されることを確認する

「データ」のカラムを見ると確かに入力した内容が反映されています。

7.Windowsを再起動し動作するか確認する

では本当に起動時に指定したファイルが実行されるか確認してみましょう。今回指定したPowershellのexeファイルはサーバ側のプログラムにコネクションの確立を試みるものなので、Windowsを再起動する前にMac側でコネクションの受付を開始しておきます。サーバ側のPythonプログラムは冒頭で紹介した記事で詳しく解説していますので必要に応じてそちらを参考にしてください。

Mac側サーバプログラムを実行した状態

この状態でWindowsを再起動すると設定したexeファイルが実行されMac側でコネクションの確立に成功したメッセージが表示されます。

以下のスクリプトをMac側のコンソールで入力すると下記の通りWindows環境でPowershellを実行した結果を取得することができました。

>Get-NetTCPConnection | % { Write-Output "$($_.LocalAddress)->$($_.LocalPort)" }

Windows側では再起動してからコネクションを確立するまでの間に画面上での変化は何もなかったため(自動実行する際にコンソールが表示されないように設定済)、セキュリティの意識が高くない人であればWindows環境が起動している間Mac側からいつでもPowershellコマンドをリモートで実行することができます。これでペネトレーションテストの疑似攻撃対象の端末で再起動が発生したとしても、再度疑似マルウェアを実行させる手順を踏むことなく情報収集を続行することができます。

方法2. スタートアップディレクトリを利用する

Windows起動時に自動実行する方法はこれから紹介するスタートアップディレクトリに実行対象のファイルを配置することでも実現できます。WIndowsのレジストリは更新・修正する手順が多少面倒なのともし間違って想定とは異なるレジストリを修正してしまった場合、システムを壊してしまう可能性があります。一方でこちらの手順は手間も大してかからず間違った操作をしてしまった場合のリスクも小さいので、簡単なテストなどであればこちらで十分なように思います。

1.「Win+R」を押して「shell:startup」を入力

2.エクスプローラー上に実行するファイルを配置する

エクスプローラーが開いたらそのディレクトリに自動実行するファイルを配置して終わりです。1.の手順と比べると簡単でリスクも少なく、パッと見た感じでは画面上から確認できる挙動の違いも特に見つけられませんでした。ただこのディレクトリは勤怠画面の自動表示や毎日確認するようなExcelファイルの自動起動など、通常業務の自動化で便利なため使用者が多く見つかりやすいことは頭の片隅に入れておく必要があると思います。

-Windows