PWNCAT adalah platform pasca-eksploitasi untuk target Linux . Itu dimulai sebagai pembungkus di sekitar ikatan dasar dan membalikkan cangkang dan telah tumbuh dari sana. Ini merampingkan operasi tim merah umum saat mementaskan kode dari mesin penyerang Anda, bukan target.
PWNCAT dulu hanya mendukung Linux, tetapi ada banyak pekerjaan baru -baru ini untuk mendukung banyak platform. Saat ini, ada dukungan alpha untuk target Windows. Silakan lihat dokumentasi terbaru untuk detail tentang cara menggunakan PWNCAT dengan target Windows.
PWNCAT mencegat komunikasi mentah dengan shell jarak jauh dan memungkinkan pengguna untuk melakukan tindakan otomatis pada host jarak jauh termasuk enumerasi, instalasi implan dan bahkan eskalasi hak istimewa.
Setelah menerima koneksi, PWNCAT akan menyiapkan beberapa konfigurasi umum untuk bekerja dengan shell jarak jauh.
which ) pwncat tahu cara menelurkan Pty dengan beberapa metode yang berbeda dan akan referensi silang metode dengan executable yang sebelumnya disebutkan. Setelah melahirkan Pty, ia akan mengatur terminal pengendali dalam mode mentah, sehingga Anda dapat berinteraksi dengan cara yang mirip dengan ssh .
pwncat juga akan menyinkronkan pengaturan PTY jarak jauh (seperti baris, kolom, variabel lingkungan TERM ) dengan pengaturan lokal Anda untuk memastikan shell berperilaku dengan benar dengan aplikasi interaktif seperti vim atau nano .
John Hammond dan saya mempresentasikan pwncat di Grimmcon. Presentasi kami, yang dapat ditemukan di YouTube di sini. Video ini menunjukkan versi awal API dan antarmuka. Silakan merujuk ke dokumentasi untuk penggunaan terbaru dan dokumentasi API!
Dokumentasi PWNCAT sedang dibangun di Baca dokumen. Pergilah ke sana untuk dokumentasi penggunaan dan pengembangan terbaru!
pwncat membutuhkan python 3.9+ di linux
pwncat hanya tergantung pada lingkungan pengembangan Python yang bekerja di Linux. Untuk memasang beberapa paket yang diperlukan dengan pip , Anda mungkin akan memerlukan paket "Python Development" distribusi Anda. Pada sistem berbasis Debian, ini adalah python-dev . Untuk Arch, file pengembangan dikirimkan dengan repositori Python utama. Untuk Enterprise Linux, paket ini bernama python-devel .
pwncat didorong ke PYPI dengan nama pwncat-cs , dan dapat diinstal dengan pip seperti itu:
pip install pwncat-csNamun, disarankan untuk menginstal PWNCAT dari lingkungan virtual.
python3 -m venv pwncat-env
source pwncat-env/bin/activate
pip install pwncat-cs Untuk lingkungan pengembangan, pwncat menggunakan puisi Python. Anda dapat mengkloning repositori secara lokal dan menggunakan puisi untuk mengatur lingkungan pengembangan.
# 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 Karena konflik penamaan dengan PWNCAT Cytopia, saya telah memutuskan untuk mengganti nama paket ke pwncat-cs . Ini termasuk mengganti nama titik masuk sehingga tidak ada konflik langsung dengan proyek sitopia. Jika Anda memperbarui dari v0.4.* , Nama perintah sekarang akan berubah, dan pcat dan varian pc telah dihapus. Lihat catatan rilis terbaru untuk lebih jelasnya.
Manfaat tambahan dari langkah ini adalah bahwa proyek ini sekarang didorong ke PYPI untuk instalasi/pembaruan yang lebih mudah di masa mendatang.
pwncat sekarang mendukung koneksi dari target Windows mulai dari v0.4.0a1 . Platform Windows menggunakan perpustakaan C2 berbasis .net yang dimuat secara otomatis. Target Windows harus terhubung dengan cangkang cmd.exe atau powershell.exe , dan Pwncat akan mengurus sisanya.
Perpustakaan yang menerapkan C2 diimplementasikan di PWNCAT-Windows-C2. DLL untuk C2 akan diunduh secara otomatis dari rilis yang ditargetkan untuk Anda. Jika Anda tidak memiliki konektivitas internet pada mesin target Anda, Anda dapat memberi tahu PWNCAT untuk pra-tahap DLL menggunakan argumen --download-plugins . Jika Anda menjalankan versi rilis PWNCAT, Anda juga dapat mengunduh tarball dari semua plugin bawaan dari halaman rilis.
Plugin disimpan secara default di ~/.local/share/pwncat , namun ini dapat dikonfigurasi dengan konfigurasi plugin_path . Jika Anda mengunduh set plugin yang dikemas dari halaman rilis, Anda harus mengekstraknya ke jalur yang ditunjuk oleh plugin_path .
Selain DLL C2 utama, plugin lain mungkin juga tersedia. Saat ini, satu -satunya plugin default yang disediakan adalah C2 dan implementasi badpotato. PWNCAT dapat secara reflektif memuat .NET binari untuk digunakan plugin untuk C2. Untuk informasi lebih lanjut tentang plugin Windows C2, silakan lihat dokumentasinya.
Baru -baru ini, arsitektur kerangka PWNCAT didesain ulang untuk menggabungkan struktur "modul" generik. Semua fungsi sekarang diimplementasikan sebagai modul. Ini termasuk enumerasi, kegigihan dan eskalasi hak istimewa. Berinteraksi dengan modul mirip dengan kebanyakan platform pasca-eksploitasi lainnya. Anda dapat menggunakan perintah run , search , dan info yang sudah dikenal dan memasukkan konteks modul dengan perintah use . Lihat dokumentasi untuk informasi lebih lanjut.
Instalasi di Blackarch sesederhana:
pacman -Syu pwncat-calebParameter baris perintah untuk upaya PWNCAT menjadi fleksibel dan menerima berbagai sintaks koneksi umum. Secara khusus, ia akan mencoba menerima netcat umum dan ssh seperti sintaks. Semua berikut ini valid:
# 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 Secara default, PWNCAT mengasumsikan platform target adalah Linux . Untuk menghubungkan ke windows reverse atau mengikat shell, Anda harus melewati argumen --platform/-m :
pwncat-cs -m windows 10.10.10.10 4444
pwncat-cs -m windows -lp 4444 Untuk informasi lebih lanjut tentang sintaks dan penanganan argumen, lihat informasi bantuan dengan pwncat-cs --help atau kunjungi dokumentasi.
Metode instalasi yang disarankan adalah lingkungan virtual Python. Ini memberikan penggunaan pwncat sehari-hari termudah. Namun, ada minat untuk menggunakan pwncat dari gambar Docker, jadi saya telah menyediakan DockerFile yang menyediakan instalasi pwncat yang berfungsi. Untuk membangun gambar penggunaan:
docker build -t pwncat . Ini akan membangun gambar Docker pwncat dengan tag "pwncat". Direktori Kerja di dalam wadah IS /work . Titik pintu masuk untuk wadah adalah biner pwncat . Itu bisa digunakan seperti itu:
# Connect to a bind shell at 10.0.0.1:4444
docker run -v " /some/directory " :/work -t pwncat 10.0.0.1 4444 Dalam contoh ini, hanya file di /some/directory yang terpapar ke wadah. Jelas, untuk mengunggah/unduhan, wadah hanya akan dapat melihat file yang diekspos melalui direktori yang dipasang.
pwncat menyediakan dua fitur utama. Pada intinya, tujuannya adalah untuk secara otomatis mengatur pseudoterminal jarak jauh (PTY) yang memungkinkan interaksi dengan host jarak jauh seperti sesi SSH penuh. Saat beroperasi di PTY, Anda dapat menggunakan fitur umum dari shell jarak jauh Anda seperti riwayat, pengeditan garis, dan aplikasi terminal grafis.
Separuh pwncat lainnya adalah kerangka kerja yang memanfaatkan shell jarak jauh Anda untuk melakukan pencacahan otomatis, kegigihan dan tugas eskalasi hak istimewa. Prompt pwncat lokal menyediakan sejumlah fitur yang berguna untuk tes penetrasi standar termasuk:
pwncat juga menawarkan kemampuan untuk mengembalikan "Tampers" jarak jauh ini secara otomatisKerangka kerja yang mendasari untuk berinteraksi dengan host jarak jauh bertujuan untuk mengabstraksi metode shell dan koneksi yang mendasari sebanyak mungkin, memungkinkan perintah dan plugin untuk berinteraksi dengan mulus dengan host jarak jauh.
Anda dapat mempelajari lebih lanjut tentang berinteraksi dengan pwncat dan tentang kerangka kerja yang mendasari dalam dokumentasi. Jika Anda memiliki ide untuk metode eskalasi hak istimewa atau metode kegigihan baru, silakan lihat dokumentasi API secara khusus. Permintaan tarik dipersilakan!
Pwncat ingin menjadi pisau Tentara Merah Swiss. Semoga segera, lebih banyak fitur akan ditambahkan.
Karena pwncat mencoba berinteraksi secara abstrak dengan shell dengan dependensi sistem jarak jauh minimal, ada beberapa kasus tepi yang kami temukan. Di mana kami menemukannya, kami melakukan segala yang kami bisa untuk memperhitungkan mereka dan menyembunyikannya dari pengguna. Namun, beberapa telah tergelincir melalui retakan dan telah diamati di alam liar. Ketika ini terjadi, pwncat akan melakukan apa pun untuk melestarikan terminal Anda, tetapi Anda mungkin disambut dengan beberapa keluaran yang aneh atau kegagalan perintah.
Sementara BSD adalah kernel berbasis UNIX, dalam praktiknya alat Userland jelas berbeda dari rekan Linux mereka. Karena ini, banyak fitur otomatis pwncat tidak akan berfungsi atau benar -benar gagal saat berlari melawan target berbasis BSD. Saya telah mencoba menangkap semua kesalahan atau kasus tepi, namun ada kemungkinan beberapa cegukan yang belum sepenuhnya diuji terhadap BSD. Bagaimanapun, cangkang yang distabilkan harus berfungsi dalam lingkungan BSD, tetapi saya tidak memberikan jaminan apa pun.
Jika saya menemukan beberapa waktu kemudian, saya dapat mencoba menstabilkan pwncat pada BSD, tetapi untuk saat ini fokus saya adalah pada distribusi berbasis Linux. Jika Anda ingin berkontribusi untuk membuat pwncat berperilaku lebih baik di BSD, Anda lebih dipersilakan untuk menjangkau atau hanya membayar repo. Seperti biasa, permintaan tarik dipersilakan!