Fehlerhafte Bilder mit deaktiviertem 'embed truncate'

Hallo,

Ich bekomme kaputte Bilder

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

mit “embed truncate” funktionieren die Bilder; aber mit deaktiviertem “embed truncate” werden sie wie diese alle Bilder kaputt angezeigt..

in den Logs leer.. und Sidekiq hat alles fehlerfrei verarbeitet..

Bitte teilen Sie hier mit:

  • Link zum Artikel, den Sie einbetten möchten

  • Link zum RSS-Feed

  • HTML des bearbeiteten Beitrags oder ein Link zur Instanz, auf der das Thema lebt

Ich vermute, dass Sie auf das Problem stoßen, das hier beschrieben wird: Fix broken images for posts created by the WP Discourse and RSS plugins. Diese Anleitung gibt ein paar Workarounds für das Problem. Eine detaillierte Erklärung des Problems finden Sie in meinem zweiten Beitrag in diesem Thema.

Korrekt @simon, ich versuche das, indem ich “disabled image download domains” aktiviere, aber die Bilder erscheinen dann nicht.

Die Bilder erscheinen nur auf diese Weise:

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

und manuelles Bearbeiten durch Hinzufügen von <p></p> ist kein “funktionierendes Plugin”.

Aber bezüglich “Classic Editor” habe ich das nicht versucht, da es nichts mit WordPress zu tun hat.

Ich hoffe, Sie können uns eine Lösung oder eine vorübergehende Lösung für dieses Problem geben.

Nachdem ich viele lange Themen usw. gelesen hatte, entschied ich mich für das Leerzeichen, um das Bildproblem zu beheben. Das Problem bei diesem Plugin ist jedoch, dass die Bilder auch nach der Bearbeitung und Korrektur verschwinden oder das Thema erneut mit kaputten Bildern durchsucht wird, und ich muss eine Bearbeitung vornehmen „zur Überarbeitung zurückkehren“ …
Es ist wirklich ärgerlich, dass wir die Bilder des Themas nicht reparieren können; auch nachdem wir ein Leerzeichen zum Bild hinzugefügt haben!

Können Sie bitte mitteilen, was von Ihnen verlangt wurde?

Andernfalls ist es sinnlos, sich ohne minimale umsetzbare Informationen zu beschweren.

Ich habe bereits auf das Problem mit den kaputten Bildern hingewiesen, aber niemand hat eine Lösung gefunden, außer einem, der auf dasselbe Problem verwies, ebenfalls ohne Ergebnis.

Link, den ich einbetten möchte:
https://reconshell.com/redwarden-flexible-cobaltstrike-malleable-redirector/

Link zum RSS-Feed
https://reconshell.com/tag/cobaltstrike/feed/

HTML (verarbeitet):


<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 Reverse-Proxy, der Blue Teams, AVs, EDRs und Scanner durch Paketinspektion und Korrelation mit Malleable-Profilen abwehrt</span></strong></p>



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



<p>(zuvor bekannt als <a href="https://github.com/mgeeky/proxy2" target="_blank" rel="noopener">proxy2’s</a> <em>malleable_redirector</em>-Plugin)</p>



<p><strong>Lassen Sie uns die Latte bei der IR-Resilienz von C2-Redirectors höher legen, oder?</strong></p>



<p>Im Red-Teaming-Bereich gab es <a href="https://bluescreenofjeff.com/2016-04-12-combatting-incident-responders-with-apache-mod_rewrite/" target="_blank" rel="noopener">verschiedene</a> <a href="https://posts.specterops.io/automating-apache-mod-rewrite-and-cobalt-strike-malleable-c2-profiles-d45266ca642" target="_blank" rel="noopener">unterschiedliche</a> <a href="https://gist.github.com/curi0usJack/971385e8334e189d93a6cb4671238b10" target="_blank" rel="noopener">großartige</a> Ideen, wie man Incident Responders bekämpft und in die Irre führt, während man gleichzeitig widerstandsfähige C2-Redirector-Netzwerke bereitstellt.</p>



<p>Dieses Werk kombiniert viele dieser großartigen Ideen in einem einzigen, leichtgewichtigen Utility, das Apache2 in seiner Ursprungsidee als einfachen HTTP(S)-Reverse-Proxy nachahmt.</p>



