
أدوات اكتشاف وتحديد الأصول التعرف السريع على معلومات بصمة الويب وتحديد نوع الأصول. تساعد الفريق الأحمر في تحديد معلومات الأصول المستهدفة بسرعة، وتساعد الفريق الأزرق في اكتشاف نقاط الضعف المحتملة.
[中文 Readme]
Dismap هو أداة اكتشاف وتحديد للأصول. يمكنه التعرف بسرعة على البروتوكولات ومعلومات البصمات مثل web/tcp/udp، وتحديد أنواع الأصول، وهو مناسب للشبكات الداخلية والخارجية. يساعد فريق الهجوم الأحمر في تحديد معلومات الأصول المحتملة الخطورة بسرعة، ويساعد فريق الدفاع الأزرق في اكتشاف الأصول المشبوهة الهشة.
يحتوي Dismap على قاعدة بصمات كاملة، تتضمن حالياً بصمات بروتوكولات tcp/udp/tls وأكثر من 4500 قاعدة بصمة ويب، والتي يمكنها التعرف على favicon و body و header وغيرها. مقدمة قاعدة البصمات موجودة في RuleLab
يمكن إرسال نتائج المسح مباشرة إلى vulmap (>=0.8) لفحص الثغرات. في الإصدار 0.3، تم تغيير النص الناتج، وتمت إضافة ملف النتائج بصيغة json، وسيدعم vulmap الربط في الإصدار >= 1.0
Dismap هو ملف ثنائي لأنظمة Linux و MacOS و Windows. اذهب إلى Release لتنزيل الإصدار المناسب وتشغيله:
# Linux or MacOS
zhzyker@debian:~$ chmod +x dismap-0.3-linux-amd64
zhzyker@debian:~$ ./dismap-0.3-linux-amd64 -h
# Windows
C:\Users\zhzyker\Desktop> dismap-0.3-windows-amd64.exe -h
-f, --file string Parse the target from the specified file for batch recognition
-h, --help Show help
-i, --ip string Network segment [e.g. -i 192.168.1.0/24 or -i 192.168.1.1-10]
-j, --json string Scan result in json format [e.g. -j r.json]
-l, --level int Specify log level (0:Fatal 1:Error 2:Info 3:Warning 4:Debug 5:Verbose) (default 3)
-m, --mode string Specify the protocol [e.g. -m mysql/-m http]
--nc Do not print character colors
--np Not use ICMP/PING to detect surviving hosts
-o, --output string Save the scan results to the specified file (default "output.txt")
-p, --port string Custom scan ports [e.g. -p 80,443 or -p 1-65535]
--proxy string Use proxy scan, support http/socks5 protocol [e.g. --proxy socks5://127.0.0.1:1080]
-t, --thread int Number of concurrent threads (default 500)
--timeout int Response timeout time, the default is 5 seconds (default 5)
--type string Specify the type [e.g. --type tcp/--type udp]
-u, --uri string Specify a target URI [e.g. -u https://example.com]
zhzyker@debian:~$ ./dismap -i 192.168.1.1/24
zhzyker@debian:~$ ./dismap -i 192.168.1.1/24 -o result.txt -j result.json
zhzyker@debian:~$ ./dismap -i 192.168.1.1/24 --np --timeout 10
zhzyker@debian:~$ ./dismap -i 192.168.1.1/24 -t 1000
zhzyker@debian:~$ ./dismap -u https://github.com/zhzyker/dismap
zhzyker@debian:~$ ./dismap -u mysql://192.168.1.1:3306
zhzyker@debian:~$ ./dismap -i 192.168.1.1/24 -p 1-65535
قاعدة البصمات بأكملها هي هيكل موجود في rule.go الشكل التقريبي:
Rule:
Name: name /* تحديد اسم القاعدة */
Type: header|body|ico /* أنواع التعرف المدعومة، header و body و ico يمكن أن تكون أي مجموعة منطقية، ico هو طلب favicon.ico بشكل منفصل وحساب MD5*/
Mode: and|or /* منطق التقييم */
Rule
InBody: str /* تحديد أي str موجود في نص الاستجابة */
InHeader: str /* تحديد أي str موجود في رأس الاستجابة */
InIcoMd5: str_md5 /* MD5 لـ favicon.ico */
Http:
ReqMethod: GET|POST /* طريقة الطلب المخصصة، تدعم حاليا GET و POST */
ReqPath: str /* مسار الويب المخصص للطلب */
ReqHeader: []str /* تخصيص رأس طلب Http */
ReqBody: str /* تخصيص نص طلب POST */
مثال1:
ما إذا كان الحرف <flink-root></flink-root> موجودًا في نص الاستجابة
{"Apahce Flink", "body", "", InStr{"(<flink-root></flink-root>)", "", ""}, ReqHttp{"", "", nil, ""}},
مثال2:
تخصيص مسار الطلب /myportal/control/main، وتحديد ما إذا كان هناك أحرف في الرأس وأحرف في النص في نتيجة الطلب المخصص
يمكن ملاحظة أن جميعها تدعم التعبيرات النمطية
{"Apache OFBiz", "body|header", "or", InStr{"(Apache OFBiz|apache.ofbiz)", "(Set-Cookie: OFBiz.Visitor=(.*))", ""}, ReqHttp{"GET", "/myportal/control/main", nil, ""}},
يمكن دمج العلاقة المنطقية بين header و body و ico بحرية، ولكن لا يمكن دمجها بشكل متكرر:
مسموح: "body|header|ico", "or" أو "body|header|ico", "or|and" أو "body|ico", "and"
غير مسموح: "body|body", "or"
لا يُسمح بالدمج المتكرر عن طريق type، ولكن يمكن تحقيقه عن طريق InBody لتحديد الحرف: "body", "", InStr{"(str1|str2)"}