
evilginx3 + gophish

Combinação de evilginx3 e GoPhish.
Esta é a versão pública e gratuita do repositório, NÃO É A VERSÃO MAIS RECENTE. Estou mantendo intencionalmente esta versão pública do repositório atrás da minha versão para pessoas que me patrocinam via GitHub Sponsors. Isso significa que esta versão pode estar faltando correções de bugs ou funcionalidades e não deve haver expectativas de correções de bugs, adição de funcionalidades ou suporte aqui. Torne-se um patrocinador para obter acesso à versão mais recente.
Antes de começar, gostaria de dizer que não estou de forma alguma criticando Kuba Gretzky e seu trabalho. Agradeço pessoalmente a ele por lançar evilginx3 ao público. Na verdade, sem o trabalho dele, este trabalho não existiria. Também devo agradecer a Jordan Wright por desenvolver/manter o incrível kit de ferramentas GoPhish. O fork do Gophish de Kuba também foi usado como inspiração para algumas partes deste projeto após criar sua própria integração.
Você deve ter um entendimento fundamental de como usar GoPhish e evilginx3.
Não serei responsável por qualquer uso indevido ou ilegítimo deste software. Este software deve ser usado apenas em testes de penetração autorizados ou compromissos de red team onde o(s) operador(es) recebeu(ram) permissão explícita por escrito para realizar engenharia social.
Como testador de penetração ou red teamer, você pode ter ouvido falar do evilginx3 como um framework proxy man-in-the-middle capaz de contornar a autenticação de dois fatores/multifator. Isso é tentador para nós, no mínimo, mas ao tentar usá-lo para compromissos de engenharia social, existem alguns pontos problemáticos.
Falta de rastreamento - evilginx3 não fornece estatísticas de rastreamento exclusivas por vítima (por exemplo, e-mail aberto, link clicado, etc.), isso é problemático para clientes que querem/precisam/pagam por essas estatísticas ao contratar um compromisso de engenharia social.
Não é um kit de ferramentas de engenharia social completo - evilginx3 fornece apenas capacidades de proxy man-in-the-middle, não fornece toda a funcionalidade necessária para uma campanha de engenharia social via e-mail/SMS. Por exemplo, não envia e-mails para alvos nem fornece essa funcionalidade.
Sem GUI - precisamos realmente explicar isso? Todos amamos nossas GUIs e a representação visual dos dados para uma campanha de engenharia social é inestimável. Os operadores podem realmente obter uma compreensão completa do sucesso de suas campanhas de engenharia social ao poder visualizar uma representação visual dos dados.
Nesta configuração, o GoPhish é usado para enviar e-mails e fornecer um painel para as estatísticas da campanha do evilginx3, mas não é usado para nenhuma página de destino. Seus links de phishing enviados pelo GoPhish apontarão para um caminho de isca do evilginx3 e o evilginx3 será usado para as páginas de destino. Isso fornece a capacidade de ainda contornar 2FA/MFA com o evilginx3, sem perder essas estatísticas preciosas. Notificações de eventos de campanha em tempo real foram fornecidas com um servidor websocket/http local que desenvolvi e strings JSON totalmente utilizáveis contendo tokens/cookies do evilginx3 são exibidas diretamente na GUI (e feed) do GoPhish:


