
Realize a varredura de malware baseada em arquivos em seus servidores locais com a AWS
Pode ser difícil para as equipes de segurança monitorar continuamente todos os servidores locais devido a restrições de orçamento e recursos. O antivírus baseado em assinaturas sozinho é insuficiente, pois o malware moderno usa várias técnicas de ofuscação. Os administradores de servidores podem não ter visibilidade histórica dos eventos de segurança em todos os servidores. Determinar sistemas comprometidos e backups seguros para restaurar durante incidentes é desafiador sem monitoramento e alertas centralizados. É oneroso para os administradores de servidores configurar e manter ferramentas de segurança adicionais para detecção avançada de ameaças. O tempo médio rápido para detectar e remediar infecções é crítico, mas difícil de alcançar sem a solução automatizada correta.
Determinar qual imagem de backup é segura para restaurar durante incidentes sem inteligência de ameaças abrangente é outro problema difícil. Mesmo que backups estejam disponíveis, sem saber exatamente quando um sistema foi comprometido, é arriscado restaurar cegamente a partir de backups. Isso aumenta a chance de restaurar malware e perder ainda mais dados e sistemas valiosos durante a resposta a incidentes. Há a necessidade de uma solução automatizada que possa identificar a linha do tempo da infiltração e recomendar backups seguros para restauração.
A solução utiliza AWS Elastic Disaster Recovery (AWS DRS), e para resolver os desafios da detecção de malware para servidores locais.
Essa combinação de serviços oferece uma maneira econômica de monitorar continuamente servidores locais em busca de malware sem impactar o desempenho. Também ajuda a determinar backups seguros de ponto de recuperação no tempo para restauração, identificando a linha do tempo de comprometimentos por meio de análises centralizadas de ameaças.

A solução de varredura de malware pressupõe que os servidores locais já estejam sendo replicados com AWS DRS, e que Amazon GuardDuty e AWS Security Hub estejam habilitados. A stack CDK neste repositório implantará apenas os componentes rotulados como DRS Malware Scan no diagrama de arquitetura.
Uma conta AWS.
Amazon Elastic Disaster Recovery (DRS) configurado, com pelo menos 1 servidor de origem em sincronia. Caso contrário, consulte esta documentação. A Configuração de Replicação deve considerar a criptografia EBS usando Chave Gerenciada Personalizada (CMK) do AWS Key Management Service (AWS KMS). O Amazon GuardDuty Malware Protection não suporta a chave gerenciada padrão da AWS para EBS.
Privilégios IAM para implantar os componentes desta solução.
Amazon GuardDuty habilitado. Caso contrário, consulte esta documentação.
Amazon Security Hub habilitado. Caso contrário, consulte esta documentação.
Aviso
Atualmente, a varredura de malware do Amazon GuardDuty não oferece suporte a volumes EBS criptografados com chaves gerenciadas pela EBS. Se você deseja usar esta solução para escanear seus servidores locais (ou de outra nuvem) replicados com DRS, é necessário configurar a replicação DRS com sua própria chave de criptografia no KMS. Se você estiver usando atualmente chaves gerenciadas pela EBS em seus servidores replicados, pode alterar as configurações de criptografia para usar sua própria chave KMS no console do DRS.
Crie um ambiente Cloud9 com imagem Ubuntu (pelo menos t3.small para melhor desempenho) em sua conta AWS. Abra seu ambiente Cloud9 e clone o código deste repositório. Nota: Amazon Linux 2 tem node v16 que não é mais suportado desde 2023-09-11
git clone https://github.com/aws-samples/drs-malware-scan
cd drs-malware-scan
sh check_loggroup.sh
Implante a stack CDK executando o seguinte comando no terminal do Cloud9 e confirme a implantação
npm install
cdk bootstrap
cdk deploy --all
Nota
A solução é composta por 2 stacks:
cdk deploy DrsMalwareScanStackcdk deploy ScanReportStackSe você quiser implantar ambas as stacks, execute cdk deploy --all
Certifique-se de que o(s) servidor(es) de origem DRS esteja(m) replicando continuamente e em um estado de replicação saudável. Isso é necessário devido a uma limitação na API do GuardDuty: no momento desta redação, não existe uma API pública da AWS para escanear snapshots DRS. A única maneira de realizar a varredura de malware nos dados do(s) servidor(es) de origem DRS é realizar uma varredura no(s) Servidor(es) de Replicação (instâncias Amazon EC2) gerenciados pelo AWS DRS. Se a replicação não estiver em um estado saudável, sua varredura de malware DRS pode não ser concluída com sucesso. Você deve confirmar ReadyforRecovery=Ready
Identifique os Servidores de Origem para escanear. De todos os servidores sendo replicados com AWS DRS, você precisa determinar a lista de servidores candidatos para escanear. No console do AWS DRS, copie os nomes dos servidores de origem que você gostaria que a solução escaneasse e cole em um editor de texto. Isso será usado na próxima etapa.





