溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

如何用代碼搞定Monero活躍節(jié)點(diǎn)探測(cè)

發(fā)布時(shí)間:2021-12-27 15:41:22 來(lái)源:億速云 閱讀:205 作者:柒染 欄目:網(wǎng)絡(luò)安全

這篇文章將為大家詳細(xì)講解有關(guān)如何用代碼搞定Monero活躍節(jié)點(diǎn)探測(cè),文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對(duì)相關(guān)知識(shí)有一定的了解。

概要

Monero 節(jié)點(diǎn)探測(cè)在這里指通過(guò)技術(shù)手段識(shí)別 Monero 區(qū)塊鏈節(jié)點(diǎn),目的是識(shí)別 Monero 網(wǎng)絡(luò)節(jié)點(diǎn)的規(guī)模,以及關(guān)鍵節(jié)點(diǎn)地址,Monero(XMR,門羅幣)是一種以隱私反追蹤為主要賣點(diǎn)的加密貨幣,故意隱藏錢包地址和交易,允許人們秘密使用貨幣。

1. 門羅區(qū)塊鏈簡(jiǎn)介

Monero 區(qū)塊鏈技術(shù)主要由分布式存儲(chǔ),P2P 網(wǎng)絡(luò),共識(shí)機(jī)制組成,其工作驗(yàn)證算法 CryptoNight 是為 AES 密集型和消耗 CPU 的操作,顯著降低了 GPU 對(duì) CPU 的優(yōu)勢(shì)。受到網(wǎng)絡(luò)黑產(chǎn)攻擊者、自動(dòng)化僵尸網(wǎng)絡(luò)控制者的熱烈歡迎,為肉雞控制者提供了一種利用 CPU 算力進(jìn)行變現(xiàn)的一種技術(shù)手段,目前比較知名的挖礦團(tuán)伙有 watchdogs miner,ddgbotnet 挖礦團(tuán)伙,pm miner,kingsing miner,8220 挖礦團(tuán)伙等,他們長(zhǎng)期偏向于 Linux 服務(wù)器進(jìn)行挖礦攻擊活動(dòng),挖掘的都是 Monero 幣,已知的幾個(gè)團(tuán)伙目前收益最高的約在 1000 萬(wàn)RMB。

分布式存儲(chǔ)指的是網(wǎng)絡(luò)上大部分節(jié)點(diǎn)都保存了整條區(qū)塊鏈,P2P 網(wǎng)絡(luò)指的是節(jié)點(diǎn)即可以當(dāng)作服務(wù)端,也可以當(dāng)作客戶端,共識(shí)機(jī)制指的是 proof of Work,工作量證明。

2. 門羅幣區(qū)塊鏈網(wǎng)絡(luò)結(jié)構(gòu)

門羅幣區(qū)塊鏈網(wǎng)絡(luò)結(jié)構(gòu)圖,用如下比特幣區(qū)塊鏈網(wǎng)絡(luò)結(jié)構(gòu)圖來(lái)表示。錢包 W  (wallet)

挖礦 M (Mining),區(qū)塊鏈數(shù)據(jù)庫(kù) B,網(wǎng)絡(luò)路由節(jié)點(diǎn) N,SPV 簡(jiǎn)化交易驗(yàn)證輕節(jié)點(diǎn),Bitcoin protocol 可以理解為 monero protocol,S 代表 Stratum 礦機(jī)和礦池之間的 TCP 通訊協(xié)議,P 指的是 poo l礦池。此外,Solo Miners 指的是獨(dú)立礦工,pool miners 指的是使用礦池礦工,兩者的區(qū)別在于挖礦者是否需要搭建 monero 的全節(jié)點(diǎn),另外礦池礦工是共享收益,且需要交一定比例的收益。磨刀不誤砍柴工,簡(jiǎn)要理解區(qū)塊鏈:節(jié)點(diǎn)的功能存儲(chǔ)區(qū)塊鏈數(shù)據(jù)庫(kù)以及進(jìn)行網(wǎng)絡(luò)路由通訊,普通用戶轉(zhuǎn)賬就是在節(jié)點(diǎn)區(qū)塊鏈數(shù)據(jù)庫(kù)插入數(shù)據(jù),但這個(gè)數(shù)據(jù)需要有礦工以特定方式進(jìn)行運(yùn)算,然后將運(yùn)算后的結(jié)果同步到節(jié)點(diǎn)里,經(jīng)過(guò)特定算法確認(rèn)才會(huì)同步到其他節(jié)點(diǎn)數(shù)據(jù)庫(kù)中,超過(guò) 51% 節(jié)點(diǎn)同步完成才算是完成交易過(guò)程,礦池的核心工作是給礦工分配任務(wù),統(tǒng)計(jì)工作量并分發(fā)收益。從節(jié)點(diǎn)中獲取待運(yùn)算的數(shù)據(jù),發(fā)送給礦工進(jìn)行運(yùn)算,然后拿運(yùn)算后的結(jié)果同步到節(jié)點(diǎn)數(shù)據(jù)庫(kù)中,運(yùn)算成功獲得一部分獎(jiǎng)勵(lì),根據(jù)每個(gè)礦工的 Hash 量,之后來(lái)分配獲得的獎(jiǎng)勵(lì),獨(dú)立礦工則不是按勞分配收益,挖礦成功則獲得成功的一整份收益,如果不成功則沒(méi)有收益。挖礦本質(zhì)上是執(zhí)行 Hash 函數(shù)的過(guò)程,而 Hash 函數(shù)是一個(gè)單輸入單輸出函數(shù),輸入數(shù)據(jù)就是一個(gè)區(qū)塊頭,普通礦工會(huì)登錄礦池,提交自己的礦池賬號(hào)(可以是錢包地址,也可以是代號(hào))和密碼(可以沒(méi)有),礦池記錄該賬號(hào)的會(huì)話,礦池發(fā)送任務(wù)數(shù)據(jù)發(fā)送給礦工,礦工將結(jié)果數(shù)據(jù)發(fā)送給礦池。

Stratum 是挖礦的數(shù)據(jù)結(jié)構(gòu),如下 json 格式

如何用代碼搞定Monero活躍節(jié)點(diǎn)探測(cè)

礦池源碼:Powerpool,支持混合挖礦,源碼地址 https://github.com/sigwo/powerpool

門羅幣節(jié)點(diǎn)源碼 https://github.com/monero-project/monero

門羅幣挖礦機(jī)源碼 https://github.com/xmrig/xmrig

門羅錢包工具 https://www.getmonero.org/downloads/#cli

Stratum 協(xié)議源碼 https://github.com/stratum/stratum

如何用代碼搞定Monero活躍節(jié)點(diǎn)探測(cè)

3. Monero 全網(wǎng)活躍節(jié)點(diǎn)分布

Monero 區(qū)塊鏈的節(jié)點(diǎn)位置主要分布在中國(guó)、美國(guó)、歐洲,在其他國(guó)家和地區(qū)也有少量分布,節(jié)點(diǎn)的分布和國(guó)家區(qū)塊鏈用戶數(shù)量有關(guān),區(qū)塊鏈節(jié)點(diǎn)越多,說(shuō)明該區(qū)塊鏈的用戶也越多。

如何用代碼搞定Monero活躍節(jié)點(diǎn)探測(cè)

Monero 節(jié)點(diǎn)搭建

1. Monero 下載

源碼下載地址:

https://github.com/monero-project/monerolinux平臺(tái)編譯好的程序下載:https://getmonero.org/downloads/https://downloads.getmonero.org/gui/linux64https://downloads.getmonero.org/cli/linux64需要安裝最新版本才能正常使用,本人原先測(cè)試的是 0.13 版本,現(xiàn)在最新版是 0.17 版本。

2. 啟動(dòng)

使用 setsid ./monerd 啟動(dòng)門羅幣節(jié)點(diǎn)初始化程序,或者使用其他節(jié)點(diǎn)地址來(lái)初始化節(jié)點(diǎn)信息。./monerod --bootstrap-daemon-address node.moneroworld.com:18089

這條命令指的是使用目標(biāo)節(jié)點(diǎn)當(dāng)作指定的同步數(shù)據(jù)的節(jié)點(diǎn),可以理解為主從復(fù)制,從目標(biāo)節(jié)點(diǎn)拷貝數(shù)據(jù)到本地。

