Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
SharpFtpC2 — Упрощенный канал управления и контроля на основе FTP для соединения удаленных систем. | Kitploit
Инструменты/GitHubGitHub/darkcodersc/sharpftpc2
Инструменты шифрования/дешифрованияКомандование и УправлениеОбучение и ОбразованиеRed TeamingРазработка Полезной НагрузкиСостязательная Атака
GitHubdarkcodersc/sharpftpc2

SharpFtpC2

Упрощенный канал управления и контроля на основе FTP для соединения удаленных систем.

Репозиторий
90182 лет назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

SharpFtpC2 (PoC)



SharpFtpC2 — это небольшой экспериментальный проект, направленный на исследование возможности использования FTP(S) для ретрансляции команд и ответов между двумя удалёнными компьютерами. Он использует протокол FTP в качестве импровизированного туннеля, через который компьютеры, выступающие в роли клиентов, подключённых к FTP-серверу, могут обмениваться данными. Для отслеживания обмена запросами и ответами применяется простая схема управления сеансами.

SharpFtpC2 использует базовую систему управления сеансами. Хотя она довольно элементарна, она служит цели синхронизации и соотнесения сообщений, что необходимо для двусторонней связи между удалёнными системами.

Стоит отметить, что этот проект можно без труда портировать, используя системы контроля версий, такие как git, svn или аналогичные протоколы.

Если вас интересуют тонкости сетевого взаимодействия или вы просто хотите поэкспериментировать с C# и .NET Core, SharpFtpC2 может стать интригующей отправной точкой. Не ждите отполированного драгоценного камня, но, возможно, вы узнаете что-то интересное, возясь с ним.

SharpFtpC2 — это экспериментальный проект, созданный в образовательных целях для исследования использования FTP(S) в качестве канала связи между двумя удалёнными компьютерами. Важно понимать, что проект задуман как учебный ресурс для людей, интересующихся сетевым взаимодействием, C#, симуляцией противника, Red Team и вредоносным ПО. Как создатель, я настоятельно прошу не отправлять запросы на добавление новых функций и не использовать этот проект для каких-либо форм оружия или вредоносных целей. Основное намерение — образовательное, и пользователи должны взаимодействовать с содержимым ответственно и этично.


История проекта

SharpFtpC2 родился из желания внести вклад в проект Unprotect, особенно в его категорию Network Evasion.

Идея использования FTP в качестве «туннеля» имеет глубокие корни. На самом деле, она вызывает приятные воспоминания примерно с 2005 года, когда я ещё только начинал осваивать программирование. Тогда я познакомился с невероятно креативным французом, который работал под псевдонимом BlasterWar. Он придумал проект под названием BlasterX, который, хотя и канул в лету, был довольно авангардным для своего времени.

Гениальность BlasterWar в его проекте заключалась в том, чтобы предложить альтернативу традиционному обратному соединению, когда агенту необходимо установить соединение с управляющим или взламывающим устройством.

Вместо этого BlasterWar решил использовать FTP (File Transfer Protocol) в качестве альтернативного носителя и построил вокруг этого полноценный инструмент удалённого доступа. Инструмент включал такие функции, как захват экрана, кейлоггинг и управление системой, передаваемые через FTP-туннель. В то время FTP был очень популярен, и множество сайтов предлагали бесплатные FTP-серверы для всех желающих. Это делало его идеальной альтернативой обратным или прямым соединениям, которые требовали проброса портов. Кроме того, это обеспечивало дополнительный уровень маскировки для командного центра (C2), так как IP-адрес машины хакера не раскрывался напрямую.

Сегодня использование FTP в качестве туннеля не является новой концепцией, так как некоторые фреймворки для управления и контроля (C2) приняли этот протокол. Однако использование FTP таким образом сопряжено с рисками. В частности, передача учётных данных в открытом виде по сети, а также необходимость для обеих сторон иметь эти учётные данные, делает его уязвимым для множества атак. Хотя FTP-серверы добились определённого прогресса в решении этих проблем безопасности, всё чаще внедряя FTPS, который использует шифрование SSL/TLS, это не стало панацеей от всех присущих рисков.

Проявив немного изобретательности и черпая вдохновение из существующих протоколов, можно преодолеть значительную часть существующих рисков.

Попробуйте

Для компиляции этого проекта вам понадобятся два компонента: Visual Studio и зависимость для контроллера под названием CommandLineUtils.

Поскольку этот проект использует .NET Core, его можно легко скомпилировать для различных платформ без необходимости изменения кода. Однако вам может потребоваться реализовать определённые функции, характерные для целевой платформы.

Чтобы быстро начать тестирование этого проекта, я рекомендую использовать Docker с образом stilliard/pure-ftpd. Этот образ поддерживает множество опций, позволяя вам легко и быстро настроить собственный FTP-сервер.

