挖矿木马——客户端挖矿分析分享

挖矿⽊马——客户端挖矿分析分享
前⾔:
本⽂主要从流量侧通过识别流量中的挖矿特征,从⽽识别出挖矿⾏为。能够快速分析出挖矿⾏为就要对挖矿的协议、通讯过程有所了解。
威胁:
挖矿⽊马现已成为了企业内部安全的主要威胁之⼀。在内⽹中遇到出现挖矿⽊马的原因⼀般分为服务器感染⽊马、PC 感染⽊马、⽹页挖矿脚本等,很多僵⼫⽹络也把挖矿作为主要的获利⼿段。由此对挖矿⽊马的检测能⼒成为了内⽹安全中⽐较重要的⼀部分。
挖矿过程中常⽤协议:
⼀、Getwork协议:getwork协议代表了GPU挖矿时代,需求主要源于挖矿程序与节点客户端分离,区块链数据与挖矿部件分离。通过HTTP传输发送的JSON-RPC⽅法。但⼤多数矿池现已不再⽀持GETWORK协议(⼩伙伴可⾃⾏了解)。
冷沉淀凝血因子
⼆、Getblocktemplate协议:getblocktemplate协议被开发并取代了⽼的getwork协议,getblocktemplate掌握区块链上与挖矿有关的
所有信息。矿池采⽤getblocktemplate协议与节点客户端交互,采⽤stratum协议与矿⼯交互,这是最典型的矿池搭建模式。相关数据如下:矿⼯联系该池并请求初始模板
{"id": 0, "method": "getblocktemplate", "params": [{"capabilities": ["coinbasetxn", "workid", "coinbase/append"]}]}
服务器将回复所需的全部细节,进⾏区块挖掘,如下:
{ "error": null, "result": { "coinbasetxn": { "data": "wkwkwkkwk" }, "previousblockhash": "wkwkwk", "transactions": [], "expires": 120, "target": "wkwkwk", "longpollid": "some gibberish", "height": 23957, "version": 2, "curtime": 1346886758, "mutable": ["coinbase/append"], "bits": "ffff001d" }, "id": 0}
{ "error": null, "result": { "coinbasetxn": { "data": "wkwkwkwk" }, "previousblockhash": "wkwkwk", "transactions": [], "expires": 120, "target": "wkwkwkwk", "lon 可以修正最初使⽤的模板请求,可以使⽤如下:
{"id": 0, "method": "getblocktemplate", "params": [{ "capabilities": ["coinbasetxn", "workid", "coinbase/append"],"longpollid": "some gibberish",}]}
出租汽车驾驶员从业资格管理规定{"id": 0, "method": "getblocktemplate", "params": [{ "capabilities": ["coinbasetxn", "workid", "coinbase/append"], "longpollid": "some gibberish",}]}
提交shares:当矿⼯到符合要求难度的⼯作时,可以将该块作为份额提交给服务器:
{"id": 0, "method": "submitblock","params": [ "wkwkwkwkkwk"]}
三、stratum协议:stratum协议是⽬前最常⽤的矿机和矿池之间的TCP通讯协议,stratum 协议为 JSON 的数据格式,所以数据使⽤JSON封装格式。通过json 内容,我们主要检测的特征字段有 id、
活动顶尖method、jsonrpc、params、result、login、pass、agent、mining.submit 等,通过对具体通信数据包进⾏相应特征字符串检测,以此来发现挖矿⾏为的存在。
详情如下:
⼀般矿机与矿池的通讯过程如下:通信过程主要分为矿机登记、任务下发、账号登录、结果提交与难度调整等部分。
我已故的公爵夫人
矿机登记以 mining.subscribe ⽅法向矿池连接:
{"id":1,"method":"mining.subscribe","params":[]}
矿池以 ify ⽅法返回细节信息:
{"id":1,"result":[["ify","ae6812eb4cd7735a302a8a9dd95cf71f"],"08000002",4],"error":null}
账号登录分为两种:直接登录、 jsonrpc ⽅式
在此处,⼤部分挖矿节点与矿池的通信是依靠 jsonrpc 来进⾏请求与相应的,这种⽅式也是依赖于 TCP 的 Stratum 协议,这也是我们在流量监测中常遇见的情形。
矿机直接通过 mining.authorize ⽅法登录:
{"params":["miner1","password"],"id":2,"method":"mining.authorize"}
通过 jsonrpc ⽅式登录:
{"id":1,"jsonrpc":"2.0","method":"login","params":{"login":"blue1","pass":"x","agent":"Windows NT 6.1; Win64; x64"}}
结果提交通过”mining.submit”⽅法向矿池提交任务,bf即为已分配的任务标识:
食品注册管理办法
{"params":["miner1","bf","00000001","504e86ed","b2957c02"],"id":4,"method":"mining.submit"}
难度调整以 mining.set_difficulty ⽅法调整难度:
{"id":null,"method":"mining.set_difficulty","params":[2]}
主要特征字段有 id、method、jsonrpc、params、result、login、pass、agent、mining.submit 等。
门罗币举例:
门罗币采⽤ Cryptonight 算法,公开提供的程序有 xmr-stak,xmrig,claymore 等,通过 suricata 来检测其流量特征,进⽽发现流量
中存在的挖矿⾏为。
贸易收支
xmrig
request:
{"id":x,"jsonrpc":"2.0","method":"login","params":{"login":"wkwk","pass":"x","agent":"wkwk","algo":["xxx","xxx","xxx"]}}{"id":x,"jsonrpc":"2.0","method":"submit" response:
{"params":{"blob":"wkwkkwk","taget":"wkwkwk","job_id":"wkwkwkwk"},"method":"wkwkkwk"}
xmr-stak
request:
{"method":"login","params":{"login":"wkwk","pass":"xxx","rigid":"","agent":"xxxxxx"},"id":1}{"method":"s
ubmit","params":{"id":"xx","job_id":"xxxxxx","nonce":"xx response:
{"method":"job","params":{"target":"wkwk","job_id":"wkwk","blob":"wkwk"}}
流量请求特征分析可以发现,请求中主要分为 login 操作与 submit 操作 , 对具体请求具体分析。
未完待续
通过以上的⽅式,基本能够发现⼤多数的挖矿⾏为。还可以依赖 IOC 的访问情况,发现有内⽹ IP 恶意连接 IOC,最终通过溯源分析发现感染挖矿⽊马。

本文发布于:2024-09-22 11:30:35,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/137003.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:挖矿   协议   矿池   发现   流量
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议