evilginx3 ouvirá em um endereço acessível externamente na porta 443 (ou qualquer porta que você escolher na configuração do evilginx3)GoPhish ouvirá localmente nas portas 8080 e 3333 (o servidor de phishing na porta 8080 não é usado)Cloudflare Turnstile ouvirá localmente na porta 80O setup.sh foi fornecido para automatizar as configurações necessárias para você. Depois que este script for executado e você fornecer os valores corretos, você estará pronto para começar. Abaixo está a ajuda de configuração:
Usage:
./setup <root domain> <subdomain(s)> <root domain bool> <feed bool> <rid replacement>
- root domain - the root domain to be used for the campaign
- subdomains - a space separated list of evilginx3 subdomains, can be one if only one
- root domain bool - true or false to proxy root domain to evilginx3
- feed bool - true or false if you plan to use the live feed
- rid replacement - replace the gophish default "rid" in phishing URLs with this value
Example:
./setup.sh example.com "accounts myaccount" false true user_id
A integração do Cloudflare Turnstile substituiu as regras de redirecionamento e uma lista negra de IP com Apache2. A abordagem Apache2 dependia de uma lista predefinida de regras de redirecionamento e uma lista negra de IP. Podemos perder certos user agents, hosts ou endereços IP que acabam detectando nossa infraestrutura. Isso geralmente é feito por bots e software automatizado que escaneia infraestrutura de phishing. A tecnologia Cloudflare Turnstile é uma das melhores defesas contra bots no momento da escrita e verifica se um usuário real está acessando seu site.
Turnstile no painelevilginx3/templates/forbidden.html e evilginx3/templates/turnstile.html com suas próprias alteraçõesevilginx3, inclua as chaves pública/privada com a flag turnstile separadas por :. Por exemplo:./evilginx3 -feed -g ../gophish/gophish.db -turnstile <PUBLIC_KEY>:<PRIVATE_KEY>
Postagem no blog aqui.
Se eu incluísse uma página HTML estática para a funcionalidade Cloudflare Turnstile, a infraestrutura de phishing de todos teria a mesma página e isso levaria a detecções de código HTML estático. Entram os templates Go HTML. Incluí um template inicial em evilginx3/templates/turnstile.html como diretriz VOCÊ DEVE ALTERAR ISSO. Aqui estão as regras sobre como o código do template é configurado; não seguir essas regras provavelmente resultará na quebra da funcionalidade Cloudflare Turnstile:
{{.FormActionURL}}, {{.ErrorMessage}} e {{.TurnstilePublicKey}}Turnstile deve ser a variável de template {{.FormActionURL}}data-sitekey para a classe div cf-turnstile deve ser a variável de template {{.TurnstilePublicKey}}evilginx3/templates/turnstile.htmlbuttonCaso você tenha executado setup.sh uma vez e já tenha substituído o valor padrão RId em todo o projeto, o replace_rid.sh foi criado para substituir o valor RId novamente.
Usage:
./replace_rid <previous rid> <new rid>
- previous rid - the previous rid value that was replaced
- new rid - the new rid value to replace the previous
Example:
./replace_rid.sh user_id client_id
Depois que o setup.sh for executado, os próximos passos são:
GoPhish e configure o template de e-mail, o perfil de envio de e-mail e os gruposevilginx3 e configure o phishlet e a isca (deve especificar o caminho completo para o banco de dados sqlite3 do GoPhish com a flag -g)GoPhish e defina a URL de destino como o caminho da isca para o phishlet do evilginx3O recurso Gerador de Código QR permite gerar códigos QR para implantar campanhas de engenharia social com código QR. Aqui estão os passos para usá-lo:
{{.QR}}:


Observe que este recurso é suportado apenas para campanhas de e-mail e templates HTML de e-mail no momento
Postagem no blog aqui.
Uma reformulação completa do GoPhish foi realizada para fornecer suporte a campanhas SMS com Twilio. Seu novo painel do evilgophish será semelhante ao abaixo:

