Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
RedWarden — Proxy reverso C2 do Cobalt Strike que repele Equipes Azuis, AVs, EDRs, scanners através de inspeção de pacotes e correlação de perfil maleável. | Kitploit
Ferramentas/GitHubGitHub/mgeeky/redwarden
Frameworks de Testes de PenetraçãoReconhecimentoFrameworks de ExploraçãoProxies Web e InterceptaçãoEvasão de IDS/IPSEngenharia ReversaColeta de InformaçõesSegurança de RedeComando e ControleInteligência de AmeaçasRed TeamingArchived
997138há 3 anosRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar
GitHubmgeeky/redwarden

RedWarden

Proxy reverso C2 do Cobalt Strike que repele Equipes Azuis, AVs, EDRs, scanners através de inspeção de pacotes e correlação de perfil maleável.

Ver Repositório

RedWarden - Redirecionador Flexível Malleable para CobaltStrike

(anteriormente conhecido como plugin malleable_redirector do proxy2)

Vamos elevar o nível da resiliência de redirecionadores C2 contra IR, não é mesmo?

RedWarden

O negócio de Red Teaming já viu várias ideias excelentes sobre como combater respondedores de incidentes e desencaminhá-los, ao mesmo tempo que oferece uma rede de redirecionadores C2 resilientes.

Este trabalho combina muitas dessas grandes ideias numa única ferramenta leve, imitando o Apache2 nas suas raízes como um simples proxy reverso HTTP(S).

Combinar a compreensão de perfis Malleable C2, conhecimento de um pool de endereços IP maliciosos e a flexibilidade de adicionar facilmente nova lógica de inspeção e desencaminhamento resultou num repelente astuto para inspeções de IR.

RedWarden

Caso algum pacote de entrada inválido atinja o RedWarden - pode redirecionar, reiniciar ou apenas proxy para longe!

Resumo

Este programa atua como um proxy reverso HTTP/HTTPS com várias restrições impostas sobre pedidos C2 HTTP de entrada, selecionando quais pacotes direcionar para o Teamserver e quais descartar, de forma semelhante às restrições do arquivo .htaccess impostas no mod_rewrite do Apache2.

O RedWarden foi criado para resolver o problema de evasão de IR/AV/EDRs/Sandboxes na camada de redirecionador C2. A sua intenção é substituir as configurações clássicas de Apache2 + mod_rewrite usadas para esse fim.

Características:

  • Analisador de perfil Malleable C2 capaz de validar pedidos HTTP/S de entrada estritamente de acordo com o contrato malleable e descartar pacotes divergentes em caso de violação (Perfis Malleable 4.0+ com variantes cobertas)
  • Capacidade de remover filtros/consertar cabeçalhos HTTP inesperados e indesejados adicionados por sistemas intermédios como proxies e caches (pense em CloudFlare) para cumprir um contrato Malleable válido.
  • Lista negra curada massiva integrada de pools e intervalos IPv4 conhecidos por estarem associados a fornecedores de segurança de TI
  • Entradas de log de saída pesquisáveis (nos formatos de log combinado Apache2 e RedWarden personalizado) úteis para rastrear eventos/problemas de conectividade entre pares
  • Capacidade de consultar o endereço IPv4 do par conectado contra informações de geolocalização/whois IP e confrontar com expressões regulares predefinidas para descartar pares que se conectam fora de organizações/países/cidades confiáveis, etc.
  • Mitigação integrada de ataques de repetição (replay) através do registo de somas MD5 de pedidos aceites numa base de dados SQLite armazenada localmente e prevenção de pedidos previamente aceites.
  • Permite definir declarações ProxyPass para encaminhar pedidos que correspondam a URLs específicos para outros hosts
  • Suporte para múltiplos Teamservers
  • Suporte para muitos hosts de proxy reverso/sites de redirecionamento fornecidos numa ordem aleatória - o que permite balancear carga de tráfego ou construir infraestruturas mais versáteis
  • Pode reparar pacotes HTTP de acordo com o contrato malleable esperado, caso alguns cabeçalhos tenham sido corrompidos no tráfego
  • Noites sem dormir a resolver "porque é que o meu Beacon não funciona através de CloudFlare/CDN/Domain Fronting" acabaram agora, graças a logs detalhados e verbosos de pedidos/respostas HTTP(S)