如何用代碼搞定Monero活躍節(jié)點(diǎn)探測(cè)

3. 獲取其他節(jié)點(diǎn)存儲(chǔ)節(jié)點(diǎn)

Monerod 程序自帶查詢網(wǎng)絡(luò)節(jié)點(diǎn)的參數(shù),可以使用 bootstrap-daemon-address 參數(shù)來(lái)同步遠(yuǎn)程的節(jié)點(diǎn)中的區(qū)塊數(shù)據(jù),以及存儲(chǔ)的其他 monero 幣網(wǎng)絡(luò)節(jié)點(diǎn)的數(shù)據(jù),使用 --seed-node 參數(shù)和 print_pl 參數(shù)就能夠?qū)⑺型降降乃写鎯?chǔ)的網(wǎng)絡(luò)節(jié)點(diǎn)以字符串的方式打印出來(lái),下方示例是網(wǎng)絡(luò)流量示例。

./monerod --seed-node test.com print_pl 得到解析后的網(wǎng)絡(luò)節(jié)點(diǎn)(這里要注意的是,需要先將目標(biāo)節(jié)點(diǎn)信息同步到本地即步驟 2,這樣執(zhí)行才有結(jié)果)。Monerod 節(jié)點(diǎn)程序每次只能同步一個(gè)節(jié)點(diǎn)存儲(chǔ)的節(jié)點(diǎn)數(shù)據(jù),每次同步的時(shí)候除了同步節(jié)點(diǎn)數(shù)據(jù)外,還會(huì)同步其他區(qū)塊數(shù)據(jù)。

以下是節(jié)點(diǎn)查詢時(shí)的流量數(shù)據(jù):第一次連接其他節(jié)點(diǎn)時(shí)的流量數(shù)據(jù),可以看到第二次的響應(yīng)包中包含其他節(jié)點(diǎn)存儲(chǔ)的其他節(jié)點(diǎn)的數(shù)據(jù),通過(guò)解析返回結(jié)果,又重新進(jìn)行查詢即可獲得全網(wǎng)節(jié)點(diǎn) IP 和端口。

如何用代碼搞定Monero活躍節(jié)點(diǎn)探測(cè)

Monero 節(jié)點(diǎn)探測(cè)

1. 初始接入節(jié)點(diǎn)選擇

新的 Monero 節(jié)點(diǎn)需要加入整個(gè) Monero 節(jié)點(diǎn)的 P2P 網(wǎng)絡(luò)當(dāng)中,需要和其他的一個(gè)或多個(gè) P2P 節(jié)點(diǎn)進(jìn)行連接以融入 P2P 網(wǎng)絡(luò)節(jié)點(diǎn),Monero 的網(wǎng)絡(luò)節(jié)點(diǎn)主要包含直連型和隱藏網(wǎng)絡(luò)型,直連型指的是直接使用節(jié)點(diǎn)就能進(jìn)行連接,而隱藏網(wǎng)絡(luò)型則需要使用 Tor 或者其他代理的方式進(jìn)行連接。

Monero 節(jié)點(diǎn)核心代碼在 Github 上有公開,Github 的項(xiàng)目地址為 github.com/monero-project/monero,Monero 節(jié)點(diǎn)項(xiàng)目程序最新版默認(rèn)硬編碼配置了 14 節(jié)點(diǎn) IP,這些節(jié)點(diǎn)也屬于整個(gè) Monero 區(qū)塊鏈網(wǎng)絡(luò)中的核心節(jié)點(diǎn)。

以下是 Monero 項(xiàng)目中核心節(jié)點(diǎn)的 IP 信息:如何用代碼搞定Monero活躍節(jié)點(diǎn)探測(cè)在其他來(lái)源直接下載的編譯程序中節(jié)點(diǎn)的配置會(huì)有些許差別,這個(gè)是在 getmonero 下載的 0.16 版本程序中硬編碼存儲(chǔ)的 24 個(gè)節(jié)點(diǎn)地址,有部分和上方節(jié)點(diǎn)重合。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