<p>Die Kombination aus dem Verständnis von Malleable C2-Profilen, dem Wissen über Pools mit bösen IP-Adressen und der Flexibilität, neue Inspektions- und Umleitungslogiken einfach hinzuzufügen, hat zu einem listigen Abwehrmittel gegen IR-Inspektionen geführt.</p>



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



<p>Sollte ein ungültiges eingehendes Paket RedWarden erreichen, können Sie es <code>redirect</code> (umleiten), <code>reset</code> (zurücksetzen) oder einfach <code>proxy</code> (weiterleiten)!</p>



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



<h2><strong>Zusammenfassung</strong></h2>



<p>Dieses Programm fungiert als HTTP/HTTPS-Reverse-Proxy mit mehreren Einschränkungen für eingehende C2-HTTP-Anfragen, die festlegen, welche Pakete zum Teamserver weitergeleitet und welche verworfen werden, ähnlich wie die .htaccess-Einschränkungen in Apaches <code>mod_rewrite</code>.</p>



<p><code>RedWarden</code> wurde entwickelt, um das Problem der Umgehung von IR/AV/EDRs/Sandboxes auf der C2-Redirector-Ebene zu lösen. Es soll klassische Apache2 + mod_rewrite-Setups, die zu diesem Zweck verwendet werden, ablösen.</p>



<p><strong>Features:</strong></p>



<ul><li>Malleable C2-Profil-Parser, der eingehende HTTP/S-Anfragen streng gemäß dem Malleable-Vertrag validieren und bei Verstößen abweichende Pakete verwerfen kann (Malleable Profiles 4.0+ mit Varianten abgedeckt)</li><li>Fähigkeit, unerwartete und unerwünschte HTTP-Header zu entfernen/zu reparieren, die von Zwischen-Systemen wie Proxys und Caches (denken Sie an CloudFlare) hinzugefügt wurden, um einem gültigen Malleable-Vertrag zu entsprechen.</li><li>Integrierte, kuratierte massive Blacklist von IPv4-Pools und -Bereichen, die bekanntermaßen mit IT-Sicherheitsanbietern in Verbindung stehen</li><li>Grep-fähige Ausgabelog-Einträge (sowohl im Apache2-Kombinierten-Access-Log-Format als auch im benutzerdefinierten RedWarden-Format), die nützlich sind, um Peer-Konnektivitätsereignisse/-probleme zu verfolgen</li><li>Möglichkeit, die IPv4-Adresse des verbundenen Peers gegen IP-Geolokalisierungs-/Whois-Informationen abzufragen und diese mit vordefinierten regulären Ausdrücken zu vergleichen, um Peers auszuschließen, die sich außerhalb vertrauenswürdiger Organisationen/Länder/Städte etc. verbinden.</li><li>Eingebaute Minderung von Replay-Angriffen durch Protokollierung der MD5-Hashsummen akzeptierter Anfragen in einer lokal gespeicherten SQLite-Datenbank und Verhinderung zuvor akzeptierter Anfragen.</li><li>Ermöglicht die Definition von ProxyPass-Anweisungen, um Anfragen, die bestimmten URLs entsprechen, an andere Hosts weiterzuleiten</li><li>Unterstützung für mehrere Teamservers</li><li>Unterstützung für viele Reverse-Proxying-Hosts/Umleitungsseiten in zufälliger Reihenfolge – was es ermöglicht, den Traffic zu lastverteilern oder vielseitigere Infrastrukturen aufzubauen</li><li>Kann HTTP-Pakete gemäß dem erwarteten Malleable-Vertrag reparieren, falls einige der Header im Verkehr beschädigt wurden</li><li>Schlaflose Nächte beim Troubleshooting von „warum mein Beacon über CloudFlare/CDN/Domain Fronting nicht funktioniert“ sind dank detaillierter verbosierter HTTP(S)-Anfrage-/Antwort-Logs nun vorbei</li></ul>



<p>RedWarden nimmt das Malleable C2-Profil und den <code>hostname:port</code> des Teamservers als Eingabe. Es analysiert dann die bereitgestellten Malleable-Profilabschnitte, um den Vertrag zu verstehen, und leitet nur solche eingehenden Anfragen weiter, die diesem entsprechen, während es andere in die Irre führt.</p>



