
요약
X에 Lazarus로 분류된 도메인이 보고되어 해당 도메인에 존재하는 악성코드를 확보하였다.
확보한 악성코드를 분석한 결과 Lazarus가 사용하는 Comebacker 악성코드의 신규 변종으로 확인되었다.
C&C 서버 인프라를 분석하는 과정에서 추가적인 C&C 서버 도메인과 Comebacker 악성코드를 확보하여 분석하였다.
1. 개요
X의 ThreatBookLabs 게시글에서 Lazarus로 분류된 도메인이 보고(25.06.19)되었고, 해당 도메인에 존재하는 docx 파일로 위장한 악성코드를 확보해 분석하였다.
분석 결과 해당 악성코드는 Lazarus가 사용하는 Comebacker 악성코드의 신규 변종으로 확인되었으며, C&C 서버 인프라 분석 과정에서 2025년 3월에 유포된 것으로 추정되는 Comebacker 악성코드도 추가 확보할 수 있었다.
본 글에서는 신규 변종인 Comebacker 악성코드에 대한 분석 내용과 공격 변화 과정에 대하여 다룬다.
1.1. Comebacker
Comebacker 악성코드는 2021년 구글 Threat Analysis Group의 글에서 처음 보고된 악성코드로, C&C 서버에서 DLL 파일을 다운받아 실행하는 방식의 다운로더/백도어이다. Microsoft에서 처음 Comebacker로 명명하였으며 현재까지 Lazarus 악성코드로 알려져 있다.
2024년에는 PyPI 패키지에 Comebacker 악성코드가 삽입되어 배포된 것이 확인되었으며, 2021년부터 지속적으로 유포되고 있다.
2. 악성코드 분석
2.1. C&C 서버 오픈 디렉토리
악성코드가 발견된 C&C 서버 주소는 office-theme[.]com이다. dat, tmp, bin 등 여러 확장자 파일이 존재하였지만, dat 혹은 tmp가 확장자인 파일은 다운받을 수 없었다.
![악성코드가 발견된 office-theme[.]com 접속 화면](https://framerusercontent.com/images/JSHX5DKDY1VRBxuSusOyqsTEA.png)
caption - 악성코드가 발견된 office-theme[.]com 접속 화면
다운받을 수 있는 파일 중 bin 확장자인 파일은 docx 파일로, VBA 매크로가 삽입된 악성코드이다. 총 4개의 docx 파일이 존재하고 미끼 파일은 상이하지만 모두 동일한 악성코드를 생성한다.
2.2. Comebacker 드로퍼
docx 파일들은 추가 악성코드와 미끼 파일을 생성하고 실행하는 드로퍼이다.
docx 파일에 삽입된 VBA 매크로는 olevba를 사용해 추출하였다.

caption - olevba를 사용하여 추출한 VBA 매크로 코드
VBA 매크로는 docx 파일이 실행되었을 때, 16진수 문자열로 저장된 로더 악성코드와 미끼 문서를 복호화해 저장한다. 로더 악성코드와 미끼 문서 파일 경로는 아래와 같다.
로더 악성코드: C:\ProgramData\WPSOffice\wpsoffice_aam.ocx
미끼 문서: C:\ProgramData\Document\EDGE_Group_Interview_NDA.docx
복호화 과정은 xor과 bitswap으로 이루어지며, 복호화 스크립트는 “부록 C. Comebacker 드로퍼 복호화 스크립트” 참고 바란다.
이후 로더 악성코드를 LoadLibraryA 함수로 호출하고, 미끼 문서를 실행한다. 확인된 미끼 문서 내용은 총 4개로, Edge Group을 사칭한 문서 1건, 인도 공과 대학교인 IIT Kanpur를 사칭한 문서 2건, 에어버스를 사칭한 문서 1건이 존재한다.
사칭한 단체가 모두 항공 우주 분야에 연관된 단체이며 미끼 문서의 내용이 모두 항공 우주 분야와 관련 있다는 점을 통해 공격자의 목적은 항공 우주 분야에 대한 정보 확보일 것으로 짐작할 수 있었다.

caption - Guest_Lecture_Invitation_Format_IITK.docx의 내용

caption - Airbus_C295_Integration_Document_for_TASL.docx의 내용
2.3. Comebacker 1차 로더 – wpsoffice_aam.cox
자기 자신에 존재하는 암호화된 악성코드를 복호화하고 실행하는 로더 악성코드이다. 암호화된 악성코드는 복호화 이후 zlib으로 압축 해제된다.
먼저 chacha20 알고리즘으로 암호화된 악성코드를 복호화하고 초기 카운터 값으로는 1을 사용한다. 이 외에 사용되는 key와 iv는 아래와 같다.
key: ad9c5aca9977d04c73be579199a827049b6dd9840091ffe8e23acc05e1d4a657
iv: edc9ce049daeba35b8687740
counter: 1
복호화 스크립트는 “부록 C. Comebacker 1차 로더 복호화 스크립트” 참고 바란다.
복호화 결과물을 zlib 압축 해제하면 최종적으로 악성코드 데이터를 확인할 수 있고, 악성코드 경로는 아래와 같다.
악성코드 경로: C:\ProgramData\USOShared\USOPrivate.dll

caption - 악성코드 복호화 및 USOPrivate.dll 생성 루틴
“C:\ProgramData\USOShared\USOPrivate.dll”를 정상적으로 생성하면, USOPrivate.dll의 LoadMimi 함수를 호출하는 LNK 파일을 생성한다. LNK 파일을 생성하기 위해 실행되는 명령어는 아래와 같다.
cmd.exe /C powershell -Command "$s = (New-Object -COMWScript.Shell).CreateShortcut('C:\\ProgramData\\USOShared\\Micro.lnk'); $s.TargetPath = 'C:\\Windows\\System32\\rundll32.exe'; $s.Arguments = '\"[USOPrivate.dll 경로]\" LoadMimi \"C:\\Windows\\System32\\cmd.exe\"'; $s.Save()"
이후 생성된 LNK 파일을 시작 프로그램 폴더로 복사하여 지속성을 확보하고, rundll32를 이용해 USOPrivate.dll에서 LoadMimi 함수를 호출한다.
2.4. Comebacker 2차 로더 – USOPrivate.dll
자기 자신에 존재하는 암호화된 Comebacker 악성코드를 복호화하여 메모리에서 실행하는 로더 악성코드이다.
복호화 알고리즘은 wpsoffice_aam.ocx와 동일한 chacha20으로 사용되는 key와 iv, 카운터 값도 동일하다.
key: ad9c5aca9977d04c73be579199a827049b6dd9840091ffe8e23acc05e1d4a657
iv: edc9ce049daeba35b8687740
카운터 값: 1

caption - Comebacker 악성코드 복호화 루틴
복호화 이후 zlib 압축 해제하는 과정까지 wpsoffice_aam.ocx와 동일하다. Comebacker 악성코드는 메모리에 로드되어, GetWindowSizedW 함수에 “1282”를 전달하여 호출한다.

caption - Comebacker GetWindowSizedW 함수 호출 루틴
2.5. Comebacker
GetWindowSizedW 함수가 호출되면 먼저 “[랜덤 영어 또는 숫자 10글자][인자 값(1282)]64” 형식으로 ID를 생성한다.

caption - ID 생성 루틴
이후 C&C 서버 초기 접속을 시도한다. C&C 서버 주소는 아래와 같다.
hxxps://hiremployee[.]com
2.5.1. C&C 서버 통신
C&C 서버와의 통신은 HTTPS를 사용하며, 송신 데이터는 AES-128-CBC로 암호화된 후 base64로 인코딩된다. 이때 사용되는 암호화 key와 iv는 동일하다.
암호화 key 및 iv: x!P<&}mjH2YHRQ',

caption - AES 암호화 루틴
C&C 서버 수신 데이터 또한 base64 디코딩 이후 AES-128-CBC로 복호화된다. 복호화에 사용되는 key와 iv는 암호화에 사용된 것과 동일하다.
복호화 스크립트는 “부록 C. Comebacker C&C 서버 송수신 데이터 복호화 스크립트” 참고 바란다.
2.5.2. 초기 접속
C&C 서버 초기 접속 시, 먼저 아래 형식의 메시지를 생성하고 전송한다. 가독성을 위해 &를 기준으로 구분하였다.
[랜덤 영어 2글자]=[랜덤 영어 10글자]&
[랜덤 영어 5글자]=[base64 인코딩 된 ID 값]&
[랜덤 영어 4글자]=&
[랜덤 영어 6글자]=0&
[랜덤 영어 6글자]=[base64 인코딩된 현재 시간의 길이]&
[랜덤 영어 6글자]=[base64 인코딩된 현재 시간]&
[10글자 이내의 랜덤 영어]=[20글자 이내의 랜덤 영어]
이에 대한 C&C 서버 응답은 아래와 같다.
[16진수 숫자 4글자] [16진수 숫자 1글자] [base64 인코딩 된 메시지 길이] [base64 인코딩 된 메시지]
C&C 서버 응답 데이터 중에 숫자와 메시지에 따라 아래와 같은 행위를 수행한다.
caption - C&C response info
위 표에 나열된 경우 외에 메시지는 아래와 같이 정해진 형식을 따른다.
[명령 코드]|[암호화된 파일 크기]|[실행 함수 이름]|[실행 인자]|[암호화된 파일 MD5 해시]
위 조건을 만족하는 메시지를 받을 경우, C&C 서버에서 암호화된 파일을 다운받아 실행한다.
2.5.3. 파일 다운로드 및 실행
C&C서버에서 암호화된 파일을 다운받으면 먼저 암호화된 파일의 MD5 해시가 앞서 수신한 해시와 동일한지 검사한다. 만약 해시가 동일하지 않으면 초기 접속에서 “디코딩된 메시지가 0인 경우”와 같은 행위를 한다.

caption - md5 해시 비교 루틴
해시가 동일하면 암호화된 파일을 복호화한다. 복호화 알고리즘은 wpsoffice_aam.ocx와 동일한 chacha20으로 사용되는 key와 iv, 카운터 값도 동일하다.
key: ad9c5aca9977d04c73be579199a827049b6dd9840091ffe8e23acc05e1d4a657
iv: edc9ce049daeba35b8687740
카운터 값: 1

caption - chacha20 복호화 루틴
복호화된 파일은 메모리에 로드되어 초기 접속 시에 받았던 실행 함수 이름과 실행 인자를 전달하여 실행된다. 이후 실행 결과를 C&C 서버로 전송하고 다시 초기 접속을 시도한다.
분석 당시 C&C 서버에서 추가 파일을 배포하지 않아 다운받는 파일의 기능은 확인할 수 없었다.
3. 추가 악성코드 확보 및 분석
바이러스 토탈 Relation 기능을 통해 C&C 서버(hxxps://hiremployee[.]com)의 응답과 HTML 해시가 동일한 응답을 보내는 URL이 존재하는지 확인하였다. 그 결과 새로운 C&C 서버 도메인인 birancearea[.]com을 찾았다.

caption - 새로운 C&C 서버 도메인
birancearea[.]com은 2025년 3월에 활성화된 것으로 확인되었으며, 해당 C&C 서버와 통신하는 Comebacker 로더 악성코드 해시는 아래와 같다.
f2b3867aa06fb38d1505b3c2b9e523d83f906995dcdd1bb384a1087b385bfc50
3.1. Comebacker 1차 로더
위 과정에서 확인한 Comebacker 로더 악성코드는 DLL 파일로, 2025년 3월에 처음 바이러스 토탈에 업로드되었으며 2024년 PyPI 패키지에 삽입되어 배포된 Comebacker 로더 악성코드의 HC256 구현 및 사용 방식, 복호화된 악성코드 실행 코드가 유사하다.
악성코드 실행 인자 값이 “9Ez6THDirL6Zye4”가 아닌 경우 실행을 종료하는 코드가 있는 것으로 보아 해당 악성코드를 실행하는 상위 단계 악성코드가 존재하는 것을 유추할 수 있었다. 그러나 상위 단계 악성코드를 확보하지 못하여 어떻게 실행되는지는 확인할 수 없었다.

caption - 실행 인자 검사 루틴
실행 인자가 동일하면 자기 자신에 존재하는 암호화된 악성코드를 복호화하고 압축을 해제하여 “C:\ProgramData\USOShared\USOInfo.dat”로 저장한다.
복호화에 사용되는 알고리즘은 HC256이고, key와 iv는 동일하다. 2024년 PyPI 패키지에 삽입되어 배포된 Comebacker 로더 악성코드에서도 key와 iv가 동일한 데이터이고 HC256을 사용하는 것을 확인할 수 있었다.
key, iv: LH*x239udC<*sd_Sej%lOa0$&ujHl(.R

caption - 새로 확인한 Comebacker 로더 악성코드 HC256 루틴

caption - 2024년 PyPI 패키지에 삽입되어 배포된 Comebacker 로더 악성코드 HC256 루틴
복호화 스크립트는 “HC256 복호화 스크립트” 참고 바란다.
복호화 및 압축 해제가 완료되면 rundll32를 이용해 GetSysStartTime 함수를 호출한다. 이때 실행 인자로 “dfgdfg”와 “G3z!X97k7QrwG”를 전달한다.

caption - USOInfo.dat 실행 루틴
3.2. Comebacker 2차 로더 - USOInfo.dat
먼저 두 번째 실행 인자 값이 “G3z!X97k7QrwG”인지 검사하여 동일하지 않은 경우 실행을 종료한다.
동일하면 자기 자신에 존재하는 암호화된 악성코드를 복호화하고 압축을 해제한다. 복호화에 사용되는 알고리즘은 HC256이고, key와 iv는 동일하다.
key, iv: 6w6ZT9|a-0}s$@;(@&#jPVC4o+V?1IU%

caption - 실행 인자 확인 및 복호화 루틴
복호화 및 압축 해제가 완료되면 메모리에 로드하여 GetWindowSizedW 함수에 “3718”을 전달하여 실행한다. 이렇게 실행되는 악성코드는 Comebacker로, 행위는 “악성코드 분석 - Comebacker”에서 설명한 것과 동일하다.
4. 공격의 변화
4.1. 복호화 과정
2021년 구글 Threat Analysis Group 글에서 보고된 Comebacker 악성코드는 RC4 또는 key와 iv가 동일한 HC256을 통해 암호화된 악성코드를 복호화하였다.

caption - Google, Microsoft 보고서 a75886b016d84c3eaacaf01a3c61e04953a7a3adf38acf77a4a2e3a8f544f855 복호화 루틴
2024년 PyPI 패키지에 삽입되어 배포된 Comebacker 악성코드와 2025년 3월에 유포된 것으로 추정되는 Comebacker 악성코드는 key와 iv가 동일한 HC256을 통해 암호화된 악성코드를 복호화한다.

caption - jpcert 보고서 pycryptoenv로 유포된 comebacker 악성코드 복호화 루틴
이번에 새롭게 확인된 Comebacker 악성코드는, xor과 bit swap을 이용한 커스텀 암호와 key와 iv가 동일한 chacha20을 통해 암호화된 악성코드를 복호화한다.

caption - 신규 Comebacker 악성코드 복호화 루틴
4.2. 통신 암호화
2021년 구글 Threat Analysis Group글에서 보고된 Comebacker 악성코드와 2024년 PyPI 패키지에 삽입되어 배포된 Comebacker 악성코드는 C&C 서버 송수신 데이터가 평문이다.

caption - jpcert - PyPI 패키지에 삽입되어 배포된 Comebacker 악성코드
2025년 3월 이후 확인된 Comebacker 악성코드는 AES-CBC-128을 이용하여 송수신 데이터를 암, 복호화한다.

caption - 신규 Comebacker 악성코드 AES 루틴
4.3. 유포 과정
처음 구글 Threat Analysis Group 글에서 보고된 Comebacker 악성코드는 보안 연구원을 대상으로 취약점 분석 협력 요청을 가장한 메시지를 통해 유포되었다. 공격자는 악성코드가 삽입된 Visual Studio 프로젝트를 보내 악성코드를 실행하도록 유도하였다. 이 외에도 Internet Explorer 0day를 이용한 공격을 수행하였다. 0day 공격 관련 정보는 엔키화이트햇 연구원이 확인하였고, 블로그 글에 공개하였다.

caption - 공격자 활동 (출처 : google - New campaign targeting security researchers)
2024년 PyPI 패키지에 삽입되어 배포된 Comebacker 악성코드는, 타이포스쿼팅 기법을 통해 불특정 다수가 악성코드를 다운받아 실행하도록 유도하였다.

caption - Comebacker 악성코드가 삽입된 pycryptoconf (출처 : jpcert - New Malicious PyPI Packages used by Lazarus)
2025년 3월에 유포된 것으로 추정되는 Comebacker 악성코드는 현재 어떤 방식으로 유포되었는지 확인되지 않았다.
오픈 디렉토리에서 확인된 최신 악성코드 또한 공격 사례 및 유포 과정이 공개되지 않았지만 미끼 문서 내용을 통해 유포 과정을 유추할 수 있었다. 확인된 미끼 문서는 Edge Group을 사칭한 문서 1건, 인도 공과 대학교인 IIT Kanpur를 사칭한 문서 2건, 에어버스를 사칭한 문서 1건 총 4건으로, 미끼 문서에서 공통적으로 확인된 정보는 파일 경로, 본문에 조직명과 같은 명확한 키워드가 존재하는 것이다. 이는 특정 기관, 인물을 대상으로 제작된 미끼 문서로 볼 수 있고, 소수 표적을 노린 스피어 피싱 유포 정황과 부합하다.
5. 마치며
본 글에서는 Lazarus가 사용하는 Comebacker 악성코드 신규 변종을 분석하고, 공격 방식과 변화 양상을 정리하였다. 공격자는 docx 문서에 악성 VBA 매크로를 삽입해 사용자가 문서를 열면 미끼 문서가 나옴과 동시에 로더 악성코드가 페이로드를 복호화 및 압축 해제 후 메모리에서 실행하도록 구성하였다.
특히 미끼 문서의 경우 Edge Group 사칭 문서 1건, 인도 공과 대학교 IIT Kanpur 사칭 문서 2건, 에어버스 사칭 문서 1건 총 4건으로, 각기 다른 키워드가 포함된 것을 알 수 있다. 또한 파일 경로와 본문에 조직명과 같은 명확한 키워드가 존재하여 특정 기관, 인물을 대상으로 제작된 미끼 문서로 추측된다. 이 정황에 비추어 유포 방식은 스피어 피싱일 가능성이 높다.
현재까지 공격 사례가 보고되지 않았지만 C&C 서버가 활성화되어 있는 점을 고려하면 공격자가 언제든 공격을 시도할 가능성이 있어 각별한 주의가 필요하다.
6. 부록
부록 A. MITRE ATT&CK
caption - MITRE ATT&CK
부록 B. IOCs
sha256
b7d625679fbcc86510119920ffdd6d21005427bf49c015697c69ae1ee27e6bab - docx file
046caa2db6cd14509741890e971ddc8c64ef4cc0e369bd5ba039c40c907d1a1f - docx file
14213c013d79ea4bc8309f730e26d52ff23c10654197b8d2d10c82bbbcd88382 - docx file
b357b3882cf8107b1cb59015c4be3e0b8b4de80fd7b80ce3cd05081cd3f6a8ff - docx file
7e61c884ce5207839e0df7a22f08f0ab7d483bfa1828090aa260a2f14a0c942c - wpsoffice_aam.cox
c4a5179a42d9ff2774f7f1f937086c88c4bc7c098963b82cc28a2d41c4449f9e - USOPrivate.dll
f2b3867aa06fb38d1505b3c2b9e523d83f906995dcdd1bb384a1087b385bfc50 - Comebacker Loader
96b973e577458e5b912715171070c0a0171a3e02154eff487a2dcea4da9fb149 - USOInfo.dat
C&C
hxxps://birancearea[.]com/adminv2
hxxps://hiremployee[.]com
Open Directory C&C
Office-theme[.]com
aes key
x!P<&}mjH2YHRQ',
chacha20 key
ad9c5aca9977d04c73be579199a827049b6dd9840091ffe8e23acc05e1d4a657
HC256 key
LH*x239udC<*sd_Sej%lOa0$&ujHl(.R
6w6ZT9|a-0}s$@;(@&#jPVC4o+V?1IU%
부록 C. 복호화 스크립트
Comebacker 드로퍼 복호화 스크립트
Comebacker 1차 로더 복호화 스크립트
Comebacker C&C 서버 송수신 데이터 복호화 스크립트
HC256 복호화 스크립트
Popular Articles








