
Ferramenta de teste de exfiltração de dados multiprotocolo que simula cenários reais de egresso sobre FTP, HTTP, HTTPS, DNS, ICMP, SMB, SMTP e SFTP para validar capacidades de detecção.
Egress-Assess é uma ferramenta usada para testar capacidades de detecção de dados de saída.
Para configurar, execute o script de configuração incluído ou realize o seguinte:
openssl req -new -x509 -keyout server.pem -out server.pem -days 365 -nodes
Posts de blog estão disponíveis aqui:
O caso de uso típico do Egress-Assess é copiar esta ferramenta em dois locais. Um local atuará como servidor, o outro como cliente. O Egress-Assess pode enviar dados via FTP, HTTP e HTTPS.
Para extrair dados via FTP, você primeiro iniciaria o servidor FTP do Egress-Assess selecionando “--server ftp” e fornecendo um nome de usuário e senha para usar:
./Egress-Assess.py --server ftp --username testuser --password pass123
Agora, para que o cliente se conecte e envie dados ao servidor FTP, você poderia executar...
./Egress-Assess.py --client ftp --username testuser --password pass123 --ip 192.168.63.149 --datatype ssn
Além disso, você pode configurar o Egress-Assess para atuar como um servidor web executando....
./Egress-Assess.py --server https
Então, para enviar dados ao servidor FTP, e especificamente enviar 15 megabytes de dados de cartão de crédito, execute o seguinte comando...
./Egress-Assess.py --client https --data-size 15 --ip 192.168.63.149 --datatype cc
Outras observações:
SMTP - O cliente cria uma mensagem de e-mail colocando os dados no corpo da mensagem ou, se for um arquivo, como anexo. O cliente então tenta fazer uma conexão SMTP com o Servidor EgressAssess na porta 25 (ou uma porta alternativa fornecida). O servidor SMTP não exige autenticação e aceita a conexão de entrada e processa o e-mail. O processamento da mensagem de e-mail extrai os dados do corpo do e-mail ou do arquivo anexado na mensagem. Este teste não tenta enviar o e-mail através do servidor de e-mail da organização.
SMTP_Outlook – (Este módulo está disponível apenas no cliente PowerShell). Se um cliente Outlook foi previamente configurado, o cliente PowerShell cria um Objeto COM para o Outlook (Isso pode exigir que o usuário forneça autenticação dependendo da configuração). O cliente PowerShell então criará uma mensagem de e-mail com os dados no corpo do e-mail ou, se for um arquivo, como anexo. Os e-mails são enviados do Outlook como o usuário previamente configurado. (Algumas configurações de segurança podem notificar o usuário de que um programa está tentando enviar e-mails em segundo plano e precisa selecionar permitir). Para que este módulo funcione, um registro MX precisa ser criado para o Servidor EgressAssess. O servidor SMTP do EgressAssess aceita todas as mensagens de e-mail enviadas para o domínio do registro MX e recebe o e-mail com os anexos de arquivo ou os dados como texto no corpo do e-mail.
Invoke-EssessAgress -Client SMTPOutlook -IP <domain of SMTP Sever> -NoPing -DataType "ssn"
ICMP - Os dados são divididos em bytes e codificados em base64 e enviados pela rede em uma requisição ICMP Tipo 8 ECHO. Os dados são colocados dentro do campo de dados do pacote. As requisições ECHO são feitas continuamente ao Servidor EgressAssess, que recebe a requisição ICMP, coleta os dados e os decodifica.
FTP - Dados e arquivos são enviados ao servidor FTP do EgressAssess seguindo o uso típico do protocolo. Um nome de usuário e senha são usados para acessar o servidor. Veja exemplos acima.
SFTP - Dados e arquivos são enviados seguindo o protocolo SFTP. Um nome de usuário e senha são usados para acessar o servidor.
HTTP(S) - Dados e arquivos são enviados via requisição web POST ao servidor web do EgressAssess. Para o cliente Python, os dados são postados em http(s):///post_data.php e para o cliente PowerShell os dados são postados em http(s):///posh_file.php.
SMB - O Servidor EgressAssess (usando o SimpleSMBserver do Impacket) cria um compartilhamento SMB /TRANSFER. O sistema cliente conecta-se ao compartilhamento sem autenticação e transfere o arquivo. Assim como conectar-se a um compartilhamento de rede e copiar um arquivo. Existe a opção de adicionar nome de usuário e senha para autenticação, se desejado. Conforme observado acima, determine de qual sistema você está saindo e suas políticas de segurança para ver se você pode usar o antigo e vulnerável SMBv1 ou precisa habilitar SMBv2.
DNS_TXT - Dados e arquivos são divididos em bytes, convertidos em base64 e divididos em consultas DNS TXT separadas que são feitas em um endereço IP ou Nome de Domínio. O cliente tenta conectar-se diretamente ao Servidor EgressAssess e faz a consulta DNS TXT. O Servidor então filtra os dados dos pacotes e decodifica os dados. No cliente PowerShell, há uma opção para consultas empilhadas (Stacked). Isso fará até 7 consultas TXT em cada requisição DNS no servidor, o que aumenta a velocidade com que os dados são exfiltrados.
DNS_Resolved - Dados e arquivos são divididos em bytes e convertidos em base64. Os dados são então divididos e usados como parte de uma requisição DNS para resolver um subdomínio. <encoded_data>.domain.com. Para que isso funcione, um registro NS para o domínio precisa ser configurado para o servidor EgressAssess. Todas as requisições DNS são feitas ao servidor de nomes configurado no sistema e, em última análise, alcançam o servidor EgressAssess que foi previamente configurado. O servidor EgressAssess pega a seção de dados de cada requisição e remonta o arquivo.