국내 기관 겨냥한 USB 기반 공격, 핵심은?
지난 2008년부터 현재까지 방위산업체를 비롯해 국방 및 정치 관련 기관, 보안, IT, 전자 등 다양한 산업 분야를 대상으로 공격을 전개해온 위협 그룹이 있다. 일명 ‘틱(Tick)’ 그룹으로 불리는 이들은 공격 대상의 보안 취약점 등을 사전에 파악하여 다양한 방식을 이용해 지속적인 공격을 시도한다. 특히 지난 몇 년간 국내 기업의 내부 정보를 탈취하기 위해 해당 기업에서 사용하는 보안 USB를 이용한 악성코드 감염을 시도했다. 안랩 시큐리티대응센터(AhnLab Security Emergency-response Center, 이하 ASEC)는 최근 발표한 ASEC 리포트(ASEC Report Vol. 95)에서 USB를 통한 공격에 이용된 악성코드를 ‘틱USB(Tickusb)’로 명명하고, 관련 악성코드와 공격 기법을 상세히 소개했다.
이 글에서는 틱USB(Tickusb) 공격에 사용된 주요 악성코드를 살펴본다.
‘틱USB(Tickusb)’는 틱(Tick) 공격 그룹이 USB 플래시 드라이브를 통해 국내 기업의 기밀 정보 등을 유출하기 위해 제작한 악성코드로, 2014년 봄부터 2017년 겨울까지 지속적으로 다양한 변형이 발견됐다.
[그림 1]은 틱 공격 그룹이 사용한 틱USB 악성코드의 관계도이다. 악성 DLL 파일이 실행되면 특정 경로에 로그 파일을 생성하고 USB 플래시 드라이브 연결을 검사한다. 시스템에 USB 플래시 드라이브가 연결된 경우, 악성 EXE 파일을 실행하고 추가 파일을 다운로드하기도 한다.
악성 EXE 파일은 변형에 따라 조금씩 다른 기능을 수행하지만 일반적으로 USB 플래시 드라이브 내 파일의 정보를 수집한다. 일부 변형은 USB 플래시 드라이브 내 EXE 파일을 변조시킨다. 이렇게 변조된 EXE 파일이 존재하는 USB를 다른 시스템에 연결하여 이 파일을 실행하면 해당 시스템도 틱USB 악성코드에 감염된다.
틱USB 악성코드 구성
일부 변형은 단독 파일 형태로 존재하는 경우도 있지만, 대부분의 틱USB 악성코드는 DLL 파일과 EXE 파일로 구성되어 있다.
1. DLL 파일
틱USB 악성코드의 DLL 파일은 BrWeb.dll, CRYPTEBASE.dll, wincrypt.dll 등이다. 이들 DLL 파일은 로더(Loader) 역할을 하며, [그림 2]와 같이 실행하는 로그 파일 이름, EXE 파일 경로, 드라이브 종류 등의 문자열을 포함하고 있다.
그러나 2015년 4월 발견된 틱USB 악성코드는 DLL 파일 단독 형태로 추가 EXE 파일이 존재하지 않는다. 또 2015년 6월 발견된 BrWeb.dll은 브라더(Brother) 프린터 관련 파일로 위장했으며, 프린터 관련 파일인 BrStMon.exe를 패치하여 해당 EXE 파일이 실행될 때 로드된다.
2. EXE 파일
틱USB 악성코드의 EXE 파일은 USB 플래시 드라이브 내 파일 목록을 수집하거나 EXE 파일을 변조하는 기능을 수행한다. cftmon.exe, svcmgr.exe, wsmt.exe 등이 확인되었으며, 이들 EXE 파일 내에는 [그림 3]과 같이 파일 감염과 관련된 문자열, USB 플래시 드라이브와 관련된 로그 등의 문자열이 포함되어 있다.
2015년 6월 발견된 EXE 변형은 USB 플래시 드라이브 내 파일 정보를 수집하고 EXE 파일을 변조하는 기능이 추가되었다. 일부 변형의 경우, USB 플래시 드라이브에서 EXE 파일을 찾아 변조한다. 변조할 대상 EXE 파일의 끝에 특정 파일을 추가하여 실행하는 방식을 사용했다. 2012년에서 2014년 사이에 발견된 일부 변형의 경우, 국내 기업에서 사용하는 특정 보안 USB가 연결되면 해당 USB 드라이브의 특정 영역에서 데이터를 읽어 실행하는 것이 확인되었다. 이는 망분리 환경의 시스템을 공격하기 위한 것으로 추정된다.
관련 악성코드 상세 분석
틱USB 악성코드의 구체적인 감염 방식은 아직 확인되지 않았지만, 이와 관련된 드롭퍼, 다운로더 등이 발견되었다. 관련 드롭퍼를 통해 변조된 설치 파일과 틱USB 악성코드에 감염된 USB에 존재하는 파일 변조 코드를 비교 분석한 결과, 드롭퍼 중 일부는 틱USB 악성코드가 변조한 EXE 파일로 확인됐다. 또한 공격자는 윈도우 부팅 시 틱USB 악성코드가 자동 실행되도록 하는 대신 특정 파일이 실행될 때만 동작하게 했다. 이는 사용자가 악성코드 감염 여부를 알 수 없도록 하기 위함으로 보인다.
1. 드롭퍼(Dropper)
틱USB 악성코드와 관련된 다수의 드롭퍼가 존재하는데, 안랩이 2014년 3월에 수집한 Aya.exe도 그중 하나다. Aya.exe는 바둑 게임 관련 파일로, [그림 4]와 같이 바둑 게임이 실행되면 임시 폴더에 초기 버전의 틱USB 악성코드가 생성된다. 이 밖에도 2015년 6월 초 발견된 Secure Unlock win.exe와 Portable SecretZone.exe, pNDPS(V2.11).exe, NEW_GOMPLAYERSETUP.exe 등의 드롭퍼가 확인되었다.
2. 다운로더(Downloader) – 고스트다운(Ghostdown)
틱USB 악성코드에 감염된 시스템에서 다운로더의 역할을 하는 고스트다운(Ghostdown)이 확인되었다. 고스트다운은 2013년 2월에 처음 발견된 이후 2018년 2월까지 활동이 확인되었으며, 변형 또한 발견된 바 있다. [그림 5]는 고스트다운 변형에서 확인된 문자열로, API, 접속 주소 등의 주요 문자열이 암호화되어 있다. 초기버전의 고스트다운은 접속 주소와 주요 문자열이 XOR 0xDF 키로 암호화되어 있다.
또 초기 고스트다운 변형은 www.dnserver.com 이라는 주소의 C&C 서버를 사용한데 반해 2016년 틱USB 악성코드에 감염된 시스템에서 발견된 변형은 C&C 서버로 클라우드 서비스를 이용한 것으로 확인됐다.
3. 패쳐(Patcher) - iff.exe
패쳐 역할을 하는 iff.exe는 EXE 파일을 변조하여 특정 EXE 파일을 실행하거나 특정 DLL 파일을 로드한다. 틱USB 악성코드에 감염된 시스템에서 발견된 iff.exe 파일은 공격자가 시스템에 침투한 이후 추가로 설치한 파일로 추정된다.
iff.exe는 [그림 6]과 같이 파일 변조 방식, 변조 대상 파일, 실행할 파일이나 로드할 DLL 파일을 인자 값으로 입력받는다. 또한 프로그램 시작 위치인 엔트리 포인트(Entry Point)에 점프 명령을 변경하여 iff.exe가 추가한 명령이 먼저 실행되도록 한다.
4. 로더(Loader) – BrStMonW.exe
2015년 6월 1일, 공격자는 iff.exe 파일을 이용해 브라더(Brother)사의 프린터 프로그램인 BrStMonW.exe 파일을 패치했다. 이를 통해 로더 역할을 하는 BrStMonW.exe 파일이 실행될 때 악성 BrWeb.dll 파일을 먼저 로드하도록 변조했다. 또한 [그림 7]과 같이 악성코드가 추가한 코드 주소인 ‘0x004972EF’가 먼저 실행되도록 엔트리 포인트를 수정했다.
iff.exe와 같은 패처를 이용하면 공격자는 시스템 내부에 침입한 후 프로그램을 선택하여 패치하는 과정을 통해 추가 악성코드를 실행하도록 할 수 있다. 특징적인 점은 BrStMonW.exe 파일의 비어있는 영역에 임의의 코드를 덮어쓰기 때문에 파일 변조 후에도 파일 길이에는 변화가 없다는 것이다. iff.exe에 의해 추가된 코드는 특정 DLL(BrWeb.dll) 파일을 메모리에 로딩한 후 실행한다. 즉, 프린터를 사용할 때만 틱USB 악성코드가 동작하기 때문에 사용자로서는 감염 사실을 알아차리기 어렵다.
추가 설치되는 파일
틱USB 악성코드에 감염된 시스템에서 키로거(Keylogger), ARP 스푸퍼(ARPSpoofer), 포트 스캐너(PortScanner), 미미카츠(Mimikatz) 등이 추가로 발견되었다.
1. 키로거(Keylogger)
틱USB 악성코드에 감염된 시스템 중 일부에서 키로거가 발견되었다. 2017년 4월부터 2018년 2월까지 발견된 키로거는 주로 apphelp.dll, linkinfo.dll, netutils.dll 등의 파일명을 사용했다. 이들 키로거에 사용된 주요 문자열은 [그림 8]과 같으며, 사용자가 입력한 키 내용을 debug.log 등의 파일에 저장했다.
2. ARP 스푸퍼(ARPSpoofer) – hwp70.exe
공격자는 국내에서 사용되는 한글 프로그램(한컴오피스) 관련 파일로 위장하여 공격을 수행했다. 틱USB 악성코드에 감염된 시스템의 한컴오피스 폴더(C:\HNC\Hwp70)에서 악성 EXE 파일인 hwp70.exe가 발견되었다.
3. 포트 스캐너(Port Scanner)
공격자는 2016년 파운드스톤(Foundstone)의 포트 스캐너인 스캔라인(ScanLine)을 패킹한 파일을 공격에 이용했다. 다수의 시스템에서 해당 프로그램을 사용한 것이 확인되었으며, 사용된 파일 이름은 msp.exe, ls.tmp, sl-p.exe 등이다.
4. 미미카츠(Mimikatz) – mi.exe, mi2.exe
공격자는 감염 시스템에 미미카츠(Mimikatz) 변형인 mimi 2.1과 mimi 2.1.1 버전을 사용했다. 파일 이름 또한 틱(Tick) 공격 그룹에서 주로 사용하는 mi.exe, mi2.exe였다.
틱 그룹, 공격 대상 인프라에 따라 공격 방식 선택해
지난 2008년부터 약 10여 년간 국내 기관 및 기업을 지속적으로 공격하고 있는 틱(Tick) 그룹은 공격 대상의 IT 환경을 파악하고, 그에 따라 스피어 피싱(Spear Phishing), 워터링 홀(Watering hole) 등 다양한 방식으로 공격을 전개하고 있다. 특히 위에서 살펴본 것처럼 망분리 환경 등을 공격하기 위해 USB 플래시 드라이브 내 EXE 파일을 변조해 악성코드를 감염시키는 방법도 시도했다. 따라서 일반 기업은 물론 망분리 환경을 운영 중인 기관 및 기업에서도 USB 사용과 관련해 각별한 주의가 필요하다.
틱USB 악성코드에 관한 보다 상세한 내용은 최근 발행된 ASEC Report에서 확인할 수 있다.
한편, V3 제품군에서는 틱USB 관련 악성코드를 다음과 같은 진단명으로 탐지하고 있다.
<V3 제품군 진단명>
HackTool/Win32.Hijack
HackTool/Win32.Mimikatz
HackTool/Win32.Tickpatcher
Trojan/Win32.Agent
Trojan/Win32.Homamdown
Trojan/Win32.Loader
Trojan/Win32.Tickusb
- AhnLab분석연구팀 차민석 수석연구원