صور تالفة مع تعطيل 'embed truncate'

مرحباً،
أواجه مشكلة في الصور المكسورة

![](upload://7Tu1xeK5xtt2jBrjpWQcBxOYByS.png

مع تفعيل “embed truncate” تعمل الصور؛ ولكن مع تعطيل “embed truncate” تظهر مكسورة مثل هذه كل الصور..

في السجلات فارغة.. وكل شيء في Sidekiq تمت معالجته بشكل جيد..

يرجى المشاركة هنا:

  • رابط المقالة التي تحاول تضمينها

  • رابط موجز RSS

  • كود HTML للمنشور المُعد أو رابط للموضوع حيث يعيش

أشك في أنك تواجه المشكلة الموضحة هنا: Fix broken images for posts created by the WP Discourse and RSS plugins. يقدم هذا الدليل بعض الحلول للمشكلة. هناك شرح مفصل للمشكلة في منشوري الثاني في الموضوع.

صحيح يا @simon، لقد حاولت ذلك عن طريق تمكين “تعطيل نطاقات تنزيل الصور” ولكن الصور لم تظهر في ذلك الوقت..
الصور تظهر فقط بهذه الطريقة

![](upload://6zqK52dO23i1JsYH2oyMU12U2ro.jpeg)

والتعديل اليدوي بإضافة

ليس “ملحقًا يعمل” بشكل صحيح.
لكن فيما يتعلق بـ “المحرر الكلاسيكي”، لم أجربه لأنه لا يتعلق بـ WordPress..
آمل أن تتمكن من تقديم حل أو حل مؤقت لهذه المشكلة.

بعد قراءة العديد من المواضيع الطويلة، وما إلى ذلك.. قررت الذهاب مع المساحة الفارغة لحل مشكلة الصورة؛ ولكن المشكلة مع هذا المكون الإضافي هي أنه حتى بعد تعديله وإصلاح الصور، اختفت الصورة “أو” تم تجريد الموضوع مرة أخرى بصورة مكسورة، وأحتاج إلى إجراء تعديل “التراجع إلى المراجعة”..
من المزعج حقًا أنه لا يمكننا جعل صور الموضوع غير مكسورة؛ حتى بعد إضافة مساحة فارغة إلى الصورة!

هل يمكنك من فضلك مشاركة ما طُلب منك؟

وإلا فلا فائدة من الشكوى دون الحد الأدنى من المعلومات القابلة للتنفيذ.

لقد أشرتُ مسبقاً إلى مشكلة الصور المتضررة، لكن لم أحصل على أي نتائج سوى إشارة من شخص آخر لنفس المشكلة دون حل.

الرابط الذي أحاول تضمينه:
https://reconshell.com/redwarden-flexible-cobaltstrike-malleable-redirector/

رابط تغذية RSS
https://reconshell.com/tag/cobaltstrike/feed/

المحتوى بعد المعالجة (HTML cooked):


<figure class="wp-block-image size-large">![cs|1024x689](upload://liMGLRlV0nW3HZuECbVKnLCrHcE.png)</figure>



<p><strong><span class="has-inline-color has-vivid-purple-color">وكيل عكسي لـ Cobalt Strike C2 يقاوم فرق الأزرق (Blue Teams)، برامج مكافحة الفيروسات (AVs)، وأنظمة كشف التهديدات في نقطة النهاية (EDRs)، والماسحات الضوئية من خلال فحص الحزم ومطابقة ملفات التعريف القابلة للتغيير (malleable profiles)</span></strong></p>



<hr class="wp-block-separator">



<p>(كان يُعرف سابقاً باسم <a href="https://github.com/mgeeky/proxy2" target="_blank" rel="noopener">proxy2’s</a> <em>malleable_redirector</em> plugin)</p>



<p><strong>لنرفع المعايير في متانة وكلاء إعادة التوجيه لـ C2 ضد استجابة الحوادث، أليس كذلك؟</strong></p>



<p>لقد شهدت أعمال الفريق الأحمر (Red Teaming) <a href="https://bluescreenofjeff.com/2016-04-12-combatting-incident-responders-with-apache-mod_rewrite/" target="_blank" rel="noopener">عدة</a> <a href="https://posts.specterops.io/automating-apache-mod-rewrite-and-cobalt-strike-malleable-c2-profiles-d45266ca642" target="_blank" rel="noopener">أفكار</a> <a href="https://gist.github.com/curi0usJack/971385e8334e189d93a6cb4671238b10" target="_blank" rel="noopener">رائعة</a> حول كيفية التصدي لمستجيبين الحوادث وإرباكهم، مع توفير شبكة وكلاء إعادة توجيه C2 مقاومة في الوقت نفسه.</p>



<p>يجمع هذا العمل العديد من تلك الأفكار الرائعة في أداة واحدة خفيفة الوزن، تحاكي Apache2 في جذورها كوكيل عكسي بسيط لـ HTTP(S).</p>



<p>دمج فهم ملفات تعريف C2 القابلة للتغيير، ومعرفة مجموعة عناوين IP المعروفة بأنها ضارة، ومرونة إضافة منطق جديد للفحص وإعادة التوجيه بسهولة – أدى إلى الحصول على طارد ذكي لفحوصات استجابة الحوادث.</p>



<figure class="wp-block-image size-large">![red|1024x677](upload://yNscGob6i3Xu2UY6bnBXZgbSwAZ.png)</figure>



<p>إذا وصلت أي حزمة دخول غير صالحة إلى RedWarden – يمكنك <code>redirect</code> (إعادة توجيهها)، أو <code>reset</code> (إعادة تعيينها)، أو ببساطة <code>proxy</code> (تفويضها) بعيداً!</p>



<h2><a href="https://github.com/mgeeky/RedWarden#abstract" target="_blank" rel="noopener"></a></h2>



<h2><strong>الملخص</strong></h2>



<p>تعمل هذه البرنامج كوكيل عكسي لـ HTTP/HTTPS مع فرض عدة قيود على طلبات C2 الواردة عبر HTTP، لتحديد الحزم التي يجب توجيهها إلى خادم الفريق (Teamserver) وتلك التي يجب إسقاطها، بشكل مشابه لقيود ملف .htaccess المفروضة في <code>mod_rewrite</code> الخاص بـ Apache2.</p>



<p>تم إنشاء <code>RedWarden</code> لحل مشكلة التهرب من استجابة الحوادث/برامج مكافحة الفيروسات/أنظمة كشف التهديدات/الصناديق الرملية على مستوى وكيل إعادة توجيه C2. ومن المخطط أن يحل محل إعدادات Apache2 + mod_rewrite الكلاسيكية المستخدمة لهذا الغرض.</p>



<p><strong>الميزات:</strong></p>



<ul><li>محلل لملفات تعريف C2 القابلة للتغيير قادر على التحقق من طلبات HTTP/S الواردة بدقة وفقاً لعقد الملف القابل للتغيير وإسقاط الحزم الخارجة عن هذا العقد في حال حدوث انتهاك (يغطي ملفات التعريف القابلة للتغيير الإصدار 4.0 وما فوق مع المتغيرات)</li><li>القدرة على إلغاء تصفية/إصلاح رؤوس HTTP غير المتوقعة وغير المرغوب فيها المضافة بواسطة أنظمة وسيطة مثل الوكلاء والخزانات (مثل CloudFlare) لضمان الامتثال لعقد قابل للتغيير صالح.</li><li>قائمة سوداء ضخمة ومنقحة مدمجة لمجموعات ونطاقات IPv4 المعروفة بارتباطها بموردي أمن تكنولوجيا المعلومات</li><li>إدخالات سجل قابلة للبحث باستخدام Grep (بصيغة سجل الوصول المشترك لـ Apache2 وصيغة RedWarden المخصصة) مفيدة لتتبع أحداث/مشاكل اتصال النظير</li><li>القدرة على استعلام عنوان IPv4 للنظير المتصل مقابل معلومات الموقع الجغرافي/IP وwhois ومقارنتها بتعبيرات منتظمة محددة مسبقاً لاستبعاد النظراء الذين يتصلون خارج المنظمات/البلدان/المدن الموثوقة وما إلى ذلك.</li><li>تخفيف هجمات إعادة التشغيل (Replay attacks) المدمج من خلال تسجيل جمل MD5 للطلبات المقبولة في قاعدة بيانات SQLite محلية ومنع الطلبات التي تم قبولها سابقاً.</li><li>يسمح بتعريف عبارات ProxyPass لتوجيه الطلبات المطابقة لعنوان URL معين إلى مضيفين آخرين</li><li>دعم خوادم فرق متعددة (Teamservers)</li><li>دعم العديد من مضيفين/مواقع إعادة التوجيه للوكيل العكسي بطريقة عشوائية – مما يتيح موازنة الحمل أو بناء بنى تحتية أكثر تنوعاً</li><li>يمكن إصلاح حزم HTTP وفقاً للعقد القابل للتغيير المتوقع في حال تلف بعض الرؤوس أثناء النقل</li><li>انتهت ليالي الأرق التي قضيتها في استكشاف أخطاء "لماذا لا يعمل Beacon الخاص بي عبر CloudFlare/CDN/Domain Fronting" بفضل سجلات مفصلة لطلبات/استجابات HTTP(S)</li></ul>



<p>يتلقى RedWarden ملف تعريف C2 القابل للتغيير و <code>hostname:port</code> الخاص بخادم الفريق كمدخلات. ثم يقوم بتحليل أقسام ملف التعريف القابل للتغيير المقدمة لفهم العقد وتسمح فقط بمرور طلبات الدخول التي تستوفيها، بينما تُربك الأخرى.</p>



<p>تُستخدم أقسام مثل <code>http-stager</code>، <code>http-get</code>، <code>http-post</code> وعناوين URL الخاصة بها، والرؤوس، وأنماط الإضافة السابقة/لاحقة، وUser-Agent للتمييز بين طلب beacon المشروع والضوضاء غير ذات الصلة على الإنترنت أو حزم خارجة عن النطاق من استجابة الحوادث/برامج مكافحة الفيروسات/أنظمة كشف التهديدات.</p>



<p>يستفيد البرنامج من نطاقات IP المعروفة بأنها ضارة والمقدمة من: curi0usJack والآخرين:</p>



<pre class="wp-block-preformatted">https://gist.github.com/curi0usJack/971385e8334e189d93a6cb4671238b10</pre>



<p>يؤدي استخدام قوائم حظر عناوين IP جنباً إلى جنب مع البحث عن الكلمات المفتاحية المعروفة بأنها ضارة عبر استعلامات DNS العكسية لفحص رؤوس HTTP، إلى زيادة موثوقية وكلاء إعادة التوجيه بشكل ملحوظ ضد النظراء غير المصرح لهم الذين يرغبون في فحص البنية التحتية للمهاجم.</p>



<p>قد يتم إعادة توجيه الحزم غير الصالحة وفقاً لثلاث استراتيجيات:</p>



<ul><li><strong>redirect</strong>: إعادة توجيه النظير ببساطة إلى مواقع ويب أخرى، مثل Rick Roll.</li><li><strong>reset</strong>: قتل اتصال TCP فوراً.</li><li><strong>proxy</strong>: جلب استجابة من موقع ويب آخر، لمحاكاة موقع ويب منسوخ/مختطف بأقرب ما يمكن.</li></ul>



<p>يتم فرض هذا التكوين في ملف الإعدادات:</p>



<pre class="wp-block-preformatted">#
# ماذا تفعل بالطلب الذي لا يتوافق مع Beacon، أو القوائم البيضاء، أو 
# عبارات ProxyPass الشاملة: 
#   - 'redirect' إلى مضيف آخر (HTTP 301)، 
#   - 'reset' اتصال TCP مع العميل المتصل
#   - 'proxy' الطلب، بالعمل كوكيل عكسي ضد action_url المحدد 
#       (قد يكون خطيراً إذا جلب العميل شيئاً لا يفترض أن يراه!)
#
# القيم الصالحة: 'reset', 'redirect', 'proxy'. 
#
# الافتراضي: redirect
#
drop_action: redirect</pre>



<p>يوضح المثال أدناه نتيجة <code>redirect</code> إلى <code>https://googole.com</code>:</p>



<figure class="wp-block-image size-large">![op|1024x526](upload://rSd1JK6ERp0W2nR9GtTryPHMvJc.png)</figure>



<p>استخدم بحكمة، وابقَ آمناً.</p>



<h3><a href="https://github.com/mgeeky/RedWarden#requirements" target="_blank" rel="noopener"></a></h3>



<h3><strong><span class="has-inline-color has-vivid-cyan-blue-color">المتطلبات</span></strong></h3>



<p>يمكن تشغيل هذا البرنامج فقط على أنظمة Linux لأنه يستخدم fork لإنشاء عمليات متعددة.</p>



<p>كما يُتوقع أن يكون أمر النظام <code>openssl</code> مثبتاً لأنه يستخدم لتوليد شهادات SSL.</p>



<p>أخيراً، قم بتثبيت جميع متطلبات Python3 PIP بسهولة باستخدام:</p>



<pre class="wp-block-preformatted">bash $ sudo pip3 install -r requirements.txt</pre>



<h2><a href="https://github.com/mgeeky/RedWarden#usage" target="_blank" rel="noopener"></a></h2>



<h2>الاستخدام</h2>



<h3><a href="https://github.com/mgeeky/RedWarden#example-usage" target="_blank" rel="noopener"></a></h3>



<h3><span class="has-inline-color has-vivid-cyan-blue-color">مثال على الاستخدام</span></h3>



<p>قد يحتوي ملف التكوين <strong>config.yaml</strong> الأدنى لـ RedWarden على:</p>



<pre class="wp-block-preformatted">port:
  - 80/http
  - 443/https

profile: jquery-c2.3.14.profile

ssl_cacert: /etc/letsencrypt/live/attacker.com/fullchain.pem
ssl_cakey: /etc/letsencrypt/live/attacker.com/privkey.pem

teamserver_url:
  - 1.2.3.4:8080

drop_action: reset</pre>



<p>ثم، يمكن تشغيل البرنامج عن طريق إعطائه مساراً لملف التكوين:</p>



<pre class="wp-block-preformatted">bash$ sudo python3 RedWarden.py -c config.yaml

  [INFO] 19:21:42: Loading 1 plugin...
  [INFO] 19:21:42: Plugin "malleable_redirector" has been installed.
  [INFO] 19:21:42: Preparing SSL certificates and keys for https traffic interception...
  [INFO] 19:21:42: Using provided CA key file: ca-cert/ca.key
  [INFO] 19:21:42: Using provided CA certificate file: ca-cert/ca.crt
  [INFO] 19:21:42: Using provided Certificate key: ca-cert/cert.key
  [INFO] 19:21:42: Serving http proxy on: 0.0.0.0, port: 80...
  [INFO] 19:21:42: Serving https proxy on: 0.0.0.0, port: 443...
  [INFO] 19:21:42: [REQUEST] GET /jquery-3.3.1.min.js
  [INFO] 19:21:42: == Valid malleable http-get request inbound.
  [INFO] 19:21:42: Plugin redirected request from [code.jquery.com] to [1.2.3.4:8080]
  [INFO] 19:21:42: [RESPONSE] HTTP 200 OK, length: 5543
  [INFO] 19:21:45: [REQUEST] GET /jquery-3.3.1.min.js
  [INFO] 19:21:45: == Valid malleable http-get request inbound.
  [INFO] 19:21:45: Plugin redirected request from [code.jquery.com] to [1.2.3.4:8080]
  [INFO] 19:21:45: [RESPONSE] HTTP 200 OK, length: 5543
  [INFO] 19:21:46: [REQUEST] GET /
  [...]
  [ERROR] 19:24:46: [DROP, reason:1] inbound User-Agent differs from the one defined in C2 profile.
  [...]
  [INFO] 19:24:46: [RESPONSE] HTTP 301 Moved Permanently, length: 212
  [INFO] 19:24:48: [REQUEST] GET /jquery-3.3.1.min.js
  [INFO] 19:24:48: == Valid malleable http-get request inbound.
  [INFO] 19:24:48: Plugin redirected request from [code.jquery.com] to [1.2.3.4:8080]
  [...]</pre>



<p>يحتوي المخرج أعلاه على سطر يشير إلى وجود طلب واردة غير مصرح به، وغير متوافق مع ملف تعريف C2 الخاص بنا، والذي تم إسقاطه بسبب عدم توافق سلسلة User-Agent المقدمة:</p>



<pre class="wp-block-code"><code>  [...]
  [DROP, reason:1] inbound User-Agent differs from the one defined in C2 profile.
  [...]
</code></pre>



<h2><a href="https://github.com/mgeeky/RedWarden#use-cases" target="_blank" rel="noopener"></a></h2>



<h2><strong>حالات الاستخدام</strong></h2>



<h3><a href="https://github.com/mgeeky/RedWarden#impose-ip-geolocation-on-your-beacon-traffic-originators" target="_blank" rel="noopener"></a></h3>



<h3><span class="has-inline-color has-vivid-cyan-blue-color">فرض الموقع الجغرافي لعناوين IP على مصادر حركة مرور Beacon الخاصة بك</span></h3>



<p>لقد قمت بعمل Pre-Phish و OSINT بشكل جيد جداً. الآن تعرف أين يعيش أهدافك ولديك بعض الأدلة حول مكان نشأة حركة المرور، أو على الأقل كيفية اكتشاف حركة المرور غير ذات الصلة تماماً. كيف يمكن فرض الموقع الجغرافي لعناوين IP على طلبات Beacon في وكيل إعادة التوجيه؟</p>



<p>يأتي RedWarden للمساعدة!</p>



<p>لنفترض أنك تريد قبول حركة المرور الناشئة من بولندا، أوروبا فقط. تشير نتائج Pre-Phish/OSINT الخاصة بك إلى أن:</p>



<ul><li><code>89.64.64.150</code> هو عنوان IP مشروع لأحد أهدافك، ناشئ من بولندا</li><li><code>59.99.140.76</code> بينما هذا الأخير ليس كذلك، ووصل إلى أنظمتك كحزمة ضوضاء إنترنت عادية.</li></ul>



<p>يمكنك استخدام أداة RedWarden <code>lib/ipLookupHelper.py</code> لجمع بيانات الموقع الجغرافي لعناوين IP حول هذين العنوانين:</p>



<pre class="wp-block-preformatted">bash$ python3 ipLookupHelper.py

Usage: ./ipLookupHelper.py <ipaddress> [malleable-redirector-config]

Use this small utility to collect IP Lookup details on your target IPv4 address and verify whether
your 'ip_geolocation_requirements' section of proxy2 malleable-redirector-config.yaml would match that
IP address. If second param is not given - no </ipaddress></pre>



<p>الأول يعطي:</p>



<pre class="wp-block-preformatted">bash$ python3 ipLookupHelper.py 89.64.64.150
[dbg] Following IP Lookup providers will be used: ['ip_api_com', 'ipapi_co']
[.] Lookup of: 89.64.64.150
[dbg] Calling IP Lookup provider: ipapi_co
[dbg] Calling IP Lookup provider: ip_api_com
[dbg] New IP lookup entry cached: 89.64.64.150
[.] Output:
{
  "organization": [
    "UPC Polska Sp. z o.o.",
    "UPC.pl",
    "AS6830 Liberty Global B.V."
  ],
  "continent": "Europe",
  "continent_code": "EU",
  "country": "Poland",
  "country_code": "PL",
  "ip": "89.64.64.150",
  "city": "Warsaw",
  "timezone": "Europe/Warsaw",
  "fulldata": {
    "status": "success",
    "country": "Poland",
    "countryCode": "PL",
    "region": "14",
    "regionName": "Mazovia",
    "city": "Warsaw",
    "zip": "00-202",
    "lat": 52.2484,
    "lon": 21.0026,
    "timezone": "Europe/Warsaw",
    "isp": "UPC.pl",
    "org": "UPC Polska Sp. z o.o.",
    "as": "AS6830 Liberty Global B.V.",
    "query": "89.64.64.150"
  },
  "reverse_ip": "89-64-64-150.dynamic.chello.pl"
}</pre>



<p>والثاني يعطي:</p>



<pre class="wp-block-preformatted">bash$ python3 ipLookupHelper.py 59.99.140.76
[dbg] Following IP Lookup providers will be used: ['ip_api_com', 'ipapi_co']
[dbg] Read 1 cached entries from file.
[.] Lookup of: 59.99.140.76
[dbg] Calling IP Lookup provider: ip_api_com
[dbg] New IP lookup entry cached: 59.99.140.76
[.] Output:
{
  "organization": [
    "",
    "BSNL Internet",
    "AS9829 National Internet Backbone"
  ],
  "continent": "Asia",
  "continent_code": "AS",
  "country": "India",
  "country_code": "IN",
  "ip": "59.99.140.76",
  "city": "Palakkad",
  "timezone": "Asia/Kolkata",
  "fulldata": {
    "status": "success",
    "country": "India",
    "countryCode": "IN",
    "region": "KL",
    "regionName": "Kerala",
    "city": "Palakkad",
    "zip": "678001",
    "lat": 10.7739,
    "lon": 76.6487,
    "timezone": "Asia/Kolkata",
    "isp": "BSNL Internet",
    "org": "",
    "as": "AS9829 National Internet Backbone",
    "query": "59.99.140.76"
  },
  "reverse_ip": ""
}</pre>



<p>الآن ترى أن الأول يحتوي على <code>"country": "Poland"</code> بينما الثاني <code>"country": "India"</code>. بهذه المعرفة، نحن مستعدون لوضع قيودنا في شكل قاموس YAML ضخم:</p>



<pre class="wp-block-preformatted">ip_geolocation_requirements:
  organization:
  continent:
  continent_code:
  country:
     - Poland
     - PL
     - Polska
  country_code:
  city:
  timezone:</pre>



<p>تقبل كل إدخال في هذا القاموس تعبيراً منتظماً للمطابقة مع بيانات الموقع الجغرافي لعنوان IP المحدد للنظير الوارد. نستخدم ثلاثة إدخالات في خاصية <code>country</code> للسماح بالطلبات التي تحتوي على أحد القيم المحددة.</p>



<p>بعد تعيين ذلك في تكوينك، يمكنك التحقق مما إذا كان عنوان IP آخر سيمر عبر مُمَيِّز الموقع الجغرافي لـ RedWarden أم لا باستخدام أداة <code>ipLookupHelper</code> التي تقبل معلمة ثانية:</p>



<figure class="wp-block-image size-large">![confy|1024x832](upload://1hMhgAzzH4ngPQFLkddw4nmGw2M.png)</figure>



<p>يخبرك السطر الأخير ما إذا كانت الحزمة ستُحظر أم تُقبل.</p>



<p>وهذا كل شيء! قم بتكوين قيود الموقع الجغرافي لعناوين IP بحكمة وأمان، وافحص سجلات RedWarden بعناية بحثاً عن أي إدخالات DROP متعلقة بالموقع الجغرافي، واحتفظ بحركة مرور C2 الخاصة بك نظيفة ومنظمة!</p>



<h3><a href="https://github.com/mgeeky/RedWarden#repair-tampered-beacon-requests" target="_blank" rel="noopener"></a></h3>



<h3><strong><span class="has-inline-color has-vivid-cyan-blue-color">إصلاح طلبات Beacon المتضررة</span></strong></h3>



<p>إذا كنت تستخدم أنظمة وسيطة مثل AWS Lambda أو CloudFlare كوكلاء إعادة توجيه / Domain Fronting، فقد واجهت بالتأكيد حالات حيث لم يتمكن بعض حزمك من القبول بواسطة خادم الفريق لأنها انحرفت عن العقد القابل للتغيير المتفق عليه. سواء كان ذلك بسبب رأس HTTP مُعدّل أو مُزال، أو إعادة ترتيب ملفات تعريف الارتباط، أو أي شيء آخر – أراهن أن ذلك أهدر ساعات كثيرة من حياتك.</p>



<p>لمعالجة مشاكل إعداد قنوات C2 والتلاعب من قبل الأنظمة الوسيطة، يقدم RedWarden وظيفة لإصلاح حزم Beacon.</p>



<p>يفعل ذلك عن طريق التحقق مما يتوقعه ملف التعريف القابل للتغيير أن تكون عليه الحزمة، ويمكنه استعادة رؤوس HTTP المُعدلة إلى قيمها المتفق عليها وفقاً لمتطلبات الملف.</p>



<p>اعتبر الملف التالي البسيط:</p>



<pre class="wp-block-preformatted">http-get {
    set uri "/api/abc";
    client {

        header "Accept-Encoding" "gzip, deflate";

        metadata {
            base64url;
            netbios;
            base64url;
            parameter "auth";
        }
    }
    ...</pre>



<p>ترى هذا <code>Accept-Encoding</code>؟ يجب أن يأتي كل طلب Beacon بهذا الرأس وهذه القيمة. ماذا يحدث إذا اصطدم Beacon الخاص بك بأنظمة CloudFlare وأصدرت طلباً سيُزال منه هذا الرأس أو سيكون <code>Accept-Encoding: gzip</code> بدلاً من ذلك؟ سيقوم خادم الفريق بإسقاط الطلب على الفور.</p>



<p>من خلال تعيين هذا الرأس في قسم تكوين RedWarden المسمى <code>protect_these_headers_from_tampering</code> يمكنك إنقاذ اتصالك.:</p>



<pre class="wp-block-preformatted">#
# إذا قام RedWarden بمصادقة رؤوس HTTP للطلب الوارد، وفقاً لسياسة drop_malleable_without_expected_header_value:
#   "[IP: DROP, reason:6] HTTP request did not contain expected header value:"
#
# وشعر بأن بعض الرؤوس مفقودة أو تم كتابتها فوقها أثناء النقل، سيتم إسقاط الطلب. يمكننا تخفيف هذه السياسة
# قليلاً، حيث توجد حالات قد تتلاعب فيها أنظمة التخزين المؤقت (مثل Cloudflare) بطلباتنا وبالتالي
# كسر العقود القابلة للتغيير. ما يمكننا فعله هو تحديد قائمة من الرؤوس التي يجب إعادة كتابتها إلى قيمها
# المحددة في ملف التعريف القابل للتغيير المقدم.
#
# لذا على سبيل المثال، إذا توقع ملفنا:
#   header "Accept-Encoding" "gzip, deflate";
#
# لكننا تلقينا طلباً يحتوي على الرأس التالي بدلاً من ذلك:
#   Accept-Encoding: gzip
#
# لأنه تم التلاعب به أثناء النقل بواسطة بعض الأنظمة الوسيطة (مثل وكلاء الويب أو التخزين المؤقت)، يمكننا
# اكتشاف ذلك وإعادة تعيين قيمة ذلك الرأس إلى ما كان متوقعاً في ملف التعريف القابل للتغيير.
#
# لحماية رأس Accept-Encoding، على سبيل المثال، يمكن استخدام التكوين التالي:
#   protect_these_headers_from_tampering:
#     - Accept-Encoding
#
#
# الافتراضي: <empty-list>
#
protect_these_headers_from_tampering:
  - Accept-Encoding</empty-list></pre>



<h3><a href="https://github.com/mgeeky/RedWarden#example-outputs" target="_blank" rel="noopener"></a></h3>



<h3><strong><span class="has-inline-color has-vivid-cyan-blue-color">أمثلة على المخرجات</span></strong></h3>



<p>لنلقِ نظرة على المخرج الذي ينتجه الوكيل.</p>



<p>تحت خيار <code>verbose: True</code>، سيتم تعيين التفصيل إلى INFO على الأكثر، مما يخبرنا بالفرق بين الطلبات المقبولة والمُسقطَة.</p>



<p>قد يُقبل الطلب إذا واجه جميع المعايير المُعدّة في ملف تكوين RedWarden. ستُتبع مثل هذه الحالة بإدخال سجل <code>[ALLOW, ...]</code>:</p>



<pre class="wp-block-preformatted">[INFO] 2021-04-24/17:30:48: [REQUEST] GET /js/scripts.js
[INFO] 2021-04-24/17:30:48: == Valid malleable http-get (variant: default) request inbound.
[INFO] 2021-04-24/17:30:48: [ALLOW, 2021-04-24/19:30:48, 111.222.223.224] "/js/scripts.js" - UA: "Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko"
[INFO] 2021-04-24/17:30:48: Connected peer sent 2 valid http-get and 0 valid http-post requests so far, out of 15/5 required to consider him temporarily trusted
[INFO] 2021-04-24/17:30:48: Plugin redirected request from [attacker.com] to [127.0.0.1:5555]</pre>



<p>إذا فشل الطلب في أي من الفحوصات التي يقوم بها RedWarden على كل طلب، سيتم إصدار سطر <code>[DROP, ...]</code> المقابل الذي يحتوي على معلومات حول سبب <strong>الإسقاط</strong>.:</p>



<pre class="wp-block-preformatted">[INFO] 2021-04-24/16:48:28: [REQUEST] GET /
[ERROR] 2021-04-24/16:48:29: [DROP, 2021-04-24/18:48:28, reason:1, 128.14.211.186] inbound User-Agent differs from the one defined in C2 profile.
[INFO] 2021-04-24/16:48:29: [DROP, 2021-04-24/18:48:28, 128.14.211.186] "/" - UA: "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36"
[ERROR] 2021-04-24/16:48:29: [REDIRECTING invalid request from 128.14.211.186 (zl-dal-us-gp3-wk107.internet-census.org)] GET /</pre>



<h3><a href="https://github.com/mgeeky/RedWarden#drop-policies-fine-tuning" target="_blank" rel="noopener"></a></h3>



<h3><strong><span class="has-inline-color has-vivid-cyan-blue-color">ضبط سياسات الإسقاط بدقة</span></strong></h3>



<p>هناك العديد من الأسباب التي تحدد ما إذا كان يمكن إسقاط الطلب. يمكن تشغيل أو إيقاف كل من هذه الفحوصات بشكل مستقل وفقاً للمتطلبات أو في عملية الضبط الدقيق أو إصلاح القرارات الخاطئة:</p>



<p>مقتطف من <code>example-config.yaml</code>:</p>



<pre class="wp-block-preformatted">#
# سياسة إسقاط الطلبات الدقيقة - تتيح لك تحديد الفحوصات
# التي تريد فرضها وتلك التي تريد تخطيها عن طريق تعيينها على False
#
# الافتراضي: تمكين جميع الفحوصات
#
policy:
  # [IP: ALLOW, reason:0] Request conforms ProxyPass entry (url="..." host="..."). Passing request to specified host
  allow_proxy_pass: True
  # [IP: ALLOW, reason:2] Peer's IP was added dynamically to a whitelist based on a number of allowed requests
  allow_dynamic_peer_whitelisting: True
  # [IP: DROP, reason:1] inbound User-Agent differs from the one defined in C2 profile.
  drop_invalid_useragent: True
  # [IP: DROP, reason:2] HTTP header name contained banned word
  drop_http_banned_header_names: True
  # [IP: DROP, reason:3] HTTP header value contained banned word:
  drop_http_banned_header_value: True
  # [IP: DROP, reason:4b] peer's reverse-IP lookup contained banned word
  drop_dangerous_ip_reverse_lookup: True
  # [IP: DROP, reason:4e] Peer's IP geolocation metadata contained banned keyword! Peer banned in generic fashion.
  drop_ipgeo_metadata_containing_banned_keywords: True
  # [IP: DROP, reason:5] HTTP request did not contain expected header
  drop_malleable_without_expected_header: True
  # [IP: DROP, reason:6] HTTP request did not contain expected header value:
  drop_malleable_without_expected_header_value: True
  # [IP: DROP, reason:7] HTTP request did not contain expected (metadata|id|output) section header:
  drop_malleable_without_expected_request_section: True
  # [IP: DROP, reason:8] HTTP request was expected to contain (metadata|id|output) section with parameter in URI:
  drop_malleable_without_request_section_in_uri: True
  # [IP: DROP, reason:9] Did not found append pattern:
  drop_malleable_without_prepend_pattern: True
  # [IP: DROP, reason:10] Did not found append pattern:
  drop_malleable_without_apppend_pattern: True
  # [IP: DROP, reason:11] Requested URI does not aligns any of Malleable defined variants:
  drop_malleable_unknown_uris: True
  # [IP: DROP, reason:12] HTTP request was expected to contain &lt;&gt; section with URI-append containing prepend/append fragments
  drop_malleable_with_invalid_uri_append: True</pre>



<p>بشكل افتراضي، يتم فرض جميع هذه الفحوصات.</p>



<p>سيؤدي تشغيل <code>debug: True</code> إلى إغراق ذاكرة التخزين المؤقت لأوامر النظام (console buffer) بعدد كبير من أسطر السجلات التي تصف كل خطوة يقوم بها RedWarden في عملية اتخاذ قراراته المعقدة. إذا أردت رؤية أجسام طلباتك واستجاباتك كاملة – قم بتعيين <code>debug</code> و <code>trace</code> إلى true واستعد للغرق في عبء التسجيل!</p>



<h2><a href="https://github.com/mgeeky/RedWarden#faq" target="_blank" rel="noopener"></a></h2>



<h2><strong><span class="has-inline-color has-vivid-cyan-blue-color">الأسئلة الشائعة</span></strong></h2>



<p><strong>– هل يمكن تشغيل هذا البرنامج بدون ملف تعريف قابل للتغيير (Malleable Profile)؟</strong></p>



<p>نعم، يمكن. ومع ذلك، سيتم إيقاف منطق فحص الطلبات، والباقي يجب أن يعمل بشكل جيد: فرض الموقع الجغرافي لعناوين IP، منطق البحث العكسي، قائمة عناوين IP المحظورة، إلخ.</p>



<p><strong>– هل يمكن تكييف هذا البرنامج بسهولة مع أطر عمل C2 أخرى أيضاً؟ مثل Mythic، Covenant، إلخ؟</strong></p>



<p>بسهولة، لا. مع بعض الجهد – نعم. كما شرحت أدناه، تم كتابة الأداة بشكل سيء مما سيجعل تكييف أطر C2 الأخرى أمراً مؤلماً. ومع ذلك، فهذا ممكن تماماً إذا تم بذل بعض الوقت والجهد.</p>



<p><strong>– حزمي يتم إسقاطها. لماذا؟</strong></p>



<p>حاول تمكين <code>debug: True</code> و <code>trace: True</code> لجمع أكبر قدر ممكن من السجلات. ثم ستحتاج إلى مراجعة السجلات وفحص ما يحدث. هل تبدو الحزم تماماً كما كنت تتوقع في ملف التعريف القابل للتغيير الخاص بك؟ أو ربما كان هناك تلاعب طفيف أثناء الشبكة يسبب إسقاط RedWarden للحزمة (وقد يجعل خادم الفريق يسقطها أيضاً)؟</p>



<h2><a href="https://github.com/mgeeky/RedWarden#known-issues" target="_blank" rel="noopener"></a></h2>



<h2><strong><span class="has-inline-color has-vivid-cyan-blue-color">المشاكل المعروفة</span></strong></h2>



<ul><li>قد <em>يضيف</em> عبئاً طفيفاً على إنتاجية النوم التفاعلي (interactive sleep throughput)</li><li>منطق معالجة ProxyPass بعيد جداً عن الكمال وهو <em>حقاً</em> مليء بالأخطاء (وبالمناسبة، هو قبيح!).</li><li>يمكن للأشكال الغريبة لملفات التكوين أن تعطل محلل RedWarden وتجعله يشتكي. أسهل نهج للتغلب على هذا هو نسخ <code>example-config.yaml</code> والعمل عليه بدلاً من ذلك.</li></ul>



<h2><a href="https://github.com/mgeeky/RedWarden#oh-my-god-why-is-this-code-such-an-engineerical-piece-of-crap" target="_blank" rel="noopener"></a></h2>



<h2><span class="has-inline-color has-vivid-cyan-blue-color"><strong>يا إلهي، لماذا هذا الكود عبارة عن فوضى هندسية مروعة؟</strong></span></h2>



<p>الكود <em>فوضى كبرى حقاً</em> – أقر بذلك – وهناك سبب صادق لذلك أيضاً: تم تطوير المشروع بنسبة 90٪ أثناء مشاركات الفريق الأحمر الفعلية. كما نعلم جميعاً، تنطوي هذه الأنواع من المشاركات على العديد من الأمور التي يجب القيام بها، مما يترك وقتاً ضئيلاً جداً لتطوير أدوات معقدة بشكل صحيح. ناهيك عن أهمية هذا البرنامج في إعداد المشروع. بدأت الأداة في البداية كسكربت وكيل بسيط مكتوب بلغة Python2، ثم تطورت كوكيل مع إضافات، وتلقّت إضافة <code>malleable_redirector</code> – ومنذ ذلك الحين كنت أحاول بجد الحفاظ على توافق <code>proxy2</code> مع الإصدارات السابقة (يا لي، كنت مثل Microsoft!) مع الإضافات الأخرى التي صنعتها له والالتزام بغرضه الأصلي.</p>



<p>لكن حان الوقت للتخلي عنه، وإعادة تسميته، والبدء في إصلاح جميع الروائح الكريهة في الكود التي تم إدخالها.</p>



<p>مع كل ما قيل، يرجى التعبير عن قدر من التعاطف تجاهي عند رفع المشاكل، أو تقديم طلبات السحب (pull requests)، وحاول المساعدة بدلاً من الحكم! ![🙂](upload://fvZRZhwnha71zzHIWJ27WZYvK3a.png) شكراً!</p>



<h2><a href="https://github.com/mgeeky/RedWarden#todo" target="_blank" rel="noopener"></a></h2>



<h2><strong><span class="has-inline-color has-vivid-cyan-blue-color">قائمة المهام (TODO)</span></strong></h2>



<ul><li>بحث إمكانية استخدام تغذيات الاستخبارات الأمنية (Threat Intelligence feeds) لأغراض خبيثة – مثل الكشف عن موردي الأمن بناءً على عناوين IP</li><li>إضافة دعم لقاعدة بيانات/واجهة برمجة تطبيقات MaxMind GeoIP</li><li>تنفيذ دعم لتوقيعات JA3 في كل من الكشف والحظر والتقليد لتزييف إعدادات nginx/Apache2/مخصصة.</li><li>إضافة منطق تتبع فريد لـ beacons لتقديم مرونة رفض عمليات التجهيز والاتصال حسب تقدير الوكيل</li><li>إدخال قيد وقت اليوم عند تقديم قدرات إعادة التوجيه (<em>الوكيل فقط أثناء ساعات العمل</em>)</li><li>إضافة منطق مصادحة وتفويض الوكيل على CONNECT/relay.</li><li>إضافة إعادة توجيه موجهة لمستخدمي الجوال</li><li>إضافة خيارات التكوين لتحديد رؤوس HTTP مخصصة لحقنها، أو تلك التي يجب إزالتها</li><li>إضافة خيارات التكوين لطلب وجود رؤوس HTTP محددة في الطلبات التي تمر بمعايير ProxyPass.</li><li>واجهة تفاعلية تسمح بكتابة أحرف بسيطة للتحكم في تفصيل تسجيل المخرجات، بشكل مشابه لـ Nmap</li><li>إعادة كتابة منطق محلل ملف التعريف القابل للتغيير باستخدام <a href="https://github.com/Porchetta-Industries/pyMalleableC2" target="_blank" rel="noopener">pyMalleableC2</a>. عندما بدأت في كتابة منطق المحلل الخاص بي لأول مرة، لم يكن هناك مثل هذا الأداة على Github.</li><li>إعادة هيكلة كل قاعدة الكود</li></ul>



<h2><a href="https://github.com/mgeeky/RedWarden#author" target="_blank" rel="noopener"></a></h2>



<h2><strong><span class="has-inline-color has-pale-pink-color">المؤلف</span></strong></h2>



<pre class="wp-block-preformatted">Mariusz B. / mgeeky, '19-'21
<mb@binary-offensive.com></mb@binary-offensive.com></pre>



<hr class="wp-block-separator">



<div class="wp-block-buttons">
<div class="wp-block-button"><a class="wp-block-button__link" href="https://github.com/mgeeky/RedWarden" style="border-radius:6px" target="_blank" rel="noopener"><strong>رابط Github</strong></a></div>



<div class="wp-block-button"><a class="wp-block-button__link" href="https://reconshell.com/best-arduino-books-available-for-developers/" style="border-radius:6px"><strong>أفضل كتب Arduino المتاحة للمطورين</strong></a></div>
</div>



<p></p>

<hr>
<small>هذا موضوع نقاش مصاحب للمقال الأصلي في <a href="https://reconshell.com/redwarden-flexible-cobaltstrike-malleable-redirector/">https://reconshell.com/redwarden-flexible-cobaltstrike-malleable-redirector/</a>. يمكنك بدء النقاش حول هذا الموضوع عن طريق ذكر الموضوع أو الرد هنا.</small>

بعد أسبوع من البحث دون نتيجة، إلا أن صديقي أشار إليّ بعض الدليل الذي يقول “عدم تحميل الصور إلى الخادم” وسيعرض RSS ملخصاً صغيراً للموضوع (وهو ليس خياراً لي)، والحل الآخر عندما أصلح الصورة بعلامة “blank”.. لذا:

<figure class="wp-block-image size-large">![cs|1024x689](upload://liMGLRlV0nW3HZuECbVKnLCrHcE.png)</figure>

يجب أن يصبح

![cs|1024x689](upload://liMGLRlV0nW3HZuECbVKnLCrHcE.png)

ويجب أن يكون هذا في كل الموضوع لإصلاح الصور؛ ما زال أشعر بالدهشة لماذا لا يمكن لـ “discourse” إنشاء إضافة صغيرة إذا لم يكن يريد كسر قواعد الموضوع؛

أيضاً، بعد التعديل على الصور، أصبحت الصور متضررة مرة أخرى دون سبب، وأحتاج إلى إعادة التعديل واختيار “العودة إلى النسخة السابقة” لإصلاح الصورة، وهكذا!!

أعتقد أن هذا الخلل/المشكلة موجود منذ عام 2020، ووعدوا بفعل شيء ما في العام المقبل، “2021”، ونحن الآن في “2022”.. والخلل ما زال غير مُصلح… من فضلك لا تقل إنه غير مهم لأنه يتم مقارنة العمل بـ “wordpress” وهو نظام إدارة المحتوى الأول في العالم.. ويجب على discourse أن يتبعه.

هل يمكنك تقديم توصيتك يا رافائيل، بما أنني شرحت المشكلة…

أيضًا اقتراحك إذا قمت بتعيين مطور لحل هذه المشكلة، هل يجب أن يعمل هذا أم لا؟ وما هي توصيتك للمطور ليتبعها.

إنها في قائمتي للتحقيق في هذا الأسبوع المقبل.

مشكلة صغيرة مع الصور المضمنة في ماركداون التي أراها من إحدى خلاصات RSS التي قمت بتكوينها. جميع العناصر (لا أتذكر أنها لم تكن تواجه هذه المشكلة أبدًا) من هذه الخلاصات تنتهي بصورة ماركداون ![…](…) تظهر كماركداون. على سبيل المثال…

\u003chttps://forum.podcaster.community/t/iheartmedia-partners-with-sounder-to-launch-best-in-class-brand-safety-tools/2004\u003e

تظهر هكذا…

تأتي هذه العناصر من عنوان URL لخلاصة RSS هذه…

\u003chttp://podcasternews.com/feed/\u003e

@f1r4s و @craigconstantine هذا ناتج عن الخطأ الموصوف على أفضل وجه في

الحل البديل لدينا موثق في

على سبيل المثال @f1r4s، إضافة https://reconshell.com/wp-content/uploads/ إلى إعداد الموقع disabled image download domains سيترك المنشور كالتالي: