#1# Copyright (c) 2006-2024 Wade Alcorn - [email protected]2# Browser Exploitation Framework (BeEF) - https://beefproject.com3# See the file 'doc/COPYING' for copying permission4#5# BeEF Configuration file67beef:8version: '0.5.4.0'9# More verbose messages (server-side)10debug: false11# More verbose messages (client-side)12client_debug: false13# Used for generating secure tokens14crypto_default_value_length: 801516# Credentials to authenticate in BeEF.17# Used by both the RESTful API and the Admin interface18credentials:19user: "beef"20passwd: "beef"2122# Interface / IP restrictions23restrictions:24# subnet of IP addresses that can hook to the framework25permitted_hooking_subnet: ["0.0.0.0/0", "::/0"]26# subnet of IP addresses that can connect to the admin UI27#permitted_ui_subnet: ["127.0.0.1/32", "::1/128"]28permitted_ui_subnet: ["0.0.0.0/0", "::/0"]29# subnet of IP addresses that cannot be hooked by the framework30excluded_hooking_subnet: []31# slow API calls to 1 every api_attempt_delay seconds32api_attempt_delay: "0.05"3334# HTTP server35http:36debug: false #Thin::Logging.debug, very verbose. Prints also full exception stack trace.37host: "0.0.0.0"38port: "3000"3940# Decrease this setting to 1,000 (ms) if you want more responsiveness41# when sending modules and retrieving results.42# NOTE: A poll timeout of less than 5,000 (ms) might impact performance43# when hooking lots of browsers (50+).44# Enabling WebSockets is generally better (beef.websocket.enable)45xhr_poll_timeout: 10004647# Public Domain Name / Reverse Proxy / Port Forwarding48#49# In order for the client-side BeEF JavaScript hook to be able to connect to BeEF,50# the hook JavaScript needs to be generated with the correct connect-back details.51#52# If you're using a public domain name, reverse proxy, or port forwarding you must53# configure the public-facing connection details here.5455#public:56# host: "beef.local" # public hostname/IP address57# port: "443" # public port (443 if the public server is using HTTPS)58# https: false # true/false5960# If using any reverse proxy you should also set allow_reverse_proxy to true below.61# Note that this causes the BeEF server to trust the X-Forwarded-For HTTP header.62# If the BeEF server is directly accessible, clients can spoof their connecting63# IP address using this header to bypass the IP address permissions/exclusions.64allow_reverse_proxy: false6566# Hook67hook_file: "/hook.js"68hook_session_name: "BEEFHOOK"6970# Allow one or multiple origins to access the RESTful API using CORS71# For multiple origins use: "http://browserhacker.com, http://domain2.com"72restful_api:73allow_cors: false74cors_allowed_domains: "http://browserhacker.com"7576# Prefer WebSockets over XHR-polling when possible.77websocket:78enable: false79port: 61985 # WS: good success rate through proxies80# Use encrypted 'WebSocketSecure'81# NOTE: works only on HTTPS domains and with HTTPS support enabled in BeEF82secure: true83secure_port: 61986 # WSSecure84ws_poll_timeout: 5000 # poll BeEF every x second, this affects how often the browser can have a command execute on it85ws_connect_timeout: 500 # useful to help fingerprinting finish before establishing the WS channel8687# Imitate a specified web server (default root page, 404 default error page, 'Server' HTTP response header)88web_server_imitation:89enable: true90type: "apache" # Supported: apache, iis, nginx91hook_404: false # inject BeEF hook in HTTP 404 responses92hook_root: false # inject BeEF hook in the server home page93# Experimental HTTPS support for the hook / admin / all other Thin managed web services94https:95enable: false96# In production environments, be sure to use a valid certificate signed for the value97# used in beef.http.public (the domain name of the server where you run BeEF)98key: "beef_key.pem"99cert: "beef_cert.pem"100101database:102file: "beef.db"103104# Autorun Rule Engine105autorun:106# this is used when rule chain_mode type is nested-forward, needed as command results are checked via setInterval107# to ensure that we can wait for async command results. The timeout is needed to prevent infinite loops or eventually108# continue execution regardless of results.109# If you're chaining multiple async modules, and you expect them to complete in more than 5 seconds, increase the timeout.110result_poll_interval: 300111result_poll_timeout: 5000112113# If the modules doesn't return status/results and timeout exceeded, continue anyway with the chain.114# This is useful to call modules (nested-forward chain mode) that are not returning their status/results.115continue_after_timeout: true116117# Enables DNS lookups on zombie IP addresses118dns_hostname_lookup: false119120# IP Geolocation121geoip:122enable: true123# GeoLite2 City database created by MaxMind, available from https://www.maxmind.com124database: '/usr/share/GeoIP/GeoLite2-City.mmdb'125126# You may override default extension configuration parameters here127# Note: additional experimental extensions are available in the 'extensions' directory128# and can be enabled via their respective 'config.yaml' file129extension:130admin_ui:131enable: true132base_path: "/ui"133demos:134enable: true135events:136enable: true137evasion:138enable: false139requester:140enable: true141proxy:142enable: true143network:144enable: true145metasploit:146enable: false147social_engineering:148enable: false149xssrays:150enable: true151152153