Snoozy

1.Sleep-inducing; tedious.

PoshC2を使ってみる

PoshC2を使ってみる

PoshC2とは

Python3ベースのオープンソースなC2フレームワークPoshC2を使ってみる.

github.com

PoshC2は次のような特徴を持つ.

  • ビーコン,強制終了日,ユーザー情報など高度にカスタマイズされたペイロードの作成とターゲットへのロード
  • C2プロキシ用にカスタマイズされたApacheサーバー
  • C#PowerShell,Python3などの選択可能なインプラント
  • PoshC2を介したすべてのユーザー操作のロギング
  • Docker利用による信頼性の高いクロスプラットフォーム

なおPoshC2はいくつかバージョンがあり,以下にそれぞれをまとめておく.

詳細についてはリポジトリのオーナーであるNetitudeのブログにて,PoshC2のバージョン情報が詳しく述べられている.

また各種インプラントの使用方法や実装について解説しており,ドキュメントと合わせて目を通しておくとよいだろう.

NettitudeによるPoshC2解説記事 labs.nettitude.com

公式ドキュメント poshc2.readthedocs.io

ここでは,Python3で書かれた最新のPoshC2を使用し,ターゲット端末のスクリーンショットを取得してみる.

PoshC2のインストール

KaliにPoshC2をインストールしてみる.

curlbashを使って簡単に環境構築できる.

curl -sSL https://raw.githubusercontent.com/nettitude/PoshC2/master/Install.sh | sudo bash

posh-configコマンドで,PoshC2サーバーの設定を変更できる.

適当に調整したのはBindIP,PayloadCommsHostの2点.

f:id:snoozekvn:20200423133442j:plain

PoshC2の使用

PoshC2はその使用にあたって2つの端末を使用する.

それぞれ立ち上げてみる.

posh-serviceコマンドでPoshC2サーバーが起動する.

f:id:snoozekvn:20200423133447j:plain

その後,poshコマンドで立ち上がるインプラント操作用端末からターゲットを操作することになる.

f:id:snoozekvn:20200423133451j:plain

なお,poshコマンドで求められるユーザー名はログ用のものであり任意なユーザー名を使用可能.

インプラントハンドラの使用

poshコマンド実行後,アクティブなインプラントのリストが画面上部に表示される.

f:id:snoozekvn:20200423133455j:plain

インプラント番号を入力することで,特定インプラントへコマンドを送ることができる.

また,helpコマンドを発行することで現在使用可能なコマンドやモジュールのリストが表示される.

f:id:snoozekvn:20200423133459j:plain

ターゲットホストのスクリーンショットを取得してみる

ターゲット端末のスクリーンショットを取得してみる.

適当なStagerをターゲット端末で実行し,サーバーとのコネクションを確立する.

f:id:snoozekvn:20200423133504j:plain

インプラントハンドラからget-screenshotコマンドを発行.

f:id:snoozekvn:20200423133438j:plain

サーバー側のログにダウンロード先のフォルダが表示されるので見てみるとpngが保存されたパスが表示される.

f:id:snoozekvn:20200423133512j:plain

確かにスクリーンショットが取得できた.

以上.

参考

https://readthedocs.org/projects/poshc2/downloads/pdf/stable/