
أداة قائمة بذاتها لاكتشاف الخدمات على المنافذ المفتوحة!
الميزات • التثبيت • الاستخدام • تشغيل fingerprintx • الاستخدام كمكتبة • لماذا nmap لا؟ • ملاحظات • شكر وتقدير
fingerprintx هو أداة مشابهة لـ httpx تدعم أيضًا بصمة الخدمات مثل RDP وSSH وMySQL وPostgreSQL وKafka وغيرها. يمكن استخدام fingerprintx جنبًا إلى جنب مع ماسحات المنافذ مثل Naabu لبصمة مجموعة من المنافذ التي تم تحديدها أثناء مسح المنافذ. على سبيل المثال، قد يرغب مهندس في مسح نطاق IP ثم بصمة الخدمة قيد التشغيل على جميع المنافذ المكتشفة بسرعة.



51 إضافة لكشف الخدمات تدعم بروتوكولات TCP و UDP:
| الخدمة | النقل |
|---|---|
| Cassandra | TCP |
| ChromaDB | TCP |
| CouchDB | TCP |
| DB2 | TCP |
| DHCP | UDP |
| Diameter | TCP |
| DNS | TCP/UDP |
| Echo | TCP |
| Elasticsearch | TCP |
| Firebird | TCP |
| FTP | TCP |
| HTTP/HTTPS | TCP |
| IMAP | TCP |
| InfluxDB | TCP |
| IPMI | TCP |
| IPSEC | UDP |
| Java RMI | TCP |
| JDWP | TCP |
| Kafka | TCP |
| LDAP | TCP |
| Linux RPC | TCP |
| Memcached | TCP |
| Milvus | TCP |
| Modbus | TCP |
| MongoDB | TCP |
| MQTT | TCP |
| MSSQL | TCP |
| MySQL | TCP |
| Neo4j | TCP |
| NetBIOS-NS | UDP |
| NTP | UDP |
| OpenVPN | UDP |
| OracleDB | TCP |
| Pinecone | TCP |
| POP3 | TCP |
| PostgreSQL | TCP |
| RDP | TCP |
| Redis | TCP |
| Rsync | TCP |
| RTSP | TCP |
| SMB | TCP |
| SMPP | TCP |
| SMTP | TCP |
| SNMP | UDP |
| SNPP | TCP |
| SSH | TCP |
| STUN | UDP |
| Sybase | TCP |
| Telnet | TCP |
| VNC | TCP |
من Github
go install github.com/praetorian-inc/fingerprintx/cmd/fingerprintx@latest
من المصدر (إصدار go > 1.18)
$ git clone [email protected]:praetorian-inc/fingerprintx.git
$ cd fingerprintx
# مع إصدار go > 1.18
$ go build ./cmd/fingerprintx
$ ./fingerprintx -h
Docker
$ git clone [email protected]:praetorian-inc/fingerprintx.git
$ cd fingerprintx
# بناء
docker build -t fingerprintx .
# وتشغيله
docker run --rm fingerprintx -h
docker run --rm fingerprintx -t praetorian.com:80 --json
fingerprintx -h
الخيار -h سيعرض جميع الأعلام المدعومة لـ fingerprintx.
الاستخدام:
fingerprintx [flags]
تحديد الهدف:
يتطلب مضيف ورقم منفذ أو IP ورقم منفذ. يُفترض أن المنفذ مفتوح.
HOST:PORT أو IP:PORT
أمثلة:
fingerprintx -t praetorian.com:80
fingerprintx -l input-file.txt
fingerprintx --json -t praetorian.com:80,127.0.0.1:8000
الأعلام:
--csv تنسيق الإخراج بصيغة csv
-f, --fast الوضع السريع
-h, --help المساعدة لـ fingerprintx
--json تنسيق الإخراج بصيغة json
-l, --list string ملف إدخال يحتوي على الأهداف
-o, --output string ملف الإخراج
-t, --targets strings الهدف أو قائمة أهداف مفصولة بفواصل
-w, --timeout int المهلة (بالملي ثانية) (الافتراضي 500)
-U, --udp تشغيل إضافات UDP
-v, --verbose الوضع المفصل
الوضع السريع سيحاول فقط بصمة الخدمة الافتراضية المرتبطة بهذا المنفذ لكل هدف. على سبيل المثال، إذا كان praetorian.com:8443 هو الإدخال، فسيتم تشغيل إضافة https فقط. إذا لم يكن https قيد التشغيل على praetorian.com:8443، فلن يكون هناك أي إخراج. لماذا نفعل هذا؟ إنها طريقة سريعة لبصمة معظم الخدمات في قائمة كبيرة من المضيفين (فكر في قاعدة 80/20).
مع هدف واحد:
$ fingerprintx -t 127.0.0.1:8000
http://127.0.0.1:8000
بشكل افتراضي، يكون الإخراج بالشكل: SERVICE://HOST:PORT. للحصول على إخراج خدمة أكثر تفصيلاً، حدد JSON باستخدام العلم --json:
$ fingerprintx -t 127.0.0.1:8000 --json
{"ip":"127.0.0.1","port":8000,"service":"http","transport":"tcp","metadata":{"responseHeaders":{"Content-Length":["1154"],"Content-Type":["text/html; charset=utf-8"],"Date":["Mon, 19 Sep 2022 18:23:18 GMT"],"Server":["SimpleHTTP/0.6 Python/3.10.6"]},"status":"200 OK","statusCode":200,"version":"SimpleHTTP/0.6 Python/3.10.6"}}
أنبوب الإخراج من برنامج آخر (مثل naabu):
$ naabu 127.0.0.1 -silent 2>/dev/null | fingerprintx
http://127.0.0.1:8000
ftp://127.0.0.1:21
التشغيل مع ملف إدخال:
$ cat input.txt | fingerprintx
http://praetorian.com:80
telnet://telehack.com:23
# أو إذا كنت تفضل
$ fingerprintx -l input.txt
http://praetorian.com:80
telnet://telehack.com:23
مع المزيد من إخراج البيانات الوصفية:
$ cat input.txt | fingerprintx --json
{"host":"praetorian.com","ip":"146.148.61.165","port":80,"service":"http","transport":"tcp","metadata":{"responseHeaders":{"Connection":["keep-alive"],"Content-Type":["text/html"],"Date":["Mon, 19 Sep 2022 18:37:55 GMT"],"Etag":["W/\"5e3e263f-1703\""],"Keep-Alive":["timeout=20"],"Server":["nginx"],"Vary":["Accept-Encoding"]},"status":"404 Not Found","statusCode":404,"version":"nginx"}}
{"host":"telehack.com","ip":"64.13.139.230","port":23,"service":"telnet","transport":"tcp","metadata":{"serverData":"fffb03"}}