Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
ScheduleRunner — レッドチーム運用において、永続性とラテラルムーブメントの両方のためにスケジュールタスクをカスタマイズする際の柔軟性を高めたC#ツール | Kitploit
ツール/GitHubGitHub/netero1010/schedulerunner
永続化メカニズムIDS/IPS回避横移動ポストエクスプロイトレッドチーミング
GitHubnetero1010/schedulerunner

ScheduleRunner

レッドチーム運用において、永続性とラテラルムーブメントの両方のためにスケジュールタスクをカスタマイズする際の柔軟性を高めたC#ツール

リポジトリを見る
347481年前Kitploit レビュー済み

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

ScheduleRunner - レッドチーム運用において永続化と横断移動のためのスケジュールタスクをより柔軟にカスタマイズできるC#ツール


スケジュールタスクは過去10年間で最も人気のある攻撃手法の一つであり、現在もハッカー/レッドチームによって永続化と横断移動のために一般的に使用されています。

スケジュールタスクを使用した攻撃をシミュレートするために、多数のC#ツールが既に開発されています。私はそのうちのいくつかを試してきましたが、それぞれにスケジュールタスクのカスタマイズにおける制限がありました。そのため、このプロジェクトは、私が必要とする機能を含み、スケジュールタスクのカスタマイズに十分な柔軟性を提供するC#ツール(CobaltStrikeのexecute-assemblyに対応)を提供することを目的としています。

スクリーンショット:

HowTo

メソッド (/method):

メソッド機能
create新しいスケジュールタスクを作成する
delete既存のスケジュールタスクを削除する
run既存のスケジュールタスクを実行する
queryスケジュールタスクまたはフォルダ内の全スケジュールタスクの詳細を照会する
queryfoldersスケジュールタスク内のすべてのサブフォルダを照会する
moveスケジュールタスクを使用して横断移動を実行する(自動的に作成、実行、削除)

スケジュールタスク作成のオプション (/method:create):

[*] は必須フィールドです。

スケジュールタスク削除のオプション (/method:delete):

オプション機能
[*] /tasknameスケジュールタスクの名前を指定する
/folderスケジュールタスクが保存されるフォルダを指定する(デフォルト:\)

[*] は必須フィールドです。

スケジュールタスク実行のオプション (/method:run):

オプション機能
[*] /tasknameスケジュールタスクの名前を指定する
/folderスケジュールタスクが保存されるフォルダを指定する(デフォルト:\)
/remoteserverリモートコンピュータのホスト名またはIPアドレスを指定する

[*] は必須フィールドです。

スケジュールタスク照会のオプション (/method:query):

オプション機能
/tasknameスケジュールタスクの名前を指定する
/folderスケジュールタスクが保存されるフォルダを指定する(デフォルト:\)
/remoteserverリモートコンピュータのホスト名またはIPアドレスを指定する

[*] は必須フィールドです。

スケジュールタスク横断移動のオプション (/method:move):

[*] は必須フィールドです。

使用例

"Cleanup"という名前のスケジュールタスクを作成し、毎日午後11時30分に実行する

ScheduleRunner.exe /method:create /taskname:Cleanup /trigger:daily /starttime:23:30 /program:calc.exe /description:"Some description" /author:netero1010

"Cleanup"という名前のスケジュールタスクをリモートサーバー上で4時間ごとに実行する

ScheduleRunner.exe /method:create /taskname:Cleanup /trigger:hourly /modifier:4 /program:rundll32.exe /argument:c:\temp\payload.dll /remoteserver:TARGET-PC01

"Cleanup"という名前のスケジュールタスクを削除する

ScheduleRunner.exe /method:delete /taskname:Cleanup

"Cleanup"という名前のスケジュールタスクを実行する

ScheduleRunner.exe /method:run /taskname:Cleanup

リモートサーバー上の"\Microsoft\Windows\CertificateServicesClient"フォルダ内の"Cleanup"というスケジュールタスクの詳細を照会する

ScheduleRunner.exe /method:query /taskname:Cleanup /folder:\Microsoft\Windows\CertificateServicesClient /remoteserver:TARGET-PC01

リモートサーバー上の"\Microsoft\Windows\CertificateServicesClient"フォルダ内のすべてのスケジュールタスクを照会する

ScheduleRunner.exe /method:query /folder:\Microsoft\Windows\CertificateServicesClient /remoteserver:TARGET-PC01

スケジュールタスク内のすべてのサブフォルダを照会する

ScheduleRunner.exe /method:queryfolders

スケジュールタスクを使用して、特定のユーザーアカウントでリモートサーバーに横断移動を実行する

ScheduleRunner.exe /method:move /taskname:Demo /remoteserver:TARGET-PC01 /program:rundll32.exe /argument:c:\temp\payload.dll /user:netero1010

スケジュールタスク隠蔽手法を使用して、"Cleanup"というスケジュールタスクを作成する:

ScheduleRunner.exe /method:create /taskname:Cleanup /trigger:daily /starttime:23:30 /program:calc.exe /description:"Some description" /author:netero1010 /technique:hide

スケジュールタスク隠蔽手法を使用した"Cleanup"というスケジュールタスクを削除する:

ScheduleRunner.exe /method:delete /taskname:Cleanup /technique:hide

スケジュールタスク隠蔽手法

この手法は、脅威アクターHAFNIUMによって使用され、最近Microsoftによって発見されました。これは、スケジュールタスクをツールで照会できなくし、タスクスケジューラで表示できなくすることを目的としています。

この手法を使用するには、"NT AUTHORITY/SYSTEM"が必要であり、ScheduleRunnerは次の処理を自動的に実行します:

  1. "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Tree\[タスク名]"から"SD"値を削除する
  2. スケジュールタスクのXMLファイル "C:\Windows\System32\Tasks\[タスク名]" を削除する

この手法で作成されたスケジュールタスクを削除するには、削除メソッドに"/technique:hide"を追加して適切に削除する必要があります。

この手法の欠点:

タスクはレジストリ経由で削除された場合でも、次のシステム再起動まで実行され続けます。したがって、運用においてサーバーでこの手法を使用しないほうがよいでしょう。

デモ

HowTo

使用したライブラリと参考資料:

ライブラリリンク
TaskSchedulerhttps://github.com/dahall/TaskScheduler
参考資料リンク
SharpPersisthttps://github.com/mandiant/SharPersist
スケジュールタスク隠蔽手法https://www.microsoft.com/security/blog/2022/04/12/tarrask-malware-uses-scheduled-tasks-for-defense-evasion/
ツールをダウンロード
オプション機能
[*] /tasknameスケジュールタスクの名前を指定する
[*] /programタスクが実行するプログラムを指定する
[*] /triggerスケジュールの種類を指定する。有効な値は、"minute"、"hourly"、"daily"、"weekly"、"onstart"、"onlogon"、"onidle" です。
/modifierスケジュールの種類内でタスクが実行される頻度を指定する。"minute"(例:1-1439分)、"hourly"(例:1-23時間)、"weekly"(例:mon,sat,sun)などのスケジュールタイプにのみ適用されます。
/starttime日次のスケジュールタイプの開始時刻を指定する(例:23:30)
/argumentプログラムのコマンドライン引数を指定する
/folderスケジュールタスクが保存されるフォルダを指定する(デフォルト:\)
/workingdirスケジュールタスクが実行される作業ディレクトリを指定する
/authorスケジュールタスクの作成者を指定する
/descriptionスケジュールタスクの説明を指定する
/remoteserverリモートコンピュータのホスト名またはIPアドレスを指定する
/user指定されたユーザーアカウントでタスクを実行する
/technique回避手法を指定する:
- "hide": HAFNIUMマルウェアが使用する手法で、スケジュールタスクをタスククエリから隠します。

[!] https://www.microsoft.com/security/blog/2022/04/12/tarrask-malware-uses-scheduled-tasks-for-defense-evasion/
[!] この手法はリモートレジストリの権限のため、リモート実行をサポートしません。"NT AUTHORITY\SYSTEM"が必要であり、タスクは削除後もシステム再起動まで実行され続けます。
/remoteserverリモートコンピュータのホスト名またはIPアドレスを指定する
/techniqueスケジュールタスクが回避手法を使用して作成された場合に指定する:
- "hide": "スケジュールタスク隠蔽"手法を使用して作成されたスケジュールタスクを削除する

[!] 削除には"NT AUTHORITY\SYSTEM"が必要であり、タスクは削除後もシステム再起動まで実行され続けます。
オプション機能
[*] /tasknameスケジュールタスクの名前を指定する
[*] /programタスクが実行するプログラムを指定する
[*] /remoteserverリモートコンピュータのホスト名またはIPアドレスを指定する
/triggerスケジュールの種類を指定する。有効な値は、"minute"、"hourly"、"daily"、"weekly"、"onstart"、"onlogon"、"onidle" です。
/modifierスケジュールの種類内でタスクが実行される頻度を指定する。"minute"(例:1-1439分)、"hourly"(例:1-23時間)、"weekly"(例:mon,sat,sun)などのスケジュールタイプにのみ適用されます。
/starttime日次のスケジュールタイプの開始時刻を指定する(例:23:30)
/argumentプログラムのコマンドライン引数を指定する
/folderスケジュールタスクが保存されるフォルダを指定する(デフォルト:\)
/workingdirスケジュールタスクが実行される作業ディレクトリを指定する
/authorスケジュールタスクの作成者を指定する
/descriptionスケジュールタスクの説明を指定する
/user指定されたユーザーアカウントでタスクを実行する