O RedWarden recebe o perfil Malleable C2 e o hostname:porta do teamserver como entrada. De seguida, analisa as secções do perfil malleable fornecido para compreender o contrato e passar apenas os pedidos de entrada que o satisfazem, enquanto desencaminha outros.

Secções como http-stager, http-get, http-post e os seus uris, cabeçalhos, padrões de prepend/append, User-Agent correspondentes são todas utilizadas para distinguir entre um pedido legítimo de um beacon e ruído não relacionado da Internet ou pacotes fora de alcance de IR/AV/EDRs.

O programa beneficia das maravilhosas listas de IPs maliciosos conhecidos provenientes de: curi0usJack e outros: https://gist.github.com/curi0usJack/971385e8334e189d93a6cb4671238b10

Usar uma lista negra de endereços IP juntamente com pesquisa de palavras-chave maliciosas através de consultas de DNS reverso e inspeção de cabeçalhos HTTP, aumenta a fiabilidade para aumentar consideravelmente a resiliência do redirecionador contra pares não autorizados que queiram examinar as infraestruturas do atacante.

Pacotes inválidos podem ser desencaminhados de acordo com três estratégias:

  • redirect: Simplesmente redireciona o par para outros sites, como Rick Roll.
  • reset: Mata a conexão TCP imediatamente.
  • proxy: Obtém uma resposta de outro site, para imitar o mais próximo possível um site clonado/sequestrado.

Esta configuração é definida no ficheiro de configuração:```yaml

What to do with the request originating not conforming to Beacon, whitelisting or

ProxyPass inclusive statements:

- 'redirect' it to another host with (HTTP 301),

- 'reset' a TCP connection with connecting client

- 'proxy' the request, acting as a reverse-proxy against specified action_url

(may be dangerous if client fetches something it shouldn't supposed to see!)

Valid values: 'reset', 'redirect', 'proxy'.

Default: redirect

drop_action: redirect

root@kitploit:~
O exemplo abaixo mostra o resultado do `redirect` para `https://googole.com`:

![redirect](https://assets.kitploit.com/production/public/readmes/4322/2ac28c863e766b5aaa2f225c33c225075c7042383d9c51860342a4da63cc6dcd.png)

Use com sabedoria, fique seguro.

### Requisitos

Este programa pode ser executado apenas em sistemas Linux, pois usa fork para gerar múltiplos processos.

Além disso, espera-se que o comando de sistema `openssl` esteja instalado, pois é usado para gerar certificados SSL.

Finalmente, instale todos os requisitos do Python3 PIP facilmente com:```shell
bash $ sudo pip3 install -r requirements.txt

Uso

Exemplo de uso

O mínimo arquivo de configuração config.yaml do RedWarden poderia conter:```yaml 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

root@kitploit:~
Em seguida, o programa pode ser iniciado fornecendo um caminho para o arquivo de configuração:

``````shell
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]
  [...]

