
खुले पोर्ट्स पर सेवा खोज के लिए एक स्वतंत्र उपयोगिता!
विशेषताएँ • स्थापना • उपयोग • fingerprintx चलाना • लाइब्रेरी के रूप में उपयोग • nmap क्यों नहीं? • नोट्स • आभार
fingerprintx एक उपयोगिता है जो httpx के समान है, लेकिन यह RDP, SSH, MySQL, PostgreSQL, Kafka आदि जैसी सेवाओं की फिंगरप्रिंटिंग का भी समर्थन करती है। fingerprintx का उपयोग Naabu जैसे पोर्ट स्कैनरों के साथ किया जा सकता है, ताकि पोर्ट स्कैन के दौरान पहचाने गए पोर्टों के सेट की फिंगरप्रिंटिंग की जा सके। उदाहरण के लिए, कोई इंजीनियर किसी IP रेंज को स्कैन करना चाह सकता है और फिर सभी खोजे गए पोर्टों पर चल रही सेवा की तेजी से पहचान कर सकता है।



51 सेवा डिटेक्शन प्लगइन्स जो TCP और UDP प्रोटोकॉल का समर्थन करते हैं:
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 के लिए सभी समर्थित फ्लैग प्रदर्शित करेगा।
Usage:
fingerprintx [flags]
TARGET SPECIFICATION:
Requires a host and port number or ip and port number. The port is assumed to be open.
HOST:PORT or IP:PORT
EXAMPLES:
fingerprintx -t praetorian.com:80
fingerprintx -l input-file.txt
fingerprintx --json -t praetorian.com:80,127.0.0.1:8000
Flags:
--csv output format in csv
-f, --fast fast mode
-h, --help help for fingerprintx
--json output format in json
-l, --list string input file containing targets
-o, --output string output file
-t, --targets strings target or comma separated target list
-w, --timeout int timeout (milliseconds) (default 500)
-U, --udp run UDP plugins
-v, --verbose verbose mode
fast मोड प्रत्येक लक्ष्य के लिए उस पोर्ट से जुड़ी डिफ़ॉल्ट सेवा का ही फिंगरप्रिंट लेने का प्रयास करेगा। उदाहरण के लिए, यदि इनपुट praetorian.com:8443 है, तो केवल https प्लगइन चलेगा। यदि praetorian.com:8443 पर https नहीं चल रहा है, तो कोई आउटपुट नहीं होगा। ऐसा क्यों? यह होस्टों की बड़ी सूची में अधिकांश सेवाओं को तेज़ी से फिंगरप्रिंट करने का एक तरीका है (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"}}
fingerprintx को आपके प्रोजेक्ट में आयात किया जा सकता है ताकि खुले पोर्टों पर सेवाओं को स्कैन किया जा सके। इसका उपयोग कैसे करें, इसका एक उदाहरण कोड यहाँ examples निर्देशिका में प्रदान किया गया है। go build scan.go के साथ बिल्ड करें। जब आप अपने प्रोजेक्ट में fingerprintx आयात कर रहे हों, तो कमांड लाइन रनर एक और फ़ाइल है जो संदर्भ के रूप में उपयोगी हो सकती है।
Nmap नेटवर्क स्कैनिंग का मानक है। nmap के बजाय fingerprintx का उपयोग क्यों करें? मुख्य दो कारण हैं:
fingerprintx स्मार्ट तरीके से काम करता है, कठोरता से नहीं: पोर्ट 8080 खुला होने पर सर्वर के खिलाफ चलाया जाने वाला पहला प्लगइन http प्लगइन है। डिफ़ॉल्ट सेवा दृष्टिकोण स्कैनिंग समय को सबसे अच्छी स्थिति में कम करता है। ज्यादातर समय, पोर्ट 80, 443, 22 पर चलने वाली सेवाएँ http, https और ssh होती हैं - इसलिए fingerprintx पहले उन्हीं की जाँच करता है।fingerprintx --json फ्लैग के साथ json आउटपुट का समर्थन करता है। Nmap कई आउटपुट विकल्पों (सामान्य, xml, grep) का समर्थन करता है, लेकिन उन्हें पार्स करना और उचित रूप से स्क्रिप्ट करना अक्सर कठिन होता है। fingerprintx json आउटपुट का समर्थन करता है जो प्रोसेसिंग पाइपलाइनों में अन्य टूल्स के साथ एकीकरण को आसान बनाता है।third_party फ़ोल्डर क्यों है जो Go क्रिप्टोग्राफी लाइब्रेरीज़ को आयात करता है?
ssh फिंगरप्रिंटिंग मॉड्यूल हैंडशेक प्रक्रिया के दौरान मेटाडेटा एकत्र करते समय सर्वर द्वारा समर्थित विभिन्न क्रिप्टोग्राफिक विकल्पों की पहचान करता है। यह कुछ अघोषित फ़ंक्शनों का उपयोग करता है, यही कारण है कि Go क्रिप्टोग्राफी लाइब्रेरीज़ को यहाँ export.go फ़ाइल के साथ शामिल किया गया है।target:port इनपुट खुला है। यदि कोई पोर्ट खुला नहीं है, तो कोई आउटपुट नहीं होगा क्योंकि लक्ष्यों पर कोई सेवा नहीं चल रही है।zgrab2 का कमांड लाइन उपयोग (और उपयोग का मामला) fingerprintx से थोड़ा अलग है। zgrab2 के लिए, प्रोटोकॉल को पहले से निर्दिष्ट किया जाना चाहिए: echo praetorian.com | zgrab2 http -p 8000, जो यह मानता है कि आप पहले से जानते हैं कि वहाँ क्या चल रहा है। fingerprintx के लिए ऐसा नहीं है: echo praetorian.com:8000 | fingerprintx। "एप्लिकेशन लेयर" प्रोटोकॉल स्कैनिंग दृष्टिकोण बहुत समान है।fingerprintx बहुत से लोगों के काम का परिणाम है, जिसमें 2022 की हमारी शानदार इंटर्न क्लास भी शामिल है। यहाँ अब तक के योगदानकर्ताओं की सूची है:
| सेवा | ट्रांसपोर्ट |
|---|
| 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 |