개요

▲ APT37 경찰 공무원 사칭 공격 사례 흐름도 (출처: 지니언스)
지니언스 시큐리티 센터(GSC)는 북한 연계 위협 그룹 APT37(Reaper)이 딥페이크 사칭, 항공 e-티켓, 국방·경찰 공무원 사칭 등 다양한 사회공학 테마를 활용해 스피어피싱 캠페인을 수행하고 있음을 확인했다. 최종 페이로드는 .cat 확장자로 위장한 Python 컴파일 백도어로, 예약 작업을 통해 지속성을 유지하며 원격 명령을 실행한다.
위협 행위자 프로파일
| 항목 | 내용 |
|---|---|
| 그룹명 | APT37 (Reaper, ScarCruft) |
| 배후 | 북한 국가보위성 (MSS) |
| 주요 표적 | 한국 방산·연구·정부 관련 인물 |
| 귀속 근거 | “Lailey” 메타데이터(2022~2026), PHP 웹쉘 시그니처 재사용, Cafe24·프랑스 도메인 인프라, 공유 C2 IP |
공격 흐름
-ExecutionPolicy Bypass 플래그로 정책 우회 후 BAT 파일 드롭 및 실행curl.exe로 python-3.10.0-embed-amd64.zip 다운로드 →C:\Users\Public\Music\MusicLibrariesPackage\ 에 설치,pythonw.exe → codeflush.exe 로 이름 변경MicrosoftMusicLibrariesPackageTaskMachine 작업 등록, 1분 간격 반복 실행codeflush.exe settingenv.cat — Python 컴파일 백도어 실행 후 C2 서버와 통신 개시핵심 기법 분석

▲ 항공 e-티켓, 연구행사, 국방·경찰 사칭 등 다양한 스피어피싱 사례 화면 (출처: 지니언스)
1. 배치 파일 환경변수 치환 난독화
배치 파일 내 명령어를 환경변수 문자 조각으로 분해하는 방식이다. %var:~offset,length% 문법을 활용해 실제 실행할 명령어를 런타임에 재조합한다. 정적 분석 도구와 시그니처 기반 탐지를 우회하는 데 효과적이다.

▲ LNK 파일 내부 환경변수 치환 난독화 명령 (출처: 지니언스)

▲ 난독화 해제 후 복원된 PowerShell 명령 및 curl.exe 복사 작업 (출처: 지니언스)
2. Python 바이트코드 .cat 위장
최종 페이로드 settingenv.cat은 실제로는 Python 3.10 컴파일 바이트코드(.pyc) 파일이다. 매직 넘버 6F 0D 0D 0A로 식별된다. .cat(Windows 보안 카탈로그) 확장자를 사용해 보안 솔루션의 의심을 줄인다.
내부 추가 난독화:
chr()문자 연결로 문자열 동적 생성[::-1]문자열 역순 변환getattr(__builtins__, "__import__")를 통한 모듈 동적 로딩

▲ settingenv.cat 파일 헥스 헤더 — Python 3.10 바이트코드 매직 넘버(6F 0D 0D 0A) 확인 (출처: 지니언스)

▲ 디컴파일된 Python 바이트코드 초기 영역 — chr() 문자 연결 난독화 (출처: 지니언스)

▲ 복원된 C2 URL, HTTP 헤더, 인코딩 파라미터 (출처: 지니언스)
3. LOLBins 악용
curl.exe를 시스템 경로가 아닌 임시 경로로 복사해 실행한다. 기본 제공 도구를 악용하여 추가 악성 바이너리 다운로드 없이 페이로드를 가져온다.
settingenv.cat 백도어 상세
타입: Python RAT (원격 접근 트로이목마)
C2 통신 구조:
| 단계 | 내용 |
|---|---|
| 클라이언트 식별 | os.getlogin() 기반 쿠키 토큰 생성 |
| 명령 수신 | kmot.co[.]kr/board.php HTTP GET |
| 수신 데이터 처리 | Base64 디코드 후 exec() 로 동적 실행 |
| 결과 전송 | io.StringIO로 stdout 캡처 → Base64 인코딩 후 HTTP POST |
지속성:
- 예약 작업명:
MicrosoftMusicLibrariesPackageTaskMachine - 실행 간격: 1분
- 실행 명령:
codeflush.exe settingenv.cat
인프라 연계 분석

▲ APT37 캠페인 간 인프라 연계 관계도 (출처: 지니언스)
APT37은 수년간 동일한 인프라 패턴을 재사용한다.
| 연도 | 도메인 | IP | 악성코드 |
|---|---|---|---|
| 2020 | attiferstudio[.]com | 121.78.88[.]93 | Chinotto |
| 2021 | udcontest[.]com | 114.207.246[.]156 | PHP 웹쉘 |
| 2022 | hanainternational[.]net | 121.78.88[.]92 | PHP 웹쉘 변형 |
| 2026 | choisy[.]fr | 51.158.21[.]1 | Python 백도어 |
탐지 권고

▲ EDR을 통해 탐지된 의심스러운 LNK 파일 실행 모습 (출처: 지니언스)

▲ PowerShell과 curl.exe를 통한 C2 접속 시도 EDR 탐지 화면 (출처: 지니언스)
- LNK 실행 — 압축 파일 컨텍스트에서 LNK 파일 실행 탐지
- PowerShell 정책 우회 —
-ExecutionPolicy Bypass플래그 모니터링 - 비정상 경로 curl 실행 — 시스템 디렉터리 외 curl.exe 복사·실행 탐지
- Python 패키지 다운로드 — 공용 경로(
C:\Users\Public\) 내 python zip 다운로드 탐지 - 의심 예약 작업 —
Microsoft*접두사 작업 중 비시스템 경로 실행 탐지 - 비표준 확장자 실행 —
.cat,.bat등 비시스템 경로 실행 탐지