xyplex3/RedTeamCoin

GitHub: xyplex3/RedTeamCoin

RedTeamCoin 是一个基于私有区块链的加密挖矿攻击模拟平台,帮助红队在受控环境中评估组织对加密劫持威胁的检测能力和潜在影响。

Stars: 24 | Forks: 2

# RedTeamCoin

RedTeamCoin Logo

[![许可证](https://img.shields.io/github/license/xyplex3/RedTeamCoin?label=License&style=flat&color=blue&logo=github)](https://github.com/xyplex3/RedTeamCoin/blob/main/LICENSE) [![Pre-Commit](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/dd16fce677003358.svg)](https://github.com/xyplex3/RedTeamCoin/actions/workflows/pre-commit.yaml) [![安全扫描](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/b275bc3c22003359.svg)](https://github.com/xyplex3/RedTeamCoin/actions/workflows/security.yaml) [![发布](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/63f07af958003401.svg)](https://github.com/xyplex3/RedTeamCoin/actions/workflows/goreleaser.yaml) [![测试与构建验证](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/543e2e1985003402.svg)](https://github.com/xyplex3/RedTeamCoin/actions/workflows/test-and-build.yaml) [![Windows 挖矿测试](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/a36eeffde8003403.svg)](https://github.com/xyplex3/RedTeamCoin/actions/workflows/windows-miner-test.yaml) RedTeamCoin 是一个基于区块链的加密货币矿池实现, 专为授权的安全测试和红队行动设计。它使用 Go 语言构建, 并支持 Java 客户端,旨在模拟现实世界中的加密挖矿攻击, 以帮助组织评估其检测能力并量化潜在威胁行为者挖矿操作可能造成的破坏。 该工具使安全团队能够在公司系统上安全、合法地演示加密挖矿攻击场景, 生成全面的评估报告,并在使用隔离、非公开区块链的受控环境中验证安全控制措施。 ## 目录 - [概述](#overview) - [功能](#features) - [快速开始](#quick-start) - [工作原理](#how-it-works) - [使用说明](#usage) - [运行服务器](#running-the-server) - [运行矿机](#running-a-miner) - [连接到远程服务器](#connecting-to-remote-servers) - [GPU 挖矿](#gpu-mining) - [配置](#configuration) - [API 参考](#api-reference) - [架构](#architecture) - [开发](#development) - [贡献](#contributing) - [故障排除](#troubleshooting) - [文档](#documentation) - [许可证](#license) - [致谢](#acknowledgments) ## 概述 **为什么使用 RedTeamCoin?** - 演示加密劫持攻击的现实影响 - 测试并验证安全监控和检测系统 - 生成可量化的破坏评估报告,供高管汇报使用 - 安全地模拟挖矿操作,而无需连接到公共区块链 **系统组件:** - **矿池服务器** - 管理区块链并协调工作分发 - **客户端矿机** - CPU/GPU 挖矿客户端(Go 和 Java 实现) - **Web 仪表盘** - 实时监控、控制和统计 - **分析工具** - 生成全面的破坏评估报告 ## 功能 - **区块链实现**:具有可配置难度的自定义工作量证明区块链 - **矿池服务器**:通过 gRPC 管理多个矿机和工作分发 - **客户端矿机**:带有 IP 地址和主机名记录的自动化挖矿客户端(Go 和 Java 实现) - **Java 独立矿机**:具有图形界面的桌面矿机 - **Java gRPC 客户端**:用于服务器和自动化的无头 gRPC 客户端 - **服务器端矿机控制**:远程暂停、恢复、限制 CPU 使用率以及删除矿机 - **CPU 限制**:将矿机 CPU 使用率限制在 0-100% 之间以管理资源 - **GPU 挖矿支持**:支持 CUDA 和 OpenCL 进行 GPU 加速挖矿 - **混合挖矿**:同时进行 CPU 和 GPU 挖矿以实现最佳性能 - **Web 仪表盘**:带有控制按钮的矿机实时监控、统计和区块链展示 - **REST API 认证**:用于 API 端点的安全令牌认证 - **客户端 gRPC TLS 加密**:用于安全客户端-服务器 gRPC 连接的可选 TLS 加密 - **双重 IP 追踪**:记录客户端报告和服务器检测到的 IP 地址 - **CPU 和 GPU 统计信息**:全面的资源使用跟踪和报告 - **Protocol Buffers**:使用 protobuf/gRPC 进行高效的客户端-服务器通信 - **自动终止**:矿机在从服务器移除时会自动关闭并自我删除 ## 快速开始 在 5 分钟内运行起 RedTeamCoin: ### 前置条件 - **Go** 1.21 或更高版本 - **Protocol Buffer 编译器** (protoc) **Ubuntu/Debian:** ``` sudo apt update sudo apt install -y golang-go protobuf-compiler ``` **macOS:** ``` brew install go protobuf ``` **Windows:** - 从 https://golang.org/dl/ 安装 Go - 从 https://github.com/protocolbuffers/protobuf/releases 安装 protoc ### 安装 ``` # Clone 仓库 git clone https://github.com/xyplex3/RedTeamCoin.git cd RedTeamCoin # Install dependencies make install-tools make deps # Build server 和 client make build ``` ### 验证 验证构建是否成功完成: ``` ls -lh bin/ # 预期输出:server 和 client binaries(每个 1-5 MB) ./bin/server --help # 预期输出:server 的 Usage 信息 ``` ### 运行你的第一个矿池 **1. 启动服务器:** ``` make run-server ``` 你应该会看到类似以下的输出: ``` RedTeamCoin Mining Pool Server Authentication Token: abc123def456... Dashboard URL: http://localhost:8080?token=abc123def456... gRPC server listening on port 50051 ``` **2. 启动矿机**(在一个新终端中): ``` make run-client ``` 你应该会看到挖矿活动: ``` 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,或导航至: ``` http://localhost:8080?token=YOUR_AUTH_TOKEN_HERE ``` 你将看到实时统计信息,包括活跃矿机、哈希率和已挖出的区块。 **注意:** 服务器监听所有网络接口 - 请将 `localhost` 替换为你的服务器 IP 以进行远程访问。 ## 工作原理 矿池使用工作量证明共识机制运行: 1. 服务器使用创世区块初始化区块链 2. 矿机通过 gRPC 连接并使用 IP/主机名进行注册 3. 服务器分发工作分配(区块模板) 4. 矿机计算 SHA-256 哈希值以寻找有效随机数 5. 矿机在满足难度目标时提交解决方案 6. 服务器验证并将区块添加到区块链中 7. 仪表盘显示实时统计数据和矿机活动 每个区块都需要找到一个具有特定数量前导零(可配置难度)的哈希值。 矿工每挖出一个区块可获得 50 RTC。 ### 数据流 ``` 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(默认):** ``` ./bin/server ``` - gRPC 服务器:端口 **50051** - Web 仪表盘:**http://localhost:8080** **HTTPS/TLS(推荐):** ``` # Generate certificates(一次性) ./generate_certs.sh # Start 并启用 TLS RTC_SERVER_TLS_ENABLED=true ./bin/server ``` - gRPC 服务器:端口 **50051** - Web 仪表盘:**https://localhost:8443** - HTTP 重定向:**http://localhost:8080** **注意 #1:** 使用 HTTPS 时,浏览器会显示自签名证书的安全警告。点击“高级” -> “继续前往 localhost”。 **注意 #2:** Web 仪表盘和 gRPC 服务器将在服务器的所有接口上运行,可用来替代 localhost。 ### 运行矿机 #### Go 客户端(原生二进制文件) **基本用法:** ``` ./bin/client ``` **运行多个矿机:** 打开额外的终端并在每个终端中运行 `./bin/client`。 #### Java 矿机 RedTeamCoin 提供了两种 Java 矿机实现: ##### Java gRPC 客户端(无头模式) 适用于服务器和自动化的生产就绪 gRPC 客户端。 **前置条件:** - Java 11 或更高版本 - Maven(仅用于构建) **使用 Makefile 构建:** ``` make build-java-client ``` **或手动构建:** ``` cd java-client mvn clean package ``` **运行:** ``` # Connect 到 localhost java -jar bin/redteamcoin-miner-client.jar # Connect 到 remote server java -jar bin/redteamcoin-miner-client.jar -server 192.168.1.100:50051 ``` **功能特性:** - gRPC 协议(与 Go 客户端匹配) - 无头操作(无 GUI) - 服务器控制(暂停/恢复/限制) - 自动重新连接 - 根据服务器命令自我删除 ##### Java 独立矿机(GUI) 带有图形界面的桌面矿机。 **前置条件:** - Java 21 或更高版本 - Maven(仅用于构建) **使用 Makefile 构建:** ``` make build-java-standalone ``` **或手动构建:** ``` cd java-standalone mvn clean package ``` **运行:** ``` # GUI mode(默认) java -jar bin/redteamcoin-miner-standalone.jar # CLI mode java -jar bin/redteamcoin-miner-standalone.jar --pool localhost:50051 ``` **功能特性:** - 桌面 GUI 界面 - 可视化统计数据显示 - 简单的 JSON/Socket 协议 - 可嵌入到应用程序中 ##### 构建所有 Java 矿机 ``` make build-java-all ``` **Java 矿机的优势:** - 单个 JAR 文件,易于分发 - 跨平台(Windows、Linux、macOS) - 目标系统上无需编译 - 仅需 Java 运行时(JRE) 有关完整的 Java gRPC 客户端文档,请参阅 [java-client/README.md](java-client/README.md)。 ### 连接到远程服务器 默认情况下,客户端连接到 `localhost:50051`。要连接到远程服务器: **使用命令行标志(推荐):** ``` ./bin/client -server 192.168.1.100:50051 ./bin/client -s mining-pool.example.com:50051 ``` **使用环境变量:** ``` export RTC_CLIENT_SERVER_ADDRESS=192.168.1.100:50051 ./bin/client ``` **优先级:** 命令行标志 > 环境变量 > 默认值 (localhost:50051) ## GPU 挖矿 RedTeamCoin 支持针对 NVIDIA (CUDA) 和 AMD/Intel (OpenCL) GPU 的 GPU 加速挖矿。GPU 挖矿比 CPU 挖矿快 100-400 倍,并且能效显著提高。 ### GPU 安装 **NVIDIA CUDA:** ``` sudo apt install cuda-toolkit make build-cuda ``` **AMD/Intel OpenCL:** ``` sudo apt install ocl-icd-opencl-dev make build-opencl ``` **自动检测:** ``` make build-gpu # Automatically detects and builds for available GPU ``` ### GPU 使用 ``` # Auto-detect GPU(默认) ./bin/client # Force 仅使用 CPU RTC_CLIENT_MINING_GPU_ENABLED=false ./bin/client # Hybrid mode(CPU + GPU) RTC_CLIENT_MINING_HYBRID_MODE=true ./bin/client # 带 remote server 的 GPU ./bin/client -server mining-pool.example.com:50051 ``` ### 性能比较 | 配置 | 哈希率 | 加速比 | 效率 (MH/W) | | ---------------- | ----------- | ------- | ------------ | | CPU (1 核心) | ~2 MH/s | 基线 | ~0.02 | | CPU (8 核心) | ~16 MH/s | 8x | ~0.02 | | GPU (RTX 3080) | ~500 MH/s | 250x | ~2.0 | | GPU (RTX 3090) | ~600 MH/s | 300x | ~2.5 | | GPU (AMD MI250) | ~800 MH/s | 400x | ~3.0 | | 混合 (CPU+GPU) | ~620 MH/s | 310x | ~2.0 | **注意:** GPU 挖矿的能效比 CPU 挖矿高 100-150 倍。 ### 测试 GPU 功能 ``` # Test GPU detection ./bin/client 2>&1 | grep -i "gpu\|cuda\|opencl" # Force CPU mining(验证 fallback 是否有效) RTC_CLIENT_MINING_GPU_ENABLED=false ./bin/client # Force GPU mining(如果可用) RTC_CLIENT_MINING_GPU_ENABLED=true ./bin/client # Test 混合 CPU+GPU mode RTC_CLIENT_MINING_HYBRID_MODE=true ./bin/client ``` 有关完整的 GPU 挖矿指南,请参阅 [docs/GPU_MINING.md](docs/GPU_MINING.md)。 ## 配置 RedTeamCoin 使用 [Viper](https://github.com/spf13/viper) 进行灵活的配置管理。 可以通过环境变量、YAML 配置文件或命令行标志指定设置,优先级如下: **命令行标志** > **环境变量** > **配置文件** > **默认值** ### 设置 **初始化配置文件:** ``` # Initialize server 和 client configs make init-config # Or 分别进行 initialize make init-server-config # Creates server-config.yaml make init-client-config # Creates client-config.yaml ``` 这会将示例 YAML 文件复制到你的工作目录中供编辑。你也可以将配置文件放置在 `~/.rtc/` 或 `/etc/rtc/` 目录中。 **使用环境变量覆盖:** ``` # Environment variables 优先于 config files export RTC_SERVER_MINING_DIFFICULTY=8 export RTC_CLIENT_SERVER_ADDRESS=pool.example.com:50051 ./bin/server ``` ### 环境变量 所有环境变量均使用前缀:服务器使用 `RTC_SERVER_`,客户端使用 `RTC_CLIENT_`。 **服务器配置:** | 变量 | 描述 | 默认值 | | ------------------------------------- | ------------------------ | ------------------ | | `RTC_SERVER_NETWORK_GRPC_PORT` | gRPC 服务器端口 | `50051` | | `RTC_SERVER_NETWORK_API_PORT` | HTTPS API 端口 | `8443` | | `RTC_SERVER_NETWORK_HTTP_PORT` | HTTP Web 接口端口 | `8080` | | `RTC_SERVER_MINING_DIFFICULTY` | 挖矿难度 (1-64) | `6` | | `RTC_SERVER_MINING_BLOCK_REWARD` | 区块奖励币数 | `50` | | `RTC_SERVER_TLS_ENABLED` | 启用 HTTPS/TLS | `false` | | `RTC_SERVER_TLS_CERT_FILE` | TLS 证书路径 | `certs/server.crt` | | `RTC_SERVER_TLS_KEY_FILE` | TLS 私钥路径 | `certs/server.key` | | `RTC_SERVER_API_READ_TIMEOUT` | API 读取超时 | `15s` | | `RTC_SERVER_API_WRITE_TIMEOUT` | API 写入超时 | `15s` | | `RTC_SERVER_API_IDLE_TIMEOUT` | API 空闲超时 | `60s` | | `RTC_SERVER_LOGGING_UPDATE_INTERVAL` | 统计信息更新间隔 `30s` | | `RTC_SERVER_LOGGING_FILE_PATH` | 日志文件路径 | `pool_log.json` | | `RTC_AUTH_TOKEN` *(旧版)* | 自定义认证令牌 | 自动生成 | **客户端配置:** | 变量 | 描述 | 默认值 | | ------------------------------------------------- | ---------------------------------- | ------------------ | | `RTC_CLIENT_SERVER_ADDRESS` | 矿池服务器地址 (host:port) | `localhost:50051` | | `RTC_CLIENT_SERVER_TLS_ENABLED` | 为 gRPC 连接启用 TLS | `false` | | `RTC_CLIENT_SERVER_TLS_INSECURE_SKIP_VERIFY` | 跳过证书验证 | `true` | | `RTC_CLIENT_SERVER_TLS_CA_CERT_FILE` | CA 证书文件路径 | `""` | | `RTC_CLIENT_MINING_GPU_ENABLED` | 启用 GPU 挖矿 | `true` | | `RTC_CLIENT_MINING_HYBRID_MODE` | 启用 CPU+GPU 同时挖矿 | `false` | | `RTC_CLIENT_MINING_AUTO_DELETE` | 关闭时自动删除 | `true` | | `RTC_CLIENT_GPU_NONCE_RANGE` | 每批次 GPU 的随机数范围 | `500000000` | | `RTC_CLIENT_GPU_CPU_START_NONCE` | CPU 起始随机数 (避免 GPU 重叠) | `5000000000` | | `RTC_CLIENT_NETWORK_HEARTBEAT_INTERVAL` | 状态更新间隔 | `30s` | | `RTC_CLIENT_NETWORK_RETRY_INTERVAL` | 连接重试延迟 | `10s` | | `RTC_CLIENT_NETWORK_MAX_RETRY_TIME` | 最大重试持续时间 | `5m` | | `RTC_CLIENT_BEHAVIOR_WORKER_UPDATE_INTERVAL` | Worker 进度报告间隔 | `100000` | | `POOL_SERVER` *(旧版)* | 远程服务器地址 | `localhost:50051` | | `GPU_MINING` *(旧版)* | 启用/禁用 GPU 挖矿 | 自动检测 | | `HYBRID_MINING` *(旧版)* | 启用 CPU+GPU 挖矿 | `false` | ### 配置文件示例 **服务器配置** (`server-config.yaml`): ``` network: grpc_port: 50051 api_port: 8443 http_port: 8080 mining: difficulty: 8 block_reward: 100 tls: enabled: true cert_file: /etc/rtc/certs/server.crt key_file: /etc/rtc/certs/server.key logging: update_interval: 30s file_path: /var/log/rtc/pool.json ``` **客户端配置** (`client-config.yaml`): ``` server: address: pool.example.com:50051 tls: enabled: false insecure_skip_verify: true ca_cert_file: "" mining: gpu_enabled: true hybrid_mode: false auto_delete: true gpu: nonce_range: 1000000000 cpu_start_nonce: 5000000000 network: heartbeat_interval: 30s retry_interval: 10s max_retry_time: 5m ``` ### 认证 所有 API 端点(仪表盘主页除外)都需要 Bearer 令牌认证。 **自动生成的令牌:** 服务器在启动时生成一个安全令牌并将其显示在控制台中。 **自定义令牌:** ``` export RTC_AUTH_TOKEN="your-secret-token" ./bin/server ``` ### 性能 预期的挖矿时间因 CPU 性能和运气而异: - **难度 4**:约 1-10 秒/区块(单核 CPU) - **难度 5**:约 10-60 秒/区块 - **难度 6**:约 1-10 分钟/区块 ### HTTPS 配置 ``` # Generate certificates ./generate_certs.sh # Start 并启用 HTTPS,使用新的 config system export RTC_SERVER_TLS_ENABLED=true export RTC_AUTH_TOKEN="my-secure-token" ./bin/server # Custom certificates export RTC_SERVER_TLS_CERT_FILE="/path/to/cert.pem" export RTC_SERVER_TLS_KEY_FILE="/path/to/key.pem" ./bin/server ``` 有关详细的 TLS 配置,请参阅 [docs/TLS_SETUP.md](docs/TLS_SETUP.md)。 ## API 参考 ### REST API 端点 **公共端点:** - `GET /` - Web 仪表盘 (HTML) - `GET /blocks` - 查看所有区块页面 (HTML) **需认证的端点:** - `GET /api/stats` - 矿池统计信息 (JSON) - `GET /api/miners` - 所有矿机列表 (JSON) - `GET /api/blockchain` - 完整区块链 (JSON) - `GET /api/blocks/{index}` - 特定区块详情 (JSON) - `GET /api/validate` - 验证区块链完整性 (JSON) - `GET /api/cpu` - CPU 和 GPU 使用统计 (JSON) - `POST /api/miner/pause` - 暂停特定矿机的挖矿 - `POST /api/miner/resume` - 恢复特定矿机的挖矿 - `POST /api/miner/delete` - 删除矿机(自动终止并自我删除) - `POST /api/miner/throttle` - 设置 CPU 节流百分比 (0-100%) ### 认证示例 **cURL:** ``` # Get stats curl -H "Authorization: Bearer YOUR_TOKEN" http://localhost:8080/api/stats # Get miners curl -H "Authorization: Bearer YOUR_TOKEN" http://localhost:8080/api/miners # Pause 一个 miner curl -X POST -H "Authorization: Bearer YOUR_TOKEN" \ -H "Content-Type: application/json" \ -d '{"miner_id":"miner-hostname-1234567890"}' \ http://localhost:8080/api/miner/pause # Set CPU throttle 为 50% curl -X POST -H "Authorization: Bearer YOUR_TOKEN" \ -H "Content-Type: application/json" \ -d '{"miner_id":"miner-hostname-1234567890","throttle_percent":50}' \ http://localhost:8080/api/miner/throttle # HTTPS(带 self-signed cert) curl -k -H "Authorization: Bearer YOUR_TOKEN" https://localhost:8443/api/stats ``` **JavaScript:** ``` const token = "YOUR_TOKEN_HERE"; const headers = { Authorization: `Bearer ${token}` }; fetch("http://localhost:8080/api/stats", { headers }) .then((r) => r.json()) .then((data) => console.log(data)); ``` **Python:** ``` import requests headers = {'Authorization': 'Bearer YOUR_TOKEN'} response = requests.get('http://localhost:8080/api/stats', headers=headers) print(response.json()) ``` ### gRPC 服务 ``` service MiningPool { rpc RegisterMiner(MinerInfo) returns (RegistrationResponse); rpc GetWork(WorkRequest) returns (WorkResponse); rpc SubmitWork(WorkSubmission) returns (SubmissionResponse); rpc Heartbeat(MinerStatus) returns (HeartbeatResponse); rpc StopMining(MinerInfo) returns (StopResponse); } ``` ## 架构 ### 技术栈 - **语言**:Go 1.21+ - **RPC 框架**:gRPC 与 Protocol Buffers - **Web 服务器**:Go net/http 标准库 - **依赖项**:google.golang.org/protobuf, google.golang.org/grpc ## 开发 ### 构建命令 ``` make proto # Generate protobuf code make build # Build server and client (CPU only) make build-gpu # Build with GPU support (auto-detect) make build-cuda # Build with NVIDIA CUDA make build-opencl # Build with AMD/Intel OpenCL make build-windows # Cross-compile for Windows make build-all-platforms # Cross-compile for all platforms make clean # Remove build artifacts make deps # Download dependencies make init # Full initialization ``` ### 测试 RedTeamCoin 包含针对服务器和客户端组件的全面单元测试。 **运行所有测试:** ``` make test # Run all tests (server + client) ``` **运行特定的测试套件:** ``` # Server tests cd server && go test -v # Client tests cd client && go test -v -short # With coverage cd server && go test -cover cd client && go test -cover ``` **测试覆盖率:** - **服务器**:76 个测试,66.3% 覆盖率 - `blockchain_test.go`:15 个测试 - 区块链验证,哈希计算, 并发访问 - `pool_test.go`:26 个测试 - 矿机管理,工作分发,统计信息 - `grpc_server_test.go`:17 个测试 - gRPC 端点,矿机控制,心跳 - `api_test.go`:18 个测试 - REST API,认证,矿机操作 - **客户端**:41 个测试,16.2% 覆盖率 - `main_test.go`:24 个测试 - 挖矿逻辑,哈希计算,状态管理 - `gpu_test.go`:18 个测试 - GPU 检测,设备管理,统计信息 **总计**:涵盖核心功能的 117 个单元测试 **测试内容:** - 区块链验证和完整性 - 区块挖矿和工作量证明 - 矿池工作分发 - 矿机注册和管理 - 服务器端矿机控制(暂停/恢复/删除/节流) - gRPC 通信协议 - REST API 端点和认证 - GPU 设备检测和初始化 - 哈希率计算和统计 - 并发操作和线程安全 - 错误处理和边缘情况 **CI/CD 测试:** 所有测试会在以下情况自动运行: - Pull 请求 - 向 main 分支的提交 - 发布构建 有关 CI 配置,请参阅 [.github/workflows/build-verification.yaml](.github/workflows/build-verification.yaml)。 ### 交叉编译 **Windows(仅限 CPU):** ``` make build-windows ``` 生成 `bin/client.exe` **带 OpenCL 的 Windows(支持 GPU):** ``` # Requires MinGW-w64 和 Windows OpenCL SDK make build-windows-opencl ``` 生成 `bin/client-windows-opencl.exe` 有关完整的 Windows 构建说明,请参阅 [docs/WINDOWS_BUILD.md](docs/WINDOWS_BUILD.md),包括: - 支持 GPU 的原生 Windows 构建 - 从 Linux 进行交叉编译的设置 - 认证令牌配置 - 故障排除指南 **多平台:** ``` make build-all-platforms ``` 生成: - `client-linux-amd64` - Linux 64 位 - `client-linux-arm64` - Linux ARM64 - `client-windows-amd64.exe` - Windows 64 位 - `client-darwin-amd64` - macOS Intel - `client-darwin-arm64` - macOS Apple Silicon **注意:** 交叉编译的二进制文件仅限 CPU(禁用了 CGO),除非使用 `build-windows-opencl`。 ### 分析工具 生成用于挖矿影响分析的破坏评估报告: ``` make build-tools ./bin/generate_report -log pool_log.json ``` **报告包含:** - 资源消耗分析 - 性能影响评估 - 基础设施损害 - 安全隐患 - 财务影响摘要 - 逐系统分析 - 修复建议 **成本假设:** | 参数 | 默认值 | 说明 | | ------------------ | --------- | ---------------------- | | CPU 功耗 | 150W | 满载 | | GPU 功耗 | 250W | 满载 | | 电费 | $0.12/kWh | 根据地区调整 | | 寿命减少 | 20-40% | 由持续挖矿导致 | **转换报告:** ``` # PDF pandoc Report_Miner_Activity_from__to_.md -o report.pdf # HTML pandoc Report_Miner_Activity_from__to_.md -o report.html # DOCX pandoc Report_Miner_Activity_from__to_.md -o report.docx ``` **应用场景:** - 事件事后分析 - 高管简报 - 财务理由 - 合规文档 - 保险理赔 - 法律证据 有关完整的文档,请参阅 [tools/README.md](tools/README.md)。 ## 故障排除 ### 远程连接问题 **测试连通性:** ``` # Test connection ping nc -zv 50051 # Check server(在 server 端) lsof -i :50051 ss -an | grep 50051 ``` **常见问题:** - 验证服务器地址和端口 - 确保服务器正在运行 - 检查防火墙规则(客户端和服务器) - 确认网络连通性 - 验证端口 50051 是否正在监听 ### GPU 挖矿问题 | 问题 | 解决方案 | | ----------------------- | --------------------------------------------------------------- | | "cannot find -lcuda" | `export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH` | | "nvcc not found" | `sudo apt install cuda-toolkit` | | "No OpenCL device" | `sudo apt install ocl-icd-opencl-dev` | | GPU 速度慢 | `export RTC_CLIENT_MINING_GPU_ENABLED=true` | | CGo 构建错误 | `sudo apt install build-essential` | ### 常规问题 **构建失败:** - 确保已安装 Go 1.21+ - 运行 `make deps` 安装依赖 - 运行 `make install-tools` 安装 protoc 工具 **连接被拒绝:** - 检查服务器是否正在运行 - 验证端口是否未被占用:`lsof -i :50051` - 检查防火墙设置 **认证错误:** - 验证令牌是否与服务器输出匹配 - 检查 `Authorization: Bearer TOKEN` 请求头格式 - 确保令牌包含在 URL 或请求头中 ## 文档 ### 用户指南 - [docs/GPU_MINING.md](docs/GPU_MINING.md) - 使用 CUDA 和 OpenCL 进行 GPU 挖矿 - [docs/WINDOWS_BUILD.md](docs/WINDOWS_BUILD.md) - Windows 构建指南(原生和交叉编译) - [docs/TLS_SETUP.md](docs/TLS_SETUP.md) - HTTPS/TLS 配置 - [java-client/README.md](java-client/README.md) - Java gRPC 客户端(无头矿机) - [tools/README.md](tools/README.md) - 分析工具和破坏报告 ### 技术参考 - [docs/WORKFLOWS.md](docs/WORKFLOWS.md) - CI/CD 工作流和开发流程 ### 示例 - [docs/examples/](docs/examples/) - 示例报告和使用示例 ## 贡献 我们欢迎各种贡献!以下是入门步骤: 1. Fork 本仓库 2. 创建一个功能分支:`git checkout -b feature/amazing-feature` 3. 进行修改并添加测试 4. 运行测试套件:`make test` 5. 提交你的更改:`git commit -m 'Add amazing feature'` 6. 推送到分支:`git push origin feature/amazing-feature` 7. 发起一个 Pull 请求 ### 开发环境设置 ``` # Clone 你的 fork git clone https://github.com/YOUR_USERNAME/RedTeamCoin.git cd RedTeamCoin # Install dependencies make install-tools make deps # Run tests make test # Build 并在本地 test make build make run-server # Terminal 1 make run-client # Terminal 2 ``` ### 代码准则 - 遵循 Go 标准格式化 (`gofmt`) - 为新功能添加单元测试 - 为面向用户的更改更新文档 - 在提交 PR 之前确保所有 CI 检查均已通过 ## 安全提示 这是一个用于授权安全测试和红队行动的**演示/教育项目**。旨在用于: - 授权的渗透测试项目 - 安全控制验证 - 检测能力评估 - 教育和培训目的 该工具不打算作为真正的加密货币用于生产环境, 并且缺少生产系统所需的许多功能(加密签名、钱包、交易验证、网络共识等)。 **仅在您拥有或有权限测试的系统上,在明确的授权下使用。** ## 许可证 本项目基于 GNU 通用公共许可证 v3.0 授权 - 有关详细信息,请参阅 [LICENSE](LICENSE) 文件。 ## 致谢 **创建者:** - Peter Greko ([@Xyplex02](https://github.com/Xyplex02)) - Luciano Krigun ([@klucho](https://github.com/klucho)) - Jayson Grace ([@l50](https://github.com/l50))
标签:EVTX分析, Go语言, Java客户端, JS文件枚举, Python工具, TGT, Vectored Exception Handling, Veh, 企业安全, 加密劫持模拟, 加密货币挖矿, 区块链, 反取证, 安全度量, 安全控制验证, 安全测试, 安全评估, 底层编程, 挖矿矿池, 攻击性安全, 攻防演练, 数据展示, 日志审计, 检测能力评估, 程序破解, 红队, 网络安全, 网络资产管理, 防御验证, 隐私保护