20199318 2019-2020-2 "Asignación de red y práctica de defensa" Asignación de la semana 8

20199318 2019-2020-2 "Asignación de red y práctica de defensa" Asignación de la semana 8


1. Ordenar y resumir el conocimiento.

1.1
Proceso de estructura del sistema operativo Linux y mecanismo de gestión de subprocesos : el kernel de Linux adopta un modo preventivo multiproceso multiproceso (multiprocesamiento), actividades concurrentes de múltiples procesos, el módulo de gestión de procesos del kernel es responsable de programar los recursos de hardware para su uso, el proceso como el más básico La unidad de programación mantiene una estructura de bloque de control de proceso (PCB) La función de programación del proceso de programación del núcleo selecciona el proceso para la ejecución de acuerdo con la prioridad del proceso y la CPU y otros recursos.
Mecanismo de administración de memoria : el módulo de administración de memoria de Linux (MM) permite que múltiples procesos compartan de manera segura el área de memoria física. La administración de memoria de Linux admite memoria virtual. En una máquina i386 de 32 bits, cada proceso tiene un espacio de memoria virtual independiente de 4 GB. El código y los segmentos de datos del núcleo se asignan a más de 3 GB de espacio. El espacio de memoria virtual solicitado por el código de modo de usuario En el rango de 0-3 GB, cada proceso utiliza dos conjuntos de descriptores de segmento para acceder al espacio de memoria del modo kernel y el modo usuario. En el modo usuario, el código no puede acceder al espacio de direcciones de más de 3 GB. Si desea acceder al espacio kernel, debe Mediante llamada o interrupción del sistema. El módulo de administración de memoria proporciona servicios de llamadas al sistema, como asignación de memoria, recuperación de memoria, solicitud de paginación e intercambio de páginas para procesos.
Mecanismo de administración del sistema de archivos : el kernel de Linux utiliza el mecanismo de administración virtual de archivos VFS (Vitual File System), por lo que puede admitir docenas de diferentes tipos de sistemas de archivos lógicos, incluidos ext2 / ext3 / ext4, vfat.ntfs, etc., a través del controlador del dispositivo Los programas acceden a dispositivos de hardware específicos (como dispositivos de disco), y la administración de archivos virtuales VFS proporciona un conjunto de funciones comunes de llamada al sistema de archivos (incluyendo abrir, cerrar, leer, escribir, etc.) para los procesos del usuario, que se pueden usar para archivos en diferentes sistemas de archivos. Realizar operaciones unificadas.
Mecanismo de control del dispositivo : el software que maneja o administra el controlador de hardware en el kernel de Linux se denomina controlador de dispositivo. El controlador de dispositivo del kernel de Linux es esencialmente una biblioteca compartida de rutinas de control de hardware de bajo nivel privilegiadas y residentes en memoria.
Mecanismo de red: El módulo de red en el núcleo Lmu proporciona acceso a varios estándares de red y documentación de varios cubiertos de red.
1.2 Mecanismo de seguridad del sistema operativo Linux Mecanismo de
autenticación de identidad de Linux : Linux es un sistema operativo multitarea multitarea, que implementa la gestión de identidad del usuario mediante la creación de usuarios y grupos de usuarios con múltiples tipos de roles para garantizar que varios usuarios usen el sistema operativo Linux de manera segura .
Mecanismo de autenticación de usuario de inicio de sesión local de Linux : el mecanismo de autenticación de usuario más básico del sistema Linux es el proceso de autenticación para que el usuario inicie sesión en la consola. El proceso básico es: si el proceso de inicio inicia getty, si hay miles de consolas virtuales (como tyl, tty2, etc.) . El inicio de sesión se muestra en la consola. Cuando el usuario escribe en el usuario, getty ejecuta el proceso de inicio de sesión e ingresa al proceso de autenticación de inicio de sesión. Después de que la autenticación sea exitosa, el proceso de inicio de sesión bifurcará el proceso secundario del usuario correspondiente Shell. En este punto, el proceso de inicio de sesión se completa. El trabajo comienza bajo el correspondiente Shell.
Mecanismo de autenticación de usuario de inicio de sesión remoto de Linux : en la actualidad, los sistemas Linux generalmente utilizan el servicio SSH para el inicio de sesión de usuario remoto y el acceso a la red. SSH proporciona dos métodos de mecanismo de autenticación de identidad de usuario: el primer método es la autenticación basada en contraseña, utilizando el sistema Linux incorporado Cuenta de usuario y contraseña, puede iniciar sesión en el host remoto: el segundo método es la autenticación de identidad basada en claves asimétricas, que requiere que los usuarios creen un par de claves asimétricas para ellos mismos y coloquen la clave pública en el servidor para acceder a ella. En la conexión, cuando se conecta al servidor SSH, el software del cliente enviará una solicitud al servidor para solicitar la autenticación de identidad mediante un certificado. Después de que el servidor reciba la solicitud, utilizará la clave pública del usuario solicitante para cifrar el "desafío" y enviarlo al cliente. El software, el software del cliente puede usar la clave privada para descifrar después de recibir la "pregunta" y luego enviarla al servidor para completar el proceso de autenticación de identidad basado en la clave asimétrica. El mecanismo de autenticación de identidad basado en claves asimétricas puede resistir efectivamente el ataque de secuestro del hombre en el medio de la sesión, y es más seguro que el mecanismo de autenticación basado en contraseña.
PAM middleware de autenticación de identidad unificada de Linux: Linux proporciona PAM (Módulos de autenticación conectables) como un método flexible y estándar para verificar la identidad del usuario. Al proporcionar algunas bibliotecas de enlaces dinámicos y un conjunto unificado de API, puede proporcionar diferentes aplicaciones de software 3. El servicio de red proporciona un mecanismo de autenticación de identidad unificada, que separa el servicio proporcionado por el sistema del método de autenticación del servicio, permitiendo al administrador del sistema configurar de manera flexible diferentes métodos de autenticación para diferentes servicios sin cambiar el programa de servicio. Es fácil agregar nuevos métodos de autenticación al sistema, como el mecanismo de autenticación de identidad de la tarjeta inteligente. El administrador del sistema usa el archivo de configuración PAM (es decir, /etc/pam.conf o /etc/pam.d/) para formular una estrategia de autenticación de identidad, es decir, especificar qué servicio se debe usar y qué método de autenticación: La API PAM se usa para implementar la llamada al método de autenticación: el desarrollador del módulo de servicio PAM usa la PAM SPI (Service Module API) para escribir el módulo de autenticación, que usa diferentes mecanismos de autenticación (como los métodos tradicionales de autenticación UNIX, Kerberos y la autenticación con tarjeta inteligente) Etc.) agregado al middleware PAM: la biblioteca principal de PAM (libpam) lee el archivo de configuración como base para conectar el programa de servicio y el método de autenticación correspondiente para proporcionar servicios de autenticación de identidad para varios servicios de todo el sistema Linux.
Autorización de Linux y mecanismo de control de acceso : Linux utiliza el sistema de archivos virtual VFS para admitir diferentes tipos de formatos de sistema de archivos, y al mismo tiempo integra la administración de otros tipos de recursos del sistema a través de tipos de archivos de dispositivo.
Mecanismo de auditoría de seguridad de Linux : implementado principalmente a través de tres subsistemas de registro:

  • Registro de tiempo de conexión: ejecutado por múltiples programas, escribiendo registros en / var / log / wtmp y / var / run / utmp, el inicio de sesión y otros programas de inicio de sesión de usuario son responsables de actualizar los archivos wtmp y utmp, lo que permite a los administradores del sistema rastrear quién está dónde Para iniciar sesión en el sistema.
  • Registro de estadísticas de proceso: ejecutado por el núcleo del sistema. Cuando finaliza un proceso, se escribe un registro en el archivo de estadísticas de proceso (pacct o acct) para cada proceso. El objetivo de las estadísticas de proceso es proporcionar estadísticas de uso de comandos para servicios básicos en el sistema.
  • El servicio de registro general syslogd (8) realiza el registro de errores. Varios demonios del sistema, programas de usuario y núcleos informan eventos notables al archivo / var / log / messages a través de syslog.

1.2 Tecnología de ataque y defensa remota del
sistema Linux Proceso de ataque del sistema Linux :

Los ataques contra sistemas Linux también siguen el proceso lógico unificado de los ataques del sistema: el atacante primero usa medios técnicos como pisar puntos, escanear y verificar puntos para recopilar información sobre el sistema Linux objetivo, y luego el atacante descubre un servicio de red de escucha desde la red remota Vulnerabilidades de seguridad o debilidades de configuración para obtener derechos de acceso de Shell locales, y una vez que se obtienen los derechos de acceso de Shell, el atacante ya se ha establecido en el sistema Linux de destino. La tecnología adecuada obtiene los derechos de usuario root más altos del sistema Linux y luego puede hacer lo que quiera de acuerdo con sus intenciones de intrusión.
El método principal de intrusión de red remota en el sistema Linux :

  • Realice ataques de adivinanzas a las contraseñas de usuario involucradas en el proceso de autenticación de identidad de varios servicios de red en el sistema Linux, con la esperanza de descifrar las cuentas de usuario y contraseñas reales y efectivas de un determinado servicio, para falsificar la identidad del usuario e ingresar al sistema.
  • Descubra un vacío de seguridad en un sistema Linux que supervisa los servicios de red y úselo. Inyecte el código del módulo de carga de ataque en el proceso de servicio de destino para la ejecución, proporcionando así a los atacantes acceso al shell local.
  • Utilice troyanos de la página web, envíe correos electrónicos fraudulentos, proporcione programas de caballos de Troya y otros métodos de ingeniería técnica y social para atacar a los programas y usuarios de los clientes. Puerta.
  • Cuando el sistema Linux se usa como un enrutador para conectarse a múltiples redes, o cuando se implementa un oyente de "modo promiscuo" para la detección de redes, puede estar sujeto a un ataque de paquetes especialmente construido por el atacante, y el atacante puede obtener acceso.
  • Ataques de adivinación de contraseña remota :
    principalmente para ataques de adivinación de contraseña en servicios como SSH, telnet, FTP, HTTP, etc. El modo de ataque más común que enfrenta Internet en el sistema comprometido. Estos protocolos utilizan el nombre de usuario y la contraseña incorporados en el sistema Linux y HTTP / HTTPS, FTP, SNMP y otros servicios de red también tienen su propio sistema de cuenta de usuario y mecanismo de autenticación de identidad, y los atacantes también pueden obtener derechos de acceso local.
    Ataques de penetración remota :
    principalmente al monitorear las vulnerabilidades de seguridad del servicio de red, el ciclo de vida de la vulnerabilidad de seguridad de Linux tiene algunas características notables: los piratas informáticos utilizan principalmente algunas técnicas de auditoría de seguridad de código fuente y herramientas auxiliares, y debido a su código abierto, descubrimiento de vulnerabilidades y reparación de parches A menudo es más rápido, pero estas vulnerabilidades pueden no ser reportadas en primer lugar.
    Precauciones de seguridad contra ataques de penetración remota en servicios de red:
  • Deshabilitar todos los servicios de red innecesarios;
  • Intente elegir protocolos de red y software de servicio más seguros, y utilice las mejores prácticas de seguridad para la implementación;
  • Actualice la versión del servicio de red a tiempo;
  • Use xinetd y firewall para agregar un mecanismo de control de acceso a la red para los servicios de red de Linux;
  • Establecer un proceso de detección de intrusos y planificación de respuesta a emergencias.
    Programas de clientes de Linux y ataques de usuarios : los clientes más utilizados para Linux no son más que navegadores web y clientes de correo electrónico, generalmente el navegador Firefox "Firefox" y el cliente de correo electrónico Thunderbird "Thunderbird" proporcionado por la Fundación Mozilla.
    Ataques de enrutador y escucha de Linux : ataques especiales de paquetes sufridos durante el enrutamiento o rastreo de paquetes, como netfilter / iptables que implementaron previamente el enrutamiento y el filtrado de paquetes, y Snort para la detección y prevención de intrusiones en la red.
    Attack Listener & Intrusion Detector : el software principal de código abierto utilizado para implementar el monitoreo y la detección de intrusos en sistemas Linux incluye la biblioteca de captura de paquetes Libpcap, el programa de línea de comando tcpdump, el software de análisis de protocolo y monitoreo de red Wireshark, el sistema de detección de intrusiones Snort
    1.3, el sistema Linux de seguridad local Tecnología ofensiva y defensiva
    Escalada de privilegios locales de Linux : después de que un
    atacante obtiene acceso de usuario restringido local, la extracción de privilegios más simple es descifrar la contraseña del usuario raíz y luego ejecutar el comando su o sudo para actualizar. Los primeros sistemas Linux pueden usar el archivo de configuración / etc / passwd para la autenticación de identidad del usuario y guardar el texto cifrado de la contraseña en este archivo, que también puede ser leído por los usuarios comunes. El segundo tipo de escalada de privilegios es descubrir y usar vulnerabilidades de seguridad en programas su o sudo, y el tercero y más popular es ejecutar vulnerabilidades de ejecución de código arbitrario en programas con privilegios de root para abrir la línea de comandos de shell con permisos de root. Conectar
    Use la vulnerabilidad del programa SUID en modo de usuario para actualizar los privilegios:En un sistema Linux, cada proceso tiene un UID real (ID de usuario real) y un UID efectivo (ID de usuario efectivo). El UID real es inicialmente la ID de usuario que ejecuta el proceso, y el UID efectivo se refiere al usuario que realmente hereda los permisos del proceso. La ID se utiliza principalmente para verificar permisos, como abrir archivos, crear archivos, modificar archivos, eliminar otros procesos, etc. En el caso de ejecutar un proceso como usuario ordinario, el UID efectivo del proceso es el mismo que el UID real, pero puede cambiarse en algunos casos para obtener mayor autoridad para realizar algunas operaciones especiales. Este caso especial es que el bit de permiso especial SUID se establece para el programa. Una vez que se establece el bit SUID, cuando se ejecuta el programa, el UID efectivo del proceso en ejecución se convierte en el ID de usuario propietario del programa. Si el usuario propietario del programa Si es Root, entonces el proceso es práctico, tiene privilegios de Root y puede realizar algunas operaciones que requieren privilegios de Root. Aquí, la contraseña se cambia a passwd. Este comando tiene autoridad SUID. Cuando los usuarios comunes lo usan, el propietario de la reunión La identidad de Root se ejecuta como la ID de usuario efectiva del proceso, en este momento también puede escribir la contraseña en el archivo / etc / shadow.
    El ataque de desbordamiento del búfer local del programa SUID:
    explicado en detalle en la tecnología completa de ataque y defensa. Cuando se usa localmente, en la mayoría de los casos, el ataque de desbordamiento del búfer es principalmente un programa que establece el bit de permiso SUID y el usuario propietario es Root, de modo que después del desbordamiento, puede inyectar el código de carga de ataque creado maliciosamente por el atacante en el programa de destino. Ejecute el comando con autorización de usuario root para dar Shell.
    Ataque de condición de competencia del programa SUID: Las vulnerabilidades de las condiciones de carrera generalmente existen porque algunos programas no siguen las características atómicas de la operación. Cuando un proceso opera un cierto semáforo, puede causar consecuencias impredecibles debido a la operación de otros procesos al mismo tiempo. Es una vulnerabilidad de TOCTOU (timeof-check-to-time-of-use), es decir, hay un retraso entre el momento en que el programa verifica una determinada condición y el uso del resultado de la verificación, y en este intervalo de tiempo, el atacante puede ser Además, las condiciones que han pasado la inspección se cambian en el proceso, de modo que los objetos que opera el programa objetivo de ataque durante el uso se han cambiado.
    Borrado del registro del sistema Linux : cambie el registro de actividad actual para evitar que el administrador del sistema note la actividad de inicio de sesión actual del atacante. En el directorio / var / log, el atacante a menudo necesita modificar los archivos de registro como mensajes. Auth. Secure. Wtmp y xferlog. Para los archivos de formato de texto, las operaciones de limpieza de registros se pueden realizar utilizando herramientas de edición de texto como vi y emacs, y para los archivos binarios wtmp que registran los registros de inicio de sesión de los usuarios, los atacantes a menudo usan .wzap, una herramienta especial para eliminar lo especificado del archivo de registro wtmp Las entradas de registro del usuario, para borrar el registro de inicio de sesión.
    Programa de puerta trasera de control remoto del sistema Linux : los tipos comunes de programas de puerta trasera de control remoto incluyen principalmente programas de sistema troyano, herramientas de puerta trasera de línea de comandos y herramientas gráficas de puerta trasera. El programa del sistema troyano es un programa de puerta trasera que siempre acepta la cuenta configurada por el atacante para iniciar sesión. Las herramientas de puerta trasera de línea de comandos como Netcat pueden abrir un puerto TCP para monitorear las solicitudes de conexión.

