جميع اوامر nmap في وصفحة واحدة منظمة

0
جميع اوامر الفحص بالانماب nmap في ورقة | nmap-mindmap
جميع اوامر Nmap
أولا من لا يعرف أداة الان ماب Nmap
هي أداة تستعمل في فحص الانظمة و الشبكات ، و استخراج المنافذ اوالبورتات المفتوحة في جهاز ما او سيرفر  و معرفة نوع نظام الجهاز او السيرفر واكتشاف الثغرات وغيرها من المهام المفيدة لمختبر الاختراق وللهكر  وقد صنفت من أفضل 10 ادوات لاختبار الاختراق.
مع الادوات الكثيرة والموجودة بنظام الكالي لينكس واختلافها وتعدد الاوامر الخاصة بها نحتاج في بعض الأحيان لتدوين ما نحتاجه على ورقة, هي بمثابة مذكرة و ملخص للاوامر التي نرجع اليها في حالة نسيان بعض الاوامر والبراميترات.


جميع اوامر الفحص بالانماب nmap في ورقة | nmap-mindmap

وضعت صورة بدقة عالة جدا توضح الأوامر ودورها 
يمكنك تحميلها لأن حجمها أكبر من 4 ميجا فلا تظهر هنا للمعاينة


شرح مكتبة nmap في بايثون

0
شرح مكتبة nmap في بايثون | Python nmap lib

ربما الجميع يعرف اداة nmap الخاصة بفحص المنافذ , ويحتاج البعض استعمالها في مشروع بايثون فيضطر لتثبيت الاداة واستعمالها وهذا يتم عن طريق تنفيذ الاوامر على النظام بواسطة دالة os ومن ثم قراءة مخرجات الامر, وهذا الامر متعب لأنك تضطر لفلترة المخرجات وتقسيمها حتى تحصل على مبتغاك, لن تحتاج لعمل ذلك بعد اليوم لان بايثون وفرت مكتبة خاصة nmap تقوم بفحص المنافذ بسهولة تامة.

طريقة تثبيت مكتبة nmap


انا أستعمل نظام كالي لينكس حاليا لذلك هذا الشرح مجرب على اللينكس فقط, لم أجرب على الويندوز للأمانة.

يجب أولا تثبيت python-nmap

بهذا الامر

pip install python-nmap

وتثبيت مكتبة nmap

pip install nmap



/*
ملاحظة:
 وقع لي مشكل في استدعاء المكتبة في البايثون , رغم أني ثبتها دون مشاكل, وسأشارككم الحل.

المشكل اثناء استدعاء PortScanner ويظهر كالاتي

AttributeError: 'module' object has no attribute 'PortScanner'

والحل كان تثبيت python-nmap من السورس وليس عبر pip لا اعرف كيف حصل هذا المشكل , المهم طريقة تثبيته
كالاتي:


  1. افتح الطرفية
  2. ألصق بها الاوامر الأتي


أمر تحميل السورس من الموقع

hg clone https://bitbucket.org/xael/python-nmap 
 
ثم 
 
cd python-nmap
 
ثم التثبيت بالامر

python setup.py install

فقط وانتهى المشكل باذن الله.

*/

نبدا على بركة الله شرح استعمال مكتبة nmap


أولا كالمعتاد يجب استدعاء المكتبة nmap مثل أي مكتبة.

import nmap

سنحتاج استعمال كلاس PortScanner موجود بالموديل nmap , لذلك سنقوم بانشاء كائن object ونعطيه اسم nm
وبدل كتابة الاسم الطويل nmap.PortScanner اختصرناه ب nm

كالاتي

nm = nmap.PortScanner()

الان سنستعمل دالة scan موجودة بالكلاس السابق PortScanner , في السابق قمنا باستنساخه واختصرناه ب nm
لذلك يمكننا الوصول للدالة scan هكذا

nm.scan()

كيف تعمل دالة المسح وماهي البارمترات الخاصة به

scan(hosts='127.0.0.1', ports=None, arguments='-sV', sudo=False)

كبداية أبسط أمر للفحص هو تمرير الاي بي المراد فحصه فقط

كالأتي

nm.scan('192.168.1.1')

سيقوم الامر بفحص المنافذ ونحن سنختار ما نريد اظهاره من النتائج
على سبيل المثال سنظهر ماهو الهوست نيم:

 Hostname = nm['192.168.1.1'].hostname()

في الكود السابق قمنا باستخراج اسم الجهاز Hostname , أما عندما استعملنا العلامة []  بداخلها الاي بي المراد معرفة الهوست الخاص به وكأنها مصفوفة والسبب يرجع لأنه يمكننا فحص الكثير من الايبيات لذلك يجب أن نخبره او نستعلم عن الاي بي المراد استخراج نتائجه فقط.

الان قم بطبع الناتج بالامر

print Hostname

وسيظهر لك مثلا:
localhost

hostname يختلف من جهاز لاخر وعند فحص الروتر لم يظهر لذلك لا تقلق ان لم يظهر.

نريد معرفة حالة الجهاز بمعنى هو شغال أو منطفيء up or down

state = nm['192.168.1.1'].state() 

 قم بطباعة الناتج بالأمر

print  nm['192.168.1.1'].state() 

أو بهذا الشكل:
print state

لكن من الأفضل تحتفظ بالناتج في متغير مثل ما فعلت في الامر الثاني state لأنك ربما تحتاجه في بقية مشروعك.

طريقة معرفة البورتات المفتوحة, يجب أن تحدد على أي بروتوكول مثلا tcp أو udp
سنقوم بعرض البورتات الخاصة ببروتوكول tcp باستعمال .all_tcp 
مثال:

tcp_ports = nm['192.168.1.1'].all_tcp()

وسنقوم بعرض الناتج بالامرالمعتاد

print(tcp_ports)



 وبنفس الطريقة يمكننا استعمال udp فقط غير all_tcp ب all_udp
مثال:
tcp_ports = nm['192.168.1.1'].all_udp()

وهذا الكود كاملا لما طبقناه

نتيجة تشغيل السكريبت


