You are using an unsupported browser. Please update your browser to the latest version on or before July 31, 2020.
close
> AhnLab > 보안, 뉴스와 이슈 > [보안이슈] 해커의 강력한 무기 파일리스 공격 이해하기
[보안이슈] 해커의 강력한 무기 파일리스 공격 이해하기
print icon

몇 년 전부터 ‘파일리스(fileless)’라는 단어가 보안 위협 보고서와 연관 뉴스에 심심치 않게 등장했다. 글로벌 정보보안 업체 트렌드마이크로(Trend Micro)는 지난해 발간한 ‘2019 중간 보안 위협 보고서’를 통해 2019년 상반기 탐지된 파일리스 공격 건수가 2018년 동기 대비 265% 이상 증가했다고 밝혔다. 안랩 역시 올해 초 발표한 ‘2020 보안 위협 전망’에서 파일리스 방식의 타깃형 랜섬웨어 공격이 본격화 될 것으로 예상한 바 있다. 이처럼 보안 업계 유력 조직들이 지속적인 증가를 전망하는 파일리스 공격이란 무엇일까? 

 

이번 글에서는 파일리스 공격의 정의와 발전 과정, 공격 기법 및 대응 방안에 대해 분석해 보고자 한다.  

  


 

파일리스 공격의 정의는 ‘악의적인 기능을 수행하는 코드를 메모리에서만 실행시키면서 시스템에 피해를 입히는 유형의 공격’을 뜻한다. 공격자가 파일리스 기법을 사용해도 디스크에 아무것도 남기지 않는 것은 아니다. 공격자는 공격의 지속성(persistence) 유지를 위해 악성코드를 저장 매체에 저장할 필요가 있다. 다만, 이 경우에도 공격자는 우리가 흔히 알고 있는 실행 파일, 스크립트 파일, 문서 파일과 같은 개별 파일로 저장하지는 않는다. 즉, 저장 매체에는 파일 형태의 악성코드가 존재하지 않는다.

 

파일리스 공격의 출현과 발전 

파일리스 공격의 출현 배경과 공격 및 방어 기술의 흐름을 간단히 살펴보자.  

 

[그림 1] 파일리스 공격 & 방어 기술의 발전
 

사이버 공격 기법 중에는 악성코드를 사용하지 않는 공격도 다수 존재한다. 특히 네트워크나 웹을 통한 공격은 악성코드 없이도 가능한 경우가 많다. 이러한 종류의 네트워크 공격은 방화벽, 웹 방화벽, 침입 탐지 시스템(Intrusion Detection System, IDS) 등의 네트워크 보안 장비를 활용해 방어한다. 

 

공격자는 네트워크를 통한 직접 접근이 어려울 경우, 이메일 첨부 파일이나 인터넷을 통해 악성 파일을 유입시키는 방법을 선택할 수 있다. 방어하는 입장에서는 이러한 악성 파일을 탐지, 차단, 삭제하기 위해 일명 백신이라 불리는 AV(Anti-virus) 솔루션을 사용한다. AV 솔루션은 주로 파일을 대상으로 동작한다. 공격자들은 AV를 회피하기 위해 여러 방법을 사용할 수 있는데, 이 중 하나가 바로 파일을 사용하지 않는 기법을 이용한 악성코드, 즉 파일리스 멀웨어를 활용하는 것이다.

 

위협 분석가들은 악성코드가 AV에 탐지되지 않더라도 포렌식(forensic) 기법을 활용해, 추가적인 위협을 찾아 내거나 공격자의 유입 경로 등 공격 정보를 파악할 수 있다. 공격자는 포렌식 기법을 이용한 추적을 피하고자 최대한 흔적을 제거한다. 이런 공격자의 행위를 안티 포렌식(Anti-forensic)이라 부른다.

 

파일 혹은 시스템 상의 흔적을 분석하는 것이 점점 어려워지면서, 2015년경부터 보안 시장에는 악성 파일이 아닌 행위에 집중하는 EDR(Endpoint Detection and Response) 유형의 제품이 등장하기 시작했다.

 

파일리스 공격이 회자되는 이유
파일리스 공격이 최근에 등장한 공격 기법이 아님에도, 최근 들어 부쩍 회자되는 이유는 무엇일까?

 

첫 번째는 파일리스 공격에 파워셸(PowerShell)이 활용된 이후로, APT(Advanced Persistent Threat) 공격이나 랜섬웨어, 암호화폐 마이너 등의 악성코드 배포까지 전방위적으로 확산되고 있기 때문이다. 특히, 파워셸 기반 파일리스 공격 기능을 탑재한 다양한 공격 시뮬레이션 도구들이 공개되어 있어 기술적 접근도 비교적 쉬운 편이다. 최근 발생한 침해 사고에서 해당 도구들을 활용한 흔적이 적지 않게 발견되고 있다.

 

두 번째는 파일리스 공격이 엔드포인트 보안 시장의 ‘게임 체인저’ 역할을 한다는 점이다. 파일리스 악성코드는 파일에 초점을 맞춘 기존 보안 솔루션으로는 탐지가 어렵기 때문에, 이를 해결하고자 등장한 EDR의 시장 형성과 성장을 촉진한다고 볼 수 있다.

 

이제는 AVT(Advanced Volatile Threat)?
독자들도 APT 공격이라는 용어를 많이 들어봤을 것이다. 한글로 옮기면 ‘지능형 지속 위협’ 정도로 표현할 수 있다. 최근 APT 공격이 감행된 침해 사고에서 파일리스 공격이 많이 발견되고 있는데, 이를 반영해 APT를 AVT, 즉 지능형 휘발성 위협(Advanced Volatile Threat)이라 부르기도 한다.

 

AVT 공격에는 파일리스 기법이 활용되는데, 공격자는 메모리에서만 동작하는 인 메모리 멀웨어(in-memory malware)와 LOL 도구를 사용하며, 타깃 시스템 내에 악의적인 흔적을 최대한 남기지 않으려 노력한다. LOL 도구는 ‘Living Off The Land’의 약자로, 자급자족이란 의미다. 공격자가 공격 과정에서 외부 도구가 아닌 대상 시스템 내 정상적 도구를 사용한다는 의미로 이해하면 된다.

 

파일리스 공격은 데이터를 어디에 저장하는가?
공격자는 의도만 있다면 디스크에 공격 데이터를 전혀 남기지 않고 공격을 수행할 수도 있다. 이때 악성코드는 메모리에만 존재하게 된다. 하지만 이 경우, 시스템이 재부팅되면 악성코드가 모두 사라져 타깃 시스템의 제어권을 얻기 위해 다시 공격을 수행해야 하는 부담이 있다. 특별한 경우를 제외하면, 공격자가 이러한 전략을 선택하는 경우는 흔하지 않다.

 

그래서 대부분의 공격자는 타깃 시스템이 재부팅 되더라도 악성코드가 지속적으로 동작해 제어권을 유지할 수 있는 지속(persistence) 전략을 선택한다. 이를 위해 최소한의 악성코드를 시스템에 남겨두며, 이때 선호되는 위치는 레지스트리, 서비스, 스케쥴러, WMI(Windows Management Instrumentation) 등 OS에서 제공하는 영역이다. 이외에도 보편적이진 않지만 사용자 애플리케이션의 데이터베이스와 같은 위치에도 저장될 수 있으며, 디스크 파일 시스템 외부, 사용되지 않는 슬랙 영역, HDD 펌웨어 등 OS 관리 영역을 벗어난 외부에도 저장될 수 있다.

 

공격자는 왜 파일리스 기법을 사용하는가?
공격자가 파일리스 기법을 사용하는 이유는 공격이 탐지되거나, 추적되는 것을 원하지 않기 때문이다.

 

우선 탐지 회피 관점에서 살펴보자. 공격자가 유입시킨 악성코드가 디스크 내에 파일 형태로 존재하지 않는다면, 스캔할 대상이 없기 때문에 파일을 모니터링하는 AV 솔루션에 탐지되지 않을 것이다. 또한 화이트리스트 프로세스만 동작 가능하도록 제어하는 보안 솔루션에서도 LOL 도구와 함께 파일리스 기법이 사용된다면, 정상으로 보일 수 있기 때문에 제재 없이 실행이 가능하다.

 

