---
# System prepended metadata

title: Red Failure

---

# **Red Failure**
* **Phân tích Pcap:**
![](https://hackmd.io/_uploads/SJme9MbZ6.png)
* **Phân tích file:**
+File `4A7xH.ps1`: Khi tải xuống từ pcap file bị xáo trộn. Dưới đây là file đã được làm sạch:
![](https://hackmd.io/_uploads/SJmnjMZZa.png)
+File `user32.dll`:
Sử dụng `dnSpy32` để phân tích file:
Trong lệnh powershell:
![](https://hackmd.io/_uploads/ryPpRGWZT.png)
Trong file user32.dll có tên Boom.cs:
![](https://hackmd.io/_uploads/B1DcSmWba.png)
Shellcode được mã hoá là 9tVIo và các đối số được cung cấp cho tệp thực thi Dinjector:
![](https://hackmd.io/_uploads/SkoM4XWWT.png)
Shellcode được mã hoá bằng mật khẩu. Trong file user32 có tên AES.cs cung cấp cơ chế mã hoá/giải mã.
![](https://hackmd.io/_uploads/Byq1Bm--a.png)
Đối với IV, nó sẽ sử dụng 16 byte dữ liệu đầu tiên. Nó sẽ sử dụng CBC. Đối với mật khẩu, chúng ta có thể lấy từ lệnh powershell, đó là **`z64&Rx27Z$B%73up`**
![](https://hackmd.io/_uploads/S1sifXbZT.png)

Với những thông tin ở trên có thể tiến hành giải mã shellcode:

```
using System;
using System.IO;
using System.Security.Cryptography;
using System.Text;
using System.Linq;
namespace DInjector
{
    class pass 
    {         
        static void Main(string[] args)
        {
            String password = "z64&Rx27Z$B%73up";
            byte[] key = SHA256.Create().ComputeHash(Encoding.UTF8.GetBytes(password));
            System.Console.WriteLine("key:");
            byte[] data = File.ReadAllBytes("C:\\Users\\Administrator\\Downloads\\visual_studio\\ConsoleApp2\\9tVI0");
            byte[] result;
            using (AesCryptoServiceProvider aesCryptoServiceProvider = new AesCryptoServiceProvider())
            {
                byte[] iv = data.Take(16).ToArray<byte>();
                byte[] data2 = data.Skip(16).Take(data.Length - 16).ToArray<byte>();
                aesCryptoServiceProvider.Key = key;
                aesCryptoServiceProvider.IV = iv;
                aesCryptoServiceProvider.Mode = CipherMode.CBC;
                aesCryptoServiceProvider.Padding = PaddingMode.PKCS7;
                using (ICryptoTransform cryptoTransform = aesCryptoServiceProvider.CreateDecryptor(aesCryptoServiceProvider.Key, aesCryptoServiceProvider.IV))
                {
                    result = PerformCryptography(cryptoTransform, data2);
                }
            }
            using (BinaryWriter binWriter =  new BinaryWriter(File.Open("test.sc", FileMode.Create)))  
            {  
                binWriter.Write(result);
            } 
            System.Console.WriteLine("Success write file!");
        }
        private static byte[] PerformCryptography(ICryptoTransform cryptoTransform, byte[] data)
        {
            byte[] result;
            using (MemoryStream memoryStream = new MemoryStream())
            {
                using (CryptoStream cryptoStream = new CryptoStream(memoryStream, cryptoTransform, CryptoStreamMode.Write))
                {
                    cryptoStream.Write(data, 0, data.Length);
                    cryptoStream.FlushFinalBlock();
                    result = memoryStream.ToArray();
                }
            }
            return result;
        }
    }
}
```
File kết quả:
![](https://hackmd.io/_uploads/SkOMcXWba.png)

Sử dụng scdbg để chạy shellcode. 
![](https://hackmd.io/_uploads/r1VBcQZWp.png)
