Cómo reparar / asegurar un servidor rooteado

La respuesta estándar es que no lo hace, lo borra e instala un sistema operativo nuevo, luego restaura los datos de los usuarios de las copias de seguridad que son anteriores a la infección o, al menos, verifica que todos los cambios sean legítimos.

Yo prefiero entender lo que pasó y arreglarlo. Un nuevo sistema instalado, parcheado a un estado de actualización reciente, podría contener exactamente las mismas vulnerabilidades que fueron explotadas en primer lugar, y además, eso lleva años a menos que esté lo suficientemente organizado como para que este sea solo uno de los muchos servidores bien administrados que puede volver a crear imágenes de medios confiables.

Esto se aplicaría a cualquier sistema operativo, pero solo estoy muy familiarizado con Linux. En primer lugar, desea preservar el estado de lo que hay en la memoria: procesos en ejecución, sockets abiertos y archivos. Ejecuto “lsof -n> lsof.log” y “ps axw> psaxw.log”. Idealmente, usaría versiones estáticamente vinculadas de ps y lsof de medios confiables (una memoria USB) y escribiría los resultados en medios externos. Si un intruso ha dejado procesos en ejecución, o está controlando una máquina en tiempo real, eso puede aparecer. Si encuentra tráfico sospechoso, puede ejecutar “tcpdump -w xx.cap -s 0” por un momento, idealmente también en un enrutador ascendente. A menudo, ciertamente en el pasado, el tráfico de hackers (IRC, etc.) no está encriptado. Si deshabilita la red desconectando Ethernet o desconectando las interfaces, los sockets abiertos permanecerán abiertos durante un tiempo para el análisis, pero un intruso remoto se desconectará.

Si desea tratar de preservar los datos para la cadena de custodia para posibles procedimientos legales, o para dar a un tercero, apague la máquina tirando del enchufe (no apague) y luego cree una imagen del disco, creando un hash de la imagen del disco, imprimiéndola y firmando con la fecha. Luego puede montar la imagen de disco de solo lectura y analizarla como si fuera un disco real, clonarla, etc.

Yo uso sistemas basados ​​en RedHat. En eso, el administrador de paquetes RPM mantiene una base de datos del contenido del paquete con hashes de archivos. Ejecutar “rpm -Va” le dirá qué archivos de los paquetes instalados han cambiado desde la instalación. Una “c” en la primera columna significa un archivo de configuración que se espera que cambie, mientras que “5” significa que el hash ha cambiado. Eso no debería suceder: si un objeto ejecutable o de biblioteca ha cambiado, se ha alterado. “Stat ” le indicará un cambio y una hora de modificación que indica cuándo ocurrió. Si analiza una imagen de disco, usaría “rpm -Va —root / media / ” para acceder a las bases de datos correctas.

Por lo general, tiene alguna idea de cuándo ocurrió una intrusión. Ejecutaría “find / -ctime +3 -ctime -7 -type f” para encontrar todos los archivos que cambiaron entre 3 y 7 días atrás (o -mtime para el tiempo de modificación del archivo, que puede ser falso pero persiste durante la copia de seguridad / restauración ciclos). Buscaría en los registros del sistema como / var / log / secure para inicios de sesión sospechosos, / var / log / httpd para solicitudes web sospechosas, y los uniría para crear una línea de tiempo para la intrusión. Por lo general, también tengo registros de red ascendentes para un enrutador, y los registros del sistema de la máquina se envían a un sistema seguro para que no puedan ser manipulados; si lo son, eso es más evidencia. En algunos casos, puedo ver en los registros de la red que un intruso descargó algo de Internet. Podría encontrar que dejaron un archivo intermedio en / tmp o / var que coincide con la descarga. Si un archivo legítimo cambió al mismo tiempo, parece que descargaron un troyano y luego lo instalaron, tal vez algo para darse acceso o registrar contraseñas.

Los hackers no son superhombres. Si explotaron una vulnerabilidad el lunes, y desconectó la máquina el jueves, han tenido 4 días, y probablemente tenían una agenda que incluía docenas de máquinas en otras partes del mundo, y un objeto particular en mente. Desfigurar una página web, construir una botnet, enviar mensajes de phishing, crear un repositorio de warez. Probablemente hayan pasado menos de una hora en su máquina, y solo hay mucho que pueden haber logrado. A veces cometen errores o no son particularmente hábiles. He visto el historial de bash sin modificar: puedo leer lo que escribieron, con marcas de tiempo (configuré “HISTTIMEFORMAT = ‘% s’”).

