Blog

FortiOS 취약점을 악용하는 것으로 보이는 중국 위협 행위자(CVE-2022-42475)

Scott Henderson, Cristiana Kittner, Sarah Hawley, Mark Lechtik
Jan 19, 2023
13 min read
|   Last updated: Jul 26, 2023
Vulnerabilities
Zero Day Threats
China
Malware

맨디언트는 보안 솔루션 기업인 포티넷(Fortinet)이 자사 장비에 탑재하는 플랫폼인 FortiOS의 SSL-VPN 관련 최신 취약점(CVE-2022-42475)을 악용하는 것으로 의심되는 China-Nexus 캠페인을 추적하고 있습니다. 지금까지 발견한 증거에 따르면 위협은 2022년 10월부터 가해지기 시작했으며 유럽 정부 기관과 아프리카 지역의 매니지드 서비스 제공 기업을 목표로 한 것으로 보입니다.

맨디언트는 조사 과정에서 'BOLDMOVE'라는 이름으로 추적 중인 맬웨어를 식별하였습니다. 맨디언트는 포티넷의 방화벽에서 실행되도록 설계된 이 맬웨어의 윈도우 변형과 리눅스 변형을 발견하였습니다. 맨디언트는 이번 탐지가 인터넷에 연결된 장치를 목표로 삼은 일련의 중국 배후의 사이버 스파이 작전의 가장 최근 활동으로 보고 있습니다. 그리고 이번 캠페인에서 확인한 전술이 앞으로 중국이 배후에 있는 공격 그룹이 사용할 것으로 예상하고 있습니다.

참고로 포티넷은 2022년 12월 12일에 PSIRT 권고를 발표하고 자사 장비 이용 고객에게 CVE-2022-42475 취약점을 알렸습니다. 더불어 침해 지표를 검색하는 방법에 대한 지침을 발표하였고, 침해 지표를 추가한 후속 연구 내용도 고객에게 제공하였습니다.

네트워크 장치를 지속해서 노리는 중국

이번 사건은 방화벽, IPS/IDS 어플라이언스 같은 인터넷에 연결된 장치를 노리는 중국 배후의 공격 그룹이 보인 패턴을 그대로 따릅니다. 이런 장치는 공격자의 눈에 매력적으로 다가옵니다. 그 이유는 이들 장치는 인터넷을 통해 접근할 수 있고, 공격자가 익스플로잇을 사용해 피해자의 내부 네트워크에 접근할 수 있어 공격 초기에 탐지될 가능성을 줄일 수 있기 때문입니다.

인터넷에 연결된 장치를 손상시키려면 리소스 집약적인 사전 준비가 필요합니다. 특히 보안 장비처럼 취약점을 악용하기 쉽지 않은 경우 더욱 그러합니다. 이런 이유로 인터넷에 연결된 장치를 노린 정교한 공격의 배후에는 정부와 국방 관련 조직이 있는 경우가 많습니다. 이번 캠페인의 경우 BOLDMOVE로 익스플로잇을 개발하였을 뿐만 아니라 포티넷의 시스템, 서비스, 로깅, 문서화되지 않은 독점 파일 형식 부분까지 이해한 것으로 보이는 맬웨어를 만들었습니다. 인터넷에 연결된 장치에서 실행되는 이 맬웨어는 C2(Command & Control) 서버와 연결해 피해 조직의 내부 네트워크에서 측면 이동을 위한 활동을 위한 발판을 제공합니다.

이번 캠페인과 같이 인터넷에 연결된 보안 장치는 실행 중인 프로세스를 볼 수 있는 간단한 방법을 제공하지 않을 수 있습니다. 보안 장치는 네트워크 트래픽을 검사하고, 악의적인 행위를 탐지하기 위한 목적으로 쓰이지만 본질적으로 장치 자체를 보호하는 데에는 소홀한 경향이 있습니다. 외부 유지보수 업체의 도움을 받아 운영하는 장치는 보안 측면에서 볼 때 다음과 같은 특징이 있습니다.

  • 로그 구성 및 보기/수집을 허용하는 제한된 관리 인터페이스만 제공
  • EDR(Endpoint Detection and Response) 같은 추가 보안 솔루션 설치를 허용하지 않을 수 있음
  • 핵심 보안 기능에 접근하는 것은 장치 제조업체만 가능