A saída acima contém uma linha apontando que houve uma requisição de entrada não autorizada, não compatível com nosso perfil C2, que foi descartada devido à string User-Agent incompatível apresentada:``` [...] [DROP, reason:1] inbound User-Agent differs from the one defined in C2 profile. [...]

root@kitploit:~
## Casos de Uso

### Impor Geolocalização IP nos originadores de tráfego do Beacon

Você fez seu Pre-Phish e OSINT muito bem. Agora você sabe onde seus alvos vivem e tem algumas pistas de onde o tráfego deve se originar, ou pelo menos como detectar tráfego completamente auxiliar.
Como impor Geolocalização IP nas requisições Beacon em um redirecionador?

RedWarden vem ajudar!

Digamos que você queira aceitar apenas tráfego originado da Polônia, Europa.
Seus resultados de Pre-Phish/OSINT indicam que:

- `89.64.64.150` é um IP legítimo de um dos seus alvos, originado da Polônia
- `59.99.140.76` enquanto este não é e alcançou seus sistemas como um pacote regular de ruído da Internet.

Você pode usar o utilitário do RedWarden `lib/ipLookupHelper.py` para coletar metadados IP Geo sobre esses dois endereços:```shell
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 

O primeiro traz:```shell 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" }

root@kitploit:~
e o último dá:```shell
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": ""
}

