[위협 분석] 건강검진 안내 문서로 위장한 악성코드

1. 개요

2025년 10월 말, 건강검진 안내 문서로 위장한 JSE 파일이 조직적인 APT 공격에 활용되었으며, 분석 결과 북한 Kimsuky 조직에 의한 공격으로 판단됩니다. Kimsuky는 북한과 연계된 것으로 추정되는 APT(Advanced Persistent Threat) 그룹으로, 주로 정보 수집과 관련된 각종 스파이 활동을 수행합니다.

악성 유포·동작 개요

공격자는 압축 파일에 숨긴 PDF 문서로 위장한 JSE 파일을 통해 실행을 유도하며, 실행 시 WScript.exe로 난독화된 JavaScript 코드를 실행합니다. 이후 사용자를 안심시키기 위하여 건강검진 안내서.pdf 정상 문서를 실행하지만, 백그라운드에서는 악성 PE 데이터가 rundll32.exe 프로세스를 이용해서 로드됩니다. 로드된 프로세스는 C2서버와 1분 주기로 통신 시도하며, 특정 조건 만족 시 추가 악성 행위를 수행합니다.

악성코드 도식.pptx

2. 상세 분석

2-1. 초기 감염 및 악성 행위

실행 유도

  • 압축파일: 건강검진 안내서.alz

실행 트리거

  • PDF 문서로 위장한 JSE 파일(건강검진 안내서.pdf.jse)이 존재하며, 건강검진 안내 내용 확인을 위해 클릭을 유도
  • 실행 시 WScript.exe 프로세스를 통해 난독화된 JavaScript 코드가 실행

사용자 속임 + 추가 데이터 준비

  • 화면에는 건강검진 안내 내용의 건강검진 안내서.pdf 정상 문서를 띄워 사용자를 안심시킴
  • 백그라운드에서 내장된 데이터bEyjSIpZvbJpjVv9.a9oc를 특정 경로에 저장

복호화 및 후속 악성 행위

  • bEyjSIpZvbJpjVv9.a9occertutil.exe 프로세스를 이용해서 Base64 디코딩을 2회 진행
  • hkNlPHP61rvE0T7J.lpxQ PE 데이터가 생성되며, rundll32.exe 프로세스를 이용해서 로드
  • 최종적으로 http://load.samework.o-r.kr/index.php C2 서버와 통신 시도하며, 특정 조건 만족 시 다양한 악성 행위 수행

2-2. C2 통신 프로토콜

추가 스테이지

  • 로드된 PE 데이터는 http://load.samework.o-r.kr/index.php C2 서버와 1분 주기로 통신 시도하며, 특정 응답 값을 대기
  • 1번, 2번, 3번 채널이 존재하고 번호 순으로 통신을 시도하며, 최종 단계까지 실행됐을 때 총 3개의 채널에 통신 시도를 합니다. 다음 채널로 통신 시도하기 위해서는 요구 조건이 필요합니다. 요구 조건이 맞지 않는다면, 1번 채널에만 1분 주기로 통신 시도합니다.

C2 통신 방식

  • 1번 채널
    • 1분 주기로 C2 통신 시도 및 인증
    • 서버 응답 값이 “live” 데이터면 추가 악성 행위 수행 후 2번 채널 통신 시도
  • 2번 채널
    • 수집된 정보(로그인 계정, 컴퓨터 이름, 관리자 권한 식별, systeminfo, ipconfig /all)를 C2 서버로 AES-128 + Base64 인코딩 후 전송
    • 서버 응답 값이 “ok” 데이터면 3번 채널 통신 시도
  • 3번 채널
    • 추가 페이로드 요청
    • 추가 페이로드 존재 시 RC4 알고리즘으로 복호화하여 로드 후 ‘hello’ 함수 호출
채널용도알고리즘키 값C2 요구 조건
11분 주기로 통신 시도하며, 추가 행위를 위한 대기--live
2수집된 정보 암호화 후 업로드 및 추가 행위 대기AES-128 (CBC 스타일) + Base640x6C 0x63 0x66 0x61 0x64 0x73 0x65 0x52 0x65 0x64 0x41 0x47 0x00 0x75 0x4E 0x67ok
3암호화된 PE 데이터 존재 시 복호화 및 로드RC40x23 0x52 0x73 0x66 0x73 0x65 0x74 0x72 0x61 0x57 0x23 0x40 0x45 0x73 0x66 0x65 0x73 0x67 0x73 0x67 0x41 0x4A 0x4F 0x50 0x6A 0x34 0x65 0x6D 0x6C 0x3B-

난독화 문자열 복호화 방식

로드된 hkNlPHP61rvE0T7J.lpxQ PE 데이터에서 악성 행위에 활용되는 문자열은 난독화 되어있으며, 공격자는 두 가지 방식으로 정의했습니다. 결국 키 값은 아래 표와 같이 난독화 원본 Hex 값 첫번째 인덱스를 키 값으로 사용하는 유형을 보이고 있으며, 이를 통한 복호화 연산 수식에 의해 복호화 결과를 알 수가 있는 구조로 파악됩니다.

난독화 원본난독화 원본 Hex 값키 값 (E[0])복호화 연산복호화 결과용도
1g[A@@W[yUVT_0x31 0x67 0x5B 0x41 0x40 0x40 0x57 0x5B 0x79 0x55 0x56 0x54 0x5F0x31 ('1')D[i] = E[i] ^ (E[0] + i) * i=1 부터VirtualAlloc동적 API 이름 은닉
:\ZUQ0x3A 0x5C 0x5A 0x55 0x510x3A (':')D[i] = E[i] ^ (E[0] + i) * i=1 부터failC2 응답 실패 플래그
-v25.m128i_i64[0] = 0x7300670074006D v25.m128i_i64[1] = 0x6B006D006A0072 v26 = 0x70006500330024 v27 = 0x00000070-각 2바이트 단위로 w[i] = w[i] - 4 수행 (예: 0x006D ('m') - 4 = 0x0069 ('i') 0x0074 ('t') - 4 = 0x0070 ('p') 0x0067 ('g') - 4 = 0x0063 ('c')….)ipconfig /all시스템 정보 명령을 실행하기 위한 난독화 문자열

2-3. 추가 악성 PE 실행

3번 채널과 통신 후 암호화된 PE 데이터를 가져오면, 내장된 30바이트 RC4 키 값을 이용하여 복호화 후 추가적인 악성 DLL을 로드하며 ‘hello’ 함수를 호출합니다. 공격자가 정의한 ‘hello’ 함수 기능에 따라서 다양한 행위를 할 것으로 추정되지만, 분석 시점에는 C2 서버와 통신 불가하여 추가적인 행위를 확인할 수 없었습니다.

  • RC4 키: 0x23 0x52 0x73 0x66 0x73 0x65 0x74 0x72 0x61 0x57 0x23 0x40 0x45 0x73 0x66 0x65 0x73 0x67 0x73 0x67 0x41 0x4A 0x4F 0x50 0x6A 0x34 0x65 0x6D 0x6C 0x3B

3. IoC

md5

d02be241dda3d4027f6fbd84ac015ca8 건강검진 안내서.alz

903cec93146327414cbc49068c524292 건강검진 안내서.pdf.jse

5f5f868d339aeb58c613fe7eb55e5432 bEyjSIpZvbJpjVv9.a9oc

7d994b591c2d4fafeb3e71278229566e hkNlPHP61rvE0T7J.lpxQ

C2

load.samework.o-r.kr

attach.skycloud.o-r.kr

attach.skyline.r-e.kr

update.alzip.r-e.kr

mail.naverwork.r-e.kr

gwa.wooritg.o-r.kr

mail.naverwork.o-r.kr

image.secuwizvpn.r-e.kr

load.rwbcode.com

rwbcode.com

162.220.11.202

http://load.samework.o-r.kr/index.php

http://load.rwbcode.com/index.php

둘러보기

더보기

[위협 분석] 법원 등기 수신 사칭 스캠

2025년 10월 현재, 법원등기 안내를 사칭한 사회공학 기반 스캠(Scam) 공격이 국내에서 빈번하게 관찰되고 있습니다. 이번 공격은 기존 이메일, 메신저, SNS 등 디지털 미디어를 통한 피싱 유포 방식이 아닌, 음성 통화 기반의 사용자 응답 유도형 공격(Social Engineering)이라는 점에서 특징적입니다.

2025-10-23