简体中文 | English
主にネットワークカメラを対象とした脆弱性スキャンフレームワークです。現在、Hikvision、Dahua、Uniview、D-Linkなどの一般的なデバイスに対応しています。
Linux または Mac システムで使用してください。Python 3.8 以上がインストールされていることを確認してください。3.11 は多くのパッケージとの互換性が良くないため、推奨しません。
git clone https://github.com/jorhelp/Ingram.git
cd Ingram
pip3 install virtualenv
python3 -m virtualenv venv
source venv/bin/activate
pip3 install -r requirements.txt
以上でインストール完了です!
仮想環境で設定しているため、実行前に仮想環境を有効化してください: source venv/bin/activate
ターゲットファイル(例: targets.txt)を用意します。このファイルにはスキャンするIPアドレスを行ごとに記述します。形式は以下の通り:
# シャープ(#)でコメントを記述できます
# 単一IPアドレス
192.168.0.1
# IPアドレスとスキャンするポート
192.168.0.2:80
# '/' を含むIPレンジ
192.168.0.0/16
# '-' を含むIPレンジ
192.168.0.0-192.168.255.255
python3 run_ingram.py -i スキャンするファイル -o 出力フォルダ
それ以外の場合、デフォルトでは一般的なポートのみスキャンします(Ingram/config.py で定義)。他のポートを一括スキャンするには、自分で指定します。例:
python3 run_ingram.py -i スキャンするファイル -o 出力フォルダ -p 80 81 8000
-t パラメータで調整可能:python3 run_ingram.py -i スキャンするファイル -o 出力フォルダ -t 500
中断からの再開に対応しています。ただし、リアルタイムで状態を記録するわけではなく、一定間隔で記録するため、前回の実行状態に完全に復元できるわけではありません。ネットワークや異常でスキャンが中断した場合、前回と同じスキャンコマンドを再実行することでスキャンを継続できます。
全パラメータ:
optional arguments:
-h, --help show this help message and exit
-i IN_FILE, --in_file IN_FILE
the targets will be scan
-o OUT_DIR, --out_dir OUT_DIR
the dir where results will be saved
-p PORTS [PORTS ...], --ports PORTS [PORTS ...]
the port(s) to detect
-t TH_NUM, --th_num TH_NUM
the processes num
-T TIMEOUT, --timeout TIMEOUT
requests timeout
-D, --disable_snapshot
disable snapshot
--debug
強力なポートスキャナを利用してアクティブホストを取得し、Ingramのスキャン範囲を絞り込むことで実行速度を向上できます。具体的には、ポートスキャナの結果ファイルを ip:port 形式に整形し、Ingramの入力として使用します。
ここでは masscan を例に簡単にデモンストレーションします(masscanの詳細な使い方は割愛します)。まず、masscan を使用してポート80または8000-8008が開いているホストをスキャン: masscan -p80,8000-8008 -iL ターゲットファイル -oL 結果ファイル --rate 8000
masscan の実行後、結果ファイルを整形: grep 'open' 結果ファイル | awk '{printf"%s:%s\n", $4, $3}' > targets.txt
その後、これらのホストをスキャン: python run_ingram.py -i targets.txt -o out
run_ingram.py に書き込んでください:# wechat
config.set_val('WXUID', 'ここにuidを記述')
config.set_val('WXTOKEN', 'ここにtokenを記述')
.
├── not_vulnerable.csv
├── results.csv
├── snapshots
└── log.txt
results.csv には完全な結果が保存されます。形式: ip, ポート, デバイスタイプ, ユーザー名, パスワード, 脆弱性エントリ:
not_vulnerable.csv には脆弱性が露出していないデバイスが保存されます。
snapshots には一部のデバイスのスナップショットが保存されます:
ブラウザから直接ログインしてプレビュー可能
一括で確認したい場合は、スクリプト show/show_rtsp/show_all.py を用意していますが、まだ問題があります:
本ツールはセキュリティテスト専用です。不正な目的での使用は固く禁じられており、その結果については本チームは一切責任を負いません。
Thanks to Aiminsun for CVE-2021-36260
Thanks to chrisjd20 for hidvision config file decryptor
Thanks to mcw0 for DahuaConsole