hacktricks/generic-methodologies-and-resources/pentesting-network/nmap-summary-esp.md

232 lines
29 KiB
Markdown

# Nmap सारांश (ESP)
{% hint style="success" %}
AWS हैकिंग सीखें और अभ्यास करें:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks प्रशिक्षण AWS रेड टीम विशेषज्ञ (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCP हैकिंग सीखें और अभ्यास करें: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks प्रशिक्षण GCP रेड टीम विशेषज्ञ (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>हैकट्रिक्स का समर्थन करें</summary>
* [**सदस्यता योजनाएं**](https://github.com/sponsors/carlospolop) की जाँच करें!
* **शामिल हों** 💬 [**डिस्कॉर्ड समूह**](https://discord.gg/hRep4RUj7f) या [**टेलीग्राम समूह**](https://t.me/peass) और **ट्विटर** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** पर हमें **फॉलो** करें।
* **हैकिंग ट्रिक्स साझा करें, हैकट्रिक्स**](https://github.com/carlospolop/hacktricks) और [**हैकट्रिक्स क्लाउड**](https://github.com/carlospolop/hacktricks-cloud) github रेपो में PR जमा करके।
</details>
{% endhint %}
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
{% embed url="https://websec.nl/" %}
```
nmap -sV -sC -O -n -oA nmapscan 192.168.0.1/24
```
## पैरामीटर
### स्कैन करने के लिए IPs
* **`<ip>,<net/mask>`:** सीधे IPs को दर्शाता है
* **`-iL <ips_file>`:** सूची_IPs
* **`-iR <number>`**: यादृच्छिक Ips की संख्या, आप `--exclude <Ips>` या `--excludefile <file>` के साथ संभावित Ips को छोड़ सकते हैं।
### उपकरण खोज
निम्नलिखित डिस्कवरी चरण को लॉन्च करता है Nmap: `-PA80 -PS443 -PE -PP`
* **`-sL`**: यह आक्रामक नहीं है, यह लक्ष्यों की सूची बनाता है जो नामों को हल करने के लिए **DNS** अनुरोध करते हैं। यह उपयोगी है यदि आप जानना चाहते हैं कि क्या उदाहरण के लिए www.prueba.es/24 सभी Ips हमारे लक्ष्य हैं।
* **`-Pn`**: **कोई पिंग नहीं**। यह उपयोगी है अगर आप जानते हैं कि सभी उनमें सक्रिय हैं (अगर नहीं, तो आप बहुत समय खो सकते हैं, लेकिन यह विकल्प भी गलत नकारात्मक उत्तर देता है कि वे सक्रिय नहीं हैं), यह खोज चरण को रोकता है।
* **`-sn`** : **कोई पोर्ट स्कैन नहीं**। अन्वेषण चरण पूरा करने के बाद, यह पोर्ट स्कैन नहीं करता है। यह अनुमानित रूप से छिपकली, और एक छोटे नेटवर्क स्कैन करने देता है। विशेषाधिकारों के साथ यह 80 को ACK (-PA) भेजता है, 443 को SYN(-PS) भेजता है और एक इको अनुरोध और एक समयचिह्न अनुरोध भेजता है, बिना विशेषाधिकारों के यह हमेशा कनेक्शन पूरा करता है। यदि लक्ष्य नेटवर्क है, तो यह केवल ARP(-PR) का उपयोग करता है। यदि इसे किसी अन्य विकल्प के साथ उपयोग किया जाता है, तो केवल अन्य विकल्प के पैकेट ड्रॉप होते हैं।
* **`-PR`**: **पिंग ARP**। यह डिफ़ॉल्ट रूप से हमारे नेटवर्क में कंप्यूटरों का विश्लेषण करते समय उपयोग किया जाता है, यह पिंग का उपयोग करने से तेज है। यदि आप ARP पैकेट का उपयोग नहीं करना चाहते हैं तो `--send-ip` का उपयोग करें।
* **`-PS <ports>`**: यह SYN पैकेट भेजता है जिसे यदि यह SYN/ACK के साथ जवाब देता है तो खुला है (जिसे यह RST के साथ जवाब देता है ताकि कनेक्शन समाप्त न हो), यदि यह RST के साथ जवाब देता है तो बंद है और यदि यह जवाब नहीं देता है तो अगम्य है। यदि विशेषाधिकार नहीं हैं, तो समूचा कनेक्शन स्वचालित रूप से उपयोग किया जाता है। यदि कोई पोर्ट नहीं दिया गया है, तो यह 80 पर फेंक देता है।
* **`-PA <ports>`**: पिछले वाले की तरह लेकिन ACK के साथ, दोनों को मिलाकर बेहतर परिणाम मिलते हैं।
* **`-PU <ports>`**: उद्देश्य उल्टा है, जो बंद होने की उम्मीद है। कुछ फ़ायरवॉल केवल TCP कनेक्शन की जांच करते हैं। यदि यह बंद है तो यह पोर्ट अप्राप्त है, यदि यह किसी अन्य icmp के साथ जवाब देता है या जवाब नहीं देता है तो यह गंतव्य अप्राप्त है।
* **`-PE, -PP, -PM`** : ICMP PINGS: इको प्रतिद्वंद्वीकरण, समयचिह्न और एड्रेसमास्क। यह लॉन्च किए जाते हैं ताकि पता चले कि लक्ष्य सक्रिय है या नहीं।
* **`-PY<ports>`**: 80 के लिए SCTP INIT प्रोब भेजता है, INIT-ACK(खुला) या ABORT(बंद) या कुछ नहीं या ICMP अप्राप्त(निष्क्रिय) जवाब दिया जा सकता है।
* **`-PO <protocols>`**: हेडर में एक प्रोटोकॉल दिखाया जाता है, डिफ़ॉल्ट रूप से 1(ICMP), 2(IGMP) और 4(Encap IP)। ICMP, IGMP, TCP (6) और UDP (17) प्रोटोकॉल के लिए प्रोटोकॉल हेडर भेजे जाते हैं, बाकी के लिए केवल IP हेडर भेजा जाता है। इसका उद्देश्य यह है कि हेडर्स के गलत रूपांतरण के कारण प्रोटोकॉल अप्राप्त या उसी प्रोटोकॉल के जवाब दिए जाते हैं ताकि पता चले कि यह ऊपर है या नहीं।
* **`-n`**: कोई DNS नहीं
* **`-R`**: हमेशा DNS
### पोर्ट स्कैनिंग तकनीकें
* **`-sS`**: कनेक्शन को पूरा नहीं करता है इसलिए कोई पता नहीं छोड़ता, अगर इस्तेमाल किया जा सकता है तो बहुत अच्छा है।(विशेषाधिकार) यह डिफ़ॉल्ट रूप से उपयोग किया जाता है।
* **`-sT`**: कनेक्शन पूरा करता है, इसलिए यह पता छोड़ता है, लेकिन यह सुनिश्चित करने के लिए उपयोग किया जा सकता है। डिफ़ॉल्ट रूप से विशेषाधिकारों के बिना।
* **`-sU`**: धीमा, UDP के लिए। अधिकांश: DNS(53), SNMP(161,162), DHCP(67 और 68), (-sU53,161,162,67,68): खुला(जवाब), बंद(पोर्ट अप्राप्त), फ़िल्टर(अन्य ICMP), खुला/फ़िल्टर(कुछ नहीं)। खुला/फ़िल्टर के मामले में, -sV न्यूनतम संभावनाओं को खोजने के लिए कई अनुरोध भेजता है और nmap समर्थित किसी भी संस्करण का पता लगा सकता है और वास्तविक स्थिति का पता लगा सकता है। यह समय को बहुत बढ़ा देता है।
* **`-sY`**: SCTP प्रोटोकॉल कनेक्शन स्थापित करने में विफल होता है, इसलिए कोई लॉग नहीं होता, -PY की तरह काम करता है
* **`-sN,-sX,-sF`:** नल, फिन, क्रिसमस, वे कुछ फ़ायरवॉल में प्रवेश कर सकते हैं और जानकारी निकाल सकते हैं। यह उस तथ्य पर आधारित है कि मानक अनुरूप मशीनें उन सभी अनुरोधों के साथ RST के साथ प्रतिक्रिया करना चाहिए जिनमें SYN, RST या ACK लैग उठाए गए हैं: खुला/फ़िल्टर(कुछ नहीं), बंद(RST), फ़िल्टर(अन्य ICMP)। विंडोज, सिस्को, बीएसडीआई और ओएस/400 पर अविश्वसनीय है। यूनिक्स पर हां।
* **`-sM`**: मैमन स्कैन: FIN और ACK लैग भेजता है, बीएसडी के लिए उपयोग किया जाता है, वर्तमान में सभी को बंद ही वापस करेगा।
* **`-sA, sW`**: ACK और विंडो, फ़ायरवॉल का पता लगाने के लिए उपयोग किया जाता है, यह जानने के लिए कि पोर्ट फ़िल्टर हैं या नहीं। -sW खुला/बंद के बीच भेद करता है क्योंकि खुले वाले अलग विंडो मान देते हैं: खुला (जवाब में विंडो 0 के अलावा RST), बंद (RST विंडो = 0), फ़िल्टर (ICMP
**--osscan-guess** जब ऑपरेटिंग सिस्टम की पहचान पूरी तरह से सही नहीं होती है तो यह अधिक प्रयास करता है।
**स्क्रिप्ट्स**
\--script _\<नाम>_|_\<श्रेणी>_|_\<निर्देशिका>_|_\<अभिव्यक्ति>_\[,...]
डिफ़ॉल्ट के लिए उपयोग करने के लिए -sC या --script=default काफी है।
उपलब्ध श्रेणियाँ हैं: auth, broadcast, default, discovery, dos, exploit, external, fuzzer, intrusive, malware, safe, version, और vuln
* **Auth:** प्रमाणीकरण के लिए उपलब्ध सभी अपने स्क्रिप्ट्स को चलाता है
* **Default:** उपकरण के डिफ़ॉल्ट बुनियादी स्क्रिप्ट्स को चलाता है
* **Discovery:** लक्ष्य या पीड़िता से जानकारी प्राप्त करता है
* **External:** बाहरी संसाधनों का उपयोग करने के लिए स्क्रिप्ट
* **Intrusive:** उस्ताद या लक्ष्य के लिए अभिव्यक्ति माने जाने वाले स्क्रिप्ट्स का उपयोग करता है
* **Malware:** क्या खुले हैं कोड या अवैध द्वार (बैकडोअर्स) द्वारा
* **Safe:** अभिव्यक्ति नहीं करने वाले स्क्रिप्ट्स को चलाता है
* **Vuln:** सबसे ज्यादा जानी जाने वाली वुलनरेबिलिटी का पता लगाता है
* **All:** उपलब्ध NSE विस्तार वाले सभी स्क्रिप्ट्स को चलाता है
स्क्रिप्ट्स खोजने के लिए:
**nmap --script-help="http-\*" -> जो http- से शुरू होते हैं**
**nmap --script-help="not intrusive" -> उन सभी को छोड़कर**
**nmap --script-help="default or safe" -> जो एक में हैं या दूसरे में या दोनों में**
**nmap --script-help="default and safe" --> जो दोनों में हैं**
**nmap --script-help="(default or safe or intrusive) and not http-\*"**
\--script-args _\<n1>_=_\<v1>_,_\<n2>_={_\<n3>_=_\<v3>_},_\<n4>_={_\<v4>_,_\<v5>_}
\--script-args-file _\<नाम फ़ाइल>_
\--script-help _\<नाम>_|_\<श्रेणी>_|_\<निर्देशिका>_|_\<अभिव्यक्ति>_|all\[,...]
\--script-trace ---> स्क्रिप्ट का प्रगति देता है
\--script-updatedb
**स्क्रिप्ट का उपयोग करने के लिए केवल नाम दर्ज करें: namp --script नाम_दर्ज_करें लक्ष्य** --> स्क्रिप्ट और स्कैनर दोनों को चलाने के लिए स्क्रिप्ट दर्ज करने पर, इसलिए स्कैनर के विकल्प भी जोड़ सकते हैं, हम **“safe=1”** जोड़ सकते हैं ताकि केवल सुरक्षित वाले ही चलें।
**समय नियंत्रण**
**Nmap सेकंड, मिनट, ms में समय को संशोधित कर सकता है:** --host-timeout arguments 900000ms, 900, 900s, और 15m सभी एक ही चीज करते हैं।
Nmap होस्ट की कुल संख्या को समूहों में विभाजित करता है और उन समूहों का विश्लेषण ब्लॉक में करता है, ताकि जब तक सभी विश्लेषित नहीं हो जाते हैं, तब तक अगले ब्लॉक पर नहीं जाता है (और उपयोगकर्ता को भी कोई अद्यतन नहीं मिलता है जब तक ब्लॉक का विश्लेषण नहीं हो जाता है) इस तरह, nmap के लिए बड़े समूहों का उपयोग करना अधिक उपयुक्त है। डिफ़ॉल्ट रूप से कक्षा C में 256 का उपयोग करता है।
इसे बदल सकते हैं\*\*--min-hostgroup\*\* _**\<numhosts>**_**;** **--max-hostgroup** _**\<numhosts>**_ (समानकालिक स्कैन समूह आकारों को समायोजित करें)
समानकालिक स्कैनरों की संख्या को नियंत्रित किया जा सकता है लेकिन यह बेहतर है कि न करें (nmpa में नेटवर्क की स्थिति के आधार पर स्वचालित नियंत्रण शामिल है): **--min-parallelism** _**\<numprobes>**_**;** **--max-parallelism** _**\<numprobes>**_
हम rtt टाइमआउट को संशोधित कर सकते हैं, लेकिन आम तौर पर आवश्यक नहीं होता: **--min-rtt-timeout** _**\<time>**_**,** **--max-rtt-timeout** _**\<time>**_**,** **--initial-rtt-timeout** _**\<time>**_
हम प्रयासों की संख्या को संशोधित कर सकते हैं:**--max-retries** _**\<numtries>**_
हम होस्ट के स्कैनिंग का समय संशोधित कर सकते हैं: **--host-timeout** _**\<time>**_
हम प्रत्येक परीक्षण के बीच समय को धीमा करने के लिए समय को संशोधित कर सकते हैं: **--scan-delay** _**\<time>**_**;** **--max-scan-delay** _**\<time>**_
हम प्रति सेकंड पैकेट की संख्या को संशोधित कर सकते हैं: **--min-rate** _**\<number>**_**;** **--max-rate** _**\<number>**_
बहुत सारे पोर्ट फ़िल्टर या बंद होने पर बहुत समय लेते हैं, अगर हमें केवल खुले पोर्ट्स की जरूरत है तो हम तेजी से जा सकते हैं: **--defeat-rst-ratelimit**
Nmap कितना प्रवेशनात्मक होना चाहिए यह निर्धारित करने के लिए: -T paranoid|sneaky|polite|normal|aggressive|insane
\-T (0-1)
\-T0 --> केवल एक पोर्ट को एक साथ स्कैन किया जाता है और अगले के लिए 5 मिनट तक इंतजार किया जाता है
\-T1 और T2 --> बहुत समान हैं लेकिन प्रत्येक परीक्षण के बीच केवल 15 और 0.4 सेकंड का इंतजार करते हैं
\-T3 --> डिफ़ॉल्ट व्यवहार, समानकालिक में शामिल है
\-T4 --> --max-rtt-timeout 1250ms --min-rtt-timeout 100ms --initial-rtt-timeout 500ms --max-retries 6 --max-scan-delay 10ms
\-T5 --> --max-rtt-timeout 300ms --min-rtt-timeout 50ms --initial-rtt-timeout 250ms --max-retries 2 --host-timeout 15m --max-scan-delay 5ms
**फ़ायरवॉल/IDS**
पोर्ट्स को गुजरने नहीं देते और पैकेट्स का विश्लेषण करते हैं।
**-f** पैकेट को फ्रैगमेंट करने के लिए, डिफ़ॉल्ट रूप से यह 8 बाइट के बाद फ्रैगमेंट करता है, इस आकार को निर्दिष्ट करने के लिए ..mtu का उपयोग करें (इसके साथ, -f का उपयोग न करें), ऑफ़सेट 8 के गुणक होना चाहिए। **संस्करण और स्क्रिप्ट के स्कैनर्स फ्रैगमेंटेशन का समर्थन नहीं करते**
**-D डेकॉय1,डेकॉय2,मैं** Nmap अन्य IP पतों के साथ स्कैनर भेजता है, जैसे कि मूल पतों के रूप में, इस तरह आपको छुपाता है। यदि आप में सूची में ME डालते हैं, तो nmap आपको वहां स्थित करेगा, आपको पूरी तरह से मास्क करने के लिए अपने से पहले 5 या 6 डेकॉय डालना बेहतर है। RND:\<संख्या> के साथ यादृच्छिक IP उत्पन्न किए जा सकते हैं। टीसीपी कनेक्शन के बिना संस्करण डिटेक्टर के साथ काम नहीं करते। यदि आप एक नेटवर्क के अंदर हैं, तो सक्रिय IP का उपयोग करना उपयुक्त है, क्योंकि अन्यथा आसानी से पता लगाया जा सकता है कि आप ही एकमात्र सक्रिय हैं।
यादृच्छिक IP का उपयोग करने के लिए: nmap-D RND: 10 Ip_लक्ष्य
**-S IP** जब Nmap आपका IP पता नहीं लेता है तो आपको इसे देना पड़ता है। इसका उपयोग उन्हें यह लगाने के लिए भी किया जा सकता है कि कोई अन्य लक्ष्य उन्हें स्कैन कर रहा है
**--proxies** _**\<Comma-separated list of proxy URLs>**_ प्रॉक्सी का उपयोग करने के लिए, कभी-कभी एक प्रॉक्सी उस संख्या की तरह खुली रखता है जितनी nmap चाहता है, इसलिए हमें पैरालेलिज़्म को संशोधित करना होगा: --max-parallelism
**-sP** हमारे ARP के माध्यम से नेटवर्क में होस्ट का खोज करने के लिए
बहुत से व्यवस्थापक एक फ़ायरवॉल में एक नियम बनाते हैं जो एक विशेष पोर्ट से आने वाले सभी पैकेटों को पारित करने देता है (जैसे 20, 53 और 67), हम nmap को यह कह सकते हैं कि हमारे पैकेट उन पोर्ट से भेजें: **nmap --source-port 53 Ip**
**आउटपुट**
**-oN file** सामान्य आउटपुट
**-oX file** XML आउटपुट
**-oS file** स्क्रिप्ट किडीज का आउटपुट
**-oG file** grepable आउटपुट
**-oA file** -oS को छोड़कर सभी
**-v level** वर्बोसिटी
**-d level** डीबगिंग
**--reason** होस्ट और स्थिति का कारण
**--stats-every time** हर इस समय के बाद हमें बताता है कि कैसे जा रहा है
**--packet-trace** देखने के लिए कि कौन से पैकेट निकल रहे हैं, हम फ़िल्टर जैसे निर्दिष्ट कर सकते हैं: --version-trace या --script-trace
**--open** खुले हुए, खुले हुए|फ़िल्टर किए गए और अफ़िल्टर को दिखाता है
**--resume file** एक सारांश निकालता है
**मिसेलेनियस**
**-6** ipv6 की अनुमति देता है
**-A** -O -sV -sC --traceroute के बराबर है
**रन टाइम**
नमैप चलते समय हम विकल्प बदल सकते हैं:
v / V वर्बोसिटी स्तर बढ़ाएं / कम करें
d / D डीबगिंग स्तर बढ़ाएं / कम करें
p / P पैकेट ट्रेसिंग को चालू / बंद करें
? रनटाइम इंटरेक्शन सहायता स्क्रीन प्रिंट करें
**Vulscan**
नमैप का स्क्रिप्ट जो एक ऑफ़लाइन डेटाबेस में प्राप्त सेवाओं के संस्करणों को देखता है (जो अन्य महत्वपूर्ण से डाउनलोड किया जाता है) और संभावित भेदभाव देता है
उस डेटाबेस का उपयोग करता है:
1. Scipvuldb.csv | [http://www.scip.ch/en/?vuldb](http://www.scip.ch/en/?vuldb)
2. Cve.csv | [http://cve.mitre.org](http://cve.mitre.org/)
3. Osvdb.csv | [http://www.osvdb.org](http://www.osvdb.org/)
4. Securityfocus.csv | [http://www.securityfocus.com/bid/](http://www.securityfocus.com/bid/)
5. Securitytracker.csv | [http://www.securitytracker.com](http://www.securitytracker.com/)
6. Xforce.csv | [http://xforce.iss.net](http://xforce.iss.net/)
7. Exploitdb.csv | [http://www.exploit-db.com](http://www.exploit-db.com/)
8. Openvas.csv | [http://www.openvas.org](http://www.openvas.org/)
इसे डाउनलोड और स्थापित करने के लिए Nmap फ़ोल्डर में:
wget http://www.computec.ch/projekte/vulscan/download/nmap\_nse\_vulscan-2.0.tar.gz && tar -czvf nmap\_nse\_vulscan-2.0.tar.gz vulscan/ && sudo cp -r vulscan/ /usr/share/nmap/scripts/
इसके अलावा, डेटाबेस के पैकेट डाउनलोड करना होगा और उन्हें /usr/share/nmap/scripts/vulscan/ में जोड़ना होगा
उपयोग:
सभी का उपयोग करने के लिए: sudo nmap -sV --script=vulscan HOST\_A\_ESCANEAR
एक विशिष्ट डेटाबेस का उपयोग करने के लिए: sudo nmap -sV --script=vulscan --script-args vulscandb=cve.csv HOST\_A\_ESCANEAR
## Nmap सेवा स्कैन को 16 गुणा तेज करें
इस [**पोस्ट**](https://joshua.hu/nmap-speedup-service-scanning-16x) के अनुसार, आप नमैप सेवा विश्लेषण को तेज कर सकते हैं जिसके लिए आपको सभी **`totalwaitms`** मानों को **`/usr/share/nmap/nmap-service-probes`** में **300** और **`tcpwrappedms`** को **200** में संशोधित करना होगा।
इसके अतिरिक्त, जो प्रोब्स का विशेष रूप से परिभाषित **`servicewaitms`** नहीं है, वे एक डिफ़ॉल्ट मान **`5000`** का उपयोग करते हैं। इसलिए, हम इन प्रोब्स में मान जोड़ सकते हैं, या हम **नमैप को कंपाइल** कर सकते हैं और [**service\_scan.h**](https://github.com/nmap/nmap/blob/master/service\_scan.h#L79) में डिफ़ॉल्ट मान को बदल सकते हैं।
अगर आप चाहते हैं कि आप `/usr/share/nmap/nmap-service-probes` फ़ाइल में **`totalwaitms`** और **`tcpwrappedms`** के मानों को पूरी तरह से बदलना नहीं है, तो आप [पार्सिंग कोड](https://github.com/nmap/nmap/blob/master/service\_scan.cc#L1358) को संपादित कर सकते हैं ताकि ये मान `nmap-service-probes` फ़ाइल में पूरी तरह से नजरअंदाज किए जाएं।