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 +4 -4
- data/README.md +2 -2
- data/bin/pwn_nmap_discover_tcp_udp +57 -24
- data/lib/pwn/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4b08c03bca8748c1673aeaa0a8b30acda7dbe487a82bf560d9aa571838fd702b
|
4
|
+
data.tar.gz: d0113d2805a39025ebd803b8cc0e9495d9aa6056fb32d4d6320aa9d8bd8b7d78
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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.
|
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.
|
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
|
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