
JF⚡can - Сверхбыстрое сканирование портов и обнаружение сервисов с использованием Masscan и Nmap. Сканируйте большие сети с помощью Masscan и используйте скриптовые возможности Nmap для получения информации о сервисах. Создавайте отчёт.
[!CAUTION]
⚠️ Проект устарел
Этот проект был переписан на Go для лучшей производительности и функциональности. Используйте новую версию здесь: nullt3r/massmap
JFScan — это обёртка, объединяющая скорость Masscan и возможности идентификации Nmap. JFScan принимает цели в виде URL, доменов или IP-адресов (включая CIDR). Вы можете указать файл с целями через аргумент или использовать stdin.
JFScan также позволяет выводить только результаты и передавать их другим инструментам, например Nuclei. Вывод в формате domain:port важен для выявления уязвимостей в веб-приложениях, так как виртуальный хост определяет, какой контент будет отдан.
Кроме того, 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 - Просто сканируй, чёрт возьми
optional arguments:
-h, --help show this help message and exit
-p PORTS, --ports PORTS
ports, can be a range or port list: 0-65535 or 22,80,100-500,...
--top-ports TOP_PORTS
scan only N of the top ports, e. g., --top-ports 1000
--yummy-ports scan only for the most yummy ports
-q, --quite output only results
-v, --verbose verbose output
--nmap run nmap on discovered ports
--nmap-options NMAP_OPTIONS
nmap arguments, e. g., --nmap-options='-sV' or --nmap-options='-sV --script ssh-auth-methods'
--nmap-threads NMAP_THREADS
number of nmaps to run concurrently, default 8
--nmap-output NMAP_OUTPUT
output results from nmap to specified file in standard XML format (same as nmap option -oX)
target a target or targets separated by a comma, accepted form is: domain name, IPv4, IPv6, URL
--targets TARGETS file with targets, accepted form is: domain name, IPv4, IPv6, URL
-oi, --only-ips output only IP adresses, default: all resources
-od, --only-domains output only domains, default: all resources
-o OUTPUT, --output OUTPUT
output masscan's results to specified file
--resolvers RESOLVERS
custom resolvers separated by a comma, e. g., 8.8.8.8,1.1.1.1
--enable-ipv6 enable IPv6 support, otherwise all IPv6 addresses will be ignored in the scanning process
--scope SCOPE file path with IP adresses and CIDRs to control scope, expected format: IPv6, IPv4, IPv6 CIDR, IPv4 CIDR
-r MAX_RATE, --max-rate MAX_RATE
max kpps rate for the masscan
--wait WAIT a number of seconds to wait for packets to arrive (when scanning large networks), option for the masscan
--disable-auto-rate disable rate adjustment mechanism for masscan (more false positives/negatives)
-i INTERFACE, --interface INTERFACE
interface for masscan and nmap to use
--source-ip SOURCE_IP
IP address of your interface for the masscan
--router-ip ROUTER_IP
IP address of your router for the masscan
--router-mac ROUTER_MAC
MAC address of your router for the masscan
--router-mac-ipv6 ROUTER_MAC_IPV6
MAC address of your IPv6 router for the masscan
--version show program's version number and exit
Перед запуском следуйте инструкции по установке. Не запускайте JFScan от root — это не требуется, так как мы устанавливаем специальные разрешения для бинарника masscan.
Сканировать цели только по портам 80 и 443 со скоростью 10 kpps:
$ 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 находится в вашем PATH.
Добавьте следующую строку в ваш ~/.zshrc или ~/.bashrc:
export PATH="$HOME/.local/bin:$PATH"
Прочитайте файл LICENSE.
Я не несу ответственности за любой ущерб. Вы несёте ответственность за свои собственные действия. Атака целей без предварительного взаимного согласия незаконна.
* При сканировании небольших сетей вы можете сразу использовать nmap — нет необходимости в JFScan. Вы можете достичь до 70% скорости JFScan с помощью следующих параметров:
nmap -Pn -n -v yourTargetNetwork/26 -p- --min-parallelism 64 --min-rate 20000 --min-hostgroup 64 --randomize-hosts -sS -sV
Как всегда, возможны ложные срабатывания/пропуски.