
RedPeanutは、.Net Core 2で開発された小型のRATであり、そのエージェントは.Net 3.5 / 4.0で動作します。
__________________________________________________________________________
ooooooo________________oo_ooooooo___________________________________oo____
oo____oo___ooooo___oooooo_oo____oo__ooooo___ooooo__oo_ooo__oo____o__oo____
oo____oo__oo____o_oo___oo_oo____oo_oo____o_oo___oo_ooo___o_oo____o_oooo___
ooooooo___ooooooo_oo___oo_oooooo___ooooooo_oo___oo_oo____o_oo____o__oo____
oo____oo__oo______oo___oo_oo_______oo______oo___oo_oo____o_ooo___o__oo__o_
oo_____oo__ooooo___oooooo_oo________ooooo___oooo_o_oo____o_oo_ooo____ooo__
__________________________________________________________________________
________________________________________________RedPeanut_v0.3.0___@b4rtik
__________________________________________________________________________
現在テスト中。
既知のモジュールの問題点:
process -> spawnasagent
process -> spawnasshellcode
RedPeanutは.Net Core 2で開発された小型RATであり、そのエージェントは.Net 3.5/4.0で動作します。RedPeanutのコード実行はDonutCSで生成されたシェルコードに基づいています。したがって、.Netで開発されていますが、Assembly.Loadのみに依存しないハイブリッド型です。これにより検出面が増えますが、dotnet環境、プロセス管理、インジェクションに関する様々な回避技術を練習・実験することができます。この動作は実行時に「managed」および「unmanaged」コマンドで変更可能です。一貫性がありエンゲージメントで使用可能な.Net C2フレームワークをお探しなら、Covenantをお勧めします。
RedPeanutには以下のツールが組み込まれています:
RedPeanutエージェントは.Net 3.5および4.0でコンパイル可能で、名前付きパイプを介したピボット機能を備えています。アンマネージドモードで実行された場合、エージェントは重要なタスクを別のプロセスで実行することで、AVによる検出や実行時のエラーによってエージェント全体を失うことを防ぎます。
実行フローは以下の通りです:
現在、エージェントはhttpsチャンネルのみをサポートしています。
エージェントのチェックインプロトコルは非常にシンプルです:
あるいは、カバードチャンネル機能を有効にすることもできます(現時点ではPoCです)。そのアイデアは、実際のユーザーが行うWebトラフィックを模倣することです。通常、WebページはHTMLページと、CSSや画像など表示に必要なすべてのオブジェクトで構成されています。新しいタスクの要求に対して、サーバーからの応答は暗号化されたタスクを直接返すのではなく、暗号化されたタスクを埋め込んだ画像へのリンクを抽出するためのHTMLページを返します。画像へのHTTPリクエストにはRefererヘッダーが含まれます。
コンテンツ配信は4つのチャンネルで構成されています:
RedPeanutはサーバー側とクライアント側の両方でネットワークフットプリントをカスタマイズする機能を提供します。
設定可能なプロパティは以下の通りです:
ドメインフロンティングを有効にするには、クライアントセクションの"Host"ヘッダーに値を設定する必要があります(POSTとGETの両方、デフォルトプロファイル2で例示)。
PowerShellExecuterモジュールを使用すると、ワンライナーコマンドやファイルを、AMSIバイパス、ロギングバイパス、PowerViewが既に読み込まれたRunspaceで実行できます。
バージョン0.3.0から、RedPeanutAgentはblockdllsコマンドをサポートしています。このオプションを有効にすると、アンマネージドモードでタスクを実行するために作成される子プロセスは、PROCESS_CREATION_MITIGATION_POLICY_BLOCK_NON_MICROSOFT_BINARIES_ALWAYS_ON属性で作成されます。この属性により、Microsoftによって署名されていないDLLがプロセスに読み込まれるのを防ぎ、AVやEDRのフック技術からタスクを保護できる可能性があります。
RedPeanutAgentは動的DLL読み込みを使用して、疑わしいDLLインポートを回避します。動的DLL読み込みの功績は、@TheRealWover、@cobbr_io、@FuzzySec のSharpSploit における研究にあります。
一部のAVやEDRベンダーは、アクティビティを追跡するためにフック技術を使用しています。フックされたシステムコールの使用を避けるために、RedPeanutAgentは必要なコードを自動注入してダイレクトシステムコールを使用します。ダイレクトシステムコールの功績は、@Cneelis にあります。
RedPeanutを実行するには、dotnetがインストールされている必要があります。Kaliにdotnetをインストールするには:
wget -qO- https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.asc.gpg
mv microsoft.asc.gpg /etc/apt/trusted.gpg.d/
wget -q https://packages.microsoft.com/config/debian/9/prod.list
mv prod.list /etc/apt/sources.list.d/microsoft-prod.list
chown root:root /etc/apt/trusted.gpg.d/microsoft.asc.gpg
chown root:root /etc/apt/sources.list.d/microsoft-prod.list
apt-get install apt-transport-https
apt-get update
apt-get install dotnet-sdk-2.1
git clone --recursive https://github.com/b4rtik/RedPeanut.git
カバードチャンネル機能を使用するには、libgdiplusライブラリをインストールする必要があります。そのため:
Linuxユーザーの場合:
apt-get install -y libgdiplus
OSxの場合
brew install mono-libgdiplus
アセンブリ署名キーの生成
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community>sn.exe -k 4096 key.snk
その後、key.snkをWorkspace/KeyFileにコピーします。
root@kali:~# cd RedPanut
root@kali:~/RedPeanut# dotnet run
Using launch settings from /root/Projects/RedPeanut/Properties/launchSettings.json...
Enter password to encrypt serverkey:
__________________________________________________________________________
ooooooo________________oo_ooooooo___________________________________oo____
oo____oo___ooooo___oooooo_oo____oo__ooooo___ooooo__oo_ooo__oo____o__oo____
oo____oo__oo____o_oo___oo_oo____oo_oo____o_oo___oo_ooo___o_oo____o_oooo___
ooooooo___ooooooo_oo___oo_oooooo___ooooooo_oo___oo_oo____o_oo____o__oo____
oo____oo__oo______oo___oo_oo_______oo______oo___oo_oo____o_ooo___o__oo__o_
oo_____oo__ooooo___oooooo_oo________ooooo___oooo_o_oo____o_oo_ooo____ooo__
__________________________________________________________________________
________________________________________________RedPeanut_v0.3.0___@b4rtik
__________________________________________________________________________
[*] 利用可能なプロファイルがありません。新しいものを作成します...
[RP] >
DonutCSは、.NETアセンブリから位置非依存のシェルコードペイロードを生成するツールです。このシェルコードは、任意のWindowsプロセスにアセンブリを注入するために使用できます。任意の.NETアセンブリ、パラメータ、エントリポイント(Program.Mainなど)を指定すると、メモリからロードする位置非依存のシェルコードを生成します。.NETアセンブリはURLからステージングするか、シェルコードに直接埋め込んでステージレスにすることができます。
CLR永続化技術は、@Am0nsecによるこの投稿で初めて紹介されました。この技術は、アプリケーションドメインマネージャーのフックを実行するものです。投稿で説明されているように、フックを実行するためのアセンブリはGACで利用可能です。GACから使用するアセンブリは、厳密な名前が必要であり、キーで署名する必要があります。CLR永続化モジュールでは、アセンブリに署名するためのキーが必要であり、sn.exeツールを使用して次のように生成できます:
**********************************************************************
** Visual Studio 2017 Developer Command Prompt v15.9.3
** Copyright (c) 2017 Microsoft Corporation
**********************************************************************
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community>sn.exe -k 4096 key.snk
key.snkファイルをWorkspace/KeyFileフォルダーにコピーします。このファイルは永続化用のアセンブリ署名に使用されます。
RedPeanutに含まれるGhostPackツールなど、一部の有名なツールは完全にラップされ、クライアント側で実行されます。例えばSeatBeltなどのツールをリポジトリ全体を更新せずに更新するには、Seatbeltリポジトリをクローンし、"Main"メソッドの名前を"Execute"に変更し、public修飾子を挿入してdllとして再コンパイルします。dllはRastaMouseのスクリプトGet-CompressedShellcode.ps1を使用して圧縮・Base64エンコードする必要があります。