2. Práctica práctica

Práctica 1: Use Metasploit para las
tareas de ataque de penetración remota de Linux : use el software de prueba de penetración Metasploit para atacar la vulnerabilidad de seguridad usermap_script del servicio Samba en la máquina de destino de Linux y obtener permisos de acceso de host para la máquina de destino de Linux de destino. Los pasos prácticos son los siguientes:
Pasos experimentales:
IP del atacante: 192.168.200.6
IP de la máquina de
destino : 192.168.200.125 1. Inicie el software Metasplot y use msfconsole:

2. Utilice exploit: exploit / multi / samba / usermap_ script para penetrar en el módulo de ataque:

3. Elija atacar PAYLOAD como un shell remoto (son posibles las conexiones directas e inversas):

4. Establezca los parámetros de ataque de penetración (RHOST, LHOST, TARGET, etc.)

5. Realizar ataques de penetración:

6. Verifique si el shell remoto se obtuvo correctamente y verifique los permisos obtenidos. Aquí, use el comando whoami para consultar al usuario actual:


Práctica de confrontación de ataque y defensa: el atacante usa el software de penetración Metasploit para llevar a cabo ataques de red contra un avión objetivo Metasploitable de Linux, y el defensor usa herramientas tepdump o Wireshark o Snort para capturar el flujo de ataque en Metasploitatble. Descargue el parche de vulnerabilidad de seguridad del sitio web oficial para parchear el sistema, y ​​las dos partes cooperan para dar un informe sobre el proceso de ofensa y defensa.

  • Atacante: utilice Metasploit, seleccione las vulnerabilidades encontradas en la máquina objetivo de Metasploitable para realizar ataques de penetración, obtener control remoto e intentar obtener más permisos de root.
  • Defensor: use tcpdump / wireshark / snort para monitorear y obtener el archivo del paquete de ataque de red, y combine wireshark / snort para analizar el proceso de ataque, obtenga la dirección IP del atacante, la IP objetivo y el puerto, el tiempo de inicio del ataque, la vulnerabilidad de ataque, use Shellcode y Después de la ejecución exitosa de la entrada de comandos y otra información local.
  • El equipo cooperó para completar el ataque de penetración y el informe del experimento de análisis.
    Pasos experimentales:
    1. Use nessus para escanear el dron objetivo, consulte la vulnerabilidad de detección de puerta trasera UnrealIRCd, el número de vulnerabilidad es CVE-2010-2075 y realice un ataque de vulnerabilidad a través de Metasploitable para obtener permisos de root, directorio e información de IP:




