악성코드 분석은 악성 소프트웨어의 동작과 영향을 파악하기 위해 이를 조사하는 과정입니다. 본 가이드는 정적 분석과 동적 분석을 포함한 다양한 악성코드 분석 유형을 살펴봅니다.
위협 탐지 및 사고 대응에서 악성코드 분석의 중요성을 알아보세요. 악성코드 분석을 이해하는 것은 조직의 사이버 보안 역량을 강화하는 데 필수적입니다.
악성코드 분석이란 무엇인가?
 악성코드 분석은 악성코드의 행동, 기능 및 잠재적 영향을 이해하기 위해 이를 조사하고 연구하는 과정입니다. 이는 수동으로 수행될 수 있으며, 코드를 리버스 엔지니어링하고 분석하기 위한 도구와 기법을 사용하거나, 자동화된 도구와 분석 플랫폼을 사용하여 악성코드를 식별하고 분류할 수 있습니다. 악성코드 분석은 조직의 위협을 식별하고 이해하며, 이를 방어하기 위한 효과적인 전략을 개발하는 데 도움이 되므로 사이버 보안 및 사고 대응의 필수적인 부분입니다.
악성코드 분석은 네트워크가 심각도 수준에 따라 사고를 분류하고 침해 지표(IOCs)를 발견할 수 있게 합니다. 또한 보다 포괄적인 위협 헌팅 환경을 제공하고 IOC 경보 및 알림을 개선합니다.
악성코드 분석의 유형
악성코드 분석은 정적 분석, 동적 분석 또는 두 유형의 혼합 형태로 진행될 수 있습니다. 정적 분석을 사용할 때는 파일을 검사하여 악의적인 의도의 징후를 찾게 되며, 동적 분석을 사용하면 의심되는 코드를 샌드박스 환경에서 실행할 수 있습니다. 샌드박스를 사용하면 악성코드를 실제 시스템에서 격리하여 프로덕션 환경을 감염시키거나 바이러스가 네트워크로 유출되는 것을 방지할 수 있습니다.
악성코드 분석 활용 사례
컴퓨터 보안 사고 관리
이 경우, 조직은 악성코드가 네트워크에 침투했을 가능성이 있다고 판단합니다. 위협 대응 팀이 파견되어 위협을 처리합니다.
팀은 악성 파일에 대한 분석을 수행하여 악성코드의 위험성과 유형을 특정합니다. 또한 해당 악성코드가 조직 시스템에 미칠 수 있는 영향을 분석합니다.
악성코드 연구
학계 또는 업계 전문가들은 심층적인 악성코드 연구를 수행할 수 있습니다. 이 전문가들은 특정 악성코드의 작동 방식을 최대한 깊이 이해하려고 노력합니다.
SentinelLabs는 예를 들어 TrickBot Cobalt Strike FIN7 악성코드 체인에 대한 공격 및 통찰력을 얻었습니다.
이러한 수준의 연구와 이해는 악성 코드의 리버스 엔지니어링에 매우 중요하며, 악성 코드 분석과 샌드박스 환경에서의 악성 코드 테스트가 필요합니다.
침해 지표(IOC) 추출
소프트웨어 제품 및 솔루션 공급업체는 잠재적인 IOC를 파악하기 위해 대량 테스트 및 분석을 수행하는 경우가 많습니다. 이를 통해 보안 네트워크를 개선하여 시스템의 취약점을 선제적으로 보완할 수 있습니다.
악성코드 분석의 단계
악성코드 분석에는 일반적으로 네 가지 단계가 있으며, 진행될수록 더 복잡하고 구체적으로 진행됩니다. 네 가지 주요 단계는 다음과 같습니다.
1. 스캐닝 – 자동 분석
완전 자동화 도구는 이미 발견된 악성코드 샘플을 분석하여 형성된 탐지 모델에 의존합니다. 이를 통해 이러한 도구는 의심스러운 파일 및 프로그램을 스캔하여 악성코드인지 여부를 판단할 수 있습니다.
자동화된 분석은 네트워크 트래픽, 파일 활동, 레지스트리 키를 포함한 상세한 보고서도 생성할 수 있습니다. 이러한 도구는 가장 빠른 방법이며 분석가가 필요하지 않습니다.
이는 대량의 악성코드를 선별하고 방대한 네트워크를 테스트하는 데 적합합니다. 따라서 포함되는 정보의 양도 상대적으로 적습니다.
2. 정적 속성 분석
스캔이 완료되면 정적 속성 분석을 통해 악성코드를 면밀히 조사합니다. 이 단계에서 분석가는 악성코드를 실행하지 않고 위협의 정적 속성을 검토합니다. 이는 종종 격리된 환경이나 샌드박스 내에서 수행하는 작업입니다. 정적 속성에는 해시, 내장된 문자열, 내장된 리소스 및 헤더 정보가 포함됩니다. 디스어셈블러 및 네트워크 분석기와 같은 도구를 사용하면 이 단계에서 악성 코드의 작동 방식에 대한 정보를 얻을 수 있습니다. 상호작용적 행동 분석
분석가는 더 깊은 통찰을 얻기 위해 격리된 실험실 시스템에서 악성 파일을 실행하여 실제 동작 효과를 관찰할 수 있습니다.
대화형 행동 분석을 통해 테스터는 악성 코드가 시스템, 레지스트리, 파일 시스템, 프로세스 및 네트워크 활동에 어떤 영향을 미치는지, 그리고 누군가가 이를 어떻게 복제할 수 있는지 관찰하고 이해할 수 있습니다.
가상화 소프트웨어를 다운로드하여 게스트 운영 체제를 실행함으로써 안전한 테스트 환경을 구축할 수 있습니다. 이러한 샌드박스에서 악성코드를 테스트하는 것을 동적 분석이라고도 합니다.
이 방법의 가장 큰 문제점은 악성코드가 가상 머신에서 실행되고 있음을 감지하고 그에 따라 동작을 변경할 수 있다는 것입니다. 특정 조건이 충족될 때까지 잠복 상태를 유지할 수도 있습니다.
정적 분석과 동적 분석 방법을 결합한 하이브리드 분석 접근법을 사용할 수 있습니다.
4. 수동 코드 역분석
마지막으로 분석가는 파일의 코드를 수동으로 리버스 엔지니어링하고 샘플에 저장된 암호화된 데이터를 해독할 수 있습니다. 이를 통해 행동 분석 과정에서 드러나지 않았던 기능을 파악할 수 있으며, 분석 결과에 가치 있는 통찰력을 더할 수 있습니다.
이 단계에서는 디버거 및 디스어셈블러와 같은 추가 도구가 필요합니다.
악성코드 분석 환경 구축
악성코드 연구자에게 적절한 악성코드 분석 환경 구축은 악성코드를 올바르게 분석하고 조사하는 데 있어 중요한 단계입니다. 여기에는 Windows 10 및 REMnux Linux 가상 머신을 다운로드, 설치 및 구성하고, 가상 머신 간 통신을 위한 사설 네트워크를 설정하고, SentinelLabs RevCore Tools를 사용한 맞춤형 Windows 환경 구축, Windows 10 가상 머신의 트래픽 캡처 등이 포함됩니다.
최고의 악성코드 분석 도구
악성코드 분석을 수행하는 데 필요한 필수 도구에는 여러 가지 유형이 있습니다. 사이버 공격을 피하고 이해할 수 있도록 합니다. 여기에 나열된 도구 중 다수는 무료이지만, 전문적인 환경에서는 유료 버전을 적극 권장합니다.
디스어셈블러: 디스어셈블러는 IDA Pro 또는 Ghidra와 같은 디스어셈블러는 실행 대신 어셈블리 코드를 분해하여 정적 분석이 가능하게 합니다. 또한 바이너리 코드를 네이티브 코드로 변환할 수 있는 디컴파일러와도 함께 작동합니다.
디버거: x64dbg 또는 Windbg와 같은 디버거는 프로그램 실행을 조작하는 데 사용됩니다. 이를 통해 악성 코드가 실행될 때 어떤 일이 발생하는지 파악할 수 있으며, 악성 코드 샘플을 리버스 엔지니어링하여 작동 방식을 파악하는 데 도움이 될 수 있습니다.
또한 분석가는 프로그램 메모리의 특정 영역을 제어하여 네트워크에 미치는 영향을 파악할 수 있습니다.
16진수 편집기: HxD>와 같은 16진수 편집기는 모든 유형의 파일을 열고 그 내용을 바이트 단위로 표시할 수 있는 특수 편집기입니다. 이를 통해 악성코드를 완전히 분해하고 코드 해석을 시작할 수 있습니다.
모니터: 실시간 파일 시스템, 레지스트리, 프로세스/스레드 활동을 확인해야 할 때는 Process Monitor와 같은 고급 모니터링 도구를 사용해야 합니다. 이 도구는 추적에서 참조된 모든 프로세스 간의 관계를 보여주는 프로세스 트리를 표시하고 프로세스 세부 정보를 안정적으로 캡처합니다.
PE 분석: PeStudio, PE-bear 및 pefile는 PE 파일을 위한 프리웨어 리버싱 도구를 찾을 때 고려해 볼 만한 훌륭한 도구입니다. PE 섹션 레이아웃을 시각화할 때 유용하며, 파일 시그니처, 하드 코딩된 URL 및 IP 주소를 감지하는 데 도움이 될 수 있습니다.
네트워크 분석기: 이 유형의 소프트웨어는 분석가에게 악성 코드가 다른 컴퓨터와 어떻게 상호 작용하는지 알려줍니다. 위협의 연결 관계와 전송하려는 데이터를 보여줄 수 있습니다.
최첨단 엔드 투 엔드 엔터프라이즈 보안으로 시스템을 보호하세요
SentinelOne은 모든 기업 자산의 컨텍스트에서 예방, 탐지, 대응 및 추적을 수행할 수 있는 중앙 집중식 플랫폼을 제공합니다.
SentinelOne은 엔드포인트 보호, 탐지 및 대응, IoT 검색 및 제어 기능을 제공합니다. 악성코드 분석에 대한 자세한 정보는 오늘 바로 문의하기를 클릭하세요.
악성코드 분석 FAQ
악성코드 분석은 의심스러운 파일을 조사하여 그 기능과 작동 방식을 파악하는 과정입니다. 단순히 코드를 실행하는 것이 아니라, 그 목적, 행동 양식, 잠재적 피해를 파악하기 위해 연구합니다. 보안 팀은 이를 통해 위협을 식별하고 방어 체계를 구축하며, 악성 코드가 네트워크를 통해 확산되는 방식을 파악합니다. 이는 해를 끼치기 전에 의심스러운 소포를 분해하여 내부를 확인하는 것과 같습니다.
악성코드 분석은 사고에 더 빠르고 효과적으로 대응하는 데 도움이 됩니다. 악성 코드의 작동 방식을 이해하면 감염된 시스템을 식별하고 위협을 차단하며 향후 공격을 방지할 수 있습니다. 또한 더 나은 보안 통제를 개발하고 유사한 위협을 인식하도록 팀을 훈련하는 데 도움이 됩니다.
적절한 분석 없이는 숨겨진 악성 코드를 놓치거나 네트워크에서 완전히 제거하지 못할 수 있습니다.
세 가지 주요 유형이 있습니다: 정적 분석, 동적 분석, 하이브리드 분석입니다. 정적 분석은 코드를 실행하지 않고 검사하는 것으로, 파일 속성, 문자열 및 구조를 살펴봅니다. 동적 분석은 안전한 샌드박스 환경에서 악성코드를 실행하여 그 동작을 관찰합니다. 하이브리드 분석은 두 방법을 결합하여 악성코드의 기능을 종합적으로 파악합니다.
숙련된 분석가를 찾고 양성하는 것이 가장 큰 과제입니다. 94%의 조직이 인력 확보에 어려움을 겪고 있습니다. 도구들은 자동화와 통합 기능이 부족한 경우가 많아 분석에 시간이 많이 걸리고 오류가 발생하기 쉽습니다.
고급 악성 코드는 난독화 기법을 사용하여 진정한 목적을 숨기므로 정적 분석이 어렵습니다. 사고 발생 시 시간 압박으로 인해 의심스러운 파일을 얼마나 깊이 분석할 수 있는지도 제한됩니다.
악성코드 분석은 사고 대응 담당자가 공격의 범위와 영향을 파악하는 데 도움을 줍니다. 악성코드가 어떻게 침투했는지, 어떤 작업을 수행했는지, 어떤 시스템이 영향을 받았는지 확인할 수 있습니다. 이 정보는 격리 및 제거 작업을 안내합니다. 또한 분석을 통해 침해 지표(IoC)를 개발하여 다른 감염된 시스템을 찾아내고 재감염을 방지할 수 있습니다.
샌드박스 같은 자동화 도구를 사용해 신속한 결과를 얻을 수 있습니다. 심층 분석을 위해서는 디스어셈블러로 코드 구조를 검토하고 디버거로 실행 과정을 관찰하세요. 네트워크 분석기를 사용하면 악성 코드가 명령 및 제어 서버와 어떻게 통신하는지 파악할 수 있습니다. SentinelOne을 사용하여 악성 코드를 분석할 수도 있습니다.
주요 목표는 악성코드의 동작 방식, 기능 및 영향을 파악하여 방어할 수 있도록 하는 것입니다. 악성코드가 무엇을 하는지, 어떻게 확산되는지, 어떤 피해를 입힐 수 있는지 파악하는 것이 중요합니다.
이러한 정보는 탐지를 위한 시그니처 개발, 취약점에 대한 패치 제작, 보안 통제 개선에 도움이 됩니다. 궁극적인 목표는 항상 현재 및 미래의 위협에 대한 더 나은 방어입니다.

