Skip to content

Nmap Script to detect and extract arweave node information

License

Notifications You must be signed in to change notification settings

niamtokik/arweave_nse

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

19 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Arweave Nmap Script Engine

A way to get more information about Arweave Nodes using nmap. This script is a work in progress but can already return interesting value.

Usage

One can try it on mainnet servers hardcoded in arweave source code:

Identify Mode

This mode only return basic information on the target.

# default scan, using identify mode
nmap -p 1984 --script=arweave.nse 206.189.70.139

# forced scan with identify mode
nmap -p 1984 --script=+arweave.nse 206.189.70.139

Fingerprint Mode

This mode is an advanced identify mode, returning more information and checking all default end-points.

# fingerprint mode
nmap -p 1984 --script=arweave.nse --script-args="arweave.mode=fingerprint" 206.189.70.139

(WIP) Fuzzing Mode

This mode create random data for each end-point automatically and check the result.

# fuzzing mode
nmap -p 1984 --script=arweave.nse --script-args="arweave.mode=fuzzing" 206.189.70.139

(WIP) Inject mode

This mode is mainly used to inject crafted data.

# inject mode
nmap -p 1984 --script=arweave.nse --script-args="arweave.mode=inject" 206.189.70.139

(WIP) File mode

This mode list files available on the target.

TODO

  • HTTP GET method support without parameters
  • HTTP HEAD method
  • HTTP GET method with path parameters
  • HTTP POST method with path parameters and configured body
  • HTTP PUT method with path parameters and configured body
  • HTTP OPTIONS method (not supported by default nmap library)
  • Randomized Scanner end-points
  • Add arguments supports:
    • arweave.http_header_content_type="application/json"
    • arweave.randomize=true: randomize path scan
    • arweave.mode=identify: default scan
    • arweave.mode=fingerprint:
    • arweave.mode=fuzzing:
    • arweave.mode=inject:
    • arweave.scan_only=api_id: scan only one path (bypass scan mode)
    • arweave.scan_filter=.*: filter scanned parse (bypass scan mode)
    • arweave.http_header_authentication: add bearer support
  • Custom options for api
    • arweave.get_price_size.size
    • arweave.get_price_size_target.size
    • arweave.get_wallet_balance.address
    • arweave.get_wallet_last_tx.address
    • arweave.get_block_height.height
    • arweave.get_block_hash.hash
    • arweave.get_tx.tx_id
    • arweave.get_tx_offset.tx_id
    • arweave.get_tx_state.tx_id
    • arweave.get_chunks.offset
    • arweave.post_admin_queue_tx.body
    • arweave.put_admin_block_data.body
    • arweave.get_farcaster_frame_tx.tx_id
    • arweave.post_farcaster_frame_tx.tx_id
    • arweave.post_block2.body
    • arweave.post_block_announcement.body
    • arweave.post_block.body
    • arweave.post_block.body
    • arweave.post_coordinated_mining_h1.body
    • arweave.post_coordinated_mining_h2.body
    • arweave.post_height.body
    • arweave.post_partial_solution.body
    • arweave.post_peers.body
    • arweave.post_tx.body
    • arweave.post_tx2.body
    • arweave.post_unsigned_tx.body
    • arweave.post_vdf.body
    • arweave.post_wallet.body
  • Fuzzer:
    • Simple ETF parser
    • Simple ETF serializer
    • Automatic code injection
  • Other features to add:
    • CORS headers check
    • Comments/details regarding a port
    • custom state for each end-point
    • Version fingerprinting (e.g. add score in each end-point, seen on each version...)
    • external service notification support
    • add risks evaluation on each end-point
    • includes default bearer/api_secret in the API

References and resources

AR.IO Network+Token White Paper

AR.IO documentation

AR.IO admin API

About

Nmap Script to detect and extract arweave node information

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages