コンテンツにスキップ

カテゴリ目次へ戻る / コマンド全体目次へ戻る

パスワード、NT ハッシュ、AES 鍵、keytab のいずれかで TGT を要求し、ccache に保存します。

項目内容
実装examples/getTGT.py
カテゴリKerberos / チケット処理
規模120 行
配布setup.py の scripts=examples/*.py によりスクリプトとしてインストール

オプションの最新の定義は python examples/getTGT.py -h で確認できます。

引数説明
identity[domain/]username[:password]
-tsAdds timestamp to every logging output
-debugTurn DEBUG output ON
-hashesNTLM hashes, format is LMHASH:NTHASH
-no-passdon’t ask for password (useful for -k)
-kUse Kerberos authentication. Grabs credentials from ccache file (KRB5CCNAME) based on target parameters. If valid credentials cannot be found, it will use the ones specified in the command line
-aesKeyAES key to use for Kerberos Authentication (128 or 256 bits)
-dc-ipIP Address of the domain controller. If ommited it use the domain part (FQDN) specified in the target parameter
-serviceRequest a Service Ticket directly through an AS-REQ
-principalTypePrincipalType of the token, can be one of NT_UNKNOWN, NT_PRINCIPAL, NT_SRV_INST, NT_SRV_HST, NT_SRV_XHST, NT_UID, NT_SMTP_NAME, NT_ENTERPRISE, NT_WELLKNOWN, NT_SRV_HST_DOMAIN, NT_MS_PRINCIPAL, NT_MS_PRINCIPAL_AND_ID, NT_ENT_PRINCIPAL_AND_ID; default is NT_PRINCIPAL,

関連技術: Kerberos の AS-REQ/AS-REP、etype 選択、key usage 1/3。

identity と principal type を解析し、資格情報を binary key へ変換して getKerberosTGT() を呼びます。成功すると KDC 応答、cipher、session key を CCache.fromTGT() 相当の処理へ渡し、<principal>.ccache として保存します。-service で要求 principal を変更できます。

TGT は client principal が KDC の Ticket Granting Service を利用するための ticket です。run() は入力された password、LM/NT hash、AES key のいずれを 使うかを整理し、principal name type と domain を Principal に変換して getKerberosTGT() へ渡します。password の場合は KDC の pre-auth 応答に 含まれる salt/enctype を使って long-term key が導出されます。

AS exchange が成功すると、戻り値には encoded AS-REP、ticket の cipher profile、 AS-REP を復号して得た client/KDC session key などが含まれます。ticket 本体は krbtgt key で暗号化されているため client は中身を直接読む必要がなく、以後の TGS-REQ では ticket と session key の組を使います。saveTicket() はこの組を ccache の credential として直列化します。

-service を指定すると AS-REQ で通常の krbtgt/domain 以外の service を 要求する経路になります。-principalType は KDC が principal をどう解釈するか に関わり、単なる表示形式ではありません。失敗時は pre-auth type 不一致、 clock skew、salt/key 不一致、KDC 到達不能を分け、空または壊れた ccache を 成功成果物として残さないようにします。

シンボル位置責務を追う入口
GETTGT35__init__()、saveTicket()、run()
モジュール使用する主な名前
impacketversion
impacket.exampleslogger
impacket.examples.utilsparse_identity
impacket.krb5.kerberosv5getKerberosTGT
impacket.krb5constants
impacket.krb5.typesPrincipal
impacket.krb5.ccacheCCache
  • 照会や認証の試行が中心です。実行回数が多いと監査ログやアカウントロック、対象の負荷に影響します。
  • オプションによりローカルファイルを作成または更新します。既存ファイルの扱いと秘密情報を含む出力の権限を確認してください。
  • 失敗時は、名前解決、接続、認証、サービスの状態、権限のどこで止まったかを、プロトコルのステータスから切り分けます。

krb5.kerberosv5 / types / constants と共通 identity parser を使用します。GETTGT.run() と saveTicket() の小さな構成なので、認証方式を増やす場合は key 選択と保存処理を分離したままにします。