الان سنستخدم الدالة scan بطريقة أخرى بمعنى بمٌدخلين أو 2 بارميتر وهما ip و port

بهذه الطريقة يمكننا فحص منفذ معين port, او يمكن فحص مجال انت تحدده بنفسك range of ports

بهذا الشكل

nm.scan('127.0.0.1', '1-1024')

طريقة فحص مجموعة أو range من الاي بيات كالأتي

nm.scan(hosts='192.168.1.0/24')

وهذا الامر الذي أفضله شخصيا وهو فحص الهدف بحيث أنت من تحدد كيفية الفحص عبر تمرير بارميترات

على سبيل المثال في أداة الان ماب الكل يستخدم الأداة في الفحص بهذه الطريقة

nmap -sS -sV -O 192.168.1.1
لذلك سنستخدمها بهذا الشكل وتمرير arguments كالاتي

nm.scan(hosts='192.168.1.1', arguments='-n -sP -PE -PA21,23,80,3389')

استعمال التزامن Asynchronous


while nma.still_scanning():
    print("Waiting ...")
    nma.wait(2) 

الكود يعني بما ان الفحص مستمر still_scanning قم ب: طباعة Waiting  بعدها قم بعمل انتظار wait  لمدة زمنية تختارها

اذا أردت في مرحلة ما من برنامج لمعرفة أمر الفحص الذي استخدمته استعمل الامر command_line 

nm.command_line()

وسيطبع لك argument التي حددتها مثل : nmap -oX - -p 22-443 127.0.0.1

استعمال امر  scaninfo لمعرفة معلومات معينة حول البورتات ونوعها والخدمات

nm.scaninfo() 
وستظهر لك النتيجه :

{'tcp': {'services': '22-443', 'method': 'connect'}}


في النهاية يمكنك ان تقوم بحفظ نتائج البحث الناتجة من مشروعك على شكل ملف csv بالامر

print(nm.csv())

شرح محرك الفحص المتقدم Nmap Script Enginet | NSE

0
شرح محرك الفحص المتقدم Nmap Script Enginet | NSE

أداة Nmap هي واحدة من أفضل أدوات الفحص و اختبار الاختراق على الاطلاق, وهذا الكلام ليس مبالغة لأن الاداة مزودة بميزات اخرى غير فحص الهوستات والبورتات, nmap مزودة بخاصية متقدمة تدعى Nmap Script Engine وتجدها بالانترنت باختصار NSE.

ماهو سكربت NSE ؟

ببساطة هي سكريبتات Script  موجودة في الكاللي لينكس مسبقًا بالمسار الأتي
cd /usr/share/nmap/scripts/
وهذه السكريبتات عبارة عن مهام مبرمجة ومجمعة مسبقا تغنيك عن كتابة الأوامر من جهة, ومن جهة أخرى تغنيك عن استعمال أدوات أخرى. فعلا سبيل المثال يمكنك عن طريق NSE وبواسطة Nmap فقط فعل ما يلي:
اختراق السيرفر, التخمين على السيرفرات والمواقع والاجهزة ssh smb ftp وغيرهم, اكتشاف الثغرات, معرفة نوع النظام ... لو كتبت جميع ما يمكن فعله بواسطة اداة ان ماب لا يكفيني موضوع واحد.

طريقة استعمال NSE

ببساطة أكتب أسم الاداة nmap وامامها أكتب --script بعدها أدخل اسم السكريبت المراد استعماله
 <ايبي الضحية الهدف> <اسم السكريبت> nmap --script
السكريبتات موجودة بالمسار
cd /usr/share/nmap/scripts/
وهذه بعض السكريبتات الموجودة بالاداة كلها تبلغ  590  لحد كتابتي الموضوع

  ✿◕‿◕✿ ❀◕‿◕❀ ❁◕‿◕❁ ✾◕‿◕✾

  ✿◕‿◕✿ ❀◕‿◕❀ ❁◕‿◕❁ ✾◕‿◕✾

بعض الأمثلة:
سأستعمل سكريبت http-enum فهو ينفذ Brute Force على مسار الخادم من أجل اكتشاف تطبيقات الويب.فإنه يختبر أكثر من 2000 مسار الخادم. إن عمل هذا السكريبت NSE يشبه NIKTO.

nmap -p80 --script http-enum 192.168.1.16
والنتيجة

  ✿◕‿◕✿ ❀◕‿◕❀ ❁◕‿◕❁ ✾◕‿◕✾

وهذا مثال اخر باستعمال http-title

nmap --script http-title 192.168.1.16
نتيجة تطبيق الأمر


  ✿◕‿◕✿ ❀◕‿◕❀ ❁◕‿◕❁ ✾◕‿◕✾

وهذا مثال أخير باستعمال سكريبت smb-discovery دوره

تحديد نظام التشغيل واسم الكمبيوتر واسم netbios والمجال مع البرنامج النصي smb-os-discovery.nse. قد تكون حالة استخدام المثال هي استخدام هذا البرنامج النصي للعثور على كافة مضيفي Windows XP على شبكة كبيرة ، بحيث يمكن فصلها وإلقائها (لم يعد Windows XP مدعومًا من قِبل Microsoft). الميزة الأساسية لاستخدام Nmap لشيء من هذا القبيل بدلاً من أداة Microsoft الأصلية هي أنها ستجد جميع الأنظمة المتصلة بالشبكة ليس فقط تلك المتصلة بالنطاق.

nmap -p 445 --script smb-os-discovery 192.168.1.16
والنتيجة

  ✿◕‿◕✿ ❀◕‿◕❀ ❁◕‿◕❁ ✾◕‿◕✾

تصنيفات السكريبتات NSE 