除了默認(rèn)配置節(jié)點(diǎn)外,還可以使用其他平臺(tái)公開的可信 Monero 節(jié)點(diǎn)。

如何用代碼搞定Monero活躍節(jié)點(diǎn)探測(cè)

TOR 遠(yuǎn)程節(jié)點(diǎn)具有隱藏源 IP 的能力可以避免被追蹤,以下是公開的部分 TOR 遠(yuǎn)程節(jié)點(diǎn)。

如何用代碼搞定Monero活躍節(jié)點(diǎn)探測(cè)

2. 爬取模式選擇

查詢出來(lái)的節(jié)點(diǎn)數(shù)據(jù),如果包含 white 標(biāo)志,說(shuō)明是活躍節(jié)點(diǎn)。如果是 gray 標(biāo)志,則表明一段時(shí)間內(nèi)未交互,無(wú)法確定開放狀態(tài)。對(duì)于節(jié)點(diǎn)的爬取,有兩種方式,第一種去重只爬取 white 節(jié)點(diǎn),第二種爬取所有節(jié)點(diǎn),在爬取之前判斷節(jié)點(diǎn)對(duì)應(yīng)端口是否開放,然后進(jìn)行爬取,第二種爬取方法爬取時(shí)間相對(duì)較長(zhǎng),但爬取到的活躍節(jié)點(diǎn)數(shù)更多。

如何用代碼搞定Monero活躍節(jié)點(diǎn)探測(cè)

3. 實(shí)現(xiàn)方式選擇

幾種實(shí)現(xiàn)方法:

1. 使用掃描器構(gòu)造請(qǐng)求包全網(wǎng)探測(cè)。

2. 使用腳本程序構(gòu)造對(duì)應(yīng)協(xié)議探測(cè)包與對(duì)應(yīng)節(jié)點(diǎn)進(jìn)行交互,然后同步存儲(chǔ)的節(jié)點(diǎn)信息,接著對(duì)節(jié)點(diǎn)進(jìn)行逐個(gè)節(jié)點(diǎn)信息讀取,構(gòu)造對(duì)應(yīng)協(xié)議包的過(guò)程比較復(fù)雜,需要較長(zhǎng)的編碼時(shí)間。

3. 使用 shell 腳本,調(diào)用 monerod 程序的自帶讀取遠(yuǎn)程節(jié)點(diǎn)存儲(chǔ)節(jié)點(diǎn)信息的功能,存儲(chǔ)到本地,然后不斷遍歷 IP 列表,最后將存儲(chǔ)的信息匯總。

從覆蓋度層面來(lái)說(shuō),2 和 3 方式實(shí)現(xiàn)探測(cè)到的節(jié)點(diǎn)數(shù)量會(huì)大于方式 1 探測(cè)到的節(jié)點(diǎn)數(shù)量,因?yàn)檫@些節(jié)點(diǎn)的端口非固定端口,使用掃描器全網(wǎng)探測(cè)的方式無(wú)法完全覆蓋全部端口,而且探測(cè)次數(shù)更少。

從投入的時(shí)間來(lái)講,使用方式 3 實(shí)現(xiàn)最少。

本人這里選擇用 shell 腳本進(jìn)行自動(dòng)化爬取,通過(guò) monero 節(jié)點(diǎn)程序直接進(jìn)行讀取,首先需要準(zhǔn)備環(huán)境信息,1)安裝 nc 命令;2)將 monero 節(jié)點(diǎn)程序放在外網(wǎng)可訪問(wèn)處;3)生成一個(gè)基礎(chǔ)特定格式的 monero 節(jié)點(diǎn)列表文件,monero_node1,里面的格式示例:38 個(gè) A+192.168.1.1 空格,下面就是全部代碼:如何用代碼搞定Monero活躍節(jié)點(diǎn)探測(cè)

4. 探測(cè)結(jié)果

