
ماسح منافذ سريع مكتوب بلغة Go مع التركيز على الموثوقية والبساطة. مصمم لاستخدامه مع أدوات أخرى لاكتشاف سطح الهجوم في مكافآت الثغرات واختبارات الاختراق.
الميزات • التثبيت • الاستخدام • تشغيل naabu • الإعدادات • التكامل مع NMAP • استبعاد CDN/WAF • Discord
Naabu هي أداة لمسح المنافذ مكتوبة بلغة Go تسمح لك بتعداد المنافذ الصالحة للمضيفات بطريقة سريعة وموثوقة. إنها أداة بسيطة جدًا تقوم بإجراء مسح سريع من نوع SYN/CONNECT/UDP على المضيف/قائمة المضيفات وتدرج جميع المنافذ التي ترجع ردًا.
naabu -h
سيؤدي هذا إلى عرض المساعدة للأداة. فيما يلي جميع الخيارات التي تدعمها.```yaml
Usage:
naabu [flags]
Flags:
INPUT:
-host string[] hosts to scan ports for (comma-separated)
-list, -l string list of hosts to scan ports (file)
-exclude-hosts, -eh string hosts to exclude from the scan (comma-separated)
-exclude-file, -ef string list of hosts to exclude from scan (file)
PORT:
-port, -p string ports to scan (80,443, 100-200)
-top-ports, -tp string top ports to scan (default 100) [full,100,1000]
-exclude-ports, -ep string ports to exclude from scan (comma-separated)
-ports-file, -pf string list of ports to scan (file)
-port-threshold, -pts int port threshold to skip port scan for the host
-exclude-cdn, -ec skip full port scans for CDN/WAF (only scan for port 80,443)
-display-cdn, -cdn display cdn in use
RATE-LIMIT:
-c int general internal worker threads (default 25)
-rate int packets to send per second (default 1000)
UPDATE:
-up, -update update naabu to latest version
-duc, -disable-update-check disable automatic naabu update check
OUTPUT:
-o, -output string file to write output to (optional)
-j, -json write output in JSON lines format
-csv write output in csv format
SERVICES-DISCOVERY:
-sD, -service-discovery identify services by port number
-sV, -service-version detect service versions using nmap-service-probes
-sV-fast only probe port-hinted services (faster, skips fallback)
-sV-timeout duration timeout for service version probes (default 5s)
-sV-workers int number of concurrent service version workers (default 25)
-sV-probes string custom nmap-service-probes file path (auto-detected from local nmap install if empty)
-uP, -udp-probes send protocol-specific payloads on UDP scans using nmap-service-probes
CONFIGURATION:
-config string path to the naabu configuration file (default $HOME/.config/naabu/config.yaml)
-scan-all-ips, -sa scan all the IP's associated with DNS record
-ip-version, -iv string[] ip version to scan of hostname (4,6) - (default 4,6) (default ["4","6"])
-scan-type, -s string type of port scan (SYN/CONNECT) (default "c")
-source-ip string source ip and port (x.x.x.x:yyy - might not work on OSX)
-cp, -connect-payload string payload to send in CONNECT scans (optional)
-interface-list, -il list available interfaces and public ip
-interface, -i string network Interface to use for port scan
-nmap invoke nmap scan on targets (nmap must be installed) - Deprecated
-nmap-cli string nmap command to run on found results (example: -nmap-cli 'nmap -sV')
-r string list of custom resolver dns resolution (comma separated or from file)
-proxy string socks5 proxy (ip[:port] / fqdn[:port]
-proxy-auth string socks5 proxy authentication (username:password)
-dns-order string dns resolution order (p/l/lp/pl) (default "l")
-sr, -system-resolver use system DNS as fallback resolver
-resume resume scan using resume.cfg
-stream stream mode (disables resume, nmap, verify, retries, shuffling, etc)
-passive display passive open ports using shodan internetdb api (automatically enables stream mode)
-irt, -input-read-timeout value timeout on input read (default 3m0s)
-no-stdin Disable Stdin processing
HOST-DISCOVERY:
-sn, -host-discovery Perform Only Host Discovery
-show-dead show hosts that did not respond to host discovery (requires host discovery)
-Pn, -skip-host-discovery Skip Host discovery (Deprecated: use -wn/-with-host-discovery instead)
-wn, -with-host-discovery Enable Host discovery
-ps, -probe-tcp-syn string[] TCP SYN Ping (host discovery needs to be enabled)
-pa, -probe-tcp-ack string[] TCP ACK Ping (host discovery needs to be enabled)
-pe, -probe-icmp-echo ICMP echo request Ping (host discovery needs to be enabled)
-pp, -probe-icmp-timestamp ICMP timestamp request Ping (host discovery needs to be enabled)
-pm, -probe-icmp-address-mask ICMP address mask request Ping (host discovery needs to be enabled)
-arp, -arp-ping ARP ping (host discovery needs to be enabled)
-nd, -nd-ping IPv6 Neighbor Discovery (host discovery needs to be enabled)
-rev-ptr Reverse PTR lookup for input ips
OPTIMIZATION:
-retries int number of retries for the port scan (default 3)
-timeout int millisecond to wait before timing out (default 1000)
-warm-up-time int time in seconds between scan phases (default 2)
-ping ping probes for verification of host
-verify validate the ports again with TCP verification
-ss, -smart-scan predictive port scanning using port correlation model (not compatible with stream mode)
-pt, -prediction-threshold int minimum confidence for port predictions (0-100%) (default 20)
DEBUG:
-health-check, -hc run diagnostic check up
-debug display debugging information
-verbose, -v display verbose output
-no-color, -nc disable colors in CLI output
-silent display only results in output
-version display version of naabu
-stats display stats of the running scan (deprecated)
-si, -stats-interval int number of seconds to wait between showing a statistics update (deprecated) (default 5)
-mp, -metrics-port int port to expose naabu metrics on (default 63636)
CLOUD:
-auth configure projectdiscovery cloud (pdcp) api key (default true)
-ac, -auth-config string configure projectdiscovery cloud (pdcp) api key credential file
-pd, -dashboard upload / view output in projectdiscovery cloud (pdcp) UI dashboard
-tid, -team-id string upload asset results to given team id (optional)
-aid, -asset-id string upload new assets to existing asset id (optional)
-aname, -asset-name string assets group name to set (optional)
-pdu, -dashboard-upload string upload naabu output file (jsonl) in projectdiscovery cloud (pdcp) UI dashboard
قم بتنزيل الثنائيات الجاهزة للتشغيل / دوكر أو قم بالتثبيت باستخدام GO
ملاحظة: قبل تثبيت نابو، تأكد من تثبيت مكتبة
libpcapلالتقاط الحزم.
لتثبيت libpcap على لينكس: sudo apt install -y libpcap-dev، على ماك: brew install libpcap، على ويندوز: قم بتثبيت Npcap
go install -v github.com/projectdiscovery/naabu/v2/cmd/naabu@latest
# تشغيل Naabu
لتشغيل الأداة على هدف، ما عليك سوى استخدام الأمر التالي.```sh
naabu -host hackerone.com
سيقوم هذا بتشغيل الأداة ضد hackerone.com. هناك العديد من خيارات التهيئة التي يمكنك تمريرها مع هذا الأمر. يمكن استخدام مفتاح verbose -v لعرض المعلومات التفصيلية.```console
naabu -host hackerone.com
__
___ ___ ___ / / __ __ / _ / _ / _ / _ / // / ////_,/_,/.__/_,_/ v2.0.3
projectdiscovery.io
[WRN] Use with caution. You are responsible for your actions [WRN] Developers assume no liability and are not responsible for any misuse or damage. [INF] Running SYN scan with root privileges [INF] Found 4 ports on host hackerone.com (104.16.100.52)
hackerone.com:80 hackerone.com:443 hackerone.com:8443 hackerone.com:8080
يمكن تحديد المنافذ المراد مسحها على المضيف من خلال المعامل `-p` (يجب التعبير عن منافذ udp بصيغة `u:port`). يأخذ منافذ بصيغة nmap ويقوم بتعدادها.```sh
naabu -p 80,443,21-23,u:53 -host hackerone.com
بالنسبة لمسوحات UDP، يمكنك تحديد حمولة مخصصة لإرسالها باستخدام العلم -cp أو --connect-payload. وهذا مفيد بشكل خاص لخدمات UDP التي تتطلب بيانات محددة للاستجابة:```sh
naabu -p u:53 -host example.com -cp "DNS query payload"
بالافتراضي، يتحقق Naabu من منافذ `Top 100` الخاصة بـ nmap. وهو يدعم قوائم المنافذ المدمجة التالية -
| Flag | Description |
|-------------------|--------------------------------------|
| `-top-ports 100` | مسح لأفضل **100** منفذ في nmap |
| `-top-ports 1000` | مسح لأفضل **1000** منفذ في nmap |
| `-p - ` | مسح لجميع المنافذ من **1-65535** |
يمكنك أيضًا تحديد منافذ محددة ترغب في استبعادها من المسح.```sh
naabu -p - -exclude-ports 80,443
لتشغيل naabu على قائمة من المضيفين، يمكن استخدام الخيار -list.```sh
naabu -list hosts.txt
لتشغيل naabu على ASN، يمكن استخدام إدخال AS. فهو يأخذ عنوان IP المتاح لـ ASN معين ويقوم بالتعداد عليهم.```console
echo AS14421 | naabu -p 80,443
216.101.17.249:80
216.101.17.249:443
216.101.17.248:443
216.101.17.252:443
216.101.17.251:80
216.101.17.251:443
216.101.17.250:443
216.101.17.250:80
يمكنك أيضًا الحصول على المخرجات بتنسيق JSON باستخدام مفتاح -json. يحفظ هذا المفتاح المخرجات بتنسيق JSON lines.```console
naabu -host 104.16.99.52 -json
{"ip":"104.16.99.52","port":443} {"ip":"104.16.99.52","port":80}
يمكن توجيه المنافذ المكتشفة إلى أدوات أخرى أيضًا. على سبيل المثال، يمكنك توجيه المنافذ التي تم اكتشافها بواسطة naabu إلى [httpx](https://github.com/projectdiscovery/httpx) والذي سيجد بعد ذلك خوادم HTTP العاملة على المضيف.```console
echo hackerone.com | naabu -silent | httpx -silent
http://hackerone.com:8443
http://hackerone.com:443
http://hackerone.com:8080
http://hackerone.com:80
يمكن التحكم في السرعة عن طريق تغيير قيمة العلم rate الذي يمثل عدد الحزم في الثانية. قد تؤدي زيادته أثناء معالجة المضيفين إلى ارتفاع معدلات النتائج الإيجابية الكاذبة. لذا يُوصى بإبقائه عند مستوى معقول.
يدعم Naabu كلاً من IPv4 و IPv6، وكلاهما مفعّل افتراضياً. في حال استخدام IPv6، يجب أن يكون الاتصال مُهيئاً بشكل صحيح، ويجب أن تكون واجهة الشبكة مزودة بعنوان IPv6 (inet6) وبوابة افتراضية.```console
echo hackerone.com | naabu -p 80 -silent
104.16.99.52:80 104.16.100.52:80 2606:4700::6810:6434:80 2606:4700::6810:6334:80
الخيار `-ip-version 6` يجعل الأداة تستخدم عناوين IPv6 فقط أثناء تحليل أسماء النطاقات.```console
echo hackerone.com | ./naabu -p 80 -ip-version 6
__
___ ___ ___ _/ / __ __
/ _ \/ _ \/ _ \/ _ \/ // /
/_//_/\_,_/\_,_/_.__/\_,_/ v2.0.8
projectdiscovery.io
Use with caution. You are responsible for your actions
Developers assume no liability and are not responsible for any misuse or damage.
[INF] Running CONNECT scan with non root privileges
[INF] Found 1 ports on host hackerone.com (2606:4700::6810:6334)
hackerone.com:80
لمسح جميع عناوين IP للإصدارين، يمكن استخدام العلامة -scan-all-ips.```console
echo hackerone.com | ./naabu -sa -p 80 -silent
[INF] Found 1 ports on host hackerone.com (104.16.100.52) hackerone.com:80 [INF] Found 1 ports on host hackerone.com (104.16.99.52) hackerone.com:80 [INF] Found 1 ports on host hackerone.com (2606:4700::6810:6334) hackerone.com:80 [INF] Found 1 ports on host hackerone.com (2606:4700::6810:6434) hackerone.com:80
# اكتشاف المضيفين
يدعم Naabu بشكل اختياري خيارات متعددة لإجراء اكتشاف المضيفين. اكتشاف المضيفين اختياري ويمكن تفعيله باستخدام العلامة `-wn`. العلامة `-sn` توجه الأداة لإجراء اكتشاف المضيفين فقط.
الخيارات المتاحة لإجراء اكتشاف المضيفين:
- **ARP** ping (`-arp`)
- TCP **SYN** ping (`-ps 80`)
- TCP **ACK** ping (`-pa 443`)
- ICMP **echo** ping (`-pe`)
- ICMP **timestamp** ping (`-pp`)
- ICMP **address mask** ping (`-pm`)
- IPv6 **neighbor discovery** (`-nd`)
# ملف الإعدادات
يدعم Naabu ملف إعدادات افتراضي موجود في `$HOME/.config/naabu/config.yaml`. يسمح لك بتعريف أي علامة في ملف الإعدادات وتعيين قيم افتراضية لتضمينها في جميع عمليات المسح.
# التكامل مع Nmap
لقد قمنا بدمج دعم nmap لاكتشاف الخدمات أو أي عمليات مسح إضافية يدعمها nmap على النتائج التي يعثر عليها Naabu. تأكد من تثبيت `nmap` لاستخدام هذه الميزة.
لاستخدامه، يمكن استخدام العلامة `nmap-cli` متبوعة بأمر nmap، على سبيل المثال:-```console
echo hackerone.com | naabu -nmap-cli 'nmap -sV -oX nmap-output'
__
___ ___ ___ _/ / __ __
/ _ \/ _ \/ _ \/ _ \/ // /
/_//_/\_,_/\_,_/_.__/\_,_/ v2.0.0
projectdiscovery.io
[WRN] Use with caution. You are responsible for your actions
[WRN] Developers assume no liability and are not responsible for any misuse or damage.
[INF] Running TCP/ICMP/SYN scan with root privileges
[INF] Found 4 ports on host hackerone.com (104.16.99.52)
hackerone.com:443
hackerone.com:80
hackerone.com:8443
hackerone.com:8080
[INF] Running nmap command: nmap -sV -p 80,8443,8080,443 104.16.99.52
Starting Nmap 7.01 ( https://nmap.org ) at 2020-09-23 05:02 UTC
Nmap scan report for 104.16.99.52
Host is up (0.0021s latency).
PORT STATE SERVICE VERSION
80/tcp open http cloudflare
443/tcp open ssl/https cloudflare
8080/tcp open http-proxy cloudflare
8443/tcp open ssl/https-alt cloudflare
يحتوي Naabu على كشف مدمج لإصدار الخدمة باستخدام قاعدة بيانات مسابر الخدمات الخاصة بـ nmap. يتم تشغيل هذا بالتوازي مع فحص المنافذ لتحقيق أقصى أداء.```sh naabu -host scanme.sh -sV
.```console
scanme.sh:22 [ssh OpenSSH/6.6.1p1]
scanme.sh:80 [http Apache httpd/2.4.7]
scanme.sh:9929 [nping-echo Nping echo]
[INF] Found 3 ports on host scanme.sh (45.33.32.156) with 3 services identified
العلامات المتاحة:
تتطلب العلامة -sV وجود قاعدة بيانات nmap-service-probes. لا تشحن naabu هذه القاعدة نفسها (فهي مرخصة بموجب ترخيص Nmap Public Source License الحماية المشتركة، الذي لا يتوافق مع ترخيص MIT الخاص بـ naabu)، لذا فهي تقرأ الملف من تثبيت nmap محلي، باحثة تلقائيًا في مسارات تثبيت nmap القياسية. لاستخدام ملف مخصص، حدد المسار باستخدام -sV-probes.
عادةً ما تبقى خدمات UDP صامتة عند استقبالها حزمة بيانات فارغة، لذا فإن الفحص الأعمى لمنافذ UDP يفقد معظمها. مع -uP (-udp-probes) تختار naabu حمولة خاصة بالبروتوكول من قاعدة بيانات nmap-service-probes لكل منفذ UDP يتم فحصه (استعلام DNS للمنفذ 53، طلب NTP للمنفذ 123، طلب SNMPv1 GetRequest للمنفذ 161، وهكذا)، بحيث يكون لدى الخدمات الحقيقية ما ترد عليه ويمكن لـ naabu الإبلاغ عنها كمفتوحة.```sh
naabu -host scanme.sh -p u:53,u:123,u:161 -uP
ملاحظات:
- `-uP` هو خيار اختياري وإضافي. عند تعطيله (الوضع الافتراضي) تحافظ عمليات فحص UDP على سلوكها التاريخي للبيانات ذات الطول الصفري.
- المسبار المختار هو المطابقة ذات الأولوية الأعلى (أقل ندرة) للمنفذ الوجهة؛ إذا لم يتم تسجيل أي مسبار لمنفذ، يعود الفحص إلى مخطط البيانات الفارغ.
- الحمولة التي يوفرها المستخدم عبر `-cp` تفوز دائمًا على المسبار التلقائي لذلك المنفذ.
- `-uP` يعيد استخدام قاعدة بيانات المسبار نفسها كـ `-sV`، لذا يمكنك الجمع بين الاثنين دون دفع تكلفة التحليل مرتين. يتم تحديد موقع ملف المسبار تلقائيًا من تثبيت nmap المحلي؛ استخدم `-sV-probes` للإشارة إلى ملف مخصص. إذا لم يتم العثور على قاعدة بيانات، يسجل `-uP` تحذيرًا ويتم تعطيله بصمت.
# استبعاد CDN/WAF
تدعم Naabu أيضًا استبعاد عناوين IP الخاصة بـ CDN/WAF التي يتم فحص المنافذ عليها. إذا تم استخدامه، يتم فحص المنافذ `80` و `443` فقط لتلك العناوين IP. يمكن تمكين هذه الميزة باستخدام العلم `exclude-cdn`.
حاليًا، يتم دعم عناوين IP الخاصة بـ `cloudflare` و `akamai` و `incapsula` و `sucuri` للاستبعاد.
# حالة الفحص
تعرض Naabu معلومات فحص json على منفذ محلي مرتبط بـ localhost على `http://localhost:63636/metrics` (يمكن تغيير المنفذ عبر العلم `-metrics-port`)
# استخدام naabu كمكتبة
يقوم البرنامج النموذجي التالي بفحص المنفذ `80` لـ `scanme.sh`. يتم إرجاع النتائج عبر رد الاتصال `OnResult`:```go
package main
import (
"log"
"context"
"github.com/projectdiscovery/goflags"
"github.com/projectdiscovery/naabu/v2/pkg/result"
"github.com/projectdiscovery/naabu/v2/pkg/runner"
)
func main() {
options := runner.Options{
Host: goflags.StringSlice{"scanme.sh"},
ScanType: "s",
OnResult: func(hr *result.HostResult) {
log.Println(hr.Host, hr.Ports)
},
Ports: "80",
}
naabuRunner, err := runner.NewRunner(&options)
if err != nil {
log.Fatal(err)
}
defer naabuRunner.Close()
naabuRunner.RunEnumeration(context.Background())
}
OnResultيتم استدعاؤها مرة واحدة بعد اكتمال الفحص مع النتائج المجمعة. لمعالجة النتائج في الوقت الفعلي عند اكتشاف المنافذ، استخدمOnReceiveبدلاً من ذلك. يتحكم خيارStreamفقط في تحميل الهدف غير المتزامن — ولا يؤثر على وقت تشغيل عمليات الاسترجاع.
Naabu مصنوع بـ 🖤 من قبل فريق projectdiscovery. ساهمت مساهمات المجتمع في جعل المشروع على ما هو عليه.
راجع ملف Thanks.md لمزيد من التفاصيل.
| العلامة | الوصف |
|---|
-sV | تفعيل كشف إصدار الخدمة |
-sV-fast | فقط افحص الخدمات التي يشير إليها المنفذ (أسرع، يتجاوز فحوصات الاحتياط) |
-sV-timeout duration | المهلة الزمنية لفحوصات إصدار الخدمة (افتراضي 5 ثوان) |
-sV-workers int | عدد العاملين المتزامنين لفحص إصدار الخدمة (افتراضي 25) |
-sV-probes string | مسار ملف nmap-service-probes مخصص (يتم اكتشافه تلقائيًا من تثبيت nmap المحلي إذا كان فارغًا) |
-sD | اكتشاف الخدمة (مطابقة رقم المنفذ مع اسم الخدمة، بدون فحص نشط) |