
프록시 인식 C2 프레임워크로, 레드 팀원들의 사후 침투 및 수평 이동을 지원합니다.

PoshC2는 침투 테스터가 레드 팀, 사후 공격 및 수평 이동을 지원하는 데 사용되는 프록시 인식 C2 프레임워크입니다.
PoshC2는 주로 Python3로 작성되었으며 사용자가 자신의 모듈과 도구를 추가할 수 있도록 모듈 형식을 따르므로 확장 가능하고 유연한 C2 프레임워크를 제공합니다. 기본 제공되는 PoshC2는 PowerShell/C# 및 Python2/Python3 임플란트와 함께 PowerShell v2 및 v4, C++ 및 C# 소스 코드, 다양한 실행 파일, DLL 및 원시 셸코드로 작성된 페이로드와 Python2/Python3 페이로드를 제공합니다. 이를 통해 Windows, *nix 및 OSX를 포함한 다양한 장치 및 운영 체제에서 C2 기능을 사용할 수 있습니다.
PoshC2의 다른 주목할 만한 기능은 다음과 같습니다:
PoshC2 문서는 https://poshc2.readthedocs.io/en/latest/ 에서 유지관리합니다.
#Slack에서 찾으세요 - poshc2.slack.com (초대를 요청하려면 [email protected]으로 이메일을 보내주세요)
PoshC2를 직접 설치하거나 Docker 이미지를 사용할 수 있습니다. 두 가지 방법에 대한 지침은 아래에 있습니다.
PoshC2 설치를 위한 설치 스크립트가 제공됩니다:
*** PoshC2 Install script ***
Usage:
./Install.sh -b <git branch> -p <Directory to clone PoshC2 to>
Defaults are master branch to /opt/PoshC2
설치 스크립트가 apt 업데이트 및 설치를 수행하므로 관리자 권한이 필요합니다.
curl -sSL https://raw.githubusercontent.com/nettitude/PoshC2/master/Install.sh | sudo bash
또는 리포지토리를 클론하고 설치 스크립트를 수동으로 실행할 수 있습니다.
sudo ./Install.sh
-p 인수로 Install.sh 스크립트에 전달하여 PoshC2 설치 디렉토리를 수동으로 설정할 수 있습니다. 기본값은 /opt/PoshC2입니다:
curl -sSL https://raw.githubusercontent.com/nettitude/PoshC2/master/Install.sh | sudo bash -s -- -p /root/PoshC2
master 브랜치를 안정적으로 유지하여 사용자가 필요할 때 의존할 수 있도록 하고자 합니다. 이러한 이유로 변경 사항이 기능적으로 완전하더라도 완전히 테스트되고 승인되지 않아 master에 아직 반영되지 않은 경우가 많습니다.
PoshC2의 향후 기능을 살펴보려면 dev 브랜치 또는 dev에서 분기된 개별 기능 브랜치를 확인할 수 있습니다.
기능이 dev에 병합되기 전에 테스트되므로 이 브랜치는 여전히 상당히 안정적이어야 하며 운영자는 자신의 작업에 이 브랜치 또는 특정 기능 브랜치를 사용하도록 선택할 수 있습니다. 그러나 이는 새로운 기능을 위해 안정성을 희생하는 것이므로 신중하게 결정하십시오.
dev 또는 기능 브랜치를 사용하려면 브랜치 이름을 -b 인수로 Install.sh 스크립트에 전달하십시오:
curl -sSL https://raw.githubusercontent.com/nettitude/PoshC2/dev/Install.sh | sudo bash -s -- -b dev
URL에도 브랜치 이름이 포함되어 있습니다(여기서는 master 대신 dev).
Docker를 사용하여 PoshC2를 실행할 수도 있습니다. 이렇게 하면 더 안정적으로 실행할 수 있으며 PoshC2를 다른 운영 체제에서 쉽게 실행할 수 있습니다.
Docker 설치는 Docker Hub의 PoshC2 이미지를 사용하므로 PoshC2를 클론하지 않으며 일부 종속성 및 스크립트의 최소 설치만 수행됩니다.
먼저 호스트에 Docker를 설치한 다음 OS에 필요한 경우 PoshC2 프로젝트 디렉토리를 공유 디렉토리로 Docker에 추가합니다. 기본적으로 *nix에서는 /var/poshc2, Mac에서는 /private/var/poshc2입니다.
설치 스크립트:
*** PoshC2 Install script for Docker ***
Usage:
./Install-for-Docker.sh -b <git branch>
Default is the master branch
설치 스크립트가 스크립트 설치를 수행하므로 관리자 권한이 필요합니다.
curl -sSL https://raw.githubusercontent.com/nettitude/PoshC2/master/Install-for-Docker.sh | sudo bash
Docker에서 dev 또는 기능 브랜치를 사용하려면 적절한 브랜치에서 Install-for-Docker.sh를 컬(curl)로 다운로드하고 브랜치 이름을 인수로 전달하십시오:
curl -sSL https://raw.githubusercontent.com/nettitude/PoshC2/BRANCHNAME/Install-for-Docker.sh | sudo bash -s -- -b BRANCHNAME
Windows에서는 PoshC2.psm1 PowerShell 모듈을 가져옵니다.
Import-Module -DisableNameChecking C:\PoshC2\resources\scripts\PoshC2.psm1
posh-project -PoshC2Dir "C:\PoshC2" -LocalPoshC2ProjectDir "C:\PoshC2_Project" -Arg1 "-n" -Arg2 "newproject"
posh-config -PoshC2Dir "C:\PoshC2" -LocalPoshC2ProjectDir "C:\PoshC2_Project"
posh-server -PoshC2Dir "C:\PoshC2" -LocalPoshC2ProjectDir "C:\PoshC2_Project"
posh -PoshC2Dir "C:\PoshC2" -LocalPoshC2ProjectDir "C:\PoshC2_Project" username
새 프로젝트 만들기:
posh-project -n <project-name>
이 스크립트를 사용하여 프로젝트를 전환하거나 나열할 수 있습니다:
[*] Usage: posh-project -n <new-project-name>
[*] Usage: posh-project -s <project-to-switch-to>
[*] Usage: posh-project -l (lists projects)
[*] Usage: posh-project -d <project-to-delete>
[*] Usage: posh-project -c (shows current project)
프로젝트 구성을 편집합니다:
posh-config
PoshC2 서버를 시작합니다:
posh-server
또는 서비스로 시작합니다:
posh-service
별도로 임플란트와 상호 작용하기 위해 ImplantHandler를 실행합니다:
posh -u <username>
PoshC2에 대한 전체 문서는 https://poshc2.readthedocs.io/en/latest/ 를 참조하십시오.
Docker를 사용하는 경우 posh-server 및 posh에 -t 옵션으로 실행할 Docker 이미지 태그를 지정할 수 있습니다.
예:
posh-server -t latest
작업 중에 PoshC2를 업데이트하는 것은 권장되지 않습니다. 들어오는 변경 사항이 기존 프로젝트와 호환되지 않을 수 있으며 예기치 않은 동작을 초래할 수 있습니다.
git 클론 버전의 PoshC2를 사용하는 경우 다음 명령을 사용하여 PoshC2 설치를 업데이트할 수 있습니다:
*** PoshC2 Update Script ***
Usage:
posh-update -b <git branch>
Default is the master branch
적절한 태그를 참조하여 이전 버전의 PoshC2를 사용할 수 있습니다. 이는 리포지토리를 클론한 경우에만 작동합니다. 다음 명령을 실행하여 리포지토리의 태그를 나열할 수 있습니다:
git tag --list
PoshC2의 로컬 클론이 있는 경우 오프라인 상태에서 사용하려는 버전을 체크아웃하여 사용 중인 버전을 변경할 수 있습니다:
git reset --hard <tag name>
예:
git reset --hard v4.8
그러나 이렇게 하면 구성 파일 변경과 같은 파일의 로컬 변경 사항이 덮어쓰여지므로 해당 버전에 대한 설치 스크립트를 다시 실행하거나 환경을 적절히 다시 설정해야 할 수 있습니다.
이 소프트웨어는 승인된 테스트 활동에만 사용해야 하며 악의적인 용도로 사용해서는 안 됩니다.
이 소프트웨어를 다운로드하면 사용 약관 및 라이선스 계약에 동의하는 것입니다.