Minggu, 09 Februari 2014

SSDT Hooking - NtQuerySystemInformation


Lihat gambar di atas? mengapa process notepad.exe tidak terlihat di Process Hacker?

Pada artikel ini, saya mencoba membahas SSDT Hooking, SSDT atau System Service Descriptor Table digunakan oleh sistem operasi Microsoft Windows untuk menyimpan lokasi system service pada sistem operasi yang di index berdasarkan ID pada SSDT atau disebut juga System Calls Table, lokasi system service tersebut sesuai dengan fungsi yang terdapat pada ntoskrnl.exe (dimana setiap fungsi diawali dengan NT,misalnya NTQuerySystemInformation, NTQueryDirectoryFile dan sebagainya)
.
Jika dilihat berdasarkan user mode dan kernel mode, maka SSDT hook berada di kernel mode

User Mode (Ring3)
Windows API - kernel32.dll - IAT hooking/API Hooking
Native API - ntdll.dll - API hooking

Kernel Mode (Ring0)
KisystemService - ntoskrnl.exe - SSDT Hooking
KiFastCallEntry - ntoskrnl.exe - DKOM (direct kernel object table) hooking
File system driver - FS Filter driver

Sebuah rootkit (kernel rootkit) dapat mengubah tabel pada System Calls Table ini secara langsung dan menggantikan fungsi NT yang diinginkan oleh rootkit tersebut. Hal ini menyebabkan proses hooking yang luas (System Wide Hooking), tidak sebatas proses yang aktif saat ini saja atau proses tertentu, sehingga proses lainnya juga akan terpengaruh.

SSDT hook sangat sering digunakan oleh Rootkit mulai pada tahun 2005 karena sangat mudah di-implementasikan. Meskipun begitu, SSDT Hooking pada sistem operasi Windows Vista ke atas tidak semudah pada Windows XP, sehingga wajar jika Windows XP dikatakan sistem operasi yang sangat rentan akan bahaya Malware.

Bagaimana SSDT Hooking bekerja
Sebelum Rootkit mampu melakukan hook pada SSDT, Rootkit tersebut harus mampu mendisable fungsi write protection (WP) pada kontrol register CR0 sehingga memory access protection juga ter-disable, karena jika hal tersebut tidak dilakukan maka Rootkit akan gagal mem-patch atau mengubah table pada SSDT. Setelah itu Rootkit menentukan lokasi patch untuk mem-patch table, kemudian menginstal hook, baru melakukan enabling write protection kembali seperti sedia kala.

Bagaimana mengetahui adanya SSDT Hooking?
Anda bisa menggunakan GMER atau Rootkit Unhooker. Pada GMER, GMER akan otomatis mendeteksi dan menyarankan full scan ketika mendeteksi adanya aktivitas Rootkit pada sistem, sedangkan pada Rootkit Unhooker, anda bisa melihatnya pada tab SSDT di kolom hooked.

PoC
Saya membuat PoC (Proof of Concept) untuk SSDT hooking ini pada table NtQuerySystemInformation sehingga proses milik Rootkit tidak akan terlihat di memory oleh setiap proses atau program yang melakukan enumerisasi proses seperti Task Manager atau Process Hacker.


referensi : http://en.wikipedia.org/wiki/System_Service_Dispatch_Table

Semoga Bermanfaat

Artikel ini dibuat oleh Yudha Tri Putra sebagai penulis artikel, diperbolehkan menyalin artikel ini secara utuh tanpa mengubah atau menambah isi artikel.

2 komentar:

(C) 2018. Diberdayakan oleh Blogger.

Categories

Followers