Las vulnerabilidades del sistema
Aspetos generales
Los sistemas operativos se están volviendo cada vez más sofisticados y sencillos para el usuario. Los mecanismos subyacentes, que a veces son muy complejos, están ocultos para facilitar el acceso a la herramienta informática al mayor número posible de personas. Desgraciadamente, esta "simplificación" se suele lograr a costa de la seguridad y el rendimiento.
Aunque en los últimos años los diseñadores, conscientes de los problemas relacionados con la seguridad y la protección de datos, han intentado mejorar sus aplicaciones, los usuarios, en cambio, suelen seguir siendo el eslabón más débil. Mal entrenados o informados, poco acostumbrados a restricciones de seguridad, como confirmar o introducir contraseñas, a menudo prefieren desactivar las protecciones existentes o ignorar los mensajes de advertencia. Así, combinado con acceso permanente a Internet, muchas de las máquinas de los usuarios comunes se transforman en máquinas zombi y se utilizan para llevar a cabo ataques cuya escala y ocultación son proporcionales al número de máquinas utilizadas.
Pero la observación no termina ahí: originalmente un simple conjunto de aparatos electrónicos, los elementos de nuestra vida diaria como teléfonos móviles, frigoríficos, televisores, cámaras, etc. ahora disponen de sistemas...
Vulnerabilidades físicas
1. Introducción
A menudo, asegurar el acceso al equipo informático no es una prioridad para las empresas o administraciones. Para convencerse de esto, solo hay que hacer la prueba y ver cuán fácilmente, bajo algún pretexto, una persona fuera de un departamento puede acceder a los ordenadores u otros recursos informativos del personal.
De hecho, por mucho que el acceso a servidores, routeres y otros equipos de administración informática este, en empresas medianas o grandes, encerrado en una sala especializada, los ordenadores operativos o administrativos son relativamente accesibles.
Cuando se plantea la pregunta sobre el acceso al equipo, normalmente ponen el problema en perspectiva y responden que no tienen, por ejemplo, acceso a información confidencial, que la empresa ha estado operando así durante años y que nunca ha experimentado el menor problema. A veces incluso se evita la pregunta bajo el pretexto de que nunca se ha proporcionado información ni formación.
En las pequeñas empresas, los ordenadores suelen ser muy accesibles y la misma cuenta de usuario se suele usar por todos, con una sola contraseña (¡cuando la hay!).
Sin embargo, el acceso físico (incluso restringido) a un ordenador puede tener consecuencias desastrosas para una empresa.
2. Lockpicking
Es imposible abordar el tema del acceso físico a un ordenador sin mencionar el lockpicking.
Hay muchos sitios que explican todas las técnicas que se pueden usar, así como las herramientas necesarias. Estos se pueden hacer a mano o comprarlos en Internet.

