Jump to content

インパケットとは

Impacketは、ネットワークプロトコルを処理するために使用されるPythonクラスのコレクションです。 Impacketは、パケットへのシンプルなプログラムアクセスと、自分自身を実装する特定のプロトコル(SMB1-3やMSRPCなど)の提供に焦点を当てています。パケットはゼロから構築するか、生データから解析できますが、オブジェクト指向のAPIにより、プロトコルの深い構造がシンプルになります。このライブラリは、このライブラリで実行できるアクションを見つける例として、一連のツールを提供します。

いくつかのツールの指示については、https://www.secureauth.com/labs/open-source-tools/ympacketにアクセスしてください

Impacketには、次のプロトコルが含まれています

イーサネット、Linux「調理済み」パケットキャプチャ

IP、TCP、UDP、ICMP、IGMP、ARP

IPv4とIPv6をサポートします

NMBおよびSMB1、SMB2およびSMB3(高度な実装)

MSRPCバージョン5、さまざまな輸送プロトコルを介して:TCP、SMB/TCP、SMB/NetBios、およびHTTP

パスワード/ハッシュ/タイトル/キーを使用した単純なNTLMおよびKerberos認証

次のMSRPCインターフェイスを部分的または完全に実装します:EPM、DTYPES、LSAD、LSAT、NRPC、RRP、SAMR、SRVS、WKST、SCMR、BKRP、DHCPM、さらに6、MGMT、SASEC、TSCH、DCOM、WMI

部分TDS(MSSQL)およびLDAPプロトコルの実装。

インパケットを取得

コンパイルされた電流および以前のバージョン

オープンソースブランチ

プログラムのインストール

すぐに開始

最新の安定したバージョンを入手し、それを解凍してコマンドPIPインストールを実行します。次に、ディレクトリで実行します。

インストール要件

Python 2.6/2.7に知られているPythonインタープリターとPython 3.6は、これらの例を実行する場合は実行できます。Python2.7では、argparseパッケージをインストールして普通に実行する必要があります。

Kerberosサポートのために、Pyasn1パッケージをインストールする必要があります

暗号化操作には、PycryptoDomexパッケージをインストールする必要があります

いくつかの例については、pyopenssl(rdp_check.py)とldap3(ntlmrelayx.py)をインストールする必要があります

ntlmrelayx.pyについては、ldapdomaindump、flask、ldap3もインストールする必要があります

Windowsの下にいる場合は、pyreadlineをインストールする必要があります

最近リリースされたインパケット

インストール

ソースをインストールするには、Impacketパッケージが解凍されているディレクトリから次のコマンドを実行します:PIPインストール。これにより、クラスがデフォルトのPythonモジュールパスにインストールされます。そこに記述するには、特別な権限が必要になる場合があることに注意してください。 setup.pyで利用可能なコマンドとオプションの詳細については、python setup.pyを実行します - ヘルプコマンド

テスト

ライブラリテストケースを実行する場合は、3つの主なことをする必要があります。

Windows 2012 R2ドメインコントローラーをインストールして構成します。

リモートレジストリサービスが有効になって実行されていることを確認してください。

必要な情報を使用して、dcetest.cfgファイルを構成します

TOX(PIPインストールTOX)をインストールする

完了したら、TOXを実行して結果を待つことができます。すべてがうまくいけば、すべてのテストケースが合格するはずです。また、Impacket/tests/htmlmcov/index.htmlに関する上書きのHTMLレポートを見つけることができます

インパケットには、次のツールが含まれています

リモート実行

psexec.py: psexec-like関数の例、remcomsvc(https://github.com/kavika13/remcom)を使用して

smbexec.py:remcomsvcを使用したpsexec w/oと同様の方法。この技術については、ここで説明します。私たちの実装は、コマンドの出力を受け取るためにローカルSMBServerをインスタンス化することにより、さらに一歩進んでいます。これは、ターゲットコンピューターに手数料の共有を利用できない場合に役立ちます。

atexec.py:この例は、タスクスケジューラサービスを介してターゲットコンピューターでコマンドを実行し、実行されたコマンドの出力を返します。

wmiexec.py:Windows Management Instrumentationを介して使用される半互換シェル。これは、ターゲットサーバーにサービス/エージェントをインストールする必要はありません。

dcomexec.py:wmiexec.pyに似た半互換シェルですが、異なるdcomエンドポイントを使用しています。現在、MMC20.Application、ShellWindows、およびShellBrowserWindowオブジェクトをサポートしています。

gettgt.py:パスワード、ハッシュ、またはaeskeyを指定すると、このスクリプトはtgtを要求し、ccacheとして保存します

getSt.py:CCACHEでパスワード、ハッシュ、AESKEY、またはTGTを指定すると、このスクリプトはサービスチケットを要求し、CCACHEとして保存します。アカウントが委任(プロトコル変換を伴う)権限を制約している場合、-Imprionateパラメーターを使用して別のユーザーに代わってチケットをリクエストできるようになります。

getpac.py:このスクリプトは、指定されたターゲットユーザーのPAC(許可属性証明書)構造を取得します。 [MS-SFU]を使用して、S4Uself +ユーザーからユーザーへのKerberos認証の組み合わせを混合することで達成されます。

getUserSpns.py:この例では、通常のユーザーアカウントに関連付けられたサービスプリンシパル名を見つけて取得しようとします。

getnpusers.py:この例では、「kerberos no kerberosが事前に必要である」と属性を持つユーザーに対して、TGT(uf_dont_require_prauth)を取得しようとします。出力はJTRと互換性があります

Ticteter.py:このスクリプトは、ゼロから金/銀のノートを作成するか、テンプレート(KDCの法的要求に従って)に基づいて作成され、PAC_LOGON_INFO構造、特にグループ、アドイン、期間などで設定されたパラメーターをカスタマイズできます。

raisechild.py:このスクリプトは、(ab)ゴールデンチケットとエクストラシドの基礎を使用して、サブドメインから爆発の許可アップグレードを実現します。

windowsの秘密

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を介してユーザーを作成する)またはSocksモードで実行されます。このモードでは、各リレーの接続について、Socksプロキシを介して数回使用できます。

karmasmb.py:指定されたSMB共有とパス名に関係なく、特定のファイルコンテンツに応答するSMBサーバー

smbserver.py:SMBサーバーのPython実装により、共有アカウントとユーザーアカウントの迅速なセットアップが可能になります。

wmi

wmiquery.py:WQLクエリを発行し、ターゲットシステムでWMIオブジェクトの説明を取得できます(たとえば、win32_accountから名前の選択)

wmipersist.py:このスクリプトは、WMIイベント消費者/フィルターを作成/削除し、2つの間にリンクを確立し、指定された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 < / H4>

smbclient.py:共有名とファイル名をリストし、ファイルし、ファイルを変更、アップロード、ダウンロードし、ディレクトリを作成および削除する一般的なSMBクライアント。これは、実際にはdibacket.smbの使用方法の素晴らしい例です

getArch.py:このスクリプトは、ターゲット(またはターゲットリスト)ホストに接続し、文書化されたMSRPC機能を使用して(AB)がインストールしたオペレーティングシステムアーキテクチャタイプを収集します。

rpcdump.py:このスクリプトは、ターゲットに登録されているRPCエンドポイントと文字列バインディングリストをダンプします。また、それらを既知のエンドポイントのリストと一致させようとします。

IFMAP.py:このスクリプトは、ターゲットの管理インターフェイスにバインドして、インターフェイスIDのリストを取得します。このリストを別のインターフェイスUUIDリストに使用し、各インターフェイスにバインドし、インターフェイスがリストされているかリスニングされているかを報告しようとします。

opdump.py:これは、指定されたhostname: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 < / h4>

mssqlinstance.py:ターゲットホストからMSSQLインスタンス名を取得します。

MSSQLCLIENT.PY:MSSQLクライアントは、SQLおよびWindows認証(HASH)をサポートしています。 TLSもサポートします。

ファイル形式

esentutl.py:拡張ストレージエンジン形式の実装。 ESEデータベースのディレクトリ、ページ、テーブルのダンピングを許可します(ntds.ditなど)

ntfs-read.py:ntfs形式の実装。このスクリプトは、非表示/ロックされたコンテンツを含むNTFSボリュームを閲覧および抽出するための小さなリバウンドシェルを提供します

registry-read.py:Windowsレジストリファイル形式の実装。オフラインレジストリ構成ハイブを解析することができます

その他

getAdusers.py:このスクリプトは、ドメインユーザーとその対応するメールアドレスに関するデータを収集します。また、最後のログインと最後のパスワード設定プロパティに関するいくつかの追加情報も含まれます。

MQTT_CHECK.PY:異なるログインオプションを使用するように設計された簡単なMQTT例。アカウント/パスワードブルートフォースツールに簡単に変換できます。

rdp_check.py:[ms-rdpbcgr]および[ms-credssp]は、credssp認証を達成するためにのみ部分的に実装されました。この例では、アカウントがターゲットホストで有効かどうかをテストします。

Sniff.py:PCAPYライブラリを使用して、指定されたインターフェイスに送信されたパケットをリッスンするシンプルなパケットSniffer。

sniffer.py:生のソケットを使用して指定されたプロトコルに対応する輸送中のパケットをリッスンするシンプルなパケットスニファー。

ping.py:ICMPエコーとエコーリファリーパケットを使用して、ホストのステータスを確認する単純なICMP Ping。リモートホストが開始された場合は、エコーリェプリーパケットを使用してエコープローブに応答する必要があります。

Ping6.py:ICMPエコーとエコーリファリーパケットを使用してホストのステータスを確認する単純なIPv6 ICMP Ping。

ソースコード

https://github.com/secureauthcorp/impacketにアクセスして、ソースコード(開発バージョン)を表示できます

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のドキュメントコメントとしてソースコードに含まれています。また、テストのケースと例を通じて、図書館の機能について多くを学ぶこともできます。

0 Comments

Recommended Comments

There are no comments to display.

Guest
Add a comment...