在 2019 年 5 月的時(shí)候進(jìn)行探測(cè)的結(jié)果,總節(jié)點(diǎn)數(shù)有 15709 個(gè),總節(jié)點(diǎn)包含開放的活躍節(jié)點(diǎn)和未開放不活躍節(jié)點(diǎn),這些信息是通過(guò)遍歷所有活躍的節(jié)點(diǎn)中存儲(chǔ)的連接過(guò)該節(jié)點(diǎn)的 IP 總和。如何用代碼搞定Monero活躍節(jié)點(diǎn)探測(cè)探測(cè)活躍節(jié)點(diǎn)數(shù)為 1812。通過(guò)活躍節(jié)點(diǎn)之間存儲(chǔ)的 IP 關(guān)系進(jìn)行繪圖分析,將所有的信息梳理成節(jié)點(diǎn) IP ->節(jié)點(diǎn) IP 存儲(chǔ)的其他 IP,用來(lái)得到 IP 間的連接關(guān)系,可以看到下圖中的大紅原點(diǎn)屬于該門羅幣節(jié)點(diǎn)的主要節(jié)點(diǎn),總共有 35 個(gè) IP 地址,除了 Monero 源碼中配置的 14 個(gè)外,還有不同的區(qū)塊鏈服務(wù)商也有提供 21 個(gè)核心節(jié)點(diǎn)。如何用代碼搞定Monero活躍節(jié)點(diǎn)探測(cè)

5. 攻擊方式思考

大家可以根據(jù) monero 活躍節(jié)點(diǎn)關(guān)系圖想出一些針對(duì) Monero 的攻擊方式,對(duì)應(yīng)攻擊方式同樣也可以用到相似類型區(qū)塊鏈當(dāng)中,以下前兩種是個(gè)人的想法,其他的是網(wǎng)上摘錄下來(lái)的。如果大家有新的攻擊思路也可以在下方評(píng)論區(qū)進(jìn)行留言討論。

我這里舉例幾種攻擊方法:

1)挖礦算力盜竊攻擊,通過(guò)在網(wǎng)絡(luò)設(shè)備中監(jiān)控 monero 挖礦提交的相關(guān) hash 區(qū)塊,將它同時(shí)提交到自己指定的核心網(wǎng)絡(luò)節(jié)點(diǎn)中,只要自己的網(wǎng)絡(luò)速度夠快,這個(gè) hash 塊就會(huì)被竊取,這種是針對(duì)挖礦者還有礦池的攻擊。

2)Monero 節(jié)點(diǎn)接入 IP 監(jiān)控,削弱 Monero 區(qū)塊鏈的隱蔽性,可以知道所有交易發(fā)生時(shí)的接入 IP,針對(duì)那些不是使用平臺(tái)和 Tor 等隱藏網(wǎng)絡(luò)的使用者的連接 IP 會(huì)暴露,可以通過(guò) IP 進(jìn)一步分析連接者的身份。

3)日蝕攻擊:日蝕攻擊是一種針對(duì) P2P 網(wǎng)絡(luò)的攻擊。這種攻擊方法與共識(shí)算法關(guān)系不大,理論上講對(duì) PoW、PoS、DbFT 等共識(shí)算法都有效,但是它非常依賴于節(jié)點(diǎn)在 P2P 網(wǎng)絡(luò)處理上的漏洞,因此實(shí)施攻擊不具備普適性。

4)51% 算力攻擊:51% 算力攻擊是區(qū)塊鏈最著名的攻擊方式之一。在一個(gè) POW 共識(shí)的區(qū)塊鏈網(wǎng)絡(luò)中,算力即是權(quán)力。當(dāng)超過(guò) 50% 的算力都由一人控制時(shí),此人就可以任意的撤銷和阻止交易,進(jìn)而實(shí)現(xiàn)雙花。這種攻擊在大型網(wǎng)絡(luò)中較難實(shí)現(xiàn),在小型網(wǎng)絡(luò)中發(fā)生的可能性更高。在 POS 共識(shí)中與之類似的有幣齡累計(jì)攻擊和長(zhǎng)距離攻擊。

5)Ddos 攻擊,分布式拒絕服務(wù)攻擊,可以通過(guò)門羅 P2P 相關(guān)協(xié)議進(jìn)行交互,使得目標(biāo)節(jié)點(diǎn)資源耗盡,無(wú)法處理其他的正常服務(wù),通常和其他攻擊方式一起使用。

關(guān)于如何用代碼搞定Monero活躍節(jié)點(diǎn)探測(cè)就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI