Home General Computer Multimedia Business Lounge

Post Reply 
Sekilas VFS pada linux kernel 2.4
01-21-2012, 11:00 AM (This post was last modified: 01-21-2012 11:02 AM by ev1lut10n.)
Post: #1
Sekilas VFS pada linux kernel 2.4
Sekilas VFS pada linux kernel 2.4

[vfs]
vfs (virtual file system) merupakan layanan file system yang disediakan oleh kernel untuk tampilan filesystem
di user space.

karena hanya berupa tampilan virtual maka kita sebut sbg pseudo file system.

[/proc/net filesystem]
dengan memodifikasi struktur proc_dir_entry pada vfs digunakan untuk menyembunyikan koneksi, misal dari program 2 yang mencoba membaca2 socket2 dari /proc/net/*

misal pada netstat akan membaca dari /proc/net/tcp / /proc/net/udp , dll

====
if (flags & NETSTAT_TCP) {
do_info("/proc/net/tcp", tcp_do_one);
#if ENABLE_FEATURE_IPV6
do_info("/proc/net/tcp6", tcp_do_one);
#endif
}
if (flags & NETSTAT_UDP) {
do_info("/proc/net/udp", udp_do_one);
#if ENABLE_FEATURE_IPV6
do_info("/proc/net/udp6", udp_do_one);
#endif
}
if (flags & NETSTAT_RAW) {
do_info("/proc/net/raw", raw_do_one);
#if ENABLE_FEATURE_IPV6
do_info("/proc/net/raw6", raw_do_one);
#endif
}
==============

do_info digunakan untuk membaca /proc/net/* dengan menggunakan fungsi fopen_or_warn_stdin.




=======================
struct proc_dir_entry
{
............................
int (*get_info)(buffer, start, off, count);
int (*read_proc) (buffer, start, off, count, eof, data);
.........................
};
=================

struktur proc_dir_entry berisi : int (*get_info)(buffer, start, off, count); yang merupakan function pointer. jika proc_dir_entry tidak ada
int (*get_info) maka akan digunakan int (*read_proc), misal
saat get_info , salah satu teknik attacker untuk menyembunyikan proses dengan meredirect fungsi get_info di contoh di bawah dengan
fungsi new_get_info:

=============
int new_get_info (char *a, char **b, off_t c, int d, int e) {
int x = 0;
x = saved_get_info (a, b, c, d, e);
/* do something here ... */
return x;
}
===============

sebelumnya telah kita definisikan dengan:
==================
int (*saved_get_info)(char *, char **, off_t, int, int);
===================

teknik yang dilakukan hanya melakukan redireksi pointer get_info untuk menunjuk ke fungsi redireksi :"new_get_info" yang telah disiapkan.



=================
saved_get_info = a->get_info;
a->get_info = &new_get_info;
==================

sehingga a->get_info akan menunjuk pada alamat fungsi new_get_info di memori.

jika kita lihat pada new_get_info:
=======================

return x;
=======================

yang akan melakukan jmp kembali karena:

==================
x = saved_get_info (a, b, c, d, e);

====================

karena x menyimpan alamat asli get_info



[menyembunyikan proses tanpa modifikasi syscall ]

elf "ps" saat dijalankan akan membaca proses pada /proc dg readdir,

coba perhatikan potongan kode ini:
=========
while ((entry = readdir(dir)) != NULL) {
uidName[0] = '\0';
groupName[0] = '\0';

if (!isdigit(*entry->d_name))
continue;
sprintf(path, "/proc/%s/status", entry->d_name);
if ((file2str(path, sbuf, sizeof sbuf)) != -1) {
parse_proc_status(sbuf, &p);
}
dst......

==============

potongan kode di atas berada pada fungsi ps_main yang akan dijalankan
saat seorang user menjalankan elf lsb executable ps, di mana kita bisa melihat penggunaan fungsi readdir

teknik yang bisa kita lakukan dengan redirek pointer ke fungsi readdir misal dengan fungsi palsu new_readdir_root:

==========
/* replace the readdir file operation. */
proc_root.FILE_OPS->readdir = new_readdir_root;
============
Find all posts by this user
Quote this message in a reply
 Reputed by :  ketek (+1)
01-21-2012, 09:16 PM
Post: #2
RE: Sekilas VFS pada linux kernel 2.4
pusing pusing pusing pusing get_info pusing pusing new_get_info pusing
Find all posts by this user
Quote this message in a reply
Post Reply 


Topic Tools
Topic Link :
BBCode :
HTML Code :
View a Printable Version Send Thread to a Friend Subscribe to this thread
Submit Google Submit Face book Submit to Digg Submit to Reddit Submit to Furl Submit to Del.icio.us Submit to Jeqq

Possibly Related Threads...
Thread: Author Replies: Views: Last Post
  [dummie]basic programming kernel modul alessandra 5 324 03-21-2012 06:49 AM
Last Post: x.intruders
  modifikasi WP bit pada register cr0 di mesin x86 ev1lut10n 1 118 02-17-2012 06:12 PM
Last Post: ack_attack
  [SHARE] jenis fungsi pada bahasa C dan C++ syn_attack 4 988 12-17-2011 12:03 AM
Last Post: akhew_jr
  IOCTL Programming Under Linux Kernel 2.6 ev1lut10n 3 340 11-25-2011 01:01 PM
Last Post: ketek
Heart Mengirim comand CUSD ke modem GSM dengan C (GNU/Linux) melati 4 641 06-05-2011 05:05 PM
Last Post: melati
  TCP Socket Programming dengan Bahasa C (Linux) mywisdom 8 1,479 04-20-2011 01:16 AM
Last Post: mywisdom
  [Tutor] compile dan run c++ d'linux jurank_dankkal 10 2,105 12-29-2010 06:26 PM
Last Post: donkey_code
  Loadable Kernel Module (part 1) mywisdom 1 743 10-01-2010 02:00 PM
Last Post: blu3k1d5
  Penguji daur hidup linux worm mywisdom 3 886 09-12-2010 11:25 PM
Last Post: mywisdom
  Memahami process info pseudo-filesystem di linux mywisdom 0 446 07-18-2010 04:14 PM
Last Post: mywisdom

Users Browsing
1 Guest(s)


Stop SOPA/PIPA | Discuss !