
Ratched هو وسيط TLS شفاف من نوع الرجل في المنتصف مخصص لاختبار الاختراق
ratched هو وكيل وسيط (MitM) يعترض بشكل خاص اتصالات TLS. يُصمم لاستخدامه مع هدف REDIRECT الخاص بـ iptables في لينكس؛ يمكن إعادة توجيه جميع الاتصالات التي يجب اعتراضها إلى منفذ ratched المحلي. من خلال خيار SO_ORIGINAL_DST، يستطيع ratched تحديد الوجهة المقصودة (قبل تعديل حزم iptables) ويحاول إنشاء اتصال بالهدف الأصلي.
ما يميزه عن برامج MitM الأخرى هو ما يلي:
لا يعترض ratched حركة المرور بشكل عشوائي. على وجه الخصوص، ينتظر أولاً أن يرسل عميل TLS ClientHello الخاص به حتى يتمكن ratched من تحليله وتحديد ما إذا كان الهدف يجب اعتراضه بناءً على امتداد مؤشر اسم الخادم (SNI) في TLS. هذا مفيد بشكل خاص عند وجود استضافة افتراضية، ولكنك تريد فقط اعتراض الاتصالات إلى اسم مضيف معين.
لا يُقصد من ratched فقط التقاط كلمات المرور، ولكن بشكل أساسي تفريغ حركة المرور في ملف PCAPNG. تم اختيار تنسيق ملف PCAPNG لأنه يسمح بإضافة تعليقات إلى الاتصالات (على وجه الخصوص، اسم المضيف المشار إليه في امتداد SNI) ويسمح أيضًا بتضمين معلومات تحليل الأسماء في ملف الالتقاط (مرة أخرى، لربط عنوان IP الهدف باسم مضيف امتداد SNI).
يحتوي ratched على تكوين فردي لكل SNI يتم اعتراضه، بما في ذلك المجموعات المدعومة (المعروفة سابقًا باسم "المنحنيات الإهليلجية المدعومة")، وحزم الشفرات، وإصدارات TLS محددة على جانبي العميل والخادم، ويسمح بتحديد شهادات/مفاتيح مخصصة لمضيفين مختلفين معترضين.
يوفر ratched دعمًا واسعًا لشهادات العميل ويوفر أيضًا تزويرًا تلقائيًا لشهادات العميل (على غرار تزوير شهادات الخادم في الاتجاه الآخر).
يدعم ratched تدبيس OCSP ويمكنه تلقائيًا تزوير استجابات OCSP إيجابية عندما يرسل العميل امتداد طلب حالة TLS.
بمجرد أن يستمع ratched على جهاز التوجيه (في المثال، على المنفذ 9999)، قم ببساطة بإضافة إدخال iptables يحدد حركة المرور التي تريد التقاطها. على سبيل المثال، لاعتراض كل شيء من 192.168.1.7 يحاول الوصول إلى المنفذ 443، استخدم:
# iptables -t nat -A PREROUTING -p tcp -s 192.168.1.7 --dport 443 -j REDIRECT --to-ports 9999
لاعتراض كل شيء يتجه إلى المنفذ 443، استخدم ببساطة:
# iptables -t nat -A PREROUTING -p tcp --dport 443 -j REDIRECT --to-ports 9999
إذا كنت تعمل كموجه وتريد اعتراض حركة المرور الواردة محلياً، استخدم هدف DNAT بدلاً من REDIRECT، مثل:
# iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 443 -j DNAT --to 192.168.123.1:9999
هنا، eth1 هي الواجهة التي تعترض عليها حركة المرور و 192.168.123.1 هو عنوان IP للواجهة المحلية.
يجب أن تكون صفحة المساعدة واضحة بذاتها:
usage: ratched [-c path] [-f hostname:port] [--single-shot] [--dump-certs]
[--keyspec keyspec] [--initial-read-timeout secs]
[--mark-forged-certificates] [--no-recalculate-keyids]
[--daemonize] [--logfile file] [--flush-logs] [--crl-uri uri]
[--ocsp-uri uri] [--write-memdumps-into-files]
[--use-ipv6-encapsulation] [-l hostname:port]
[-d key=value[,key=value,...]] [-i hostname[,key=value,...]]
[--pcap-comment comment] [-o filename] [-v]
ratched - TLS connection router that performs a man-in-the-middle attack