Xctdoor와 과거 CRAT 공격 사례의 연관성 분석 (Larva-26005)
1. 개요
AhnLab SEcurity intelligence Center(ASEC)은 최근 Larva-26005 공격자가 국내 사용자들을 대상으로 Xctdoor를 유포 중인 것을 확인하였다. Xctdoor는 2024년 ASEC 블로그를 통해 공개되었으며 [1] 2026년 3월에는 Hauri사에서 통합 보안 프로그램을 위장한 공격 사례를 공개하였다. [2]
ASEC은 Larva-26005 공격자의 공격 및 악성코드들을 분석하던 중 Xctdoor가 과거 CRAT 악성코드 유포 사례와 연관성이 존재하는 것을 확인하였다. CRAT은 2020년 최초로 확인되었으며 스피어 피싱 공격이나 국내 커뮤니티 사이트에 업로드되어 유포되는 등 국내 사용자들을 대상으로 한 다양한 공격 사례에서 사용되었다. Cisco Talos의 보고서에 따르면 Hansom 랜섬웨어를 설치해 감염 시스템을 암호화하였는데 국내 ASD 로그에서도 동일한 유형의 공격 사례가 확인되었다. CRAT을 다루었던 보안 업체들은 공격자를 Lazarus 그룹으로 추정하였으며 북한 기반의 다른 공격 사례에서도 연관 정보가 확인되기도 하였다. 즉 Larva-26005 공격자는 적어도 2020년부터 활동해오고 있으며 초기에는 Hansom 랜섬웨어 공격 과정에서 CRAT, Xctdoor를 함께 사용하였지만 최근에는 Xctdoor만을 사용 중인 것으로 보인다.
본 보고서에서는 먼저 2026년 확인된 보안 프로그램을 위장한 공격 사례를 정리한다. 최초 유포 사례는 알 수 없지만 보안 프로그램 Veraport와 SoftCamp를 위장한 드로퍼로 설치되었다. 해당 공격 사례에서는 최종적으로 Xctdoor를 설치하였는데 C++로 제작된 유형과 Go 언어로 제작된 유형 두 개가 사용되었다. 최근에는 LNK 악성코드를 통해 유포 중임에 따라 새롭게 확인된 공격 사례도 함께 정리한다. [3] 그리고 국내에서 확인된 CRAT 공격 사례를 다루는데 해당 사례에서는 Hansom 랜섬웨어와 함께 CRAT 그리고 Xctdoor의 초기 버전이 공격에 사용되었다. 두 악성코드는 동일한 시점에 설치되었으며 최근까지도 악용되고 있는 AppX 패키지 경로를 설치 경로로 사용하고 있다. 또한 Xctdoor와 동일하게 난독화된 코드를 실행 중에 복호화한 후 실행하는데 난독화된 코드의 전후에 시작 패턴과 끝 패턴을 검증하는 것도 동일하다. 마지막으로 과거 알려진 공격 사례들을 기반으로 다른 공격자들과의 연관성을 정리한다.
2. 2026년 공격 사례
2.1. 보안 프로그램 위장 사례
2026년 3월 Hauri사에서 Xctdoor를 악용한 공격 사례를 다루었다. 해당 보고서에서는 Veraport를 위장한 설치 파일을 다루었지만 동일한 주소에서 SoftCamp를 위장한 유형도 유포되었다.

Figure 1. 압축 파일 내의 악성코드 및 정상 프로그램들
압축 파일의 압축을 해제하면 “setup” 폴더 내에 정상 실행 파일과 악성 DLL이 존재한다. Veraport 위장 압축 파일에는 Sysinternals의 ShellRunAs가 Veraport를 위장한 이름 “veraport-q3.exe”로 존재하며 실행 시 DLL Side-Loading 방식으로 동일 경로에 위치한 “credui.dll”이라는 악성 드로퍼가 로드되어 실행된다. 실행 중 실제 Veraport 설치 파일을 “%TEMP%\veraport-q3.exe” 경로에 생성하고 실행하여 정상적인 설치 프로그램으로 위장한다. SoftCamp 위장 압축 파일에는 MS 프로그램인 “wkspbroker.exe”가 SoftCamp 설치 파일을 위장해 “SCWSSPSetup.exe”라는 이름으로 존재하며 실행 시 로더 악성코드 “RADCUI.dll”를 로드한다. 참고로 로더 악성코드는 동일 경로에 위치한 “Setup.dat”을 복호화하는데 이것이 실제 SoftCamp 정상 설치 프로그램이다.

Figure 2. Veraport 설치 프로그램

Figure 3. SoftCamp 설치 프로그램
DLL Side-Loading 방식으로 드로퍼가 실행되면 3개의 파일을 생성하는데 먼저 VBS 런처 악성코드인 “%PUBLIC%\videos\s{random}.vbs”가 실행된다. “s{random}.vbs”는 동일 경로에 위치한 BAT 다운로더 악성코드 “%PUBLIC%\videos\{random}.bat”를 실행한다. “{random}.bat”은 다운로더 기능을 수행함과 동시에 동일 경로에 위치한 VBS 다운로더 악성코드 “%PUBLIC%\videos\p{random}.vbs”를 작업 스케줄러에 등록한다.
| Type | 경로 | 생성 방식 |
|---|---|---|
| VBS Launcher | %PUBLIC%\videos\s{random}.vbs | 드로퍼 |
| VBS Downloader | %PUBLIC%\videos\{random}.bat | 드로퍼 |
| VBS Downloader | %PUBLIC%\videos\p{random}.vbs | 드로퍼 |
| PS Launcher | %PUBLIC%\videos\2.ps1 | 다운로드 |
Table 1. 생성되는 스크립트 파일들
“{random}.bat”은 XcLoader와 Xctdoor를 다운로드하며 “p{random}.vbs”는 파워쉘 스크립트 “%PUBLIC%\videos\2.ps1″를 다운로드한다.
| Type | 다운로드 주소 | 다운로드 파일 | 다운로드 경로 |
|---|---|---|---|
| BAT Downloader | hxxps://hesenorm[.]info/download/xtps | 암호화된 Xctdoor | %PUBLIC%\videos\x{random} |
| hxxps://hesenorm[.]info/download/lcpy | 암호화된 XcLoader | %PUBLIC%\videos\x{random} | |
| VBS Downloader | hxxps://hesenorm[.]info/download/pxt2 | 파워쉘 런처 | %PUBLIC%\videos\2.ps1 |
Table 2. 다운로드 대상
파워쉘 스크립트 “%PUBLIC%\videos\2.ps1″는 다운로드한 x{랜덤명} 파일 즉 암호화된 Xctdoor를 아래 경로로 이동시킨다.
- 원본 : C:\Users\Public\Pictures\x{random}
- 대상 : %LOCALAPPDATA%\Packages\Microsoft.MicrosoftOffice365Hub_8wekyb3d8bbwe\Settings\roaming.dat
또한 “l{random}” 파일 즉 XcLoader를 XOR 디코딩한 뒤 아래 경로로 이동시킨다.
- 원본 : C:\Users\Public\Pictures\l{random}
- 대상 : %LOCALAPPDATA%\Packages\Microsoft.MicrosoftOffice365Hub_8wekyb3d8bbwe\Settings\settings.lock
XOR 복호화 방식은 다음과 같다.
- Xor 복호화 방식 : Decrypted_Data = (Encrypted_Data ^ 0x11 ^ ((i * i) mod 0xFF)

Figure 4. 파워쉘 스크립트의 복호화 루틴
여기까지의 과정이 끝나면 지속성 유지를 위해 시작 프로그램 경로에 바로가기를 생성하고 실행하는 데 XcLoader를 RegSvr32를 통해 실행시키는 명령이다.
- 실행 명령 : C:\WINDOWS\system32\regsvr32.exe /s %LOCALAPPDATA%\Packages\Microsoft.MicrosoftOffice365Hub_8wekyb3d8bbwe\Settings\settings.lock
2.2. LNK 공격 사례
Larva-26005 공격자의 공격 사례는 지속적으로 확인되고 있으며 자사 ASD 로그에서 확인되는 공격들은 대부분 스피어 피싱으로 추정된다. 최초 침투 과정에서 LNK가 사용되는데 LNK 악성코드는 드로퍼로서 위의 보안 프로그램 위장 사례처럼 미끼 문서 파일을 보여주고 동시에 3개의 스크립트 파일을 생성하고 실행한다. 다음은 2026년 4월 공격 사례에서 확인된 “***_종합현황_(대외비)_26.4.4.lnk” 악성코드가 생성하는 미끼 문서 파일이다.

Figure 5. 미끼 문서 파일
LNK 악성코드는 다음과 같은 명령을 실행해 VBS Launcher, BAT Downloader, VBS Downloader를 생성하며 이후의 행위는 위의 사례와 동일하다.

Figure 6. LNK가 실행하는 파워쉘 명령
공격은 2026년 6월과 7월에도 지속되었으며 공격 사례들에서는 다음과 같은 LNK 파일 실행이 확인된다. 유포된 LNK의 이름들을 보면 일반 사용자들 외에도 기업 사용자들이 그 대상으로 보인다.
- ** 잔고내역서.lnk
- 2.전세금 투자.lnk
- 전세계약특약정리.lnk
- 환불신청서 1.lnk
- 이의정악행.lnk
- 상품등록.lnk
- (RESUME)_***** Cloud&CDN 영업_***.LNK
- 피싱 사이트 증가에 따른 *** 이용 보안 유의사항 안내.lnk
- ** 스토리보드_v1.0_260604.lnk
- PREE-12월1차 **** TT.lnk
- 정책 유선 (4).lnk
- µTorrent.lnk
- 디스크 정리.lnk
- 입력자료.lnk
2.3. 2024년 공격 사례
ASEC은 2024년에도 Larva-26005 공격자의 국내 대상 공격 사례들을 확인하였는데 먼저 관리되지 않은 윈도우 IIS 웹 서버를 공격해 웹쉘을 설치한 후 XcLoader와 Xctdoor를 설치한 사례가 있었다. 공격자는 백도어 설치 외에도 Ngrok라는 터널링 프로그램을 설치해 외부에서 NAT 환경 내부에 존재하는 시스템에 접속할 수 있게 노출시키기도 하였다. [4]

Figure 7. 웹 서버를 공격하여 XcLoader를 설치하는 로그
또 다른 사례에서는 외부에 노출되어 있던 그룹웨어 시스템의 업로드 페이지를 통해 초기 침투를 시도한 것으로 추정된다. 취약한 파일 업로드 페이지를 이용해 공격자는 웹셸을 업로드했으며 그룹웨어 시스템에 대한 초기 제어권을 확보하였다. 해당 공격 사례의 특징 중 하나는 오픈 소스 메신저인 BeeBEEP의 설치 파일을 변조하여 Xctdoor를 생성 및 실행하는 루틴을 삽입하였으며 그룹웨어에 존재하는 기존의 설치 파일을 악성 설치 파일로 교체하여 내부 전파하였다는 점이다. [5]
공격자는 이외에도 국내 ERP 솔루션을 악용하기도 하였는데 업데이트 기능을 담당하는 모듈에 Regsvr32.exe 프로세스를 이용해 악성 DLL을 실행하는 루틴을 삽입하였다. 해당 프로그램에 의해 실행된 DLL은 Go 언어로 개발된 Xctdoor였다.
3. 악성코드 분석
3.2. XcLoader
3.2.1. XcLoader 분석
LNK에 의해 RegSvr32 프로세스에 로드되어 실행되는 “settings.lock”은 인젝터 악성코드이다. 공격자는 2024년 사례에서도 XcLoader를 이용해 Xctdoor를 정상 프로세스에 인젝션하였다. 과거에는 Go 언어로 제작된 유형과 C++로 제작된 유형 두 가지가 사용되었다. XcLoader는 동일 경로에 존재하는 Xctdoor 악성코드 “roaming.dat” 파일을 읽어 이전 파워쉘 스크립트와 동일한 XOR 알고리즘으로 복호화한다.
- Xor 복호화 방식 : Decrypted_Data = (Encrypted_Data ^ 0x11 ^ ((i * i) mod 0xFF)
이후 같은 경로의 settings.ini 파일의 존재 여부를 확인한다. 이번 사례에서는 settings.ini이 확보되지 않았으나, 과거 유사 사례에서 확인된 파일은 아래와 같다.
- ApplicationFrameHost.exe
- Runtimebroker.exe
- sihost.exe
- taskhostw.exe
- explorer.exe
“settings.ini” 파일이 존재하는 경우, 해당 파일에 문자열로 저장된 프로세스 이름을 가져온 뒤, 해당 프로세스에 앞서 디코딩한 roaming.dat PE 파일을 인젝션한다. 만약 settings.ini 파일이 존재하지 않는 경우에는 “explorer.exe” 프로세스에 인젝션한다. 인젝션 과정에서는 roaming.dat PE 파일을 메모리에 2회 복사한다. 이후 Xctdoor의 Export 함수인 RsdserviceMain()을 실행하기 위한 쉘코드를 삽입하고, 해당 쉘코드를 실행한다. 결과적으로 RsdServiceMain() 함수에는 아래 5개의 파라미터가 전달된다.
- 파라미터 1 : 0
- 파라미터 2 : 프로세스 인젝션에 사용할 Xctdoor(roaming.dat) 주소
- 파라미터 3 : Xctdoor 메인 함수명(OfficeServiceMain())의 해시 값 (0x46903DF2)
- 파라미터 4 : 파일로 저장할 Xctdoor(roaming.dat) 주소 (코드 난독화 XOR키 변경 대상)
- 파라미터 5 : Xctdoor(roaming.dat) 파일 크기
참고로 파라미터 3번은 백도어의 메인 함수명인 OfficeServiceMain() 함수를 찾기 위해 사용되는 해시값이다.
3.2.2. 코드 난독화
DLL Side-Loading 방식으로 동작하는 드로퍼부터 XcLoader 그리고 Xctdoor는 모두 코드 영역이 난독화되어 있으며 실행 도중에 코드 영역을 복호화하여 실행한다. 이러한 방식은 과거 사례부터 지속적으로 사용되고 있다.
난독화 루틴은 두 가지 유형으로 구분되며, 두 유형 모두 동일한 난독화 해제 루틴을 사용한다. 다만 난독화된 코드 영역을 찾는 방식은 유형별로 차이가 있다. 또한 샘플마다 난독화 코드 영역을 식별하기 위한 시그니처 값과 난독화 키 값이 서로 다르게 설정되어 있다. 난독화가 적용된 함수는 실행 초기에 난독화 해제 루틴을 호출하여 코드 영역을 복원한 뒤 본래 기능을 수행한다. 이후 함수 종료 직전에 다시 난독화 루틴을 호출하여 복원된 코드 영역을 난독화 상태로 되돌린다.
첫 번째 유형은 난독화된 코드 영역을 탐색할 때 10바이트 길이의 시그니처를 사용한다.
- 암호화된 코드 영역 구조 : {시작 시그니처:10} {임의 데이터:7} {난독화 코드} {끝 시그니처:10}

Figure 8. 첫 번째 유형의 난독화 해제 루틴
두 번째 유형의 경우 난독화된 코드 영역을 찾을 때 시작 시그니처와 끝 시그니처가 각각 2개로 분리되어 있는 것이 특징이다. 시작 시그니처는 14바이트 범위 내 앞쪽 4바이트와 뒤쪽 4바이트를 기준으로 확인하며, 끝 시그니처 역시 동일한 방식으로 확인한다. 전체 구조는 아래와 같다.
- 암호화된 코드 영역 구조 : {시작 시그니처_1:4} {중간 데이터:6} {시작 시그니처_2:4} {임의 데이터:5} {난독화 코드} {임의 데이터:1} {끝 시그니처_1:4} {중간 데이터:6} {끝 시그니처_2:4}

Figure 9. 두 번째 유형의 난독화 해제 루틴
3.3. Xctdoor 분석
3.3.1. Xctdoor (C++)
현재 인젝션 된 “roaming.dat” 즉 Xctdoor는 RAW 형태로 메모리에 적재되어 그대로 실행할 수 없으므로 RsdServiceMain() 함수를 통해 추가로 메모리를 할당한 뒤 해당 파일을 PE 이미지 형태로 다시 적재한다. 메모리 적재가 완료되면 DLL 메뉴얼 매핑 과정을 거쳐, DllEntryPoint() 함수를 호출한다. 이후 인자로 받았던 “OfficeServiceMain” 문자열 해쉬 값을 Export 함수들과 비교하면서 OfficeServiceMain() 함수의 주소를 찾고 실행한다.
OfficeServiceMain() 함수는 본격적인 백도어 기능을 수행하는 함수이다. 해당 함수는 백도어 기능을 수행하기 전, 4번째 파라미터로 전달받은 백도어 PE 파일 내부의 난독화 시그니처 값과 키 값을 변경한 뒤 재암호화하여 “roaming.dat” 파일로 저장한다. 이러한 동작은 파일 내용을 지속적으로 변경함으로써, 백신 프로그램의 정적 시그니처 기반 탐지를 우회하기 위한 목적으로 추정된다.
Xctdoor가 실행되면 아래 3가지 조건을 이용하여 사용자 부재 상태를 확인한다. 사용자 부재 상태가 변경될 때마다 변경된 상태 정보를 C&C 서버로 전송한다.
- 사용자 부재 상태 조건 (OR 조건)
- 스크린세이버 On
- 모니터 디스플레이 Off
- 세션 잠금 상태 On
이후 C&C 서버에 접속하여 공격자로부터 명령을 수신한다. 해당 백도어가 C2 서버로부터 수신하는 명령은 아래와 같다.
| 명령 번호 | 설명 | 완료 후 송신 번호 |
|---|---|---|
| 0x10001 | 쉘 세션 객체 생성 | |
| 0x10002 | 쉘 세션 종료 시 종료 방법 선택 – 1이면 쉘 세션 프로세스만 종료 – 0이면 쉘 세션 및 자식 프로세스까지 종료 |
|
| 0x10003 | 쉘 명령 수신 | 3 |
| 0x10004 | 전체 드라이브 정보 가져오기 | 4 |
| 0x10005 | 특정 폴더 내부 파일 목록 가져오기 (파일 이름, 파일 속성, 파일 크기, 마지막으로 쓴 시간) |
5 |
| 0x10006 | 파일(or 메모리) 다운로드 준비 | 성공: 6 실패: 7 |
| 0x10007 | 파일(or 메모리) 다운로드 진행 | 성공: 6 실패: 7 |
| 0x10008 |
파일(or 메모리) 다운로드 완료 – 메모리의 경우 특정 프로세스에 인젝션 |
파일: 송신 안함 메모리: 성공 20 |
| 0x1000A | 특정 파일/폴더 하위 포함 삭제 | 5 |
| 0x1000B | 특정 경로의 폴더 생성 및 상위 폴더 내부 파일 목록 가져오기 | 5 |
| 0x1000C | 파일(or 메모리) 다운로드 취소 | |
| 0x1000D | 파일 업로드 준비 (파일 크기 전송) | 성공: 8 실패: 7 |
| 0x1000E | 파일 업로드 진행 | 업로드 중: 9 완료: 10 실패: 7 |
| 0x10010 | 시스템 정보 가져오기 | 12 |
| 0x10011 | 창 표시 상태로 명령 실행 (ShellExecute 이용) | |
| 0x10012 | 창 숨김 상태로 명령 실행 (CreateProcess 이용) | |
| 0x10015 | 백도어 종료 (정리까지) | |
| 0x10016 | 프로세스 목록 가져오기 (PID, PPID, 스레드 개수, 프로세스 경로) |
16 |
| 0x10017 | 특정 프로세스 종료 | 16 |
| 0x10018 | 키로깅 시작 | |
| 0x10019 | 키로깅 종료 | |
| 0x1001A | 행위 없음 | |
| 0x1001B | 현재 통신 세션 종료 | |
| 0x1001F | 백도어 강제 종료 (0 전송 시 / Exeption 발생) | |
| 0x10021 | 명령 다중 실행 (cmd /c 이용) | 22 |
| 0x10022 | 설정 변경 (통신 주기, 포트 번호, 주기적으로 키로깅/스크린샷 여부, 스크린샷 주기, 드라이브 모니터링 여부 등) |
|
| 0x10024 | 스크린샷 즉시 찍기 | 24 |
| 0x10025 | %ALLUSERSPROFILE%\msci.cng 파일 재설정 (통신 패킷 헤더에서 사용하는 데이터) | 12 |
| 0x10026 |
공유 메모리 생성 후 데이터 저장 공유 메모리 명 : SM3:2300:402:WilStaging_01 |
|
| 0x10027 | 공유 메모리 해제 | |
| 0x10028 | 현재 실행되는 프로세스 이름 가져오기 | 26 |
| 0x10029 | 파일/폴더 이동 | 5 |
Table 3. Xctdoor가 지원하는 명령
데이터를 송신할 때는 아래 송신 번호를 기준으로 데이터를 구분하여 C2 서버에 전달한다.
| 송신 번호 | 설명 |
|---|---|
| 3 | 쉘 명령 결과 전달 |
| 4 | 전체 드라이브 결과 전달 |
| 5 | 특정 폴더 내부 파일 목록 전달 |
| 6 | 다운로드 준비 완료 |
| 7 | 다운로드/업로드 실패 |
| 8 | 파일 업로드 준비 완료 |
| 9 | 파일 업로드 진행 |
| 10 | 파일 업로드 완료 |
| 12 | 시스템 정보 전달 |
| 15 | 사용자 부재 알림 |
| 16 | 프로세스 목록 전달 |
| 17 | 키 입력할 때마다 키로그 데이터 전달 |
| 18 | 클립보드 내용이 변경될 때 마다 데이터 전달 |
| 19 | 활성 창 변경할 때마다 키로그 데이터 전달 |
| 20 | 다운로드 및 인젝션 완료 |
| 22 | 명령 다중 실행 결과 전달 |
| 23 | 변경된 드라이브 정보 전달 |
| 24 | 스크린샷 전달 |
| 25 | 새로운 드라이브 장착 시 알림 |
| 26 | 인젝션 된 프로세스 이름 전달 |
Table 4. 백도어가 C2 서버로 송신 시 사용하는 번호
3.3.2. Xctdoor (Go)
2024년 사례와 마찬가지로 Go 언어로 제작된 Xctdoor도 함께 확인된다. C++로 제작된 유형과 비교했을 때 사용자 부재 상태 모니터링 조건, 명령어 번호, 송신 번호 모두 실질적으로 동일한 악성코드이다.

Figure 10. Go 언어로 제작된 Xctdoor
4. CRAT 공격 사례
4.1. CRAT
CRAT은 2020년 4월부터 확인된 백도어 악성코드로서 주로 국내 사용자들을 대상으로 다양한 방식으로 유포되었다. 최초 발견된 CRAT은 CVE-2017-8291 취약점을 사용하는 “코로나바이러스 대응 긴급조회.hwp” 파일명의 한글 문서를 이용한 스피어 피싱 공격으로 유포되었다. [6] 그 후 국내 커뮤니티 사이트에 업로드된 변조된 프로그램에서 CRAT을 드롭하거나 [7] 다운로드하는 방식으로 공격 벡터를 확장하였고, 국내 학술 관련 사이트에서는 한글 문서 형태의 악성코드를 “공지사항”에 관련된 문서로 위장한 상태로 업로드되기도 하였다.

Figure 11. 2020년 4월 코로나 관련 주제로 유포된 한글 문서 스피어 피싱 공격 사례

Figure 12. 2020년 7월 국내 커뮤니티에 업로드되어 유포된 사례
초기 유포된 CRAT은 PDB 경로에 “crat”이라는 키워드가 존재함에 따라 CRAT으로 분류되었으며 상세한 분석 정보는 TI보고서에 존재한다. [8] CRAT은 HTTP 프로토콜을 이용해 C&C 서버와 통신하는 백도어 악성코드로서 시스템 정보 수집, 파일 작업, 명령 실행, 추가 페이로드 다운로드, 사용자 파일 압축 후 탈취와 같은 기능을 지원한다. 실행 시 정상 프로세스에 인젝션하여 동작하며 자신을 “%LOCALAPPDATA%\Microsoft\WindowsApps\Microsoft.MicrosoftEdge_8wekyb3d8bbwe\<랜덤8>.<랜덤3>”와 같은 경로에 생성한 후 RegSvr32로 이를 실행하는 LNK 파일을 Run 키에 등록한다.
CRAT은 추가 모듈과 함께 사용되기도 한다. “\\.\pipe\ChromeUpdatePipe”라는 이름의 Named Pipe에 연결을 시도하고 성공 시 페이로드를 전송하는데 함께 설치된 인젝터 모듈이 해당 Named Pipe를 읽어 전달받은 페이로드를 정상 프로세스에 인젝션 할 수 있다.

Figure 13. CRAT의 뮤텍스 이름
4.2. Xctdoor와 함께 유포된 국내 공격 사례
CRAT은 Hansom 랜섬웨어를 포함한 다양한 플러그인들을 사용하는 것으로 알려져 있으며 대표적으로 키로거, 스크린 캡쳐, 클립보드 모니터링 등이 있다. 2020년 Cisco Talos의 보고서처럼 CRAT이 Hansom 랜섬웨어와 함께 설치된 사례가 국내 대상 공격 사례에서 확인되었다. 각각의 공격 사례들에서는 CRAT, Hansom 랜섬웨어 외에도 Named Pipe를 통해 전달받은 페이로드를 인젝션하는 인젝터 그리고 다수의 웹 브라우저 대상 자격 증명 추출 도구들이 함께 수집되었다.

Figure 14. Hansom 랜섬웨어의 랜섬노트
- 공격자 이메일 주소 – 1 : hansom2008@protonmail[.]com
- 공격자 이메일 주소 – 2 : hansompay2008@yandex[.]com
Hansom 랜섬웨어 공격 사례의 가장 큰 특징은 Xctdoor의 초기 버전이 Hansom 랜섬웨어와 함께 사용되었다는 점이다. 동일한 시점에 함께 사용되었다는 점 외에도 악성코드 설치 경로도 동일하다. “%LOCALAPPDATA%\microsoft\windowsapps\microsoft.microsoftedge_8wekyb3d8bbwe\” 같은 AppX 패키지 경로는 과거 CRAT부터 2026년 사례의 Xctdoor까지 지속적으로 사용되고 있다. 이외에도 공격에 사용된 CRAT 또한 Xctdoor처럼 코드를 난독화한다는 점이 있다. 암호화된 부분의 시작을 나타내는 패턴이 다음과 같이 명령으로 존재하며 끝을 나타내는 패턴까지 복호화를 진행하는 점은 두 악성코드 모두 동일하다.
- 시작 명령 1: C7 05 … 0xE840C764
- 시작 명령 2: C7 05 … 0xB988C344
- 시작 명령 3: C7 05 … 0xFFE8CC02
- 시작 명령 4: C7 05 … 0x80D43F05
- 끝 명령 1 : C7 05 … 0x81C6D232
- 끝 명령 2 : C7 05 … 0xC902D654
- 끝 명령 3 : C7 05 … 0xC8E404F0
- 끝 명령 4 : C7 05 … 0x7C01F922

Figure 15. 난독화 해제 루틴과 난독화된 시작 패턴
4.3. 공격자 정보
2020년 국내 사용자들을 대상으로 CRAT을 유포한 스피어 피싱 공격 사례들에 대해 이스트 시큐리티에서는 Lazarus 그룹이 C&C 서버를 구축할 때 워드프레스 기반의 웹 사이트를 활용한다는 점을 이유로 Lazarus 그룹을 공격자로 분류하였다. [9] [10] Cisco Talos 또한 공격자 정보를 특정하는데 어려움이 있지만 Lazarus가 사용하는 기법과 유사한 측면이 있다는 점을 들며 Lazarus 그룹과의 연관성을 언급하였다. 유사한 점으로는 Lazarus 그룹이 사용하는 다른 악성코드와 동일한 HTTP Wrapper 라이브러리를 사용한다는 점이나 RAT 기능이 중복된다는 점 그리고 랜섬웨어를 유포하고 있으며 워드프레스 기반 웹 사이트를 C&C 서버로 사용한다는 점이 있다. 이외에도 CRAT의 디코이 문서 파일을 기반으로 한국어 사용자들을 대상으로 한다는 점도 언급된 사항들 중 하나였다.
2020년 9월에는 QiAnXin사에서 Lazarus 공격자의 스피어 피싱 공격 사례를 다루었다. [11] [12] 해당 공격 사례에서 사용된 다운로더 악성코드의 C&C 서버 주소로 “www.fabioluciani[.]com”가 있다. 이 주소는 Kaspersky사의 보고서 중 ThreatNeedle을 이용한 Lazarus 공격자의 방위 산업 대상 공격 사례와 [13] 보안 연구원을 대상으로 한 북한 추정 공격자의 공격 캠페인을 다룬 구글 TAG의 보고서에서도 포함된 주소이다. [14]
공격자는 2024년 공격 사례에서 지속성 유지를 목적으로 국내 ERP 솔루션인을 패치해 악성코드를 실행하는 데 사용하였다. 이러한 점은 Andariel 공격자의 공격 방식과도 유사한데 Andariel 공격자는 2017년뿐만 아니라 2025년에도 국내 ERP 솔루션을 공격해 악성코드를 유포한 사례가 확인되었다. [15] ASEC은 해당 공격자를 Larva-26005로 분류하며 북한과의 연계성이 존재할 것으로 보고 있다. 최근 확인된 공격에서는 XcLoader, Xctdoor를 설치 중이며 최근에는 랜섬웨어 공격 사례는 확인되지 않으나 감염 시스템의 정보를 수집하는 행위는 지속되고 있다.
5. 결론
Larva-26005 공격자는 투자, 부동산 거래, 영업 및 보안 문서 등의 키워드를 이용한 피싱 메일을 통해 유포되고 있으며 보안 프로그램 설치 파일을 위장해 유포된 사례도 존재한다. 사용자는 문서 파일 또는 정상 프로그램으로 생각해 파일을 다운로드해 실행할 수 있으며 이 경우 XcLoader 및 Xctdoor 백도어가 설치되어 제어가 탈취당할 수 있다. 공격자는 백도어 외에도 정보 탈취 도구를 설치하기 때문에 자격 증명 정보, 사용자 파일들 등 민감한 정보가 탈취될 수 있다.
사용자들은 메일 첨부 파일뿐만 아니라 출처가 불분명한 실행 파일을 각별히 주의해야 한다. 또한 V3를 최신 버전으로 업데이트하여 악성코드의 감염을 사전에 차단할 수 있도록 신경 써야 한다.