auth لاكتشاف بيانات الدخول مثل اليوزر.
Discovery هو صنف يجمع السكريبتات الخاصة بعمليات الاستطلاع والكشف على الخدمات والبورتات
Dos خاص بعمل هجمات حجب الخدمة على الخدمات المختلفة
exploit للبحث عن الثغرات وتطبيق الاختراق
brute للتخمين على الخدمات
malware البحث عن باكدور
vuln استكشاف الثغرات بالخدمات والسيرفرات والمواقع
fuzzer يعرفها مكتشفي الاخطاء والثغرات فهي تعمل على حقن البيانات بالمواقع والبرامج عبر جميع المدخلات بالبرنامج حتى يحدث خطأ امتلاء الذاكرة مثلا.
default تستعمل السكريبتات العامة والشائعة على الهدف

استعمال NSE Nmap بطرق متقدمة وسهلة

يمكننا استعمال سكريبتات الانماب NSE  بطرق متقدمة فمثلا بدل استعمال السكريبتات عن طريق اسم السكريبت http-title
كالامثلة السابقة:

nmap --script http-title <الهدف>

nmap -p80 --script http-huawei-hg5xx-vuln <الهدف>
 ضع فاصلة بين السكريبتات المختلفة
nmap --script http-title,http-methods <الهدف>

نستعمل البحث عن طريق التصنيف, بمعنى عندما نستعمل التصنيف Discovery سيستعمل السكريبتات الخاصة بالاستطلاع وكشف الخدمات بهذه الطريقة:

nmap --script discovery 192.168.1.16
ستظهر الكثير من النتائج كما بالصور


  ✿◕‿◕✿ ❀◕‿◕❀ ❁◕‿◕❁ ✾◕‿◕✾


  ✿◕‿◕✿ ❀◕‿◕❀ ❁◕‿◕❁ ✾◕‿◕✾

لم أستطع تصويرها كلها فهي كثيرة لذا قمت بنسخ بعض النتائج هنا بالأسفل

