يمكن استخدام إعادة المنفذ لفحص جدران الحماية بشكل فعال لتعداد قواعد الحظر الصادرة أو الواردة. استخدمه بشكل صحيح وستتمكن من الحصول على تكوين جدار الحماية.
لقد قمت بتطويره بشكل أساسي لمساعدتي في استكشاف المشكلات وإصلاحها باستخدام ماسح الشبكة الموزع الذي أقوم بتطويره حاليًا.
هذا الجزء من التعليمات البرمجية هو مجرد محلل PCAP، مما يعني أنه يتعين عليك تزويده بتفريغ حزم الشبكة الذي تم الحصول عليه بشكل صحيح حتى يعمل. ستقوم الأداة بعد ذلك بطباعة المنافذ التي (وفقًا لـ PCAP) المحظورة بواسطة جدار الحماية.
من أجل استخدامه، تحتاج إلى الوصول إلى جهازين على الأقل. يوجد أحدهما خلف جدار الحماية الذي تريد اختباره والآخر على الجانب الآخر.
هناك حالتان من حالات الاستخدام المحتملة:
ستحتاج إلى أدوات مثل tcpdump، أو tshark، أو wireshark لالتقاط حركة مرور الشبكة وحفظها (أو أي أداة تجسس أخرى)، وأدوات مثل nmap أو Masscan لصياغة حزم التحقيق وإرسالها. في الأمثلة التالية، سأستخدم Masscan وtcpdump.
في حالة وجود جدار حماية آخر قبل الجهاز الخارجي مباشرةً (وليس الجدار الموجود خلف جدار الحماية الذي ستختبره)، سيكون من الأفضل معرفة ما هي القواعد المعمول بها. لكن هذا ليس إلزاميًا، فلا يزال بإمكانك معرفة ذلك من خلال إجراء المزيد من الاختبارات من مواقع مختلفة.
سيساعدك اتباع الخطوات التالية في الحصول على نتيجة دقيقة.
لنتظاهر بأننا نريد تعداد القواعد الصادرة لأننا نخطط لتشغيل ماسح ضوئي للشبكة لاحقًا على هذا الجهاز ولذا نريد التأكد من عدم حظر أي حركة مرور صادرة بواسطة جدار حماية الخروج الخاص بنا.
الجهاز الموجود خلف جدار الحماية لديه IP aaaa
بينما الجهاز الخارجي لديه bbbb
. سيكون هذا الجهاز الثاني هو الجهاز الذي سنقوم فيه بتشغيل أداة اكتشاف الحزم (في هذه الحالة tcpdump
) والجهاز الأول الذي سنقوم بتكوينه.
اقتناء PCAP
نحن بحاجة إلى بدء فحص الحزم هنا لمعرفة أي حزم التحقيق لن تصل إلى الوجهة. مع الأخذ في الاعتبار أن هذا الجهاز يحتوي على IP bbbb
العام المرتبط بواجهة الشبكة eth0
ولا يوجد جدار حماية قيد التشغيل . نقوم بتشغيل tcpdump على النحو التالي
tcpdump -ni eth0 -w re-port.pcap src host a.a.a.a
سيتم إنشاء ملف re-port.pcap
، وبعد الانتهاء من الاختبار، هو الملف الذي سنمرره إلى هذه الأداة. لكننا سنرى هذا الجزء لاحقًا.
فحص حركة المرور
سنقوم بإنشاء 65535 حزمة SYN
من الجهاز الموجود خلف جدار الحماية وإرسالها إلى bbbb
.
للقيام بذلك أستخدم masscan
. فهو يتيح لنا ضبط المعدل باستخدام خيار --rate
وعدد الحزم التي يتم إنشاؤها لكل منفذ محدد باستخدام خيار --retries
. يعد كلا الخيارين مهمًا بالنسبة لنا لأنه يتعين علينا التأكد من أن جميع الحزم التي يمكنها الوصول إلى الوجهة ستصل إليها. بناءً على النطاق الترددي الموجود لديك على حزم المصدر/الوجهة، قد يتم فقدانه بسبب ارتفاع معدل الإرسال. لهذا الاختبار علينا أن نسير ببطء وآمن. في إيطاليا لدينا مثل قائم: من يذهب ببطء يذهب بعيدًا، وهو ما يبدو مناسبًا لي هنا.
masscan -Pn -n -p 1-65535 --wait 5 -e eth0 --rate 350 --retries 2 --open b.b.b.b
من خلال إجراء بعض الاختبارات، اكتشفت أن إرسال 350 حزمة في الثانية مرتين لكل منفذ، بإجمالي 131072 (128 كيلو) حزمة، يستغرق حوالي تسع دقائق دون فقدان الحزمة.
تعداد قواعد جدار الحماية
في هذه المرحلة يمكننا استخدام Re-port
للحصول على قائمة المنافذ المغلقة. ارجع إلى الجهاز الأول، وأوقف أداة اكتشاف الحزم CTRL+C
وانسخ re-port.pcap
إلى الدليل حيث توجد أداة Re-port. يمكنك الآن تشغيله على النحو التالي:
./enumerate.py re-port.pcap
كانت الأمثلة السابقة تعداد قواعد حظر TCP. إذا كنت تريد قائمة بجميع منافذ UDP المحظورة، فاتبع الخطوات المذكورة أعلاه لتغيير الأوامر كما يلي:
# Machine with b.b.b.b IP
tcpdump -ni eth0 -w re-port.pcap src host a.a.a.a
# Machine with a.a.a.a IP
masscan -Pn -n -p U:1-65535 --wait 5 -e eth0 --rate 350 --retries 2 --open b.b.b.b
# Re-port
./enumerate.py re-port.pcap --udp
قم بتشغيل ./enumerate.py --help لإظهار كافة الخيارات
$./enumerate.py --help
usage: enumerate.py [-h] [--address ADDRESS] [--open] [--version] [-u] [-v] pcap
Re-port is a tool to actively enumerate firewall rules.
positional arguments:
pcap PCAP dump of receiving scan traffic
optional arguments:
-h, --help show this help message and exit
--address ADDRESS scanners's IP address. If unset, all the packets in the
PCAP will be used to enumerate closed ports
--open print open ports instead of closed ones
--version show program's version number and exit
-u, --udp search for UDP open ports instead of TCP
-v, --verbose increase output verbosity
التقرير عبارة عن فئة بايثون ويمكنك استخدامه/تمديده كما تريد.
إنه قابل للتكرار ويمكنك استخدامه ضمن عبارة with
.
with Report('dump.pcap') as r:
r.enumerate_ports('tcp', '127.0.0.1')
r.print_ports()
أو
r = Report('dump.pcap')
r.enumerate_ports('tcp', '127.0.0.1')
for port in r:
print('Open %d' % port)
@r4d10n: للفكرة البسيطة وراء هذه الأداة.