
CLI سريع لتعريف الخدمات لأكثر من 170 بروتوكول (TCP/UDP/SCTP) - مبني بواسطة Praetorian
الميزات • التثبيت • البدء السريع • الاستخدام • البروتوكولات • المكتبة • حالات الاستخدام • استكشاف الأخطاء وإصلاحها
تحليل بصمة الخدمات عالي الأداء مكتوب بلغة Go. يحدد أكثر من 170 بروتوكول شبكة عبر ناقلات TCP و UDP و SCTP مع استخراج بيانات تعريفية غنية.
يكتشف نيرفا بسرعة ويحدد الخدمات العاملة على منافذ الشبكة المفتوحة. استخدمه جنبًا إلى جنب مع ماسحات المنافذ مثل Naabu لتحليل بصمة الخدمات المكتشفة، أو قم بدمجه في خطوط أمانك الآلية لأتمتة الاستطلاع.
--misconfigs)--udp)، و SCTP (--sctp، لينكس فقط)--fast)host:portقم بتنزيل ثنائي مُجمّع مسبقاً من صفحة الإصدارات.
go install github.com/praetorian-inc/nerva/cmd/nerva@latest
### من المصدر```sh
git clone https://github.com/praetorian-inc/nerva.git
cd nerva
go build ./cmd/nerva
./nerva -h
git clone https://github.com/praetorian-inc/nerva.git cd nerva docker build -t nerva . docker run --rm nerva -h docker run --rm nerva -t example.com:80 --json
## بداية سريعة
بصم هدفًا واحدًا:```sh
nerva -t example.com:22
# ssh://example.com:22
احصل على بيانات JSON الوصفية المفصلة:```sh nerva -t example.com:22 --json
أنبوب من ماسح المنافذ:```sh
naabu -host example.com -silent | nerva
# http://example.com:80
# ssh://example.com:22
# https://example.com:443
nerva [flags]
TARGET SPECIFICATION: Requires host:port or ip:port format. Assumes ports are open.
EXAMPLES: nerva -t example.com:80 nerva -t example.com:80,example.com:443 nerva -l targets.txt nerva --json -t example.com:80 cat targets.txt | nerva
### Flags
| العلم | المختصر | الوصف | الافتراضي |
|------|-------|-------------|---------|
| `--targets` | `-t` | الهدف أو قائمة أهداف مفصولة بفواصل | — |
| `--list` | `-l` | ملف الإدخال الذي يحتوي على الأهداف | — |
| `--output` | `-o` | مسار ملف الإخراج | stdout |
| `--json` | | الإخراج بصيغة JSON | false |
| `--csv` | | الإخراج بصيغة CSV | false |
| `--misconfigs` | | تمكين كشف الأخطاء في التكوين الأمني | false |
| `--proxy` | | رابط الوكيل (مثال: socks5://127.0.0.1:1080) | — |
| `--proxy-auth` | | مصادقة وكيل SOCKS5 (مثال: username:password) | — |
| `--dns-order` | | ترتيب تحليل DNS: `p`, `l`, `lp`, `pl` | `lp` |
| `--fast` | `-f` | الوضع السريع (المنافذ الافتراضية فقط) | false |
| `--capabilities` | `-c` | عرض الإمكانيات المتاحة والخروج | false |
| `--udp` | `-U` | تشغيل ملحقات UDP | false |
| `--sctp` | `-S` | تشغيل ملحقات SCTP (لينكس فقط) | false |
| `--timeout` | `-w` | المهلة بالمللي ثانية | 2000 |
| `--verbose` | `-v` | إخراج مفصل إلى stderr | false |
| `--workers` | `-W` | عامل المسح المتزامن | 50 |
| `--max-host-conn` | `-H` | أقصى اتصالات متزامنة لكل IP مضيف (0=غير محدود) | 0 |
| `--rate-limit` | `-R` | أقصى مسح في الثانية عالميًا (0=غير محدود) | 0 |
### أمثلة
**أهداف متعددة:**```sh
nerva -t example.com:22,example.com:80,example.com:443
من الملف:```sh nerva -l targets.txt --json -o results.json
**مسح UDP** (قد يتطلب صلاحية الجذر):```sh
sudo nerva -t example.com:53 -U
# dns://example.com:53
مسح SCTP (لينكس فقط):```sh nerva -t telecom-server:3868 -S
**الوضع السريع** (المنافذ الافتراضية فقط):```sh
nerva -l large-target-list.txt --fast --json
توجيه الوكيل مع حل DNS عن بعد:```sh nerva -t target.internal:80 --proxy socks5://127.0.0.1:1080 --dns-order p
### كشف سوء التهيئة الأمنية
يمكن لـ Nerva تحديد سوء التهيئة الأمنية الشائعة عند تفعيلها باستخدام `--misconfigs`:```sh
nerva -t example.com:2375 --misconfigs --json
التكوينات الخاطئة المكتشفة:
مثال للإخراج مع التكوينات الخاطئة:```json { "host": "example.com", "port": 2375, "protocol": "docker", "anonymous_access": true, "security_findings": [ { "id": "docker-unauth-api", "severity": "critical", "description": "Docker API accessible without authentication", "evidence": "Successfully queried /version endpoint without credentials" } ] }
### دعم البروكسي
يدعم Nerva توجيه حركة المسح عبر بروكسيات SOCKS5 و HTTP مع إمكانية تكوين دقة DNS.
**أنواع البروكسي المدعومة:**
- `socks5://` - بروكسي SOCKS5 مع دقة DNS محلية
- `socks5h://` - بروكسي SOCKS5 مع دقة DNS من جانب البروكسي (دائمًا)
- `http://` - بروكسي HTTP CONNECT
- `https://` - بروكسي HTTPS CONNECT
**مصادقة البروكسي:**```sh
# Inline authentication (URL format)
nerva -t example.com:80 --proxy socks5://username:[email protected]:1080
# Separate authentication flag
nerva -t example.com:80 --proxy socks5://127.0.0.1:1080 --proxy-auth username:password
استراتيجيات تحليل DNS (--dns-order):
ملاحظة: مخطط socks5h:// يفرض تلقائيًا تحليل DNS من جانب الوكيل (ما يعادل --dns-order p)
مثال مسح Tor:```sh
nerva -t http://example.onion:80 --proxy socks5h://127.0.0.1:9050
**UDP عبر البروكسي:**```sh
# UDP scanning through SOCKS5 proxy (limited support)
nerva -t target.com:161 --proxy socks5://127.0.0.1:1080 --udp
⚠️ قيود UDP: دعم UDP عبر SOCKS5 محدود. لا تدعم جميع خوادم SOCKS5 ربط UDP. قد يحدث التراجع المحلي لـ UDP.
المسح المتوازي مع تحديد المعدل:```sh nerva -l large-target-list.txt -W 100 -H 5 -R 50 -v
**إغلاق أنيق** (Ctrl+C يقوم بإرجاع نتائج جزئية):```sh
nerva -l huge-target-list.txt -W 50 -v
# Press Ctrl+C to stop — collected results are still printed
أكثر من 170 مكونًا إضافيًا لكشف الخدمات عبر TCP و UDP و SCTP:
كشف التقنيات لخدمات الويب، منظمة حسب الفئة:
| الوحدة | الوصف |
|---|---|
| Home Assistant | منصة أتمتة المنزل |
| UniFi/EdgeOS | أجهزة شبكات Ubiquiti |
| الوحدة | الوصف |
|---|---|
| Go pprof | نقاط نهاية تحليل أداء Go |
| NATS | وسيط الرسائل |
| البروتوكول | النقل | ملاحظات |
|---|---|---|
| HTTP/HTTPS | TCP | HTTP/2, كشف التقنيات عبر Wappalyzer |
| Kubernetes | TCP | كشف خادم API |
قم باستيراد Nerva في تطبيقات Go الخاصة بك:```go package main
import ( "context" "fmt" "log" "net/netip" "time"
"github.com/praetorian-inc/nerva/pkg/plugins"
"github.com/praetorian-inc/nerva/pkg/scan"
)
func main() { // Configure scan config := scan.Config{ DefaultTimeout: 2 * time.Second, FastMode: false, UDP: false, Proxy: "socks5://127.0.0.1:1080", // optional ProxyAuth: "username:password", // optional DNSOrder: "p", // resolver strategy }
// Create target
ip, _ := netip.ParseAddr("93.184.216.34")
target := plugins.Target{
Address: netip.AddrPortFrom(ip, 22),
Host: "example.com",
}
// Run scan
results, err := scan.ScanTargets(context.Background(), []plugins.Target{target}, config)
if err != nil {
log.Fatal(err)
}
// Process results
for _, result := range results {
fmt.Printf("%s:%d - %s (%s)\n",
result.Host, result.Port,
result.Protocol, result.Transport)
}
}
انظر [examples/service-fingerprinting-example.go](https://github.com/praetorian-inc/nerva/blob/HEAD/examples/service-fingerprinting-example.go) للحصول على مثال عملي كامل.
## حالات الاستخدام
### اختبار الاختراق
بصمة سريعة للخدمات المكتشفة أثناء الاستطلاع لتحديد نواقل الهجوم المحتملة.
### خطوط اكتشاف الأصول
ادمج مع Naabu أو Masscan لجرد واسع النطاق للأصول:```sh
naabu -host 10.0.0.0/24 -silent | nerva --json | jq '.protocol'
دمج في خطوات النشر للتحقق من أن الخدمات المتوقعة فقط هي المكشوفة.
تعداد سريع للخدمات عبر نطاقات الأهداف للعثور على نقاط نهاية مثيرة للاهتمام.
البصمة على عُقد Diameter في شبكات LTE/5G باستخدام نقل SCTP (Linux):```sh nerva -t mme.telecom.local:3868 -S --json
## البنية```mermaid
graph LR
A[host:port input] --> B[Target Parser]
B --> C[Scan Engine]
C --> D{Transport}
D -->|TCP| E[TCP Plugins]
D -->|UDP| F[UDP Plugins]
D -->|SCTP| G[SCTP Plugins]
E --> H[Service Detection]
F --> H
G --> H
H --> I[Metadata Extraction]
I --> J[JSON/CSV/Text Output]
nerva -t host:port مقابل echo host | zgrab2 http -p portالسبب: المنفذ مغلق أو لم يتم اكتشاف خدمة مدعومة.
الحل: تحقق من أن المنفذ مفتوح:```sh nc -zv example.com 80
### أخطاء المهلة
**السبب**: المهلة الافتراضية البالغة ثانيتين قصيرة جدًا للخدمات البطيئة.
**الحل**: زيادة المهلة:```sh
nerva -t example.com:80 -w 5000 # 5 seconds
السبب: فحص UDP معطل بشكل افتراضي.
الحل: قم بتمكينه باستخدام العلامة -U (قد يتطلب صلاحيات الجذر):```sh
sudo nerva -t example.com:53 -U
### SCTP لا يعمل
**السبب**: SCTP مدعوم فقط على Linux.
**الحل**: التشغيل على نظام أو حاوية Linux:```sh
docker run --rm nerva -t telecom:3868 -S
إذا وجدت Nerva مفيدًا، يرجى التفكير في منحه نجمة:
نرحب بالمساهمات! راجع CONTRIBUTING.md للإرشادات.
Apache 2.0 — راجع LICENSE للتفاصيل.
Nerva هو فرع مُدار من fingerprintx، الذي تم تطويره أصلاً بواسطة فئة المتدربين في Praetorian لعام 2022:
| Finding ID | Severity | Description |
|---|
docker-unauth-api | حرجة | واجهة Docker API قابلة للوصول بدون مصادقة |
x11-unauth-access | حرجة | خادم X11 يسمح باتصالات غير مصادق عليها |
smb-signing-not-required | متوسطة | توقيع SMB غير مطلوب (خطر هجوم الترحيل) |
telnet-cleartext | متوسطة | Telnet ينقل بيانات الاعتماد بنص واضح |
vnc-detected | متوسطة | تم اكتشاف VNC (غالبًا مصادقة ضعيفة) |
ssh-password-auth | متوسطة | الخادم يسمح بمصادقة كلمة المرور |
ssh-weak-cipher | منخفضة | الخادم يقدم تشفيرًا ضعيفًا (RC4, 3DES, Blowfish) |
ssh-weak-kex | منخفضة | الخادم يقدم خوارزميات تبادل مفاتيح ضعيفة |
ssh-weak-mac | منخفضة | الخادم يقدم خوارزميات MAC ضعيفة |
ftp-cleartext | منخفضة | FTP ينقل بيانات الاعتماد بنص واضح |
| الخيار | الاستراتيجية | حالة الاستخدام |
|---|
l | محلي فقط | تحليل DNS محلي قياسي (افتراضي) |
p | وكيل فقط | فرض تحليل DNS من جانب الوكيل |
lp | محلي، مع التراجع إلى الوكيل | تجربة المحلي أولاً، استخدم الوكيل عند الفشل |
pl | وكيل، مع التراجع إلى المحلي | تجربة الوكيل أولاً، استخدم المحلي عند الفشل |
| الوحدة | الوصف |
|---|
| Checkpoint | بوابة الأمان من Check Point |
| Cisco ASA/FTD | أجهزة جدار ناري/VPN من Cisco |
| FortiGate | جدار ناري/VPN من Fortinet |
| GlobalProtect | VPN من Palo Alto Networks |
| Juniper | جدران نارية Juniper SRX |
| OPNsense | جدار ناري OPNsense |
| pfSense | جدار ناري pfSense |
| SonicWall | جدران نارية SonicWall |
| AnyConnect | VPN SSL من Cisco AnyConnect |
| Cisco Expressway | بوابة التعاون من Cisco |
| BigIP | موازن التحميل F5 BIG-IP |
| WinRM | إدارة Windows عن بُعد |
| الوحدة | الوصف |
|---|
| Ollama | خادم استدلال LLM ذاتي الاستضافة |
| LocalAI | استدلال LLM ذاتي الاستضافة (متوافق مع OpenAI) |
| Open WebUI | واجهة ويب LLM (على نمط ChatGPT) |
| Triton | خادم استدلال NVIDIA Triton |
| Weaviate | قاعدة بيانات متجهة للذكاء الاصطناعي |
| ChromaDB | قاعدة بيانات متجهة |
| الوحدة | الوصف |
|---|
| ArangoDB | قاعدة بيانات متعددة النماذج |
| CockroachDB | قاعدة بيانات SQL موزعة |
| CouchDB | قاعدة بيانات مستندات Apache |
| Elasticsearch | محرك بحث وتحليلات |
| etcd | مخزن مفاتيح-قيم موزع |
| Milvus | قاعدة بيانات متجهة |
| MinIO | تخزين كائنات متوافق مع S3 |
| Pinecone | قاعدة بيانات متجهة |
| Redis Commander | واجهة إدارة ويب لـ Redis |
| TiDB | قاعدة بيانات SQL موزعة |
| YugabyteDB | قاعدة بيانات SQL موزعة |
| Qdrant | قاعدة بيانات متجهة |
| الوحدة | الوصف |
|---|
| Artifactory | مستودع القطع الأثرية من JFrog |
| Consul | شبكة الخدمات من HashiCorp |
| Docker Registry | سجل صور الحاويات |
| Gitea | خدمة Git ذاتية الاستضافة |
| Grafana | منصة المراقبة |
| Harbor | سجل الحاويات |
| Jaeger | التتبع الموزع |
| Jenkins | أتمتة CI/CD |
| Kubernetes | واجهة برمجة تطبيقات تنسيق الحاويات |
| Portainer | واجهة إدارة Docker |
| Prometheus | نظام المراقبة |
| Swagger/OpenAPI | توثيق API |
| TeamCity | خادم CI/CD |
| Vault | إدارة الأسرار من HashiCorp |
| الوحدة | الوصف |
|---|
| Apache HTTPD | خادم HTTP من Apache |
| Express.js | إطار عمل ويب Node.js |
| GoAhead | خادم ويب مضمن |
| Gotenberg | خدمة إنشاء PDF |
| Guacamole | بوابة سطح المكتب البعيد من Apache |
| SOAP | خدمات الويب |
| Tengine | خادم ويب من Alibaba |
| Tomcat | Apache Tomcat |
| WordPress | منصة CMS |
| UPnP | التوصيل والتشغيل العالمي |
| الوحدة | الوصف |
|---|
| AEM | Adobe Experience Manager |
| Dynamics 365 | Microsoft Dynamics 365 / Power Apps |
| Oracle Service Cloud | منصة CRM من Oracle |
| SAP NetWeaver | منصة المؤسسات من SAP |
| Splunk | منصة إدارة السجلات |
| VMware Horizon | بنية سطح المكتب الافتراضي |
| QNAP QTS | إدارة NAS |
| Exchange | خادم Microsoft Exchange |
| البروتوكول | النقل | المنافذ الافتراضية |
|---|
| PostgreSQL | TCP | 5432 |
| MySQL | TCP | 3306 |
| MSSQL | TCP | 1433 |
| Oracle | TCP | 1521 |
| MongoDB | TCP | 27017 |
| Redis | TCP/TLS | 6379, 6380 |
| Cassandra | TCP | 9042 |
| InfluxDB | TCP | 8086 |
| Neo4j | TCP/TLS | 7687 |
| DB2 | TCP | 446, 50000 |
| Sybase | TCP | 5000 |
| Firebird | TCP | 3050 |
| Memcached | TCP | 11211 |
| ZooKeeper | TCP | 2181 |
| Milvus | TCP | 19530, 9091 |
| CouchDB | HTTP | 5984 |
| Elasticsearch | HTTP | 9200 |
| ArangoDB | HTTP | 8529 |
| ChromaDB | HTTP | 8000 |
| Pinecone | HTTP | 443 |
| البروتوكول | النقل | المنافذ الافتراضية |
|---|
| SSH | TCP | 22, 2222 |
| RDP | TCP/TLS | 3389 |
| Telnet | TCP | 23 |
| VNC | TCP | 5900 |
| AnyDesk | TCP | 7070 |
| TeamViewer | TCP | 5938 |
| البروتوكول | النقل | المنافذ الافتراضية |
|---|
| Kafka | TCP/TLS | 9092, 9093 |
| MQTT 3/5 | TCP/TLS | 1883, 8883 |
| AMQP | TCP/TLS | 5672, 5671 |
| ActiveMQ | TCP/TLS | 61616, 61617 |
| NATS | TCP/TLS | 4222, 6222 |
| Pulsar | TCP/TLS | 6650, 6651 |
| SMTP | TCP/TLS | 25, 465, 587 |
| POP3 | TCP/TLS | 110, 995 |
| IMAP | TCP/TLS | 143, 993 |
| SMPP | TCP | 2775, 2776 |
| البروتوكول | النقل | المنافذ الافتراضية |
|---|
| FTP | TCP | 21 |
| SMB | TCP | 445 |
| NFS | TCP/UDP | 2049 |
| Rsync | TCP | 873 |
| TFTP | UDP | 69 |
| SVN | TCP | 3690 |
| LDAP | TCP/TLS | 389, 636 |
| البروتوكول | النقل | المنافذ الافتراضية |
|---|
| DNS | TCP/UDP | 53 |
| DHCP | UDP | 67, 68 |
| NTP | UDP | 123 |
| SNMP | UDP | 161 |
| NetBIOS-NS | UDP | 137 |
| STUN | UDP | 3478 |
| OpenVPN | UDP | 1194 |
| IPsec | UDP | 500 |
| IPMI | UDP | 623 |
| CoAP | UDP | 5683 |
| Echo | TCP/UDP | 7 |
| البروتوكول | النقل | المنافذ الافتراضية | ملاحظات |
|---|
| Modbus | TCP | 502 | SCADA/PLC |
| S7comm | TCP | 102 | Siemens PLC |
| EtherNet/IP | TCP | 44818 | Rockwell/Allen-Bradley |
| PROFINET | TCP | 34962-34964 | Siemens industrial |
| BACnet | UDP | 47808 | Building automation |
| OPC UA | TCP | 4840 | Industrial interop |
| OMRON FINS | TCP/UDP | 9600 | OMRON PLC |
| MELSEC-Q | TCP | 5006, 5007 | Mitsubishi PLC |
| KNXnet/IP | UDP | 3671 | Building automation |
| IEC 104 | TCP | 2404 | Power grid SCADA |
| DNP3 | TCP | 20000 | Power grid SCADA |
| Codesys | TCP | 1200, 2455 | PLC runtime |
| Fox | TCP | 1911 | Tridium Niagara |
| PC WORX | TCP | 1962 | Phoenix Contact |
| ProConOS | TCP | 20547 | PLC runtime |
| HART-IP | TCP | 5094 | Process automation |
| EtherCAT | UDP | 34980 | Motion control |
| Crimson v3 | TCP | 789 | Red Lion HMI |
| PCOM | TCP | 20256 | Unitronics PLC |
| GE SRTP | TCP | 18245 | GE PLC |
| ATG | TCP | 10001 | Tank gauges |
| البروتوكول | النقل | المنافذ الافتراضية | ملاحظات |
|---|
| Diameter | TCP/SCTP | 3868 | LTE/5G AAA |
| M3UA | SCTP | 2905 | SS7 over IP |
| M2UA | SCTP | 2904 | MTP2 User Adaptation |
| M2PA | SCTP | 3565 | MTP2 Peer Adaptation |
| SGsAP | SCTP | 29118 | Circuit-switched fallback |
| X2AP | SCTP | 36422 | LTE inter-eNodeB |
| IUA | SCTP | 9900 | ISDN over IP |
| SIP | TCP/UDP/TLS | 5060, 5061 | VoIP signaling |
| MEGACO/H.248 | UDP | 2944, 2945 | Media gateway |
| MGCP | UDP | 2427, 2727 | Media gateway |
| H.323 | TCP | 1720 | Video conferencing |
| SCCP/Skinny | TCP | 2000, 2443 | Cisco IP phones |
| IAX2 | UDP | 4569 | Asterisk protocol |
| GTP-C | UDP | 2123 | GPRS control |
| GTP-U | UDP | 2152 | GPRS user plane |
| GTP' | UDP | 3386 | GPRS charging |
| PFCP | UDP | 8805 | 5G user plane |
| البروتوكول | النقل | المنافذ الافتراضية |
|---|
| SSH | TCP | 22, 2222 |
| OpenVPN | UDP | 1194 |
| WireGuard | UDP | 51820 |
| IPsec/IKEv2 | UDP | 500, 4500 |
| L2TP | UDP | 1701 |
| SSTP | TCP | 443 |
| GlobalProtect | HTTP | 443 |
| AnyConnect | HTTP | 443 |
| FortiGate | HTTP | 443 |
| STUN/TURN | UDP | 3478, 5349 |
| Kerberos | TCP | 88 |
| البروتوكول | النقل | المنافذ الافتراضية |
|---|
| RDP | TCP/TLS | 3389 |
| VNC | TCP | 5900 |
| Telnet | TCP | 23 |
| WinRM | HTTP | 5985, 5986 |
| IPMI | UDP | 623 |
| SNMP | UDP | 161 |
| Zabbix Agent | TCP | 10050 |
| NRPE | TCP/TLS | 5666 |
| Docker | TCP/TLS | 2375, 2376 |
| X11 | TCP | 6000-6063 |
| البروتوكول | النقل | المنافذ الافتراضية |
|---|
| HTTP/HTTPS | TCP | 80, 443, 8080, 8443 |
| Java RMI | TCP | 1099 |
| JDWP | TCP | 5005 |
| RTSP | TCP | 554 |
| Linux RPC | TCP | 111 |
| JetDirect | TCP | 9100 |
| CUPS/IPP | TCP | 631 |
| SonarQube | TCP | 9000 |