Skip to content

Commit 5a22698

Browse files
authored
Update schtask_as.py
Signed-off-by: Kahvi-0xFF <46513413+Kahvi-0@users.noreply.github.com>
1 parent 1440a6b commit 5a22698

1 file changed

Lines changed: 11 additions & 11 deletions

File tree

nxc/modules/schtask_as.py

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
from traceback import format_exc
33
from nxc.protocols.smb.atexec import TSCH_EXEC
44

5+
56
class NXCModule:
67
"""
78
Execute a scheduled task remotely as a already connected user by @Defte_
@@ -50,7 +51,7 @@ def options(self, context, module_options):
5051
name = "schtask_as"
5152
description = "Remotely execute a scheduled task as a logged on user"
5253
supported_protocols = ["smb"]
53-
54+
5455
def on_admin_login(self, context, connection):
5556
self.logger = context.log
5657

@@ -68,16 +69,17 @@ def on_admin_login(self, context, connection):
6869
return 1
6970
else:
7071
self.logger.display(f"Uploading {self.binary_to_upload}")
71-
binary_file_location = self.tmp_share if self.output_file_location is None else self.output_file_location
7272
with open(self.binary_to_upload, "rb") as binary_to_upload:
7373
try:
7474
self.binary_to_upload_name = os.path.basename(self.binary_to_upload)
75-
connection.conn.putFile(self.share, f"{binary_file_location}{self.binary_to_upload_name}", binary_to_upload.read)
76-
self.logger.success(f"Binary {self.binary_to_upload_name} successfully uploaded in {binary_file_location}{self.binary_to_upload_name}")
75+
connection.conn.putFile(self.share, f"{self.tmp_share}{self.binary_to_upload_name}", binary_to_upload.read)
76+
self.logger.success(f"Binary {self.binary_to_upload_name} successfully uploaded in {self.tmp_share}{self.binary_to_upload_name}")
7777
except Exception as e:
78-
self.logger.fail(f"Error writing file to share {binary_file_location}: {e}")
78+
self.logger.fail(f"Error writing file to share {self.tmp_share}: {e}")
7979
return 1
8080

81+
# Returnes self.command_to_run or \Windows\temp\BinToExecute.exe depending if BINARY=BinToExecute.exe
82+
self.command_to_run = self.command_to_run if not self.binary_to_upload else f"{self.tmp_share}{self.command_to_run}"
8183
self.logger.display("Connecting to the remote Service control endpoint")
8284
try:
8385
exec_method = TSCH_EXEC(
@@ -94,7 +96,7 @@ def on_admin_login(self, context, connection):
9496
self.logger,
9597
connection.args.get_output_tries,
9698
connection.args.share,
97-
self.run_task_as,
99+
self.run_task_as,
98100
self.command_to_run,
99101
self.output_filename,
100102
self.task_name,
@@ -120,9 +122,7 @@ def on_admin_login(self, context, connection):
120122
finally:
121123
if self.binary_to_upload:
122124
try:
123-
context.log.success("Sleeping for 10 seconds to let binary run")
124-
sleep(10)
125-
connection.conn.deleteFile(self.share, f"{binary_file_location}{self.binary_to_upload_name}")
126-
context.log.success(f"Binary {binary_file_location}{self.binary_to_upload_name} successfully deleted")
125+
connection.conn.deleteFile(self.share, f"{self.tmp_share}{self.binary_to_upload_name}")
126+
context.log.success(f"Binary {self.binary_to_upload_name} successfully deleted")
127127
except Exception as e:
128-
context.log.fail(f"Error deleting {binary_file_location}{self.binary_to_upload_name} on {self.share}: {e}")
128+
context.log.fail(f"Error deleting {self.binary_to_upload_name} on {self.share}: {e}")

0 commit comments

Comments
 (0)