¿Qué son los permisos inseguros en binarios en Linux?

| Última modificación: 5 de diciembre de 2024 | Tiempo de Lectura: 3 minutos

Algunos de nuestros reconocimientos:

Premios KeepCoding

¿Sabes qué son los permisos inseguros en binarios en Linux? Los binarios en Linux tienen definidos los permisos relacionados con lo que pueden o no hacer y, en ocasiones, se pueden identificar capacidades adicionales a las que se deberían tener en algunos binarios.

Para realizar este análisis se pueden usar diferentes herramientas, como getcap, setcap y setuid. Veamos cómo funcionan estas herramientas en los permisos inseguros en binarios en Linux.

permisos inseguros en binarios en Linux

Herramientas en los permisos inseguros en binarios en Linux

Las herramientas en los permisos inseguros en binarios en Linux son utilidades que ayudan a identificar y corregir problemas de seguridad relacionados con los permisos de archivos binarios en un sistema operativo Linux.

En Linux, los permisos de archivo determinan quién puede acceder, leer, escribir o ejecutar un archivo. Un archivo binario es un archivo ejecutable que contiene código del programa. Si los permisos de un archivo binario no se establecen correctamente, puede haber riesgos de seguridad, como permitir a usuarios no autorizados ejecutar o modificar el archivo.

Las herramientas en los permisos inseguros en binarios están diseñadas para buscar archivos binarios con permisos inapropiados y notificar al administrador del sistema sobre los posibles problemas de seguridad. Algunas de estas herramientas también pueden corregir automáticamente los permisos incorrectos.

Getcap

El comando getcap en Linux se utiliza para ver las capacidades almacenadas en un archivo o directorio. Las capacidades de archivo son atributos especiales que permiten que ciertos programas realicen operaciones específicas sin requerir los privilegios completos de root (superusuario). Esto se conoce como ejecución con capacidad elevada.

Las capacidades de archivo forman parte del modelo de seguridad de Linux, llamado Linux Capabilities, que divide los privilegios en unidades más pequeñas y granulares. Al utilizar las capacidades, se le puede conceder a un programa acceso privilegiado solo para las operaciones que requiere, en lugar de otorgarle acceso de superusuario completo.

🔴 ¿Quieres entrar de lleno a la Ciberseguridad? 🔴

Descubre el Ciberseguridad Full Stack Bootcamp de KeepCoding. La formación más completa del mercado y con empleabilidad garantizada

👉 Prueba gratis el Bootcamp en Ciberseguridad por una semana

El comando getcap muestra las capacidades almacenadas en un archivo o directorio específico. Su sintaxis básica es la siguiente:

//permisos inseguros en binarios en Linux
getcap archivo_o_directorio

Por ejemplo, para ver las capacidades de un archivo llamado “ejemplo.bin”, puedes ejecutar:

//permisos inseguros en binarios en Linux
getcap ejemplo.bin

El comando mostrará la lista de capacidades asignadas al archivo, si las hay.

En este otro ejemplo vemos cómo se haría la identificación de capacidades:

//permisos inseguros en binarios en Linux
/usr/bin/getcap -r
/usr/bin

Setcap

El comando setcap en Linux se utiliza para establecer las capacidades en un archivo o programa específico. Permite asignarle capacidades especiales a un archivo ejecutable sin otorgarle privilegios completos de root.

Las capacidades de archivo, como hemos mencionado anteriormente, son atributos especiales que permiten que ciertos programas realicen operaciones específicas sin necesitar privilegios completos. El comando setcap se utiliza para asignar esas capacidades a un archivo ejecutable, de forma que pueda acceder a recursos o realizar operaciones restringidas.

La sintaxis básica del comando setcap es la siguiente:

//permisos inseguros en binarios en Linux
setcap capacidad=estado archivo_ejecutable

Donde:

  • capacidad es el nombre de la capacidad que se desea asignar.
  • estado puede ser + para habilitar la capacidad o - para deshabilitarla.
  • archivo_ejecutable es el archivo al que se asignarán las capacidades.

Por ejemplo, si se desea asignar la capacidad CAP_NET_BIND_SERVICE a un archivo ejecutable llamado servidor, puedes ejecutar el siguiente comando:

//permisos inseguros en binarios en Linux
setcap CAP_NET_BIND_SERVICE=+ servidor

Esto permitirá que el archivo servidor enlace servicios a puertos de red de bajo número sin requerir privilegios de superusuario.

También podemos hacer edición de capacidades, ya sea eliminar o añadir una capacidad, con los siguientes comandos:

//permisos inseguros en binarios en Linux
/usr/bin/setcap -r /bin/ping
/usr/bin/setcap cap_net_raw+p /bin/ping

Setuid

Otra de las propiedades importantes en la identificación de permisos inseguros en binarios en Linux es el Setuid. Veamos algunas capacidades interesantes de este comando:

cap_dac_read_search #Leer cualquier cosa
cap_setuid+ep #setuid

Ahora veamos un ejemplo de explotación:

$sudo /usr/bin/setcap cap_setuid+ep /usr/bin/python2.7
$python2.7 -c 'import os; os.setuid (0); os.system ("/bin/sh")'

Ahora que hemos visto algunas formas de identificar o acceder a permisos inseguros en binarios en Linux, debemos tener en cuenta que esto solo se puede hacer con permisos de superusuario y siempre con fines éticos.

Para formarte de manera íntegra en intensiva en todos los ámbitos de la seguridad informática y convertirte en un gran experto en pocos meses, nuestro Bootcamp Ciberseguridad es perfecto. Nuestros profesores expertos te enseñarán todo lo necesario a nivel teórico y práctico para impulsar tu carrera IT. ¡Entra ya para pedir información y transforma tu vida!

Carlos Cilleruelo

CEO and co-founder of Byron Labs & Coordinador del Bootcamp en Ciberseguridad.

Posts más leídos

¡CONVOCATORIA ABIERTA!

Ciberseguridad

Full Stack Bootcamp

Clases en Directo | Profesores en Activo | Temario 100% actualizado