Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
beefproject
GitHub Repository: beefproject/beef
Path: blob/master/extensions/evasion/obfuscation/scramble.rb
1154 views
1
#
2
# Copyright (c) 2006-2025 Wade Alcorn - [email protected]
3
# Browser Exploitation Framework (BeEF) - https://beefproject.com
4
# See the file 'doc/COPYING' for copying permission
5
#
6
module BeEF
7
module Extension
8
module Evasion
9
class Scramble
10
include Singleton
11
12
def need_bootstrap?
13
false
14
end
15
16
def execute(input, config)
17
@output = input
18
19
to_scramble = config.get('beef.extension.evasion.scramble')
20
to_scramble.each do |var, value|
21
if var == value
22
# Variables have not been scrambled yet
23
mod_var = BeEF::Core::Crypto.random_alphanum_string(3)
24
@output.gsub!(var, mod_var)
25
config.set("beef.extension.evasion.scramble.#{var}", mod_var)
26
print_debug "[OBFUSCATION - SCRAMBLER] string [#{var}] scrambled -> [#{mod_var}]"
27
else
28
# Variables already scrambled, re-use the one already created to maintain consistency
29
@output.gsub!(var, value)
30
print_debug "[OBFUSCATION - SCRAMBLER] string [#{var}] scrambled -> [#{value}]"
31
end
32
@output
33
end
34
35
if config.get('beef.extension.evasion.scramble_cookies')
36
# ideally this should not be static, but it's static in JS code, so fine for nowend
37
mod_cookie = BeEF::Core::Crypto.random_alphanum_string(5)
38
if config.get('beef.http.hook_session_name') == 'BEEFHOOK'
39
@output.gsub!('BEEFHOOK', mod_cookie)
40
config.set('beef.http.hook_session_name', mod_cookie)
41
print_debug "[OBFUSCATION - SCRAMBLER] cookie [BEEFHOOK] scrambled -> [#{mod_cookie}]"
42
else
43
@output.gsub!('BEEFHOOK', config.get('beef.http.hook_session_name'))
44
print_debug "[OBFUSCATION - SCRAMBLER] cookie [BEEFHOOK] scrambled -> [#{config.get('beef.http.hook_session_name')}]"
45
end
46
end
47
48
@output
49
end
50
end
51
end
52
end
53
end
54
55