From a6b10862bdc1dd7f4fab483948071167c1c9124c Mon Sep 17 00:00:00 2001 From: David Maloney Date: Thu, 23 Feb 2012 17:22:32 -0600 Subject: [PATCH] Adds a lantronix telnet discovery module --- .../telnet/lantronix_telnet_version.rb | 60 +++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 modules/auxiliary/scanner/telnet/lantronix_telnet_version.rb diff --git a/modules/auxiliary/scanner/telnet/lantronix_telnet_version.rb b/modules/auxiliary/scanner/telnet/lantronix_telnet_version.rb new file mode 100644 index 0000000000..861aa91cbd --- /dev/null +++ b/modules/auxiliary/scanner/telnet/lantronix_telnet_version.rb @@ -0,0 +1,60 @@ +## +# $Id$ +## + +## +# This file is part of the Metasploit Framework and may be subject to +# redistribution and commercial restrictions. Please see the Metasploit +# web site for more information on licensing and terms of use. +# http://metasploit.com/ +## + +require 'msf/core' + +class Metasploit3 < Msf::Auxiliary + + include Msf::Exploit::Remote::Telnet + include Msf::Auxiliary::Scanner + include Msf::Auxiliary::Report + + def initialize + super( + 'Name' => 'Lantronix Telnet Service Banner Detection', + 'Version' => '$Revision$', + 'Description' => 'Detect Lantronix telnet services', + 'Author' => ['TheLightCosine ', 'hdm'], + 'License' => MSF_LICENSE + ) + register_options( + [ + Opt::RPORT(9999), + OptInt.new('TIMEOUT', [true, 'Timeout for the Telnet probe', 30]) + ], self.class) + + deregister_options('USERNAME','PASSWORD') + end + + def to + return 30 if datastore['TIMEOUT'].to_i.zero? + datastore['TIMEOUT'].to_i + end + + def run_host(ip) + begin + ::Timeout.timeout(to) do + res = connect + if banner.start_with? "MAC address" + print_status("#{ip}:#{rport} TELNET: \n #{banner}") + version = banner.match(/Software version [\w\.]+ \(\d+\) \w*$/)[0] + report_service(:host => rhost, :port => rport, :name => "telnet", :info => version ) + end + end + rescue ::Rex::ConnectionError + rescue Timeout::Error + print_error("#{target_host}:#{rport}, Server timed out after #{to} seconds. Skipping.") + rescue ::Exception => e + print_error("#{e} #{e.backtrace}") + end + end +end +