two2sh.tistory.com/24

 

[Packer] ConfuserEx 분석 - 4 # by Cihuny

개요 지난 포스팅에서는 ConfuserEx이 사용하는 기법에 대해 간단히 알아보았습니다. 이번 포스팅에서는 풀옵션(Maximum Level + Packer)의 ConfuserEx로 보호된 .Net 프로그램을 언패킹하는 방법에 대해 알

two2sh.tistory.com

www.cnblogs.com/chucklu/p/11396092.html

 

[.NET] ConfuserEx脱壳工具打包 - ChuckLu - 博客园

[.NET] ConfuserEx脱壳工具打包 ConfuserEx 1.0.0脱壳步骤 Written by 今夕何夕[W.B.L.E. TeAm]1.先用UnconfuserEx把主程序Dump出

www.cnblogs.com

mindlocksite.wordpress.com/2017/02/11/easy-way-to-unpack-confuserex-1-0-max-settings/

 

Easy way to unpack Confuserex 1.0 Max Settings

Hi, I decided to write this tutorial because of a request. This time, we won’t use windbg, or any other debugger. I’ll make another tutorial for this approach. So Target : First, we hav…

mindlocksite.wordpress.com

 

www.cnblogs.com/chucklu/p/11396092.html

 

[.NET] ConfuserEx脱壳工具打包 - ChuckLu - 博客园

[.NET] ConfuserEx脱壳工具打包 ConfuserEx 1.0.0脱壳步骤 Written by 今夕何夕[W.B.L.E. TeAm]1.先用UnconfuserEx把主程序Dump出

www.cnblogs.com

 

'리버싱' 카테고리의 다른 글

RVA to RWA 쉽게 계산하기 [펌]  (0) 2022.04.27
EAT IAT 계산  (0) 2022.04.25
C#은 SecureSting 클래스  (0) 2021.07.09
게임 해킹 띠오리(경로)  (0) 2020.11.02
함수호출규약(Calling Convention) 간단 정리  (0) 2019.11.21
블로그 이미지

wtdsoul

,

taesun1114.tistory.com/entry/%EC%A3%BC%EC%9A%94-Editor-%EC%83%98%ED%94%8C%ED%8E%98%EC%9D%B4%EC%A7%80-%EB%B0%8F-%EC%B7%A8%EC%95%BD%EC%A0%90-%EB%B0%9C%EC%83%9D%EA%B2%BD%EB%A1%9C

 

주요 Editor 샘플페이지 및 취약점 발생경로

에디터를 사용할 때, 설치 후 샘플페이지 및 주요취약점이 발생하는 페이지를 삭제하지 않고 사용할 경우 해당 경로를 통해 취약점이 발생합니다. 아래는 대표적으로 취약점이 발생하는 경로입

taesun1114.tistory.com

https://itinformation.tistory.com/125

 

웹서버 web editor 취약점 및 샘플페이지

※ 주의 : 본 포스팅의 내용을 악용할 시 법적 문제를 야기할 수 있으므로, 반드시 법적 테두리 안에서 허용되는 경우에만 사용하시기 바랍니다. 웹 서버에 게시판 SW(웹 에디터)에 대한 취약점을

itinformation.tistory.com

에디터를 사용할 때, 설치 후 샘플페이지 및 주요취약점이 발생하는 페이지를 삭제하지 않고 사용할 경우 해당 경로를 통해 취약점이 발생합니다.

 

아래는 대표적으로 취약점이 발생하는 경로입니다.

 

주로 발생하는 에디터 종류로는

1. Smart Editor (네이버)

2. Namo Cross Editor(지란지교소프트)

3. 나모 웹 에디터(나모인터랙티브)

각 Web Editor 별로 최신버전의 업데이트가 필요합니다.

 

1. Smart Editor

 - 이미지 업로드 취약점 등이 제거된 최신버전(2.9.1 이상)으로 업데이트 필요

 - 2.9.0 버전부터 취약한 이미지 업로드 예제용 샘플 페이지를 제거하고 배포중

 - 구버전 운영중인 경우 이미지 업로드 샘플파일 존재여부 확인 후 제거

 - sample > photo_uploader 디렉터리에 샘플파일이 존재

 

