보안 이슈

AhnLab 보안 전문가의 심층분석! 보안 이슈 정보를 전해드립니다.

오션로터스 7년의 흔적과 5가지 공격 특징

  • Facebook에 공유하실 수
    있습니다.

  • Twitter에 공유하실 수
    있습니다.

  • Linked in

    Linked in에 공유하실 수
    있습니다.

  • 붙여넣기

    블로그나 게시판에 붙여넣기 하실
    수 있습니다.

  • AhnLab
  • 2020-10-05
오션로터스(OceanLotus)는 많은 위협 분석가들이 베트남의 이익을 위해 활동하는 것으로 추정하고 있으며, 지적 재산을 훔치는 APT(Advanced Persistent Threat) 그룹으로 알려져 있다. 처음 등장한 것은 2012년이며, 2년 후인 2014년부터 오션로터스의 본격적인 활동이 시작되었다. 주 공격 타깃은 동아시아 국가, 베트남과 관련된 단체, 해양․과학․자동차 산업체 등이다. 

이 글에서는 오션로터스 위협 그룹이 공격에 사용한 악성코드, 공격 백터를 분석하고, 그들의 공격 기법을 상세하게 소개한다. 또한 오션로터스의 한국 관련 활동에 대해서도 살펴본다.



개요
오션로터스라는 이름은 티안야 레버러토리스(Tianyan Laboratories)에서 처음으로 명하였고, 베트남의 이익을 위한 공격에 사용된 악성코드는 오션로터스로 분류되기 시작했다. 오션로터스는 많은 보안업체들에 의해 APT 32, APT-C-00, 코발트 키티(Cobalt Kitty), 씨로터스(SeaLotus), 섹터(Sector) F01’, ‘해련화(海莲花), 우드론(WOODLAWN), 폰드 로치(POND LOACH), 오션 버팔로(OCEAN BUFFALO) 등으로 불리고 있다.

오션로터스는 중국, 캄보디아, 한국 등 동아시아에 속한 국가 내에서 베트남의 현정권 사상과 반대되는 사상 활동가, 동아시아 국가 연합(ASEAN), 외교/군사/산업 기관 등을 공격 대상으로 삼고 있으며, 최근 들어 독일, 호주, 미국도 공격 타깃으로 삼고 있다. 또한 이들이 사용한 악성코드에서는 베트남어가 탐지되었으며, 악성코드의 컴파일 시간이 베트남의 주요 업무 시간(08~17시, 월요일~토요일)과 일치한다는 특징이 있다.


[표 1] 오션로터스의 공격 대상(개인/단체/국가)

오션로터스 그룹은 2014년도부터 컴프로고(KOMPROGO)라는 악성코드 패밀리로 시작하여 다양한 악성코드 패밀리를 사용해왔다. 윈도우 플랫폼뿐만 아니라 안드로이드, macOS 플랫폼 악성코드를 만들어 배포한 적이 있으며, 최근 2020년에는 팬텀랜스(PHANTOMLANCE)와 커다운(KerrDown)이라고 불리는 악성코드를 지속적으로 배포하고 있다.


[표 2] 오션로터스와 관련된 악성코드 패밀리

오션로터스의 공격 벡터
1) 공격 벡터 개요
오션로터스의 악성코드는 수백 개가 되기 때문에 공격 벡터(Attack Vector)가 다양하겠지만 크게 보면 아래 [그림 1]과 같이 3단계로 나눌 수 있다.


[그림 1] 오션로터스의 Attack Vector

Step 1. 악성코드 유포
Step 1에서는 정상 사이트 침해 후, 악성코드가 삽입된 피싱 사이트로 리다이렉션 시켜 첨부 파일을 다운로드 하도록 유도하는 워터링 홀(Watering Hole) 공격을 수행한다.


[그림 2] 오션로터스에 의해 침해된 정상 사이트

또는 [그림 3]과 같이 스피어 피싱 메일을 보낸 후 첨부 파일을 다운로드하도록 유도한다.


[그림 3] 오션로터스가 공격에 이용한 스피어 피싱 메일

Step 2. 파일 드롭 및 실행
Step 2 단계에서는 다운로드 된 첨부 파일이 실행되면 정상 EXE 파일과 악성 DLL 파일을 드롭한다. 실행되는 첨부 파일의 종류는 크게 마이크로소프트 워드(Microsoft Word, 이하 MS 워드), ‘SFX 아카이브(Self-extracting Archive)’, ‘노멀 아카이브(Normal Archive)’로 나뉜다. MS 워드는 매크로를 이용해 악성코드를 드롭하거나 CVE 취약점을 이용해 드롭 후 실행한다.


[그림 4] MS 워드의 매크로를 이용한 악성코드 배포

오션로터스가 지금까지 사용한 MS 워드 취약점은 [표 3]과 같다.


[표 3] 악성코드 배포 시 사용한 MS 워드 취약점

SFX 아카이브는 SFX 스크립트를 이용해 ocx 파일을 등록시키거나 정상 EXE 실행 파일을 자동으로 실행시킨다.


[그림 5] SFX 스크립트를 이용해 ocx 파일을 등록하는 SFX 아카이브


[그림 6] SFX 스크립트를 이용해 정상 실행 파일을 실행시키는 SFX 아카이브

노멀 아카이브는 단순히 정상 EXE 파일과 악성 DLL을 압축한 파일이며, 사용자가 직접 압축을 풀어 수동으로 파일을 실행해야 악성코드에 감염된다.


[그림 7] 정상 EXE 파일과 악성 DLL을 압축한 노멀 아카이브

첨부 파일을 통해 정상 EXE와 악성 DLL이 드롭되고 정상 EXE 파일이 실행되면 정상 EXE 파일은 악성 DLL 파일을 로드한다. 로드된 악성 DLL은 정상 MS 워드 문서인 doc 파일을 드롭 후 문서를 실행시킨다. 즉, 사용자가 정상 EXE 실행 파일을 실행시키면 마치 MS 워드 문서를 실행 시킨 것처럼 문서가 보여진다.


[그림 8] 드롭 후 실행된 MS 워드 문서

Step 3. 셸 코드 다운로드 및 실행
Step 3 단계에서는 악성 DLL이 셸 코드 배포 서버로부터 셸 코드를 다운로드 하여 실행한다. 셸 코드는 암호화된 셸 코드며, 복호화 과정을 거친 후 실행된다. 복호화된 셸 코드는 RAT 악성코드이며, 사용된 RAT의 종류는 아래와 같이 크게 3가지로 나뉜다.


[표 4] Step 3에서 사용된 RAT 종류

2) 2020년 공격 벡터
2020년의 공격 벡터는 이전과 크게 다르지 않다. 하지만 기존 Step 2 단계의 SFX 아카이브 악성코드에선 파일 1개와 DLL 파일 1개였다면, 2020년에 발견된 아세안(ASEAN) 단체를 타깃으로 한 SFX 아카이브 악성코드에는 [그림 9]와 같이 EXE 파일 1개, DLL 파일 2개, 바이너리 파일 1개가 존재한다.


[표 5] 2020년 악성코드 샘플 정보


[그림 9] 2020년 악성코드 샘플(Normal Archive) 파일

먼저 오션로터스의 SFX 아카이브를 실행시키면 SFX 스크립트로 인해 압축 내 실행 파일인 MicrosoftUpdate.exe가 실행된다. ‘MicrosoftUpdate.exe’ 파일은 파일명에 있는 ‘Microsoft’라는 단어와 관련 없는 애플 소프트웨어이며, 디지털 서명까지 되어있는 정상 애플 소프트웨어 업데이트 실행 파일이다.


[그림 10] 애플 소프트웨어 업데이트 실행 파일

MicrosoftUpdate.exe가 실행되면 현재 실행 파일이 존재하는 경로에서 SoftwareUpdateFiles.dll을 로드한다. 이 부분까진 기존과 동일하지만 로드되는 SoftwareUpdateFiles.dll 파일은 기존과 다르게 악성 파일이 아닌 정상 파일이다. 정상 DLL인 SoftwareUpdateFiles.dll 파일이 로드되면 SoftwareUpdateFiles.Resources/en.lproj 경로에 있는 SoftwareUpdateFilesLocalized.dll 파일을 로드하며, 로드된 DLL 파일은 악성 파일이다.


[그림 11] SoftwareUpdateFiles.dll과 SoftwareUpdateFilesLocalized.dll이 로드되는 상황

즉, 기존 악성코드는 1번의 DLL 로드 과정만으로 악성 DLL이 1번만에 로드가 됐다면 2020년에 새로 발견된 악성코드는 DLL 로드 과정을 한번 더 거쳐 악성 DLL이 로드된다. 로드된 악성 DLL은 기존과 동일한 방식으로 MS 워드 문서인 doc 파일을 드롭 후 실행한다. 마지막으로 SoftwareUpdateFile.locale 파일에서 암호화된 셸 코드를 추출 후 복호화 한 뒤 실행한다. 실행된 셸 코드는 암호화된 Denis RAT을 복호화 후 실행한다. 해당 악성코드의 전체적인 과정을 요약하면 아래와 같다.

[그림 12] 악성코드 동작 과정

오션로터스의 공격 벡터
1) DLL 하이재킹(Hijacking) 기법 이용
오션로터스 그룹이 악성코드에 자주 사용한 기법은 DLL 사이드로딩(Sideloading), DLL 프리로딩(Preloading), DLL 플랜팅(Planting)이라고 불려지는 DLL 하이재킹 기법이다. DLL 하이재킹이란 윈도우 애플리케이션에서 DLL을 로드하는 과정에서 DLL의 경로가 지정되지 않아 발생되는 취약점이다. 일반적으로 DLL을 로드시키는 로드라이브러리(LoadLibrary) API 함수에서 DLL 파일명이 들어갈 인자에 경로 정보 없이 파일명만 입력해주고 사용하게 되면, 실행될 때 로드될 DLL이 자동으로 윈도우 메커니즘에 따라 탐색되고 로드된다. 따라서 공격자가 미리 탐색될 디렉터리에 임의의 DLL을 위치시킨다면 악의적인 코드를 실행시킬 수 있다. 그렇기 때문에 보통 공격자들은 DLL 하이재킹을 이용해 악성 DLL을 실행시키고 싶을 때, 네트워크 공유 폴더, 실행 파일과 동일한 경로 등에 DLL들을 넣어 같이 배포하고 있다.


[그림 13] 로드라이브러리 API 함수에서 경로 정보 없이 DLL 파일명만 입력된 상황


[그림 14] DLL 로드 메커니즘


[그림 15] DLL 로드 메커니즘에 따라 탐색되는 과정

오션로터스 그룹은 정상 프로그램으로 위장하고 DLL 하이재킹 기법을 이용하기 위해 주로 정상 소프트웨어인 ‘EXE 실행 파일’과 ‘악성 DLL 파일’을 같이 배포했다. 지금까지 악성코드에 사용된 정상 소프트웨어와 DLL명은 [표 6]과 같다.


[표 6] 악성코드에 사용된 정상 소프트웨어와 DLL명


[표 7] 2018년 ~ 2020년 동안 사용된 정상 프로그램과 DLL

[그림 16] 2018~2020년 DLL 하이재킹으로 사용된 DLL 현황

2) WinWord.exe 관련 프로그램 이용
오션로터스가 최근 2년 동안 MS 워드를 자주 이용한 이유는 일반 사용자들이 문서를 거리낌 없이 실행한다는 점과 이력서 관련 이메일을 보낼 때 피싱에 최적화된 프로그램이기 때문이다. MS 워드 관련 프로그램인 Winword.exe와 wwlib.dll를 이용한 악성코드 통계를 보면 최근 2년 사이에 악성코드 수가 많아졌다. 또한 지금도 계속 배포되어 2018년과 2019년 같이 2020년에도 악성코드의 수가 증가할 것으로 예상된다.

2013년도에 악성코드를 처음 배포할 때는 악성코드를 Winword.exe 프로그램처럼 만들어 하나의 ‘악성 Winword.exe’만 배포하였다. 아래 [그림 17]과 같이 ‘악성 Winword.exe’를 2013년도부터 2019년도까지 배포하였으며, 시간이 흐를 수록 악성 Winword.exe의 배포 횟수가 점점 줄어들고 있다. 2019년도까지 악성 Winword.exe의 배포 횟수가 줄어들다가 2018년부터 ‘악성 Winword.exe’가 ‘정상 Winword.exe+악성 wwlib.dll’ 형태로 변형되어 DLL 하이재킹 기술이 이용되기 시
작했다. 이는 DLL 하이재킹 기법을 이용하여 악성코드 감염률을 높이기 위한 것으로 보인다.


[그림 17] 최근 2년 사이 급증한 MS 워드 관련 악성코드

3) 압축 파일내 동일한 파일 구조
오션로터스 그룹이 DLL 하이재킹을 이용한 악성코드를 RAR 파일 형태로 배포할 때, 동일한 파일 구조를 갖는 것을 확인했다. 가장 많이 배포된 ‘wwlib.dll’이 삽입된 RAR 내 파일 구조를 보면 아래 [그림 18]과 같이 항상 동일하게 ‘정상 Winword(파일명: 피싱 제목) + 악성 DLL(wwlib.dll)’ 구조로 이뤄졌다. 이러한 파일 구조로 2018년부터 2020년인 지금까지도 동일한 형태로 압축되어 배포되고 있다. 뿐만 아니라 모든 Winword.exe의 수정 시간(Modified Time)도 동일하다.


[그림 18] 압축 파일 내 동일한 파일 구조(정상 Winword.exe + 악성 wwlib.dll)

또한 배포된 Winword.exe의 해시값이 모두 일치했다. 이를 통해 오션로터스 그룹은 새롭게 제작한 DLL 악성코드와 파일명만 변경한 Winword.exe 파일을 압축해서 배포한 것으로 추측된다.


[그림 19] 배포된 Winword.exe의 해시값이 모두 일치

4) 형식화된 파일명
현재까지 수집된 오션로터스의 샘플을 보면 매년마다 CV(Curriculum Vitae) 이력서를 가장한 악성코드가 등장하였으며, 2020년에도 CV 이력서를 가장한 악성코드 샘플이 포착됐다.


[표 8] CV 이력서를 가장한 악성코드 샘플명

먼저 CV 이력서 관련 악성코드에서 파일명을 분석한 결과 [표 9]와 4종류의 동일한 패턴들이 보였다.


[표 9] CV 이력서 관련 악성코드 파일명의 동일한 패턴

CV 이력서뿐 아니라 [표 10]과 같이 매년마다 특정 연도와 관련된 보고서 악성코드가 포착되고 있다. 현재까지는 2020년와 관련된 악성코드가 확인되지 않았지만 추후에 기존과 비슷한 형식으로 새로운 악성코드가 나올 것으로 추정된다.


[표 10] 매년마다 특정 연도와 관련된 보고서

5) 형식화된 셸 코드 파일명
오션로터스의 악성코드는 보통 외부 서버로부터 암호화된 셸 코드를 다운받아 실행한다. 암호화된 셸 코드는 바이너리 파일로 되어 있으며, 파일명은 보통 4~5글자로 이뤄졌다. 그리고 다운로드 되는 셸 코드 바이너리가 사진 파일로 위장하기 위해 그림 파일 확장자(.jpg, .png, .gif)를 붙이거나 스테가노그래피(Steganography)를 사용하여 실제 사진에 셸 코드를 넣어 배포했다.


[그림 20] 스테가노그래피를 통해 셸 코드가 삽입된 사진들


[표 11] 형식화된(그림 파일 확장자 포함) 셸 코드 파일명

또한 [표 12]와 같이 2~5글자 뒤에 32와 64라는 숫자가 붙는 특징이 존재했다. 이는 셸 코드가 보통 시스템 종류(32bit/64bit)에 대한 의존성(Dependency)이 있기 때문에 시스템 종류(32bit/64bit)에 맞게 배포된 셸 코드로 파악된다. 즉, 2~5글자 뒤에 붙는 32와 64라는 숫자는 셸 코드가 동작될 수 있는 시스템 종류(32bit/64bit)로 추측된다.


[표 12] 형식화된(시스템 종류 포함) 셸 코드 파일명

오션로터스의 한국 관련 활동
1) 자동차 산업 APT 공격
오션로터스는 특정 국가에 국한하지 않고, 베트남의 이익과 관련된 대상을 타깃으로 APT 공격을 수행하는 그룹이다. 그 중 하나의 사례로는 자동차 산업이 있다. 2019년 초 베트남 정부는 본격적으로 자국의 자동차 및 부품 산업 육성을 지원하기 시작했다. 이에 따라 빈패스트(VinFast)라는 베트남 자동차 기업에서 자동차를 출시하기도 했다.


[그림 21] 2019년 베트남 빈패스트 기업에서 자동차 출시 준비

이러한 상황에서 글로벌 자동차 산업을 대상으로 한 APT 공격이 확인되었다. 먼저 APT 공격으로 침해된 글로벌 자동차 산업군 내 PC에 코발트 스트라이크(Cobalt Strike)가 설치되어 있었고, 특정 IP에서 워터링 홀 공격으로 사용하기 위해 만들어진 것으로 추정되는 자동차 산업 관련 가짜 도메인들이 발견되었다.


[그림 22] 오션로터스 그룹이 사용한 자동차 기업의 가짜 도메인 예시

뿐만 아니라 2019년 초 국내 자동차 기업에서 접수된 악성코드 샘플 중 오션로터스로 의심되는 RAR 악성코드가 발견되었다. 해당 RAR 악성코드 안에는 ‘Staff 2019 - Scan by HP-Laser-Jet-Private-Printer-2019.exe’라는 파일명으로 된 정상 winword.exe과 악성 wwlib.dll 파일이 존재했다. 정상 winword.exe가 실행되면 같은 경로에 있는 악성 wwlib.dll을 DLL 하이재킹한다. 악성 DLL은 ‘%temp%’ 디렉터리에 정상 winword.exe과 악성 wwlib.dll 파일을 드롭 한 뒤 정상 winword.exe 파일을 실행하여 특정 서버로부터 셸 코드로 추측되는 get.png 파일을 다운로드한다.


[그림 23] 2019년 초 등장한 오션로터스 악성코드 동작 흐름도

또한 국내 보안업체인 NSHC에 따르면 2019년 초에 국내 자동차 산업을 표적으로 삼은 RAR 악성코드가 발견되었다고 한다. 해당 RAR 악성코드에는 아래와 같이 정상 Winword.exe 파일과 wwlib.dll 파일이 압축되어 있었으며, 이 악성코드 또한 DLL 하이재킹 기법을 사용하는 악성코드로 추정된다.


[그림 24] 국내 자동차 산업을 표적으로 삼은 RAR 악성코드 (출처: NSHC)

이러한 공격 방식들은 오션로터스가 기존에 자주 사용하던 방식과 동일하며, 자동차 출시 시기와 비슷한 시기에 발생했다. 오션로터스를 APT 32라는 용어로 명명한 파이어아이(FireEye)는 APT 32가 ‘자동차 산업을 표적으로 삼고 있는 그룹’이라고 발표하기도 했다.

2) 재한 외국인 대상 APT 공격
현 베트남 정부의 반대 세력인 캄보디아 구국당(CNRP)은 2018년 7월 국내에서 집회 활동을 한적이 있다.


[그림 25] 국내에서 집회 활동을 하는 캄보디아 구국당(CNRP)

집회가 이루어진 시기에 ‘FW Report on demonstration of former CNRP in Republic of Korea.doc’라는 악성코드가 발견되었으며, 해당 악성코드는 파일명에서 볼 수 있듯이 캄보디아 구국당(CNRP) 소속이면서 한국에 거주중인 재한 외국인을 대상으로 유포되었다. 해당 악성코드는 MS 워드 문서로 되어있으며, 문서 실행 시 CVE-2017-11882 취약점으로 원격 코드가 실행된다.


[그림 26] ‘FW Report on demonstration of former CNRP in Republic of Korea.doc’ 문서

3) 한국어 폰트를 가장한 APT 공격
2017년 상반기에 오션로터스가 제작한 악성코드 중 한국어 폰트로 추정 ‘KoreaTimeSSK.ttf’ 파일이 발견됐다. 해당 악성코드는 한국어 폰트를 사용하려는 사용자를 타깃으로 한 악성코드로 추정된다. ‘KoreaTimeSSK’라는 폰트는 서던 소프트웨어(Southern Software)에서 제작한 한국어 폰트로, 파일의 확장자는 .ttf로 되어 있었지만 파일 포맷은 PE 파일이다. 오션로터스는 [표 13]과 같이 ‘‘KoreaTimeSSK.ttf’뿐만 아니라 폰트 관련 악성코드를 2017년부터 2018년까지 배포한 이력이 있다.


[표 13] 오션로터스가 배포한 폰트 관련 악성코드

오션로터스에 대한 대응 현황 및 결론
안랩 V3 제품군(엔진 버전:2020.08.27.05)에서는 아래와 같은 진단명으로 진단 및 치료 기능을 제공한다.

[표 14] 안랩 V3 제품군 진단명

이 보고서는 2013년도부터 2020년 상반기까지 배포된 오션로터스 악성코드 샘플을 수집하고 분석한 내용을 바탕으로 작성했다. 여기서 소개한 DLL 하이재킹 악성코드는 현재까지 지속적으로 배포되고 있다. 오션로터스 그룹은 베트남의 이익과 관련한 이슈와 대상을 타깃으로 APT 공격을 수행하므로 공격 동향을 항상 모니터링하고 경계해야 한다.

이 글을 통해 오션로터스 악성코드에 대해 대중적으로 알려지고, 이후에 발생할 수 있는 오션로터스 악성코드에 대해 사전 대응이 가능하길 기대한다. 특히 2020년에는 윈도우뿐 아니라 안드로이드 악성코드가 활발하게 활동하고 있다. 따라서 안드로이드 악성코드에 대한 샘플 수집과 분석을 바탕으로 한 동향 파악도 필요하다.
  • AhnLab 로고
  • TI개발팀 이영훈 주임
  • Facebook에 공유하실 수
    있습니다.

  • Twitter에 공유하실 수
    있습니다.

  • Linked in

    Linked in에 공유하실 수
    있습니다.

  • 붙여넣기

    블로그나 게시판에 붙여넣기 하실
    수 있습니다.

지금 마케팅 안내 수신 동의하고
선물 받아가세요!

이벤트 내용 더 보기
세미나/제품/이벤트 안내

더 알아보기

개인정보 수집 및 이용 동의서

선물 발송을 위해 아래와 같이 개인정보를 수집 및 사용합니다.
동의를 거부할 수 있으나, 동의 거부 시 이벤트 참여가 불가능 합니다.

  1. ㆍ수집 항목 : 이름, 휴대전화번호
  2. ㆍ수집 목적 : 참여자 중복 확인, 공지 발송, 경품 발송
  3. ㆍ보유기간 : 이벤트 종료 후 지체 없이 파기(단, 당첨자의 경우 경품 배송 후 30일)
  4. ㆍ경품 발송 위탁: 쿠프마케팅 (모바일상품권 발송업체)
참여하기
닫기