PWNCAT는 사후 탐사 플랫폼입니다 Linux 대상의 경우 . 기본 바인드 및 리버스 쉘 주변의 래퍼로 시작하여 거기에서 자랐습니다. 대상이 아닌 공격자 기계에서 코드를 준비하는 동안 일반적인 빨간 팀 운영을 간소화합니다.
PWNCAT는 Linux 만 지원하는 데 사용되었지만 최근 여러 플랫폼을 지원하기위한 많은 작업이있었습니다. 현재 Windows 대상에 대한 알파 지원이 있습니다. Windows 대상과 함께 pwncat을 사용하는 방법에 대한 자세한 내용은 최신 문서를 참조하십시오.
PWNCAT는 원격 쉘과의 원시 통신을 가로 채며 사용자는 열거, 임플란트 설치 및 권한 에스컬레이션을 포함한 원격 호스트에서 자동화 된 작업을 수행 할 수 있습니다.
연결을 수신 한 후 PWNCAT는 원격 쉘 작업을위한 일반적인 구성을 설정합니다.
which ) pwncat 몇 가지 다른 방법으로 Pty를 스폰하는 방법을 알고 있으며 이전에 실행 된 실행 가능성과 함께 방법을 교차 참조 할 것입니다. PTY를 산란 후에는 제어기 터미널을 원시 모드로 설정하므로 ssh 와 유사한 방식으로 상호 작용할 수 있습니다.
pwncat 또한 vim 또는 nano 와 같은 대화 형 애플리케이션으로 쉘이 올바르게 동작 할 수 있도록 원격 PTY 설정 (예 : 행, 열, TERM 환경 변수)을 로컬 설정과 동기화합니다.
John Hammond와 나는 Grimmcon에서 pwncat 발표했습니다. YouTube에서 찾을 수있는 프레젠테이션. 이 비디오는 API 및 인터페이스의 초기 버전을 보여줍니다. 최신 사용 및 API 문서는 문서를 참조하십시오!
PWNCAT 문서는 DOCS 읽기에 구축됩니다. 최신 사용 및 개발 문서를 찾으십시오!
PWNCAT는 Linux에서 Python 3.9+가 필요합니다
pwncat Linux에서 실행되는 작동중인 파이썬 개발 환경에만 의존합니다. pip 에 필요한 일부 패키지를 설치하려면 배포의 "Python Development"패키지가 필요할 수 있습니다. 데비안 기반 시스템에서는 python-dev 입니다. 아치의 경우 개발 파일에는 기본 파이썬 저장소가 제공됩니다. 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 shell Cytopia의 PWNCAT와의 명명 충돌로 인해 패키지의 이름을 pwncat-cs 로 바꾸기로 결정했습니다. 여기에는 Cytopia의 프로젝트와 직접적인 충돌이 없도록 EntryPoint의 이름을 바꾸는 것이 포함됩니다. 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은 대상 릴리스에서 자동으로 다운로드됩니다. 대상 컴퓨터에 인터넷 연결이없는 경우 PWNCAT에 --download-plugins 인수를 사용하여 DLL을 사전 단계로 알려줄 수 있습니다. PWNCAT의 릴리스 버전을 실행중인 경우 릴리스 페이지에서 모든 내장 플러그인의 타르볼을 다운로드 할 수도 있습니다.
플러그인은 기본적으로 ~/.local/share/pwncat 로 저장되지만 plugin_path 구성으로 구성 할 수 있습니다. 릴리스 페이지에서 패키지 된 플러그인 세트를 다운로드하면 plugin_path 가 가리키는 경로로 추출해야합니다.
주요 C2 DLL 외에도 다른 플러그인도 사용할 수 있습니다. 현재 제공되는 유일한 기본 플러그인은 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 의 도움말 정보를 참조하거나 문서를 방문하십시오.
권장 설치 방법은 파이썬 가상 환경입니다. 이것은 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 두 가지 주요 기능을 제공합니다. 그것은 핵심에서, 목표는 전체 SSH 세션과 같은 원격 호스트와의 상호 작용을 허용하는 원격 유사성 (PTY)을 자동으로 설정하는 것입니다. Pty에서 작동 할 때는 히스토리, 라인 편집 및 그래픽 터미널 응용 프로그램과 같은 원격 쉘의 일반적인 기능을 사용할 수 있습니다.
pwncat 의 나머지 절반은 원격 쉘을 사용하여 자동 열거, 지속성 및 권한 에스컬레이션 작업을 수행하는 프레임 워크입니다. 로컬 pwncat 프롬프트는 다음을 포함한 표준 침투 테스트에 여러 가지 유용한 기능을 제공합니다.
pwncat 또한 이러한 원격 "탬퍼"를 자동으로 되돌릴 수있는 기능을 제공합니다.원격 호스트와 상호 작용하기위한 기본 프레임 워크는 기본 쉘 및 연결 방법을 가능한 한 많이 추상화하여 명령 및 플러그인이 원격 호스트와 완벽하게 상호 작용할 수 있도록하는 것을 목표로합니다.
pwncat 와의 상호 작용 및 문서의 기본 프레임 워크에 대한 자세한 내용은 더 배울 수 있습니다. 새로운 권한 에스컬레이션 방법 또는 지속성 방법에 대한 아이디어가있는 경우 API 문서를 구체적으로 살펴보십시오. 풀 요청을 환영합니다!
PWNCAT는 레드 팀 스위스 육군 나이프가되기를 원합니다. 곧 더 많은 기능이 추가되기를 바랍니다.
pwncat 원격 시스템 의존성을 최소화하는 쉘과 추상적으로 상호 작용하려고 노력하고 있기 때문에 우리가 찾은 일부 모서리가 있습니다. 우리가 그들을 찾는 곳에서, 우리는 그들을 설명하고 사용자로부터 숨기기 위해 최선을 다합니다. 그러나 일부는 균열을 통해 미끄러 져 야생에서 관찰되었습니다. 이런 일이 발생하면 pwncat 터미널을 보존하기 위해 최선을 다하지만 독특한 출력 또는 명령 실패로 인사 할 수 있습니다.
BSD는 UNIX 기반 커널이지만 실제로는 사용자 랜드 도구가 Linux와 눈에 띄게 다릅니다. 이로 인해 pwncat 의 자동화 된 기능 중 다수는 BSD 기반 대상에 대해 실행할 때 작동하지 않거나 완전히 실패하지 않습니다. 나는 모든 오류 나 에지 케이스를 잡으려고 노력했지만 BSD에 대해 완전히 테스트되지 않은 딸꾹질이있을 수 있습니다. 어쨌든 안정화 된 쉘은 BSD 환경 내에서 작동해야하지만 보장을 제공하지 않습니다.
나중에 길을 따라 가면 BSD에서 pwncat 안정화 시키려고 노력할 수 있지만 지금은 Linux 기반 분포에 중점을 둡니다. pwncat BSD에서 더 잘 행동하게 만드는 데 기여하고 싶다면, 당신은 더 많은 것을 환영합니다. 항상 그렇듯이 풀 요청을 환영합니다!