
プロキシ対応のC2フレームワークで、レッドチームのポストエクスプロイテーションやラテラルムーブメントを支援するために使用されます。

PoshC2 はプロキシ対応の C2 フレームワークで、ペネトレーションテスターがレッドチーム活動、ポストエクスプロイテーション、ラテラルムーブメントを支援するために使用されます。
PoshC2 は主に Python3 で記述されており、モジュール形式を採用しているため、ユーザーは独自のモジュールやツールを追加でき、拡張可能かつ柔軟な C2 フレームワークとなっています。標準で PoshC2 には PowerShell/C# および Python2/Python3 のインプラントが含まれており、ペイロードは PowerShell v2 および v4、C++ および C# のソースコード、さまざまな実行ファイル、DLL、生のシェルコード、さらに Python2/Python3 のペイロードで提供されます。これにより、Windows、*nix、OSX を含む幅広いデバイスやオペレーティングシステムで C2 機能を利用できます。
PoshC2 のその他の注目すべき機能は次のとおりです。
PoshC2 のドキュメントは https://poshc2.readthedocs.io/en/latest/ で管理しています。
#Slack - poshc2.slack.com でお問い合わせください(招待をリクエストするには [email protected] にメールを送信してください)。
PoshC2 は直接インストールするか、Docker イメージを使用してインストールできます。両方の手順を以下に示します。
PoshC2 をインストールするためのインストールスクリプトが用意されています。
*** PoshC2 インストールスクリプト ***
使用方法:
./Install.sh -b <git branch> -p <PoshC2をクローンするディレクトリ>
デフォルトは master ブランチで /opt/PoshC2 にクローンされます。
インストールスクリプトは apt のアップデートとインストールを実行するため、昇格された権限が必要です。
curl -sSL https://raw.githubusercontent.com/nettitude/PoshC2/master/Install.sh | sudo bash
または、リポジトリをクローンして手動でインストールスクリプトを実行することもできます。
sudo ./Install.sh
PoshC2 のインストールディレクトリは、-p 引数で Install.sh スクリプトに渡すことで手動で設定できます。デフォルトは /opt/PoshC2 です。
curl -sSL https://raw.githubusercontent.com/nettitude/PoshC2/master/Install.sh | sudo bash -s -- -p /root/PoshC2
master ブランチは安定した状態を保ち、ユーザーが必要なときに頼りにできるようにしたいと考えています。そのため、変更内容が機能としては完成していても、完全にテストされ承認されていないため、master にはまだ含まれていないことがよくあります。
PoshC2 の今後の機能を確認したい場合は、dev ブランチ、または dev から分岐した個々の機能ブランチをチェックアウトできます。
機能は dev にマージされる前にテストされるため、このブランチは依然としてかなり安定しており、オペレーターはこのブランチまたは特定の機能ブランチをエンゲージメントに使用することを選択できます。ただし、これは安定性と新しい機能をトレードオフするため、ご自身の判断で行ってください。
dev または機能ブランチを使用するには、ブランチ名を Install.sh スクリプトに -b 引数として渡します。
curl -sSL https://raw.githubusercontent.com/nettitude/PoshC2/dev/Install.sh | sudo bash -s -- -b dev
URL にもブランチ名が含まれていることに注意してください(ここでは master の代わりに dev)。
Docker を使用して PoshC2 を実行することもできます。これにより、より安定した実行が可能になり、PoshC2 を他のオペレーティングシステムで簡単に実行できます。
Docker インストールでは PoshC2 をクローンしません。Docker Hub 上の PoshC2 イメージが使用されるため、一部の依存関係とスクリプトの最小限のインストールのみが実行されます。
まず、ホストに Docker をインストールし、必要に応じて OS 用に PoshC2 プロジェクトディレクトリを Docker の共有ディレクトリとして追加します。デフォルトでは、*nix では /var/poshc2、Mac では /private/var/poshc2 です。
インストールスクリプト:
*** PoshC2 Docker インストールスクリプト ***
使用方法:
./Install-for-Docker.sh -b <git branch>
デフォルトは master ブランチです。
インストールスクリプトはスクリプトのインストールを実行するため、昇格された権限が必要です。
curl -sSL https://raw.githubusercontent.com/nettitude/PoshC2/master/Install-for-Docker.sh | sudo bash
Docker で dev または機能ブランチを使用するには、適切なブランチの Install-for-Docker.sh を curl でダウンロードし、ブランチ名を引数として渡します。
curl -sSL https://raw.githubusercontent.com/nettitude/PoshC2/BRANCHNAME/Install-for-Docker.sh | sudo bash -s -- -b BRANCHNAME
Windows では、PoshC2.psm1 PowerShell モジュールをインポートします。
Import-Module -DisableNameChecking C:\PoshC2\resources\scripts\PoshC2.psm1
posh-project -PoshC2Dir "C:\PoshC2" -LocalPoshC2ProjectDir "C:\PoshC2_Project" -Arg1 "-n" -Arg2 "newproject"
posh-config -PoshC2Dir "C:\PoshC2" -LocalPoshC2ProjectDir "C:\PoshC2_Project"
posh-server -PoshC2Dir "C:\PoshC2" -LocalPoshC2ProjectDir "C:\PoshC2_Project"
posh -PoshC2Dir "C:\PoshC2" -LocalPoshC2ProjectDir "C:\PoshC2_Project" username
新しいプロジェクトを作成します。
posh-project -n <project-name>
このスクリプトを使用してプロジェクトを切り替えたり、一覧表示したりできます。
[*] 使用方法: posh-project -n <新しいプロジェクト名>
[*] 使用方法: posh-project -s <切り替えるプロジェクト>
[*] 使用方法: posh-project -l (プロジェクトを一覧表示)
[*] 使用方法: posh-project -d <削除するプロジェクト>
[*] 使用方法: posh-project -c (現在のプロジェクトを表示)
プロジェクトの設定を編集します。
posh-config
PoshC2 サーバーを起動します。
posh-server
または、サービスとして起動します。
posh-service
別途、インプラントと対話するための ImplantHandler を実行します。
posh -u <username>
PoshC2 の完全なドキュメントについては、https://poshc2.readthedocs.io/en/latest/ を参照してください。
Docker を使用している場合、posh-server および posh に -t オプションを指定して、使用する Docker イメージタグを指定できます。
例:
posh-server -t latest
エンゲージメント中に PoshC2 を更新することはお勧めしません。受信した変更が既存のプロジェクトと互換性がなく、予期しない動作を引き起こす可能性があります。
git クローン版の PoshC2 を使用している場合、次のコマンドを使用して PoshC2 のインストールを更新できます。
*** PoshC2 更新スクリプト ***
使用方法:
posh-update -b <git branch>
デフォルトは master ブランチです。
適切なタグを参照することで、古いバージョンの PoshC2 を使用できます。これは、リポジトリをクローンしている場合にのみ機能します。 リポジトリのタグを一覧表示するには、次のコマンドを発行します。
git tag --list
PoshC2 のローカルクローンがある場合、使用するバージョンをチェックアウトするだけで、オフラインで使用中のバージョンを変更できます。
git reset --hard <タグ名>
例:
git reset --hard v4.8
ただし、これにより設定ファイルなどのローカルファイルへの変更がすべて上書きされることに注意してください。そのバージョンのインストールスクリプトを再実行するか、環境を適切に再セットアップする必要がある場合があります。
このソフトウェアは、許可されたテスト活動にのみ使用し、悪意のある使用は禁止されています。
このソフトウェアをダウンロードすることにより、利用条件とライセンス契約に同意したものと見なされます。