おふとん

IT全般、セキュリティとかCTFとかに偏りがち

Ethereumノードへの調査活動

ハニーポットにEthereum関係の通信が来ていました。

[ログ1]

[ログ2]


どちらもJSON-RPC APIを使ったアクセスです。
EthereumノードにJSON-RPC API経由でアクセスする

このAPIへのリクエスト方式はJSON形式で以下のように送信されます。

要素 説明
jsonrpc 2.0固定、1.0と区別するため
method 実行するメソッド名
params メソッドの引数、[引数1,引数2,・・・]のように指定
id 識別子

またレスポンスの場合はjsonrpc、idに加えてリクエストの結果を格納する要素であるresultで構成されています。

今回の通信で使用されているメソッドは以下の通りです。

  • eth_accounts:ノードが持つアドレスを取得するメソッド
    • params:なし、[]
    • result:ノードのアドレス、例)["0x4238ab348ef38e92a29c9228fae293393ddb283"]

例)
["number": "0x1b4",
"hash": "0xe670ec64341771606e55d6b4ca35a1a6b75ee3d5145a99d05921026d1527331",
"parentHash": "0x9646252be9520f6e71339a8df9c55e4d7619deeb018d2a3f2d21fc1...",
"nonce": "0xe04d296d2460cfb8472af2c5fd05b5a214109c25688d3704aed5484f9a7792f2",
"sha3Uncles": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd4...",
"logsBloom": "0xe670ec64341771606e55d6b4ca35a1a6b75ee3d5145a99d05921026d...",
"transactionsRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc00...",
"stateRoot": "0xd5855eb08b3387c0af375e9cdb6acfc05eb8f519e419b874b6ff2ffda7...",
"miner": "0x4e65fda2159562a496f9f3522f89122a3088497a",
"difficulty": "0x027f07",
"totalDifficulty": "0x027f07",
"extraData": "0x0000000000000000000000000000000000000000000000000...",
"size": "0x027f07",
"gasLimit": "0x9f759",
"gasUsed": "0x9f759",
"timestamp": "0x54e34e8e"
"transactions": [{...},{ ... }]
"uncles": ["0x1606e5...", "0xd5145a9..."]
JSON RPC · ethereum/wiki Wiki · GitHub

やはり調査活動みたいですね。正しいレスポンスが返って来た場合どのような挙動をするのか興味あるのでWOWHoneypotのマッチ&レスポンス機能を使って返したいけどIDどうしよ...取り敢えずID固定値で置いて、ダメそうならレスポンスを動的に生成することが出来るようにしたいです。

追記:ID固定値で返した結果、同IPからの通信の挙動に変化あり。面白い結果であればまとめます。