From 0e33fc40a2a07bd3459bbce535593e4e228057b2 Mon Sep 17 00:00:00 2001 From: Meatballs Date: Wed, 18 Dec 2013 11:56:24 +0000 Subject: [PATCH] Remove duplicate test services --- modules/post/windows/gather/services.rb | 290 ------------------------ 1 file changed, 290 deletions(-) delete mode 100644 modules/post/windows/gather/services.rb diff --git a/modules/post/windows/gather/services.rb b/modules/post/windows/gather/services.rb deleted file mode 100644 index bf680c78f8..0000000000 --- a/modules/post/windows/gather/services.rb +++ /dev/null @@ -1,290 +0,0 @@ -# -# by kernelsmith (kernelsmith+\x40+kernelsmith+\.com) -# - -require 'msf/core' -require 'rex' -require 'msf/core/post/windows/services' - -$:.push "test/lib" unless $:.include? "test/lib" -require 'module_test' - -class Metasploit3 < Msf::Post - - include Msf::Post::Windows::Services - include Msf::ModuleTest::PostTest - - def initialize(info={}) - super( update_info( info, - 'Name' => 'Test Post::Windows::Services', - 'Description' => %q{ This module will test windows services methods within a shell}, - 'License' => MSF_LICENSE, - 'Author' => [ 'kernelsmith', 'egypt' ], - 'Platform' => [ 'windows' ], - 'SessionTypes' => [ 'meterpreter', 'shell' ] - )) - register_options( - [ - OptString.new("QSERVICE" , [true, "Service (keyname) to query", "winmgmt"]), - OptString.new("NSERVICE" , [true, "New Service (keyname) to create/del", "testes"]), - OptString.new("SSERVICE" , [true, "Service (keyname) to start/stop", "W32Time"]), - OptString.new("DNAME" , [true, "Display name used for create test", "Cool display name"]), - OptString.new("BINPATH" , [true, "Binary path for create test", "C:\\WINDOWS\\system32\\svchost.exe -k netsvcs"]), - OptEnum.new("MODE", [true, "Mode to use for startup/create tests", "auto", - ["auto", "manual", "disable"] - ]), - ], self.class) - - end - - def test_start - it "should start #{datastore["SSERVICE"]}" do - ret = true - results = service_start(datastore['SSERVICE']) - if results != Windows::Error::SUCCESS - # Failed the first time, try to stop it first, then try again - service_stop(datastore['SSERVICE']) - results = service_start(datastore['SSERVICE']) - end - ret &&= (results == Windows::Error::SUCCESS) - - ret - end - it "should stop #{datastore["SSERVICE"]}" do - ret = true - results = service_stop(datastore['SSERVICE']) - ret &&= (results == Windows::Error::SUCCESS) - - ret - end - end - - def test_list - it "should list services" do - ret = true - results = service_list - - ret &&= results.kind_of? Array - ret &&= results.length > 0 - ret &&= results.select{|service| service[:name] == datastore["QSERVICE"]} - - ret - end - end - - def test_info - it "should return info on a given service #{datastore["QSERVICE"]}" do - ret = true - results = service_info(datastore['QSERVICE']) - - ret &&= results.kind_of? Hash - if ret - ret &&= results.has_key? :display - ret &&= (results[:display] == "Windows Management Instrumentation") - ret &&= results.has_key? :starttype - ret &&= results.has_key? :path - ret &&= results.has_key? :startname - end - - ret - end - end - - def test_create - it "should create a service #{datastore["NSERVICE"]}" do - mode = case datastore["MODE"] - when "disable"; 4 - when "manual"; 3 - when "auto"; 2 - else; 2 - end - ret = service_create(datastore['NSERVICE'],datastore['DNAME'],datastore['BINPATH'],mode) - - ret == Windows::Error::SUCCESS - end - - it "should return info on the newly-created service #{datastore["NSERVICE"]}" do - ret = true - results = service_info(datastore['NSERVICE']) - - ret &&= results.kind_of? Hash - ret &&= results.has_key? :display - ret &&= (results[:display] == datastore["DNAME"]) - ret &&= results.has_key? :starttype - ret &&= (START_TYPE[results[:starttype]].downcase == datastore["MODE"]) - ret &&= results.has_key? :path - ret &&= results.has_key? :startname - - ret - end - - it "should delete the new service #{datastore["NSERVICE"]}" do - ret = service_delete(datastore['NSERVICE']) - - ret == Windows::Error::SUCCESS - end - end - - def test_status - it "should return status on a given service #{datastore["QSERVICE"]}" do - ret = true - results = service_status(datastore['QSERVICE']) - - ret &&= results.kind_of? Hash - if ret - ret &&= results.has_key? :state - ret &&= (results[:state] > 0 && results[:state] < 8) - end - - ret - end - end - - def test_change - service_name = "a" << Rex::Text.rand_text_alpha(5) - display_name = service_name - - it "should modify config on a given service #{service_name}" do - ret = true - - results = service_create(service_name,display_name,datastore['BINPATH'],START_TYPE_DISABLED) - ret &&= (results == Windows::Error::SUCCESS) - results = service_status(service_name) - ret &&= results.kind_of? Hash - if ret - original_display = results[:display] - results = service_change_config(service_name, {:display => Rex::Text.rand_text_alpha(5)}) - ret &&= (results == Windows::Error::SUCCESS) - - results = service_info(service_name) - ret &&= (results[:display] != original_display) - - service_delete(service_name) - - end - - ret - end - end - - def test_restart_disabled - service_name = "a" << Rex::Text.rand_text_alpha(5) - display_name = service_name - - it "should start a disabled service #{service_name}" do - ret = true - results = service_create(service_name,display_name,datastore['BINPATH'],START_TYPE_DISABLED) - - ret &&= (results == Windows::Error::SUCCESS) - if ret - begin - results = service_restart(service_name) - ensure - service_delete(service_name) - end - ret &&= results - end - - ret - end - end - - def test_restart_start - service_name = datastore['SSERVICE'] - - it "should restart a started service #{service_name}" do - ret = true - - results = service_start(service_name) - ret &&= (results == Windows::Error::SUCCESS) - if ret - results = service_restart(service_name) - ret &&= results - end - - ret - end - end - - def test_noaccess - it "should raise a runtime exception if no access to service" do - ret = false - begin - results = service_stop("gpsvc") - rescue RuntimeError - ret = true - end - - ret - end - end - - def test_no_service - it "should raise a runtime exception if services doesnt exist" do - ret = false - begin - results = service_status(Rex::Text.rand_text_alpha(5)) - rescue RuntimeError - ret = true - end - - ret - end - end - -=begin - def run - blab = datastore['VERBOSE'] - print_status("Running against session #{datastore["SESSION"]}") - print_status("Session type is #{session.type}") - print_status("Verbosity is set to #{blab.to_s}") - print_status("Don't be surprised to see some errors as the script is faster") - print_line("than the windows SCM, just make sure the errors are sane. You can") - print_line("set VERBOSE to true to see more details") - - print_status() - print_status("TESTING service_query_ex on servicename: #{datastore["QSERVICE"]}") - results = service_query_ex(datastore['QSERVICE']) - print_status("RESULTS: #{results.class} #{results.pretty_inspect}") - - print_status() - print_status("TESTING service_query_config on servicename: #{datastore["QSERVICE"]}") - results = service_query_config(datastore['QSERVICE']) - print_status("RESULTS: #{results.class} #{results.pretty_inspect}") - - print_status() - print_status("TESTING service_change_startup on servicename: #{datastore['QSERVICE']} " + - "to #{datastore['MODE']}") - results = service_change_startup(datastore['QSERVICE'],datastore['MODE']) - print_status("RESULTS: #{results.class} #{results.pretty_inspect}") - print_status("Current status of this service " + - "#{service_query_ex(datastore['QSERVICE']).pretty_inspect}") if blab - - print_status() - print_status("TESTING service_start on servicename: #{datastore['SSERVICE']}") - results = service_start(datastore['SSERVICE']) - print_status("RESULTS: #{results.class} #{results.pretty_inspect}") - print_status("Current status of this service " + - "#{service_query_ex(datastore['SSERVICE']).pretty_inspect}") if blab - print_status("Sleeping to give the service a chance to start") - select(nil, nil, nil, 2) # give the service time to start, reduces false negatives - - print_status() - print_status("TESTING service_stop on servicename: #{datastore['SSERVICE']}") - results = service_stop(datastore['SSERVICE']) - print_status("RESULTS: #{results.class} #{results.pretty_inspect}") - print_status("Current status of this service " + - "#{service_query_ex(datastore['SSERVICE']).pretty_inspect}") if blab - - print_status() - print_status("TESTING service_delete on servicename: #{datastore['NSERVICE']}") - results = service_delete(datastore['NSERVICE']) - print_status("RESULTS: #{results.class} #{results.pretty_inspect}") - print_status("Current status of this service " + - "#{service_query_ex(datastore['QSERVICE']).pretty_inspect}") if blab - print_status() - print_status("Testing complete.") - end -=end - -end