Wednesday, December 5, 2007

Hack 0x01 : Rootkit Keep Stealth Keep Alive

By Dendi Suhubdy A.K.A Cron of NuLL


"Hanya dengan rootkit, seluruh kekuatan OS ada di dalam genggaman ANDA!"


Rootkit adalah suatu program komputer yang dapat mempertahankan existensinya (red. keep alive) tanpa ketahuan oleh pengguna komputer, program keamanan maupun operation system (/red. Keep stealth). Nah membuat sebuah rootkit adalah sebuah seni coding advance yang menjadi impian semua hacker di dunia. Mengapa? Melalui sebuah rootkit, seorang hacker dapat menguasai sebuah machine/komputer/system selama bertahun-tahun. Dan melalui sebuah rookit, worm Morris yang sudah basi dapat menjadi CodeRed yang menakutkan. Dalam experimen di dalam forum BlackHat, sebuah worm komputer dipadu dengan teknologi rootkit FU. Rootkit ini dapat menyembunyikan process dari sistem dengan teknik coding yang nyaris sempurna sehingga worm dapat melumpuhkan sistem tanpa ketahuan oleh antivirus maupun pengguna. Kesimpulan terakhir dari forum itu yaitu betapa mengerikannya masa depan keamanan internet kalau teknologi rootkit terus dikembangkan.

Arsitektur rootkit itu gampang-gampang susah. Gampang karena hanya terdiri dari sebuah .exe (executable windows) dan .sys (biasa dinamakan dengan rootkit driver). Susah karena pembuat rootkit harus pintar-pintar mengatur hubungan antara .exe dan .sys. Hubungan ini dinamakan dengan user-kernel mode connection interface. Hubungan inilah yang menentukan bagaimana packet data TCP/IP/ UDP/RAW dari dunia luar (internet)
berkoneksi dengan kernel sistem operasi dan hardware komputer. Mengapa sebuat rootkit harus terbuat dari .exe dan .sys? Kenapa ngak hanya .exe saja? Rootkit pada dasarnya mempunyai dua fungsi utama. Fungsi pertama adalah menerima perintah remote dari hacker dan fungsi yang kedua adalah menyembunyikan kehadirannya dalam sistem. Fungsi yang pertama ditangani oleh .exe (executable) dan fungsi yang kedua ditangani oleh .sys
(rootkit driver). Kedua komponen ini saling mendukung satu-sama lain dan membuat sang hacker dapat menguasai sebuah sistem kopmuter secara menyeluruh.

Bagaimana cara membuat sebuah rootkit? Persis sama ketika anda ingin membuat jajan, anda harus menyiapkan alat dan bahan terlebih dahulu. Alat-alatnya adalah: Windows Driver Kit (WDK) atau Device Driver Kit (DDK), sebuah compiler C/C++ atau Pascal (penulis merekomendasikan Microsoft Visual C++ 6 atau Delphi 7), debugger (penulis menggunakan OllyDbg), dan debug viewer (penulis menggunakan DbgView buatan Mark
Russinovich dari www.sysinternals.com).
Bahannya adalah kemampuan berbahsa C, C++, dan assembly (you are the master S'to!). Ngak pernah ada dalam sejarah, seorang hacker membuat rootkit dengan menggunakan BASIC (rasain para pecinta Basic)! Mengapa ngak ada yang memakai bahasa BASIC? Alasan pertama karena BASIC adalah bahasa yang paling lambat di dunia. Program BASIC yang menampilkan sebuah huruf ke layar tetap
membutuhkan minimal 10kB memory untuk .exe-nya sedangkan assembly atau C
dapat melakukan hal yang sama hanya dengan instruksi 100 byte dan dapat menghenat processor time sebanyak berberapa 10 pangkat minus -6 detik alias beberapa mikrodetik (penghematan yang amat sangat besar)! Alasan kedua adalah karena kernel sistem operasi terbuat dari bahasa C dan assembly, jadi untuk berhubungan dengan kernel windows/linux/unix, kita membutuhkan driver yang terbuat dari bahasa C.

Langkah kedua yang harus ditempuh adalah menrancang device driver, beserta fungsi kernel di dalamnya, yaitu antara lain windows function hooks, code injection, dan Direct Kernel Object Manipulation. Windows function hooks berguna untuk memanipulasi kernel yang ada di dalam windows agar sesuai dengan kemauan si hacker. Contohnya menyembunyikan process, files, directories, registry, system HANDLES, dan services serta port komunikasi. Berikut adalah cuplikan code OS Windows untuk tipe data _SYTEM_PROCESSES. Sang hacker dapat mengubah NextEntryData untuk menyembunyikan process dari record processes yang dikehendakinya sendiri.

typedef struct _SYSTEM_PROCESSES {
ULONG NextEntryDelta;
ULONG ThreadCount;
ULONG Reserved1[6];
LARGE_INTEGER CreateTime;
LARGE_INTEGER UserTime;
LARGE_INTEGER KernelTime;
UNICODE_STRING ProcessName;
KPRIORITY BasePriority;
ULONG ProcessId;
ULONG InheritedFromProcessId;
ULONG HandleCount;
ULONG Reserved2[2];
VM_COUNTERS VmCounters;
IO_COUNTERS IoCounters; // Windows 2000 only
SYSTEM_THREADS Threads[1];
} SYSTEM_PROCESSES, *PSYSTEM_PROCESSES;

Langkah terakhir adalah membangun aplikasi .exe. Exe ini berguna untuk load driver. Load driver berguna untuk meload code-code yang ada di dalam driver (.sys) ke dalam kernel OS. Selain load driver, exe berguna untuk mengatur Winsock interface, mengatur process booting agar rootkit tahan boot system, dan terakhir unload driver ketika rootkit selesai
digunakan maupun ketika komputer di shutdown.

Semua langkah tersebut mencakup seluruh process pembuatan rootkit secara umum. Penulis sengaja menyederhanakannya agar pembaca yang kurang paham tentang teknik coding dapat belajar untuk mengerti tentang rootkit dan bahayanya bagi sistem komputer. Sekarang Anda mengetahui bahwa hanya dengan rootkit, seluruh kekuatan OS ada di dalam genggaman ANDA! Bayangkan teknologi rootkit dipakai dalam semua worm di Indonesia,
betapa mengerikan worm lokal jadinya (worm awal brontok: si tukang restart -> brontok + rootkit berubah menjadi brontok di tukang nyusup.
Mudah-mudahan tulisan saya ini dapat merevolusi teknik pembuatan malware di Indonesia. HIDUP MALWARE INDONESIA!


0 comments:

Template by - Abdul Munir | Daya Earth Blogger Template