¿Como puedo saber si un sistema Linux ha sido comprometido? (TEXTO)

(1/6) > >>

Rojodos:
Bueno, haciendo "limpieza" en mi PC, pues me encontrado unos 70 textos xD, de diversa indole. Uno de los que mas me gusto, y que he vuelto a leer es este. Creo que a los que traten de "asaltar" un sistema Linux les vendra muy bien, asi como a los que traten de hacer auditorias de seguridad post ataque.

Creo que lo saque en su tiempo de www.infohackers.org, pero no estoy seguro. Si alguien sabe de donde salio este texto, por favor, me lo comunique y sera añadido.

Que lo disfruteis :D

---------------------------------------------------------------------
---------------------------------------------------------------------

Cómo puedo saber si un sistema Linux ha sido comprometido?

Examina los ficheros de log buscando conexiones desde lugares inusuales o cualquier actividad fuera de lo normal. Por ejemplo, mira el ultimo log, "process accounting", todos los logs creados por syslog, y otros logs de seguridad. Si tu firewall o tu router escriben logs en lugares distintos de donde los escribe el sistema estudiado, recuerda chequear también esos logs. Esta no es una garantía completa a no ser que "los logs se escriban en un append-only media"; muchos intrusos editan los ficheros de log para intentar ocultar su actividad.

Busca los ficheros con los bits setid y setgid activados (especialmente los setuid de root) en todo el sistema. Los intrusos suelen dejar copias de programas como /bin/sh o /bin/time con el bit "setuid" activado para permitirles acceso a root mas tarde. Se puede usar el programa de UNIX find(1) para encontrar ficheros con setuid y/o setgid activados.

Comprueba los binarios del sistema para asegurarte de que no han sido alterados. Hay intrusos que cambian programas en sistemas UNIX tales como login, su, telnet, netstat, ifconfig, ls, find, du, df, libc, sync, cualquier binario referenciado en /etc/inetd.conf, y otros programas de red y del sistema críticos, así como librerías de objetos compartidas.

Ten cuidado a la hora de confiar en los backups; tus backups pueden contener a su vez caballos de Troya.

Comprueba que en tu sistema no existan programas no autorizados de monitorización de red, comúnmente llamados sniffer "packet sniffer". Un intruso puede usar un sniffer para capturar información de la cuenta y password de un usuario.

Examina todos los ficheros que son ejecutados por cron y at. Hay intrusos que dejan puertas traseras en ficheros ejecutados por cron o enviados a at, pues permiten al intruso volver al sistema.

También, verifica que todos los ficheros/programas referenciados por los jobs de cron y at, y los ficheros del job en sí mismos, no tienen permisos de escritura para todo el mundo.

Comprueba que no haya servicios no autorizados. Inspecciona el /etc/inetd.conf buscando cambios no autorizados. Busca entradas que ejecuten un programa shell, y verifica todos los programas especificados en /etc/inetd.conf para comprobar que son correctos y que no han sido reemplazados por un caballo de Troya.

También chequea servicios legítimos que hayas comentado en el /etc/inetd.conf. Algún intruso puede haber habilitado un servicio que previamente habías deshabilitado o sustituir el programa inetd por un caballo de Troya.

Examina el fichero /etc/passwd y comprueba las modificaciones de dicho fichero. Verifica que no haya nuevas cuentas creadas sin autorización, cuentas sin password, o cambios en el UID (especialmente UID 0).

Comprueba que no existan entradas no autorizadas en los ficheros de configuración de red y del sistema. En particular, busca entradas con '+' y nombres de hosts externos no apropiados en el fichero /etc/hosts.equiv, /etc/hosts.lpd, y en todos los ficheros .rhosts. Estos ficheros no deben tener permisos de escritura para todo el mundo. Además, confirma que estos ficheros existían previamente a ninguna intrusión y que no han sido creados por el intruso.

Busca por todo el sistema ficheros raros u ocultos, pues estos ficheros pueden usarse para ocultar herramientas e información.

Examina todas las maquinas de la red local cuando busques señales de una intrusión. Si la seguridad de un host se ha visto comprometida, la seguridad de otros en la red también.

CUOTAS

Las cuotas permiten especificar limites en dos aspectos del almacenamiento en disco: El numero de inodos que puede poseer un usuario o un grupo; y el  número de bloques de disco que puede ocupar un usuario o un grupo.

La idea que se esconde detrás de las cuotas es que se obliga a los usuarios a mantenerse debajo de su limite de consumo de disco, quitándoles su habilidad de consumir espacio ilimitado de disco en un sistema.

Las cuotas se manejan en base al usuario y al sistema de ficheros. Si el usuario espera crear ficheros en mas de un sistema de ficheros, las cuotas deben activarse en cada sistema de ficheros por separado.

DETECCION DE INTRUSOS MEDIANTE ANALISIS DE HUELLAS

Ficheros que guardan registros:

utmp: Guarda un registro (log) de los usuarios que están utilizando el sistema mientras estan conectados al sistema. Directorios: /var/adm/utmp y /etc/utmp

wtmp: Guarda un log cada vez que un usuario se introduce en el sistema o sale del sistema. Directorios: /var/adm/wtmp y /etc/wtmp

lastlog: Guarda un log del momento exacto en que un usuario entro por ultima vez. Directorio: /var/adm/lastlog

acct o pacct: Registra todos los comandos ejecutados por cada usuario (aunque no registra los argumentos con que dichos comandos fueron ejecutados). Directorio: /var/adm/acct

Comandos que permiten ver el estado del sistema:

who y users: Permite saber quién esta conectado al sistema en el momento en que ejecutamos el comando.

finger: Lo mismo que el comando who, con el añadido de que podemos saber qué usuarios están conectados a una determinada máquina en el momento en que ejecutamos el comando.

last: Muestra la última vez que se conecto un usuario. Last toma la información que saca en pantalla del fichero wtmp.

ps: Permite saber qué procesos estan siendo ejecutados por el sistema y qué usuarios los ejecutan.

accton: Activa un proceso llamado accounting, que es el que proporciona informacion al fichero acct.

lastcomm: Permite saber qué comandos han ejecutado los usuarios. Lastcomm toma la información que saca por pantalla del fichero acct.

Por lo tanto, si queremos borrar nuestras huellas del sistema, bastar con borrar cualquier log relativo a nuestro usuario de los ficheros utmp, wtmp y acct. Esto se puede hacer de dos formas:

No borramos los ficheros pero los dejamos con cero bytes.

Editar los ficheros con un ‘zapper’ que pueden borrar los datos relativos a un usuario; en particular de estos ficheros dejando el resto de los datos intacto.

Eliminar huellas de acct

Es bastante complicado borrar nuestras huellas de este fichero; de hecho no se pueden borrar del todo, aunque se puede reducir a una mínima parte nuestra presencia en el sistema.

Más sistemas de log:

Syslog: Mediante el syslog se puede configurar de tal forma que determinados programas, procesos o aplicaciones, generen mensajes que son enviados a determinados ficheros donde quedan registrados dichos mensajes. Este fichero sí puede ser editado en modo texto y puede ser analizado para ver dónde hemos ido dejando rastros y posteriormente borrar esas huellas. Aunque por supuesto, necesitaremos ser root para poder hacerlo.
TCP-Wrapper: Se trata de una aplicacion que proporciona una serie de mecanismos para el registro y filtro de aquellos servicios invocados o llamados a través del inetd (internet daemon). Con esta herramienta el administrador posee un control absoluto de las conexiones hacia y desde su máquina y es informado en todo momento de las conexiones que se han hecho desde su maquina y hacia su máquina.

------------------------------------------------------------------------
------------------------------------------------------------------------

