
JF⚡can - MasscanとNmapを使用した超高速ポートスキャン&サービス検出。Masscanで大規模ネットワークをスキャンし、Nmapのスクリプト機能を使ってサービスに関する情報を発見します。レポートを生成します。
[!CAUTION]
⚠️ プロジェクトは非推奨
このプロジェクトはパフォーマンスと機能向上のためにGoで書き直されました。
新しいバージョンはこちらをご利用ください: nullt3r/massmap
JFScanはMasscanの速度とNmapのフィンガープリンティング機能を活用するラッパーです。JFScanはURL、ドメイン、IP(CIDRを含む)の形式でターゲットを受け付けます。引数でターゲットファイルを指定するか、stdinを使用できます。
JFScanは結果のみを出力し、Nucleiのような他のツールとチェーンすることも可能です。JFScanの「ドメイン:ポート」出力は、バーチャルホストが提供するコンテンツを決定するため、Webアプリケーションの脆弱性識別に極めて重要です。
さらに、JFScanは検出されたポートをNmapでスキャンでき、カスタムオプションの定義やNmapの高度なスクリプティング機能を活用することもできます。

JFScanの入出力処理のロジック:

usage: jfscan [-h] [--targets TARGETS] (-p PORTS | --top-ports TOP_PORTS | --yummy-ports) [--resolvers RESOLVERS] [--enable-ipv6] [--scope SCOPE] [-r MAX_RATE] [--wait WAIT] [--disable-auto-rate] [-i INTERFACE] [--source-ip SOURCE_IP]
[--router-ip ROUTER_IP] [--router-mac ROUTER_MAC] [--router-mac-ipv6 ROUTER_MAC_IPV6] [-oi] [-od] [-o OUTPUT] [-q | -v] [--nmap] [--nmap-options NMAP_OPTIONS] [--nmap-threads NMAP_THREADS] [--nmap-output NMAP_OUTPUT] [--version]
[target]
JFScan - ただのクソスキャン
オプション引数:
-h, --help このヘルプメッセージを表示して終了
-p PORTS, --ports PORTS
ポート、範囲またはポートリストを指定可能: 0-65535 または 22,80,100-500,...
--top-ports TOP_PORTS
上位N個のポートのみスキャン(例: --top-ports 1000)
--yummy-ports 最もおいしいポートのみスキャン
-q, --quite 結果のみ出力
-v, --verbose 詳細出力
--nmap 検出されたポートに対してnmapを実行
--nmap-options NMAP_OPTIONS
nmap引数(例: --nmap-options='-sV' または --nmap-options='-sV --script ssh-auth-methods')
--nmap-threads NMAP_THREADS
同時に実行するnmapスレッド数、デフォルト8
--nmap-output NMAP_OUTPUT
nmapの結果を標準XML形式で指定ファイルに出力(nmapオプション -oX と同じ)
target カンマ区切りのターゲット、受け付け形式: ドメイン名、IPv4、IPv6、URL
--targets TARGETS ターゲットファイル、受け付け形式: ドメイン名、IPv4、IPv6、URL
-oi, --only-ips IPアドレスのみ出力、デフォルト: すべてのリソース
-od, --only-domains ドメインのみ出力、デフォルト: すべてのリソース
-o OUTPUT, --output OUTPUT
masscanの結果を指定ファイルに出力
--resolvers RESOLVERS
カンマ区切りのカスタムリゾルバ(例: 8.8.8.8,1.1.1.1)
--enable-ipv6 IPv6サポートを有効化、有効にしないとスキャン処理で全てのIPv6アドレスが無視される
--scope SCOPE IPアドレスとCIDRを含むファイルパスでスコープを制御、期待される形式: IPv6、IPv4、IPv6 CIDR、IPv4 CIDR
-r MAX_RATE, --max-rate MAX_RATE
masscanの最大kppsレート
--wait WAIT パケット到着を待つ秒数(大規模ネットワークスキャン時)、masscan用オプション
--disable-auto-rate masscanのレート調整メカニズムを無効化(偽陽性/偽陰性が増加)
-i INTERFACE, --interface INTERFACE
masscanとnmapが使用するインターフェース
--source-ip SOURCE_IP
masscan用のインターフェースのIPアドレス
--router-ip ROUTER_IP
masscan用のルーターのIPアドレス
--router-mac ROUTER_MAC
masscan用のルーターのMACアドレス
--router-mac-ipv6 ROUTER_MAC_IPV6
IPv6ルーターのMACアドレス(masscan用)
--version プログラムのバージョン番号を表示して終了
実行前にインストール手順に従ってください。rootでJFScanを実行しないでください。masscanバイナリに特別なパーミッションを設定するため、rootは不要です。
ポート80と443のみをレート10kppsでスキャン:
$ jfscan -p 80,443 --targets targets.txt -r 10000
上位1000ポートをスキャン:
$ jfscan --top-ports 1000 1.1.1.1/24
stdinでターゲットを指定し、Nucleiにパイプ:
$ cat targets.txt | jfscan --top-ports 1000 -q | httpx -silent | nuclei
または位置パラメータとして:
$ jfscan --top-ports 1000 1.1.1.1/24 -q | httpx -silent | nuclei
あるいはすべて同時に、JFScanはかまわず指定されたすべてのターゲットをスキャンします:
$ echo target1 | jfscan --top-ports 1000 target2 --targets targets.txt -q | httpx -silent | nuclei
nmapを活用して検出されたサービスの詳細情報を収集:
$ cat targets.txt | jfscan -p 0-65535 --nmap --nmap-options="-sV --scripts ssh-auth-methods"
targets.txtには以下の形式のターゲットを含めることができます(IPv6も同様):
http://domain.com/
domain.com
1.2.3.4
1.2.3.0/24
1.1.1.1-1.1.1.30
まず、libpcap-dev(Debian系ディストリビューション)またはlibcap-devel(CentOS系ディストリビューション)をインストールします:
sudo apt install libpcap-dev
次に、公式リポジトリをクローンしてインストール:
sudo apt-get --assume-yes install git make gcc
git clone https://github.com/robertdavidgraham/masscan
cd masscan
make
sudo make install
sudo setcap CAP_NET_RAW+ep /usr/bin/masscan
sudo apt install python3 python3-pip
$ git clone https://github.com/nullt3r/jfscan.git
$ cd jfscan
$ pip3 install .
コマンドラインからjfscanを直接実行できない場合は、$HOME/.local/binがパスに含まれているか確認してください。
以下の行を~/.zshrcまたは~/.bashrcに追加します:
export PATH="$HOME/.local/bin:$PATH"
LICENSEファイルをお読みください。
私はいかなる損害についても責任を負いません。あなた自身の行動にはあなた自身が責任を負います。事前の相互同意なしにターゲットを攻撃することは違法です。
* 小規模なネットワーク範囲をスキャンする場合、JFScanを使用する必要はなく、nmapを直接使用しても構いません。以下のオプションを使用すると、JFScanの速度の最大70%に達することができます:
nmap -Pn -n -v yourTargetNetwork/26 -p- --min-parallelism 64 --min-rate 20000 --min-hostgroup 64 --randomize-hosts -sS -sV
いつものように、多少の偽陽性/偽陰性が発生する可能性があります。