파이썬 기반 백도어를 유포하는 악성 LNK 및 유포 방식의 변화 (Kimsuky 그룹)

파이썬 기반 백도어를 유포하는 악성 LNK 및 유포 방식의 변화 (Kimsuky 그룹)

개요

AhnLab SEcurity intelligence Center(ASEC)은 최근 Kimsuky 그룹의 악성 LNK 파일 유포 방식에서 변화가 발생한 것을 확인했다. 악성 LNK를 통해 최종적으로 파이썬 기반 백도어 또는 다운로더가 실행되는 전체적인 공격 흐름은 이전과 동일하게 유지되고 있다. 그러나 중간 실행 단계에서 기존과는 다른 구조적 변화가 관찰되었다는 점이 특징적이다.

 

구분 과거 유포 방식 최근 유포 방식
초기 실행 LNK → PowerShell → BAT LNK → PowerShell → 디코이·XML·PS1·VBS 생성
중간 단계 BAT 단독 실행 XML → VBS → PS1 → BAT
파일 다운로드 ZIP, 디코이 파일 다운로드 ZIP 파일 다운로드
ZIP 내부 구성 Python 스크립트, Python Interpreter, XML 스케줄러 파일 Python 스크립트, Python Interpreter, XML 스케줄러 파일
최종 실행 XML에 의해 Python 스크립트 실행 → 파이썬 백도어 다운로드 및 실행 XML에 의해 파이썬 백도어 실행
특징 비교적 단순한 실행 구조 중간 단계 다중화 및 실행 흐름 분리

[표 1] 과거와 최근 유포 방식 변화

1. 과거 LNK 유포 방식

1.1 초기 실행

과거에 유포된 LNK 파일의 초기 실행 단계에서는, LNK 파일을 통해 실행된 PowerShell 스크립트가 아래 URL에서 BAT 파일을 다운로드하는 방식으로 동작하였다.

  • URL : hxxps://qugesr[.]online/m/bDw

[그림 1] 악성 BAT 스크립트 파일

 

1.2 중간 단계

BAT 파일이 실행되면 ZIP 파일과 디코이 파일이 다운로드된다. 이후 아래 URL에서 분할된 두 개의 ZIP 파일 조각을 각각 다운로드한 뒤 이를 병합하여 하나의 ZIP 파일로 생성한다. 해당 ZIP 파일 내부에는 Python 스크립트(can.py), Python Interpreter, 그리고 XML 작업 스케줄러 파일(sch.db)이 포함되어 있다. 이후 XML 파일의 내용을 기반으로 Microsoft_Upgrade{10-9903-09-821392134} 이름의 작업 스케줄러가 등록되며, 해당 XML 작업 스케줄러에 의해 Python 스크립트가 실행된다. 이 과정에서 최종 파이썬 백도어 파일이 다운로드된 후 실행된다. 해당 백도어에 대한 상세 분석은 3번 목차에서 다룬다.

 

URL 구분
hxxps://qugesr.online/dwparts_view/view.php?in=comm.part000 ZIP_1
hxxps://qugesr.online/dwparts_view/view.php?in=comm.part001 ZIP_2
hxxps://qugesr.online/dwparts_view/view.php?in=normal 디코이 파일

[표 2] 추가 파일 다운로드

 

 

[그림 2] 정상 디코이 파일

 

2. 최근 LNK 유포 방식

2.1 초기 실행

최근 유포된 LNK 파일인 “이력서(박성민).hwp.lnk” 및 “데이터 백업 및 복구 절차 수립 가이드(참고).lnk”는, 과거에 유포된 사례와 동일하게 PowerShell 스크립트를 실행하며, C:\windirr 경로에 숨김 및 시스템 파일 속성을 가진 폴더를 생성한다. 이는 사용자의 일반적인 파일 탐색 과정에서 해당 경로가 노출되지 않도록 하기 위한 은닉 목적의 행위로 판단된다. 이후 해당 폴더에 LNK가 담고 있던 파일들을 생성 및 실행한다. 생성된 파일들 중에는 정상 디코이 파일이 포함되며, LNK 파일의 파일명을 그대로 사용하는 HWP 문서가 생성된다.

 

이력서(박성민).hwp.lnk의 디코이 파일 데이터 백업 및 복구 절차 수립 가이드(참고).lnk의 디코이 파일

[그림 3] 정상 디코이 파일

 

생성 파일 기능
sch_ha.db xml 작업 스케줄러 파일
11.vbs pp.ps1 실행 파일
pp.ps1 추가 파일 다운로드

[표 3] 파일별 기능

 

2.2 중간 단계

