禁用 'embed truncate' 时图片损坏

你好,

我遇到了图片显示错误。

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

启用“嵌入截断”时图片可以正常显示;但禁用“嵌入截断”时,所有图片都会像这样显示为损坏:

日志中为空… Sidekiq 中所有内容都已成功处理。

请在此处分享:

  • 您尝试嵌入文章的链接
  • RSS Feed 的链接
  • 已发布的帖子的 HTML 或该主题所在帖子的链接

我怀疑你遇到了这里概述的问题:https://meta.discourse.org/t/fix-broken-images-for-posts-created-by-the-wp-discourse-and-rss-plugins/160773。该指南提供了该问题的几种解决方法。在该主题的第二篇帖子中对此问题有详细的解释。

Correct @simon 我尝试通过启用“禁用图片下载域名”来解决,但图片那时不会出现。

图片只能这样显示

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

手动编辑添加 <p></p> 不是一个“有效的插件”。

但关于“经典编辑器”,我没有尝试过,因为它与 WordPress 无关。

希望你能给我们一些修复或临时修复此问题的方法。

阅读了许多长篇主题等之后,我决定使用空白来修复图像问题;但这个插件的问题是,即使在我编辑并修复了图片之后,图片还是消失了“或者”主题再次被抓取,图片损坏,我需要进行编辑“恢复到修订版本”……

我们无法让主题图片不损坏,即使在图片中添加空白,也确实很烦人!

您能分享一下别人向您提出的要求吗?

否则,在没有最少可操作信息的情况下抱怨是没有意义的。

我之前已经指出过图片损坏的问题,但除了一个提到相同问题且无果的引用外,其他都没有结果。

我尝试嵌入的链接:
https://reconshell.com/redwarden-flexible-cobaltstrike-malleable-redirector/

RSS 源链接
https://reconshell.com/tag/cobaltstrike/feed/

HTML 渲染后:


<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 反向代理,通过数据包检查和可变形配置文件相关性来抵御蓝队、杀毒软件、EDR 和扫描器</span></strong></p>



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



<p>(以前被称为 <a href="https://github.com/mgeeky/proxy2" target="_blank" rel="noopener">proxy2 的</a> <em>malleable_redirector</em> 插件)</p>



<p><strong>让我们提高 C2 重定向器在事件响应(IR)中的弹性,好吗?</strong></p>



<p>红队业务已经看到了许多<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>想法,用于对抗事件响应人员并误导他们,同时提供具有抵抗力的 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,哪些丢弃,类似于 Apache2 的 <code>mod_rewrite</code> 中强制执行的 .htaccess 文件限制。</p>



<p><code>RedWarden</code> 旨在解决 C2 重定向器层上对 IR/AV/EDR/沙箱的规避问题。它旨在取代用于此目的的经典 Apache2 + mod_rewrite 设置。</p>



<p><strong>功能:</strong></p>



<ul><li>可变形 C2 配置文件解析器,能够根据可变形合同严格验证入站 HTTP/S 请求,并在违反时丢弃违规数据包(涵盖带有变体的可变形配置文件 4.0+)</li><li>能够过滤/修复由中间系统(如代理和缓存,例如 CloudFlare)添加的意外和不需要的 HTTP 头,以符合有效的可变形合同。</li><li>集成精心策划的大量 IPv4 池和范围黑名单,已知与 IT 安全供应商相关联</li><li>可 grep 的输出日志条目(采用 Apache2 组合访问日志和自定义 RedWarden 格式),有助于跟踪对等连接事件/问题</li><li>能够查询连接对等方的 IPv4 地址与 IP 地理定位/whois 信息,并与预定义的正则表达式进行对比,以排除来自受信任组织/国家/城市之外的对等方连接。</li><li>内置重放攻击缓解措施,通过将已接受请求的 MD5 哈希值记录到本地存储的 SQLite 数据库中,并防止之前已接受的请求。</li><li>允许定义 ProxyPass 语句,将匹配特定 URL 的请求传递到其他主机</li><li>支持多个 Teamserver</li><li>支持许多反向代理主机/重定向站点,以随机顺序提供——这使得可以负载均衡流量或构建更多样化的基础设施</li><li>如果某些头在传输过程中损坏,可以根据预期的可变形合同修复 HTTP 数据包</li><li>感谢详细的 HTTP(S) 请求/响应日志,那些为排查“为什么我的 Beacon 在 CloudFlare/CDN/域名前置上不起作用”而度过的不眠之夜现在结束了</li></ul>



<p>RedWarden 在输入端接收可变形 C2 配置文件和 teamserver 的 <code>hostname:port</code>。然后它解析提供的可变形配置文件部分以理解合同,并仅传递满足该合同的入站请求,同时误导其他请求。</p>



<p>诸如 <code>http-stager</code>、<code>http-get</code>、<code>http-post</code> 及其对应的 uris、headers、prepend/append 模式、User-Agent 等部分,都用于区分合法的 beacon 请求与无关的互联网噪声或 IR/AV/EDR 的越界数据包。</p>



<p>该程序受益于来自 curi0usJack 和其他人的已知不良 IP 范围:</p>



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



<p>使用 IP 地址黑名单以及通过反向 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>RedWarden 的最小 <strong>config.yaml</strong> 配置文件可以包含:</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">对 Beacon 流量发起者施加 IP 地理定位</span></h3>



<p>你的预钓鱼和 OSINT 做得非常好。你现在知道你的目标住在哪里,并且有一些线索表明流量应该从哪里发起,或者至少如何检测完全辅助的流量。如何在重定向器上对 Beacon 请求施加 IP 地理定位?</p>



