He propuesto el tema de las imágenes rotas, pero nadie dio resultados, excepto uno que hacía referencia al mismo problema sin solución.
Enlace que intento incrustar:
https://reconshell.com/redwarden-flexible-cobaltstrike-malleable-redirector/
Enlace al feed RSS
https://reconshell.com/tag/cobaltstrike/feed/
HTML procesado:
<figure class="wp-block-image size-large"></figure>
<p><strong><span class="has-inline-color has-vivid-purple-color">Proxy inverso C2 de Cobalt Strike que repele a los equipos azules, antivirus, EDR y escáneres mediante inspección de paquetes y correlación de perfiles maleables</span></strong></p>
<hr class="wp-block-separator">
<p>(anteriormente conocido como el plugin <em>malleable_redirector</em> de <a href="https://github.com/mgeeky/proxy2" target="_blank" rel="noopener">proxy2</a>)</p>
<p><strong>¿Subamos la barra en la resiliencia a la respuesta de incidentes (IR) de los redireccionadores C2, no?</strong></p>
<p>El negocio del Red Teaming ha visto <a href="https://bluescreenofjeff.com/2016-04-12-combatting-incident-responders-with-apache-mod_rewrite/" target="_blank" rel="noopener">varias</a> <a href="https://posts.specterops.io/automating-apache-mod-rewrite-and-cobalt-strike-malleable-c2-profiles-d45266ca642" target="_blank" rel="noopener">diferentes</a> <a href="https://gist.github.com/curi0usJack/971385e8334e189d93a6cb4671238b10" target="_blank" rel="noopener">geniales</a> ideas sobre cómo combatir a los respondedores de incidentes y desviarlos, mientras se ofrecen al mismo tiempo redes de redireccionadores C2 resistentes.</p>
<p>Este trabajo combina muchas de esas grandes ideas en una sola utilidad ligera, imitando a Apache2 en sus raíces como un simple proxy inverso HTTP(S).</p>
<p>La combinación de la comprensión de los perfiles C2 maleables, el conocimiento de pools de direcciones IP maliciosas y la flexibilidad de agregar fácilmente nueva lógica de inspección y desvío, ha resultado en un repelente astuto para las inspecciones de IR.</p>
<figure class="wp-block-image size-large"></figure>
<p>Si algún paquete entrante inválido llega a RedWarden, puedes <code>redirigir</code>, <code>resetear</code> o simplemente <code>proxyar</code> (reenviar) el tráfico.</p>
<h2><a href="https://github.com/mgeeky/RedWarden#abstract" target="_blank" rel="noopener"></a></h2>
<h2><strong>Resumen</strong></h2>
<p>Este programa actúa como un proxy inverso HTTP/HTTPS con varias restricciones impuestas sobre las solicitudes HTTP entrantes de C2, seleccionando qué paquetes dirigir al Teamserver y cuáles descartar, de manera similar a las restricciones del archivo .htaccess exigidas en <code>mod_rewrite</code> de Apache2.</p>
<p><code>RedWarden</code> fue creado para resolver el problema de eludir IR/AV/EDR/Sandboxes en la capa de redireccionador C2. Está destinado a suplantar a los clásicos setups de Apache2 + mod_rewrite utilizados para ese propósito.</p>
<p><strong>Características:</strong></p>
<ul><li>Analizador de perfiles C2 maleables capaz de validar solicitudes HTTP/S entrantes estrictamente según el contrato maleable y descartar paquetes que violen dicho contrato (cubriendo variantes de Perfiles Maleables 4.0+)</li><li>Capacidad de desfiltrar/reparar encabezados HTTP inesperados e indeseables agregados por sistemas intermedios como proxies y cachés (piensa en CloudFlare) para cumplir con un contrato Maleable válido.</li><li>Lista negra curada e integrada masiva de pools y rangos IPv4 conocidos por estar asociados con proveedores de seguridad TI</li><li>Entradas de registro de salida compatibles con grep (tanto en formato de registro de acceso combinado de Apache2 como en formatos personalizados de RedWarden) útiles para rastrear eventos/problemas de conectividad de pares</li><li>Capacidad de consultar la dirección IPv4 del par conectado contra información de Geolocalización/whois de IP y confrontar eso con expresiones regulares predefinidas para excluir pares que se conecten fuera de organizaciones/países/ciudades de confianza, etc.</li><li>Mitigación integrada de ataques de repetición (Replay) aplicada registrando las sumas MD5 de las solicitudes aceptadas en una base de datos SQLite almacenada localmente y evitando solicitudes previamente aceptadas.</li><li>Permite definir declaraciones ProxyPass para pasar solicitudes que coincidan con una URL específica a otros Hosts</li><li>Soporte para múltiples Teamservers</li><li>Soporte para muchos Hosts/redirecciones de proxy inverso que se entregan en orden aleatorio, lo que permite equilibrar la carga de tráfico o construir infraestructuras más versátiles</li><li>Puede reparar paquetes HTTP según el contrato maleable esperado en caso de que algunos de los encabezados se hayan corrompido en el tráfico</li><li>Las noches sin dormir dedicadas a solucionar problemas de "por qué mi Beacon no funciona sobre CloudFlare/CDN/Domain Fronting" han terminado gracias a registros detallados y verbosos de solicitudes/respuestas HTTP(S)</li></ul>
<p>RedWarden toma el perfil C2 Maleable y el <code>hostname:port</code> del teamserver como entrada. Luego analiza las secciones del perfil maleable proporcionado para entender el contrato y dejar pasar solo aquellas solicitudes entrantes que lo satisfagan, mientras desvía a las demás.</p>
<p>Secciones como <code>http-stager</code>, <code>http-get</code>, <code>http-post</code> y sus uris, encabezados, patrones prepend/append y User-Agent correspondientes se utilizan para distinguir entre la solicitud legítima de un beacon y el ruido de Internet no relacionado o paquetes fuera de rango de IR/AV/EDR.</p>
<p>El programa se beneficia de los maravillosos rangos de IP maliciosas conocidas provenientes de: curi0usJack y otros:</p>
<pre class="wp-block-preformatted">https://gist.github.com/curi0usJack/971385e8334e189d93a6cb4671238b10</pre>
<p>El uso de listas negras de direcciones IP junto con la búsqueda de palabras clave maliciosas a través de consultas DNS Reverse-IP y la inspección de encabezados HTTP, aumenta considerablemente la fiabilidad y resiliencia del redireccionador frente a pares no autorizados que deseen examinar las infraestructuras del atacante.</p>
<p>Los paquetes inválidos pueden desviarse según tres estrategias:</p>
<ul><li><strong>redirect</strong>: Simplemente redirige al par a otros sitios web, como Rick Roll.</li><li><strong>reset</strong>: Mata la conexión TCP de inmediato.</li><li><strong>proxy</strong>: Obtiene una respuesta de otro sitio web, para imitar lo más cerca posible un sitio web clonado/secuestrado.</li></ul>
<p>Esta configuración se exige en el archivo de configuración:</p>
<pre class="wp-block-preformatted">#
# Qué hacer con la solicitud que no cumple con Beacon, whitelisting o
# declaraciones inclusivas de ProxyPass:
# - 'redirigir' a otro host con (HTTP 301),
# - 'resetear' una conexión TCP con el cliente conectado
# - 'proxyar' la solicitud, actuando como proxy inverso contra action_url especificado
# (¡puede ser peligroso si el cliente obtiene algo que no debería ver!)
#
# Valores válidos: 'reset', 'redirect', 'proxy'.
#
# Predeterminado: redirect
#
drop_action: redirect</pre>
<p>El ejemplo a continuación muestra el resultado de <code>redirect</code> a <code>https://googole.com</code>:</p>
<figure class="wp-block-image size-large"></figure>
<p>Úsalo con sabiduría, mantente a salvo.</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">Requisitos</span></strong></h3>
<p>Este programa solo puede ejecutarse en sistemas Linux, ya que utiliza fork para generar múltiples procesos.</p>
<p>También, se espera que el comando del sistema <code>openssl</code> esté instalado, ya que se utiliza para generar certificados SSL.</p>
<p>Finalmente, instala todos los requisitos de Python3 PIP fácilmente con:</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>Uso</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">Ejemplo de uso</span></h3>
<p>El archivo de configuración mínimo <strong>config.yaml</strong> de RedWarden podría contener:</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>Luego, el programa puede iniciarse proporcionándole la ruta al archivo de configuración:</p>
<pre class="wp-block-preformatted">bash$ sudo python3 RedWarden.py -c config.yaml
[INFO] 19:21:42: Cargando 1 plugin...
[INFO] 19:21:42: El plugin "malleable_redirector" ha sido instalado.
[INFO] 19:21:42: Preparando certificados y claves SSL para la interceptación de tráfico https...
[INFO] 19:21:42: Usando archivo de clave CA proporcionado: ca-cert/ca.key
[INFO] 19:21:42: Usando archivo de certificado CA proporcionado: ca-cert/ca.crt
[INFO] 19:21:42: Usando clave de certificado proporcionada: ca-cert/cert.key
[INFO] 19:21:42: Sirviendo proxy http en: 0.0.0.0, puerto: 80...
[INFO] 19:21:42: Sirviendo proxy https en: 0.0.0.0, puerto: 443...
[INFO] 19:21:42: [SOLICITUD] GET /jquery-3.3.1.min.js
[INFO] 19:21:42: == Solicitud http-get maleable válida entrante.
[INFO] 19:21:42: El plugin redirigió la solicitud desde [code.jquery.com] a [1.2.3.4:8080]
[INFO] 19:21:42: [RESPUESTA] HTTP 200 OK, longitud: 5543
[INFO] 19:21:45: [SOLICITUD] GET /jquery-3.3.1.min.js
[INFO] 19:21:45: == Solicitud http-get maleable válida entrante.
[INFO] 19:21:45: El plugin redirigió la solicitud desde [code.jquery.com] a [1.2.3.4:8080]
[INFO] 19:21:45: [RESPUESTA] HTTP 200 OK, longitud: 5543
[INFO] 19:21:46: [SOLICITUD] GET /
[...]
[ERROR] 19:24:46: [DESCARTADO, razón:1] El User-Agent entrante difiere del definido en el perfil C2.
[...]
[INFO] 19:24:46: [RESPUESTA] HTTP 301 Moved Permanently, longitud: 212
[INFO] 19:24:48: [SOLICITUD] GET /jquery-3.3.1.min.js
[INFO] 19:24:48: == Solicitud http-get maleable válida entrante.
[INFO] 19:24:48: El plugin redirigió la solicitud desde [code.jquery.com] a [1.2.3.4:8080]
[...]</pre>
<p>La salida anterior contiene una línea que indica que hubo una solicitud entrante no autorizada, no compatible con nuestro perfil C2, la cual fue descartada debido a una cadena User-Agent incompatible:</p>
<pre class="wp-block-code"><code> [...]
[DESCARTADO, razón:1] El User-Agent entrante difiere del definido en el perfil C2.
[...]
</code></pre>
<h2><a href="https://github.com/mgeeky/RedWarden#use-cases" target="_blank" rel="noopener"></a></h2>
<h2><strong>Casos de uso</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">Imponer Geolocalización IP a los originadores de tráfico de tu Beacon</span></h3>
<p>Has hecho muy bien tu Pre-Phishing y OSINT. Ahora sabes dónde viven tus objetivos y tienes algunas pistas sobre de dónde debería provenir el tráfico, o al menos cómo detectar tráfico completamente auxiliar. ¿Cómo imponer Geolocalización IP a las solicitudes de Beacon en un redireccionador?</p>
<p>¡RedWarden acude en ayuda!</p>
<p>Digamos que solo quieres aceptar tráfico que provenga de Polonia, Europa. Tus resultados de Pre-Phishing/OSINT indican que:</p>
<ul><li><code>89.64.64.150</code> es una IP legítima de uno de tus objetivos, proveniente de Polonia</li><li><code>59.99.140.76</code> mientras que esta no lo es y llegó a tus sistemas como un paquete de ruido de Internet regular.</li></ul>
<p>Puedes usar la utilidad <code>lib/ipLookupHelper.py</code> de RedWarden para recopilar metadatos de Geo IP sobre estas dos direcciones:</p>
<pre class="wp-block-preformatted">bash$ python3 ipLookupHelper.py
Uso: ./ipLookupHelper.py <ipaddress> [malleable-redirector-config]
Usa esta pequeña utilidad para recopilar detalles de Búsqueda IP en la dirección IPv4 de tu objetivo y verificar si
tu sección 'ip_geolocation_requirements' del archivo proxy2 malleable-redirector-config.yaml coincidiría con esa
dirección IP. Si no se da el segundo parámetro, no </ipaddress></pre>
<p>El primero trae:</p>
<pre class="wp-block-preformatted">bash$ python3 ipLookupHelper.py 89.64.64.150
[dbg] Se usarán los siguientes proveedores de Búsqueda IP: ['ip_api_com', 'ipapi_co']
[.] Búsqueda de: 89.64.64.150
[dbg] Llamando al proveedor de Búsqueda IP: ipapi_co
[dbg] Llamando al proveedor de Búsqueda IP: ip_api_com
[dbg] Nueva entrada de búsqueda IP en caché: 89.64.64.150
[.] Salida:
{
"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>y el segundo da:</p>
<pre class="wp-block-preformatted">bash$ python3 ipLookupHelper.py 59.99.140.76
[dbg] Se usarán los siguientes proveedores de Búsqueda IP: ['ip_api_com', 'ipapi_co']
[dbg] Leídas 1 entradas en caché desde el archivo.
[.] Búsqueda de: 59.99.140.76
[dbg] Llamando al proveedor de Búsqueda IP: ip_api_com
[dbg] Nueva entrada de búsqueda IP en caché: 59.99.140.76
[.] Salida:
{
"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>Ahora ves que el primero tenía <code>"country": "Poland"</code> mientras que el segundo <code>"country": "India"</code>. Con ese conocimiento, estamos listos para diseñar nuestras restricciones en forma de un diccionario YAML robusto:</p>
<pre class="wp-block-preformatted">ip_geolocation_requirements:
organization:
continent:
continent_code:
country:
- Poland
- PL
- Polska
country_code:
city:
timezone:</pre>
<p>Cada una de las entradas de ese diccionario acepta una expresión regular para coincidir con los metadatos de Geo IP determinados de la dirección IP del par entrante. Usamos tres entradas en la propiedad <code>country</code> para permitir solicitudes que tengan uno de los valores especificados.</p>
<p>Con eso configurado, puedes verificar si otra dirección IP pasaría o no por el discriminador de Geolocalización IP de RedWarden con la utilidad <code>ipLookupHelper</code> aceptando un segundo parámetro:</p>
<figure class="wp-block-image size-large"></figure>
<p>La última línea te dice si el paquete sería bloqueado o aceptado.</p>
<p>¡Y eso es todo! Configura tus restricciones de Geolocalización IP con sabiduría y seguridad, inspecciona cuidadosamente los registros de RedWarden en busca de cualquier entrada de DESCARTE relacionada con Geo IP y mantén tu tráfico C2 limpio y ordenado.</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">Reparar solicitudes de Beacon alteradas</span></strong></h3>
<p>Si usas sistemas intermedios como AWS Lambda o CloudFlare como tus redireccionadores / Domain Fronting, seguramente te has encontrado con una situación donde algunos de tus paquetes no podían ser aceptados por el Teamserver porque se desviaban del contrato maleable acordado. Fue un encabezado HTTP alterado o eliminado, cookies reordenadas o cualquier otra cosa – apuesto a que eso te consumió muchas horas de vida.</p>
<p>Para combatir los problemas del proceso de configuración de canales C2 y las alteraciones de los sistemas intermedios, RedWarden ofrece funcionalidad para reparar paquetes de Beacon.</p>
<p>Lo hace verificando lo que el Perfil Maleable espera que sea el paquete y puede restaurar los encabezados HTTP configurados a sus valores acordados según los requisitos del perfil.</p>
<p>Considera el siguiente perfil simple:</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>¿Ves este <code>Accept-Encoding</code>? Cada solicitud de Beacon debe llegar con ese Encabezado y ese valor. ¿Qué sucede si tu Beacon golpea los sistemas de CloudFlare y emiten una solicitud que será despojada de ese Encabezado o tendrá <code>Accept-Encoding: gzip</code> en su lugar? El Teamserver descartará la solicitud al instante.</p>
<p>Al establecer este encabezado en la sección de configuración de RedWarden llamada <code>protect_these_headers_from_tampering</code> puedes salvar tu conexión.:</p>
<pre class="wp-block-preformatted">#
# Si RedWarden valida los encabezados HTTP de la solicitud entrante, según la política drop_malleable_without_expected_header_value:
# "[IP: DESCARTADO, razón:6] La solicitud HTTP no contenía el valor de encabezado esperado:"
#
# y detecta que falta algún encabezado o fue sobrescrito en la red, la solicitud será descartada. Podemos relajar un poco esta política,
# sin embargo, ya que hay situaciones en las que los sistemas de caché (como Cloudflare) podrían alterar nuestras solicitudes,
# rompiendo así los contratos Maleables. Lo que podemos hacer es especificar una lista de encabezados que deberían ser sobrescritos de vuelta a sus valores
# definidos en el Perfil Maleable proporcionado.
#
# Así, por ejemplo, si nuestro perfil espera:
# header "Accept-Encoding" "gzip, deflate";
#
# pero recibimos una solicitud con el siguiente encabezado establecido en su lugar:
# Accept-Encoding: gzip
#
# Debido a que fue alterado en la red por algunos de los sistemas intermedios (como proxies web o cachés), podemos
# detectar eso y establecer el valor de ese encabezado de vuelta a lo que se esperaba en el perfil Maleable.
#
# Para proteger el encabezado Accept-Encoding, como ejemplo, se podría usar la siguiente configuración:
# protect_these_headers_from_tampering:
# - Accept-Encoding
#
#
# Predeterminado: <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">Salidas de ejemplo</span></strong></h3>
<p>Echemos un vistazo a la salida que produce el proxy.</p>
<p>Bajo la opción <code>verbose: True</code>, la verbosidad se establecerá en INFO como máximo, distinguiendo las solicitudes aceptadas de las descartadas.</p>
<p>La solicitud puede ser aceptada si cumple con todos los criterios configurados en el archivo de configuración de RedWarden. Tal situación se seguirá con una entrada de registro <code>[ALLOW, ...]</code> (PERMITIDO):</p>
<pre class="wp-block-preformatted">[INFO] 2021-04-24/17:30:48: [SOLICITUD] GET /js/scripts.js
[INFO] 2021-04-24/17:30:48: == Solicitud http-get maleable válida (variante: default) entrante.
[INFO] 2021-04-24/17:30:48: [PERMITIDO, 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: El par conectado envió 2 solicitudes http-get válidas y 0 solicitudes http-post válidas hasta ahora, de 15/5 requeridas para considerarlo temporalmente confiable
[INFO] 2021-04-24/17:30:48: El plugin redirigió la solicitud desde [attacker.com] a [127.0.0.1:5555]</pre>
<p>Si la solicitud falla cualquiera de las verificaciones que RedWarden realiza en cada solicitud, se emitirá la línea correspondiente <code>[DROP, ...]</code> (DESCARTADO) que contiene información sobre la <strong>razón</strong> del descarte.:</p>
<pre class="wp-block-preformatted">[INFO] 2021-04-24/16:48:28: [SOLICITUD] GET /
[ERROR] 2021-04-24/16:48:29: [DESCARTADO, 2021-04-24/18:48:28, razón:1, 128.14.211.186] El User-Agent entrante difiere del definido en el perfil C2.
[INFO] 2021-04-24/16:48:29: [DESCARTADO, 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: [REDIRIGIENDO solicitud inválida desde 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">Ajuste fino de Políticas de Descarte</span></strong></h3>
<p>Hay muchas razones que dictan si una solicitud puede ser descartada. Cada una de estas verificaciones puede activarse o desactivarse de forma independiente según los requisitos o en un proceso de ajuste fino o corrección de decisiones erróneas:</p>
<p>Extracto de <code>example-config.yaml</code>:</p>
<pre class="wp-block-preformatted">#
# Política de descarte de solicitudes de grano fino: te permite decidir qué verificaciones
# deseas tener aplicadas y cuáles omitir estableciéndolas en False
#
# Predeterminado: todas las verificaciones habilitadas
#
policy:
# [IP: PERMITIDO, razón:0] La solicitud cumple con la entrada ProxyPass (url="..." host="..."). Pasando la solicitud al host especificado
allow_proxy_pass: True
# [IP: PERMITIDO, razón:2] La IP del par fue agregada dinámicamente a una lista blanca basándose en un número de solicitudes permitidas
allow_dynamic_peer_whitelisting: True
# [IP: DESCARTADO, razón:1] El User-Agent entrante difiere del definido en el perfil C2.
drop_invalid_useragent: True
# [IP: DESCARTADO, razón:2] El nombre del encabezado HTTP contenía una palabra prohibida
drop_http_banned_header_names: True
# [IP: DESCARTADO, razón:3] El valor del encabezado HTTP contenía una palabra prohibida:
drop_http_banned_header_value: True
# [IP: DESCARTADO, razón:4b] La búsqueda inversa de IP del par contenía una palabra prohibida
drop_dangerous_ip_reverse_lookup: True
# [IP: DESCARTADO, razón:4e] ¡Los metadatos de geolocalización IP del par contenían una palabra clave prohibida! Par prohibido de manera genérica.
drop_ipgeo_metadata_containing_banned_keywords: True
# [IP: DESCARTADO, razón:5] La solicitud HTTP no contenía el encabezado esperado
drop_malleable_without_expected_header: True
# [IP: DESCARTADO, razón:6] La solicitud HTTP no contenía el valor de encabezado esperado:
drop_malleable_without_expected_header_value: True
# [IP: DESCARTADO, razón:7] La solicitud HTTP no contenía el encabezado de sección (metadata|id|output) esperado:
drop_malleable_without_expected_request_section: True
# [IP: DESCARTADO, razón:8] Se esperaba que la solicitud HTTP contuviera la sección (metadata|id|output) con parámetro en la URI:
drop_malleable_without_request_section_in_uri: True
# [IP: DESCARTADO, razón:9] No se encontró el patrón prepend:
drop_malleable_without_prepend_pattern: True
# [IP: DESCARTADO, razón:10] No se encontró el patrón append:
drop_malleable_without_apppend_pattern: True
# [IP: DESCARTADO, razón:11] La URI solicitada no coincide con ninguna de las variantes definidas en Maleable:
drop_malleable_unknown_uris: True
# [IP: DESCARTADO, razón:12] Se esperaba que la solicitud HTTP contuviera la sección <> con URI-append conteniendo fragmentos prepend/append
drop_malleable_with_invalid_uri_append: True</pre>
<p>Por defecto, todas estas verificaciones se aplican.</p>
<p>Activar <code>debug: True</code> inundará tu búfer de consola con muchas líneas de registro describiendo cada paso que RedWarden toma en su complejo proceso de decisión. Si quieres ver los cuerpos completos de tus solicitudes y respuestas, establece <code>debug</code> y <code>trace</code> en true y prepárate para hundirte en la carga de registros.</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>– ¿Puede este programa ejecutarse sin un Perfil Maleable?</strong></p>
<p>Sí, puede. Sin embargo, la lógica de inspección de solicitudes se desactivará, el resto debería funcionar bien: aplicación de Geolocalización IP, lógica de búsqueda inversa, lista de IPs prohibidas, etc.</p>
<p><strong>– ¿Puede este programa adaptarse fácilmente a otros frameworks C2 también? Como Mythic, Covenant, etc?</strong></p>
<p>Fácilmente, no. Con algunos esfuerzos, sí. Como describo a continuación, la herramienta está mal escrita, lo que hará que la adaptación a otros C2 sea dolorosa. Sin embargo, eso es totalmente factible dado algo de tiempo y esfuerzo.</p>
<p><strong>– Mis paquetes están siendo descartados. ¿Por qué?</strong></p>
<p>Intenta habilitar <code>debug: True</code> y <code>trace: True</code> para recopilar tantos registros como sea posible. Luego necesitarás revisar los registros e inspeccionar qué está pasando. ¿Los paquetes se ven exactamente como esperabas en tu Perfil Maleable? ¿O quizás hubo una sutil alteración en la red que causa que RedWarden descarte el paquete (y eso también podría hacer que el Teamserver lo descarte)?</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">Problemas Conocidos</span></strong></h2>
<ul><li><em>Puede</em> agregar una ligera sobrecarga al throughput del sleep interactivo</li><li>La lógica de procesamiento de ProxyPass está lejos de ser perfecta y es <em>realmente</em> bugueada (¡y oh, qué tan fea es!).</li><li>Formas extrañas de archivos de configuración pueden desviar al analizador de RedWarden y hacer que se queje. El enfoque más fácil para superar esto sería copiar <code>example-config.yaml</code> y trabajar sobre él en su lugar.</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>Oh, Dios mío, ¿por qué este código es tal pieza de mierda ingenieril?</strong></span></h2>
<p>El código es <em>UNA GRAN MIERDA ENORME</em> – lo admito – y hay una razón honesta para eso también: el proyecto fue desarrollado un 90% durante los compromisos reales de Red Team. Como todos sabemos, este tipo de compromisos implican tantas cosas por hacer, dejando casi ningún tiempo para un desarrollo de herramientas complejas adecuado. Por no mencionar la criticidad de este programa en la configuración del proyecto. La herramienta inicialmente comenzó como un simple script de proxy escrito en Python2, para luego evolucionar como un proxy con plugins, recibió el plugin <code>malleable_redirector</code> – y desde entonces he estado intentando realmente hard mantener <code>proxy2</code> manteniendo la compatibilidad hacia atrás (pobre de mí, ¡era como Microsoft!) con otros plugins que hice para él y adherirme a su propósito original.</p>
<p>Sin embargo, ha llegado el momento de dejarlo ir, rebrandearlo y empezar a arreglar todos los malos olores de código introducidos.</p>
<p>Dicho todo esto, por favor expresa algún nivel de compasión por mí cuando levantes issues, envíes pull requests e intentes ayudar en lugar de juzgar.  ¡Gracias!</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>Investigar la posibilidad de usar feeds de Inteligencia de Amenazas para propósitos nefastos – como por ejemplo detectar Proveedores de Seguridad basándose en IPs</li><li>Agregar soporte para la base de datos/API GeoIP de MaxMind</li><li>Implementar soporte para firmas JA3 tanto en detección y bloqueo como en suplantación para falsificar setups nginx/Apache2/personalizados.</li><li>Agregar alguna lógica de seguimiento única de beacons para ofrecer flexibilidad de rechazar procesos de staging y comunicación a discreción propia del proxy</li><li>Introducir restricción de hora del día al ofrecer capacidades de redirección (<em>proxy solo durante horario de oficina</em>)</li><li>Agregar lógica de autenticación y autorización de Proxy en CONNECT/relay.</li><li>Agregar redirección dirigida a usuarios móviles</li><li>Agregar opciones de configuración para definir encabezados HTTP personalizados a inyectar, o cuáles eliminar</li><li>Agregar opciones de configuración para requerir que ciertos encabezados HTTP estén presentes en solicitudes que pasen los criterios de ProxyPass.</li><li>Interfaz interactiva que permita tipear caracteres simples controlando la verbosidad del registro de salida, similar a la de Nmap</li><li>Reescribir la lógica del analizador de perfiles Maleable a <a href="https://github.com/Porchetta-Industries/pyMalleableC2" target="_blank" rel="noopener">pyMalleableC2</a>. Cuando empecé a codificar mi propia lógica de analizador, no existía tal toolkit en Github.</li><li>Refactorizar toda la base de código</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>Enlace de 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>Mejores Libros de Arduino Disponibles para Desarrolladores</strong></a></div>
</div>
<p></p>
<hr>
<small>Este es un tema de discusión complementario para la entrada original en <a href="https://reconshell.com/redwarden-flexible-cobaltstrike-malleable-redirector/">https://reconshell.com/redwarden-flexible-cobaltstrike-malleable-redirector/</a>. Puedes iniciar la discusión en este tema mencionando el tema o respondiendo aquí.</small>
Ahora, después de una semana buscando sin resultados, excepto que nuestro amigo me referenciara a una guía con “no descargar imágenes al servidor” y el RSS mostrará un breve resumen del tema (lo cual no es mi elección) y la otra solución cuando arreglo la foto con una pestaña “en blanco”.. así que:
<figure class="wp-block-image size-large"></figure>
debería ir a

y esto debería aplicarse a todo el tema para arreglar las imágenes; lo cual aún me pregunto por qué “discourse” no puede hacer un pequeño plugin si no querían romper las reglas del tema;
además, el conflicto mayor y muy incómodo después de editar las fotos, las imágenes se volvieron a romper sin razón, y necesito re-editar y elegir “revertir a revisión” para arreglar la imagen, y así sucesivamente!!
Creo que este bug/problema existe desde 2020, y prometieron hacer algo el próximo año, “2021” y ahora estamos en “2022”.. y el bug sigue sin arreglarse… por favor no digan que no es importante ya que se compara el trabajo con “wordpress” que es el primer CMS del mundo.. y discourse debería seguirlo.