2. 나모 웹에디터 및 크로스에디터

 - 샘플페이지에 첨부기능을 활용하여 업로드 공격이 가능

 - 최신 버전의 나모 웹에디터, 크로스에디터로 업데이트 필요

 - 3.5.1.14 및 4.2.0.12 버전 이상에서 업로드 취약점 패치 공지

 

CHEditor 

 /editor/popup/image.html

 /cheditor/

 /core/editor/

 /board/cheditor/

 /js/cheditor/

 /cheditor4/

 /ko/cheditor4/

 /cheditor5/

 /cheditor/example/newpost.html
 /cheditor/example/modifiy.html
 /cheditor/example/multi.html
 /cheditor/imageUpload/upload.jsp

 CKEditor

 /ckeditor/
 /ckfinder/
 /ckfinder/ckfinder.html
 ckeditor/upload.jsp
 /ckeditor/_samples/

 /ckeditor/samples/

 /ckeditor/_samples/index.html
 /ckeditor/samples/index.html
 /skins/ckeditor/

 /_sys/_plugin/cke

 Namo CrossEditor

/namo/ 
 /namo/index.html
 /namo/manage/index.html
 /crosseditor/

 /crosseditor/manager/

 /crosseditor/index.html
 /crosseditor/manage/index.html
 /crosseditor/manage/jsp/manager_setting.jsp
 /crosseditor/binary/upload/devshell.jsp
 /crosseditor/binary/upload/cmd.jspx
 /resources/crosseditor/
 /resources/crosseditor/index.html
 /resources/component/crosseditor/index.html

 DaumEditor

 /daumeditor/
 /_moduel/daumeditor/
 /daumeditor/editor.html

 dext5Editor

/DEXTUpload/ 

 /dext5/
 /dext5upload/
 /dext5upload/sample/
 /com/dext5upload/
 /dext5upload/sample/index.html
 /dext5Upload/sample/html/sample_upload.html
 /dext5editor/admin/jsp/login.jsp
 /dext5editor/admin/jsp/uploader_setting.jsp
 /samples/index.html
 /aspupload/
 /aspupload/file_upload.html

 FCKEditor

 /fck/editor/
 /FCKeditor/
 /js/fckeditor/
 /feditor/editor/fckeditor.html
 /fckeditor/editor/filemanager/browser/default/browser.html
 /fckeditor/editor/filemanager/connectors/test.html
 /fckeditor/editor/filemanager/connectors/uploadtest.html
 /editor/filemanager/browser/default/browser.html
 /editor/editor/filemanager/browser/default/browser.html
 /HtmlEditor/_samples/default.html

 SmartEditor

 /js/se2/SmartEditor2.html
 /nse/SmartEditor2.html
 /SmartEditor2.html
 /SmartEditorBasic/
 /SmartEditor2/
 /SmartEditorBasic/SEditorDemo.html
 /SEditor/popup/quick_photo/imgupload.jsp
 /smarteditor/photo_uploader/popup/file_uploader_html5.php
 /SE2/photo_uploader/popup/file_uploader_html5.php
 /smarteditor2/photo_uploader/popup/file_uploader_html5.php
 /smarteditor/popup/quick_photo/FileUploader_html5.php
 /plugin/smarteditor2/photo_uploader/popup/file_uploader_html5.php

 

좋아요9

공유하기

글 요소

구독하기

 



출처: https://taesun1114.tistory.com/entry/주요-Editor-샘플페이지-및-취약점-발생경로 []

'' 카테고리의 다른 글

IIS cipher suite 암호 알고리즘 설정  (0) 2020.12.28
Aliexpress Captcha Reuse  (0) 2020.12.06
디피 헬만 키(Diffie Hellman Key) SSL 취약점  (0) 2020.10.30
subdomain finder  (0) 2020.10.21
TLS 1.0, 1.1 중단 일정  (0) 2020.10.12
블로그 이미지

wtdsoul

,

theori.io/research/korean/game-hacking-1/

 

게임핵의 원리에 대해 알아보자 (1) - Wall Hack 편

FPS 게임에서 자주 발견되는 “Wall Hack” (월핵)은 벽 너머의 적을 보여주어 위치를 알 수 있도록 한다. 월핵을 구현하는 방법은 그래픽 렌더링 라이브러리마다 조금씩 다르다.

theori.io

 

 

'리버싱' 카테고리의 다른 글

RVA to RWA 쉽게 계산하기 [펌]  (0) 2022.04.27
EAT IAT 계산  (0) 2022.04.25
C#은 SecureSting 클래스  (0) 2021.07.09
.Net De'obfuscator 분석(진행 중)  (0) 2020.11.08
함수호출규약(Calling Convention) 간단 정리  (0) 2019.11.21
블로그 이미지

wtdsoul

,

waspro.tistory.com/479

 

[SSL 암호화 취약점] 디피 헬만 키(Diffie Hellman Key)

이번 포스팅에서는 Web Server SSL 취약점으로 분석되는 디피 헬만 키에 대해 살펴보겠습니다. 1. 디피 헬만 키 취약점 분석 디피 헬만(Diffie-Hellman) 키 교환 프로토콜을 사용하는 TLS 연결에 취약점이

waspro.tistory.com

 

'' 카테고리의 다른 글

Aliexpress Captcha Reuse  (0) 2020.12.06
주요 Editor 샘플 페이지 및 경로  (0) 2020.11.05
subdomain finder  (0) 2020.10.21
TLS 1.0, 1.1 중단 일정  (0) 2020.10.12
Burp Suite 단축키 관련  (0) 2020.09.02
블로그 이미지

wtdsoul

,

국내 블로그에서 이런 글을 보는 날이 오다니...

 

ufo.stealien.com/r&d/2020/10/29/can_bus_1.html

 

CAN BUS [1]

Prologue 최근 자동차 해킹에 대해 관심을 가지는 사람들이 늘고 있다. 워낙 차를 좋아해서 기회가 생기면 자동차 해킹을 해봐야겠다고 생각했었는데 마침 기술 블로그에 기고할 차례가 되어 글을

ufo.stealien.com

 

 

블로그 이미지

wtdsoul

,

subdomain finder

2020. 10. 21. 14:19

 

subdomainfinder.c99.nl/

 

Subdomain Finder - C99.nl

What is a Subdomain Finder? Our subdomain finder is a tool which performs an advanced scan over the specified domain and tries to find as many subdomains as possible. While scanning it also checks whether the domain is tunneling through CloudFlare. We stri

subdomainfinder.c99.nl

 

 

'' 카테고리의 다른 글

주요 Editor 샘플 페이지 및 경로  (0) 2020.11.05
디피 헬만 키(Diffie Hellman Key) SSL 취약점  (0) 2020.10.30
TLS 1.0, 1.1 중단 일정  (0) 2020.10.12
Burp Suite 단축키 관련  (0) 2020.09.02
Spring mybatis SQL 인젝션 대응  (0) 2020.08.20
블로그 이미지

wtdsoul

,

 

medium.com/@dPhoeniixx/arbitrary-code-execution-on-facebook-for-android-through-download-feature-fb6826e33e0f

 

Arbitrary code execution on Facebook for Android through download feature

TL;DR

medium.com

 

 

 

'모바일' 카테고리의 다른 글

모바일 인증서 설치  (0) 2020.12.08
모바일 adb pull 접근 제한 해결  (0) 2020.11.19
Android Anti-debugging 소스 코드  (0) 2020.09.21
안드로이드 NDK 란?  (0) 2020.09.21
 Cydia Impactor alternative  (0) 2020.09.10
블로그 이미지

wtdsoul

,

www.krcert.or.kr/data/reportView.do?bulletin_writing_sequence=35723

 

KISA 인터넷 보호나라&KrCERT

KISA 인터넷 보호나라&KrCERT

www.boho.or.kr

 

 

'CVE' 카테고리의 다른 글

DNS 캐시 포이즈닝 CVE  (0) 2020.11.19
trendmicro UAF  (0) 2020.11.19
CVE-2020-1472 취약점 분석 글 (경로 참고)  (0) 2020.10.08
Bitcoin Remote Dos CVE 2018  (0) 2020.09.06
Word press plugin 0day  (0) 2020.09.06
블로그 이미지

wtdsoul

,

TLS 1.0, 1.1 중단 일정

2020. 10. 12. 17:15

cert.crosscert.com/%EA%B3%B5%EC%A7%80%EC%BD%94%EB%A1%9C%EB%82%9819-%EC%97%AC%ED%8C%8C%EB%A1%9C-%EC%9B%B9%EB%B8%8C%EB%9D%BC%EC%9A%B0%EC%A0%80%EB%93%A4-tls-1-0-tls-1-1-%EC%A7%80%EC%9B%90%EC%A4%91%EB%8B%A8-%EC%9D%BC/

 

[공지]코로나19 여파로 웹브라우저들 TLS 1.0 TLS 1.1 지원중단 일정연기 - SSL 인증서 발급,종류,가격�

안녕하세요. 한국전자인증 입니다. 저희 한국전자인증에서는 주요 웹브라우저들에서 TLS 1.0, TLS 1.1 지원 중단에 대한 공지를 여러차례 드렸었습니다. 코로나19 바이러스에 대한 여파로 웹브라우�

cert.crosscert.com

 

” 주요 브라우저 업체들이 2020년 상반기에 지원을 중지할 예정이었으나, 코로나19 바이러스로 기존에 발표한 TLS 1.0 및 1.1 프로토콜 지원 중지 일정이 변경되고 있습니다. “

초기 SSL Protocol을 기반으로 개발된 TLS는 클라이언트-서버 간의 통신 채널을 보호하고 암호화 하기 위해 사용되는 암호화 프로토콜입니다.

TLS는 현재 1.0, 1.1, 1.2, 1.3(최신)으로 총 4개 버전이 존재합니다. 이 중 구 버전인 TLS 1.0, 1.1은 POODLE 과 BEAST와 같은 다양한 공격에 취약하며, 프로토콜 취약점을 이용한 하이재킹(hijacking)이 발생할 수 있습니다.

변경된 TLS 1.0 TLS 1.1 프로토콜 지원 중지 일정

따라서, TLS 1.2 이상을 지원하지 않는 웹 서버를 운영 중이라면, 미리 업그레이드를 하시는 것을 권장 드립니다.인증서의 변동 사항은 없습니다.

주요 Web 서버 및 보안 솔루션 TLS 1.2 지원 버전

(경우에 따라 TLS 1.2 프로토콜 지원을 위해 관련 라이브러리 혹은 펌웨어 업데이트가 필요할 수 있습니다.)

 

 

'' 카테고리의 다른 글

디피 헬만 키(Diffie Hellman Key) SSL 취약점  (0) 2020.10.30
subdomain finder  (0) 2020.10.21
Burp Suite 단축키 관련  (0) 2020.09.02
Spring mybatis SQL 인젝션 대응  (0) 2020.08.20
Procedure Analysis SQL 인젝션  (0) 2020.08.13
블로그 이미지

wtdsoul

,

blog.diffense.co.kr/2020/10/06/Zerologon.html

 

Anatomy of Zerologon

Zero To Logon, Domain를 장악할 수 있는 CVE-2020-1472 취약점 파헤치기

blog.diffense.co.kr

Zerologon을 활용한 Exploit

Exploit 과정은 크게 5가지 Step으로 이루어집니다.

1) Spoofing the client credential

NetrServerReqChallenge 함수 호출로 Challenge를 교환한 후에 Client는 Server의 NetrServerAuthenticate3 함수를 호출하여 인증을 시도합니다. NetrServerAuthenticate3에는 ClientCredential이라는 매개 변수가 있으며 이것이 Server에서 비교할 Client Credential 값이 됩니다.

이 매개 변수 값은 임의로 설정이 가능하고 취약 버전에서는 Server 상에서 어떠한 검증이나 잘못된 로그인 시도에 대한 제재가 존재하지 않으므로 인증이 성공할 때까지 계속하여 시도가 가능합니다.

보통 1 단계가 성공하기 위해서 필요한 평균 횟수는 256회이고 실제로는 약 3초정도 밖에 걸리지 않습니다. 이 방법을 사용하면 도메인의 모든 Computer의 Credential을 spoofing할 수 있고 여기에는 Backup Domain Controller와 Domain Controller도 포함됩니다.

2) Disabling signing and sealing

Step1을 수행하며 Client Credential을 Spoofing할 수 있었지만 Session Key 값이 무엇인지는 알 수 없는 상황입니다. 그래서 Netlogon 상에서 Transport Encryption Mechanism(“RPC Signing and Sealing”)이 적용된 상태라면 Subsequence Message들을 Session Key로 암호화해야 하지만 이 Encryption Mechanism은 선택적인 사항이며 NetrServerAuthenticate3을 호출할 때 Flag 값을 통해 비활성화 할 수 있습니다.

3) Spoofing a call

Step2에서 Call Encryption을 비활성화시켰더라도, 모든 RPC Call은 Authenticator value값을 포함하고 있어야 합니다. 이 값은 ComputeNetlogonCredential 함수를 호출할 때 필요한 인자인 ClientStoredCredential을 계산하는 데 사용됩니다.

SET TimeNow = current time; SET ClientAuthenticator.Timestamp = TimeNow; SET ClientStoredCredential = ClientStoredCredential + TimeNow; CALL ComputeNetlogonCredential(ClientStoredCredential, Session-Key, ClientAuthenticator.Credential);

ClientStoredCredential을 위해 필요한 Authenticator값은 Credential과 Timestamp입니다. Credential은 클라이언트에 저장된 값으로써, 핸드세이크를 수행할 때 공격자가 서버에 제공한 ClientCredential과 동일한 값입니다. 공격자는 0으로 구성된 Client Credential 값을 지니고 있음으로 0으로 설정합니다.

ciphertext = b'\x00' * 8 authenticator = nrpc.NETLOGON_AUTHENTICATOR() authenticator['Credential'] = ciphertext authenticator['Timestamp'] = b"\x00" * 4 request = nrpc.NetrServerPasswordSet2() request['PrimaryName'] = NULL request['AccountName'] = target_computer + '$\x00' request['SecureChannelType'] = nrpc.NETLOGON_SECURE_CHANNEL_TYPE.ServerSecureChannel request['ComputerName'] = target_computer + '\x00' request["Authenticator"] = authenticator resp = rpc_con.request(request)

TimeStamp는 현재 Posix 시간을 나타내며 서버는 자신의 실제 시간 값과 일치하는 지 검증하지 않으므로 단순히 1970년 1월 1일의 Timestamp 값을 사용하도록 0으로 설정하면 됩니다.

ComputeNetlogCredential(ClientStoredCredential(0), Session-Key(Unknown), ClientAuthenticator.Credential(0,0)) ⇒ 0이므로 인증된 사용자만 호출할 수 있는 함수들을 호출할 수 있습니다.

4) Changing a computer’s AD password

앞의 Step들을 통해 이제 어떤 Computer로든지 인증된 Netlogon Call을 수행할 수 있게 되었습니다. 이제 기존에 설정된 Computer 계정의 AD Password를 바꿔보도록 하겠습니다.

공격하는 데 사용할 함수는 NetrServerPasswordSet2 함수입니다. 이 함수는 Client에서 새 Computer Password를 설정하는 데 사용됩니다. 설정할 암호 자체는 Hash 되어있지 않지만 Session Key로 암호화되어야 합니다. 서버에서 동일한 Session key를 사용하므로 Step1과 같이 0으로 설정하면 됩니다.

Netlogon 프로토콜의 Plain Text Password 구조는 516 바이트 크기로 구성됩니다. 마지막 4 바이트는 Password의 길이(바이트)를 나타냅니다. 길이를 제외한 나머지 바이트들은 패딩으로 간주되며 임의의 값으로 설정하여도 됩니다. 516 바이트를 모두 0으로 채우면, 길이가 0인 Password, 즉 Empty Password로 취급됩니다. Computer에 빈 암호(Empty Password)를 설정하는 것은 금지되어있지 않음으로 도메인의 모든 Computer에 Empty Password를 설정할 수 있습니다.

이제 Password를 변경한 후에는 패스워드가 Empty Password란 것을 알고 있음으로 공격을 시도할 필요 없이 정상적인 사용자로서 권한있는 작업을 수행할 수 있습니다.

다만 이러한 방식으로 Computer 암호를 변경하면 AD(Active Directory) 상에서만 Computer 암호가 변경됩니다. 대상 시스템 자체에서는 암호를 로컬로 저장하고 있음으로 더 이상 도메인에 인증할 수 없으며 이 시점에서 도메인의 모든 장치에 대한 DOS 공격이 될 수 있습니다.

5) From password change to domain admin

앞의 과정을 통해 Domain Controller의 PW를 변경하면 AD에 저장된 DC PW와 시스템 로컬 레지스트리(HKLM\SECURITY\Policy\Secret\$machine.ACC)에 저장된 PW와 달라지는 현상이 발생합니다. 이로 인해 DC의 특정 서비스(DNS Resolver등)등이 멈추는 등 다양한 오류가 발생합니다. 이를 방지하기 위해 AD의 PW와 로컬 레지스트리를 동기화해주는 작업이 필요합니다. 이러한 작업을 위해서 DC에 새롭게 설정된 Password를 사용하여 로그인하여야 합니다.

새롭게 설정한 PW로 impacket의 ‘secretsdump’ script를 실행하면 DRS(Domain Replication Service)프로토콜을 통해 도메인의 모든 사용자 Hash를 성공적으로 추출할 수 있습니다. 여기에는 GoldenTicket을 만드는 데 사용할 수 있는 krbtgt 계정의 Hash 또한 포함됩니다. 이 Hash 값을 이용하여 DC에 로그인한 뒤 DC의 로컬 레지스트리에 저장된 computer password를 업데이트 할 수 있습니다.



Zerologon을 활용한 Exploit

Exploit 과정은 크게 5가지 Step으로 이루어집니다.

1) Spoofing the client credential

NetrServerReqChallenge 함수 호출로 Challenge를 교환한 후에 Client는 Server의 NetrServerAuthenticate3 함수를 호출하여 인증을 시도합니다. NetrServerAuthenticate3에는 ClientCredential이라는 매개 변수가 있으며 이것이 Server에서 비교할 Client Credential 값이 됩니다.

이 매개 변수 값은 임의로 설정이 가능하고 취약 버전에서는 Server 상에서 어떠한 검증이나 잘못된 로그인 시도에 대한 제재가 존재하지 않으므로 인증이 성공할 때까지 계속하여 시도가 가능합니다.

보통 1 단계가 성공하기 위해서 필요한 평균 횟수는 256회이고 실제로는 약 3초정도 밖에 걸리지 않습니다. 이 방법을 사용하면 도메인의 모든 Computer의 Credential을 spoofing할 수 있고 여기에는 Backup Domain Controller와 Domain Controller도 포함됩니다.

2) Disabling signing and sealing

Step1을 수행하며 Client Credential을 Spoofing할 수 있었지만 Session Key 값이 무엇인지는 알 수 없는 상황입니다. 그래서 Netlogon 상에서 Transport Encryption Mechanism(“RPC Signing and Sealing”)이 적용된 상태라면 Subsequence Message들을 Session Key로 암호화해야 하지만 이 Encryption Mechanism은 선택적인 사항이며 NetrServerAuthenticate3을 호출할 때 Flag 값을 통해 비활성화 할 수 있습니다.

3) Spoofing a call

Step2에서 Call Encryption을 비활성화시켰더라도, 모든 RPC Call은 Authenticator value값을 포함하고 있어야 합니다. 이 값은 ComputeNetlogonCredential 함수를 호출할 때 필요한 인자인 ClientStoredCredential을 계산하는 데 사용됩니다.

SET TimeNow = current time; SET ClientAuthenticator.Timestamp = TimeNow; SET ClientStoredCredential = ClientStoredCredential + TimeNow; CALL ComputeNetlogonCredential(ClientStoredCredential, Session-Key, ClientAuthenticator.Credential);

ClientStoredCredential을 위해 필요한 Authenticator값은 Credential과 Timestamp입니다. Credential은 클라이언트에 저장된 값으로써, 핸드세이크를 수행할 때 공격자가 서버에 제공한 ClientCredential과 동일한 값입니다. 공격자는 0으로 구성된 Client Credential 값을 지니고 있음으로 0으로 설정합니다.

ciphertext = b'\x00' * 8 authenticator = nrpc.NETLOGON_AUTHENTICATOR() authenticator['Credential'] = ciphertext authenticator['Timestamp'] = b"\x00" * 4 request = nrpc.NetrServerPasswordSet2() request['PrimaryName'] = NULL request['AccountName'] = target_computer + '$\x00' request['SecureChannelType'] = nrpc.NETLOGON_SECURE_CHANNEL_TYPE.ServerSecureChannel request['ComputerName'] = target_computer + '\x00' request["Authenticator"] = authenticator resp = rpc_con.request(request)

TimeStamp는 현재 Posix 시간을 나타내며 서버는 자신의 실제 시간 값과 일치하는 지 검증하지 않으므로 단순히 1970년 1월 1일의 Timestamp 값을 사용하도록 0으로 설정하면 됩니다.

ComputeNetlogCredential(ClientStoredCredential(0), Session-Key(Unknown), ClientAuthenticator.Credential(0,0)) ⇒ 0이므로 인증된 사용자만 호출할 수 있는 함수들을 호출할 수 있습니다.

4) Changing a computer’s AD password

앞의 Step들을 통해 이제 어떤 Computer로든지 인증된 Netlogon Call을 수행할 수 있게 되었습니다. 이제 기존에 설정된 Computer 계정의 AD Password를 바꿔보도록 하겠습니다.

공격하는 데 사용할 함수는 NetrServerPasswordSet2 함수입니다. 이 함수는 Client에서 새 Computer Password를 설정하는 데 사용됩니다. 설정할 암호 자체는 Hash 되어있지 않지만 Session Key로 암호화되어야 합니다. 서버에서 동일한 Session key를 사용하므로 Step1과 같이 0으로 설정하면 됩니다.

Netlogon 프로토콜의 Plain Text Password 구조는 516 바이트 크기로 구성됩니다. 마지막 4 바이트는 Password의 길이(바이트)를 나타냅니다. 길이를 제외한 나머지 바이트들은 패딩으로 간주되며 임의의 값으로 설정하여도 됩니다. 516 바이트를 모두 0으로 채우면, 길이가 0인 Password, 즉 Empty Password로 취급됩니다. Computer에 빈 암호(Empty Password)를 설정하는 것은 금지되어있지 않음으로 도메인의 모든 Computer에 Empty Password를 설정할 수 있습니다.

이제 Password를 변경한 후에는 패스워드가 Empty Password란 것을 알고 있음으로 공격을 시도할 필요 없이 정상적인 사용자로서 권한있는 작업을 수행할 수 있습니다.

다만 이러한 방식으로 Computer 암호를 변경하면 AD(Active Directory) 상에서만 Computer 암호가 변경됩니다. 대상 시스템 자체에서는 암호를 로컬로 저장하고 있음으로 더 이상 도메인에 인증할 수 없으며 이 시점에서 도메인의 모든 장치에 대한 DOS 공격이 될 수 있습니다.

5) From password change to domain admin

앞의 과정을 통해 Domain Controller의 PW를 변경하면 AD에 저장된 DC PW와 시스템 로컬 레지스트리(HKLM\SECURITY\Policy\Secret\$machine.ACC)에 저장된 PW와 달라지는 현상이 발생합니다. 이로 인해 DC의 특정 서비스(DNS Resolver등)등이 멈추는 등 다양한 오류가 발생합니다. 이를 방지하기 위해 AD의 PW와 로컬 레지스트리를 동기화해주는 작업이 필요합니다. 이러한 작업을 위해서 DC에 새롭게 설정된 Password를 사용하여 로그인하여야 합니다.

새롭게 설정한 PW로 impacket의 ‘secretsdump’ script를 실행하면 DRS(Domain Replication Service)프로토콜을 통해 도메인의 모든 사용자 Hash를 성공적으로 추출할 수 있습니다. 여기에는 GoldenTicket을 만드는 데 사용할 수 있는 krbtgt 계정의 Hash 또한 포함됩니다. 이 Hash 값을 이용하여 DC에 로그인한 뒤 DC의 로컬 레지스트리에 저장된 computer password를 업데이트 할 수 있습니다.

 

 

 

 

'CVE' 카테고리의 다른 글

trendmicro UAF  (0) 2020.11.19
SMB Ghost 취약점 분석(KISA)  (0) 2020.10.14
Bitcoin Remote Dos CVE 2018  (0) 2020.09.06
Word press plugin 0day  (0) 2020.09.06
POODLE Attack  (0) 2020.08.09
블로그 이미지

wtdsoul

,