RedTeamCoin 是一个基于区块链的加密货币矿池实现,专为授权的安全测试和红队行动设计。它使用 Go 语言构建,支持 Java 客户端,能够模拟真实的加密货币挖矿攻击,帮助组织评估其检测能力并量化威胁行为者挖矿活动可能造成的潜在损害。
该工具使安全团队能够在受控环境中,使用隔离的非公开区块链,安全合法地演示企业系统上的加密货币挖矿攻击场景,生成全面的影响报告,并验证安全控制措施。
为什么使用 RedTeamCoin?
系统组件:
5 分钟内即可运行 RedTeamCoin:
Ubuntu/Debian:```bash sudo apt update sudo apt install -y golang-go protobuf-compiler
**macOS:**```bash
brew install go protobuf
Windows:
git clone https://github.com/xyplex3/RedTeamCoin.git cd RedTeamCoin
make install-tools make deps
make build
### 验证
确认构建是否成功完成:```bash
ls -lh bin/
# Expected output: server and client binaries (1-5 MB each)
./bin/server --help
# Expected output: Usage information for the server
1. 启动服务器:```bash make run-server
你应该看到类似这样的输出:```text
RedTeamCoin Mining Pool Server
Authentication Token: abc123def456...
Dashboard URL: http://localhost:8080?token=abc123def456...
gRPC server listening on port 50051
2. 启动矿工 (在新的终端中):```bash make run-client
你应该会看到挖矿活动:```text
Connected to mining pool at localhost:50051
Registered as miner: miner-hostname-1234567890
Mining block #1... Hash rate: 2.5 MH/s
Block found! Nonce: 98765, Hash: 000000ab1cd...
3. 查看仪表盘:
在浏览器中打开步骤1中的URL,或导航到:```text http://localhost:8080?token=YOUR_AUTH_TOKEN_HERE
您将看到实时统计信息,包括活跃矿工、哈希率以及已开采的区块。
**注意:** 服务器监听所有网络接口——如需远程访问,请将 `localhost` 替换为您的服务器 IP。
## 工作原理
该矿池采用工作量证明共识机制运行:
1. 服务器用创世区块初始化区块链
2. 矿工通过 gRPC 连接并使用 IP/主机名注册
3. 服务器分配工作任务(区块模板)
4. 矿工计算 SHA-256 哈希值以寻找有效的随机数(nonce)
5. 当满足难度目标时,矿工提交解
6. 服务器验证并将区块添加到区块链
7. 仪表板显示实时统计信息和矿工活动
每个区块都需要找到一个具有特定前导零位数(可配置难度)的哈希值。矿工每开采一个区块可获得 50 RTC。
### 数据流```text
Client Miner Server
| |
|--RegisterMiner(IP,Hostname)->|
|<--RegistrationResponse-------|
|--GetWork()------------------>|
|<--WorkResponse(Block)--------|
| [Mining: compute hashes] |
|--SubmitWork(nonce,hash)----->|
| | [Validate proof-of-work
| | and add block to chain]
|<--SubmissionResponse---------|
|--Heartbeat(stats)----------->|
|<--HeartbeatResponse----------|
HTTP(默认):```bash ./bin/server
- gRPC 服务器:端口 **50051**
- Web 仪表盘:**http://localhost:8080**
**HTTPS/TLS (推荐):**```bash
# Generate certificates (one time)
./generate_certs.sh
# Start with TLS
RTC_SERVER_TLS_ENABLED=true ./bin/server
注意 #1: 使用 HTTPS 时,浏览器会显示自签名证书的安全警告。点击“高级”→“继续前往 localhost”。
注意 #2: Web 仪表盘和 gRPC 服务器将在服务器的所有接口上运行,可以替代 localhost 使用。
基本用法:```bash ./bin/client
**运行多个矿工:**
打开其他终端并在每个终端中运行 `./bin/client`。
#### Java矿工
RedTeamCoin提供了两种Java矿工实现:
##### Java gRPC客户端(无头模式)
适用于服务器和自动化的生产级gRPC客户端。
**先决条件:**
- Java 11或更高版本
- Maven(仅用于构建)
**使用Makefile构建:**```bash
make build-java-client
或者手动构建:```bash cd java-client mvn clean package
**运行:**```bash
# Connect to localhost
java -jar bin/redteamcoin-miner-client.jar
# Connect to remote server
java -jar bin/redteamcoin-miner-client.jar -server 192.168.1.100:50051
特性:
带图形界面的桌面矿机。
前置要求:
使用 Makefile 构建:```bash make build-java-standalone
**或者手动构建:**```bash
cd java-standalone
mvn clean package
运行:```bash
java -jar bin/redteamcoin-miner-standalone.jar
java -jar bin/redteamcoin-miner-standalone.jar --pool localhost:50051
**功能特性:**
- 桌面GUI界面
- 可视化统计显示
- 简单的JSON/Socket协议
- 内嵌于应用程序
##### 构建所有Java矿工```bash
make build-java-all
Java Miners 的优点:
完整的 Java gRPC 客户端文档请参见 java-client/README.md。
默认情况下,客户端连接到 localhost:50051。要连接到远程服务器:
使用命令行标志(推荐):```bash ./bin/client -server 192.168.1.100:50051 ./bin/client -s mining-pool.example.com:50051
**使用环境变量:**```bash
export RTC_CLIENT_SERVER_ADDRESS=192.168.1.100:50051
./bin/client
优先级: 命令行标志 > 环境变量 > 默认值 (localhost:50051)
RedTeamCoin 支持基于 NVIDIA (CUDA) 和 AMD/Intel (OpenCL) GPU 的 GPU 加速挖矿。GPU 挖矿比 CPU 挖矿快 100-400 倍,且能效显著更高。
NVIDIA CUDA:```bash sudo apt install cuda-toolkit make build-cuda
**AMD/Intel OpenCL:**```bash
sudo apt install ocl-icd-opencl-dev
make build-opencl
自动检测:```bash make build-gpu # Automatically detects and builds for available GPU
### GPU 使用情况```bash
# Auto-detect GPU (default)
./bin/client
# Force CPU only
RTC_CLIENT_MINING_GPU_ENABLED=false ./bin/client
# Hybrid mode (CPU + GPU)
RTC_CLIENT_MINING_HYBRID_MODE=true ./bin/client
# GPU with remote server
./bin/client -server mining-pool.example.com:50051