<p>RedWarden 来帮忙!</p>



<p>假设你只想接受来自波兰、欧洲的流量。你的预钓鱼/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 地址的 IP 地理元数据。我们在 <code>country</code> 属性中使用三个条目来允许具有指定值之一的请求。</p>



<p>在配置中设置后,你可以使用接受第二个参数的 <code>ipLookupHelper</code> 实用工具来验证另一个 IP 地址是否会通过 RedWarden 的 IP 地理定位鉴别器:</p>



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



<p>最后一行告诉你数据包是否会被阻止或接受。</p>



<p>就是这样!明智且安全地配置你的 IP 地理定位约束,仔细检查 RedWarden 日志中任何与 IP 地理相关的 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 等中间系统作为你的域名前置/重定向器,你肯定遇到过一些数据包无法被 Teamserver 接受的情况,因为它们偏离了商定的可变形合同。是被篡改或删除的 HTTP 头,还是重新排序的 cookie,或者其他什么——我敢打赌这浪费了你大量的时间。</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> 会发生什么?Teamserver 会立即丢弃该请求。</p>



<p>通过在名为 <code>protect_these_headers_from_tampering</code> 的 RedWarden 配置部分中设置此头,你可以保护你的连接。:</p>



<pre class="wp-block-preformatted">#
# 如果 RedWarden 根据策略 drop_malleable_without_expected_header_value 验证入站请求的 HTTP 头:
#   "[IP: DROP, reason:6] HTTP request did not contain expected header value:"
#
# 并感觉到某些头缺失或在传输过程中被覆盖,请求将被丢弃。我们可以稍微放宽此策略
# 因为存在缓存系统(如 Cloudflare)可能篡改我们请求从而破坏可变形合同的情况。我们可以做的是指定一个头列表,这些头应被覆盖回其在提供的可变形配置文件中定义的值。
#
# 例如,如果我们的配置文件期望:
#   header "Accept-Encoding" "gzip, deflate";
#
# 但我们收到一个具有以下头设置的请求:
#   Accept-Encoding: gzip
#
# 因为它在传输过程中被某些中间系统(如 Web 代理或缓存)篡改,我们可以
# 检测到这一点并将该头的值设置回可变形配置文件中期望的值。
#
# 为了保护 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> 将用大量描述 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>– 此程序可以在没有可变形配置文件的情况下运行吗?</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 丢弃数据包(这也可能导致 Teamserver 丢弃它)?</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>会对交互式睡眠吞吐量增加轻微开销</li><li>ProxyPass 处理逻辑远非完美,并且<em>真的</em>有很多 bug(而且天哪,它很丑陋!)。</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> 向后兼容(可怜的我,我就像微软!)与我为其制作的其他插件,并坚持其原始目的。</p>



<p>然而,现在是时候放手、重新品牌并开始修复所有引入的不良代码气味了。</p>



<p>综上所述,在提出问题、提交拉取请求时,请对我表达一定程度的同情,并尝试帮助而不是评判! ![🙂](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">待办事项</span></strong></h2>



<ul><li>研究使用威胁情报源进行恶意目的的可能性——例如基于 IP 检测安全供应商</li><li>添加对 MaxMind GeoIP 数据库/API 的支持</li><li>在检测和阻止以及模仿以伪造 nginx/Apache2/自定义设置中实现对 JA3 签名的支持。</li><li>添加一些独特的信标跟踪逻辑,以提供在代理自行决定时拒绝分阶段和通信过程的灵活性</li><li>在提供重定向功能时引入时间约束(<em>仅在工作时间代理</em>)</li><li>在 CONNECT/relay 上添加代理身份验证和授权逻辑。</li><li>添加针对移动用户的定向重定向</li><li>添加配置选项以定义要注入的自定义 HTTP 头,或要删除的头</li><li>添加配置选项以要求通过 ProxyPass 标准的请求中存在特定的 HTTP 头。</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 将显示主题的小摘要(这不是我的选择),以及当我用“空白”标签修复图片时的其他解决方案。所以:

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

应该变成

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

并且这应该应用于整个主题以修复图片;我仍然想知道为什么“discourse”不能制作一个小插件,如果他们不想破坏主题规则;

此外,在编辑照片后,冲突更多且完全不舒服,图片再次无缘无故损坏,我需要重新编辑并选择“恢复到修订版”来修复图片,以此类推!!

我相信这个 bug/问题自 2020 年以来就存在,他们承诺明年,“2021”年做点什么,我们现在在“2022”年……而且 bug 仍然没有修复……请不要说它不重要,因为它与世界第一的 CMS“wordpress”的工作相比……discourse 应该跟随它。

拉斐尔,既然我已经解释了问题,你能给我你的建议吗……

另外,如果你雇佣一个开发者来解决这个问题,你有什么建议?这个方案是否可行?你有什么建议给开发者遵循?

这在我下周的待办事项中。

我从配置的 RSS Feed 中看到了一些 markdown 嵌入式图片的小问题。该 Feed 中的所有(我不记得它有过其他问题)条目最终都会显示为 markdown ![…](…) 格式的图片。例如…

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

显示效果如下…

这些条目来自这个 RSS Feed URL…

http://podcasternews.com/feed/

@f1r4s@craigconstantine 这是由以下链接中描述的 bug 引起的:

我们目前采取的变通方法记录在:

例如 @f1r4s,将 https://reconshell.com/wp-content/uploads/ 添加到站点设置 disabled image download domains 中,帖子将显示为: