PWNCAT เป็นแพลตฟอร์มโพสต์การสำรวจ สำหรับเป้าหมาย Linux - มันเริ่มต้นจากการเป็นเสื้อคลุมรอบ ๆ การผูกพื้นฐานและเปลือกหอยย้อนกลับและเติบโตขึ้นจากที่นั่น มันปรับปรุงการดำเนินงานของทีมสีแดงทั่วไปในขณะที่การจัดเตรียมรหัสจากเครื่องโจมตีของคุณไม่ใช่เป้าหมาย
PWNCAT เคยรองรับ Linux เท่านั้น แต่เมื่อไม่นานมานี้มีงานมากมายเพื่อรองรับหลายแพลตฟอร์ม ปัจจุบันมีการรองรับอัลฟ่าสำหรับเป้าหมาย Windows โปรดดูเอกสารล่าสุดสำหรับรายละเอียดเกี่ยวกับวิธีการใช้ PWNCAT กับเป้าหมาย Windows
PWNCAT สกัดกั้นการสื่อสารแบบดิบกับเชลล์ระยะไกลและช่วยให้ผู้ใช้สามารถดำเนินการอัตโนมัติบนโฮสต์ระยะไกลรวมถึงการแจงนับการติดตั้งรากฟันเทียมและแม้กระทั่งการเพิ่มสิทธิพิเศษ
หลังจากได้รับการเชื่อมต่อ PWNCAT จะตั้งค่าการกำหนดค่าทั่วไปบางอย่างสำหรับการทำงานกับเชลล์ระยะไกล
which ) pwncat รู้วิธีการวางไข่ของ Pty ด้วยวิธีการที่แตกต่างกันสองสามวิธีและจะอ้างอิงวิธีการด้วยวิธีการที่ระบุไว้ก่อนหน้านี้ หลังจากวางไข่ PTY มันจะตั้งค่าเทอร์มินัลควบคุมในโหมดดิบดังนั้นคุณสามารถโต้ตอบในลักษณะเดียวกันกับ ssh
pwncat จะซิงโครไนซ์การตั้งค่า PTY ระยะไกล (เช่นแถวคอลัมน์ตัวแปรสภาพแวดล้อม TERM ) กับการตั้งค่าในท้องถิ่นของคุณเพื่อให้แน่ใจว่าเชลล์ทำงานได้อย่างถูกต้องกับแอปพลิเคชันแบบโต้ตอบเช่น vim หรือ nano
John Hammond และฉันนำเสนอ pwncat ที่ Grimmcon การนำเสนอของเราซึ่งสามารถพบได้บน YouTube ที่นี่ วิดีโอนี้แสดงให้เห็นถึง API และอินเทอร์เฟซรุ่นแรก โปรดดูเอกสารสำหรับการใช้งานล่าสุดและเอกสาร API!
เอกสาร PWNCAT กำลังถูกสร้างขึ้นเมื่ออ่านเอกสาร มุ่งหน้าไปที่นั่นสำหรับเอกสารการใช้งานและการพัฒนาล่าสุด!
PWNCAT ต้องการ Python 3.9+ บน Linux
pwncat ขึ้นอยู่กับสภาพแวดล้อมการพัฒนา Python ที่ทำงานบน Linux ในการติดตั้งแพ็คเกจบางอย่างที่จำเป็นสำหรับ pip คุณอาจต้องใช้แพ็คเกจ "Python Development" ของการกระจายของคุณ ในระบบที่ใช้ Debian นี่คือ python-dev สำหรับ Arch ไฟล์การพัฒนาจะถูกส่งไปพร้อมกับที่เก็บ Python หลัก สำหรับ Enterprise Linux แพ็คเกจนี้มีชื่อว่า python-devel
pwncat ถูกส่งไปยัง PYPI ภายใต้ชื่อ pwncat-cs และสามารถติดตั้งได้ด้วย pip เช่น SO:
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 เนื่องจากความขัดแย้งในการตั้งชื่อกับ PWNCAT ของ Cytopia ฉันจึงตัดสินใจเปลี่ยนชื่อแพ็คเกจเป็น pwncat-cs ซึ่งรวมถึงการเปลี่ยนชื่อจุดเข้าใช้งานเพื่อให้ไม่มีความขัดแย้งโดยตรงกับโครงการของ Cytopia หากคุณกำลังอัปเดตจาก v0.4.* ชื่อคำสั่งจะเปลี่ยนไปแล้วและ pcat และ pc Varianst ถูกลบออก ดูบันทึกย่อล่าสุดสำหรับรายละเอียดเพิ่มเติม
ประโยชน์ที่เพิ่มขึ้นของการย้ายครั้งนี้คือตอนนี้โครงการถูกส่งไปยัง PYPI เพื่อการติดตั้ง/อัปเดตที่ง่ายขึ้นในอนาคต
ตอนนี้ pwncat รองรับการเชื่อมต่อจากเป้าหมาย Windows เริ่มต้นที่ v0.4.0a1 แพลตฟอร์ม Windows ใช้ไลบรารี C2 ที่ใช้. NET ซึ่งโหลดโดยอัตโนมัติ เป้าหมายของ Windows ควรเชื่อมต่อกับ cmd.exe หรือ powershell.exe shell และ PWNCAT จะดูแลส่วนที่เหลือ
ห้องสมุดที่ใช้งาน C2 ถูกนำไปใช้ที่ PWNCAT-Windows-C2 DLLs สำหรับ C2 จะถูกดาวน์โหลดโดยอัตโนมัติจากการเปิดตัวเป้าหมายสำหรับคุณ หากคุณไม่มีการเชื่อมต่ออินเทอร์เน็ตบนเครื่องเป้าหมายของคุณคุณสามารถบอก PWNCAT ให้ล่วงหน้า DLLs โดยใช้อาร์กิวเมนต์ --download-plugins หากคุณใช้งาน PWNCAT รุ่นรุ่นคุณสามารถดาวน์โหลด tarball ของปลั๊กอินในตัวทั้งหมดจากหน้ารุ่น
ปลั๊กอินจะถูกเก็บไว้ตามค่าเริ่มต้นใน ~/.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-calebพารามิเตอร์บรรทัดคำสั่งสำหรับ PWNCAT พยายามที่จะยืดหยุ่นและยอมรับไวยากรณ์การเชื่อมต่อทั่วไปที่หลากหลาย โดยเฉพาะอย่างยิ่งมันจะพยายามยอมรับ 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 reverse หรือ bind shell คุณต้องผ่านอาร์กิวเมนต์ --platform/-m :
pwncat-cs -m windows 10.10.10.10 4444
pwncat-cs -m windows -lp 4444 สำหรับข้อมูลเพิ่มเติมเกี่ยวกับไวยากรณ์และการจัดการอาร์กิวเมนต์ดูข้อมูลความช่วยเหลือด้วย pwncat-cs --help หรือเยี่ยมชมเอกสาร
วิธีการติดตั้งที่แนะนำคือสภาพแวดล้อมเสมือนจริงของ Python สิ่งนี้ให้การใช้งาน pwncat แบบวันต่อวันที่ง่ายที่สุด อย่างไรก็ตามมีความสนใจในการใช้ pwncat จากอิมเมจนักเทียบท่าดังนั้นฉันจึงได้จัดเตรียม DockerFile ซึ่งให้การติดตั้ง pwncat ที่ใช้งานได้ เพื่อสร้างการใช้ภาพ:
docker build -t pwncat . สิ่งนี้จะสร้างภาพนักเทียบท่า pwncat ด้วยแท็ก "PWNCAT" ไดเรกทอรีการทำงานภายในคอนเทนเนอร์คือ /work จุดเข้าใช้งานสำหรับคอนเทนเนอร์คือ pwncat Binary มันสามารถใช้ได้เช่น:
# 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 มีคุณสมบัติหลักสองประการ ที่นั่นเป็นแกนกลางเป้าหมายคือการตั้งค่า pseudoterminal ระยะไกล (PTY) โดยอัตโนมัติซึ่งช่วยให้สามารถโต้ตอบกับโฮสต์ระยะไกลได้เช่นเซสชัน SSH เต็มรูปแบบ เมื่อทำงานใน PTY คุณสามารถใช้คุณสมบัติทั่วไปของเชลล์ระยะไกลของคุณเช่นประวัติการแก้ไขสายและแอปพลิเคชันเทอร์มินัลกราฟิก
อีกครึ่งหนึ่งของ pwncat เป็นเฟรมเวิร์กที่ใช้เชลล์ระยะไกลของคุณเพื่อดำเนินการแจงนับอัตโนมัติการคงอยู่และการเพิ่มสิทธิ์ พรอมต์ pwncat ในพื้นที่มีคุณสมบัติที่มีประโยชน์มากมายสำหรับการทดสอบการเจาะมาตรฐานรวมถึง::
pwncat ยังเสนอความสามารถในการเปลี่ยน "tammers" ระยะไกลเหล่านี้โดยอัตโนมัติเฟรมเวิร์กพื้นฐานสำหรับการโต้ตอบกับโฮสต์ระยะไกลมีจุดมุ่งหมายเพื่อให้เป็นนามธรรมของเชลล์และวิธีการเชื่อมต่อพื้นฐานให้มากที่สุดเท่าที่จะเป็นไปได้ทำให้คำสั่งและปลั๊กอินสามารถโต้ตอบกับโฮสต์ระยะไกลได้อย่างราบรื่น
คุณสามารถเรียนรู้เพิ่มเติมเกี่ยวกับการโต้ตอบกับ pwncat และเกี่ยวกับกรอบการทำงานพื้นฐานในเอกสาร หากคุณมีความคิดสำหรับวิธีการเลื่อนระดับสิทธิพิเศษใหม่หรือวิธีการคงอยู่โปรดดูเอกสาร API โดยเฉพาะ ยินดีต้อนรับคำขอดึง!
PWNCAT อยากจะมาเป็นมีดกองทัพสวิสทีมสีแดง หวังว่าเร็ว ๆ นี้จะมีการเพิ่มคุณสมบัติเพิ่มเติม
เนื่องจาก pwncat พยายามโต้ตอบกับเปลือกหอยใด ๆ ที่มีการพึ่งพาระบบระยะไกลน้อยที่สุดจึงมีบางกรณีที่เราพบ ที่ที่เราพบพวกเขาเราทำทุกอย่างเท่าที่ทำได้เพื่อบัญชีสำหรับพวกเขาและซ่อนพวกเขาจากผู้ใช้ อย่างไรก็ตามบางคนลื่นไหลผ่านรอยแตกและถูกสังเกตในป่า เมื่อสิ่งนี้เกิดขึ้น pwncat จะทำทุกอย่างที่ทำได้เพื่อรักษาเทอร์มินัลของคุณ แต่คุณอาจได้รับการต้อนรับด้วยผลลัพธ์ที่แปลกประหลาดหรือความล้มเหลวของคำสั่ง
ในขณะที่ BSD เป็นเคอร์เนลที่ใช้ UNIX แต่ในทางปฏิบัติเครื่องมือ Userland นั้นแตกต่างจาก Linux คู่ของพวกเขาอย่างเห็นได้ชัด ด้วยเหตุนี้คุณสมบัติอัตโนมัติจำนวนมากของ pwncat จะไม่ทำงานหรือล้มเหลวทันทีเมื่อทำงานกับเป้าหมายที่ใช้ BSD ฉันพยายามจับข้อผิดพลาดหรือกรณีขอบทั้งหมด แต่มีแนวโน้มว่าอาการสะอึกบางตัวที่ยังไม่ได้ทดสอบอย่างเต็มที่กับ BSD ไม่ว่าในกรณีใดเชลล์ที่มีความเสถียรควรทำงานภายในสภาพแวดล้อม BSD แต่ฉันไม่ได้ให้การรับประกันใด ๆ
หากฉันพบเวลาในเวลาต่อมาฉันอาจพยายามทำให้ pwncat มีเสถียรภาพบน BSD แต่ตอนนี้ฉันมุ่งเน้นไปที่การแจกแจงแบบอิง Linux หากคุณต้องการมีส่วนร่วมในการทำให้ pwncat ทำงานได้ดีขึ้นใน BSD คุณจะได้รับการต้อนรับมากกว่าหรือแยกการซื้อคืน เช่นเคยยินดีต้อนรับคำขอดึง!