PWNCATは爆発後のプラットフォームですLinuxターゲット用。それは、基本的なバインドとリバースシェルの周りのラッパーとして始まり、そこから成長しました。ターゲットではなく、攻撃者マシンからコードをステージングしながら、一般的な赤チームの操作を合理化します。
PWNCATは以前はLinuxのみをサポートしていましたが、最近、複数のプラットフォームをサポートするための多くの作業がありました。現在、WindowsターゲットにはAlphaサポートがあります。 WindowsターゲットでPWNCATを使用する方法の詳細については、最新のドキュメントをご覧ください。
PWNCATは、リモートシェルとの生の通信をインターセプトし、ユーザーが列挙、インプラントの設置、さらには特権エスカレーションなど、リモートホストで自動化されたアクションを実行できるようにします。
接続を受信した後、PWNCATはリモートシェルを使用するための一般的な構成をセットアップします。
whichを使用)pwncat 、いくつかの異なる方法でPTYをスポーンする方法を知っており、実行可能ファイルが以前に列挙されていたメソッドを相互参照します。 PTYを産んだ後、RAWモードで制御端子をセットアップするため、 sshと同様の方法で対話できます。
pwncat 、リモートPTY設定(行、列、 TERM環境変数など)をローカル設定と同期して、 vimやnanoなどのインタラクティブなアプリケーションでシェルが正しく動作するようにします。
ジョン・ハモンドと私はグリムコンでpwncat発表しました。ここでYouTubeで見つけることができます。このビデオは、APIとインターフェイスの初期バージョンを示しています。最新の使用法とAPIドキュメントについては、ドキュメントを参照してください!
PWNCATドキュメントは、ドキュメントの読み取りに基づいて構築されています。最新の使用と開発のドキュメントに向かいましょう!
PWNCATには、LinuxでPython 3.9+が必要です
pwncat 、Linuxで実行されている作業Python開発環境にのみ依存します。 pipに必要なパッケージの一部をインストールするには、ディストリビューションの「Python開発」パッケージが必要になる可能性があります。 Debianベースのシステムでは、これはpython-devです。アーチの場合、開発ファイルにはメインのPythonリポジトリが付属されています。 Enterprise Linuxの場合、パッケージはpython-develという名前です。
pwncatはpwncat-csという名前でPypiにプッシュされ、次のようにpipでインストールできます。
pip install pwncat-csただし、仮想環境からPWNCATをインストールすることをお勧めします。
python3 -m venv pwncat-env
source pwncat-env/bin/activate
pip install pwncat-cs開発環境の場合、 pwncat使用Python Poetry。リポジトリをローカルにクローンし、詩を使用して開発環境をセットアップできます。
# Setup pwncat inside a poetry-managed virtual environment
git clone [email protected]:calebstewart/pwncat.git
cd pwncat
poetry install
# Enter the virtual environment
poetry shellCytopiaのPWNCATとの命名の競合により、私はパッケージをpwncat-csに変更することにしました。これには、Cytopiaのプロジェクトとの直接的な対立がないように、エントリポイントの名前を変更することが含まれます。 v0.4.*から更新している場合、コマンド名が変更され、 pcatとpc VarianSTが削除されます。詳細については、最新のリリースノートを参照してください。
この動きの追加の利点は、プロジェクトが将来のインストール/更新を容易にするためにPypiにプッシュされることです。
pwncat 、 v0.4.0a1から始まるWindowsターゲットからの接続をサポートするようになりました。 Windowsプラットフォームは、自動的にロードされる.NETベースのC2ライブラリを使用しています。 Windowsのターゲットは、 cmd.exeまたはpowershell.exeシェルのいずれかに接続する必要があり、PWNCATは残りを処理します。
C2を実装するライブラリは、PWNCAT-Windows-C2で実装されます。 C2のDLLは、ターゲットリリースから自動的にダウンロードされます。ターゲットマシンにインターネット接続がない場合は、PWNCATに、 --download-plugins引数を使用してDLLを事前にステージするように指示できます。 PWNCATのリリースバージョンを実行している場合は、リリースページからすべての内蔵プラグインのターボールをダウンロードすることもできます。
プラグインは~/.local/share/pwncatでデフォルトで保存されますが、これはplugin_path構成で構成可能です。 [リリース]ページからプラグインのパッケージセットをダウンロードする場合は、 plugin_pathで指されたパスに抽出する必要があります。
メインのC2DLLは別として、他のプラグインも利用できる場合があります。現在、提供されている唯一のデフォルトプラグインは、C2とBadpotatoの実装です。 PWNCATは、C2のプラグインを使用するために、.NETバイナリを反射的にロードできます。 Windows C2プラグインの詳細については、ドキュメントを参照してください。
最近、PWNCATフレームワークのアーキテクチャが再設計され、一般的な「モジュール」構造が組み込まれました。現在、すべての機能がモジュールとして実装されています。これには、列挙、持続性、特権エスカレーションが含まれます。モジュールとの対話は、他のほとんどの爆発後プラットフォームに似ています。馴染みのあるrun 、 search 、 infoコマンドを利用して、 useコマンドを使用してモジュールコンテキストを入力できます。詳細については、ドキュメントを参照してください。
Blackarchへのインストールは、次のように簡単です。
pacman -Syu pwncat-calebPWNCATのコマンドラインパラメーターは、柔軟性があり、さまざまな共通接続構文を受け入れようとします。具体的には、一般的なNetCatとSSHのような構文を受け入れようとします。以下はすべて有効です:
# Connect to a bind shell
pwncat-cs connect://10.10.10.10:4444
pwncat-cs 10.10.10.10:4444
pwncat-cs 10.10.10.10 4444
# Listen for reverse shell
pwncat-cs bind://0.0.0.0:4444
pwncat-cs 0.0.0.0:4444
pwncat-cs :4444
pwncat-cs -lp 4444
# Connect via ssh
pwncat-cs ssh://user:[email protected]
pwncat-cs [email protected]
pwncat-cs user:[email protected]
pwncat-cs -i id_rsa [email protected]
# SSH w/ non-standard port
pwncat-cs -p 2222 [email protected]
pwncat-cs [email protected]:2222
# Reconnect utilizing installed persistence
# If reconnection fails and no protocol is specified,
# SSH is used as a fallback.
pwncat-cs reconnect://[email protected]
pwncat-cs reconnect://user@c228fc49e515628a0c13bdc4759a12bf
pwncat-cs [email protected]
pwncat-cs c228fc49e515628a0c13bdc4759a12bf
pwncat-cs 10.10.10.10デフォルトでは、PWNCATはターゲットプラットフォームがLinuxであると想定しています。 Windowsのリバースまたはバインドシェルに接続するには、 --platform/-m引数を渡す必要があります。
pwncat-cs -m windows 10.10.10.10 4444
pwncat-cs -m windows -lp 4444構文と引数の処理の詳細については、 pwncat-cs --helpまたはドキュメントにアクセスしてください。
推奨されるインストール方法は、Python仮想環境です。これにより、 pwncatの最も簡単な日々の使用が提供されます。ただし、Docker画像からpwncat使用することに興味があるため、動作するpwncatインストールを提供するDockerFileを提供しました。画像を構築するには:
docker build -t pwncat .これにより、タグ「pwncat」でpwncat docker画像が構築されます。コンテナ内の作業ディレクトリは/workです。コンテナのエントリポイントはpwncatバイナリです。そのように使用できます:
# Connect to a bind shell at 10.0.0.1:4444
docker run -v " /some/directory " :/work -t pwncat 10.0.0.1 4444この例では、 /some/directory内のファイルのみがコンテナに公開されます。明らかに、アップロード/ダウンロードのために、コンテナはマウントされたディレクトリを介して公開されているファイルのみを見ることができます。
pwncat 2つの主要な機能を提供します。コアでは、完全なSSHセッションのようにリモートホストとの相互作用を可能にするリモート擬似皮質(PTY)を自動的にセットアップすることです。 PTYで操作する場合、履歴、ライン編集、グラフィカルターミナルアプリケーションなど、リモートシェルの一般的な機能を使用できます。
pwncatの残りの半分は、リモートシェルを利用して自動列挙、永続性、特権エスカレーションタスクを実行するフレームワークです。ローカルpwncatプロンプトは、以下を含む標準侵入テストに多くの有用な機能を提供します。
pwncat 、これらのリモートの「タンパー」を自動的に戻す機能も提供しますリモートホストと対話するための基礎となるフレームワークは、基礎となるシェルと接続の方法を可能な限り抽象化することを目的としており、コマンドとプラグインがリモートホストとシームレスに対話できるようにします。
pwncatとのやり取りや、ドキュメントの根本的なフレームワークについて詳しく知ることができます。新しい特権エスカレーション方法または永続性方法のアイデアがある場合は、具体的にAPIドキュメントをご覧ください。プルリクエストは大歓迎です!
PWNCATは、スイスの赤いチームナイフになりたいと思っています。うまくいけば、その他の機能が追加されることを願っています。
pwncat 、最小限のリモートシステム依存関係を使用して、あらゆるシェルと抽象的に対話しようとしているため、発見したエッジケースがいくつかあります。私たちがそれらを見つけたところでは、私たちはそれらを説明し、ユーザーからそれらを隠すためにできる限りのことをします。しかし、いくつかは亀裂を滑り込ませ、野生で観察されました。これが起こると、 pwncat端末を保持するためにできる限りのことをしますが、いくつかの独特の出力またはコマンドの障害で迎えられるかもしれません。
BSDはUNIXベースのカーネルですが、実際にはユーザーランドツールはLinuxのカウンターパートと著しく異なります。このため、 pwncatの自動化された機能の多くは、BSDベースのターゲットに対して実行するときに機能したり、完全に失敗したりしません。私はすべてのエラーまたはエッジケースをキャッチしようとしましたが、BSDに対して完全にテストされていないしゃっくりがある可能性があります。いずれにせよ、安定したシェルはBSD環境内で機能するはずですが、保証は提供しません。
しばらくして路上で見つけた場合、BSDのpwncat安定させようとするかもしれませんが、今のところはLinuxベースの分布に焦点を当てています。 pwncat BSDでより良くすることに貢献したい場合は、レポを手に入れるか、ただフォークすることができます。いつものように、プルリクエストは大歓迎です!