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
mail-security-tester — Um framework de teste para soluções de segurança e filtragem de e-mail. | Kitploit
Ferramentas/GitHubGitHub/tkcert/mail-security-tester
Ferramentas de PhishingScanners de VulnerabilidadesEvasão de IDS/IPSTestes de PenetraçãoSegurança de Email
GitHubtkcert/mail-security-tester

mail-security-tester

Um framework de teste para soluções de segurança e filtragem de e-mail.

Ver Repositório
24446há 7 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

Build Status

Framework de Teste de Segurança de E-mail

Um framework de testes para soluções de segurança e filtragem de e-mail.

IMPORTANTE: Não faça nada de maldoso com isso! Testes de soluções em nuvem ou hospedadas devem sempre ser aprovados pelo provedor testado. Use apenas suas próprias contas de teste e não incomode ninguém com uma carga de e-mails de teste.

Instalação

O framework de teste de segurança de e-mail funciona com Python >=3.5. Basta puxar este repositório e seguir em frente. Nenhuma dependência adicional é necessária.

Uso

O script mail-tester.py executa os testes. Leia a mensagem de ajuda com ./mail-tester.py --help e verifique a lista de módulos de teste e evasão com ./mail-tester.py -l para ter uma visão geral das capacidades e do uso do script. Algumas dicas:

  • Pelo menos os parâmetros --smtp-server e --to devem ser fornecidos para uma execução mínima de teste.
  • Todos os parâmetros também podem ser armazenados em arquivos de configuração sem o prefixo --. Esses arquivos de configuração podem ser usados invocando ./mail-tester.py @tester.conf (configuração contida em tester.conf).
  • Múltiplos destinatários podem ser configurados com --to para testar diferentes configurações de filtro.
  • Algumas soluções de filtragem de e-mail podem rejeitar mensagens após algum tempo. Use --auto-delay para limitação automática do envio de e-mails. Isso pode ser ajustado com --delay-step, --delay-max e --delay.
  • Alguns testes (Spam e Malware) exigem amostras. Coloque-as em diretórios e configure esses diretórios com os parâmetros --spam-folder e --malware-folder. As amostras não estão incluídas neste repositório (e não serão). Bons lugares para obter malware são theZoo, Das Malwerk ou outras coleções. Spam pode ser exportado diretamente da sua pasta de Spam, mas deve estar no formato EML.
  • Listas negras podem ser fornecidas com o parâmetro --blacklist e são usadas como endereços de remetente.
  • Os casos de teste Shellshock e XSS no assunto devem ter um domínio de backconnect válido, onde você possa ver quaisquer backconnects (especialmente requisições DNS). O serviço gratuito Canary Tokens pode ser usado para esse propósito. Agradecimentos à Thinkst por fornecer este serviço incrível!
  • Alguns truques interessantes de evasão de reconhecimento de anexos podem ser ativados com --evasion content-disposition. Estes foram usados no passado para confundir soluções de AV/sandbox e permitir a passagem de e-mails maliciosos.
  • Não se esqueça de registrar os resultados do teste com --log. Provedores de filtragem de e-mail frequentemente rejeitam e-mails no diálogo SMTP, o que é refletido no log gerado.
  • Casos de teste podem ser despejados com --output como arquivos simples em um diretório, no formato MBox (--mbox) ou MailDir (--maildir). Isso é útil para testar clientes de e-mail sem enviar nenhum e-mail, para documentar ou revisar os casos de teste gerados.

Desenvolvimento e Extensão

Testes

Testes próprios podem ser implementados com uma classe em um dos arquivos Python existentes ou recém-criados no diretório tests/. A classe deve ser uma subclasse de MailTestBase localizada no módulo tests.base deste projeto. Testes recém-implementados são descobertos automaticamente quando a variável de classe active está definida como True. Além disso (se você planeja contribuir com testes de volta ao repositório principal), as variáveis de classe identifier, name e description devem ser definidas adequadamente.

Existem as seguintes classes base com métodos ou variáveis de classe destinadas à sobrescrita:

  • MailTestBase: Classe de teste para testes genéricos.
    • generateTestCases(): Gera mensagens de teste. Estas devem ser geradas com as classes MIME* dos pacotes email.mime.* do Python ou com a classe Message de email.message para garantir mensagens de e-mail válidas.
    • active: Valor booleano indicando se o teste deve estar ativo.
    • identifier: Identificador curto do teste. Este é usado para ativar ou desativar testes nos parâmetros.
    • name: Título curto do teste.
    • description: Descrição mais longa do teste, deve caber em aproximadamente 100 caracteres.
    • delivery_sender e delivery_recipient: Valores booleanos, False por padrão. Normalmente, o remetente e os destinatários são definidos na mensagem e o módulo SMTP do Python os assume de lá. Às vezes é desejável defini-los explicitamente na biblioteca SMTP, o que pode ser configurado definindo esses valores como .

