
이스트시큐리티 대응센터(ESRC)에서 운영 중인 APT TDS(Threat Detection System)에서는 최근 이력서 및 대북 정책 문서로 위장한 악성 LNK(바로가기) 파일의 유포 정황을 포착했습니다.
TDS에서 탐지된 악성 LNK 파일은 총 2종으로, 각각 구직자의 자기소개서와 북한 관련 정책 문서로 위장하고 있습니다.


분석 결과 해당 LNK 파일은 북 배후 공격그룹인 김수키(Kimsuky) 그룹의 전형적인 LNK 기반 공격방식을 따르고 있어 이번 공격 역시 해당 그룹의 소행으로 판단됩니다.
다만 C2 서버로 깃허브(GitHub)를 활용하던 과거 방식과 달리 이번 공격에서는 깃랩(GitLab) 플렛폼을 사용하였습니다.
두 파일의 내부 공격 구조와 최종 페이로드는 동일하며, LNK 파일 실행 시 백그라운드에서 다단계 파워셸(PowerShell) 스크립트가 실행되어 시스템 정보를 수집하고 암호화하여 외부로 전송합니다.
1. 최초 감염 벡터 - LNK 파일
사용자가 정상 문서 파일로 오인하여 LNK 파일을 실행하면 LNK 내부의 난독화 된 파워셸 명령이 복호화 된 후 %APPDATA% 경로에 firefox.ps1 이름으로 저장되어 실행됩니다.

2. 1차 드롭퍼 (firefox.ps1) - 탐지 회피와 지속 감염 환경 구성
Firefox.ps1 파일은 공격의 초기 준비를 모두 담당하는 핵심 스크립트로서 실행 시 다음 네 가지 동작을 순차적으로 수행합니다.
| 파일명 | 변경 파일명 | 폴더 경로 | 행위 |
| docx.pdf | 이소연 자기소개서.pdf | %TEMP% | 디코이 PDF |
| Yahoo.rtf | Yahoo.jse | %AppData%\Microsoft\Windows\Templates | 지속성 유지 스크립트 |
| Yahoo.jse | facebook.ps1 | %AppData%\Microsoft\Windows\CloudStore | 2차 다운로더 |
| Ajobcall.txt | news.ps1 | %AppData% | 최종 페이로드(정보탈취) |
[표 1] 단계별 생성 파일 목록
2-1) 미끼 PDF 파일 표시
GitLab 저장소에서 미끼용 docx.pdf 를 내려받아 %TEMP% 경로에 악성 LNK 파일에 따라 '이소연 자기소개서.pdf’ 또는 북한대외전략분석_및_남북관계개선방안.pdf 이름으로 저장하여 실행됩니다.
사용자에게는 정상적인 PDF 문서파일 보여주며 의심을 피합니다.


2-2) 지속성 확보 - 스케줄러 등록
GitLab 저장소에서 Yahoo.rtf 파일을 다운로드 하여%AppData%\Microsoft\Windows\Templates 경로에 Yahoo.jse 이름으로 저장한 뒤, Yahoo.jse 악성 스크립트 파일이 반복 실행되도록 다음과 같은 이름으로 스케줄러를 등록합니다.

2-3) 2차 다운로더 설치 - facebook.ps1 생성
Yahoo.jse 스크립트 내 인코딩된 문자열을 디코딩하여 메모리 내에서 2차 파워셸 스크립트를 구성한 뒤 %AppData%\Microsoft\Windows\CloudStore\ 경로에 facebook.ps1 이름으로 저장합니다.
2-4) 최종 페이로드(news.ps1) 즉시 실행 - news.ps1 최초 실행
GitLab 저장소에서 암호화된 형태로 저장된 ajobcall.txt 파일을 내려받아 복호화한 뒤, news.ps1이라는 이름으로 저장하고 즉시 실행합니다. 실행이 완료되면 스크립트 자신을 삭제하여 흔적을 지웁니다.
3. 2차 다운로더 (facebook.ps1) - 35분마다 반복되는 정보탈취
facebook.ps1은 2단계에서 등록된 예약 작업에 의해 35분 주기로 반복 실행되는 2차 다운로더로써 GitLab 저장소에서 암호화된 scall.txt 파일을 다운받아 복호화한 뒤 news.ps1로 저장하고 실행합니다.

보안 솔루션의 탐지를 우회하기 위해 스크립트 내부 코드 일부를 분리된 조각으로 나눠 저장하고 실행 시점에 조립하는 방식을 사용합니다.
이를 통해 공격자는 GitLab 저장소의 scall.txt 파일만 교체하면, 피해자 시스템에서 실행되는 악성코드를 언제든지 원격으로 업데이트할 수 있습니다.
4. 최종 페이로드(news.ps1) - 정보탈취형 악성코드
2단계(firefox.ps1)와 3단계(facebook.ps1) 파워셸 스크립트는 모두 최종적으로 동일한 정보탈취 악성코드인 news.ps1을 실행합니다.
해당 파워셸 스크립트는 정보수집 → 암호화 → 유출 → 흔적 삭제 순서로 동작하며, 실행 후 어떠한 흔적도 남기지 않도록 설계되었습니다.
4-1) 감염 시스템 식별 정보 수집
Windows에 내장된 시스템 관리 기능인 WMI(Windows Management Instrumentation)를 이용해 감염 시스템에서 다음과 같은 정보를 수집합니다.
수집된 정보는 다음과 같은 규칙으로 파일명이 생성되어 %AppData% 경로에 저장됩니다.

4-2) 수집 데이터 암호화
수집된 정보는 외부로 전송하기 전에 AES-256 방식으로 암호화합니다. 수집된 데이터를 암호화하여 전송하기 때문에, 네트워크 보안 장비가 트래픽 내용을 확인해도 악성 행위임을 판별하기 어렵습니다.
4-3) GitLab API를 통한 데이터 유출
암호화된 파일을 Base64로 인코딩한 뒤 공격자가 미리 설정해 둔 GitLab API 토큰을 이용해 공격자 저장소로 전송합니다.

4-4) 흔적 삭제
전송이 완료되면 수집된 원본 파일, 암호화된 업로드 파일, 실행된 스크립트 자신까지 모두 강제 삭제합니다. 이는 감염 시스템에 남는 흔적을 최소화하여 사용자가 감염 사실을 인지하기 어렵게 만들고, 사후 추적을 방해하기 위한 목적으로 볼 수 있습니다.
이번 공격에서 확인된 주요 공격 특징을 정리하면 다음과 같습니다.
이번 공격은 .pdf.lnk와 같은 이중 확장자로 정상 문서처럼 위장하고, 클릭 시 실제 정상 문서 파일을 함께 보여주는 미끼 파일 기법을 활용하여 사용자가 감염 사실을 인지하기 어렵게 만듭니다.
또한 합법적인 플랫폼인 깃랩을 C2 서버로 악용해 정상 트래픽으로 위장함으로써 네트워크 보안 장비의 탐지까지 우회하는 정교한 공격입니다.
이러 공격을 예방하기 위해서는 출처가 불분명한 파일의 실행을 자제해 주시고, 특히 윈도우 탐색기의 '파일 확장명 표시' 옵션을 상시 활성화하여, 이중 확장자로 위장한 파일은 실행하지 않도록 각별히 주의하시기 바랍니다.
IoC
| Indicator | Type | Description | Detection Name |
|---|---|---|---|
| 5577fffb5b5acd3771ef9dc696498f1e | MD5 | LNK 파일 | Trojan.Agent.LNK.Gen |
| 302725413076d1aeaee2d7f2b3692646 | MD5 | LNK 파일 | Trojan.Agent.LNK.Gen |
| hxxps[://]gitlab[.]com/arkiler-group/at | gitlab 저장소 | ||
| hxxps[://]gitlab[.]com/kevin-group5101713/ri/hifer | gitlab 저장소 |
| 국세청 세무조사 사칭 피싱 메일을 통해 유포 중인 백도어 악성코드 (0) | 2026.03.24 |
|---|---|
| 베트남 위협행위자의 PyChain 캠페인 : 저작권 경고 이메일로 시작한 글로벌 피싱의 기술적 진화 (0) | 2026.03.17 |
| 가짜 FileZilla 사이트를 이용한 악성코드 유포 (0) | 2026.03.13 |
| 고용노동부 사칭 피싱 유포 사례 분석 - 이메일 도메인 분석까지 수행하는 ‘정밀 타겟형’ 공격 (0) | 2026.02.06 |
| .hta 파일로 유포중인 KimJongRAT 주의! (0) | 2025.11.28 |
댓글 영역