이런 장치를 대상으로 하는 보안 작업에 대한 안내는 맨디언트 외에도 여러 조직에서 하고 있습니다. 관련해 공개된 보고서의 예는 다음 같습니다. 보고서 원문 이름과 링크를 간단히 정리해 보았습니다.

BOLDMOVE 백도어

2022년 12월 맨디언트는 FortiOS의 CVE-2022-49475 취약점을 악용한 BOLDMOVE 백도어를 식별하였습니다. 이 백도어는 C 언어로 개발되었으며 윈도우 및 리눅스 변형이 모두 존재합니다. 참고로 리눅스 변형의 경우 포티넷 독점 파일에서 데이터를 읽을 때 장치에서 실행되도록 고안되었습니다.

맨디언트는 CVE-2022-49475 취약점 악용을 직접적으로 관찰하지 않았습니다. 그러나 BOLDMOVE 백도어의 리눅스 변종의 샘플에서 하드코딩 된 C2 서버 IP 주소를 확인하였고, 이 주소가 포티넷 장비 침해에 관여한 것을 알아냈습니다. 이를 통해 CVE-2022-49475 취약점이 BOLDMOVE 백도어를 전달하는 데 악용되었음을 유추할 수 있었습니다. 윈도우 버전의 경우 빠르면 2021년에 컴파일된 것으로 보입니다. 맨디언트는 윈도우 버전 맬웨어가 실제로 사용된 것을 본 적이 없어, 이것이 실제로 어떻게 사용되는지 확실히 알 수 없었습니다. 맬웨어에 대한 심층 분석은 본 포스팅 뒷부분을 참조 바랍니다.

속성

맨디언트는 확신은 아니지만 다음과 같은 이유로 이번 작전이 중국과 관련 있는 것으로 평가합니다. China-nexus 위협 클러스터는 역사적으로 네트워킹 장치를 목표로 삼았고, 이런 장치에 설치되는 플랫폼 또는 소프트웨어 조작에 높은 관심을 보여왔습니다.

  • 호주, 중국, 러시아, 싱가포르, 기타 동남아시아 국가를 포함하는 UTC+8 시간대의 시스템과 중국어 문자를 표시하도록 구성된 시스템에서 맬웨어가 컴파일 됨
  • 감염 호스트 정보를 C2 서버에 제공하기 위해 BOLDMOVE 백도어의 윈도우 변종에서 사용하는 호스트 조사 버퍼는 'gbk' 문자열로 시작함, 리눅스 변종의 경우 'utf-8'로 시작하는데 이는 이 필드가 문자 인코딩을 지정함을 나타냄
  • 네트워크 장치의 제로데이 취약점을 악용한 후 맞춤형 맬웨어를 설치하는 것은 이전 중국 배후의 공격 그룹이 펼친 작전과 동일함

맨디언트는 이전에 네트워킹 장치에 영향을 미치는 캠페인에 대해 보고한 바 있습니다. 이를 통해 중국이 전 세계 조직에서 사용하는 중요 통신 및 네트워크 장치에 관심이 높을 것을 알 수 있었습니다.

  • 2021년 4월 맨디언트는 Pulse Secure 악용에 대해 보고를 함, 최근 맨디언트는 Pulse Secure VPN 어플라이언스 손상 관련 보안 사고에 대응을 하였음
  • 2021년 3월 맨디언트는 SonicWall의 이메일 보안 제품에서 광범위하게 악용되고 있는 제로데이 취약점을 3개 확인함, 맨디언트 조사에 따르면 공격자는 SonicWall 제품에 대한 깊은 지식을 바탕으로 취약점을 이용해 백도어를 설치하고 파일 및 이메일에 접근해 피해 조직의 내부 네트워크로 측면 이동을 하였음