3. Acceso físico directo al ordenador
Hay dos posibles escenarios al acceder físicamente a una máquina:
-
el ordenador está apagado.
-
el ordenador está encendido.
a. Acceso a un ordenador apagado con una BIOS/UEFI protegida
Anteriormente, algunas BIOS, como las de Award anteriores a la versión 4.51, tenían contraseñas universales que permitían el acceso directo a la BIOS y las listas que contenían estas contraseñas estaban disponibles en Internet.
Otros fabricantes, como Toshiba, permitían el acceso a la BIOS sin verificación de contraseña si se recuperaba una señal enviada por la salida del puerto paralelo. Otros esperaban a que se pulsara una tecla o una secuencia de teclas, como...
El arranque
El arranque es una fase crítica. El sistema operativo es vulnerable para establecer la seguridad. Esto se debe a que no hay garantía de que sus archivos no hayan sido manipulados o que el malware no se haya ejecutado antes de que se le haya dado el control.
1. Vulnerabilidad de utilidades de accesibilidad
En Windows 10, hay un fallo que es relativamente fácil de explotar. Se basa en utilidades de accesibilidad, como el teclado virtual osk.exe.
Esto está disponible en la pantalla de inicio de sesión. El objetivo será reemplazarlo por el binario cmd.exe, que permitirá abrir una consola de administración.
Tiene que empezar con un liveCD de Linux, por ejemplo, Kali Linux. La partición de Windows estará montada directamente y visible en el escritorio (volumen xx GB). Si no, use la utilidad mount para montar la partición (sda2 en el ejemplo).
Renombre el archivo osk.exe a osk.exe.bak:
cd /mnt/sda2/Windows/System32
mv osk.exe osk.exe.bak
Copie el archivo cmd.exe bajo el nombre osk.exe:
cp cmd.exe osk.exe
Reinicie el ordenador normalmente arrancando Windows 10.
Haga clic en el botón de ergonomía y seleccione el teclado virtual, que abre una consola con permisos de sistema.
En esta consola, cree un nuevo usuario (laurent):
net user laurent P@ssword /add
net localgroup Administrators laurent /add
Cierre la ventana y espere a que la ventana de inicio se actualice.
El usuario recién creado aparecerá. Solo tiene que iniciar sesión con este último para ser administrador de la estación de trabajo.
Una de las soluciones es activar BitLocker para evitar la modificación offline de los archivos del sistema. Sin embargo, en Windows 11, se detecta este exploit gracias a Windows Defender, lo que hace que este método quede obsoleto en sistemas actualizados.
2. Abuso de modos de arranque degradados
Un sistema operativo debe poder arrancar para poder repararse, lo que plantea algunos problemas de seguridad. Por ejemplo, en GNU/Linux, es posible cambiar mediante el cargador de arranque.
El GRUB en GNU/Linux es lo que se llama un bootloader, es decir, permite elegir entre arrancar varios sistemas instalados en la máquina. Por ejemplo, permitirá elegir entre iniciar Linux o Windows.

El bootloader GRUB
De hecho, es fácil editar el GRUB simplemente escribiendo...
Contraseñas
1. Introducción
Actualmente, las contraseñas son la forma más común de controlar el acceso a recursos restringidos. Se han utilizado durante siglos, especialmente en el ámbito militar. Además, intervienen en muchos niveles: al arrancar el ordenador, al acceder al correo electrónico, etc.
En informática, una contraseña es una secuencia de caracteres, no necesariamente compuesta solo por números y letras, con o sin significado.
2. Complejidad
La calidad de una contraseña se define por su complejidad a adivinar, encontrar y por su longitud. Es importante entender que una contraseña no garantiza absolutamente la protección. Solo permite ralentizar, más o menos eficazmente, a un atacante. De hecho, la prueba de todas las combinaciones permitirá finalmente obtener acceso al sistema protegido.
Tomemos un caso real: la pérdida del código de un candado de bicicleta, compuesto por tres carretes numerados del 0 al 9. Por tanto, cada carrete tiene 10 valores. Los tres carretes permiten entonces 10*10*10 posibilidades, es decir, 1000. Dado que las pruebas sucesivas de estas 1000 combinaciones se pueden realizar en un tiempo razonable, el candado se puede desbloquear sin conocer el código.
En informática, el principio es similar, pero con mayor complejidad:
-
la automatización es posible,
-
un ordenador irá mucho más rápido y una red de ordenadores más rápido aún.
Sin embargo, la contraseña puede ser mucho más larga y hay más caracteres posibles. La tarea no es tan fácil porque el número de posibilidades se vuelve rápidamente gigantesco.
Pero, por comodidad, la mayoría de la gente elige una contraseña que tenga un significado en su idioma, un significado para ellos, como el nombre de pila del cónyuge. En otras palabras, una secuencia de palabras que se puede extraer de un diccionario. Las opciones son muy limitadas y el uso del diccionario adecuado permite encontrar rápidamente la contraseña.
En este nivel, las recomendaciones son las siguientes: una contraseña debe ser lo suficientemente larga, al menos 14 caracteres y consistir en caracteres alfanuméricos, números, letras, mayúsculas, minúsculas y símbolos como #, %, etc.
Los estudios parecen mostrar...
Windows
1. Gestión de usuarios
Un usuario es una representación virtual de una persona física, almacenada en el ordenador, con información asociada como su apellido, nombre, dirección y contraseña. Para interactuar con el sistema, el usuario se debe autenticar con su usuario virtual: introduzca su nombre de usuario y contraseña antes de poder hacer nada. Las acciones se realizan bajo esta identidad y están limitadas por los permisos asignados a ella.
Existen usuarios especiales en los sistemas, sin conexión con una persona física. Estos son solo usuarios virtuales que permiten enmarcar programas para limitar sus permisos, por razones de seguridad: por ejemplo, no permitir el acceso a una línea de comandos, la red, la interacción con la interfaz gráfica, etc.
Windows gestiona a sus usuarios mediante un archivo SAM (Security Account Manager). Tradicionalmente, los usuarios se gestionan gráficamente en la consola de gestión del sistema, accesible mediante el comando compmgmt.msc.

