diff --git a/nxc/loaders/moduleloader.py b/nxc/loaders/moduleloader.py index 9337e9d6..0ba352f7 100755 --- a/nxc/loaders/moduleloader.py +++ b/nxc/loaders/moduleloader.py @@ -114,6 +114,7 @@ class ModuleLoader: "supported_protocols": module_spec.supported_protocols, "opsec_safe": module_spec.opsec_safe, "multiple_hosts": module_spec.multiple_hosts, + "requires_admin": True if hasattr(module_spec, 'on_admin_login') and callable(module_spec.on_admin_login) else False, } } if self.module_is_sane(module_spec, module_path): diff --git a/nxc/netexec.py b/nxc/netexec.py index ea5514f0..2b22734d 100755 --- a/nxc/netexec.py +++ b/nxc/netexec.py @@ -47,6 +47,7 @@ except: print("Incompatible python version, try with another python version or another binary 3.8 / 3.9 / 3.10 / 3.11 that match your python version (python -V)") exit(1) + def create_db_engine(db_path): db_engine = sqlalchemy.create_engine(f"sqlite:///{db_path}", isolation_level="AUTOCOMMIT", future=True) return db_engine @@ -179,8 +180,13 @@ def main(): modules = loader.list_modules() if args.list_modules: + nxc_logger.highlight("LOW PRIVILEGE MODULES") for name, props in sorted(modules.items()): - if args.protocol in props["supported_protocols"]: + if args.protocol in props["supported_protocols"] and not props["requires_admin"]: + nxc_logger.display(f"{name:<25} {props['description']}") + nxc_logger.highlight("\nHIGH PRIVILEGE MODULES (requires admin privs)") + for name, props in sorted(modules.items()): + if args.protocol in props["supported_protocols"] and props["requires_admin"]: nxc_logger.display(f"{name:<25} {props['description']}") exit(0) elif args.module and args.show_module_options: