Enlaces a todas las partes:Parte 1. Obtención del acceso inicial (acceso inicial)Parte 2. EjecuciónParte 3. Fijación (persistencia)Parte 4. Escalada de privilegiosParte 5. Evasión de defensaParte 6. Obtención de credenciales (acceso de credenciales)Parte 7. DescubrimientoParte 8. Movimiento lateralLa escalada de privilegios es el resultado de acciones que permiten a un atacante o programa malicioso obtener un mayor nivel de permisos en el sistema o red atacados. Las técnicas de escalado de privilegios describen los métodos por los cuales un adversario, después de obtener acceso sin privilegios a un sistema atacado, utilizando varias "debilidades" de un sistema puede obtener derechos de administrador, sistema o raíz locales. El uso por parte de los atacantes de cuentas de usuario con derechos de acceso a sistemas o permisos específicos para realizar ciertas operaciones también puede considerarse una escalada de privilegios.
El autor no es responsable de las posibles consecuencias de aplicar la información establecida en el artículo, y también se disculpa por posibles imprecisiones hechas en algunas formulaciones y términos. La información publicada es un recuento gratuito de los contenidos de MITER ATT & CK .Es importante cancelar que algunas de las técnicas descritas en la matriz
ATT @ CK se incluyen simultáneamente en varias etapas de la cadena de ataque, por ejemplo, la intercepción de búsqueda de DLL se puede usar tanto para asegurar el acceso mediante la ejecución no autorizada de una DLL maliciosa como para aumentar los privilegios al iniciar la DLL en el proceso. trabajando en el contexto de un usuario más privilegiado.
Sistema: Windows
Derechos: Usuario, Administrador
Descripción: los atacantes pueden usar tokens de acceso para realizar acciones en diversos contextos de seguridad del usuario o del sistema, evitando así la detección de actividad maliciosa. Un adversario puede usar las funciones API de Windows para copiar tokens de acceso de procesos existentes (robo de tokens), para esto debe estar en el contexto de un usuario privilegiado (por ejemplo, un administrador). El robo de tokens de acceso se usa generalmente para elevar los privilegios del administrador al Sistema. Un adversario también puede usar un token de acceso a la cuenta para la autenticación en un sistema remoto, si esta cuenta tiene los permisos necesarios en el sistema remoto.
Considere varias formas de abusar de los tokens de acceso:
- Robo y suplantación de tokens. La suplantación de tokens es la capacidad del sistema operativo para iniciar subprocesos en un contexto de seguridad distinto del contexto del proceso al que pertenece este subproceso. En otras palabras, la personificación de los tokens le permite realizar cualquier acción en nombre de otro usuario. Un adversario puede duplicar un token de acceso usando la función DuplicateTokenEX y usar ImpersonateLoggedOnUser para llamar a un hilo en el contexto de un usuario conectado, o usar SetThreadToken para asignar un token de acceso a una secuencia.
- Cree un proceso utilizando un token de acceso. Un atacante puede crear un token de acceso utilizando la función DuplicateTokenEX y luego usarlo con CreateProcessWithTokenW para crear un nuevo proceso que se ejecute en el contexto del usuario suplantado.
- Obtención y suplantación de tokens de acceso. Un adversario, que tiene un nombre de usuario y una contraseña, puede crear una sesión de inicio de sesión utilizando la función API LogonUser , que devolverá una copia del token de acceso de sesión de una nueva sesión y luego usará la función SetThreadToken para asignar un token al hilo. Metasploit Meterpreter y CobaltStrike tienen herramientas para manipular tokens de acceso para elevar los privilegios.
Recomendaciones de protección: para hacer un uso completo de las tácticas anteriores, un atacante debe tener derechos de administrador del sistema, así que no olvide limitar los privilegios de los usuarios comunes. Cualquier usuario puede engañar a los tokens de acceso si tienen credenciales legítimas. Limite la capacidad de los usuarios y grupos para crear tokens de acceso:
GPO: Configuración del equipo> [Políticas]> Configuración de Windows> Configuración de seguridad> Políticas locales> Asignación de derechos de usuario: Crear un objeto de tokenTambién determine quién puede reemplazar los tokens de proceso de servicios locales o de red:
GPO: Configuración del equipo> [Políticas]> Configuración de Windows> Configuración de seguridad> Políticas locales> Asignación de derechos de usuario: reemplazar un token de nivel de procesoSistema: Windows
Derechos: administrador
Descripción: las aplicaciones de accesibilidad (lupa de pantalla, teclado en pantalla, etc.) se pueden iniciar utilizando combinaciones de teclas antes de que un usuario inicie sesión en el sistema. Un atacante puede reemplazar los archivos de inicio de estos programas o cambiar la forma en que se inician y abrir una consola de comandos u obtener una puerta trasera sin iniciar sesión.
- C: \ Windows \ System32 \ sethc.exe - lanzado 5 veces presionando la tecla Shift;
- C: \ Windows \ System32 \ utilman.exe : lanzado presionando la combinación de Win + U.
En WinXP y versiones posteriores, sethc.exe y utilman.exe pueden reemplazarse, por ejemplo, con cmd.exe, luego, cuando presiona la combinación de teclas deseada, cmd.exe se inicia antes de ingresar a Windows con privilegios del sistema.
En Vista y versiones posteriores, debe cambiar la clave de registro que configura cmd.exe u otro programa como depurador, por ejemplo, para ultiman.exe. Después de editar el registro y presionar la combinación de teclas deseada en la pantalla de inicio de sesión o al conectarse al host a través de RDP, se ejecutará cmd.exe con derechos de sistema.
También hay programas de Windows que pueden usarse para implementar esta técnica de ataque:
- C: \ Windows \ System32 \ osk.exe;
- C: \ Windows \ System32 \ Magnify.exe;
- C: \ Windows \ System32 \ Narrator.exe;
- C: \ Windows \ System32 \ DisplaySwitch.exe;
- C: \ Windows \ System32 \ AtBroker.exe.
Recomendaciones de seguridad: configure el inicio de la autenticación de red obligatoria para usuarios remotos antes de crear una sesión RDP y mostrar la pantalla de inicio de sesión (
habilitada de forma predeterminada en Windows Vista y posterior ). Use la puerta de enlace de escritorio remoto para administrar conexiones y configurar la seguridad RDP.
Sistema: Windows
Derechos: Administrador, Sistema
Descripción: las DLL especificadas en el valor de la clave AppCertDLL se cargan en cada proceso que llama a las funciones API utilizadas con frecuencia:
CreateProcess, CreateProcessAsUser, CreateProcessWithLoginW, CreateProcessWithTokenW, WinExec . Se puede abusar del valor de la clave AppCertDLLs al hacer que una DLL maliciosa cargue y ejecute ciertos procesos. AppCertDLLs se almacena en la siguiente clave de registro:
HKEY_LOCAL_MACHINE \ System \ CurrentControlSet \ Control \ Session Manager .
Recomendaciones de protección: utilice todos los medios posibles para bloquear software potencialmente peligroso y descargar archivos DLL desconocidos, como AppLocker y DeviceGuard.
Sistema: Windows
Derechos: Administrador, Sistema
Descripción: las DLL especificadas en el valor de la clave AppInit_DLL se cargan en cada proceso que carga user32.dll. En la práctica, esto es casi todos los programas.
AppInit_DLLs se almacena en las siguientes claves de registro:
- HKEY_LOCAL_MACHINE \ Software \ Microsoft \ Windows NT \ CurrentVersion \ Windows;
- HKEY_LOCAL_MACHINE \ Software \ Wow6432Node \ Microsoft \ Windows NT \ CurrentVersion \ Windows.
Se puede abusar del valor de la clave AppInit_DLL para exceder los privilegios al cargar archivos DLL maliciosos e iniciar ciertos procesos. La funcionalidad AppInit_DLLs está deshabilitada en Windows 8 y versiones posteriores cuando se activa el arranque seguro.
Recomendaciones de protección: considere usar una versión del sistema operativo no anterior a Windows 8 y habilitar el arranque seguro. Utilice todo tipo de medios para bloquear software potencialmente peligroso y descargar archivos DLL desconocidos, como AppLocker y DeviceGuard.
Sistema: Windows
Derechos: administrador
Descripción: La infraestructura / marco de compatibilidad de aplicaciones de Microsoft Windows se creó para garantizar la compatibilidad de los programas con las actualizaciones de Windows y los cambios en el código del sistema operativo. El sistema de compatibilidad utiliza las llamadas shim ("juntas"), bibliotecas que actúan como un búfer entre el programa y el sistema operativo. Usando la memoria caché de shim, el sistema determina la necesidad de juntas de shim (almacenadas como una base de datos .sdb). Varios archivos .sdb almacenan varios procedimientos para interceptar el código de la aplicación, procesarlo y luego redirigirlo al sistema operativo. La lista de todas las juntas de cuñas instaladas por el instalador (sdbinst.exe) se almacena de forma predeterminada en:
- % WINDIR% \ AppPatch \ sysmain.sdb ;
- HKLM \ Software \ Microsoft \ Windows NT \ CurrentVersion \ AppCompatFlags \ InstalledSDB .
Las bases de datos de shim personalizadas se almacenan en:
- % WINDIR% \ AppPatch [64] \ Personalizado;
- HKLM \ Software \ Microsoft \ Windows NT \ CurrentVersion \ AppCompatFlags \ Custom .
Para garantizar la protección en el modo de usuario, se excluye la posibilidad de cambiar el núcleo del sistema operativo utilizando shim-gaskets, y se requieren derechos de administrador para instalarlos. Sin embargo, algunos shim pads se pueden usar para omitir el Control de cuentas de usuario (UAC), la inyección de DLL, deshabilitar la
Prevención de ejecución de datos y el
Manejo de excepciones de estructuras , así como interceptar direcciones de memoria. Un atacante que usa juntas de ajuste puede aumentar los privilegios, instalar puertas traseras, desactivar la protección del sistema operativo, como Windows Defender.
Recomendaciones de protección: no hay muchas maneras de evitar la aplicación de calces. No se recomienda deshabilitar la compatibilidad de aplicaciones para evitar problemas con la estabilidad del sistema operativo. Microsoft lanzó
KB3045645 , que eliminará el indicador de "elevación automática" en el archivo sdbinst.exe para evitar el uso del sistema shim para evitar el UAC.
Sistema: Windows
Derechos: Usuario, Administrador
Descripción: Hay muchas formas de evitar UAC, las más comunes se implementan en el proyecto
UACMe . Se descubren nuevas formas de evitar UAC, como abusar de la aplicación del sistema
eventvwr.exe , que puede ejecutar un archivo binario o un script elevado. Los programas maliciosos también pueden integrarse en procesos confiables mediante los cuales UAC permite la escalada de privilegios sin preguntar a un usuario.
Para omitir el UAC usando eventvwr.exe, la clave se modifica en el registro de Windows:
[HKEY_CURRENT_USER] \ Software \ Classes \ mscfile \ shell \ open \ command .
Para omitir el UAC usando sdclt.exe, se modifican las claves en el registro de Windows:
[HKEY_CURRENT_USER] \ Software \ Microsoft \ Windows \ CurrentVersion \ App Paths \ control.exe;
[HKEY_CURRENT_USER] \ Software \ Classes \ exefile \ shell \ runas \ command \ isolatedCommand.Recomendaciones de protección: elimine a los usuarios del grupo de administradores locales en los sistemas protegidos. Si es posible, habilite el nivel más alto de protección en la configuración de UAC.
Sistema: Windows
Derechos: usuario, administrador, sistema
Descripción: la técnica consiste en explotar vulnerabilidades en el algoritmo para encontrar mediante las aplicaciones los archivos DLL que necesitan para funcionar (
MSA2269637 ). A menudo, el directorio de búsqueda de DLL es el directorio de trabajo del programa, por lo que los atacantes pueden reemplazar la DLL de origen por una maliciosa con el mismo nombre de archivo.
Los ataques remotos en búsquedas de DLL se pueden llevar a cabo cuando el programa instala su directorio actual en un directorio remoto, por ejemplo, un recurso compartido de red. Además, los atacantes pueden cambiar directamente el método de búsqueda y carga de archivos DLL reemplazando los archivos .manifest o .local, que describen los parámetros de búsqueda de DLL. Si el programa atacado funciona con un alto nivel de privilegios, la DLL maliciosa cargada por él también se ejecutará con altos derechos. En este caso, la técnica se puede utilizar para aumentar los privilegios del usuario al administrador o al sistema.
Recomendaciones de protección: evite la carga remota de DLL (habilitada de manera predeterminada en Windows Server 2012+ y disponible con actualizaciones para XP + y Server 2003+). Habilita el modo de búsqueda segura para archivos DLL, que restringe los directorios de búsqueda a directorios como
% SYSTEMROOT% antes de realizar una búsqueda de DLL en el directorio de la aplicación actual.
Habilitar el modo de búsqueda segura de DLL:
Configuración del equipo> [Políticas]> Plantillas administrativas> MSS (Legacy): MSS: (SafeDllSearchMode) Habilite el modo de búsqueda de DLL seguro.Clave de registro correspondiente:
HKLM \ SYSTEM \ CurrentControlSet \ Control \ Session Manager \ SafeDLLSearchMode.Considere auditar un sistema protegido para corregir deficiencias de DLL utilizando herramientas como PowerUP en PowerSploit. No olvides bloquear el software malicioso y potencialmente peligroso, así como seguir las
recomendaciones de Microsoft .
Sistema: macOS
Derechos: usuario
Descripción: la técnica se basa en
vulnerabilidades en los algoritmos de búsqueda de biblioteca dinámica dylib en macOS y OS X. La conclusión es determinar el dylib que carga la aplicación atacada y luego colocar la versión maliciosa de dylib con el mismo nombre en el directorio de trabajo de la aplicación. Esto hará que la aplicación cargue dylib, que se encuentra en el directorio de trabajo del programa. En este caso, el Dylib malicioso se ejecutará con los derechos de acceso de la aplicación atacada.
Consejos de seguridad
: evite que los usuarios escriban archivos en directorios de búsqueda dylib. Audite las vulnerabilidades utilizando el
Dylib Hijacking Scanner de Objective-See.
Sistema: Windows, Linux, macOS
Derechos: usuario
Descripción: los opositores pueden aumentar los privilegios en el sistema atacado utilizando vulnerabilidades en el software.
Recomendaciones de protección: actualizaciones periódicas de software en todas las estaciones de trabajo protegidas, servidores, equipos de red y otros dispositivos conectados a la red protegida. Analice los tipos de amenazas, vulnerabilidades y programas de explotación que se pueden utilizar contra la organización protegida. También se recomiendan los sistemas de protección contra exploits, como el
Windows Defender Exploit Guard (WDEG) para Windows 10 o el
Enhanced Mitigation Experience Toolkit (EMET) para versiones anteriores de Windows.
h3
EWM Injection (Inyección de memoria de ventana adicional)Sistema: Windows
Derechos: Administrador, Sistema
Descripción: La técnica es el abuso de la memoria adicional de la ventana de Windows, la llamada Memoria de ventana adicional (EWM). El tamaño de EWM es de 40 bytes, adecuado para almacenar un puntero de 32 bits y se usa a menudo para indicar una referencia a los procedimientos. Los programas maliciosos durante la cadena de ataque pueden colocar un puntero a código malicioso en el EWM, que posteriormente se iniciará mediante el proceso de la aplicación infectada.
Recomendaciones de protección: dado que las técnicas de inyección EWM se basan en el abuso de las funciones de desarrollo del sistema operativo, los esfuerzos de protección deben estar dirigidos a evitar el lanzamiento de programas maliciosos y herramientas maliciosas. Es una buena práctica identificar y bloquear software potencialmente peligroso mediante AppLocker, incluir aplicaciones en la lista blanca o aplicar Políticas de restricción de software.
Sistema: Windows
Derechos: Usuario, Administrador
Descripción: La esencia de la técnica es la sustitución de archivos ejecutables que se inician automáticamente por varios procesos (por ejemplo, cuando el sistema operativo se inicia o en un momento determinado, si los derechos de los archivos ejecutables están configurados incorrectamente). Después de la suplantación de identidad, el archivo malicioso se lanzará con los derechos del proceso, por lo que si el proceso tiene un nivel de acceso más alto, el atacante podrá escalar los privilegios. En esta técnica, los atacantes pueden intentar manipular los archivos binarios del servicio de Windows.
Otra variante del ataque está asociada con la falta de algoritmos en el trabajo de los instaladores autoextraíbles. Durante el proceso de instalación, los instaladores a menudo descomprimen varios archivos útiles, incluidos .dll y .exe, en el directorio% TEMP%, sin embargo, es posible que no establezcan los permisos adecuados para restringir el acceso a los archivos desempaquetados, lo que permite a los atacantes realizar suplantación de archivos y, como resultado, aumenta los privilegios o evita el control de la cuenta, como algunos instaladores se ejecutan con privilegios extendidos.
Recomendaciones de protección: limite los privilegios de la cuenta para que solo los administradores puedan administrar los servicios e interactuar con los archivos binarios utilizados por los servicios. Deshabilite las opciones de escalado de privilegios UAC para usuarios estándar. La configuración de UAC se almacena en la siguiente clave de registro:
- [HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Policies \ System] .
Para rechazar automáticamente las solicitudes de escalada de privilegios, debe agregar una clave:
- "ConsentPromptBehaviorUser" = dword: 00000000.
Para controlar el trabajo de los instaladores, debe agregar una clave:
- "EnableInstallerDetection" = dword: 00000001 , que requerirá una contraseña para instalar programas.
Sistema: Windows
Derechos: Administrador, Sistema
Descripción: las funciones de la API de Windows generalmente se almacenan en archivos DLL. La técnica de conexión es redirigir las llamadas a las funciones API mediante:
- Procedimientos de enlace: procedimientos integrados en el sistema operativo que ejecutan código cuando se llaman varios eventos, por ejemplo, pulsaciones de teclas o mover el mouse;
- Modificaciones a la tabla de direcciones (IAT), que almacena punteros a funciones API. Esto le permitirá "engañar" a la aplicación atacada, forzándola a iniciar una función maliciosa;
- Cambio directo de función (empalme), durante el cual se cambian los primeros 5 bytes de la función, en lugar de que se inserta la transición a una función maliciosa u otra determinada por el atacante.
Al igual que las inyecciones, los atacantes pueden usar el enganche para ejecutar código malicioso, enmascarar su ejecución, acceder a la memoria del proceso atacado y aumentar los privilegios. Los atacantes pueden capturar llamadas API que incluyen parámetros que contienen datos de autenticación. El enganche generalmente es utilizado por rootkits para ocultar actividades maliciosas en el sistema.
Recomendaciones de protección: la interceptación de eventos en el sistema operativo es parte del funcionamiento normal del sistema, por lo que cualquier restricción de esta funcionalidad puede afectar negativamente la estabilidad de las aplicaciones legítimas, como el software antivirus. Los esfuerzos para evitar el uso de técnicas de intercepción deben centrarse en las etapas más tempranas de la cadena de ataque. Puede detectar actividad de enganche maliciosa al monitorear las llamadas a las funciones SetWindowsHookEx y SetWinEventHook, utilizando detectores de rootkit y analizando el comportamiento anómalo de los procesos.Sistema: Derechos de Windows : Administrador,Descripción del sistema : El mecanismo de Opciones de ejecución de archivos de imagen (IFEO) le permite ejecutar un depurador de programa en lugar de un programa, previamente especificado por el desarrollador en el registro:- HKLM \ Software \ Microsoft \ Windows NT \ CurrentVersion \ Opciones de ejecución de archivos de imagen / [ejecutable]
- HKLM \ SOFTWARE \ Wow6432Node \ Microsoft \ Windows NT \ CurrentVersion \ Image File Execution Options \ [ejecutable] , donde [ejecutable] es el binario ejecutable del depurador.
Al igual que las inyecciones, se puede abusar del valor [ejecutable] ejecutando código arbitrario para aumentar los privilegios u obtener un punto de apoyo en el sistema. Los programas maliciosos pueden usar IFEO para eludir la protección mediante el registro de depuradores que redirigen y rechazan diversas aplicaciones del sistema y de seguridad.Recomendaciones de protección: La técnica descrita se basa en el abuso de las herramientas de desarrollo de SO normales, por lo que cualquier restricción puede causar inestabilidad de software legítimo, por ejemplo, aplicaciones de seguridad. Los esfuerzos para evitar el uso de las técnicas de inyección de IFEO deben centrarse en las primeras etapas de la cadena de ataque. Puede detectar dicho ataque monitoreando procesos con Debug_process yDebug_only_this_process .Sistema: derechos de macOS :Descripción del administrador : La técnica consiste en cambiar los parámetros de los servicios de nivel de inicio del sistema: el Daemon de inicio, especificado en los archivos plist, por el atacante. Cuando se inicia el sistema, el proceso Lanzado carga los parámetros de servicios (daemons) de los archivos plist ubicados en los siguientes directorios:- / System / Library / LaunchDeamons;
- / Library / LaunchDeamons.
Launch Daemon se puede crear con privilegios de administrador, pero se ejecuta bajo la cuenta raíz, por lo que un atacante puede escalar privilegios. Los permisos de los archivos plist deben ser root: mientras que, sin embargo, el script o programa especificado en él puede tener permisos menos estrictos. Por lo tanto, un atacante puede modificar los archivos ejecutables especificados en plist, y así modificar los servicios actuales del sistema para asegurar el sistema o escalar privilegios. Consejos deseguridad: limite los privilegios del usuario para que solo los administradores autorizados puedan crear Launch Daemon. Considere monitorear cómo se crean los archivos plist en su sistema utilizando aplicaciones como KnockKnock.Sistema: Derechos de Windows : Administrador,Descripción del sistema : Nombre de acceso al sistema, los atacantes pueden crear nuevos servicios y configurarlos para que se inicien automáticamente. El nombre del servicio se puede enmascarar utilizando nombres específicos del sistema operativo. Los servicios se pueden crear con privilegios de administrador, pero se ejecutan en nombre del sistema. Los servicios se pueden crear desde la línea de comandos, usando herramientas de acceso remoto con interoperabilidad con la API de Windows, o usando herramientas de administración estándar de Windows y PowerShell.Recomendaciones de seguridad: limite los derechos de usuario para crear nuevos servicios para que solo los administradores autorizados puedan hacerlo. Aplicar AppLocker y la Política de restricción de software .Sistema: Derechos de Windows : Usuario, administrador, sistemaDescripción: La técnica de interceptar una ruta es colocar el archivo ejecutable en un directorio desde el cual la aplicación lo iniciará en lugar del archivo de destino. Un atacante puede usar los siguientes métodos:- Rutas inexistentes. Las rutas a los archivos ejecutables del servicio se almacenan en las claves de registro y pueden tener uno o más espacios, por ejemplo, C: \ Archivos de programa \ service.exe , si el atacante crea el archivo C: \ Program.exe en el sistema , Windows lo iniciará en lugar de procesar la ruta archivo objetivo de servicio.
- . PATH C:\example c:\Windows\System32 C:\example\net.exe , net, C:\example\net.exe , c:\Windows\System32\net.exe .
- (Search order hijacking). , Windows, , , . , «example.exe» cmd.exe net use. example.exe net.exe c:\Windows\System32\net.exe . , net.com net.exe, Windows net.com , PATHEXT.
La interceptación de orden de búsqueda de archivos también se utiliza para ejecutar archivos DLL utilizando la técnica de búsqueda de secuestro de archivos DLL .Recomendaciones de seguridad: las comillas indican las rutas especificadas en los archivos de configuración, los scripts, la variable PATH, la configuración del servicio y los accesos directos. Recuerde el orden de búsqueda de archivos ejecutables y use solo rutas completas. Limpie las claves de registro antiguas que quedan del software remoto para que no queden claves en el registro que apunten a archivos inexistentes. Establezca una prohibición de escritura por parte de los usuarios del sistema en el directorio raíz C: \ y los directorios del sistema de Windows, limite los permisos de escritura a los directorios con archivos ejecutables.Sistema: macOSDerechos: Usuario, AdministradorDescripción: Los atacantes pueden modificar archivos plist, indicando en ellos su propio código para su ejecución en el contexto de otro usuario. Los archivos de propiedades de plist ubicados en / Library / Preferences se ejecutan con privilegios elevados, y el plist de ~ / Library / Preferences se ejecuta con privilegios de usuario. Consejos de seguridad: evite que los archivos plist se modifiquen haciéndolos de solo lectura.Sistema: Derechos de Windows : Administrador,Descripción del sistema : Un atacante puede organizar la ejecución de una DLL arbitraria en nombre del Sistema cada vez que Windows se inicia utilizando el abuso de la configuración del Administrador de impresión (Spoolsv.exe). Para interactuar con los dispositivos de impresión, Spoolsv.exe utiliza los llamados monitores de puerto, estos son archivos DLL que utilizan comandos de bajo nivel para enviarlos a los dispositivos de impresión a través de una interfaz LAN, USB, LPT o COM. Las DLL anteriores se almacenan en C: \ windows \ system32 y se registran en el registro:HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ Print \ Monitors .Port Monitor se puede instalar utilizando la API AddMonitor o directamente editando la clave de registro anterior.Recomendaciones de protección: organice el bloqueo de software potencialmente peligroso y use herramientas de control de inicio de aplicaciones.Sistema: Windows, Linux, macOSDerechos: usuario, administrador, sistema, raízDescripción: La inyección de proceso es un método de ejecución de código arbitrario en el espacio de direcciones de un proceso vivo separado. Ejecutar código en el contexto de otro proceso le permite acceder a la memoria del proceso inyectado, los recursos del sistema / red y posiblemente privilegios elevados. Las inyecciones de proceso también se pueden utilizar para evitar la posible detección de actividad maliciosa por medios de seguridad. Las técnicas para implementar inyecciones en los procesos se basan en el abuso de varios mecanismos que aseguran el subprocesamiento múltiple de la ejecución del programa en el sistema operativo. Los siguientes son algunos enfoques para inyectar código en un proceso.Ventanas• Inyecciones de DLL. Se realizan escribiendo la ruta a la DLL maliciosa dentro del proceso y luego ejecutándola creando un subproceso remoto (Subproceso remoto: un subproceso que se ejecuta en el espacio de direcciones virtuales de otro proceso). En otras palabras, el malware escribe la DLL en el disco y luego usa una función como CreateRemoteTread, que llamará a la función LoadLibrary en el proceso inyectado.• Las inyecciones de PE (inyección ejecutable portátil) se basan en el abuso de las funciones de ejecución de memoria de los archivos de PE, como DLL o EXE. El código malicioso se escribe en el proceso sin escribir ningún archivo en el disco, y luego se ejecuta la ejecución utilizando el código adicional o creando una secuencia remota.• El secuestro de ejecución de subprocesos implica la inyección de código malicioso o rutas DLL directamente en el subproceso del proceso. Al igual que la técnica de proceso de vaciado, el flujo primero debe suspenderse.• La inyección en una inyección de llamada a procedimiento asincrónico (APC) implica la incrustación de código malicioso en la cola APC de un subproceso de proceso. Uno de los métodos de inyección APC, llamado "inyección Earle Bird", implica la creación de un proceso suspendido en el que se puede escribir y lanzar código malicioso en el punto de entrada del proceso a través de APC. AtomBombing es otra opción de inyección que usa APC para invocar código malicioso previamente escrito en la tabla global de átomos.• Las inyecciones de inyección Thread Local Storage (TLS) implican manipular punteros de memoria dentro de un archivo PE ejecutable para redirigir el proceso a código malicioso.Mac y Linux• Las variables de sistema LD_RPELOAD, LD_LIBRARY_PATH (Linux), DYLIB_INSERT_LIBRARIES (macOS X) o la interfaz de programación de aplicaciones (API) dlfcn se pueden usar para cargar dinámicamente una biblioteca (objeto compartido) en un proceso, que a su vez se puede usar para interceptar llamadas API desde Procesos en ejecución.• La llamada al sistema Ptrace se puede utilizar para conectarse a un proceso en ejecución y cambiarlo mientras se está ejecutando.• / proc / [pid] / mem proporciona acceso a la memoria del proceso y puede usarse para leer / escribir datos arbitrarios, sin embargo, este método rara vez se usa debido a la complejidad de su implementación.• La captura de VDSO (objeto compartido dinámico dinámico) le permite inyectar código mientras ejecuta binarios ELF manipulando los apéndices de código de linux-vdso.so.Los programas maliciosos generalmente usan la inyección de código en un proceso para acceder a los recursos del sistema, lo que permite a un atacante obtener un punto de apoyo en el sistema y realizar otros cambios en el entorno atacado. Las muestras más complejas pueden realizar inyecciones de procesos múltiples para dificultar su detección.Recomendaciones de protección:Los métodos para inyectar código en los procesos se basan en el abuso de las funciones normales del sistema operativo que pueden afectar directamente el funcionamiento inestable de software legítimo y productos de seguridad. Los esfuerzos para evitar el uso de técnicas de intercepción deben centrarse en las etapas más tempranas de la cadena de ataque. Use herramientas para bloquear software potencialmente peligroso, como AppLocker. Use Yama como medida preventiva contra la inyección de código en ptrace, limitando el uso de ptrace solo a usuarios privilegiados. Las medidas de seguridad adicionales pueden incluir el despliegue de módulos de seguridad del núcleo que proporcionan control de acceso avanzado y restricción de procesos. Dichas herramientas incluyen SELinux, grsecurity, AppArmor.Sistema: Derechos de Windows : Administrador,Descripción del sistema : cada vez que un objeto se mueve de un dominio a otro, se crea un nuevo SID, que se convierte en el objectSID principal. Los SID anteriores continúan almacenándose en la propiedad sIDHistory, lo que garantiza que se conservan los derechos que tenía el objeto antes de la migración entre dominios. Los atacantes con derechos de administrador pueden insertar SID recopilados previamente en el historial de SID para realizar una acción en nombre de grupos o cuentas de acceso más privilegiados, como los administradores de dominio.Recomendaciones de protección:En el sistema operativo Windows Server versión 2003 y superior, el filtrado de SID está habilitado de forma predeterminada, lo que implica eliminar o filtrar todos los SID excepto un dominio de confianza, pero esta opción puede deshabilitarse deliberadamente para permitir el acceso entre dominios.Los principales métodos para filtrar SID:• Deshabilitar SIDHistory en la configuración de confianza (trusts) entre bosques de dominio utilizando el comando: netdom trust / domain: / EnableSIDHistory: no ;• Aplicación de la cuarentena del filtro SID . Esto garantiza que un objeto que contenga un SID que no sea el dominio de confianza no puede autenticarse con el dominio de confianza. La cuarentena de filtro SID se aplica a fideicomisos externos ejecutando el comando:netdom trust / dominio: / cuarentena: sí .No se recomienda utilizar el filtrado SID entre dominios en el mismo bosque. Si el dominio en el bosque no es confiable, entonces no debe ser un miembro del bosque, en tal situación, primero debe dividir los dominios confiables y no confiables en bosques separados, y luego aplicar el Filtro SID para las confianzas entre bosques.Sistema: Derechos de Windows : Usuario, Administrador,Descripción del sistema : Utilidades como at, schtasks y Windows Task Scheduler pueden usarse para programar programas y scripts para que se ejecuten en una fecha y hora específicas. Se puede programar una tarea en un sistema remoto, siempre que se use RPC para la autenticación y la impresora y el uso compartido de archivos esté habilitado. La programación de tareas en un sistema remoto requiere privilegios de administrador. Un atacante podría usar la ejecución remota de código para obtener privilegios del sistema o iniciar un proceso con una cuenta específica.Recomendaciones de protección:Limite los privilegios del usuario. Usar herramientas, como el módulo PowerUP en PowerSploit, que se puede usar para encontrar debilidades en la resolución de tareas programadas Deshabilitar la capacidad de iniciar tareas en nombre del sistema, deshabilitar la opción " Permitir que los operadores del servidor programen tareas " en la política de seguridad y la configuración " Asignar derechos de usuario: aumentar la prioridad de programación "Sistema: Derechos de Windows : Administrador,Descripción del sistema : si los permisos de usuarios y grupos permiten cambiar los valores de las claves en las que se almacenan los parámetros del servicio en el registro de Windows, los atacantes pueden modificar directamente las claves en las que se almacenan las rutas a los archivos ejecutables para iniciar los servicios o utilizar varias herramientas de administración servicios: sc.exe, PowerShell o Reg. Los atacantes también pueden cambiar los parámetros relacionados con la falla del servicio, por ejemplo, FailureCommand, que indica un comando que se ejecutará en caso de una falla del servicio o daño intencional. Los parámetros de servicio se almacenan en HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ services .Recomendaciones de protección:Asegúrese de que los usuarios del sistema protegido no puedan cambiar las claves del registro que almacenan los parámetros de los componentes del sistema. Utilice todos los medios posibles para bloquear software potencialmente peligroso, por ejemplo, Windows AppLocker.Sistema: Linux, macOSDerechos: Descripción del usuario:Setuid y Setgid son marcas de permiso en sistemas Unix que permiten al usuario ejecutar archivos ejecutables con los derechos del propietario o grupo del archivo ejecutable. Si la aplicación debe ejecutarse como root, en lugar de crear una entrada en el archivo sudo, el usuario puede especificar el indicador Setuid o Setgid. Los opositores pueden abusar de los indicadores Setuid y Setgid para realizar un escape de shell (cuando una aplicación de consola usa un archivo abierto en otra aplicación) o aprovechar la vulnerabilidad de la aplicación con los indicadores Setuid y Setgid y ejecutar código en el contexto de varios usuarios. Al ver los atributos del archivo con el comando ls -l, los indicadores anteriores se indican con el símbolo "s" en lugar de "x". La utilidad chmod puede establecer los indicadores Setuid y Setgid utilizando el comando chmod 4777 [archivo]o chmod u + s [archivo] .Recomendaciones de protección: mantenga al mínimo el número de programas con los indicadores Setuid y Setgid establecidos.Sistema: derechos de macOS :Descripción del administrador : Un atacante puede usar el mecanismo obsoleto, pero aún trabajando en macOS Sierra, mecanismo de inicio automático para aplicaciones que usan StartupItems para configurar el lanzamiento de su código con privilegios de root en el momento del arranque. StartupItems es un directorio en / Library / Startupitems , un script de comando y un archivo de propiedades StartupParameters.plist. El script y el archivo de propiedades deben estar en la parte superior de la jerarquía: / Library / Startupitems / [MyStartupItem] .Recomendaciones de protección: dado que el mecanismo StartupItems es obsoleto, la prohibición de escribir en el directorio / Library / Startupitems / le permitirá evitar la creación de elementos de inicio.Sistema: Linux,derechos de macOS :Descripción del usuario : los opositores pueden aprovechar las fallas de configuración de Sudo para ejecutar comandos en nombre de otros usuarios o generar procesos con mayores privilegios. Las opciones de Sudo se almacenan en el archivo / etc / sudoers , se requieren privilegios elevados para editar este archivo. El archivo sudoers describe qué comandos pueden ejecutar los usuarios en nombre de otros usuarios o grupos, esto permite a los usuarios trabajar la mayor parte del tiempo con privilegios mínimos y solo aumentar los privilegios si es necesario. Sin embargo, en el archivo sudoers, puede especificar usuarios para los que no se solicitará una contraseña: nombre de usuario ALL = (ALL) NOPASSWD: ALL .Consejos de seguridad: el archivo sudoers debe editarse para que los usuarios siempre ingresen una contraseña al ejecutar sudo. Auditd en Linux puede generar una advertencia siempre que las ID de usuario reales y efectivas no coincidan (esto sucede cuando el usuario usa sudo).Sistema: Linux, macOS
Derechos: usuario
Descripción: Varios malware, como
OCX Proton Malware , pueden abusar de la configuración de sudo para ejecutar código como root sin ingresar una contraseña. Como el sudo toolkit fue creado para la administración del sistema, tiene algunas funciones útiles, como
timestamp_timeout : este parámetro almacena la cantidad de tiempo en minutos entre los inicios de sudo durante el cual el comando no solicitará la contraseña de root. Sudo ha podido almacenar las credenciales en la memoria caché durante algún tiempo. La marca de tiempo del último inicio de Sudo se almacena en
/ var / db / sudo y se utiliza para determinar el tiempo de espera especificado. Además, hay una variable
tty_tickets que procesa cada nueva sesión de terminal de forma aislada, por lo que un tiempo de espera en una instancia de la consola no afectará el tiempo de espera en otra instancia.
Recomendaciones de protección: establezca el parámetro
timestamp_timeout = 0 para que el sistema requiera una contraseña de root cada vez que se ejecute sudo. Active el parámetro
tty_tickets para evitar que el ataque se implemente mediante sesiones de línea de comandos.
Descripción: los atacantes pueden robar las credenciales de una cuenta de usuario o servicio específica mediante credenciales de acceso, capturar credenciales en el proceso de inteligencia mediante ingeniería social. Las credenciales comprometidas se pueden usar para omitir los sistemas de control de acceso y obtener acceso a sistemas remotos y servicios externos, como VPN, OWA, Escritorio remoto, o para obtener privilegios elevados en sistemas y áreas específicos de la red. Si el escenario es exitoso, los atacantes pueden rechazar el malware para que sea difícil de detectar. Además, los atacantes pueden crear cuentas usando nombres y contraseñas predefinidos para mantener el acceso de respaldo en caso de intentos fallidos de usar otros medios.
Recomendaciones de protección: aplique una política de contraseña, siga las recomendaciones para diseñar y administrar una red corporativa para limitar el uso de cuentas privilegiadas en todos los niveles administrativos. Controles regulares de las cuentas de dominio y locales y sus derechos para identificar aquellos que podrían permitir a un atacante obtener un amplio acceso. Monitoreo de la actividad de la cuenta utilizando sistemas SIEM.
Sistema: Windows, Linux, macOS
Descripción: un atacante puede utilizar Web Shell como puerta de acceso para acceder a su red o acceso redundante al sistema atacado, como un mecanismo de respaldo para proteger en caso de detección y bloqueo de los canales de acceso principales al entorno atacado.
Recomendaciones de protección: asegúrese de que sus servidores web externos se actualicen regularmente y de que no haya vulnerabilidades conocidas que permitan a los atacantes cargar un archivo o script en el servidor con posterior ejecución. Verifique que los permisos de las cuentas y grupos con derechos de administración del servidor no coincidan con las cuentas en la red interna que se pueden usar para iniciar sesión en el servidor web, iniciar el shell web o anclar al servidor web. Web Shell es difícil de detectar porque no inician conexiones y su lado del servidor puede ser pequeño e inofensivo, por ejemplo, la versión PHP del shell de China Chopper Web parece una línea:
[? php eval ($ _POST ['contraseña']);]