Ceriwis

Hacking Hacking, Cracking, Phreaking semua ada disini. Use at your own risk!

Bedah exploitasi linux kernel beserta contoh kasusnya - Ceriwis - Komunitas dan Forum Jual Beli
  #1  
Old 5th July 2017
creativauz creativauz is offline
Newborn
 
Join Date: Oct 2014
Posts: 2
Rep Power: 0
creativauz mempunyai hidup yang Normal
Default Bedah exploitasi linux kernel beserta contoh kasusnya

baik,di sini kita akan mempelajari bagaimana local exploit
bekerja untuk mendapatkan akses root di linux dengan cara sebagai berikut :
mendapatkan inode(index node)/object id di shell
dengan cara compile shell,untuk getdents(),setdummy xattr,
untuk di jadikan satu dengan getdents()
nah di sini dia akan nulis lagi CAP_SETUID di xattr,
hingga eksekusi shell then..got root!

exploitnya seperti ini
http://jon.oberheide.org/files/team-edward.py
untuk kernel 2.6.34-rc3 yang memiliki bug privilege escalation

bagaimanakah bug tersebut bisa terjadi dan
seperti apa sih pola/konsep eksploitasi terhadap
mesin bekerja??

step by step eksploitasinya kurang-lebih seperti ini :


1.manggil mmap untuk jadi map zero page
apa itu mmap dan map zero page?

mmap adalah POSIX-compliant nya di unix syscall
tugasnya yang memetakan file atau perangkat ke dalam memori.
selanjutnya dia ini mengimplementasikan permintaaan halaman
karena pada awalnya isi file gk bisa di baca dari disk
tanpa memori fisik sekalipun,
sederhananya,mmap dapat membuat beberapa jenis pemetaan dari memori tsb.
di sini maksudnya pemetaan secara virtual yang sama dengan malloc untuk implementasi dari alokasi memori tertentu
jadi file ini akan di dukung pemetaan area memori virtual untuk proses selanjutnya,yang akan mengalokasikan memori

2.merubah fake mbuf di 0x0
contoh :
mbuf> data yang akan di ponting ke address
yang masuk ke table syscall

3.memangil getsockopt untuk mentrigger vulnerabilitiesnya

getsockopt() ini ibaratnya kayak asistennya kernel
yang tugasnya identifier paket yg akan masuk ke kernel
jadi dia akan memeriksa apakah yg akan di kirim ke kernel ini
ipv4 atau ipv6
nah karena tugasnya getsockopt ini banyak
dia masih ada lagi yang ngebantuin tugasnya yaitu si 'packet.h'
(skip di sini tidak akan membahas lebih lanjut tentang packet.h biar gk meluber)
yang akan memvalidasi ipv4 atau SCTP yang valid
untuk menghindari stack di mem nya fully loaded bahkan hingga crash --"

4.membuat fake akses untuk kernel dengan fungsi mbuf
yang akan di alocated ke 0x0 dan menjadikan 0x1 ke address mbuf->data
dengan meng-overwrite di syscall nya

5.set up root buat jalanin shellcode
di address 0x1

6.memanggil syscall untuk di overwrite

7.dengan memanggil system yang vulner di 0x1
(dalam hal ini null pointer dereference)
untuk eksekusi shellcode/exploit di sini

biasanya di /proc/sys/vm/mmap_min_addr
ini gak bisa mmaping untuk addres < mmap_min_addr
karena dia ngeblock null ptr derefs yang leak sensitive kernel memory untuk userspace
biasanya sih karena di batasi oleh copy_to_user()

info leak w/setuid exploit
leak dari task_struct/vma untuk bypass ASLR
untuk mencari nilai canaries dari task_struct

contoh codenya :

