
TLSコールバックを利用して、リモートプロセス内でスレッドを生成せずにペイロードを実行する
新しいモジュール 34: TLS コールバックによるアンチデバッグ
新しいモジュール 35: Threadless Injection
この手法は、TLS コールバックを利用して、リモートプロセス内でスレッドを生成せずにペイロードを実行します。この手法は Threadless Injection に着想を得ており、RemoteTLSCallbackInjection は注入されたペイロードをトリガーするために API 呼び出しを一切行いません。
PoC は以下の手順に従います:
CreateProcessViaWinAPIsW 関数(例:RuntimeBroker.exe)を使用して、中断状態のプロセスを作成します。g_FixedShellcode とメインペイロード)を注入します。その後、g_FixedShellcode シェルコードは、メインペイロードを呼び出す前に元の TLS コールバックのアドレスを復元することで、メインペイロードが一度だけ実行されるようにします。TLS コールバックはプロセスの存続期間中に複数回実行される可能性があるため、元のコードパスの実行を元の TLS コールバック関数に復元することで、ペイロードがトリガーされる回数を制御することが重要です。
次の画像は、私たちの実装である RemoteTLSCallbackInjection.exe がメインペイロードとして cmd.exe を起動している様子を示しています。
