LoginSignup
0
0

More than 3 years have passed since last update.

Splunk BOSS of the SOC ver 2について(Scheduled Task)

Posted at

Boss of the SOC (BOTS) Advanced APT Hunting Companion App for Splunk
Hunting an APT with Splunk Workshop
Welcome to the Hunting an APT with Splunk Workshop based on the Boss of the SOC 2017 data set.

こちらを元に、手順を追ってみる。データセットはここ
なお、ログの時間を合わせるためユーザの時間帯を(GMT -08:00)にする必要がある。

全13回

  1. 概要とPowerShell Empire
  2. FTP Exfiltration
  3. DNS Exfiltration
  4. Adversary Infrastructure
  5. Spearphishing Attachment
  6. User Execution
  7. Account Persistence
  8. Scheduled Task
  9. Indicator Removal
  10. User Agent Strings
  11. OSINT Gathering
  12. Lateral Movement
  13. Data Staging

Scheduled Task

Scheduled Task - Hypothesis

仮説
敵は、タスクスケジューラを使用して、再起動後も持続性を維持しようとします。
説明
攻撃者は、タスクスケジューリングを使用して、システムの起動時または永続性のスケジュールに基づいてプログラムを実行したり、システムの特権を取得するための横移動の一部としてリモート実行したり、指定されたアカウントのコンテキストでプロセスを実行したりできます。

How Might We Confirm or Refute Our Hypothesis?

  • スケジュールされたタスクを識別するために必要なデータソース(ソースタイプ)は?
  • スケジュールされたタスクの実行を示す特定のイベントコードまたは値はありますか?
  • スケジュールされたタスクが作成または変更されるときに使用するキー値はありますか?
  • これらのスケジュールタスクを作成したのは誰ですか?
  • スケジュールされたタスクを作成するためにどのシステムが使用されましたか?
  • どのようなスケジュールされたタスクが実行されましたか?
  • スケジュールされたタスクの名前は何ですか?

Scheduled Task - Basics

タスクスケジューラとは

タスクスケジューラは、スケジュールに従ってアクションを実行する方法を提供します。 これらは、Windows、アプリケーション、またはユーザーによるインストール時に作成できます。 タスクスケジューラには正当な用途があり、標準のWindowsインストールには多くのタスクが含まれる可能性があるため、攻撃者は見つけにくい場所を見つけることができます。

What is the Task Scheduler in Windows?

これがWindowsでどのように見えるかを見てみましょう。 クイック検索により、schtasks.exeコマンドリファレンスが表示され、タスクの作成に必要なコマンドライン引数を確認できます。 これは、Windowsタスクログでschtasksの検索を開始し、何が行われているかを判断するときに役立ちます。
タスクスケジューラは、スケジュールに従ってアクションを実行する方法を提供します。 これらは、Windows、アプリケーション、またはユーザーによるインストール時に作成できます。 タスクスケジューラには正当な用途があり、標準のWindowsインストールには多くのタスクが含まれる可能性があるため、攻撃者は見つけにくい場所を見つけることができます。

Your Run of the Mill Scheduled Task

Sysmonの基本的なスケジュールされたタスクから開始できます。 CommandLine値は、スケジュールされたタスクです。 この例では、スケジュールされたタスクが変更されており、タスクが識別されて有効にされています。 かなり基本的です。

Schedule Tasks

Sysmonイベントを検索して、スケジュールされたタスクの存在、特に以前のハント中に他の侵害の兆候を示した4つのシステムを見つけることができます。ある程度の侵入があることはすでにわかっているので、影響を受けるシステムだけに検索を絞り込むことができます。ただし、影響を受けるシステムから独立したスケジュールされたタスクのハントは、他の属性に焦点を当てることができます。たとえば、PowerShellから作成されたスケジュールされたタスク、またはタスク自体内でPowerShellを参照することに焦点を当てることができます。

tableコマンドを使用して出力をフォーマットし、_time、そのホスト、ParentCommandLineを追加します。 ParentCommandLineは、フィールドCommandLineで見つかったものを生成したコマンドです。

リストの最初の2つの結果を見ると、wrk-btunで、Windows自動更新のスケジュールされたタスクが変更されて有効に設定され、親がサービスとして実行する実行可能なOfficeClickToRunであることがわかります。

最後の3つのイベントを見ると、エンコードされたPowerShellを含むParentCommandLine値を持つ、スケジュールされたタスクが実行されている4つのシステムのうち3つを見ることができます。コマンドラインからタスク名を抽出しましょう。

コマンドラインからタスク名を抽出して、次のステップを見つけましょう。

Using Rex to Extract Task Name

以前の検索を実行し、rexコマンドを追加することにより、タスクの名前を抽出できます。 タスクの名前は、敵が置き去りになっていることを示す別の名前にすることもできます。 攻撃者が操作を実行している場合、タスク名を変更しない可能性が高いため、影響を受けるシステムでタスク名を特定できる場合、この同じ手法を使用して、同じ名前のスケジュールされたタスクを持つ他のシステムを特定できます 。 絶対的なものはありませんが、検査する指標となる場合があります。 ここでは、疑わしいタスクがアップデーターと呼ばれていることがわかります。