zhyzura:
excelente texto, no lo habia leido hasta hoy.
(el de hacking en unix lo tendre que traducir primero para poderlo leer... es una lata no saber ingles y la verdad me siento menos :'( ).

pero me ha entrado la curiosidad con esta parte:
Citar

Eliminar huellas de acct

Es bastante complicado borrar nuestras huellas de este fichero; de hecho no se pueden borrar del todo, aunque se puede reducir a una mínima parte nuestra presencia en el sistema.


haber si me quedo claro....
a la hora de que yo intento borrar mis huellas con un zapper (en especial este fichero, que es el mas me llamo la atencion), ¿quedara registrado en este archivo que utilice el zapper?.
en caso de ser asi...quedaria reistrado el proceso con mi nombre de usuario.

lo que yo yengo pensado seria si es posible dejar un algun script que modificara o "borrara todo su contenido", pero no ejecutarlo nosotros, sino dejarlo como "cebo" para que otro usuario lo ejecutara y automaticamente se borrara.
al hacer esto, el proceso ya no seria ejecutado por nossotros sino por otro user (que la pagara por nosotros xDDD).

es algo loca mi idea pero me gustaria alguna opinion por parte vuestra.

Rojodos:
El tema de los logs en Unix es siempre un cachondeo. Si el administrador del sistema Unix/Linux es bueno, es casi imposible eliminar tu presencia en el sistema.

No solo me refiero a los logs de /var/log, sino que seguramente, tendra por ejemplo un sistema "remoto" de logs (syslog o syslog-ng permiten enviar los logs a otros sistemas por UDP, a otro demonio syslog, con lo que tendriamos que asaltar ese otro sistema para eliminar los logs). Antes de nada, para usar el zapper debes ser root o similiar (UID 0). Y claro, la actividad del zapper quedara reflejada, pero solo, como que la uso el usuario root. No tendran datos de la IP por ejemplo, si el zapper los elimina.

Hay tecnicas incluso, que recomiendan mandar una enorme cantidad de informacion a los logs,y que estos, cuando alcanzan un tamaño especificado, se rotan. Cuando hayan rotado todos (o los que estes tratando de rotar), pues tus huellas "desaparecen". Pero creo que esta tecnica, con los HDs de hoy en dia, es completamente inutil.

Por no hablar de si hay un IDS presente en el sistema (Snort, LIDS...) entonces ya la cosa se complica, pues precisamente estan hechos para que te detecten y tu no puedas hacer nada xD.

Yo creo que la mejor forma, en vez de usar scripts a traves de cron o algo asi (eso es muy sospechoso, ver la tabla del cron, y ver que rula un programa zapper) es a traves de rootkits (aparte de cepillarte los logs con buenos zappers, que editen los logs ascii de /var/log/ y que tambien editen los ficheros binarios /var/log/wtmp y /var/log/utmp). Con un buen rootkit, y si es posible, a nivel de LKM, es practicamente imposible que te detecten, a no ser que detecten el rootkit.

Pero el problema de los rootkits, es Tripwire xDDDDDDD. Supongo que sabeis la principal funcion de este programa. El caso es que mientras mejor sea el admin y mas medidas de defensa tenga, pues mas chungo lo tienes....

Me podria estar aki hablando de la seguridad de Unix un buen rato (aunque no lo parezca, he leido MUCHISIMO sobre el tema), pero tampoco es plan.

Salu2

zhyzura:
Citar

Por no hablar de si hay un IDS presente en el sistema (Snort, LIDS...) entonces ya la cosa se complica, pues precisamente estan hechos para que te detecten y tu no puedas hacer nada xD.

para los IDS se podria realizar un ataque en las debilidades inherentes en el protocolo del RPC.
Un método de la evasión constituye un ataque del Negacio de Servicio (DOS) contra los servidores y las escalas del RPC fácilmente y rápidamente en un ataque distribuido completo del Negacion de Servicio (DDoS).

ademas de que los IDS tienes otros incombenientes.
los NIDS tiene una fuerte debilidad en los paquetes cifrados, cosa que no ocurre con los HIDS.
y los HIDS no son totalmente seguros en ataques desde dentro de una red.


En la implementacion de Tripwire, es donde no tengo ni un pero :P.

Rojodos:
Los ultimos IDS son realmente la leche, hacen de todo (vease como ya he dicho, Snort o LIDS).

De los HIBS o los NIDS no he leido mucho, si nos puedes contar....

Tripwire es un programa bastante "sencillo". Lo unico que hace es hacer un md5 a todos o gran parte de los ficheros de un sistema Unix/Linux (los mas importantes, normalmente, se salta los directorios personales de home)y guardarlos en una BD.

Si tu metes un rootkit a nivel de LKM por ejemplo (tambien puede ser modificando un binario o una libreria, infectado sources, paquetes RPM o .deb, etc...), como todos los rootkits, pues tienes que modificar librerias e incluso binarios.

Si el adminha usado Tripwire, solo tiene que volverlo a pasar. El programa detectara inmediatamenet que el MD5 de los ficheros (los infectados o troyanizados) no coinciden con la BD guardada. Entonces el admin se dara cuenta de que algo falla...

Por supuesto, el hacker lo unico que tiene que hacer para librarse de este problema, es modificar la BD de Tripwire... pero y si el admin se lleva dicha BD todos los dias en su USB o en un CD regrabable?

Pues.... ajo y agua xD

Salu2

Navegación

[0] Índice de Mensajes

[#] Página Siguiente