タスクスケジューラとは?使い方と悪用を防ぐセキュリティ対策5つ|サイバーセキュリティ.com

タスクスケジューラとは?使い方と悪用を防ぐセキュリティ対策5つ



タスクスケジューラとは、決めた日時や条件でプログラムを自動実行できる、Windowsに標準搭載された機能です。定期的なバックアップや業務ツールの起動などを自動化でき、日々の作業を大きく減らせます。

一方で、正規の機能であることを逆手に取り、マルウェアが居座り続けるために悪用されることもあります。この記事では、タスクスケジューラの仕組みや使い方、動かないときの確認ポイントに加え、悪用を防ぐセキュリティ対策5つを解説します。

タスクスケジューラとは

決めたタイミングでプログラムを自動実行するWindowsの機能

タスクスケジューラは、「いつ」「何を」実行するかをあらかじめ登録しておくと、そのタイミングでWindowsが自動的にプログラムを実行してくれる機能です。
Windows 11やWindows 10、Windows Serverに標準で搭載されており、追加のソフトをインストールせずに使えます。

タスクスケジューラに登録する一つひとつの自動実行の設定を「タスク」と呼びます。タスクは、指定した日時だけでなく、PCの起動時やログオン時など、さまざまなきっかけで実行できます。

タスクスケジューラでできること

タスクスケジューラを使うと、毎朝決まった時間に業務で使うアプリを起動する、週末の深夜にフォルダを別のドライブにバックアップする、といった定期的な作業を自動化できます。

このほか、PCへのログオン時に必要なツールを立ち上げる、サーバーで集計やデータ収集のスクリプトを一定間隔で実行する、といった使い方もあります。人の手で行うと忘れがちな作業を自動化することで、作業の手間とうっかりミスの両方を減らせます。

Linuxのcronとの違い

LinuxやUNIX系のOSで定期実行に使われるのが「cron」です。役割は似ていますが、次のような違いがあります。

項目 タスクスケジューラ cron
対象のOS Windows LinuxやUNIX系のOS
設定の方法 画面(GUI)やコマンドで設定 主に設定ファイルをテキストで編集
実行のきっかけ 日時のほか、起動時・ログオン時・イベントの発生時なども指定できる 主に日時で指定

タスクスケジューラの仕組み

タスクを構成する「トリガー」「操作」「条件」


タスクは、主に「トリガー」「操作」「条件」の組み合わせでできています。トリガーは「いつ実行するか」、操作は「何を実行するか」、条件は「どんな状態なら実行するか」を表します。

たとえば、「毎朝9時に(トリガー)、AC電源につながっていれば(条件)、バックアップ用のバッチファイルを実行する(操作)」というように組み合わせます。1つのタスクに、複数のトリガーや操作を設定することもできます。

誰の権限で実行するか(実行アカウント)

タスクには、「どのアカウントの権限で実行するか」も設定します。ログオン中のユーザーの権限で動かすこともあれば、管理者や、Windowsのシステムそのものの権限であるSYSTEMで動かすこともあります。

タスクは設定したアカウントの権限で動くため、権限の高いタスクほど、悪用されたときの影響が大きくなります。この点は、後半のセキュリティの章で詳しく解説します。

Windows自身も多くのタスクを使っている

タスクスケジューラは、ユーザーだけが使う機能ではありません。Windowsの更新の確認やディスクのメンテナンス、セキュリティ機能の定期的な処理など、Windows自身や多くのアプリケーションが、タスクスケジューラに登録したタスクで動いています。

タスクスケジューラを開くと、すでに数多くのタスクが登録されているのはこのためです。見覚えのないタスクがあっても、その多くは正規のものであるため、むやみに削除しないよう注意しましょう。

タスクスケジューラの使い方

タスクスケジューラを起動する

Windows 11では、スタートメニューのすべてのアプリから「Windowsツール」を開き、「タスクスケジューラ」を選ぶと起動できます。タスクバーの検索ボックスに「タスクスケジューラ」と入力して起動することもできます。