static int sctp_getsockopt_hmac_ident(struct sock *sk, int len, char __user *optval, int __user *optlen)
{
struct sctp_hmac_algo_param *hmacs;
__ul6 param_len;
(di len ini lah attacker mengeksploitasinya)

hmacs = sctp_sk(sk)->ep->auth_hmacs_list;
param_len = ntohs(hmacs->param_hdr.length);

if (len < param_len)
return -EINVAL;
if (put_user(len, optlen))
return -EFAULT;
if (copy_to_user(optval, hmacs->hmac_ids, len))
return -EFAULT;
unbounded copy_to_user
return 0;
}

menggunakan ptrace_attach untuk user copies
contoh menggunakan sendmsg() untuk multiple user copy yang vulner

contoh race_condition.c

while(ucmsg != NULL)
{
if(get_user(ucmlen, &ucmsg->cmsg_len))
return -EFAULT;
if(CMSG_COMPAT_ALIGN(ucmlen) < CMSG_COMPAT_ALIGN(sizeof(struct compat_cmsghdr)))
return -EINVAL;
if((unsigned long) (((char __user *)ucmsg - (char __user *)kmsg->msg_control) + ucmlen) > kmsg->msg_controllen)
return -EINVAL;
tmp = ((ucmlen - CMSG_COMPAT_ALIGN(sizeof(*ucmsg))) +
CMSG_ALIGN(sizeof(struct cmsghdr)));
kcmlen += tmp;
ucmsg = cmsg_compat_nxthdr(kmsg, ucmsg, ucmlen);
}

if(kcmlen > stackbuf_size)
kcmsg_base = kcmsg = kmalloc(kcmlen, GFP_KERNEL);

while(ucmsg != NULL)
{
__get_user(ucmlen, &ucmsg->cmsg_len);
tmp = ((ucmlen - CMSG_COMPAT_ALIGN(sizeof(*ucmsg))) + CMSG_ALIGN(sizeof(struct cmsghdr)));
kcmsg->cmsg_len = tmp;
__get_user(kcmsg->cmsg_level, &ucmsg->cmsg_level);
__get_user(kcmsg->cmsg_type, &ucmsg-<cmsg_type);

if(copy_from_user(CMSG_DATA(kcmsg), CMSG_COMPAT_DATA(ucmsg),

yeepp saya jelasin maksud dari kode di atas

if(get_user(ucmlen, &ucmsg->cmsg_len))
return -EFAULT;

dia akan mengkopi semua nilai sepanjang yang ada di userspace
dengan mensanitasi nilai panjang yang di check terlebih dahulu di

(char __user *)kmsg->msg_control) + ucmlen) > kmsg->msg_controllen)
slab sebagai allocator default di kernel yang tugasnya kerja sama dengan kmalloc()

yeppp kita sudah cukup tahu bugnya
dan sekarang kita akan pelajari source code xplnya
yang memanfaatkan kesalahan klasifikasi null pointer dereferences
yang sebenarnya dia hanya menspesifikasikan case di 0x0

mensetup payload untuk mmap kemudian
menjadikan nilai memcpy null dengan shellcode seperti ini:
Quote:
XATTR = '\x41\x58\x46\x52\xc1\x00\x00\x02\x01\x00\x00\x02\ xc0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0 0\x00\x00\x00'
(0,shellcode,sizeof(shellcode));

dengan mentrigger bug null derefercens
untuk mengirim file di (__get_user,CMSG_COMPAT_ALIGN,);
tinggal mengisi space untuk kemudian trigger functionnya

ref : phrack.org/issues.html?issue=66&id=15#article

Source : www.creativauz.net
Jasa IT Solution , CCTV Solution

Sponsored Links.
1
Sponsored Links.
3
Sponsored Links
poker online terbaik
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off



All times are GMT +7. The time now is 11:47 PM.

 

About Us

"Ceriwis Forum is a place to find information in various categories. Be inspired, Be social, Join the Community!"

 

Pasang Iklan

Mau Pasang Iklan? Klik tombol di bawah ini.

Download on App store    Download on Google play
Copyright © 2018
close
Banner iklan disini