Usuarios de Windows
Los usuarios también se pueden gestionar desde la línea de comandos, mediante comandos, scripts VBS o JScript, y mediante PowerShell.
-
Crear del usuario:
net user Laurent
-
Añadir al usuario "Laurent" al grupo de "marketing" sin eliminarlo del grupo original:
net localgroup marketing Laurent /add
-
Eliminar el usuario "Laurent", así como de los archivos contenidos en su directorio personal:
net user Laurent /delete
Consulte la documentación de Windows para más información.
En lugar de usar nombres (que no son únicos), el sistema operativo Windows utiliza SID (Security Identifiers) para identificar entidades que realizan acciones.
Los SID son identificadores únicos alfanuméricos: SID = S1-N1-N2-N3-ID.
-
S1: el grupo al que pertenece el objeto,
-
N1-N2-N3: identificador del "dominio",
-
ID: el identificador único del objeto.
Para ver los SID, es posible utilizar PSGetSid de Mark Russinovich. La suite completa de "Sysinternals Suite" también es muy útil para los administradores de Windows.

Ejemplo de un SID de máquina en Windows

Ejemplo de SID de usuario en Windows
Cada sistema/dominio tiene un administrador.
-
Una cuenta de administrador no se puede bloquear ni eliminar, pero sí puede cambiar de nombre.
-
La cuenta de administrador...
Linux
1. Gestión de usuarios
La gestión de usuarios en Linux se basa principalmente en un conjunto de archivos y comandos para crear, modificar y eliminar cuentas de usuario, así como en gestionar sus permisos.
/etc/passwd: contiene información básica del usuario (nombre de usuario, UID, GID, directorio personal, shell, etc.).

