読者です 読者をやめる 読者になる 読者になる

sonickun.log

備忘録

ネットワークスキャンツール「ZMAP」のインストール

研究 ネットワーク セキュリティ

 ZMAPとは、ミシガン大学の研究者たちがワシントンで開催されたUSENIXセキュリティカンファレンス上で発表した、オープンソースのネットワークスキャナです。
 このツールの売りは、「スキャンの速さ」で、インターネット上にあるすべてのIPv4アドレス(/0)をわずか45分でスキャンできると言われています。スキャンツールとして有名な「Nmap」はネットワーク全体のスキャンに2~3ヶ月かかると言われていますから、ZMAPはとんでもない速さです。

 ZMAPのサイトはこちら↓
 ZMap · The Internet Scanner

 ZMAPはLINX系OS全般に対応しているようですが、今回はKali Linx 64bitへのインストールの手順を説明します。
 
 
 最も簡単な方法は以下のようにapt-getすることなのですが、何故か自分の環境ではできませんでした。("Unable to locate package zmap" というエラーが表示される。)

$ sudo apt-get install zmap

 
 
 そこで今回は、ソースをダウンロードしてビルドする方法を取りました。先ほどのサイトの「Download」から圧縮ファイル(今回は"zmap-1.2.0.tar")をダウンロードし、解凍します。

 ZMAPのインストールの前に、いくつかのパッケージをインストールしておく必要があります。

$ sudo apt-get install build-essential cmake libgmp3-dev libpcap-dev gengetopt byacc flex


 次に、先ほど解凍したディレクトリ下で以下のコマンドを実行します。

$ cmake -DENABLE_HARDENING=ON
$ sudo make
$ sudo make install


 これでZMAPのインストールが完了しました。zmapコマンドが実行できるはずです。
 
 
 -hオプションでhelpを表示できます。

zmap 1.2.0

A fast Internet-wide scanner.

Usage: zmap [OPTIONS]... [SUBNETS]...

Basic arguments:
  -p, --target-port=port        TCP port number to scan (for SYN scans)
  -o, --output-file=name        Output file
  -b, --blacklist-file=path     File of subnets to exclude, in CIDR notation, 
                                  e.g. 192.168.0.0/16
  -w, --whitelist-file=path     File of subnets to constrain scan to, in CIDR 
                                  notation, e.g. 192.168.0.0/16
  -f, --output-fields=fields    Fields that should be output in result set

Scan options:
  -n, --max-targets=n           Cap number of targets to probe (as a number or 
                                  a percentage of the address space)
  -N, --max-results=n           Cap number of results to return
  -t, --max-runtime=ses         Cap length of time for sending packets
  -r, --rate=pps                Set send rate in packets/sec
  -B, --bandwidth=bps           Set send rate in bits/second (supports suffixes 
                                  G, M and K)
  -c, --cooldown-time=secs      How long to continue receiving after sending 
                                  last probe  (default=`8')
  -e, --seed=n                  Seed used to select address permutation
  -T, --sender-threads=n        Threads used to send packets  (default=`1')
  -P, --probes=n                Number of probes to send to each IP  
                                  (default=`1')
  -d, --dryrun                  Don't actually send packets
      --shards=N                Set the total number of shards  (default=`1')
      --shard=n                 Set which shard this scan is (0 indexed)  
                                  (default=`0')

Network options:
  -s, --source-port=port|range  Source port(s) for scan packets
  -S, --source-ip=ip|range      Source address(es) for scan packets
  -G, --gateway-mac=addr        Specify gateway MAC address
  -i, --interface=name          Specify network interface to use
  -X, --vpn                     Sends IP packets instead of Ethernet (for VPNs)

Advanced options:
  -M, --probe-module=name       Select probe module  (default=`tcp_synscan')
  -O, --output-module=name      Select output module  (default=`default')
      --probe-args=args         Arguments to pass to probe module
      --output-args=args        Arguments to pass to output module
      --output-filter=filter    Specify a filter over the response fields to 
                                  limit what responses get sent to the output 
                                  module
      --list-output-modules     List available output modules
      --list-probe-modules      List available probe modules
      --list-output-fields      List all fields that can be output by selected 
                                  probe module

Additional options:
  -C, --config=filename         Read a configuration file, which can specify 
                                  any of these options  
                                  (default=`/etc/zmap/zmap.conf')
  -l, --log-file=name           Write log entries to file
  -L, --log-directory=directory Write log entries to a timestamped file in this 
                                  directory
  -q, --quiet                   Do not print status updates
  -g, --summary                 Print configuration and summary at end of scan
      --metadata-file=name      Output file for scan metadata (JSON)
      --disable-syslog          Disables logging messages to syslog
  -v, --verbosity=n             Level of log detail (0-5)  (default=`3')
  -h, --help                    Print help and exit
  -V, --version                 Print version and exit

Examples:
	zmap -p 80 -o - (scan the Internet for hosts on port 80 and output to stdout)
	zmap -N 5 -B 10M -p 80 -o -  (find 5 HTTP servers, scanning at 10 Mb/s)
	zmap -p 80 10.0.0.0/8 192.168.0.0/16 -o (scan 10./8, 192.168./16 on port 80)
	zmap -p 80 192.168.1.2 192.168.1.3 (scan 192.168.1.2, 192.168.1.3 on port 80)

Probe-module (tcp_synscan) Help:
Probe module that sends a TCP SYN packet to a specific port. Possible 
classifications are: synack and rst. A SYN-ACK packet is considered a success 
and a reset packet is considered a failed response.

Output-module (csv) Help:
no help text available

 
 
 ZMAPはまだほとんどいじっていませんが、個人的に便利に感じたのは、"--probe-module=udp"でUDPパケットを使ったスキャンができることです。DNSやNTPの実装がされているようです。
 
 
 
※ZMAPの使用はあくまで研究目的です。