정부기관 노린 지속적인 타깃 공격, 목적은?
지난 7월, 한일 무역 분쟁, 북한의 잇따른 미사일 발사, 그리고 러시아 군용기가 독도 영공을 침범하는 등 우리나라와 주변국의 갈등이 심화되고 있던 가운데 또 다시 우리나라 정부기관을 노린 타깃 공격이 확인됐다. 안랩의 보안 분석가들은 관련 샘플을 분석하던 중 이것이 ‘지금’ 발생한 공격이 아니라 몇 년 전부터 지금까지 진행되어온 일련의 공격이라는 정황을 포착했다. 안랩은 최근 발행한 ASEC리포트를 통해 해당 공격에 관한 상세한 내용을 공개했다.
이 글에서는 특정 국내 기관을 겨냥한 타깃 공격과 관련해 현재와 과거의 공격 방식의 공통점을 살펴본다.
2019년 7월, 정부기관 산하 조직에 ‘참고.txt.wsf’라는 이름의 악성 파일이 유입됐다. 구체적인 것은 확인되지 않았지만 이메일을 통해 유입된 것으로 추정되며, 수신자의 의심을 피하기 위해 이중확장자를 사용하고 있다. 텍스트 파일(.txt)처럼 보이지만 실제로는 스크립트 파일(.wsf)로, 사용자가 해당 파일을 실행하면 스크립트가 실행되어 특정 웹사이트에 접속한다. 이때 접속하는 웹사이트는 법률사무소 홈페이지로, 해당 웹사이트는 사전에 해킹되어 접속하는 PC에 악성 파일을 다운로드한다. 이렇게 추가로 다운로드된 악성코드가 악의적인 기능을 수행한다.
공격 방식 자체는 새로울 것은 없으나 '참고.txt.wsf' 파일이 추가로 다운로드하는 악성코드 등에서 과거 발생한 타깃 공격과 유사한 점이 다수 포착됐다.
2019년 7월 공격 사례 분석
'참고.txt.wsf' 파일은 자바 스크립트 파일로, 사전에 해킹된 법률사무소 홈페이지에 접속해 파일을 추가로 다운로드한다. 이때 다운로드되는 파일의 이름은 ChromeDrop.rar로, 크롬(Chrome) 웹브라우저와 관련된 파일로 위장하고 있다. 이 외에도 파이어폭스(Firefox)와 유사한 파일명을 사용한 사례도 있었다.
[그림 1] 참고.txt.wsf 파일의 다운로더 스크립트
[그림 2] 2019년 7월 정부기관 공격 악성코드 동작 과정
[그림 2]와 같은 과정을 거쳐 다운로드된 ChromeDrop.rar은 감염 시스템에 WinRAR나 알집(Alzip.exe)이 설치되어 있는지 확인한다. 공격자가 원하는 압축 프로그램이 있으면 미리 정의한 암호를 이용해 압축을 해제한 후 압축파일 내부에 있던 ChromeDrop.dat를 실행한다.
[그림 3] ChromeDrop.rar의 압축 해제 코드
ChromeDrop.dat는 자신을 로딩한 프로세스가 notepad.exe, winword.exe, 또는 cmd.exe인지 확인하고 아닐 경우 자신의 프로세스를 종료한다. 감염 시스템이 악성코드 분석 시스템인지 확인하는 과정으로 보인다. 분석 시스템이 아닌 것으로 판단되면 ChromeDrop.dat는 레지스트리에 자기 자신을 등록하고 rundll32.exe를 통해 DLL 파일 내 ChromeCheck 함수를 실행한다. 이 함수는 특정 FTP 서버에 접속해 ChromeSearch.dat 파일을 다운로드하는데, 이렇게 다운로드된 ChromeSearch.dat는 사용자의 키 입력 내용을 저장하고 화면 캡쳐, 파일 목록 등의 정보를 수집해 유출하는 역할을 한다. 이때 수집한 정보를 ChromeSearch.klg, ChromeSearch.scf, ChromeSearch.cif ChromeSearch.lst 등 크롬 브라우저와 관련된 파일처럼 보이는 파일명으로 저장한다.
[그림 4] 시스템 정보 유출 기능
공격 시기별 악성코드 및 연관성 상세 분석
올해 7월에 정부기관을 노린 공격에서 확인된 악성코드와 유사한 악성코드가 지난 2016년 정부기관을 노린 공격에서도 사용된 바 있다. 또 지난 2015년 초부터 국내에서 발생한 공격들도 연관되어 있다. 이 일련의 공격에 사용된 악성코드는 ▲다운로더 ▲드롭퍼 ▲스틸러 등 크게 세 가지로 분류할 수 있다.
1. 다운로더(Downloader)
다운로더는 2015년 9월부터 발견되고 있으며, 파일 사이즈는 대략 70 킬로바이트 정도다. 종종 UPX로 패킹된것도 있는데, 패킹된 파일의 사이즈는 약 35 킬로바이트 정도다. 주로 사용된 파일 이름은 wsat.dll, WinSAT.dll, WinSat64.dll, Mcx2Svc.dat 등이다.
초기에는 일부 변형만 EXE 형태였으며, 이후 대부분 DLL 파일 형태를 하고 있다. 대부분의 다운로더는 웹 서버에서 파일을 다운로드하는데, 올해 발견된 사례와 같이 FTP 서버에서 파일을 다운로드하는 변형도 존재한다.
[그림 5] FTP에서 파일을 다운로드하는 코드
2. 드롭퍼(Dropper)
드롭퍼는 대략 230 킬로바이트 정도의 크기를 갖고 있으며, WINWORD.exe, WinSAT.exe 등의 파일명을 사용하고 있다. 보통 리소스 내부에 32 비트와 64비트 악성코드 파일을 압축해서 보관하고 있다. 드롭퍼는 감염 시스템이 32비트 또는 64비트인지 확인하고 그에 따라 파일을 생성한다. 이때 생성되는 파일이 시스템 정보를 유출하는 스틸러(Stealer)이다.
[그림 6] 리소스 내부의 저장 코드 해제
3. 스틸러(Stealer)
스틸러는 드롭퍼나 다운로더에 의해 생성되는 정보 유출 목적의 악성코드로, 대략 120 킬로바이트의 사이즈를 갖고 있다. 2015년에는 wsat.dll, WinSAT.dll 등의 파일명이 사용되었으며, HwpUpdateCheck.dll이 사용된 경우도 있다. 2019년에는 앞서 살펴본 바와 같이 ChromInst.dat, ChromeSearch.dat 등 크롬 웹브라우저와 관련된 것처럼 보이는 파일명을 사용하고 있다. 이렇게 이름은 시기별로 변화했지만 키 입력 내용, 화면 캡쳐, 시스템 정보 등을 수집해 저장하고 유출하는 행위에는 변화가 없다.
안랩의 V3 제품군에서는 이들 악성코드를 다음과 같은 진단명으로 탐지하고 있다.
<V3 제품군 진단명>
- Backdoor/Win32.Akdoor
- Downloader/Win32.Agent
- JS/Downloader
- Trojan/Win32.Agent
- Trojan/Win32.Downloader
지금까지 살펴본 것처럼 공격자는 적어도 지난 2015년초부터 2019년 현재까지 유사한 파일명과 코드를 이용해 지속적인 공격을 전개하고 있다. 무엇보다 지속적으로 우리나라 정부기관, 그 중에서도 외교 관련 기관이 공격 대상에 포함되어 있는 점으로 미루어 우리나라와 주변국과의 혼란스러운 정세를 틈타 앞으로도 공격을 계속할 가능성이 높다.
우리나라 정부기관 대상의 타깃 공격에 관한 보다 자세한 내용은 최근 발행된 ASEC리포트(ASEC Report) Vol. 96에서 확인할 수 있다.
- AhnLab분석연구팀 차민석 수석연구원