<p>Abschnitte wie <code>http-stager</code>, <code>http-get</code>, <code>http-post</code> und ihre entsprechenden URIs, Header, Prepend-/Append-Muster, User-Agent werden alle verwendet, um zwischen legitimen Beacon-Anfragen und nicht verwandtem Internet-Rauschen oder IR/AV/EDRs-Aus-Grenzen-Paketen zu unterscheiden.</p>



<p>Das Programm profitiert von den wunderbaren bekannten bösen IP-Bereichen von: curi0usJack und anderen:</p>



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



<p>Die Verwendung einer IP-Adress-Blacklist zusammen mit der Suche nach bekannten bösen Schlüsselwörtern durch Reverse-IP-DNS-Abfragen und HTTP-Header-Inspektion erhöht die Zuverlässigkeit und steigert die Resilienz des Redirectors erheblich gegen unbefugte Peers, die die Infrastruktur des Angreifers untersuchen möchten.</p>



<p>Ungültige Pakete können gemäß drei Strategien umgeleitet werden:</p>



<ul><li><strong>redirect</strong>: Leiten Sie den Peer einfach zu einer anderen Website weiter, z. B. Rick Roll.</li><li><strong>reset</strong>: Beenden Sie die TCP-Verbindung sofort.</li><li><strong>proxy</strong>: Holen Sie sich eine Antwort von einer anderen Website, um eine geklonte/übernommene Website so genau wie möglich nachzuahmen.</li></ul>



<p>Diese Konfiguration wird in der Konfigurationsdatei festgelegt:</p>



<pre class="wp-block-preformatted">#
# Was mit der Anfrage zu tun ist, die nicht den Beacon-, Whitelisting- oder 
# ProxyPass-Inklusivanweisungen entspricht: 
#   - 'redirect' zu einem anderen Host mit (HTTP 301), 
#   - 'reset' einer TCP-Verbindung mit dem verbindenden Client
#   - 'proxy' der Anfrage, agiert als Reverse-Proxy gegen die angegebene action_url 
#       (kann gefährlich sein, wenn der Client etwas abruft, das er nicht sehen sollte!)
#
# Gültige Werte: 'reset', 'redirect', 'proxy'. 
#
# Standard: redirect
#
drop_action: redirect</pre>



<p>Das folgende Beispiel zeigt das Ergebnis von <code>redirect</code> zu <code>https://googole.com</code>:</p>



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



<p>Verwenden Sie es mit Bedacht, bleiben Sie sicher.</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">Anforderungen</span></strong></h3>



<p>Dieses Programm kann nur auf Linux-Systemen ausgeführt werden, da es fork verwendet, um mehrere Prozesse zu starten.</p>



<p>Außerdem wird erwartet, dass der Systembefehl <code>openssl</code> installiert ist, da er zur Generierung von SSL-Zertifikaten verwendet wird.</p>



<p>Schließlich installieren Sie alle Python3 PIP-Anforderungen einfach mit:</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>Nutzung</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">Beispiel-Nutzung</span></h3>



<p>Die minimale <strong>config.yaml</strong>-Konfigurationsdatei von RedWarden könnte Folgendes enthalten:</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>Dann kann das Programm gestartet werden, indem man ihm den Pfad zur Konfigurationsdatei angibt:</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>Die obige Ausgabe enthält eine Zeile, die darauf hinweist, dass eine unbefugte, nicht mit unserem C2-Profil konforme eingehende Anfrage aufgrund einer inkompatiblen User-Agent-String-Präsentation verworfen wurde:</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>Anwendungsfälle</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-Geolokalisierung für Ihre Beacon-Traffic-Ursprungsserver erzwingen</span></h3>



<p>Sie haben Ihr Pre-Phishing und OSINT sehr gut gemacht. Sie wissen jetzt, wo sich Ihre Ziele aufhalten, und haben einige Hinweise darauf, woher der Traffic stammen sollte, oder zumindest, wie man komplett zusätzlichen Traffic erkennt. Wie erzwingt man IP-Geolokalisierung für Beacon-Anfragen auf einem Redirector?</p>



<p>RedWarden kommt zur Hilfe!</p>



<p>Nehmen wir an, Sie möchten nur Traffic akzeptieren, der aus Polen, Europa stammt. Ihre Pre-Phishing/OSINT-Ergebnisse deuten darauf hin, dass:</p>



<ul><li><code>89.64.64.150</code> eine legitime IP eines Ihrer Ziele ist, die aus Polen stammt</li><li><code>59.99.140.76</code> hingegen nicht ist und als reguläres Internet-Rauschen-Paket in Ihre Systeme gelangte.</li></ul>



<p>Sie können RedWardens Utility <code>lib/ipLookupHelper.py</code> verwenden, um IP-Geo-Metadaten über diese beiden Adressen zu sammeln:</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>Das erstere bringt:</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>und das letztere gibt:</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>Jetzt sehen Sie, dass das erstere <code>"country": "Poland"</code> hatte, während das letztere <code>"country": "India"</code> hatte. Mit diesem Wissen sind wir bereit, unsere Einschränkungen in Form eines umfangreichen YAML-Wörterbuchs zu entwerfen:</p>



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



<p>Jeder Eintrag dieses Wörterbuchs akzeptiert einen regulären Ausdruck, der mit den bestimmten IP-Geo-Metadaten der IP-Adresse des eingehenden Peers abgeglichen wird. Wir verwenden drei Einträge in der Eigenschaft <code>country</code>, um Anfragen mit einem der angegebenen Werte zu ermöglichen.</p>



<p>Wenn dies in Ihrer Konfiguration festgelegt ist, können Sie mit dem <code>ipLookupHelper</code>-Utility, das den zweiten Parameter akzeptiert, überprüfen, ob eine andere IP-Adresse den IP-Geolokalisierungs-Diskriminator von RedWarden passieren würde oder nicht:</p>



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



<p>Die allerletzte Zeile sagt Ihnen, ob das Paket blockiert oder akzeptiert würde.</p>



<p>Und das ist alles! Konfigurieren Sie Ihre IP-Geolokalisierungs-Einschränkungen weise und sicher, prüfen Sie die RedWarden-Logs sorgfältig auf IP-Geo-bezogene DROP-Einträge und halten Sie Ihren C2-Traffic schön und ordentlich!</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">Manipulierte Beacon-Anfragen reparieren</span></strong></h3>



<p>Wenn Sie Zwischen-Systeme wie AWS Lambda oder CloudFlare als Domain Fronting / Redirectors verwenden, sind Sie sicherlich auf eine Situation gestoßen, in der einige Ihrer Pakete vom Teamserver nicht akzeptiert werden konnten, da sie vom vereinbarten Malleable-Vertrag abwichen. War es ein manipulierter oder entfernter HTTP-Header, neu angeordnete Cookies oder irgendetwas anderes – ich wette, dass Ihnen das viele Stunden Ihres Lebens gekostet hat.</p>



<p>Um Probleme beim Einrichten von C2-Kanälen und Manipulationen durch Zwischen-Systeme zu bekämpfen, bietet RedWarden die Funktionalität, Beacon-Pakete zu reparieren.</p>



<p>Es tut dies, indem es überprüft, was das Malleable-Profil erwartet, und konfigurierte HTTP-Header gemäß den Anforderungen des Profils auf ihre vereinbarten Werte wiederherstellen kann.</p>



<p>Betrachten Sie folgendes einfaches Profil:</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>Sie sehen diesen <code>Accept-Encoding</code>? Jede Beacon-Anfrage muss mit diesem Header und diesem Wert kommen. Was passiert, wenn Ihr Beacon CloudFlare-Systeme trifft und diese eine Anfrage aussenden, bei der dieser Header entfernt wird oder stattdessen <code>Accept-Encoding: gzip</code> hat? Der Teamserver wird die Anfrage sofort verwerfen.</p>



<p>Indem Sie diesen Header im RedWarden-Konfigurationsabschnitt namens <code>protect_these_headers_from_tampering</code> festlegen, können Sie Ihre Verbindung sichern:</p>



<pre class="wp-block-preformatted">#
# Wenn RedWarden die HTTP-Header der eingehenden Anfrage gemäß der Richtlinie drop_malleable_without_expected_header_value validiert:
#   "[IP: DROP, reason:6] HTTP request did not contain expected header value:"
#
# und feststellt, dass ein Header fehlt oder auf dem Weg überschrieben wurde, wird die Anfrage verworfen. Wir können diese Richtlinie
# jedoch etwas lockern, da es Situationen gibt, in denen Cache-Systeme (wie Cloudflare) unsere Anfragen manipulieren könnten und somit
# Malleable-Verträge brechen. Was wir tun können, ist, eine Liste von Headern anzugeben, die auf ihre in dem bereitgestellten Malleable-Profil definierten Werte zurückgesetzt werden sollen.
#
# Wenn unser Profil also erwartet:
#   header "Accept-Encoding" "gzip, deflate";
#
# aber wir eine Anfrage mit folgendem Header erhalten:
#   Accept-Encoding: gzip
#
# Weil er auf dem Weg von einem der Zwischen-Systeme (wie Web-Proxys oder Caches) manipuliert wurde, können wir
# das erkennen und den Header-Wert wieder auf das setzen, was im Malleable-Profil erwartet wurde.
#
# Um den Accept-Encoding-Header zu schützen, könnte beispielsweise die folgende Konfiguration verwendet werden:
#   protect_these_headers_from_tampering:
#     - Accept-Encoding
#
#
# Standard: <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">Beispielausgaben</span></strong></h3>



<p>Werfen wir einen Blick auf die Ausgabe, die der Proxy erzeugt.</p>



<p>Unter der Option <code>verbose: True</code> wird die Ausführlichkeit maximal auf INFO gesetzt, was akzeptierte von verworfenen Anfragen unterscheidet.</p>



<p>Die Anfrage kann akzeptiert werden, wenn sie allen in der RedWarden-Konfigurationsdatei konfigurierten Kriterien entspricht. Eine solche Situation wird durch einen <code>[ALLOW, ...]</code>-Logeintrag begleitet:</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>Falls die Anfrage eine der von RedWarden für jede Anfrage durchgeführten Prüfungen nicht besteht, wird die entsprechende <code>[DROP, ...]</code>-Zeile ausgegeben, die Informationen über den <strong>Grund</strong> des Verwerfens enthält:</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">Feinabstimmung der Drop-Richtlinien</span></strong></h3>



<p>Es gibt viele Gründe, die dafür sprechen, ob eine Anfrage verworfen werden kann. Jede dieser Prüfungen kann unabhängig voneinander aktiviert und deaktiviert werden, je nach Anforderungen oder im Prozess der Feinabstimmung oder der Korrektur fehlerhafter Entscheidungen:</p>



<p>Ausschnitt aus <code>example-config.yaml</code>:</p>



<pre class="wp-block-preformatted">#
# Feingranulare Richtlinie zum Verwerfen von Anfragen - lässt Sie entscheiden, welche Prüfungen
# Sie durchsetzen und welche Sie überspringen möchten, indem Sie sie auf False setzen
#
# Standard: alle Prüfungen aktiviert
#
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>Standardmäßig werden alle diese Prüfungen durchgesetzt.</p>



<p>Das Aktivieren von <code>debug: True</code> wird Ihren Konsolenpuffer mit vielen Logzeilen überschwemmen, die jeden Schritt beschreiben, den RedWarden in seinem komplexen Entscheidungsprozess unternimmt. Wenn Sie die vollständigen Körper Ihrer Anfragen und Antworten sehen möchten – setzen Sie <code>debug</code> und <code>trace</code> auf true und lassen Sie sich von der Last der Protokollierung begraben!</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">FAQ</span></strong></h2>



<p><strong>– Kann dieses Programm ohne Malleable-Profil ausgeführt werden?</strong></p>



<p>Ja, das kann es. Die Logik zur Anfrageinspektion wird jedoch deaktiviert, der Rest sollte einwandfrei funktionieren: IP-Geolokalisierungs-Erzwingung, Reverse-Lookup-Logik, Liste verbotener IPs usw.</p>



<p><strong>– Kann dieses Programm leicht an andere C2-Frameworks angepasst werden? Wie Mythic, Covenant usw.?</strong></p>



<p>Leicht nein. Mit etwas Aufwand – ja. Wie ich unten beschrieben habe, ist das Tool schlecht geschrieben, was die Anpassung an andere C2s zu einer Qual machen wird. Das ist jedoch mit etwas Zeit und Aufwand absolut machbar.</p>



