
C2-фреймворк с поддержкой прокси, используемый для помощи red team-специалистам в пост-эксплуатации и латеральном перемещении.

PoshC2 — это C2-фреймворк с поддержкой прокси, предназначенный для помощи специалистам по тестированию на проникновение в задачах красных команд, пост-эксплуатации и латерального перемещения.
PoshC2 в основном написан на Python3 и имеет модульную структуру, позволяющую пользователям добавлять собственные модули и инструменты, что делает его расширяемым и гибким C2-фреймворком. «Из коробки» PoshC2 включает импланты на PowerShell/C# и Python2/Python3, полезные нагрузки на PowerShell v2 и v4, исходный код C++ и C#, различные исполняемые файлы, DLL и сырой shellcode, а также полезную нагрузку на Python2/Python3. Это обеспечивает функциональность C2 на широком спектре устройств и операционных систем, включая Windows, *nix и OSX.
Другие примечательные особенности PoshC2 включают:
Мы поддерживаем документацию PoshC2 по адресу https://poshc2.readthedocs.io/en/latest/
Найдите нас в #Slack — poshc2.slack.com (для запроса приглашения отправьте письмо на [email protected])
Для установки 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
Вы можете вручную указать каталог установки PoshC2, передав его скрипту Install.sh в качестве аргумента -p. По умолчанию используется /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 или функциональную ветку, передайте имя ветки скрипту Install.sh в качестве аргумента -b:
curl -sSL https://raw.githubusercontent.com/nettitude/PoshC2/dev/Install.sh | sudo bash -s -- -b dev
Обратите внимание, что URL также содержит имя ветки (здесь dev вместо master).
Вы также можете запускать PoshC2 с помощью Docker; это обеспечивает более стабильную работу и позволяет PoshC2 легко запускаться на других операционных системах.
Установка Docker не клонирует PoshC2, поскольку используются образы PoshC2 на Docker Hub, поэтому выполняется только минимальная установка некоторых зависимостей и скриптов.
Для начала установите Docker на хост, а затем добавьте каталог проектов PoshC2 в Docker как общий каталог, если это требуется для вашей ОС. По умолчанию это /var/poshc2 на *nix и /private/var/poshc2 на Mac.
Скрипт установки:
*** 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
Чтобы использовать ветки dev или функциональные ветки с Docker, загрузите Install-for-Docker.sh с соответствующей ветки и передайте имя ветки в качестве аргумента:
curl -sSL https://raw.githubusercontent.com/nettitude/PoshC2/BRANCHNAME/Install-for-Docker.sh | sudo bash -s -- -b BRANCHNAME
В Windows импортируйте модуль PowerShell PoshC2.psm1.
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>
Смотрите https://poshc2.readthedocs.io/en/latest/ для полной документации по PoshC2.
Если вы используете Docker, вы можете указать тег образа Docker для запуска с помощью опции -t для posh-server и posh.
Например:
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
Однако учтите, что это перезапишет все локальные изменения файлов, например изменения конфигурационных файлов, и вам, возможно, придется повторно запустить скрипт установки для этой версии или соответствующим образом перенастроить окружение.
Данное программное обеспечение должно использоваться только для авторизованной тестовой деятельности, а не в злонамеренных целях.
Загружая данное программное обеспечение, вы принимаете условия использования и лицензионное соглашение.