private static void PostResults(string fileName, ResultMachine machine, string postUrl, bool isDeletable = false) { var sb = new StringBuilder(); var data = File.ReadLines(fileName); foreach (var d in data) { sb.AppendLine(d); } var r = new TransferLogDump(); r.Log = sb.ToString(); var payload = JsonConvert.SerializeObject(r); if (Program.Configuration.ClientResults.IsSecure) { payload = Crypto.EncryptStringAes(payload, machine.Name); payload = Base64Encoder.Base64Encode(payload); var p = new EncryptedPayload(); p.Payload = payload; payload = JsonConvert.SerializeObject(p); } using (var client = WebClientBuilder.Build(machine)) { client.Headers[HttpRequestHeader.ContentType] = "application/json"; client.UploadString(postUrl, payload); } if (isDeletable) { File.Delete(fileName); } else { File.WriteAllText(fileName, string.Empty); } _log.Trace($"{DateTime.Now} - {fileName} posted to server successfully"); }
// ReSharper disable once UnusedParameter.Local private IActionResult Process(HttpContext context, HttpRequest request, TransferLogDump value, CancellationToken ct) { var id = request.Headers["ghosts-id"]; //log.Trace($"Request by {id}"); var m = WebRequestReader.GetMachine(HttpContext); if (!string.IsNullOrEmpty(id)) { m.Id = new Guid(id); } else { if (!m.IsValid()) { return(StatusCode(StatusCodes.Status401Unauthorized, "Invalid machine request")); } } if (!string.IsNullOrEmpty(value.Log)) { log.Trace($"payload received: {value.Log}"); _service.Enqueue( new QueueEntry { Payload = new MachineQueueEntry { Machine = m, LogDump = value, HistoryType = Machine.MachineHistoryItem.HistoryType.PostedResults }, Type = QueueEntry.Types.Machine }); } return(NoContent()); }
private static void PostClientResults() { if (!Program.Configuration.ClientResults.IsEnabled) { return; } // ignore all certs ServicePointManager.ServerCertificateValidationCallback += (sender, cert, chain, sslPolicyErrors) => true; var fileName = ApplicationDetails.LogFiles.ClientUpdates; var posturl = Program.Configuration.ClientResults.PostUrl; var machine = new ResultMachine(); GuestInfoVars.Load(machine); Thread.Sleep(ProcessManager.Jitter(Program.Configuration.ClientResults.CycleSleep)); while (true) { try { var sb = new StringBuilder(); var data = File.ReadLines(fileName); foreach (var d in data) { sb.AppendLine(d); } var r = new TransferLogDump(); r.Log = sb.ToString(); var payload = JsonConvert.SerializeObject(r); if (Program.Configuration.ClientResults.IsSecure) { payload = Crypto.EncryptStringAes(payload, machine.Name); payload = Crypto.Base64Encode(payload); var p = new EncryptedPayload(); p.Payload = payload; payload = JsonConvert.SerializeObject(p); } using (var client = WebClientBuilder.Build(machine)) { client.Headers[HttpRequestHeader.ContentType] = "application/json"; client.UploadString(posturl, payload); } File.WriteAllText(fileName, string.Empty); _log.Trace($"{DateTime.Now} - {fileName} posted to server successfully"); } catch (Exception e) { _log.Debug($"Problem posting logs from { fileName } to server { posturl }"); _log.Error(e); } Thread.Sleep(ProcessManager.Jitter(Program.Configuration.ClientResults.CycleSleep)); } }
public IActionResult Index([FromBody] TransferLogDump value, CancellationToken ct) { return(Process(HttpContext, Request, value, ct)); }
static void Main(string[] args) { if (!CommandLineFlagManager.Parse(args)) { return; } RestClient client; IRestResponse o; string id; RestRequest request; var commands = new List <string>(); commands.Add("BrowserChrome"); commands.Add("BrowserFirefox"); commands.Add("Word"); commands.Add("Excel"); commands.Add("Outlook"); commands.Add("PowerPoint"); commands.Add("Clicks"); commands.Add("BrowserIE"); var rnd = new Random(); var i = 0; while (true) { client = new RestClient($"{Program.Options.Host}/api/clientid"); request = new RestRequest(Method.GET); request.AddHeader("Cache-Control", "no-cache"); request.AddHeader("Content-Type", "application/json"); request.AddHeader("ghosts-user", "clubber.lang"); request.AddHeader("ghosts-ip", $"127.1.1.{i}"); request.AddHeader("ghosts-domain", $"domain-{i}"); request.AddHeader("ghosts-host", $"host-{i}"); request.AddHeader("ghosts-resolvedhost", $"resolvedHost.{i}"); request.AddHeader("ghosts-fqdn", $"flag01.hq.win10.user-test-vpn-{i}"); request.AddHeader("ghosts-name", $"flag01.hq.win10.user-test-vpn-{i}"); request.AddHeader("ghosts-version", "2.6.0.0"); o = client.Execute(request); id = o.Content.Replace("\"", ""); Console.WriteLine($"Id response was: {id}"); Thread.Sleep(50); var i2 = 30; Console.Write($"Results "); while (i2 > 0) { client = new RestClient($"{Options.Host}/api/clientresults"); request = new RestRequest(Method.POST); request.AddHeader("Cache-Control", "no-cache"); request.AddHeader("Content-Type", "application/json"); request.AddHeader("ghosts-user", "clubber.lang"); request.AddHeader("ghosts-ip", $"127.1.1.{i}"); request.AddHeader("ghosts-domain", $"domain-{i}"); request.AddHeader("ghosts-host", $"host-{i}"); request.AddHeader("ghosts-resolvedhost", $"resolvedHost.{i}"); request.AddHeader("ghosts-fqdn", $"flag01.hq.win10.user-test-vpn-{i}"); request.AddHeader("ghosts-name", $"flag01.hq.win10.user-test-vpn-{i}"); request.AddHeader("ghosts-version", "2.6.0.0"); request.AddHeader("ghosts-id", id); var r = new TransferLogDump(); var data = File.ReadLines(Options.UpdatesFile); var sb = new StringBuilder(); foreach (var d in data) { sb.AppendLine(d); } r.Log = sb.ToString(); var payload = JsonConvert.SerializeObject(r); request.AddParameter("undefined", payload, ParameterType.RequestBody); // request.AddParameter("undefined", // "{\r\n\t\"Log\": \"TIMELINE|" + DateTime.UtcNow.ToString("MM/dd/yy H:mm:ss tt") + "|{\\\"Handler\\\":\\\"" + // commands.PickRandom() + // "\\\",\\\"Command\\\":\\\"random\\\",\\\"CommandArg\\\":\\\"https:\\/\\/nec-hr.region.army.mil\\\"}\\r\\nHEALTH|" + // DateTime.Now.ToString("MM/dd/yy H:mm:ss tt") + // "|{\\\"Internet\\\":true,\\\"Permissions\\\":false,\\\"ExecutionTime\\\":101,\\\"Errors\\\":[],\\\"LoggedOnUsers\\\":[\\\"Dustin\\\"]}\\r\\nTIMELINE|" + // DateTime.Now.ToString() + "|{\\\"Handler\\\":\\\"" + commands.PickRandom() + // "\\\",\\\"Command\\\":\\\"random\\\",\\\"CommandArg\\\":\\\"http:\\/\\/www.dma.mil\\\"}\"\r\n}", ParameterType.RequestBody); o = client.Execute(request); Console.Write($"{i2}, "); i2--; Thread.Sleep(50); } client = new RestClient($"{Options.Host}/api/clientresults"); request = new RestRequest(Method.POST); request.AddHeader("cache-control", "no-cache"); request.AddHeader("ghosts-user", "clubber.lang"); request.AddHeader("ghosts-ip", $"127.1.1.{i}"); request.AddHeader("ghosts-domain", $"domain-{i}"); request.AddHeader("ghosts-host", $"host-{i}"); request.AddHeader("ghosts-resolvedhost", $"resolvedHost.{i}"); request.AddHeader("ghosts-fqdn", $"flag01.hq.win10.user-test-vpn-{i}"); request.AddHeader("ghosts-name", $"flag01.hq.win10.user-test-vpn-{i}"); request.AddHeader("ghosts-version", "2.6.0.0"); request.AddHeader("Content-Type", "application/json"); request.AddParameter("undefined", "{\"Log\":\"HEALTH|" + DateTime.UtcNow.ToString("MM/dd/yy H:mm:ss tt") + "|{\\\"Internet\\\":true,\\\"Permissions\\\":false,\\\"ExecutionTime\\\":946,\\\"Errors\\\":[],\\\"LoggedOnUsers\\\":[\\\"Dustin\\\"],\\\"Stats\\\":{\\\"Memory\\\":0.907363832,\\\"Cpu\\\":97.98127,\\\"DiskSpace\\\":0.479912162}}\"}", ParameterType.RequestBody); o = client.Execute(request); Console.WriteLine($"Health response was: {o.ResponseStatus}"); Thread.Sleep(50); client = new RestClient($"{Options.Host}/api/clientupdates"); request = new RestRequest(Method.GET); request.AddHeader("Cache-Control", "no-cache"); request.AddHeader("Content-Type", "application/json"); request.AddHeader("ghosts-user", "clubber.lang"); request.AddHeader("ghosts-ip", $"127.1.1.{i}"); request.AddHeader("ghosts-domain", $"domain-{i}"); request.AddHeader("ghosts-host", $"host-{i}"); request.AddHeader("ghosts-resolvedhost", $"resolvedHost.{i}"); request.AddHeader("ghosts-fqdn", $"flag01.hq.win10.user-test-vpn-{i}"); request.AddHeader("ghosts-name", $"flag01.hq.win10.user-test-vpn-{i}"); request.AddHeader("ghosts-version", "2.6.0.0"); request.AddHeader("ghosts-id", id); request.AddParameter("undefined", "{\"Log\":\"\"}", ParameterType.RequestBody); o = client.Execute(request); Console.WriteLine($"Updates response was: {o.ResponseStatus}"); Thread.Sleep(500); i++; } }