docker pull stilliard/pure-ftpd

Без TLS

docker run -d --name ftpd_server -p 21:21 -p 30000-30009:30000-30009 -e "PUBLICHOST: 127.0.0.1" -e "ADDED_FLAGS=-E -A -X -x" -e FTP_USER_NAME=dark -e FTP_USER_PASS=toor -e FTP_USER_HOME=/home/dark stilliard/pure-ftpd

С TLS (рекомендуется)

docker run -d --name ftpd_server -p 21:21 -p 30000-30009:30000-30009 -e "PUBLICHOST: 127.0.0.1" -e "ADDED_FLAGS=-E -A -X -x --tls=2" -e FTP_USER_NAME=dark -e FTP_USER_PASS=toor -e FTP_USER_HOME=/home/dark -e "TLS_CN=localhost" -e "TLS_ORG=maislaf" -e "TLS_C=FR" stilliard/pure-ftpd

Не стесняйтесь настраивать параметры по своему усмотрению. Однако я настоятельно рекомендую не открывать этот тестовый FTP-сервер для локальных или общедоступных сетей. Разумнее ограничить доступ к этому контейнеру только вашей хост-машиной.

Опция ADDED_FLAGS позволяет точно настроить сервер pure-ftpd. Объяснения всех флагов можно найти здесь.

Некоторые флаги могут потребовать изменения работы протокола C2. Например, если вы используете опцию -K для сохранения всех файлов, возможность удаления файлов через FTP будет отключена. Поскольку текущий протокол C2 использует эту функцию, вам, возможно, придётся рассмотреть альтернативные подходы, такие как переименование или перемещение файлов.

Шифрование C2 (RSA + AES)

Для обеспечения целостности и конфиденциальности всех сообщений между агентами и C2 шифрование было бесшовно внедрено в протокол связи с использованием алгоритмов RSA и AES-GCM с длиной ключа 256 бит. Основная цель этой функции — предотвратить возможность передачи вредоносных команд скомпрометированным FTP-сервером. Благодаря шифрованию внедрение команд становится невозможным без доступа к открытому ключу агента. Аналогично нельзя подделать ответы агента без possession открытого ключа C2.

Чтобы упростить процесс генерации собственных пар ключей (одна пара для агента и одна для C2), я включил сторонний инструмент под названием RSAKeyHelper. Каждый раз при запуске приложения он будет показывать свежесгенерированную пару открытого и закрытого ключей, которые можно использовать в программе, если вы решите применить шифрование.

Banner Image

Чтобы убедиться, что всё работает как задумано, я также встроил в тот же инструмент функцию, позволяющую тестировать шифрование строк.

Banner Image

Поддерживаемые команды

  • Выполнить shell-команду и вывести ответ.
  • Завершить процесс агента.

Журнал изменений

9 июня 2023 — v1.0b

  • Первый выпуск.

16 июня 2023 — v1.0

  • Добавлена поддержка шифрования с использованием алгоритмов RSA и AES-GCM 256 бит для защиты целостности и конфиденциальности сообщений между агентами и сервером C2.

21 июня 2023 — v2.0

  • Оптимизация кода: кодовая база оптимизирована для повышения производительности.
  • Улучшение протокола: протокол связи улучшен и стал более модульным, что обеспечивает большую гибкость.
  • Поддержка разных пар ключей RSA: C2 и агенты теперь могут работать с разными парами ключей RSA, что позволяет им сосуществовать без конфликтов на одном FTP-сервере.
  • Реализация делегата проверки опасных действий: реализован делегат проверки, который запрашивает у пользователя подтверждение перед выполнением потенциально опасных действий.

23 июня 2023 — v3.0 Final

  • Исправлена ошибка выполнения shell-команд. Теперь все команды должны выполняться без зависания всего приложения.
  • Добавлена проверка версии протокола между командным центром (C2) и агентом(ами). При обнаружении несоответствия версий протокола агент будет игнорироваться C2.

Выпуск версии «3.0 Final» означает завершение этого проекта. Я не буду добавлять новые функции; цель этого PoC заключалась в демонстрации создания надёжного и безопасного C2 с использованием FTP(S). Вы можете разработать свою версию с необходимыми функциями. В качестве упражнения можно рассмотреть реализацию многопоточной обработки задач, чтобы предотвратить зависание приложения во время длительных операций.

Тем не менее, я продолжу оказывать поддержку проекта в плане устранения возможных ошибок или возможностей оптимизации.

Скриншоты

(Список агентов) Main

(Выполнение команды активному (контекстному) агенту) Command

(Окно отладки консоли агента с подтверждением опасного действия пользователем) Agent

Скачать инструмент