Kimsuky 그룹의 신규 백도어 등장 (HappyDoor)
목차
본 보고서에서는 AhnLab TIP(AhnLab Threat Intelligence Platform)에 소개된 ‘Kimsuky 그룹의 HappyDoor 악성코드 분석 보고서‘의 요약 본으로 침해 사고 분석에 필요한 정보 일부를 정리한 내용이다. AhnLab TIP 상의 보고서에는 악성코드 특징 및 기능 뿐만 아니라 인코딩 방식 및 암호화 방식, 패킷 구조 등 상세히 다루었으며, 특히 분석가의 편의를 위해 직접 제작한 IDA Plugin 및 백도어 테스트 서버를 제공하고 있다. 참고로 마스킹된 정보는 AhnLab TIP에서 확인할 수 있다.
개요
Kimsuky의 HappyDoor 악성코드는 국내/외 흔히 알려지지 않은 악성코드이다. 자사에서는 해당 악성코드를 2021년에 최초 수집하였으며 지속적으로 모니터링 하던 중 2024년까지도 침해 사고에 사용되고 있는 것을 확인하였다. 조사 결과 공격자는 이 악성코드를 과거부터 지금까지 계속해서 패치를 해온 것으로 보이는데, 아래와 같이 버전(4.2) 및 빌드 추정 날짜(Jan 12 2024)가 버전 정보(Version)에 하드 코딩되어 있으며 최근 샘플의 경우 악성코드 이름(happy)까지 명시된 것을 볼 수 있다.

바이너리 내부 버전 정보(Version)
이 ‘happy’ 문자열은 Export DLL Name 및 코드 내 디버그 문자열에서도 아래와 같이 확인된다. 따라서 AhnLab SEcurity intelligence Center(ASEC)에서는 해당 악성코드를 ‘HappyDoor’라 명명하였다.

유포 방식 및 변화
1. 유포 방식
Kimsuky 그룹은 과거부터 스피어피싱 메일 공격을 통해 다양한 악성코드를 유포하고 있다. 대표적으로 AppleSeed와 AlphaSeed 악성코드를 설치하는 사례가 있으며, 이러한 유포 방식은 과거 보고서(Kimsuky 그룹의 APT 공격 분석 보고서 (AppleSeed, PebbleDash)) 와 2023년 동향 보고서(Kimsuky 그룹의 AppleSeed 악성코드 공격 동향 분석)에서 소개하였고 최근에는 AhnLab TIP에서 “Kimsuky 그룹, Backdoor(AppleSeed, HappyDoor) 유포에 사용된 미끼 파일(2023.12 ~ 2024.04)”문서로 자세히 다루었다.
이번 HappyDoor 또한 기존 유포 방식과 같이 메일의 첨부 파일을 통해 유포되고 있다. 이 첨부 파일에는 압축 파일이 존재하며, 압축 파일에는 난독화된 JScript 또는 드로퍼(Dropper, 실행파일)가 있어 실행 시 정상 미끼 파일과 함께 HappyDoor를 생성하고 실행한다. 아래는 Jscript의 예시로 해당 스크립트를 실행할 때 복호화된 코드(AMSI)는 다음과 같다.
|
…(생략)… …(생략)… …(생략)… |
복호화된 JScript 코드 예시
이때 HappyDoor의 실행 경로 및 실행 인자(/i)는 아래와 같다. HappyDoor는 특히 실행 인자에 *(별표, Asterisk)를 붙여 동작하며, 이 인자가 무엇인지에 따라 동작이 나뉘는 특징을 가지고 있다. 아래는 2023년 12월 ~ 2024년 04월 최근까지 Kimsuky가 유포한 백도어의 인자 목록이다.
| cmd.exe /c regsvr32.exe /s /n /i:(임의문자열)* C:\Windows\..\ProgramData\[HappyDoor] |
| 날짜 | 실행 인자(/i) | 악성코드 종류 |
|---|---|---|
| 2023.12 | 1qa2ws4rf | AppleSeed |
| 2023.12 ~ 2024.01 | 12qw3ed | AppleSeed |
| 2023.12 ~ 2024.01 | 1qaz2wsx5tgb | AppleSeed |
| 2024.01 | syrsd* | HappyDoor |
| 2024.02 | s* | HappyDoor |
| 2024.02 | zsecq231 | AppleSeed |
| 2024.02 ~ 2024.03 | 1qa2wszxc | AppleSeed |
| 2024.04 | qazse123 | AppleSeed |
기간별 백도어에 사용된 실행 인자 목록(중복 제외)
따라서 HappyDoor는 현재까지 실행 인자만으로 다른 백도어와 구분이 가능하며, 최근에는 최초 설치되는 백도어 중 HappyDoor가 설치되는 사례가 확인되고 있다. 2024년 최근, 이 HappyDoor 사례가 확인된 포렌식 보고서(AhnLab TIP)는 아래와 같다.
2.HappyDoor의 변화
HappyDoor는 2021년에 최초 수집으로 최근(2024년)까지 확인되고 있다. 이를 버전 순으로 정리하면 아래와 같다.
| 번호 | 파일 MD5 | 버전 정보 | install 인자 | C2 |
|---|---|---|---|---|
| 1 | d9b15979e76dd5d18c31e62ab9ff7dae | X(없음, 2021년 7월 최초 수집) | X | hxxp://app.seoul.minia[.]ml/kinsa.php |
| 2 | 63ded●●●●●●●●●●● | 3.1 – Nov 30 2021 | X | hxxp://z.la●●●●.r-e[.]kr/kisa.php |
| 3 | 4ef5e3ce535f84f975a8212f5630bfe8 | 4.1 – May 16 2023 | install* | hxxp://users.nya[.]pub/index.php |
| 4 | bd445●●●●●●●●●●● | 4.1 – May 30 2023 | aooa* | hxxp://ocem.p●●●●[.]biz/index.php hxxp://uo.z●●●●.o-r[.]kr/index.php |
| 5 | a1c59fec34fec1156e7db27ec16121a7 | 4.1 – Jul 6 2023 | aooa* | hxxp://go.ktspace.p-e[.]kr/index.php hxxp://on.ktspace.p-e[.]kr/index.php |
| 6 | 2ce95●●●●●●●●●●● | 4.1 – Aug 23 2023 | aooa* | hxxp://on.sc●●●●.p-e[.]kr/index.php hxxp://go.sc●●●●.p-e[.]kr/index.php |
| 7 | c7b82b4bafb677bf0f4397b0b88ccfa2 | happy 4.2 Sep 11 2023 | aooa* | hxxp://aa.olixa.p-e[.]kr/index.php hxxp://uo.zosua.o-r[.]kr/index.php |
| 8 | 71364●●●●●●●●●●● | happy 4.2 Dec 20 2023 | syrsd* | hxxp://m●●●●.syrsd[.]p-e.kr/index.php hxxp://ba●●●●.syrsd.p-e[.]kr/index.php |
| 9 | 0054bdfe4cac0cb7a717749f8c08f5f3 | happy 4.2 Jan 12 2024 | syrsd* | hxxp://jp.hyyeo.p-e[.]kr/index.php hxxp://ai.hyyeo.p-e[.]kr/index.php |
| 10 | 8931b●●●●●●●●●●● | happy 4.2 Feb 1 2024 | s* | hxxp://ai.namu●●●●.p-e[.]kr/index.php |
버전 정보의 날짜 순으로 나열한 HappyDoor 목록
위 표의 ‘버전 정보’에서 날짜를 보면 공격자는 과거부터 유포되었던 것을 알 수 있으며, 특히 최근(2023년 12월부터 2024년 2월)에 확보된 8번~10번 샘플은 최소 한 달 주기로 패치를 한 것을 볼 수 있다. 샘플의 버전 정보는 코드 내부에 아래와 같이 하드 코딩되어 있다.

또한 현재 수집되는 HappyDoor는 모두 실행 인자(/i)를 가지고 있지만 초기 수집된 샘플은 인자가 존재하지 않았다. 이는 대략 2023년에 유포된 4.1버전(3번 샘플)부터 실행 인자를 사용하는 코드를 추가한 것으로 보인다. HappyDoor는 이 실행 인자에 따라 동작이 나눠지는데, 설치 시 사용되는 인자 ‘install*’ 문자열은 3번 샘플에서만 사용되었고 이후 버전부터는 임의 문자열로 변환돼 유포되고 있다. 따라서 HappyDoor는 감염 시 처음에 ‘install*’을 인자로 주어 실행하고, 완료되면 ‘init*’을 주며 그다음에는 실제 악성 행위를 수행하는 ‘run*’을 인자로 넣어 실행한다.
| install*(임의 문자열) -> init* -> run* |
실행 인자(/i) 순서
상세 분석
1. 요약
HappyDoor의 행위를 요약하면 아래와 같다.

HappyDoor 악성코드는 최종적으로 DLL이기 때문에 regsvr32.exe를 통해 동작하며, 실행 시 프로세스(regsvr32)의 커맨드라인을 제거 후 regsvr32의 실행 인자(/i)를 확인해 아래의 단계대로 동작한다.
| 실행 인자 | 내용 |
|---|---|
| install* | 1. 스케줄러 등록 (“Intel\Disk\Volume0”) 2. 자가 복제(특정 경로) 및 기존 파일 자가 삭제 3. init*으로 재실행 |
| init* | 1. 자가 복제(.otp) 및 run*으로 재실행 |
| run* | 1. 악성코드 설정 구성 (패킷 데이터 + 행위 정보 데이터) 2. 레지스트리 구성 – Notepad : RSA키, 악성 행위 관련 데이터 – FTP : C&C주소, 패킷 검증 데이터(USER ID) 3. 시스템 정보(osi) 및 샘플 구성 정보(gcfg) 전달 4. 악성 행위 담당 스레드 생성 (정보탈취 / 백도어 / 데이터(klog,cmd) 유출) |
실행 인자 단계
실행 인자는 크게 3단계로 분류되며 위와 같이 순차적으로 실행된다. 첫 번째 install*은 자가 복제 및 스케줄러(schtasks) 등록으로 아래와 자가 복제 경로 및 스케줄러 명령어는 아래와 같다.
| 과거) – %APPDATA%\microsoft\internet explorer\localdata\ie.cfg – %APPDATA%\microsoft\internet explorer\localdata\ie.cfg.otp 현재) – %APPDATA%\microsoft\internet explorer\localdata\imx.cfg – %APPDATA%\microsoft\internet explorer\localdata\imx.cfg.otp |
HappyDoor 자가 복제 경로
| schtasks /create /f /tn “Intel\Disk\Volume0” /tr “C:\Windows\system32\regsvr32.exe /s /n /i:init* ‘C:\Users\han\AppData\Roaming\Microsoft\Internet Explorer\LocalData\ imx.cfg” /sc minute /mo 5 |
스케줄러(schtasks) 등록 명령어
‘run*’에서는 정보 탈취 및 백도어 등 주요 악성 행위를 수행한다. 특히 주요 정보 탈취 기능은 총 6가지로 screenshoot(화면 캡쳐), keylogger(키로깅), filemon(파일 유출), alarm(연결된 장치 정보), micrec(녹음), mtpmon(안드로이드 내 파일 유출) 문자열이 존재한다. 또한 HappyDoor는 정보 유출 시 RSA와 RC4키를 사용해 데이터를 암호화 후 탈취하며 이후 백도어 행위를 수행한다. 참고로 C&C 서버와 연결을 시도하는 통신 함수는 가상 함수 테이블(vtable)로 구성되어 있다.

