
Effectuez une analyse de malware basée sur les fichiers sur vos serveurs sur site avec AWS
Il peut être difficile pour les équipes de sécurité de surveiller en continu tous les serveurs sur site en raison de contraintes budgétaires et de ressources. Un antivirus basé sur les signatures seul est insuffisant, car les malwares modernes utilisent diverses techniques d'obscurcissement. Les administrateurs serveur peuvent manquer de visibilité sur l'historique des événements de sécurité sur tous les serveurs. Déterminer les systèmes compromis et les sauvegardes sûres à partir desquelles restaurer lors d'incidents est difficile sans une surveillance et une alerte centralisées. Il est fastidieux pour les administrateurs serveur de configurer et de maintenir des outils de sécurité supplémentaires pour la détection avancée des menaces. Le temps moyen rapide pour détecter et remédier aux infections est critique mais difficile à atteindre sans la bonne solution automatisée.
Déterminer quelle image de sauvegarde est sûre à restaurer lors d'incidents sans une veille complète sur les menaces est un autre problème difficile. Même si des sauvegardes sont disponibles, sans savoir exactement quand un système a été compromis, il est risqué de restaurer aveuglément à partir de sauvegardes. Cela augmente le risque de restaurer des malwares et de perdre encore plus de données et de systèmes précieux lors de la réponse aux incidents. Il existe un besoin d'une solution automatisée capable de localiser la chronologie de l'infiltration et de recommander des sauvegardes sûres pour la restauration.
La solution exploite AWS Elastic Disaster Recovery (AWS DRS), Amazon GuardDuty et AWS Security Hub pour répondre aux défis de la détection de malware pour les serveurs sur site.
Cette combinaison de services offre un moyen économique de surveiller en continu les serveurs sur site pour détecter les malwares sans impact sur les performances. Elle permet également de déterminer des points de restauration sûrs dans le temps pour les sauvegardes en identifiant la chronologie des compromissions grâce à une analyse centralisée des menaces.
AWS Elastic Disaster Recovery (AWS DRS) minimise les temps d'arrêt et la perte de données avec une reprise rapide et fiable des applications sur site et dans le cloud en utilisant un stockage abordable, une puissance de calcul minimale et une récupération à un point dans le temps.
Amazon GuardDuty est un service de détection des menaces qui surveille en continu vos comptes et charges de travail AWS pour détecter toute activité malveillante et fournit des résultats de sécurité détaillés pour la visibilité et la remédiation.
AWS Security Hub est un service de gestion de la posture de sécurité dans le cloud (CSPM) qui effectue des vérifications des bonnes pratiques de sécurité, agrège les alertes et permet la remédiation automatisée.

La solution d'analyse de malware suppose que les serveurs sur site sont déjà répliqués avec AWS DRS, et qu'Amazon GuardDuty et AWS Security Hub sont activés. La pile CDK dans ce référentiel déploiera uniquement les boîtes étiquetées comme DRS Malware Scan dans le diagramme d'architecture.
Un compte AWS.
Amazon Elastic Disaster Recovery (DRS) configuré, avec au moins 1 serveur source synchronisé. Si ce n'est pas le cas, veuillez consulter cette documentation. La configuration de réplication doit prendre en compte le chiffrement EBS à l'aide d'une clé gérée personnalisée (CMK) d'AWS Key Management Service (AWS KMS). Amazon GuardDuty Malware Protection ne prend pas en charge la clé gérée par défaut d'AWS pour EBS.
Privilèges IAM pour déployer les composants de cette solution.
Amazon GuardDuty activé. Si ce n'est pas le cas, veuillez consulter cette documentation.
Amazon Security Hub activé. Si ce n'est pas le cas, veuillez consulter cette documentation.
Avertissement
Actuellement, l'analyse de malware Amazon GuardDuty ne prend pas en charge les volumes EBS chiffrés avec des clés gérées par EBS. Si vous souhaitez utiliser cette solution pour analyser vos serveurs sur site (ou d'autres clouds) répliqués avec DRS, vous devez configurer la réplication DRS avec votre propre clé de chiffrement dans KMS. Si vous utilisez actuellement des clés gérées par EBS avec vos serveurs de réplication, vous pouvez modifier les paramètres de chiffrement pour utiliser votre propre clé KMS dans la console DRS.
Créez un environnement Cloud9 avec une image Ubuntu (au moins t3.small pour de meilleures performances) dans votre compte AWS. Ouvrez votre environnement Cloud9 et clonez le code de ce référentiel. Remarque : Amazon Linux 2 dispose de node v16 qui n'est plus pris en charge depuis le 2023-09-11.
git clone https://github.com/aws-samples/drs-malware-scan
cd drs-malware-scan
sh check_loggroup.sh
Déployez la pile CDK en exécutant la commande suivante dans le terminal Cloud9 et confirmez le déploiement
npm install
cdk bootstrap
cdk deploy --all
Remarque
La solution est composée de 2 piles :
cdk deploy DrsMalwareScanStack.cdk deploy ScanReportStack.Si vous souhaitez déployer les deux piles, vous pouvez exécuter cdk deploy --all.
Assurez-vous que le(s) serveur(s) source DRS se répliquent en continu et dans un état de réplication sain. Ceci est nécessaire en raison d'une limitation de l'API GuardDuty : au moment de la rédaction de ce document, il n'existe pas d'API AWS publique pour analyser les instantanés DRS. La seule façon d'effectuer une analyse de malware sur les données du(des) serveur(s) source DRS est d'effectuer une analyse sur le(s) serveur(s) de réplication (instances Amazon EC2) géré(s) par AWS DRS. Si la réplication n'est pas en cours dans un état sain, votre analyse de malware DRS peut ne pas aboutir. Vous devez confirmer ReadyforRecovery=Ready.
Identifiez les serveurs sources à analyser. Parmi tous les serveurs répliqués avec AWS DRS, vous devez déterminer la liste des serveurs candidats à analyser. Depuis la console AWS DRS, copiez les noms des serveurs sources que vous souhaitez que la solution analyse et collez-les dans un éditeur de texte. Cela sera utilisé à l'étape suivante.