2. Después de que el atacante comience el ataque, use wireshark para escuchar. Primero, los dos paquetes se transmiten y responden, y luego el paquete TCP establece un protocolo de enlace de tres vías. Podemos ver la dirección IP del atacante 192.168.200.6 y el puerto 4444, y el IP192 objetivo .168.200.125 y puerto 54647, tiempo de lanzamiento del ataque: 22 de abril de 2020 01:26:42

3. Puede consultar la operación al ingresar al shell de destino al rastrear el flujo de datos y consultar el directorio actual, la información de IP y la información del usuario:

4. La etiqueta de vulnerabilidad es CVE-2010-2075. La vulnerabilidad explota el servidor IRC remoto es la versión de UnrealIRCD, con una puerta trasera, UnrealIRCd distribuida en algunos sitios espejo, contiene modificaciones introducidas externamente en la macro DEBUG3_DOLOG_SYSTEM (caballo de Troya), El atacante remoto puede ejecutar comandos arbitrarios.
5.shellcode


3. Problemas encontrados

  • Problema: no hay cables de conexión en la máquina de destino
  • Solución: Analice el flujo de datos en la máquina de ataque Kali, el efecto es el mismo.

4. Percepción de aprendizaje, pensamiento

El contenido de esta práctica no es mucho, la sensación general es similar al ataque y defensa del sistema operativo Windows anterior. Debido a la base de la última práctica, este proceso de práctica es muy fluido.

Supongo que te gusta

Origin www.cnblogs.com/SunMaolin/p/12751605.html
Recomendado
Clasificación