また、キーボードの「Windows」キーと「R」キーを同時に押して「ファイル名を指定して実行」を開き、「taskschd.msc」と入力しても起動できます。

「基本タスクの作成」でタスクを作る

初めてタスクを作る場合は、画面右側の「操作」欄にある「基本タスクの作成」を使うと、案内に従って順番に設定できます。

まず、タスクの名前と説明を入力します。次に、「毎日」「毎週」「ログオン時」など、タスクを開始するタイミングを選び、開始日時や間隔を指定します。続いて、実行する操作として「プログラムの開始」を選び、実行したいプログラムやスクリプトを指定します。
最後に設定内容を確認し、「完了」を押せばタスクが登録されます。

詳細な設定ができる「タスクの作成」

「基本タスクの作成」では、よく使う設定だけを順番に指定します。実行するアカウントや、電源・ネットワークの条件、失敗したときの再実行など、より細かく設定したい場合は、「タスクの作成」を使います。

「タスクの作成」では、「全般」「トリガー」「操作」「条件」「設定」の5つのタブで設定を行います。また、「基本タスクの作成」で作ったタスクも、後からプロパティを開いて同じように細かく変更できます。

作成したタスクの動作を確認する

タスクを作成したら、画面左側の「タスクスケジューラライブラリ」で作成したタスクを選び、右クリックの「実行」で手動で動かしてみましょう。意図どおりにプログラムが動くかを、その場で確認できます。

手動で動くことを確かめたら、次は数分後の時刻を指定して、予定どおりに自動で実行されるかも確認しておくと安心です。

よく使う設定項目

全般タブ:実行ユーザーとログオン状態

全般タブでは、タスクの名前や説明に加えて、タスクを実行するアカウントを設定します。

「ユーザーがログオンしているときのみ実行する」を選ぶと、そのユーザーがサインインしている間だけタスクが動き、画面にウィンドウを表示する処理にも使えます。
「ユーザーがログオンしているかどうかにかかわらず実行する」を選ぶと、サインアウト中でもバックグラウンドで実行されます。「最上位の特権で実行する」は、管理者の権限が必要な処理の場合にだけ有効にしましょう。

トリガータブ:実行のタイミング

トリガータブでは、タスクを実行するきっかけを設定します。「スケジュールに従う」を選べば、1回だけ・毎日・毎週・毎月といった日時で実行できます。

このほか、「ログオン時」「スタートアップ時」「アイドル時」「イベント時」などのきっかけも選べます。「繰り返し間隔」を使うと、「9時から1時間ごとに実行する」といった設定も可能です。

操作タブ:プログラム・引数・開始フォルダ

操作タブでは、実行するプログラムを指定します。「プログラム/スクリプト」に実行ファイルのパスを、「引数の追加」にプログラムへ渡すオプションを入力します。

見落としやすいのが「開始(オプション)」です。ここには、プログラムが作業の基準にするフォルダを指定します。スクリプトの中でファイルの場所を相対的に指定している場合、ここを空欄にすると、意図しない場所を基準に動いてしまい、エラーの原因になります。

条件タブ・設定タブ:電源や多重実行の制御

条件タブでは、「AC電源で使用している場合のみタスクを開始する」「タスクを実行するためにスリープを解除する」など、PCの状態に関する条件を設定します。ノートPCでは、AC電源の条件が原因でタスクが動かないことがあるため注意が必要です。

設定タブでは、失敗したときの再実行や、長時間終わらないタスクを停止するまでの時間、前回のタスクがまだ実行中だった場合の扱いなどを設定します。同じ処理が二重に動くのを防ぎたい場合は、「新しいインスタンスを開始しない」を選びます。

タスクが動かないときの確認ポイント

手動で実行できるか確かめる

