360 开启了晶核模式,怎么去尝试权限维持
1. 放弃传统方法,转向无文件和内存驻留
在晶核模式下,任何涉及到文件落地、注册表写入、服务创建的传统权限维持方法都极有可能被拦截。因此,我们的核心思想是:不落地、不留痕、内存驻留
- 无文件攻击:避免将任何可执行文件(
.exe
、.dll
)写入磁盘。所有的恶意代码都应该通过 PowerShell、C# 或其他脚本语言在内存中运行 - 内存驻留:将恶意代码注入到合法的、白名单内的进程中,如
svchost.exe
、explorer.exe
等。这样,恶意代码就可以利用合法进程的信任度来绕过安全软件的监控 - 使用 PowerShell 或 C#:利用 PowerShell 的反射式加载(Reflective Loading)技术,可以直接在内存中执行 .NET 程序集。360 晶核模式对 PowerShell 脚本的监控非常严格,因此需要使用混淆、加密等技术来绕过其行为分析
2. 利用系统自带的合法进程和功能
晶核模式的核心是识别恶意行为,而不是简单地拦截所有操作。因此,我们可以利用那些系统自带的、360 无法或不敢拦截的合法进程来执行我们的恶意代码
- 利用
COM
或WMI
:Windows Management Instrumentation (WMI) 和 Component Object Model (COM) 是系统核心组件,它们允许本地和远程执行代码。许多安全软件无法直接拦截这些操作,因为这可能会导致系统功能异常- 你可以通过
WMI
在目标机器上远程执行代码,而无需将可执行文件写入磁盘。这种方法非常隐蔽,因为WMI
流量是合法的 - 通过
COM
组件,你可以利用那些具有特权的 COM 对象,执行一些平时受限的操作
- 你可以通过
- 利用计划任务(Scheduled Tasks):虽然创建新的计划任务可能会被晶核模式拦截,但你可以尝试修改已有的、合法的计划任务
- 命令:
schtasks
- 思路:找到一个不显眼的、定期执行的系统任务,然后修改它的执行命令,让它执行你的无文件后门例如,你可以让它定时执行一个 PowerShell 脚本,该脚本从网络上下载并执行恶意代码
- 命令:
- 利用
runas
或其他 Windows API:如果可以拿到高权限,可以尝试利用runas
或类似的 API 来启动一个拥有更高权限的新进程,然后将恶意代码注入到新进程中