Detects unauthorized cryptomining in AWS, Azure, GCP clouds via GuardDuty findings, compute/CPU anomalies, mining pool network traffic, and native security services. Useful for cost spikes or threat alerts.
npx claudepluginhub killvxk/cybersecurity-skills-zhThis skill uses the workspace's default tool permissions.
- 调查云计算成本或 CPU 利用率意外峰值时
Detects and responds to unauthorized cryptomining in AWS (EC2/ECS/EKS via GuardDuty) and Azure clouds using cost anomalies, mining pool traffic, and runtime process monitoring.
Detects unauthorized cryptomining in AWS EC2/ECS/EKS and Azure via compute anomalies, GuardDuty CryptoCurrency findings, network traffic to mining pools, and runtime process monitoring.
Detects unauthorized cryptomining in AWS (EC2,ECS,EKS) and Azure clouds via compute anomalies, GuardDuty CryptoCurrency findings, network traffic to mining pools, and runtime process monitoring. Useful for cost spikes and GuardDuty alerts.
Share bugs, ideas, or general feedback.
不适用于:检测终端或本地服务器上的加密货币挖矿(使用 EDR 工具)、调查挖矿的财务影响(使用云成本管理工具),或在网络层面封锁挖矿(使用 DNS 过滤和防火墙规则)。
查询 GuardDuty 中表示挖矿活动的加密货币专用发现类型。
# 列出活跃的加密货币相关发现
aws guardduty list-findings \
--detector-id $(aws guardduty list-detectors --query 'DetectorIds[0]' --output text) \
--finding-criteria '{
"Criterion": {
"type": {
"Eq": [
"CryptoCurrency:EC2/BitcoinTool.B!DNS",
"CryptoCurrency:EC2/BitcoinTool.B",
"CryptoCurrency:Runtime/BitcoinTool.B!DNS",
"CryptoCurrency:Runtime/BitcoinTool.B",
"CryptoCurrency:Lambda/BitcoinTool.B"
]
},
"service.archived": {"Eq": ["false"]}
}
}' --output json
# 获取详细发现
FINDING_IDS=$(aws guardduty list-findings \
--detector-id $(aws guardduty list-detectors --query 'DetectorIds[0]' --output text) \
--finding-criteria '{"Criterion":{"type":{"Eq":["CryptoCurrency:EC2/BitcoinTool.B!DNS"]}}}' \
--query 'FindingIds' --output json)
aws guardduty get-findings \
--detector-id $(aws guardduty list-detectors --query 'DetectorIds[0]' --output text) \
--finding-ids $FINDING_IDS \
--query 'Findings[*].{Type:Type,Severity:Severity,Resource:Resource.InstanceDetails.InstanceId,RemoteIP:Service.Action.NetworkConnectionAction.RemoteIpDetails.IpAddressV4,Domain:Service.Action.DnsRequestAction.Domain}' \
--output table
监控意外的计算资源配置和 CPU 利用率峰值,这些可能表明挖矿活动。
# AWS: 查找最近启动的大型实例(挖矿通常使用 c5/p3/g4 实例)
aws ec2 describe-instances \
--filters "Name=instance-state-name,Values=running" \
--query 'Reservations[*].Instances[*].[InstanceId,InstanceType,LaunchTime,Tags[?Key==`Name`].Value|[0]]' \
--output table | grep -E "c5\.|c6\.|p3\.|p4\.|g4\.|g5\."
# AWS: 检查高 CPU 利用率
aws cloudwatch get-metric-statistics \
--namespace AWS/EC2 \
--metric-name CPUUtilization \
--dimensions Name=InstanceId,Value=i-SUSPECT_INSTANCE \
--start-time 2026-02-22T00:00:00Z \
--end-time 2026-02-23T00:00:00Z \
--period 3600 \
--statistics Average \
--query 'Datapoints[*].[Timestamp,Average]' --output table
# AWS: 检查 Cost Anomaly Detection
aws ce get-anomalies \
--date-interval '{"StartDate":"2026-02-16","EndDate":"2026-02-23"}' \
--query 'Anomalies[*].[AnomalyId,AnomalyScore.MaxScore,Impact.TotalImpact,RootCauses[0].Service]' \
--output table
# Azure: 查找具有异常 CPU 模式的虚拟机
az monitor metrics list \
--resource /subscriptions/SUB_ID/resourceGroups/RG/providers/Microsoft.Compute/virtualMachines/VM_NAME \
--metric "Percentage CPU" \
--interval PT1H \
--start-time 2026-02-22T00:00:00Z \
--end-time 2026-02-23T00:00:00Z
识别到已知加密货币挖矿池和 Stratum 协议流量的网络连接。
# 查询 VPC Flow Logs 中到已知挖矿池端口(3333、4444、8333、14444)的连接
# AWS: 使用 CloudWatch Logs Insights
aws logs start-query \
--log-group-name vpc-flow-logs \
--start-time $(date -d "24 hours ago" +%s) \
--end-time $(date +%s) \
--query-string '
fields @timestamp, srcAddr, dstAddr, dstPort, bytes
| filter dstPort in [3333, 4444, 8333, 14444, 14433, 45700]
| sort bytes desc
| limit 100
'
# 检查挖矿池域名的 DNS 查询
aws logs start-query \
--log-group-name route53-resolver-logs \
--start-time $(date -d "24 hours ago" +%s) \
--end-time $(date +%s) \
--query-string '
fields @timestamp, query_name, srcids.instance
| filter query_name like /pool|mining|xmr|monero|nicehash|ethermine|f2pool|nanopool/
| limit 100
'
# GCP: 查询 VPC 流日志中的挖矿连接
gcloud logging read '
resource.type="gce_subnetwork"
AND jsonPayload.connection.dest_port=(3333 OR 4444 OR 8333 OR 14444)
AND timestamp>="2026-02-22T00:00:00Z"
' --limit=50 --format=json
检查容器工作负载和无服务器函数中的加密货币挖矿。
# EKS/Kubernetes: 查找 CPU 使用率高的 Pod
kubectl top pods --all-namespaces --sort-by=cpu | head -20
# 查找可疑的容器镜像
kubectl get pods --all-namespaces -o json | python3 -c "
import json, sys
data = json.load(sys.stdin)
suspicious = ['xmrig', 'monero', 'miner', 'crypto', 'pool', 'hashrate']
for pod in data['items']:
ns = pod['metadata']['namespace']
name = pod['metadata']['name']
for container in pod['spec'].get('containers', []):
image = container.get('image', '').lower()
if any(s in image for s in suspicious):
print(f'可疑: {ns}/{name} -> 镜像: {container[\"image\"]}')
"
# 检查 Lambda 函数是否存在挖矿(异常持续时间和内存)
aws lambda list-functions --query 'Functions[*].[FunctionName,MemorySize,Timeout]' --output table
aws cloudwatch get-metric-statistics \
--namespace AWS/Lambda \
--metric-name Duration \
--dimensions Name=FunctionName,Value=SUSPECT_FUNCTION \
--start-time 2026-02-22T00:00:00Z \
--end-time 2026-02-23T00:00:00Z \
--period 3600 \
--statistics Average Maximum
通过分析 API 日志和凭据使用情况,调查挖矿基础设施的部署方式。
# AWS: 查找谁启动了可疑实例
aws cloudtrail lookup-events \
--lookup-attributes AttributeKey=ResourceType,AttributeValue=AWS::EC2::Instance \
--start-time 2026-02-20T00:00:00Z \
--query 'Events[?contains(Resources[0].ResourceName, `i-SUSPECT`)].[EventTime,EventName,Username,SourceIPAddress]' \
--output table
# 检查泄露的凭据是否被使用
aws cloudtrail lookup-events \
--lookup-attributes AttributeKey=AccessKeyId,AttributeValue=AKIA_SUSPECT_KEY \
--query 'Events[*].[EventTime,EventName,SourceIPAddress,EventSource]' \
--output table
# 检查异常的 API 调用(来自新 IP 的 RunInstances)
aws cloudtrail lookup-events \
--lookup-attributes AttributeKey=EventName,AttributeValue=RunInstances \
--start-time 2026-02-20T00:00:00Z \
--query 'Events[*].[EventTime,Username,SourceIPAddress]' \
--output table
隔离挖矿资源,撤销被入侵的凭据,并实施预防控制。
# 终止挖矿实例
aws ec2 terminate-instances --instance-ids i-MINING_INSTANCE_1 i-MINING_INSTANCE_2
# 停用被入侵的凭据
aws iam update-access-key --user-name compromised-user \
--access-key-id AKIA_COMPROMISED --status Inactive
# 添加 SCP 以阻止非生产账户中的大型实例类型
cat > mining-prevention-scp.json << 'EOF'
{
"Version": "2012-10-17",
"Statement": [{
"Effect": "Deny",
"Action": "ec2:RunInstances",
"Resource": "arn:aws:ec2:*:*:instance/*",
"Condition": {
"ForAnyValue:StringLike": {
"ec2:InstanceType": ["p3.*", "p4.*", "g4.*", "g5.*"]
}
}
}]
}
EOF
# 设置账单告警以提早检测
aws cloudwatch put-metric-alarm \
--alarm-name high-ec2-spend \
--metric-name EstimatedCharges \
--namespace AWS/Billing \
--statistic Maximum \
--period 21600 \
--threshold 500 \
--comparison-operator GreaterThanThreshold \
--alarm-actions arn:aws:sns:us-east-1:ACCOUNT:billing-alerts
| 术语 | 定义 |
|---|---|
| 加密货币挖矿(Cryptomining) | 未授权使用云计算资源挖掘加密货币,通常使用门罗币(XMR),因为其 CPU 挖矿效率和隐私特性 |
| Stratum 协议(Stratum Protocol) | 挖矿池通信协议,通常在端口 3333、4444 或 14444 上运行,用于在矿工和矿池之间协调挖矿工作 |
| GuardDuty 加密货币发现(GuardDuty CryptoCurrency Finding) | AWS 威胁检测发现,标识与已知加密货币挖矿基础设施通信的 EC2、EKS 或 Lambda 资源 |
| Cost Anomaly Detection | AWS 服务,使用机器学习检测可能指示未授权资源配置的异常消费模式 |
| 计算滥用(Compute Abuse) | 未授权使用云计算资源,通常通过被入侵的凭据或被利用的应用程序,用于加密货币挖矿或其他目的 |
| 服务控制策略(Service Control Policy) | AWS Organizations 策略,可限制实例类型或区域,防止攻击者启动 GPU/计算优化型挖矿实例 |
场景背景:账单告警在周末从每天 200 美元激增到 15,000 美元后触发。调查发现 50 个 p3.8xlarge 实例在四个区域运行,全部由一名开发者的访问密钥启动。
方法:
常见陷阱:加密货币矿工通常在账户没有监控的区域启动实例。在所有区域启用 GuardDuty。挖矿实例可能使用在实例终止后仍然存在的竞价请求,因此还需取消攻击者创建的任何活跃的竞价机群请求和自动扩展组。
云加密货币挖矿事件报告
=====================================
账户: 123456789012(生产环境)
检测日期: 2026-02-23
告警来源: AWS Cost Anomaly Detection + GuardDuty
事件摘要:
启动的挖矿实例: 50 个(p3.8xlarge)
受影响区域: us-east-1, us-west-2, eu-west-1, ap-southeast-1
持续时间: 约 48 小时(2月21日 14:00 UTC 至 2月23日 10:00 UTC)
估计成本影响: 28,400 美元
挖掘的加密货币: 门罗币(XMR)
攻击向量:
被入侵的凭据: AKIA...WXYZ(developer-user)
暴露方式: 硬编码在公开 GitHub 仓库中
首次未授权 API 调用: 2月21日 13:47 UTC 来自 IP 185.x.x.x
GUARDDUTY 发现:
CryptoCurrency:EC2/BitcoinTool.B!DNS: 50 个发现
UnauthorizedAccess:EC2/TorIPCaller: 3 个发现
遏制操作:
[x] 所有挖矿实例已终止
[x] 被入侵的访问密钥已停用
[x] 通过 Secrets Manager 颁发了新访问密钥
[x] SCP 已应用以拒绝 GPU 实例类型
[x] 已配置成本异常告警
[x] 已在所有区域启用 GuardDuty