タスクが動かない場合は、まず、実行したいプログラムやスクリプトを、タスクスケジューラを使わずに直接実行してみましょう。ここで動かない場合は、タスクの設定ではなく、プログラムそのものに問題があります。

プログラム単体では動くのにタスクとして動かない場合は、タスクを右クリックして「実行」を選び、手動で実行できるかを確認します。

「前回の実行結果」と履歴を確認する

タスクの一覧には「前回の実行結果」が表示されます。「この操作を正しく終了しました。(0x0)」と表示されていれば、正常に終了しています。それ以外のコードが表示されている場合は、何らかのエラーが起きています。

タスクを選んで「履歴」タブを開くと、いつ実行され、どこで失敗したかを確認できます。履歴が表示されない場合は、画面右側の「すべてのタスク履歴を有効にする」を選んでから、もう一度実行してみましょう。

パス・権限・電源の条件を見直す

よくある原因は、プログラムのパスの誤りや、「開始(オプション)」の未設定です。パスに空白が含まれる場合は、正しく指定できているかも確認しましょう。

手動では動くのに予定の時刻に動かない場合は、実行アカウントのアクセス権や、ログオン状態の設定、トリガーの有効・無効、AC電源やスリープの条件を確認します。

タスクスケジューラが攻撃者に悪用される理由

マルウェアが居座り続けるための仕組みとして使われる

マルウェアに感染させた攻撃者にとって、PCが再起動されたとたんにマルウェアが止まってしまうのは困ります。そこで、マルウェアを定期的に、あるいはPCの起動時やログオン時に自動で実行するタスクを登録し、感染した状態を保ち続けようとします。

このように、侵入した後もシステムに居座り続けることを「永続化」と呼びます。タスクスケジューラは、攻撃者が永続化に使う代表的な仕組みの一つであり、サイバー攻撃の手口を体系的にまとめたMITRE ATT&CKでも、手法の一つとして整理されています。

正規の機能のため見つかりにくい

タスクスケジューラはWindowsの正規の機能であり、もともと多数のタスクが登録されています。攻撃者は、Windowsの更新やアプリのアップデートなど、正規のタスクと似た名前を付けて登録することで、目立たないようにします。

また、タスクから起動されるのが正規のツールやスクリプトの実行プログラムである場合、一見すると不審な動きに見えません。こうした理由から、不審なタスクは長期間気づかれないまま残ってしまうことがあります。

権限の高いタスクが乗っ取りの足がかりになる

管理者やSYSTEMの権限で動くタスクが、一般のユーザーでも書き換えられる場所にあるスクリプトを実行している場合、その設定自体が弱点になります。スクリプトの中身を書き換えられると、書き換えた内容が高い権限で実行されてしまうためです。

本来は一般のユーザーの権限しか持たない攻撃者が、こうした設定の不備を利用して管理者の権限を手に入れることもあります。タスクを作る側の設定の甘さが、攻撃の足がかりになり得る点に注意が必要です。

悪用を防ぐセキュリティ対策5つ

対策1:タスクの一覧を定期的に確認する

タスクスケジューラライブラリを開き、登録されているタスクを定期的に確認しましょう。特に、作成者やタスクの名前に見覚えがない、操作で一時フォルダやユーザーのフォルダにある不審なファイルを実行している、といったタスクには注意が必要です。

ただし、Windowsやアプリが登録した正規のタスクも多いため、不審だと思っても自己判断で削除せず、実行しているファイルや作成された時期を確認したうえで、情報システム部門などに相談しましょう。
PowerShellを使えば、登録されたタスクの一覧をまとめて取り出し、確認することもできます。

対策2:タスクの作成・変更をイベントログで監視する

タスクの登録や変更は、Windowsのイベントログに記録できます。セキュリティログでは、監査の設定を有効にすると、タスクの作成(イベントID 4698)、削除(4699)、更新(4702)などが記録されます。

イベントID 記録される内容
4698 タスクが作成された
4699 タスクが削除された
4700・4701 タスクが有効化・無効化された
4702 タスクが更新された