root@bt:~# nmap --script discovery 192.168.1.16
Starting Nmap 7.70 ( https://nmap.org ) at 2018-11-01 02:00 CET
Pre-scan script results:
| broadcast-igmp-discovery:
|   192.168.1.15
|     Interface: wlan0
|     Version: 2
|     Group: 224.0.0.251
|     Description: mDNS (rfc6762)
|   192.168.1.15
|     Interface: wlan0
|     Version: 2
|     Group: 224.0.0.252
|     Description: Link-local Multicast Name Resolution (rfc4795)
|   192.168.1.15
|     Interface: wlan0
|     Version: 2
|     Group: 239.255.255.250
|     Description: Organization-Local Scope (rfc2365)
|_  Use the newtargets script-arg to add the results as targets
| ipv6-multicast-mld-list:
|   fe80::a00:27ff:fe50:55eb:
|     device: wlan0
|     mac: fa:aa:09:28:40:49
|     multicast_ips:
|       ff02::1:ff50:55eb         (NDP Solicited-node)
|       ff02::1:ff50:55eb         (NDP Solicited-node)
|   fe80::2a3b:82ff:febf:c29c:
|     device: wlan0
|     mac: 28:3b:82:bf:c2:9c
|     multicast_ips:
|       ff02::1:ff00:0            (Solicited-Node Address)
|       ff02::16                  (All MLDv2-capable routers)
|       ff02::1:ffbf:c29c         (NDP Solicited-node)
|_      ff02::2                   (All Routers Address)
| lltd-discovery:
|   192.168.1.1
|     Hostname: BRCM_ROUTER
|     Mac: 28:3b:82:bf:c2:9c (Unknown)
|_  Use the newtargets script-arg to add the results as targets
| targets-asn:
|_  targets-asn.asn is a mandatory parameter
| targets-ipv6-multicast-echo:
|   IP: fe80::2a3b:82ff:febf:c29c  MAC: 28:3b:82:bf:c2:9c  IFACE: wlan0
|   IP: fe80::a00:27ff:fe50:55eb   MAC: 08:00:27:50:55:eb  IFACE: wlan0
|_  Use --script-args=newtargets to add the results as targets
| targets-ipv6-multicast-invalid-dst:
|   IP: fe80::2a3b:82ff:febf:c29c  MAC: 28:3b:82:bf:c2:9c  IFACE: wlan0
|   IP: fe80::a00:27ff:fe50:55eb   MAC: 08:00:27:50:55:eb  IFACE: wlan0
|_  Use --script-args=newtargets to add the results as targets
| targets-ipv6-multicast-mld:
|   IP: fe80::2a3b:82ff:febf:c29c  MAC: 28:3b:82:bf:c2:9c  IFACE: wlan0
|   IP: fe80::a00:27ff:fe50:55eb   MAC: 08:00:27:50:55:eb  IFACE: wlan0
|
|_  Use --script-args=newtargets to add the results as targets
| targets-ipv6-multicast-slaac:
|   IP: fe80::a00:27ff:fe50:55eb  MAC: 08:00:27:50:55:eb  IFACE: wlan0
|_  Use --script-args=newtargets to add the results as targets
Stats: 0:01:44 elapsed; 0 hosts completed (1 up), 1 undergoing Script Scan
NSE Timing: About 99.96% done; ETC: 02:02 (0:00:00 remaining)
Nmap scan report for 192.168.1.16
Host is up (0.00092s latency).
Not shown: 977 closed ports
PORT     STATE SERVICE
21/tcp   open  ftp
|_banner: 220 (vsFTPd 2.3.4)
| ftp-syst:
|   STAT:
| FTP server status:
|      Connected to 192.168.1.10
|      Logged in as ftp
|      TYPE: ASCII
|      No session bandwidth limit
|      Session timeout in seconds is 300
|      Control connection is plain text
|      Data connections will be plain text
|      vsFTPd 2.3.4 - secure, fast, stable
|_End of status
22/tcp   open  ssh
|_banner: SSH-2.0-OpenSSH_4.7p1 Debian-8ubuntu1
| ssh-hostkey:
|   1024 60:0f:cf:e1:c0:5f:6a:74:d6:90:24:fa:c4:d5:6c:cd (DSA)
|_  2048 56:56:24:0f:21:1d:de:a7:2b:ae:61:b1:24:3d:e8:f3 (RSA)
| ssh2-enum-algos:
|   kex_algorithms: (4)
|   server_host_key_algorithms: (2)
|   encryption_algorithms: (13)
|   mac_algorithms: (7)
|_  compression_algorithms: (2)
23/tcp   open  telnet
|_banner: \xFF\xFD\x18\xFF\xFD \xFF\xFD#\xFF\xFD'
| telnet-encryption:
|_  Telnet server does not support encryption
25/tcp   open  smtp
|_banner: 220 metasploitable.localdomain ESMTP Postfix (Ubuntu)
|_smtp-commands: metasploitable.localdomain, PIPELINING, SIZE 10240000, VRFY, ETRN, STARTTLS, ENHANCEDSTATUSCODES, 8BITMIME, DSN,
|_smtp-open-relay: Server doesn't seem to be an open relay, all tests failed
| ssl-cert: Subject: commonName=ubuntu804-base.localdomain/organizationName=OCOSA/stateOrProvinceName=There is no such thing outside US/countryName=XX
| Not valid before: 2010-03-17T14:07:45
|_Not valid after:  2010-04-16T14:07:45
|_ssl-date: 2018-11-01T01:01:06+00:00; 0s from scanner time.
| ssl-enum-ciphers:
|   SSLv3:
|     ciphers:
|       TLS_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA - E
|       TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA (dh 1024) - D
|       TLS_DHE_RSA_WITH_AES_128_CBC_SHA (dh 1024) - A
|       TLS_DHE_RSA_WITH_AES_256_CBC_SHA (dh 1024) - A
|       TLS_DHE_RSA_WITH_DES_CBC_SHA (dh 1024) - D
|       TLS_DH_anon_EXPORT_WITH_DES40_CBC_SHA - F
|       TLS_DH_anon_EXPORT_WITH_RC4_40_MD5 - F
|       TLS_DH_anon_WITH_3DES_EDE_CBC_SHA - F
|       TLS_DH_anon_WITH_AES_128_CBC_SHA - F
|       TLS_DH_anon_WITH_AES_256_CBC_SHA - F
|       TLS_DH_anon_WITH_DES_CBC_SHA - F
|       TLS_DH_anon_WITH_RC4_128_MD5 - F
|       TLS_RSA_EXPORT_WITH_DES40_CBC_SHA - E
|       TLS_RSA_EXPORT_WITH_RC2_CBC_40_MD5 - E
|       TLS_RSA_EXPORT_WITH_RC4_40_MD5 - E
|       TLS_RSA_WITH_3DES_EDE_CBC_SHA (rsa 1024) - D
|       TLS_RSA_WITH_AES_128_CBC_SHA (rsa 1024) - A
|       TLS_RSA_WITH_AES_256_CBC_SHA (rsa 1024) - A
|       TLS_RSA_WITH_DES_CBC_SHA (rsa 1024) - D
|       TLS_RSA_WITH_RC4_128_MD5 (rsa 1024) - D
|       TLS_RSA_WITH_RC4_128_SHA (rsa 1024) - D
|     compressors:
|       DEFLATE
|       NULL
|     cipher preference: client
|     warnings:
|       64-bit block cipher 3DES vulnerable to SWEET32 attack
|       64-bit block cipher DES vulnerable to SWEET32 attack
|       64-bit block cipher DES40 vulnerable to SWEET32 attack
|       64-bit block cipher RC2 vulnerable to SWEET32 attack
|       Broken cipher RC4 is deprecated by RFC 7465
|       CBC-mode cipher in SSLv3 (CVE-2014-3566)
|       Ciphersuite uses MD5 for message integrity
|       Weak certificate signature: SHA1
|   TLSv1.0:
|     ciphers:
|       TLS_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA - E
|       TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA (dh 1024) - D
|       TLS_DHE_RSA_WITH_AES_128_CBC_SHA (dh 1024) - A
|       TLS_DHE_RSA_WITH_AES_256_CBC_SHA (dh 1024) - A
|       TLS_DHE_RSA_WITH_DES_CBC_SHA (dh 1024) - D
|       TLS_DH_anon_EXPORT_WITH_DES40_CBC_SHA - F
|       TLS_DH_anon_EXPORT_WITH_RC4_40_MD5 - F
|       TLS_DH_anon_WITH_3DES_EDE_CBC_SHA - F
|       TLS_DH_anon_WITH_AES_128_CBC_SHA - F
|       TLS_DH_anon_WITH_AES_256_CBC_SHA - F
|       TLS_DH_anon_WITH_DES_CBC_SHA - F
|       TLS_DH_anon_WITH_RC4_128_MD5 - F
|       TLS_RSA_EXPORT_WITH_DES40_CBC_SHA - E
|       TLS_RSA_EXPORT_WITH_RC2_CBC_40_MD5 - E
|       TLS_RSA_EXPORT_WITH_RC4_40_MD5 - E
|       TLS_RSA_WITH_3DES_EDE_CBC_SHA (rsa 1024) - D
|       TLS_RSA_WITH_AES_128_CBC_SHA (rsa 1024) - A
|       TLS_RSA_WITH_AES_256_CBC_SHA (rsa 1024) - A
|       TLS_RSA_WITH_DES_CBC_SHA (rsa 1024) - D
|       TLS_RSA_WITH_RC4_128_MD5 (rsa 1024) - D
|       TLS_RSA_WITH_RC4_128_SHA (rsa 1024) - D
|     compressors:
|       DEFLATE
|       NULL
|     cipher preference: client
|     warnings:
|       64-bit block cipher 3DES vulnerable to SWEET32 attack
|       64-bit block cipher DES vulnerable to SWEET32 attack
|       64-bit block cipher DES40 vulnerable to SWEET32 attack
|       64-bit block cipher RC2 vulnerable to SWEET32 attack
|       Broken cipher RC4 is deprecated by RFC 7465
|       Ciphersuite uses MD5 for message integrity
|       Weak certificate signature: SHA1
|_  least strength: F
53/tcp   open  domain
|_dns-nsec-enum: Can't determine domain for host 192.168.1.16; use dns-nsec-enum.domains script arg.
|_dns-nsec3-enum: Can't determine domain for host 192.168.1.16; use dns-nsec3-enum.domains script arg.
| dns-nsid:
|_  bind.version: 9.4.2
80/tcp   open  http
|_http-apache-negotiation: mod_negotiation enabled.
| http-auth-finder:
| Spidering limited to: maxdepth=3; maxpagecount=20; withinhost=192.168.1.16
|   url                                                   method
|   http://192.168.1.16:80/dvwa/                          FORM
|   http://192.168.1.16:80/phpMyAdmin/                    FORM
|   http://192.168.1.16:80/dvwa/login.php                 FORM
|   http://192.168.1.16:80/phpMyAdmin/index.php           FORM
|_  http://192.168.1.16:80/twiki/TWikiDocumentation.html  FORM
|_http-chrono: Request times for /; avg: 297.14ms; min: 194.40ms; max: | http-auth-finder:
| Spidering limited to: maxdepth=3; maxpagecount=20; withinhost=192.168.1.16
|   url                                      method
|   http://192.168.1.16:8180/manager/status  HTTP: Basic
|   http://192.168.1.16:8180/admin/          FORM
|_  http://192.168.1.16:8180/manager/html    HTTP: Basic
|_http-chrono: Request times for /; avg: 1773.74ms; min: 214.36ms; max: 4702.71ms
|_http-date: Thu, 01 Nov 2018 01:01:05 GMT; -1s from local time.
| http-default-accounts:
|   [Apache Tomcat] at /manager/html/
|_    tomcat:tomcat
| http-enum:
|   /admin/: Possible admin folder
|   /admin/index.html: Possible admin folder
|   /admin/login.html: Possible admin folder
|   /admin/admin.html: Possible admin folder
|   /admin/account.html: Possible admin folder
|   /admin/admin_login.html: Possible admin folder
|   /admin/home.html: Possible admin folder
|   /admin/admin-login.html: Possible admin folder
|   /admin/adminLogin.html: Possible admin folder
|   /admin/controlpanel.html: Possible admin folder
|   /admin/cp.html: Possible admin folder
|   /admin/index.jsp: Possible admin folder
|   /admin/login.jsp: Possible admin folder
|   /admin/admin.jsp: Possible admin folder
|   /admin/home.jsp: Possible admin folder
|   /admin/controlpanel.jsp: Possible admin folder
|   /admin/admin-login.jsp: Possible admin folder
|   /admin/cp.jsp: Possible admin folder
|   /admin/account.jsp: Possible admin folder
|   /admin/admin_login.jsp: Possible admin folder
|   /admin/adminLogin.jsp: Possible admin folder
|   /manager/html/upload: Apache Tomcat (401 Unauthorized)
|   /manager/html: Apache Tomcat (401 Unauthorized)
|   /admin/view/javascript/fckeditor/editor/filemanager/connectors/test.html: OpenCart/FCKeditor File upload
|   /admin/includes/FCKeditor/editor/filemanager/upload/test.html: ASP Simple Blog / FCKeditor File Upload
|   /admin/jscript/upload.html: Lizard Cart/Remote File upload
|_  /webdav/: Potentially interesting folder
|_http-favicon: Apache Tomcat
| http-grep:
|   (2) http://192.168.1.16:8180/:
|     (2) email:
|       + users@tomcat.apache.org
|       + dev@tomcat.apache.org
|   (3) http://192.168.1.16:8180/tomcat-docs/changelog.html:
|     (3) email:
|       + remm@apache.org
|       + yoavs@apache.org
|       + fhanik@apache.org
|   (1) http://192.168.1.16:8180/tomcat-docs/:
|     (1) email:
|_      + craigmcc@apache.org
| http-headers:
|   Server: Apache-Coyote/1.1
|   Content-Type: text/html;charset=ISO-8859-1
|   Date: Thu, 01 Nov 2018 01:01:06 GMT
|   Connection: close
|  
|_  (Request type: HEAD)
|_http-title: Apache Tomcat/5.5
| http-vhosts:
|_127 names had status 200
MAC Address: 08:00:27:50:55:EB (Oracle VirtualBox virtual NIC)

Host script results:
|_dns-brute: Can't guess domain of "192.168.1.16"; use dns-brute.domain script argument.
|_fcrdns: FAIL (No PTR record)
|_ipidseq: All zeros
|_msrpc-enum: NT_STATUS_OBJECT_NAME_NOT_FOUND
|_nbstat: NetBIOS name: METASPLOITABLE, NetBIOS user: , NetBIOS MAC: (unknown)
|_path-mtu: PMTU == 1500
| qscan:
| PORT  FAMILY  MEAN (us)  STDDEV  LOSS (%)
| 1     0       446.80     71.34   0.0%
| 21    0       483.20     85.39   0.0%
| 22    0       525.10     170.05  0.0%
| 23    0       447.30     108.34  0.0%
| 25    0       511.78     99.24   10.0%
| 53    1       508.60     68.68   0.0%
| 80    0       492.60     74.90   0.0%
| 111   0       441.70     59.25   0.0%
|_139   1       530.20     113.72  0.0%
| smb-mbenum:
|_  ERROR: Failed to connect to browser service: Could not negotiate a connection:SMB: ERROR: Server returned less data than it was supposed to (one or more fields are missing); aborting [12]
| smb-os-discovery:
|   OS: Unix (Samba 3.0.20-Debian)
|   NetBIOS computer name:
|   Workgroup: WORKGROUP\x00
|_  System time: 2018-10-31T21:01:10-04:00
|_smb2-time: Protocol negotiation failed (SMB2)

Nmap done: 1 IP address (1 host up) scanned in 166.20 seconds
root@bt:~#
  ✿◕‿◕✿ ❀◕‿◕❀ ❁◕‿◕❁ ✾◕‿◕✾

طريقة استعمال صنف vuln لمعرفة الثغرات الموجودة على السيرفر
nmap --script vuln 192.168.1.16
ستظهر النتائج بالتفصيل 

هنا يظهر السيرفر مصاب بعدة ثغرات مثل ثغرة FTP ويعطيك استغلال الثغرة

ظهرت بالصورة أسفل ثغرات CSRF
وفي هذه الصورة السيرفر مثصاب بثغرات Sql Injection 

وهنا يظهر المجلدات الموجودة بالسيرفر ولوجة التحكم وغيرها من المعلومات المفيدة , وفي الأسفل السيرفر مصاب بثغرة تمكننا من تطبيق هجوم حجب الخدمة بواسطة أداة Slowloris


حيل في التعامل مع العبارات

يمكننا استعمال جميع سكريبتات البحث واستثناء البعض, لاستثناء سكريبت نضع العبارة not 
العبارة or تعني أو

استثناء أمر من البحث

هذا الأمر أسفل مثلا
nmap --script "not(intrusive or dos or exploit)" -sV <الهدف>
يعني قم باستعمال جميع السكريبتات باستثناء dos أو intrusive أو  exploit .

استعمال امر الجمع and


nmap --script "broadcast and discovery" <الهدف>
في الأمر السابق استعملنا and ومعنى الأمر قم باستخدام السكريبت broadcast و discovery معًا

استعمال العلامة * في NSE وهي تعني أي شيء أو الكل
في الأمر
nmap --script "snmp-*" <الهدف>
> معناه استعمل اي سكريبت يبدأ ب snmp- ولا يهم بماذا ينتهي.


سنحاول دمج أمرين ولنجعل الامر أكثر تعقيد


nmap --script "http-* and not(exploit)" <الهدف>
هنا استعملنا كل السكريبتات التي تبدا ب http- باستثناء exploit

استعمال مدخلات أخرى (script-args) مع NSE سنقوم مثلا بالفحص وجعل الأمر يظهر عند الضحية وكأنني أستعمل متصفح أخر باستعمال خاصية user-agent

nmap -sV --script http-title --script-args http.useragent="Mozilla 1337"
<الهدف>
  ✿◕‿◕✿ ❀◕‿◕❀ ❁◕‿◕❁ ✾◕‿◕✾

ملاحظة: يمكن صنع سكريبتات خاصة بك باستعمال لغة LUA 

تنقيح سكريبت Debugging NSE scripts


ان أردت تنقيح ومعرفة اين يقع المشكل بالسكريبت ضع الأمر الاتي script-trace

nmap --script exploit --script-trace <الهدف>

وهذا الامر لتنقيح الحزم packet-trace

nmap -O --script myscript.nse --packet-trace <الهدف>

طريقة تحديث السكريبتات NSE

لتحديثها قم بادخال الأمر الأتي بالطرفية:
nmap --script-updatedb
  ✿◕‿◕✿ ❀◕‿◕❀ ❁◕‿◕❁ ✾◕‿◕✾
لمعرفة المزيد حول NSE وكيفية تصميم سكريبت خاص بك انصحك بكتاب عنوانه
Mastering Nmap Scripting Engine Book

تقنيات الفحص وتجميع المعلومات بواسطة Nmap | الدرس الثالث

0
nmap-evasion-firewall

تقنيات الفحص وتجميع المعلومات بواسطة Nmap | الدرس الثالث

تخطي الجدار الناري أثناء الفحص ب Nmap

قبل تخطي الجدار الناري يجب أولا أن نعرف ماهو الجدار الناري وماهو دوره بالضبط

نبذه عن الفايروول Firewall : 

الـ Firewall أو ما يسمى بالعربية الجدار الناري هو عبارة عن جهاز (Hardware) أو نظام (Software) يقوم بالتحكم في مسيرة و مرور البيانات (Packets) في الشبكة أو بين الشبكات و التحكم يكون إما بالمنع أو بالسماح .
  • يعتبر جدار الحماية المنطقة الفاصلة التي تبقي غير المصرح لهم بدخول الشبكة من الدخول لها و التعامل معها بشكل مباشر و التي تقلل من استغلال ثغرات هذه الشبكة و خدماتها 
كـ  IP spoofing , ARP spoofing , Routing attacks , DNS attacks ...

  • تم تصميم الجدران النارية خصيصا لمنع الاختراق / مختبري الاختراق ومنع أدوات جمع المعلومات مثل أداة nmap و nessus التي تمكننا من تكوين صورة حول النظم المراد اختراقها. ولا ننسى أيضا انه يقوم بتسجيل Logs .
لكن مبرمجي ومطوري  أداة المسح Nmap  صمموها خصيصًا لتجاوز هذه الدفاعات والجدران النارية عبر  اضافة بعض الميزات للتخطي.

ملاحظة
ستجد هذا الاي بي  192.168.1.10 مكرر في جميع الأمثلة على فرض أنه اي بي الضحية المراد فحصه.

تقنيات التخطي Nmap firewall Evasion

تقنية تجزئة الحزم Fragment Packets:

nmap -f 192.168.1.10
-f هذا البراميتر يستخدم لتقطيع الحزم ل 8 بايتات لكل حزمة مرسلة للهدف.
قد تتطلب بعض الانظمة ارسال حزم ايث eth جنبا الى جنب مع الحزم المجزءة
nmap --send-eth -f 192.168.1.10

تقنية تحديد MTU (وحدة الارسال العظمى)

nmap --mtu 16 192.168.1.10

--mtu يشبه لحد كبير البرامتر السابق ويمكن تحديد القيمة من مضاعفات 8 بايت نحن استخدمنا في المثال القيمة 16.
قد تتطلب بعض الانظمة ارسال حزم ايث eth جنبا الى جنب مع MTU

تقنية التمويه Decoy Adresses

سنقوم بفحص الهدف بعدة عناوين اي بي مزيفة حتى لا يعرف اي جهاز يقوم بفحصه
في المثال سنقوم بالفحص بعشرة عناوين اي بي وسيظن الضحية أن المهاجم يقوم بفحصه بعدة أنظمة مختلفة

nmap --D RND:10 192.168.1.10
البراميتر RND اختصار لكلمة Random يعني عشوائي , ثم مررنا له رقم 10 وهو عدد الIPs يمكن وضع ما تشاء للتمويه.

يمكن أيضا اختيار  عناوين ايبي مزيفة يدويا بهذه الطريقة

nmap --D 192.168.1.2,192.168.100.20, 192.168.11.50  192.168.1.10

عيوبها

  1. استخدام عناوين اي بي كثيرة يسبب ازدحام في الشبكة وقد تظهر نتائج غير دقيقة
  2. قد يمتلك مزود الانترنت الخاص بك خدمة تصفية لحركة المرور ويقوم بمنع العناوين المزيفة وفي هذه الحالة لن تكون هناك فعالية لهذا الهجوم.

تقنية الفحص الساكن أو الخامل idl Zombie

في هذه الطريقة لن نقوم بالفحص  من جهازنا مبدئيا بالنسبة للجدار الناري فالسكان يعتبره قادما من جهاز اخر Zombie Host لذلك فالعملية الأولى التي يجب القيام بها هي البحث في الشبكة عن Idle Zombie  (الزومبي هو جهاز خامل موجود على شبكة الضحية ) لنفرض أنه 192.168.1.2 والهدف 192.168.1.10 فيكون الأمر كالأتي:
nmap -sI 192.168.1.2 192.168.1.10
البارميتر sl للتوضيح الحرف I هو الحرف i كابتل كبير
يستحسن اضافة البارمتر -PN للامر لمعرفة حالة الهدف ليصبح هكذا
nmap -sI  -PN 192.168.1.2 192.168.1.10

تقنية الفحص من خلال بورت محدد source-port :

في الشبكات والسيرفرات الكبرى يقوم خبراء الحماية بفلترة ومنع جميع البورتات عبر جدار الحماية وترك بورت محدد مفتوح لاستخدامه مثل بورت 80 . لتخطي هذه المشكلة يجب علينا فحص السيرفر من نفس هذا البورت المفتوح باستخدام البرامتر الاتي --source-port او -g 
ليكون الأمر على هذا الشكل:
nmap‬‬ ‫‪--source-port‬‬ ‫‪80‬‬ ‫‪onsec.tk

تقنية اضافة بيانات عشوائية data-length

عند الفحص باداة nmap ترسل حزم للهدف بغرض الفحص وهذه الحزم تكاد تكون مألوفة عند جدار الحماية. والحل يجب علينا اضافة كمية من البيانات (بايت) جنب هذه الحزم للتمويه.
سنستعمل البارميتر --data-length ونضع امامها عدد يحدد كميتها. مثال
nmap --data-length 25 onsec.tk

تقنية  ترتيب الفحص العشوائي randomize-hosts

عند فحص جميع هوستات الشبكة أو فحص رينج من الايبيات تقوم الاداة بالفحص بالترتيب وهذ الامر يسبب حساسية لجدار الحماية فهي تقوم بالفحص العناوين بالتسلسل كالاتي
العنوان 192.168.0.1 ثم 192.168.0.2 ... وهكذا وهذا ما يتسبب في شكل نظام التسللIDS بأن هناك من يقوم بالهجوم. وطريقة التخطي هي كالاتي
nmap --randomize-hosts 192.168.1.0-254

تقنية تزوير عنوان الماك أدريس Spoof-Mac

نقوم بتغيير العنوان الفيزيائي الخاص بنا MAC تجنبا لكشف هويتنا أو انتحال ماك موثوق به على الشبكة كالأتي:
nmap --spoof-mac 0 onsec.tk
  1. وضعنا الرقم 0 بمعنى اختار عنوان عشوائي.
  2. اختيار عنوان ماك محدد نضعه فقط بجانب spoof-mac وسيتم استخدامه أثناء الفحص.
  3. يمكن ادراج فقط اسم الشركة مثلا Dell أو HP أو Apple وسيتم استخدام عنوان ماك من هذه الشركة.

تقنية استعمال البروكسي لتخطي الحجب

طريقة الاستعمال نكتب البارميتر --proxy  ونمرر له الهوست ثم البورت
--proxy host:port
كمثال ربط الاداة بالتور Tor:
nmap --proxy 127.0.0.1:9050

تقنية ارسال اختبار غير صحيح Send Bad checksum

checksum تستعمل من TCP/IP للتأكيد من عدم تلف الداتا المرسلة DATA لكن ارسال checksum خاطئة من الممكن أن تجعلنا نأخد المعلومات بدون أن يتدخل الجدار الناري لمنعنا.
الامر المستخدم على الشكل الأتي:
nmap --badsum onsec.tk

الى هنا ينتهي درسنا اليوم
 نلتقي بموضوعنا القادم ان شاء الله

تقنيات الفحص وتجميع المعلومات بواسطة Nmap | الدرس الثاني

0
تقنيات الفحص وتجميع المعلومات بواسطة Nmap | الدرس الثاني

تقنيات الفحص وتجميع المعلومات بواسطة Nmap

Port Scanning Techniques

الموضوع تابع للدرس السابق
تجده هنا يجب الاطلاع عليه ان لم تشاهده

الفحص بواسطة Nmap سهل يعتبر فما عليك سوى تمرير الخيارات على حسب النتائج التي تريدها لكن ما يحدث في الحقيقة هو أنك بواسطة أداة Nmap تقوم بصنع حزمة مخصصة وترسلها للهدف وتنتظر ارتدادها (بتعبير بدائي اصطدامها بالهدف ورجوعها) ثم تبدأ الأداة بقراءة الصدى الدي ينتج ومن خلاله نعرف نوع الاستجابة ان كان البورت مفتوح او مغلق أو مفلتر, يوجد جدار حماية Firewall أو نظام كشف التسلل IDS ام لا, كيف مرة الحزمة من جهازك للضحية Packet-Trace الى غيره من المعلومات.



فحص ايبي السيرفر مع اظهار الخدمات المثبتة عليه
nmap -sV 192.168.1.10
فحص الهدف عن طريق TCP ACK و TCP SYN 
ربما الكثير منكم لا يعرف أو سمع لاول مرة عن SYN / ACK ,
يعرفها أصحاب الشبكات ولهذا دراسة الشبكات مهمة بهذا المجال 
هي ببساطة  (Flags أو أعلام) حزم ترسل بين مرسل ومستقبل و هي تدخل في ما يسمى بالمصادقة
 3Way Handshaking أثناء انشاء الاتصال والمصادقة عليه. 
A -----(SYN)------> B
A <---(SYN/ACK)---- B
A -----(ACK)------> B

للاستزادة في الموضوع تابع الويكي

طريقة المسح كالأتي
TCP ACK Ping
nmap -PA 192.168.1.10
TCP SYN Ping

nmap -PS 192.168.1.10
لاجراء مسح سريع وأمن بواسطة بروتوكول TCP SYN

nmap -sS 192.168.1.10
مسح الهدف بتقنية (TCP connect scan) في حالة لم تكن تملك صلاحية ارسال حزم خام للضحية

This is the case when a user does not have raw packet privileges
لذلك تقوم بالفحص عن طريق الاتصال به بواسطة socket

nmap -sT 192.168.1.10
وهنا مسح بواسطة UDP
nmap -sU 192.168.1.10
لحد الان فحصنا اي بي عادي بمعنى IPv4 لفحص الاي بي المستقبلي IPv6 
nmap -6 fe70::29aa:9db8:4154:d80e
طريقة معرفة الهوستات الشغالة على كامل الشبكة في القديم كنا نستخدم البينح Ping الموجود بالويندوز او اللينكس نستطيع أيضا استعماله مع Nmap وفحص جميع الشبكة بسهولة كالأتي

nmap -sP 192.168.1.1/24
فحص ليست او قائمة 
لنفرض ان لديك ملف تكست يحتوي على عدة مواقع وايبيات وتريد فحصها جميعا.لا يعقل ان تقوم بفحصها واحدة تلو الاخرى. لذلك فقط عليك بتمرير بارمتر  iL- وتضع امامه مسار الملف 
كالأتي
 nmap -iL /root/list-of-ips.txt
طريقة فحص جميع البورتات (65535 ports) دون تحديد
nmap -p- 192.168.1.1
فحص ومعرفة جميع المتصلين على الشبكة بسرعة دون فحص البورتات (يسمى المسح الفارغ)
فقط معرفة الاي بي المتصل
كما تعرفنا عليه سابقا بموضوعنا

طريقة معرفة المتصلين معك على نفس الشبكة في اللينكس

nmap -sN 192.168.0.0/24
طريقة المسح و الكشف عن الخدمات ونوع النظام المثبت OS
عرض المعلومات كاملة
nmap -sV --version-intensity 5 192.168.1.1
عرض معلومات اقل تفصيل
nmap -sV --version-intensity 0 192.168.1.1
أو عن طريق الفحص المتقدم(يفضل استعماله دائما)
nmap -A 192.168.1.1
أيضا (-v لعرض التفاصيل verbose)

nmap -O 192.168.1.1
nmap -O --osscan-guess 192.168.1.1
nmap -v -O --osscan-guess 192.168.1.1
الجدول يلخص الخيارات
nmap -v -O --osscan-guess

فحص ما إذا كان المضيف أو الشبكة محمية بجدار ناري

nmap -sA 192.168.1.1
nmap -sA onsec.tk
فحص مع اظهار سبب ظهور المنفذ بحالة معينة
nmap --reason 192.168.1.1
nmap --reason onsec.tk

اظهر لي فقط البورتات المفتوحة Open
nmap --open 192.168.1.1
nmap --open onsec.tk

فحص الهدف واظهار Interfaces  و الروت Routes

nmap --iflist

فحص البورتات الشهيرة فقط مثلا سنفحص 5 بورتات المرة الاولى ثم 10 في المرة الثانية
nmap --top-ports 5 192.168.1.1
nmap --top-ports 10 192.168.1.1
لفحص بورت معين مثلا 80 وفحصه بواسطة بروتوكول TCP

nmap -p T:80 192.168.1.1

لفحص بورت معين مثلا 53 وفحصه بواسطة بروتوكول UDP
nmap -p U:53 192.168.1.1
طريقة الفحص

طريقة حفظ نتائج المسح منظمة في ملف XML أو TXT 
nmap 192.168.1.1 > output.txt
nmap -oX MyResult.xml 192.168.1.1
والبقية هنا بالجدول
nmap-export-result-scan-on-file
طريقة اجراء فحص سريع أو هجومي , وهذا يتم بتمرير T ورقم 4 
nmap -v -sS -A -T4 192.168.1.10
فحص عدواني aggressive

nmap -v -sS -A -T5 192.168.1.10

فحص موقع أو سيرفر وتمرير النتائج لاداة Nikto الخاصة بكشف ثغرات المواقع
nmap -p80 192.168.1.2/24 -oG - | /path/to/nikto.pl -h -
nmap -p80,443 192.168.1.2/24 -oG - | /path/to/nikto.pl -h -
 /path/to/nikto  هو مسار برنامج نيكتو على نظامك
طريقة فحص البروتوكولات المدعومة
يتيح لك هذا النوع من الفحص تحديد بروتوكولات (IP TCP ، ICMP ، IGMP ، إلخ) التي تدعمها الأجهزة المستهدفة:
nmap -sO 192.168.1.1
اكتشف أكثر منافذ TCP استخدامًا استخدامًا بواسطة TCP SYN
### Stealthy scan ###
nmap -sS 192.168.1.1
### Find out the most commonly used TCP ports using  TCP connect scan (warning: no stealth scan)
###  OS Fingerprinting ###
nmap -sT 192.168.1.1
### Find out the most commonly used TCP ports using TCP ACK scan
nmap -sA 192.168.1.1
### Find out the most commonly used TCP ports using TCP Window scan
nmap -sW 192.168.1.1
### Find out the most commonly used TCP ports using TCP Maimon scan
nmap -sM 192.168.1.1

انتظرونا فالبقية في الدرس القادم
الدرس القادم حول تقنيات الفحص وتخطي الجدران النارية وكشف التسلل
ان شاء الله