Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
drs-malware-scan — AWS로 온프레미스 서버에서 파일 기반 맬웨어 스캔을 수행하세요. | Kitploit
도구/GitHubGitHub/aws-samples/drs-malware-scan
Vulnerability ScannersMalware AnalysisCloud SecurityThreat IntelligenceIncident Response
GitHubaws-samples/drs-malware-scan

drs-malware-scan

AWS로 온프레미스 서버에서 파일 기반 맬웨어 스캔을 수행하세요.

저장소 보기
142252년 전아직 검토되지 않음

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
웹사이트
공유

AWS 서비스를 사용한 온프레미스 서버의 악성코드 스캔 분석 수행

온프레미스 악성코드 탐지의 과제

보안팀이 예산 및 리소스 제약으로 인해 모든 온프레미스 서버를 지속적으로 모니터링하는 것은 어려울 수 있습니다. 최신 악성코드는 다양한 난독화 기술을 사용하므로 서명 기반 안티바이러스만으로는 충분하지 않습니다. 서버 관리자는 과거의 모든 서버에서 보안 이벤트를 볼 수 있는 가시성이 부족할 수 있습니다. 중앙 집중식 모니터링 및 알림 없이 사고 발생 시 손상된 시스템과 복원해도 안전한 백업을 판단하는 것은 어렵습니다. 서버 관리자가 고급 위협 탐지를 위해 추가 보안 도구를 설정하고 유지 관리하는 것은 부담스럽습니다. 감염을 탐지하고 복구하는 평균 시간(Mean Time to Detect and Remediate)을 단축하는 것은 중요하지만 적절한 자동화 솔루션 없이는 달성하기 어렵습니다.

포괄적인 위협 인텔리전스 없이 사고 발생 시 어떤 백업 이미지가 복원해도 안전한지 결정하는 것도 또 다른 어려운 문제입니다. 백업이 있더라도 시스템이 정확히 언제 손상되었는지 모르면 맹목적으로 백업에서 복원하는 것은 위험합니다. 이로 인해 악성코드를 복원하고 사고 대응 중에 더 귀중한 데이터와 시스템을 잃을 위험이 높아집니다. 침투 타임라인을 정확히 찾고 복원을 위한 안전한 백업을 권장하는 자동화된 솔루션이 필요합니다.

AWS 서비스를 사용하여 이러한 과제를 해결하는 방법

이 솔루션은 AWS Elastic Disaster Recovery (AWS DRS), Amazon GuardDuty 및 AWS Security Hub를 활용하여 온프레미스 서버의 악성코드 탐지 문제를 해결합니다.

이 서비스 조합은 성능에 영향을 주지 않으면서 온프레미스 서버를 지속적으로 모니터링할 수 있는 비용 효율적인 방법을 제공합니다. 또한 중앙 위협 분석을 통해 침해 타임라인을 식별하여 복원을 위한 안전한 특정 시점 백업을 결정하는 데 도움이 됩니다.

  • AWS Elastic Disaster Recovery (AWS DRS)는 저렴한 스토리지, 최소한의 컴퓨팅 및 특정 시점 복구를 사용하여 온프레미스 및 클라우드 기반 애플리케이션을 빠르고 안정적으로 복구하여 가동 중지 시간과 데이터 손실을 최소화합니다.
  • Amazon GuardDuty는 AWS 계정과 워크로드에서 악의적인 활동을 지속적으로 모니터링하고 가시성 및 수정을 위한 상세한 보안 결과를 제공하는 위협 탐지 서비스입니다.
  • AWS Security Hub는 보안 모범 사례 점검을 수행하고, 알림을 집계하며, 자동 수정을 활성화하는 클라우드 보안 태세 관리(CSPM) 서비스입니다.

아키텍처

sample

솔루션 설명

악성코드 스캔 솔루션은 온프레미스 서버가 이미 AWS DRS로 복제되고 있으며, Amazon GuardDuty 및 AWS Security Hub가 활성화되어 있다고 가정합니다. 이 리포지토리의 cdk 스택은 아키텍처 다이어그램에서 DRS Malware Scan이라고 표시된 상자만 배포합니다.

  1. AWS DRS는 온프레미스 환경(또는 다른 클라우드 공급자)의 소스 서버를 AWS로 복제하고 있습니다. AWS DRS 설정에 대한 자세한 내용은 빠른 시작 가이드를 참조하세요.
  2. Amazon GuardDuty가 이미 활성화되어 있습니다.
  3. AWS Security Hub가 이미 활성화되어 있습니다.
  4. 악성코드 스캔 솔루션은 Amazon EventBridge의 스케줄 규칙(접두사 DrsMalwareScanStack-ScheduleScanRule)에 의해 트리거됩니다. 필요에 따라 스캔 빈도를 조정할 수 있습니다(예: 하루에 한 번, 일주일에 한 번 등).
  5. Amazon EventBridge의 스케줄 규칙은 소스 서버 DynamoDB 테이블에서 스캔할 소스 서버를 수집하는 Submit Orders 람다 함수(접두사 DrsMalwareScanStack-SubmitOrders)를 트리거합니다.
  6. 주문은 Scan Orders라는 SQS FIFO 대기열(접두사 DrsMalwareScanStack-ScanOrdersfifo)에 배치됩니다. 이 대기열은 동일한 DRS 인스턴스에 매핑된 스캔 요청을 직렬화하여 경합 상태를 방지하는 데 사용됩니다.
  7. Process Order 람다는 대기열에서 악성코드 스캔 주문을 가져와 강화하여 이후 악성코드 스캔 작업을 준비합니다. 예를 들어, 주문에 제공된 DRS 소스 서버와 연결된 복제 중인 DRS 인스턴스의 ID를 삽입합니다. Process Order의 출력은 GuardDuty 악성코드 스캔을 호출하는 데 필요한 모든 정보가 포함된 악성코드 스캔 명령입니다.
  8. 악성코드 스캔 작업은 볼륨 수준에서 DRSVolumeAnnotationsDDBTable을 사용하여 추적되며 보고 기능을 제공합니다.
  9. 악성코드 스캔 명령은 복원력을 높이기 위해 Scan Commands SQS FIFO 대기열(접두사 DrsMalwareScanStack-ScanCommandsfifo)에 삽입됩니다.
  10. Process Commands 함수는 API 스로틀링을 방지하기 위해 최대 초당 1개의 명령 속도로 대기열에 있는 스캔 명령을 제출합니다. 이 함수는 Amazon GuardDuty가 제공하는 주문형 악성코드 스캔 기능을 트리거합니다.
  11. Amazon GuardDuty 악성코드 작업의 실행 상태는 Amazon GuardDuty 서비스에서 모니터링할 수 있습니다.
  12. 악성코드 스캔 작업의 결과는 Amazon CloudWatch Logs로 라우팅됩니다.
  13. Subscription Filter 람다 함수는 스캔 결과를 수신하고 DynamoDB를 사용하여 결과를 추적합니다(14단계).
  14. DRS Instance Annotations DynamoDB 테이블은 인스턴스 수준에서 악성코드 스캔 작업의 상태를 추적합니다.
  15. ScanReportStack이라는 CDK 스택은 Scan Report 람다 함수(접두사 ScanReportStack-ScanReport)를 배포하여 접두사 scanreportstack-scanreportbucket이 있는 Amazon S3 버킷을 채웁니다.
  16. AWS Security Hub는 Amazon GuardDuty의 결과를 집계하고 상호 연관시킵니다.
  17. Security Hub 결과 이벤트는 EventBridge 규칙(접두사 DrsMalwareScanStack-SecurityHubAnnotationsRule)에 의해 포착됩니다.
  18. Security Hub Annotations 람다 함수(접두사 DrsMalwareScanStack-SecurityHubAnnotation)는 영향을 받는 소스 서버에 대한 상황별 정보를 사용하여 결과에 추가 노트(주석)를 생성합니다. 이 추가 정보는 Security Hub 결과 내의 Notes 섹션에서 볼 수 있습니다.
  19. 후속 활동은 채택된 사고 대응 프로세스에 따라 달라집니다. 예를 들어, 감염 날짜를 기준으로 AWS DRS를 사용하여 악성코드 감염 날짜 이전의 스냅샷을 사용하여 특정 시점 복구를 수행할 수 있습니다.
  20. 다중 계정 시나리오에서 이 솔루션은 AWS DRS 솔루션을 호스팅하는 AWS 계정에 직접 배포할 수 있습니다. Amazon GuardDuty 결과는 중앙 보안 계정으로 자동 전송됩니다.

사용법

사전 요구사항

  • AWS 계정.

  • Amazon Elastic Disaster Recovery(DRS)가 구성되어 있고 동기화 중인 소스 서버가 1개 이상 있어야 합니다. 그렇지 않은 경우 이 문서를 확인하세요. 복제 구성은 AWS Key Management Service(AWS KMS)의 사용자 관리형 키(CMK)를 사용한 EBS 암호화를 고려해야 합니다. Amazon GuardDuty Malware Protection은 EBS의 기본 AWS 관리형 키를 지원하지 않습니다.

  • 이 솔루션의 구성 요소를 배포할 수 있는 IAM 권한.

  • Amazon GuardDuty가 활성화되어 있어야 합니다. 그렇지 않은 경우 이 문서를 확인하세요.

  • Amazon Security Hub가 활성화되어 있어야 합니다. 그렇지 않은 경우 이 문서를 확인하세요.

    경고
    현재 Amazon GuardDuty Malware 스캔은 EBS 관리형 키로 암호화된 EBS 볼륨을 지원하지 않습니다. DRS로 복제된 온프레미스(또는 다른 클라우드) 서버를 스캔하기 위해 이 솔루션을 사용하려면 KMS에서 자체 암호화 키를 사용하여 DRS 복제를 설정해야 합니다. 현재 복제 서버에서 EBS 관리형 키를 사용 중인 경우 DRS 콘솔에서 암호화 설정을 자체 KMS 키를 사용하도록 변경할 수 있습니다.

배포

  1. Cloud9 환경 생성 AWS 계정에 Ubuntu 이미지(성능 향상을 위해 최소 t3.small)로 Cloud9 환경을 생성합니다. Cloud9 환경을 열고 이 리포지토리의 코드를 클론합니다. 참고: Amazon Linux 2에는 node v16이 있으며, 이는 2023-09-11 이후로 더 이상 지원되지 않습니다.

    root@kitploit:~
    git clone https://github.com/aws-samples/drs-malware-scan
    
    root@kitploit:~
    cd drs-malware-scan
    
    root@kitploit:~
    sh check_loggroup.sh
    
  2. CDK 스택 배포 Cloud9 터미널에서 다음 명령을 실행하여 배포를 확인합니다.

    root@kitploit:~
    npm install
    
    root@kitploit:~
    cdk bootstrap
    
    root@kitploit:~
    cdk deploy --all
    

    참고
    이 솔루션은 2개의 스택으로 구성됩니다.

    • DrsMalwareScanStack: 악성코드 스캔 기능에 필요한 모든 리소스를 배포합니다. 이 스택은 필수입니다. 이 스택만 배포하려면 cdk deploy DrsMalwareScanStack을 실행할 수 있습니다.
    • ScanReportStack: 보고에 필요한 리소스(Amazon Lambda 및 Amazon S3)를 배포합니다. 이 스택은 선택 사항입니다. 이 스택만 배포하려면 cdk deploy ScanReportStack을 실행할 수 있습니다.

    두 스택을 모두 배포하려면 cdk deploy --all을 실행할 수 있습니다.

구성

  1. DRS 소스 서버가 지속적으로 복제되고 정상 상태인지 확인합니다. 이는 GuardDuty API의 제한 사항 때문에 필요합니다. 현재 이 글을 쓰는 시점에는 DRS 스냅샷을 스캔할 수 있는 공개 AWS API가 없습니다. DRS 소스 서버 데이터에 대해 악성코드 스캔을 수행하는 유일한 방법은 AWS DRS가 관리하는 복제 서버(Amazon EC2 인스턴스)에 대해 스캔을 수행하는 것입니다. 복제가 정상 상태로 실행되지 않으면 DRS 악성코드 스캔이 성공적으로 완료되지 않을 수 있습니다. ReadyforRecovery=Ready인지 확인해야 합니다.

  2. 스캔할 소스 서버 식별. AWS DRS로 복제 중인 모든 서버 중에서 스캔할 후보 서버 목록을 결정해야 합니다. AWS DRS 콘솔에서 솔루션이 스캔하기를 원하는 소스 서버 이름을 복사하여 텍스트 편집기에 붙여넣습니다. 이는 다음 단계에서 사용됩니다.

        sample

  1. DynamoDB 테이블 업데이트. 스캔할 서버 목록은 CDK 스택이 생성한 DynamoDB 테이블(접두사 DrsMalwareScanStack-SourceServersDDBTable)에 저장됩니다. AWS DRS가 복제하는 각 소스 서버에 대해 DynamoDB 항목을 생성해야 합니다. 이를 위해 Amazon DynamoDB 서비스로 이동하여 다음 단계를 따르세요.

        sample

  1. 악성코드 스캔 작업 예약. Amazon EventBridge 서비스로 이동하여 스택이 생성한 기존 규칙을 수정합니다. 접두사 DrsMalwareScanStack-ScheduleScanRule이 있는 규칙을 편집하고 악성코드 스캔 분석의 스캔 빈도를 설정합니다. 또한 이 규칙은 기본적으로 비활성화되어 있으므로 활성화하세요.

        sample

  1. Amazon GuardDuty가 악성코드 스캔 작업을 트리거했는지 확인 솔루션이 예상대로 작동하는지 확인하려면 Amazon GuardDuty -> Malware scans 콘솔에서 확인할 수 있습니다. 예약 시간 후 몇 초 이내에 ScanStatus = Running 상태의 작업이 표시되어야 합니다. 표시되지 않으면 아래 문제 해결 섹션을 확인하세요.

        sample

  1. 온프레미스 서버에서 잠재적인 악성코드 결과를 확인하기 위해 AWS SecurityHub 확인 GuardDuty와 Security Hub의 통합을 통해 GuardDuty의 결과를 Security Hub로 보낼 수 있습니다.
    • Security Hub는 결과만 표시하므로 ScanResult=Clean인 악성코드 스캔 작업은 Security Hub 콘솔에 표시되지 않습니다(ScanResult=Infected인 작업만 표시됨).
    • AWS Security Hub 콘솔 내에서 Findings로 이동하여 ProductName=GuardDuty로 필터를 적용할 수 있습니다(아래 애니메이션 참조).
    • 솔루션은 결과의 Notes 섹션에 주석을 추가하여 감염된 온프레미스 서버의 이름을 강조 표시합니다.
    • Security Hub는 Amazon EventBridge와 통합되어 SOC에 이메일 보내기, Slack 채널에 사고 보고 등 응답 및 수정 활동을 쉽게 자동화할 수 있습니다. 자세한 내용은 이 링크를 확인하세요.

        sample

  1. 선택 사항: S3에서 악성코드 스캔 보고서 파일 확인 ScanReportStack 스택을 배포한 경우 필요에 따라 보고서를 실행하도록 예약할 수 있습니다. 보고서는 DRSVolumeAnnotationsDDBTable DynamoDB 테이블의 내용을 추출하여 스택이 생성한 Amazon S3 버킷(접두사 scanreportstack-scanreportbucket)에 씁니다. 이 보고서는 규칙이 트리거될 때마다 덮어쓰여집니다(누적됨).

    • Amazon EventBridge 규칙을 활성화하고 보고서를 실행할 일정을 설정합니다. 접두사 ScanReportStack-ScanReportRule이 있는 규칙을 편집하여 악성코드 스캔 분석의 스캔 빈도와 분석할 DRS 소스 서버 목록을 설정합니다. 또한 이 규칙은 기본적으로 비활성화되어 있으므로 활성화하세요.

           sample

    • 보고서를 확인하려면 Amazon S3 버킷(접두사 scanreportstack-scanreportbucket)에서 csv 파일을 쿼리할 수 있습니다.

           sample

  2. 선택 사항: 다중 계정 구성 다중 계정 전략의 일환으로 모든 보안 결과를 중앙 집중화하기 위해 지정된 보안 계정이 있는 경우 이 솔루션도 작동합니다. 보안 팀은 보안 계정에서 동일한 분석을 수행할 수 있으며, 연결된 계정에 보고된 Security Hub 및 GuardDuty 결과는 자동으로 중앙 보안 계정으로 복사됩니다.

문제 해결

모든 람다 함수는 로그를 Amazon CloudWatch로 라우팅합니다. 각 함수의 실행을 확인하려면 각 함수에 대한 적절한 CloudWatch 로그 그룹을 검사하고 /aws/lambda/DrsMalwareScanStack-* 패턴을 찾으십시오.

악성코드 스캔 작업의 지속 시간은 스캔할 서버/볼륨 수(및 크기)에 따라 달라집니다. Amazon GuardDuty가 악성코드를 발견하면 SecurityHub 결과를 생성합니다. 솔루션은 이 이벤트를 가로채서 $StackName-SecurityHubAnnotations 람다를 실행하여 악성코드가 있는 DRS 소스 서버의 이름이 포함된 메모로 SecurityHub 결과를 보강합니다.

SQS FIFO 대기열은 AWS SQS 콘솔의 Messages available 및 Message in flight 지표를 사용하여 모니터링할 수 있습니다.

DRS Volume Annotations DynamoDB 테이블은 각 악성코드 스캔 작업의 상태를 추적합니다.

Amazon GuardDuty에는 스캔 작업을 건너뛰는 이유가 문서화되어 있습니다. 자세한 내용은 악성코드 스캔 중 리소스 건너뛰기 이유를 확인하세요.

Amazon GuardDuty 악성코드 스캔 작업의 로그를 분석하려면 /aws/guardduty/malware-scan-events Amazon CloudWatch 로그 그룹을 확인할 수 있습니다. 이 로그 그룹의 기본 로그 보존 기간은 90일이며, 이후 로그 이벤트는 자동으로 삭제됩니다.

정리

  1. 터미널에서 다음 명령을 실행합니다.

    root@kitploit:~
    cdk destroy --all
    
  2. (선택 사항) Lambda 함수와 연결된 CloudWatch 로그 그룹을 삭제합니다.

AWS 비용 추정 분석

이 분석의 목적을 위해 가상의 시나리오를 예로 가정했습니다. 다음 비용 추정치는 미국 동부(us-east-1) 리전의 서비스를 기준으로 합니다.

예상 시나리오:

  • 복제(DR)할 소스 서버 2개 (총 스토리지: 100GB - 디스크 4개)
  • 월별 악성코드 스캔 3TB
  • EBS 스냅샷 보존 기간 30일
  • 매일 악성코드 스캔
월 비용12개월 총 비용
171.22 USD2,054.74 USD

서비스별 세부 내역:

서비스 이름설명월 비용 (USD)
AWS Elastic Disaster Recovery소스 서버 2개 / 복제 서버 1개 / 디스크 4개 / 100GB / EBS 스냅샷 보존 기간 30일71.41
Amazon GuardDuty월별 악성코드 스캔 3TB94.56
Amazon DynamoDB100MB 읽기 1/초 쓰기 1/초3.65
AWS Security Hub계정 1개 / 보안 점검 100회 / 수집된 결과 1000개0.10
AWS EventBridge사용자 정의 이벤트 100만 개1.00
Amazon Cloudwatch월별 수집 1GB0.50
AWS LambdaARM Lambda 함수 5개 - 128MB / 10초0.00
Amazon SQSSQS FIFO 2개0.00
합계171.22

참고 여기에 제시된 수치는 AWS Pricing Calculator에서 파생된 위 가정을 기반으로 한 추정치입니다. 자세한 내용은 참고용으로 이 요금 계산기를 확인하세요. 참조된 계산기에서 서비스 구성을 조정하여 자체 추정을 수행할 수 있습니다. 이 추정에는 적용될 수 있는 잠재적 세금 또는 추가 요금이 포함되지 않습니다. 실제 요금은 사용량 및 이 분석에서 다루지 않은 추가 서비스에 따라 달라질 수 있음을 기억하는 것이 중요합니다. 중요한 환경의 경우 Business Support Plan을 포함하는 것이 좋습니다(추정에 포함되지 않음).

보안

자세한 내용은 CONTRIBUTING을 참조하세요.

작성자

  • Rodrigo Monge
  • Thierry Francois
  • Diego Pérez Holguín
  • Leandro Santi

라이선스

이 샘플 코드는 MIT-0 라이선스에 따라 사용이 허가됩니다. LICENSE 파일을 참조하세요.

도구 다운로드