엔지니어링

Elastic Security로 malware 분석 샌드박스를 구축하는 방법

Elastic InfoSec 팀의 보안 분석가들은 사용자가 다가와 “이 파일을 열어도 안전한가요?”라고 묻는 상황을 흔히 접하게 됩니다. 또는 한 사용자가 첨부 파일이 있는 피싱 이메일을 받았으며 첨부 파일을 열어보지는 않았다고 보고하여 로그를 확인해보니, 다른 사용자 10명이 동일한 이메일을 받았지만 아무도 이를 보고하지 않아서 시스템에서 아무런 경보도 울리지 않은 경우도 흔히 접하게 됩니다. 일반적인 공격 형태를 보면, 피싱 이메일의 첨부 파일에는 악성 코드가 포함되어 있지 않아 경보가 트리거되지 않습니다. 그러나 이러한 파일은 사용자의 비밀번호를 도용하려는 소셜 엔지니어링을 시도합니다.

이러한 상황에서는 보안 팀이 첨부 파일이 실행될 때 시스템에 어떤 일이 발생했는지를 신속하게 파악하여 도용 시도가 탐지 또는 차단되었는지 확인해야 합니다. 탐지 또는 차단되지 않았다면, 호스트에서 어떤 작업이 수행되었는지 신속하게 파악해야 합니다. 이 경우 보안 팀은 문제의 파일을 안전하게 실행하고 어떤 일이 발생하는지 관찰하는 데 사용할 수 있는 잘 계측된 가상 머신(VM) 샌드박스가 필요합니다. Elastic InfoSec 팀은 고객 제로를 목표로 Elastic 제품을 혁신하기 위해 끊임없이 노력하고 있으며 이러한 노력의 일환으로 Elastic 제품을 사용하여 샌드박스를 구축하기로 했습니다.

이 블로그 게시물에서는 Elastic InfoSec 팀이 어떻게 Fleet과 Elastic Security를 완벽하게 계측된 malware 샌드박스로 사용하는지 보여드리겠습니다. Elastic은 샌드박스에서 데이터를 계측하고 수집하는 데 적합할 뿐만 아니라 샌드박스를 구축하기도 쉬워 몇 분이면 생성이 가능합니다.

동적 malware 분석이란?

동적 malware 분석이란 격리된 VM 내에서 의심스러운 소프트웨어를 실행하고 관찰하는 작업을 말합니다. 동적 분석의 목표는 다음을 파악하는 것입니다.

  • Malware가 실행하는 프로세스
  • Malware가 호스트에 미치는 영향
  • Malware가 수행하는 네트워크 연결
  • Malware가 공격의 2단계 또는 3단계를 위해 다운로드하는 파일

Malware를 관찰한 후에는 학습된 정보를 활용하여 새로운 탐지 및 방어 기능을 만들거나 네트워크 내 다른 악의적 행위를 헌팅할 수 있습니다.

Elastic을 사용하는 이유는?

Malware 관찰 및 분석을 위한 샌드박스 환경을 만들어 본 적이 있다면, 샌드박스 설정은 수십 개의 소프트웨어를 설치하고 구성해야 하는 시간 소모적인 프로세스임을 아실 것입니다. 즉, malware를 수동으로 단계별로 실행하면서 어떤 일이 발생하는지 관찰하고 문서화할 수 있도록 Wireshark, Regshot 및 ProcMon과 같은 일련의 소프트웨어를 설치하고 구성해야 합니다.

Cuckoo Sandbox와 같이 자동화 등의 다양한 기능을 갖춘 고급 동적 malware 분석 샌드박스도 있지만, 일반적으로 설치와 구성에 훨씬 더 오랜 시간이 걸리고 모든 InfoSec 팀에서 필요로 하는 기능은 아닐 수 있습니다. 최근에 확인된 피싱 malware 사례 대부분은 사용자 상호 작용이 필요한 자격 증명을 도용하려는 소셜 엔지니어링 시도였습니다. 이러한 경우, 자동화된 시스템은 침해 지표를 전부 수집하지는 못할 수 있습니다.