Si puede hacerse una buena idea de lo que hicieron, puede deshacerlo: elimine los programas, puertas traseras, credenciales, trabajos cron, etc. que no deberían estar allí y restaure los originales. Luego debe averiguar cómo entraron. Si iniciaron sesión con una cuenta de usuario, el usuario “joe” inicia sesión todos los días entre las 9 a.m. y las 5 p.m. desde Chicago, y de repente inicia sesión desde Hong Kong a las 3 a.m. y hay un montón de aparecieron archivos extraños: luego se comunicaría con Joe, se aseguraría de que no estuviera de vacaciones en Asia y cambiaría su contraseña en todas partes (tal vez en un servicio externo como Kerberos o Active Directory). Luego pídale que ejecute un análisis de malware en sus escritorios y pregúntele sobre sus prácticas de reutilización de contraseñas. Si encuentra solicitudes web sospechosas para cosas como php.cgi que parecen haber funcionado, buscaría vulnerabilidades web: asegúrese de que sus aplicaciones estén parcheadas, o que los arneses de prueba no utilizados estén deshabilitados, o la entrada del usuario se desinfecte correctamente para la inyección de SQL etc. No todo se repara, especialmente si tiene software personalizado o errores de configuración, por lo que simplemente mantener el software actualizado no es lo suficientemente bueno. Si al final del día no tiene idea de cómo obtuvieron acceso, todo lo que puede hacer es restaurar las cosas, cruzar los dedos y esperar que no lo intenten nuevamente. Y encienda más registros; establecer modos detallados, capturar el tráfico de red. Una vez pirateé bash para registrar el historial en otro lugar; cuando hicieron “history -c”, no funcionó y pude ver todos sus comandos.

Normalmente supondría que un intruso con acceso raíz copió el archivo local / etc / shadow, a menos que pueda probar que no lo hizo. Lo mismo se aplicaría a las claves SSL privadas locales, las claves SSH privadas, etc. Por lo tanto, debe cambiarlas: cambiar todas las contraseñas locales. Todos los entienden, aunque las claves son un poco más complejas de explotar. Si se comparten contraseñas locales, deberá cambiarlas en todos los lugares donde se usen. Si un intruso tuviera acceso a contraseñas NIS sin procesar, desearía cambiarlas en el servidor. Si copiaron un archivo oculto, eso no significa que tengan contraseñas, pero la identificación sí significa que tienen la posibilidad de intentar un ataque de diccionario fuera de línea. Las contraseñas comunes como “12345” y “qazwsxedc” caerán en segundos, mientras que las verdaderamente aleatorias tomarán años. Pero una contraseña aleatoria solo es aleatoria si nadie sabe lo que es; las contraseñas descifradas se comparten. La mejor práctica es asumir lo peor.

Esto no es seguridad de red, es seguridad de host.

Cada host, ya sea Windows o Linux, tendría kernel o archivos del sistema que necesitarían seguridad y reparación si ya estaban infectados o enganchados y algunos de ellos podrían necesitar reconstruir o suministrar un nuevo kernel ya que los existentes son reemplazados por el atacante y no son reparables.

La forma de solucionar su problema de host es la siguiente:

A) use Linux y / o la seguridad del host de Windows para escanear el host en busca de ganchos conocidos y riesgo de malware conocido.

B) si se encuentra alguna amenaza, estudie la misma para identificar los mejores pasos de remediación. Si Linux, reinstalar es una apuesta segura. Si Windows, las herramientas de eliminación de amenazas son buenas.

C) parche el host al último kernel y actualizaciones

d) publicar el parche, endurecer el servidor

E) instale el firewall del host y los ips del host en el servidor y manténgalo en modo de monitoreo.

F) conecte el servidor a la red y ejecute sus aplicaciones.

g) comience a fortalecer el servidor utilizando las reglas de firewall del host y si alguna amenaza identificada por la red interna coloca en la lista negra al host.

H) ahora está listo para usar el servidor para aplicaciones y bases de datos que deben seguir sus propias necesidades de seguridad.

La mejor de las suertes

Si un servidor está comprometido, puede intentar solucionarlo, pero no puede confiar en él, por lo que debe instalarlo desde cero.

Sin embargo…

La mejor práctica es extraer el disco duro de la máquina, hacer una copia del mismo, luego envolver el disco duro (tal vez en una envoltura protectora) y sellarlo; una buena cosa es firmar a través del sello. Luego, ciérrelo y mantenga registros meticulosos de cualquier persona que entre en contacto con la unidad y cuándo.

Esto se llama preservar la cadena de custodia . Esto permite que los datos recogidos de la unidad se utilicen más adelante en procedimientos legales, y evita que se cuestionen (“¡Cualquiera podría haber alterado ese disco!”).

En cuanto a proteger un servidor, ese es un tema completamente diferente y es un tema extenso. Como se mencionó anteriormente, no lo hace en un servidor rooteado, solo en un nuevo servidor confiable no conectado a Internet.

Lo mejor que puede hacer es estudiar los diversos materiales disponibles que le enseñan cómo hacerlo. (Una forma clásica de proteger los servidores de Windows en particular es colocar un servidor Unix o Linux frente a él, protegiéndolo de Internet).

Linux es un poco diferente de Windows cuando se trata de sistemas comprometidos, por lo que generalmente la respuesta es que no puede. Raíz significa que el juego ha terminado.

La mayoría de las empresas de centros de datos que alquilaron servidores en el pasado tenían una política que requería que el cliente hiciera una reinstalación del sistema operativo si hubo un hack de root. La lógica es que no hay una manera eficiente de confirmar y verificar que el sistema sea seguro. Un usuario malintencionado con acceso de superusuario (root) significa que podría haber compilado paquetes del sistema con su propia versión. Es más fácil, más seguro y se recomienda hacer una nueva instalación completamente limpia. Esto es incluso cierto para los sistemas Windows. Tome sus datos, luego limpie el disco duro con una nueva instalación. Luego, después de verificar sus datos (suponiendo que sean seguros), vuelva a copiarlos en el sistema. Esta es también la razón por la cual las copias de seguridad son importantes en los sistemas de producción, ya que pueden ahorrarle mucho trabajo. En caso de un compromiso del sistema, simplemente regrese a un punto seguro anterior.

Ya no puede confiar en un servidor si el atacante obtuvo acceso de root. Incluso si asume que está limpio, no hay garantía de que no haya puertas traseras. Verificar cada archivo y paquete es aún más trabajo que una reinstalación completa.

La forma más simple y confiable es formatear el disco, reinstalar el software y restaurar sus datos de las copias de seguridad. Si tiene un código personalizado, extraiga el código fuente de su repositorio de copias de seguridad y reconstruya desde cero.

Tenga en cuenta que esto depende de que sus datos y el código fuente estén respaldados en otra máquina, pero de todos modos lo necesita.

Limpiar y restaurar es la mejor manera. Pero tuve que repararlos cuando un cliente no tiene las copias de seguridad adecuadas, en ese caso, obtenga otro disco e instale el sistema operativo en ese disco y luego monte el disco pirateado (después de aislar el servidor detrás de un firewall), luego entre en el viejo / etc / passwd y / etc / shadow y edite la cuenta raíz maliciosa y otras después de hacer una copia de seguridad de esos archivos. Luego ejecute un escaneo de malware en los directorios que necesitan copia de seguridad.

Luego haga una copia de seguridad de los directorios, limpie los dos discos duros que usó (excepto en qué consisten las copias de seguridad, por supuesto) y luego vuelva a instalar el sistema operativo nuevamente y restaure los directorios de copia de seguridad. Instale un IDS en el sistema para asegurarse de saber si está rooteado nuevamente.

More Interesting

Si los piratas informáticos pueden robar fácilmente información gubernamental ultraclasificada, ¿qué les impide piratear información financiera de la SEC para obtener una ventaja comercial ilegal?

¿Puedo configurar mi máquina con Windows 7 de forma tal que si se ingresa una contraseña determinada al iniciar sesión, ciertos archivos se borren silenciosamente?

¿Es el nuevo satélite 'a prueba de piratería' de China realmente a prueba de piratería?

¿Por qué es tan difícil eliminar una cuenta que ha sido pirateada cuando era originalmente tuya?

¿Cómo encuentran los investigadores de seguridad vulnerabilidades en grandes sitios web como Google, Facebook, PayPal y Ebay? ¿Cuál es el flujo de trabajo que siguen para encontrarlos?

¿Cuál es el mejor lugar para piratear éticamente en Chandigarh?

¿Cuál es el mercado objetivo para la startup que ofrece pruebas de penetración y servicios de consultoría de seguridad de TI?

Cómo eliminar el virus troyano Artemis

¿Cómo se puede garantizar la privacidad de los datos, como las imágenes guardadas en el Gmail de uno o los archivos almacenados en una infraestructura basada en la nube, a la luz del escándalo NSA PRISM y demás?

¿Qué problemas de seguridad surgen en un entorno de tiempo compartido? ¿Puede una máquina de tiempo compartido tener el mismo grado de seguridad que una máquina dedicada?

¿Cuáles son algunos de los delitos cibernéticos comunes cometidos en la India?

¿LastPass es seguro de usar en un dispositivo rooteado?

¿Es la computación en la nube más segura que los sistemas de servidor cliente tradicionales para la pequeña y mediana empresa?

¿Son los empleados nuestro eslabón más débil en la ecuación de seguridad cibernética?

¿Cuáles son las infracciones de seguridad de TI más famosas en la historia reciente?