hammadx05/windows-keylogger-c2-simulation
GitHub: hammadx05/windows-keylogger-c2-simulation
一个用于恶意软件分析教学的 Windows 键盘记录器与 C2 通信模拟项目,演示了键盘挂钩、持久化、触发执行和数据外发等恶意软件核心技术。
Stars: 0 | Forks: 0
# 🧪 恶意软件分析项目(键盘记录器 + C2 模拟)
## ⚠️ 免责声明
本项目严格**仅限教育目的**,属于*恶意软件分析基础*课程的一部分。
它在**受控的实验环境(虚拟机配置)**中进行开发和测试,旨在理解恶意软件的行为,绝不可用于任何现实世界或恶意目的。
# 📌 概述
本项目是一个简单的恶意软件分析模拟,包含:
* 基于 Windows 的键盘记录器(受害者机器)
* 基于 Python 的 C2 服务器(攻击者机器 - Kali Linux)
* 基于触发器的执行系统
* 使用 Windows 注册表的持久化机制
* 键盘记录 + 数据外发模拟
其核心思想是从两个方面了解真实恶意软件的行为:
* 受感染的系统(Windows 虚拟机)
* 攻击者的系统(Kali Linux)
# 🧠 项目架构
### 🪟 受害者端(Windows 虚拟机)
* `keylogger.exe`
* 使用 Windows API 钩子捕获按键
* 以隐蔽模式运行
* 在激活前等待触发器
* 在本地存储日志
* 激活后将数据发送到 C2 服务器
* 通过注册表 Run 键添加持久化
### 🐧 攻击者端(Kali Linux)
* `c2_server.py`
* 基于 HTTP 的命令与控制服务器
* 接收来自受害者机器的按键信息
* 将日志存储在:
* `.log` 文件(人类可读格式)
* `.json` 文件(结构化格式)
* 显示实时传入的数据
# ⚙️ 功能
## 🔹 键盘记录器(Windows)
* 隐蔽执行(隐藏窗口)
* Windows API 键盘挂钩
* 基于触发器的激活:
* 插入 USB
* 检测到计算器进程
* Ctrl + Alt + Esc 快捷键
* 注册表持久化(Run 键)
* 带缓冲的按键记录
* 通过 HTTP 与 C2 服务器通信
## 🔹 C2 服务器(Kali Linux)
* 使用 Python 的简单 HTTP 服务器
* 接收来自受害者的 POST 请求
* 以两种格式存储数据:
* `keystrokes.log`
* `keystrokes.json`
* 用于查看日志的 Web 界面
* 实时终端日志记录
# 🛠️ 设置说明
## 🐧 第一步:启动 C2 服务器(Kali Linux)
运行服务器:
```
python3 c2_server.py
```
服务器启动于:
```
http://0.0.0.0:8080
```
你可以查看:
* 日志:`http://localhost:8080/logs`
* JSON:`http://localhost:8080/json`
## 🪟 第二步:运行键盘记录器(Windows 虚拟机)
编译命令:
```
g++ -static -mwindows -std=c++11 -O2 keylogger.cpp -o keylogger.exe -luser32 -lgdi32 -lwininet -lpthread -ladvapi32
```
运行:
```
keylogger.exe
```
# 🔁 工作原理(完整流程)
### 1. 空闲状态
* 键盘记录器以**休眠模式**启动
* 最初不会进行任何记录
* 仅监控系统的活动
### 2. 触发激活
当发生以下任意情况时,键盘记录器会被激活:
* 插入 USB 驱动器
* 打开计算器
* 按下 Ctrl + Alt + Esc
一旦被触发:
* 键盘挂钩将被激活
* 开始记录
### 3. 键盘记录阶段
* 捕获所有按键
* 将其存储在缓冲区中
* 写入到:
```
C:\Windows\Temp\system_log.dat
```
### 4. C2 通信
激活后:
* 日志被发送到 Kali 服务器
* 服务器在以下位置接收 POST 请求:
```
http://:8080/log
```
* 数据被存储在:
* `keystrokes.log`
* `keystrokes.json`
### 5. 持久化
* 将条目添加到 Windows 注册表:
```
HKCU\Software\Microsoft\Windows\CurrentVersion\Run
```
* 确保程序在启动时自动运行
# 📡 C2 服务器详情(c2_server.py)
此脚本运行在 Kali Linux 上,充当攻击者的控制面板。
### 它的功能:
* 接收传入的 HTTP POST 数据
* 提取按键信息
* 带有时间戳保存日志
* 提供简单的 Web 界面以查看日志
### 端点:
* `/` → 状态页面
* `/logs` → 纯文本日志
* `/json` → 结构化 JSON 日志
* `/log` → 接收来自受害者的数据
# 🧪 主要学习成果
本项目有助于理解:
* Windows API 钩子技术
* 恶意软件持久化技术
* 基于触发器的执行逻辑
* 数据外发概念
* 基本的命令与控制架构
* 受害者与攻击者之间的通信流程
# 🛡️ 防御视角
从安全防御的角度来看,此类行为可以通过以下方式被检测到:
* 可疑的注册表 Run 条目
* 键盘挂钩检测
* 隐藏的进程执行
* 异常的 HTTP POST 流量
* Temp 目录中的日志文件创建
## 👨💻 开发者
- Hammad
标签:C2通信, DAST, Hook技术, Keylogger, Python, USB检测, Windows API, 命令与控制, 安全实验, 恶意软件分析, 教育项目, 数据渗出, 数据窃取, 无后门, 注册表持久化, 热键触发, 端点可见性, 红队模拟, 网络安全, 自启动, 虚拟机环境, 触发执行, 进程检测, 逆向工具, 键盘挂钩, 键盘记录器, 隐私保护, 隐蔽执行