32 lines
3.7 KiB
Markdown
32 lines
3.7 KiB
Markdown
### 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 来启动一个拥有更高权限的新进程,然后将恶意代码注入到新进程中
|
||
|
||
**3. 持久化技巧**
|
||
|
||
在权限维持方面,可以考虑以下几种高级技巧:
|
||
|
||
- **DLL 劫持**:找到一个启动时会加载 DLL 的合法程序,并将一个恶意的 DLL 文件放置在它会寻找的路径中。当程序启动时,它会加载你的恶意 DLL,从而执行你的代码
|
||
- **晶核模式的挑战**:晶核模式通常会阻止未签名的 DLL 加载到敏感进程中,因此你需要找到一个没有签名检查的合法程序,或者你的 DLL 需要经过特殊处理
|
||
- **COM 劫持**:攻击者可以修改 Windows 注册表中的 COM 组件路径,将合法的 COM 组件替换为恶意的。当应用程序调用这个组件时,就会执行恶意代码
|
||
- **晶核模式的挑战**:晶核模式会对注册表中的关键键值进行监控,因此这种方法需要非常小心,或者找到一个未被监控的注册表键
|
||
- **利用驱动程序**:这是最高级的权限维持方法,但难度也最大。你可以尝试加载一个恶意的内核驱动程序。内核驱动拥有最高的权限,可以绕过几乎所有的用户态安全防护
|
||
- **晶核模式的挑战**:360 晶核模式的核心就是内核级防护,它会严格检查所有加载的驱动程序。如果你没有一个经过微软签名的驱动程序,很难成功 |