30行代码搞定Monero活跃节点探测

访客4年前关于黑客接单988

概要

Monero 节点探测在这里指通过技术手段识别 Monero 区块链节点,目的是识别 Monero *** 节点的规模,以及关键节点地址,Monero(XMR,门罗币)是一种以隐私反追踪为主要卖点的加密货币,故意隐藏钱包地址和交易,允许人们秘密使用货币。

1. 门罗区块链简介

Monero 区块链技术主要由分布式存储,P2P *** ,共识机制组成,其工作验证算法 CryptoNight 是为 AES 密集型和消耗 CPU 的操作,显著降低了 GPU 对 CPU 的优势。受到 *** 黑产攻击者、自动化僵尸 *** 控制者的热烈欢迎,为肉鸡控制者提供了一种利用 CPU 算力进行变现的一种技术手段,目前比较知名的挖矿团伙有 watchdogs miner,ddgbotnet 挖矿团伙,pm miner,kingsing miner,8220 挖矿团伙等,他们长期偏向于 Linux 服务器进行挖矿攻击活动,挖掘的都是 Monero 币,已知的几个团伙目前收益更高的约在 1000 万RMB。

分布式存储指的是 *** 上大部分节点都保存了整条区块链,P2P *** 指的是节点即可以当作服务端,也可以当作客户端,共识机制指的是 proof of Work,工作量证明。

2.?门罗币区块链 *** 结构

门罗币区块链 *** 结构图,用如下比特币区块链 *** 结构图来表示。钱包 W ?(wallet)

挖矿 M (Mining),区块链数据库 B, *** 路由节点 N,SPV 简化交易验证轻节点,Bitcoin protocol 可以理解为 monero protocol,S 代表 Stratum 矿机和矿池之间的 TCP 通讯协议,P 指的是 poo l矿池。此外,Solo Miners 指的是独立矿工,pool miners 指的是使用矿池矿工,两者的区别在于挖矿者是否需要搭建 monero 的全节点,另外矿池矿工是共享收益,且需要交一定比例的收益。磨刀不误砍柴工,简要理解区块链:节点的功能存储区块链数据库以及进行 *** 路由通讯,普通用户转账就是在节点区块链数据库插入数据,但这个数据需要有矿工以特定方式进行运算,然后将运算后的结果同步到节点里,经过特定算法确认才会同步到其他节点数据库中,超过 51% 节点同步完成才算是完成交易过程,矿池的核心工作是给矿工分配任务,统计工作量并分发收益。从节点中获取待运算的数据,发送给矿工进行运算,然后拿运算后的结果同步到节点数据库中,运算成功获得一部分奖励,根据每个矿工的 Hash 量,之后来分配获得的奖励,独立矿工则不是按劳分配收益,挖矿成功则获得成功的一整份收益,如果不成功则没有收益。挖矿本质上是执行 Hash 函数的过程,而 Hash 函数是一个单输入单输出函数,输入数据就是一个区块头,普通矿工会登录矿池,提交自己的矿池账号(可以是钱包地址,也可以是代号)和密码(可以没有),矿池记录该账号的会话,矿池发送任务数据发送给矿工,矿工将结果数据发送给矿池。

Stratum 是挖矿的数据结构,如下 json 格式

矿池源码:Powerpool,支持混合挖矿,源码地址?https://github.com/sigwo/powerpool

门罗币节点源码 https://github.com/monero-project/monero

门罗币挖矿机源码 https://github.com/xmrig/xmrig

门罗钱包工具 https://www.getmonero.org/downloads/#cli

Stratum 协议源码 https://github.com/stratum/stratum

3. Monero 全网活跃节点分布

Monero 区块链的节点位置主要分布在中国、美国、欧洲,在其他国家和地区也有少量分布,节点的分布和国家区块链用户数量有关,区块链节点越多,说明该区块链的用户也越多。

Monero 节点搭建

