Penulis Topik: [Delphi] Method for Detect AntiVirus Emulator  (Dibaca 23180 kali)

Offline meong

  • Pro100
  • ****
  • Tulisan: 121
  • Reputation: 203
    • Lihat Profil
[Delphi] Method for Detect AntiVirus Emulator
« pada: Desember 13, 2011, 06:09:58 AM »
Emulator adalah ruang virtual pada antivirus yang digunakan untuk mengeksekusi malware. Gunanya adalah agar antivirus dapat mengetahui behavior dari virus tampa harus menginfeksi real system. Selain itu emulator juga digunakan sebagai generic unpacking bagi malware - malware yang diproteksi program pelindung seperti crypter/packer. Sangat critical fungsi dari emulator ini, bahkan sudah menjadi keharusan suatu antivirus mempunyai engine emulator didalamnya. Kalau saja antivirus buatan anda tidak ada emulatornya saya sih cuman bilang bershowerlah* (ikutan kata pocoong).  Meski demikian membuat emulator tidaklah mudah, tantangan terberat adalah bagaimana membuat ruang virtual ini tampak bagai real system bagi virus. Nah pada tulisan ini saya menshare methode dan snippet code yang bisa digunakan untuk mendeteksi emulator dari AV.

Tiap melakukan load image, windows loader akan memulainya dengan membuat section dan mengakhiri dengan menyimpan informasi loaded image pada PEB (Process Environtment Block).

Process pembuatan section kita bisa liat pada doxygen reactos (for apicall)  yang  adalah sebagai berikut :
Kutip
LdrpLoadDll
http://doxygen.reactos.org/dd/d83/ntdllp_8h_a297208bd9a920c295937d755afc40387.html#a297208bd9a920c295937d755afc40387

LdrpLoadDll akan memanggil LdrpMapDll
http://doxygen.reactos.org/dd/d83/ntdllp_8h_a2108d522b1162cb346c676b0ddc5272e.html#a2108d522b1162cb346c676b0ddc5272e

LdrpMapDll akan memanggil LdrpCreateDllSection
http://doxygen.reactos.org/d8/d55/ldrutils_8c_abb3a063e894fe6a8bfce3a541d4af034.html#abb3a063e894fe6a8bfce3a541d4af034

LdrpCreateDllSection  akan memanggil NtCreateSection dan seterusnya

Pada api NtCreateSection terdapat parameter "FileHandle" yang mana disimpan sebagai informasi file dari section. informasi ini sangat berguna untuk mengetahui file path dari section saat melakukan query memory (NtQueryVirtualMemory dengan parameter MemorySectionName). Pada PEB juga disimpan mengenai image filename yang terletak pada ldr data.

Berdasarkan informasi diatas maka saya mencoba melakukan comparasi filaname yang terletak pada PEB-LDR dan filename yang terletak pada section information. Hasilnya ternyata pada beberapa emulator (tested with kaspersky) nilai kedua filename ini berbeda, alasannya karena emulator kaspersky hanya mengemulasikan PEB tidak untuk section object .

Kode: [Pilih]
program Project1;

uses Windows, jwaNative, NcxNtTeb;

function ExtractFileName(FullName: String): String;
var
i, n: integer;
begin
  result := '';
  n := Length(FullName);
  Result := FullName;
  for i := n downto 1 do if FullName[i] = '\' then break;
  if i > 1 then Result := Copy(FullName, i+1, n-i);
end;

function NtSuccess (Stat: LongInt): Boolean;
begin
  Result := Stat >= 0;
end;

Function GetModuleFileNameByAddres(ph:THandle; Address : DWord):String;
var
  mSize,back: dword;
  mPtr: pointer;
  St: LongInt;
begin
  result := '';
  mSize := 512;
  mPtr := AllocMem(mSize);
  St := NtQueryVirtualMemory(ph, Pointer(Address), MemorySectionName, mPtr,mSize,@back);
  if NtSuccess(st) then result := PMEMORY_SECTION_NAME(mPtr).SectionFileName.Buffer;
  FreeMem(mPtr,mSize);
end;

function GetPEB(): Pointer;
asm
  mov eax, large fs:30h
  retn
end;

Function CheckEmulator:Boolean;
var
  pb: PPeb32;
  ldrdata: PPebLdrData32;
  ldrEntry: PLdrDataTableEntry32;
  name1, name2: String;
begin
  //get peb
  pb := GetPEB;
  //get ldr
  ldrdata := pb^.Ldr;
  //get first ldr entry
  ldrEntry := ldrdata^.InLoadOrderModuleList.Flink;
  //get section filename
  name1 := ExtractFileName(GetModuleFileNameByAddres(thandle(-1), DWORD(ldrEntry^.DllBase)));
  //get PEB Image filename
  name2 := ExtractFileName(PWideChar(ldrEntry.FullDllName.Buffer));
  //Compare
  result := name1=name2;
end;

begin
  if not CheckEmulator then messagebox(0, nil, nil, mb_ok);
end.


Scanyou result test
http://scan4you.net/result.php?id=c3408_11egap
http://scan4you.net/result.php?id=dc46a_11dtd3

terakhir saya tidak bertanggung jawab atas penggunaan kode diatas karena tulisan ini saya buat hanya sebagai dokumentasi hasil research tentang bagaimana mendeteksi emulator. Semoga kedepannya av developer dapat lebih menyempurnakan emulatornya..

thanks.

directlink http://cybercoding.wordpress.com/2011/12/12/detect-antivirus-emulator/#more-135

Offline suryascience

  • Pro100
  • ****
  • Tulisan: 173
  • Reputation: 189
  • Aku butuh ilmu bukan cendol
    • Lihat Profil
    • Portal pendidikan dasar ilmu-ilmu Exacta
Re: [Delphi] Method for Detect AntiVirus Emulator
« Jawab #1 pada: Desember 14, 2011, 07:02:33 PM »
Trim's Gan..
Ijin Copy SC nya yach...
Artikel Suryatekno kini dialihkan ke :
http://achil.besaba.com
Artikel terbarunya :
 http://achil.besaba.com/seo-dimata-orang-awam/

Offline zerox95

  • Pro10
  • ***
  • Tulisan: 53
  • Reputation: 136
    • Lihat Profil
Re: [Delphi] Method for Detect AntiVirus Emulator
« Jawab #2 pada: Desember 15, 2011, 03:08:38 AM »
manteb
don be silly scare virus

Offline Oim Devans

  • Pro200
  • *****
  • Tulisan: 370
  • Reputation: 271
  • Jenis kelamin: Pria
  • X2 Team Admin
    • Lihat Profil
    • X2 Team
Re: [Delphi] Method for Detect AntiVirus Emulator
« Jawab #3 pada: Desember 15, 2011, 01:09:12 PM »
sumpah gan :(
ane paling gk ngertinya namanya Delphi :(
karena ane belum pernah nyentuh Delphi :(
kalo udah nyentuh Delphi ?? Dijamin Bakal Handal ane :D
akakakakakak :D
--//Belajar Dan Terus Belajar Sesuatu agar Menjadi yang inginkan\\--

Offline suryascience

  • Pro100
  • ****
  • Tulisan: 173
  • Reputation: 189
  • Aku butuh ilmu bukan cendol
    • Lihat Profil
    • Portal pendidikan dasar ilmu-ilmu Exacta
Re: [Delphi] Method for Detect AntiVirus Emulator
« Jawab #4 pada: Desember 15, 2011, 02:42:45 PM »
sumpah gan :(
ane paling gk ngertinya namanya Delphi :(
karena ane belum pernah nyentuh Delphi :(
kalo udah nyentuh Delphi ?? Dijamin Bakal Handal ane :D
akakakakakak :D

Belajar dong Gan ...  :). Klo mau bisa DELPHI belajar PASCAL dulu gan. Klik icon yang ada di SIGNATURE aku klo mau belajar dasar-dasar PASCAL dan DELPHI .  :)
Artikel Suryatekno kini dialihkan ke :
http://achil.besaba.com
Artikel terbarunya :
 http://achil.besaba.com/seo-dimata-orang-awam/

Offline Oim Devans

  • Pro200
  • *****
  • Tulisan: 370
  • Reputation: 271
  • Jenis kelamin: Pria
  • X2 Team Admin
    • Lihat Profil
    • X2 Team
Re: [Delphi] Method for Detect AntiVirus Emulator
« Jawab #5 pada: Desember 15, 2011, 02:52:40 PM »
Delphi itu Kegunaanya bisa apa aja ?
--//Belajar Dan Terus Belajar Sesuatu agar Menjadi yang inginkan\\--

Offline RifqiSah

  • Pro500
  • ******
  • Tulisan: 919
  • Reputation: 820
  • Jenis kelamin: Pria
  • © 2016 Alrif Technology
    • Lihat Profil
    • Alrif Technology
Re: [Delphi] Method for Detect AntiVirus Emulator
« Jawab #6 pada: Desember 15, 2011, 03:22:49 PM »
Delphi itu Kegunaanya bisa apa aja ?
Saya pernah mencoba delphi, tapi algoritmanya sangat rumit ???
makannya saya pindah ke visual basic, lebih mudah :-bd

Offline suryascience

  • Pro100
  • ****
  • Tulisan: 173
  • Reputation: 189
  • Aku butuh ilmu bukan cendol
    • Lihat Profil
    • Portal pendidikan dasar ilmu-ilmu Exacta
Re: [Delphi] Method for Detect AntiVirus Emulator
« Jawab #7 pada: Desember 15, 2011, 03:30:35 PM »
PCMAV buatnya pake DELPHI Gan   ;), Gunanya banyak kok, salah satunya bisa buat Program Database yang kompleks seperti di Kantor aku  :)
Artikel Suryatekno kini dialihkan ke :
http://achil.besaba.com
Artikel terbarunya :
 http://achil.besaba.com/seo-dimata-orang-awam/

Offline meong

  • Pro100
  • ****
  • Tulisan: 121
  • Reputation: 203
    • Lihat Profil
Re: [Delphi] Method for Detect AntiVirus Emulator
« Jawab #8 pada: Desember 16, 2011, 04:29:55 AM »
semua bahasa programing itu sama, tergantung algoritma anda (logika anda).. yang berbeda mungkin cara penulisan (bahasa) dan pemahaman tentang IDE..

Offline deni.doank

  • Pro10
  • ***
  • Tulisan: 51
  • Reputation: 81
  • Jenis kelamin: Pria
    • Lihat Profil
Re: [Delphi] Method for Detect AntiVirus Emulator
« Jawab #9 pada: Mei 26, 2012, 09:11:37 AM »
betul kata gan meong tapi menurut saya masih cantikan object pascal/delphi.. lebih manusiawi gitu.. :p