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

Проблема с encoding'ом PowerShell команды.

Proxy n1nja

Green Team
28.06.2018
118
149
BIT
0
Доброго времени суток, уважаемые посетители этого форума.
Я столкнулся с проблемой по encoding'у PowerShell команды и хотел бы попросить вашей помощи.
Суть вот в чем, у меня есть такая команда
Код:
Powershell try {(new-object System.Net.WebClient).DownloadFile('https://www.google.com/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png', '%temp%\test.jpg'); iex $env:temp\test.jpg} catch {}
и она работает (по крайне мере на моем компьютере :) ) но после того как я ее энкрипчу получая следующие
Код:
powershell -C "powershell ([char]45+[char]101+[char]110+[char]99) dAByAHkAIAB7ACgAbgBlAHcALQBvAGIAagBlAGMAdAAgAFMAeQBzAHQAZQBtAC4ATgBlAHQALgBXAGUAYgBDAGwAaQBlAG4AdAApAC4ARABvAHcAbgBsAG8AYQBkAEYAaQBsAGUAKAAnAGgAdAB0AHAAcwA6AC8ALwB3AHcAdwAuAGcAbwBvAGcAbABlAC4AYwBvAG0ALwBpAG0AYQBnAGUAcwAvAGIAcgBhAG4AZABpAG4AZwAvAGcAbwBvAGcAbABlAGwAbwBnAG8ALwAxAHgALwBnAG8AbwBnAGwAZQBsAG8AZwBvAF8AYwBvAGwAbwByAF8AMgA3ADIAeAA5ADIAZABwAC4AcABuAGcAJwAsACAAJwAlAHQAZQBtAHAAJQBcAHQAZQBzAHQALgBqAHAAZwAnACkAOwAgAGkAZQB4ACAAJABlAG4AdgA6AHQAZQBtAHAAXAB0AGUAcwB0AC4AagBwAGcAfQAgAGMAYQB0AGMAaAAgAHsAfQA="
команда перестает работать. Но если таким же методом я энкрипчу другие команды (например ping 127.0.0.1) то энкрипченая команда работает.

Помогите пожалуйста разобраться почему так происходит ? Что я делаю не правильно и в какую сторону мне копать ?
 
U

Underwood

Из формулировки вопроса не ясно, что конкретно вызывает трудности?
Версия ps, скриншоты команд, логи ошибок - первая необходимость в поисках помощи при траблшутинге
encoded.jpg

encoded2.jpg
 

Proxy n1nja

Green Team
28.06.2018
118
149
BIT
0
Из формулировки вопроса не ясно, что конкретно вызывает трудности?

PSVersion 5.1.14393.2363
Когда я ввожу команду
Код:
Powershell try {(new-object System.Net.WebClient).DownloadFile('https://www.google.com/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png', '%temp%\test.jpg'); iex $env:temp\test.jpg} catch {}
Она прекрасно срабатывает.
normal.png
Потом я конверчу ее в base64 вот таким вот образом:
Код:
[Convert]::ToBase64String([System.Text.Encoding]::Unicode.GetBytes("try {(new-object System.Net.WebCli
ent).DownloadFile('https://www.google.com/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png', '%temp%\test.jpg
'); iex $env:temp\test.jpg} catch {}"))
Convert.png
И после того как я запускаю ее вот таким образом
Код:
powershell -encodedCommand dAByAHkAIAB7ACgAbgBlAHcALQBvAGIAagBlAGMAdAAgAFMAeQBzAHQAZQBtAC4ATgBlAHQALgBXAGUAYgBDAGwAaQBlAG4AdAApAC4ARABvAHcAbgBsAG8AYQBkAEYAaQBsAGUAKAAnAGgAdAB0AHAAcwA6AC8ALwB3AHcAdwAuAGcAbwBvAGcAbABlAC4AYwBvAG0ALwBpAG0AYQBnAGUAcwAvAGIAcgBhAG4AZABpAG4AZwAvAGcAbwBvAGcAbABlAGwAbwBnAG8ALwAxAHgALwBnAG8AbwBnAGwAZQBsAG8AZwBvAF8AYwBvAGwAbwByAF8AMgA3ADIAeAA5ADIAZABwAC4AcABuAGcAJwAsACAAJwAlAHQAZQBtAHAAJQBcAHQAZQBzAHQALgBqAHAAZwAnACkAOwAgAGkAZQB4ACAAQwA6AFwAVQBzAGUAcgBzAFwAcgBvAG8AdABcAEEAcABwAEQAYQB0AGEAXABMAG8AYwBhAGwAXABUAGUAbQBwAFwAdABlAHMAdAAuAGoAcABnAH0AIABjAGEAdABjAGgAIAB7AH0A
nonormal.png
Ничего не происходит.

Вот как бы суть, почему так ? Что я делаю не правильно ? Ошибок никаких не дает. Консоль просто пустая. Если через оболочку PS то тоже самое.
 
U

Underwood

Попробуйте изменить кодировку на UTF8 или ASCII и создать переменную со этим значением
[Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes("try {(new-object System.Net.WebCli
ent).DownloadFile(' ', '%temp%\test.jpg
'); iex $env:temp\test.jpg} catch {}"))
 

Proxy n1nja

Green Team
28.06.2018
118
149
BIT
0
Попробуйте изменить кодировку на UTF8 или ASCII и создать переменную со этим значением
[Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes("try {(new-object System.Net.WebCli
ent).DownloadFile(' ', '%temp%\test.jpg
'); iex $env:temp\test.jpg} catch {}"))

Если меняю кодировку с юникода то повершелл не понимает символов.
UTF-8andASCII.png

Но еще такой момент что если я энкрипчу другую команду в юникоде то она срабатывает (например ping)
otherCOmmand.png
Еще я пробовал менять ссылку до картинки на более короткую и это тоже не помогло.
 
U

Underwood

А после выполнения powershell -encodedCommand test.jpg скачивается? Необходимо использовать именно ?
 

Proxy n1nja

Green Team
28.06.2018
118
149
BIT
0
А после выполнения powershell -encodedCommand test.jpg скачивается? Необходимо использовать именно ?
Нет, картинка не скачивается. И снова нет, не обязательно использовать Try\Catch.
Главное что бы команда могла скачать и запустить .bat файл который будет собирать логи с IPMI.
 
U

Underwood

Главное что бы команда могла скачать и запустить .bat файл который будет собирать логи с IPMI.
Стоило с этого начинать:)
Намного проще использовать для загрузки и для запуска
Код:
Invoke-WebRequest 'http://example.com/logs.bat' -OutFile 'путь_до_logs.bat"'
Start-Process "cmd.exe" "/c путь_до_logs.bat"
 
  • Нравится
Реакции: Vertigo

Proxy n1nja

Green Team
28.06.2018
118
149
BIT
0
Стоило с этого начинать:)
Намного проще использовать для загрузки и для запуска
Код:
Invoke-WebRequest 'http://example.com/logs.bat' -OutFile 'путь_до_logs.bat"'
Start-Process "cmd.exe" "/c путь_до_logs.bat"
Но все же хотелось бы понять почему не работает в энкрипченом виде именно ВебРеквест ?
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!