pwn 0.4.675 → 0.4.677

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b3988112277371e7f9cafefa42d88f325db8c58a97ab35d20c2d65fde2c3bacf
4
- data.tar.gz: b6eb594719ebab68d095d072391ddd9b747f27286cda0e30906083acf3f457ed
3
+ metadata.gz: 4b08c03bca8748c1673aeaa0a8b30acda7dbe487a82bf560d9aa571838fd702b
4
+ data.tar.gz: d0113d2805a39025ebd803b8cc0e9495d9aa6056fb32d4d6320aa9d8bd8b7d78
5
5
  SHA512:
6
- metadata.gz: 3d9c197e9286753124276f6a355d16f9edcf0b6ef85a1f2202f102bfdd862dea76f7e7892db911845d2b02622f9fd07dfbd32010b7944b211130273e7035abf5
7
- data.tar.gz: a8a8a5061682887c2e2d5a4661685c731d0c6206691bfa0e483b076db6e0e9d67d324f8a90fee8768fe3e3f6f01f092cd49018352ce48c1f5ea954aefc678b1c
6
+ metadata.gz: c40a210871e71d7ebca31526807bc03094d87ecb2792da9df14b221efaa8dcbafb13e87a0696d60a85b86dd1620bdd05baca612950ac0eb0e3049debd340b171
7
+ data.tar.gz: eeba9b20072682b6101fd80dab9376bc95fc0d4093d3b83765a378acb106e7f043352ae2d21ba983ed0ce1b10a0024a3f9fc63560b5a14da99a58380bdf97b8a
data/README.md CHANGED
@@ -37,7 +37,7 @@ $ rvm use ruby-3.2.2@pwn
37
37
  $ rvm list gemsets
38
38
  $ gem install --verbose pwn
39
39
  $ pwn
40
- pwn[v0.4.675]:001 >>> PWN.help
40
+ pwn[v0.4.677]:001 >>> PWN.help
41
41
  ```
42
42
 
43
43
  [![Installing the pwn Security Automation Framework](https://raw.githubusercontent.com/0dayInc/pwn/master/documentation/pwn_install.png)](https://youtu.be/G7iLUY4FzsI)
@@ -52,7 +52,7 @@ $ rvm use ruby-3.2.2@pwn
52
52
  $ gem uninstall --all --executables pwn
53
53
  $ gem install --verbose pwn
54
54
  $ pwn
55
- pwn[v0.4.675]:001 >>> PWN.help
55
+ pwn[v0.4.677]:001 >>> PWN.help
56
56
  ```
57
57
 
58
58
 
@@ -35,6 +35,7 @@ end
35
35
 
36
36
  ftimestr = '%Y-%m-%d %H:%M:%S.%N%z'
37
37
  started_at = Time.now.strftime(ftimestr)
38
+ started_at_parse = Time.parse(started_at)
38
39
  banner = '-' * 64
39
40
  puts "\n\n\n#{banner}"
40
41
  puts "- STARTED: #{started_at} "
@@ -153,25 +154,28 @@ begin
153
154
  puts "\n\n\n#{banner}"
154
155
  puts '- PHASE 1: Target Discovery'
155
156
  PWN::Plugins::NmapIt.port_scan do |nmap|
157
+ if with_tor
158
+ nmap.proxies = proxy
159
+ nmap.syn_discovery = discovery_tcp_ports.values
160
+ nmap.ack_discovery = discovery_tcp_ports.values
161
+ else
162
+ nmap.ping = true
163
+ nmap.arp_ping = true
164
+ nmap.icmp_echo_discovery = true
165
+ nmap.icmp_timestamp_discovery = true
166
+ nmap.udp_discovery = discovery_udp_ports.values
167
+ nmap.sctp_init_ping = discovery_sctp_ports.values
168
+ end
156
169
  nmap.verbose = true
157
170
  nmap.exclude_file = exclude_file
158
171
  nmap.interface = interface
159
172
  nmap.insane_timing = true
160
- nmap.ping = true
161
- nmap.arp_ping = true
162
- nmap.icmp_echo_discovery = true
163
- nmap.icmp_timestamp_discovery = true
164
- nmap.syn_discovery = discovery_tcp_ports.values
165
- nmap.ack_discovery = discovery_tcp_ports.values
166
- nmap.udp_discovery = discovery_udp_ports.values
167
- nmap.sctp_init_ping = discovery_sctp_ports.values
168
173
  nmap.output_xml = latest_discovery_results
169
174
  nmap.targets = target_range
170
175
  nmap.randomize_hosts = true
171
176
  nmap.min_parallelism = 36
172
177
  nmap.max_retries = 3
173
178
  nmap.max_scan_delay = 3
174
- nmap.proxies = proxy if with_tor
175
179
  end
176
180
 
177
181
  # Generate targets.txt from discovery above
@@ -181,7 +185,8 @@ begin
181
185
  xml_file: latest_discovery_results
182
186
  ) do |xml|
183
187
  xml.each_host do |host|
184
- next unless File.read(exclude_file).include?(host.ip)
188
+ next if File.read(exclude_file).include?(host.ip) ||
189
+ host.status.state != :up
185
190
 
186
191
  hosts_arr = host.hostnames.map { |h| h[:name] }
187
192
  f.print host.ip
@@ -194,9 +199,22 @@ begin
194
199
  sorted_targets = File.readlines(target_file).sort.join
195
200
  File.write(target_file, sorted_targets)
196
201
 
202
+ phase1_ended_at = Time.now.strftime(ftimestr)
203
+ phase1_ended_at_parse = Time.parse(phase1_ended_at)
204
+ elapsed_in_seconds = (phase1_ended_at_parse - started_at_parse).to_f
205
+ fmt_elapsed_in_seconds = format('%0.2f', elapsed_in_seconds)
206
+ puts "\n#{banner}"
207
+ puts "- DISCOVERY COMPLETE! DURATION: #{fmt_elapsed_in_seconds} seconds"
208
+ puts banner
209
+
210
+ puts "\n\n\n#{banner}"
211
+ puts '- PHASE 2: TCP Port Scanning'
212
+ puts banner
213
+ phase2_started_at = Time.now.strftime(ftimestr)
214
+ phase2_started_at_parse = Time.parse(phase2_started_at)
215
+
197
216
  # Switch Tor Exit Node if with_tor
198
217
  if with_tor
199
- puts "\n\n\n#{banner}"
200
218
  puts '- INFO: Switching to Clean Tor Circuit...'
201
219
  PWN::Plugins::Tor.switch_exit_node(tor_obj: tor_obj)
202
220
  end
@@ -204,9 +222,8 @@ begin
204
222
  # TCP Scan
205
223
  # Using -T5 template to reduce number of
206
224
  # retransmission attempts on filtered ports.
207
- puts "\n\n\n#{banner}"
208
- puts '- PHASE 2: TCP Port Scanning'
209
225
  PWN::Plugins::NmapIt.port_scan do |nmap|
226
+ nmap.proxies = proxy if with_tor
210
227
  nmap.verbose = true
211
228
  nmap.target_file = target_file
212
229
  nmap.randomize_hosts = true
@@ -225,13 +242,24 @@ begin
225
242
  nmap.min_parallelism = 36
226
243
  nmap.max_retries = 3
227
244
  nmap.max_scan_delay = 3
228
- nmap.proxies = proxy if with_tor
229
245
  end
230
246
  FileUtils.cp("#{latest_tcp_results}.nmap", "#{latest_tcp_results}.txt")
247
+ phase2_ended_at = Time.now.strftime(ftimestr)
248
+ phase2_ended_at_parse = Time.parse(phase2_ended_at)
249
+ elapsed_in_seconds = (phase2_ended_at_parse - phase2_started_at).to_f
250
+ fmt_elapsed_in_seconds = format('%0.2f', elapsed_in_seconds)
251
+ puts "\n#{banner}"
252
+ puts "- TCP SCAN COMPLETE! DURATION: #{fmt_elapsed_in_seconds} seconds"
253
+ puts banner
254
+
255
+ puts "\n\n\n#{banner}"
256
+ puts '- PHASE 3: UDP Port Scanning'
257
+ puts banner
258
+ phase3_started_at = Time.now.strftime(ftimestr)
259
+ phase3_started_at_parse = Time.parse(phase3_started_at)
231
260
 
232
261
  # Switch Tor Exit Node if with_tor
233
262
  if with_tor
234
- puts "\n\n\n#{banner}"
235
263
  puts '- INFO: Switching to Clean Tor Circuit...'
236
264
  PWN::Plugins::Tor.switch_exit_node(tor_obj: tor_obj)
237
265
  end
@@ -239,9 +267,13 @@ begin
239
267
  # UDP Scan
240
268
  # Using -T5 template to reduce number of
241
269
  # retransmission attempts on filtered ports.
242
- puts "\n\n\n#{banner}"
243
- puts '- PHASE 3: UDP Port Scanning'
244
270
  PWN::Plugins::NmapIt.port_scan do |nmap|
271
+ if with_tor
272
+ nmap.proxies = proxy
273
+ else with_tor
274
+ nmap.default_script = true
275
+ nmap.update_scriptdb = true
276
+ end
245
277
  nmap.verbose = true
246
278
  nmap.target_file = target_file
247
279
  nmap.fast = true
@@ -254,16 +286,20 @@ begin
254
286
  nmap.insane_timing = true
255
287
  nmap.skip_discovery = true
256
288
  nmap.udp_scan = true
257
- nmap.default_script = true unless with_tor
258
- nmap.update_scriptdb = true unless with_tor
259
289
  nmap.output_all = latest_udp_results
260
290
  nmap.min_parallelism = 36
261
291
  nmap.max_retries = 0
262
292
  nmap.max_scan_delay = 3
263
293
  nmap.data_length = Random.rand(1..256)
264
- nmap.proxies = proxy if with_tor
265
294
  end
266
295
  FileUtils.cp("#{latest_udp_results}.nmap", "#{latest_udp_results}.txt")
296
+ phase3_ended_at = Time.now.strftime(ftimestr)
297
+ phase3_ended_at_parse = Time.parse(phase3_ended_at)
298
+ elapsed_in_seconds = (phase3_ended_at_parse - phase3_started_at).to_f
299
+ fmt_elapsed_in_seconds = format('%0.2f', elapsed_in_seconds)
300
+ puts "\n#{banner}"
301
+ puts "- UDP SCAN COMPLETE! DURATION: #{fmt_elapsed_in_seconds} seconds"
302
+ puts banner
267
303
  rescue SystemExit, Interrupt
268
304
  puts "\nGoodbye."
269
305
  rescue StandardError => e
@@ -271,14 +307,11 @@ rescue StandardError => e
271
307
  ensure
272
308
  tor_obj = PWN::Plugins::Tor.stop(tor_obj: tor_obj) if with_tor
273
309
  ended_at = Time.now.strftime(ftimestr)
274
- puts "\n\n\n#{banner}"
275
- puts "- ENDED: #{ended_at}"
276
-
277
- started_at_parse = Time.parse(started_at)
278
310
  ended_at_parse = Time.parse(ended_at)
279
311
  elapsed_in_seconds = (ended_at_parse - started_at_parse).to_f
280
312
  fmt_elapsed_in_seconds = format('%0.2f', elapsed_in_seconds)
281
313
  puts "\n\n\n#{banner}"
314
+ puts "- ENDED: #{ended_at}"
282
315
  puts "- SCAN COMPLETE! DURATION: #{fmt_elapsed_in_seconds} seconds"
283
316
  puts banner
284
317
  end
data/lib/pwn/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module PWN
4
- VERSION = '0.4.675'
4
+ VERSION = '0.4.677'
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pwn
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.675
4
+ version: 0.4.677
5
5
  platform: ruby
6
6
  authors:
7
7
  - 0day Inc.