추적 회피 관점에서도 보안 담당자가 확인할 파일이 없다면, 파일 해시를 구할 수 없다. 그렇다면 위협 정보(Threat Intelligence)를 얻기 위해 바이러스 토탈(Virus Total)과 같은 사이트에 조회할 때 어떻게 해야 할까? 결국 악성코드나 공격자를 식별하고 판단하기 위한 정보가 부족해지기 때문에, 공격자 입장에서는 악성 파일을 사용하지 않는 것이 유리하다. 공격자는 디스크에 공격과 관련된 정보 저장을 최소화하고, 저장된 경우에는 완전 삭제 등을 통해 추적될 만한 단서를 없애고자 노력하게 된다.

 

파일리스 공격의 등장과 증가
앞서 언급했듯, 파일리스 공격이 최근에 등장한 기법은 아니다. 2000년대 초에도 메모리 상주형 악성코드들이 존재했고, 그 후로도 유사한 악성코드들이 계속해서 등장했다. 이후 2016년, 파워셸이 활용되면서부터 파일리스 공격이 증가세를 보였다. 국내에서도 2018년부터 파워셸 기반 파일리스 기법이 사용된 침해 사고들이 확인되기 시작했다. 

[그림 2] 연도별 파일리스 공격 변화 


파일리스 기법을 활용하는 공격 그룹
마이터 어택(MITRE ATT&CK)에서는 파일리스 기법을 별도의 전술(tactic)이나 기술(technique)로 구분하지 않는다. 하지만, 파워셸이나 관련 도구 사용 여부 등을 통해 파일리스 기법을 사용하는 것으로 파악된 공격 그룹을 특정하는 것은 가능하다. 마이터 어택은 여러 보안 업체와 공공 기관, 개인이 발행한 공개 보고서와 자료들을 분석해 알려진 공격 그룹에 대한 정보를 정리해서 공개하고 있다. 마이터 어택에서 94개의 공격 그룹을 분석한 결과, 파일리스 기법을 사용하는 것으로 추정되는 그룹은 약 40%(35개)에 달한다.

 

[그림 3] 파일리스 기법 사용 추정 공격 그룹
 

파워셸 기반의 파일리스 기법이 활용된 주요 공격 사례
2016년 美 DNC(민주당 전국 위원회) 해킹 사건
2016년 미국 대선 당시 러시아로 추정되는 공격자가 민주당 측 조직을 해킹한 사건이 있었다. 당시 미국 보안 업체 크라우드 스트라이크(Crowdstrike)에서 2주간 포렌식 분석을 수행한 뒤 결과를 발표했는데, 현재까지도 공격자가 누구인지에 대해 법적 공방이 진행 중이다. 이처럼 유명한 사건에 파워셸 원 라이너(PowerShell One-liner)를 WMI에 등록하는 기법이 사용됐다. 파워셸 원 라이너에 관한 자세한 내용은 뒤에서 설명할 예정이다.

 

2017년 전세계 40개국 140개 조직이 해킹 당한 사건
카스퍼스키는 2017년, 전세계 40개국의 정부, 금융, 통신 등 약 140 여개 조직이 유사한 기법의 공격에 침해 당했다는 보고서를 공개했다. 해당 공격은 파워셸 원 라이너를 레지스트리와 서비스로 등록하는 방법이 사용됐다.

 

2018년 ~ 현재: 랜섬웨어 배포 방식의 변화
2018년부터는 기존 드라이브 바이 다운로드(Drive-By-Download), 정상 소프트웨어 위장, 이메일 첨부 등의 방법으로 배포되던 유명 랜섬웨어들이 파일리스 기법을 활용해 유포되기 시작했다. 안랩이 ASEC 블로그를 통해 공개한 랜섬웨어의 변화 추이는 아래와 같다. 

 


[표 1] 랜섬웨어 변화 추이

 

2019년 국내 대기업 마이킹스 봇넷 감염 

2019년에는 국내 대기업 중 한 곳이 마이킹스(MyKings)라는 봇넷에 감염되는 사건이 있었다. 공격자의 목적은 암호화폐 채굴 악성코드(CoinMiner)를 동작시키는 것이었다. 공격자는 다수의 시스템을 감염시키기 위해 이터널 블루(EternalBlue) 취약점을 이용했고, 파워셸 원 라이너를 스케쥴러와 서비스에 등록시키는 방법도 병행했다. 

 

2019년 클롭 랜섬웨어 감염
작년에는 국내 400개 이상의 조직을 감염시킨 클롭 랜섬웨어 사건으로 보안 업계가 떠들썩했다. 클롭(CLOP) 랜섬웨어 공격은 APT와 랜섬웨어가 합쳐진 유형이었다. 공격자는 코발트 스트라이크(Cobalt Strike)라는 공격 시뮬레이션 도구를 사용했으며, 파일리스 관점에서는 파워셸 원 라이너를 서비스로 등록하는 기법이 사용됐다.

 

파일리스 공격 기법 알아보기  

파일리스 공격을 이해하기 위해서는 앞서 언급한 파워셸 원 라이너가 무엇인지, 또 어떻게 사용되는지 정확히 알아야 한다.

 

파일리스 공격 단계
우선 파일리스 공격에서 파워셸이 사용되는 단계는 아래와 같다. 

 


[그림 4] 파일리스 공격에서 파워셸이 사용되는 단계 

 

Stage 1에서는 취약점 혹은 사용자의 파일 실행 등의 방법을 통해 자바 스크립트나 VBScript를 실행하고, 이를 통해 런처 역할을 할 수 있는 프로세스를 실행시켜 파워셸 원 라이너가 동작하도록 구성한다. Stage 1에서 구성한 파워셸 원 라이너는 Stage 2에서 실행된다. Stage 3에서는 네트워크를 통해 또 다른 파워셸 페이로드나, PE 페이로드가 다운로드 되어 실행된다. 공격자는 Stage 2와 Stage 3가 진행되는 동안, 악성코드를 파일 형태로 저장하지 않고 진행한다.

 

파워셸 원 라이너 이해
원 라이너(One-liner)란 텍스트 한 줄로 구성된 문자열 스크립트 명령을 의미한다. CLI 프로그램 중 스크립트를 명령 라인에 입력 받아 처리하는 파워셸, 파이썬, 펄과 같은 프로그램은 원 라이너 방식의 실행이 가능하다. 

 

최근 공격자들이 파워셸을 선호하는 이유는 무엇일까? Power(ful)Shell이라는 이름처럼 매우 강력하고 유연하기 때문이다. 윈도우 XP 서비스팩2 이후의 윈도우 시스템에는 기본적으로 파워셸이 포함돼 있기 때문에 윈도우를 목표로 한 공격에 유용하게 활용할 수 있다. 또한 비 윈도우 시스템에도 파워셸을 사용할 수 있기 때문에 공격 빈도는 점차 늘어날 것으로 예상된다.

 

파일리스 공격에 사용되는 파워셸 원 라이너와 각 명령줄의 의미는 아래와 같다. 

 

[그림 5] 파워셸 원 라이너

 

 


[표 2] [그림 5]의 각 명령줄 의미 

 

​이와 동일한 기능을 수행하는 파워셸 원 라이너를 아래와 같이 표현할 수도 있다.

 



[그림 6] 파워셸 원 라이너의 또 다른 표현

 

-enc 옵션을 이용하면 Base64 인코딩된 스크립트를 실행할 수 있다. 코드 내에서도 추가로 Base64 인코딩이나 압축, 암호화 등을 구현할 수 있어, 공격자는 코드 탐지 및 분석을 방해하기 위한 난독화 방법을 사용할 수 있다.

 

파워셸 원 라이너 실행 예시
Stage 1에 해당하는 파워셸 원 라이너를 실행시키는 몇 가지 예를 소개한다. 이 방식들은 주로 스피어 피싱 첨부 파일로 전달된다.

 

예제 1) LNK 파일을 이용한 파워셸 원 라이너 실행
화면에 clickme라는 이름의 문서 파일처럼 보이는 파일은 사실 LNK 파일이다. 파일의 속성을 살펴보면 파워셸이 실행되도록 등록돼 있는 것을 볼 수 있는데, 에디터를 이용해 파일의 내용을 자세히 살펴보면, 파워셸 원 라이너라는 것을 알 수 있다.
 


[그림 7] clickme 문서로 보이는 LNK 파일

 

예제 2) 엑셀을 이용한 파워셸 원 라이너 실행
마이크로소프트 엑셀 파일은 매크로 기능으로 VBScript를 포함시킬 수 있어, 예전부터 악성 코드를 배포하기 위한 용도로 많이 사용돼 왔다. 다만 엑셀에 매크로가 포함돼 있을 경우, 노란색 보안 경고 창이 표시되며, 사용자가 ‘콘텐츠 사용’ 버튼을 눌러 매크로 실행을 허용하면 VBScript가 실행된다. 아래는 파워셸 원 라이너를 실행하도록 작성된 VBScript다.



[그림 8] 엑셀 파일에 포함된 VBScript

 

예제 3) 파워포인트를 이용한 파워셸 원 라이너 실행
마이크로소프트 파워포인트에도 파워셸 원 라이너를 등록할 수 있다. 마우스 포인터를 위에 올려 두거나 클릭하면, 지정된 프로그램을 실행시킬 수 있는 기능이 있다. 2017년에 유행했던 방법이다.  


[그림 9] 파워포인트를 이용한 파워셸 원 라이너 실행 

 

위와 같은 대표적인 예시 외에도 공격자가 파워셸 원 라이너를 실행하기 위해 사용할 수 있는 방법은 무수히 많다. 

 

파일리스 공격의 제약 사항
이제 파일리스 공격의 제약 사항에 대해 알아보도록 하자.

 

공격자가 어렵게 파일리스 악성코드를 실행시켜 동작 중인 상황에서 시스템이 재부팅 된다면 어떻게 될까? 메모리에서만 동작하는 파일리스 악성코드는 사라지고, 공격자는 제어권을 잃게 된다. 하지만, 대부분의 공격자는 제어권을 쉽게 포기하지 않고 어떻게든 유지하려 할 것이다. 공격자는 다음 같이 크게 두 가지 방법을 선택할 수 있다.

 

첫 번째는 악성코드를 사용하지 않고, 추후 시스템에 다시 접근할 수 있도록 백도어를 확보해 두는 것이다. 예를 들어 새로운 계정을 만들거나, 기존 계정의 크리덴셜을 확보한다면 나중에 다시 접근할 수 있다. 이때 RDP나 SMB와 같이 필요한 서비스를 활성화하고, 방화벽 등에 예외 처리 등을 적용해 둘 수도 있다.

 

두 번째로는 시스템이 재부팅 되더라도 악성코드가 다시 동작할 수 있도록 악성코드 재실행 전략을 선택할 수 있다. 예를 들면 파워셸 원 라이너를 레지스트리, 서비스, 스케쥴러, WMI 등에 저장하는 방법을 사용할 수 있다. 

 

이제 악성코드 재실행 전략을 살펴보고 대응 방안을 알아보도록 하자.

 

파워셸 파일리스 공격에 사용되는 제어권 유지(persistence) 전략

레지스트리에 파워셸 원 라이너 등록하기
아래 코드는 파워셸 스크립트로, 레지스트리의 Run 키에 파워셸 원 라이너를 등록하는 코드다.
 


[그림 10] 파워셸 원 라이너 레지스트리 등록 코드

 

위 코드가 등록된 모습은 자동 실행 포인트 모아서 보여주는 ‘Autoruns’라는 도구를 통해 확인할 수 있다. HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run키의 afirst라는 Value에 파워셸 원 라이너가 등록된 것을 볼 수 있다. 이제 이 컴퓨터는 부팅 때마다 파워셸 원 라이너가 동작하게 된다.


 
[그림 11] 레지스트리에서 파워셸 원 라이너가 동작하는 모습

 

서비스에 파워셸 원 라이너 등록하기
다음 코드는 sc를 이용해 서비스에 파워셸 원 라이너를 등록하는 명령어다.
 


[그림 12] 파워셸 원 라이너 서비스 등록 코드

 

위 명령어가 실행 후 서비스 창을 확인하면 파워셸 원 라이너가 등록된 모습을 볼 수 있다. 이 경우도 부팅 시마다 파워셸 원 라이너가 동작한다.  



[그림 13] 서비스에서 파워셸 원 라이너가 동작하는 모습

 

스케쥴러에 파워셸 원 라이너 등록하기
다음 코드는 schtasks를 이용해 작업 스케쥴러에 파워셸 원 라이너를 등록하는 명령어다. 

 


[그림 14] 파워셸 원 라이너 스케쥴러 등록 코드 

 

윈도우 작업 스케쥴러 창에서 파워셸 원 라이너가 등록된 모습을 아래와 같이 확인할 수 있다. 공격자는 스케쥴러의 실행 시점이나 주기를 지정할 수 있다. 작업 스케쥴러에 등록할 수 있는 프로그램 명령어의 길이는 261자로 제한돼 있는데, 파워셸 원 라이너는 이보다 짧아 충분히 스케쥴러에 등록될 수 있다.
 


[그림 15] 스케쥴러에서 파워셸 원 라이너가 동작하는 모습

 

WMI에 파워셸 원 라이너 등록하기
공격자는 파워셸 원 라이너 등록을 위해 WMI도 사용할 수 있다. 공격자들은 WMI를 주로 프로세스, 사용자 계정과 같은 시스템 정보를 수집하는 용도로 사용해왔다. 이 밖에도, 이벤트 필터와 이벤트 컨슈머를 작업 스케쥴러에 등록하는 것처럼 활용할 수 있다. WMI를 제어하는 방법은 여러 가지가 있는데, 아래는 wmic를 이용한 방법이다.
 


[그림 16] wmic를 이용해 파워셸 원 라이너 등록

 

우선 이벤트 필터를 등록하고, 파워셸 원 라이너가 포함된 이벤트 컨슈머를 등록한다. 이후 이벤트 필터와 컨슈머를 바인딩 해주면 된다. 이 절차를 거치면, 이벤트가 발생했을 때 지정된 이벤트 컨슈머가 실행된다. [그림 16]은 60초마다 컨슈머가 실행되는 코드다.

 

이와 같이 WMI에 등록된 코드가 실행되면, 프로세스 트리에서는 WmiPrvSE.exe라는 WMI 호스트 프로세스가 파워셸을 실행한 것으로 나타난다.
 


[그림 17] WmiPrvSE.exe가 파워셸 실행

 

 

파일리스 공격 대응 방안  
보안 솔루션이 파워셸 원 라이너 문자열이나 재실행을 목적으로 시스템에 등록하는 스크립트를 악성으로 판단하기에는 명확하지 않은 부분이 있다. 정황이 의심스럽지만 악성으로 결론 짓기 위해 요구되는 명확한 정보가 부족하기 때문이다. 따라서 이러한 의심 행위들을 악성 정보에 기반해 실시간으로 탐지 및 차단하지 않더라도, 인지해서 대응하거나 추후 확인할 수 있도록 로깅한다면 다양한 방법으로 대응에 활용할 수 있다.

 

이와 같은 개념이 반영된 솔루션이 바로 EDR 제품이다. 하지만 앞으로 살펴볼 대응 방안에서 EDR 솔루션을 얘기하고자 하는 것은 아니다. EDR을 도입하지 않는 조직도 간단한 설정 및 프로그램으로 로깅을 강화해, 파워셸 원 라이너의 흔적을 확보할 수 있는지 여부를 살펴보고자 한다.

 

로깅 강화하기 – 파워셸 스크립트 블록 로깅 

파워셸은 기본적으로 엔진 및 공급자의 상태 변경 등에 대한 로그가 남지만, 이것 만으로는 파워셸 원 라이너를 모두 잡아낼 수 없다. 윈도우에서 제공하는 ‘파워셸 스크립트 블록 로깅 켜기(PowerShell Script Block Logging)’ 정책을 활성화하면 스크립트 블록이나 명령 줄, 함수 등이 실행될 때 해당 블록의 코드가 기록된다. 

 

파워셸 스크립트 블록 로깅 켜기 순서
▲gpedit.msc - 컴퓨터 구성 - 관리 템플릿 - 윈도우 구성요소 – 윈도우 파워셸 - 파워셸 스크립트 블록 로깅 켜기

 

위 설정이 적용된 상태에서 파워셸 원 라이너가 실행되면, 다음과 같이 파워셸 원 라이너의 스크립트를 이벤트 로그(EventLog)에서 확보할 수 있다.

  


[그림 18] 이벤트 로그에 표시된 파워셸 원 라이너

 

로깅 강화하기 - Sysmon
마이크로소프트에서 제공하는 Symon은 기본으로 포함되어 있진 않지만 계속해서 업데이트 되고 있다. 최신 Sysmon은 Process, Remote Thread, File, Registry, Pipe, WMI, Network 등 27종의 이벤트를 로깅할 수 있다. 하지만, Sysmon 기본 값으로 실행하는 경우는 이 이벤트들이 모두 기록되지 않는다. XML 형식의 설정 파일을 이용해 필요한 이벤트가 로깅 되도록 필터를 구성해야 한다. 

 

아래 화면에 보이는 내용은 레지스트리와 Pipe, WMI 이벤트 등이 기록되도록 설정된 모습이다. 이렇게 작성한 XML 파일을 Sysmon 설치 시 옵션으로 지정해주면 된다.

  


[그림 19] Sysmon 세팅 - 링크

 

이제 이벤트 로그를 통해 파워셸 파일리스 공격의 흔적을 확인하는 방법에 대해 알아보자.

 

Process Activity in EventLog
Sysmon은 프로세스의 시작, 원격 스레드, 종료 등을 기록하므로 파워셸 실행 시 명령줄, 부모 프로세스(parent process), 권한 등의 정보를 파악할 수 있다. 해당 정보는 Sysmon 이벤트로그의 Event ID 1을 확인하면 된다. 아래 [그림 20]은 WMI에 의해 실행된 파워셸 원 라이너의 흔적이다. 

 


[그림 20] 이벤트 로그에 기록된 프로세스 정보

 

Registry Persistence in EventLog
레지스트리 자동 실행(Autorun) 관련 키에 코드를 등록하는 경우에도 이벤트 로그에서 정보를 확인할 수 있다. 이 경우, Sysmon 이벤트 로그의 Event ID 13을 확인하면 된다.


Service Persistence in EventLog
서비스와 관련된 이벤트 로그는 OS 기본 상태에서도 서비스 등록, 삭제, 실행, 오류 등의 이벤트가 기록된다. 따라서 서비스 설치된 파워셸 원 라이너를 이벤트 로그에서 확인할 수 있다. EventID 7045, 7000, 7009, 7040 등을 확인한다.

 

Scheduler Persistence in EventLog
스케쥴러에 등록 파워셸 원 라이너도 이벤트 로그에서 확인할 수 있다. 스케쥴러 역시 서비스와 마찬가지로 OS 기본 상태에서도 로그를 얻을 수 있다. EventID 106, 129, 100, 200, 110을 확인한다. 

 

WMI Persistence in EventLog
마지막으로 WMI의 등록 및 실행도 Sysmon 로그와 WMI-Activity 로그를 통해서 확보할 수 있다. Sysmon 이벤트 로그는 EventID 20, 21, 22를 확인하고, WMI-Activity 로그는 EventID 5861로 확인한다. 

 

효과적인 방어는 우수한 솔루션과 방어자의 자발적 노력 필요  

이번 글에서는 공격자의 강력한 무기 중 하나인 파일리스 기법에 대해 살펴봤다. 특히 2016년 이후, 파워셸을 이용한 파일리스 기법은 APT 공격이나 악성코드 배포 등 윈도우 시스템 장악을 위한 효과적인 방법으로 사용되고 있다. 공격자는 200 바이트 내외의 짧은 파워셸 원 라이너만으로 메모리에서만 동작하는 악성코드를 구동 시킬 수 있다. 더불어 제어권을 지속적으로 유지하기 위해 백도어를 구성하거나 파워셸 원 라이너를 파일이 아닌 방식으로 디스크에 저장하기도 한다.

 

파일리스 공격은 파일을 사용하지 않기 때문에 일반적인 AV 솔루션으로는 대응이 어렵다. 공격자의 행위를 파악하기 위해서는 시스템의 로깅을 강화하고, 지속적으로 검토하는 것이 필요하다. 공격자의 행위는 명확히 악성으로 판단되기 어려운 방법으로 점점 진화하고 있기 때문에 이러한 관점에서 EDR 솔루션의 활용이 적절한 선택이라고 판단된다. 

 

공격자는 항상 기존 방어 체계를 우회할 수 있는 방법을 찾아내는데 성공해왔다. 이러한 공격자를 막기 위해 새로운 탐지 기법이 추가되고, 대응 방법을 향상시키는 등 방어 체계도 발전하고 있다. 하지만 공격과 방어의 전쟁은 끝나지 않는다. 공격 기법이 등장하고 방어 기법이 따라오는 시간 차를 극복하기 위해서는 보안을 솔루션에만 의지하지 않고 방어자 스스로 새로운 공격 기술에 관심을 기울이는 노력이 필요하다.