業務で予定していないタイミングにタスクが作成・変更されていれば、攻撃の兆候である可能性があります。ログを集めて監視する仕組みやEDRを使うと、不審なタスクの登録に早く気づけます。

対策3:必要以上に高い権限で実行しない

タスクを作るときは、その処理に本当に必要な権限だけを与えましょう。管理者の権限が不要な処理で「最上位の特権で実行する」を有効にしたり、SYSTEMで実行したりすると、悪用されたときの影響が大きくなります。

可能であれば、タスク専用のアカウントを用意し、必要なフォルダやファイルにだけアクセスできるようにしておくと安全です。

対策4:実行するスクリプトの保存場所を保護する

タスクで実行するプログラムやスクリプトは、一般のユーザーが書き換えられない場所に保存しましょう。特に、管理者やSYSTEMの権限で動くタスクの場合、スクリプトを保存したフォルダのアクセス権を確認し、管理者以外は変更できないようにしておくことが重要です。

タスクの設定だけでなく、タスクが実行するファイルの保存場所まで含めて守ることが、権限の乗っ取りを防ぐポイントです。

対策5:管理者権限を持つアカウントを絞る

ほかのユーザーの権限で動くタスクや、高い権限で動くタスクを登録するには、管理者の権限が必要です。管理者の権限を持つアカウントを必要最小限に絞り、日常の業務は一般のユーザーの権限で行うようにしましょう。

管理者のアカウントには推測されにくいパスワードを設定し、多要素認証なども組み合わせることで、攻撃者に管理者の権限を奪われ、不審なタスクを登録されるリスクを下げられます。

タスクスケジューラに関するよくある質問

Q. 「基本タスクの作成」と「タスクの作成」の違いは何ですか?

「基本タスクの作成」は、名前・タイミング・実行するプログラムなど、よく使う設定だけを案内に従って順番に指定する方法です。「タスクの作成」は、実行アカウントや電源の条件、失敗時の再実行など、すべての項目を細かく設定できる方法です。

Q. 「メッセージの表示」や「電子メールの送信」が使えないのはなぜですか?

これらの操作は、Windows 8以降で非推奨となり、現在は使用できません。画面にメッセージを表示したり、メールを送ったりしたい場合は、「プログラムの開始」から、その処理を行うスクリプトやツールを実行します。

Q. 見覚えのないタスクは削除してよいですか?

すぐに削除するのは避けましょう。Windowsやアプリが登録した正規のタスクも多く、削除するとWindowsの更新やアプリの動作に影響が出ることがあります。
実行しているファイルや作成者を確認し、判断がつかない場合は情報システム部門やセキュリティの専門家に相談しましょう。

Q. パソコンの電源が切れていてもタスクは実行されますか?

電源が切れている間は実行されません。スリープ中であれば、「タスクを実行するためにスリープを解除する」を有効にすると、予定の時刻に復帰して実行できる場合があります。
また、設定タブの「スケジュールされた時刻にタスクを開始できなかった場合、すぐにタスクを実行する」を有効にすると、次に起動したときに実行されます。

Q. コマンドでタスクを管理できますか?

できます。コマンドプロンプトの「schtasks」コマンドや、PowerShellのタスク管理用のコマンドを使うと、タスクの作成・確認・削除を行えます。多くのPCで同じタスクを管理したい場合や、タスクの一覧をまとめて確認したい場合に便利です。

まとめ

タスクスケジューラは、決めた日時や条件でプログラムを自動実行できるWindowsの標準機能で、定期的な作業の自動化に役立ちます。トリガー・操作・条件と実行アカウントを正しく設定し、動かないときは実行結果や履歴を確認しましょう。

一方で、マルウェアの永続化にも悪用されるため、タスクの定期的な確認、イベントログの監視、権限と保存場所の管理を組み合わせて、安全に活用することが大切です。

SNSでもご購読できます。