适用场景:网络安全运维、恶意流量分析、终端病毒排查
适配工具:Wireshark、TShark、Suricata、Snort
一、协议特征深度解析
(一)Stratum 协议(挖矿核心通信协议)
1. 协议结构规范
基于 TCP 的 JSON-RPC 2.0 格式,典型交互数据包内容如下
{ "id": 1, "method": "mining.subscribe", "params": [ "stratum/2.0.0", "XMRig/6.22.0" ]}
2. 关键方法识别(必查字段)
|
|
|
|
|
|
|
|
|
"params":["stratum/2.0.0"]
|
|
|
|
|
"params":["00000001","abc123"]
|
|
|
|
|
"params":["nonce":"1a2b3c"]
|
tcp contains "mining.subscribe" || tcp contains "mining.notify" || tcp contains "mining.submit"
(二)门罗币 XMRig 协议(JSON-RPC 变种)
1. 独特字段标识
- 登录包特征
:含门罗币钱包地址(固定 95 位,以 “4” 或 “8” 开头),示例:
{ "method": "login", "params": { "login": "44AFFq5kSiGBoZ4NMDwYtN18obc8AemS33DBLWs3H7otXft3XjrpDtQGv7SqSsaBYBb98uNbr2VBBEt7f2wfn3RVGQBEP3A", "pass": "x" }}
- 提交包特征
method 字段固定为 “submit_share”,示例:
"method": "submit_share", "params": {"job_id": "job123", "nonce": "456def"}
2. 专属筛选规则
tcp contains "method\":\"login\" && tcp contains \":44AFFq5kSiGBoZ4NMDwYtN18obc8AemS33DBLWs3H7otXft3XjrpDtQGv7SqSsaBYBb98uNbr2VBBEt7f2wfn3RVGQBEP3A"
(三)加密流量伪装(TLS/SSL 隐藏)
1. 证书异常特征
-
自签名证书:证书 “颁发者” 与 “使用者” 一致,无正规 CA 机构(如 Let's Encrypt)签名。
-
矿池关联信息:证书 “主题”(CN 字段)含矿池域名,如 “CN=pool.minexmr.com”。
2. 流量模式异常
-
周期规律:每 10-60 秒发送 1 次小数据包(100-300 字节),无大文件传输。
-
方向特征:上行流量(矿机→矿池)占比 > 80%,下行流量仅为任务指令。
3. 检测操作步骤(Word 中建议用 “编号列表”)
-
打开 Wireshark,选中可疑 TLS 流,右键→“协议偏好设置”→“TLS”→“RSA 密钥列表”。
-
导入目标服务器 CA 证书(若能获取),强制解密流量。
-
解密后筛选:
tcp contains "mining" || tcp contains "jsonrpc",验证是否含挖矿字段。
二、流量行为精准定位
(一)周期性流量模式(核心识别点)
1. 时间间隔特征
-
正常范围:矿机与矿池通信周期为 10-60 秒(无业务波动时固定)。
-
异常排除:排除 HTTP/HTTPS 的随机请求(周期不固定,字节数波动大)。
2. Wireshark 分析步骤
-
导入 PCAP 包后,点击 “Statistics”→“Conversations”→“TCP” 标签。
-
按 “Packets” 列排序,筛选数据包数量 > 50 的会话(排除短连接)。
-
选中目标会话,右键→“Follow TCP Stream”,查看 “Time” 列是否有固定间隔(如每 30 秒 1 条)。
3. 精准筛选规则
tcp.stream eq 123 && frame.time_delta > 9 && frame.time_delta < 61(注:“123” 需替换为实际流编号,可从 “Conversations” 中获取)
(二)PSH 标志与流量方向关联
1. PSH 标志特征(TCP 推送标志)
-
矿机→矿池:PSH 标志占比 > 90%(需快速提交计算结果,不缓存)。
-
矿池→矿机:PSH 标志占比约 50%(任务指令可缓存,无需实时推送)。
2. 筛选规则
(tcp.flags.push == 1 && ip.src == 192.168.1.100) || (tcp.flags.push == 1 && ip.dst == 185.215.113.66)(注:替换 “192.168.1.100” 为内部可疑 IP,“185.215.113.66” 为目标 IP)
(三)异常流量阈值(量化判断)
检测命令
tshark -r sample.pcap -Y "ip.src == 192.168.1.100" -T fields -e frame.time_epoch -e frame.len | awk '{ if (NR == 1) start = $1; total += $2; end = $1;} END { bandwidth = total / (end - start); print "上行带宽:" bandwidth " 字节/秒";}'
三、矿池地址与端口库
四、工具与命令实战
(一)Wireshark 高级操作
1. 追踪流深度分析
-
选中可疑数据包,右键→“Follow”→“TCP Stream”(或 “UDP Stream”)。
-
在弹出的 “TCP 流” 窗口中,选择 “显示方式” 为 “原始数据”,查看完整 JSON 内容。
-
关键判断:若出现 “mining”“nonce”“wallet” 等字段,标记为高风险。
2. 流量可视化分析
-
路径:“Statistics”→“Flow Graph”。
-
配置:“Flow Type” 选择 “TCP Flows”,“Time Range” 选择 “All”。
-
识别:若某条流呈现 “均匀分布的小点”(固定周期),且无明显峰值,为挖矿特征。
(二)TShark 自动化脚本(批量分析)
1. 提取矿池通信日志
tshark -r sample.pcap -Y 'tcp contains "mining.notify" || tcp contains "mining.submit"' \-T fields -e frame.time -e ip.src -e ip.dst -e tcp.srcport -e tcp.dstport -e data \> stratum.log
2. 统计 IP 通信频次(定位高频连接)
tshark -r sample.pcap -T fields -e ip.src -e ip.dst | awk '{print $1"→"$2}' | sort | uniq -c | sort -nr > ip_count.log
3. 导出可疑流为单独 PCAP(便于后续分析)
tshark -r sample.pcap -Y "tcp.stream eq 123" -w suspicious.pcap
(三)Suricata 规则(实时检测与告警)
1. Stratum 协议检测规则
alert tcp $HOME_NET any -> $EXTERNAL_NET any ( msg:"MINING - Stratum协议通信(高风险)"; content:"mining.subscribe"; content:"jsonrpc"; depth:200; classtype:trojan-activity; sid:1000001; rev:1; )
2. 门罗币钱包地址检测规则
alert tcp $HOME_NET any -> $EXTERNAL_NET any ( msg:"MINING - 门罗币钱包地址传输(高风险)"; content:"44AFFq5kSiGBoZ4NMDwYtN18obc8AemS33DBLWs3H7otXft3XjrpDtQGv7SqSsaBYBb98uNbr2VBBEt7f2wfn3RVGQBEP3A"; offset:50; depth:100; classtype:trojan-activity; sid:1000002; rev:1;)
3. 规则部署步骤
-
将规则保存为 “mining.rules” 文件,放入 Suricata 规则目录(如
/etc/suricata/rules/)。
-
修改 Suricata 配置文件(
suricata.yaml),在 “rule-files” 中添加 “mining.rules”。
-
启动 Suricata 并加载规则:
suricata -c suricata.yaml -i eth0 -s mining.rules。
五、异常行为关联分析(主机 + 网络联动)
(一)进程与网络连接关联(Linux 系统)
1. 查看进程关联的网络连接
ss -tunap | grep ESTAB | awk '{print "进程:"$7" | 连接:"$5}'
2. 排查隐藏进程(常见挖矿木马手段)
ls -l /proc | grep -E '^d' | awk '{print $9}' | grep -vE '^[0-9]+$'
3. 检查预加载恶意库(篡改 ld.so.preload)
# 查看是否被注入恶意SO文件路径cat /etc/ld.so.preload# 若有异常路径,删除并重启:echo "" > /etc/ld.so.preload && reboot
(二)Windows 主机排查(工具推荐)
1. 进程监控工具:Process Explorer
-
-
打开后点击 “View”→“Select Columns”→勾选 “TCP Connections”。
-
按 “CPU” 列排序,筛选 CPU 占用 > 50% 且无明确业务的进程。
-
查看进程的 “TCP Connections”,若连接到矿池 IP,直接结束进程。
2. 网络连接监控:TCPView
-
功能:实时显示所有 TCP/UDP 连接,标注进程名和 IP 地址。
-
排查重点:筛选 “Remote Address” 为陌生 IP,且 “State” 为 “ESTABLISHED” 的连接。
(三)威胁情报验证(确认 IP / 域名合法性)
1. VirusTotal API 查询
import requestsdef check_ip_virustotal(ip, api_key): url = f"https://www.virustotal.com/api/v3/ip_addresses/{ip}" headers = {"x-apikey": api_key} response = requests.get(url, headers=headers) data = response.json()
malicious = data["data"]["attributes"]["last_analysis_stats"]["malicious"] suspicious = data["data"]["attributes"]["last_analysis_stats"]["suspicious"]
print(f"IP:{ip}") print(f"恶意标记:{malicious} 个 | 可疑标记:{suspicious} 个") if malicious + suspicious > 0: print("结论:该IP为可疑矿池/恶意IP") else: print("结论:该IP暂未被标记为恶意")check_ip_virustotal("185.215.113.66", "YOUR_VIRUSTOTAL_API_KEY")
六、案例实战
案例 1:XMRig 门罗币木马检测
1. PCAP 流量特征
-
源 IP:192.168.1.105(内部办公 PC),目标 IP:141.94.115.174(XMRPool 矿池)。
-
数据包内容:含 “method":"login"” 和门罗币钱包地址(44AFFq...)。
-
流量模式:每 20 秒发送 1 次 “submit_share” 请求,上行流量稳定在 500Kbps。
2. 检测步骤
-
用 Wireshark 筛选:
tcp contains "submit_share",定位可疑流。
-
追踪流查看完整内容,确认钱包地址格式(95 位,以 “4” 开头)。
-
在 VirusTotal 查询目标 IP:141.94.115.174,显示 “23 个引擎标记为矿池 IP”。
-
登录 192.168.1.105 主机,用 Process Explorer 找到 “xmrig.exe” 进程(CPU 占用 98%),结束并删除文件。
3. 处置结果
-
清除木马文件:
C:\Users\Public\xmrig.exe。
-
阻断矿池 IP:在防火墙添加 ACL,禁止内部网络访问 141.94.115.0/24。
案例 2:TLS 加密伪装挖矿检测
1. 流量异常表现
-
源 IP:10.0.0.20(服务器),目标 IP:13.248.169.48(MiningPoolHub)。
-
TLS 流量:每 30 秒发送 1 次 150 字节数据包,无 HTTP/HTTPS 业务请求。
-
证书信息:自签名证书,CN 字段为 “pool.minexmr.com”。
2. 检测步骤
-
用 Wireshark 导出 TLS 证书:选中 TLS 握手包→“Protocol”→“TLS”→“Certificate”→“Export”。
-
查看证书详情:“颁发者” 与 “使用者” 均为 “pool.minexmr.com”,判定为自签名。
-
强制解密 TLS 流量:导入矿池 CA 证书(从服务器获取),解密后筛选到 “mining.notify” 字段。
-
服务器排查:用
ss -tunap | grep 13.248.169.48,找到关联进程 “unknown”(恶意进程隐藏名),PID 为 1234。
3. 处置结果
-
-
删除恶意文件:
rm -rf /tmp/.unknown(隐藏路径,需用ls -a查看)。
七、误报排除指南(Word 中用 “项目符号” 清晰区分)
(一)合法矿池通信排除
- 场景
- 排除方法
-
收集合法矿机 IP 段(如 192.168.100.0/24),添加到 Wireshark/Suricata 白名单。
-
在筛选规则中排除:
tcp contains "mining" && ip.src != 192.168.100.0/24。
(二)正常业务干扰排除
1. HTTP/2 流量误判
-
特征:HTTP/2 帧结构与 Stratum 协议相似,易被误检。
-
排除方法:筛选时添加 HTTP/2 排除规则:
tcp contains "mining" && !http2。
2. IoT 设备周期性流量
-
特征:智能家居(如摄像头、温控器)会发送周期性心跳包(100-200 字节)。
-
-
记录 IoT 设备 MAC 地址,绑定固定 IP(如 192.168.2.0/24)。
-
筛选时排除:
tcp contains "mining" && ip.src != 192.168.2.0/24。
(三)加密流量误判
- 场景
视频会议(如 Zoom)、即时通讯(如企业微信)会产生高频小数据包。
- 排除方法
-
检查 TLS 证书:正规业务证书由知名 CA 颁发(如 DigiCert、Symantec)。
-
查看域名:通过 DNS 查询目标 IP 对应的域名,确认是否为业务域名(如 zoom.us)。
八、防御建议(按 “网络层 - 主机层 - 监控层” 分类)
(一)网络层防御
-
防火墙 ACL 配置:阻断已知矿池 IP 段(参考 “矿池地址与端口库”),禁止非业务端口出站(如 5555、9999)。
-
DPI 设备部署:启用深度包检测,识别 Stratum/XMRig 协议流量,实时阻断。
-
DNS 过滤:在 DNS 服务器中添加矿池域名黑名单(如 *.mine.com、*.miningpoolhub.com),返回空解析。
(二)主机层防御
-
-
Linux:安装 ClamAV 杀毒软件,定期扫描
/tmp、/var/tmp等隐藏目录。
-
Windows:启用 Windows Defender 实时保护,禁止 “公共文件夹” 执行.exe 文件。
-
-
部署 EDR 工具(如 CrowdStrike、奇安信 EDR),监控 CPU 占用 > 80% 的异常进程。
-
对关键目录(如
/etc、C:\Windows\System32)设置写入权限控制,防止木马篡改配置。
(三)监控与响应
-
-
统计正常业务时段的带宽、连接数、数据包大小,设置基线阈值(如上行带宽超过基线 200% 告警)。
-
使用 Zabbix/Grafana 监控网络流量,添加异常波动告警(如 5 分钟内上行流量突增)。
-
-
每周更新矿池 IP / 域名库(参考微步在线、VirusTotal),同步到防火墙和检测工具。
-
建立挖矿木马处置流程,明确 “检测 - 验证 - 处置 - 复盘” 步骤,缩短响应时间。