Skip to content

Latest commit

 

History

History
167 lines (157 loc) · 6.32 KB

File metadata and controls

167 lines (157 loc) · 6.32 KB

[[Geth]] 存在一个服务器,然后有多个节点 每个节点运行一个geth客户端

geth的相关文件 需要/root/Work/PraviteChain 这个地址下,保存日志等信息

然后通过python写出一些脚本来进行测试 环境

[root@gzdx-bcn-ordinary-ethnode-v3-202 ~]# tcpdump --version
tcpdump version 4.9.2
libpcap version 1.5.3
OpenSSL 1.0.2k-fips  26 Jan 2017

[root@gzdx-bcn-ordinary-ethnode-v3-202 ~]# python3 --version
Python 3.12.3
[root@gzdx-bcn-ordinary-ethnode-v3-202 ~]# pip3 list
^[[APackage            Version
------------------ ---------------
aiohappyeyeballs   2.6.1
aiohttp            3.12.15
aiosignal          1.4.0
annotated-types    0.7.0
attrs              25.3.0
bitarray           3.7.1
certifi            2025.8.3
charset-normalizer 3.4.3
ckzg               2.1.4
cytoolz            1.0.1
distlib            0.4.0
eth_abi            5.2.0
eth-account        0.13.7
eth-hash           0.7.1
eth-keyfile        0.8.1
eth-keys           0.7.0
eth-rlp            2.2.0
eth-typing         5.2.1
eth-utils          5.3.1
filelock           3.19.1
frozenlist         1.7.0
hexbytes           1.3.1
idna               3.10
multidict          6.6.4
parsimonious       0.10.0
pip                24.0
platformdirs       4.4.0
propcache          0.3.2
pycryptodome       3.23.0
pydantic           2.11.9
pydantic_core      2.33.2
pyunormalize       16.0.0
regex              2025.9.18
requests           2.32.5
rlp                4.1.0
scapy              2.6.1
toolz              1.0.0
types-requests     2.32.4.20250913
typing_extensions  4.15.0
typing-inspection  0.4.1
urllib3            2.5.0
virtualenv         20.34.0
web3               7.13.0
websockets         15.0.1
yarl               1.20.1
[root@gzdx-bcn-ordinary-ethnode-v3-202 ~]# geth -v
Incorrect Usage. flag provided but not defined: -v

NAME:
   geth - the go-ethereum command line interface

   Copyright 2013-2022 The go-ethereum Authors

USAGE:
   geth [options] [command] [command options] [arguments...]
   
VERSION:
   1.10.19-stable

geth的启动

[root@gzdx-bcn-ordinary-ethnode-v3-202 ddos]# ps aux | grep geth
root      3364  0.0  0.0 112812   980 pts/2    S+   21:06   0:00 grep --color=auto geth
root      3593  100 40.4 5090304 1568592 ?     Sl   Oct27 4470:38 /root/zjm/go-ethereum-1.10.19/build/bin/geth --networkid 88 --datadir . --bootnodes enr:-KO4QGcD
-b8whs2_HpRtmcN2hmQHj8gn8wS_8yKWD2TrTIA-ABr2zJrThHu5JunNDKOkFU71baaBUvTF47EaYGTdfwOGAZolWyG9g2V0aMfGhAClW42AgmlkgnY0gmlwhMp2GxCJc2VjcDI1NmsxoQOLGBK2Fz8Yu2yxcUn2Jw
tCmzqf8SChkSYzLCtbt0X6MYRzbmFwwIN0Y3CCdl-DdWRwgnZf,enr:-KO4QDbSFLV4rjhezJCIFPNdkaZEDiwI1teKtB_wJt78PTFrcTbZ2H-CerfuY9LrtEsSBwYRrAx55ngGA0k2gKY-0UeGAZolXPTHg2V0aMf
GhAClW42AgmlkgnY0gmlwhMp2AA-Jc2VjcDI1NmsxoQMma5T6azAFcVYBP5el9Q00aUo-DLFgc8kVGaoyv4NAEoRzbmFwwIN0Y3CCdl-DdWRwgnZf --nat extip:202.118.4.10 --netrestrict 202.118.0
.0/16 --http --http.port 8545 --port 30303 --http.addr 0.0.0.0 --http.api db,eth,net,web3,personal,admin,shh,txpool,debug,miner --verbosity 5 --allow-insecure-unl
ock
[root@gzdx-bcn-ordinary-ethnode-v3-202 ddos]# 

排查 personal_unlockAccount 请求是否被网络拦截

  1. 确认远端节点监听端口(远端执行)ss -tnlp | grep 8545,确保 HTTP/8545 在 LISTEN 状态且绑定外网地址。
  2. 基础 JSON-RPC 连通性(攻击源执行)curl -X POST http://202.118.7.10:8545 -H 'Content-Type: application/json' --data '{"jsonrpc":"2.0","method":"web3_clientVersion","params":[],"id":1}';若此请求也超时,说明链路就被阻断。
  3. 抓取 personal 请求
    • 远端:tcpdump -i eth0 -n host <攻击源IP> and port 8545 -w /tmp/personal_unlock.pcap
    • 攻击源:
      curl -X POST \
         -H 'Content-Type: application/json' \
         --data '{"jsonrpc":"2.0","method":"personal_unlockAccount","params":["0x地址","123",60],"id":1}' \
         http://202.118.7.10:8545
    • 停止 tcpdump 后用 tcpdump -r /tmp/personal_unlock.pcap -nn 或 Wireshark 分析:若只见入站无出站表示 geth 未响应;若毫无记录表示被中间设备丢弃。
  4. 检查链路与 ACL:使用 traceroute -n 202.118.7.10 识别路径节点,与网络团队确认是否存在拦截 POST/8545 的策略。
  5. 调整超时:若确认链路通但 RTT 大,可把脚本中的 HTTPProvider 超时时间从 30 秒调大(例如 120 秒),或在 curl 加 --max-time 120

给centos安装python

#只是将python3.12.3的安装包下载到 /root目录下
cd /root
#下载最新的软件安装包
wget https://www.python.org/ftp/python/3.12.3/Python-3.12.3.tgz
#解压缩安装包
tar -xzf Python-3.12.3.tgz
#安装源码编译需要的编译环境
yum -y install gcc zlib zlib-devel libffi libffi-devel
#可以解决后期出现的方向键、删除键乱码问题,这里提前避免。
yum install readline-devel -y
#解决No module named '_bz2'
yum install bzip2-devel -y
#安装openssl之前先安装这个
yum install epel-release -y
#安装openssl11,后期的pip3安装网络相关模块需要用到ssl模块。
yum install openssl-devel openssl11 openssl11-devel -y
#设置编译FLAG,以便使用最新的openssl库
export CFLAGS=$(pkg-config --cflags openssl11)
export LDFLAGS=$(pkg-config --libs openssl11)
#进入刚解压缩的目录
cd /root/Python-3.12.3
#1.不指定python安装目录(使用默认python安装目录)
#因为:不建议加--prefix=/usr/python,这样会导致你后续pip安装的可执行文件
#(比如virtualenv)都放在/usr/python/bin而不是默认的/usr/bin里面,不能直接用,还得逐个ln
#2.使用--with-openssl=<path_to_openssl>
# 可以通过使用which openssl查看openssl的安装路径
# 我这里是/usr/bin/openssl
# 最后的指令如下
./configure --with-openssl=/usr/bin/openssl
#然后就算源码编译并安装了,时间会持续几分钟。
make
make install
#指定链接,此后我们系统的任何地方输入python3就是我们安装的
ln -s /usr/local/bin/python3.12 /usr/bin/python3
ln -s /usr/local/bin/pip3 /usr/bin/pip3
#pip3安装包
pip3 install virtualenv
#指定virtualenv的链接
ln -s /usr/local/bin/virtualenv /usr/bin/virtualenv
#这个最新版python3了

pip3安装库 安装web3

pip3 install web3
pip3 install scapy

ZzudYaMfJa 安装tcpdump

yum install tcpdump

jHp071IuAr

打开geth控制台,链接已经启动的客户端

geth attach http://127.0.0.1:8545