Path: blob/master/extensions/network/models/network_service.rb
1154 views
#1# Copyright (c) 2006-2025 Wade Alcorn - [email protected]2# Browser Exploitation Framework (BeEF) - https://beefproject.com3# See the file 'doc/COPYING' for copying permission4#5module BeEF6module Core7module Models8#9# Table stores each open port identified on the zombie browser's network(s)10#11class NetworkService < BeEF::Core::Model12belongs_to :hooked_browser1314#15# Stores a network service in the data store16#17def self.add(service = {})18unless BeEF::Filters.is_valid_hook_session_id?(service[:hooked_browser_id])19print_error 'Invalid hooked browser session'20return21end22unless BeEF::Filters.is_valid_ip?(service[:ip])23print_error 'Invalid IP address'24return25end26unless BeEF::Filters.is_valid_port?(service[:port])27print_error 'Invalid port'28return29end3031# save network services with private IP addresses only?32unless BeEF::Filters.is_valid_private_ip?(service[:ip])33configuration = BeEF::Core::Configuration.instance34if configuration.get('beef.extension.network.ignore_public_ips') == true35print_debug "Ignoring network service with public IP address [ip: #{service[:ip]}]"36return37end38end3940# store the returned network host details41BeEF::Core::Models::NetworkHost.create(42hooked_browser_id: service[:hooked_browser_id],43ip: service[:ip]44)4546# prevent duplicates47total = BeEF::Core::Models::NetworkService.where(48hooked_browser_id: service[:hooked_browser_id],49proto: service[:proto],50ip: service[:ip],51port: service[:port],52ntype: service[:ntype]53).length54return if total.positive?5556# store the returned network service details57network_service = BeEF::Core::Models::NetworkService.new(58hooked_browser_id: service[:hooked_browser_id],59proto: service[:proto],60ip: service[:ip],61port: service[:port],62ntype: service[:ntype]63)64if network_service.save65print_error 'Failed to save network service'66return67end6869network_service70end7172# Convert a Network Service object to JSON73def to_h74{75id: id,76hooked_browser_id: hooked_browser_id,77proto: proto,78ip: ip,79port: port,80ntype: ntype81}82end83end84end85end86end878889