Skip to content

Commit df087a7

Browse files
authored
Update schtask_as.py
Signed-off-by: Kahvi-0xFF <46513413+Kahvi-0@users.noreply.github.com>
1 parent 5514bfe commit df087a7

1 file changed

Lines changed: 11 additions & 10 deletions

File tree

nxc/modules/schtask_as.py

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

5-
65
class NXCModule:
76
"""
87
Execute a scheduled task remotely as a already connected user by @Defte_
@@ -51,6 +50,7 @@ def options(self, context, module_options):
5150
name = "schtask_as"
5251
description = "Remotely execute a scheduled task as a logged on user"
5352
supported_protocols = ["smb"]
53+
multiple_hosts = False
5454

5555
def on_admin_login(self, context, connection):
5656
self.logger = context.log
@@ -69,17 +69,16 @@ def on_admin_login(self, context, connection):
6969
return 1
7070
else:
7171
self.logger.display(f"Uploading {self.binary_to_upload}")
72+
binary_file_location = self.tmp_share if self.output_file_location is None else self.output_file_location
7273
with open(self.binary_to_upload, "rb") as binary_to_upload:
7374
try:
7475
self.binary_to_upload_name = os.path.basename(self.binary_to_upload)
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}")
76+
connection.conn.putFile(self.share, f"{binary_file_location}{self.binary_to_upload_name}", binary_to_upload.read)
77+
self.logger.success(f"Binary {self.binary_to_upload_name} successfully uploaded in {binary_file_location}{self.binary_to_upload_name}")
7778
except Exception as e:
78-
self.logger.fail(f"Error writing file to share {self.tmp_share}: {e}")
79+
self.logger.fail(f"Error writing file to share {binary_file_location}: {e}")
7980
return 1
8081

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}"
8382
self.logger.display("Connecting to the remote Service control endpoint")
8483
try:
8584
exec_method = TSCH_EXEC(
@@ -96,7 +95,7 @@ def on_admin_login(self, context, connection):
9695
self.logger,
9796
connection.args.get_output_tries,
9897
connection.args.share,
99-
self.run_task_as,
98+
self.run_task_as,
10099
self.command_to_run,
101100
self.output_filename,
102101
self.task_name,
@@ -122,7 +121,9 @@ def on_admin_login(self, context, connection):
122121
finally:
123122
if self.binary_to_upload:
124123
try:
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")
124+
context.log.success("Sleeping for 10 seconds to let binary run")
125+
sleep(10)
126+
connection.conn.deleteFile(self.share, f"{binary_file_location}{self.binary_to_upload_name}")
127+
context.log.success(f"Binary {binary_file_location}{self.binary_to_upload_name} successfully deleted")
127128
except Exception as e:
128-
context.log.fail(f"Error deleting {self.binary_to_upload_name} on {self.share}: {e}")
129+
context.log.fail(f"Error deleting {binary_file_location}{self.binary_to_upload_name} on {self.share}: {e}")

0 commit comments

Comments
 (0)