Member 14651994 Ответов: 2

Как исправить ошибку с помощью invoke-reflectivepeinjection


Я пытаюсь встроить exe-файл в сценарий powershell, как описано далее https://truesecdev.wordpress.com/2016/03/15/embedding-exe-files-into-powershell-scripts/

и к сценарию https://github.com/PowerShellMafia/PowerSploit/blob/master/CodeExecution/Invoke-ReflectivePEInjection.ps1

Я добавил:

# Ваш двоичный код base64

$InputString = '...........' с exe-файлом, преобразованным в base64

и также включили

# Преобразовать строку в кодировке base64 в байтовый массив

$PEBytes = [Система.Convert]::FromBase64String($InputString)

# Запуск EXE-файла в памяти

Invoke-ReflectivePEInjection -PEBytes $PEBytes


но я получаю этот каскад ошибок

однако первое что я получаю это


Исключение, вызывающее "GetMethod" с аргументом(АМИ) "1": "найдено неоднозначное совпадение."
В C:\users\ieuser\desktop\PowerSploit-master\CodeExecution\Invoke-ReflectivePEInjection2.ps1:1007 char:6
+ $GetProcAddress = $UnsafeNativeMethods.GetMethod('GetProcAddr ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : AmbiguousMatchException

Что я уже пробовал:

Я уже пробовал себя в роли администратора

и попробовали тезисы изменений


замена $UnsafeNativeMethods.GetMethod('GetProcAddress'}) в строке, на которую ссылается ошибка с $UnsafeNativeMethods.GetMethods().Где({$_.Name -eq 'GetProcAddress'}) |Select -First 1

внес изменения в

$GetProcAddress = $UnsafeNativeMethods.GetMethod('GetProcAddress',
[type[]]('IntPtr', 'System.Струна'))

и

$GetProcAddress = $UnsafeNativeMethods.GetMethod('GetProcAddress',
[type[]]('System.Runtime.InteropServices.HandleRef', 'Система.Струна'))


также предложения от

https://github.com/PowerShellMafia/PowerSploit/issues/335
https://github.com/PowerShellMafia/PowerSploit/issues/293
https://github.com/PowerShellMafia/PowerSploit/pull/289



Но, кажется, ничего не работает


В чем может быть причина этих ошибок и как я могу их исправить

Exe - файл, который я использовал в качестве примера, был putty (по какой-то причине каждый раз, когда я вижу видео на youtube, его программа используется в качестве примера)

Member 14651994

полный список ошибок

https://www58.zippyshare.com/v/DButFIfV/file.html

2 Ответов

Рейтинг:
2

Richard MacCutchan

Exception calling "GetMethod" with "1" argument(s): "Ambiguous match found."
At C:\users\ieuser\desktop\PowerSploit-master\CodeExecution\Invoke-ReflectivePEInjection2.ps1:1007 char:6
+ $GetProcAddress = $UnsafeNativeMethods.GetMethod('GetProcAddr ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : AmbiguousMatchException

Проверьте имя метода, на которое вы ссылаетесь в этой строке вашего скрипта, похоже, оно не уникально. Смотреть также Класс AmbiguousMatchException (System.Размышления) | Майкрософт Документы[^]. Строка, на которую вы ссылаетесь, не является уникальной внутри


Рейтинг:
1

OriginalGriff

Вернитесь туда, где вы получили код, и спросите там: мы здесь не для того, чтобы исправить ваши проблемы с кодом третьей (или четвертой) стороны, и очень вероятно, что, поскольку вы только что "приобрели" код из нескольких источников, он все равно не будет работать вместе без существенных изменений.

Вы не можете просто найти код, скрепить его вместе и надеяться: вы должны понимать код, который вы копируете, чтобы вы могли изменить его в соответствии с вашей средой и точными требованиями.