작업 스케줄러 이름을 GoogleUpdateTaskMachineCGI__{56C6A980-91A1-4DB2-9812-5158E7E97388}로 하여 xml 파일을 통해 작업 스케줄러를 생성한다. xml 파일 내부에는 wscript.exe /b “C:\windirr\11.vbs” 명령어를 2025-08-26 15:17부터 시작해서 17분 간격으로 계속 실행하는 작업 스케줄러가 정의돼있다. 작업 스케줄러에 의해 11.vbs 파일이 실행되면 C:\windirr\pp.ps1 파일이 실행된다.

 

[그림 4] 등록된 작업 스케줄러

 

pp.ps1 파일은 C:\Users\Public\Documents\tmp.ini 파일을 생성한 뒤, [표 2]에 기재된 정보를 해당 파일에 저장한다. 공격자는 Dropbox 서비스를 정보 전송용 C2 채널로 사용하였으며, 탈취된 정보는 <userdomain>_<날짜>_info.ini 형식의 파일명으로 업로드된다. 또한, 공격자 Dropbox 계정에 존재하는 zzz09_test.db_sent 파일을 다운로드하여 C:\Users\Public\Music\hh.bat 경로에 저장한 후, cmd.exe /c C:\Users\Public\Music\hh.bat 명령을 통해 이를 실행한다.

 

탈취 정보
userdomain, username, 현재 실행 중인 process 목록, OSVersion, 공인 IP 정보, 백신 정보

[표 4] 탈취 정보

 

[그림 5] pp.ps1 코드 중 일부

 

hh.bat 파일은 아래 URL에서 분할된 두 개의 ZIP 파일 조각을 각각 다운로드한 후 이를 병합하여, %TEMP%\G9081234.zip 경로에 하나의 ZIP 파일로 생성한다. 이후 해당 ZIP 파일을 C:\winii 경로에 압축 해제한다. 압축 파일 내부에는 XML 작업 스케줄러 파일(norton.db)과 파이썬 백도어 파일(beauty.py)이 포함되어 있다.

URL 저장 경로

hxxps://quickcon.store/man/logo.php?au=beauty.part000

C:\winii\part000
hxxps://quickcon.store/man/logo.php?au=beauty.part001 C:\winii\part001

[표 5] 추가 파일 다운로드

 

[그림 6] hh.bat 코드 중 일부

 

최종 파이썬 백도어 파일은 XML 작업 스케줄러 파일을 통해 실행된다. hh.bat 파일은 GoogleExtension{02-2032121-098} 이라는 작업 스케줄러 이름으로 C:\winii\beauty.py 파일을 실행하도록 작업을 등록하며, 이를 통해 파이썬 백도어가 실행된다. 해당 백도어 파일의 구성과 동작 방식은 아래에서 정리한다.

 

3. Python 악성코드

Python 기반의 악성코드는 두 개의 유형으로 확인된다. 외부 서버에서 추가 페이로드를 내려받는 다운로더, 다른 하나는 공격자의 명령을 원격으로 수행하는 백도어이다.

 

3.1 백도어

백도어는 C2 서버인 45.95.186[.]232:8080 “HAPPY” 문자열을 가진 패킷을 전송한다. 이는 감염된 사실을 알리기 위한 목적으로 추정된다. 이후 매직 바이트(0x99 0x0A 0xBD 0x99) 기반의 고정 크기(4096바이트) 커스텀 프로토콜로 통신하며, 명령 코드에 따라 쉘 명령 실행, 드라이브 목록 조회, 파일 업로드/다운로드, 파일 삭제(삭제 전 랜덤 데이터 덮어쓰기), 파일 실행(.exe, .bat, .vbs) 등 다양한 기능을 수행한다.

 

[그림 7] 공격자 명령에 따른 기능 분기
 

 

명령 기능
0100 드라이브 용량 조회
0010 쉘 명령어 실행
0110 디렉터리 목록 조회
0120/0121 파일 업로드
0130/0131 파일 다운로드
0140 파일 삭제
0150 BAT, VBS, EXE 실행
1110 종료

[표 6] 명령에 따른 기능

 

공격자 명령어 관측

감염된 시스템에 공격자가 명령을 전달하는 동작이 확인되었다. 가장 먼저 드라이브 용량을 확인한 뒤, ipconfig로 네트워크 설정을 확인하고, tasklist로 실행 중인 프로세스를 조사했다.

 

시각 명령 의미
2026-02-12 13:00

감염

2026-02-12 13:08 0100 드라이브 용량 조회
2026-02-12 13:09 0010 ipconfig
2026-02-12 13:10 0100 드라이브 용량 조회
2026-02-12 13:10 0010 tasklist
2026-02-12 13:11 0010 ipconfig
2026-02-12 13:11 0010 dir /s C:\

[표 7] 공격자가 전달한 명령어

 

3.2 다운로더

다운로더는 공격자가 운영하는 서버에 접속하여 VBS 및 BAT 파일을 %TEMP% 경로에 저장한 뒤, CREATE_NO_WINDOW(0x08000000) 플래그를 적용하여 콘솔 창 없이 백그라운드로 실행한다. 180초 대기 후 두 파일을 삭제하여 흔적을 제거한다.

 

[그림 8] 파이썬 다운로드 코드 중 일부

 

4. Kimsuky 공격 그룹 특징

1. XML 파일 기반 작업 스케줄러 등록 및 작업명의 유사성

과거 Kimsuky 그룹이 RAT 악성코드를 유포할 당시 사용하였던 작업 스케줄러의 작업명과, 이번 백도어 유포 과정에서 사용된 작업 스케줄러의 작업명이 서로 유사한 점이 확인되었다. 해당 과거 사례는 자사 TI 콘텐츠를 통해 공개된 바 있다.

 

과거 Kimsuky 그룹이 사용한 작업 스케줄러의 작업명 GoogleUpdateTaskMachineUA{1C791230-CA8D-6D04-AC55-F706378A30E}
이번 사례에 Kimsuky 그룹이 사용한 작업 스케줄러의 작업명 GoogleUpdateTaskMachineCGI__{56C6A980-91A1-4DB2-9812-5158E7E97388}

[표 8] 작업 스케줄러의 작업명 유사성

 

[그림 9] 내부 TI 컨텐츠

 

2. 작업 스케줄러 등록 목적 XML 파일명의 유사성

과거 Kimsuky 그룹은 sch_*.db 형태의 XML 파일을 작업 스케줄러 등록에 활용한 경우가 확인된 바 있다. 이러한 사례는 자사 블로그를 통해 공개되었다. [1]
 

과거 Kimsuky 그룹이 사용한 XML 파일명 sch_0514.db
이번 사례에 Kimsuky 그룹이 사용한 XML 파일명 sch.db, sch_ha.db

[표 9] XML 파일명의 유사성

 

3. 동일한 디코이 파일 사용 

과거 Kimsuky 그룹이 사용했던 디코이 파일이 이번 사례와 동일한 LNK 파일에서도 사용되었다. 과거 사례는 자사 TI 컨텐츠로 공개된 바 있다.

 

[그림 10] 과거 Kimsuky 그룹이 사용한 정상 디코이 파일

 

5. 결론

이번 분석에서는 Kimsuky 그룹이 최근 활용한 악성 LNK 파일 유포 방식에서 실행 구조의 변화가 확인되었다. 과거와 비교하면 중간 단계 스크립트가 추가되며 전체 실행 흐름이 더욱 복잡하고 다층적으로 발전한 모습이 관찰된다. 또한 Dropbox와 같은 정상 클라우드 서비스를 악용한 악성코드 배포 방식, 파이썬을 이용한 진단 회피 시도 역시 특징적으로 나타난다. 이러한 변화는 공격 흐름의 큰 틀은 유지하되, 세부 구현을 지속적으로 변형해 탐지를 우회하려는 공격자의 전술적 특징을 보여준다.

 

문서 파일로 위장된 LNK 파일은 외형만으로는 악성 여부를 판단하기 어렵기 때문에, 출처가 불분명한 파일을 실행하는 행위에 대한 각별한 주의가 필요하다.

 

6. 참고 자료

[1] https://asec.ahnlab.com/ko/88419/

 

MD5

059bb6c439ffedc61d9168c23552202c
0633d5f93a5f08a909c039a3f7e90830
063faa06c63e4091ff8df4acffeb10be
130ce31e1fe7c0aa5fae32d96afff4c6
2052261efb1e9d486997fc1795d7d489
URL

http[:]//whaincloud[.]store/kk/cc/p-index[.]php?au=b
http[:]//whaincloud[.]store/kk/cc/p-index[.]php?au=v
http[:]//whaincloud[.]store/kk/view/view[.]php?in=comm
http[:]//zoommet[.]site/man/logo[.]php?au=beauty
https[:]//qugesr[.]online/cuckoo_cc/p-index[.]php?au=baatt
FQDN

qugesr[.]online
racswera[.]online
whaincloud[.]store
zoommet[.]site
IP

45[.]95[.]186[.]232

AhnLab TIP를 구독하시면 연관 IOC 및 상세 분석 정보를 추가적으로 확인하실 수 있습니다. 자세한 내용은 아래 배너를 클릭하여 확인해보세요.