🙀

CrackMapExecのエラー解決方法 [Poetry]

2023/11/05に公開

エラー

結論

公式ドキュメントのインストール方法を実施する。
poetryを使いましょう。

apt-get install -y libssl-dev libffi-dev python-dev build-essential
git clone --recursive https://github.com/byt3bl33d3r/CrackMapExec
cd CrackMapExec
poetry install
poetry run crackmapexec

環境

kali linux

# lsb_release -a
No LSB modules are available.
Distributor ID: Kali
Description:    Kali GNU/Linux Rolling
Release:        2022.4
Codename:       kali-rolling

経緯

デフォルトインストールされているcrackmapexec (cme) を実行したらエラーが出た。
ライブラリをpip installすれば良いかと思ったけど入れてもエラーが出る。

# crackmapexec -h                       
/usr/lib/python3/dist-packages/paramiko/transport.py:236: CryptographyDeprecationWarning: Blowfish has been deprecated
  "class": algorithms.Blowfish,
Traceback (most recent call last):
  File "/usr/bin/crackmapexec", line 8, in <module>
    sys.exit(main())
             ^^^^^^
  File "/usr/lib/python3/dist-packages/cme/crackmapexec.py", line 117, in main
    args = gen_cli_args()
           ^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/cme/cli.py", line 76, in gen_cli_args
    protocol_object = p_loader.load_protocol(protocols[protocol]['path'])
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/cme/loaders/protocol_loader.py", line 15, in load_protocol
    protocol = imp.load_source('protocol', protocol_path)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/imp.py", line 170, in load_source
    module = _exec(spec, sys.modules[name])
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<frozen importlib._bootstrap>", line 621, in _exec
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "/usr/lib/python3/dist-packages/cme/protocols/rdp.py", line 11, in <module>
    from aardwolf.commons.factory import RDPConnectionFactory
  File "/usr/lib/python3/dist-packages/aardwolf/commons/factory.py", line 7, in <module>
    from asyauth.common.credentials import UniCredential
  File "/usr/lib/python3/dist-packages/asyauth/common/credentials/__init__.py", line 168, in <module>
    from asyauth.common.credentials.kerberos import KerberosCredential
  File "/usr/lib/python3/dist-packages/asyauth/common/credentials/kerberos.py", line 10, in <module>
    from minikerberos.pkinit import PKINIT
  File "/usr/lib/python3/dist-packages/minikerberos/pkinit.py", line 15, in <module>
    from oscrypto.keys import parse_pkcs12
  File "/usr/lib/python3/dist-packages/oscrypto/keys.py", line 5, in <module>
    from ._asymmetric import parse_certificate, parse_private, parse_public
  File "/usr/lib/python3/dist-packages/oscrypto/_asymmetric.py", line 27, in <module>
    from .kdf import pbkdf1, pbkdf2, pkcs12_kdf
  File "/usr/lib/python3/dist-packages/oscrypto/kdf.py", line 9, in <module>
    from .util import rand_bytes
  File "/usr/lib/python3/dist-packages/oscrypto/util.py", line 14, in <module>
    from ._openssl.util import rand_bytes
  File "/usr/lib/python3/dist-packages/oscrypto/_openssl/util.py", line 6, in <module>
    from ._libcrypto import libcrypto, libcrypto_version_info, handle_openssl_error
  File "/usr/lib/python3/dist-packages/oscrypto/_openssl/_libcrypto.py", line 9, in <module>
    from ._libcrypto_cffi import (
  File "/usr/lib/python3/dist-packages/oscrypto/_openssl/_libcrypto_cffi.py", line 44, in <module>
    raise LibraryNotFoundError('Error detecting the version of libcrypto')
oscrypto.errors.LibraryNotFoundError: Error detecting the version of libcrypto

解決方法

OffSecのDiscordで他の人も同じエラーが出ていたので同じ解決方法を実施した。
公式ドキュメントのインストール方法を実施する。
Poetryを使うのが良いらしい。そもそもpipはもう古いらしい...

Poetryとは

PoetryはPythonのパッケージ管理ツールで、プロジェクトの依存関係を管理し、仮想環境を構築することができます。pyproject.tomlという設定ファイルを使って、依存関係を管理します。開発者がPythonプロジェクトを整理し、パッケージの取り扱いを容易にするツールです。 (GPT-3.5より)

サンプルコマンド

# 多分pyproject.tomlがあるディレクトリに移動する必要がある(要勉強)
cd CrackMapExec
poetry run crackmapexec smb 192.168.50.100 -u usernames.txt -p passwords.txt --continue-on-success
poetry run crackmapexec smb 192.168.50.100 -u pachirisu -p "P@chis1ru" --shares

おまけ

CrackMapExecとは

CrackMapExec(CME)は、ネットワーク内でセキュリティ検査や侵入テストを行うためのオープンソースのツールです。主に、Windowsベースのネットワークで使用され、様々なネットワークプロトコルを利用してシステムへの侵入や情報収集を行うためのツールです。CMEは複数の機能を提供し、パスワードスプレー、ユーザー認証、共有フォルダのリストアップ、セキュリティ脆弱性の探査、セキュリティポリシーの評価などを実行できます。セキュリティ専門家やペネトレーションテスターがネットワークの脆弱性を評価し、セキュリティ上の問題を特定するためにCMEを利用することがあります。(GPT-3.5より)

Discussion