Что и почему?

Если вы не знали, C2 расшифровывается как Command and Control, о чем некоторые люди могут говорить часами, проще говоря — это говорит компьютерам, что делать. , будь то просто указание вашему компьютеру делать что-то без вас, или использование сотен скомпрометированных машин для выполнения ваших приказов.

Мне нравится разрабатывать материал C2, потому что это действительно очень интересно, когда вы смотрите на то, как люди пытаются скрыть свои связи с целевой машиной (машинами), потому что самая сложная часть Command and Control не разработка или доставка агента на цель , но сделать его скрытым.

Например, многие серверы C2 работают в основном на http/https, потому что с точки зрения трафика посещение веб-страницы время от времени выглядит намного более нормальным, чем компьютер, отправляющий текст туда и обратно на какой-то случайный внешний IP-адрес.

Некоторым преступникам, злоумышленникам, правительствам и тому подобным людям нравится очень творчески подходить к своей тактике, когда дело доходит до сложной разработки C2; но что делает C2 сложным? Конечно, это, вероятно, не будет поймано и постоянно останется вне поля зрения, но, в частности, все сводится к стеганографии.

Я думал о том, как некоторые злоумышленники дошли до того, что скрыли данные в изображениях при обмене информацией, и мне пришла в голову идея разработать C2-сервер, который распространяет инструкции/команды через изображения.

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

Операция: Шиба C2

Все любят собак. Если вы предпочитаете кошек, я понимаю, но не совсем. Плюс идеальная порода собак для этого? Сиба-ину! Любимый и популярный благодаря ранним интернет-мемам и шуткам. (они тоже очень милые)

Этот C2-сервер будет работать под HTTP-сервером, написанным на Python, как и агент. Системе C2 потребуются 4 основные функции:

Сервер: настройка задач для взломанных компьютеров

  • Получение фотографии сиба-ину
  • Прячущиеся задачи на фото сиба-ину
  • Предоставление фото на C2 Webserver

Агент: получение и выполнение задач

  • Проверка веб-сервера C2 время от времени
  • Загрузка фотографий сиба-ину
  • Поиск задач на фотографиях

Агент: отправка результатов задачи

  • Отправка результатов на веб-сервер C2

Сервер: получение результатов задачи

  • Получение данных отдельно от фотохостинга на веб-сервере

Постановка «Задач» для скомпрометированных машин

На сервере C2 я планирую разместить задачи (фото сиба-ину) на корневом веб-сервере, поэтому URL-адрес будет выглядеть примерно так: http://(ip):(port)/

Но как мы получим фотографии? Недавно я обнаружил отличный API, посвященный случайным фотографиям сиба-ину, который мы можем использовать.

Получение и выполнение задач

Как агенты для http/https C2-серверов обычно проверяют, есть ли у них какие-либо задачи, это ПОЛУЧЕНИЕ веб-страницы C2-веб-сервера с задержками между ними.

Учитывая, что мы используем фотографии здесь, я думаю, что решение должно заключаться в том, чтобы просто отображать фотографии отдельно, а не на полной веб-странице, поскольку внутри этой фотографии будет тайно содержаться секретная задача. А если задач нет, мы можем просто вернуть код типа 404 или 500.

Отправка результатов задачи

Если мы размещаем задачи/фотографии в корневом каталоге веб-сервера C2, нам потребуется, чтобы агент отправлял данные POST в другую часть веб-сайта, поэтому я думаю, будет уместно, чтобы агенты POST отправлялись на /dog-feedback, потому что клиент Удовлетворение является приоритетом номер один для сайтов обмена фотографиями сиба-ину.

В конце концов, я не заставлял клиента отправлять обратно данные, скрытые в изображениях сиба-ину, я просто заставил его отправлять обратно данные, закодированные в Base64. Это хорошая идея? Нет. Мне все равно? Нет. Но это хорошая идея, чтобы помнить об этом позже, когда мы будем рассматривать возможные улучшения.

Получение результатов задачи

Довольно просто; просто получите данные, отправленные на /dog-feedback, расшифруйте их с помощью Base64 и покажите в терминале.

