pwn 0.4.675 → 0.4.677

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.
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.