
CUCMにホストされている電話設定ファイルから認証情報を検索・抽出するツール

CiscoのCUCM(Call Manager)が管理する環境において、電話機の設定ファイルから資格情報(クレデンシャル)を検出・抽出するツールです。
Cisco CUCM(Call Manager)を使用する場合、電話機の設定ファイルはTFTPサーバーに保存されます。これらのVoIP電話機設定ファイルには、電話機のSSH/管理者資格情報を含む機密データが頻繁に含まれています。
また、一部のブラウザでSSHユーザー名・パスワードフィールドに、CUCMの資格情報(多くの場合AD資格情報)が自動入力されるという問題もあります。これは管理者がブラウザに資格情報を保存している場合に発生します。パスワードマネージャーを使用している管理者でも、同様の問題に直面しており、資格情報が自動的にSSHユーザー名・パスワードフィールドに入力され、そのまま(平文で設定ファイルに)保存されてしまうケースが報告されています。
この問題はCUCM 12.0で修正されましたが、過去に保存された資格情報は依然として発見される可能性があります。
以下の対策により、ある程度リスクを軽減できます。
本ツールは、Dirk-jan氏のツールadidnsdumpのコードを多く利用して、ADIDNSからLDAP経由で電話機のホスト名リストを抽出します。この手法とツールの詳細については、関連ブログ記事をご覧ください。コードの多くは彼によるものです。
ツールをインストールするには:
git clone https://github.com/llt4l/iCULeak.py
cd iCULeak.py
pip install -r requirements.txt
DNSゾーン内のホスト名を持つ電話機に対してiCULeak.pyを実行する
python iCULeak.py -u domain\\llt4l -c 10.100.1.29 10.100.1.1
ファイルで指定された電話機リストに対してiCULeak.pyを実行する
python iCULeak.py -l phones_hostnames -c 10.100.1.29 10.100.1.1
フラグ:
-h または --help-u または --user フラグを使用します。ユーザー名の前にはドメインを付け、**domain\\llt4l** のような形式にします。代わりにリストを渡す場合はこのフラグはオプションです。-p または --password フラグを使用します。引数としてパスワードを指定しない場合でも、ユーザー名を指定すると実行時にパスワードの入力を求められます。-c または --cucm-server フラグで渡します。何らかの理由でCUCMが電話機設定ファイルを保存するために使用するTFTPサーバーが別のホストにある場合は、そのアドレスを指定してください。-l または --list フラグで指定します。ファイルは電話機のホスト名のリストで、各行が SEP112233445566 のような形式になります。-s または フラグを指定します。--save-nA または --no-authentication フラグを指定します。-O または --out-dir フラグを指定します。-v または --verbose フラグを指定します。-z または --zone フラグでゾーンを指定できます。