Agora você vê que o primeiro tinha "country": "Poland" enquanto o último tinha "country": "India". Com esse conhecimento, estamos prontos para elaborar nossas restrições na forma de um grande dicionário YAML:```yaml ip_geolocation_requirements: organization: continent: continent_code: country: - Poland - PL - Polska country_code: city: timezone:

root@kitploit:~
Cada entrada desse dicionário aceita uma expressão regular para ser correspondida com metadados de Geo IP determinados do endereço IP do peer de entrada.
Usamos três entradas na propriedade `country` para permitir requisições que tenham um dos valores especificados.

Com isso definido na sua configuração, você pode verificar se outro endereço IP passaria pelo discriminador de Geolocalização IP do RedWarden ou não com o utilitário `ipLookupHelper` que aceita um segundo parâmetro:

![ipLookupHelper IP Geo discriminator](https://assets.kitploit.com/production/public/readmes/4322/f67983439349d959f5ce0b08c45e53de3664d82796fd15273f3bb72f831ac7dc.png)

A última linha informa se o pacote será bloqueado ou aceito.

E é isso! Configure suas restrições de Geolocalização IP de forma sábia e segura, inspecione cuidadosamente os logs do RedWarden em busca de entradas DROP relacionadas a Geo IP e mantenha seu tráfego C2 organizado!


### Reparar requisições Beacon adulteradas

Se você utiliza sistemas intermediários como AWS Lambda ou CloudFlare como seus frontais de domínio / redirecionadores, certamente já se deparou com uma situação em que alguns de seus pacotes não puderam ser aceitos pelo Teamserver por terem se desviado do contrato maleável acordado. Foi um cabeçalho HTTP adulterado ou removido, cookies reordenados ou qualquer outra coisa — aposto que isso desperdiçou muitas horas da sua vida.

Para combater problemas no processo de configuração de canais C2 e adulterações de sistemas intermediários, o RedWarden oferece funcionalidade para reparar pacotes Beacon.

Ele faz isso verificando o que o Perfil Maleável espera que o pacote seja e pode restaurar cabeçalhos HTTP configurados para seus valores acordados de acordo com os requisitos do perfil.

Considere o seguinte perfil simples:```
http-get {
    set uri "/api/abc";
    client {

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

        metadata {
            base64url;
            netbios;
            base64url;
            parameter "auth";
        }
    }
    ...

Você vê este Accept-Encoding? Toda requisição do Beacon precisa ter esse cabeçalho e esse valor. O que acontece se seu Beacon atingir sistemas CloudFlare e eles emitirem uma requisição que será removida desse cabeçalho ou terá Accept-Encoding: gzip no lugar? O Teamserver rejeitará a requisição na hora.

Ao definir este cabeçalho na seção de configuração do RedWarden chamada repair_these_headers, você pode proteger sua conexão.:```yaml

This option repairs Beacon requests's header value by restoring to what was expected in Malleable C2 profile.

If RedWarden validates inbound request's HTTP headers, according to policy drop_malleable_without_expected_header_value:

"[IP: DROP, reason:6] HTTP request did not contain expected header value:"

and detects some header is missing or was overwritten along the wire, the request will be dropped.

We can relax this policy a bit however, since there are situations in which Cache systems (such as Cloudflare) could tamper with our

requests thus breaking Malleable contracts. What we can do is to specify list of headers, that should be overwritten back to their values

defined in provided Malleable profile.

So for example, if our profile expects:

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

but we receive a request having following header set instead:

Accept-Encoding: gzip

Because it was tampered along the wire by some of the interim systems (such as web-proxies or caches), we can

detect that and set that header's value back to what was expected in Malleable profile.

In order to protect Accept-Encoding header, as an example, the following configuration could be used:

repair_these_headers:

- Accept-Encoding

Default:

repair_these_headers:

  • Accept-Encoding
root@kitploit:~
### Remover cabeçalhos de resposta problemáticos

Com o Cobalt Strike 4.7+, notei que o Teamserver remove automaticamente o cabeçalho Content-Encoding sem qualquer aviso, violando assim nosso contrato `http-(get|post).server` malleable.

Como o RedWarden seguia o contrato, o Beacon estava descartando respostas ou as descomprimindo incorretamente.

Esta opção especifica quais cabeçalhos das respostas do Teamserver devem ser removidos antes de chegarem ao processo Beacon:```yaml

remove_these_response_headers:
  - Content-Encoding

RedWarden removerá agora o cabeçalho Content-Encoding por padrão das respostas do Teamserver, para manter a operabilidade com versões CS4.7+.

Exemplos de saídas

Vamos dar uma olhada na saída que o proxy produz.

Com a opção verbose: True, a verbosidade será definida como INFO no máximo, informando requisições aceitas e descartadas.

A requisição pode ser aceita se atender a todos os critérios configurados no arquivo de configuração do RedWarden. Tal situação será seguida por um log de entrada [ALLOW, ...]:``` [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]

root@kitploit:~
Caso a solicitação falhe em qualquer uma das verificações que o RedWarden realiza em cada solicitação, a linha `[DROP, ...]` correspondente será emitida contendo informações sobre o **motivo** da rejeição.:```
[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 /

Ajuste Fino de Políticas de Descarte

Há várias razões que determinam se uma requisição pode ser descartada. Cada uma dessas verificações pode ser ativada ou desativada independentemente, conforme os requisitos ou em um processo de ajuste fino ou correção de decisões errôneas:

Trecho de example-config.yaml:```yaml

Fine-grained requests dropping policy - lets you decide which checks

you want to have enforced and which to skip by setting them to False

Default: all checks enabled

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 <> section with URI-append containing prepend/append fragments

drop_malleable_with_invalid_uri_append: True

root@kitploit:~
Por padrão, todas essas verificações são aplicadas.

Ativar `debug: True` inundará seu buffer de console com muitas linhas de log descrevendo cada etapa que o RedWarden toma em seu complexo processo de decisão.
Se você quiser ver os corpos completos de suas requisições e respostas, ative `debug` e `trace` como true e prepare-se para ser soterrado em logs!


## FAQ

**- Este programa pode funcionar sem um Perfil Malleable?**

Sim, pode. No entanto, a lógica de inspeção de requisições será desativada; o restante deve funcionar normalmente: imposição de Geolocalização de IP, lógica de reverse-lookup, lista de IPs banidos, etc.

**- Este programa pode ser facilmente adaptado para outros frameworks C2? Como Mythic, Covenant, etc?**

Facilmente, não. Com algum esforço, sim. Como descrevi abaixo, a ferramenta foi escrita de forma ruim, o que tornará a adaptação para outros C2s um pouco dolorosa. No entanto, é totalmente possível, dado tempo e esforço.

**- Meus pacotes estão sendo descartados. Por quê?**

Tente ativar `debug: True` e `trace: True` para coletar o máximo de logs possível. Depois, você precisará revisar os logs e inspecionar o que está acontecendo. Os pacotes estão exatamente como você esperava no seu perfil Malleable? Ou talvez tenha havido uma adulteração sutil ao longo da rede que fez o RedWarden descartar o pacote (e poderia fazer o Teamserver descartá-lo também?).


## Problemas Conhecidos

- Pode adicionar uma leve sobrecarga à taxa de transferência do sleep interativo
- A lógica de processamento do ProxyPass está longe de ser perfeita e é _realmente_ cheia de bugs (e, meu Deus, é feia!).
- Formas estranhas de arquivos de configuração podem desviar o parser do RedWarden e fazê-lo reclamar. A abordagem mais fácil para contornar isso seria copiar `example-config.yaml` e trabalhar nele.


## Oh meu Deus, por que esse código é uma porcaria de engenharia?

O código é _UMA GRANDE BAGUNÇA DO CARALHO_ — eu admito — e há uma razão honesta para isso também: o projeto foi desenvolvido 90% durante compromissos reais de Red Team. Como todos sabemos, esses tipos de compromissos envolvem tantas coisas para fazer, deixando quase nenhum tempo para um desenvolvimento adequado de ferramentas complexas. Sem mencionar a criticidade deste programa na configuração do projeto. A ferramenta inicialmente começou como um script proxy simples escrito em Python2, para depois evoluir como um proxy com plugins, recebeu o plugin `malleable_redirector` — e desde então tenho me esforçado muito para manter a `proxy2` compatível com versões anteriores (coitado de mim, eu era tipo a Microsoft!) com outros plugins que fiz para ela e manter seu propósito original.

No entanto, chegou a hora de deixá-la ir, renomeá-la e começar a corrigir todos os maus cheiros de código introduzidos.

Com tudo isso dito, por favor, mostre um pouco de compaixão por mim ao abrir issues, enviar pull requests e tente ajudar em vez de julgar! :-)
Obrigado!


## TODO

- Pesquisar a possibilidade de usar feeds de Inteligência de Ameaças para fins nefastos — como, por exemplo, detectar Fornecedores de Segurança com base em IPs
- Adicionar suporte para banco de dados/API MaxMind GeoIP
- Implementar suporte para assinaturas JA3 tanto na detecção & bloqueio quanto na falsificação para simular setups nginx/Apache2/personalizados.
- Adicionar alguma lógica única de rastreamento de beacons para oferecer flexibilidade de recusar processos de staging e comunicação a critério do próprio proxy
- Introduzir restrição de horário do dia ao oferecer capacidades de redirecionamento (_proxy apenas durante o horário comercial_)
- Adicionar lógica de autenticação e autorização de proxy no CONNECT/relay.
- Adicionar redirecionamento direcionado a usuários móveis
- Adicionar opções de configuração para definir cabeçalhos HTTP personalizados a serem injetados, ou aqueles a serem removidos
- Adicionar opções de configuração para exigir cabeçalhos HTTP específicos a serem apresentados em requisições passando pelos critérios do ProxyPass.
- Interface interativa permitindo digitar caracteres simples controlando a verbosidade do log de saída, semelhante ao Nmap
- Reescrever a lógica do parser de perfil Malleable para [pyMalleableC2](https://github.com/Porchetta-Industries/pyMalleableC2). Quando comecei a codificar minha própria lógica de parser, não existia tal toolkit no Github.
- Refatorar toda a base de código


---

### ☕ Mostre Apoio ☕

Este e outros projetos são resultado de noites sem dormir e **muito trabalho duro**. Se você gosta do que faço e aprecia que sempre retribuo para a comunidade,
[Considere me pagar um café](https://github.com/sponsors/mgeeky) _(ou melhor, uma cerveja)_ apenas para agradecer! 💪 

---

## Autor```   
   Mariusz Banach / mgeeky, '19-'21
   <mb [at] binary-offensive.com>
   (https://github.com/mgeeky) 
Baixar ferramenta