Chapter 16-17.en - Id
Chapter 16-17.en - Id
Anti-Debugging 2
SetLastError (errorValue);
Anti-Debugging 3
} PEB, * PPEB;
Sementara proses sedang berjalan, lokasi PEB dapat direferensikan oleh lokasi
fs: [30h]. Untuk anti-debugging, malware akan menggunakan lokasi itu untuk
memeriksaBeingDebuggedbendera, yang menunjukkan apakah proses tertentu sedang
debugged. Tabel 16-1 menunjukkan dua contoh dari jenis cek.
mov eax, dword ptr fs: [30 h] mendorong ptr dword fs: [30 h]
mov ebx, byte ptr [eax + 2] tes pop edx
ebx, ebx jz NoDebuggerDetected CMP byte ptr [edx + 2], 1 je
DebuggerDetected
Dalam kode di sebelah kiri pada Tabel 16-1, lokasi PEB dipindahkan ke EAX.
Berikutnya, ini diimbangi ditambah 2 dipindahkan ke EBX, yang sesuai dengan
offset ke dalam PEB dari lokasiBeingDebuggedbendera. Akhirnya, EBX diperiksa
untuk melihat apakah itu adalah nol. Jika demikian, debugger tidak terpasang, dan
melompat akan diambil.
Contoh lain ditampilkan di sisi kanan Tabel 16-1. Lokasi PEB dipindahkan ke
EDX menggunakan kombinasi dorong / pop instruksi, dan kemudian BeingDebugged
Bendera pada offset 2 secara langsung dibandingkan dengan 1.
Pemeriksaan ini dapat mengambil banyak bentuk, dan, akhirnya, lompatan
bersyarat menentukan kode jalan. Anda dapat mengambil salah satu pendekatan
berikut untuk mengatasi masalah ini:
Anti-Debugging 4
bidang.
Offset 0x10 di header tumpukan adalah ForceFlagslapangan pada Windows XP,
tetapi untuk Windows 7, itu adalah pada offset 0x44 untuk aplikasi 32-bit. Malware
juga dapat melihat mengimbangi 0x0C pada Windows XP atau offset 0x40 pada
Windows 7 untukFlagsbidang. Bidang ini hampir selalu sama denganForceFlags
lapangan, tetapi biasanya ORed dengan nilai 2.
Listing 16-3 menunjukkan kode assembly untuk teknik ini. (Perhatikan bahwa
dua dereferences terpisah harus terjadi.)
memeriksa NTGlobalFlag
Sejak proses berjalan sedikit berbeda ketika memulai dengan debugger, mereka
menciptakan tumpukan memori berbeda. Informasi bahwa sistem ini menggunakan
untuk menentukan bagaimana membuat struktur tumpukan disimpan di lokasi yang
tak tercatat di PEB pada offset 0x68. Jika nilai di lokasi ini adalah 0x70, kita tahu
bahwa kita berjalan di debugger.
Nilai 0x70 adalah kombinasi dari bendera berikut ketika tumpukan dibuat oleh
debugger. Bendera ini ditetapkan untuk proses jika dimulai dari dalam debugger.
(FLG_HEAP_ENABLE_TAIL_CHECK | FLG_HEAP_ENABLE_FREE_CHECK |
FLG_HEAP_VALIDATE_PARAMETERS)
Anti-Debugging 5
Cara termudah untuk mengatasi teknik ini adalah untuk mengubah bendera
secara manual atau dengan plug-in hide-debug untuk debugger Anda. Jika Anda
menggunakan WinDbg, Anda dapat memulai program dengan pilihan debug
tumpukan dinonaktifkan, seperti yang disebutkan pada bagian sebelumnya.
Dalam contoh ini, kode hanya terlihat untuk jendela bernama OllyDbg.
Anti-Debugging 6
malware untuk mendeteksi perilaku semacam ini debugger: INT scanning, cek
checksum, dan cek waktu.
INT Scanning
INT 3adalah perangkat lunak interrupt yang digunakan oleh debugger untuk
sementara menggantikan instruksi dalam program berjalan dan untuk memanggil
debug pengecualian handler- mekanisme dasar untuk mengatur breakpoint. Opcode
untukINT 3 aku s 0xCC. Setiap kali Anda menggunakan debugger untuk mengatur
breakpoint, memodifikasi kode dengan menyisipkan0xCC.
Selain tertentu INT 3 instruksi, sebuah INT segera dapat mengatur interupsi
apapun, termasuk 3 (segerabisa menjadi mendaftar, seperti EAX). ItuINT segera
instruksi menggunakan dua opcodes: 0xCD nilai. opcode 2-byte ini kurang umum
digunakan oleh debugger.
Salah satu teknik anti-debugging umum memiliki proses scan kode sendiri
untuk INT 3 modifikasi dengan mencari kode untuk 0xCC opcode, seperti ditunjukkan
pada Listing 16-6.
memanggil $ + 5 pop
edi sub edi, 5 mov ecx,
400h mov eax, 0CCh
repne SCASB jz
DebuggerDetected
Kode ini dimulai dengan panggilan, diikuti dengan pop yang menempatkan EIP
ke EDI.
EDI kemudian disesuaikan dengan awal kode. Kode ini kemudian dipindai
untuk0xCCbytes. Jika sebuah0xCCbyte ditemukan, ia tahu bahwa debugger hadir.
Teknik ini dapat diatasi dengan menggunakan hardware breakpoints bukan
breakpoints perangkat lunak.
Anti-Debugging 7
waktu Cek
Waktu pemeriksaan adalah salah satu cara yang paling populer untuk malware untuk
mendeteksi debugger karena proses berjalan lebih lambat ketika sedang debugged.
Sebagai contoh, single-loncatan melalui program substansial memperlambat
kecepatan eksekusi.
Ada beberapa cara untuk menggunakan cek waktu untuk mendeteksi debugger:
Anti-Debugging 8
Menggunakan QueryPerformanceCounter dan GetTickCount
Dua fungsi Windows API yang digunakan seperti RDTSCuntuk melakukan
pemeriksaan Anti- Debugging waktu. Metode ini bergantung pada kenyataan bahwa
prosesor memiliki resolusi tinggi counter-register yang menyimpan jumlah kegiatan
yang dilakukan di prosesor kinerja.QueryPerformanceCounterbisa disebut untuk query
counter ini dua kali untuk mendapatkan perbedaan waktu untuk digunakan dalam
perbandingan. Jika terlalu banyak waktu telah berlalu antara dua panggilan, asumsi
adalah bahwa debugger sedang digunakan.
fungsi GetTickCountmengembalikan jumlah milidetik yang telah berlalu sejak
reboot sistem terakhir. (Karena ukuran dialokasikan untuk counter ini, itu berguling
setelah 49,7 hari.) ContohGetTickCount dalam praktek ditampilkan dalam Listing 16-
8.
a = GetTickCount ();
MaliciousActivityFunction (); b =
GetTickCount ();
Semua serangan waktu yang telah kita bahas dapat ditemukan selama
debugging atau analisis statis dengan mengidentifikasi dua panggilan berturut-turut
untuk fungsi-fungsi ini diikuti oleh perbandingan. Pemeriksaan ini harus
menangkap debugger hanya jika Anda singlestepping atau pengaturan breakpoints
antara dua panggilan yang digunakan untuk menangkap waktu delta. Oleh karena
itu, cara termudah untuk menghindari deteksi oleh waktu adalah untuk menjalankan
melalui pemeriksaan ini dan mengatur breakpoint hanya setelah mereka, dan
kemudian memulai single-melangkah lagi. Jika itu bukan pilihan, hanya
memodifikasi hasil perbandingan untuk memaksa melompat yang Anda ingin
dibawa.
Anti-Debugging 9
Menggunakan TLS Callback
Anda mungkin berpikir bahwa ketika Anda memuat program ke debugger, itu akan
berhenti pada instruksi pertama program dijalankan, tapi ini tidak selalu terjadi.
Kebanyakan debugger mulai dari titik masuk program seperti yang didefinisikan
oleh header PE. Sebuah panggilan balik TLS dapat digunakan untuk mengeksekusi
kode sebelum titik masuk dan karena itu mengeksekusi diam-diam di debugger. Jika
Anda hanya bergantung pada penggunaan debugger, Anda bisa kehilangan fungsi
malware tertentu, sebagai callback TLS dapat berjalan secepat itu dimuat ke
debugger.
TLS adalah kelas penyimpanan Windows dalam mana objek data bukan
merupakan variabel tumpukan otomatis, namun adalah lokal untuk setiap thread
yang berjalan kode. Pada dasarnya, TLS memungkinkan setiap thread untuk
mempertahankan nilai yang berbeda untuk variabel dideklarasikan menggunakan
TLS. Ketika TLS diimplementasikan oleh executable, kode biasanya akan
berisi.tlsbagian di header PE, seperti yang ditunjukkan pada Gambar 16-1. TLS
mendukung fungsi callback untuk inisialisasi dan terminasi objek data TLS.
Windows menjalankan fungsi-fungsi ini sebelum menjalankan kode pada awal
normal program.
Anti-Debugging 10
untuk menampilkan semua titik masuk ke program, termasuk callback TLS, seperti
yang ditunjukkan pada Gambar 16-2. Semua fungsi callback TLS telah label mereka
didahului denganTlsCallback. Anda dapat menelusuri ke fungsi callback di IDA Pro
dengan klik dua kali nama fungsi.
CATATAN OllyDbg 2.0 memiliki kemampuan lebih breaking dari versi 1.1; misalnya,
dapat berhenti pada awal callback TLS. Juga, WinDbg selalu istirahat di sistem
breakpoint sebelum callback TLS.
Anti-Debugging 11
menggunakan pengecualian
Seperti dibahas sebelumnya, interupsi menghasilkan pengecualian yang digunakan
oleh debugger untuk melakukan operasi seperti breakpoints. Dalam Bab 15, Anda
belajar bagaimana untuk mendirikan sebuah SEH untuk mencapai lompatan yang
tidak konvensional. Modifikasi dari rantai SEH berlaku untuk kedua anti-
pembongkaran dan anti-debugging. Pada bagian ini, kita akan melewatkan spesifik
SEH (karena mereka dibahas dalam Bab 15) dan fokus pada cara-cara lain yang
pengecualian dapat digunakan untuk menghambat malware
analis.
Pengecualian dapat digunakan untuk mengganggu atau mendeteksi debugger.
Kebanyakan deteksi exceptionbased bergantung pada fakta bahwa debugger akan
menjebak pengecualian dan tidak segera menyebarkannya ke proses yang sedang
debugged untuk menangani. Pengaturan standar pada kebanyakan debugger adalah
untuk pengecualian perangkap dan tidak lulus mereka untuk program ini. Jika
debugger tidak lulus pengecualian untuk proses dengan benar, kegagalan yang
dapat dideteksi dalam mekanisme proses penanganan-pengecualian.
Gambar 16-4 menunjukkan pengaturan default OllyDbg ini; semua
pengecualian akan terjebak kecuali kotak dicentang. Pilihan ini diakses melalui
Optionsdebugging Pilihanpengecualian.
memasukkan Interupsi
Bentuk klasik anti-debugging adalah dengan menggunakan pengecualian untuk
mengganggu analis dan mengganggu pelaksanaan program yang normal dengan
memasukkan interupsi di tengah-tengah urutan instruksi yang valid. Tergantung
pada pengaturan debugger, sisipan ini bisa menyebabkan debugger untuk berhenti,
Anti-Debugging 12
karena merupakan mekanisme yang sama debugger itu sendiri digunakan untuk
mengatur breakpoints perangkat lunak.
Memasukkan INT 3
Karena INT 3 digunakan oleh debugger untuk mengatur breakpoints perangkat lunak,
salah satu teknik Anti- Debugging terdiri dari memasukkan 0xCCopcodes menjadi
bagian yang sah dari kode untuk mengelabui debugger untuk berpikir bahwa
opcodes yang breakpoints nya. Beberapa debugger melacak di mana mereka
mengatur breakpoints software untuk menghindari jatuh untuk trik ini.
2-byte urutan opcode 0xCD03 juga dapat digunakan untuk menghasilkan INT 3,
Dan ini sering merupakan cara yang valid untuk malware mengganggu WinDbg. Di
luar debugger,0xCD03 menghasilkan STATUS_BREAKPOINTpengecualian. Namun, di
dalam WinDbg, menangkap breakpoint dan kemudian diam-diam kemajuan EIP
oleh tepat 1 byte, karena breakpoint adalah biasanya0xCCopcode. Hal ini dapat
menyebabkan program untuk mengeksekusi satu set instruksi yang berbeda ketika
sedang debugged oleh WinDbg dibandingkan berjalan normal. (OllyDbg tidak
rentan terhadap gangguan menggunakan ini 2-byteINT 3 menyerang.)
Listing 16-9 menunjukkan kode assembly yang mengimplementasikan teknik
ini. Contoh ini menetapkan panggilan SEH dan kemudian baruINT 3 untuk
memaksa kode untuk melanjutkan.
mendorong diimbangi
terus fs mendorong
dword: [0] mov fs: [0],
esp int 3
// yang debugged terus:
// tidak sedang debugged
Memasukkan INT 2D
Itu INT 2D anti-debugging teknik fungsi seperti INT 3-itu INT 0x2Dinstruksi digunakan
untuk mengakses kernel debugger. KarenaINT 0x2D adalah cara yang debugger kernel
mengatur breakpoints, metode yang ditunjukkan pada Listing 16-10 berlaku.
memasukkan ICE
Salah satu petunjuk yang tak tercatat Intel adalah In-Circuit Emulator (ICE)
breakpoint, icebp (opcode 0xF1). Instruksi ini dirancang untuk membuatnya lebih
mudah untuk debug menggunakan ICE, karena sulit untuk mengatur breakpoint
sewenang-wenang dengan ICE.
Pelaksana instruksi ini menghasilkan satu langkah pengecualian. Jika program
ini sedang ditelusuri melalui single-loncatan, debugger akan berpikir itu adalah
pengecualian yang normal yang dihasilkan oleh satu langkah dan tidak
mengeksekusi ditetapkan sebelumnya pengecualian handler. Malware dapat
Anti-Debugging 13
mengambil keuntungan dari ini dengan menggunakan handler pengecualian untuk
aliran eksekusi normal, yang akan terganggu dalam kasus ini.
Dalam rangka untuk memotong teknik ini, tidak satu langkah lebih dari satu
icebp petunjuk.
debugger Kerentanan
Seperti semua software, debugger mengandung kerentanan, dan penulis kadang-
kadang malware menyerang mereka untuk mencegah debugging. Di sini, kami
menyajikan beberapa kerentanan populer di jalan OllyDbg menangani format PE.
PE header Kerentanan
Teknik pertama memodifikasi header Microsoft PE dari biner, menyebabkan
OllyDbg crash ketika loading executable. Hasilnya adalah kesalahan dari “Bad atau
diketahui 32-bit executable File,” namun program ini biasanya berjalan dengan baik
di luar debugger.
Masalah ini disebabkan oleh fakta bahwa OllyDbg mengikuti spesifikasi
Microsoft mengenai header PE terlalu ketat. Pada header PE, biasanya ada struktur
yang dikenal sebagaiIMAGE_OPTIONAL_HEADER. Gambar 16-5 menunjukkan subset
dari struktur ini.
Gambar 16-5: PE IMAGE_OPTIONAL_HEADER dan NumberOfRvaAndSizes kerentanan
Beberapa elemen terakhir dalam struktur ini adalah kepentingan tertentu. Itu
NumberOfRvaAndSizes lapangan menunjukkan jumlah entri dalam DataDirectoryarray
berikut. ItuDataDirectoryarray yang menunjukkan di mana untuk menemukan
komponen executable penting lainnya dalam file; itu adalah sedikit lebih dari sebuah
arrayIMAGE_DATA_DIRECTORYstruktur pada akhir struktur header opsional. Setiap
struktur direktori data menentukan ukuran dan alamat virtual relatif direktori.
Ukuran array diatur ke IMAGE_NUMBEROF_DIRECTORY_ENTRIES, Yang sama dengan
0x10. Windows loader mengabaikan setiapNumberOfRvaAndSizes lebih besar dari 0x10,
Karena apa pun yang lebih besar tidak muat di DataDirectoryArray. OllyDbg
mengikuti standar dan penggunaanNumberOfRvaAndSizes tidak peduli apa.
Sebagai akibatnya, pengaturan ukuran array untuk nilai lebih besar dari 0x10 (seperti
0x99) Akan menyebabkan OllyDbg untuk menghasilkan sebuah jendela pop-up
kepada pengguna sebelum keluar program.
Cara termudah untuk mengatasi teknik ini adalah untuk secara manual
memodifikasi header PE dan mengatur NumberOfRvaAndSizes untuk
0x10menggunakan hex editor atau PE Explorer. Atau, tentu saja, Anda dapat
menggunakan debugger yang tidak rentan terhadap teknik ini, seperti WinDbg atau
OllyDbg 2.0.
Trik lain sundulan PE melibatkan bagian header, menyebabkan OllyDbg crash
selama loading dengan kesalahan “File berisi terlalu banyak data.” (WinDbg dan
OllyDbg 2.0 tidak rentan terhadap teknik ini.) Bagian mengandung isi dari file,
termasuk kode, data , sumber daya, dan informasi lainnya.
Setiap bagian memiliki header dalam bentuk IMAGE_SECTION_HEADER struktur.
Anti-Debugging 14
Gambar 16-6 menunjukkan subset dari struktur ini.
Nama ".teks"
77777777h
Lokasi untuk hampir tidak valid!
memuat bagian ini
VirtualSize 00004C52h
VirtualAddress 00401000h
Lokasi dari data
SizeOfRawData
mentah dalam 77777777h
file PE
PointerToRawData 00000400h
PointerToRelocations 00000000h
...
jatuh.
Kesimpulan
Bab ini memperkenalkan Anda untuk beberapa teknik anti-debugging populer.
Dibutuhkan kesabaran dan ketekunan untuk belajar mengenali dan teknik
memotong Anti- Debugging. Pastikan untuk mengambil catatan selama analisis dan
mengingat lokasi dari setiap teknik anti-debugging dan bagaimana Anda melewati
Anti-Debugging 15
mereka; hal tersebut akan membantu Anda jika Anda perlu untuk memulai kembali
proses debugging.
Kebanyakan teknik anti-debugging dapat melihat dengan menggunakan akal
sehat, saat debugging proses perlahan-lahan. Misalnya, jika Anda melihat kode
mengakhiri prematur pada lompatan bersyarat, yang mungkin mengisyaratkan
teknik anti-debugging. teknik anti-debugging paling populer melibatkan
mengaksesfs: [30h], Menyebut Windows API panggilan, atau melakukan cek waktu.
Tentu saja, karena dengan semua analisis malware, cara terbaik untuk belajar
untuk menggagalkan teknik anti-debugging adalah dengan terus mundur dan belajar
malware. penulis malware selalu mencari cara baru untuk menggagalkan debugger
dan untuk menjaga analis malware seperti Anda pada jari-jari kaki.
Anti-Debugging 16
Anti-Debugging 17
Anti-Debugging 18
ANTI - VIRTUALMACHINETECHNIQ UES
penulis malware kadang-kadang menggunakan anti-virtual
machine (anti-VM) teknik untuk menggagalkan upaya
analisis. Dengan teknik ini, malware mencoba untuk
mendeteksi apakah itu sedang dijalankan di dalam mesin
virtual. Jika mesin virtual terdeteksi, dapat bertindak secara
berbeda atau hanya tidak berjalan. Hal ini dapat, tentu saja,
menimbulkan masalah bagi analis.
teknik anti-VM yang paling sering ditemukan di malware yang banyak
digunakan, seperti bot, scareware, dan spyware (sebagian besar karena honeypots
sering menggunakan mesin virtual dan karena malware ini biasanya menargetkan
mesin rata-rata pengguna, yang tidak mungkin menjalankan virtual mesin).
Popularitas anti-VM malware telah turun baru-baru ini, dan ini dapat dikaitkan
dengan peningkatan besar dalam penggunaan virtualisasi. Secara tradisional,
penulis malware telah menggunakan teknik anti-VM karena mereka pikir hanya
analis akan menjalankan malware dalam mesin virtual. Namun, saat ini para
administrator dan pengguna menggunakan mesin virtual untuk membuatnya mudah
untuk membangun kembali mesin (pembangunan kembali telah menjadi proses
yang membosankan, tapi mesin virtual menghemat waktu dengan memungkinkan
Anda untuk kembali ke snapshot). penulis malware mulai menyadari bahwa hanya
karena sebuah mesin adalah mesin virtual tidak berarti bahwa itu bukan korban yang
berharga. Sebagai virtualisasi terus tumbuh, teknik anti-VM mungkin akan menjadi
lebih sedikit
umum.
Karena teknik anti-VM biasanya menargetkan VMware, dalam bab ini, kita
akan fokus pada teknik anti-VMware. Kita akan mempelajari teknik yang paling
umum dan bagaimana untuk mengalahkan mereka dengan mengutak-atik beberapa
pengaturan, menghapus perangkat lunak, atau menambal dieksekusi.
Artefak VMware
Lingkungan VMware menyisakan banyak artefak pada sistem, terutama ketika
VMware Tools diinstal. Malware dapat menggunakan artefak ini, yang hadir dalam
filesystem, registry, dan proses daftar, untuk mendeteksi VMware.
Sebagai contoh, Gambar 17-1 menunjukkan proses listing untuk gambar
VMware standar dengan VMware Tools diinstal. Perhatikan bahwa tiga proses
VMware menjalankan: VMwareService.exe, VMwareTray.exe, dan
VMwareUser.exe. Salah satu dari ini dapat ditemukan dengan malware seperti
mencari proses daftar untukVMware tali.
Anda juga mungkin dapat mencegah malware dari mencari artefak. Misalnya,
jika Anda menemukan string VMware terkait tunggal dalam malware-sepertinet
start | findstr VMware. VMMouse. VMwareTray.exe, atau VMware Virtual IDE Hard Drive-
Anda tahu bahwa malware ini mencoba untuk mendeteksi VMware artefak. Anda
harus dapat menemukan kode ini dengan mudah di IDA Pro menggunakan referensi
ke string. Setelah Anda menemukannya, patch itu untuk menghindari deteksi sambil
memastikan bahwa malware akan berfungsi dengan baik.
Listing 17-1: snippet Disassembly dari vmt.exe menunjukkan deteksi artefak VMware
Menganalisis kode ini lebih lanjut, kita melihat bahwa itu adalah pemindaian
proses daftar dengan fungsi seperti CreateToolhelp32Snapshot. Process32Next, dan
seterusnya. Itustrncmp di adalah membandingkan VMwareTray.exe string dengan
hasil konversi processentry32.szExeFileuntuk ASCII untuk menentukan apakah nama
proses sedang dalam proses daftar. JikaVMwareTray.exeditemukan dalam proses
daftar, program ini akan segera mengakhiri, seperti yang terlihat di 0x4010c2. Ada
beberapa cara untuk menghindari deteksi ini:
Menambal biner saat debugging sehingga melompat di 0x4010a5 tidak akan
pernah diambil.
Gunakan hex editor untuk memodifikasi VMwareTray.exe string untuk membaca
XXXareTray.exe untuk membuat perbandingan gagal karena ini bukan proses
string yang valid.
Uninstall VMware Tools sehingga VMwareTray.exe tidak akan lagi berjalan.
Petunjuk rentan
Virtual mesin program memantau memonitor eksekusi mesin virtual. Ini berjalan
pada sistem operasi host untuk menyajikan sistem operasi tamu dengan platform
virtual. Ini juga memiliki beberapa kelemahan keamanan yang dapat
memungkinkan malware untuk mendeteksi virtualisasi.
CATATAN X86 terkait instruksi masalah di mesin virtual dibahas dalam bagian ini
awalnya diuraikan di USENIX 2000 kertas “Analisis Kemampuan Intel Pentium
untuk Mendukung Virtual Machine Aman Monitor” oleh John Robin dan Cynthia
Irvine.
The malware isu yang sidt instruksi di , Yang menyimpan isi IDTR ke dalam
lokasi memori yang ditunjuk oleh EAX. The IDTR adalah 6 byte, dan byte kelima
mengimbangi berisi awal alamat memori dasar. Yang byte kelima dibandingkan
dengan 0xFF, tanda tangan VMware.
Pil merah berhasil hanya pada mesin prosesor tunggal. Ini tidak akan bekerja
secara konsisten terhadap prosesor multicore karena setiap prosesor (tamu atau host)
memiliki IDT ditugaskan untuk itu. Oleh karena itu, hasil dari sidt instruksi dapat
bervariasi, dan tanda tangan yang digunakan oleh pil Merah bisa diandalkan.
Untuk menggagalkan teknik ini, dijalankan pada mesin prosesor multicore
atau hanya NOP-out sidt petunjuk.
Malware biasanya tidak akan menjalankan instruksi ini kecuali itu adalah
melakukan deteksi VMware, dan menghindari deteksi ini bisa semudah menambal
biner untuk menghindari memanggil petunjuk ini. Instruksi-instruksi ini pada
menggunakan ScoopyNG
ScoopyNG (http://www.trapkit.de/) adalah alat deteksi VMware gratis yang
mengimplementasikan tujuh pemeriksaan yang berbeda untuk mesin virtual,
sebagai berikut:
Tiga cek pertama mencari sidt. sgdt, dan sldt (Pil Merah dan ada Pill) instruksi.
Cek keempat mencari str.
Kelima dan keenam menggunakan backdoor I / O port 0xA dan 0x14 pilihan,
masing-masing.
Cek ketujuh bergantung pada bug di VMware versi berjalan dalam modus
emulasi.
Pengaturan tweaking
Kami telah membahas sejumlah cara untuk menggagalkan deteksi VMware seluruh
bab ini, termasuk menambal kode, menghapus VMware Tools, mengubah
pengaturan VMware, dan menggunakan mesin multiprosesor.
Ada juga sejumlah fitur tidak terdokumentasi di VMware yang dapat
membantu mengurangi teknik anti-VMware. Misalnya, menempatkan pilihan
dalam Listing 17-5 ke dalam file Vmx mesin virtual akan membuat mesin virtual
kurang terdeteksi.
isolation.tools.getPtrLocation.disable = "TRUE"
isolation.tools.setPtrLocation.disable = "TRUE" isolation.tools.setVersion.disable =
"TRUE" isolation.tools.getVersion.disable = "TRUE"
monitor_control.disable_directexec = "TRUE "monitor_control.disable_chksimd =
"TRUE" monitor_control.disable_ntreloc = "TRUE"
monitor_control.disable_selfmod = "TRUE" monitor_control.disable_reloc =
Listing 17-5: VMware File Vmx pilihan berdokumen digunakan untuk menggagalkan teknik anti-
VM