
SharpDPAPI는 일부 Mimikatz DPAPI 기능의 C# 포트입니다.
SharpDPAPI는 @gentilkiwi의 Mimikatz 프로젝트에 있는 일부 DPAPI 기능의 C# 포트입니다.
이 로직은 제가 만든 것이 아니며, 단순히 Mimikatz에서 포팅한 것으로, 과정을 더 잘 이해하고 워크플로에 맞게 운영화하기 위함입니다.
SharpChrome 하위 프로젝트는 @gentilkiwi와 @djhohnstein의 작업, 특히 그의 SharpChrome 프로젝트를 각색한 것입니다. 그러나 이 버전의 SharpChrome은 잠금 없이 열기를 지원하는 C# SQL 라이브러리의 다른 버전을 사용합니다. SharpChrome은 사용된 SQLite 라이브러리의 크기 때문에 SharpDPAPI 내에서 별도 프로젝트로 빌드됩니다.
Chrome 및 더 새로운 Chromium 기반 Edge 브라우저 모두 SharpChrome으로 분석할 수 있습니다.
SharpChrome은 MIT 라이선스로 공개된 @AArnott의 BCrypt P/Invoke 코드의 축소된 버전도 사용합니다.
DPAPI에 익숙하지 않다면, 이 글에서 배경 정보를 확인하세요. 자격 증명 및 보관소(Valut)에 관한 DPAPI에 대한 자세한 내용은 Benjamin의 위키 항목을 확인하세요.
@harmj0y가 이 포트의 주요 작성자입니다.
SharpDPAPI는 BSD 3-Clause 라이선스로 제공됩니다.
__ _ _ _ ___
(_ |_ _. ._ ._ | \ |_) /\ |_) |
__) | | (_| | |_) |_/ | /--\ | _|_
|
v1.20.0
도메인 컨트롤러의 DPAPI 백업 키를 가져옵니다. 선택적으로 DC와 출력 파일을 지정할 수 있습니다.
SharpDPAPI backupkey [/nowrap] [/server:SERVER.domain] [/file:key.pvk]
*search* 명령은 레지스트리, 파일, 폴더 및 base64 blob에서 잠재적인 DPAPI blob을 검색합니다.
search /type:registry [/path:HKLM\path\to\key] [/showErrors]
search /type:folder /path:C:\path\to\folder [/maxBytes:<numOfBytes>] [/showErrors]
search /type:file /path:C:\path\to\file [/maxBytes:<numOfBytes>]
search /type:base64 [/base:<base64 string>]
시스템/SYSTEM 분석:
machinemasterkeys - 접근 가능한 모든 시스템 마스터키 파일 분석 (SYSTEM 권한으로 상승하여 DPAPI_SYSTEM LSA 비밀 검색)
machinecredentials - 'machinemasterkeys'를 사용한 후 시스템 자격 증명 파일 분석
machinevaults - 'machinemasterkeys'를 사용한 후 시스템 보관소 분석
machinetriage - 'machinecredentials' 및 'machinevaults' 명령 실행
사용자 분석:
'masterkeys' 명령의 인수:
/target:FILE/folder - 특정 마스터키 또는 마스터키가 있는 폴더 분석 (지정하지 않으면 로컬 마스터키 분석)
/pvk:BASE64... - Base64로 인코딩된 DPAPI 도메인 개인 키 파일을 사용하여 접근 가능한 사용자 마스터키를 먼저 복호화
/pvk:key.pvk - DPAPI 도메인 개인 키 파일을 사용하여 접근 가능한 사용자 마스터키를 먼저 복호화
/password:X - 일반 텍스트 비밀번호를 사용하여 대상 사용자의 마스터키 복호화 (원격 가능)
/ntlm:X - NTLM 해시를 사용하여 대상 사용자의 마스터키 복호화 (원격 가능)
/credkey:X - DPAPI credkey (도메인 또는 로컬 SHA1)를 사용하여 대상 사용자의 마스터키 복호화 (원격 가능)
/rpc - 도메인 컨트롤러에 요청하여 대상 사용자의 마스터키 복호화
/server:SERVER - 원격 서버 분석 (관리자 권한 필요)
/hashes - 사용자 마스터키 파일 '해시'를 JTR/Hashcat 형식으로 출력 (복호화 없음)
credentials|vaults|rdg|keepass|triage|blob|ps 명령의 인수:
복호화:
/unprotect - 'ps', 'rdg' 또는 'blob' 명령에 대해 CryptUnprotectData() 강제 사용
/pvk:BASE64... - Base64로 인코딩된 DPAPI 도메인 개인 키 파일을 사용하여 접근 가능한 사용자 마스터키를 먼저 복호화
/pvk:key.pvk - DPAPI 도메인 개인 키 파일을 사용하여 접근 가능한 사용자 마스터키를 먼저 복호화
/password:X - 일반 텍스트 비밀번호를 사용하여 대상 사용자의 마스터키 복호화 (원격 가능)
/ntlm:X - NTLM 해시를 사용하여 대상 사용자의 마스터키 복호화 (원격 가능)
/credkey:X - DPAPI credkey (도메인 또는 로컬 SHA1)를 사용하여 대상 사용자의 마스터키 복호화 (원격 가능)
/rpc - 도메인 컨트롤러에 요청하여 대상 사용자의 마스터키 복호화
GUID1:SHA1 ... - 하나 이상의 GUID:SHA1 마스터키를 사용하여 복호화
/mkfile:FILE - 하나 이상의 GUID:SHA1 마스터키가 포함된 파일 사용
대상 지정:
/target:FILE/folder - 특정 'Credentials', '.rdg|RDCMan.settings', 'blob' 또는 'ps' 파일 위치, 또는 'Vault' 폴더 분석
/server:SERVER - 원격 서버 분석 (관리자 권한 필요)
참고: /pvk:KEY 또는 /password:X와 함께 사용해야 함
참고: 'blob' 또는 'ps' 명령에는 적용되지 않음
인증서 분석:
'certificates' 명령의 인수:
/showall - 설치된 인증서와 연결된 것뿐만 아니라 모든 복호화된 개인 키 파일 표시 (기본값)
/machine - 로컬 시스템 저장소를 사용하여 인증서 분석
/mkfile | /target - /machine 분석용
[위의 사용자 분석에서 모든 복호화 인수]
참고: 대부분의 경우 사용자 DPAPI 비밀을 대상으로 하면 *triage*를, SYSTEM DPAPI 비밀을 대상으로 하면 *machinetriage*를 사용하세요.
이 함수들은 자동으로 실행 가능한 다른 모든 함수를 래핑합니다.
__ _
(_ |_ _. ._ ._ / |_ ._ _ ._ _ _
__) | | (_| | |_) \_ | | | (_) | | | (/_
|
v1.9.0
도메인 컨트롤러의 DPAPI 백업 키를 가져옵니다. 선택적으로 DC와 출력 파일을 지정할 수 있습니다.
SharpChrome backupkey [/nowrap] [/server:SERVER.domain] [/file:key.pvk]
'cookies', 'logins', 'statekeys' 명령의 전역 인수:
복호화:
/unprotect - CryptUnprotectData() 강제 사용 (권한 없는 실행의 기본값)
/pvk:BASE64... - Base64로 인코딩된 DPAPI 도메인 개인 키 파일을 사용하여 접근 가능한 사용자 마스터키를 먼저 복호화
/pvk:key.pvk - DPAPI 도메인 개인 키 파일을 사용하여 접근 가능한 사용자 마스터키를 먼저 복호화
/password:X - 일반 텍스트 비밀번호를 사용하여 대상 사용자의 마스터키 복호화 (원격 가능)
/ntlm:X - NTLM 해시를 사용하여 대상 사용자의 마스터키 복호화 (원격 가능)
/prekey:X - DPAPI prekey (도메인 또는 로컬 SHA1)를 사용하여 대상 사용자의 마스터키 복호화 (원격 가능)
/rpc - 도메인 컨트롤러에 요청하여 대상 사용자의 마스터키 복호화
GUID1:SHA1 ... - 하나 이상의 GUID:SHA1 마스터키를 사용하여 복호화
/statekey:X - 복호화된 AES 상태 키 ('statekey' 명령에서 가져온 것)
대상 지정:
/target:FILE - 특정 'Cookies', 'Login Data' 또는 'Local State' 파일 위치 분석
/target:C:\Users\X\ - 지정된 명령에 대해 특정 사용자 폴더 분석
/server:SERVER - 원격 서버 분석 (관리자 권한 필요) (참고: /pvk:KEY와 함께 사용해야 함)
/browser:X - 'chrome'(기본값), (Chromium 기반) 'edge' 또는 'slack' 분석
출력:
/format:X - 'csv'(기본값) 또는 'table' 표시
/showall - null 비밀번호가 있는 Login Data 항목 및 만료된 쿠키를 필터링하지 않고 표시 (기본값은 필터링)
/consoleoutfile:X - 모든 콘솔 출력을 디스크 파일로 출력
'cookies' 명령 특정 인수: