针对挖矿木马的一些基本认识

区块链和比特币的认识

  • 引言
  • 区块链
  • 什么是挖矿
  • 为啥要挖矿
  • 什么是矿池
  • 什么是挖矿钱包
  • 怎么挖矿
  • 怎么发现和预防

引言

写这篇文章主要是因为工作中很多朋友或者客户请求帮忙处理一些应急安全事件,在交流过程中,很多人都明白“挖矿”这个词,但是对为啥要挖矿、挖矿带来的利益作用、什么是矿池以及区块链等这些词一知半解,因此,尽量用白话文的方式加深一下自己的理解,如果有理解不到位的地方,请多多指教。

区块链

区块链是一种分布式的数据库,区块链中每一个区块可以用来记录多笔交易数据(如比特币的交易数据,A->B转账1个bit币),多个区块以链条式的方式串联在一起,就可以称为区块链。比特币就是利用区块链技术来实现去中心化。相当于你下载比特币客户端后,客户端就会自动从互联网上下载现有的区块链,类似于你拿到了比特币所有以往的交易账本。区块链在线演示平台

针对挖矿木马的一些基本认识_第1张图片
上图就是一个区块链,共有3个区块,单个区块中有区块编号、随机值、交易数据data、prev前一个区块的hash值,hash 当前区块的hash值,修改任意一个字符,hash值也会随之改变。

什么是挖矿

挖矿可以简单理解成计算当前区块的hash值,而计算hash值的人称为矿工。

比如现实中,A需向B转账了100元,那么A将这条信息发布出去(A->B 支付100元),
矿工拿到这条交易数据,就会查看区块链找到A的所有转账记录(区块链可以理解成账本),计算A账户中是否有足够的钱,有的话那么这条记录就会被矿工写到区块的交易数据区,计算hash值,生成新的区块发布到互联网,一旦被其他节点认可那么这个新区块就会添加到区块链的末尾,同步更新,B过一段时间后从区块链中找到A转账给自己的记录,并且确认区块合法,那么B就可以认为此次转账成功。
针对挖矿木马的一些基本认识_第2张图片
既然生成一个hash值如此容易,那么我们印象中的挖矿难是啥原因呢?
主要是因为对区块的hash值有一定的要求,比如要求hash值前4位为0的新区块才算合法区块,才能被其他节点认可,那么就需要修改区块里面的数据,在当前区块中交易数据不能修改(区块链的核心目的就是为了记录和保存真实的交易数据,如果能让你修改交易区数据,区块链就没有存在的意义了,保证交易数据的不可篡改可以理解为签名式验证,就比如某矿工抄错了某笔交易,别的节点在收到这个错误的区块的时候会主动验证里面的交易数据,发现错误,并舍弃,因为单笔交易数据是每个节点都能查询到的),那么矿工能修改的也就只有随机值了,矿工通过修改随机值来不断的生成hash值,直到hash值前4位为0。如上图中,区块1 随机值105500,区块2中的19200

为啥要挖矿

以比特币为例,如果没有没人挖矿,就生成不了新的区块,区块链就不会增加,那么比特币就没法进行交易,无法进行流通。

为了保证不断有人进行挖矿,不断有新的区块产生,保证区块链的增长,比特币创始人就说谁在10分钟内生成新的区块并被其他节点认可,那么就会给挖矿的人一定的比特币奖励。这个时候就是拼计算机的运算速度了,为了保证10分钟左右才能生成新的区块,比特币会不断的调整挖矿的难度,比如这个周要求hash值前4位为0的才算合法,那么下周调整为前5位为0的新区块才算合法,那么难度就会不断的加大。全球矿工同时挖矿,拼的就是谁先挖到矿(生成新的区块)。

什么是矿池

矿池大家可以理解为很多挖矿机组成的一个整体,因为硬件的提升,以及每10分钟内全球只有一个新区块能够被认可,那么很多私人靠单一的计算机运算量很难在短短10分钟内生成新得区块,那么就把很多挖矿机器组合到一起,由矿池统一分发任务,一旦生成新的区块,那么矿池就会根据每台机器的功劳进行分发奖励,矿池就类似于集资分红,比如某个矿池在某个时间段生成新区块并被认可,比特币创始人给了10个比特币给矿池,那么矿池可能扣掉手续费1个比特币,把剩下的9个比特币按照功劳分发给矿池里的矿工。

什么是挖矿钱包

比特币在实际的交易中用户的名称是一串很长的字符串,类似于银行卡号,比如新创建的账户,那么里面的比特币的额度就是0,如果你利用木马等手段找肉鸡进行挖矿,现在一般的都是加入矿池进行挖矿,那么如果挖矿成功了,那么矿池的钱包账户就会向你的钱包里面转0.1BIT,那么你卡上就是0.1个比特币。

怎么挖矿

github上都有相应的开源挖矿软件或源码,搜都一大堆,这边主要看一下挖矿木马的通信流量是什么样子的?
针对挖矿木马的一些基本认识_第3张图片

如上面2个图中,wireshark抓包,右键查看TCP流,可以看到类似于JSON格式的通信数据,如上图里面key: login对应42d4…开头的一串值,这个就是挖矿钱包,挖矿源码是XMRig,通过这个钱包很难查到这个钱包的拥有者,只能查到当前钱包有多少额度,隐蔽性很高,所以比特币常被用来进行非法交易,洗钱勒索啥的。

怎么发现和预防

日常生活中碰到很多挖矿的程序,直接一上来就消耗全部资源进行挖矿的木马程序相对比较少,大部分都是在受害端空闲的时候进行挖矿,受害者活动时间呢挖矿程序是停止的,这样有很强的隐蔽性,很多客户机器中招了1~2年后才被发现都是常态,很多时候杀毒都没用,因为很多木马在植入的时候就加入系统或者杀毒软件白名单了,而且挖矿很多时候并不存在恶意的攻击行为,不会像远控或者病毒蠕虫之类的进行破坏操作。

后面抽空会找一个具体的挖矿木马,写一些用Pchunter进行手工处理的文章。

目前常见的发现处理方式:
1、个人终端杀毒必备,445、139等端口最好关闭;
2、有条件的在网关接口部署态势感知设备或者开源的suricata,把一些常见的矿池地址以黑域名的方式添加进去,同时也可以针对特定的挖矿家族进行特征的提取。(这边我就不写具体的规则了,我看了一下suricata里面的规则,里面就有一些,大家可以去研究一下)
3、Linux系统挖矿木马的处理目前建议使用一些开源的杀毒软件扫一下,然后通过TOP进程定位到挖矿木马进行分析处理。

你可能感兴趣的:(安全知识)