rex-exploitation 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (69) hide show
  1. checksums.yaml +7 -0
  2. checksums.yaml.gz.sig +0 -0
  3. data.tar.gz.sig +1 -0
  4. data/.gitignore +9 -0
  5. data/.rspec +2 -0
  6. data/.travis.yml +5 -0
  7. data/CODE_OF_CONDUCT.md +74 -0
  8. data/Gemfile +4 -0
  9. data/README.md +33 -0
  10. data/Rakefile +6 -0
  11. data/bin/console +14 -0
  12. data/bin/setup +8 -0
  13. data/data/exploits/cmdstager/debug_asm +91 -0
  14. data/data/exploits/cmdstager/debug_write +819 -0
  15. data/data/exploits/cmdstager/vbs_b64 +40 -0
  16. data/data/exploits/cmdstager/vbs_b64_adodb +50 -0
  17. data/data/exploits/cmdstager/vbs_b64_noquot +49 -0
  18. data/data/exploits/cmdstager/vbs_b64_sleep +41 -0
  19. data/data/js/detect/ie_addons.js +89 -0
  20. data/data/js/detect/misc_addons.js +157 -0
  21. data/data/js/detect/os.js +831 -0
  22. data/data/js/memory/explib2/lib/explib2.js +426 -0
  23. data/data/js/memory/explib2/payload/drop_exec.js +33 -0
  24. data/data/js/memory/explib2/payload/exec.js +10 -0
  25. data/data/js/memory/heap_spray.js +17 -0
  26. data/data/js/memory/heaplib2.js +192 -0
  27. data/data/js/memory/mstime_malloc.js +31 -0
  28. data/data/js/memory/property_spray.js +38 -0
  29. data/data/js/network/ajax_download.js +18 -0
  30. data/data/js/network/ajax_post.js +18 -0
  31. data/data/js/network/xhr_shim.js +15 -0
  32. data/data/js/utils/base64.js +126 -0
  33. data/data/ropdb/flash.xml +80 -0
  34. data/data/ropdb/hxds.xml +66 -0
  35. data/data/ropdb/java.xml +33 -0
  36. data/data/ropdb/msvcrt.xml +71 -0
  37. data/data/ropdb/reader.xml +132 -0
  38. data/data/ropdb/samba.xml +436 -0
  39. data/data/ropdb/stagefright.xml +225 -0
  40. data/lib/rex/exploitation.rb +7 -0
  41. data/lib/rex/exploitation/cmdstager.rb +11 -0
  42. data/lib/rex/exploitation/cmdstager/base.rb +189 -0
  43. data/lib/rex/exploitation/cmdstager/bourne.rb +118 -0
  44. data/lib/rex/exploitation/cmdstager/certutil.rb +114 -0
  45. data/lib/rex/exploitation/cmdstager/debug_asm.rb +139 -0
  46. data/lib/rex/exploitation/cmdstager/debug_write.rb +133 -0
  47. data/lib/rex/exploitation/cmdstager/echo.rb +166 -0
  48. data/lib/rex/exploitation/cmdstager/printf.rb +121 -0
  49. data/lib/rex/exploitation/cmdstager/tftp.rb +70 -0
  50. data/lib/rex/exploitation/cmdstager/vbs.rb +125 -0
  51. data/lib/rex/exploitation/egghunter.rb +423 -0
  52. data/lib/rex/exploitation/encryptjs.rb +79 -0
  53. data/lib/rex/exploitation/heaplib.js.b64 +331 -0
  54. data/lib/rex/exploitation/heaplib.rb +107 -0
  55. data/lib/rex/exploitation/js.rb +6 -0
  56. data/lib/rex/exploitation/js/detect.rb +70 -0
  57. data/lib/rex/exploitation/js/memory.rb +80 -0
  58. data/lib/rex/exploitation/js/network.rb +83 -0
  59. data/lib/rex/exploitation/js/utils.rb +32 -0
  60. data/lib/rex/exploitation/jsobfu.rb +17 -0
  61. data/lib/rex/exploitation/obfuscatejs.rb +336 -0
  62. data/lib/rex/exploitation/omelet.rb +321 -0
  63. data/lib/rex/exploitation/opcodedb.rb +819 -0
  64. data/lib/rex/exploitation/ropdb.rb +190 -0
  65. data/lib/rex/exploitation/seh.rb +93 -0
  66. data/lib/rex/exploitation/version.rb +5 -0
  67. data/rex-exploitation.gemspec +35 -0
  68. metadata +298 -0
  69. metadata.gz.sig +0 -0
@@ -0,0 +1,190 @@
1
+ # -*- coding: binary -*-
2
+ require 'rex/text'
3
+ require 'rexml/document'
4
+
5
+
6
+ module Rex
7
+ module Exploitation
8
+
9
+ ###
10
+ #
11
+ # This class provides methods to access the ROP database, in order to generate
12
+ # a ROP-compatible payload on the fly.
13
+ #
14
+ ###
15
+ class RopDb
16
+ def initialize
17
+ @base_path = File.join(File.dirname(__FILE__), '../../../data/ropdb/')
18
+ end
19
+
20
+ public
21
+
22
+
23
+ #
24
+ # Returns true if a ROP chain is available, otherwise false
25
+ #
26
+ def has_rop?(rop_name)
27
+ File.exist?(File.join(@base_path, "#{rop_name}.xml"))
28
+ end
29
+
30
+ #
31
+ # Returns an array of ROP gadgets. Each gadget can either be an offset, or a value (symbol or
32
+ # some integer). When the value is a symbol, it can be one of these: :nop, :junk, :size,
33
+ # :unsafe_negate_size, and :safe_negate_size
34
+ # Note if no RoP is found, it returns an empry array.
35
+ # Arguments:
36
+ # rop_name - name of the ROP chain.
37
+ # opts - A hash of optional arguments:
38
+ # 'target' - A regex string search against the compatibility list.
39
+ # 'base' - Specify a different base for the ROP gadgets.
40
+ #
41
+ def select_rop(rop, opts={})
42
+ target = opts['target'] || ''
43
+ base = opts['base'] || nil
44
+
45
+ raise RuntimeError, "#{rop} ROP chain is not available" if not has_rop?(rop)
46
+ xml = load_rop(File.join(@base_path, "#{rop}.xml"))
47
+
48
+ gadgets = []
49
+
50
+ xml.elements.each("db/rop") { |e|
51
+ name = e.attributes['name']
52
+ next if not has_target?(e, target)
53
+
54
+ if not base
55
+ default = e.elements['gadgets'].attributes['base'].scan(/^0x([0-9a-f]+)$/i).flatten[0]
56
+ base = default.to_i(16)
57
+ end
58
+
59
+ gadgets << parse_gadgets(e, base)
60
+ }
61
+ return gadgets.flatten
62
+ end
63
+
64
+
65
+ #
66
+ # Returns a payload with the user-supplied stack-pivot, a ROP chain,
67
+ # and then shellcode.
68
+ # Arguments:
69
+ # rop - Name of the ROP chain
70
+ # payload - Payload in binary
71
+ # opts - A hash of optional arguments:
72
+ # 'nop' - Used to generate nops with generate_sled()
73
+ # 'badchars' - Used in a junk gadget
74
+ # 'pivot' - Stack pivot in binary
75
+ # 'target' - A regex string search against the compatibility list.
76
+ # 'base' - Specify a different base for the ROP gadgets.
77
+ #
78
+ def generate_rop_payload(rop, payload, opts={})
79
+ nop = opts['nop'] || nil
80
+ badchars = opts['badchars'] || ''
81
+ pivot = opts['pivot'] || ''
82
+ target = opts['target'] || ''
83
+ base = opts['base'] || nil
84
+
85
+ rop = select_rop(rop, {'target'=>target, 'base'=>base})
86
+ # Replace the reserved words with actual gadgets
87
+ rop = rop.map {|e|
88
+ if e == :nop
89
+ sled = (nop) ? nop.generate_sled(4, badchars).unpack("V*")[0] : 0x90909090
90
+ elsif e == :junk
91
+ Rex::Text.rand_text(4, badchars).unpack("V")[0].to_i
92
+ elsif e == :size
93
+ payload.length
94
+ elsif e == :unsafe_negate_size
95
+ get_unsafe_size(payload.length)
96
+ elsif e == :safe_negate_size
97
+ get_safe_size(payload.length)
98
+ else
99
+ e
100
+ end
101
+ }.pack("V*")
102
+
103
+ raise RuntimeError, "No ROP chain generated successfully" if rop.empty?
104
+
105
+ return pivot + rop + payload
106
+ end
107
+
108
+ private
109
+
110
+
111
+ #
112
+ # Returns a size that's safe from null bytes.
113
+ # This function will keep incrementing the value of "s" until it's safe from null bytes.
114
+ #
115
+ def get_safe_size(s)
116
+ safe_size = get_unsafe_size(s)
117
+ while (safe_size.to_s(16).rjust(8, '0')).scan(/../).include?("00")
118
+ safe_size -= 1
119
+ end
120
+
121
+ safe_size
122
+ end
123
+
124
+
125
+ #
126
+ # Returns a size that might contain one or more null bytes
127
+ #
128
+ def get_unsafe_size(s)
129
+ 0xffffffff - s + 1
130
+ end
131
+
132
+
133
+ #
134
+ # Checks if a ROP chain is compatible
135
+ #
136
+ def has_target?(rop, target)
137
+ rop.elements.each('compatibility/target') { |t|
138
+ return true if t.text =~ /#{target}/i
139
+ }
140
+ return false
141
+ end
142
+
143
+ #
144
+ # Returns the database in XML
145
+ #
146
+ def load_rop(file_path)
147
+ f = File.open(file_path, 'rb')
148
+ xml = REXML::Document.new(f.read(f.stat.size))
149
+ f.close
150
+ return xml
151
+ end
152
+
153
+
154
+ #
155
+ # Returns gadgets
156
+ #
157
+ def parse_gadgets(e, image_base)
158
+ gadgets = []
159
+ e.elements.each('gadgets/gadget') { |g|
160
+ offset = g.attributes['offset']
161
+ value = g.attributes['value']
162
+
163
+ if offset
164
+ addr = offset.scan(/^0x([0-9a-f]+)$/i).flatten[0]
165
+ gadgets << (image_base + addr.to_i(16))
166
+ elsif value
167
+ case value
168
+ when 'nop'
169
+ gadgets << :nop
170
+ when 'junk'
171
+ gadgets << :junk
172
+ when 'size'
173
+ gadgets << :size
174
+ when 'unsafe_negate_size'
175
+ gadgets << :unsafe_negate_size
176
+ when 'safe_negate_size'
177
+ gadgets << :safe_negate_size
178
+ else
179
+ gadgets << value.to_i(16)
180
+ end
181
+ else
182
+ raise RuntimeError, "Missing offset or value attribute in '#{name}'"
183
+ end
184
+ }
185
+ return gadgets
186
+ end
187
+ end
188
+
189
+ end
190
+ end
@@ -0,0 +1,93 @@
1
+ # -*- coding: binary -*-
2
+ require 'rex/text'
3
+ require 'rex/arch/x86'
4
+
5
+ module Rex
6
+ module Exploitation
7
+
8
+ ###
9
+ #
10
+ # This class provides methods for generating SEH registration records
11
+ # in a dynamic and flexible fashion. The records can be generated with
12
+ # the short jump at a random offset into the next pointer and with random
13
+ # padding in between the handler and the attacker's payload.
14
+ #
15
+ ###
16
+ class Seh
17
+
18
+ #
19
+ # Creates a new instance of the class and initializes it with the supplied
20
+ # bad character list. The space argument denotes how much room is
21
+ # available for random padding and the NOP argument can be used to generate
22
+ # a random NOP sled that is better than 0x90.
23
+ #
24
+ def initialize(badchars = nil, space = nil, nop = nil)
25
+ self.badchars = badchars || ''
26
+ self.space = (space && space > 121) ? 121 : space
27
+ self.nop = nop
28
+ end
29
+
30
+ #
31
+ # Generates an SEH record
32
+ #
33
+ def generate_seh_record(handler, dynamic=false)
34
+ if (dynamic)
35
+ generate_dynamic_seh_record(handler)
36
+ else
37
+ generate_static_seh_record(handler)
38
+ end
39
+ end
40
+
41
+ #
42
+ # Generates a fake SEH registration record with the supplied handler
43
+ # address for the handler, and a nop generator to use when generating
44
+ # padding inside the next pointer. The NOP generator must implement the
45
+ # 'generate_sled' method that takes a length and a list of bad
46
+ # characters.
47
+ #
48
+ def generate_dynamic_seh_record(handler)
49
+
50
+ # Generate the padding up to the size specified or 121 characters
51
+ # maximum to account for the maximum range of a short jump plus the
52
+ # record size.
53
+ pad = rand(space || 121)
54
+ rsize = pad + 8
55
+
56
+ # Calculate the random index into the next ptr to store the short jump
57
+ # instruction
58
+ jmpidx = rand(3)
59
+
60
+ # Build the prefixed sled for the bytes that come before the short jump
61
+ # instruction
62
+ sled = (nop) ? nop.generate_sled(jmpidx, badchars) : ("\x90" * jmpidx)
63
+
64
+ # Seed the record and any space after the record with random text
65
+ record = Rex::Text.rand_text(rsize, badchars)
66
+
67
+ # Build the next pointer and short jump instruction
68
+ record[jmpidx, 2] = Rex::Arch::X86.jmp_short((rsize - jmpidx) - 2)
69
+ record[0, jmpidx] = sled
70
+
71
+ # Set the handler in the registration record
72
+ record[4, 4] = [ handler ].pack('V')
73
+
74
+ # Return the generated record to the caller
75
+ record
76
+ end
77
+
78
+ #
79
+ # Generates a static SEH registration record with a specific handler and
80
+ # next pointer.
81
+ #
82
+ def generate_static_seh_record(handler)
83
+ "\xeb\x06" + Rex::Text.rand_text(2, badchars) + [ handler ].pack('V')
84
+ end
85
+
86
+ protected
87
+
88
+ attr_accessor :badchars, :space, :nop # :nodoc:
89
+
90
+ end
91
+
92
+ end
93
+ end
@@ -0,0 +1,5 @@
1
+ module Rex
2
+ module Exploitation
3
+ VERSION = "0.1.0"
4
+ end
5
+ end
@@ -0,0 +1,35 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'rex/exploitation/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "rex-exploitation"
8
+ spec.version = Rex::Exploitation::VERSION
9
+ spec.authors = ["David Maloney"]
10
+ spec.email = ["DMaloney@rapid7.com"]
11
+
12
+ spec.summary = %q{Ruby Exploitation(Rex) library for various exploitation helpers}
13
+ spec.description = %q{This gem contains various helper mechanisms for creating exploits.
14
+ This includes SEH Overwrite helpers, egghunters, command stagers and more.}
15
+ spec.homepage = "https://github.com/rapid7/rex-exploitation"
16
+
17
+
18
+ spec.files = `git ls-files -z`.split("\x0").reject do |f|
19
+ f.match(%r{^(test|spec|features)/})
20
+ end
21
+ spec.bindir = "exe"
22
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
23
+ spec.require_paths = ["lib"]
24
+
25
+ spec.add_development_dependency "bundler", "~> 1.13"
26
+ spec.add_development_dependency "rake", "~> 10.0"
27
+ spec.add_development_dependency "rspec", "~> 3.0"
28
+
29
+ spec.add_runtime_dependency 'rex-text'
30
+ spec.add_runtime_dependency 'rex-arch'
31
+ spec.add_runtime_dependency 'rex-encoder'
32
+ spec.add_runtime_dependency 'metasm'
33
+ # Needed for Javascript obfuscation
34
+ spec.add_runtime_dependency 'jsobfu'
35
+ end
metadata ADDED
@@ -0,0 +1,298 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rex-exploitation
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - David Maloney
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain:
11
+ - |
12
+ -----BEGIN CERTIFICATE-----
13
+ MIIDdTCCAl2gAwIBAgILBAAAAAABFUtaw5QwDQYJKoZIhvcNAQEFBQAwVzELMAkG
14
+ A1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNVBAsTB1Jv
15
+ b3QgQ0ExGzAZBgNVBAMTEkdsb2JhbFNpZ24gUm9vdCBDQTAeFw05ODA5MDExMjAw
16
+ MDBaFw0yODAxMjgxMjAwMDBaMFcxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9i
17
+ YWxTaWduIG52LXNhMRAwDgYDVQQLEwdSb290IENBMRswGQYDVQQDExJHbG9iYWxT
18
+ aWduIFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDaDuaZ
19
+ jc6j40+Kfvvxi4Mla+pIH/EqsLmVEQS98GPR4mdmzxzdzxtIK+6NiY6arymAZavp
20
+ xy0Sy6scTHAHoT0KMM0VjU/43dSMUBUc71DuxC73/OlS8pF94G3VNTCOXkNz8kHp
21
+ 1Wrjsok6Vjk4bwY8iGlbKk3Fp1S4bInMm/k8yuX9ifUSPJJ4ltbcdG6TRGHRjcdG
22
+ snUOhugZitVtbNV4FpWi6cgKOOvyJBNPc1STE4U6G7weNLWLBYy5d4ux2x8gkasJ
23
+ U26Qzns3dLlwR5EiUWMWea6xrkEmCMgZK9FGqkjWZCrXgzT/LCrBbBlDSgeF59N8
24
+ 9iFo7+ryUp9/k5DPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8E
25
+ BTADAQH/MB0GA1UdDgQWBBRge2YaRQ2XyolQL30EzTSo//z9SzANBgkqhkiG9w0B
26
+ AQUFAAOCAQEA1nPnfE920I2/7LqivjTFKDK1fPxsnCwrvQmeU79rXqoRSLblCKOz
27
+ yj1hTdNGCbM+w6DjY1Ub8rrvrTnhQ7k4o+YviiY776BQVvnGCv04zcQLcFGUl5gE
28
+ 38NflNUVyRRBnMRddWQVDf9VMOyGj/8N7yy5Y0b2qvzfvGn9LhJIZJrglfCm7ymP
29
+ AbEVtQwdpf5pLGkkeB6zpxxxYu7KyJesF12KwvhHhm4qxFYxldBniYUr+WymXUad
30
+ DKqC5JlR3XC321Y9YeRq4VzW9v493kHMB65jUr9TU/Qr6cf9tveCX4XSQRjbgbME
31
+ HMUfpIBvFSDJ3gyICh3WZlXi/EjJKSZp4A==
32
+ -----END CERTIFICATE-----
33
+ - |
34
+ -----BEGIN CERTIFICATE-----
35
+ MIIEKDCCAxCgAwIBAgILBAAAAAABL07hNVwwDQYJKoZIhvcNAQEFBQAwVzELMAkG
36
+ A1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNVBAsTB1Jv
37
+ b3QgQ0ExGzAZBgNVBAMTEkdsb2JhbFNpZ24gUm9vdCBDQTAeFw0xMTA0MTMxMDAw
38
+ MDBaFw0xOTA0MTMxMDAwMDBaMFExCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9i
39
+ YWxTaWduIG52LXNhMScwJQYDVQQDEx5HbG9iYWxTaWduIENvZGVTaWduaW5nIENB
40
+ IC0gRzIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCyTxTnEL7XJnKr
41
+ NpfvU79ChF5Y0Yoo/ENGb34oRFALdV0A1zwKRJ4gaqT3RUo3YKNuPxL6bfq2RsNq
42
+ o7gMJygCVyjRUPdhOVW4w+ElhlI8vwUd17Oa+JokMUnVoqni05GrPjxz7/Yp8cg1
43
+ 0DB7f06SpQaPh+LO9cFjZqwYaSrBXrta6G6V/zuAYp2Zx8cvZtX9YhqCVVrG+kB3
44
+ jskwPBvw8jW4bFmc/enWyrRAHvcEytFnqXTjpQhU2YM1O46MIwx1tt6GSp4aPgpQ
45
+ STic0qiQv5j6yIwrJxF+KvvO3qmuOJMi+qbs+1xhdsNE1swMfi9tBoCidEC7tx/0
46
+ O9dzVB/zAgMBAAGjgfowgfcwDgYDVR0PAQH/BAQDAgEGMBIGA1UdEwEB/wQIMAYB
47
+ Af8CAQAwHQYDVR0OBBYEFAhu2Lacir/tPtfDdF3MgB+oL1B6MEcGA1UdIARAMD4w
48
+ PAYEVR0gADA0MDIGCCsGAQUFBwIBFiZodHRwczovL3d3dy5nbG9iYWxzaWduLmNv
49
+ bS9yZXBvc2l0b3J5LzAzBgNVHR8ELDAqMCigJqAkhiJodHRwOi8vY3JsLmdsb2Jh
50
+ bHNpZ24ubmV0L3Jvb3QuY3JsMBMGA1UdJQQMMAoGCCsGAQUFBwMDMB8GA1UdIwQY
51
+ MBaAFGB7ZhpFDZfKiVAvfQTNNKj//P1LMA0GCSqGSIb3DQEBBQUAA4IBAQAiXMXd
52
+ PfQLcNjj9efFjgkBu7GWNlxaB63HqERJUSV6rg2kGTuSnM+5Qia7O2yX58fOEW1o
53
+ kdqNbfFTTVQ4jGHzyIJ2ab6BMgsxw2zJniAKWC/wSP5+SAeq10NYlHNUBDGpeA07
54
+ jLBwwT1+170vKsPi9Y8MkNxrpci+aF5dbfh40r5JlR4VeAiR+zTIvoStvODG3Rjb
55
+ 88rwe8IUPBi4A7qVPiEeP2Bpen9qA56NSvnwKCwwhF7sJnJCsW3LZMMSjNaES2dB
56
+ fLEDF3gJ462otpYtpH6AA0+I98FrWkYVzSwZi9hwnOUtSYhgcqikGVJwQ17a1kYD
57
+ sGgOJO9K9gslJO8k
58
+ -----END CERTIFICATE-----
59
+ - |
60
+ -----BEGIN CERTIFICATE-----
61
+ MIIEyjCCA7KgAwIBAgISESEyE8rNriS4+1dc8jOHEUL8MA0GCSqGSIb3DQEBBQUA
62
+ MFExCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMScwJQYD
63
+ VQQDEx5HbG9iYWxTaWduIENvZGVTaWduaW5nIENBIC0gRzIwHhcNMTMxMDExMTUx
64
+ NTM4WhcNMTYxMDExMTUxNTM4WjBgMQswCQYDVQQGEwJVUzEWMBQGA1UECBMNTWFz
65
+ c2FjaHVzZXR0czEPMA0GA1UEBxMGQm9zdG9uMRMwEQYDVQQKEwpSYXBpZDcgTExD
66
+ MRMwEQYDVQQDEwpSYXBpZDcgTExDMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
67
+ CgKCAQEAhD//7+739c69hssg0mD6CXgf2JkuWTcU81dgD7aKcoEPqU8e1FseBvDW
68
+ /Q5fNK2H2NgHV/Msn18zXuK0PkaJXqj/vDsuKB3Hq0BiR2AwyDdEw8K5MK5bgQc2
69
+ tmcVtEAejRoy1Uv5UyfaAYAxG6zsma3buV1fjnEAC3VouRg4+EX/f65H/a6srntK
70
+ 5Etp3D71k2f0oUl8dOqOmSsRJQQ5zSs4ktDvpjAmsvzoA+1svceLYU95mvQsIw2T
71
+ edpmibGMwGw/HmgV+YWBgF5UGvax6zbC2i6DF2YHnDfkNb8/1MEIaxOTAbJTazTK
72
+ 8laCQOyay6L1BNPQKjZBgOge8LZq1wIDAQABo4IBizCCAYcwDgYDVR0PAQH/BAQD
73
+ AgeAMEwGA1UdIARFMEMwQQYJKwYBBAGgMgEyMDQwMgYIKwYBBQUHAgEWJmh0dHBz
74
+ Oi8vd3d3Lmdsb2JhbHNpZ24uY29tL3JlcG9zaXRvcnkvMAkGA1UdEwQCMAAwEwYD
75
+ VR0lBAwwCgYIKwYBBQUHAwMwPgYDVR0fBDcwNTAzoDGgL4YtaHR0cDovL2NybC5n
76
+ bG9iYWxzaWduLmNvbS9ncy9nc2NvZGVzaWduZzIuY3JsMIGGBggrBgEFBQcBAQR6
77
+ MHgwQAYIKwYBBQUHMAKGNGh0dHA6Ly9zZWN1cmUuZ2xvYmFsc2lnbi5jb20vY2Fj
78
+ ZXJ0L2dzY29kZXNpZ25nMi5jcnQwNAYIKwYBBQUHMAGGKGh0dHA6Ly9vY3NwMi5n
79
+ bG9iYWxzaWduLmNvbS9nc2NvZGVzaWduZzIwHQYDVR0OBBYEFE536JwFx9SpaEi3
80
+ w8pcq2GRFA5BMB8GA1UdIwQYMBaAFAhu2Lacir/tPtfDdF3MgB+oL1B6MA0GCSqG
81
+ SIb3DQEBBQUAA4IBAQAGpGXHtFLjTTivV+xQPwtZhfPuJ7f+VGTMSAAYWmfzyHXM
82
+ YMFYUWJzSFcuVR2YfxtbS45P7U5Qopd7jBQ0Ygk5h2a+B5nE4+UlhHj665d0zpYM
83
+ 1eWndMaO6WBOYnqtNyi8Dqqc1foKZDNHEDggYhGso7OIBunup+N4sPL9PwQ3eYe6
84
+ mUu8z0E4GXYViaMPOFkqaYnoYgf2L+7L5zKYT4h/NE/P7kj7EbduHgy/v/aAIrNl
85
+ 2SpuQH+SWteq3NXkAmFEEqvLJQ4sbptZt8OP8ghL3pVAvZNFmww/YVszSkShSzcg
86
+ QdihYCSEL2drS2cFd50jBeq71sxUtxbv82DUa2b+
87
+ -----END CERTIFICATE-----
88
+ date: 2016-10-03 00:00:00.000000000 Z
89
+ dependencies:
90
+ - !ruby/object:Gem::Dependency
91
+ name: bundler
92
+ requirement: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '1.13'
97
+ type: :development
98
+ prerelease: false
99
+ version_requirements: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '1.13'
104
+ - !ruby/object:Gem::Dependency
105
+ name: rake
106
+ requirement: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '10.0'
111
+ type: :development
112
+ prerelease: false
113
+ version_requirements: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: '10.0'
118
+ - !ruby/object:Gem::Dependency
119
+ name: rspec
120
+ requirement: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: '3.0'
125
+ type: :development
126
+ prerelease: false
127
+ version_requirements: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - "~>"
130
+ - !ruby/object:Gem::Version
131
+ version: '3.0'
132
+ - !ruby/object:Gem::Dependency
133
+ name: rex-text
134
+ requirement: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ">="
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
139
+ type: :runtime
140
+ prerelease: false
141
+ version_requirements: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - ">="
144
+ - !ruby/object:Gem::Version
145
+ version: '0'
146
+ - !ruby/object:Gem::Dependency
147
+ name: rex-arch
148
+ requirement: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - ">="
151
+ - !ruby/object:Gem::Version
152
+ version: '0'
153
+ type: :runtime
154
+ prerelease: false
155
+ version_requirements: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - ">="
158
+ - !ruby/object:Gem::Version
159
+ version: '0'
160
+ - !ruby/object:Gem::Dependency
161
+ name: rex-encoder
162
+ requirement: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - ">="
165
+ - !ruby/object:Gem::Version
166
+ version: '0'
167
+ type: :runtime
168
+ prerelease: false
169
+ version_requirements: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - ">="
172
+ - !ruby/object:Gem::Version
173
+ version: '0'
174
+ - !ruby/object:Gem::Dependency
175
+ name: metasm
176
+ requirement: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - ">="
179
+ - !ruby/object:Gem::Version
180
+ version: '0'
181
+ type: :runtime
182
+ prerelease: false
183
+ version_requirements: !ruby/object:Gem::Requirement
184
+ requirements:
185
+ - - ">="
186
+ - !ruby/object:Gem::Version
187
+ version: '0'
188
+ - !ruby/object:Gem::Dependency
189
+ name: jsobfu
190
+ requirement: !ruby/object:Gem::Requirement
191
+ requirements:
192
+ - - ">="
193
+ - !ruby/object:Gem::Version
194
+ version: '0'
195
+ type: :runtime
196
+ prerelease: false
197
+ version_requirements: !ruby/object:Gem::Requirement
198
+ requirements:
199
+ - - ">="
200
+ - !ruby/object:Gem::Version
201
+ version: '0'
202
+ description: |-
203
+ This gem contains various helper mechanisms for creating exploits.
204
+ This includes SEH Overwrite helpers, egghunters, command stagers and more.
205
+ email:
206
+ - DMaloney@rapid7.com
207
+ executables: []
208
+ extensions: []
209
+ extra_rdoc_files: []
210
+ files:
211
+ - ".gitignore"
212
+ - ".rspec"
213
+ - ".travis.yml"
214
+ - CODE_OF_CONDUCT.md
215
+ - Gemfile
216
+ - README.md
217
+ - Rakefile
218
+ - bin/console
219
+ - bin/setup
220
+ - data/exploits/cmdstager/debug_asm
221
+ - data/exploits/cmdstager/debug_write
222
+ - data/exploits/cmdstager/vbs_b64
223
+ - data/exploits/cmdstager/vbs_b64_adodb
224
+ - data/exploits/cmdstager/vbs_b64_noquot
225
+ - data/exploits/cmdstager/vbs_b64_sleep
226
+ - data/js/detect/ie_addons.js
227
+ - data/js/detect/misc_addons.js
228
+ - data/js/detect/os.js
229
+ - data/js/memory/explib2/lib/explib2.js
230
+ - data/js/memory/explib2/payload/drop_exec.js
231
+ - data/js/memory/explib2/payload/exec.js
232
+ - data/js/memory/heap_spray.js
233
+ - data/js/memory/heaplib2.js
234
+ - data/js/memory/mstime_malloc.js
235
+ - data/js/memory/property_spray.js
236
+ - data/js/network/ajax_download.js
237
+ - data/js/network/ajax_post.js
238
+ - data/js/network/xhr_shim.js
239
+ - data/js/utils/base64.js
240
+ - data/ropdb/flash.xml
241
+ - data/ropdb/hxds.xml
242
+ - data/ropdb/java.xml
243
+ - data/ropdb/msvcrt.xml
244
+ - data/ropdb/reader.xml
245
+ - data/ropdb/samba.xml
246
+ - data/ropdb/stagefright.xml
247
+ - lib/rex/exploitation.rb
248
+ - lib/rex/exploitation/cmdstager.rb
249
+ - lib/rex/exploitation/cmdstager/base.rb
250
+ - lib/rex/exploitation/cmdstager/bourne.rb
251
+ - lib/rex/exploitation/cmdstager/certutil.rb
252
+ - lib/rex/exploitation/cmdstager/debug_asm.rb
253
+ - lib/rex/exploitation/cmdstager/debug_write.rb
254
+ - lib/rex/exploitation/cmdstager/echo.rb
255
+ - lib/rex/exploitation/cmdstager/printf.rb
256
+ - lib/rex/exploitation/cmdstager/tftp.rb
257
+ - lib/rex/exploitation/cmdstager/vbs.rb
258
+ - lib/rex/exploitation/egghunter.rb
259
+ - lib/rex/exploitation/encryptjs.rb
260
+ - lib/rex/exploitation/heaplib.js.b64
261
+ - lib/rex/exploitation/heaplib.rb
262
+ - lib/rex/exploitation/js.rb
263
+ - lib/rex/exploitation/js/detect.rb
264
+ - lib/rex/exploitation/js/memory.rb
265
+ - lib/rex/exploitation/js/network.rb
266
+ - lib/rex/exploitation/js/utils.rb
267
+ - lib/rex/exploitation/jsobfu.rb
268
+ - lib/rex/exploitation/obfuscatejs.rb
269
+ - lib/rex/exploitation/omelet.rb
270
+ - lib/rex/exploitation/opcodedb.rb
271
+ - lib/rex/exploitation/ropdb.rb
272
+ - lib/rex/exploitation/seh.rb
273
+ - lib/rex/exploitation/version.rb
274
+ - rex-exploitation.gemspec
275
+ homepage: https://github.com/rapid7/rex-exploitation
276
+ licenses: []
277
+ metadata: {}
278
+ post_install_message:
279
+ rdoc_options: []
280
+ require_paths:
281
+ - lib
282
+ required_ruby_version: !ruby/object:Gem::Requirement
283
+ requirements:
284
+ - - ">="
285
+ - !ruby/object:Gem::Version
286
+ version: '0'
287
+ required_rubygems_version: !ruby/object:Gem::Requirement
288
+ requirements:
289
+ - - ">="
290
+ - !ruby/object:Gem::Version
291
+ version: '0'
292
+ requirements: []
293
+ rubyforge_project:
294
+ rubygems_version: 2.4.8
295
+ signing_key:
296
+ specification_version: 4
297
+ summary: Ruby Exploitation(Rex) library for various exploitation helpers
298
+ test_files: []