从DerbyCon演讲到实战:Invisi-Shell开发者揭秘隐匿技术的前世今生
Invisi-Shell是一款能够将PowerShell脚本隐匿于无形的创新工具,通过Hook .Net程序集的方式,绕过了PowerShell的所有安全特性,包括ScriptBlock日志记录、模块日志记录、转录和AMSI等。这一强大功能使其成为安全研究和渗透测试领域的重要工具。## 隐匿技术的起源:DerbyCon演讲的灵感2018年10月,Omer Yair在DerbyCon大会上发
从DerbyCon演讲到实战:Invisi-Shell开发者揭秘隐匿技术的前世今生
Invisi-Shell是一款能够将PowerShell脚本隐匿于无形的创新工具,通过Hook .Net程序集的方式,绕过了PowerShell的所有安全特性,包括ScriptBlock日志记录、模块日志记录、转录和AMSI等。这一强大功能使其成为安全研究和渗透测试领域的重要工具。
隐匿技术的起源:DerbyCon演讲的灵感
2018年10月,Omer Yair在DerbyCon大会上发表了题为"Goodbye Obfuscation, Hello Invisi-Shell: Hiding Your PowerShell Script in Plain Sight"的演讲,首次公开了Invisi-Shell的核心技术理念。这次演讲为后续的工具开发奠定了重要基础,将隐匿技术带入了新的阶段。
Invisi-Shell的核心原理:绕过PowerShell安全机制
Invisi-Shell的核心在于通过CLR Profiler API对.NET程序集进行Hook操作。这一技术手段使其能够:
- 绕过ScriptBlock日志记录,避免脚本执行过程被记录
- 突破模块日志记录的限制,隐藏模块加载信息
- 规避转录功能,防止操作过程被完整记录
- 绕过AMSI(Antimalware Scan Interface)检测,提高脚本执行成功率
实战应用:Invisi-Shell的使用方式
项目提供了两种主要的运行方式,以适应不同的使用场景:
-
管理员权限运行:通过[RunWithPathAsAdmin.bat]批处理文件,可以以管理员权限启动Invisi-Shell,获得更全面的系统访问权限。
-
非管理员权限运行:使用[RunWithRegistryNonAdmin.bat]批处理文件,可以在非管理员权限下运行,通过注册表设置实现功能。
技术实现:Invisi-Shell的架构解析
Invisi-Shell的核心实现位于[InvisiShellProfier]目录中,主要包含以下关键组件:
- [InvisiShellProfiler.cpp]:实现了CLR Profiler的主要逻辑
- [HookData.h]:定义了Hook相关的数据结构
- [ClassFactory.cpp]和[ClassFactory.h]:提供了类工厂的实现,用于创建Profiler对象
- [dllmain.cpp]:作为DLL的入口点,负责初始化和清理工作
这些组件共同协作,实现了对.NET程序集的Hook操作,从而达到隐匿PowerShell脚本的目的。
结语:隐匿技术的未来发展
从DerbyCon演讲到如今的实战应用,Invisi-Shell展示了隐匿技术在安全领域的重要价值。随着防御技术的不断升级,隐匿技术也将持续发展,为安全研究人员提供更多对抗手段。对于开发者和安全从业者而言,深入理解这类技术不仅有助于提升防御能力,也能在安全测试中更好地模拟真实攻击场景。
要开始使用Invisi-Shell,你可以通过以下命令克隆项目仓库:
git clone https://gitcode.com/gh_mirrors/in/Invisi-Shell
更多推荐
所有评论(0)