
ShellSweeping зло.
Выметаем зловредные оболочки
«ShellSweep» — это инструмент на PowerShell/Python/Lua, предназначенный для обнаружения потенциальных веб-шеллов в указанном каталоге.
ShellSweep и его набор инструментов вычисляют энтропию содержимого файлов, чтобы оценить вероятность того, что файл является веб-шеллом. Высокая энтропия указывает на большую случайность, что характерно для зашифрованного или обфусцированного кода, часто встречающегося в веб-шеллах.
Энтропия в контексте теории информации или науки о данных — это мера непредсказуемости, случайности или беспорядка в наборе данных. Это понятие ввёл Клод Шеннон в своей статье 1948 года «Математическая теория связи».
Применительно к файлу или строке текста энтропия помогает оценить случайность данных. Вот как это работает: Если файл состоит из полностью случайных данных (каждый байт с одинаковой вероятностью может быть любым значением от 0 до 255), энтропия высокая, близкая к 8 (поскольку log2(256) = 8).
Если файл состоит из сильно структурированных данных (например, текстовый файл, где большинство байтов — ASCII-символы), энтропия ниже. В контексте поиска веб-шеллов или вредоносных файлов энтропия может быть полезным индикатором:
ShellSweep включает функцию Get-Entropy, которая вычисляет энтропию содержимого файла следующим образом:
ShellSweepX выводит основную функциональность ShellSweep на новый уровень, предлагая несколько преимуществ по сравнению с традиционными решениями EDR (Endpoint Detection and Response):
Специализированная направленность: В отличие от решений EDR, которые охватывают широкий спектр, ShellSweepX специально разработан для обнаружения веб-шеллов. Такая специализация позволяет более точно и эффективно выявлять именно эти угрозы.
Низкое потребление ресурсов: ShellSweepX лёгкий и не требует постоянных фоновых процессов или системного мониторинга, в отличие от многих решений EDR. Это означает меньшее влияние на производительность системы.
Настраиваемость и прозрачность: Открытый исходный код ShellSweepX обеспечивает полную прозрачность методов обнаружения. Вы можете легко настраивать и точно подстраивать параметры обнаружения под свою среду.
Отсутствие зависимости от внешних сервисов: ShellSweepX работает локально, не полагаясь на облачный анализ или постоянные обновления, что гарантирует, что ваши конфиденциальные данные остаются под вашим контролем.
Многоуровневое обнаружение: ShellSweepX использует различные методы обнаружения, включая анализ энтропии, сопоставление шаблонов и эвристический анализ, обеспечивая комплексный подход к обнаружению веб-шеллов.
Детальная отчётность: ShellSweepX предоставляет подробную информацию о потенциальных угрозах, включая значения энтропии, методы обнаружения и оценки уверенности, что позволяет принимать более обоснованные решения.
Кроссплатформенная совместимость: Благодаря версиям на PowerShell, Python и Lua ShellSweepX может быть развёрнут в различных средах.
Хотя ShellSweepX не является заменой полноценного решения EDR, он служит мощным специализированным инструментом в вашем арсенале безопасности, особенно в средах, где веб-шеллы представляют значительную угрозу.
| Функция/Аспект | ShellSweep | ShellSweepPlus | ShellSweepX |
|---|---|---|---|
| Обнаружение на основе базовых значений | Использует жёстко заданные значения энтропии для конкретных расширений файлов | Динамическое обнаружение на основе базовых значений, вычисляющее энтропию на лету | Использует комбинацию обнаружения на основе энтропии и прогнозирования с помощью машинного обучения |
| Расширения файлов | Обрабатывает файлы с расширениями: .asp, .aspx, .asax, .jspx, .html, .ashx | Обрабатывает файлы с расширениями: .asp, .ashx, .asax, .jspx, .html, .aspx | Настраиваемые расширения файлов через API |
| Вычисление энтропии | Вычисляет энтропию содержимого файла для обнаружения потенциальных веб-шеллов | Улучшенное обнаружение на основе энтропии с перекрёстной проверкой по подозрительным ключевым словам | Расширенное вычисление энтропии с анализом на основе блоков |
| Функция исключения | Может исключать определённые каталоги из сканирования | Может исключать определённые каталоги из сканирования | Настраиваемые исключения через API |
| Игнорирование хешей | Игнорирует файлы с определёнными хешами | Игнорирует файлы с определёнными хешами | Настраиваемое игнорирование хешей через API |
| Вывод | Если найдены потенциальные веб-шеллы, выводит имя файла, значение энтропии и хеш. В противном случае выводит «No evil identified today.» | Если найдены потенциальные веб-шеллы, выводит имя файла, значение энтропии, хеш, дату последнего изменения, метод обнаружения и оценку уверенности в формате JSON. В противном случае выводит «No potential web shells detected.» | Подробный вывод в формате JSON, включающий метаданные файла, энтропию, результаты прогнозирования и совпадения с YARA |
| Энтропия и стандартное отклонение | Использует значения энтропии | Вычисляет среднее и стандартное отклонение значений энтропии для каждого расширения файла | Вычисляет как энтропию, так и стандартное отклонение для расширенного анализа |
| Смешанный режим обнаружения | Отсутствует | Использует комбинацию обнаружения на основе энтропии, обнаружения на основе стандартного отклонения и смешанного режима (использование стандартного отклонения с жёстко заданными порогами) | Сочетает обнаружение на основе энтропии, прогнозирование с помощью машинного обучения и сопоставление с YARA-правилами |
| Статический анализ кода | Отсутствует | Механизм обнаружения на основе шаблонов, анализирующий код статически для выявления и пометки известных вредоносных шаблонов | Использует YARA-правила для обнаружения на основе шаблонов |
ShellScan обеспечивает возможность сканирования нескольких известных каталогов с вредоносными веб-шеллами и вывода среднего, медианного, минимального и максимального значений энтропии по расширениям файлов.
Передайте ShellScan.ps1 несколько каталогов с веб-шеллами любого размера. Я использовал:
Это даст достойный обучающий набор для получения значений энтропии.
Пример вывода:
Statistics for .aspx files:
Average entropy: 4.94212121048115
Minimum entropy: 1.29348709979974
Maximum entropy: 6.09830238020383
Median entropy: 4.85437969842084
Statistics for .asp files:
Average entropy: 5.51268104400858
Minimum entropy: 0.732406213077191
Maximum entropy: 7.69241278153711
Median entropy: 5.57351177724806
Сначала давайте разберём использование ShellCSV и то, как он помогает определить энтропию «хороших» файлов на диске. Идея в том, что защитники могут запускать его на веб-серверах для сбора всех файлов и значений энтропии, чтобы лучше понять, какие пути и расширения наиболее распространены в их рабочей среде.
Пример вывода см. в ShellCSV.csv.
Сначала выберите версию: Python, PowerShell или Lua.
Если вы дошли до этого места, то это этап, на котором вы итеративно настраиваете инструмент. Нашли новый шелл? Соберите энтропию и измените значения.
ShellSweepPlus — это продвинутый скрипт PowerShell, предназначенный для обнаружения и анализа потенциальных веб-шеллов в веб-средах. Он основан на основной функциональности ShellSweep, предлагая расширенные возможности и возможности обнаружения.
Ключевые особенности:
Использование:
$DirectoryPaths.$suspiciousPatterns по мере необходимости для вашей среды.$excludePaths, чтобы пропустить определённые каталоги.$ignoreHashes или $ignoreHashesFilePath, чтобы исключить известные безопасные файлы.Пример вывода:
json
{
"TotalFilesScanned": 1000,
"Potential web shells": 5,
"ScanDuration": "00:05:30"
}
ShellSweepPlus предоставляет мощное и гибкое решение для обнаружения веб-шеллов, объединяя несколько методов анализа для повышения точности и выявления даже сложных угроз.
Не стесняйтесь открывать вопрос в Git или обращаться к Wiki.
Если вам понравился этот проект, обязательно поставьте ему звезду и поделитесь с семьёй и друзьями.
| Эвристический анализ | Отсутствует | Вводит функцию Perform-HeuristicAnalysis для обнаружения аномалий на основе эвристических правил, улучшая обнаружение веб-шеллов нулевого дня | Реализует прогнозирование на основе машинного обучения для эвристического анализа |
| Детальное представление результатов | Отсутствует | Представляет потенциальные угрозы в структурированном формате JSON, включая путь к файлу, энтропию, стандартное отклонение, хеш, дату последнего изменения, метод обнаружения и оценку уверенности | Предоставляет исчерпывающие результаты, включающие все методы анализа в структурированном формате JSON |
| Комплексное логирование | Отсутствует | Включает команды Write-Verbose на протяжении всего скрипта для детального логирования и прозрачности операций | Реализует подробное логирование в компонентах агента и сервера |
| Оценка уверенности | Отсутствует | Вычисляет оценку уверенности на основе метода обнаружения и корректирует её в зависимости от наличия подозрительных шаблонов | Использует уверенность прогноза машинного обучения и комбинирует её с другими методами обнаружения для комплексной оценки |
| Модульный дизайн | Отсутствует | Использует отдельные функции для различных задач (например, Process-File, Create-ResultObject, Adjust-ConfidenceScore), способствуя повторному использованию и поддерживаемости кода | Высоко модульный дизайн с отдельными компонентами для агента, сервера и функций анализа |
| Кроссплатформенная поддержка | Только PowerShell | Только PowerShell | Поддерживает реализации на PowerShell, Python и Bash |
| Интеграция с API | Отсутствует | Отсутствует | Комплексный API для настройки, отправки результатов и управления |
| Анализ на основе ИИ | Отсутствует | Отсутствует | Включает возможности триажа и анализа на основе ИИ |
| Управление YARA-правилами | Отсутствует | Отсутствует | Позволяет добавлять, обновлять и удалять YARA-правила через API |
| Веб-интерфейс | Отсутствует | Отсутствует | Предоставляет веб-интерфейс для визуализации результатов и анализа |