PoshC2を使ってみる
PoshC2を使ってみる
PoshC2とは
Python3ベースのオープンソースなC2フレームワークPoshC2を使ってみる.
PoshC2は次のような特徴を持つ.
- ビーコン,強制終了日,ユーザー情報など高度にカスタマイズされたペイロードの作成とターゲットへのロード
- C2プロキシ用にカスタマイズされたApacheサーバー
- C#やPowerShell,Python3などの選択可能なインプラント
- PoshC2を介したすべてのユーザー操作のロギング
- Docker利用による信頼性の高いクロスプラットフォーム性
なおPoshC2はいくつかバージョンがあり,以下にそれぞれをまとめておく.
Python3で書かれた最新のバージョン
- 現行の最新でありコミットも盛ん
- https://github.com/nettitude/PoshC2
PowerShell server-basedバージョン
- Python3版移行に伴って現在メンテナンスはされていないものの動きはする模様
- https://github.com/nettitude/PoshC2_old
Python2で書かれたOldバージョン
- リポジトリは既に存在せず,Python3版へリダイレクトされる
詳細についてはリポジトリのオーナーであるNetitudeのブログにて,PoshC2のバージョン情報が詳しく述べられている.
また各種インプラントの使用方法や実装について解説しており,ドキュメントと合わせて目を通しておくとよいだろう.
NettitudeによるPoshC2解説記事 labs.nettitude.com
公式ドキュメント poshc2.readthedocs.io
ここでは,Python3で書かれた最新のPoshC2を使用し,ターゲット端末のスクリーンショットを取得してみる.
PoshC2のインストール
KaliにPoshC2をインストールしてみる.
curl -sSL https://raw.githubusercontent.com/nettitude/PoshC2/master/Install.sh | sudo bash
posh-configコマンドで,PoshC2サーバーの設定を変更できる.
適当に調整したのはBindIP,PayloadCommsHostの2点.
PoshC2の使用
PoshC2はその使用にあたって2つの端末を使用する.
- PoshC2サーバー用端末
- インプラントハンドラ用端末
それぞれ立ち上げてみる.
posh-service
コマンドでPoshC2サーバーが起動する.
その後,posh
コマンドで立ち上がるインプラント操作用端末からターゲットを操作することになる.
なお,poshコマンドで求められるユーザー名はログ用のものであり任意なユーザー名を使用可能.
インプラントハンドラの使用
poshコマンド実行後,アクティブなインプラントのリストが画面上部に表示される.
インプラント番号を入力することで,特定インプラントへコマンドを送ることができる.
また,helpコマンドを発行することで現在使用可能なコマンドやモジュールのリストが表示される.
ターゲットホストのスクリーンショットを取得してみる
ターゲット端末のスクリーンショットを取得してみる.
適当なStagerをターゲット端末で実行し,サーバーとのコネクションを確立する.
インプラントハンドラからget-screenshotコマンドを発行.
サーバー側のログにダウンロード先のフォルダが表示されるので見てみるとpngが保存されたパスが表示される.
確かにスクリーンショットが取得できた.
以上.
参考
https://readthedocs.org/projects/poshc2/downloads/pdf/stable/