Depois que o setup.sh for executado, os próximos passos são:
SMS. Você usará apenas Texto ao criar um template de mensagem SMS, e não deve incluir um link de rastreamento, pois ele aparecerá na mensagem SMS. Deixe Remetente do Envelope e Assunto em branco como abaixo:
Perfil de Envio SMS. Insira seu número de telefone do Twilio, Account SID e Auth Token:
CSV foram mantidos os mesmos para compatibilidade, então mantenha os nomes das colunas CSV iguais e coloque os números de telefone dos alvos na coluna Email. Observe que o Twilio aceita os seguintes formatos de número de telefone, portanto eles devem estar em um destes três:
evilginx3 e configure o phishlet e a isca (deve especificar o caminho completo para o banco de dados sqlite3 do GoPhish com a flag -g)GoPhish e defina a URL de destino como o caminho da isca para o phishlet do evilginx3Postagem no blog aqui.
As notificações de eventos de campanha em tempo real são tratadas por um servidor websocket/http local e um aplicativo de feed ao vivo. Para configurar:
true para feed bool ao executar setup.shevilfeed com cd e inicie o aplicativo com ./evilfeedevilginx3, forneça a flag -feed para habilitar o feed. Por exemplo:./evilginx3 -feed -g /opt/evilgophish/gophish/gophish.db
http://localhost:1337/. O painel do feed será semelhante ao abaixo:
NOTAS IMPORTANTES
A página de feed ao vivo conecta um websocket para eventos com
JavaScripte você NÃO precisa atualizar a página. Se você atualizar a página, PERDERÁ todos os eventos até aquele ponto.
Adicionarei phishlets a este repositório a meu critério. Não deve haver expectativa de que eu crie phishlets como parte deste repositório; espera-se que você crie os seus próprios. NÃO ABRA ISSUES NESTE REPOSITÓRIO PARA PHISHLETS
Em 10 de maio de 2023, Kuba Gretzky atualizou o evilginx 2.4.0 para a versão 3.0.0. Você pode encontrar uma postagem de blog detalhada sobre as mudanças na ferramenta aqui: evilginx3+mastery. Mais notavelmente, as mudanças no formato do arquivo phishlet provavelmente quebrarão phishlets anteriores à versão 3.0.0 e eles terão que ser reescritos. Embora possa ser trabalho reescrevê-los, há benefícios adicionais com o novo formato de arquivo phishlet. A documentação sobre o formato phishlet para a versão 3.0.0 pode ser encontrada aqui: Phishlet Format v3.0.0. Phishlets no formato legado ainda serão mantidos neste repositório na pasta evilginx3/legacy_phishlets. compatíveis com a versão serão armazenados em . Nem todos os legados foram convertidos para o formato ainda, continuarei atualizando-os conforme o tempo permitir!
O script de instalação foi testado no Ubuntu Focal/Jammy e instala a versão mais recente do Go a partir do código-fonte. Os binários podem falhar na compilação dependendo do seu ambiente Go e do que você tem instalado, ou seja, instalar as versões originais que este projeto combina e depois tentar instalar esta versão delas. Ele também faz alterações no DNS para que o evilginx3 possa assumi-lo. Você deve entender as implicações disso e revisá-lo. Um ambiente limpo é recomendado e outros sistemas operacionais não foram testados.
Não é incomum testar o rastreamento de uma campanha antes de lançá-la e encorajo você a fazê-lo, mas deixarei apenas um aviso. O evilginx3 criará um cookie e estabelecerá uma sessão para cada navegador de nova vítima. Se você continuar testando várias campanhas e vários links de phishing no mesmo navegador, você confundirá o processo de rastreamento, pois o valor RId é extraído das solicitações e definido no início de uma nova sessão. Se você está fazendo isso, não está realmente simulando uma vítima, pois uma vítima nunca teria acesso a outro link de phishing além do seu próprio e nem é preciso dizer que isso nunca acontecerá durante uma campanha ao vivo. Este é um aviso justo para não abrir uma issue sobre isso, pois você não está usando a ferramenta da maneira que foi projetada para ser usada. Se você quiser simular uma nova vítima, pode testar o processo de rastreamento usando um novo navegador/aba no modo de navegação anônima.
O GoPhish nunca é usado em nenhuma de suas páginas de phishing reais e os cabeçalhos de e-mail foram removidos, portanto não há necessidade de se preocupar com IOCs dentro dele.
rid padrão nas URLs de phishing é escolhida pelo operador no setup.shSMSSessão Capturada adicional para sessões/tokens capturados do evilginx3Veja o arquivo CHANGELOG.md para as alterações feitas desde o lançamento inicial.
Não deve haver expectativa de que eu responda a issues nesta versão pública do repositório. Você não está me patrocinando ou financiando o desenvolvimento do projeto, portanto não deve haver expectativas de suporte. Patrocine-me para obter suporte ampliado.
evilginx 3.x.xGostaria de ver este projeto melhorar e crescer ao longo do tempo. Se você tiver ideias de melhoria, novas regras de redirecionamento, novos endereços IP/blocos para colocar na lista negra, phishlets ou sugestões, por favor, abra um pull request.
Phishlets3.0.0evilginx3/phishletsphishlets3.x.x