public static async void SubmitAgentCommand(string agentId, string module, string command, string data = "") { var cmdRequest = new AgentCommandRequest { AgentId = agentId, Module = module, Command = command, Data = data }; var apiRequest = new RestRequest($"/api/Agents/command", Method.POST); apiRequest.AddParameter("application/json", JsonConvert.SerializeObject(cmdRequest), ParameterType.RequestBody); await REST.Client.ExecuteAsync(apiRequest); }
public void SendAgentCommand(AgentCommandRequest request, string user) { var agent = ConnectedAgents.FirstOrDefault(a => a.Metadata.AgentID.Equals(request.AgentId, StringComparison.OrdinalIgnoreCase)); if (agent != null) { while (true) { if (!string.IsNullOrEmpty(agent.Metadata.ParentAgentID)) { var parentAgent = agent.Metadata.ParentAgentID; agent = ConnectedAgents.FirstOrDefault(a => a.Metadata.AgentID.Equals(parentAgent, StringComparison.OrdinalIgnoreCase)); if (string.IsNullOrEmpty(agent.Metadata.ParentAgentID)) { break; } } else { break; } } agent.QueuedCommands.Enqueue(new AgentMessage { IdempotencyKey = Guid.NewGuid().ToString(), Metadata = new AgentMetadata(), Data = new C2Data { AgentID = request.AgentId, Module = request.Module, Command = request.Command, Data = Encoding.UTF8.GetBytes(request.Data) } }); OnAgentEvent?.Invoke(this, new AgentEvent(request.AgentId, AgentEventType.CommandRequest, request.Command)); Log.Logger.Information("AGENT {Event} {AgentID} {Command} {Nick}", AgentEventType.CommandRequest.ToString(), request.AgentId, request.Command, user); } }
public void SendAgentCommand([FromBody] AgentCommandRequest request) { var user = HttpContext.User.Identity.Name; Program.ServerController.AgentController.SendAgentCommand(request, user); }