What Are The Events Telling Us?

  • / Create –新しいタスクを作成します
  • / F-タスクを強制的に作成し、タスクが存在する場合は警告を抑制します
  • / RU-タスクを実行するユーザーコンテキストを指定します-システム
  • / SC –スケジュールの頻度–毎日
  • / ST –タスクの開始時間– 10:51
  • / TN –タスクの名前–アップデーター
  • / TR –実行する実行可能ファイルのパスとファイル名

CommandLineフィールドに注目すると、ログに記録されているものを分析できます。 PowerShell実行可能ファイルで終わる作成中のタスクには7つの引数があります。 すぐに、PowerShellの引数に戻ります。 キャプチャした3つのCommandLine値をすべて比較すると、実行時を除いて同じであることがわかります。 画像には1つしか表示されていませんが、検索には3つすべてが含まれています。

ここで、PowerShellの引数を見ると、ユーザーにインタラクティブプロンプトが表示されていない(-NonI)、非表示のウィンドウで実行されている(-W hidden)、powershell invoke-expressionコマンドが実行されていることがわかります (IEX)。 Base64String情報は、エンコードが発生している可能性のある手がかりを提供しますが、飛び出す別の手がかりはHKLM:\ Software \ Microsoft \ Network文字列です。 そのような文字列はレジストリ設定にあるため、Windowsレジストリデータがある場合は、そのデータにピボットして、レジストリから呼び出されたものを確認できる場合があります。

Scheduled Task - Registry

レジストリに隠す

タスクスケジューラのしくみを確認し、タスクスケジューラがPowerShellを疑わしい方法で実行していることを確認しました。 レジストリデータを収集していない場合、レジストリへの参照が問題になる可能性があります。 幸いなことに!

Pivot to Windows Registry

文字列「Software \ Microsoft \ Network」を取得し、WinRegistryのソースタイプを検索すると、返されるイベントを確認できます。 バックスラッシュ(\)を含む文字列を検索して追加のバックスラッシュを追加する場合は、エスケープ文字とは見なされないことに注意してください。

影響を受ける4つのマシンすべてに同じレジストリ値が設定されているように見えますが、3つのシステムでのみスケジュールされたタスク実行可能ファイルが実行されていました。 すべてが影響を受けたように見えますが、何かが水銀の処刑を妨げました。 構成の違いを判断するには追加の調査が必要になる可能性がありますが、今のところ、イベントを見てみましょう。

Expanding Our Registry Event

以前のレジストリイベントのいずれかで[展開]をクリックすると、大量のエンコードされたデータが表示されます。 スケジューラーのInvoke-Expressionコマンドを思い出すと、Base64への参照が表示されているため、データを取得してCyberChefまたはお気に入りのBase64デコーダーで実行し、取得するものを確認してみましょう。

CyberChef

Scheduled Tasks - Findings

Were We Able To Confirm Our Hypothesis?

C2に接続する実行するPowerShellコマンドを定期的にスケジュールすることにより、攻撃者の永続性を維持するために、スケジュールされたタスクが実行されています

What We Learned

  • タスクスケジューラは、3つのシステムの永続性を維持するために使用されています
  • これらのタスクを作成するためにエンコードされたPowershellが使用されています
  • タスクの名前は同じです
  • タスクは開始時間を除いて同一です
  • タスクは、レジストリに書き込まれるPowerShellクレードルを呼び出すように設計されています
  • 4つのシステムのレジストリにこの値があり、4つが最初に侵害されたことを示します。
  • レジストリおよびCommandLineのエンコードは、意図を難読化するように設計されています

What should we operationalize?

各ハントの終わりに、私たちは何を取り、インシデント対応チームにフィードバックできるかについて考えたいと思います。 これは、ボックスを引っ張ってフォレンジックアクティビティを実行するなどの追加アクティビティであるか、インジケータを取得してSIEMまたはログ管理システムにフィードするか、発見したことに基づいて新しい分析とアラートを構築することができます。 一日の終わりには、先ほど言ったように、狩りから何かを学ぶ必要があります!

  • これは、タスクスケジューラの使用のばらつきのために難しいものです。
  • 監視する

  • ITベースラインから逸脱したSchtasks.exe

    • 外れ値を探すための標準タスクのルックアップを構築するには、ITとの優れた調整が必要です
    • 頻度によってはうるさい
  • IT標準と一致しないスケジュールされたタスク名

    • 侵害されたシステムはIT標準を使用している可能性があり、これは表示されません
  • 予期しないユーザーの下で実行されるスケジュールされたタスク

    • タスクはシステムまたは名前付きユーザーとして実行する必要がありますか?
  • コマンド文字列が通常のものではないスケジュールされたタスク

    • 一部の組織ではPowerShellスクリプトをスケジュールされたタスクとして実行する必要がありますか?

まとめ

schtasks.exeによる永続化は定番。とりあえず検索してみるのが正しい。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0