Usuarios de Linux
-
usuario: nombre de usuario
-
x: contraseña (almacenada en /etc/shadow)
-
1001: UID (identificador único de usuario)
-
1001: GID (identificador del grupo principal)
-
/home/usuario: directorio home
-
/bin/sh: shell por defecto
Aunque es posible editar este archivo con un editor de texto, se recomienda utilizar herramientas dedicadas para simplificar la gestión del usuario. Para la sintaxis, consulta el manual de herramientas: man useradd, man usermod, man userdel desde un terminal.
-
Creación del usuario "Laurent", con un directorio personal dentro de /home/Laurent y un shell por defecto /bin/bash:
useradd -m -s /bin/bash Laurent
-
Cambio del shell del usuario "Laurent" a /bin/zsh:
usermod -s /bin/zsh Laurent
-
Eliminación del usuario "Laurent" así como de los archivos contenidos en su directorio personal:
userdel -r Laurent
-
Visualización de las credenciales del usuario "Laurent", como sus UID y GID, así como los grupos a los que pertenece:
id Laurent
2. Gestión de grupos
Los grupos se gestionan en el archivo de texto /etc/group y también existen herramientas de gestión disponibles:
-
groupadd: añadir un grupo.
-
groupmod: modificar un grupo.
-
GroupDel: eliminar un grupo.
-
gpasswd: gestionar usuarios en un grupo.
3. Asignación de permisos
En GNU/Linux, todo es un archivo. Un dispositivo y una carpeta se manipulan de esta manera. Un archivo tiene un propietario y un grupo al que pertenece. El propietario se ve afectado por el comando chown (change owner), el grupo pertenece a chgrp (change group).
-
Para cambiar el propietario:
chown pierre archivo.txt
-
Para cambiar el grupo:
chgrp desarrolladores archivo.txt
Para hacer ambas cosas de una vez:
chown pierre:desarrolladores archivo.txt
Los otros permisos se establecen con el comando chmod. Es necesario definir los permisos de tres entidades: el propietario u, el grupo g y el otro o. "Otros" es cualquier usuario que no sea el propietario o miembro del grupo. Cada entidad puede tener derecho de lectura r, escritura...
macOS
1. Gestión de usuarios
Vaya a Apple - Ajustes del sistema, luego a Usuarios y grupos. Puede ser necesario desbloquear el panel haciendo clic en el candado situado en la esquina inferior izquierda e introduciendo la contraseña de administrador.
Para añadir y eliminar una cuenta de grupo o usuario, se deben utilizar los botones + y - respectivamente. En caso de una adición, simplemente seleccione el tipo de cuenta de la lista desplegable Nuevos: grupo, administrador o usuario simple. Tenga en cuenta que es posible activar el cifrado del directorio personal para evitar que sus archivos sean leídos desde otra cuenta de usuario o sistema operativo.

Usuarios en macOS
Por supuesto, puede realizar todas estas tareas desde la línea de comandos con la herramienta de gestión de directorios DSCL.
Como root:
Crear una nueva entrada para el usuario "laurent" bajo /Users:
dscl . create /Users/laurent
Definir el entorno de usuario:
dscl . create /Users/laurent UserShell /bin/bash
Crear e inicializar el nombre completo del usuario:
dscl . create /Users/laurent RealName "Laurent"
Crear e inicializar el identificador único del usuario:
dscl . create /Users/laurent UniqueID 505
Crear e inicializar el grupo principal del usuario:
dscl . create /Users/laurent PrimaryGroupID 1000
Crear e inicializar el directorio principal del usuario:
dscl . create /Users/laurent NFSHomeDirectory /Local/Users/laurent
Crear la contraseña del usuario:
dscl . passwd /Users/laurent PASSWORD
Añadir al usuario al grupo de gestión:
dscl . append /Groups/admin GroupMembership laurent
Para más información, consulta la página de ayuda de DSCL.

