PWNCAT是一個爆炸後平台對於Linux目標。它最初是在基本綁定和反向外殼周圍的包裝紙開始,並從那裡生長。它簡化了從攻擊者機器而不是目標的代碼時簡化常見的紅色團隊操作。
PWNCAT曾經僅支持Linux,但是最近有很多工作來支持多個平台。當前,對Windows目標有Alpha支持。請參閱最新文檔,以獲取有關如何與Windows目標使用PWNCAT的詳細信息。
PWNCAT用遠程外殼攔截原始通信,並允許用戶在遠程主機上執行自動操作,包括枚舉,植入安裝甚至特權升級。
接收連接後,PWNCAT將設置一些常見的配置,以使用遠程外殼。
which ) pwncat知道如何使用幾種不同的方法產生PTY,並將將方法與先前列舉的可執行文件交叉引用。產卵PTY後,它將以原始模式設置控制終端,因此您可以以與ssh相似的方式進行交互。
pwncat還將與您的本地設置同步遠程PTY設置(例如行,列, TERM環境變量),以確保Shell與vim或nano等交互式應用程序正確行為。
約翰·哈蒙德(John Hammond)和我在格林康(Grimmcon)介紹了pwncat 。我們的演示文稿,可以在YouTube上找到。該視頻展示了API和接口的早期版本。請參閱文檔以獲取最新的使用和API文檔!
PWNCAT文檔正在閱讀文檔上。前往那裡獲取最新的用法和開發文檔!
pwncat在Linux上需要Python 3.9+
pwncat僅取決於在Linux上運行的Python開發環境。為了安裝pip所需的一些軟件包,您可能需要發行版的“ Python開發”軟件包。在基於Debian的系統上,這是python-dev 。對於ARCH,開發文件是用主要的Python存儲庫來運送的。對於Enterprise Linux,該軟件包被命名為python-devel 。
pwncat以pwncat-cs的名稱將PWNCAT推向PYPI,並且可以與pip一起安裝:
pip install pwncat-cs但是,建議從虛擬環境中安裝PWNCAT。
python3 -m venv pwncat-env
source pwncat-env/bin/activate
pip install pwncat-cs對於開發環境, pwncat使用Python詩歌。您可以在本地克隆存儲庫,並使用詩歌來設置開發環境。
# Setup pwncat inside a poetry-managed virtual environment
git clone [email protected]:calebstewart/pwncat.git
cd pwncat
poetry install
# Enter the virtual environment
poetry shell由於與Cytopia的pwncat發生了命名衝突,我決定將該包裝命名為pwncat-cs 。這包括重命名入口點,因此與Cytopia的項目沒有直接衝突。如果您正在從v0.4.*更新,則命令名稱現在將更改,並且pcat和pc VARIANST已刪除。有關更多詳細信息,請參見最新發行說明。
此舉的額外好處是,現在將項目推向PYPI,以便將來更輕鬆地安裝/更新。
pwncat現在支持從v0.4.0a1開始的Windows目標的連接。 Windows平台使用了一個基於.NET的C2庫,該庫是自動加載的。 Windows目標應與cmd.exe或powershell.exe shell連接,並且PWNCAT將負責其餘的。
實施C2的庫是在Pwncat-Windows-C2上實現的。 C2的DLL將自動從目標版本中為您下載。如果您的目標計算機上沒有Internet連接性,則可以告訴PWNCAT使用--download-plugins參數前階段DLL。如果您正在運行PWNCAT版本版本,則還可以從“版本”頁面下載所有內置插件的粉末。
該插件默認存儲在~/.local/share/pwncat中,但是可以使用plugin_path配置配置。如果您從“發行版”頁面下載包裝的插件集,則應將其提取到plugin_path指向的路徑。
除了主要的C2 DLL外,還可以提供其他插件。當前,唯一提供的默認插件是C2和BadPotato的實現。 PWNCAT可以反射加載.NET二進製文件用於C2的插件。有關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反向或綁定Shell,您必須傳遞--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提供了兩個主要功能。它的核心目標是自動設置遠程偽t(pty),該遠程偽電位(PTY)允許與遠程主機進行交互,就像完整的SSH會話一樣。在PTY操作時,您可以使用遠程外殼的常見功能,例如歷史記錄,線路編輯和圖形終端應用程序。
pwncat的另一半是一個框架,它利用您的遠程外殼執行自動枚舉,持久性和特權升級任務。本地pwncat提示為標準滲透測試提供了許多有用的功能,包括:
pwncat還提供了自動恢復這些遙控“ ander”的能力與遠程主機進行交互的基礎框架旨在盡可能地抽象基礎外殼和連接方法,從而允許命令和插件與遠程主機無縫交互。
您可以了解有關與pwncat互動以及文檔中的基礎框架的更多信息。如果您有新的特權升級方法或持久方法的想法,請專門查看API文檔。歡迎拉動請求!
PWNCAT希望成為一支紅隊瑞士軍刀。希望很快,將添加更多功能。
由於pwncat試圖與任何具有最小遠程系統依賴性的外殼進行抽象的交互,因此我們發現了一些邊緣情況。在找到它們的地方,我們可以竭盡所能來解釋它們並將其隱藏在用戶中。但是,有些已經滑過裂縫,並在野外觀察到。發生這種情況時, pwncat將竭盡所能保留您的終端,但是您可能會受到一些特殊的輸出或命令失敗的歡迎。
雖然BSD是基於UNIX的內核,但實際上,它的Userland工具與Linux同行截然不同。因此, pwncat的許多自動化功能在反對基於BSD的目標時無法使用或完全失敗。我試圖捕獲所有錯誤或邊緣案例,但是可能有一些打ic,這些打ic尚未對BSD進行全面測試。無論如何,穩定的外殼應在BSD環境中起作用,但我不提供任何保證。
如果我稍後發現一些時間,我可能會嘗試穩定BSD上的pwncat ,但現在我的重點是基於Linux的發行版。如果您想為使pwncat在BSD上表現得更好,那麼您會更歡迎您伸出手或僅分配存儲庫。與往常一樣,歡迎拉動請求!