Facultatif : Consultez le fichier de rapport d'analyse de malware sur S3. Si vous avez déployé la pile ScanReportStack, vous pouvez planifier un rapport pour qu'il s'exécute aussi fréquemment que vous le souhaitez. Le rapport extraira le contenu de la table DynamoDB DRSVolumeAnnotationsDDBTable et l'écrira dans le bucket Amazon S3 créé par la pile (avec le préfixe scanreportstack-scanreportbucket). Ce rapport est écrasé (et cumulatif) chaque fois que la règle est déclenchée.


Facultatif : Pour une configuration multi-comptes. Si vous disposez d'un compte de sécurité désigné pour centraliser tous les résultats de sécurité dans le cadre d'une stratégie multi-comptes, cette solution fonctionnera également. L'équipe de sécurité peut effectuer la même analyse sur le compte de sécurité ; les résultats Security Hub et GuardDuty signalés dans les comptes liés sont automatiquement copiés dans le compte de sécurité centralisé.
Toutes les fonctions lambda acheminent les journaux vers Amazon CloudWatch. Vous pouvez vérifier l'exécution de chaque fonction en inspectant les groupes de journaux CloudWatch appropriés pour chaque fonction, recherchez le modèle /aws/lambda/DrsMalwareScanStack-*.
La durée de l'opération d'analyse de malware dépendra du nombre de serveurs/volumes à analyser (et de leur taille). Lorsqu'Amazon GuardDuty trouve un malware, il génère un résultat SecurityHub : la solution intercepte cet événement et exécute la lambda $StackName-SecurityHubAnnotations pour enrichir le résultat SecurityHub avec une note contenant le(s) nom(s) du(des) serveur(s) source DRS infecté(s).
Les files d'attente SQS FIFO peuvent être surveillées à l'aide des métriques Messages disponibles et Messages en vol depuis la console AWS SQS.
La table DynamoDB DRS Volume Annotations suit l'état de chaque opération d'analyse de malware.
Amazon GuardDuty a des raisons documentées d'ignorer les opérations d'analyse. Pour plus d'informations, veuillez consulter Raisons d'ignorer une ressource lors de l'analyse de malware.
Pour analyser les journaux des opérations d'analyse de malware Amazon GuardDuty, vous pouvez consulter le groupe de journaux Amazon CloudWatch /aws/guardduty/malware-scan-events. La période de rétention par défaut pour ce groupe de journaux est de 90 jours, après quoi les événements de journal sont automatiquement supprimés.
Exécutez les commandes suivantes dans votre terminal :
cdk destroy --all
(Facultatif) Supprimez les groupes de journaux CloudWatch associés aux fonctions Lambda.
Pour les besoins de cette analyse, nous avons supposé un scénario fictif à titre d'exemple. Les estimations de coûts suivantes sont basées sur les services situés dans la région de Virginie du Nord (us-east-1).
| Coût mensuel | Coût total sur 12 mois |
|---|---|
| 171,22 USD | 2 054,74 USD |
| Nom du service | Description | Coût mensuel (USD) |
|---|---|---|
| AWS Elastic Disaster Recovery | 2 serveurs sources / 1 serveur de réplication / 4 disques / 100 Go / 30 jours de période de rétention des instantanés EBS | 71,41 |
| Amazon GuardDuty | 3 To de malware analysé/mois | 94,56 |
| Amazon DynamoDB | 100 Mo 1 lecture/seconde 1 écriture/seconde | 3,65 |
| AWS Security Hub | 1 compte / 100 contrôles de sécurité / 1 000 résultats ingérés | 0,10 |
| AWS EventBridge | 1 M d'événements personnalisés | 1,00 |
| Amazon CloudWatch | 1 Go ingéré/mois | 0,50 |
| AWS Lambda | 5 fonctions Lambda ARM - 128 Mo / 10 secondes | 0,00 |
| Amazon SQS | 2 files SQS Fifo | 0,00 |
| Total | 171,22 |
Remarque Les chiffres présentés ici sont des estimations basées sur les hypothèses décrites ci-dessus, dérivées du calculateur de prix AWS. Pour plus de détails, veuillez consulter ce calculateur de prix à titre de référence. Vous pouvez ajuster la configuration des services dans le calculateur référencé pour faire votre propre estimation. Cette estimation n'inclut pas les taxes potentielles ou les frais supplémentaires qui pourraient s'appliquer. Il est crucial de se rappeler que les frais réels peuvent varier en fonction de l'utilisation et de tout service supplémentaire non couvert par cette analyse. Pour les environnements critiques, il est conseillé d'inclure le Business Support Plan (non pris en compte dans l'estimation)
Voir CONTRIBUTING pour plus d'informations.
Cet exemple de code est sous licence MIT-0. Voir le fichier LICENSE.