mirror of
https://github.com/XiaoliChan/wmiexec-Pro.git
synced 2026-10-20 16:06:59 +08:00
48 lines
1.9 KiB
Python
48 lines
1.9 KiB
Python
import logging
|
|
|
|
from lib.modules.service_mgr import Service_Toolkit
|
|
from lib.modules.firewall import Firewall_Toolkit
|
|
from lib.module_base import ModuleBase
|
|
|
|
|
|
class WINRM_Toolkit(ModuleBase):
|
|
name = "winrm"
|
|
description = "Enable/Disable WINRM service."
|
|
|
|
@staticmethod
|
|
def register_parser(subparsers):
|
|
p = subparsers.add_parser(WINRM_Toolkit.name, help=WINRM_Toolkit.description)
|
|
p.add_argument("-enable", action="store_true", help="Enable WINRM service")
|
|
p.add_argument("-disable", action="store_true", help="Disable WINRM service")
|
|
return p
|
|
|
|
@staticmethod
|
|
def run(iWbemLevel1Login, dcom, options, **kwargs):
|
|
toolkit = WINRM_Toolkit(iWbemLevel1Login, dcom)
|
|
if options.enable:
|
|
toolkit.WINRM_Wrapper("enable")
|
|
if options.disable:
|
|
toolkit.WINRM_Wrapper("disable")
|
|
|
|
def __init__(self, iWbemLevel1Login, dcom):
|
|
self.logger = logging.getLogger("wmiexec-pro")
|
|
self.iWbemLevel1Login = iWbemLevel1Login
|
|
self.dcom = dcom
|
|
|
|
def WINRM_Wrapper(self, flag):
|
|
executer_Service = Service_Toolkit(self.iWbemLevel1Login, self.dcom)
|
|
if flag == "enable":
|
|
executer_Service.control_Service(action="start", serviceName="WINRM")
|
|
self.configure_Firewall(flag)
|
|
self.logger.log(100, "Enabled WINRM service and configure firewall.")
|
|
else:
|
|
executer_Service.control_Service(action="stop", serviceName="WINRM")
|
|
self.configure_Firewall(flag)
|
|
self.logger.log(100, "Disabled WINRM service and configure firewall.")
|
|
|
|
def configure_Firewall(self,flag):
|
|
winrm_Firewall = Firewall_Toolkit(self.iWbemLevel1Login)
|
|
self.logger.info("Configuring winrm firewall...")
|
|
id_List = ["WINRM-HTTP-In-TCP", "WINRM-HTTP-In-TCP-PUBLIC"]
|
|
for i in id_List:
|
|
winrm_Firewall.rule_Controller(i,flag) |