전망

맨디언트는 중국의 위협 행위자가 표적으로 삼는 인터넷 연결 장치에 대한 심층 보고서를 작성해 왔습니다. 이번에 탐지한 최신 캠페인은 중국과 연계된 사이버 스파이 활동의 연속선상에 있다고 볼 수 있습니다. 이번 캠페인에서도 볼 수 있듯이 인터넷에 노출된 장치에 대한 최신 업데이트/패치 적용은 매우 중요합니다.

이번 캠페인 및 유사 캠페인을 통해 주요 장비를 외주 유지보수 업체나 제조사가 원격으로 관리할 때 나타날 수 있는 취약점의 잠재적인 위험을 알 수 있습니다. 문제는 인터넷 연결 장치를 악용하는 악의적인 활동의 범위와 정도를 측정하는 것은 매우 어렵다는 것입니다. 해당 장치가 손상되었다는 것을 보여주는 정보가 거의 없기 때문입니다.

인터넷에 연결된 장치에서 실행되는 악성 프로세스를 탐지하는 메커니즘이나 취약점 악용 후 배포한 맬웨어를 추적하는 원격 측정은 없는 것이 현실입니다. 이런 이유로 네트워크 장치는 보안 측면에서 사각지대에 놓여 있다 할 수 있습니다. 그러다 보니 일단 초기 침투에 성공하면 공격자는 피해자 네트워크에 은밀히 오래 머물면서 목표에 다가서기 위한 발판을 마련해 나아가는 데 유리합니다.

BOLDMOVE 리눅스 변형 분석

BOLDMOVE는 C 언어로 작성하고 GCC 11.2.1로 컴파일 된 모든 기능을 갖춘 백도어입니다. 이 백도어가 실행되면 시스템 조사를 수행하고 C2 서버에서 명령을 수신해 공격자가 파일시스템을 제어하고 원격 쉘을 생성하거나 감염된 호스트를 통해 트래픽을 릴레이 할 수 있습니다.

포티넷이 발표한 권고를 기반으로 맨디언트는 BOLDMOVE는 여러 리눅스 버전을 식별할 수 있었습니다. 관찰된 모든 BOLDMOVE 및 이것의 윈도우와 리눅스 변형에는 백도어 핵심 기능이 포함되어 있었습니다. 하나 이상의 리눅스 변형 샘플에는 포티넷 장치인 FortiGate 방화벽의 특정 동작 및 기능을 변경할 수 있는 확장 기능이 포함되어 있었습니다.

핵심 기능

백도어를 실행하면 BOLDMOVE는 하드코딩 된 C2 서버와 세션 형성을 시도합니다. 연결이 되면 시스템 조사를 수행하여 C2 서버에 수집한 정보를 보냅니다.

인덱스

필드 값

0

문자열에 사용되는 인코딩: utf-8

1

하드코딩 된 문자열(예: 'Cora/c'}

2

운영체제 버전 문자열, 리눅스일 경우 문자열은 'Linux <linux_version>

<utsname.release> <utsname.machine> [<utsname.version>]' 형식을 가지며 여기서

다양한 필드는 uname 함수 호출에서 가져옵니다. 리눅스가 아닌 운영체제인 경우

문자열은 형식은 '<utsname.sysname> <utsname.release> <utsname.machine>

[<utsname.version>]'입니다. 하위 문자열인 '<linux_version>' '/etc/system-release,

/etc/os-release (looking for the values of the NAME= and VERSION=

keys),/migadmin/ng/vpn/map/pkginfo.json (looking for the value enclosed by the

strings ver_s\":\" and \",\"chksum), /etc/debian_version' 파일 하나에서 데이터를

읽어 구성됩니다.

3

호스트 이름

4

호스트의 네트워크 인터페이스를 나타내는 <ip>/<mask> 항목의 쉼표로 구분된 목록

5

백도어 프로세스의 유효 사용자 ID(geteuid()의 결과)

6

백도어 프로세스의 프로세스 ID

7

cwd=<current_dir>\r\nexecutable=<current_image_path>\r\nevent=wv\r\nserver=139.

180.128.142:443\r\n/proc/version=<proc_version_data> 형식의 문자열

표 1. 시스템 조사 내용

C2 서버는 공격자가 감염된 장치를 제어할 수 있도록 실행 명령을 보낼 수 있습니다. BOLDMOVE 백도어의 버전과 운영체제 유형에 따른 변형별로 코드가 다를 수 있지만 핵심 기능은 다르지 않은 것으로 보입니다.

메이저 명령 코드

마이너 명령 코드

명령

0x0 

0x0 

모든 리소스를 해제하고 백도어를 종료합니다.

0x11 

0x21 

루트 디렉토리에서 시작해 시스템의 모든 파일 정보를 재귀적으로 나열합니다. 파일 경로 외에도 각 파일 관련 정보는 'stat' 함수의 출력을 기반으로 하며 'st_mode, st_size, st_mtim.tv_sec, st_uid, st_gid' 필드를 포함합니다.

0x11 

0x0 

지정된 디렉토리에서 시작해 재귀적으로 파일에 대한 정보를 나열합니다.

0x12 

0x0 

'mkdir'을 통해 새 디렉토리를 생성합니다.

0x13 

0x0 

'rmdir'을 통해 디렉토리를 제거합니다.

0x14 

0x10 

공격자가 제공한 파일 경로가 주어지면 기존 파일이 있는 경우 이를 제거하고 새 파일을 만듭니다.

0x14 

0x21 

쓰기를 위해 열린 파일 디스크립터를 닫습니다.

0x14 

0x32 

생성된 파일에 데이터를 씁니다.

0x15 

0x10 

파일을 읽기 전에 파일 크기를 가져옵니다.

0x15 

0x21 

읽기용으로 열린 파일 설명자를 닫습니다.

0x15 

0x40 

이전에 열린 파일에서 데이터를 읽습니다.

0x20 

0x0 

쉘 명령을 실행하고 출력을 다시 보냅니다.

0x20 

0x33 

<출력을 다시 보내지 않고 쉘 명령을 실행합니다.

0x21 

0x10, 0x21, 0x43, 0x44, 0x45

두 개의 파이프를 활용하는 대화형 쉘을 생성합니다. 하나는 서버의 쉘 입력을 처리하고 다른 하나는 쉘 출력을 다시 전송하여 C2 서버와 감염된 호스트 간의 비동기 세션을 지원합니다. 다양한 하위 명령은 쉘 세션 형성 및 유지 관리와 관련된 작업을 처리합니다.

0x22 

0x10, 0x21, 0x32,0x33 

서버 소스 입력을 쉘에 전달하고 여기에서 명령 출력을 검색하기 위해 단일 파이프를 활용하는 대화형 쉘을 만듭니다. 형성된 쉘은 동기 모드에서 작동합니다. 여기서 파이프는 쉘 출력을 검색하기 위해 검색되거나 접근할 때마다 입력 데이터로 기록될 수 있습니다. 다양한 하위 명령은 쉘 세션 형성 및 유지 관리와 관련된 작업을 처리합니다.

0x30 

0x15, 0x16, 0x17, 0x18 

네트워크 트래픽 릴레이 세션을 시작합니다. C2 서버는 대상 주소를 인수로 보내고 이 명령의 하위 명령을 통해 전달된 추가 패킷은 대상 서버에서 데이터를 앞뒤로 전달하는 데 사용됩니다.

0x53 

0x10 

업데이트된 백도어 이미지를 작성하기 위한 준비로 기존 이미지를 삭제하고 같은 이름으로 새로 생성합니다.

0x53 

0x21 

백도어 이미지 업데이트를 쓰기 위해 열린 파일 디스크립터를 닫습니다.

0x53 

0x32 

업데이트된 백도어 이미지에 해당하는 이전에 열렸던 파일 디스크립터에 C2 서버에서 보낸 데이터는 씁니다.

0x54 

0x0 

인수 1을 사용하여 백도어의 새 프로세스를 생성하고 해당 이름으로 이미지 실행을 시도합니다. 이를 왜 하는지는 이유가 분명하지 않습니다.

0x55 

0x0 

명령 0x54와 동일

0x56 

0x0 

'echo' 명령 역할을 합니다. 서버에서 명령 패킷을 수신하고 동일한 주요 명령 코드와 빈 본문을 가진 패킷으로 다시 응답합니다. 감염된 호스트의 연결 상태를 확인하는 데 사용되었을 수 있습니다.

표 2. 지원되는 명령

BOLDMOVE 백도어의 리눅스 변형은 정적으로 컴파일 된 여러 라이브러리를 활용해 기능을 구현합니다.

  • 사용자 지정 라이브러리: 이벤트 처리에 사용되는 미정의 사용자 지정 라이브러리로 libevent를 연상케 합니다. 단일 스레드 모드에서 작동하며 각 작업은 이벤트 콜백으로 예약되고 실행됩니다. 이는 개발자가 단일 코어 기반 장치 감염을 목표로 했다는 것을 암시합니다.
  • WolfSSL: C2 서버에 대한 SSL 암호화 통신을 용이하게 합니다.
  • Musl libc

실패하면 맬웨어는 새 프로세스에서 자체적으로 다시 실행됩니다. 또한, 맬웨어가 명령줄 인수로 실행되는 경우 백도어 로직을 시작하지 않고 제공된 인수를 새로운 프로세스로 실행하려 시도합니다. 백도어의 로직을 시작하기 전에 맬웨어는 SIGCHLD, SIGHUP, SIGPIP를 무시하기 위해 'signal' 함수를 호출합니다.

확장된 기능

BOLDMOVE 백도어의 확장 버전(MD5: 3191cb2e06e9a30792309813793f78b6)에는 앞서 소개한 모든 기능 외에 새로이 추가된 기능이 있습니다. 확장 버전에는 'Execution Guardrails(T1480)'이 포함되어 있는데 이는 특정 경로에서 실행되고 있는지를 확인하는 것으로 다음과 같은 방식으로 수행됩니다.

  • '/proc/self/exe'에서 경로 검색
  • 'fstatat'로 검색한 경로에서 'inode' 얻기
  • 정적으로 정의된 '/bin/wxd/' 경로에서 보조 'inode' 얻기
  • 두 'inode' 레코드 비교
Path Execution Guardrails
그림 1. Execution Guardrails

확장 버전에는 포티넷 데몬을 비활성화여 표시기 차단(T1562.006)을 수행할 수 있는 명령이 포함되어 있습니다. 그리고 동일한 로깅 데몬의 메모리 주소 공간을 패치할 수 있는 명령도 들어 있습니다. 맨디언트는 포티넷 장치에서 해당 실행 파일을 가져올 수 없어 해당 패치의 특성을 정확히 확인할 수 없었습니다. 다만 맨디언트는 백도어 실행 시간 동안 로깅 기능을 비활성화하려는 의도가 있는 것으로 평가하고 있습니다. 각 패치 데이터는 다음 구조체에 보관됩니다.

struct st_log_patch_struct { char fortigate_version_name[24]; __int64 target_addr1; __int64 patch_bytes1; __int64 target_addr2; __int64 patch_bytes2; }log_patch_struct;

참고로 표 4에는 대상 FortiGata 장치, 해당 패치 주소 및 바이트가 요약되어 있습니다.

또한, BOLDMOVE 백도어의 확장 버전에는 시스템의 독점 포티넷 로그를 수정할 수 있는 명령이 포함되어 있는데, 다음 경로를 확인합니다.

  • /tmp/log
  • /var/log/log
  • /var/log

그리고 형식과 일치하는 파일 이름을 체크합니다.

  • elog
  • offset/elog.ofs
  • offset/elog.<index>.cidx

확장 버전에 포함된 명령 중 하나는 공격자가 로그의 선택한 부분을 수정할 수 있도록 독점 로그 파일과 관련된 문서화되지 않은 구조를 압축 해제, 구문 분석 및 덮어쓸 수 있습니다.

확장 버전에는 맬웨어가 업그레이드를 통해 지속성을 유지할 수 있도록 'Watchdog'이 포함되어 있습니다. BOLDMOVE 백도어는 'fstatat' 함수로 두 파일을 모니터링합니다.

/data/lib/libgif.so /data/lib/libips.so

파일 크기가 다르면 BOLDMOVE 백도어는 다음 작업을 수행합니다.

  • '/data/lib/libips.so'에 저장된 '/data/lib/libips.so' 합법적인 파일의 백업을 생성합니다.
  • 합법적인 라이브러리 '/data/lib/libips.so'를 '/data/lib/libgif.so'에 위치한 트로이 목마 버전으로 덮었습니다.

이를 통해 'data/lib/libips.so'를 대체하는 시스템 패치가 있어도, 맬웨어가 여전히 실행 중인 경우 패치를 취소하고 백도어를 유지할 수 있습니다.

또한, 확장 버전에는 공격자가 내부 포티넷 서비스에 요청을 보낼 수 있는 명령이 포함되어 장치 설정을 수정하거나 장치에 연결된 내부 네트워크를 인터넷에 노출할 수 있습니다. BOLDMOVE 백도어는 컨텐츠를 읽고 해당 정보를 구문 분석해 장치의 가상 도메인인 '/dev/cmdb/vdom'과 연결될 수 있는 숫자 값을 검색합니다. 그런 다음 공격자가 제공한 포트를 통해 '127.0.0.1' 로컬 호스트에 대한 연결을 생성합니다. 이는 서버가 해당 포트에서 로컬로 실행될 것을 보여줍니다. 명령 핸들러는 설정된 연결을 통해 공격자가 선택한 데이터를 보내고 검색된 응답을 C2 서버로 다시 보내는 것을 용이하게 합니다.

표 3은 맨디언트에서 식별한 BOLDMOVE 백도어의 윈도우 및 리눅스 변형 간 차이를 요약한 것입니다.

 

윈도우

리눅스

컴파일러

C 및 MinGW로 컴파일(GCC: (GNU) 10.2.1 20210227)

컴파일 시간: 2021-08-26 07:13:04

C(GCC 11.2.1 20211120)로 컴파일

 

컴파일 시간: 알 수 없음

SSL/TLS

아니오

사용자 에이전트

curl/6.12.34('libcurl'의 비공개 버전이며 마지막 v6 빌디는 6.5였습니다. 맬웨어 자체는 'libcurl'을 사용하지 않습니다.

curl/6.12.34

C2 서버

개인 클래스 C IP 주소

전역 라우팅이 가능한 IP 주소

경량 시스템 지원

아니오

  • 스레드 대신 이벤트 콜백이 사용되는 이벤트 기반 모델을 씁니다. 이는 리눅스 변형이 활용하는 것과 같은 라이브러리를 사용하지만 이를 윈도우에서 사용하는 이유는 명확하지 않습니다.

  • 스레드 대신 이벤트 콜백이 사용되는 이벤트 기반 모델을 씁니다.
  • 'Musl'은 맬웨어의 바이너리 이미지로 정적으로 컴파일 됩니다. 또한, 다른 변종 'libc'에 비해 리소스를 더 작게 사용합니다.
  • 맬웨어가 C2 서버에 대한 트래픽을 암호화하는데 사용하는 'WolfSSL'도 부분적으로 임베디드 장치를 염두에 두고 설계되었습니다.

암호화

설정된 연결 패킷은 Salsa20으로 암호화됩니다. 키:

<8_byte_pseudorandom_nonce> || " e 8d m_$Gb "

설정된 세션은 AES128로 암호화됩니다.

키: <8_byte_pseudorandom_nonce> || "rg8P@TD("

IV: <8_byte_pseudorandom_nonce> || " e 5s m_$Gb "

캠페인

0.1c#2021-08-26 15:13:01

Charlotte/c(리눅스 변종의 다른 샘플에서는 다른 캠페인 이름이 관찰되었습니다.)

표 3. 윈도우와 리눅스 변형 간의 차이점

표 3은 윈도와 리눅스 변형 간의 차이를 보여줍니다. 중요한 차이는 윈도우 변형이 리눅스 변형보다 1년 전에 컴파일 된 것이란 점입니다. 이런 시간 차이는 공격자가 BOLDMOVE 백도어를 개발 후 다른 캠페인에서도 사용했을 가능성이 있음을 보여 줍니다. 이외 주목할 차이는 다음과 같습니다.

  • 각 변형에서 정적으로 컴파일 된 라이브러리 선택에 차이가 있습니다. 트래픽 암호화를 위해 리눅스에서는 'WolfdSSL' 라이브러리가 사용되었지만 윈도우 변형에서는 이를 쓰지 않습니다. 또한, 리눅스 버전은 'MinGW'로 윈도우 변형을 컴파일한 결과로 가져온 표준 'libc' 기능과 달리 정적으로 컴파일된 'Musl libc' 라이브러리를 활용합니다. C2 서버와의 이벤트 기반 통신을 위한 라이브러리와 함께 리눅스 변형에서 'Musl libc'를 사용하는 것은 리눅스 버전이 일반적으로 임베디드 장치 및 성능이 낮은 장치에서 사용되는 것을 고려한 것으로 보입니다.
  • 맨디언트는 리눅스 변종이 CVE-2022-42475를 성공적으로 악용한 후 포티넷 장치에 배포되었다고 평가합니다. 반면에 윈도우 변종의 초기 감염은 아직 명확히 확인되고 있지 않습니다. 이를 염두에 두고 볼 때 윈도우 변종은 측면 이동 후 내부 네트워크의 감염된 장치와 통신하는 데 사용했거나, 단순 테스트 용도로 쓴 것으로 보입니다.

이상으로 BOLDMOVE 백도어를 사용하는 중국 공격 그룹의 행위 분석을 마치겠습니다. 끝으로 조사와 분석에 도움을 준 포티넷에 감사의 말을 전합니다.

부록 A: 패치

기능이 확장된 BOLDMOVE 백도어의 리눅스 버전 관련 패치 표입니다. 이들 패치는 맬웨어 실행 시간 동안 로깅 메커니즘을 악화시키기 위해 만들어진 것으로 보입니다.

rtiGate Version

rtiGate Version

Bytes Written to Address 1

Address 2

Bytes Written to Address 2

FG100F v7.0.5

0x1E4BFA8

E0 03 02 AA 7F 0A 00 B9

0x25A6A50

E0 03 02 AA 1F 00 00 71

FG100F v7.0.7

0x1E88B68

E0 03 02 AA 7F 0A 00 B9

0x2604C90

E0 03 02 AA 1F 00 00 71

FG101F v6.4.10

0x1A5DD80

E0 03 02 AA 7F 0A 00 B9

0x213C154

E0 03 02 AA 1F 00 00 71

FG101F v6.4.8

0x1A2FA90

E0 03 02 AA 7F 0A 00 B9

0x20F0C00

E0 03 02 AA 1F 00 00 71

FG200D v6.0.11

0x1E4F9CC

48 89 D0 90 90 83 F8 00

0x0EC73DF

48 89 D0 90 90 49 89 C7

FG200E v6.0.12

0x1DB524D

48 89 D0 90 90 83 F8 00

0x0F03262

48 89 D0 90 90 49 89 C5

FG200E v6.4.4

0x19409FD

48 89 D0 90 90 83 F8 00

0x1FABDDA

48 89 D0 90 90 85 C0 7F

FG200E v7.0.4

0x1E65991

48 89 D0 90 90 C7 43 08

0x25D5F31

48 89 D0 90 90 85 C0 7F

FG200E v7.0.8

0x1ECAE81

48 89 D0 90 90 C7 43 08

0x2665951

48 89 D0 90 90 85 C0 7F

FG200E v7.2.0

0x1F3AFD1

48 89 D0 90 90 C7 43 08

0x26EB5C1

48 89 D0 90 90 85 C0 7F

FG201F v6.4.7

0x1AB581D

48 89 D0 90 90 83 F8 00

0x217156A

48 89 D0 90 90 85 C0 7F

FG201F v6.4.9

0x1ABF90D

48 89 D0 90 90 83 F8 00

0x218388B

48 89 D0 90 90 85 C0 7F

FG240D v6.0.12

0x1E5558C

48 89 D0 90 90 83 F8 00

0x0EC753F

48 89 D0 90 90 49 89 C7

FG3H0E v6.2.10

0x2019ABD

48 89 D0 90 90 83 F8 00

0x1FB826B

48 89 D0 90 90 85 C0 7F

FG5H0E v6.0.5

0x1CF537D

48 89 D0 90 90 83 F8 00

0x0EBD7B0

48 89 D0 90 90 49 89 C5

FG6H1E v6.4.8

0x1A1E21D

48 89 D0 90 90 83 F8 00

0x20CE65A

48 89 D0 90 90 85 C0 7F

FG6H1E v6.4.9

0x1A2862D

48 89 D0 90 90 83 F8 00

0x20DF7FB

48 89 D0 90 90 85 C0 7F

FG6H1E v7.2.1

0x20AFCE1

48 89 D0 90 90 C7 43 08

0x28BF201

48 89 D0 90 90 85 C0 7F

FG800D v6.2.10

0x20E18ED

48 89 D0 90 90 83 F8 00

0x2080AEB

48 89 D0 90 90 85 C0 7F

FG800D v6.2.11

0x20E1B2D

48 89 D0 90 90 83 F8 00

0x2080D2B

48 89 D0 90 90 85 C0 0F

FG800D v7.0.8

0x1F61271

48 89 D0 90 90 C7 43 08

0x272DCF1

48 89 D0 90 90 85 C0 7F

FGT5HD v6.4.10

0x1A317CD

48 89 D0 90 90 83 F8 00

0x210250B

48 89 D0 90 90 85 C0 7F

FGT60F v6.4.10

0x1953248

E0 03 02 AA 7F 0A 00 B9

0x1FFD6A4

E0 03 02 AA 1F 00 00 71

FGT60F v6.4.4

0x1904898

E0 03 02 AA 7F 0A 00 B9

0x1F7BF88

E0 03 02 AA 1F 00 00 71

FGT60F v6.4.8

0x192D018

E0 03 02 AA 7F 0A 00 B9

0x1FB7450

E0 03 02 AA 1F 00 00 71

FGT60F v6.4.9

0x193B0B0

E0 03 02 AA 7F 0A 00 B9

0x1FFC304

E0 03 02 AA 1F 00 00 71

FGT80F v6.4.10

0x19F6360

E0 03 02 AA 7F 0A 00 B9

0x20ADA54

E0 03 02 AA 1F 00 00 71

VM64 v6.2.3

0x1A64193

48 89 D0 90 90 83 F8 00

0x0F2F646

48 89 D0 90 90 85 C0 48

표 4. 다양한 FortiGate 버전에서 'miglogd' 및 'syslogd' 로깅 데몬의 메모리 주소에 만들어진 패치

부록 B: IOC

기본 BOLDMOVE
  • MD5: 12e28c14bb7f7b9513a02e5857592ad7
  • SHA256: 3da407c1a30d810aaff9a04dfc1ef5861062ebdf0e6d0f6823ca682ca08c37da
확장된 BOLDMOVE
  • MD5: 3191cb2e06e9a30792309813793f78b6
  • SHA256: 0184e3d3dd8f4778d192d07e2caf44211141a570d45bb47a87894c68ebebeab
윈도우 버전 BOLDMOVE
  • MD5: 54bbea35b095ddfe9740df97b693627b
  • SHA256: 61aae0e18c41ec4f610676680d26f6c6e1d4d5aa4e5092e40915fe806b679cd4