Creación de un usuario en macOS
2. Gestión de grupos...
Explotación de vulnerabilidades en sistemas operativos
Una vulnerabilidad es un fallo en un sistema informático, aplicación o red, generalmente debido a un error de diseño o implementación, que puede exponer el sistema a riesgos de seguridad. Cuando se descubre una vulnerabilidad, se identifica, se clasifica según su gravedad y se publica como CVE (Common Vulnerabilities and Exposures). Los atacantes pueden explotar estas vulnerabilidades para comprometer la seguridad, integridad o confidencialidad de los datos.
El siguiente enlace permite ver las vulnerabilidades más recientes en Windows 10: https://www.cvedetails.com/vulnerability-list/vendor_id-26/product_id-32238/Microsoft-Windows-10.html
Existen muchas herramientas que se pueden usar para probar y explotar vulnerabilidades en diferentes sistemas operativos y plataformas. Entre los más conocidos está el framework Metasploit (MSF).
Para usar una herramienta como MSF, necesita entender los siguientes conceptos:
-
Exploit: este es un programa diseñado para explotar una vulnerabilidad.
-
Payload: es un programa que permite interactuar con el sistema objetivo para tomar el control o desestabilizarlo. Meterpreter es uno de los más populares, permite crear, editar, eliminar, descargar archivos desde o hacia la máquina objetivo, entre otras cosas. Permite capturar pulsaciones de teclado, congelar el fondo de pantalla y eliminar o crear procesos.
-
Post: este es un módulo adicional utilizado después de la explotación de la vulnerabilidad para recuperar evidencias o cambiar a otras máquinas de la red (pivoting).
Metasploit ya está instalado en Kali, pero así es como instalar Metasploit en Debian:
# cd /opt
curl https://raw.githubusercontent.com/rapid7/metasploit-omnibus/
master/config/templates/metasploit-
framework-wrappers/msfupdate.erb > msfinstall && \
chmod 755 msfinstall && \
./msfinstall
# msfupdate
MSF utiliza una base de datos para almacenar los resultados del reconocimiento. Por tanto, se debe inicializar:
#service postgresql start
#msfdb init
msfdb init
[+] Starting database
[+] Creating database user 'msf'
Indicar la contraseña para el nuevo rol:
[+] Creating databases 'msf'
[+] Creating databases 'msf_test'...Big Data y privacidad
El ecosistema Windows, especialmente desde el lanzamiento de Windows 10, ha planteado muchas preguntas sobre la recopilación de datos y la privacidad del usuario. En su guía "Restringir la recogida de datos en Windows 10" publicada en 2017, ANSSI ofrece recomendaciones para configurar el sistema operativo con el fin de limitar la recogida de datos por parte del editor. Microsoft afirma que diseñó su sistema operativo con dos principios fundamentales de privacidad: optimizar el rendimiento para el usuario a través de los datos recopilados y proporcionar transparencia y control sobre la información recopilada a los usuarios. Sin embargo, la realidad es más matizada y plantea varios problemas para los profesionales de la ciberseguridad y los administradores de sistemas.
Un estudio experimental ha destacado diferencias significativas entre instalar un Windows 10/11 e instalar un Windows XP. Windows 10/11, por defecto, se comunica extensamente con servidores de Microsoft u otros dominios como Google API, Akamai, TrustedSource, ScorecardResearch y OneTrust. Mientras que Windows XP requiere dos áreas de Microsoft, a saber, download.windows-update.com y www.update.microsoft.com
Estos intercambios incluyen comunicaciones con servicios como Bing, OneDrive y Cortana, así como conexiones no cifradas para descargar información de la red MSN. En la práctica, el uso de los servicios...
Conclusión
Podría ser peligroso dar acceso libre a su ordenador. Ya sea robo de contraseñas o inyección de malware, todo es posible siempre que se autorice el acceso a la máquina. Existen muchas otras prácticas para recuperar datos de una máquina físicamente accesible, pero este capítulo ofrece una visión general de los métodos más comúnmente utilizados.
Lo importante es ser conscientes de este problema y respetar las siguientes reglas de sentido común:
-
Restringir el acceso físico a nuestra máquina tanto como sea posible.
-
Prohibir el arranque en cualquier cosa que no sea el disco duro.
-
Proteger la BIOS de nuestro equipo y poner una contraseña en el arranque.
-
Desconectar nuestro ordenador durante breves periodos de ausencia o apagarlo durante largos periodos de tiempo.
-
Tener una contraseña que incluya una noción de complejidad (alfanumérico + caracteres especiales) y una longitud mínima de 14 caracteres.
-
Priorizar la autenticación multifactor.
-
Utilizar un sistema de cifrado de datos confidenciales.
-
Asegurarse de que los sistemas, aplicaciones y protecciones (antivirus/edr) estén actualizados.
-
Evitar todos los mecanismos automáticos de montaje de dispositivos.
-
Virtualizar.
-
Separar permisos.
-
Informar y formar a los usuarios.
Respetar estas normas dificultará el acceso a datos sensibles...