일부 malware는 이러한 분석 도구가 존재하는지 확인한 후 실행을 중단하여 분석을 더 어렵게 만듭니다. 또 다른 malware는 이러한 분석 도구를 적극적으로 검색한 후 해당 프로세스를 종료시키거나 샌드박스 내 로그를 덮어씁니다. 따라서 즉각적인 주의가 필요한 활성 인시던트를 처리하는 경우 동적 malware 분석에 상당한 시간이 걸릴 수 있습니다.

Elastic 엔드포인트 보안은 시스템에서 발생하는 작업에 대한 정보를 수집하고 분석가를 위해 프로세스 트리를 신속하게 시각화하는 단일 에이전트입니다. 이를 통해 정확하게 어떤 일이 발생했는지 쉽고 빠르게 조사하고 탐지 및 보호 기능을 강화하는 데 필요한 지표를 확보할 수 있습니다. Elastic Security의 ‘분석기’ 화면은 전체 프로세스 트리를 시각화하여 초기 malware 프로세스에서 생성된 모든 하위 프로세스 및 관련 지표를 보여줍니다.

프로세스 트리를 신속하게 시각화하고 프로세스에서 수행한 작업을 보여주는 ‘분석기’ 화면

샌드박스 생성

Malware 분석 샌드박스를 사용하는 데에는 여러 가지 이유가 있습니다. 이 사용 사례에서 우리의 목표는 표준 기업 환경과 유사하지만, malware가 실행하는 모든 작업을 관찰할 수 있도록 철저히 계측된 가상 환경을 확보하는 것입니다.

샌드박스를 만들 때는 빌드별로 두 개의 이미지를 생성하는 것이 좋습니다. 즉, 기업에서 제공하는 것과 동일한 보호 기능으로 빌드된 ‘강화 이미지’와 대부분의 보호 기능이 비활성화된 ‘취약 이미지’를 생성합니다. 이렇게 두 개의 이미지를 생성하면, 강화 이미지로는 누군가 파일을 실행했을 때 어떤 일이 발생하는지 확인하고, 취약 이미지로는 malware가 모두 실행되었을 때 어떤 일이 발생하는지 확인할 수 있습니다. 규모가 있는 기업의 경우, 일부 보호 기능이 비활성화된 시스템은 늘 존재합니다. 따라서 두 방법을 모두 사용하는 것이 좋습니다.

테스트 시스템 생성

첫 번째 단계는 파일을 실행하는 데 사용할 VM을 생성하는 것입니다. 이미지를 빌드할 때는 어떤 것이든 원하는 가상화 소프트웨어를 사용하면 됩니다. 가상화 소프트웨어 설정에 대해서는 여기에서 다루지 않겠지만, malware를 실행할 때 시스템을 호스트와 기업 네트워크에서 최대한 격리하는 것이 중요합니다. 이 시나리오에서는 Windows 10 VM 및 MacOS 이미지를 빌드하겠습니다. 기업용 표준 Linux 빌드가 있다면 Linux 이미지를 빌드해도 좋습니다.

VM을 생성한 후에는 MS Office, Adobe Reader, Python 등 해당 분야에서 흔히 사용되는 소프트웨어를 모두 설치하는 것이 좋습니다. 사용자가 파일을 실행하는 데 사용할 만한 소프트웨어는 모두 빠짐없이 샌드박스에 포함해야 합니다. Windows VM에서는 PowerShell ScriptBlock 로깅을 활성화하는 것이 좋습니다. ScriptBlock 로깅은 실행된 모든 PowerShell 스크립트의 풀텍스트를 Windows 이벤트 로그에 저장하여 Elastic 에이전트가 수집할 수 있도록 합니다. ‘취약’ VM을 구성할 때는 여러 설정을 변경하여 기본 제공되는 모든 OS 보호 기능을 비활성화해야 합니다. 일부 최신 Windows malware는 2단계를 다운로드하기 전에 호스트가 도메인의 일부인지 확인하므로, 기업 이름과 비슷한 이름의 가짜 도메인에 호스트를 추가하여 VM을 구성해야 합니다.