Definir os assuntos das mensagens geradas é altamente recomendado para poder reconhecer os testes na caixa de entrada receptora.

Evasões

Classes de evasão implementam técnicas para evitar o reconhecimento de propriedades específicas de e-mail por soluções de segurança de e-mail. Atualmente, uma técnica de evasão que tenta ocultar anexos dessas soluções por meio de cabeçalhos Content-Disposition intencionalmente quebrados é implementada.

Implementar Novas Evasões

Evasões são implementadas por um padrão de classe de fábrica. A classe DeliveryBase instancia uma classe de fábrica derivada da classe BaseEvasionFactory. O construtor da fábrica recebe uma flag que indica se a evasão está ativada. A instância da fábrica de evasão é então passada para a classe de teste e armazenada em seu atributo evasions, que contém um dicionário com os identificadores de evasão como chaves. Dentro do teste, uma classe de evasão (baseada em EvasionBase) é instanciada com getEvasionGenerator(). Os parâmetros do construtor são definidos individualmente por técnica de evasão.

As seguintes classes base são usadas para implementar evasões:

  • BaseEvasionFactory: As fábricas de evasão devem ser baseadas nesta classe. Normalmente, apenas as seguintes variáveis de classe devem ser definidas:
    • active: Definido como True se a evasão deve estar ativa.
    • identifier: Identificador curto do módulo de evasão usado para ativá-lo na configuração de teste.
    • name: Título curto da técnica de evasão.
    • description: Descrição mais longa da técnica de evasão. Deve caber em aproximadamente 100 caracteres.
    • generator_evasion: Classe de evasão que é instanciada se a evasão está ativada.
    • generator_default: Classe de evasão que é instanciada se a evasão está desativada.
  • BaseEvasion: A implementação de evasões deve ser uma subclasse desta classe base. O seguinte método deve ser sobrescrito:
    • __init__(): Deve instanciar a classe com a mensagem ou anexo base que deve ser manipulado com técnicas de evasão.
    • generate(): Aplica a técnica de evasão ao objeto passado ao construtor e o produz para o chamador como uma tupla (descrição, objeto com evasão aplicada).

Geralmente, a classe de evasão deve produzir todas as variantes de evasão e passar o padrão como um caso de teste dedicado, enquanto as classes de evasão padrão apenas passam o objeto fornecido ou criam as estruturas de dados necessárias, como cabeçalhos.

Usando Técnicas de Evasão em Casos de Teste

Técnicas de evasão são usadas em casos de teste onde são aplicáveis. Por exemplo, se uma técnica de evasão manipula o cabeçalho de um e-mail ou anexo, os seguintes passos devem ser implementados:

  1. Gere o objeto base (e-mail ou anexo) sem considerar a evasão.
  2. Instancie a classe de evasão apropriada utilizando a instância da fábrica de evasão de self.evasions, por exemplo: evasion_items = self.evasions["evasion_identifier"].getEvasionGenerator(message)
  3. Itere sobre o gerador e produza os casos de teste:
root@kitploit:~
for evasion_item in evasion_items:
    yield evasion_item

Uso da Técnica de Evasão de Disposição de Conteúdo

A técnica de evasão de disposição de conteúdo já está implementada no framework e deve ser usada para todos os casos de teste que visam o reconhecimento de anexos maliciosos. O construtor recebe um anexo e o nome de arquivo pretendido. A classe de evasão então produz tuplas (nome da evasão, anexo com técnica de evasão aplicada) que podem ser diretamente produzidas pelo método generateAttachments() dos testes.

Baixar ferramenta
True
  • finalizeMessage(msg): Por padrão, a classe base de teste define os cabeçalhos From e To de acordo. Esse comportamento pode ser sobrescrito se necessário para o caso de teste.
  • MailAttachmentTestBase: Classe de teste para casos de teste de anexos. Gera um e-mail válido completo com um assunto e uma parte de texto e anexa o caso de teste a ele. Derivada de MailTestBase, portanto os métodos/variáveis dela podem ser sobrescritos aqui também.
    • generateAttachments(): Gera casos de teste como tuplas (descrição, anexo).
    • subject: Define o assunto. O espaço reservado {} é substituído pela descrição gerada por generateAttachments().
    • generateTestCases(): já está sobrescrito com uma implementação da geração de mensagens descrita acima, mas pode ser adaptado ainda mais, se necessário.