ВАЖНО: помните, что при разработке веб-серверов C2, подобных этому, список задач ВСЕГДА обнуляется автоматически, когда вы получаете результат задачи, иначе вы можете получить цикл, когда клиент выполняет одно и то же снова и снова. практически без задержки, и ваш секретный имплантат превращается в обезьяну с тарелками столкновения.

Разработка сервера Shiba C2

Хотя я сделал все это на Python, вы можете использовать свой язык по выбору.

Во-первых, мне нужен способ получать изображения сиба-ину на лету, вот функция, которую я сделал с помощью requests и Shiba Inu API

Теперь мы можем получить фотографию сиба-ину, но как мы будем скрывать в ней наши данные? Поскольку я тупой, ленивый и неспособный, я просто решил добавить $DOGE$(task encoded in base64) в конец файлов. Справедливости ради скажу, что он ничем не выделяется на фоне остальных двоичных данных и не обязательно имеет какое-либо визуальное отличие.

Это также означает, что агенту будет очень легко декодировать сообщения:

Теперь нам нужны Задачи для размещения изображений. Хотя это, вероятно, не лучшая практика, для простоты у меня был файл с именем tasks.txt, в котором хранились команды для чтения.

Хорошо, мы можем сделать изображения с задачами в них, пора разместить их на http-сервере. Я использовал для этого Flask, потому что с ним очень просто добавлять маршруты и разрабатывать. Мне также нужно было добавить путь /dog-feedback для обработки агентом, отправляющим результаты задачи:

Хорошо, кажется, сервер готов! Давайте проверим это

tasks.txt: "whoami"

GET http://192.168.1.25:5678/

d2hvYW1p -base64-> whoami

Успех! Теперь пришло время разработать агента C2.

Разработка агента Shiba C2

Агент будет работать по циклу, и первая часть этого цикла — проверка веб-сервера C2 на наличие задач или, в нашем случае, фотографий сиба-ину.

Вторая часть цикла, если она есть, выполняет задачу.

И, наконец, отправка результата задачи на веб-сервер C2.

Теперь соберем их вместе, чтобы создать цикл, в котором будет работать агент:

Тестирование Шиба С2

Время для теста! Я буду тестировать задачу/команду whoami.

Я предполагаю или, по крайней мере, надеюсь, что:

Agent checks for tasks -> Server reads Task -> Server displays photo with task in it -> Agent finds task in photo -> Agent Does Task -> Agent Sends Task Results -> Server Displays Task Results

Но сейчас самое время для настоящего теста, я запущу сервер, а затем агент с whoami в tasks.txt.

Терминальные выходы (сервер/агент)

Интернет-трафик

Заключительные примечания

Хорошо, это сработало! Но есть еще улучшения, которые нужно сделать, прежде чем Operation Shiba C2 сможет захватить мир.

Полный Шиба Ину Коммуникации

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

Управление задачами

Как я упоминал ранее, сервер C2 хранит свои задачи в tasks.txt, но может быть лучше хранить задачи в памяти. Не только это, но в настоящее время функции чтения задач могут читать только одну задачу за раз, где некоторые серверы C2 могут просматривать список заданных задач и передавать их агенту.

HTTPS

Хотя мы использовали изображения симпатичных собак, чтобы скрыть наш вредоносный трафик, он все еще не зашифрован, что по сегодняшним меркам подозрительно именно из-за этого. К счастью, с Flask так же просто, как с помощью OpenSSL, превратить ваш HTTP-сервер в HTTPS-сервер, на котором весь трафик будет зашифрован.

Постановка задач

Конечно, это может выполнить команду в файле, но что, если нам нужен полный C2? Вместо того, чтобы просто помещать команды в файл, мы могли бы иметь живой ввод для установки задач, таких как оболочка. Это можно легко сделать, просто настроив сервер C2 как отдельный поток, что практически заставит его замолчать, пока ему не будет что сказать, что позволит нам вводить данные между сервером, сообщающим нам результаты задачи.

Конец

Мой сайт