Windows 호스트로부터 Sysmon 데이터를 수집하길 원한다면, 이 또한 가능합니다. Elastic 엔드포인트 에이전트는 Sysmon과 거의 동일한 정보를 수집하므로 데이터 중복을 피하도록 Sysmon 구성을 사용자 정의하는 것이 좋습니다. Sysmon을 설치 및 구성하고 나면 Elastic 에이전트가 Windows 통합을 사용하여 해당 이벤트를 클러스터로 스트리밍할 수 있습니다.

Elastic Security 클러스터 구성

이 테스트에는 Elastic Cloud에서 실행되는 Elastic 7.10을 사용했습니다. Elastic Cloud에서 클러스터를 설정하는 것이 테스트용으로 새로운 클러스터를 생성하고 호스팅하는 가장 쉬운 방법이며, 몇 분이면 모든 플래티넘 구독 기능을 갖춘 클러스터를 실행할 수 있습니다. 완벽하게 격리된 샌드박스를 구축하려면 자체 온프레미스 Elastic Stack을 설정하면 됩니다. 온프레미스에서 진행하려면 이 지침에 따라 Elastic Stack을 설치하세요. 이 블로그에서 다룬 모든 내용은 무료 베이직 티어에서 추가 비용 없이 사용할 수 있습니다.

Elastic Cloud에서 클러스터를 생성한 후에는 로그인하고 Elastic Security를 구성해야 합니다. 설정 안내 비디오를 시청하려면 여기를 클릭하세요.

설정

첫 번째 단계는 Kibana에 관리자로 로그인하고, 보안 > 관리 > 엔드포인트 탭으로 이동한 다음, 엔드포인트 보안 추가를 선택하는 것입니다.

엔드포인트 보안 관리 설정 화면

먼저, 보안 통합을 생성해야 합니다. 통합 이름을 지정하고 통합 저장을 선택합니다. 통합 및 에이전트 정책을 여러 개 생성할 수 있지만, 이 샌드박스에서는 편의성을 위해 모든 샌드박스 시스템에 하나의 정책을 사용하겠습니다. 단일 정책을 Linux, Windows 및 MacOS 시스템에 적용할 수 있습니다.

통합을 추가할 수 있는 Elastic 에이전트 페이지

통합을 선택하고 에이전트 등록을 선택합니다. 표시되는 화면에서 Fleet으로 등록할 것인지 확인합니다. 그러면 Kibana만으로 에이전트를 구성하고 제어할 수 있습니다.

엔드포인트 보안에 에이전트 등록

Windows 이벤트 로그도 수집하려면 통합 추가를 선택하고, 미리 생성된 통합에서 Windows를 선택하고, 기본 설정을 선택한 다음, 통합 저장을 선택하여 Windows 보안 이벤트, Sysmon 이벤트, PowerShell Scriptblock 로깅, 그리고 전달하도록 구성된 기타 Windows 이벤트 로그를 수집합니다.

이때 엔드포인트 보안, 시스템 모듈, Windows 시스템의 Windows 이벤트 로그를 배포할 기본 정책이 구성되어 있어야 합니다.

Fleet 에이전트 정책 화면

이제 에이전트를 샌드박스 시스템에 배포할 준비가 되었습니다. 에이전트 탭을 선택합니다. 처음 생성하는 에이전트라면 관리자 권한이 있어야 합니다. 그런 다음 Kibana에서 Fleet 사용자를 자동으로 생성하도록 버튼을 선택합니다. 에이전트 추가를 클릭하면 Elastic 에이전트 다운로드 페이지로 이동하며 VM에 에이전트를 설치하는 데 필요한 명령이 표시됩니다. 다운로드하여 설치한 에이전트는 에이전트 목록에 자동으로 표시됩니다.

에이전트 상태 화면

Elastic Security에서는 Elastic 엔드포인트 에이전트의 통합 정책을 구성해야 합니다. 에이전트 정책은 Elastic 에이전트에 대한 정책을 설정하고 통합 정책은 에이전트가 배포한 엔드포인트 보안 통합에 대한 정책을 설정합니다. 엔드포인트 보안 통합 정책은 Elastic Security의 관리 탭에서 설정할 수 있습니다. 목록에서 에이전트 옆에 있는 통합 정책을 선택하여 화면을 엽니다.

엔드포인트 보안 통합 정책 화면

그러면 통합 설정 화면이 표시됩니다. 이 화면에서는 Malware 보호 활성화됨 토글이 선택되어 있고, 보호 수준방지가 아니라 탐지로 설정되어 있어야 합니다. 이처럼 Malware 보호 기능이 활성화되어 있지만 탐지 모드로 설정된 경우, malware 탐지 경보는 표시되지만 Elastic Security는 malware를 차단하기 위한 어떤 조치도 취하지 않습니다.

malware-analysis-sandbox-malware-protections-detect-mode.jpg

다음 단계는 시간을 좀 더 투자하여 Elastic Security에서 탐지 엔진을 설정하고 미리 작성된 모든 Elastic 탐지 규칙을 설치하는 것입니다. 여러분의 샌드박스에 대해 이 작업을 수행할 필요는 없지만, 작업은 간단하며 malware의 활동을 탐지하는 경우가 많아 분류가 수월해집니다. 간단하게 Elastic Security에서 탐지 탭을 선택한 다음 탐지 규칙 관리를 선택하기만 하면 됩니다. 그런 다음 Elastic 미리 작성된 규칙 및 타임라인 템플릿 로드를 클릭합니다. 처음에는 관리자 권한으로 이 작업을 수행해야 합니다.

탐지 엔진 화면

탐지 엔진이 미리 작성된 규칙과 타임라인 로드

규칙이 로드되고 나면, 적용하려는 모든 규칙을 활성화해야 합니다. 규칙을 하나씩 살펴보면서 활성화할 규칙만 선택하거나, 원하는 경우 한 번에 모두 활성화할 수 있습니다. 한 번에 모두 활성화하는 것이 가장 간편한 방법입니다. 특정 규칙에 해당하는 데이터가 없더라도 규칙 활성화는 아무런 문제가 되지 않습니다.

네트워크 트래픽 수집(선택 사항)

호스트에서 malware 활동을 캡처하는 것 외에도 외부 호스트에서 malware의 네트워크 활동을 수집할 수도 있습니다. 이렇게 하면 단순히 네트워크 이벤트 발생이 아니라 네트워크 이벤트 내부의 데이터를 확인할 수 있다는 이점이 있습니다. 방법은 여러 가지가 있지만, 동일한 가상 네트워크에서 네트워크 트래픽을 탐지하는 별도의 VM을 사용하는 것이 좋습니다.

이를 위해서는 이벤트로 스택을 마비시키지 않으면서 훌륭한 데이터 요약을 제공하는 Packetbeat를 사용하거나, TShark 및 Filebeat를 사용하여 풀 패킷 캡처를 Elasticsearch로 스트리밍할 수 있습니다. 대부분의 프로토콜에 대한 요청과 대응을 수집하고 모든 TLS 트래픽에 대한 원시 인증서를 수집하도록 Packetbeat를 구성해야 합니다. Malware가 TLS 인증서를 재사용하는 것은 매우 흔한 일이며, 악성 도메인 이름에서 이를 악용할 수 있습니다.

이제 malware 분석 샌드박스가 완성되어 테스트할 준비가 되었습니다. Malware를 실행하기 전에 빈 상태에서 VM 스냅샷을 생성해야 합니다.

Malware 분석

참고: 호스트 시스템에서 라이브 malware를 열지 않도록 주의해야 합니다. 의심스러운 malware를 실수로 여는 일이 없도록 비밀번호로 보호되는 zip 파일에 보관해야 합니다. 가능하다면 malware를 샌드박스 시스템에 바로 다운로드합니다.

이 테스트에서는 악명 높은 Emotet Malware 제품군을 사용했습니다. 이 malware는 사용자에게 문서를 실행하려면 매크로를 활성화하라는 메시지를 보내는 악성 Office 문서입니다. 엔드포인트 정책에서 malware 보호를 활성화했다면, Elastic Security가 이 malware를 즉시 격리하게 되므로 테스트는 금방 끝날 것입니다.

VM에 Emotet Malware라는 폭탄을 떨어뜨린 후 Kibana의 Elastic Security로 돌아가서 어떻게 폭발이 일어나는지 지켜보겠습니다. 탐지 탭에는 호스트에서 이루어진 malware 활동으로 인해 새로운 경보가 여러 개 표시됩니다. 아래 스크린샷을 보면, 초기 malware 탐지 경보가 여러 건 발생했음을 알 수 있습니다. 엔드포인트 보안이 ‘탐지’ 대신 ‘방지’ 모드로 설정되었다면, 이 malware는 지금 시점에서 차단되고 격리되어 추가 데이터는 확보할 수 없을 것입니다.

Emotet Malware로 인해 생성된 탐지 경보

목록에서 경보 옆에 있는 이벤트 분석 아이콘을 선택하면 분석기 화면을 열고 발생한 상황을 트리 그래프로 시각화할 수 있습니다.

이벤트 분석 아이콘

이 예제에서는 이상하게 생긴 PowerShell 명령을 선택하여 실행 체인에 적합한지 알아보겠습니다. 분석기 화면은 소프트웨어 실행을 보여주는 대화형 화면으로, 상위 프로세스를 기반으로 하는 계층 구조로 되어있습니다. 프로세스를 연결하는 선은 상위 프로세스 시작 시간과 하위 프로세스 시작 시간의 시간 차이를 보여줍니다. 노드를 확대하면 해당 프로세스와 관련된 이벤트 수를 확인할 수 있습니다.

Emotet malware 실행의 분석기 화면

PowerShell 프로세스가 수행한 작업을 확인하려는 경우, 노드를 선택하면 27개의 개별 이벤트가 이 프로세스 하나와 관련이 있다는 것을 알 수 있습니다. 그런 다음 각 카테고리를 선택하면 이 프로세스로 인해 생성된 파일, 수행된 네트워크 연결, 수정된 레지스트리 항목, 메모리로 로드된 라이브러리를 확인할 수 있습니다.

일부 malware는 재부팅 후에는 특정 기능만 로드하므로, VM을 재부팅하고 추가로 탐지된 것이 있는지 경보를 확인해보는 것이 좋습니다.

이 모든 정보는 이미 Elastic에 있으므로 ‘대시보드’ 또는 ‘발견’과 같은 다른 Kibana 앱에서도 이러한 이벤트를 보고 시각화할 수 있습니다. Packetbeat를 사용하여 네트워크 트래픽을 수집하는 경우 다양한 네트워크 프로토콜에 대해 기본 제공되는 Kibana의 많은 대시보드와 시각화를 활용할 수 있습니다.

결론

이 게시물에서는 Elastic을 사용하여 신속하게 자체 malware 분석 샌드박스를 설정하는 방법을 살펴보았습니다. 몇 분이면 샌드박스를 구축하여 파일을 안전하게 열고 관찰하는 동시에 안전한 오프라인 분석을 위해 모든 이벤트를 Elastic Stack으로 스트리밍할 수 있습니다. Elastic InfoSec 팀에서는 이러한 파일들의 정보를 사용하여 새로운 탐지 규칙을 작성하고 이전에는 발견되지 않았던 네트워크 공격을 헌팅합니다.

시작할 준비가 되셨나요? 14일 무료 체험판을 시작해 보세요. 신용카드는 필요 없습니다. 또는 무료로 Elastic 제품을 다운로드하여 온프레미스에 배포하실 수도 있습니다.

  • We're hiring

    Work for a global, distributed team where finding someone like you is just a Zoom meeting away. Flexible work with impact? Development opportunities from the start?