2. 특징
2.1. 레지스트리(Registry) 데이터
HappyDoor는 2개의 정상 레지스트리 경로에 인코딩된 데이터(Data)를 구성한다. 레지스트리 경로 및 기능은 아래와 같다.
a. Notepad

| 경로 : HKEY_CURRENT_USER\SOFTWARE\Microsoft\Notepad 값(Value) : IfChar 요약 : RSA키(공개키, 개인키), 정보탈취 및 백도어 관련 ON/OFF 스위치, 정보탈취 함수 주소 및 이름 데이터 크기 : 0x17E0 또는 0x17D8 (버전에 따라 길이가 다름) |
IfChar 데이터 구조는 다음과 같다.

| 데이터 | 설명 |
|---|---|
| Backdoor Packet Encryption ON/OFF | 백도어 명령을 암호화된 패킷으로 받을지 결정하는 Flag 값(ON/OFF). 기본적으로 1(ON)로 세팅되어 있어 RSA 개인키 및 RC4키를 이용해 복호화를 수행. |
| interval_cmd, interval_ssht, ssht_width, ssht_height | 정보 유출 기능(cmd 및 ssht)으로 유출된 정보 수집 주기 및 스크린샷(ssht)의 해상도. |
| .. 이하 AhnLab TIP에서 확인할 수 있다. |
Notepad의 IfChar 데이터 설명
b. FTP

| 경로 : HKEY_CURRENT_USER\Software\Microsoft\FTP 값(Value) : Use Https 요약 : USER ID값(패킷 검증 데이터), C&C 주소 데이터 크기 : C&C 개수에 따라 가변, 최소 0x320 이상으로 추정 |
Use Https 데이터 구조는 다음과 같다.

‘Use Https’는 패킷 및 C2가 포함된 데이터로 정보는 아래와 같다.
| 데이터 | 설명 |
|---|---|
| USER ID | 8 Byte 데이터로 총 16 Byte(2개)가 존재. 해당 값은 랜덤으로 재 실행 시 바뀔 수 있으며, 통신 시 C2에 전달 후 패킷 검증에 사용. |
| C2(C&C) Address | 공격자 C2 주소로 정보 유출 및 백도어에 사용될 서버. 샘플에 따라 개수가 다름. |
FTP의 Use Https 데이터 설명
2.2. 패킷 데이터
HappyDoor는 과거부터 지금까지 HTTP를 통해 C&C(Command and Control)서버와 통신을 수행하고 있다.

위 사진은 2022년에 확인된 패킷으로 XOR 및 Base64로 인코딩된 데이터이다. 여기서 사용된 XOR 인코딩은 ‘2.1. 레지스트리’ 암호화 방식과 동일하다.
| – 키 : DD 33 99 CC (고정) // ‘2.1. 레지스트리 데이터’ 방식과 동일 – 데이터 : 패킷 데이터 – 수식 : key[i%4] ^ data[i] ^ data[i-1] // (단, data[-1]=0x0) |
예시로 위 패킷 중 공격자 서버로 전송된 데이터를 디코딩하면 아래와 같다.

해당 패킷은 악성코드에서 현재 동작 중인 정보 유출 기능(alarm, keylogger, screenshot)을 나타낸 것으로 패킷 구조에 대한 자세한 내용은 아래 ‘패킷 구조 및 서버 동작 방식’에서 설명할 것이다.
2.3. 패킷 구조 및 서버 동작 방식
2.3.1. 동작 방식
(해당 내용은 분석 당시 서버와 연결되지 않아 분석만으로 도출한 결과이다. 따라서 실제 서버 응답과 일부 다를 수 있다.)
분석 결과 HappyDoor는 HTTP 프로토콜을 사용해 아래와 같은 통신을 수행한다.

따라서 행위에 따라 패킷의 종류를 세 가지로 분류할 수 있으며, 각 행위는 아래와 같이 요약할 수 있다.
| 서버 통신 검증 (Packet Type : 1) 1) 서버에 “init”을 보낸 뒤 “OK” 응답 확인 정보 유출 시도 (Packet Type : 4) 2) Trans Status : 0x1을 보내 서버에게 데이터 보낼 것을 알림 3) 파일 사이즈에 따라 최대 데이터 길이(0x100000) 만큼 전달. 만약 최대 길이보다 데이터가 더 크다면 Data Ord Number를 순차적으로 1만큼 증가시키고 데이터를 쪼개서 전송 4) 데이터 끝은 Data Ord Number : 0x100000000으로 서버에 전송 완료를 알리고, 응답 완료 값인 Trans Status : 0x3을 확인 5) 전송한 데이터의 파일 이름 전달하기 위해 File Info : 0x5로 설정하고 “cloud;;”문자열 뒤에 파일 이름을 붙여서 전송 백도어 통신 (Packet Type : 6) 6) 서버와 CMD ID(0x3E8) 교환 7) 백도어에 명령 번호인 CMD ID와 명령 데이터 전송 8) CMD ID에 맞는 백도어 명령 수행 및 응답 전송 |
HappyDoor의 통신 흐름 설명
2.3.2. 패킷 구조
HappyDoor의 패킷은 기본적으로 0x40 만큼의 크기를 갖는 구조로, 서버로부터 응답을 받을 때마다 패킷이 유효한지 5개의 검증 데이터(Verification Data)를 통해 확인하며, 위에서 설명한 ‘Packet Type’ 또한 해당 구조에서 알 수 있다. 구조는 아래와 같다.

위 구조를 표로 정리하면 아래와 같다.
| 크기(Byte) | 데이터 이름 | 설명 |
|---|---|---|
| 4 | Random | 랜덤 4 Byte. |
| 12 | Verification 1 ~ 3 (Version) |
악성코드의 버전으로 추정. (검증 과정에서 사용) |
| 8 | Verification 4(USER ID) | FTP 레지스트리 구조의 ‘USER ID’ 값으로서 실행 중 랜덤 생성 (검증 과정에서 사용) |
| 4 | Verification 5(Signature) | HappyDoor 패킷에서 사용하는 시그니처 값 “0x84DE5360” (검증 과정에서 사용) |
| 4 | Packet Type | 1 : 연결 여부 확인 4 : 데이터 전송 6 : 백도어 수행 |
| 4 | File Info | Packet Type이 4일 때, 전송된 데이터 파일의 이름을 보낼 시 5로 설정. |
| 4 | CMD ID | Packet Type이 6일 때, 백도어 명령어 ID. (단 Packet Type이 4일 때, 아래와 같은 Unique ID.) |
| .. 이하 AhnLab TIP에서 확인할 수 있다. |
HappyDoor 패킷 설명
따라서 위 표와 같이 서버로부터 받은 응답 패킷을 검증하는 코드는 아래와 같으며 Verification 1~5까지 확인하는 것을 볼 수 있다.

3. 기능
3.1. 정보 탈취
해당 악성코드는 여섯 종류의 정보 탈취 기능을 가지고 있으며, 이 기능은 각각 Notepad(IfChar)의 ‘Infosteal ON/OFF’ 값에 따라 실행 여부가 결정된다. (1 : ON, 0 : OFF)

따라서 ‘1’(ON)로 설정된 정보 탈취 기능은 멀티 스레드로 동작하며, 스레드마다 탈취할 정보가 있다면 %TEMP% 폴더에 임시 파일을 생성해 정보를 기입한다.
– 임시 파일 : %TEMP%\{임의_4글자}.tmp
이후 RSA 공개키와 임의로 생성된 RC4 키를 이용해 유출 정보를 암호화하며, 아래의 특정 경로에 암호화한 정보를 저장한다. 이후 C2 서버에 데이터를 유출 후 삭제한다. 유출 데이터가 저장될 경로와 파일명은 아래와 같다.
| [암호화된 데이터] – 저장 경로 : %AllUsersProfile%\Google\Internet Explorer\LocalData\User Data\ – 데이터 파일명 : {기능이름}@연월일{시분초-밀리}.ute1 |

또한 해당 폴더에는 6가지 주요 유출 데이터 외에 시스템 정보 수집(osi)이나 특정 백도어 명령의 응답 값, 현재 실행된 악성코드 정보(gcfg) 등도 저장 후 C2 서버에 전송한다. 따라서 해당 경로에 데이터를 저장하는 기능을 정리하면 아래와 같다.
| 분류 | 파일 이름 | 기능 (또는 요약) |
설명 |
| 정보 탈취 | ssht | screenshot | 스크린샷 캡쳐 |
| klog | keylogger | 키로깅 정보 | |
| fmon | filemon | 아래 조건에 맞는 파일 수집 – 특정 경로 : “Desktop”, “Document”, “Download”, “\AppData\Local\Microsoft\Windows\INetCache\IE” – 특정 확장자 : .hwp .pdf .doc .xls .ppt .egg .jp* – 시간 : 수정 시간 15일 이내 – 파일 크기 : 50MB 이하 |
|
| ausb | alarm | 연결된 휴대용 장치에 대한 파일 이름 및 경로 수집 | |
| amtp | (위와 동일) | 연결된 휴대용 장치 이름 등 | |
| mrec | micrec | 녹음 활성화 및 음성 녹음 | |
| mmtp | mtpmon | 연결된 Android 장치 내 아래 확장자 파일 수집 – 확장자 : .jpg .jpeg .png .bmp .hwp .doc .ppt .xls .pdf .txt |
|
| 기타 | osi | OS Information | OS 버전 및 아키텍처 등 정보 수집 |
| gcfg | Get Config | HappyDoor 정보(버전, C2 주소, USER ID 등) | |
| 백도어 | ccmd | CMD result | 명령 프롬프트, *.ps1, *.bat 실행 결과 |
| mcfg | Method Config | 정보 유출 기능별 상태(ON/OFF) Base64 문자열 | |
| fup | File Upload | .Z .zip .zoo .arc .lzh .arj .gz .tgz 압축 파일 수집 |
‘User Data’ 경로에 암호화된 데이터를 저장하는 기능
3.1.1. 주요 6가지 기능
screenshot(ssht)
현재 화면을 캡쳐해 jpg 형태로 저장한다.
keylogger(klog)
현재 시간과 사용자가 입력하는 프로세스 및 키 정보를 저장한다. 저장 형태는 아래와 같다.

filemon(fmon)
아래 경로에 대하여 특정 조건에 해당하는 파일을 수집해 압축 파일로 저장한다. 파일 수집 후 전송까지 완료되면 (파일명 + 수정한 시간)을 MD5한 값(16Byte)을 아래 경로에 저장하며, 매번 파일 전송 시 ocl.dat 파일의 내용을 확인하여 같은 파일이 재전송되지 않도록 한다. (단, 수정된 시간을 포함하기 때문에 파일 수정 시 수정된 파일은 전송함)
| – 수집 파일 경로 : “%UserProfile%\Desktop”, “%UserProfile%\Document”, “%UserProfile%\Download”, “%UserProfile%\AppData\Local\Microsoft\Windows\INetCache\IE” – 수집 조건 : 확장자(hwp, pdf, doc, xls, ppt, egg, jp*), 시간(수정시간 기준으로 15일 이내), 파일 크기(50MB 이하) – 결과 파일 경로 : %SystemDrive%\ProgramData\ocl.dat |

alarm(ausb, amtp)
연결된 휴대용 디스크나 장치의 파일, 경로, 이름 등을 수집하는 기능으로 ausb와 amtp 이름으로 데이터를 저장한다. 이는 SetupAPI를 이용하거나 COM 객체(IID_IPortableDevice 등)를 이용해 휴대용 디스크 정보를 수집하며 다음과 같이 저장된다.

micrec(mrec)
해당 기능은 마이크 액세스를 허용하고 음성을 녹음하는 기능이다.

만약 마이크가 연결되어 있다면 음성이 녹음되며, 녹음 파일은 %temp%에 저장한다.
| – 녹음 파일 : %temp%{년-월-일_시-분-초}.wav |
이후 ‘mrec’ 파일명으로 암호화되어 유출한다.
mtpmon(mmtp)
‘mtpmon’은 연결된 휴대용 장치 중 ‘Android’를 대상으로 MTP(Media Transfer Protocol)를 통해 특정 파일을 수집하는 기능이다. filemon(fmon) 기능과 같이 파일 수집 후 전송까지 완료되면 (파일명 + 수정한 시간)을 MD5한 값(16Byte)을 아래 경로에 저장하며, 매번 파일 전송 시 mci.dat 파일의 내용을 확인하여 같은 파일이 재전송되지 않도록 한다. (단, 수정된 시간을 포함하기 때문에 파일 수정 시 수정된 파일은 전송함)
| – 수집 대상 확장자 : .jpg .jpeg .png .bmp .hwp .doc .ppt .xls .pdf .txt – 결과 파일경로 : %SystemDrive%\ProgramData\mci.dat |
3.1.2. 기타
해당 기능은 백도어를 수행하기 전 실행되는 것으로, PC 정보(osi)와 악성코드의 정보(gcfg)를 수집 해 C2 서버에 보낸다. osi 파일에는 OS 버전 및 아키텍처, 서비스팩 버전 등의 정보가 수집되며, gcfg 파일은 HappyDoor 정보를 보내는 기능으로 UserID, C2 서버, 특정 데이터 송신 주기 등 레지스트리에 설정된 데이터를 보낸다.

3.2. 백도어
HappyDoor는 공격자에게 백도어 명령을 받을 때 기본적으로 암호화된 패킷을 통해 동작한다. 해당 동작은 Notepad 레지스트리의 ‘Backdoor Packet Encryption ON/OFF ‘값에 따라 암호화 여부가 결정되며, 디폴트로 ‘1’(ON)로 설정되어 있어 이를 ‘0’(OFF)으로 바꾸면 암호화되지 않은 패킷으로 백도어 명령을 받을 수 있다. HappyDoor는 공격자 서버로부터 패킷을 받으면 아래와 같이 패킷의 ‘CMD ID’ 번호에 맞는 백도어 기능을 수행한다.
명령어
HappyDoor의 백도어 명령어는 아래와 같다.
| CMD ID | 기능 | 상세 정보 | |
|---|---|---|---|
| 1002 | 종료 | 백도어 종료 | |
| 1003 | 대기(Sleep) | 특정 시간(인자)만큼 메인 스레드 대기(Sleep) | |
| 1004 | 재실행 | 백도어 재실행 | |
| 1005 | 업데이트 | 새로운 DLL 파일(인자) 로드 후 기존 백도어 종료 | |
| 1101 | 커맨드라인 실행 | 인자로 받은 데이터를 명령 프롬프트로 실행 | ccmd |
| 1102 | BAT으로 실행 | 인자로 받은 데이터를 BAT 파일을 생성하여 실행 | ccmd |
| 1103 | PowerShell로 실행 | 인자로 받은 데이터를 PS1 파일을 생성하여 실행 | ccmd |
| 1104 | DLL 실행 | regsvr32를 이용하여 DLL 파일 실행 후 삭제 | |
| 1105 | 메모리 실행 | 메모리에 실행 파일(PE)을 적재하여 실행 | |
| 1111 | 정보 수집 | OS 정보(osi) 및 기본 설정 값(gcfg), 전역 변수 설정 값 수집 | osi gcfg |
| 1112 | 전역 변수 관련 설정 | interval_cmd : 백도어 명령 주기 interval_ssht : 스크린샷 보내는 주기 ssht_height / ssht_width : 스크린샷 크기 |
|
| 1121 | Notepad 레지스트리 변경 | HKCU\Software\Microsoft\Notepad 변경 및 모든 정보 유출 기능의 활성화 상태(mcfg) 출력 | mcfg |
| 1122 | 활성화된 기능 전송 | 모든 정보 유출 기능의 활성화 상태(mcfg) 출력 | mcfg |
| 1131 | 파일 업로드 | 특정 확장자(z, zip, zoo, arc, lzh, arj, gz, tgz) 파일 수집 | fup |
| 1132 | 파일 다운로드 | 감염 PC에 공격자가 원하는 파일 생성 C:\ProgramData\{임의_4글자}. tmp 확장자로 생성 (과거 버전의 파일명 : \down.db) |
|
| 1200 | (암호화된)백도어 수행 | 인자로 받은 데이터를 RSA 개인키로 암호화를 풀고 CMD ID에 해당하는 백도어 수행 |
백도어 기능 목록
위 명령에 사용되는 인자는 대부분 %TEMP% 경로에 임시 파일({임의_4글자}.tmp)에 생성되며, 명령 결과를 응답해야 하는 기능의 경우 기존 유출 경로(User Data)에 암호화된 데이터를 위 결과 파일명으로 저장한 뒤 유출한다. 백도어 예시는 아래와 같다.
| [명령 예시] 명령 번호(CMD ID) : 1101번, 인자 : ‘whoami’ – 저장 경로 : %AllUsersProfile%\Google\Internet Explorer\LocalData\User Data\ – 데이터 파일명 : ccmd@240319(20.29.05-407).ute1 |

결론
ASEC에서는 북한의 지원을 받고 있다고 알려진 위협 그룹들의 활동을 모니터링하고 있으며 최근 Kimsuky 공격자의 소행으로 추정되는 공격 사례를 확인하였다. 공격자는 주로 특정 교수나 특정 기관 등으로 위장해 스피어피싱과 같은 사회 공학적 기법을 사용해왔으며, 만약 첨부 파일을 실행하게되면 이러한 백도어가 설치되고 추가적인 악성코드가 설치될 수 있다.
추가적으로 설치되는 악성코드들로는 Ngrok와 같은 프록시 도구를 통해 프록시 네트워크 환경을 구축하며, 부족한 원격 제어 기능들을 보완하기 위해 VNC 악성코드들이나 Chrome 원격 데스크톱 그리고 RDP Wrapper와 같은 프로그램을 설치할 수 있다. 나아가 권한 상승 및 계정 정보 탈취를 위한 다양한 악성코드들을 설치하는 이력도 확인된다. 이에따라 Kimsuky 그룹의 공격 대상이 되는 사용자들은 감염 환경에 존재하는 다양한 정보들을 탈취당할 수 있으며 실제로 인증서가 탈취된 사례도 존재한다.
사용자는 출처가 불분명한 메일의 첨부 파일이나 웹 페이지에서 다운로드한 실행 파일은 각별히 주의해야 하며, 기업 보안 담당자는 기업에서 사용 중인 소프트웨어의 모니터링을 강화하고 프로그램에 보안 취약점이 있다면 패치를 수행하여야 한다. 그리고 OS 및 인터넷 브라우저 등의 프로그램들에 대한 최신 패치 및 V3를 최신 버전으로 업데이트하여 이러한 악성코드의 감염을 사전에 차단할 수 있도록 신경 써야 한다.
파일 진단
- Backdoor/Win.Iedoor.R605020 (2023.09.12.03)
- Backdoor/Win.Utdoor.C5583075 (2024.02.03.00)
- Backdoor/Win.Iedoor.R605020 (2023.09.12.03)
- Trojan/Win.SysStealer.R436785 (2021.08.14.00)
- Backdoor/Win.Akdoor.R493994 (2022.05.24.01)