제목 : 공식 점차 가이드

什么是Impacket​

Impacket은 네트워크 프로토콜을 처리하는 데 사용되는 Python 클래스 모음입니다. Impacket은 패킷에 대한 간단한 프로그래밍 방식 액세스와 스스로를 구현하는 특정 프로토콜 (예 : SMB1-3 및 MSRPC)을 제공하는 데 중점을 둡니다. 패킷은 원시 데이터에서 처음부터 구축되거나 구문 분석 할 수있는 반면 객체 지향 API는 프로토콜의 깊은 구조를 간단하게 만듭니다. 이 라이브러리는이 라이브러리에서 수행 할 수있는 작업을 찾는 예로 도구 세트를 제공합니다.
일부 도구에 대한 지침은 https://www.secureauth.com/labs/open-source-tools/impkacket을 방문하십시오

Impacket中包含以下协议​

이더넷, Linux "Cooked"패킷 캡처
IP, TCP, UDP, ICMP, IGMP, ARP
IPv4 및 IPv6을 지원합니다
NMB 및 SMB1, SMB2 및 SMB3 (고급 구현)
MSRPC 버전 5, 다양한 전송 프로토콜을 통한 TCP, SMB/TCP, SMB/NETBIOS 및 HTTP
비밀번호/해시/제목/키를 통한 간단한 NTLM 및 Kerberos 인증
EPM, DTYPES, LSAD, LSAT, NRPC, RRP, SAMR, SRVS, WKST, SCMR, BKRP, DHCPM, EVEN6, MGMT, SASEC, TSCH, DCOM, WMI
부분 TDS (MSSQL) 및 LDAP 프로토콜 구현.

获得Impacket​

컴파일 된 현재 및 이전 버전
오픈 소스 브랜치

程序安装​

快速开始​

최신 안정 버전을 받고 압축을 풀고 명령 PIP 설치를 실행하십시오. 그런 다음 디렉토리에서 실행하십시오.

安装要求​

Python 2.6/2.7 및 Python 3.6으로 알려진 Python 통역사는 이러한 예제를 실행하려면 실행할 수 있으며 Python2.7을 실행하려면 ArgParse 패키지를 설치하여 정상적으로 실행해야합니다.
Kerberos 지원을 위해서는 PYASN1 패키지를 설치해야합니다.
암호화 작업의 경우 Pycryptodomex 패키지를 설치해야합니다.
몇 가지 예를 들어 Pyopenssl (rdp_check.py) 및 ldap3 (ntlmrelayx.py)를 설치해야합니다.
ntlmrelayx.py의 경우 ldapdomaindump, flask 및 ldap3를 설치해야합니다.
Windows 아래에있는 경우 Pyreadline을 설치해야합니다.
최근에 발표 된 Impacket

安装​

소스를 설치하려면 IMPACKET 패키지가 변경된 디렉토리에서 다음 명령을 실행하십시오 : PIP 설치. 클래스를 기본 파이썬 모듈 경로에 설치합니다. 거기에 글을 쓰려면 특별한 권한이 필요할 수 있습니다. setup.py에서 사용할 수있는 명령 및 옵션에 대한 자세한 내용은 Python Setup.py-Help-Commands를 실행하십시오.

测试​

라이브러리 테스트 사례를 실행하려면 세 가지 주요 작업을 수행해야합니다.
Windows 2012 R2 도메인 컨트롤러를 설치하고 구성하십시오.
원격 레지스트리 서비스가 활성화되어 실행 중인지 확인하십시오.
필요한 정보로 dcetest.cfg 파일을 구성하십시오
Tox 설치 (PIP 설치 독소)
완료되면 Tox를 실행하고 결과를 기다릴 수 있습니다. 모든 것이 잘 진행되면 모든 테스트 사례가 통과해야합니다. IMPACKET/TESTS/HTMLMCOV/Index.html에 대한 덮어 쓰기 HTML 보고서를 찾을 수도 있습니다.

IMPACKET中包含以下工具​

远程执行​

psexec.py: psexec-like 함수 예, remcomsvc (https://github.com/kavika13/remcom)
smbexec.py : remcomsvc를 사용하여 psexec와 유사한 방법. 기술은 여기에 설명되어 있습니다. 우리의 구현은 로컬 Smbserver를 인스턴스화하여 명령의 출력을 수신함으로써 한 단계 더 나아갑니다. 대상 컴퓨터에 쓰기 가능한 공유가 없을 때 유용합니다.
ATEXEC.PY :이 예제는 작업 스케줄러 서비스를 통해 대상 컴퓨터에서 명령을 실행하고 실행 된 명령의 출력을 반환합니다.
WMIEXEC.PY : Windows Management Instrumentation을 통해 사용되는 반 인터랙티브 쉘. 대상 서버에 서비스/에이전트를 설치할 필요가 없으며 관리자로 실행되며 매우 숨겨져 있습니다.
dcomexec.py : wmiexec.py와 유사한 반 인터랙티브 쉘이지만 다른 dcom 엔드 포인트를 사용합니다. 현재 mmc20.application, shellwindows 및 shellbrowserwindow 객체를 지원합니다.
gettgt.py : 비밀번호, 해시 또는 aeskey를 지정하면이 스크립트는 TGT를 요청하고 CCACH로 저장합니다.
GetSt.py : CCACHE의 비밀번호, 해시, AESKEY 또는 TGT를 지정하면이 스크립트는 서비스 티켓을 요청하여 CCACHE로 저장합니다. 계정에 대표단 (프로토콜 변환 포함) 권한이 제한된 경우 -mimserate 매개 변수를 사용하여 다른 사용자를 대신하여 티켓을 요청할 수 있습니다.
getPac.py :이 스크립트는 지정된 대상 사용자의 PAC (허가 속성 인증서) 구조를 가져옵니다.이 스크립트는 일반 인증 된 사용자 자격 증명 만 있습니다. [MS-SFU]를 사용하여 S4Uself + 사용자 간 Kerberos 인증 조합을 혼합하여 달성됩니다.
getUserspns.py :이 예제는 일반 사용자 계정과 관련된 서비스 원명 이름을 찾아서 얻으려고합니다.
getnpusers.py :이 예제는 "Kerberos 사전 승인이 필요하지 않은"속성이있는 사용자에게 tgt (uf_dont_require_preauth)를 얻으려고합니다. 출력은 JTR과 호환됩니다
Ticketer.py :이 스크립트는 처음부터 금/실버 메모를 작성하거나 템플릿을 기반으로 (KDC의 법적 요청에 따라) Pac_logon_info 구조, 특히 그룹, 추가 인, 지속 시간 등에 설정된 일부 매개 변수를 사용자 정의 할 수 있습니다.
RAISECHILD.PY :이 스크립트는 (AB) 골든 티켓과 절제의 기초를 사용하여 하위 도메인-포지스트 권한 업그레이드를 달성합니다.

Windows Secrets​

Secretsdump.py :
프록시를 실행하지 않고 원격 기계에서 비밀을 덤프하기 위해 다양한 기술을 수행하십시오. SAM 및 LSA 비밀 (캐시 된 자격 증명 포함)의 경우 대상 시스템 (%SystemRoot%\ temp 디렉토리)에 두드러기를 저장하고 나머지 데이터를 읽으십시오. DIT 파일의 경우 DL_DRSGETNCCHANGES () 메소드를 사용하여 NTLM 해시 값, 일반 텍스트 자격 증명 (사용 가능한 경우) 및 Kerberos 키를 덤프합니다. 또한 smbexec/wmiexec 메소드를 사용하여 실행 된 vssadmin을 사용하여 ntds.dit을 덤프 할 수 있습니다. 스크립트를 사용할 수없는 경우 스크립트는 실행 해야하는 서비스를 시작합니다 (예 : 원격 레지스트리, 비활성화 된 경우에도 원격 레지스트리). 실행이 완료되면 원래 상태로 돌아갑니다.
Mimikatz.py : @gentilkiwi가 개발 한 원격 Mimikatz RPC 서버 제어를위한 미니 쉘

服务器工具/ MiTM攻击​

NTLMRELAYX.PY :이 스크립트는 NTLM 릴레이 공격을 수행하고 SMB 및 HTTP 서버를 설정하고 다양한 프로토콜 (SMB, HTTP, MSSQL, LDAP, IMAP, POP3 등)에 자격 증명을 설정합니다. 스크립트는 연결을 전달할 때 트리거 될 때 (예 : LDAP를 통해 사용자 생성) 또는 양말 모드에서 실행될 때 트리거 될 수있는 사전 정의 된 공격과 함께 사용할 수 있습니다. 이 모드에서는 각 릴레이의 연결에 대해 양말 프록시를 통해 여러 번 사용할 수 있습니다.
Karmasmb.py : 지정된 SMB 공유 및 PathName에 관계없이 특정 파일 내용에 응답하는 SMB 서버
smbserver.py:SMB 서버의 Python 구현을 통해 빠른 공유 및 사용자 계정을 설정할 수 있습니다.

WMI​

wmiquery.py : WQL 쿼리를 발행하고 대상 시스템에서 WMI 객체에 대한 설명을 얻을 수 있습니다 (예 : Win32_Account에서 이름 선택).
wmipersist.py :이 스크립트는 WMI 이벤트 소비자/필터를 생성/삭제하고 지정된 WQL 필터 또는 타이머를 기반으로 Visual Basic Basic을 실행하기 위해 둘 사이의 링크를 설정합니다.

已知的漏洞​

GoldenPac.py : MS14-068을 활용하십시오. 골든 티켓을 저장하고 대상 위치에서 Psexec 세션을 시작하십시오.
Sambapipe.py :이 스크립트는 CVE-2017-7494를 사용하여 -So 매개 변수를 통해 사용자가 지정한 공유 라이브러리를 업로드하고 실행합니다.
SMBRELAYX.PY : SMB 릴레이 공격 취약성 악용 CVE-2015-0005. 대상 시스템이 서명을 실행하고 컴퓨터 계정이 제공되면 모듈은 NetLogon을 통해 SMB 세션 키를 수집하려고 시도합니다. SMB 릴레이 공격 취약성 사용 CVE-2015-0005 사용

SMB / MSRPC​

SMBCLIENT.PY : 공유 및 파일 이름을 나열하고 파일을 이름 바꾸고 업로드 및 다운로드하고 디렉토리를 사용자 이름과 비밀번호 또는 사용자 이름 및 해시 조합으로 만들고 삭제할 수있는 공통 SMB 클라이언트입니다. 이것은 실제로 Impacket.smb를 사용하는 방법의 좋은 예입니다.
getarch.py :이 스크립트는 대상 (또는 대상 목록) 호스트에 연결하고 문서화 된 MSRPC 기능을 사용하여 (AB)가 설치 한 운영 체제 아키텍처 유형을 수집합니다.
rpcdump.py :이 스크립트는 대상에 등록 된 RPC 엔드 포인트 및 문자열 바인딩 목록을 덤프합니다. 또한 알려진 엔드 포인트 목록과 일치 시키려고합니다.
ifmap.py :이 스크립트는 대상의 관리 인터페이스에 바인딩하여 인터페이스 ID 목록을 얻습니다. 다른 인터페이스 UUID 목록 에서이 목록을 사용하여 각 인터페이스에 바인딩하고 인터페이스가 나열되어 있는지 또는 청취 중인지보고합니다.
opdump.py : 이것은 주어진 호스트name:port 및 msrpc 인터페이스에 바인딩됩니다. 그런 다음 처음 256 개의 조치 번호를 차례로 호출하고 각 호출의 결과를보고하려고합니다.
Samrdump.py : MSRPC 제품군의 보안 계정 관리자의 원격 인터페이스와 통신하는 응용 프로그램에서. 시스템 사용자 계정, 사용 가능한 리소스 공유 및이 서비스를 통해 내보낸 기타 민감한 정보가 나와 있습니다.
Services.py :이 스크립트는 [MS-SCMR] MSRPC 인터페이스를 통해 Windows 서비스를 작동하는 데 사용될 수 있습니다. 시작, 중지, 삭제, 상태, 구성, 목록, 작성 및 변경을 지원합니다.
netview.py : 원격 호스트에서 열린 세션 목록을 얻고 찾은 호스트에서 해당 세션 루프를 추적하고 원격 서버에서 로그인/종료 된 사용자가 추적합니다.
Reg.py : [MS-RRP] MSRPC 인터페이스를 통한 원격 레지스트리 작동 도구. 아이디어는 Reg.exe Windows 유틸리티와 유사한 기능을 제공하는 것입니다.=
LookupSid.py : [MS-LSAT] MSRPC 인터페이스를 통한 Windows Sid Brute-Force 프로그램의 예는 원격 사용자 및 그룹을 찾도록 설계되었습니다.

MSSQL / TDS​

MSSQLINSTANCE.PY : 대상 호스트에서 MSSQL 인스턴스 이름을 검색하십시오.
mssqlclient.py : mssql 클라이언트, SQL 및 Windows 인증 (HASH)을 지원합니다. 또한 TLS도 지원합니다.

文件格式​

esentutl.py : Extensibe 스토리지 엔진 형식 구현. ESE 데이터베이스의 덤핑 디렉토리, 페이지 및 테이블이 허용됩니다 (예 : NTDS.DIT).
ntfs-read.py:ntfs 형식 구현. 이 스크립트는 숨겨진/잠긴 콘텐츠를 포함하여 NTFS 볼륨을 탐색하고 추출하기위한 작은 반동 쉘을 제공합니다.
Registry-Read.py : Windows Registry 파일 형식 구현. 오프라인 레지스트리 구성 Hive를 구문 분석 할 수 있습니다

其他​

GetAdusers.py :이 스크립트는 도메인 사용자 및 해당 이메일 주소에 대한 데이터를 수집합니다. 또한 마지막 로그인 및 마지막 비밀번호 설정 속성에 대한 추가 정보도 포함됩니다.
MQTT_CHECK.PY : 다른 로그인 옵션을 사용하도록 설계된 간단한 MQTT 예제. 계정/암호 Brute Force 도구로 쉽게 변환 할 수 있습니다.
RDP_CHECK.PY : [MS-RDPBCGR] 및 [MS-CREDSSP]는 CREDSSP 인증을 달성하기 위해 부분적으로 구현되었습니다. 이 예제는 계정이 대상 호스트에서 유효한지 여부를 테스트합니다.
Sniff.py : PCPAY 라이브러리를 사용하여 지정된 인터페이스에서 전송 된 패킷을들을 수있는 간단한 패킷 스나이퍼.
Sniffer.py : 원시 소켓을 사용하여 지정된 프로토콜에 해당하는 트랜지 시트 패킷을 듣는 간단한 패킷 스나이퍼.
Ping.py : ICMP Echo 및 Echo-Reply 패킷을 사용하여 호스트의 상태를 확인하는 간단한 ICMP Ping. 원격 호스트가 시작되면 에코 레플리 패킷을 사용하여 에코 프로브에 응답해야합니다.
Ping6.py : ICMP 에코 및 에코 프리플스 패킷을 사용하여 호스트의 상태를 확인하는 간단한 IPv6 ICMP Ping.

源码​

https://github.com/secureauthcorp/impkacket을 방문하여 소스 코드 (개발 버전)를 볼 수 있습니다.
0.9.19, 2019 년 4 월 1 일 업데이트 -Gzip'd Tarball
0.9.18, 2018 년 12 월 5 일에 업데이트 -Gzip'd Tarball
0.9.17, 2018 년 5 월 30 일에 업데이트 -Gzip'd Tarball
0.9.15, 2016 년 6 월 28 일에 업데이트 -Gzip'd Tarball
0.9.14, 2016 년 1 월 7 일에 업데이트 -Gzip'd tarball,
0.9.13, 2015 년 5 월 4 일에 업데이트 -Gzip'd tarball,
0.9.12, 2014 년 7 월 20 일 업데이트 -gzip'd tarball,
0.9.11, 2014 년 2 월 3 일에 업데이트 -Gzip'd tarball,
0.9.10, 2013 년 5 월 6 일에 업데이트 -Gzip'd tarball,
0.9.9.9, 2012 년 7 월 20 일에 업데이트 -Gzip'd tarball, zip 파일
0.9.6.0, 2006 년 5 월 23 일에 업데이트 - Gzip'd tarball
0.9.5.2, 2006 년 4 월 3 일에 업데이트 -Gzip'd tarball, zip 파일
0.9.5.1, 2003 년 12 월 16 일에 업데이트 -Gzip'd tarball, zip 파일

文档​

더 많은 문서를 사용할 수 있으므로 대부분의 문서는 소스 코드에 Python의 문서 주석으로 포함됩니다. 테스트 사례 및 예를 통해 도서관의 기능에 대해 많은 것을 배울 수 있습니다.
 
뒤로
상단