コンテンツにスキップ

Msf::Auxiliary::AuthBrute は、ユーザ / パスワード辞書からのログイン試行を定型化します。実装は lib/msf/core/auxiliary/auth_brute.rb です。SSH / SMB / HTTP ログイン scanner などと組み合わせます。

include Msf::Auxiliary::AuthBrute
include Msf::Auxiliary::Scanner
include Msf::Auxiliary::Report
オプション意味
USERNAME / PASSWORD単一組
USER_FILE / PASS_FILE辞書
USERPASS_FILEuser pass 形式
USER_AS_PASSユーザ名をパスとしても試す
BLANK_PASSWORDS空パスワード
STOP_ON_SUCCESS成功でその host を止める
BRUTEFORCE_SPEED速度 0–5
DB_ALL_CREDS / DB_ALL_USERS / DB_ALL_PASSDB から候補追加
PASSWORD_SPRAYパス固定でユーザを回す(advanced)
def run_host(ip)
cred_collection = build_credential_collection(
username: datastore['USERNAME'],
password: datastore['PASSWORD']
)
scanner = Metasploit::Framework::LoginScanner::SSH.new(
configure_login_scanner(
host: ip,
port: rport,
cred_details: cred_collection,
stop_on_success: datastore['STOP_ON_SUCCESS'],
framework: framework,
framework_module: self
)
)
scanner.scan! do |result|
credential_data = result.to_h
credential_data.merge!(
module_fullname: fullname,
workspace_id: myworkspace_id
)
if result.success?
create_credential_and_login(credential_data)
print_good("#{ip}:#{rport} - Success: #{result.credential}")
else
invalidate_login(credential_data)
vprint_error("#{ip}:#{rport} - Failed: #{result.credential}")
end
end
end

実在の大きな例: modules/auxiliary/scanner/ssh/ssh_login.rb

パターン設定
単一正規クレデンシャル確認USERNAME + PASSWORD、辞書は空
ユーザ固定・パス辞書USERNAME + PASS_FILE
両方辞書USER_FILE + PASS_FILE
sprayPASSWORD_SPRAY true + ユーザ多数
DB の既存 cred を再利用DB_ALL_CREDS true(要 DB)
  • HTB / 検証環境でも lockout と速度に注意する。
  • DB 未接続で DB_ALL_* を立てると警告が出て無視される。
  • 「成功したらセッションも欲しい」場合は CreateSession 系オプションや CommandShell mixin を別途確認する(モジュールによる)。