<p><strong>– Meine Pakete werden verworfen. Warum?</strong></p>



<p>Versuchen Sie, <code>debug: True</code> und <code>trace: True</code> zu aktivieren, um so viele Logs wie möglich zu sammeln. Dann müssen Sie sich die Logs ansehen und prüfen, was vor sich geht. Sehen die Pakete genau so aus, wie Sie es in Ihrem Malleable-Profil erwartet haben? Oder gab es vielleicht eine subtile Manipulation im Netzwerk, die dazu führt, dass RedWarden das Paket verwirft (und es könnte auch den Teamserver dazu veranlassen, es zu verwerfen)?</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">Bekannte Probleme</span></strong></h2>



<ul><li>Es <em>kann</em> eine leichte Überlastung des interaktiven Sleep-Throughputs verursachen</li><li>Die ProxyPass-Verarbeitungslogik ist weit davon entfernt, perfekt zu sein, und ist <em>wirklich</em> buggy (und oh Mann, sie ist hässlich!).</li><li>Seltsame Formen von Konfigurationsdateien können den RedWarden-Parser durcheinanderbringen und dazu führen, dass er sich beschwert. Der einfachste Ansatz, um dies zu überwinden, wäre, <code>example-config.yaml</code> zu kopieren und stattdessen daran zu arbeiten.</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>Mein Gott, warum ist dieser Code ein solch ingenieurtechnischer Haufen Mist?</strong></span></h2>



<p>Der Code ist <em>EIN VERDAMMT GROßER HÖLLISCHER HAUFEN MIST</em> – das gebe ich zu – und dafür gibt es auch einen ehrlichen Grund: Das Projekt wurde zu 90 % während tatsächlicher Red-Team-Engagements entwickelt. Wie wir alle wissen, beinhalten diese Art von Engagements so viele Dinge, dass kaum Zeit für die ordnungsgemäße Entwicklung komplexer Tools bleibt. Ganz zu schweigen von der Kritikalität dieses Programms im Projekt-Setup. Das Tool begann ursprünglich als einfaches Proxy-Skript in Python2, um sich dann zu einem Proxy mit Plugins zu entwickeln, das das <code>malleable_redirector</code>-Plugin erhielt – und seitdem habe ich wirklich hart daran gearbeitet, <code>proxy2</code> abwärtskompatibel zu halten (armes Ich, ich war wie Microsoft!) mit anderen Plugins, die ich dafür gemacht habe, und mich an seinen ursprünglichen Zweck zu halten.</p>



<p>Die Zeit ist jedoch gekommen, es loszulassen, neu zu branden und alle eingeführten schlechten Code-Gerüche zu beheben.</p>



<p>Mit all dem gesagt, bitte drücken Sie ein gewisses Maß an Mitgefühl für mich aus, wenn Sie Issues melden, Pull Requests einreichen, und versuchen Sie zu helfen, statt zu urteilen! ![🙂](upload://fvZRZhwnha71zzHIWJ27WZYvK3a.png) Danke!</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>Untersuchen Sie die Möglichkeit, Threat-Intelligence-Feeds für böswartige Zwecke zu verwenden – wie zum Beispiel das Erkennen von Sicherheitsanbietern basierend auf IPs</li><li>Unterstützung für die MaxMind GeoIP-Datenbank/API hinzufügen</li><li>Implementieren Sie die Unterstützung für JA3-Signaturen sowohl in der Erkennung &amp; Blockierung als auch in der Impersonation, um nginx/Apache2/benutzerdefinierte Setups zu fälschen.</li><li>Fügen Sie eine eindeutige Beacon-Tracking-Logik hinzu, um Flexibilität bei der Verweigerung von Staging- und Kommunikationsprozessen nach eigenem Ermessen des Proxys zu bieten</li><li>Führen Sie eine Tageszeit-Einschränkung ein, wenn Sie Umleitungsfunktionen anbieten (<em>proxy nur während der Bürozeiten</em>)</li><li>Fügen Sie Proxy-Authentifizierungs- und Autorisierungslogik für CONNECT/Relay hinzu.</li><li>Fügen Sie gezielte Umleitungen für Mobile-Benutzer hinzu</li><li>Fügen Sie Konfigurationsoptionen hinzu, um benutzerdefinierte HTTP-Header zu definieren, die injiziert oder entfernt werden sollen</li><li>Fügen Sie Konfigurationsoptionen hinzu, um bestimmte HTTP-Header in Anfragen zu erzwingen, die die ProxyPass-Kriterien erfüllen.</li><li>Interaktive Schnittstelle, die das Tippen einfacher Zeichen ermöglicht, um die Ausführlichkeit der Ausgabe-Protokollierung zu steuern, ähnlich wie bei Nmap’s</li><li>Schreiben Sie die Malleable-Profil-Parser-Logik neu zu <a href="https://github.com/Porchetta-Industries/pyMalleableC2" target="_blank" rel="noopener">pyMalleableC2</a>. Als ich anfing, meine eigene Parser-Logik zu coden, gab es kein solches Toolkit auf Github.</li><li>Refaktorisieren Sie die gesamte Codebasis</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">Autor</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-Link</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>Beste Arduino-Bücher für Entwickler</strong></a></div>
</div>



<p></p>

<hr>
<small>Dies ist ein begleitendes Diskussionsthema für den Originalbeitrag unter <a href="https://reconshell.com/redwarden-flexible-cobaltstrike-malleable-redirector/">https://reconshell.com/redwarden-flexible-cobaltstrike-malleable-redirector/</a>. Sie können die Diskussion zu diesem Thema beginnen, indem Sie das Thema erwähnen oder hier antworten.</small>

Nach einer Woche der Suche und keinem Ergebnis, außer dass unser Freund auf mich einen Leitfaden mit „keine Bilder auf den Server herunterladen“ verwies und RSS einen kleinen Abriss des Themas anzeigen wird (was nicht meine Wahl ist), und die andere Lösung, wenn ich das Bild mit einem „leeren“ Tab repariere.. also:

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

sollte gehen zu

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

und dies sollte für das gesamte Thema gelten, um die Bilder zu reparieren; was ich immer noch wundert, warum “discourse” kein kleines Plugin machen kann, wenn sie die Themenregeln nicht brechen wollten;

auch der mehr Konflikt und überhaupt nicht komfortabel nach dem Bearbeiten der Fotos, die Bilder wieder kaputt gegangen ohne Grund, und ich muss neu bearbeiten und wählen, um “zur Revision zurückkehren”, um das Bild zu reparieren, und so weiter!!

Ich glaube, dieser Bug/dieses Problem existiert seit 2020, und sie haben versprochen, nächstes Jahr, “2021”, etwas zu tun, und wir sind jetzt in “2022”.. und der Bug ist immer noch nicht behoben… bitte sagen Sie nicht, dass es nicht wichtig ist, da es mit der Arbeit von “wordpress” verglichen wird, was das 1. CMS der Welt ist.. und discourse sollte es folgen.

Können Sie mir Ihre Empfehlung geben, Rafeal, da ich das Problem erkläre …

Auch Ihr Vorschlag, ob ich einen Entwickler einstellen soll, um dieses Problem zu beheben, sollte dies funktionieren oder nicht? Und was ist Ihre Empfehlung für den Entwickler, dem er folgen soll.

Es steht auf meiner Liste, das nächste Woche zu untersuchen.

Kleines Problem mit den Markdown-eingebetteten Bildern, die ich aus einem meiner konfigurierten RSS-Feeds sehe. Alle (ich kann mich nicht erinnern, dass es jemals nicht dieses Problem hatte) Elemente aus diesem Feed enden mit einem Markdown ![…](…) Bild, das als Markdown angezeigt wird. Zum Beispiel…

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

wird so angezeigt…

Diese Elemente stammen von dieser RSS-Feed-URL…

http://podcasternews.com/feed/

@f1r4s und @craigconstantine dies wird durch den Fehler verursacht, der am besten unter

beschrieben wird.

Die Problemumgehung, die wir haben, ist dokumentiert unter

Zum Beispiel, @f1r4s, wenn Sie https://reconshell.com/wp-content/uploads/ zur Site-Einstellung disabled image download domains hinzufügen, bleibt der Beitrag wie folgt: