
순수 Python으로 작성된 Mimikatz
이 프로젝트가 마음에 드신다면, 브라우저에서 실행되는 전체 침투 테스트 제품군인 OctoPwn의 라이선스 구매를 고려해 주세요!
새로운 빌드/릴리스 등에 대한 알림을 받으시려면 Discord에 참여해 주세요.
순수 Python으로 구현된 Mimikatz. 적어도 일부는요 :)
Python>=3.6을 지원하는 모든 OS에서 실행됩니다.

이 프로젝트는 OctoPwn의 힘을 빌려 다른 많은 침투 테스트 도구와 함께 브라우저에서 실행됩니다!
커뮤니티 버전은 OctoPwn - Live에서 확인하세요.
버전 0.1.1부터 명령줄이 약간 변경되었습니다. 걱정하지 마세요. 훌륭한 WIKI가 준비되어 있습니다.
pip를 통해 설치하거나 github에서 클론하여 설치할 수 있습니다.
설치 프로그램은 Python의 Script 디렉토리에 pypykatz 실행 파일을 생성합니다. 거기서 실행할 수 있으며, PATH에 있어야 합니다.
주의: github master 버전은 새 버전에 대해 적절한 브랜치를 만들기 귀찮아서 실패할 수 있습니다. 하지만 안정 버전 브랜치는 만들도록 노력하겠습니다.
pip3 install pypykatz
사전 요구사항 설치
pip3 install minidump minikerberos aiowinreg msldap winacl
이 저장소 클론
git clone https://github.com/skelsec/pypykatz.git
cd pypykatz
설치
python3 setup.py install
플랫폼 독립적 - 모든 명령어는 해당되는 경우 "라이브"와 일반 버전이 있습니다. "라이브" 버전은 현재 시스템을 사용하며 Windows에서만 작동합니다. 일반 명령어는 플랫폼 독립적입니다.
프로젝트 라이브러리로 사용할 수 있습니다.
LSASS 프로세스에 숨겨진 비밀을 파싱할 수 있습니다. 이는 mimikatz의 sekurlsa::와 비슷하지만 명령어가 다릅니다.
여기서 주요 차이점은 모든 파싱 로직이 데이터 소스와 분리되어 있어 새로운 리더 객체를 정의하면 어디서든 LSASS 파싱을 수행할 수 있다는 것입니다.
현재 지원되는 데이터 소스:
여기에 당신의 프로젝트 - 정말로, 통합이 매우 간단합니다.레지스트리 하이브를 파싱하여 저장된 자격 증명(NT 및 LM 해시, 도메인 캐시 자격 증명(DCC/DCC2), LSA 비밀)을 얻습니다.
현재 지원되는 데이터 소스:
여기에 당신의 프로젝트 - 정말로, 통합이 매우 간단합니다.DPAPI는 다양한 종류의 로컬 비밀을 보호합니다. 현재 프로젝트는 마스터키, dpapi blob, 자격 증명 파일, 볼트 파일의 복호화를 지원합니다.
이러한 항목들에 대한 문서가 많지 않아 결과가 100% 정확하지는 않습니다. PR은 언제나 환영합니다!
현재 지원되는 데이터 소스:
이 부분은 프로젝트에 통합하지 마세요. 베타 버전입니다.머신에서 실행 중인 프로세스가 있는 모든 사용자로 새 프로세스를 생성할 수 있습니다.
선택한 사용 가능한 토큰을 스레드에 할당할 수 있습니다.
이는 기본적인 기능일 뿐입니다. 존재 이유는 관리자 권한으로 시스템 셸을 얻기 위해 항상 psexec를 사용하는 것이 싫기 때문입니다...
음... 코드를 확인하세요. 주석 등이 있습니다...
이 매개변수가 존재하는 이유: 올바른 파싱 구조를 선택하려면 msv dll 파일의 타임스탬프 정보가 필요합니다. Rekall은 어떤 이유로 이 정보를 항상 가지고 있지 않아 파싱이 실패할 수 있습니다.
파싱이 실패하는 경우 이 매개변수가 문제를 해결할 수 있습니다.
매개변수: -t
값: 0 또는 1
예시:
pypykatz.py rekall <메모리_덤프_파일> -t 0
rekall 기반 메모리 파싱을 사용하는 두 가지 방법이 있습니다.
pypykatz rekall 명령어를 통해파싱할 메모리 파일을 지정해야 합니다.
중요 공지:
rekall을 설치하려는 경우: 반드시 virtualenv에서 실행해야 하며, 같은 virtualenv에 pypykatz를 설치해야 합니다!out_file 및 kerberos_dir 명령 스위치를 사용하세요!pypykatz의 plugins 폴더에 pypykatz_rekall.py라는 rekall 플러그인 파일이 있습니다.
이 파일을 rekall의 plugins/windows 폴더에 복사하고 이름을 pypykatz.py로 변경해야 합니다.
그런 다음 같은 폴더에 있는 __init__.py 파일을 수정하고 끝에 다음 줄을 추가하세요: from rekall.plugins.windows import pypykatz
모든 것이 정상이면 rekall 명령줄에서 직접 pypykatz 명령을 사용할 수 있습니다.
이 프로젝트를 안정적인 릴리스로 만드는 데 도움을 주고 싶다면 lsass.exe 프로세스의 미니덤프를 다음 링크로 보내주세요: https://nx5494.your-storageshare.de/s/SJteWj3PPbg8jBA 중요: 자신의 컴퓨터 lsass 프로세스 덤프는 보내지 마세요!!! 해시/비밀번호를 포함한 비밀을 볼 수 있습니다! 가상 테스트 시스템과 같이 자격 증명이 노출되어도 괜찮은 시스템의 덤프 파일을 보내주세요. (Kerberos가 설정된 테스트 도메인 시스템이 가장 좋습니다.) 또한 스팸은 자제해 주시기 바랍니다.
Python에서 mimikatz를 만들려면 네이티브 컴파일러를 사용할 때 자연스럽게 얻을 수 있는 내장 파서의 도움 없이 수많은 구조체(원본 코드 참조)의 구조 정의를 만들어야 합니다. 문제는 단일 바이트 정렬 오류라도 이러한 구조체의 파싱을 오류로 이끌 수 있다는 것입니다. 문제는 주로 32-64비트 정렬과 관련이 있으므로 32비트 Windows 버전의 lsass 덤프도 환영합니다!
코드를 검증하고 파서가 제대로 작동할 때까지 필요한 변경을 가할 데이터가 필요합니다. 실제 파일 없이 이 github 페이지에 이슈를 제출하는 것은 전혀 도움이 되지 않으며, github은 40-300MB 파일 첨부를 좋아하지 않습니다.
제 대부분의 큰 Python 프로젝트는 최대한의 이식성을 목표로 하여 꼭 필요한 경우에만 타사 패키지를 사용합니다. 현재 시점에서 세 개의 추가 패키지가 사용되며, 이 상태를 유지하려고 합니다.
Python>=3.6 minidump minikerberos asn1crypto
Benjamin DELPY @gentilkiwi - Mimikatz Francesco Picasso - volatility용 mimikatz.py 플러그인 Alberto Solino (@agsolino) - impacket
Richard Moore - AES 모듈 Todd Whiteman - DES 모듈
David Buxton - 타임스탬프 변환 스크립트