Opcional: Verifique o arquivo de relatório de varredura de malware no S3. Caso você tenha implantado a stack ScanReportStack, pode agendar um relatório para ser executado com a frequência que atender às suas necessidades. O relatório extrairá o conteúdo da tabela DynamoDB DRSVolumeAnnotationsDDBTable e o escreverá no bucket Amazon S3 criado pela stack (com prefixo scanreportstack-scanreportbucket). Este relatório é sobrescrito (e cumulativo) toda vez que a regra é acionada.


Opcional: Para configuração de múltiplas contas Caso você tenha uma conta de segurança designada para centralizar todas as descobertas de segurança como parte de uma estratégia de múltiplas contas, esta solução também funcionará. A equipe de segurança pode realizar a mesma análise na conta de segurança; as descobertas do Security Hub e GuardDuty relatadas nas contas vinculadas são copiadas automaticamente para a conta de segurança centralizada.
Todas as funções lambda roteiam logs para Amazon CloudWatch. Você pode verificar a execução de cada função inspecionando os grupos de logs do CloudWatch apropriados para cada função, procure pelo padrão /aws/lambda/DrsMalwareScanStack-*.
A duração da operação de varredura de malware dependerá do número de servidores/volumes a serem escaneados (e seu tamanho). Quando o Amazon GuardDuty encontra malware, ele gera uma descoberta no SecurityHub: a solução intercepta esse evento e executa a lambda $StackName-SecurityHubAnnotations para aumentar a descoberta do SecurityHub com uma nota contendo o(s) nome(s) do(s) servidor(es) de origem DRS com malware.
As filas SQS FIFO podem ser monitoradas usando as métricas Messages available e Message in flight do console AWS SQS
A tabela DynamoDB DRS Volume Annotations mantém o status de cada operação de varredura de malware.
O Amazon GuardDuty tem razões documentadas para pular operações de varredura. Para mais informações, consulte Motivos para pular recurso durante a varredura de malware.
Para analisar logs das operações de varredura de malware do Amazon GuardDuty, você pode verificar o LogGroup do Amazon Cloudwatch /aws/guardduty/malware-scan-events. O período de retenção de logs padrão para este grupo de logs é de 90 dias, após o qual os eventos de log são excluídos automaticamente.
Execute os seguintes comandos no seu terminal:
cdk destroy --all
(Opcional) Exclua os grupos de logs do CloudWatch associados às funções Lambda.
Para fins desta análise, assumimos um cenário fictício como exemplo. As seguintes estimativas de custo são baseadas em serviços localizados na região da Virgínia do Norte (us-east-1).
| Custo Mensal | Custo Total por 12 Meses |
|---|---|
| 171.22 USD | 2,054.74 USD |
| Nome do Serviço | Descrição | Custo Mensal (USD) |
|---|---|---|
| AWS Elastic Disaster Recovery | 2 Servidores de Origem / 1 Servidor de Replicação / 4 discos / 100GB / 30 dias de Período de Retenção de Snapshot EBS | 71.41 |
| Amazon GuardDuty | 3 TB de Varredura de Malware por Mês | 94.56 |
| Amazon DynamoDB | 100MB 1 Leitura/Segundo 1 Gravação/Segundo | 3.65 |
| AWS Security Hub | 1 Conta / 100 Verificações de Segurança / 1000 Descobertas Ingeridas | 0.10 |
| AWS EventBridge | 1M eventos personalizados | 1.00 |
| Amazon Cloudwatch | 1GB ingerido/mês | 0.50 |
| AWS Lambda | 5 Funções Lambda ARM - 128MB / 10seg | 0.00 |
| Amazon SQS | 2 SQS Fifo | 0.00 |
| Total | 171.22 |
Nota
Os valores apresentados aqui são estimativas baseadas nas premissas descritas acima, derivadas da Calculadora de Preços da AWS. Para mais detalhes, consulte esta calculadora de preços como referência. Você pode ajustar a configuração dos serviços na calculadora referenciada para fazer sua própria estimativa. Esta estimativa não inclui impostos potenciais ou encargos adicionais que possam ser aplicáveis. É crucial lembrar que as taxas reais podem variar com base no uso e em quaisquer serviços adicionais não cobertos nesta análise. Para ambientes críticos, é aconselhável incluir o Business Support Plan (não considerado na estimativa)
Consulte CONTRIBUTING para mais informações.
Este código de exemplo está licenciado sob a Licença MIT-0. Consulte o arquivo LICENSE.