Part 1 klik disini
Part 2 klik disini
Part 3 klik disini
Part 4
Melacak Sumber Program Perusak
Hal yang menarik bagi pelaku penyusupan kejahatan dan komputer adalah faktor anonimitas, artinya pembuat virus, trojan, atau pelaku compromise tidak merasa khawatir akan dikenali. Di sisi lain, insiden penyusupan virus,worm, trojan dan cracker kadang meninggalkan potongan program. Bisakah dengan peninggalan tersebut diidentifikasi sumbernya. Peninggalan dari serangan tersebut bisa berupa source program, kode object, shell script, perubahan pada program yang ada, atau file teks yang dibuat oleh penyusup. Hal tersebut bisa dipergunakan untuk mengidentifikasi sumber dari serangan, serupa dengan analisis tulisan tangan yang dilakukan oleh aparat hukum untuk mengenali penulis suatu dokumen. Hal ini biasa disebut forensik perangkat lunak. Forensik perangkat lunak bisa dilakukan pada :
1. Kode executable. Biasanya dilakukan pada virus atau worm. Sayangnya banyak feature yang bisa berguna dalam analisis telah terhapus, misalkan komentar, identasi dan identifier. Optimisasi juga dilakukan sehingga program telah berbeda dengan program semula.
Beberapa feature yang masih bisa dipertimbangkan di antaranya:
Algoritma dan struktur data: Pilihan algoritma dan struktur data bisa menunjukkan background dari pembuat
Kompilator: Dalam kasus virus bisa ditentukan bahasa pemrogramannya dan dari vendor mana, karena rutin-rutin dan library yang dipergunakan
Pengetahuan pemrograman: Bisa dilihat tingkat kemampuan pemrogram dari penggunaan fungsi dan error checking semacam exception handling
Pilihan system call
Kesalahan: Beberapa programmer membuat kesalahan serupa pada program-programnya
2. Kode Sumber. Ini mampu memberikan informasi yang lebih banyak.
Beberapa feature yang bisa dianalisis:
Bahasa: Menunjukkan pengetahuan dan ketersediaan pada pemrogram
Format: Biasanya konsisten, misal identasi dan deklarasi
Komentar
Nama variabel
Ejaan: Ada pemrogram yang melakukan kesalahan eja secara tetap
Feature bahasa: Beberapa pemrogram lebih suka menggunakan pilihan tertentu, misal antara perulangan for dengan repeat until atau while
Scope: pemilihan variabel lokal dan global
Jalur eksekusi: adanya kode yang tidak pernah dieksekusi
Bug: Kesalahan serupa yang dibuat dalam program-programnya
Analisis Unknown Program
1. Analisis Unknown Program
Materi pada bagian ini diambil dari sumber. Untuk mempelajari perilaku suatu program yang tidak kita ketahui sumber dan kegunaannya terdapat beberapa cara:
a) Analisis statik: Mempelajari program tanpa benar-benar mengeksekusinya. Tool yang dipergunakan adalah dissasembler, decompiler, tool analisis kode sumber, dan tool dasar semacam grep. Dalam kenyataannya bisa memberikan suatu gambaran pendekatan mengenai program.
b) Analisis dinamik: Mempelajari program saat dieksekusi. Tool yang dipergunakan adalahdebugger, tracer, emulator mesin, analisis logika dan terkadang sniffer jaringan. Keuntungan dari analisis dinamik adalah cepat dan akurat. Kasus khusus dari analisis dinamik adalah analisis kotak hitam (black box), yaitu analisis dinamik tanpa mengakses internal program. Dalam kasus ini, pengamatan dilakukan pada input dan output eksternal, serta karakteristik pewaktuannya.
c) Analisis postmortem: Mempelajari perilaku perangkat lunak dengan mengamati dampak setelah eksekusi program. Bisa jadi ini merupakan satu-satunya alat yang tersedia setelah penyusupan sistem.
Analisis dinamik harus dilakukan sehingga tidak menimbulkan kerusakan yang berbahaya, sehingga eksekusi program bisa dijalankan pada :
a. Mesin “percobaan” tanpa koneksi jaringan
b. Mesin dengan sandbox Virtual Machine
Untuk memantau kemajuan (progress) suatu program, pengamatan bisa dilakukan dengan cara:
- Pengamatan pada level instruksi mesin
- Pengamatan system call yang dipergunakan
Suatu mesin yang mengalami compromisetidak akan bisa dipercaya, dan semua informasi yang berasal dari mesin tersebut perlu diragukan. Perubahan pada suatu program aplikasi dan file data mudah dideteksi jika diketahui file mana yang mengalami perubahan. Perubahan pada proses yang berjalan lebih susah dideteksi, begitu pula dengan perubahan pada level kernel sistem operasi, atau bahkan perubahan pada tingkat di bawah level kernel.