1.?Monero 下载

源码下载地址:

https://github.com/monero-project/monerolinux平台编译好的程序下载:https://getmonero.org/downloads/https://downloads.getmonero.org/gui/linux64https://downloads.getmonero.org/cli/linux64需要安装最新版本才能正常使用,本人原先测试的是 0.13 版本,现在最新版是 0.17 版本。

2. 启动

使用 setsid https://www.freebuf.com/articles/network/monerd 启动门罗币节点初始化程序,或者使用其他节点地址来初始化节点信息。https://www.freebuf.com/articles/network/monerod --bootstrap-daemon-address node.moneroworld.com:18089

这条命令指的是使用目标节点当作指定的同步数据的节点,可以理解为主从复制,从目标节点拷贝数据到本地。

3. 获取其他节点存储节点

Monerod 程序自带查询 *** 节点的参数,可以使用 bootstrap-daemon-address 参数来同步远程的节点中的区块数据,以及存储的其他 monero 币 *** 节点的数据,使用 --seed-node 参数和 print_pl 参数就能够将所有同步到的所有存储的 *** 节点以字符串的方式打印出来,下方示例是 *** 流量示例。

https://www.freebuf.com/articles/network/monerod --seed-node test.com print_pl?得到解析后的 *** 节点(这里要注意的是,需要先将目标节点信息同步到本地即步骤 2,这样执行才有结果)。Monerod 节点程序每次只能同步一个节点存储的节点数据,每次同步的时候除了同步节点数据外,还会同步其他区块数据。

以下是节点查询时的流量数据:之一次连接其他节点时的流量数据,可以看到第二次的响应包中包含其他节点存储的其他节点的数据,通过解析返回结果,又重新进行查询即可获得全网节点 IP 和端口。

Monero?节点探测

1.?初始接入节点选择

新的 Monero 节点需要加入整个 Monero 节点的 P2P *** 当中,需要和其他的一个或多个 P2P 节点进行连接以融入 P2P *** 节点,Monero 的 *** 节点主要包含直连型和隐藏 *** 型,直连型指的是直接使用节点就能进行连接,而隐藏 *** 型则需要使用 Tor 或者其他 *** 的方式进行连接。

Monero 节点核心代码在 Github 上有公开,Github 的项目地址为 github.com/monero-project/monero,Monero 节点项目程序最新版默认硬编码配置了 14 节点 IP,这些节点也属于整个 Monero 区块链 *** 中的核心节点。


以下是 Monero 项目中核心节点的 IP 信息:在其他来源直接下载的编译程序中节点的配置会有些许差别,这个是在 getmonero 下载的 0.16 版本程序中硬编码存储的 24 个节点地址,有部分和上方节点重合。212.83.175.67:280805.9.100.248:28080163.172.182.165:28080195.154.123.123:28080212.83.172.165:28080192.110.160.146:28080162.210.173.150:38080162.210.173.151:38080192.110.160.146:38080107.152.130.98:18080212.83.175.67:180805.9.100.248:18080163.172.182.165:18080161.67.132.39:18080198.74.231.92:18080195.154.123.123:18080212.83.172.165:18080192.110.160.146:1808088.198.163.90:1808095.217.25.101:18080209.250.243.248:18080104.238.221.81:1808066.85.74.134:18080


除了默认配置节点外,还可以使用其他平台公开的可信 Monero 节点。

TOR 远程节点具有隐藏源 IP 的能力可以避免被追踪,以下是公开的部分 TOR 远程节点。

2. 爬取模式选择

查询出来的节点数据,如果包含 white 标志,说明是活跃节点。如果是 gray 标志,则表明一段时间内未交互,无法确定开放状态。对于节点的爬取,有两种方式,之一种去重只爬取 white 节点,第二种爬取所有节点,在爬取之前判断节点对应端口是否开放,然后进行爬取,第二种爬取 *** 爬取时间相对较长,但爬取到的活跃节点数更多。


3. 实现方式选择

几种实现 *** :

1. 使用扫描器构造请求包全网探测。

2. 使用脚本程序构造对应协议探测包与对应节点进行交互,然后同步存储的节点信息,接着对节点进行逐个节点信息读取,构造对应协议包的过程比较复杂,需要较长的编码时间。

3. 使用 shell 脚本,调用 monerod 程序的自带读取远程节点存储节点信息的功能,存储到本地,然后不断遍历 IP 列表,最后将存储的信息汇总。

从覆盖度层面来说,2 和 3 方式实现探测到的节点数量会大于方式 1 探测到的节点数量,因为这些节点的端口非固定端口,使用扫描器全网探测的方式无法完全覆盖全部端口,而且探测次数更少。

从投入的时间来讲,使用方式 3 实现最少。

本人这里选择用 shell 脚本进行自动化爬取,通过 monero 节点程序直接进行读取,首先需要准备环境信息,1)安装 nc 命令;2)将 monero 节点程序放在外网可访问处;3)生成一个基础特定格式的 monero 节点列表文件,monero_node1,里面的格式示例:38 个 A+192.168.1.1 空格,下面就是全部代码:

4. 探测结果

在 2019 年 5 月的时候进行探测的结果,总节点数有 15709 个,总节点包含开放的活跃节点和未开放不活跃节点,这些信息是通过遍历所有活跃的节点中存储的连接过该节点的 IP 总和。探测活跃节点数为 1812。通过活跃节点之间存储的 IP 关系进行绘图分析,将所有的信息梳理成节点 IP ->节点 IP 存储的其他 IP,用来得到 IP 间的连接关系,可以看到下图中的大红原点属于该门罗币节点的主要节点,总共有 35 个 IP 地址,除了 Monero 源码中配置的 14 个外,还有不同的区块链服务商也有提供 21 个核心节点。

5. 攻击方式思考

大家可以根据 monero 活跃节点关系图想出一些针对 Monero 的攻击方式,对应攻击方式同样也可以用到相似类型区块链当中,以下前两种是个人的想法,其他的是网上摘录下来的。如果大家有新的攻击思路也可以在下方评论区进行留言讨论。

我这里举例几种攻击 *** :

1)挖矿算力盗窃攻击,通过在 *** 设备中监控 monero 挖矿提交的相关 hash 区块,将它同时提交到自己指定的核心 *** 节点中,只要自己的 *** 速度够快,这个 hash 块就会被窃取,这种是针对挖矿者还有矿池的攻击。

2)Monero 节点接入 IP 监控,削弱 Monero 区块链的隐蔽性,可以知道所有交易发生时的接入 IP,针对那些不是使用平台和 Tor 等隐藏 *** 的使用者的连接 IP 会暴露,可以通过 IP 进一步分析连接者的身份。

3)日蚀攻击:日蚀攻击是一种针对 P2P *** 的攻击。这种攻击 *** 与共识算法关系不大,理论上讲对 PoW、PoS、DbFT 等共识算法都有效,但是它非常依赖于节点在 P2P *** 处理上的漏洞,因此实施攻击不具备普适性。

4)51% 算力攻击:51% 算力攻击是区块链最著名的攻击方式之一。在一个 POW 共识的区块链 *** 中,算力即是权力。当超过 50% 的算力都由一人控制时,此人就可以任意的撤销和阻止交易,进而实现双花。这种攻击在大型 *** 中较难实现,在小型 *** 中发生的可能性更高。在 POS 共识中与之类似的有币龄累计攻击和长距离攻击。

5)Ddos 攻击,分布式拒绝服务攻击,可以通过门罗 P2P 相关协议进行交互,使得目标节点资源耗尽,无法处理其他的正常服务,通常和其他攻击方式一起使用。


附录

Pm miner 挖矿团伙,是因为攻击者的木马安装脚本的名称到目前为止一直都是 pm.sh,所以我称它为 pm miner 挖矿团伙,该挖矿团伙活跃目前仍比较活跃,常使用 redis 空口令以及其他 rce 方式进行传播,攻击者也会挑选目标进行进一步的内网渗透攻击,使用自动化脚本进行 sshd 后门窃取账号密码,痕迹清除,以及回传数据等操作,攻击者会根据拿到的数据筛选目标进行进一步攻击,从而扩大攻击战果。

Watchdogs miner 挖矿团伙,早期版本挖矿木马名称为 watchdog,后期该挖矿木马一直都在更新,会使用动态链接库来隐藏木马进程,目前的该挖矿团伙初始化脚本中还有 watchdog_url 等关键字,初始化 shell 脚本名称为 init.sh。ddgbotnet 挖矿团伙,因为木马文件名称为 ddgxxx,并且会在系统中创建 .ddg 目录,所以称之为 ddgbotnet 挖矿团伙,该团伙的木马下载地址之前一直为 i.sh,经过更新有使用 P2P *** ,主要利用 redis 弱口令进行传播。Kingsing miner 挖矿团伙,因为木马组件中一个挖矿木马文件名称为 Kingsing,使用 go 语言编写,所以称之为 kingsing 木马,常使用 redis 空口令漏洞,以及 web 类命令执行漏洞进行传播。8220 挖矿团伙,早期的挖矿木马下载地址全是 8220 端口,使用 docker 进行部署的,后期有了比较大的变化,但木马还是原来的木马。

相关文章

找黑客查询手机定位多少钱(黑客定位对方手机号)-平板电脑可以黑客吗

找黑客查询手机定位多少钱(黑客定位对方手机号)-平板电脑可以黑客吗

找黑客查询手机定位多少钱(黑客定位对方手机号)(tiechemo.com)一直致力于黑客(HACK)技术、黑客QQ群、信息安全、web安全、渗透运维、黑客工具、找黑客、黑客联系方式、24小时在线网络黑...

“死侍先生”瑞恩·雷诺兹分享一封本应在2016年

据外媒报道,距离瑞恩·雷诺兹主演的《死侍》已经过去整整五年时间,该系列影片第一部于2016年2月上映。据悉,在该影片上映一个月后,一位名叫Hunter的粉丝给雷诺兹写了一封信,确切地说,是给“死侍先生...

美护士全家8口7人感染深圳市生活频道新冠病毒 “你不想和家人

  美国疫情数据连日来屡创新高,但部分州却仍然没有采取防疫措施,很多地方的民众也强烈反对为防控疫情而关停经济,、甚至还在怀疑新冠病毒的存在。对此,新泽西州一位感染了新冠病毒的护士用自己全家的经历告诉人...

dnf2019国庆套光环(dnf2019国庆光环选哪个)

欣悦组员是DNF当地足球运动员的代表,民俗广为流传着一个传说:哪些欣悦组员能提升谷底发生爆炸率,哪些欣悦组员能提升团战逆风翻盘概率,欣悦还能找在线客服掀总冠军,总而言之,欣悦组员足球运动员的神话传说。...

女生做什么工作钱多(女生做哪些行业收入高)

女生做什么工作钱多(女生做哪些行业收入高)

在中国人的传统意识里,男人的工资就要比女人高,否则男人没有地位,即使是现在也有很多男人这样想。但是现在社会上又不上女强人,她们证明一点不比男人差,反而比男人做的更好,即使在我们的周围也有不少女孩收入非...

网上求信誉黑客联系方式(有信誉的黑客联系方式是多少)

一、网上求信誉黑客联系方式(有信誉的黑客联系方式是多少)方法总结 1、找黑客,有真正技术和信誉的。别去黑吧,你去了才发现是个错误。首先你得话30QQ币买邀请码,谁有这个钱。其次,黑吧八年了,虽然期间...