Merged

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 346

Traducido del inglés al español - www.onlinedoctranslator.

com
kali linux
Reveló
Dominar las pruebas de penetración
Distribución (2021)
kali linux
Reveló
Dominar las pruebas de penetración
Distribución (2021)

de Raphaël Hertzog, Jim


O'Gorman, Mati Aharoni y Joe
O'Gorman
Kali Linux revelado

Copyright © 2021 Raphaël Hertzog, Jim O'Gorman, Mati Aharoni y Joe O'Gorman

Este libro tiene una licencia Creative Commons Attribution-ShareAlike 3.0 Unported.
mihttps://creativecommons.org/licenses/by-sa/3.0/
Algunas secciones de este libro toman prestado contenido del "Manual del administrador de Debian, Debian Jessie from
Discovery to Mastery" escrito por Raphaël Hertzog y Roland Mas, que está disponible aquí:

mihttps://debian-handbook.info/browse/stable/
A los efectos de la licencia CC-BY-SA, Kali Linux Revealed es una adaptación del Manual del administrador de
Debian.
"Kali Linux" es una marca comercial de Offensive Security. Cualquier uso o distribución de este libro, modificado o no, debe cumplir
con la política de marcas registradas definida aquí:

mihttps://www.kali.org/trademark-policy/
Todos los derechos no otorgados explícitamente anteriormente están

reservados. ISBN: 978-0-9976156-0-9 (tapa blanda)

Presione OffSec
230 Park Ave, 3.er piso Oeste de
Nueva York NY 10169
EE.UU

www.ofensiva-seguridad.com

Número de control de la Biblioteca del Congreso: 2017905895

La información de este libro se distribuye "tal cual", sin garantía. Si bien se han tomado todas las precauciones en la
preparación de este trabajo, ni los autores ni OffSec Press serán responsables ante ninguna persona o entidad con
respecto a cualquier pérdida o daño causado o presuntamente causado directa o indirectamente por la información
contenida en él. .

Debido a la naturaleza dinámica de Internet, las direcciones web o los enlaces contenidos en este libro pueden haber cambiado
desde la publicación y es posible que ya no sean válidos.

Impreso en los Estados Unidos de América.


Tabla de contenido

1. Acerca de Kali Linux 1


1.1 Un poco de historia. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.2 Relación con Debian. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.2.1 El flujo de paquetes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.2.2 Manejando la diferencia con Debian. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.3 Propósito y casos de uso. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.4 Características principales de Kali Linux ........................................... 8
1.4.1 Un sistema vivo ............................................... 8
1.4.2 Modo forense .............................................. 8
1.4.3 Un núcleo de Linux personalizado. .......................................... 9
1.4.4 Completamente personalizable. ........................................ 9
1.4.5 Un sistema operativo confiable. ...................................... 9
1.4.6 Utilizable en una amplia gama de dispositivos ARM. ................................. 10
1.5 Políticas de Kali Linux. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.5.1 Servicios de red deshabilitados por defecto ................................... 10
1.5.2 Una colección seleccionada de aplicaciones .................................... 10
1.6 Resumen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2. Primeros pasos con Kali Linux 13
2.1 Descarga de una imagen ISO de Kali . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.1.1 Dónde descargar. ........................................... 14
2.1.2 Qué descargar. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.1.3 Verificación de integridad y autenticidad. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
Confiar en el sitio web protegido por TLS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
Confiar en Web of Trust de PGP. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.1.4 Copia de la imagen en un DVD-ROM o llave USB .............................. 19
Creación de una unidad USB Kali de arranque en Windows ............................. 19
Creación de una unidad USB Kali de arranque en Linux............................... 21
Creación de una unidad USB Kali de arranque en OS X/macOS. . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.2 Arrancar una imagen ISO de Kali en modo en vivo .................................. 24
2.2.1 En una computadora real ............................................ 24
2.2.2 En una Máquina Virtual ............................................ 24
Observaciones preliminares .......................................... 25
caja virtual.
.............................................. 25
VMware Estación de trabajo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
2.3 Resumen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
3. Fundamentos de Linux 47
3.1 ¿Qué es Linux y qué hace? ................................... 48
3.1.1 Hardware de conducción. ............................................ 48
3.1.2 Unificación de sistemas de archivos ........................................... 49
3.1.3 Procesos de gestión ............................................ 50
3.1.4 Gestión de derechos ............................................ 51
3.2 La línea de comandos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
3.2.1 Cómo obtener una línea de comando. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
3.2.2 Conceptos básicos de la línea de comandos: exploración del árbol de directorios y administración de archivos. ................. 52
3.3 El Sistema de Archivos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
3.3.1 El estándar de jerarquía del sistema de archivos. .................................... 54
3.3.2 Directorio de inicio del usuario.
........................................ 55
3.4 Comandos útiles. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
3.4.1 Visualización y modificación de archivos de texto. ................................... 56
3.4.2 Búsqueda de archivos y dentro de archivos. .................................... 56
3.4.3 Procesos de gestión............................................ 57
3.4.4 Gestión de derechos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
3.4.5 Obtención de información y registros del sistema. ................................... 60
3.4.6 Descubrimiento del hardware. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
3.5 Resumen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
4. Instalación de Kali Linux sesenta y cinco

4.1 Requisitos mínimos de instalación. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66


4.2 Instalación paso a paso en un disco duro. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
4.2.1 Instalación simple. ............................................. 66
Arrancar e iniciar el instalador .................................... 66
Selección del idioma. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
Selección del país. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
Selección del diseño del teclado. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
Detección de hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
Cargando Componentes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
Detección de hardware de red. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
Configuración de la red. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
Creación de usuarios. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
Configuración del reloj . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
Detección de discos y otros dispositivos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
Fraccionamiento. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
Copia de la imagen en vivo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83

IV Kali Linux revelado


Configuración del administrador de paquetes (apto) ................................. 84
Instalación de metapaquetes. ........................................ 85
Instalación del cargador de arranque GRUB. .................................... 85
Finalización de la instalación y reinicio. ................................ 88
4.2.2 Instalación en un sistema de archivos totalmente cifrado. ............................... 88
Introducción a LVM. ......................................... 89
Introducción a LUKS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
Configuración de particiones cifradas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
Fin del particionamiento guiado con LVM cifrado ............................ 93
4.3 Instalaciones desatendidas ........................................... 95
4.3.1 Preselección de respuestas ............................................ 96
Con parámetros de arranque ......................................... 96
Con un archivo Preseed en el Initrd ..................................... 96
..................................
Con un archivo predeterminado en los medios de arranque 96
Con un archivo preconfigurado cargado desde la red ............................... 97
4.3.2 Creación de un archivo preconfigurado. .......................................... 97
4.4 Instalaciones ARM. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
4.5 Solución de problemas de instalaciones. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
4.6 Resumen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .104
5. Configuración de Kali Linux 107
5.1 Configuración de la red. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .108
5.1.1 En el escritorio conGerente de Redes .................................. 108
5.1.2 En la línea de comandos con Ifupdown ................................... 109
5.1.3 En la línea de comandos consystemd-networkd .............................. 110
5.2 Gestión de usuarios de Unix y grupos de Unix. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .112
5.2.1 Creación de cuentas de usuario.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .112
5.2.2 Modificación de una cuenta o contraseña existente. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .113
5.2.3 Inhabilitación de una cuenta. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .113
5.2.4 Gestión de grupos Unix. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .113
5.3 Configuración de servicios. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .114
5.3.1 Configuración de un programa específico. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .114
5.3.2 Configuración de SSH para inicios de sesión remotos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .115
5.3.3 Configuración de bases de datos PostgreSQL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .115
Tipo de conexión y autenticación del cliente.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .116
......................................
Creación de usuarios y bases de datos 116
Administrar clústeres de PostgreSQL ..................................... 117
5.3.4 Configuración de Apache. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .118
Configuración de hosts virtuales. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .118
Directivas comunes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .119
5.4 Servicios de gestión. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .121
5.5 Resumen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .123

Tabla de contenido V
6. Ayudarse a sí mismo y obtener ayuda 127
6.1 Fuentes de documentación. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .128
...............................................
6.1.1 Páginas del manual 128
..............................................
6.1.2 Documentos de información 130
6.1.3 Documentación específica del paquete. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .130
6.1.4 Sitios web. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .131
6.1.5 Documentación de Kali en kali.org/docs/. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .131
6.2 Comunidades Kali Linux. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .132
6.2.1 Foros en forums.kali.org. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .132
6.2.2 Canal IRC #kali-linux en Freenode. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .133
6.3 Presentación de un informe de error bueno. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .134
6.3.1 Recomendaciones genéricas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .134
Cómo comunicarse.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .134
Qué poner en el informe de errores. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .135
Consejos varios. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .136
6.3.2 Dónde presentar un informe de error. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .137
6.3.3 Cómo presentar un informe de error. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .138
.......................................
Presentar un informe de error en Kali 138
Presentar un informe de error en Debian ...................................... 142
Presentar un informe de error en otro proyecto de software libre . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
6.4 Resumen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .151
7. Asegurar y monitorear Kali Linux 155
7.1 Definición de una política de seguridad. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .156
7.2 Posibles medidas de seguridad. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .158
7.2.1 En un servidor ................................................ 158
................................................
7.2.2 En una computadora portátil 158
7.3 Protección de los servicios de red .......................................... 159
7.4 Cortafuegos o filtrado de paquetes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .159
7.4.1 Comportamiento del filtro de red. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .160
7.4.2 Sintaxis deiptablesytablas ip6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .163
Comandos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .163
Normas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .163
7.4.3 Creación de reglas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .165
7.4.4 Instalación de las reglas en cada inicio. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .166
7.5 Supervisión y registro. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .167
7.5.1 Seguimiento de registros con ......................................
verificación de registro 167
7.5.2 Actividad de Monitoreo en Tiempo Real ...................................... 168
7.5.3 Detección de cambios. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .169
Paquetes de auditoría condpkg --verificar. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .169
Seguimiento de Archivos: AIDE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .170
7.6 Resumen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .171

VI Kali Linux revelado


8. Gestión de paquetes Debian 175
8.1 Introducción a APT. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .176
8.1.1 Relación entre APT ydpkg .................................... 176
8.1.2 Comprender elfuentes.listaArchivo ................................... 178
8.1.3 Repositorios de Kali. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .179
El depósito de Kali-Rolling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179
El repositorio Kali-Dev ........................................ 180
Los espejos de Kali Linux ......................................... 180
8.2 Interacción del paquete básico .......................................... 181
8.2.1 Inicialización de APT. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .181
8.2.2 Instalación de paquetes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .182
Instalación de paquetes condpkg ...................................... 182
Instalación de paquetes con APT ...................................... 183
8.2.3 Actualización de Kali Linux. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .184
8.2.4 Extracción y purga de paquetes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .186
8.2.5 Inspección de paquetes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .187
consultandodpkgBase de datos e inspección de.debutantearchivos. . . . . . . . . . . . . . . . . . . . . . . . . . . .187
Consultar la base de datos de paquetes disponibles conapt-cacheyapto. . . . . . . . . . . . . . . . . . . .191
8.2.6 Resolución de problemas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .192
Manejo de problemas después de una actualización. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .193
EldpkgArchivo de registro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .194
Reinstalación de paquetes conapto --reinstalaryaptitude reinstalar . . . . . . . . . . . . . . . . . . .194
Aprovechando --force-* para reparar dependencias rotas. . . . . . . . . . . . . . . . . . . . . . . . . . . .195
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .196
8.2.7 Interfaz:aptitudysináptico
Aptitud.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .196
sináptico. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .199
8.3 Configuración y uso avanzados de APT. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .200
8.3.1 Configuración de APT. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .200
8.3.2 Gestión de prioridades de paquetes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .202
8.3.3 Trabajar con varias distribuciones. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .204
8.3.4 Seguimiento de paquetes instalados automáticamente. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .205
8.3.5 Aprovechamiento de la compatibilidad con varias arcadas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .206
Habilitación de múltiples arcos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .206
Cambios relacionados con múltiples arcos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .207
8.3.6 Validación de la autenticidad del paquete. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .208
8.4 Referencia del paquete APT: profundizando en el sistema de paquetes de Debian . . . . . . . . . . . . .210
8.4.1 ElcontrolArchivo.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .211
Dependencias: el campo Depends. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .212
Pre-depende, un depende más exigente. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .213
Campos de recomendaciones, sugerencias y mejoras. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .214
Conflictos: el campo de los conflictos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .214

Tabla de contenido VII


Incompatibilidades: el campo Breaks .................................... 214
Elementos proporcionados: el campo Proporciona .................................... 215
Reemplazo de archivos: el campo Reemplaza. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .216
8.4.2 Guiones de configuración. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .217
Secuencia de script de instalación y actualización.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .219
Eliminación de paquetes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .219
8.4.3 Sumas de comprobación, archivos confidenciales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .220
8.5 Resumen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .222
9. Uso avanzado 227
9.1 Modificación de paquetes de Kali ........................................... 228
9.1.1 Obtener las fuentes ............................................ 229
9.1.2 Instalación de dependencias de compilación ....................................... 231
9.1.3 Realización de cambios. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .232
Aplicar un parche. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .233
Ajuste de las opciones de compilación.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .234
Empaquetado de una nueva versión ascendente. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .235

9.1.4 Inicio de la compilación. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .236


9.2 Recompilación del kernel de Linux ........................................ 237
9.2.1 Introducción y requisitos previos ....................................... 238
9.2.2 Obtener las fuentes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .238
9.2.3 Configuración del núcleo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .239
9.2.4 Compilación y construcción del paquete. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .241
9.3 Creación de imágenes ISO Kali Live personalizadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .241
9.3.1 Instalación de requisitos previos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .242
9.3.2 Creación de imágenes en vivo con diferentes entornos de escritorio. . . . . . . . . . . . . . . . . . . . . . . . .242
9.3.3 Cambio del conjunto de paquetes instalados. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .243
9.3.4 Uso de ganchos para ajustar el contenido de la imagen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .245
9.3.5 Adición de archivos en la imagen ISO o en el sistema de archivos en vivo. . . . . . . . . . . . . . . . . . . . . . . . . . .245
9.4 Adición de persistencia a Live ISO con una llave USB. . . . . . . . . . . . . . . . . . . . . . . . . . .246
9.4.1 La función de persistencia: explicaciones. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .246
9.4.2 Configuración de persistencia sin cifrar en una llave USB. . . . . . . . . . . . . . . . . . . . . . . . . . . . .247
9.4.3 Configuración de persistencia cifrada en una llave USB. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .248
9.4.4 Uso de múltiples almacenes de persistencia. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .249
9.5 Resumen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .251
9.5.1 Resumen de consejos para modificar paquetes de Kali. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .251
9.5.2 Sugerencias resumidas para volver a compilar el kernel de Linux. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .252
9.5.3 Sugerencias resumidas para crear imágenes ISO personalizadas de Kali Live .......................... 253
10. Kali Linux en la empresa 257
10.1 Instalación de Kali Linux a través de la red (arranque PXE) .......................... 258
10.2 Aprovechamiento de la gestión de la configuración. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .261

viii Kali Linux revelado


10.2.1 Configuración de SaltStack . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .261
10.2.2 Ejecución de comandos en Minions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .262
10.2.3 Estados de sal y otras características.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .264
10.3 Ampliación y personalización de Kali Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .268
10.3.1 Bifurcación de paquetes de Kali. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .268
10.3.2 Creación de paquetes de configuración. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .269
10.3.3 Creación de un repositorio de paquetes para APT. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .275
10.4 Resumen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .279
11. Introducción a las evaluaciones de seguridad 283
11.1 Kali Linux en una evaluación. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .285
11.2 Tipos de evaluaciones. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .287
11.2.1 Evaluación de vulnerabilidad ......................................... 288
Probabilidad de ocurrencia ........................................ 291
Impacto. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .291
Riesgo general . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291
En resumen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292
11.2.2 Prueba de penetración de cumplimiento ....................................... 292
11.2.3 Prueba de penetración tradicional. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .293
11.2.4 Evaluación de la aplicación. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .295
11.3 Formalización de la Evaluación. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .297
11.4 Tipos de Ataques. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .298
11.4.1 Denegación de servicio. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .298
11.4.2 Corrupción de memoria. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .299
11.4.3 Vulnerabilidades web ............................................ 300
11.4.4 Ataques de contraseña . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300
11.4.5 Ataques del lado del cliente ............................................ 301
11.5 Resumen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .301
12. Conclusión: el camino por delante 305
12.1 Mantenerse al día con los cambios. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .306
12.2 Mostrando sus conocimientos recién adquiridos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .306
12.3 Yendo Más Allá . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .307
12.3.1 Hacia la Administración del Sistema. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .307
12.3.2 Hacia las pruebas de penetración . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .307

Índice 308

Tabla de contenido IX
Prefacio

No tienes idea de lo bien que lo tienes.


En 1998, era un hacker prometedor, co-fundador de uno de los primeros equipos profesionales de hacking de
sombrero blanco. Éramos niños, en realidad, con trabajos de ensueño, pagados para entrar en algunos de los
sistemas informáticos, redes y edificios más seguros del planeta.

Suena bastante sexy, pero en realidad, pasamos la mayor parte de nuestro tiempo flotando sobre un teclado, armados con
las herramientas digitales de nuestro oficio. Manejábamos una sórdida colección de programas, diseñados para mapear
redes y localizar objetivos; luego escanee, explote y pivote a través de ellos. En algunos casos, uno de nosotros (a menudo
Jim Chapple) escribía herramientas personalizadas para hacer cosas malvadas como escanear una red de Clase A (algo que
ninguna otra herramienta podía hacer en ese momento), pero la mayoría de las veces usábamos o modificábamos
herramientas escritas por la comunidad de hackers. En aquellos días previos a Google, frecuentábamos BugTraq,
AstaLaVista, Packet Storm, w00w00, SecurityFocus, X-Force y otros recursos para realizar investigaciones y construir
nuestro arsenal.

Como teníamos un tiempo limitado en cada concierto, teníamos que actuar rápidamente. Eso significaba que no podíamos pasar
mucho tiempo manipulando herramientas. Significaba que teníamos que aprender las herramientas principales por dentro y por
fuera, y mantener las auxiliares a mano, por si acaso. Significaba que teníamos que tener nuestras herramientas bien organizadas,
documentadas y probadas para que hubiera pocas sorpresas en el campo. Después de todo, si no conseguíamos, perderíamos
prestigio con nuestros clientes y ellos tomarían nuestras recomendaciones mucho menos en serio.

Debido a esto, pasé mucho tiempo catalogando herramientas. Cuando se lanzaba o actualizaba una
herramienta, seguía una rutina. Tenía que averiguar si se ejecutaría en la plataforma de ataque (algunos no
lo hacían) y si valía la pena (algunos no lo valían); Tuve que actualizar los scripts que se basaban en él,
documentarlo y probarlo, incluido el traspaso de los cambios realizados a la versión anterior.

Luego, sacudiría todas las herramientas y las colocaría en directorios según su propósito durante una evaluación.
Escribía scripts de envoltorio para ciertas herramientas, encadenaba algunas herramientas juntas y correlacionaba
todo eso en un CD separado que podíamos llevar a áreas sensibles, cuando los clientes no nos permitían tomar
máquinas de ataque o eliminar medios de sus laboratorios.

Este proceso fue doloroso, pero necesario. Sabíamos que teníamos la capacidad de entrar en cualquier red, si aplicábamos
nuestras habilidades y experiencia correctamente, nos manteníamos organizados y trabajábamos de manera eficiente. Si
bien mantenerse invicto era un motivador, se trataba de brindar un servicio a clientes que necesarionosotros para entrar
en las redes, para que puedan tapar las brechas y mover el dinero hacia programas de seguridad de la información críticos
pero descuidados.
Pasamos años perfeccionando nuestras habilidades y experiencia, pero no habríamos tenido éxito sin organización y
eficiencia. Habríamos fallado si no hubiéramos podido poner nuestras manos en la herramienta adecuada cuando fuera
necesario.

Es por eso que pasé tanto tiempo investigando, documentando, probando y catalogando herramientas y, a comienzos del
siglo XXI, se estaba convirtiendo rápidamente en un trabajo abrumador de tiempo completo. Gracias a Internet, la
superficie de ataque mundial se disparó y la variedad y la cantidad de herramientas de ataque aumentaron
exponencialmente, al igual que la carga de trabajo necesaria para mantenerlas.

A partir de 2004, Internet explotó no solo como base para los negocios, sino también como plataforma social. Las
computadoras eran asequibles, más fáciles de usar y omnipresentes. La tecnología de almacenamiento se expandió
de megabytes a gigabytes. Ethernet saltó de cientos de kilobits a decenas de megabits por segundo, y las
conexiones a Internet eran más rápidas y económicas que nunca. El comercio electrónico iba en aumento, los sitios
de redes sociales como Facebook (2004) y Twitter (2006) se pusieron en línea y Google (1998) había madurado hasta
el punto de que cualquiera (incluidos los delincuentes) podía encontrar casi cualquier cosa en línea.

La investigación se volvió crítica para equipos como el nuestro porque teníamos que mantenernos al día con nuevos
ataques y conjuntos de herramientas. Respondimos a más delitos informáticos, y el trabajo forense exigió que
anduviésemos con cuidado mientras escarbábamos entre las pruebas potenciales. el concepto de unCD en vivosignificaba
que podíamos realizar análisis forenses en vivo en una máquina comprometida sin comprometer la evidencia.

Ahora nuestro pequeño equipo tenía que administrar herramientas de ataque, herramientas forenses y una distribución de
herramientas de área sensible; teníamos que mantenernos al día con las últimas metodologías de ataque y explotación; y
tuvimos que, ya sabes, hacer aquello por lo que nos pagaron: pruebas de penetración, que tenían una gran demanda. Las
cosas se estaban saliendo de control y, en poco tiempo, pasamos menos tiempo en la batalla y mucho más tiempo
investigando, afilando nuestras herramientas y planificando.

No estábamos solos en esta lucha. En 2004, Mati "Muts" Aharoni, un hacker y profesional de la seguridad,
lanzó "WHoppiX" (White Hat Knoppix), un CD de Linux en vivo que calificó como "el último CD en vivo de
pruebas de penetración". Incluía "todas las vulnerabilidades de SecurityFocus, Packet Storm y k-otik,
Metasploit Framework 2.2 y mucho, mucho más”.

Recuerdo haber descargado WHoppiX y pensé que era genial tenerlo cerca. Descargué otros CD en vivo, pensando que si
alguna vez estaba en apuros, los CD en vivo podrían salvar mi tocino en el campo. Pero no estaba dispuesto a depender de
WHOppiX o cualquier otro CD para el trabajo real. No confiaba en ninguno de ellos para satisfacer la mayoría de mis
necesidades; ninguno de ellos se sintió adecuado para mi flujo de trabajo; no eran distribuciones instalables completas; y
en el momento en que los descargué estaban desactualizados. Un juego de herramientas envejecido es el beso de la
muerte en nuestra industria.

Simplemente agregué estas imágenes de CD, a pesar de su tamaño relativamente masivo, a nuestro arsenal y seguí con el doloroso
proceso de mantener nuestro conjunto de herramientas "real".

Pero a pesar de mis opiniones personales en ese momento, y quizás a pesar de las expectativas de Muts, WHOppiX y sus
descendientes tuvieron un impacto sísmico en su vida, nuestra industria y nuestra comunidad.

XII Kali Linux revelado


En 2005, WHoppiX evolucionó a WHAX, con un conjunto de herramientas ampliado y actualizado, basado en "el CD
en vivo SLAX (Slackware) más modular". Muts y un equipo cada vez mayor de voluntarios de la comunidad de
hackers parecieron darse cuenta de que, sin importar cuán perspicaces fueran, nunca podrían anticipar todo el
crecimiento y la fluctuación de nuestra industria y que los usuarios de su CD tendrían diversas necesidades en el
campo. Era obvio que Muts y su equipo en realidad estaban usando WHAX en el campo y parecían dedicados a
hacer que funcionara. Esto fue alentador para mí.

En 2006, Muts, Max Moser y sus equipos consolidaron Auditor Security Linux y WHAX en una sola distribución
llamada BackTrack. Todavía basado en SLAX, BackTrack siguió creciendo, agregando más herramientas, más
marcos, soporte de idiomas extendido, soporte inalámbrico extenso, una estructura de menú que atiende tanto a
usuarios novatos como profesionales, y un núcleo muy modificado. BackTrack se convirtió en la distribución de
seguridad líder, pero muchos como yo todavía lo usamos como respaldo para sus "herramientas reales".

A principios de 2009, Muts y su equipo habían ampliado BackTrack significativamente a BackTrack 4. Ahora, un trabajo de
tiempo completo para Muts, BackTrack ya no era un CD en vivo sino una distribución completa basada en Ubuntu que
aprovechaba los repositorios de software de Ubuntu. El cambio marcó una evolución seria: BackTrack 4 tenía un
mecanismo de actualización. En las propias palabras de Muts: "Al sincronizar con nuestros repositorios BackTrack, recibirá
regularmente actualizaciones de herramientas de seguridad poco después de su lanzamiento".

Este fue un punto de inflexión. El equipo de BackTrack se había sintonizado con las dificultades que enfrentaban los
evaluadores de penetración, los analistas forenses y otras personas que trabajaban en nuestra industria. Sus esfuerzos nos
ahorrarían innumerables horas y proporcionarían una base firme, permitiéndonos volver a la lucha y dedicar más tiempo a
las cosas importantes (y divertidas). Como resultado, la comunidad respondió acudiendo en masa a los foros y wiki; y
colaborando con el equipo de desarrollo. BackTrack fue verdaderamente un esfuerzo de la comunidad, con Muts todavía a
la cabeza.

BackTrack 4 finalmente se había convertido en una plataforma de fuerza industrial y yo, y otros como yo, respiramos
aliviados. Sabíamos de primera mano el "dolor y el sufrimiento" que Muts y su equipo estaban soportando, porque
habíamos estado allí. Como resultado, muchos de nosotros comenzamos a utilizar BackTrack como base principal de
nuestro trabajo. Sí, todavía jugueteamos con las herramientas, escribimos nuestro propio código y desarrollamos nuestros
propios exploits y técnicas; e investigamos y experimentamos; pero no dedicamos todo nuestro tiempo a recopilar,
actualizar, validar y organizar herramientas.

BackTrack 4 R1 y R2 fueron revisiones adicionales en 2010, lo que condujo a la reconstrucción desde cero de Back-Track 5
en 2011. Todavía basado en Ubuntu y cobrando fuerza con cada lanzamiento, BackTrack era ahora un proyecto enorme
que requería un voluntario heroico. y el esfuerzo de la comunidad, sino también la financiación. Muts lanzó Offensive
Security (en 2006) no solo para brindar servicios de capacitación y pruebas de penetración de clase mundial, sino también
para proporcionar un vehículo para mantener el desarrollo de BackTrack en marcha y garantizar que BackTrack siga siendo
de código abierto y de uso gratuito.

BackTrack continuó creciendo y mejorando durante 2012 (con R1, R2 y R3), manteniendo un núcleo de Ubuntu y
agregando cientos de nuevas herramientas, incluidas herramientas de explotación física y de hardware, soporte de
VMware, innumerables controladores inalámbricos y de hardware, y una multitud de estabilidad. mejoras y
correcciones de errores. Sin embargo, después del lanzamiento de R3, el desarrollo de BackTrack fue relativamente,
y algo misterioso, silencioso.

Prefacio XIII
Había algo de especulación en la industria. Algunos pensaron que BackTrack estaba siendo "comprado", vendiendo
su alma a un malvado señor corporativo sin rostro por un pago masivo. Offensive Security se estaba convirtiendo
en una de las empresas de capacitación más respetadas y un líder intelectual en nuestra industria, y algunos
especularon que su éxito había engullido y dejado de lado a los desarrolladores clave de BackTrack. Sin embargo,
nada podría estar más lejos de la verdad.

En 2013, se lanzó Kali Linux 1.0. De las notas de la versión: “Después de un año de desarrollo silencioso, Offensive
Security se enorgullece de anunciar el lanzamiento y la disponibilidad pública de Kali Linux, la distribución de
prueba de penetración más avanzada, robusta y estable hasta la fecha. Kali es una versión de BackTrack más
madura, segura y preparada para empresas”.

Kali Linux no fue un simple cambio de marca de BackTrack. Con más de 600 herramientas completamente
reempaquetadas, era claramente un conjunto de herramientas increíble, pero aún había más que eso. Kali
había sido construido, desde cero, sobre un núcleo Debian. Para los desinformados, esto puede no parecer
gran cosa. Pero los efectos dominó fueron asombrosos. Gracias a un enorme esfuerzo de reempaquetado,
los usuarios de Kali pudieron descargar el código fuente de cada herramienta; podían modificar y reconstruir
una herramienta según fuera necesario, con solo unas pocas pulsaciones de teclas. A diferencia de otros
sistemas operativos principales de la época, Kali Linux se sincronizaba con los repositorios de Debian cuatro
veces al día, lo que significaba que los usuarios de Kali podían obtener actualizaciones de paquetes y
correcciones de seguridad perversamente actuales. Los desarrolladores de Kali se lanzaron a la refriega,
empaquetar y mantener versiones anteriores de muchas herramientas para que los usuarios se mantuvieran
constantemente a la vanguardia. Gracias a sus raíces de Debian, los usuarios de Kali podían iniciar una
instalación o ISO directamente desde los repositorios, lo que abrió la puerta para instalaciones de Kali
completamente personalizadas o implementaciones empresariales masivas, que podrían automatizarse y
personalizarse aún más con archivos preconfigurados. Para completar la trifecta de personalización, los
usuarios de Kali podían modificar el entorno de escritorio, alterar menús, cambiar iconos e incluso
reemplazar entornos de ventanas. Un impulso masivo de desarrollo de ARM abrió la puerta para la
instalación de Kali Linux en una amplia gama de plataformas de hardware, incluidos puntos de acceso,
computadoras de placa única (Raspberry Pi, ODROID, BeagleBone y CubieBoard, por ejemplo) y
computadoras Chromebook basadas en ARM. Y por último pero no menos importante,

La comunidad se dio cuenta. En los primeros cinco días, 90.000 de nosotros descargamos Kali 1.0.

Esto fue solo el comienzo. En 2015, se lanzó Kali 2.0, seguido de los lanzamientos continuos de 2016. En
resumen, "si Kali 1.0 se enfocó en construir una infraestructura sólida, entonces Kali 2.0 se enfoca en revisar
la experiencia del usuario y mantener paquetes y repositorios de herramientas actualizados".

La versión actual de Kali Linux es una distribución continua, que marca el final de las versiones discretas. Ahora, los
usuarios están actualizados continuamente y reciben actualizaciones y parches a medida que se crean. Las herramientas
principales se actualizan con más frecuencia gracias a un sistema de etiquetado de versiones anteriores, se implementaron
mejoras de accesibilidad innovadoras para personas con discapacidades visuales y los kernels de Linux se actualizan y
parchean para continuar con el soporte de inyección inalámbrica 802.11. Las herramientas Software Defined Radio (SDR) y
Near-Field Communication (NFC) agregan soporte para nuevos campos de pruebas de seguridad. Están disponibles la
instalación completa de discos cifrados de Linux y las opciones de autodestrucción de emergencia,

XIV Kali Linux revelado


gracias a LVM y LUKS respectivamente, se han agregado opciones de persistencia USB, lo que permite que las instalaciones
de Kali basadas en USB mantengan los cambios entre reinicios, ya sea que la unidad USB esté encriptada o no. Finalmente,
las últimas revisiones de Kali abrieron la puerta a NetHunter, un sistema operativo de clase mundial de código abierto que
se ejecuta en dispositivos móviles basados en Kali Linux y Android.

Kali Linux ha evolucionado no solo hasta convertirse en la plataforma elegida por los profesionales de la seguridad de la
información, sino también en una distribución de sistema operativo de grado industrial, de clase mundial, madura, segura
y lista para empresas.

Durante el proceso de desarrollo de una década, Muts y su equipo, junto con la incansable dedicación de
innumerables voluntarios de la comunidad de hackers, han asumido la carga de simplificar y organizar
nuestro entorno de trabajo, liberándonos de gran parte de la monotonía de nuestro trabajo y
proporcionando una base segura y confiable, lo que nos permite concentrarnos en impulsar la industria
hacia el objetivo final de asegurar nuestro mundo digital.

Y de manera interesante, pero no sorprendente, se ha creado una comunidad increíble en torno a Kali Linux.
Cada mes, entre trescientos y cuatrocientos mil de nosotros descargamos una versión de Kali. Nos reunimos
en los foros de Kali, unos cuarenta mil, y de tres a cuatrocientos de nosotros a la vez se pueden encontrar en
el canal Kali IRC. Nos reunimos en conferencias y asistimos a Kali Dojos para aprender cómo aprovechar
mejor Kali de los propios desarrolladores.

Kali Linux ha mejorado el mundo de la seguridad de la información, y Muts y su equipo nos han ahorrado a
cada uno de nosotros incontables horas de esfuerzo y frustración, permitiéndonos dedicar más tiempo y
energía a impulsar la industria juntos.

Pero a pesar de su asombrosa aceptación, apoyo y popularidad, Kali nunca ha publicado un


manual oficial. Bueno, ahora eso ha cambiado. Estoy encantado de haberme unido al equipo de
desarrollo de Kali y específicamente a Mati Aharoni, Raphaël Hertzog, Devon Kearns y Jim
O'Gorman para ofrecer esto, quizás el primero de una serie de publicaciones oficiales centradas
en Kali Linux. En este libro, nos centraremos en la plataforma Kali Linux y lo ayudaremos a
comprender y maximizar el uso de Kali desde cero. Todavía no profundizaremos en el arsenal de
herramientas que contiene Kali Linux, pero si eres un veterano o un absoluto n00b, este es el
mejor lugar para comenzar, si estás listo para profundizar y tomarte en serio con Kali Linux. .
Independientemente de cuánto tiempo haya estado en el juego, su decisión de leer este libro lo
conecta con la creciente comunidad de Kali Linux,
En nombre de Muts y el resto del increíble equipo de Kali, ¡felicidades por dar el primer paso para
dominar Kali Linux!
johnny largo

febrero 2017

Prefacio XV
Prefacio

Acaban de llegar las dieciséis computadoras portátiles de gama alta ordenadas para su equipo de pentesting y se le ha
asignado la tarea de configurarlas para el compromiso externo de mañana. Instala Kali y enciende una de las
computadoras portátiles solo para descubrir que apenas se puede usar. A pesar del núcleo de vanguardia de Kali, las
tarjetas de red y el mouse no funcionan, y la tarjeta gráfica NVIDIA y la GPU pesadas lo miran fijamente porque no tienen
los controladores instalados correctamente. tu suspiras

en KaliModo en vivo, escribes rápidamentelspcien una consola, luego entrecerrar los ojos. Se desplaza por la lista de
hardware: “Puente PCI, controlador USB, controlador SATA. ¡Ajá! Controladores de Red y Ethernet.” Una búsqueda
rápida en Google de sus respectivos números de modelo, con referencias cruzadas con la versión del kernel de Kali,
revela que estos controladores de última generación aún no han llegado al kernel de la línea principal.

Pero no todo está perdido. Un plan se está formulando lentamente en tu cabeza, y agradeces al cielo por el Kali
Linux reveladolibro que recogiste hace un par de semanas. Puede usar el sistema Kali Live-Build para crear un Kali
ISO personalizado, que tendría los controladores necesarios integrados en los medios de instalación. Además,
puede incluir los controladores de gráficos NVIDIA, así como las bibliotecas CUDA necesarias para que esa bestia de
GPU hable bien con hashcat y haga que ronronee mientras descifra hashes de contraseñas a velocidades
vertiginosas. Diablos, incluso podría agregar un fondo de pantalla personalizado con un logotipo de Microsoft para
burlarse de su equipo en el trabajo.

Dado que los perfiles de hardware para sus instalaciones son idénticos, agrega una opción de arranque predeterminada a la ISO, de
modo que su equipo pueda arrancar desde una memoria USB y tener Kali instalado sin interacción del usuario: la instalación se
encarga de sí misma, con cifrado de disco completo y todo.

¡Perfecto! Ahora puede generar una versión actualizada de Kali bajo demanda, específicamente diseñada y
optimizada para su hardware. Salvaste el día. ¡Misión cumplida!

Con la avalancha de hardware que llega al mercado, este escenario se está volviendo más común para aquellos de
nosotros que nos aventuramos lejos de los sistemas operativos convencionales, en busca de algo más ligero, más
malo o más adecuado para nuestro trabajo y estilo.

Esto es especialmente aplicable a aquellos atraídos por el campo de la seguridad, ya sea un pasatiempo atractivo,
una fascinación o una línea de trabajo. Como recién llegados, a menudo se encuentran perplejos por el entorno o el
sistema operativo. Para muchos recién llegados, Kali es su primera introducción a Linux.

Reconocimos este cambio en nuestra base de usuarios hace un par de años y pensamos que podíamos ayudar a
nuestra comunidad creando un libro introductorio estructurado que guiaría a los usuarios en el mundo.
de seguridad, mientras les brinda toda la sofisticación de Linux que necesitarían para comenzar. Y así nació
el libro Kali, ahora disponible gratis en Internet para el beneficio de cualquier persona interesada en
ingresar al campo de la seguridad a través de Kali Linux.

Sin embargo, a medida que el libro comenzó a tomar forma, rápidamente nos dimos cuenta de que había un
potencial sin explotar. Esta sería una gran oportunidad para ir más allá de un libro introductorio de Kali Linux y
explorar algunas de las características más interesantes y poco conocidas. De ahí el nombre del libro:Kali Linux
revelado.

Al final, quedamos encantados con el resultado. El libro respondió a todos nuestros requisitos y me enorgullece
decir que superó nuestras expectativas. Nos dimos cuenta de que, sin darnos cuenta, habíamos ampliado la base
de usuarios potenciales del libro. Ya no estaba destinado solo a los recién llegados al campo de la seguridad, sino
que también incluía excelente información para los probadores de penetración experimentados que necesitaban
mejorar y pulir su control de Kali Linux, permitiéndoles desbloquear todo el potencial de nuestra distribución. Ya
sea que estuvieran instalando una sola máquina o miles en una empresa, realizando cambios menores en la
configuración o personalizándolos completamente hasta el nivel del núcleo, creando sus propios repositorios,
tocando la superficie o profundizando en el increíble sistema de administración de paquetes Debian,Kali Linux
reveladoproporciona la hoja de ruta.

Con su mapa en la mano, en mi nombre y en el de todo el equipo de Kali Linux, ¡les deseo un viaje
emocionante, divertido, fructífero y "revelador"!

mudos

febrero 2017

XVIII Kali Linux revelado


Introducción

Kali Linux es la plataforma de pruebas de penetración más poderosa y popular del mundo, utilizada por
profesionales de seguridad en una amplia gama de especializaciones, incluidas pruebas de penetración, análisis
forense, ingeniería inversa y evaluación de vulnerabilidades. Es la culminación de años de refinamiento y el
resultado de una evolución continua de la plataforma, de WHOppiX a WHAX, a BackTrack, y ahora a un completo
marco de pruebas de penetración que aprovecha muchas características de Debian GNU/Linux y la vibrante
comunidad de código abierto en todo el mundo. .

Kali Linux no se ha creado para ser una simple colección de herramientas, sino un marco flexible que los probadores de
penetración profesionales, entusiastas de la seguridad, estudiantes y aficionados pueden personalizar para satisfacer sus
necesidades específicas.

¿Por qué este libro?

Kali Linux no es simplemente una colección de varias herramientas de seguridad de la información que se instalan
en una base estándar de Debian y se configuran previamente para que pueda comenzar a funcionar de inmediato.
Para sacar el máximo provecho de Kali, es importante tener una comprensión profunda de sus poderosos
fundamentos de Debian GNU/Linux (que admiten todas esas excelentes herramientas) y aprender cómo puede
utilizarlas en su entorno.

Aunque Kali es decididamente polivalente, está diseñado principalmente para ayudar en las pruebas de
penetración. El objetivo de este libro no es solo ayudarlo a sentirse como en casa cuando usa Kali Linux, sino
también ayudarlo a mejorar su comprensión y simplificar su experiencia para que cuando esté involucrado
en una prueba de penetración y el tiempo sea esencial, gane. No necesita preocuparse por perder valiosos
minutos para instalar un nuevo software o habilitar un nuevo servicio de red. En este libro, primero le
presentaremos Linux, luego profundizaremos a medida que le presentemos los matices específicos de Kali
Linux para que sepa exactamente lo que sucede debajo del capó.

Este es un conocimiento invaluable, particularmente cuando está tratando de trabajar con limitaciones de tiempo.
No es raro que se requiera esta profundidad de conocimiento cuando se está configurando, solucionando un
problema, luchando para adaptar una herramienta a su voluntad, analizando la salida de una herramienta o
aprovechando Kali en un entorno de mayor escala.
¿Este libro es para ti?

Si está ansioso por sumergirse en el campo intelectualmente rico e increíblemente fascinante de la seguridad de la
información, y ha seleccionado Kali Linux como plataforma principal, entonces este libro lo ayudará en ese viaje.
Este libro está escrito para ayudar a los usuarios de Linux por primera vez, así como a los usuarios actuales de Kali
que buscan profundizar sus conocimientos sobre los fundamentos de Kali, así como a aquellos que han usado Kali
durante años pero que buscan formalizar su aprendizaje, expandir su uso de Kali, y llenar los vacíos en su
conocimiento.

Además, este libro puede servir como hoja de ruta, referencia técnica y guía de estudio para aquellos que
buscan la certificación Kali Linux Certified Professional.

Enfoque general y estructura del libro

Este libro ha sido diseñado para que pueda tener en sus manos Kali Linux desde el principio. No tienes que
leer la mitad del libro para empezar. Cada tema se cubre de una manera muy pragmática, y el libro está
repleto de muestras y capturas de pantalla para ayudar a que las explicaciones sean más concretas.

en el capitulo1, “Acerca de Kali Linux” [página 2], definimos una terminología básica y explicamos el
propósito de Kali Linux. en el capitulo2, “Primeros pasos con Kali Linux” [página 14], lo guiamos paso a paso
desde la descarga de la imagen ISO hasta que Kali Linux se ejecute en su computadora. Luego viene el
capitulo3, “Fundamentos de Linux” [página 48] que proporciona el conocimiento básico que necesita saber
sobre cualquier sistema Linux, como su arquitectura, proceso de instalación, jerarquía del sistema de
archivos, permisos y más.

En este punto, ha estado usando Kali Linux como sistema en vivo por un tiempo. con capitulo4, “Instalando
KaliLinux” [página 66] aprenderá cómo hacer una instalación permanente de Kali Linux (en su disco duro) y
con el capítulo5, “Configuración de Kali Linux” [página 108] cómo ajustarlo a tu gusto. Como usuario habitual
de Kali, es hora de familiarizarse con los importantes recursos disponibles para los usuarios de Kali: capítulo
6, “Ayudarse a sí mismo y obtener ayuda” [página 128] le da las claves para lidiar con los problemas
inesperados que probablemente enfrentará.

Con los conceptos básicos bien cubiertos, el resto del libro se sumerge en temas más avanzados: capítulo7, “
Asegurando y Monitoreando Kali Linux” [página 156] le brinda consejos para asegurarse de que su
instalación de Kali Linux cumpla con sus requisitos de seguridad. Siguiente capítulo8, “Gestión de paquetes
de Debian” [página 176] explica cómo aprovechar todo el potencial del ecosistema de empaquetado de
Debian. Y en el capitulo9, “Uso avanzado” [página 228], aprenderá a crear una imagen ISO de Kali Linux
totalmente personalizada. Todos esos temas son aún más relevantes cuando implementa Kali Linux a escala
en una empresa como se documenta en el capítulo10, “Kali Linux en la empresa” [página 258].

XX Kali Linux revelado


El último capítulo, capítulo11, “Introducción a las evaluaciones de seguridad” [página 284], establece el
vínculo entre todo lo que ha aprendido en este libro y el trabajo diario de los profesionales de la
seguridad.

Agradecimientos de Raphaël Hertzog

Quisiera agradecer a Mati Aharoni: en 2012, se puso en contacto conmigo porque yo era uno entre docenas
de consultores de Debian y quería construir un sucesor de BackTrack que estuviera basado en Debian. Así
fue como comencé a trabajar en Kali Linux, y desde entonces he disfrutado mi viaje en el mundo de Kali.

A lo largo de los años, Kali Linux se acercó más a Debian GNU/Linux, especialmente con el cambio a Kali Rolling,
basado en Debian Testing. Ahora, la mayor parte de mi trabajo, ya sea en Kali o en Debian, brinda beneficios a todo
el ecosistema de Debian. Y esto es exactamente lo que me mantiene tan motivado para continuar, día tras día, mes
tras mes, año tras año.

Trabajar en este libro también es una gran oportunidad que me brindó Mati. No es el mismo tipo de
trabajo, pero es igualmente gratificante poder ayudar a la gente y compartir con ellos mi experiencia
en el sistema operativo Debian/Kali. Sobre la base de mi experiencia con elManual del administrador
de Debian, espero que mis explicaciones te ayuden a iniciarte en el vertiginoso mundo de la seguridad
informática.

También me gustaría agradecer a todas las personas de Offensive Security que participaron en el libro:
Jim O'Gorman (coautor de algunos capítulos), Devon Kearns (revisor), Ron Henry (editor técnico), Joe
Steinbach y Tony Cruse ( directores de proyecto). Y gracias a Johnny Long que se unió para escribir el
prefacio pero terminó revisando todo el libro.

Agradecimientos de Jim O'Gorman

Me gustaría agradecer a todos los involucrados en este proyecto por sus contribuciones, de las cuales las
mías fueron solo una pequeña parte. Este libro, al igual que Kali Linux, fue un proyecto colaborativo de
muchas manos que hicieron un trabajo ligero. Un agradecimiento especial a Raphaël, Devon, Mati, Johnny y
Ron por asumir la mayor parte del esfuerzo. Sin ellos, este libro no habría salido adelante.

Agradecimientos a Mati Aharoni

Han pasado algunos años desde que se lanzó por primera vez Kali Linux y, desde el primer día, siempre he
soñado con publicar un libro oficial que cubra el sistema operativo Kali en su totalidad. Por lo tanto, es un
gran privilegio para mí ver finalmente que un libro así se hace público. Me gustaría agradecer sinceramente
a todos los involucrados en la creación de este proyecto, incluidos Jim, Devon, Johnny,

Introducción XXI
y ron Un agradecimiento muy especial para Raphaël por hacer la mayor parte del trabajo pesado en este
libro y aportar su amplia experiencia a nuestro grupo.

Reconocimientos de Joe O'Gorman - Revisión 2021

Kali Linux ha cambiado mucho desde que Kali Linux Revealed se lanzó por primera vez en 2017. Desde
desarrolladores adicionales hasta dejar de usar root como el usuario predeterminado, se han logrado muchos
avances a lo largo de los años. Kali Linux Revealed debía recibir una revisión actualizada, y me siento honrado por
la oportunidad de haber contribuido a este proyecto épico durante el proceso de revisión.

XXIII Kali Linux revelado


Palabras clave

distribución de linux
Derivado de Debian
Objetivo
Características

Políticas
Capítulo

Acerca de Kali Linux 1


Contenido

Un poco de historia2 Relación con Debian4 Propósito y casos de uso5 Características principales de Kali Linux8

Políticas de Kali Linux10 Resumen11


kali linux1es una distribución de Linux de auditoría de seguridad lista para empresas basada en Debian GNU/Linux.
Kali está dirigido a profesionales de la seguridad y administradores de TI, lo que les permite realizar pruebas de
penetración avanzadas, análisis forenses y auditorías de seguridad.

que es un linux Aunque comúnmente se usa como un nombre para todo el sistema operativo, Linux es solo el
¿Distribución? nombre del kernel, una pieza de software que maneja las interacciones entre el hardware y
las aplicaciones del usuario final.

La expresiondistribución de linux, por otro lado, se refiere a un sistema operativo (SO)


completo creado sobre el kernel de Linux, que generalmente incluye un programa de
instalación y muchas aplicaciones, que están preinstaladas o empaquetadas de una manera
fácil de instalar.

Debian GNU/Linux2es una distribución genérica de Linux líder, conocida por su calidad y estabilidad. Kali
Linux se basa en el trabajo del proyecto Debian y agrega más de 400 paquetes propios de propósito especial,
todos relacionados con la seguridad de la información, particularmente en el campo de las pruebas de
penetración.

Debian es un proyecto de software libre que proporciona múltiples versiones de su sistema operativo
y a menudo usamos el términodistribuciónpara referirse a una versión específica del mismo, por
ejemplo, las distribuciones Debian Stable o Debian Testing. Lo mismo también se aplica a Kali Linux,
con la distribución Kali Rolling, por ejemplo.

1.1. Un poco de historia

El proyecto Kali Linux comenzó tranquilamente en 2012, cuando Offensive Security decidió que querían
reemplazar su venerable proyecto BackTrack Linux, que se mantenía manualmente, con algo que pudiera
convertirse en un auténticoDerivado de Debian3, completo con toda la infraestructura necesaria y técnicas
de envasado mejoradas. Se tomó la decisión de desarrollar Kali sobre la distribución Debian porque es
conocida por su calidad, estabilidad y amplia selección de software disponible. Es por eso que yo (Raphaël)
me involucré en este proyecto, como consultor de Debian.

El primer lanzamiento (versión 1.0) se produjo un año después, en marzo de 2013, y estaba basado en Debian 7
“Wheezy”, la distribución estable de Debian en ese momento. En ese primer año de desarrollo, empaquetamos
cientos de aplicaciones relacionadas con pruebas de penetración y construimos la infraestructura. Aunque la
cantidad de aplicaciones es significativa, la lista de aplicaciones se ha seleccionado meticulosamente, descartando
aplicaciones que ya no funcionaban o que duplicaban funciones que ya estaban disponibles en mejores programas.

Durante los dos años posteriores a la versión 1.0, Kali lanzó muchas actualizaciones incrementales, ampliando la
gama de aplicaciones disponibles y mejorando el soporte de hardware, gracias a las nuevas versiones del kernel.
Con alguna inversión en integración continua, nos aseguramos de que todos los paquetes importantes

1https://www.kali.org/
2https://www.debian.org/
3https://wiki.debian.org/Derivatives/Census

2 Kali Linux revelado


se mantuvieron en un estado instalable y que siempre se podían crear imágenes en vivo personalizadas (un sello distintivo
de la distribución).

En 2015, cuando salió Debian 8 "Jessie", trabajamos para reorganizar Kali Linux encima. Si bien Kali
Linux 1.x evitó GNOME Shell (confiando en su lugar en GNOME Fallback), en esta versión decidimos
adoptarlo y mejorarlo: agregamos algunas extensiones de GNOME Shell para adquirir funciones
faltantes, sobre todo el menú Aplicaciones. El resultado de ese trabajo se convirtió en Kali Linux 2.0,
publicado en agosto de 2015.

Xfce es Kali Linux Un entorno de escritorio es una colección de aplicaciones gráficas que comparten un conjunto de herramientas gráficas
Escritorio predeterminado común y que están diseñadas para usarse juntas en las estaciones de trabajo de los usuarios. Los entornos de escritorio
Ambiente generalmente no se utilizan en los servidores. Por lo general, proporcionan un lanzador de aplicaciones, un
administrador de archivos, un navegador web, un cliente de correo electrónico, una suite ofimática, etc.

Xfce4es uno de los entornos de escritorio livianos más populares, perfecto para nuestras imágenes
ISO en vivo y está incluido en las imágenes ISO del instalador principal proporcionadas por Kali Linux
(junto conGNOMO5,KDE6). Puede seleccionar un entorno de escritorio de su elección durante la
instalación. De lo contrario, después de la instalación tiene las opciones adicionales de;i37,i3-brechas
8,COMPAÑERO9,Iluminación10,LXDE11.

Paralelamente, aumentamos nuestros esfuerzos para garantizar que Kali Linux siempre tenga la última versión de todas las aplicaciones de

prueba de penetración. Desafortunadamente, ese objetivo estaba un poco en desacuerdo con el uso deDebian estable12

como base para la distribución, porque requería que hiciéramos backport de muchos paquetes. Esto se debe al
hecho de que Debian Stable le da prioridad a la estabilidad del software, lo que a menudo provoca una gran
demora desde el lanzamiento de una actualización hasta el momento en que se integra en la distribución. Dada
nuestra inversión en integración continua, fue un movimiento bastante natural reorganizar Kali Linux sobre
Pruebas de Debian13para que pudiéramos beneficiarnos de la última versión de todos los paquetes de Debian tan
pronto como estuvieran disponibles. Debian Testing tiene un ciclo de actualización mucho más agresivo, que es
más compatible con la filosofía de Kali Linux.

Este es, en esencia, el concepto de Kali Rolling. Si bien la distribución continua ha estado disponible durante
bastante tiempo, Kali 2016.1 fue el primer lanzamiento que adoptó oficialmente la naturaleza continua de esa
distribución: cuando instala la última versión de Kali, su sistema realmente rastrea la distribución de Kali Rolling y
todos los días recibes nuevas actualizaciones. En el pasado, los lanzamientos de Kali eran instantáneas de la
distribución subyacente de Debian con paquetes específicos de Kali inyectados en ella.

4https://www.xfce.org/
5https://www.gnome.org/
6https://kde.org/
7https://i3wm.org/
8https://github.com/Airblader/i3
9https://mate-desktop.org/
10https://www.iluminación.org/
11https://www.lxde.org/
12https://www.debian.org/releases/stable/
13https://www.debian.org/releases/testing/

Capítulo 1 — Acerca de Kali Linux 3


Una distribución continua tiene muchos beneficios, pero también conlleva múltiples desafíos, tanto para aquellos de
nosotros que estamos creando la distribución como para los usuarios que tienen que lidiar con un flujo interminable de
actualizaciones y, a veces, cambios incompatibles con versiones anteriores. Este libro tiene como objetivo brindarle los
conocimientos necesarios para lidiar con todo lo que pueda encontrar mientras administra su instalación de Kali Linux.

1.2. Relación con Debian

La distribución de Kali Linux se basa enPruebas de Debian14. Por lo tanto, la mayoría de los paquetes disponibles en Kali
Linux provienen directamente de este repositorio de Debian.

Si bien Kali Linux se basa en gran medida en Debian, también es completamenteindependiente15en el sentido de que
tenemos nuestra propia infraestructura y conservamos la libertad de hacer los cambios que queramos.

1.2.1. El flujo de paquetes

En el lado de Debian, los colaboradores trabajan todos los días para actualizar paquetes y subirlos a la
distribución Debian Unstable (Unstable también se conoce comosiddieciséis). A partir de ahí, los paquetes
migran a la distribución Debian Testing una vez que se eliminan los errores más problemáticos. El proceso
de migración también garantiza que no se rompan dependencias en Debian Testing. El objetivo es que
Testing esté siempre en un estado utilizable (¡o incluso liberable!).

Los objetivos de Debian Testing se alinean bastante bien con los de Kali Linux, por lo que lo elegimos como base. Para
agregar los paquetes específicos de Kali en la distribución, seguimos un proceso de dos pasos.

Primero, tomamos Debian Testing e inyectamos a la fuerza nuestros propios paquetes de Kali (ubicados en nuestrokali-dev-
solo repositorio) para construir elkali-devrepositorio. Este repositorio se romperá de vez en cuando: por ejemplo, es posible
que nuestros paquetes específicos de Kali no se puedan instalar hasta que se hayan vuelto a compilar con las bibliotecas
más nuevas. En otras situaciones, es posible que los paquetes que hemos bifurcado también deban actualizarse, ya sea
para volver a ser instalables o para corregir la instalabilidad de otro paquete que depende de una versión más nueva del
paquete bifurcado. En todo caso,kali-devno es para usuarios finales.

rodando kalies la distribución que se espera que los usuarios de Kali Linux sigan y está construida a partir dekali-dev de la
misma manera que Debian Testing se basa en Debian Unstable. Los paquetes migran solo cuando se pueden satisfacer
todas las dependencias en la distribución de destino.

14https://www.debian.org/releases/testing/
15https://www.debian.org/derivatives/
dieciséishttps://www.debian.org/releases/sid/

4 Kali Linux revelado


1.2.2. Manejando la diferencia con Debian

Como decisión de diseño, tratamos de minimizar la cantidad de paquetes bifurcados tanto como sea posible. Sin
embargo, para implementar algunas de las características únicas de Kali, se deben realizar algunos cambios. Para
limitar el impacto de estos cambios, nos esforzamos por enviarlos en sentido ascendente, ya sea integrando la
función directamente o agregando los enlaces necesarios para que sea sencillo habilitar las funciones deseadas sin
modificar más los paquetes ascendentes.

ElRastreador de paquetes Kali17nos ayuda a realizar un seguimiento de nuestra divergencia con Debian. En
cualquier momento, podemos buscar qué paquete se ha bifurcado y si está sincronizado con Debian o si se
requiere una actualización. Todos nuestros paquetes se mantienen enRepositorios Git18alojando una rama de
Debian y una rama de Kali una al lado de la otra. Gracias a esto, actualizar un paquete bifurcado es un proceso
simple de dos pasos: actualice la rama de Debian y luego incorpórela a la rama de Kali.

Si bien la cantidad de paquetes bifurcados en Kali es relativamente baja, la cantidad de paquetes adicionales
es bastante alta: en enero de 2021 había casi50019. La mayoría de estos paquetes son software libre que
cumple con losPautas de software libre de Debian20y nuestro objetivo final sería mantener esos paquetes
dentro de Debian siempre que sea posible. Por eso nos esforzamos por cumplir con lasPolítica de Debian21y
seguir las buenas prácticas de empaquetado utilizadas en Debian. Desafortunadamente, también hay
algunas excepciones en las que fue casi imposible crear un embalaje adecuado. Como resultado de la
escasez de tiempo, se han enviado pocos paquetes a Debian.

1.3. Propósito y casos de uso

Si bien el enfoque de Kali se puede resumir rápidamente como "pruebas de penetración y auditoría de seguridad", hay
muchas tareas diferentes involucradas detrás de esas actividades. Kali Linux está construido como unplataforma, porque
incluye muchas herramientas que cubren casos de uso muy diferentes (aunque ciertamente pueden usarse en
combinación durante una prueba de penetración).

Por ejemplo, Kali Linux se puede usar en varios tipos de computadoras: obviamente en las computadoras portátiles de los
evaluadores de penetración, pero también en los servidores de los administradores de sistemas que desean monitorear su
red, en las estaciones de trabajo de los analistas forenses y, más inesperadamente, en dispositivos integrados sigilosos. ,
generalmente con CPU ARM, que se pueden colocar en el rango de una red inalámbrica o conectar a la computadora de los
usuarios objetivo. Muchos dispositivos ARM también son máquinas de ataque perfectas debido a sus pequeños factores de
forma y bajos requisitos de energía. Kali Linux también se puede implementar en la nube para construir rápidamente una
granja de máquinas para descifrar contraseñas y en teléfonos móviles y tabletas para permitir pruebas de penetración
verdaderamente portátiles.

17https://pkg.kali.org/derivative/kali-dev/
18https://gitlab.com/kalilinux/paquetes
19https://pkg.kali.org/derivative/kali-roll/
20https://www.debian.org/social_contract
21https://www.debian.org/doc/debian-policy/

Capítulo 1 — Acerca de Kali Linux 5


Pero eso no es todo; Los evaluadores de penetración también necesitan servidores: para usar software de colaboración dentro de un equipo

de evaluadores de penetración, configurar un servidor web para usar en campañas de phishing, ejecutar herramientas de escaneo de

vulnerabilidades y otras actividades relacionadas.

Una vez que haya iniciado Kali, descubrirá rápidamente que el menú principal de Kali Linux está organizado por
tema en los diversos tipos de tareas y actividades que son relevantes para los pen-testers y otros profesionales de
la seguridad de la información, como se muestra en la Figura1.1, “Menú de aplicaciones de Kali Linux” [página 6].

Figura 1.1Menú de aplicaciones de Kali Linux

Estas tareas y actividades incluyen:

• Recopilación de información: Recopilación de datos sobre la red de destino y su estructura, identificando las
computadoras, sus sistemas operativos y los servicios que ejecutan. Identificar partes potencialmente
sensibles del sistema de información. Extraer todo tipo de listados de los servicios de directorio en
ejecución.

• Análisis de vulnerabilidades: prueba rápida si un sistema local o remoto se ve afectado por una serie de
vulnerabilidades conocidas o configuraciones inseguras. Los escáneres de vulnerabilidades utilizan bases
de datos que contienen miles de firmas para identificar posibles vulnerabilidades.

• Análisis de Aplicaciones Web: Identificación de errores de configuración y debilidades de seguridad en


aplicaciones web. Es crucial identificar y mitigar estos problemas dado que la disponibilidad pública de estas
aplicaciones las convierte en objetivos ideales para los atacantes.

6 Kali Linux revelado


• Evaluación de la base de datos: desde la inyección de SQL hasta las credenciales de ataque, los ataques a la base de datos son un

vector común para los atacantes. Las herramientas que prueban los vectores de ataque que van desde la inyección de SQL hasta la

extracción y el análisis de datos se pueden encontrar aquí.

• Ataques de contraseña: los sistemas de autenticación siempre son un vector de ataque. Aquí se pueden encontrar
muchas herramientas útiles, desde herramientas de ataque de contraseña en línea hasta ataques fuera de línea
contra los sistemas de cifrado o hash.

• Ataques inalámbricos: la naturaleza omnipresente de las redes inalámbricas significa que siempre serán un
vector comúnmente atacado. Con su amplia gama de soporte para múltiples tarjetas inalámbricas, Kali es
una opción obvia para ataques contra múltiples tipos de redes inalámbricas.

• Ingeniería Inversa: La ingeniería inversa es una actividad con muchos propósitos. En apoyo de
actividades ofensivas, es uno de los principales métodos para la identificación de vulnerabilidades y el
desarrollo de exploits. En el aspecto defensivo, se utiliza para analizar el malware empleado en
ataques dirigidos. En esta capacidad, el objetivo es identificar las capacidades de una determinada
pieza de oficio.

• Herramientas de explotación: Explotar o aprovechar una vulnerabilidad (identificada anteriormente) le


permite obtener el control de una máquina (o dispositivo) remota. Este acceso se puede usar para
más ataques de escalada de privilegios, ya sea localmente en la máquina comprometida o en otras
máquinas accesibles en su red local. Esta categoría contiene una serie de herramientas y utilidades
que simplifican el proceso de escribir sus propios exploits.

• Rastreo y suplantación de identidad: Obtener acceso a los datos mientras viajan por la red suele ser una ventaja para
un atacante. Aquí puede encontrar herramientas de suplantación de identidad que le permiten hacerse pasar por
un usuario legítimo, así como herramientas de rastreo que le permiten capturar y analizar datos de inmediato.
Cuando se usan juntas, estas herramientas pueden ser muy poderosas.

• Explotación posterior: una vez que haya obtenido acceso a un sistema, a menudo querrá mantener ese nivel
de acceso o ampliar el control moviéndose lateralmente a través de la red. Las herramientas que ayudan en
estos objetivos se encuentran aquí.

• Análisis forense: los entornos de arranque en vivo forenses de Linux han sido muy populares desde hace años. Kali contiene
una gran cantidad de herramientas forenses populares basadas en Linux que le permiten hacer de todo, desde la
clasificación inicial hasta la generación de imágenes de datos, el análisis completo y la gestión de casos.

• Herramientas de informes: una prueba de penetración solo se completa una vez que se han informado los hallazgos.
Esta categoría contiene herramientas para ayudar a recopilar los datos recopilados de las herramientas de
recopilación de información, descubrir relaciones no obvias y reunir todo en varios informes.

• Herramientas de ingeniería social: cuando la parte técnica está bien protegida, a menudo existe la posibilidad
de explotar el comportamiento humano como vector de ataque. Si se cuenta con la influencia adecuada, con
frecuencia se puede inducir a las personas a realizar acciones que comprometan la seguridad del medio
ambiente. ¿La llave USB que acaba de conectar la secretaria contenía un PDF inofensivo? ¿O también fue un
caballo de Troya que instaló una puerta trasera? ¿El contador acaba de iniciar sesión en el sitio web bancario
o se usó una copia perfecta con fines de phishing? Esta categoría contiene herramientas que ayudan en este
tipo de ataques.

Capítulo 1 — Acerca de Kali Linux 7


1.4. Características principales de Kali Linux

Kali Linux es una distribución de Linux que contiene su propia colección de cientos de herramientas de software diseñadas
específicamente para sus usuarios objetivo: probadores de penetración y otros profesionales de la seguridad. También
viene con un programa de instalación para configurar completamente Kali Linux como el sistema operativo principal en
cualquier computadora.

Esto es muy parecido a todas las demás distribuciones de Linux existentes, pero hay otras características que diferencian a
Kali Linux, muchas de las cuales se adaptan a las necesidades específicas de los evaluadores de penetración. Echemos un
vistazo a algunas de esas características.

1.4.1. Un sistema vivo

Junto con las imágenes ISO del instalador principal, Kali Linux ofrece una imagen ISO en vivo separada para descargar. Esto
le permite usar Kali Linux como un sistema en vivo de arranque. En otras palabras, puede usar Kali Linux sin instalarlo,
simplemente iniciando la imagen ISO (generalmente después de haber copiado la imagen en una llave USB).

El sistema en vivo contiene las herramientas más utilizadas por los evaluadores de penetración, por lo que incluso si
su sistema diario no es Kali Linux, simplemente puede insertar el disco o la llave USB y reiniciar para ejecutar Kali.
Sin embargo, tenga en cuenta que la configuración predeterminada no conservará los cambios entre reinicios. Si
configuras la persistencia con una llave USB (ver apartado9.4, “Agregar persistencia a Live ISO con una llave USB
” [página 246]), luego puede modificar el sistema a su gusto (modificar archivos de configuración, guardar informes,
actualizar software e instalar paquetes adicionales, por ejemplo), y los cambios se conservarán al reiniciar.

1.4.2. Modo forense

En general, al realizar un trabajo forense en un sistema, desea evitar cualquier actividad que altere los datos del
sistema analizado de alguna manera. Desafortunadamente, los entornos de escritorio modernos tienden a
interferir con este objetivo al intentar montar automáticamente cualquier disco que detecten. Para evitar este
comportamiento, Kali Linux tiene un modo forense que se puede habilitar desde el menú de inicio: deshabilitará
todas esas funciones.

El sistema en vivo es particularmente útil para propósitos forenses, porque es posible reiniciar cualquier
computadora en un sistema Kali Linux sin acceder o modificar sus discos duros.

8 Kali Linux revelado


1.4.3. Un kernel de Linux personalizado

Kali Linux siempre proporciona un reciente personalizadonúcleo de linux22, basado en la versión de Debian Unstable. Esto
asegura un sólido soporte de hardware, especialmente para una amplia gama de dispositivos inalámbricos. el núcleo es
parcheado23para soporte de inyección inalámbrica ya que muchas herramientas de evaluación de seguridad inalámbrica
dependen de esta función.

Dado que muchos dispositivos de hardware requieren archivos de firmware actualizados (que se encuentran en/biblioteca/firmware/),
Kali los instala todos de forma predeterminada, incluido el firmware disponible en Debian'sno libresección. Esos no están instalados
por defecto en Debian, porque son de código cerrado y, por lo tanto, no forman parte de Debian propiamente dicho.

1.4.4. Completamente personalizable

Kali Linux está construido por probadores de penetración para probadores de penetración, pero entendemos que no todos
estarán de acuerdo con nuestras decisiones de diseño o la elección de herramientas para incluir de forma predeterminada.
Con esto en mente, siempre nos aseguramos de que Kali Linux sea fácil de personalizar según sus propias necesidades y
preferencias. Con este fin, publicamos elconstrucción en vivo24configuración utilizada para construir las imágenes oficiales
de Kali para que puedas personalizarlo a tu gusto. Es muy fácil comenzar con esta configuración publicada e implementar
varios cambios según sus necesidades gracias a la versatilidad de Live-Build.

Live-build incluye muchas funciones para modificar el sistema instalado, instalar archivos complementarios, instalar
paquetes adicionales, ejecutar comandos arbitrarios y cambiar los valores predeterminados en debconf.

1.4.5. Un sistema operativo confiable

Los usuarios de una distribución de seguridad legítimamente quieren saber que se puede confiar en ella y que se ha
desarrollado a simple vista, lo que permite que cualquier persona inspeccione el código fuente. Kali Linux es desarrollado
por un pequeño equipo25de desarrolladores expertos que trabajan de manera transparente y siguen las mejores prácticas
de seguridad: cargan paquetes fuente firmados, que luego se crean en demonios de compilación dedicados. Luego, los
paquetes se suman y distribuyen como parte de un repositorio firmado.

El trabajo realizado en los paquetes se puede revisar completamente a través de laempaquetado de repositorios Git26
(que contienen etiquetas firmadas) que se utilizan para construir los paquetes fuente de Kali. La evolución de cada paquete
también se puede seguir a través de laRastreador de paquetes Kali27.

22https://pkg.kali.org/pkg/linux
23https://gitlab.com/kalilinux/packages/linux/-/blob/kali/master/debian/patches/series
24https://gitlab.com/kalilinux/build-scripts/live-build-config
25https://www.kali.org/about-us/
26https://gitlab.com/kalilinux/paquetes
27https://pkg.kali.org/

Capítulo 1 — Acerca de Kali Linux 9


1.4.6. Utilizable en una amplia gama de dispositivos ARM

Kali Linux proporciona paquetes binarios para las arquitecturas armel, armhf y arm64 ARM. Gracias a las imágenes
fácilmente instalables proporcionadas por Offensive Security, Kali Linux se puede implementar en muchos
dispositivos interesantes, desde teléfonos inteligentes y tabletas hasta enrutadores Wi-Fi y computadoras de varias
formas y tamaños.

1.5. Políticas de Kali Linux

Si bien Kali Linux se esfuerza por seguir la política de Debian siempre que sea posible, hay algunas áreas en las que tomamos
decisiones de diseño significativamente diferentes debido a las necesidades particulares de los profesionales de la seguridad.

1.5.1. Servicios de red deshabilitados por defecto

A diferencia de Debian, Kali Linux deshabilita cualquier servicio instalado que escucharía en una interfaz de red
pública de forma predeterminada, como HTTP y SSH.

El fundamento de esta decisión es minimizar la exposición durante una prueba de penetración cuando
es perjudicial anunciar su presencia y detectar riesgos debido a interacciones de red inesperadas.

Todavía puede habilitar manualmente cualquier servicio de su elección ejecutandoHabilitar sudo systemctl servicio.
Volveremos sobre esto en el capítulo5, “Configuración de Kali Linux” [página 108] más adelante en este libro.

1.5.2. Una colección curada de aplicaciones

Debian pretende ser el sistema operativo universal y pone muy pocos límites a lo que se empaqueta,
siempre que cada paquete tenga un mantenedor.

Por el contrario, Kali Linux no incluye todas las herramientas de prueba de penetración disponibles. En cambio, nuestro objetivo es
proporcionar solo las mejores herramientas con licencia libre que cubran la mayoría de las tareas que un probador de penetración
podría querer realizar.

Los desarrolladores de Kali que trabajan como probadores de penetración impulsan el proceso de selección y
aprovechamos su experiencia y conocimientos para tomar decisiones informadas. En algunos casos, esto es un
hecho, pero hay otras opciones más difíciles que simplemente se reducen a preferencias personales.

Estos son algunos de los puntos considerados cuando se evalúa una nueva aplicación:

• La utilidad de la aplicación en un contexto de pruebas de penetración

• La funcionalidad única de las características de la aplicación

10 Kali Linux revelado


• La licencia de la aplicación

• Los requisitos de recursos de la aplicación

Mantener un repositorio de herramientas de prueba de penetración actualizado y útil es una tarea desafiante. Damos la bienvenida
a sugerencias de herramientas dentro de una categoría dedicada (Nuevas solicitudes de herramientas) en elRastreador de errores
de Kali28. Las solicitudes de nuevas herramientas se reciben mejor cuando el envío está bien presentado, incluida una explicación de
por qué la herramienta es útil, cómo se compara con otras aplicaciones similares, etc.

1.6. Resumen

En este capítulo, le presentamos Kali Linux, proporcionamos un poco de historia, repasamos algunas de las
funciones principales y presentamos varios casos de uso. También hemos discutido algunas de las políticas
que hemos adoptado al desarrollar Kali Linux.

Resumen de consejos:

• kali linux29es una distribución de Linux de auditoría de seguridad lista para empresas basada en Debian
GNU/Linux. Kali está dirigido a profesionales de la seguridad y administradores de TI, lo que les permite
realizar pruebas de penetración avanzadas, análisis forenses y auditorías de seguridad.

• A diferencia de la mayoría de los sistemas operativos convencionales, Kali Linux es una distribución continua, lo que significa
queRecibirás actualizaciones todos los días..

• La distribución de Kali Linux se basa enPruebas de Debian30. Por lo tanto, la mayoría de los paquetes
disponibles en Kali Linux provienen directamente de este repositorio de Debian.

• Si bien el enfoque de Kali se puede resumir rápidamente con "pruebas de penetración y auditoría de
seguridad", existen varios casos de uso que incluyen administradores de sistemas que desean monitorear
sus redes, análisis forense, instalaciones de dispositivos integrados, monitoreo inalámbrico, instalación en
plataformas móviles y más.

• Los menús de Kali facilitan el acceso a las herramientas para diversas tareas y actividades, que incluyen: análisis de vulnerabilidades,

análisis de aplicaciones web, evaluación de bases de datos, ataques de contraseña, ataques inalámbricos, ingeniería inversa,

herramientas de explotación, rastreo y suplantación de identidad, herramientas de explotación posterior, análisis forense,

generación de informes. herramientas y herramientas de ingeniería social.

• Kali Linux tiene muchas características avanzadas que incluyen: uso como un sistema vivo (no instalado), un modo
forense sólido y seguro, un kernel de Linux personalizado, la capacidad de personalizar completamente el sistema,
un sistema operativo base confiable y seguro, capacidad de instalación ARM , políticas de red predeterminadas
seguras y un conjunto seleccionado de aplicaciones.

En el próximo capítulo (capítulo2, “Primeros pasos con Kali Linux” [página 14]), entraremos y
probaremos Kali Linux gracias a su modo en vivo.

28https://bugs.kali.org/
29https://www.kali.org
30https://www.debian.org/releases/testing/

Capítulo 1 — Acerca de Kali Linux 11


Palabras clave

Descargar
imagen ISO
Arranque en vivo
Capítulo

Empezar con 2
kali linux
Contenido

Descargar una imagen ISO de Kali14 Inicio de una imagen ISO de Kali en modo en vivo24 Resumen44
A diferencia de otros sistemas operativos, Kali Linux facilita el inicio, gracias al hecho de que unimagen de disco en
vivoestá disponible, lo que significa que puede iniciar la imagen descargada sin seguir ningún procedimiento de
instalación previo. Esto significa que puede usar la misma imagen para realizar pruebas, como una imagen de
DVD-ROM o USB de arranque en un caso forense, o para instalarla como un sistema operativo permanente en
hardware físico o virtual.

Debido a esta simplicidad, es fácil olvidar que se deben tomar ciertas precauciones. Los usuarios de Kali suelen ser
el objetivo de personas con malas intenciones, ya sean grupos patrocinados por el estado, elementos del crimen
organizado o piratas informáticos individuales. La naturaleza de código abierto de Kali Linux hace que sea
relativamente fácil crear y distribuir versiones falsas, por lo que es esencial que adquiera el hábito de descargar
desde fuentes originales y verificar la integridad y la autenticidad de su descarga. Esto es especialmente relevante
para los profesionales de seguridad que a menudo tienen acceso a redes confidenciales y se les confían datos de
clientes.

2.1. Descargar una imagen ISO de Kali

2.1.1. Dónde descargar

La única fuente oficial de imágenes ISO de Kali Linux es la sección de Descargas del sitio web de Kali. Debido
a su popularidad, numerosos sitios ofrecen imágenes de Kali para descargar, pero no deben considerarse
confiables y, de hecho, pueden estar infectadas con malware o causar daños irreparables a su sistema.

mihttps://www.kali.org/descargas/
El sitio web está disponible enHTTPS, lo que dificulta la suplantación. Ser capaz de llevar a cabo un ataque
man-in-the-middle no es suficiente ya que el atacante también necesitaría unwww.kali.orgcertificado firmado
por una autoridad de certificación de seguridad de la capa de transporte (TLS) en la que confía el navegador
de la víctima. Debido a que las autoridades de certificación existen precisamente para prevenir este tipo de
problemas, entregan certificados solo a personas cuyas identidades han sido verificadas y que han
demostrado que controlan el sitio web correspondiente.

cdimage.kali.org Los enlaces que se encuentran en la página de descarga apuntan a lacdimage.kali.orgdominio, que
redirige a un espejo cercano a usted, mejorando su velocidad de transferencia y reduciendo la carga
en los servidores centrales de Kali.

Puede encontrar una lista de espejos disponibles aquí:

mihttps://cdimage.kali.org/README.mirrorlist

2.1.2. Qué descargar

La página de descarga oficial muestra una breve lista de imágenes ISO, como se muestra en la Figura2.1, “Lista de imágenes
ofrecidas para descargar” [página 15].

14 Kali Linux revelado


Figura 2.1Lista de imágenes ofrecidas para descargar

Capítulo 2: Primeros pasos con Kali Linux 15


Todas las imágenes de disco etiquetadas como 64 bits o 32 bits se refieren a imágenes adecuadas para CPU, que se encuentran en la mayoría

de las computadoras portátiles y de escritorio modernas. Si está descargando para usar en una máquina bastante moderna, lo más probable

es que contenga un procesador de 64 bits. Si no está seguro, puede estar seguro de que todos los procesadores de 64 bits pueden ejecutar

instrucciones de 32 bits. Siempre puede descargar y ejecutar la imagen de 32 bits. Sin embargo, lo contrario no es cierto. Consulte la barra

lateral para obtener información más detallada.

Si planea instalar Kali en un dispositivo basado en ARM, debe consultarSeguridad Ofensiva página de
descarga1para la lista de dispositivos disponibles.

¿Mi CPU es de 64 bits o En Microsoft Windows, puede encontrar esta información ejecutando elInformación del sistema
32 bits? aplicación (que se encuentra en la carpeta Accesorios > Herramientas del sistema). En la pantalla
Resumen del sistema, puede inspeccionar el campo Tipo de sistema: contendrá "PC basada en x64"
para una CPU de 64 bits o "PC basada en x86" para una CPU de 32 bits.

En OS X/macOS, no existe una aplicación estándar que muestre esta información, pero aún
puede deducirla a partir de la salida deluname -mejecución del comando en la terminal.
regresaráx86_64en un sistema con un kernel de 64 bits (que solo puede ejecutarse en una CPU
de 64 bits), sistemas con un kernel de 32 bits, devolverái386o algo similar (i486,
i586, oi686), y en sistemas con un kernel arm64, devolverábrazo64. Cualquier kernel de 32 bits
puede ejecutarse en una CPU de 64 bits, pero dado que Apple controla el hardware y el
software, es poco probable que encuentre esta configuración.

En Linux, puede inspeccionar el campo de banderas en el/proc/cpuinfoarchivo virtual Si


contiene elestoyatributo, entonces su CPU es de 64 bits; de lo contrario, es de 32 bits. La
siguiente línea de comando le dirá qué tipo de CPU tiene:

psgrep -qP ' f̂lags\s*:.*\blm\b' /proc/cpuinfo && echo 64 bits


a||eco de 32 bits 64
bits

Ahora que ya sabe si necesita una imagen de 64 bits o de 32 bits, solo queda un paso: seleccionar el tipo de
imagen. Las imágenes disponibles difieren en cómo se instalan. ElInstalador yinstalador de redLas
imágenes, especializadas para una instalación sencilla con opciones de instalación seleccionables, no vienen
con la capacidad de ejecutar el sistema en vivo. ElVivirimage, sin embargo, viene con la capacidad de
ejecutar el sistema en vivo o iniciar el proceso de instalación, aunque carece de las opciones seleccionables
que aparecen en las imágenes de instalación. Las opciones seleccionables incluyen opciones en entornos de
escritorio, así como qué colección de paquetes instalar. Usaremos la imagen en vivo a lo largo de este libro.

Una vez que haya decidido la imagen que necesita, puede descargar la imagen haciendo clic en el
título en la fila respectiva. Alternativamente, puede descargar la imagen de la red punto a punto de
BitTorrent haciendo clic en "Torrent", siempre que tenga un cliente de BitTorrent asociado con el
archivo .torrenteextensión.

Mientras se descarga la imagen ISO elegida, debe tomar nota de la suma de comprobación escrita en la columna
sha256sum. Una vez que haya descargado su imagen, use esta suma de verificación para verificar que

1https://www.offensive-security.com/kali-linux-arm-images/

dieciséis Kali Linux revelado


la imagen descargada coincide con la que el equipo de desarrollo de Kali puso en línea (consulte la sección2.1.3, “
Verificación de integridad y autenticidad” [página 17]).

2.1.3. Verificación de integridad y autenticidad

Los profesionales de la seguridad deben verificar la integridad de sus herramientas para proteger no solo sus datos
y redes, sino también los de sus clientes. Si bien la página de descarga y los enlaces de Kali están protegidos por
TLS, Kali se basa en una red de espejos externos para distribuir la imagen, lo que significa que no debe confiar
ciegamente en lo que descarga. El espejo al que fue dirigido puede haber sido comprometido, o usted mismo
podría ser víctima de un ataque.

Para aliviar esto, el proyecto Kali siempre proporciona sumas de verificación de las imágenes que distribuye. Pero para que
dicha verificación sea efectiva, debe asegurarse de que la suma de verificación que tomó sea efectivamente la suma de
verificación publicada por los desarrolladores de Kali Linux. Tienes diferentes formas de comprobar esto.

Confiar en el sitio web protegido por TLS

Cuando recupera la suma de verificación de la página web de descarga protegida por TLS, su origen está
garantizado indirectamente por el modelo de seguridad del certificado X.509: el contenido que ve proviene de un
sitio web que está efectivamente bajo el control de la persona que solicitó el certificado TLS. .

Ahora debe generar la suma de verificación de su imagen descargada y asegurarse de que coincida
con lo que registró en el sitio web de Kali:

pssha256sum kali-linux-2020.3-live-amd64.iso 1a0b2ea83f48861dd3f3babd5a2892a14b30a7234c8c9b5013a6507d1401874f kali-


linux-2020.3-live-amd64.iso

Si su suma de verificación generada coincide con la de la página de descarga de Kali Linux, tiene el archivo correcto.
Si las sumas de verificación difieren, hay un problema, aunque esto no siempre indica un compromiso o un ataque;
las descargas ocasionalmente se corrompen a medida que atraviesan Internet. Intente su descarga nuevamente,
desde otro espejo oficial de Kali, si es posible (ver “cdimage.kali.org” [página 14] para obtener más información
sobre los espejos disponibles).

Confiar en Web of Trust de PGP

Si no confía en HTTPS para la autenticación, es un poco paranoico, pero con razón. Hay muchos ejemplos de
autoridades de certificación mal administradas que emitieron certificados falsos, que terminaron siendo mal
utilizados. También puede ser víctima de un ataque de intermediario "amigable" implementado en muchas redes
corporativas, utilizando un almacén de confianza personalizado e implantado en el navegador que presenta
certificados falsos a sitios web cifrados, lo que permite a los auditores corporativos monitorear el tráfico cifrado.

Capítulo 2: Primeros pasos con Kali Linux 17


Para casos como este, también proporcionamos una clave GnuPG que usamos para firmar las sumas de verificación de las imágenes que

proporcionamos. Los identificadores de la llave y sus huellas dactilares se muestran aquí:

pub rsa4096 2012-03-05 [SC] [caduca: 2023-01-16] 44C6 513A 8E4F


B3D3 0875 F758 ED44 4FF0 7D8D 0BF6
fluido Repositorio Kali Linux < devel@kali.org >
sub rsa4096 2012-03-05 [E] [expira: 2023-01-16]

Esta clave es parte de un globalred de confianzaporque ha sido firmado al menos por mí (Raphaël Hertzog) y soy
parte de la red de confianza debido a mi uso intensivo de GnuPG como desarrollador de Debian.

El modelo de seguridad PGP/GPG es muy singular. Cualquiera puede generar cualquier clave con
cualquier identidad, pero solo confiaría en esa clave si ha sido firmada por otra clave en la que ya
confía. Cuando firma una clave, certifica que conoció al titular de la clave y que sabe que la identidad
asociada es correcta. Y define el conjunto inicial de claves en las que confía, que obviamente incluye su
propia clave.

Este modelo tiene sus propias limitaciones, por lo que puede optar por descargar la clave pública de Kali a través de
HTTPS (o desde un servidor de claves) y simplemente decidir que confía en él porque su huella digital coincide con
lo que anunciamos en varios lugares, incluso arriba en este libro:

pswget -q -O - https://archive.kali.org/archive-key.asc | gpg --importar [ o ]

psgpg --keyserver hkp://keys.gnupg.net --recv-clave 44C6513A8E4FB3D30875F758ED444FF07D8D0BF6 gpg: clave


ED444FF07D8D0BF6: clave pública ”Repositorio de Kali Linux < devel@kali.org >” importado gpg: Número total procesado:
1
gpg: importado: 1
[...]
psgpg --huella digital 44C6513A8E4FB3D30875F758ED444FF07D8D0BF6 [...]

44C6 513A 8E4F B3D3 0875 F758 ED44 4FF0 7D8D 0BF6
[...]

Una vez que haya recuperado la clave, puede usarla para verificar las sumas de verificación de las imágenes
distribuidas. Descarguemos el archivo con las sumas de verificación (SHA256SUMAS) y el archivo de firma
asociado (SHA256SUMS.gpg) y verificar la firma:

pswget http://cdimage.kali.org/current/SHA256SUMS [...]

pswget http://cdimage.kali.org/current/SHA256SUMS.gpg [...]

psgpg --verificar SHA256SUMS.gpg SHA256SUMS


gpg: Firma realizada el martes 18 de agosto de 2020 10:31:15 a. m. EDT gpg:
utilizando la clave RSA 44C6513A8E4FB3D30875F758ED444FF07D8D0BF6
gpg: Buena firma de "Repositorio Kali Linux < devel@kali.org >"

Si recibe ese mensaje de "Buena firma", puede confiar en el contenido delSHA256SUMASy utilícelo
para verificar los archivos que descargó. De lo contrario, hay un problema. Debe revisar si
descargó los archivos de un espejo legítimo de Kali Linux.

18 Kali Linux revelado


Tenga en cuenta que puede usar la siguiente línea de comando para verificar que el archivo descargado tenga la misma
suma de verificación que se muestra enSHA256SUMAS, siempre que el archivo ISO descargado esté en el mismo directorio:

psgrep kali-linux-2020.3-live-amd64.iso SHA256SUMS | sha256sum-c kali-


linux-2020.3-live-amd64.iso: OK

si no lo consiguesDE ACUERDOen respuesta, entonces el archivo que ha descargado es diferente del


publicado por el equipo de Kali. No se puede confiar y no se debe utilizar.

2.1.4. Copia de la imagen en un DVD-ROM o llave USB

A menos que desee ejecutar Kali Linux en una máquina virtual, la imagen ISO tiene un uso limitado en sí misma.
Debe grabarlo en un DVD-ROM o copiarlo en una llave USB para poder iniciar su máquina en Kali Linux. Hemos
elegido la imagen en vivo de Kali porque deseamos arrancar desde un USB, lo que nos permite usar un entorno en
vivo o instalar la configuración predeterminada de Kali Linux.

No cubriremos cómo grabar la imagen ISO en un DVD-ROM, ya que el proceso varía mucho según la plataforma y el
entorno, pero en la mayoría de los casos, al hacer clic derecho en el.Yo asiEl archivo presentará un elemento de menú
contextual que ejecuta una aplicación de grabación de DVD-ROM. ¡Pruébalo!

Advertencia

En esta sección, aprenderá cómo sobrescribir un disco arbitrario con una imagen ISO de Kali
Linux. Siempre verifique dos veces el disco de destino antes de iniciar la operación, ya que un
solo error probablemente causaría la pérdida completa de datos y posiblemente dañaría su
configuración sin posibilidad de reparación.

Creación de una unidad USB Kali de arranque en Windows

Como requisito previo, debe descargar e instalarGenerador de imágenes de disco Win32:

mihttps://sourceforge.net/projects/win32diskimager/
Conecte su llave USB a su PC con Microsoft Windows y anote el designador de unidad asociado (por
ejemplo, "E:\").

LanzamientoGenerador de imágenes de disco Win32y elija el archivo ISO de Kali Linux que desea copiar en la llave
USB. Verifique que la letra del dispositivo seleccionado se corresponda con la asignada a la llave USB. Una vez que
esté seguro de haber seleccionado la unidad correcta, haga clic en el botón Escribir y confirme que

Capítulo 2: Primeros pasos con Kali Linux 19


desea sobrescribir el contenido de la llave USB como se muestra en la Figura2.2, “Win32 Disk Imager en
acción” [página 20].

Figura 2.2Win32 Disk Imager en acción

Una vez completada la copia, expulse de forma segura la unidad USB de su sistema Microsoft Windows. Ahora
puede usar el dispositivo USB para iniciar Kali Linux.

20 Kali Linux revelado


Creación de una unidad USB Kali de arranque en Linux

Crear una llave USB Kali Linux de arranque en un entorno Linux es fácil. El entorno de escritorio GNOME, que se
instala de forma predeterminada en muchas distribuciones de Linux, viene con unDiscosutilidad (en elgnome-disco-
utilidadpaquete). Ese programa muestra una lista de discos, que se actualiza dinámicamente cuando conecta o
desconecta un disco. Cuando seleccione su llave USB en la lista de discos, aparecerá información detallada que le
ayudará a confirmar que seleccionó el disco correcto. Tenga en cuenta que puede encontrar el nombre de su
dispositivo en la barra de título, como se muestra en la Figura2.3, “Discos GNOME” [página 21].

Figura 2.3Discos GNOME

Haga clic en el botón de menú y seleccione Restaurar imagen de disco... en el menú emergente que aparece. Seleccione la imagen
ISO que descargó anteriormente y haga clic en Comenzar a restaurar... como se muestra en la Figura2.4, “Cuadro de diálogo
Restaurar imagen de disco” [página 21].

Figura 2.4Cuadro de diálogo Restaurar imagen de disco

Capítulo 2: Primeros pasos con Kali Linux 21


Disfrute de una taza de café mientras termina de copiar la imagen en la llave USB (Figura2.5, “Progresión de la
Restauración de la Imagen” [página 22]).

Figura 2.5Progresión de la Restauración de la Imagen

Cree la unidad USB de Aunque el proceso gráfico es bastante sencillo, la operación es igual de sencilla para los
arranque desde el comando usuarios de la línea de comandos.
Línea
Cuando inserte su llave USB, el kernel de Linux la detectará y le asignará un nombre, que se imprime
en los registros del kernel. Puede encontrar su nombre inspeccionando los registros devueltos por
dmesg.

psdmesg
[...]
[ 2596.727036] usb 1-2.1: nuevo dispositivo USB de alta velocidad número 7 usando uhci_hcd
[ 2597.023023] usb 1-2.1: Nuevo dispositivo USB encontrado, idVendor=0781, idProduct=5575,
abcdDispositivo= 1.26
[ 2597.023025] usb 1-2.1: Nuevas cadenas de dispositivo USB: Mfr=1, Product=2,
aNúmero de serie = 3
[ 2597.023026] usb 1-2.1: Producto: Cruzer Glide [ 2597.023026]
usb 1-2.1: Fabricante: SanDisk
[2597.023026] usb 1-2.1: Número de serie: 200533495211C0824E58
[ 2597.025989] almacenamiento usb 1-2.1:1.0: Dispositivo de almacenamiento masivo USB
detectado [ 2597.026064] scsi host3: almacenamiento usb 1-2.1:1.0
[ 2598.055632] scsi 3:0:0:0: acceso directo SanDisk Cruzer Glide 1.26
aPQ: 0 ANSI: 5
[ 2598.058596] sd 3:0:0:0: adjunto scsi genérico sg2 tipo 0
[ 2598.063036] sd 3:0:0:0: [sdb] 31266816 Bloques lógicos de 512 bytes: (16,0 GB
a/14,9 GiB)
[ 2598.067356] sd 3:0:0:0: [sdb] Write Protect está desactivado [ 2598.067361]
sd 3:0:0:0: [sdb] Mode Sense: 43 00 00 00
[ 2598.074276] sd 3:0:0:0: [sdb] Caché de escritura: deshabilitado, caché de lectura: habilitado,
ano es compatible con DPO o FUA
[ 2598.095976] sdb: sdb1
[ 2598.108225] sd 3:0:0:0: [sdb] Disco extraíble SCSI adjunto

Ahora que sabe que la llave USB está disponible como/desarrollo/sdb, puede proceder a
copiar la imagen con eldddominio:

# dd if=kali-linux-2020.3-live-amd64.iso of=/dev/sdb 6129688+0


registros en
6129688+0 registros fuera
3138400256 bytes (3,1 GB, 2,9 GiB) copiados, 678,758 s, 4,6 MB/s

22 Kali Linux revelado


Tenga en cuenta que necesita permisos de root para que esta operación tenga éxito y también debe
asegurarse de que la llave USB no esté en uso. Es decir, debe asegurarse de que ninguna de sus
particiones esté montada. El comando también asume que se ejecuta mientras se encuentra en el
directorio que aloja la imagen ISO; de lo contrario, se deberá proporcionar la ruta completa.

Para referencia,sisignifica "archivo de entrada" ydepara "archivo de salida". ElddEl comando lee los
datos del archivo de entrada y los vuelve a escribir en el archivo de salida. No muestra ninguna
información de progreso, por lo que debe tener paciencia mientras realiza su trabajo (¡no es inusual
que el comando tarde más de media hora!). Mire el LED de actividad de escritura en la llave USB si
desea verificar que el comando funciona. Las estadísticas que se muestran arriba se muestran solo
cuando el comando se ha completado. En OS X/macOS, también puede presionar CTRL+T durante la
operación para obtener información estadística sobre la copia, incluida la cantidad de datos que se
han copiado.

Creación de una unidad USB Kali de arranque en OS X/macOS

OS X/macOS se basa en UNIX, por lo que el proceso de creación de una unidad USB Kali Linux de arranque es
similar al procedimiento de Linux. Una vez que haya descargado y verificado el archivo Kali ISO elegido, usedd
para copiarlo en su memoria USB.

Para identificar el nombre del dispositivo de la llave USB, ejecutelista de utilidades de discopara listar los discos
disponibles en su sistema. A continuación, inserte su llave USB y ejecute ellista de utilidades de discocomando de nuevo.
La segunda salida debe mostrar un disco adicional. Puede determinar el nombre del dispositivo de la llave USB
comparando la salida de ambos comandos. Busque una nueva línea que identifique su disco USB y observe el/dev/
discoXdóndeXrepresenta el ID del disco.

Debe asegurarse de que la llave USB no esté montada, lo que se puede lograr con un comando de
desmontaje explícito (suponiendo que/dev/disco6es el nombre del dispositivo de la llave USB):
psdiskutil desmontar /dev/disk6

Ahora proceda a ejecutar eldddominio. Esta vez, agregue un parámetro complementario:bspara el tamaño del
bloque. Define el tamaño del bloque que se lee del archivo de entrada y luego se escribe en el archivo de salida.
También utilizaremos la ruta del disco sin procesar (representada por elrantesdisco) que permitirá velocidades de
escritura más rápidas.

# dd if=kali-linux-2020.3-live-amd64.iso of=/dev/rdisk2 bs=4m 748+1


registros en
748+1 registros fuera
3138400256 bytes transferidos en 713,156461 segundos (4400718 bytes/seg)

Eso es todo. Su llave USB ahora está lista y puede arrancar desde ella o usarla para instalar Kali Linux.

Arrancar un disco alternativo Para iniciar desde una unidad alternativa en un sistema OS X/macOS, abra el menú de inicio presionando y
en OS X/macOS manteniendo presionada la tecla Opción inmediatamente después de encender el dispositivo y
seleccionando la unidad que desea usar.

Para más información, verBase de conocimiento de Apple2.

Capítulo 2: Primeros pasos con Kali Linux 23


2.2. Inicio de una imagen ISO de Kali en modo en vivo

2.2.1. en una computadora real

Como requisito previo, necesita una llave USB preparada (como se detalla en la sección anterior) o un DVD-
ROM grabado con una imagen ISO de Kali Linux.

El BIOS/UEFI es responsable del proceso de inicio temprano y se puede configurar a través de un software llamado
Configuración. En particular, permite a los usuarios elegir qué dispositivo de arranque prefieren. En este caso,
desea seleccionar la unidad de DVD-ROM o la unidad USB, según el dispositivo que haya creado. Dependiendo de
su BIOS/UEFI, es posible que tenga una opción de menú de inicio de una sola vez, lo que le permite cambiar
temporalmente el orden de inicio.

Iniciar la configuración generalmente implica presionar una tecla en particular poco después de encender la
computadora. Esta clave es a menudoBorraroEscapar,y avecesF2, F8, F10oF12.La mayoría de las veces, la opción
aparece brevemente en la pantalla cuando se enciende la computadora, antes de que se cargue el sistema
operativo.

Una vez que el BIOS/UEFI se haya configurado correctamente para arrancar desde su dispositivo, arrancar Kali
Linux es simplemente una cuestión de insertar el DVD-ROM o conectar la unidad USB y encender la computadora.

Deshabilitar arranque seguro Si bien las imágenes de Kali Linux se pueden iniciar en modo UEFI, no son compatiblesarranque
seguro. Debe deshabilitar esa función en la configuración de su máquina.

2.2.2. En una Máquina Virtual

Las máquinas virtuales tienen múltiples beneficios para los usuarios de Kali Linux. Son especialmente útiles si
desea probar Kali Linux pero no está listo para comprometerse a instalarlo permanentemente en su máquina o si
tiene un sistema potente y desea ejecutar varios sistemas operativos simultáneamente. Esta es una opción popular
para muchos probadores de penetración y profesionales de la seguridad que necesitan usar la amplia gama de
herramientas disponibles en Kali Linux pero aún desean tener acceso completo a su sistema operativo principal.
Esto también les brinda la capacidad de archivar o eliminar de forma segura la máquina virtual y cualquier dato de
cliente que pueda contener en lugar de reinstalar todo el sistema operativo.

Las funciones de instantáneas del software de virtualización también facilitan la experimentación con operaciones
potencialmente peligrosas, como el análisis de malware, al tiempo que permiten una salida fácil al restaurar una
instantánea anterior.

Hay muchas herramientas de virtualización disponibles para todos los principales sistemas operativos, incluidos
VirtualBox®, Estación de trabajo VMware®,Xen,KVM, yHiper-Vpara nombrar unos pocos. En última instancia, utilizará el
que mejor se adapte a usted, pero cubriremos los dos más utilizados en un contexto de escritorio:VirtualBox®y

2https://support.apple.com/en-gb/guide/mac-help/mchlp1034/mac

24 Kali Linux revelado


Estación de trabajo VMware®, ambos se ejecutan en Microsoft Windows 10. Si no tiene restricciones de políticas
corporativas o preferencias personales, nuestra recomendación es que primero pruebe VirtualBox, ya que es gratis,
funciona bien, es (en su mayoría) de código abierto y está disponible para la mayoría de los sistemas operativos.

Para las próximas secciones, asumiremos que ya instaló la herramienta de virtualización adecuada y está
familiarizado con su funcionamiento.

Observaciones preliminares

Para beneficiarse plenamente de la virtualización, debe tener una CPU con las funciones de virtualización
adecuadas y BIOS/UEFI no deben deshabilitarlas. Vuelva a verificar las opciones de "Tecnología de
virtualización Intel®" y/o "Característica Intel® VT-d" en las pantallas de configuración de la máquina.

También debe tener un sistema operativo host de 64 bits, comoamd64arquitectura para distribuciones Linux
basadas en Debian,x86_64arquitectura para distribuciones de Linux basadas en RedHat, y64 bitspara
Microsoft Windows.

Si no cumple alguno de los requisitos previos, la herramienta de virtualización no funcionará correctamente o estará
restringida para ejecutar solo sistemas operativos invitados de 32 bits.

Dado que las herramientas de virtualización se conectan al sistema operativo host y al hardware a un nivel bajo, a menudo existen
incompatibilidades entre ellas. No espere que estas herramientas funcionen bien al mismo tiempo. Además, los usuarios de
Microsoft Windows deben tener en cuenta que las ediciones profesionales o superiores vienen conHiper-V instalado y activado, lo
que podría interferir con la herramienta de virtualización de su elección. Para desactivarlo, ejecute "Activar o desactivar las
características de Windows" desde la Configuración de Windows.

caja virtual

Después de la instalación inicial, la pantalla principal de VirtualBox se parece a la Figura2.6, “Pantalla de inicio
de Virtual-Box” [página 26].

Capítulo 2: Primeros pasos con Kali Linux 25


Figura 2.6Pantalla de inicio de VirtualBox

Haga clic en Nuevo (Figura2.7, “Nombre y Sistema Operativo” [página 27]) para iniciar un asistente que lo guiará a
través de los múltiples pasos necesarios para ingresar todos los parámetros de la nueva máquina virtual.

26 Kali Linux revelado


Figura 2.7Nombre y Sistema Operativo

En el primer paso, que se muestra en la figura2.7, “Nombre y Sistema Operativo” [página 27], debe asignar
un nombre a su nueva máquina virtual. Usaremos “Kali Linux”. También debe indicar qué tipo de sistema
operativo se utilizará. Dado que Kali Linux se basa en Debian GNU/Linux, seleccione "Linux" para el tipo y
"Debian (32 bits)" o "Debian (64 bits)" para la versión. Aunque lo más probable es que funcione cualquier otra
versión de Linux, esto ayudará a distinguir entre las diversas máquinas virtuales que podría tener instaladas.

Capítulo 2: Primeros pasos con Kali Linux 27


Figura 2.8Tamaño de la memoria

En el segundo paso, debe decidir cuánta memoria asignar a la máquina virtual. Si bien el tamaño recomendado de
1024 MB es aceptable para una máquina virtual Debian que actúa como servidor, definitivamente no es suficiente
para ejecutar un sistema de escritorio Kali, especialmente para un sistema Kali Linux en vivo, ya que el sistema en
vivo usa memoria para almacenar los cambios realizados. al sistema de archivos. Recomendamos aumentar el valor
a 1500 MB (Figura2.8, “Tamaño de la memoria” [página 28]) y le recomendamos que asigne no menos de 2048 MB
de RAM. Para obtener más información, consulte la sección4.1, “Requisitos mínimos de instalación” [página 66]

28 Kali Linux revelado


Figura 2.9Disco duro

En el tercer paso (que se muestra en la Figura2.9, “Disco duro” [página 29]), se le pedirá que elija un disco duro
físico o virtual para su nueva máquina virtual. Aunque no se requiere un disco duro para ejecutar Kali Linux como
un sistema en vivo, agregue uno para cuando demostremos el procedimiento de instalación más adelante, en el
capítulo4, “Instalando KaliLinux” [página 66].

Capítulo 2: Primeros pasos con Kali Linux 29


Figura 2.10Tipo de archivo de disco duro

El contenido del disco duro de la máquina virtual se almacena en la máquina host como un archivo. VirtualBox
puede almacenar el contenido del disco duro utilizando múltiples formatos (se muestra en la Figura2.10, “Tipo de
archivo de disco duro” [página 30]): el valor predeterminado (VDI)corresponde al formato nativo de VirtualBox;
VMDKes el formato utilizado por VMware. Mantenga el valor predeterminado, porque no tiene ningún motivo para
cambiarlo. La capacidad de usar múltiples formatos es interesante principalmente cuando desea mover una
máquina virtual de una herramienta de virtualización a otra.

30 Kali Linux revelado


Figura 2.11Almacenamiento en disco duro físico

El texto explicativo en la Figura2.11, “Almacenamiento en disco duro físico” [página 31] describe claramente las
ventajas y desventajas de la asignación de disco fija y dinámica. En este ejemplo, aceptamos la selección
predeterminada (Asignación dinámica), ya que estamos usando una computadora portátil con discos SSD. No
queremos desperdiciar espacio y no necesitaremos un poco más de rendimiento ya que, para empezar, la máquina
ya es bastante rápida.

Capítulo 2: Primeros pasos con Kali Linux 31


Figura 2.12Ubicación y tamaño del archivo

El tamaño de disco duro predeterminado de 20 GB que se muestra en la figura2.12, “Ubicación y tamaño del archivo
” [página 32] es suficiente para una instalación estándar de Kali Linux, por lo que no lo cambiaremos. Para obtener más
información sobre los requisitos de Kali, consulte la sección4.1, “Requisitos mínimos de instalación” [página 66]. También
puede modificar el nombre y la ubicación de la imagen del disco. Esto puede ser útil cuando no tiene suficiente espacio en
su disco duro, lo que le permite almacenar la imagen del disco en una unidad externa.

32 Kali Linux revelado


Figura 2.13La nueva máquina virtual aparece en la lista

La máquina virtual se ha creado, pero aún no puede ejecutarla porque no hay un sistema operativo instalado.
También tiene algunas configuraciones para modificar. Haga clic en Configuración en la pantalla Administrador de
VM y revisemos algunas de las configuraciones más útiles.

Capítulo 2: Primeros pasos con Kali Linux 33


Figura 2.14Configuración de almacenamiento

En la pantalla Almacenamiento (Figura2.14, “Configuración de almacenamiento” [página 34]), debe asociar la imagen ISO
de Kali Linux con el lector virtual de CD/DVD-ROM. Primero, seleccione la unidad de CD-ROM en la lista del árbol de
almacenamiento y luego haga clic en el icono pequeño de CD-ROM a la derecha para mostrar un menú contextual donde
puedeElija Archivo de disco óptico virtual….

34 Kali Linux revelado


Figura 2.15Configuración del sistema: placa base

En la pantalla del sistema (Figura2.15, “Configuración del sistema: placa base” [página 35]), encontrará una pestaña Placa
base. Asegúrese de que el orden de arranque indique que el sistema primero intentará arrancar desde cualquier
dispositivo óptico antes de intentarlo desde un disco duro. Esta es también la pestaña donde puede modificar la cantidad
de memoria asignada a la máquina virtual, en caso de necesidad.

Capítulo 2: Primeros pasos con Kali Linux 35


Figura 2.16Configuración del sistema: Procesador

En la misma pantalla pero en la pestaña “Procesador” (Figura2.16, “Configuración del sistema: Procesador” [página 36]),
puede ajustar la cantidad de procesadores asignados a la máquina virtual. Lo que es más importante, si usa una imagen de
32 bits, habilite PAE/NX o la imagen de Kali no se iniciará ya que la variante de kernel predeterminada utilizada por Kali
para i386 (acertadamente llamada "686-pae") está compilada de una manera que requiere Physical Soporte de extensión
de dirección (PAE) en la CPU.

Hay muchos otros parámetros que se pueden configurar, como la configuración de la red (que define cómo se maneja el tráfico en
la tarjeta de red), pero los cambios anteriores son suficientes para poder iniciar un sistema Kali Linux en vivo que funcione.
Finalmente, haga clic en Arrancar y la máquina virtual debería arrancar correctamente, como se muestra en la Figura2.17, “Pantalla
de arranque de Kali Linux en VirtualBox” [página 37]. Si no es así, revise detenidamente todas las configuraciones y vuelva a
intentarlo.

36 Kali Linux revelado


Figura 2.17Pantalla de arranque de Kali Linux en VirtualBox

VMware Estación de trabajo

VMware Estación de trabajoes muy similar acaja virtualen términos de funciones e interfaz de usuario, porque ambos están
diseñados principalmente para uso de escritorio, pero el proceso de configuración para una nueva máquina virtual es un
poco diferente. estaremos usandoEstación de trabajo VMware Proedición.

Capítulo 2: Primeros pasos con Kali Linux 37


Figura 2.18Pantalla de inicio de VMware

La pantalla inicial, que se muestra en la Figura2.18, “Pantalla de inicio de VMware” [página 38], muestra un botón
grande Crear una nueva máquina virtual que inicia un asistente para guiarlo a través de la creación de su máquina
virtual.

Figura 2.19Asistente para nueva máquina virtual

38 Kali Linux revelado


En el primer paso, debe decidir si desea que se le presenten configuraciones avanzadas durante el proceso
de configuración. En este ejemplo, no hay requisitos especiales, así que elija la instalación típica, como se
muestra en la Figura2.19, “Asistente para nueva máquina virtual” [página 38].

Figura 2.20Instalación del sistema operativo invitado

El asistente asume que desea instalar el sistema operativo inmediatamente y le pide que seleccione la imagen ISO
que contiene el programa de instalación (Figura2.20, “Instalación del sistema operativo invitado” [página 39]).
Seleccione "Archivo de imagen de disco de instalación (iso)" y haga clic en Examinar para seleccionar el archivo de
imagen.

Capítulo 2: Primeros pasos con Kali Linux 39


Figura 2.21Seleccione un sistema operativo invitado

Cuando no se puede detectar el sistema operativo a partir de la imagen ISO seleccionada, el asistente le pregunta qué tipo
de sistema operativo invitado desea ejecutar. Debe seleccionar "Linux" para el sistema operativo y "Debian 10.x de 64 bits"
para la versión, como se muestra en la Figura2.21, “Seleccione un sistema operativo invitado” [página 40]. Seleccionamos
"Debian 10.x" debido a que Kali Linux se actualiza constantemente a lael más nuevoversión de Debian.

40 Kali Linux revelado


Figura 2.22Asigne un nombre a la máquina virtual

Elija "Kali Linux" como el nombre de la nueva máquina virtual (Figura2.22, “Asigne un nombre a la máquina virtual” [página
41]). Al igual que con VirtualBox, también tiene la opción de almacenar los archivos de la máquina virtual en una ubicación
alternativa.

Figura 2.23Especificar la capacidad del disco

Capítulo 2: Primeros pasos con Kali Linux 41


El tamaño de disco duro predeterminado de 20 GB (Figura2.23, “Especificar la capacidad del disco” [página 41]) suele ser
suficiente, pero puede ajustarlo aquí en función de sus necesidades previstas. A diferencia de VirtualBox, que puede usar
un solo archivo de tamaño variable, VMware tiene la capacidad de almacenar el contenido del disco en varios archivos. En
ambos casos, el objetivo es conservar el espacio en disco del host.

Figura 2.24Listo para crear una máquina virtual

VMware Workstation ahora está configurado para crear la nueva máquina virtual. Muestra un resumen de las
elecciones realizadas para que pueda verificar todo antes de crear la máquina. Observe que el asistente optó por
asignar 2048 MB de RAM a la máquina virtual, que es suficiente para nuestras necesidades. Si el valor asignado es
más bajo, eso no es suficiente, así que haga clic en Personalizar hardware... (Figura2.24, “Listo para crear una
máquina virtual” [página 42]) y modifique la configuración de Memoria, como se muestra en la Figura2.25, “
Configurar ventana de hardware” [página 43].

42 Kali Linux revelado


Figura 2.25Configurar ventana de hardware

Después de un último clic en Finalizar (Figura2.24, “Listo para crear una máquina virtual” [página 42]), la máquina
virtual ahora está configurada y se puede iniciar haciendo clic en ”Encender esta máquina virtual” como se muestra
en la Figura2.26, “Listo para la máquina virtual Kali Linux” [página 44].

Capítulo 2: Primeros pasos con Kali Linux 43


Traducido del inglés al español - www.onlinedoctranslator.com

Figura 2.26Listo para la máquina virtual Kali Linux

2.3. Resumen

En este capítulo, aprendió sobre las diversas imágenes ISO de Kali Linux, aprendió cómo verificarlas y
descargarlas, y aprendió cómo crear discos USB de arranque a partir de ellos en varios sistemas operativos.
También discutimos cómo iniciar los discos USB y revisamos cómo configurar el BIOS/UEFI y las
configuraciones de inicio en varias plataformas de hardware para que los discos USB se inicien.

Resumen de consejos:

• www.kali.orges el único sitio oficial de descarga de Kali ISO. No los descargues de ningún
otro sitio, porque esas descargas podrían contener malware.

• Valida siempre el sha256sum de tus descargas con elsha256sumcomando para garantizar la


integridad de su descarga ISO. Si no coincide, intente la descarga nuevamente o use una fuente
diferente.

• Debe escribir la imagen ISO de Kali Linux en un dispositivo de inicio si desea iniciarlo en una máquina
física. UsarGenerador de imágenes de disco Win32en Microsoft Windows, elUtilidad de discosen Linux
usando GNOME, o elddcomando en Mac OS X/macOS/Linux. Sermuy cuidadosoal escribir la imagen.
Seleccionar el disco incorrecto podría dañar permanentemente los datos en su máquina.

• Configure las pantallas de configuración de BIOS/UEFI en una PC o mantenga presionada la teclaOpciónclave en OS X/macOS para

permitir que la máquina arranque desde la unidad USB.

• Programas de máquinas virtuales comocaja virtualyEstación de trabajo VMware Proson especialmente útiles
si desea probar Kali Linux pero no está listo para comprometerse a instalarlo permanentemente en

44 Kali Linux revelado


su máquina o si tiene un sistema potente y desea ejecutar varios sistemas operativos
simultáneamente.

Ahora que tiene una instalación funcional de Kali Linux, es hora de profundizar en algunos aspectos básicos de
Linux que se requieren para el funcionamiento básico y avanzado de Kali. Si usted es un usuario de Linux moderado
a avanzado, considere hojear el próximo capítulo (capítulo3, “Fundamentos de Linux” [página 48]).

Capítulo 2: Primeros pasos con Kali Linux 45


Palabras clave

núcleo de linux
Espacio de usuario

Línea de comando
intento

Jerarquía del sistema de archivos

Comandos Unix
Capítulo

Fundamentos de Linux 3
Contenido

¿Qué es Linux y qué hace?48 La línea de comando51 El sistema de archivos54

Comandos útiles56 Resumen62


Antes de que pueda dominar Kali Linux, debe sentirse cómodo con un sistema Linux genérico. El dominio de Linux le
resultará muy útil, ya que un gran porcentaje de la web, el correo electrónico y otros servicios de Internet se ejecutan en
servidores Linux.

En esta sección, nos esforzamos por cubrir los conceptos básicos de Linux, pero asumimos que ya conoce
los sistemas informáticos en general, incluidos componentes como la CPU, la RAM, la placa base y el disco
duro, así como los controladores de dispositivos y sus conectores asociados. .

3.1. ¿Qué es Linux y qué hace?

El término "Linux" se usa a menudo para referirse a todo el sistema operativo, pero en realidad, Linux es el
kernel del sistema operativo, que es iniciado por el cargador de arranque, que a su vez es iniciado por BIOS/
UEFI. El núcleo asume un papel similar al de un director de orquesta: garantiza la coordinación entre el
hardware y el software. Este rol incluye la gestión de hardware, procesos, usuarios, permisos y el sistema de
archivos. El núcleo proporciona una base común para todos los demás programas del sistema y, por lo
general, se ejecuta enanillo cero, también conocido comoespacio del núcleo.

El espacio del usuario Usamos el términoespacio de usuariopara agrupar todo lo que sucede fuera del
núcleo.

Entre los programas que se ejecutan en el espacio del usuario se encuentran muchas utilidades principales
delproyecto GNU1, la mayoría de los cuales están destinados a ejecutarse desde la línea de comandos. Puede
usarlos en scripts para automatizar muchas tareas. Consulte la sección3.4, “Comandos útiles” [página 56]
para obtener más información sobre los comandos más importantes.

Repasemos rápidamente las diversas tareas que maneja el kernel de Linux.

3.1.1. Hardware de conducción

El kernel tiene la tarea, ante todo, de controlar los componentes de hardware de la computadora. Los detecta y
configura cuando la computadora se enciende, o cuando se inserta o retira un dispositivo (por ejemplo, un
dispositivo USB). También los pone a disposición del software de nivel superior, a través de una interfaz de
programación simplificada, para que las aplicaciones puedan aprovechar los dispositivos sin tener que abordar
detalles como en qué ranura de extensión está conectada una placa opcional. La interfaz de programación también
proporciona una capa de abstracción; esto permite que el software de videoconferencia, por ejemplo, use una
cámara web independientemente de su fabricante y modelo. El software puede utilizar elVídeo para Linux (V4L) y el
kernel traducirá las llamadas de función de la interfaz en comandos de hardware reales que necesita la cámara web
específica en uso.

El kernel exporta datos sobre el hardware detectado a través del/proceso/y/sistema/sistemas de archivos virtuales. Las aplicaciones a
menudo acceden a los dispositivos a través de archivos creados dentro/desarrollador/. Representante de archivos específicos

1https://www.gnu.org/

48 Kali Linux revelado


reenviar unidades de disco (por ejemplo,/desarrollador/sda), particiones (/dev/sda1), ratones (/dev/entrada/mouse0),
teclados (/dev/entrada/evento0), tarjetas de sonido (/dev/snd/*), puertos seriales (/dev/ttyS*), y otros componentes.

Hay dos tipos de archivos de dispositivo:bloquearypersonaje. El primero tiene características de un bloque de


datos: tiene un tamaño finito y puede acceder a los bytes en cualquier posición del bloque. Este último se comporta
como un flujo de caracteres. Puede leer y escribir caracteres, pero no puede buscar una posición dada y cambiar
bytes arbitrarios. Para averiguar el tipo de archivo de un dispositivo dado, inspeccione la primera letra en la salida
dels-l. es cualquierab,para dispositivos de bloque, oC,para dispositivos de caracteres:

psls -l /dev/sda /dev/ttyS0


brw-rw---- 1 disco raíz 8, 0 21 de marzo 08:44 /dev/sda crw-rw---- 1
llamada raíz 4, 64 30 de marzo 08:59 /dev/ttyS0

Como es de esperar, las unidades de disco y las particiones utilizan dispositivos de bloque, mientras que el ratón, el teclado
y los puertos serie utilizan dispositivos de caracteres. En ambos casos, la interfaz de programación incluye comandos
específicos del dispositivo que se pueden invocar a través delioctlllamada del sistema.

3.1.2. Unificación de sistemas de archivos

Los sistemas de archivos son un aspecto destacado del kernel. Los sistemas similares a Unix combinan todos los almacenes de
archivos en una sola jerarquía, lo que permite a los usuarios y las aplicaciones acceder a los datos conociendo su ubicación dentro
de esa jerarquía.

El punto de partida de este árbol jerárquico se llama la raíz, representada por el “/" personaje. Este
directorio puede contener subdirectorios con nombre. por ejemplo, elhogarsubdirectorio de/se llama
/hogar/. Este subdirectorio puede, a su vez, contener otros subdirectorios, y así sucesivamente. Cada directorio
también puede contener archivos, donde se almacenarán los datos. De este modo,/home/kali/Escritorio/hola.txtse
refiere a un archivo llamadohola.txtalmacenado en elEscritoriosubdirectorio de lakalisubdirectorio de lahogar
directorio, presente en la raíz. El kernel traduce entre este sistema de nombres y la ubicación de almacenamiento
en un disco.

A diferencia de otros sistemas, Linux posee solo una jerarquía de este tipo y puede integrar datos de varios
discos. Uno de estos discos se convierte en raíz y los otros sonmontadoen directorios en la jerarquía (el
comando de Linux se llamamontar). Estos otros discos están entonces disponibles bajo el puntos de montaje.
Esto permite almacenar los directorios de inicio de los usuarios (tradicionalmente almacenados dentro de/
hogar/) en un disco duro separado, que contendrá elkali(junto con los directorios de inicio de otros usuarios).
Una vez que monte el disco en/hogar/, estos directorios se vuelven accesibles en sus ubicaciones habituales y
rutas como/home/kali/Escritorio/hola.txtsigue trabajando.

Hay muchos formatos de sistemas de archivos, correspondientes a muchas formas de almacenar datos físicamente
en discos. Los más conocidos sonext2,ext3, yext4, pero existen otros. Por ejemplo,VFATes el sistema de archivos
que históricamente fue utilizado por los sistemas operativos DOS y Microsoft Windows. El soporte de Linux para
VFAT permite que los discos duros sean accesibles tanto en Kali como en Microsoft Windows. En cualquier caso,
debe preparar un sistema de archivos en un disco antes de poder montarlo y esta operación es

Capítulo 3 — Fundamentos de Linux 49


conocido comoformato. Comandos comomkfs.ext4(dóndemkfsrepresentaHACER SISTEMA DE ARCHIVOS) manejar el
formato. Estos comandos requieren, como parámetro, un archivo de dispositivo que represente la partición a
formatear (por ejemplo,/desarrollo/sda1, la primera partición en la primera unidad). Esta operación es destructiva y
debe ejecutarse solo una vez, a menos que desee borrar un sistema de archivos y comenzar de nuevo.

También hay sistemas de archivos de red como NFS, que no almacenan datos en un disco local. En cambio,
los datos se transmiten a través de la red a un servidor que los almacena y los recupera a pedido. Gracias a
la abstracción del sistema de archivos, no tiene que preocuparse por cómo se conecta este disco, ya que los
archivos permanecen accesibles en su forma jerárquica habitual.

3.1.3. Gestión de procesos

Un proceso es una instancia en ejecución de un programa, que requiere memoria para almacenar tanto el
programa en sí como sus datos operativos. El kernel está a cargo de crear y rastrear procesos. Cuando se ejecuta
un programa, el kernel primero reserva algo de memoria, carga el código ejecutable del sistema de archivos y
luego inicia la ejecución del código. Mantiene información sobre este proceso, la más visible de las cuales es un
número de identificación conocido como elidentificador de proceso(DPI).

Como la mayoría de los sistemas operativos modernos, aquellos con núcleos tipo Unix, incluido
Linux, son capaces de realizar múltiples tareas. En otras palabras, permiten que el sistema
ejecute muchos procesos al mismo tiempo. En realidad, solo hay un proceso en ejecución a la vez,
pero el kernel divide el tiempo de la CPU en pequeñas porciones y ejecuta cada proceso por
turno. Dado que estos intervalos de tiempo son muy cortos (en el rango de milisegundos), crean
la apariencia de procesos que se ejecutan en paralelo, aunque están activos solo durante su
intervalo de tiempo y están inactivos el resto del tiempo. El trabajo del núcleo es ajustar sus
mecanismos de programación para mantener esa apariencia, mientras maximiza el rendimiento
del sistema global. Si los intervalos de tiempo son demasiado largos, es posible que la aplicación
no responda tan bien como se desea. Demasiado corto, y el sistema pierde tiempo cambiando
tareas con demasiada frecuencia.

Sistemas multiprocesador La limitación descrita anteriormente, de solo un proceso ejecutándose a la vez, no siempre se aplica:
(y variantes) la restricción real es que solo puede haber un proceso en ejecuciónpor núcleo de procesador.
Multiprocesador, multinúcleo ohiper-hiloLos sistemas permiten que varios procesos se ejecuten en
paralelo. Sin embargo, se utiliza el mismo sistema de división de tiempo para manejar casos en los
que hay más procesos activos que núcleos de procesador disponibles. Esto no es inusual: un sistema
básico, incluso uno en su mayoría inactivo, casi siempre tiene decenas de procesos en ejecución.

El kernel permite que se ejecuten varias instancias independientes del mismo programa, pero cada una puede acceder
solo a sus propios intervalos de tiempo y memoria. Por lo tanto, sus datos permanecen independientes.

50 Kali Linux revelado


3.1.4. Gestión de Derechos

Los sistemas similares a Unix admiten múltiples usuarios y grupos y permiten el control de permisos. La mayoría
de las veces, un proceso es identificado por el usuario que lo inició. Ese proceso solo puede realizar acciones
permitidas para su propietario. Por ejemplo, abrir un archivo requiere que el núcleo verifique la identidad del
proceso con los permisos de acceso (para obtener más detalles sobre este ejemplo en particular, consulte la
sección3.4.4, “Gestión de derechos” [página 57]).

3.2. La línea de comando

Por "línea de comandos", nos referimos a una interfaz basada en texto que le permite ingresar comandos,
ejecutarlos y ver los resultados. Puede ejecutar una terminal (una pantalla de texto dentro del escritorio gráfico o la
propia consola de texto fuera de cualquier interfaz gráfica) y un intérprete de comandos dentro de ella (la cáscara).

3.2.1. Cómo obtener una línea de comando

Cuando su sistema funciona correctamente, la forma más fácil de acceder a la línea de comandos es ejecutar una
terminal en su sesión de escritorio gráfico.

Figura 3.1Iniciando QTerminal

Capítulo 3 — Fundamentos de Linux 51


Por ejemplo, en un sistema Kali Linux predeterminado, QTerminal se puede iniciar desde la lista de aplicaciones
favoritas. También puede escribir "terminal" mientras está en el menú de aplicaciones (el que se activa cuando
mueve el mouse hacia la esquina superior izquierda) y hacer clic en el ícono de la aplicación correcta que aparece
(Figura3.1, “Iniciando QTerminal” [página 51]).

En el caso de que su interfaz gráfica no funcione, aún puede obtener una línea de comando en las consolas
virtuales (se puede acceder a hasta seis de ellas a través de las seis combinaciones de teclas de CTRL+ALT+F1
a CTRL+ALT+F6 — laCONTROLpuede omitirse si ya está en modo texto, fuera de Xorg o de la interfaz gráfica
de Wayland). Obtiene una pantalla de inicio de sesión muy básica donde ingresa su nombre de usuario y
contraseña antes de que se le otorgue acceso a la línea de comando con su shell:

Kali GNU/Linux Rodando kali tty3

inicio de sesión kali:kali


Contraseña:
Linux kali 5.7.0-kali1-amd64 #1 SMP Debian 5.7.6-1kali2 (2020-07-01) X86_64

Los programas incluidos con el sistema Kali GNU/Linux son software libre; los términos de
distribución exactos para cada programa se describen en los archivos individuales en /usr/
share/doc/*/copyright.

Kali GNU/Linux viene SIN GARANTÍA EN ABSOLUTO, en la medida permitida por la


ley aplicable.
kali@kali :~$

El programa que maneja su entrada y ejecuta sus comandos se llamacaparazón(o un intérprete de


línea de comandos). El shell predeterminado provisto en Kali Linux esIntento(lo que representaBourne
Again Shell). El carácter final "$" o "#" indica que el shell está esperando su entrada. También indica si
Bash lo reconoce como un usuario normal (el primer caso con el dólar, $) o como un superusuario (el
último caso con el hash, #).

3.2.2. Conceptos básicos de la línea de comandos: exploración del árbol de directorios y administración de archivos

Esta sección solo proporciona una breve descripción general de los comandos cubiertos, todos los cuales tienen muchas
opciones que no se describen aquí, así que consulte la abundante documentación disponible en sus respectivas páginas de
manual. En las pruebas de penetración, la mayoría de las veces recibirá acceso de shell a un sistema después de una
explotación exitosa, en lugar de una interfaz gráfica de usuario. El dominio de la línea de comandos es esencial para su
éxito como profesional de la seguridad.

Una vez abierta una sesión, elpersonas con discapacidadcomando (que significaimprimir directorio de trabajo)
muestra su ubicación actual en el sistema de archivos. El directorio actual se cambia con elcddirectorio
dominio (cdes paracambio de directorio). Cuando no especifica el directorio de destino, se le lleva a su
directorio de inicio. cuando usascd -(guión), vuelve al directorio de trabajo anterior (el que estaba en uso
antes del últimocdllamar). El directorio padre siempre se llama .. (dos puntos), mientras que

52 Kali Linux revelado


el directorio actual también se conoce como . (un punto). Ellsel comando permitelistadoel contenido de
un directorio. Si no proporciona parámetros,lsopera en el directorio actual.

pspersonas con discapacidad

/inicio/kali
pscd de escritorio
pspersonas con discapacidad

/inicio/kali/Escritorio
pscd .
pspersonas con discapacidad

/inicio/kali/Escritorio
pscd ..
pspersonas con discapacidad

/inicio/kali
psls
Escritorio Descargas Fotos Plantillas
Documentos Música Público Vídeos

Puede crear un nuevo directorio conmkdirdirectorioy elimine un directorio existente (vacío) conrmdir
directorio. Elm.v.el comando permiteMovientey renombrar archivos y directorios;quitandose logra un
archivo conrmarchivo, y la copia de un archivo se realiza conc.p.archivo de origen archivo de destino.

psprueba mkdir
psls
Escritorio Descargas Imágenes Plantillas Vídeos Música
Documentos Público prueba

psmv prueba nuevo


psls
Escritorio Descargas nuevo Público Vídeos
Documentos Música Fotos Plantillas
psrmdir nuevo
psls
Escritorio Descargas Imágenes Plantillas Vídeos Música
Documentos Público

El shell ejecuta cada comando ejecutando el primer programa del nombre dado que encuentra en un directorio
listado en elCAMINOVariable ambiental. La mayoría de las veces, estos programas están en/papelera,
/sbin,/usuario/bin, o/usuario/sbin. por ejemplo, ellsEl comando se encuentra en/papelera/ls; elcual
El comando informa la ubicación de un ejecutable determinado. A veces, el comando es manejado directamente por el
shell, en cuyo caso, se denomina comando incorporado del shell (cdypersonas con discapacidadestán entre ellos); el
tipoEl comando le permite consultar el tipo de cada comando.

psecho $RUTA
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin $cual es

/bin/ls
pstipo rm

Capítulo 3 — Fundamentos de Linux 53


rm es /bin/rm
pstipo de disco compacto

cd es un shell incorporado

Tenga en cuenta el uso de laecocomando, que simplemente muestra una cadena en la terminal. En este caso,
se usa para imprimir el contenido de una variable de entorno ya que el shell sustituye automáticamente las
variables con sus valores antes de ejecutar la línea de comando.

Variables de entorno Las variables de entorno permiten el almacenamiento de configuraciones globales para el shell u
otros programas. Son contextuales pero heredables. Por ejemplo, cada proceso tiene su propio
conjunto de variables de entorno (son contextuales). Los shells, como los shells de inicio de sesión,
pueden declarar variables, que se transmitirán a otros programas que ejecuten (son heredables).

Estas variables se pueden definir para todo el sistema en/etc/perfilo por usuario en~/
. perfilpero es mejor incluir las variables que no son específicas de los intérpretes de línea de
comandos./etc/medio ambiente, ya que esas variables se inyectarán en todas las sesiones de usuario
gracias a un módulo de autenticación conectable (PAM), incluso cuando no se ejecute ningún shell.

3.3. El sistema de archivos

3.3.1. El estándar de jerarquía del sistema de archivos

Al igual que con otras distribuciones de Linux, Kali Linux está organizado para ser consistente con elEstándar de jerarquía
del sistema de archivos(FHS), lo que permite a los usuarios de otras distribuciones de Linux orientarse fácilmente en Kali. El
FHS define el propósito de cada directorio. Los directorios de nivel superior se describen a continuación.

• /papelera/: programas básicos

• /bota/: kernel de Kali Linux y otros archivos necesarios para su proceso de inicio temprano

• /desarrollador/: archivos de dispositivo

• /etc/: Archivos de configuración

• /hogar/: archivos personales del usuario

• /libre/: bibliotecas básicas

• /medios de comunicación/: puntos de montaje para dispositivos extraíbles (CD/DVD-ROM, llaves USB, etc.)

• /mnt/: punto de montaje temporal

• /optar/: aplicaciones adicionales proporcionadas por terceros

• /raíz/: archivos personales del administrador (raíz)

• /correr/: datos de tiempo de ejecución volátiles que no persisten entre reinicios (aún no incluidos en el FHS)

54 Kali Linux revelado


• /sbin/: programas del sistema

• /srv/: datos utilizados por los servidores alojados en este sistema

• /tmp/: archivos temporales (este directorio a menudo se vacía al arrancar)

• /usuario/: aplicaciones (este directorio se subdivide enpapelera,sbin,liberaciónde acuerdo con la misma lógica que
en el directorio raíz) Además,/usr/compartir/contiene datos independientes de la arquitectura. El/usuario/local/El
directorio está destinado a ser utilizado por el administrador para instalar aplicaciones manualmente sin
sobrescribir los archivos manejados por el sistema de empaquetado.
(dpkg).
• /var/: datos variables manejados por los servicios. Esto incluye archivos de registro, colas, colas y cachés.

• /proceso/y/sistema/son específicos del kernel de Linux (y no forman parte del FHS). Son utilizados por el kernel
para exportar datos al espacio del usuario.

3.3.2. Directorio de inicio del usuario

El contenido del directorio de inicio de un usuario no está estandarizado, pero aún existen algunas convenciones
dignas de mención. Una es que el directorio de inicio de un usuario a menudo se menciona con una tilde ("~"). Es
útil saberlo porque los intérpretes de comandos reemplazan automáticamente una tilde con el directorio correcto
(que se almacena en elHOGARvariable de entorno, y cuyo valor habitual es/hogar/usuario/).

Tradicionalmente, los archivos de configuración de la aplicación a menudo se almacenan directamente en su directorio de inicio, pero los

nombres de los archivos generalmente comienzan con un punto (por ejemplo, elchuchocliente de correo electrónico almacena su configuración

en~/.muttrc). Tenga en cuenta que los nombres de archivo que comienzan con un punto están ocultos de forma predeterminada; ellsel

comando solo los enumera cuando el -aSe utiliza la opción y los administradores de archivos gráficos deben configurarse explícitamente para

mostrar archivos ocultos.

Algunos programas también usan múltiples archivos de configuración organizados en un directorio (por ejemplo,~/
. ssh/). Algunas aplicaciones (como el navegador web Firefox) también usan su directorio para almacenar un caché
de datos descargados. Esto significa que esos directorios pueden terminar consumiendo mucho espacio en disco.

Estos archivos de configuración se almacenan directamente en su directorio de inicio, a menudo denominados


colectivamente comoarchivos de puntos, han proliferado durante mucho tiempo hasta el punto de que estos directorios
pueden estar bastante abarrotados de ellos. Afortunadamente, un esfuerzo liderado colectivamente bajo la
FreeDesktop.org2paraguas ha resultado en la Especificación de directorio base XDG, una convención que tiene como
objetivo limpiar estos archivos y directorios. Esta especificación establece que los archivos de configuración deben
almacenarse bajo~/.configuración, archivos de caché bajo~/.cachey archivos de datos de aplicaciones bajo~/.local(o
subdirectorios de los mismos). Esta convención está ganando terreno lentamente.

Los escritorios gráficos suelen tener accesos directos para mostrar el contenido del~/Escritorio/directorio (o
cualquiera que sea la traducción apropiada para sistemas no configurados en inglés).

2https://www.freedesktop.org/

Capítulo 3 — Fundamentos de Linux 55


Finalmente, el sistema de correo electrónico a veces almacena los correos electrónicos entrantes en un~/Correo/directorio.

3.4. Comandos útiles

3.4.1. Visualización y modificación de archivos de texto

Elgatoarchivocomando (destinado aconcatenararchivos al dispositivo de salida estándar) lee un archivo y muestra su


contenido en el terminal. Si el archivo es demasiado grande para caber en una pantalla, puede usar un buscapersonas
comomenos(omás) para mostrarlo página por página.

EleditorEl comando inicia un editor de texto (como Vi o Nano) y permite crear, modificar y leer archivos
de texto. Los archivos más simples a veces se pueden crear directamente desde el intérprete de
comandos gracias a la redirección:dominio>archivocrea un archivo llamadoarchivoque contiene la salida
del comando dado.dominio>>archivoes similar, excepto que agrega la salida del comando al archivo en
lugar de sobrescribirlo.

psecho "¡Kali gobierna!" > kali-reglas.txt ps


gato kali-reglas.txt
Kali gobierna!
psecho "¡Kali es el mejor!" >> kali-reglas.txt psgato kali-
reglas.txt
Kali gobierna!
¡Kali es lo mejor!

3.4.2. Búsqueda de archivos y dentro de archivos

Elencontrarcriterios de directorioEl comando busca archivos en la jerarquía bajodirectoriosegún varios


criterios. El criterio más utilizado es:nombreNombre del archivo, que permite buscar un archivo por
su nombre. También puede usar comodines comunes como "*" en la búsqueda de nombre de archivo.

psencontrar /etc -nombre


hosts /etc/hosts
/etc/avahi/servidores
psencontrar /etc -nombre ”hosts*”
/etc/hosts
/etc/hosts.permitir
/etc/hosts.deny
/etc/avahi/servidores

Elgreparchivos de expresiónEl comando busca el contenido de los archivos y extrae las líneas que coinciden con
la expresión regular. Agregando el -rLa opción habilita una búsqueda recursiva en todos los archivos
contenidos en el directorio. Esto le permite buscar un archivo cuando solo conoce una parte de su contenido.

56 Kali Linux revelado


3.4.3. Gestión de procesos

Elpd auxiliarEl comando enumera los procesos que se están ejecutando actualmente y ayuda a identificarlos mostrando su
PID. Una vez que sepas elPIDde un proceso, elmatar -pid de señalEl comando le permite enviarle una señal (si es el
propietario del proceso). Existen varias señales; más comúnmente utilizados sonTÉRMINO (una solicitud para terminar con
gracia) yMATAR (un asesinato forzado).

El intérprete de comandos también puede ejecutar programas en segundo plano si el comando va seguido
de “&”. Al usar el ampersand, reanuda el control del shell inmediatamente aunque el comando aún se esté
ejecutando (oculto a la vista como un proceso en segundo plano). Eltrabajosel comando enumera los
procesos que se ejecutan en segundo plano; correrfg %Número de empleo(paraprimer plano) restaura un
trabajo al primer plano. Cuando un comando se ejecuta en primer plano (ya sea porque se inició
normalmente o porque volvió al primer plano confg), la combinación de teclas Control+Z detiene el proceso
y reanuda el control de la línea de comandos. El proceso se puede reiniciar en segundo plano con% de
volumenNúmero de empleo(parafondo).

3.4.4. Gestión de derechos

Linux es un sistema multiusuario por lo que es necesario proporcionar un sistema de permisos para controlar el conjunto
de operaciones autorizadas sobre archivos y directorios, que incluye todos los recursos y dispositivos del sistema (en un
sistema Unix, cualquier dispositivo está representado por un archivo o directorio). Este principio es común a todos los
sistemas similares a Unix.

Cada archivo o directorio tiene permisos específicos para tres categorías de usuarios:

• Su dueño (simbolizado portu,como en Usuario)

• Su grupo propietario (simbolizado porgramo,como en Grupo), en representación de todos los miembros del grupo

• Los otros (simbolizados poro,como en Otro)

Se pueden combinar tres tipos de derechos:

• Lectura (simbolizada porr,como en Leer);

• Escribir (o modificar, simbolizado porw,como en Escribir);

• Ejecutar (simbolizado porX,como en ejecutar).

En el caso de un archivo, estos derechos se entienden fácilmente: el acceso de lectura permite leer el contenido (incluida la
copia), el acceso de escritura permite modificarlo y el acceso de ejecución permite ejecutarlo (que solo funcionará si se
trata de un programa).

setuidoysetgid Dos derechos particulares son relevantes para los archivos ejecutables:setuidoysetgid(simbolizado con la letra
ejecutables “s”). Tenga en cuenta que con frecuencia hablamos de bit, ya que cada uno de estos valores booleanos se
puede representar con un 0 o un 1. Estos dos derechos permiten que cualquier usuario pueda ejecutar el
programa con los derechos del propietario o del grupo, respectivamente. este mecanismo

Capítulo 3 — Fundamentos de Linux 57


otorga acceso a funciones que requieren permisos de mayor nivel que los que normalmente
tendría.

Desde unsetuidoEl programa raíz se ejecuta sistemáticamente bajo la identidad de superusuario, es


muy importante asegurarse de que sea seguro y confiable. Cualquier usuario que logre subvertir un
programa raíz setuid para llamar a un comando de su elección podría hacerse pasar por el usuario
raíz y tener todos los derechos en el sistema. Los evaluadores de penetración buscan regularmente
este tipo de archivos cuando obtienen acceso a un sistema como una forma de escalar sus
privilegios.

Un directorio se maneja de manera diferente a un archivo. El acceso de lectura da derecho a consultar


la lista de sus contenidos (archivos y directorios); el acceso de escritura permite crear o eliminar
archivos; y ejecutar acceso permite cruzar el directorio para acceder a su contenido (por ejemplo, con
elcddominio). Poder recorrer un directorio sin poder leerlo da permiso al usuario para acceder a las
entradas del mismo que se conocen por su nombre, pero no para encontrarlas sin saber su nombre
exacto.

SEGURIDAD Elsetgidbit también se aplica a los directorios. A cualquier elemento recién creado en dichos

setgiddirectorio ypegajoso directorios se le asigna automáticamente el grupo propietario del directorio principal, en lugar de

pocoheredar el grupo principal del creador como de costumbre. Debido a esto, no tienes que cambiar tu
grupo principal (con elnuevo grupocomando) cuando se trabaja en un árbol de archivos compartido
entre varios usuarios del mismo grupo dedicado.

Elpoco pegajoso(simbolizado por la letra “t”) es un permiso que solo es útil en directorios. Se utiliza
especialmente para directorios temporales en los que todo el mundo tiene acceso de escritura (como
/tmp/): restringe la eliminación de archivos para que solo su propietario o el propietario del directorio
principal pueda eliminarlos. Sin esto, todos podrían eliminar los archivos de otros usuarios en/tmp/.

Tres comandos controlan los permisos asociados con un archivo:

• Chonarchivo de usuariocambia el propietario del archivo

• chgrparchivo de grupoaltera el grupo propietario

• chmodarchivo de derechoscambia los permisos para el archivo

CONSEJO Con frecuencia desea cambiar el grupo de un archivo al mismo tiempo que cambia el
Cambio de usuario y propietario. ElChonEl comando tiene una sintaxis especial para eso:Chonusuario:grupo
grupo archivo

Hay dos formas de representar los derechos. Entre ellos, la representación simbólica es probablemente la más fácil de
comprender y recordar. Se trata de los símbolos de letras mencionados anteriormente. Puede definir derechos para cada
categoría de usuarios (u/g/o),estableciéndolos explícitamente (con =), agregando (+),o restando (-). Por lo tanto, la
u=rwx,g+rw,oLa fórmula otorga al propietario derechos de lectura, escritura y ejecución, agrega derechos de lectura y
escritura para el grupo de propietarios y elimina los derechos de lectura para otros usuarios.

58 Kali Linux revelado


Los derechos no alterados por la suma o resta en dicho mandato permanecen sin modificación. La cartaa,para
todos, cubre las tres categorías de usuarios, de modo quea = rxotorga a las tres categorías los mismos derechos
(lectura y ejecución, pero no escritura).

La representación numérica (octal) asocia cada derecho con un valor: 4 para leer, 2 para escribir y 1
para ejecutar. Asociamos cada combinación de derechos a la suma de las tres cifras, y se asigna un
valor a cada categoría de usuarios, en el orden habitual (propietario, grupo, otros).

por ejemplo, elmod 754archivoel comando establecerá los siguientes derechos: lectura, escritura y ejecución para el
propietario (ya que 7 = 4 + 2 + 1); leer y ejecutar para el grupo (ya que 5 = 4 + 1); de sólo lectura para otros. El0
significa sin derechos; de este modomod 600archivopermite permisos de lectura y escritura para el propietario, y
ningún derecho para nadie más. Las combinaciones correctas más frecuentes son755para archivos ejecutables y
directorios, y644para archivos de datos.

Para representar derechos especiales, puede anteponer un cuarto dígito a este número de acuerdo con el
mismo principio, donde elsetuid, setgid,ypegajosolos bits son 4, 2 y 1, respectivamente. El comando
chmod 4754asociará elsetuidobit con los derechos antes descritos.
Tenga en cuenta que el uso de la notación octal solo le permite establecer todos los derechos a la vez en un archivo; no
puede usarlo para agregar un nuevo derecho, como acceso de lectura para el propietario del grupo, ya que debe tener en
cuenta los derechos existentes y calcular el nuevo valor numérico correspondiente.

La representación octal también se utiliza con elmáscaracomando, que se utiliza para restringir los permisos en los
archivos recién creados. Cuando una aplicación crea un archivo, asigna permisos indicativos, sabiendo que el
sistema elimina automáticamente los derechos definidos conmáscara. Ingresarmáscaraen una concha; verá una
máscara como0022. Esta es simplemente una representación octal de los derechos que se eliminarán
sistemáticamente (en este caso, los derechos de escritura para el grupo y otros usuarios).

Si le das un nuevo valor octal, elmáscaraEl comando modifica la máscara. Se utiliza en un archivo de inicialización de
shell (por ejemplo,~/.bash_perfil), cambiará efectivamente la máscara predeterminada para sus sesiones de trabajo.

CONSEJO A veces tenemos que cambiar los derechos de un árbol de archivos completo. Todos los comandos anteriores

operación recursiva tienen un-ROpción para operar recursivamente en subdirectorios.

La distinción entre directorios y archivos a veces causa problemas con las operaciones recursivas. Por
eso se ha introducido la letra “X” en la representación simbólica de los derechos. Representa un
derecho de ejecución que se aplica solo a los directorios (y no a los archivos que carecen de este
derecho). De este modo,chmod -R a+Xdirectoriosolo agregará derechos de ejecución para todas las
categorías de usuarios (a) para todos los subdirectorios y archivos para los que al menos una
categoría de usuario (incluso si es su único propietario) ya tiene derechos de ejecución.

Capítulo 3 — Fundamentos de Linux 59


3.4.5. Obtención de información y registros del sistema

Elgratisel comando muestra información en la memoria; (d.f.(paradisco libre) informa sobre el espacio en
disco disponible en cada uno de los discos montados en el sistema de archivos. Es -hopción (paralegible por
humanos) convierte los tamaños en una unidad más legible (generalmente mebibytes o gibibytes). De
manera similar, elgratisEl comando admite el -metroy -gramoy muestra sus datos en mebibytes o en
gibibytes, respectivamente.
psgratis
total usado gratis compartido beneficio/caché disponible
Memoria: 2052944 661232 621208 10520 770504 1359916
Intercambio: 0 0 0
psd.f.
sistema de archivos 1K-bloques Usado Disponible Uso % Montado en
udev 1014584 0 1014584 0% /desv.
tmpfs 205296 8940 196356 5% /ejecutar

/dev/vda1 30830588 11168116 18073328 39% /


tmpfs 1026472 456 1026016 1% /desarrollo/shm

tmpfs 5120 0 5120 0% /ejecutar/bloquear

tmpfs 1026472 0 1026472 0% /sys/fs/cgrupo


tmpfs 205296 36 205260 1% /ejecutar/usuario/132
tmpfs 205296 24 205272 1% /ejecutar/usuario/0

ElidentificaciónEl comando muestra la identidad del usuario que ejecuta la sesión junto con la lista de grupos a los que
pertenecen. Dado que el acceso a algunos archivos o dispositivos puede estar limitado a los miembros del grupo, puede
ser útil verificar la membresía del grupo disponible.

psidentificación

uid=1000(kali) gid=1000(kali) grupos=1000(kali),27(sudo)

Eluname -aEl comando devuelve una sola línea que documenta el nombre del kernel (linux),el nombre de host, la
versión del kernel, la versión del kernel, el tipo de máquina (una cadena de arquitectura comox86_64), y el nombre
del sistema operativo (GNU/Linux).El resultado de este comando generalmente debe incluirse en los informes de
errores, ya que define claramente el kernel en uso y la plataforma de hardware en la que se está ejecutando.

psuname -a
Linux kali 5.8.0-kali3-amd64 #1 SMP Debian 5.8.14-1kali1 (2020-10-13) x86_64 GNU/Linux

Todos estos comandos brindan información en tiempo de ejecución, pero a menudo necesita consultar los registros
para comprender qué sucedió en su computadora. En particular, el núcleo emite mensajes que almacena en un
búfer de anillo cada vez que sucede algo interesante (como la inserción de un nuevo dispositivo USB, una operación
fallida del disco duro o la detección inicial de hardware en el arranque). Puede recuperar los registros del núcleo
con eldmesgdominio.

El diario de Systemd también almacena varios registros (salida estándar/stderr de servicios, mensajes de registro
del sistema, registros del núcleo) y facilita su consulta condiarioctl. Sin ningún argumento, simplemente vuelca

60 Kali Linux revelado


todos los registros disponibles de forma cronológica. Con el-ropción, invertirá el orden para que los mensajes más
nuevos se muestren primero. Con el-Fopción, imprimirá continuamente nuevas entradas de registro a medida que
se agregan a su base de datos. El-tuLa opción puede limitar los mensajes a los emitidos por una unidad systemd
específica (por ejemplo:journalctl -u ssh.servicio).

3.4.6. Descubriendo el hardware

El kernel exporta muchos detalles sobre el hardware detectado a través del/proceso/y/sistema/sistemas de


archivos virtuales. Varias herramientas resumen esos detalles. Entre ellos,lspci(en elpciutilspaquete) enumera
los dispositivos PCI,susb(en elusbutilspaquete) enumera los dispositivos USB ylspcmcia(en elpcmciautils
paquete) enumera las tarjetas PCMCIA. Estas herramientas son muy útiles para identificar el modelo exacto
de un dispositivo. Esta identificación también permite búsquedas más precisas en la web, lo que a su vez
conduce a documentos más relevantes. Tenga en cuenta que elpciutilsyusbutilsLos paquetes ya están
instalados en el sistema Kali base, peropcmciautilsdebe instalarse conactualización adecuadaseguido porapt
instalar pcmciautils. Discutiremos más sobre la instalación y administración de paquetes en la sección8.2, “
Interacción básica del paquete” [página 181]

Ejemplo 3.1Ejemplo de información proporcionada porlspciysusb

pslspci
[...]
00:02.1 Controlador de pantalla: Intel Corporation Mobile 915GM/GMS/910GML Express Graphics Controller (rev. 03) 00:1c.0 Puente PCI: Intel
Corporation 82801FB/FBM/FR/FW/FRW (familia ICH6) Puerto PCI Express 1 (rev. 03) 03) 00:1d.0 Controlador USB: Intel Corporation 82801FB/
FBM/FR/FW/FRW (Familia ICH6) USB UHCI #1 (rev 03)
[...]
01:00.0 Controlador Ethernet: Broadcom Corporation NetXtreme BCM5751 Gigabit Ethernet PCI Express (rev. 01) 02:03.0 Controlador de red:
Intel Corporation PRO/Wireless 2200BG Network Connection (rev. 05)
pssusb
Bus 005 Dispositivo 004: ID 413c:a005 Dell Computer Corp. Bus 005
Dispositivo 008: ID 413c:9001 Dell Computer Corp. Bus 005
Dispositivo 007: ID 045e:00dd Microsoft Corp.
Bus 005 Dispositivo 006: ID 046d:c03d Logitech, Inc. [...]

Bus 002 Dispositivo 004: ID 413c:8103 Dell Computer Corp. Wireless 350 Bluetooth

Estos programas tienen un -vopción que enumera información mucho más detallada (pero generalmente innecesaria).
Finalmente, ellsdevcomando (en elprocinfopaquete) enumera los recursos de comunicación utilizados por los dispositivos.

EllshwEl programa es una combinación de los programas anteriores y muestra una descripción larga del
hardware descubierto de manera jerárquica. Debe adjuntar su resultado completo a cualquier informe
sobre problemas de soporte de hardware.

Capítulo 3 — Fundamentos de Linux 61


3.5. Resumen

En esta sección, hicimos un recorrido vertiginoso por el panorama de Linux. Discutimos el kernel y el espacio del usuario,
revisamos muchos comandos comunes de shell de Linux, discutimos los procesos y cómo administrarlos, revisamos los
conceptos de seguridad de usuarios y grupos, discutimos el FHS y recorrimos algunos de los directorios y archivos más
comunes que se encuentran en Kali Linux.

Resumen de consejos:

• Linux se usa a menudo para referirse a todo el sistema operativo, pero en realidad Linux en sí mismo es el
núcleo del sistema operativo que inicia el cargador de arranque, que a su vez es iniciado por el BIOS/UEFI.

• El espacio de usuario se refiere a todo lo que sucede fuera del kernel. Entre los programas que se ejecutan
en el espacio del usuario, hay muchas utilidades básicas delproyecto GNU3, la mayoría de los cuales están
destinados a ejecutarse desde la línea de comandos (una interfaz basada en texto que le permite ingresar
comandos, ejecutarlos y ver los resultados). Un shell ejecuta sus comandos dentro de esa interfaz.

• Los comandos comunes incluyen:personas con discapacidad(imprimir directorio de trabajo),cd(cambio de directorio),ls(


enumerar el contenido del archivo o directorio),mkdir(crear directorio),rmdir(eliminar directorio),m.v.,rm, y
c.p.(mover, eliminar o copiar archivos o directorios respectivamente),gato(concatenar o mostrar archivo),
menos/más(mostrar archivos una página a la vez),editor(iniciar un editor de texto),encontrar(localizar un archivo o
directorio),gratis(mostrar información de la memoria),d.f.(mostrar espacio libre en disco),identificación(mostrar la
identidad del usuario junto con la lista de grupos a los que pertenece),dmesg(revisar los registros del núcleo), y
diarioctl(mostrar todos los registros disponibles).

• Puede inspeccionar el hardware en un sistema Kali con varios comandos:lspci(enumerar dispositivos PCI),susb(
lista de dispositivos USB), ylspcmciaenumera las tarjetas PCMCIA.

• Un proceso es una instancia en ejecución de un programa, que requiere memoria para almacenar tanto el
programa en sí como sus datos operativos. Puede administrar procesos con comandos como:PD(mostrar
procesos),matar(matar procesos),bg(enviar el proceso a segundo plano),fg(traer el proceso de fondo al primer
plano), ytrabajos(mostrar procesos en segundo plano).

• Los sistemas similares a Unix son multiusuario. Admiten múltiples usuarios y grupos y permiten el control
sobre las acciones, en función de los permisos. Puede administrar los derechos de archivos y directorios con
varios comandos, incluidos:chmod(cambiar permisos),Chon(cambiar de propietario), ychgrp
(cambio de grupo).

• Al igual que con otras distribuciones profesionales de Linux, Kali Linux está organizado para ser consistente con el
Sistema de archivosJerarquíaEstándar(FHS), lo que permite a los usuarios que provienen de otras distribuciones de
Linux orientarse fácilmente en Kali.

• Tradicionalmente, los archivos de configuración de aplicaciones se almacenan en su directorio de inicio, en archivos


o directorios ocultos que comienzan con un punto (o punto).

3https://www.gnu.org/

62 Kali Linux revelado


Ahora que domina los fundamentos de Linux, configuremos y ejecutemos Kali Linux.

Capítulo 3 — Fundamentos de Linux 63


Palabras clave

Instalación
Desesperado
instalación
dispositivos ARM
Solución de problemas
Capítulo

Instalando KaliLinux 4
Contenido

Requisitos mínimos de instalación66 Instalación paso a paso en un disco duro66 Instalaciones desatendidas95

Instalaciones ARM98 Solución de problemas de instalaciones99 Resumen104


En este capítulo, nos centraremos en el proceso de instalación de Kali Linux. Primero, discutiremos los
requisitos mínimos de instalación (sección4.1, “Requisitos mínimos de instalación” [página 66]) para
asegurarse de que su sistema real o virtual esté bien configurado para manejar el tipo de instalación que
buscará. Luego repasaremos cada paso del proceso de instalación (sección4.2, “Instalación paso a paso en
un disco duro” [página 66]) para una instalación simple, así como para una instalación más segura que
involucre un sistema de archivos completamente encriptado. también discutiremospresembrado, que
permite instalaciones desatendidas (apartado4.3, “Instalaciones desatendidas” [página 95]) proporcionando
respuestas predeterminadas a las preguntas de instalación. También le mostraremos cómo instalar Kali
Linux en varios dispositivos ARM (sección4.4, “Instalaciones ARM” [página 98]), que amplía las capacidades de
Kali mucho más allá del escritorio. Finalmente, le mostraremos qué hacer en el raro caso de que falle la
instalación (sección4.5, “Solución de problemas de instalaciones” [página 99]), para que pueda resolver el
problema y finalizar con éxito una instalación difícil.

4.1. Requisitos mínimos de instalación

Los requisitos de instalación de Kali Linux varían según lo que desee instalar. En el extremo inferior, puede
configurar Kali como un servidor Secure Shell (SSH) básico sin escritorio, utilizando tan solo 128 MB de RAM (se
recomiendan 512 MB) y 2 GB de espacio en disco. En el extremo superior, si opta por instalar el escritorio Xfce
predeterminado y elkali-linux-predeterminadometapaquete, realmente debería aspirar a por lo menos 2048 MB de
RAM y 20 GB de espacio en disco.

Además de los requisitos de RAM y disco duro, su computadora debe tener una CPU compatible con al
menos una de las arquitecturas amd64, i386 o arm64.

4.2. Instalación paso a paso en un disco duro

En esta sección, asumimos que tiene una unidad USB o DVD de arranque (consulte la sección2.1.4, “Copia de la imagen en
un DVD-ROM o llave USB” [página 19] para obtener detalles sobre cómo preparar una unidad de este tipo) y que arrancó
desde ella para iniciar el proceso de instalación.

4.2.1. Instalación simple

Primero, veremos una instalación estándar de Kali, con un sistema de archivos sin cifrar.

Arrancar e iniciar el instalador

Una vez que el BIOS/UEFI ha comenzado a arrancar desde la unidad USB o DVD-ROM, aparece el menú del
cargador de arranque isolinux, como se muestra en la Figura4.1, “Pantalla de arranque” [página 67]. En esta etapa,
el kernel de Linux aún no está cargado; este menú le permite elegir el kernel para arrancar e ingresar parámetros
opcionales para transferirlos en el proceso.

66 Kali Linux revelado


Usando las teclas de flecha para una instalación estándar, elija Instalación gráfica o Instalar (para el modo
de texto clásico), luego presione la teclaIngresarpara iniciar el resto del proceso de instalación.

Cada entrada del menú oculta una línea de comando de arranque específica, que se puede configurar según sea necesario
presionando el botónPestañaclave antes de validar la entrada y arrancar.

Figura 4.1Pantalla de arranque

Una vez iniciado, el programa de instalación lo guía paso a paso a través del proceso. Echaremos un vistazo a
cada uno de estos pasos en detalle. Cubriremos la instalación desde una imagen en vivo estándar de Kali
Linux; instalaciones de unmini.isopuede verse ligeramente diferente. También abordaremos la instalación en
modo gráfico, pero la única diferencia con la instalación clásica en modo texto es la apariencia. Las versiones
plantean preguntas idénticas y presentan opciones idénticas.

Selección del idioma

Como se muestra en la figura4.2, “Selección del idioma” [página 68], el programa de instalación
comienza en inglés pero el primer paso le permite elegir el idioma que se utilizará para el resto del

Capítulo 4: Instalación de Kali Linux 67


proceso de instalación. Esta elección de idioma también se utiliza para definir opciones predeterminadas más relevantes en etapas
posteriores (en particular, la distribución del teclado).

Navegando con el Algunos pasos del proceso de instalación requieren que ingrese información. Estas pantallas tienen
Teclado varias áreas que pueden enfocarse (área de entrada de texto, casillas de verificación, lista de
opciones, botones Aceptar y Cancelar), y la tecla Tab le permite pasar de una a otra.

En el modo de instalación gráfica, puede usar el mouse como lo haría normalmente en un


escritorio gráfico instalado.

Figura 4.2Selección del idioma

Selección del país

El segundo paso (Figura4.3, “Selección del país” [página 69]) consiste en elegir tu país. Combinada con
el idioma, esta información permite que el programa de instalación ofrezca la distribución de teclado
más adecuada. Esto también influirá en la configuración de la zona horaria. En los Estados Unidos, se
sugiere un teclado QWERTY estándar y el instalador presenta una selección de zonas horarias
apropiadas.

68 Kali Linux revelado


Figura 4.3Selección del país

Selección del diseño del teclado

El teclado de inglés americano propuesto corresponde al diseño QWERTY habitual, como se muestra en la
Figura4.4, “Elección de teclado” [página 70].

Capítulo 4: Instalación de Kali Linux 69


Figura 4.4Elección de teclado

Detección de hardware

En la gran mayoría de los casos, el paso de detección de hardware es completamente automático. El instalador detecta su
hardware e intenta identificar el dispositivo de arranque utilizado para acceder a su contenido. Carga los módulos
correspondientes a los distintos componentes de hardware detectados y luego monta el dispositivo de arranque para
poder leerlo. Los pasos anteriores estaban completamente contenidos en la imagen de arranque incluida en el dispositivo
de arranque, un archivo de tamaño limitado y cargado en la memoria por el gestor de arranque al arrancar desde el
dispositivo de arranque.

Cargando Componentes

Con el contenido del dispositivo de arranque ahora disponible, el instalador carga todos los archivos necesarios
para continuar con su trabajo. Esto incluye controladores adicionales para el hardware restante (especialmente la
tarjeta de red), así como todos los componentes del programa de instalación.

70 Kali Linux revelado


Detección de hardware de red

En este paso, el instalador intentará identificar automáticamente la tarjeta de red y cargar el módulo
correspondiente. Si la detección automática falla, puede seleccionar manualmente el módulo para cargar. Si todo lo
demás falla, puede cargar un módulo específico desde un dispositivo extraíble. Esta última solución generalmente
solo se necesita si el controlador apropiado no está incluido en el kernel estándar de Linux, pero está disponible en
otro lugar, como el sitio web del fabricante.

Este paso debe ser absolutamente exitoso para las instalaciones de red (como las que se realizan al arrancar
desde unmini.iso), ya que los paquetes Debian deben cargarse desde la red.

Configuración de la red

Para automatizar el proceso tanto como sea posible, el instalador intenta una configuración de red
automática utilizando el Protocolo de configuración dinámica de host (DHCP) (para IPv4 e IPv6) y el Protocolo
de descubrimiento de vecinos de ICMPv6 (para IPv6), como se muestra en la Figura4.5, “Autoconfiguración
de red” [página 71].

Figura 4.5Autoconfiguración de red

Capítulo 4: Instalación de Kali Linux 71


Si falla la configuración automática, el instalador ofrece más opciones: vuelva a intentarlo con una configuración de
DHCP normal, intente la configuración de DHCP declarando el nombre de la máquina o establezca una
configuración de red estática.

Esta última opción requiere una dirección IP, una máscara de subred, una dirección IP para una puerta de enlace potencial, un
nombre de máquina y un nombre de dominio.

Configuración sin Si la red local está equipada con un servidor DHCP que no desea utilizar porque prefiere
DHCP definir una dirección IP estática para la máquina durante la instalación, puede agregar
elnetcfg/use_dhcp=falsoopción al arrancar. Solo necesita editar la entrada de menú
deseada presionando la tecla Tab y agregando la opción deseada antes de presionar la
tecla Enter.

Creación de usuarios

El instalador solicita la creación de un nuevo usuario (Figura4.6, “Crear usuario” [página 73]) ya que
automáticamente crea una cuenta de usuario en el grupo ”sudo”. Esto significa que el usuario tiene plenos
privilegios administrativos a través delsudodominio. Esto es útil debido al hecho de que varios elementos solo están
disponibles a través de privilegios administrativos.

El instalador también solicita un nombre de usuario para la cuenta, así como una contraseña. El instalador
solicitará la confirmación de la contraseña para evitar cualquier error de entrada.

72 Kali Linux revelado


Figura 4.6Crear usuario

El usuario predeterminado La contraseña de usuario predeterminada debe ser larga (ocho caracteres o más) e imposible de adivinar, ya
Contraseña que los atacantes se dirigen a las computadoras y servidores conectados a Internet con herramientas
automatizadas, intentando iniciar sesión con contraseñas obvias. A veces, los atacantes aprovechan los
ataques de diccionario, utilizando muchas combinaciones de palabras y números como contraseñas. Evite
utilizar los nombres de los hijos o de los padres y las fechas de nacimiento, ya que son fáciles de adivinar.

Estos comentarios son igualmente aplicables a las contraseñas de otros usuarios, pero las consecuencias de
una cuenta comprometida son menos drásticas para los usuarios sin privilegios de sudo.

Si te falta inspiración, no dudes en utilizar un generador de contraseñas, como


pwgen(que se encuentra en el paquete del mismo nombre, que ya está incluido en la
instalación base de Kali).

Capítulo 4: Instalación de Kali Linux 73


Configuración del reloj

Si la red está disponible, el reloj interno del sistema se actualizará desde un servidor de protocolo de tiempo de red (NTP).
Esto es beneficioso porque garantiza que las marcas de tiempo en los registros serán correctas desde el primer arranque.

Si su país abarca varias zonas horarias, se le pedirá que seleccione la zona horaria que desea usar, como se
muestra en la Figura4.7, “Selección de zona horaria” [página 74].

Figura 4.7Selección de zona horaria

Detección de discos y otros dispositivos

Este paso detecta automáticamente los discos duros en los que se puede instalar Kali, cada uno de los cuales se
presentará en el siguiente paso: partición.

74 Kali Linux revelado


Fraccionamiento

Fraccionamientoes un paso indispensable en la instalación, que consiste en dividir el espacio disponible en los
discos duros en secciones discretas (particiones) de acuerdo con la función prevista de la computadora y esas
particiones. El particionamiento también implica elegir los sistemas de archivos que se utilizarán. Todas estas
decisiones influirán en el rendimiento, la seguridad de los datos y la administración del servidor.

El paso de partición es tradicionalmente difícil para los nuevos usuarios. Sin embargo, los sistemas de
archivos y particiones de Linux, incluida la memoria virtual (ointercambioparticiones) deben definirse
ya que forman la base del sistema. Esta tarea puede complicarse si ya ha instalado otro sistema
operativo en la máquina y desea que los dos coexistan. En este caso, debes asegurarte de no alterar
sus particiones o, en su caso, redimensionarlas sin causar daños.

Para acomodar esquemas de partición más comunes (y más simples), la mayoría de los usuarios preferirán el
Guiado modo que recomienda configuraciones de partición y proporciona sugerencias en cada paso del
camino. Los usuarios más avanzados apreciarán laManualmodo, que permite configuraciones más
avanzadas. Cada modo comparte ciertas capacidades.

Particionamiento guiadoLa primera pantalla en la herramienta de partición (Figura4.8, “Elección del modo
de partición” [página 76]) presenta puntos de entrada para los modos de partición guiada y manual. "Guiado:
usar todo el disco" es el esquema de partición más simple y común, que asignará un disco completo a Kali
Linux.

Las siguientes dos selecciones usan Logical Volume Manager (LVM) para configurar particiones lógicas (en lugar de
físicas), opcionalmente encriptadas. Discutiremos LVM y el cifrado más adelante en este capítulo con la sección4.2.2
, “Instalación en un sistema de archivos totalmente cifrado” [página 88]).

Finalmente, la última opción inicia la partición manual, lo que permite esquemas de partición más
avanzados, como instalar Kali Linux junto con otros sistemas operativos. Discutiremos el modo manual en la
siguiente sección ("Cuidado: el cargador de arranque y el arranque dual” [página 87])

En este ejemplo, asignaremos un disco duro completo a Kali, por lo que seleccionamos "Guiado: usar todo el disco" para
continuar con el siguiente paso.

Capítulo 4: Instalación de Kali Linux 75


Figura 4.8Elección del modo de partición

La siguiente pantalla (que se muestra en la Figura4.9, “Disco a usar para el particionamiento guiado” [página 77]) le
permite elegir el disco donde se instalará Kali seleccionando la entrada correspondiente (por ejemplo, “SCSI3 (0,0,0)
(sda) - 21.5 GB VMware, VMware Virtual S”). Una vez seleccionada, la partición guiada continuará. Esta opción
borrará todos los datos en este disco, así que elija sabiamente.

76 Kali Linux revelado


Figura 4.9Disco a usar para el particionamiento guiado

A continuación, la herramienta de partición guiada ofrece tres métodos de partición, que corresponden a diferentes usos,
como se muestra en la Figura4.10, “Asignación de partición guiada” [página 78].

Capítulo 4: Instalación de Kali Linux 77


Figura 4.10Asignación de partición guiada

El primer método se llama "Todos los archivos en una partición". Todo el árbol del sistema Linux se almacena en un
solo sistema de archivos, correspondiente a la raíz ("/”) directorio. Este esquema de partición simple y robusto
funciona perfectamente bien para sistemas personales o de un solo usuario. A pesar del nombre, en realidad se
crearán dos particiones: la primera albergará el sistema completo, la segunda la memoria virtual (o "intercambio").

El segundo método, “Separar/hogar/partición”, es similar, pero divide la jerarquía de archivos en dos: una
partición contiene el sistema Linux (/), y el segundo contiene "directorios de inicio" (es decir, datos de
usuario, en archivos y subdirectorios disponibles bajo/hogar/). Una ventaja de este método es que es fácil
conservar los datos de los usuarios si tiene que reinstalar el sistema.

El último método de partición, llamado “Separar/hogar,/variable, y/tmpparticiones”, es apropiado para servidores y


sistemas multiusuario. Divide el árbol de archivos en muchas particiones: además de la raíz (/) y cuentas de usuario
(/hogar/) particiones, también tiene particiones para datos de software de servidor (/var/), y archivos temporales (/tmp/
). Una ventaja de este método es que los usuarios finales no pueden bloquear el servidor consumiendo todo el
espacio disponible en el disco duro (solo pueden llenar/tmp/y/hogar/). Al mismo tiempo, los datos de servicio
(especialmente los registros) ya no pueden obstruir el resto del sistema.

78 Kali Linux revelado


Después de elegir el tipo de partición, el instalador presenta un resumen de sus selecciones en la pantalla
como un mapa de partición (Figura4.11, “Validación de particiones” [página 79]). Puede modificar cada
partición individualmente seleccionando una partición. Por ejemplo, podría elegir otro sistema de archivos si
el estándar (ext4) no es apropiado. Sin embargo, en la mayoría de los casos, la partición propuesta es
razonable y puede aceptarla seleccionando "Finalizar partición y escribir cambios en el disco". Puede ser
evidente, pero elija sabiamente ya que esto borrará el contenido del disco seleccionado.

Figura 4.11Validación de particiones

Particionamiento manualSeleccionando Manual en la pantalla principal de "Discos de partición" (Figura4.8, “


Elección del modo de partición” [página 76]) permite una mayor flexibilidad, lo que le permite elegir
configuraciones más avanzadas y dictar específicamente el propósito y el tamaño de cada partición. Por ejemplo,
este modo le permite instalar Kali junto con otros sistemas operativos, habilitar una matriz redundante de discos
independientes (RAID) basada en software para proteger los datos de fallas en el disco duro y cambiar el tamaño de
las particiones existentes de manera segura sin perder datos, entre otras cosas.

Si es un usuario con menos experiencia que trabaja en un sistema con datos existentes, tenga mucho cuidado con este
método de configuración, ya que es muy fácil cometer errores que podrían provocar la pérdida de datos.

Capítulo 4: Instalación de Kali Linux 79


Reducir una ventana Para instalar Kali Linux junto con un sistema operativo existente (Microsoft Windows u otro),
Dividir necesitará espacio libre disponible en el disco duro para las particiones dedicadas a Kali. En la
mayoría de los casos, esto significa reducir una partición existente y reutilizar el espacio liberado.

Si está utilizando el modo de partición manual, el instalador puede reducir una partición de
Microsoft Windows con bastante facilidad. Solo necesita elegir la partición de Microsoft
Windows e ingresar su nuevo tamaño (esto funciona igual con las particiones FAT y NTFS).

La primera pantalla del instalador manual es en realidad la misma que se muestra en la Figura4.11, “
Validación de particiones” [página 79], excepto que no incluye nuevas particiones para crear. Depende de
usted agregarlos.

Primero, verá una opción para ingresar a "Particionamiento guiado" seguida de varias opciones de configuración. A
continuación, el instalador mostrará los discos disponibles, sus particiones y cualquier posible espacio libre que aún no se
haya particionado. Puede seleccionar cada elemento visualizado y pulsar el botónIngresarclave para interactuar con él,
como de costumbre.

Si el disco es completamente nuevo, es posible que deba crear una tabla de particiones. Puede hacerlo
seleccionando el disco. Una vez hecho esto, debería ver espacio libre disponible en el disco.

Para hacer uso de este espacio libre, debe seleccionarlo y el instalador le ofrecerá dos formas de crear
particiones en ese espacio.

80 Kali Linux revelado


Figura 4.12Creación de particiones en el espacio libre

La primera entrada creará una única partición con las características (incluido el tamaño) de su
elección. La segunda entrada usará todo el espacio libre y creará múltiples particiones con la ayuda del
asistente de particionamiento guiado (vea la sección4.2.1.12.1, “Particionamiento guiado” [página 75]).
Esta opción es particularmente interesante cuando desea instalar Kali junto con otro sistema
operativo, pero no desea microgestionar el diseño de la partición. La última entrada mostrará los
números de cilindro/culata/sector del inicio y del final del espacio libre.

Cuando seleccione "Crear una nueva partición", entrará en la parte principal de la secuencia de partición
manual. Después de seleccionar esta opción, se le pedirá un tamaño de partición. Si el disco utiliza una tabla
de particiones de MSDOS, se le dará la opción de crear una partición primaria o lógica. (Cosas que debe
saber: solo puede tener cuatro particiones primarias pero muchas más particiones lógicas. La partición que
contiene/bota, y por lo tanto el kernel, debe ser primario, las particiones lógicas residen en una partición
extendida, que consume una de las cuatro particiones primarias). Luego debería ver la pantalla de
configuración de partición genérica:

Capítulo 4: Instalación de Kali Linux 81


Figura 4.13Pantalla de configuración de partición

Para resumir este paso de partición manual, echemos un vistazo a lo que puede hacer con la nueva
partición. Puede:

• Formatéelo e inclúyalo en el árbol de archivos eligiendo un punto de montaje. El punto de montaje es el


directorio que albergará el contenido del sistema de archivos en la partición seleccionada. Así, una partición
montada en/hogar/tradicionalmente tiene la intención de contener datos del usuario, mientras que “/” es
conocido como elraízdel árbol de archivos y, por lo tanto, la raíz de la partición que realmente albergará el
sistema Kali.

• Úselo como unpartición de intercambio. Cuando el kernel de Linux carece de suficiente memoria libre, almacenará partes
inactivas de RAM en una partición de intercambio especial en el disco duro. El subsistema de memoria virtual hace que esto
sea transparente para las aplicaciones. Para simular la memoria adicional, Microsoft Windows utiliza un archivo de
intercambio (paginación) que se encuentra directamente en un sistema de archivos. Por el contrario, Linux utiliza una
partición dedicada a este propósito, de ahí el término partición de intercambio.

• Conviértalo en un "volumen físico para el cifrado" para proteger la confidencialidad de los datos en ciertas
particiones. Este caso está automatizado en el particionamiento guiado. Mira la sección4.2.2, “Instalación en un
sistema de archivos totalmente cifrado” [página 88] para obtener más información.

82 Kali Linux revelado


• Conviértalo en un “volumen físico para LVM” (no cubierto en este libro). Tenga en cuenta que el
particionamiento guiado utiliza esta característica cuando configura particiones cifradas.

• Úselo como un dispositivo RAID (no cubierto en este libro).

• Elija no usar la partición y déjela sin cambios.

Cuando haya terminado, puede retirarse del particionamiento manual seleccionando "Deshacer cambios en las
particiones" o escribir los cambios en el disco seleccionando "Finalizar el particionamiento y escribir cambios en el
disco" en la pantalla del instalador manual (Figura4.11, “Validación de particiones” [página 79]).

Copia de la imagen en vivo

El siguiente paso, que no requiere ninguna interacción del usuario, copia el contenido de la imagen en vivo en el sistema
de archivos de destino, como se muestra en la Figura4.14, “Copia de los datos de la imagen en vivo” [página 83].

Figura 4.14Copia de los datos de la imagen en vivo

Capítulo 4: Instalación de Kali Linux 83


Configuración del administrador de paquetes (apto)

Si desea utilizar un espejo local en lugar dehttp.kali.org,puede pasar su nombre en la línea de comando del kernel (en el
momento del arranque) con una sintaxis como esta:espejo/http/nombre de host=mi.propio.espejo.

El programa instalador propone utilizar unservidor proxy HTTPcomo se muestra en la figura4.15, “Utilice un proxy
HTTP” [página 84]. Un proxy HTTP es un servidor que reenvía solicitudes HTTP para usuarios de la red. A veces
ayuda a acelerar las descargas manteniendo una copia de los archivos que se han transferido a través de él
(entonces hablamos de un proxy de almacenamiento en caché). En algunos casos, es el único medio de acceder a
un servidor web externo; en tales casos, el instalador solo podrá descargar los paquetes de Debian si completa
correctamente este campo durante la instalación. Si no proporciona una dirección proxy, el instalador intentará
conectarse directamente a Internet.

Figura 4.15Utilice un proxy HTTP

A continuación, elPaquetes.xzyFuentes.xzlos archivos se descargarán automáticamente para actualizar la lista de


paquetes reconocidos por APT.

84 Kali Linux revelado


Instalación de metapaquetes

Si está instalando el sistema desde las imágenes del instalador o del netinstaller, ahora tendrá la
opción de elegir qué paquetes desea instalar. Tenga en cuenta que esto requerirá acceso a Internet si
está utilizando la imagen de netinstaller. Se le da a elegir el entorno de escritorio y la selección de
herramientas que le gustaría incluir. También puede cambiar estas selecciones en cualquier momento
después de instalar Kali Linux, incluso si usa la imagen en vivo para instalar Kali.

Figura 4.16Instalación de metapaquetes

Instalación del cargador de arranque GRUB

El cargador de arranque es el primer programa iniciado por el BIOS. Este programa carga el kernel de Linux en la
memoria y luego lo ejecuta. El cargador de arranque a menudo ofrece un menú que le permite elegir el kernel para
cargar o el sistema operativo para arrancar.

Capítulo 4: Instalación de Kali Linux 85


Debido a su superioridad técnica, GRUB es el cargador de arranque predeterminado instalado por Kali: funciona con la
mayoría de los sistemas de archivos y, por lo tanto, no requiere una actualización después de cada instalación de un nuevo
kernel, ya que lee su configuración durante el arranque y encuentra la posición exacta. del nuevo núcleo.

Debe instalar GRUB en el Registro de inicio maestro (MBR) a menos que ya tenga instalado otro sistema Linux que
sepa cómo iniciar Kali Linux. Como se observa en la figura4.17, “Instale el cargador de arranque GRUB en un disco
duro” [página 86], la modificación del MBR hará que los sistemas operativos no reconocidos que dependen de él no
se puedan iniciar hasta que corrija la configuración de GRUB.

Figura 4.17Instale el cargador de arranque GRUB en un disco duro

En este paso (Figura4.18, “Dispositivo para la instalación del cargador de arranque” [página 87]), debe seleccionar en qué
dispositivo se instalará GRUB. Esta debería ser su unidad de arranque actual.

86 Kali Linux revelado


Figura 4.18Dispositivo para la instalación del cargador de arranque

De forma predeterminada, el menú de inicio propuesto por GRUB muestra todos los kernels de Linux instalados, así como
cualquier otro sistema operativo que se haya detectado. Es por eso que debe aceptar la oferta para instalarlo en el Master
Boot Record. Mantener las versiones anteriores del kernel conserva la capacidad de iniciar el sistema si el kernel instalado
más recientemente está defectuoso o mal adaptado al hardware. Por lo tanto, le recomendamos que mantenga instaladas
algunas versiones anteriores del kernel.

Cuidado: el cargador de arranque Esta fase del proceso de instalación detecta los sistemas operativos que ya están instalados en la
y arranque dual computadora y agregará automáticamente las entradas correspondientes en el menú de inicio. Sin
embargo, no todos los programas de instalación hacen esto.

En particular, si instala (o reinstala) Microsoft Windows posteriormente, el cargador de


arranque se borrará. Kali seguirá estando en el disco duro, pero ya no será accesible
desde el menú de arranque. Luego tendría que iniciar el instalador de Kali con el
rescatar/habilitar=verdaderoparámetro en la línea de comando del kernel para reinstalar el cargador
de arranque. Esta operación se describe en detalle en el manual de instalación de Debian.

mihttps://www.debian.org/releases/stable/amd64/ch08s06.en.html

Capítulo 4: Instalación de Kali Linux 87


Finalización de la instalación y reinicio

Ahora que la instalación está completa, el programa le pide que desconecte su unidad USB o retire el DVD-
ROM del lector para que su computadora pueda iniciarse en su nuevo sistema Kali después de que el
instalador reinicie el sistema (Figura4.19, “Instalación completa” [página 88]).

Finalmente, el instalador realizará un trabajo de limpieza, como eliminar paquetes que son específicos para crear el
entorno en vivo. También detectará si Kali Linux se ha instalado en una máquina virtual (VM) e instalará
automáticamente cualquier herramienta de invitado para ayudar a la integración entre el host y el invitado de Kali.

Figura 4.19Instalación completa

4.2.2. Instalación en un sistema de archivos totalmente cifrado

Para garantizar la confidencialidad de sus datos, puede configurar particiones cifradas. Esto protegerá sus datos en
caso de pérdida o robo de su computadora portátil o disco duro. La herramienta de partición puede ayudarte en
este proceso, tanto en modo guiado como manual.

88 Kali Linux revelado


El modo de particionamiento guiado combinará el uso de dos tecnologías: Linux Unified Key Setup (LUKS) para
cifrar particiones y Logical Volume Management (LVM) para gestionar el almacenamiento de forma dinámica.
Ambas características también se pueden instalar y configurar a través del modo de partición manual.

Introducción a LVM

Hablemos primero de LVM. Utilizando la terminología LVM, unpartición virtuales un volumen lógico, que forma
parte de ungrupo de volumen, o una asociación de varios volúmenes físicos. Los volúmenes físicos son particiones
reales (o particiones virtuales exportadas por otras abstracciones, como un dispositivo RAID de software o una
partición cifrada).

Con su falta de distinción entre particiones "físicas" y "lógicas", LVM le permite crear particiones "virtuales" que
abarcan varios discos. Los beneficios son dobles: el tamaño de las particiones ya no está limitado por discos
individuales sino por su volumen acumulativo, y puede cambiar el tamaño de las particiones existentes en
cualquier momento, por ejemplo, después de agregar un disco adicional.

Esta técnica funciona de una manera muy simple: cada volumen, ya sea físico o lógico, se divide en bloques del
mismo tamaño, que LVM correlaciona. La adición de un nuevo disco provocará la creación de un nuevo volumen
físico que proporcionará nuevos bloques que se pueden asociar a cualquier grupo de volúmenes. Todas las
particiones del grupo de volúmenes pueden aprovechar al máximo el espacio adicional asignado.

Introducción a LUKS

Para proteger sus datos, puede agregar una capa de cifrado debajo del sistema de archivos de su elección.
Linux (y más particularmente eldm-criptadriver) utiliza el mapeador de dispositivos para crear la partición
virtual (cuyo contenido está protegido) basada en una partición subyacente que almacenará los datos de
forma cifrada (gracias a LUKS). LUKS estandariza el almacenamiento de los datos cifrados, así como la
metainformación que indica los algoritmos de cifrado utilizados.

Configuraremos LUKS como parte de nuestra función "nuke" más adelante en "Agregar una contraseña de Nuke para
mayor seguridad” [página 250].

Partición de intercambio cifrada Cuando se usa una partición cifrada, la clave de cifrado se almacena en la memoria (RAM) y, cuando hiberna,
una computadora portátil copiará la clave, junto con otros contenidos de la RAM, en la partición de
intercambio del disco duro. Dado que cualquier persona con acceso al archivo de intercambio (incluido un
técnico o un ladrón) podría extraer la clave y descifrar sus datos, el archivo de intercambio debe estar
protegido con cifrado.

Debido a esto, el instalador le advertirá si intenta utilizar una partición cifrada junto con una
partición de intercambio no cifrada.

Capítulo 4: Instalación de Kali Linux 89


Configuración de particiones cifradas

El proceso de instalación de LVM encriptado es el mismo que una instalación estándar excepto por el paso
de partición (Figura4.20, “Particionamiento guiado con LVM cifrado” [página 90]) donde, en su lugar,
seleccionará “Guiado: use todo el disco y configure LVM encriptado”. El resultado neto será un sistema al que
no se podrá iniciar ni acceder hasta que se proporcione la frase de contraseña de cifrado. Esto cifrará y
protegerá los datos en su disco.

Figura 4.20Particionamiento guiado con LVM cifrado

El instalador de particionamiento guiado asignará automáticamente una partición física para el almacenamiento de
datos cifrados, como se muestra en la Figura4.21, “Confirmar cambios en la tabla de particiones” [página 91]. En
este punto, el instalador confirmará los cambios antes de que se escriban en el disco.

90 Kali Linux revelado


Figura 4.21Confirmar cambios en la tabla de particiones

Esta nueva partición luego se inicializa con datos aleatorios, como se muestra en la Figura4.22, “Borrado de datos
en partición cifrada” [página 92]. Esto hace que las áreas que contienen datos sean indistinguibles de las áreas no
utilizadas, lo que dificulta la detección y, posteriormente, el ataque de los datos cifrados.

Capítulo 4: Instalación de Kali Linux 91


Figura 4.22Borrado de datos en partición cifrada

A continuación, el instalador le pide que ingrese una frase de contraseña de cifrado (Figura4.23, “Ingrese su frase
de contraseña de cifrado” [página 93]). Para ver el contenido de la partición cifrada, deberá ingresar esta frase de
contraseña cada vez que reinicie el sistema. Tenga en cuenta la advertencia en el instalador: su sistema encriptado
solo será tan fuerte como esta frase de contraseña.

92 Kali Linux revelado


Figura 4.23Ingrese su frase de contraseña de cifrado

La herramienta de partición ahora tiene acceso a una nueva partición virtual cuyo contenido se almacena cifrado en
la partición física subyacente. Dado que LVM usa esta nueva partición como un volumen físico, puede proteger
varias particiones (o volúmenes lógicos de LVM) con la misma clave de cifrado, incluida la partición de intercambio
(consulte la barra lateral "Partición de intercambio cifrada” [página 89]). Aquí, LVM no se usa para facilitar la
ampliación del tamaño del almacenamiento, sino solo por la comodidad de la indirección que permite dividir una
única partición cifrada en varios volúmenes lógicos.

Fin del particionamiento guiado con LVM cifrado

A continuación, se muestra el esquema de partición resultante (Figura4.24, “Validación de particiones para la instalación de
LVM cifrado” [página 94]) para que pueda ajustar la configuración según sea necesario.

Capítulo 4: Instalación de Kali Linux 93


Figura 4.24Validación de particiones para la instalación de LVM cifrado

Finalmente, después de validar la configuración de la partición, la herramienta solicita confirmación para escribir los cambios en los
discos, como se muestra en la Figura4.25, “Confirmar particiones para formatear” [página 95].

94 Kali Linux revelado


Figura 4.25Confirmar particiones para formatear

Finalmente, el proceso de instalación continúa normalmente como se documenta en la sección4.2.1.14, “Configuración del
administrador de paquetes (apto)” [página 84].

4.3. Instalaciones desatendidas

Los instaladores de Debian y Kali son muy modulares: en el nivel básico, solo ejecutan muchos scripts
(empaquetados en pequeños paquetes llamados udeb, para µdeb o micro-deb) uno tras otro. Cada guión se basa
endebconf(ver "EldebconfHerramienta” [página 220]), que interactúa con usted, el usuario, y almacena parámetros de
instalación. Debido a esto, el instalador también se puede automatizar a través de la preconfiguración de debconf,
una función que le permite proporcionar respuestas desatendidas a las preguntas de instalación.

Capítulo 4: Instalación de Kali Linux 95


4.3.1. Respuestas preliminares

Hay varias formas de preconfigurar respuestas para el instalador. Cada método tiene sus propias ventajas y
desventajas. Dependiendo de cuándo ocurra la preconfiguración, las preguntas que pueden preconfigurarse
varían.

Con parámetros de arranque

Puede preconfigurar cualquier pregunta del instalador con parámetros de arranque que terminan en la línea de comandos
del kernel, accesible a través de/proc/líneacmd. Algunos cargadores de arranque le permitirán editar estos parámetros de
forma interactiva (lo cual es práctico para fines de prueba), pero si desea que los cambios sean persistentes, deberá
modificar la configuración del cargador de arranque.

Puede usar directamente el identificador completo de las preguntas de debconf (comodebianinstaller/


idioma=es)o puede usar abreviaturas para las preguntas más comunes (como idioma=enonombre de
host = kali).Ver elLista llena1de alias en el manual de instalación de Debian.

No hay restricciones sobre qué preguntas puede preconfigurar, ya que los parámetros de arranque están disponibles
desde el inicio del proceso de instalación y se procesan muy pronto. Sin embargo, el número de parámetros de arranque
está limitado a 32 y varios de ellos ya se utilizan de forma predeterminada. También es importante darse cuenta de que, en
ocasiones, cambiar la configuración del cargador de arranque puede no ser trivial.

En la sección9.3, “Creación de imágenes ISO Kali Live personalizadas” [página 241] también aprenderá cómo
modificar la configuración de isolinux cuando genera su propia imagen ISO de Kali.

Con un archivo Preseed en el Initrd

Puede agregar un archivo llamadopreseed.cfgen la raíz del instaladorinitrd(este es el initrd que se usa para iniciar el
instalador). Por lo general, esto requiere reconstruir el paquete fuente debian-installer para generar nuevas
versiones de initrd. Sin embargo,construcción en vivoofrece una manera conveniente de hacer esto, que se detalla en
la sección9.3, “Creación de imágenes ISO Kali Live personalizadas” [página 241].

Este método tampoco tiene restricciones sobre las preguntas que puede preconfigurar, ya que el archivo de
preconfiguración está disponible inmediatamente después del arranque. En Kali, ya usamos esta función para
personalizar el comportamiento del instalador oficial de Debian.

Con un archivo predeterminado en los medios de arranque

Puede agregar un archivo predeterminado en el medio de arranque (DVD o llave USB); la preconfiguración ocurre tan pronto como
se monta el medio, lo que significa justo después de las preguntas sobre el idioma y la distribución del teclado. Elpreconfiguración/
archivoEl parámetro de arranque se puede usar para indicar la ubicación del archivo de preconfiguración (por

1https://www.debian.org/releases/stable/amd64/apbs02#preseed-aliases

96 Kali Linux revelado


instancia,/cdrom/preseed.cfgal instalar desde un DVD-ROM, o/hd-media/preseed.cfg
al instalar desde una llave USB).
No puede preconfigurar las respuestas a las opciones de idioma y país, ya que el archivo de preconfiguración se carga más
adelante en el proceso, una vez que se han cargado los controladores de hardware. En el lado positivo,construcción en vivo
facilita la colocación de un archivo complementario en las imágenes ISO generadas (consulte la sección9.3, “Creación de imágenes
ISO Kali Live personalizadas” [página 241]).

Con un archivo preconfigurado cargado desde la red

Puede hacer que un archivo preconfigurado esté disponible en la red a través de un servidor web y decirle al instalador
que descargue ese archivo preconfigurado agregando el parámetro de arranquepreconfiguración/url=http://servidor/
preseed.cfg (o usando elURLalias).

Sin embargo, cuando utilice este método, recuerde que primero debe configurar la red. Esto significa que las
preguntas de debconf relacionadas con la red (en particular, el nombre del host y el nombre del dominio) y todas
las preguntas anteriores (como el idioma y el país) no pueden preconfigurarse con este método. Este método se
usa con mayor frecuencia en combinación con parámetros de arranque que preconfiguran esas preguntas
específicas.

Este método de preconfiguración es el más flexible, ya que puede cambiar la configuración de instalación sin
cambiar los medios de instalación.

retrasando el lenguaje, Para superar la limitación de no poder preseleccionar las preguntas de idioma, país y
País, Teclado teclado, puede agregar el parámetro de arranqueauto-instalar/habilitar=verdadero
Preguntas (oautomático=verdadero). Con esta opción, las preguntas se realizarán más adelante en el proceso, después de
que se haya configurado la red y, por lo tanto, después de la descarga del archivo preconfigurado.

La desventaja es que los primeros pasos (principalmente la configuración de la red) siempre


se realizarán en inglés y si hay errores, el usuario tendrá que trabajar a través de pantallas en
inglés (con un teclado configurado en QWERTY).

4.3.2. Creación de un archivo preconfigurado

Un archivo preconfigurado es un archivo de texto sin formato en el que cada línea contiene la respuesta a una pregunta de
Debconf. Una línea se divide en cuatro campos separados por espacios en blanco (espacios o tabuladores). Por ejemplo,di mirror/-
suite string kali-rolling:

• El primer campo indica el propietario de la pregunta. Por ejemplo, "di" se usa para preguntas relevantes para
el instalador. También puede ver un nombre de paquete, para preguntas provenientes de paquetes de
Debian (como en este ejemplo:atftpd atftpd/use_inetd booleano falso).

• El segundo campo es un identificador de la pregunta.

• El tercer campo enumera el tipo de pregunta.

Capítulo 4: Instalación de Kali Linux 97


• El cuarto y último campo contiene el valor de la respuesta esperada. Tenga en cuenta que debe estar
separado del tercer campo con un solo espacio; los caracteres de espacio adicionales se consideran
parte del valor.

La forma más sencilla de escribir un archivo preconfigurado es instalar un sistema a mano. Entonces el
debconf-get-selections --instaladorEl comando proporcionará las respuestas que proporcionó al instalador. Puede
obtener respuestas dirigidas a otros paquetes condebconf-get-selections. Sin embargo, una solución más limpia
es escribir el archivo preconfigurado a mano, comenzando con un ejemplo y luego revisando la
documentación. Con este enfoque, solo se pueden preconfigurar las preguntas en las que se deba anular la
respuesta predeterminada. Proporcionar laprioridad=críticoparámetro de arranque para indicar a Debconf
que solo haga preguntas críticas y que use la respuesta predeterminada para los demás.

Guía de instalación La guía de instalación de Debian, disponible en línea, incluye documentación detallada sobre el uso
Apéndice de un archivo preconfigurado en un apéndice. También incluye un archivo de muestra detallado y
comentado, que puede servir como base para personalizaciones locales.

mihttps://www.debian.org/releases/stable/amd64/apb
mihttps://www.debian.org/releases/stable/example-preseed.txt
Sin embargo, tenga en cuenta que los enlaces anteriores documentan la versión estable de Debian y
que Kali usa la versión de prueba, por lo que puede encontrar ligeras diferencias. También puede
consultar el manual de instalación alojado en el sitio web del proyecto Debian-installer. Puede estar
más actualizado.

4.4. Instalaciones ARM

Kali Linux se ejecuta en una amplia variedad de dispositivos basados en ARM (computadoras portátiles, computadoras integradas y
placas de desarrollo, por ejemplo), pero no puede usar el instalador tradicional de Kali en estos dispositivos, ya que a menudo
tienen requisitos específicos en términos de configuración del kernel o del cargador de arranque. .

Para hacer que esos dispositivos sean más accesibles para los usuarios de Kali, Offensive Security desarrollóscripts para
construir imágenes de disco2que están listos para usar con varios dispositivos ARM. Proporcionan estas imágenes
pregeneradas, listas para descargar en su sitio web:

mihttps://www.offensive-security.com/kali-linux-arm-images/
Dado que estas imágenes están disponibles, su tarea de instalar Kali en un dispositivo ARM se simplifica enormemente.
Aquí están los pasos básicos:

1. Descargue la imagen para su dispositivo ARM y asegúrese de que la suma de verificación coincida con la
proporcionada en el sitio web (consulte la sección2.1.3, “Verificación de integridad y autenticidad” [página 17] para
obtener explicaciones sobre cómo hacerlo). Tenga en cuenta que las imágenes suelen estar comprimidas en xz;
asegúrese de descomprimirlos conunxz.

2https://gitlab.com/kalilinux/build-scripts/kali-brazo

98 Kali Linux revelado


2. Según la ranura de expansión de almacenamiento disponible en su dispositivo ARM específico, adquiera una tarjeta
SD, una tarjeta micro SD o un módulo de controlador multimedia incorporado (eMMC) que tenga una capacidad de
al menos 8 GB.

3. Copie la imagen descargada al dispositivo de almacenamiento condd. Esto es similar al proceso de copiar una
imagen ISO en una llave USB (consulte la sección2.1.4, “Copia de la imagen en un DVD-ROM o llave USB
” [página 19]).

# dd si =kali-imagen.imgde=/dev/algobs=512k

4. Conecte la tarjeta SD/eMMC a su dispositivo ARM.

5. Inicie su dispositivo ARM e inicie sesión en él (usuario ”kali”, contraseña ”kali”). Si no tiene una pantalla
conectada, deberá descubrir la dirección IP que se ha asignado a través de DHCP y conectarse a esa
dirección a través de SSH. Algunos servidores DHCP tienen herramientas o interfaces web para
mostrar las concesiones actuales. Si no tiene esta opción, use un sniffer para buscar el tráfico de
arrendamiento de DHCP o un escaneo ICMP/ARP de la red local.

6. Cambie la contraseña de usuario predeterminada y genere nuevas claves de host SSH, ¡especialmente si el
dispositivo se ejecutará permanentemente en una red pública! Estos pasos son relativamente sencillos,
consulte “Generación de nuevas claves de host SSH” [página 115].

7. ¡Disfruta de tu nuevo dispositivo ARM con Kali Linux!

Casos especiales y Estas instrucciones son genéricas y, aunque funcionan para la mayoría de los dispositivos, siempre hay
documentación más detallada excepciones. Por ejemplo, los Chromebook requierenmodo desarrolladory otros dispositivos requieren una
pulsación de tecla especial para arrancar desde medios externos.

Dado que los dispositivos ARM se agregan con relativa frecuencia y sus especificaciones son tan
dinámicas, aquí no cubriremos las instrucciones de instalación específicas para varios dispositivos
ARM. En su lugar, consulte la sección dedicada "Kali en ARM" del sitio web de documentación de Kali
para obtener información sobre cada dispositivo ARM compatible con Offensive Security:

mihttps://www.kali.org/docs/arm/

4.5. Solución de problemas de instalaciones

El instalador es bastante confiable, pero puede encontrar errores o enfrentar problemas externos como:
problemas de red, espejos defectuosos y espacio en disco insuficiente. Debido a esto, es bastante útil para
poder solucionar problemas que aparecen en el proceso de instalación.

Cuando el instalador falla, le mostrará una pantalla poco útil como la que se muestra en la Figura4.26, “
Paso de instalación fallido” [página 100].

Capítulo 4: Instalación de Kali Linux 99


Figura 4.26Paso de instalación fallido

En este punto, es bueno saber que el instalador utiliza varias consolas virtuales: la pantalla principal que ve
se ejecuta en la quinta consola (para el instalador gráfico, CTRL+ALT+F5) o en la primera consola ( para el
instalador clásico en modo texto, CTRL+ALT+F1). En ambos casos, la cuarta consola ( CTRL+ALT+F4 ) muestra
registros de lo que sucede y, por lo general, puede ver un mensaje de error más útil allí, como el que se
muestra en la Figura4.27, “La pantalla de registro del instalador” [página 101], que revela que el instalador se
quedó sin espacio en disco.

100 Kali Linux revelado


Figura 4.27La pantalla de registro del instalador

Las consolas segunda y tercera (CTRL+ALT+F2 y CTRL+ALT+F3, respectivamente) albergan shells que puede utilizar para
investigar la situación actual con más detalle. BusyBox proporciona la mayoría de las herramientas de línea de comandos,
por lo que el conjunto de funciones es bastante limitado, pero es suficiente para resolver la mayoría de los problemas que
probablemente encuentre.

¿Qué se puede hacer en el Puede inspeccionar y modificar la base de datos debconf condebconf-obtenery
Shell del instalador conjunto debconf. Estos comandos son especialmente convenientes para probar valores de preconfiguración.

Puede inspeccionar cualquier archivo (como el registro de instalación completo disponible en/var/log/
syslog) congatoomenos. Puede editar cualquier archivo connano, incluidos todos los archivos que se
instalan en el sistema. El sistema de archivos raíz se montará en/objetivouna vez que se haya
completado el paso de partición del proceso de instalación.

Una vez configurado el acceso a la red, puede utilizarwgetyCarolina del Norte(netcat) para recuperar y
exportar datos a través de la red.

Una vez que haga clic en Continuar desde la pantalla de falla del instalador principal (Figura4.26, “Paso de
instalación fallido” [página 100]), volverá a una pantalla que normalmente nunca verá (la Pantalla principal).

Capítulo 4: Instalación de Kali Linux 101


Menú que se muestra en la figura4.28, “Menú Principal del Instalador” [página 102]), que le permite iniciar
un paso de instalación tras otro. Si logró solucionar el problema a través del acceso de shell (¡felicitaciones!),
entonces puede volver a intentar el paso que falló.

Figura 4.28Menú Principal del Instalador

Si no puede resolver el problema, es posible que desee presentar un informe de error. El informe debe incluir los registros
del instalador, que puede recuperar con la función "Guardar registros de depuración" del menú principal. Ofrece múltiples
formas de exportar los registros, como se muestra en la Figura4.29, “Guardar registros de depuración (1/2)” [página 103].

102 Kali Linux revelado


Figura 4.29Guardar registros de depuración (1/2)

El método más conveniente, y el que recomendamos, es dejar que el instalador inicie un servidor web que aloje los
archivos de registro (Figura4.30, “Guardar registros de depuración (2/2)” [página 104]). Luego puede iniciar un
navegador desde otra computadora en la misma red y descargar todos los archivos de registro y capturas de
pantalla que haya tomado con el botón Captura de pantalla disponible en cada pantalla.

Capítulo 4: Instalación de Kali Linux 103


Figura 4.30Guardar registros de depuración (2/2)

4.6. Resumen

En este capítulo, nos enfocamos en el proceso de instalación de Kali Linux. Discutimos los requisitos mínimos de
instalación de Kali Linux, el proceso de instalación para sistemas de archivos estándar y totalmente encriptados, la
preconfiguración, que permite instalaciones desatendidas, cómo instalar Kali Linux en varios dispositivos ARM y
qué hacer en el raro caso de una falla en la instalación.

Resumen de consejos:

• Los requisitos de instalación para Kali Linux varían desde un servidor SSH básico sin escritorio, con tan
solo 128 MB de RAM (se recomiendan 512 MB) y 2 GB de espacio en disco, hasta el más alto.kalilinux-
predeterminadometapaquete, con al menos 2048 MB de RAM y 20 GB de espacio en disco. Además,
su máquina debe tener una CPU compatible con al menos una de las arquitecturas amd64, i386 o
arm64.

• Kali se puede instalar fácilmente como el sistema operativo principal, junto con otros sistemas operativos a través de
la partición y la modificación del cargador de arranque, o como una máquina virtual.

104 Kali Linux revelado


• Para garantizar la confidencialidad de sus datos, puede configurar particiones cifradas. Esto protegerá sus datos en
caso de pérdida o robo de su computadora portátil o disco duro.

• El instalador también se puede automatizar a través de la preconfiguración de debconf, una función que le permite
proporcionar respuestas desatendidas a las preguntas de instalación.

• Un archivo preconfigurado es un archivo de texto sin formato en el que cada línea contiene la respuesta a una pregunta de
Debconf. Una línea se divide en cuatro campos separados por espacios en blanco (espacios o tabuladores). Puede
preconfigurar respuestas al instalador con parámetros de arranque, con un archivo preconfigurado en initrd, con un
archivo preconfigurado en el medio de arranque o con un archivo preconfigurado de la red.

• Kali Linux se ejecuta en una amplia variedad de dispositivos basados en ARM, como computadoras portátiles,
computadoras integradas y placas de desarrollo. La instalación de ARM es bastante sencilla. Descargue la imagen
adecuada, cópiela en una tarjeta SD, unidad USB o módulo de controlador multimedia incorporado (eMMC),
conéctelo, inicie el dispositivo ARM, encuentre su dispositivo en la red, inicie sesión y cambie la contraseña SSH y
claves de host SSH.

• Puede depurar instalaciones fallidas con consolas virtuales (accesible con CTRL+ALT y
teclas de función),debconf-obteneryconjunto debconfcomandos, leyendo el/var/registro/syslog
log o enviando un informe de error con los archivos de registro recuperados con la función "Guardar registros de
depuración" del instalador.

Ahora que hemos discutido los fundamentos de Linux y la instalación de Kali Linux, analicemos la configuración
para que pueda comenzar a adaptar Kali a sus necesidades.

Capítulo 4: Instalación de Kali Linux 105


Palabras clave

Red
Usuarios y grupos
Servicios
apache
postgresql
SSH
Capítulo

Configuración de Kali Linux 5


Contenido

Configuración de la red108 Administrar usuarios de Unix y grupos de Unix112 Configuración de servicios114

Servicios de gestión121 Resumen123


En este capítulo, veremos varias formas de configurar Kali Linux. Primero, en la sección5.1, “Configuración de
la red” [página 108], le mostraremos cómo configurar sus ajustes de red utilizando un entorno gráfico y la
línea de comandos. En la sección5.2, “Administrar usuarios de Unix y grupos de Unix” [página 112],
hablaremos sobre usuarios y grupos, mostrándole cómo crear y modificar cuentas de usuario, establecer
contraseñas, deshabilitar cuentas y administrar grupos. Finalmente, discutiremos los servicios en la sección
5.3, “Configuración de servicios” [página 114] y explicar cómo configurar y mantener servicios genéricos y
también centrarse en tres servicios muy importantes y específicos: SSH, PostgreSQL y Apache.

5.1. Configuración de la red

5.1.1. en el escritorio conGerente de Redes

En una instalación de escritorio típica, tendráGerente de Redesya instalado y se puede controlar y configurar a
través de la configuración del sistema de Xfce y a través del menú superior derecho como se muestra en la Figura
5.1, “Pantalla de configuración de red” [página 108].

Figura 5.1Pantalla de configuración de red

La configuración de red predeterminada se basa en DHCP para obtener una dirección IP, un servidor DNS y una puerta de
enlace, pero puede usar el ícono de ajustes en la esquina inferior izquierda para modificar la configuración de muchas
maneras (por ejemplo: establezca la dirección MAC, cambie a una configuración estática, habilitar o deshabilitar IPv6 y
agregar rutas adicionales). Puede crear perfiles para guardar múltiples configuraciones de red cableada y fácilmente

108 Kali Linux revelado


cambiar entre ellos. Para las redes inalámbricas, su configuración se vincula automáticamente a su identificador
público (SSID).

NetworkManager también maneja conexiones por banda ancha móvil (Wireless Wide Area Network WWAN) y por
módems usando protocolo punto a punto sobre ethernet (PPPoE). Por último, pero no menos importante,
proporciona integración con muchos tipos de redes privadas virtuales (VPN) a través de complementos dedicados:
SSH, OpenVPN, VPNC de Cisco, PPTP, Strongswan. Revisar lagerente de Redes-*paquetes; la mayoría de ellos no
están instalados por defecto.

5.1.2. En la línea de comandos con Ifupdown

Alternativamente, cuando prefiera no usar (o no tenga acceso a) un escritorio gráfico, puede


configurar la red con el ya instaladosi arriba abajopaquete, que incluye elsi arribay
si abajoherramientas. Estas herramientas leen definiciones del/etc/red/interfacesarchivo de configuración
y están en el corazón de la/etc/init.d/redesguión de inicio que configura la red en el momento del
arranque.

Usandosudopara acceder a Elsudo(super usuario do) permite a los usuarios privilegiados ejecutar comandos con permisos
los privilegios administrativos administrativos. Esto da acceso total a elementos que pueden estar restringidos solo al
usuario raíz, como programas en/sbin/o acceso a opciones de red que son útiles para
herramientas de prueba de penetración comunes.

El comando toma un argumento, siendo el siguiente comando el que se ejecutará con


permisos administrativos. Un caso de uso útil cuando se trata de servicios es elevar a la
cuenta de usuario raíz. Para elevar a usuario root, usaremos el comandosu
(usuario sustituto) para crear un shell bajo el usuario raíz. El comando de usuario sustituto toma una
cuenta de usuario como argumento. Además, elsuEl comando tiene una bandera útil (
- - login, o -l, o -) para utilizar el entorno de inicio de sesión del usuario sustituido. Múltiples
comandos en el siguiente capítulo requieren el uso desudo, como tal, lo elevaremos al usuario raíz
para ejecutar estos comandos sin problemas.

pssudo su --login [sudo]


contraseña para kali:
root@kali :~#

Cada dispositivo de red administrado porsi arriba abajose puede desconfigurar en cualquier momento
consi abajo dispositivo de red. A continuación, puede modificar/etc/red/interfacesy vuelva a activar la red
(con la nueva configuración) consi arribadispositivo de red.

Echemos un vistazo a lo que podemos poner en el archivo de configuración de ifupdown. Hay dos directivas principales:
autodispositivo de red, que cuentasi arriba abajopara configurar automáticamente la interfaz de red una vez que esté
disponible, yYo afrontotipo de dispositivo de red inet/inet6para configurar una interfaz determinada. Por ejemplo, una
configuración simple de DHCP se ve así:

auto bajo

Capítulo 5: Configuración de Kali Linux 109


bucle invertido iface lo inet

auto eth0
iface eth0 inet dhcp

Tenga en cuenta que la configuración especial para el dispositivo de bucle invertido siempre debe estar presente en
este archivo. Para una configuración de dirección IP fija, debe proporcionar más detalles, como la dirección IP, la
red y la IP de la puerta de enlace:

auto eth0
iface eth0 inet estático
dirección 192.168.0.3
máscara de red 255.255.255.0
difusión 192.168.0.255 red
192.168.0.0
puerta de enlace 192.168.0.1

Para las interfaces inalámbricas, debe tener lawpasupplicantpaquete (incluido en Kali por defecto), que
proporciona muchoswpa-*opciones que se pueden utilizar en/etc/red/interfaces. Echar un vistazo
en/usr/share/doc/wpasupplicant/README.Debian.gzpara ejemplos y explicaciones. El
las opciones más comunes sonwpa-ssid (que define el nombre de la red inalámbrica a unirse) y PSK
WPA (que define la frase de contraseña o la clave que protege la red).
iface wlan0 inet dhcp
wpa-ssid MyNetWork
secreto de texto plano wpa-psk

5.1.3. En la línea de comando consystemd-networkd

Mientrassi arriba abajoes la herramienta histórica utilizada por Debian y Kali, y aunque todavía es la
predeterminada para instalaciones mínimas, hay una herramienta más nueva que vale la pena considerar:systemd-
networkd. Su integración con elsistemadEl sistema init lo convierte en una opción muy atractiva. No es específico de
las distribuciones basadas en Debian (al contrario desi arriba abajo) y ha sido diseñado para ser muy pequeño,
eficiente y relativamente fácil de configurar si comprende la sintaxis de los archivos unitarios de systemd. Esta es
una opción especialmente atractiva si se consideraGerente de Redesinflado y difícil de configurar.

tu configurassystemd-networkdmediante la colocación de.redarchivos en el/etc/systemd/red/


directorio. Como alternativa, puede utilizar/lib/systemd/red/para archivos empaquetados o/ejecutar/ systemd/red/
para archivos generados en tiempo de ejecución. El formato de esos archivos está documentado en
sistemad.red(5)(mira la sección6.1.1, “Páginas manuales” [página 128]). El [Fósforo]La sección indica las
interfaces de red a las que se aplica la configuración. Puede especificar la interfaz de muchas maneras,
incluso por dirección de control de acceso a medios (MAC) o tipo de dispositivo. El [Red]sección define
la configuración de la red.

110 Kali Linux revelado


Ejemplo 5.1 Configuración estática en/etc/systemd/network/50-static.network

[Fósforo]
Nombre=enp2s0

[Red]
Dirección=192.168.0.15/24
Puerta de enlace=192.168.0.1
DNS=8.8.8.8

Ejemplo 5.2 Configuración basada en DHCP en/etc/systemd/red/80-dhcp.red

[Fósforo]
Nombre=es*

[Red]
DHCP=sí

Tenga en cuenta quesystem-networkdestá deshabilitado de forma predeterminada, por lo que si desea usarlo, debe
habilitarlo. tambien depende desystemd-resueltopara una correcta integración de la resolución de DNS, que a su vez
requiere que usted reemplace/etc/resolv.confcon un enlace simbólico a/ejecutar/systemd/resolver/resolver.
conferencia, que es administrado porsystemd-resuelto.

# systemctl habilitar systemd-networkd


# systemctl habilitar systemd-resuelto
# systemctl iniciar systemd-networkd
# systemctl start systemd-resuelto
# ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf

A pesar desystemd-networkdsufre de algunas limitaciones, como la falta de soporte integrado para redes
inalámbricas, puede confiar en un externo preexistentewpa_supplicantconfiguración para soporte inalámbrico.
Sin embargo, es especialmente útil en contenedores y máquinas virtuales, y se desarrolló originalmente para
entornos en los que la configuración de red de un contenedor dependía de la configuración de red de su
host. En este escenario,systemd-networkdhace que sea más fácil administrar ambos lados de manera
consistente y al mismo tiempo admite todo tipo de dispositivos de red virtual que pueda necesitar en este
tipo de escenario (consultesystemd.netdev(5)en la sección6.1.1, “Páginas manuales” [página 128]).

Capítulo 5: Configuración de Kali Linux 111


5.2. Administrar usuarios de Unix y grupos de Unix

La base de datos de usuarios y grupos de Unix consiste en los archivos de texto/etc/contraseña(lista de usuarios),
/etc/sombra(contraseñas encriptadas de los usuarios),/etc/grupo(lista de grupos), y/etc./gshadow
(contraseñas cifradas de grupos). Sus formatos están documentados encontraseña(5),sombra(5),
grupo(5), ysombra(5)respectivamente (ver sección6.1.1, “Páginas manuales” [página 128]). Si bien estos archivos se
pueden editar manualmente con herramientas comoVIPWyvigor, existen herramientas de nivel superior para realizar
las operaciones más habituales.

Usandogetenteconsultar Elgetente(obtener entradas) comprueba las bases de datos del sistema (incluidas las de
la base de datos de usuarios usuarios y grupos) utilizando las funciones de biblioteca adecuadas, que a su vez llaman a los
módulos de cambio de servicio de nombres (NSS) configurados en el/etc/nsswitch.confarchivo. El
comando toma uno o dos argumentos: el nombre de la base de datos a verificar y una posible
clave de búsqueda. Así, el comandocontraseña getent kaliuser1devolverá la información de la base
de datos del usuario con respecto al usuariokaliuser1.

# contraseña getent kaliuser1


kaliuser1:x:1001:1001:Usuario de Kali
a,4444,123-867-5309,321-867-5309:/home/kaliuser1:/bin/
aintento

5.2.1. Creación de cuentas de usuario

Aunque Kali se ejecuta con mayor frecuencia con privilegios con permisos de sudo, a menudo es posible que
deba crear cuentas de usuario sin privilegios por varias razones, especialmente si está utilizando Kali como
sistema operativo principal. La forma más típica de agregar un usuario es con elagregar usuariocomando, que
toma un argumento requerido: el nombre de usuario para el nuevo usuario que le gustaría crear.

Elagregar usuarioEl comando hace algunas preguntas antes de crear la cuenta, pero su uso es bastante
sencillo. Su archivo de configuración,/etc/adduser.conf, incluye muchos escenarios interesantes. Puede, por
ejemplo, definir el rango de identificadores de usuario (UID) que se pueden usar, dictar si los usuarios
comparten o no un grupo común, definir shells predeterminados y más.

La creación de una cuenta desencadena la población del directorio de inicio del usuario con el contenido de
la/etc./skel/plantilla. Esto proporciona al usuario un conjunto de directorios estándar y archivos de
configuración.

En algunos casos, será útil agregar un usuario a un grupo (que no sea su grupo principal predeterminado)
para otorgar permisos adicionales. Por ejemplo, un usuario que está incluido en elestibadorEl grupo tiene
acceso completo a los comandos y servicios de Docker. Esto se puede lograr con un comando como
agregar usuariogrupo de usuario.

112 Kali Linux revelado


5.2.2. Modificación de una cuenta o contraseña existente

Los siguientes comandos permiten modificar la información almacenada en campos específicos de las bases de datos de los
usuarios:

• Contraseña—permite a un usuario normal cambiar su contraseña, que a su vez, actualiza la/etc/


sombraarchivo.

• CHF—(Cambiar Nombre Completo), reservado para el superusuario (root), modifica elGECOS,o el campo
"información general".

• chsh—(CAMBIAR SHell) cambia el shell de inicio de sesión del usuario. Sin embargo, las opciones disponibles
se limitarán a las enumeradas en/etc/conchas; el administrador, por otro lado, no está sujeto a esta restricción
y puede configurar el shell para cualquier programa elegido.

• cambio—(Cambiar EDAD) le permite al administrador cambiar la configuración de caducidad de la contraseña al

pasar el nombre de usuario como argumento o enumerar la configuración actual usando -yousuarioopción.
Alternativamente, también puede forzar la caducidad de una contraseña usando elcontraseña -eusuario
comando, que obliga al usuario a cambiar su contraseña la próxima vez que inicie sesión.

5.2.3. Deshabilitar una cuenta

Puede verse en la necesidad de inhabilitar una cuenta (bloquear a un usuario) como medida disciplinaria, a efectos
de una investigación, o simplemente en caso de ausencia prolongada o definitiva de un usuario. Una cuenta
deshabilitada significa que el usuario no puede iniciar sesión ni obtener acceso a la máquina. La cuenta permanece
intacta en la máquina y no se eliminan archivos ni datos; es simplemente inaccesible. Esto se logra usando el
comandocontraseña -lusuario(cerrar con llave). La reactivación de la cuenta se realiza de manera similar, con el -tu
opción (desbloquear).

5.2.4. Gestión de grupos Unix

Elañadir grupoydelgrupolos comandos agregan o eliminan un grupo, respectivamente. Elgrupo modEl comando
modifica la información de un grupo (suGido identificador). El comandogcontraseñagrupocambia la contraseña
del grupo, mientras que elgcontraseña -rgrupoel comando lo elimina.

Trabajando con Varios Cada usuario puede ser miembro de muchos grupos. El grupo principal de un usuario se crea, de manera
Grupos predeterminada, durante la configuración inicial del usuario. De forma predeterminada, cada archivo que
crea un usuario pertenece al usuario, así como al grupo principal del usuario. Esto no siempre es deseable;
por ejemplo, cuando el usuario necesita trabajar en un directorio compartido por un grupo que no sea su
grupo principal. En este caso, el usuario necesita cambiar de grupo usando uno de los siguientes comandos:
nuevo grupo, que inicia un nuevo shell, osg, que simplemente ejecuta un comando utilizando el grupo
alternativo proporcionado. Estos comandos también permiten al usuario unirse a un grupo al que no
pertenece actualmente. Si el grupo está protegido con contraseña, deberán proporcionar la contraseña
adecuada antes de ejecutar el comando.

Capítulo 5: Configuración de Kali Linux 113


Traducido del inglés al español - www.onlinedoctranslator.com

Alternativamente, el usuario puede configurar elsetgidbit en el directorio, lo que hace que los archivos creados
en ese directorio pertenezcan automáticamente al grupo correcto. Para más detalles, consulte la barra lateral
“setgiddirectorio ypoco pegajoso” [página 58].

ElidentificaciónEl comando muestra el estado actual de un usuario, con su identificador


personal (fluidovariable), grupo principal actual (Gidvariable), y la lista de grupos a los que
pertenecen (gruposvariable).

5.3. Configuración de servicios

En esta sección, veremos los servicios (a veces llamados demonios) o programas que se ejecutan como un
proceso en segundo plano y realizan varias funciones para el sistema. Comenzaremos analizando los
archivos de configuración y procederemos a explicar cómo funcionan algunos servicios importantes (como
SSH, PostgreSQL y Apache) y cómo se pueden configurar.

La política de Kali Linux es tener cualquier servicio de red deshabilitado por defecto, lo cual es un comportamiento
diferente al de otros sistemas operativos Linux. Para más información ver apartado1.5, “Políticas de Kali Linux” [página 10].

5.3.1. Configuración de un programa específico

Cuando desee configurar un paquete desconocido, debe proceder por etapas. Primero, debe leer lo
que ha documentado el mantenedor del paquete. El/usr/compartir/doc/paquete/LÉAME. DebianEl archivo es un
buen lugar para comenzar. Este archivo a menudo contendrá información sobre el paquete, incluidos
indicadores que pueden remitirlo a otra documentación. A menudo se ahorrará mucho tiempo y
evitará mucha frustración leyendo este archivo primero, ya que a menudo detalla los errores más
comunes y las soluciones a los problemas más comunes.

A continuación, debe consultar la documentación oficial del software. Consulte la sección6.1, “Fuentes de
documentación” [página 128] para obtener sugerencias sobre cómo encontrar varias fuentes de
documentación. Eldpkg -L paquetecomando da una lista de archivos incluidos en el paquete; por lo tanto,
puede identificar rápidamente la documentación disponible (así como los archivos de configuración,
ubicados en/etc/). También,dpkg-s paquetemuestra los metadatos del paquete y muestra cualquier posible
paquete recomendado o sugerido; allí, puede encontrar documentación o tal vez una utilidad que facilitará la
configuración del software.

Finalmente, los archivos de configuración a menudo están autodocumentados por muchos comentarios
explicativos que detallan los diversos valores posibles para cada ajuste de configuración. En algunos casos, puede
poner en marcha el software quitando los comentarios de una sola línea en el archivo de configuración. En otros
casos, se proporcionan ejemplos de archivos de configuración en el/usr/compartir/doc/paquete/ejemplos/directorio.
Pueden servir como base para su propio archivo de configuración.

114 Kali Linux revelado


5.3.2. Configuración de SSH para inicios de sesión remotos

SSH le permite iniciar sesión de forma remota en una máquina, transferir archivos o ejecutar comandos. Es una
herramienta estándar de la industria (ssh) y servicio (sshd) para conectarse a máquinas de forma remota.

Mientras que laabre el servidor shpaquete está instalado por defecto, elSSHEl servicio está deshabilitado de forma predeterminada
y, por lo tanto, no se inicia en el momento del arranque. Puede iniciar manualmente el servicio SSH consystemctl iniciar ssho
configurarlo para que comience en el momento del arranque consystemctl habilitar ssh.

El servicio SSH tiene una configuración predeterminada relativamente sana, pero dadas sus poderosas capacidades
y su naturaleza sensible, es bueno saber qué puede hacer con su archivo de configuración./etc/ssh/sshd_config. Todas
las opciones están documentadas ensshd_config(5)(mira la sección6.1.1, “Páginas manuales” [página 128])

La configuración predeterminada permite inicios de sesión basados en contraseña. Si no desea esto, puede
deshabilitarlo configurandoContraseñaAutenticaciónaNo.Hacerlo significará que será necesario generar una clave
SSH. El servicio SSH escucha de forma predeterminada en el puerto 22, pero puede cambiar esto con elPuerto
directiva.

Para aplicar la nueva configuración, debe ejecutarsystemctl recargar ssh.

Generación de nuevo host SSH Cada servidor SSH tiene sus propias claves criptográficas; se denominan "claves de host
Llaves SSH" y se almacenan en/etc/ssh/ssh_host_*. Deben mantenerse en privado si desea
confidencialidad y no deben compartirse entre varias máquinas.

Cuando instala su sistema copiando una imagen de disco completa (en lugar de usar debianinstaller
como imágenes ARM), la imagen puede contener claves de host SSH generadas previamente que, por
lo tanto, debe reemplazar con claves recién generadas. La imagen probablemente también viene con
una contraseña de usuario predeterminada que desea restablecer al mismo tiempo. Puedes hacer
todo esto con los siguientes comandos:

# Contraseña

[...]
# rm /etc/ssh/ssh_host_*
# dpkg-reconfigure abre el servidor sh
# systemct reiniciar ssh

5.3.3. Configuración de bases de datos PostgreSQL

PostgreSQL es un servidor de base de datos. Rara vez es útil por sí solo, pero muchos otros servicios lo utilizan para
almacenar datos. Esos servicios generalmente accederán al servidor de la base de datos a través de la red y, por lo general,
requerirán credenciales de autenticación para poder conectarse. Por lo tanto, configurar esos servicios requiere crear
bases de datos PostgreSQL y cuentas de usuario con los privilegios apropiados en la base de datos. A

Capítulo 5: Configuración de Kali Linux 115


poder hacer eso, necesitamos que el servicio se esté ejecutando, así que comencemos coninicio systemctl
posgresql.

Múltiples PostgreSQL El paquete de PostgreSQL permite la coinstalación de varias versiones del servidor de la base de
versiones compatibles datos. También es posible manejar múltiplesracimos(un clúster es una colección de bases de datos
servidas por el mismoadministrador de correos). Para lograr esto, los archivos de configuración
se almacenan en/etc/postgresql/versión/nombre del clúster/.
Para que los clústeres se ejecuten en paralelo, a cada nuevo clúster se le asigna el siguiente número de
puerto disponible (generalmente 5433 para el segundo clúster). Elpostgresql.servicioEl archivo es un caparazón
vacío, lo que facilita actuar en todos los clústeres juntos, ya que cada clúster tiene su propio
propia unidad (postgresql@versión-grupo.servicio).

Tipo de conexión y autenticación del cliente

De forma predeterminada, PostgreSQL escucha las conexiones entrantes de dos maneras: en el puerto TCP
5432 de la interfaz localhost y en el socket basado en archivos./var/run/postgresql/.s.PGSQL.5432. Esto se puede
configurar enpostgresql.confcon varias directivas:escucha_direccionespara las direcciones a escuchar,puerto
para el puerto TCP, ydirectorios_socket_unixpara definir el directorio donde se crean los sockets basados en
archivos.

Dependiendo de cómo se conecten, los clientes se autentican de diferentes maneras. Elpg_hba.conf


El archivo de configuración define quién puede conectarse en cada socket y cómo se autentica. De forma
predeterminada, las conexiones en el socket basado en archivos usan la cuenta de usuario de Unix como el nombre
del usuario de PostgreSQL y asume que no se requiere más autenticación. En la conexión TCP, PostgreSQL requiere
que el usuario se autentique con un nombre de usuario y una contraseña (aunque no un nombre de usuario/
contraseña de Unix, sino uno administrado por el mismo PostgreSQL).

ElpostgresEl usuario es especial y tiene plenos privilegios administrativos sobre todas las bases de datos. Usaremos esta
identidad para crear nuevos usuarios y nuevas bases de datos.

Creación de usuarios y bases de datos

Elcrear usuariocomando agrega un nuevo usuario ydropuserelimina uno. Asimismo, elcreadob


comando agrega una nueva base de datos ydropdbelimina uno. Cada uno de estos comandos tiene sus propias páginas de
manual, pero discutiremos algunas de las opciones aquí. Cada comando actúa en el clúster predeterminado (que se
ejecuta en el puerto 5432), pero puede pasar:puerto=puertopara modificar usuarios y bases de datos de un clúster
alternativo.

Estos comandos deben conectarse al servidor PostgreSQL para hacer su trabajo y deben estar autenticados como
un usuario con suficientes privilegios para poder ejecutar la operación especificada. La forma más fácil de lograr
esto es usar elpostgrescuenta de Unix y conéctese a través del socket basado en archivos:

# su - postgres

116 Kali Linux revelado


postgres@kali :~$crear usuario -P king_phisher Introduzca
la contraseña para el nuevo rol: Introdúzcala de nuevo:

postgres@kali :~$createdb -T plantilla0 -E UTF-8 -O rey_phisher rey_phisher postgres@kali :~$


salida

En el ejemplo anterior, el -PAGla opción preguntacrear usuariopara consultar una contraseña una vez que crea la
nuevarey_phisherusuario. Mirando a lacreadobcomando, el -Odefine el usuario propietario de la nueva base de datos
(que, por lo tanto, tendrá todos los derechos para crear tablas y otorgar permisos, etc.). También queremos poder
usar cadenas Unicode, por lo que agregamos el -UE UTF-8opción para establecer la codificación, que a su vez
requiere que usemos el -Topción para elegir otra plantilla de base de datos.

Ahora podemos probar que podemos conectarnos a la base de datos a través del socket que escucha en localhost (-h
servidor local)como usuario king_phisher (-Uking_phisher):

# psql -h localhost -U rey_phisher rey_phisher Contraseña


para el usuario king_phisher: psql (9.5.2)

Conexión SSL (protocolo: TLSv1.2, cifrado: ECDHE-RSA-AES256-GCM-SHA384, bits: 256,


acompresión: desactivada)
Escriba "ayuda" para obtener ayuda.

rey_phisher=>

Como puede ver, la conexión fue exitosa.

Administrar clústeres de PostgreSQL

En primer lugar, vale la pena señalar que el concepto de "clúster de PostgreSQL" es unAdición específica de Debian1y que
no encontrará ninguna referencia a este término en eldocumentación oficial de PostgreSQL2. Desde el punto de vista de
las herramientas de PostgreSQL, dicho clúster es solo una instancia de un servidor de base de datos que se ejecuta en un
puerto específico.

Dicho esto, Debianpostgresql-comúnEl paquete proporciona múltiples herramientas para administrar dichos
clústeres: pg_createcluster,pg_dropcluster,pg_ctlcluster,pg_upgradecluster,
pg_renamecluster, ypg_lsclusters. No cubriremos todas esas herramientas aquí, pero puede consultar sus
respectivas páginas de manual para obtener más información.

Lo que debe saber es que cuando se instala una nueva versión principal de PostgreSQL en su sistema, creará
un nuevo clúster que se ejecutará en el siguiente puerto (generalmente 5433) y seguirá usando la versión
anterior hasta que migre sus bases de datos de la anterior. clúster al nuevo.

Puede recuperar una lista de todos los clústeres y su estado conpg_lsclusters. Más importante aún,
puede automatizar la migración de su clúster a la última versión de PostgreSQL con
1https://wiki.debian.org/PostgreSql
2https://www.postgresql.org/docs/

Capítulo 5: Configuración de Kali Linux 117


pg_upgradeclusternombre de clúster de la versión anterior. Para que esto tenga éxito, es posible que primero deba
elimine el clúster (vacío) creado para la nueva versión (conpg_dropclusternombre del clúster de la nueva
versión). El clúster anterior no se descarta en el proceso, pero tampoco se iniciará automáticamente.
Puede soltarlo una vez que haya verificado que el clúster actualizado funciona bien.

5.3.4. Configuración de apache

Una instalación típica de Kali Linux incluye el servidor web Apache, proporcionado por elapache2paquete. Al
ser un servicio de red, está deshabilitado por defecto. Puede iniciarlo manualmente coninicio systemctl
apache2.

Con más y más aplicaciones que se distribuyen como aplicaciones web, es importante tener
algún conocimiento de Apache para alojar esas aplicaciones, ya sea para uso local o para que
estén disponibles a través de la red.
Apache es un servidor modular y muchas funciones se implementan mediante módulos externos que el programa
principal carga durante su inicialización. La configuración predeterminada solo habilita los módulos más comunes,
pero la habilitación de nuevos módulos se realiza fácilmente ejecutandoa2enmodmódulo. Usar
a2dismodmódulopara deshabilitar un módulo. Estos programas solo crean (o eliminan) enlaces
simbólicos en/etc/apache2/mods-enabled/, apuntando a los archivos reales (almacenados en/etc/apache2/
mods-disponible/).

Hay muchos módulos disponibles, pero vale la pena considerar dos inicialmente: PHP y SSL (usado
para TLS). Las aplicaciones web escritas con PHP son ejecutadas por el servidor web Apache con la
ayuda del módulo dedicado provisto por ellibapache-mod-phppaquete, y su instalación habilita
automáticamente el módulo.

Apache 2.4 incluye el módulo SSL necesario para el Protocolo seguro de transferencia de hipertexto (HTTPS)
listo para usar. Primero debe habilitarse cona2enmod ssl, entonces se deben agregar las directivas requeridas
a los archivos de configuración. Se proporciona un ejemplo de configuración en/etc/apache2/
sitios-disponibles/predeterminado-ssl.conf. Verhttps://httpd.apache.org/docs/2.4/mod/mod_
ssl.htmlpara más información.
La lista completa de módulos estándar de Apache se puede encontrar en línea enhttps://httpd.apache.org/
docs/2.4/mod/index.html.

Con su configuración predeterminada, el servidor web escucha en el puerto 80 (como se configuró en/etc/
apache2/ puertos.conf), y sirve páginas desde el/var/www/html/directorio por defecto (como se configuró en
/etc/apache2/sites-enabled/000-default.conf).

Configuración de hosts virtuales

Un host virtual es una identidad adicional para el servidor web. El mismo proceso de Apache puede servir a varios
sitios web (digamoswww.kali.orgywww.offensive-security.com)porque las solicitudes HTTP incrustan

118 Kali Linux revelado


tanto el nombre del sitio web solicitado como la URL localpart (esta característica se conoce comohosts virtuales basados
en nombres).

La configuración predeterminada para Apache 2 habilita hosts virtuales basados en nombres. Además, se define un host
virtual predeterminado en /etc/apache2/sites-enabled/000-default.confarchivo; este host virtual se utilizará si no se
encuentra ningún host que coincida con la solicitud enviada por el cliente.

Importante

Las solicitudes relacionadas con hosts virtuales desconocidos siempre serán atendidas por el
primer host virtual definido, razón por la cual el paquete se envía como000-predeterminado.
conferenciaarchivo de configuración, que se ordena primero entre todos los demás archivos que
puede crear.

Luego, cada host virtual adicional se describe mediante un archivo almacenado en/etc/apache2/sitios-disponibles/. El archivo
generalmente lleva el nombre del nombre de host del sitio web seguido de una extensión .conferenciasufijo (por ejemplo:
www.kali.org.conf). A continuación, puede habilitar el nuevo host virtual cona2ensite www.kali.org. Aquí hay una
configuración mínima de host virtual para un sitio web cuyos archivos se almacenan en/srv/www.kali. org/www/(
definido con elRaiz del documentoopción):

<Host virtual *:80>


Nombre del servidor www.kali.org
Alias del servidor kali.org
DocumentRoot /srv/www.kali.org/www </
VirtualHost>

También puede considerar agregarRegistro personalizadoyRegistro de erroresdirectivas para configurar Apache para generar
registros en archivos dedicados al host virtual.

Directivas comunes

Esta sección revisa brevemente algunas de las directivas de configuración de Apache más utilizadas.

El archivo de configuración principal suele incluir variosDirectoriobloques; permiten especificar diferentes


comportamientos para el servidor dependiendo de la ubicación del archivo que se está sirviendo. Dicho bloque
comúnmente incluyeOpcionesyPermitir sobrescrituradirectivas:

<Directorio /var/www>
Opciones Incluye FollowSymLinks
AllowOverride All
ÍndiceDirectorio index.php index.html index.htm </
Directorio>

Capítulo 5: Configuración de Kali Linux 119


ElDirectorioÍndiceLa directiva contiene una lista de archivos para probar cuando la solicitud del cliente coincide con un
directorio. El primer archivo existente en la lista se usa y se envía como respuesta.

ElOpcionesLa directiva va seguida de una lista de opciones para habilitar. ElNingunoel valor deshabilita todas las opciones;
correspondientemente,Todoles permite a todos exceptoMultivistas.Las opciones disponibles incluyen:

• ExecCGI—indica que se pueden ejecutar scripts CGI.


• SeguirSymLinks—le dice al servidor que se pueden seguir los enlaces simbólicos y que la respuesta
debe contener el contenido del destino de dichos enlaces.

• SymLinksIfOwnerMatch—también le dice al servidor que siga enlaces simbólicos, pero solo cuando el
enlace y su destino tienen el mismo propietario.

• Incluye—permiteEl lado del servidor incluye(SSI). Estas son directivas incrustadas en páginas HTML y
ejecutadas sobre la marcha para cada solicitud.

• Índices—le dice al servidor que enumere el contenido de un directorio si la solicitud HTTP enviada por el
cliente apunta a un directorio sin un archivo de índice (es decir, cuando no hay archivos mencionados por el
DirectorioÍndicedirectiva existe en este directorio).

• Vistas múltiples—permite la negociación de contenido; esto puede ser utilizado por el servidor para devolver una página
web que coincida con el idioma preferido según lo configurado en el navegador.

Requerir AutenticaciónEn algunas circunstancias, es necesario restringir el acceso a una parte de un sitio web, por
lo que solo los usuarios legítimos que proporcionan un nombre de usuario y una contraseña tienen acceso a los
contenidos.

El.htaccessEl archivo contiene las directivas de configuración de Apache que se aplican cada vez que una solicitud se refiere a
un elemento del directorio donde se encuentra el archivo..htaccessel archivo está almacenado. Estas directivas son
recursivas, expandiendo el alcance a todos los subdirectorios.

La mayoría de las directivas que pueden ocurrir en unDirectoriobloque también son legales en un.htaccessarchivo. El
Permitir sobrescrituradirectiva enumera todas las opciones que se pueden habilitar o deshabilitar a través de.
htaccess. Un uso común de esta opción es restringirCGI ejecutivo,para que el administrador elija qué usuarios
pueden ejecutar programas bajo la identidad del servidor web (lawww-datosusuario).

Ejemplo 5.3.htaccessArchivo que requiere autenticación

Requerir usuario válido


AuthName ”Directorio privado”
AuthType Básico
AuthUserFile /etc/apache2/authfiles/htpasswd-private

120 Kali Linux revelado


Autenticación básica El sistema de autenticación utilizado en el ejemplo anterior (Básico) tiene una seguridad
No ofrece seguridad mínima ya que la contraseña se envía en texto claro (solo se codifica comobase64, que es una
codificación simple en lugar de un método de cifrado). También cabe señalar que los
documentos protegidos por este mecanismo también pasan por la red en claro. Si la
seguridad es importante, toda la sesión HTTP debe cifrarse con Transport Layer Security (TLS).

El/etc/apache2/authfiles/htpasswd-privateel archivo contiene una lista de usuarios y contraseñas;


comúnmente se manipula con elhtcontraseñadominio. Por ejemplo, el siguiente comando se usa para
agregar un usuario o cambiar su contraseña:
# htpasswd /etc/apache2/authfiles/htpasswd-privateusuario Nueva
contraseña:
Reescriba nueva contraseña:
Agregar contraseña para el usuariousuario

Restricción de accesoElRequerirdirectiva controla las restricciones de acceso para un directorio (y sus


subdirectorios, recursivamente).

Se puede utilizar para restringir el acceso según muchos criterios; nos detendremos en describir la restricción de
acceso basada en la dirección IP del cliente, pero se puede hacer mucho más poderosa que eso, especialmente
cuando variosRequerirdirectivas se combinan dentro de unRequerir todobloquear.

Por ejemplo, podría restringir el acceso a la red local con la siguiente directiva:
Requerir ip 192.168.0.0/16

5.4. Servicios de gestión

Kali utilizasistemadcomo su sistema init, que no solo es responsable de la secuencia de arranque, sino que también actúa
permanentemente como un administrador de servicios con todas las funciones, iniciando y monitoreando servicios.

sistemadpuede consultarse y controlarse consystemctl. Sin ningún argumento, ejecuta el


systemctl lista-unidadescomando, que genera una lista de los activosunidades. Si tu corresestado del sistema, el
resultado muestra una descripción general jerárquica de los servicios en ejecución. Al comparar ambos
resultados, inmediatamente ve que hay varios tipos de unidades y que los servicios son solo uno de ellos.

Cada servicio está representado por ununidad de servicio, que se describe mediante un archivo de servicio que generalmente se envía en

/lib/systemd/sistema/(o/ejecutar/sistemad/sistema/, o/etc/sistemad/sistema/; ellos estan listados


por orden creciente de importancia, y gana el último). Cada uno es posiblemente modificado por otro
Nombre del Servicio.servicio.d/*.confarchivos en el mismo conjunto de directorios. Esos archivos unitarios son archivos de
texto plano cuyo formato está inspirado en los conocidos archivos “*.ini” de Microsoft Windows, conllave

Capítulo 5: Configuración de Kali Linux 121


=valorparejas agrupadas entre [sección]encabezados Aquí vemos un archivo de servicio de muestra para/libre/
systemd/system/ssh.servicio:

[Unidad]
Descripción=Servidor OpenBSD Secure Shell
After=network.target auditd.service ConditionPathExists=!/etc/
ssh/sshd_not_to_be_run

[Servicio]
EnvironmentFile=-/etc/default/ssh ExecStart=/usr/
sbin/sshd -D $SSHD_OPTS ExecReload=/bin/kill
-HUP $MAINPID KillMode=proceso

Reiniciar = en caso de falla


RestartPreventExitStatus=255
Tipo=notificar

[Instalar]
WantedBy=multi-user.target
Alias=sshd.service

Las unidades de destino son otra parte del diseño de systemd. Representan un estado deseado que desea alcanzar en
términos de unidades activadas (lo que significa un servicio en ejecución en el caso de las unidades de servicio). Existen
principalmente como una forma de agrupar dependencias en otras unidades. Cuando el sistema arranca, habilita las
unidades requeridas para llegar aldestino predeterminado(que es un enlace simbólico agráfico.objetivo, y que a su vez depende
deobjetivo multiusuario). Entonces, todas las dependencias de esos objetivos se activan durante el arranque.

Tales dependencias se expresan con elQuieredirectiva sobre la unidad de destino. Pero no tiene que editar la
unidad de destino para agregar nuevas dependencias, también puede crear un enlace simbólico que apunte a la
unidad dependiente en el/etc/sistemad/sistema/nombre de destino.objetivo.quiere/directorio. Y esto es exactamente lo que
Habilitar systemctlfoo.serviciohace. Cuando habilita un servicio, le dice a systemd que agregue una dependencia en los
objetivos enumerados en elBuscado porentrada de [Instalar]sección del archivo de la unidad de servicio. En
cambio,systemctl deshabilitarfoo.servicioelimina el mismo enlace simbólico y, por lo tanto, la dependencia.

ElpermitirydesactivarLos comandos no cambian nada con respecto al estado actual de los servicios.
Solo influyen en lo que sucederá en el próximo arranque. Si desea ejecutar el servicio
inmediatamente, debe ejecutarinicio systemctlfoo.servicio. Por el contrario, puede detenerlo con
detener systemctlfoo.servicio. También puede inspeccionar el estado actual de un servicio conestado del
sistemafoo.servicio, que incluye de forma útil las últimas líneas del registro asociado. Después de
haber cambiado la configuración de un servicio, es posible que desee volver a cargarlo o reiniciar
it: esas operaciones se hacen conrecarga systemctlfoo.servicioyreinicio systemctl
foo.serviciorespectivamente.

# systemctl estado postgresql

122 Kali Linux revelado


● postgresql.service - RDBMS de PostgreSQL
Cargado: cargado (/lib/systemd/system/postgresql.service; deshabilitado; proveedor predeterminado:
adesactivado)
Activo: inactivo (muerto)
# ls -al /etc/systemd/system/multi-user.target.wants/postgresql.service
ls: no se puede acceder a '/etc/systemd/system/multi-user.target.wants/postgresql.service': No
adicho archivo o directorio
# systemctl habilitar postgresql [...]

# ls -al /etc/systemd/system/multi-user.target.wants/postgresql.service lrwxrwxrwx 1 raíz raíz 38 26 de


enero 19:09 /etc/systemd/system/multi-user.target.wants/
apostgresql.servicio -> /lib/systemd/system/postgresql.servicio
# systemctl estado postgresql
● postgresql.service - RDBMS de PostgreSQL
Cargado: cargado (/lib/systemd/system/postgresql.service; habilitado; proveedor predeterminado:
adesactivado)
Activo: inactivo (muerto)
# systemctl iniciar postgresql
# systemctl estado postgresql
● postgresql.service - RDBMS de PostgreSQL
Cargado: cargado (/lib/systemd/system/postgresql.service; habilitado; proveedor predeterminado:
adesactivado)
Activo: activo (salido) desde mar 2021-01-26 19:10:31 EST; Hace 5 s Proceso: 1495
ExecStart=/bin/true (código=salido, estado=0/ÉXITO) PID principal: 1495 (código=salido,
estado=0/ÉXITO)

26 de enero 19:10:31 kali-rolling systemd[1]: Iniciando PostgreSQL RDBMS... 26 de enero


19:10:31 kali-rolling systemd[1]: Iniciado PostgreSQL RDBMS.

5.5. Resumen

En este capítulo, aprendimos cómo configurar Kali Linux. Configuramos ajustes de red, hablamos sobre
usuarios y grupos, y discutimos cómo crear y modificar cuentas de usuario, establecer contraseñas,
deshabilitar cuentas y administrar grupos. Finalmente, discutimos los servicios y explicamos cómo
configurar y mantener servicios genéricos, específicamente SSH, PostgreSQL y Apache.

Resumen de consejos:

• En una instalación de escritorio típica, tendráGerente de Redesya está instalado y se puede controlar y
configurar a través de la configuración del sistema de Xfce y a través del menú superior derecho.

• Puede configurar la red desde la línea de comandos con elsi arribaysi abajoherramientas, que leen
sus instrucciones del/etc/red/interfacesarchivo de configuración. Una herramienta aún más nueva,
systemd-networkdtrabaja con elsistemadsistema de inicio.

Capítulo 5: Configuración de Kali Linux 123


• Por defecto, la base de datos de usuarios y grupos de Unix consta de archivos de texto/etc/contraseña
(lista de usuarios),/etc/sombra(contraseñas encriptadas de los usuarios),/etc/grupo(lista de grupos), y
/etc/gshadow(contraseñas encriptadas de grupos).

• Puede utilizar elgetentecomando para consultar la base de datos del usuario y otras bases de datos del sistema.

• Elagregar usuarioEl comando hace algunas preguntas antes de crear la cuenta, pero es una forma
sencilla de crear una nueva cuenta de usuario.

• Se pueden usar varios comandos para modificar campos específicos en la base de datos del usuario, incluidos:
Contraseña(cambiar la contraseña),CHF(cambiar el nombre completo y elGECOS,o campo de información general),chsh(
cambiar shell de inicio de sesión),cambio(cambiar la antigüedad de la contraseña), ycontraseña -eusuario
(obliga al usuario a cambiar su contraseña la próxima vez que inicie sesión).

• Cada usuario puede ser miembro de uno o varios grupos. Se pueden usar varios comandos para modificar la
identidad del grupo:nuevo grupocambia el ID de grupo actual,sgejecuta un comando utilizando el grupo
alternativo suministrado, elsetgidbit se puede colocar en un directorio, lo que hace que los archivos creados
en ese directorio pertenezcan automáticamente al grupo correcto. además, elidentificaciónEl comando
muestra el estado actual de un usuario, incluida una lista de miembros de su grupo.

• Puede iniciar manualmente SSH consystemctl iniciar ssho habilitarlo permanentemente con
systemctl habilitar ssh.

• PostgreSQL es un servidor de base de datos. Rara vez es útil por sí solo, pero muchos otros servicios lo utilizan para
almacenar datos.

• Una instalación típica de Kali Linux incluye el servidor web Apache, proporcionado por elapache2
paquete. Al ser un servicio de red, está deshabilitado por defecto. Puede iniciarlo manualmente con
systemctl iniciar apache2.

• Con su configuración predeterminada, Apache escucha en el puerto 80 (como se configuró en/etc/


apache2/ puertos.conf), y sirve páginas desde el/var/www/html/directorio por defecto (como configuración
urido en/etc/apache2/sites-enabled/000-default.conf).

Ahora que hemos abordado los fundamentos de Linux y la instalación y configuración de Kali Linux, analicemos
cómo solucionar los problemas de Kali y le enseñemos algunas herramientas y trucos para que pueda volver a
funcionar cuando tenga problemas.

124 Kali Linux revelado


Palabras clave

Documentación
Foros
canal de IRC
Informe de error
Capítulo

Ayudándote a ti mismo y 6
Obteniendo ayuda
Contenido

Fuentes de documentación128 Comunidades Kali Linux132 Presentar un buen informe de error134 Resumen151
No importa cuántos años de experiencia tengas, no hay duda de que, tarde o temprano, encontrarás
un problema. Resolver ese problema es a menudo una cuestión de comprenderlo y luego aprovechar
varios recursos para encontrar una solución o una solución temporal.

En este capítulo, analizaremos las diversas fuentes de información disponibles y analizaremos las mejores estrategias para
encontrar la ayuda que necesita o la solución a un problema que pueda estar enfrentando. También lo llevaremos en un
recorrido por algunos de los recursos disponibles de la comunidad de Kali Linux, incluidos los foros y el canal Internet Relay
Chat (IRC). Por último, presentaremos el informe de errores y le mostraremos cómo aprovechar los sistemas de archivo de
errores para solucionar problemas y diseñar estrategias para ayudarlo a presentar su propio informe de errores para que
los problemas no documentados se puedan manejar de manera rápida y efectiva.

6.1. Fuentes de documentación

Antes de que pueda comprender lo que realmente sucede cuando hay un problema, debe conocer el papel teórico
que desempeña cada programa involucrado en el problema. Una de las mejores maneras de hacer esto es revisar
la documentación del programa. Comencemos discutiendo dónde, exactamente, puede encontrar documentación,
ya que a menudo está dispersa.

Cómo evitar RTFM Este acrónimo significa "leer el maldito manual", pero también se puede expandir en una
respuestas variante más amigable, "leer el buen manual". Esta frase se usa a veces en respuestas
(concisas) a preguntas de novatos. Es bastante abrupto y delata cierta molestia ante una
pregunta formulada por alguien que ni siquiera se ha molestado en leer la documentación.
Algunos dicen que esta respuesta clásica es mejor que ninguna respuesta ya que esto al
menos sugiere que la respuesta se encuentra dentro de la documentación.

Cuando publique preguntas, no se ofenda necesariamente por la respuesta RTFM ocasional,


pero haga lo que pueda para al menos demostrar que se ha tomado el tiempo de investigar
un poco antes de publicar la pregunta; mencione las fuentes que ha consultado y describa los
diversos pasos que ha tomado personalmente para encontrar información. Esto contribuirá
en gran medida a demostrar que no eres perezoso y que realmente estás buscando
conocimiento. Seguir las pautas de Eric Raymond es una buena manera de evitar los errores
más comunes y obtener respuestas útiles.

mihttp://catb.org/~esr/faqs/smart-questions.html

6.1.1. Páginas manuales

Las páginas del manual (man), aunque tienen un estilo relativamente conciso, contienen una gran cantidad de
información esencial. Para ver una página de manual, simplemente escribahombrepágina del manual. La página del
manual suele coincidir con el nombre del comando. Por ejemplo, para conocer las posibles opciones para elc.p.
comando, escribiríashombre cpen el símbolo del sistema.

Las páginas del manual no solo documentan los programas accesibles desde la línea de comandos, sino también los archivos de
configuración, las llamadas al sistema, las funciones de la biblioteca C, etc. A veces los nombres pueden chocar. Para

128 Kali Linux revelado


ejemplo, la conchaleerEl comando tiene el mismo nombre que elleerllamada del sistema. Es por eso que las páginas del
manual están organizadas en las siguientes secciones numeradas:

1. Comandos que se pueden ejecutar desde la línea de comandos

2. Llamadas al sistema (funciones proporcionadas por el kernel)

3. Funciones de biblioteca (proporcionadas por bibliotecas del sistema)

4. Dispositivos (en sistemas similares a Unix, estos son archivos especiales, generalmente colocados en el/desarrollador/directorio)

5. Archivos de configuración (formatos y convenciones)

6. Juegos
7. Conjuntos de macros y estándares

8. Comandos de administración del sistema

9. Rutinas del núcleo

Puede especificar la sección de la página del manual que está buscando: para ver la documentación delleerllamada
al sistema, escribiríahombre 2 leer. Cuando no se especifica explícitamente ninguna sección, se mostrará la primera
sección que tenga una página de manual con el nombre solicitado. De este modo,sombra de hombre
devolucionessombra(5)porque no hay páginas de manual parasombraen las secciones 1–4.

Eso sí, si no conoces los nombres de los comandos, el manual no te va a ser de mucha utilidad. Introducir ela
propósitocomando, que busca en las páginas del manual (o más específicamente en sus breves descripciones)
cualquier palabra clave que proporcione. Ela propósitoLuego, el comando devuelve una lista de páginas de
manual cuyo resumen menciona las palabras clave solicitadas junto con el resumen de una línea de la
página de manual. Si elige bien sus palabras clave, encontrará el nombre del comando que necesita.

Ejemplo 6.1Hallazgoc.p.cona propósito

psa propósito de "copiar


archivo" cp (1) - copiar archivos y directorios
cpio (1) - copiar archivos hacia y desde archivos
copia de gvfs (1) - Copiar archivos
gvfs-movimiento (1) - Copiar archivos
copia (1) - copiar archivos desde o hacia un volumen HFS
instalar (1) - copiar archivos y establecer atributos
ntfscp (8) - copiar archivo a un volumen NTFS.

Documentación de navegación Muchas páginas de manual tienen una sección "Ver también", generalmente cerca del final del documento,
siguiendo los enlaces que hace referencia a otras páginas de manual relacionadas con comandos similares o documentación
externa. Puede usar esta sección para encontrar documentación relevante incluso cuando la primera opción
no sea la óptima.

Capítulo 6 — Ayudarse a sí mismo y obtener ayuda 129


Además dehombre, puedes usarconquistador(en KDE) ygañido(en GNOME) para buscar también páginas de
manual.

6.1.2. Documentos de información

El proyecto GNU ha escrito manuales para la mayoría de sus programas en elinformaciónformato; esta es la razón por la
cual muchas páginas del manual se refieren a las correspondientesinformacióndocumentación. Este formato ofrece
algunas ventajas, pero el programa predeterminado para ver estos documentos (también llamadoinformación) es un poco
más complejo. Sería aconsejable utilizarpinfoen cambio (de lapinfopaquete). Para instalarlo, simplemente ejecuteactualización
adecuadaseguido porapt instalar pinfo(mira la sección8.2.2.2, “Instalación de paquetes con APT” [página 183]).

Elinformaciónla documentación tiene una estructura jerárquica y si invocaspinfosin parámetros, mostrará


una lista de los nodos disponibles en el primer nivel. Por lo general, los nodos llevan el nombre de los
comandos correspondientes.

Puede utilizar las teclas de flecha para navegar entre los nodos. Alternativamente, también podría usar un
navegador gráfico (que es mucho más fácil de usar) comoconquistadorogañido.

En lo que respecta a las traducciones de idiomas, lainformaciónEl sistema siempre está en inglés y no es adecuado para la
traducción, a diferencia delhombresistema de paginas Sin embargo, cuando le preguntas a lapinfoprograma para mostrar
un inexistenteinformaciónpágina, volverá a la páginahombrepágina con el mismo nombre (si existe), que podría estar
traducida.

6.1.3. Documentación específica del paquete

Cada paquete incluye su propia documentación e incluso los programas menos documentados generalmente
tienen unLÉAMEarchivo que contiene información interesante y/o importante. Esta documentación está instalada en
el/usr/compartir/doc/paquete/directorio (dondepaqueterepresenta el nombre del paquete). Si la documentación es
particularmente grande, es posible que no esté incluida en el paquete principal del programa, pero podría
descargarse en un paquete dedicado que generalmente se llamapaquete-doc. El paquete principal generalmente
recomienda el paquete de documentación para que pueda encontrarlo fácilmente.

El/usr/compartir/doc/paquete/El directorio también contiene algunos archivos proporcionados por Debian, que
completan la documentación especificando las particularidades o mejoras del paquete en comparación con
una instalación tradicional del software. ElLÉAME.Debianarchivo también indica todas las adaptaciones que se
hicieron para cumplir con elPolítica de Debian1. Elregistro de cambios.Debian.gzEl archivo permite al usuario
seguir las modificaciones realizadas en el paquete a lo largo del tiempo; es muy útil para tratar de entender
qué ha cambiado entre dos versiones instaladas que no tienen el mismo comportamiento. Finalmente, a
veces hay unNOTICIAS.Debian.gzarchivo que documenta los principales cambios en el programa que pueden
afectar directamente al administrador.

1https://www.debian.org/doc/debian-policy/

130 Kali Linux revelado


6.1.4. sitios web

En muchos casos, puede encontrar sitios web que se utilizan para distribuir programas de software libre y para
reunir a la comunidad de sus desarrolladores y usuarios. Estos sitios están repletos de información relevante en
diversas formas, como documentación oficial, preguntas frecuentes (FAQ) y archivos de listas de correo. En la
mayoría de los casos, las preguntas frecuentes o los archivos de la lista de correo abordan los problemas que ha
encontrado. A medida que busca información en línea, es inmensamente valioso dominar la sintaxis de búsqueda.
Un consejo rápido: intente restringir una búsqueda a un dominio específico, como el dedicado al programa que le
está causando problemas. Si la búsqueda arroja demasiadas páginas o si los resultados no coinciden con lo que
busca, puede agregar la palabra clavekalioDebianpara limitar los resultados y orientar la información relevante.

Del error a un Si el software devuelve un mensaje de error muy específico, ingréselo en un motor de búsqueda
Solución (entre comillas dobles,”, para buscar la frase completa, en lugar de las palabras clave individuales). En
la mayoría de los casos, los primeros enlaces devueltos contendrán la respuesta que necesita.

En otros casos, obtendrá errores muy generales, como "Permiso denegado". En este caso, lo mejor
es comprobar los permisos de los elementos implicados (archivos, ID de usuario, grupos, etc.). En
definitiva, no te acostumbres a utilizar siempre un buscador para encontrar una solución a tu
problema. Descubrirá que es demasiado fácil olvidarse de usar el sentido común.

Si no conoce la dirección del sitio web del software, existen varios medios para localizarlo. Primero, busca un
Página principalcampo en la metainformación del paquete (espectáculo aptopaquete). Alternativamente, la
descripción del paquete puede contener un enlace al sitio web oficial del programa. Si no se indica ninguna
URL, es posible que el mantenedor del paquete haya incluido una URL en el/usr/compartir/doc/paquete/derechos
de autorarchivo. Finalmente, puede utilizar un motor de búsqueda de Internet (como Google, Bing,
DuckDuckGo, etc.) para encontrar el sitio web del software.

6.1.5. Documentación de Kali en kali.org/docs/

El proyecto Kali mantiene una colección de documentación útil enhttps://www.kali.org/docs/. Si bien este libro
cubre una gran parte de lo que debe saber sobre Kali Linux, la documentación que contiene aún puede ser
útil, ya que contiene instrucciones paso a paso (muy parecidas a procedimientos) sobre muchos temas.

mihttps://www.kali.org/docs/
Repasemos los diversos temas tratados allí:

• Introducción: documentación que describe qué es Kali Linux y todas sus características

• Instalación: varios documentos que describen la instalación de Kali Linux, incluido cómo
instalarlo junto con otros sistemas operativos

Capítulo 6 — Ayudarse a sí mismo y obtener ayuda 131


• Virtualización: varios documentos que describen cómo crear máquinas virtuales Kali Linux a
través de varios software

• USB: documentación que describe cómo crear un USB en vivo de arranque de Kali Linux

• Kali Linux en ARM: muchas recetas sobre cómo ejecutar Kali Linux en varios dispositivos basados en ARM

• Contenedores: documentación que describe cómo usar Kali Linux en contenedores como Docker o
LXC

• WSL: varios documentos que contienen información sobre posibles formas de usar Kali Linux a través del
Subsistema de Windows para Linux

• Nube: documentación que describe cómo crear instancias en la nube de Kali Linux

• Kali NetHunter: documentación sobre todo lo relacionado con el puerto móvil de Kali

• Uso general: varios documentos sobre los casos de uso típicos de Kali Linux y respuestas a varias
preguntas que se pueden hacer

• Herramientas: documentación sobre las herramientas contenidas en Kali Linux

• Solución de problemas: varios documentos que contienen información que puede ser beneficiosa para
solucionar problemas

• Desarrollo: documentación que describe muchos aspectos del proceso de creación de Kali Linux

• Comunidad: documentación que describe cómo participar en la comunidad de Kali Linux

• Política: explicaciones sobre lo que hace que Kali Linux sea especial en comparación con otras distribuciones
de Linux

6.2. Comunidades Kali Linux

Hay muchas comunidades de Kali Linux en todo el mundo que utilizan muchas herramientas diferentes para
comunicarse (foros, chat en tiempo real y redes sociales, por ejemplo). En esta sección, solo presentaremos
dos comunidades oficiales de Kali Linux.

6.2.1. Foros en forums.kali.org

Los foros oficiales de la comunidad para el proyecto Kali Linux se encuentran enforos.kali.org2. Como todos
los foros basados en la web, debe crear una cuenta para poder publicar y el sistema recuerda las
publicaciones que ya ha visto, lo que facilita el seguimiento de las conversaciones de manera regular.

Antes de publicar, debes leer las reglas del foro:

mihttps://www.kali.org/docs/community/kali-linux-community-forums/

2https://forums.kali.org/

132 Kali Linux revelado


No los copiaremos aquí, pero vale la pena señalar que no está permitido hablar sobre actividades ilegales,
como ingresar a las redes de otras personas. Debe ser respetuoso con los demás miembros de la comunidad
para crear una comunidad acogedora. La publicidad está prohibida y se deben evitar las discusiones fuera de
tema. Hay suficientes categorías para cubrir todo lo que le gustaría discutir sobre Kali Linux.

6.2.2. Canal IRC #kali-linux en Freenode

IRC es un sistema de chat en tiempo real. Las discusiones ocurren en salas de chat llamadascanalesy
generalmente se centran en un tema o comunidad en particular. El proyecto Kali Linux usa el #kalilinuxcanal
en elnodo libre3red (puede usarchat.freenode.netcomo servidor IRC, en el puerto 6667 para una conexión
cifrada con TLS o en el puerto 6666 para una conexión de texto claro).

Para unirse a las discusiones en IRC, debe usar un cliente de IRC comohexadecimal(en modo gráfico) oIrsi(
en modo consola). También hay un cliente basado en web disponible enwebchat.freenode.net4.

Si bien es muy fácil unirse a la conversación, debe tener en cuenta que los canales de IRC tienen sus
propias reglas y que hay operadores de canales (su apodo tiene el prefijo @ cuando se usa elHexChat5
cliente de IRC) que pueden hacer cumplir las reglas: pueden expulsarlo del canal (o incluso banearlo si
continúa desobedeciendo las reglas). El #kali-linuxEl canal no es una excepción. Las reglas han sido
documentadas aquí:

mihttps://www.kali.org/docs/community/kali-linux-irc-channel/
Para resumir las reglas: tienes que ser amable, tolerante y razonable. Debes evitar discusiones fuera de
tema. En particular, están prohibidas las discusiones sobre actividades ilegales, software pirateado, política y
religión. Tenga en cuenta que su dirección IP estará disponible para otros por defecto.

Si desea solicitar ayuda, siga las recomendaciones que figuran en “Cómo evitar las respuestas RTFM” [página
128]: investigue primero y comparta los resultados. Cuando se le solicite información adicional,
proporciónela con precisión (si debe proporcionar algún resultado detallado, no lo pegue directamente en el
canal; en su lugar, utilice un servicio comoPastebin6y publicar solo la URL de Pastebin).

No espere una respuesta inmediata. Aunque IRC es una plataforma de comunicación en tiempo real, los
participantes se conectan desde todo el mundo, por lo que las zonas horarias y los horarios de trabajo varían.
Puede tomar algunos minutos u horas para que alguien responda a su pregunta. Sin embargo, cuando otros
incluyan su apodo en una respuesta, su apodo se resaltará y la mayoría de los clientes de IRC le notificarán, así que
deje a su cliente conectado y tenga paciencia.

3https://freenode.net/
4https://webchat.freenode.net/
5https://hexchat.github.io/
6https://pastebin.com/

Capítulo 6 — Ayudarse a sí mismo y obtener ayuda 133


6.3. Presentar un buen informe de error

Si todos sus esfuerzos para resolver un problema fallan, es posible que el problema se deba a un error en el
programa. En este caso, el problema puede haber resultado en un informe de error. Puede buscar informes de
errores para encontrar una solución a su problema, pero echemos un vistazo al procedimiento de informar un
error a Kali, Debian o directamente a los desarrolladores ascendentes para que comprenda el proceso en caso de
que necesite enviar su propio informe.

El objetivo de un informe de error es proporcionar suficiente información para que los desarrolladores o mantenedores del
(supuestamente) programa defectuoso puedan reproducir el problema, depurar su comportamiento y desarrollar una
solución. Esto significa que su informe de error debe contener la información adecuada y debe estar dirigido a la persona o
equipo de proyecto correcto. El informe también debe estar bien escrito y completo, lo que garantiza una respuesta más
rápida.

El procedimiento exacto para el informe de errores variará dependiendo de dónde envíe el informe (Kali,
Debian o desarrolladores ascendentes), pero hay algunas recomendaciones genéricas que se aplican a todos
los casos. En este capítulo discutiremos esas recomendaciones.

6.3.1. Recomendaciones genéricas

Analicemos algunas recomendaciones y pautas generales que lo ayudarán a enviar un informe de


error que sea claro, completo y mejore las posibilidades de que los desarrolladores solucionen el error
de manera oportuna.

Cómo comunicarse

Escriba su informe en inglésLa comunidad de software libre es internacional y, a menos que conozca a su
interlocutor, debe utilizar un lenguaje sencillo. Si es un hablante nativo de inglés, use oraciones simples y
evite construcciones que puedan ser difíciles de entender para personas con conocimientos limitados de
inglés. Aunque la mayoría de los desarrolladores son muy inteligentes, no todos tienen un buen dominio del
idioma inglés. Es mejor nunca asumir.

Sea respetuoso con el trabajo de los desarrolladoresRecuerde que la mayoría de los desarrolladores de software
libre (incluidos los que están detrás de Kali Linux) son benévolos y dedican su tiempo libre limitado a trabajar en el
software que está utilizando libremente. Muchos están haciendo esto por altruismo. Por lo tanto, cuando presente
un informe de error, sea respetuoso (incluso si el error parece un error obvio del desarrollador) y no asuma que le
deben una solución. Agradézcales por su contribución en su lugar.

Si sabe cómo modificar y volver a compilar el software, ofrezca ayudar a los desarrolladores a probar
los parches que le envíen. Esto les demostrará que también estás dispuesto a invertir tu propio
tiempo.

134 Kali Linux revelado


Sea reactivo y esté listo para proporcionar más informaciónEn algunos casos, el desarrollador se
comunicará con usted para solicitarle más información o solicitarle que intente volver a crear el problema,
quizás usando diferentes opciones o usando un paquete actualizado. Debe tratar de responder a esas
consultas lo más rápido posible. Cuanto más rápido envíe su respuesta, mayores serán las posibilidades de
que puedan resolverlo rápidamente mientras el análisis inicial aún está fresco en su mente.

Si bien debe intentar responder rápidamente, tampoco debe ir demasiado rápido: los datos enviados
deben ser correctos y deben contener todo lo que los desarrolladores solicitaron. Pueden molestarse
si tienen que pedir algo por segunda vez.

Qué poner en el informe de errores

Instrucciones para reproducir el problemaPara poder reproducir el problema, los desarrolladores


necesitan saber qué está usando, de dónde lo obtuvo y cómo lo instaló.

Debe proporcionar instrucciones precisas paso a paso que describan cómo reproducir el problema. Si
necesita utilizar algunos datos para reproducir el problema, adjunte el archivo correspondiente al informe de
error. Intente encontrar el conjunto mínimo de instrucciones necesarias para reproducir el error.

Dé algo de contexto y establezca sus expectativasExplique lo que estaba tratando de hacer y cómo esperaba
que se comportara el programa.

En algunos casos, el error solo se activa porque estaba usando el programa de una manera que los
desarrolladores no diseñaron para operar. Al explicar lo que estaba tratando de lograr, permitirá que
los desarrolladores vean claramente cuándo es el caso.

En algunos otros casos, el comportamiento que describe como un error podría ser en realidad el comportamiento
normal. Sea explícito acerca de lo que esperaba que hiciera el programa. Esto aclarará la situación para los
desarrolladores. Pueden mejorar el comportamiento o mejorar la documentación, ¡pero al menos saben que el
comportamiento de su programa está confundiendo a algunos usuarios!

Se específicoIncluya los números de versión del software que utiliza, posiblemente con los números
de versión de sus dependencias. Cuando haga referencia a algo que descargó, incluya su URL
completa.

Cuando reciba un mensaje de error, cítelo exactamente como lo vio. Si es posible, incluya una copia de su salida de pantalla o una
captura de pantalla. Incluya una copia de cualquier archivo de registro relevante, asegurándose de eliminar primero cualquier
información confidencial.

Mencione posibles arreglos o soluciones alternativasAntes de presentar el informe de error,


probablemente intentó resolver el problema. Explica lo que intentaste y los resultados que obtuviste. Ten
muy claro qué es un hecho y qué fue solo una hipótesis de tu parte.

Si realizó una búsqueda en Internet y encontró algunas explicaciones sobre un problema similar, puede mencionarlas, en
particular cuando encontró otros informes de errores similares en los rastreadores de errores.

Capítulo 6 — Ayudarse a sí mismo y obtener ayuda 135


Si encontró una manera de lograr el resultado deseado sin desencadenar el error, documéntelo también. Esto
ayudará a otros usuarios que se ven afectados por el mismo problema.

Los informes largos de errores están bienUn informe de error de dos líneas es insuficiente; proporcionar toda la
información necesaria generalmente requiere varios párrafos (o, a veces, páginas) de texto.

Proporcione toda la información que pueda. Trate de ceñirse a lo que es relevante, pero si no está seguro,
mucho es mejor que muy poco.

Si su informe de error es muy largo, tómese un tiempo para estructurar el contenido y proporcione un breve
resumen al principio.

Consejos varios

Evite presentar informes de errores duplicadosEn el mundo del software libre, todos los rastreadores de errores son públicos.
Los problemas abiertos se pueden explorar e incluso tienen una función de búsqueda. Por lo tanto, antes de presentar un nuevo
informe de error, intente determinar si su problema ya ha sido informado por otra persona.

Si encuentra un informe de error existente, suscríbase y posiblemente agregue información adicional. No


publiques comentarios para promocionar, como "Yo también" o "+1"; no sirven para nada. Pero puede
indicar que está disponible para más pruebas si el remitente original no ofreció esto.

Si no ha encontrado ningún informe de su problema, continúe y archívelo. Si ha encontrado entradas relacionadas,


asegúrese de mencionarlas.

Asegúrese de usar la última versiónEs muy frustrante para los desarrolladores recibir informes de errores por
problemas que ya han resuelto o problemas que no pueden reproducir con la versión que están usando (los
desarrolladores casi siempre usan la última versión de su producto). Incluso cuando los desarrolladores mantienen
las versiones anteriores, el soporte a menudo se limita a correcciones de seguridad y problemas importantes.
¿Estás seguro de que tu bicho es uno de esos?

Por eso, antes de presentar un informe de error, debe asegurarse de que está utilizando la última versión del
sistema y la aplicación problemáticos y que puede reproducir el problema en esa situación.

Si Kali Linux no ofrece la última versión de la aplicación, tiene soluciones alternativas: puede intentar una
instalación manual de la última versión en una máquina virtual desechable, o puede revisar el Registro de
cambios ascendente (o cualquier registro histórico en su sistema de control de versiones elegido) para ver
que no ha habido ningún cambio que pueda solucionar el problema que está viendo (y luego registre el
error aunque no haya probado la última versión).

No mezcle varios problemas en un solo informe de errorPresente un informe de error por problema. De esa
forma, las discusiones subsiguientes no se complican demasiado y cada error se puede corregir de acuerdo con su
propio cronograma. Si no lo hace, el error único debe reutilizarse varias veces y solo puede cerrarse cuando se
hayan solucionado todos los problemas, o los desarrolladores deben presentar los informes complementarios que
debería haber creado en primer lugar.

136 Kali Linux revelado


6.3.2. Dónde presentar un informe de error

Para poder decidir dónde presentar el informe de error, debe tener una buena comprensión del
problema y debe haber identificado en qué pieza de software se encuentra el problema.

Idealmente, rastrea el problema hasta un archivo en su sistema y luego puede usardpkgpara


averiguar qué paquete posee ese archivo y de dónde proviene ese paquete. Supongamos
que encontró un error en una aplicación gráfica. Después de mirar la lista de procesos en
ejecución (la salida depd auxf), descubrió que la aplicación se inició con el/usr/bin/cerezo
ejecutable:
psdpkg -S /usr/bin/cerezo cerezo: /usr/bin/
cerezo $dpkg -s cerezo | Versión de grep:
Versión: 0.38.8-0kali1

aprendes eso/usr/bin/cerezoes proporcionado por elCerezopaquete, que está en versión 0.38.8-0kali1.El


hecho de que la cadena de versión contengakalile indica que el paquete proviene de Kali Linux (o está
modificado por Kali Linux). Cualquier paquete que no tengakalien su cadena de versión (o en su
nombre de paquete) viene directamente de Debian (Debian Testing en general).

Verifique dos veces antes Si encuentra un error en un paquete importado directamente desde Debian, lo ideal es
Presentación de errores contra informarlo y corregirlo en el lado de Debian. Sin embargo, antes de hacer esto, asegúrese de
Debian que el problema sea reproducible en un sistema Debian simple, ya que Kali puede haber
causado el problema al modificar otros paquetes o dependencias.

La forma más fácil de lograr esto es configurar una máquina virtual que ejecute Debian Testing.
Puede encontrar un ISO de instalación para Debian Testing en el sitio web del instalador de Debian:

mihttps://www.debian.org/devel/debian-installer/
Si puede confirmar el problema en la máquina virtual, puede enviar el error a Debian
ejecutandoReportar un errordentro de la máquina virtual y siguiendo las instrucciones
proporcionadas.

La mayoría de los informes de errores sobre el comportamiento de las aplicaciones deben dirigirse a sus proyectos
anteriores, excepto cuando se enfrentan a un problema de integración: en ese caso, el error es un error en la forma
en que el software se empaqueta e integra en Debian o Kali. Por ejemplo, si una aplicación ofrece opciones de
tiempo de compilación que el paquete no habilita o la aplicación no funciona debido a que falta una biblioteca (lo
que pone de manifiesto una dependencia faltante en la metainformación del paquete), es posible que se enfrente a
una integración. problema. Cuando no sabe qué tipo de problema enfrenta, generalmente es mejor presentar el
problema en ambos lados y hacer una referencia cruzada.

Identificar el proyecto upstream y encontrar dónde archivar el informe de error suele ser fácil. Solo tiene que
navegar por el sitio web upstream, al que se hace referencia en elPágina principalcampo de los metadatos del
embalaje:

Capítulo 6 — Ayudarse a sí mismo y obtener ayuda 137


psdpkg -s wpscan | grep página de inicio:
Página de inicio: http://www.wpscan.org

6.3.3. Cómo presentar un informe de error

Presentar un informe de error en Kali

Kali usa un rastreador de errores basado en la web enhttps://bugs.kali.org/donde puede consultar todos los informes
de errores de forma anónima, pero si desea comentar o presentar un nuevo informe de errores, deberá registrar
una cuenta.

Registrarse para obtener una cuenta de seguimiento de erroresPara comenzar, simplemente haga clic enRegístrese para una nueva cuentaen el sitio

web del rastreador de errores, como se muestra en la Figura6.1, “Página de inicio de Kali Bug Tracker” [página 138].

Figura 6.1Página de inicio de Kali Bug Tracker

A continuación, proporcione un nombre de usuario, una dirección de correo electrónico y una respuesta al desafío CAPTCHA. Luego haga clic

en el botón Registrarse para continuar (Figura6.2, “Página de registro” [página 139]).

138 Kali Linux revelado


Figura 6.2Página de registro

Si tiene éxito, la página siguiente (Figura6.3, “Página de confirmación de registro” [página 139]) le notificará que se
ha procesado el registro de la cuenta y el sistema de seguimiento de errores le enviará un correo electrónico de
confirmación a la dirección que proporcionó. Deberá hacer clic en el enlace del correo electrónico para activar su
cuenta.

Una vez que su cuenta haya sido activada, haga clic en Continuar para continuar a la página de inicio de sesión del rastreador de errores.

Figura 6.3Página de confirmación de registro

Capítulo 6 — Ayudarse a sí mismo y obtener ayuda 139


Crear el informePara comenzar su informe, inicie sesión en su cuenta y haga clic en el enlace Informar problema en la página de
inicio. Se le presentará un formulario con muchos campos para completar, como se muestra en la Figura6.4, “Formulario para
reportar un error” [página 140].

Figura 6.4Formulario para reportar un error

Aquí hay un resumen de todos los campos en el formulario:

Categoría (obligatorio)Este campo describe la categoría del error que está enviando. Informes
que se puede atribuir a un paquete específico debe archivarse en Kali Package Bug o Kali

140 Kali Linux revelado


Categorías de mejora del paquete. Otros informes deben usar las categorías Error general o Solicitudes de funciones. Las
categorías restantes son para casos de uso específicos: Tool Upgrade se puede usar para notificar a los desarrolladores de
Kali sobre la disponibilidad de una nueva versión de un software empaquetado en Kali. Las solicitudes de nuevas
herramientas se pueden utilizar para sugerir nuevas herramientas para empaquetar e integrar en la distribución de Kali.
Los sitios web y documentos de Kali se pueden usar para informar errores o actualizaciones relacionadas con los diversos
sitios web de Kali. La adición de herramientas en cola está reservada para el equipo de herramientas de Kali, para cuando se
haya acordado agregar una herramienta a Kali.

reproducibilidadEste campo documenta si el problema es reproducible de forma predecible.


o si sucede solo un poco al azar.

Gravedad y PrioridadEs mejor dejar esos campos sin modificar, ya que son principalmente para los desarrolladores.
Pueden usarlos para clasificar la lista de problemas según la gravedad del problema y la
prioridad con la que debe manejarse.

version del productoEste campo debe indicar qué versión de Kali Linux está ejecutando (o la
uno que es el más cercano a lo que está ejecutando). Piénselo dos veces antes de informar un problema en
una versión anterior que ya no es compatible.

Asignar a y versión de destinoTambién es mejor dejar esos campos sin modificar como están de nuevo,
principalmente para los desarrolladores. Pueden usarlos para indicar qué desarrollador está manejando el
problema y cuándo se debe resolver el problema.

Resumen (obligatorio)Este es esencialmente el título de su informe de error y es lo primero que


la gente verá Asegúrese de que transmita la razón por la que está presentando el informe. Evite
descripciones genéricas como "X no funciona" y opte por "X falla con el error Y bajo la condición
Z".

Descripción (obligatorio)Este es el cuerpo de su informe. Aquí debe ingresar todos los datos en-
formación que recopiló sobre el problema que está experimentando. No olvide todas las
recomendaciones dadas en la sección anterior.

Pasos para reproducirEn este campo, enumere todas las instrucciones detalladas que explican cómo activar el
problema.

información adicionalEn esta sección, puede proporcionar cualquier información adicional que crea
es relevante para el problema. Si tiene una solución o solución alternativa para el problema, indíquela en
esta sección.

Adjuntar etiquetasEsta es una sección que es mejor dejar sin modificar. Los desarrolladores utilizan etiquetas para permitir
acceso más fácil a informes de errores similares.

Subir archivoNo todo se puede explicar con texto plano. Este campo le permite adjuntar arbitrariamente
archivos a sus informes: capturas de pantalla para mostrar el error, documentos de muestra que desencadenan el problema,

archivos de registro, etc.

Capítulo 6 — Ayudarse a sí mismo y obtener ayuda 141


Ver el estado deDeje ese campo establecido en "público" para que todos puedan ver su informe de errores. Use “pri-
vate” solo para informes relacionados con la seguridad que contengan información sobre vulnerabilidades de seguridad no
reveladas.

Presentar un informe de error en Debian

Debian utiliza un sistema de seguimiento de errores (principalmente) basado en correo electrónico conocido
como Debbugs. Para abrir un nuevo informe de error, deberá enviar un correo electrónico (con una sintaxis
especial) aenviar@bugs.debian.org .Esto asignará un número de errorXXXXXe informarle que puede enviar
información adicional por correoXXXXX@bugs.debian.org.Cada error está asociado a un paquete Debian.
Puede buscar todos los errores de un paquete determinado (incluido el error que está pensando informar)
enhttps://bugs.debian.org/paquete. Puede consultar el historial de un error determinado en https://
bugs.debian.org/XXXXX.

Configuración de ReportbugSi bien puede abrir un nuevo error con un simple correo electrónico, le
recomendamos que utiliceReportar un errorporque le ayudará a redactar un informe de error sólido con toda la
información requerida. Lo ideal es que lo ejecutes desde un sistema Debian (por ejemplo, en la máquina virtual
donde reprodujiste el problema).

La primera corrida deReportar un errorinicia un script de configuración. Primero, seleccione un nivel de habilidad. Debe elegir
Principiante o Estándar; usamos este último porque ofrece un control más detallado. A continuación, seleccione una
interfaz e introduzca sus datos personales. Finalmente, seleccione una interfaz de usuario. El script de configuración le
permitirá utilizar un agente de transporte de correo local, un servidor SMTP o, como último recurso, un servidor SMTP de
Debian.

¡Bienvenido a reportbug! Dado que parece que es la primera vez que usa Reportbug, estamos
configurando su comportamiento. Esta configuración se guardará en el archivo "/home/
kali/.reportbugrc", que podrá editar más a fondo.

Elija el modo operativo predeterminado para reportbug.

1 novato Ofrezca indicaciones simples, evitando preguntas técnicas.

2 estándar Ofrezca indicaciones más amplias, incluidas preguntas sobre cosas que se
esperaría que un usuario moderadamente sofisticado supiera sobre Debian.

3 avanzado Como estándar, pero se supone que sabe un poco más sobre Debian,
aincluyendo "entrante".

4 experto Omita la mayoría de las medidas de agarre y las rutinas preliminares de triaje. Este
modo no debe ser utilizado por personas que no estén familiarizadas con las
políticas y los procedimientos operativos de Debian.

142 Kali Linux revelado


Seleccionar modo: [principiante]estándar
Elija la interfaz predeterminada para reportbug.

1 texto Una interfaz de usuario de consola orientada a texto

2 gtk2 Una interfaz de usuario gráfica (GTK+).

3 urwid Una interfaz de usuario de consola basada en menús

Seleccionar interfaz:texto
¿Reportbug tendrá a menudo acceso directo a Internet? (Debe responder afirmativamente a
esta pregunta a menos que sepa lo que está haciendo y planee verificar si se han presentado
informes duplicados a través de algún otro canal). [S|n|q|?]?Y

¿Qué nombre real se debe usar para enviar informes de errores? [kalí]>
Rafael Hertzog
¿Cuál de sus direcciones de correo electrónico debe usarse al enviar informes de errores? (Tenga en
cuenta que esta dirección será visible en el sistema de seguimiento de errores, por lo que es posible que
desee utilizar una dirección de correo web u otra dirección con buenas capacidades de filtrado de spam).

[ kali@localhost.localdomain ]>buxy@kali.org
¿Tiene un "agente de transporte de correo" (MTA) como Exim, Postfix o SSMTP configurado
en esta computadora para enviar correo a Internet? [s|n|q|?]?norte Introduzca el nombre
de su servidor SMTP. Por lo general, se llama algo así como "mail.example.org" o
"smtp.example.org". Si necesita usar un puerto diferente al predeterminado, use el formato
alternativo <host>:<port>. Simplemente presione ENTER si no tiene uno o no lo sabe, y así se
usará un host SMTP de Debian.

>
Introduzca el nombre de su servidor proxy. Solo debe usar este parámetro si está detrás de un
firewall. El argumento PROXY debe formatearse como una URL HTTP válida, incluido (si es
necesario) un número de puerto; por ejemplo, http://192.168.1.1:3128/. Simplemente presione
ENTER si no tiene uno o no lo sabe.

>
Archivo de preferencias predeterminado escrito. Para reconfigurar, vuelva a ejecutar
reportbug con la opción "--configure".

Uso de ReportbugUna vez completada la fase de configuración, puede comenzar el informe de error real. Se le
pedirá un nombre de paquete, aunque también puede proporcionar el nombre del paquete directamente en la
línea de comando conReportar un errorpaquete).

Ingrese el nombre del paquete en el que encontró un problema o escriba 'otro' para informar un
problema más general. Si no sabe en qué paquete se encuentra el error, comuníquese con
debian-user@lists.debian.org para obtener ayuda.

Capítulo 6 — Ayudarse a sí mismo y obtener ayuda 143


> tiburón alambre

Contrariamente al consejo dado anteriormente, si no sabe contra qué paquete presentar el error, debe ponerse en
contacto con un foro de soporte de Kali (descrito en la sección6.2, “Comunidades Kali Linux” [página 132]). En el
siguiente paso,Reportar un errordescarga la lista de errores presentados contra el paquete dado y le permite
explorarlos para ver si puede encontrar el suyo.

* * * Bienvenido a reportbug. Usar ? para obtener ayuda en las indicaciones. ***


Nota: los informes de errores se archivan públicamente (incluida la dirección de correo electrónico del remitente). Juego de
caracteres detectado: UTF-8
Cambie su configuración regional si esto es incorrecto.

Usando '”Raphaël Hertzog” < buxy@kali.org >' como su dirección de origen.


Obteniendo el estado de Wireshark...
Verificando la integridad del paquete... Buscando versiones más nuevas
en madison... Enviaré un informe a Debian (según lsb_release).
Consultando Debian BTS para obtener informes sobre wireshark
(fuente)... 35 informes de errores encontrados:

Errores con gravedad importante


1) #478200 tshark: parece ignorar los filtros de lectura al escribir en... mergecap: no
2) #776206 se puede crear el archivo de salida > 2 GB
3) #780089 wireshark: ”En gnome wireshark no tiene barra de título. Hace...
Errores con severidad normal
4) #151017 etéreo: "Estadísticas de jerarquía de protocolo" da lugar a confusión... no
5) #275839 analiza correctamente la canalización de ESMTP
[...]
35) #815122 Wireshark: agregar OID 1.3.6.1.4.1.11129.2.4.2
(24-35/35) ¿Está el error que encontraste en la lista anterior [y|N|b|m|r|q|s|f|e|?]?? y -
Problema ya informado; opcionalmente agregue información adicional. N - (predeterminado)
Problema no mencionado anteriormente; posiblemente verifique más.
b - Abra la lista completa de errores en un navegador web.
m - Obtenga más información sobre un error (también puede ingresar un número
sin seleccionar ”m” primero). r - Vuelve
a mostrar los últimos errores mostrados. q -
estoy aburrido; déjalo por favor
s - Saltar problemas restantes; presente un nuevo informe inmediatamente. f -
Filtra la lista de errores usando un patrón.
e - Abra el informe mediante un cliente de correo
electrónico. ? - Mostrar esta ayuda.
(24-35/35) ¿Está el error que encontraste en la lista anterior [y|N|b|m|r|q|s|f|e|?]?norte
El mantenedor de wireshark es 'Balint Reczey <bali nt@balintreczey.hu >'. Buscando
dependencias de wireshark...

Si encuentra que su error ya se presentó, puede optar por enviar información complementaria; de lo contrario, está
invitado a presentar un nuevo informe de error:

144 Kali Linux revelado


Describa brevemente el problema (máximo 100 caracteres permitidos). Este será el correo electrónico del error.
atema, así que mantenga el resumen lo más conciso posible, por ejemplo: ”no se puede enviar
acorreo electrónico"

o ”no comienza con la opción -q especificada” (ingrese Ctrl+c para salir de reportbug sin
areportar un error).
> no disecciona el protocolo foobar
Reescritura sujeta a 'wireshark: no analiza el protocolo foobar'

Después de proporcionar un resumen de una línea de su problema, debe calificar su gravedad a lo largo de una escala extendida:

¿Cómo calificaría la gravedad de este problema o informe?

1 crítico hace que el software no relacionado en el sistema (o en todo el sistema) se rompa,


ao provoca una pérdida grave de datos, o introduce un agujero de seguridad en los sistemas en los que
ainstalar
el paquete.
2 tumba hace que el paquete en cuestión sea inutilizable para la mayoría o todos los usuarios, o
aprovoca la pérdida de datos o introduce un agujero de seguridad que permite el acceso a las cuentas
ade usuarios que
utiliza el paquete.
3 graves es una violación grave de la política de Debian (es decir, el problema es un
aviolación de una directiva 'debe' o 'requerida'); puede o no afectar la
ausabilidad de la
paquete. Tenga en cuenta que las infracciones de política no graves pueden ser "normales", "
aerrores menores o de la lista de deseos. (Los mantenedores de paquetes también pueden
adesignar otros errores como
'serios' y, por lo tanto, críticos para la liberación; sin embargo, los usuarios finales no deben hacer
aentonces.). Para la lista canónica de temas que merecen una seria
agravedad a la que puede referirse
esta página web: http://release.debian.org/testing/rc_policy.txt. un error que tiene un
4 importante efecto importante en la usabilidad de un paquete, sin
ahaciéndolo completamente inutilizable para todos.
5 no crea un error que impide que el paquete se construya desde la fuente. (Esto es un
a'gravedad virtual'.) 6 normal
un error que no socava la usabilidad de todo el paquete; por ejemplo, un problema con una
a opción o elemento de menú en particular.
7 menores cosas como errores de ortografía y otros errores cosméticos menores que no afectan la
a funcionalidad principal del paquete.
8 lista de deseos sugerencias y solicitudes de nuevas funciones.

Seleccione un nivel de gravedad: [normal]

Si no está seguro, mantenga la gravedad predeterminada denormal.

También puede etiquetar su informe con algunas palabras clave:

Capítulo 6 — Ayudarse a sí mismo y obtener ayuda 145


¿Alguno de los siguientes se aplica a este informe?

1 año Este error es relevante para la accesibilidad del paquete. Este error es relevante
2 días para el desarrollo de debian-installer. El paquete no se puede compilar desde el
3 ftbfs origen.
4 ipv6 Este error afecta la compatibilidad con la versión 6 del Protocolo de Internet.
5 l10n Este error informa de un problema de localización/internacionalización. Este
6 lfs error afecta la compatibilidad con archivos grandes (más de 2 gigabytes).
7 recién llegado Este error tiene una solución conocida, pero el mantenedor solicita a otra persona.
aImpleméntalo.
8 parche Estás incluyendo un parche para solucionar este problema. Este error
9 aguas arriba se aplica a la parte ascendente del paquete.
10 ninguno

Seleccione las etiquetas: (una a la vez) [ninguna]

La mayoría de las etiquetas son bastante esotéricas, pero si su informe incluye una solución, debe seleccionar laparcheetiqueta.

Una vez que esto se completa,Reportar un errorabre un editor de texto con una plantilla que debe editar
(Ejemplo6.2, “Plantilla generada porReportar un error” [página 146]). Contiene algunas preguntas que
debe eliminar y responder, así como información sobre su sistema que se ha recopilado
automáticamente. Observe cómo están estructuradas las primeras líneas. No deben modificarse, ya
que el rastreador de errores los analizará para asignar el informe al paquete correcto.

Ejemplo 6.2Plantilla generada porReportar un error

Asunto: wireshark: no disecciona el protocolo foobar

Paquete: tiburón de alambre


Versión: 3.2.5-1
Gravedad: normal

Estimado Mantenedor,

* * * Reportero, considere responder estas preguntas, cuando corresponda ***

* ¿Qué condujo a la situación?


* ¿Qué hizo (o dejó de hacer) exactamente que fue efectivo (o ineficaz)?

* ¿Cuál fue el resultado de esta acción?


* ¿Qué resultado esperabas en su lugar?

* * * Fin de la plantilla: elimine estas líneas de plantilla ***

146 Kali Linux revelado


- - Información del sistema:
ID del distribuidor: Kali
Descripción: Lanzamiento de Kali GNU/Linux
Liberar: 2020.3
Nombre clave: rodando kali
Arquitectura: x86_64

Kernel: Linux 5.7.0-kali1-amd64 (SMP con 4 subprocesos de CPU) Indicadores de


contaminación del kernel: TAINT_UNSIGNED_MODULE
Configuración regional: LANG=en_US.utf8, LC_CTYPE=en_US.utf8 (charmap=UTF-8), IDIOMA no
configurado Shell: /bin/sh vinculado a /usr/bin/dash
Init: systemd (a través de /run/systemd/system)
LSM: AppArmor: habilitado

Las versiones de los paquetes wireshark dependen de:


ii wireshark-qt 3.2.5-1

wireshark no recomienda ningún paquete.

wireshark no sugiere paquetes.

- - sin información de debconf

Una vez que guarde el informe y cierre el editor de texto, volverá aReportar un error, que proporciona muchas otras
opciones y ofertas para enviar el informe resultante.

Generando editor sensible...


El informe se enviará al "Sistema de seguimiento de errores de Debian" < submit@bugs.debian.org >
Envíe este informe en wireshark (e para editar) [Y|n|a|c|e|i|l|m|p|q |d|t|s|?]?? Y - (predeterminado)
Enviar el informe de errores por correo electrónico.
n - No envíe el informe de errores; en su lugar, guárdelo en un archivo temporal (sale de reportbug). a - Adjuntar un
archivo.
c - Cambiar de editor y volver a editar. e -
Vuelva a editar el informe de error.
i - Incluir un archivo de texto.
l - Canalice el mensaje a través del buscapersonas. m -
Elija un correo para editar el informe. p: imprime el
mensaje en la salida estándar.
q - Guardarlo en un archivo temporal y salir. d - Separar
un archivo adjunto.
t - Agregar etiquetas.
s: agregue un destinatario X-Debbugs-CC (un CC pero después del procesamiento BTS). ? -
Mostrar esta ayuda.
Enviar este informe sobre wireshark (e para editar) [Y|n|a|c|e|i|l|m|p|q|d|t|s|?]?Y Guardando una copia de
seguridad del informe en /tmp/reportbug-wireshark-backup-20210328-19073-87oJWJ Conectándose a
reportbug.debian.org a través de SMTP...

Informe de errores enviado a: ”Sistema de seguimiento de errores de Debian” <sub mit@bugs.debian.org >
Se enviarán copias después de procesarlas a:
buxy@kali.org

Capítulo 6 — Ayudarse a sí mismo y obtener ayuda 147


Si desea proporcionar información adicional, espere a recibir el número de seguimiento del error por
correo electrónico; Luego puede enviar cualquier información adicional a n@bugs.debian.org (p. ej.,
999999@bugs.debian.org ), donde n es el número de error. Normalmente, recibirá un acuse de recibo
por correo electrónico que incluye el número de informe de error dentro de una hora; si no ha
recibido una confirmación, entonces el proceso de informe de errores falló en algún momento (error
de informe o error de MTA, mantenimiento de BTS, etc.).

Presentar un informe de error en otro proyecto de software libre

Existe una gran diversidad de proyectos de software libre, utilizando diferentes flujos de trabajo y herramientas. Esta
diversidad también se aplica a los rastreadores de errores en uso. Si bien muchos proyectos están alojados en GitHub y
usan problemas de GitHub para rastrear sus errores, también hay muchos otros que alojan sus propios rastreadores,
basados en Bugzilla, Trac, Redmine, Flyspray y otros. La mayoría de ellos están basados en la web y requieren que
registre una cuenta para enviar un nuevo boleto.

No cubriremos todos los rastreadores aquí. Depende de usted aprender las especificaciones de varios rastreadores para otros
proyectos de software libre, pero dado queGitHub7es relativamente popular, lo veremos brevemente aquí. Al igual que con otros
rastreadores, primero debe crear una cuenta e iniciar sesión. A continuación, haga clic en la pestaña Problemas, como se muestra
en la Figura6.5, “Página principal de un proyecto de GitHub” [página 149].

7https://github.com/

148 Kali Linux revelado


Figura 6.5Página principal de un proyecto de GitHub

A continuación, puede examinar (y buscar) la lista de problemas abiertos. Una vez que esté seguro de que su error aún no se ha
archivado, puede hacer clic en el botón Nuevo problema (Figura6.6, “Página de problemas de un proyecto de GitHub” [página 150]).

Capítulo 6 — Ayudarse a sí mismo y obtener ayuda 149


Figura 6.6Página de problemas de un proyecto de GitHub

Ahora está en una página donde debe describir su problema (Figura6.7, “Formulario de GitHub para presentar un
problema nuevo” [página 150]). GitHub tiene una función de plantilla que permite al propietario del repositorio
definir su propia plantilla de problema personalizada; sin embargo, parece que este repositorio no tiene una
configuración. Sin embargo, el mecanismo de informe de errores es bastante sencillo y le permite adjuntar
archivos, aplicar formato al texto y mucho más. Por supuesto, para obtener los mejores resultados, asegúrese de
seguir nuestras pautas para crear un informe detallado y bien descrito.

Figura 6.7Formulario de GitHub para presentar un problema nuevo

150 Kali Linux revelado


6.4. Resumen

En esta sección, discutimos varios métodos para ayudarlo a encontrar documentación e información sobre programas y
cómo encontrar ayuda con los problemas que pueda encontrar. Echamos un vistazo al manual y las páginas de
información y ela propósitoyinformacióncomandos Hablamos sobre los rastreadores de errores, brindamos algunos consejos
sobre cómo buscar y enviar buenos informes de errores y brindamos algunos consejos para ayudarlo a descubrir quién es
el propietario del programa o proyecto en cuestión.

Resumen de consejos:

• Antes de que pueda entender lo que realmente sucede cuando hay un problema, necesita saber el
papel teórico que juega cada programa involucrado en el problema. Una de las mejores maneras de
hacer esto es revisar la documentación del programa.

• Para ver una página de manual, simplemente escribahombrepágina del manual, completando el nombre del comando después
de un número de sección opcional.

• Ela propósitoEl comando devuelve una lista de páginas de manual cuyo resumen menciona las palabras
clave solicitadas, junto con el resumen de una línea de la página de manual.

• El proyecto GNU ha escrito manuales para la mayoría de sus programas en elinformaciónformato. Esta es la razón por la cual muchas

páginas del manual se refieren a las correspondientesinformacióndocumentación.

• Cada paquete incluye su propia documentación e incluso los programas menos documentados
generalmente tienen unLÉAMEarchivo que contiene información interesante y/o importante. Esta
documentación está instalada en el/usr/compartir/doc/paquete/directorio.

• En la mayoría de los casos, las preguntas frecuentes o los archivos de la lista de correo del sitio web oficial de un programa pueden

abordar los problemas que haya encontrado.

• El proyecto Kali mantiene una colección de documentación útil enhttps://www.kali.org/


documentos/.

• El proyecto Kali Linux usa el #kali-linuxcanal en elnodo libre8red IRC. Puedes usar
chat.freenode.netcomo servidor IRC, en el puerto 6667 para una conexión cifrada con TLS o en
el puerto 6666 para una conexión de texto claro. Para unirse a las discusiones en IRC, debe usar
un cliente de IRC comohexadecimal(en modo gráfico) oIrsi(en modo consola). También hay un
cliente basado en web disponible enwebchat.freenode.net9.

• Los foros oficiales de la comunidad para el proyecto Kali Linux se encuentran enforos.kali.org10.

• Si descubre un error en un programa, puede buscar informes de errores o presentar uno propio.
Asegúrese de seguir las pautas que hemos descrito para garantizar que su informe sea claro,
completo y mejore las posibilidades de que los desarrolladores aborden el error de manera oportuna.

8https://freenode.net/
9https://webchat.freenode.net/
10https://forums.kali.org/

Capítulo 6 — Ayudarse a sí mismo y obtener ayuda 151


• Algunos informes de errores deben enviarse a Kali, mientras que otros pueden enviarse al lado de Debian.
Un comando comodpkg-sNombre del paquete|grep ^ Versión:revelará el número de versión y se etiquetará como
"kali" si se trata de un paquete modificado por Kali.

• Identificar un proyecto upstream y encontrar dónde archivar el informe de error suele ser fácil. Simplemente
navegue por el sitio web upstream al que se hace referencia en elPágina principalcampo de los metadatos del
embalaje.

• Kali utiliza un rastreador de errores basado en la web enhttps://bugs.kali.org/donde puede consultar todos los
informes de errores de forma anónima, pero si desea comentar o presentar un nuevo informe de errores,
deberá registrar una cuenta.

• Debian utiliza un sistema de seguimiento de errores (principalmente) basado en correo electrónico conocido como Debbugs.
Para abrir un nuevo informe de errores, puede enviar un correo electrónico (con una sintaxis especial) a
enviar@bugs.debian.org o puedes usar elReportar un errorcomando, que lo guiará a través del proceso.

• Si bien muchos proyectos están alojados en GitHub y utilizan problemas de GitHub para rastrear sus errores,
también hay muchos otros que alojan sus propios rastreadores. Es posible que deba investigar los conceptos
básicos de los rastreadores de errores de terceros si necesita publicarlos.

Ahora que tiene las herramientas básicas para navegar por Linux, instalar y configurar Kali, y
solucionar problemas de su sistema y obtener ayuda, es hora de considerar bloquear Kali para que
pueda proteger su instalación y los datos de su cliente.

152 Kali Linux revelado


Palabras clave

Politica de seguridad
cortafuegos
iptables
Supervisión
Inicio sesión
Capítulo

Asegurar y 7
Monitoreo de Kali Linux
Contenido

Definición de una política de seguridad156 Posibles medidas de seguridad158 Protección de servicios de red159

Cortafuegos o filtrado de paquetes159 Supervisión y registro167 Resumen171


A medida que comience a usar Kali Linux para trabajos cada vez más sensibles y de mayor perfil, es probable que deba
tomarse más en serio la seguridad de su instalación. En este capítulo, primero analizaremos las políticas de seguridad,
destacando varios puntos a tener en cuenta al definir dicha política y describiendo algunas de las amenazas para su
sistema y para usted como profesional de la seguridad. También discutiremos las medidas de seguridad para los sistemas
de escritorio y portátiles y nos centraremos en los cortafuegos y el filtrado de paquetes. Finalmente, discutiremos las
herramientas y estrategias de monitoreo y le mostraremos cómo implementarlas mejor para detectar posibles amenazas a
su sistema.

7.1. Definición de una política de seguridad

No es práctico discutir la seguridad a grandes rasgos, ya que la idea representa una amplia gama de conceptos,
herramientas y procedimientos, ninguno de los cuales se aplica universalmente. Elegir entre ellos requiere una idea
precisa de cuáles son sus objetivos. Asegurar un sistema comienza con responder algunas preguntas. Si se
apresura a implementar un conjunto arbitrario de herramientas, se corre el riesgo de centrarse en aspectos de
seguridad erróneos.

Por lo general, es mejor determinar un objetivo específico. Un buen enfoque para ayudar con esa determinación
comienza con las siguientes preguntas:

• Qué¿Estás tratando de proteger? La política de seguridad será diferente dependiendo de si desea


proteger las computadoras o los datos. En este último caso, también necesita saber qué datos.

• ¿Qué estás tratando de proteger?contra? ¿Es una fuga de datos confidenciales? ¿Pérdida accidental de datos?
¿Pérdida de ingresos causada por la interrupción del servicio?

• También,OMS¿Estás tratando de protegerte? Las medidas de seguridad serán bastante diferentes para protegerse contra un
error tipográfico por parte de un usuario habitual del sistema en comparación con la protección contra un determinado
grupo de atacantes externos.

El término "riesgo" se usa habitualmente para referirse colectivamente a estos tres factores: qué proteger, qué
debe prevenirse y quién podría hacer que esto suceda. Modelar el riesgo requiere respuestas a estas tres
preguntas. A partir de este modelo de riesgo, se puede construir una política de seguridad y la política se puede
implementar con acciones concretas.

Interrogatorio Permanente Bruce Schneier, un experto mundial en temas de seguridad (no solo seguridad informática), intenta
contrarrestar uno de los mitos más importantes de la seguridad con un lema: “La seguridad es un proceso,
no un producto”. Los activos a proteger cambian con el tiempo, al igual que las amenazas y los medios
disponibles para los atacantes potenciales. Incluso si una política de seguridad se ha diseñado e
implementado inicialmente a la perfección, nunca debe dormirse en los laureles. Los componentes del riesgo
evolucionan y la respuesta a ese riesgo debe evolucionar en consecuencia.

También vale la pena tener en cuenta las restricciones adicionales, ya que pueden restringir el rango de políticas
disponibles. ¿Hasta dónde está dispuesto a llegar para asegurar un sistema? Esta pregunta tiene un gran impacto sobre
qué política implementar. Con demasiada frecuencia, la respuesta solo se define en términos de costos monetarios,

156 Kali Linux revelado


pero también se deben considerar otros elementos, como la cantidad de inconvenientes impuestos a los usuarios
del sistema o la degradación del rendimiento.

Una vez que se ha modelado el riesgo, puede comenzar a pensar en diseñar una política de seguridad real.

Hay extremos que pueden entrar en juego al decidir el nivel de protección de seguridad a adoptar. Por un
lado, puede ser extremadamente simple proporcionar la seguridad básica del sistema.

Por ejemplo, si el sistema a proteger consiste únicamente en un ordenador de segunda mano, cuyo
único uso es sumar unos números al final del día, sería bastante razonable decidir no hacer nada
especial para protegerlo. El valor intrínseco del sistema es bajo y el valor de los datos es cero ya que
no se almacenan en la computadora. Un atacante potencial que se infiltre en este sistema solo
obtendrá una calculadora. El costo de asegurar dicho sistema probablemente sería mayor que el costo
de una brecha.

En el otro extremo del espectro, es posible que desee proteger la confidencialidad de los datos secretos de la
manera más completa posible, por encima de cualquier otra consideración. En este caso, una respuesta adecuada
sería la destrucción total de los datos (borrado seguro de los archivos, trituración de los discos duros en bits, luego
disolución de estos bits en ácido, etc.). Si existe un requisito adicional de que los datos deben almacenarse para uso
futuro (aunque no necesariamente estén fácilmente disponibles), y si el costo aún no es un factor, entonces un
punto de partida sería almacenar los datos en placas de aleación de iridio-platino almacenadas en búnkeres a
prueba de bombas debajo de varias montañas en el mundo, cada uno de los cuales (por supuesto) es
completamente secreto y está protegido por ejércitos enteros.

Por extremos que puedan parecer estos ejemplos, serían una respuesta adecuada a ciertos riesgos
definidos, en la medida en que son el resultado de un proceso de pensamiento que tiene en cuenta las
metas a alcanzar y las limitaciones a cumplir. Cuando se parte de una decisión razonada, ninguna política de
seguridad es más o menos respetable que otra.

Volviendo a un caso más típico, un sistema de información se puede segmentar en subsistemas consistentes
y en su mayoría independientes. Cada subsistema tendrá sus propios requisitos y limitaciones, por lo que la
evaluación de riesgos y el diseño de la política de seguridad deben realizarse por separado para cada uno.
Un buen principio a tener en cuenta es que una pequeña superficie de ataque es más fácil de defender que
una grande. La organización de la red también debe diseñarse en consecuencia: los servicios confidenciales
deben concentrarse en una pequeña cantidad de máquinas, y estas máquinas solo deben ser accesibles a
través de una cantidad mínima de rutas o puntos de control. La lógica es sencilla: es más fácil proteger estos
puntos de control que proteger todas las máquinas sensibles contra la totalidad del mundo exterior. Es en
este punto cuando se hace evidente la utilidad del filtrado de red (incluidos los cortafuegos). Este filtrado se
puede implementar con hardware dedicado, pero una solución más simple y flexible es usar un firewall de
software como el integrado en el kernel de Linux.

Capítulo 7: Protección y supervisión de Kali Linux 157


7.2. Posibles medidas de seguridad

Como se explicó en la sección anterior, no hay una respuesta única a la pregunta de cómo asegurar Kali
Linux. Todo depende de cómo lo uses y de lo que estés tratando de proteger.

7.2.1. en un servidor

Si ejecuta Kali Linux en un servidor de acceso público, lo más probable es que desee proteger los servicios de red
cambiando las contraseñas predeterminadas que puedan configurarse (consulte la sección7.3, “Protección de
servicios de red” [página 159]) y posiblemente también restringiendo su acceso con un cortafuegos (consulte la
sección7.4, “Cortafuegos o filtrado de paquetes” [página 159]).

Si entrega cuentas de usuario directamente en el servidor o en uno de los servicios, debe asegurarse de
establecer contraseñas seguras (deben resistir los ataques de fuerza bruta). Al mismo tiempo, es posible que
desee configurarfail2ban, lo que dificultará mucho más la fuerza bruta de las contraseñas en la red (al filtrar
las direcciones IP que excedan el límite de intentos fallidos de inicio de sesión). Instalar
fail2banconactualización adecuadaseguido porinstalar apt fail2ban.
Si ejecuta servicios web, probablemente desee alojarlos a través de HTTPS para evitar que los intermediarios
de la red detecten su tráfico (lo que podría incluir cookies de autenticación).

7.2.2. en una computadora portátil

La computadora portátil de un probador de penetración no está sujeta a los mismos riesgos que un servidor público: por
ejemplo, es menos probable que esté sujeto a escaneos aleatorios de script kiddies e incluso cuando lo esté,
probablemente no tendrá ningún servicio de red habilitado. .

El riesgo real a menudo surge cuando viaja de un cliente a otro. Por ejemplo, su computadora portátil podría ser robada
mientras viaja o incautada por la aduana. Es por eso que lo más probable es que desee utilizar el cifrado de disco completo
(consulte la sección4.2.2, “Instalación en un sistema de archivos totalmente cifrado” [página 88]) y posiblemente también
configurar la función “nuke” (ver “Agregar una contraseña de Nuke para mayor seguridad” [página 250]): los datos que ha
recopilado durante sus compromisos son confidenciales y requieren la máxima protección.

También puede necesitar reglas de firewall (consulte la sección7.4, “Cortafuegos o filtrado de paquetes
” [página 159]) pero no para el mismo propósito que en el servidor. Es posible que desee prohibir todo el
tráfico saliente, excepto el tráfico generado por su acceso VPN. Esto se entiende como una red de seguridad,
de modo que cuando la VPN está inactiva, lo nota de inmediato (en lugar de recurrir al acceso a la red local).
De esa manera, no divulga las direcciones IP de sus clientes cuando navega por la web o realiza otras
actividades en línea. Además, si está realizando un compromiso interno local, es mejor mantener el control
de toda su actividad para reducir el ruido que crea en la red, lo que puede alertar al cliente y sus sistemas de
defensa.

158 Kali Linux revelado


7.3. Protección de servicios de red

En general, es una buena idea deshabilitar los servicios que no usa. Kali facilita hacer esto ya que los servicios de
red están deshabilitados de forma predeterminada.

Mientras los servicios permanezcan deshabilitados, no representan ninguna amenaza para la seguridad. Sin embargo,
debe tener cuidado cuando los habilite porque:

• no hay un cortafuegos por defecto, por lo que si escuchan en todas las interfaces de red, están efectivamente
disponibles públicamente.

• algunos servicios no tienen credenciales de autenticación y le permiten configurarlas en el primer uso; otros tienen
credenciales predeterminadas (y, por lo tanto, ampliamente conocidas). Asegúrese de (re)establecer cualquier
contraseña a algo que solo usted sepa.

• muchos servicios se ejecutan como root con todos los privilegios de administrador, por lo que las consecuencias de
un acceso no autorizado o una violación de la seguridad suelen ser graves.

Credenciales predeterminadas No enumeraremos aquí todas las herramientas que vienen con credenciales predeterminadas, en su
lugar, debe verificar elLÉAME.Debianarchivo de los respectivos paquetes, así comokali.org/docs/1
yherramientas.kali.org2para ver si el servicio necesita algún cuidado especial para ser asegurado.

Servicio SSH Si ejecuta en modo en vivo, la contraseña de la cuenta de kali es "kali.” Por lo tanto, no debe habilitar
SSH antes de cambiar la contraseña de la cuenta de kali, o antes de haber modificado su
configuración para no permitir inicios de sesión basados en contraseña.

También es posible que desee generar nuevas claves SSH de host, si instaló Kali mediante una
imagen pregenerada. Esto está cubierto en “Generación de nuevas claves de host SSH” [página 115].

7.4. Cortafuegos o filtrado de paquetes

Acortafuegoses una pieza de equipo informático con hardware, software o ambos que analiza los
paquetes de red entrantes o salientes (que llegan o salen de una red local) y solo deja pasar aquellos
que cumplen ciertas condiciones predefinidas.

Una puerta de enlace de red de filtrado es un tipo de cortafuegos que protege una red completa. Por lo general, se instala
en una máquina dedicada configurada como una puerta de enlace para la red para que pueda analizar todos los paquetes
que entran y salen de la red. Alternativamente, un firewall local es un servicio de software que se ejecuta en una máquina
en particular para filtrar o limitar el acceso a algunos servicios en esa máquina, o posiblemente para evitar conexiones
salientes por software no autorizado que un usuario podría haber instalado, voluntariamente o no.

1https://www.kali.org/docs/introduction/default-credentials/
2https://tools.kali.org/

Capítulo 7: Protección y supervisión de Kali Linux 159


El kernel de Linux incorpora elfiltro de redcortafuegos No existe una solución llave en mano para configurar
cualquier firewall ya que los requisitos de la red y del usuario difieren. Sin embargo, puede controlarfiltro de red
desde el espacio del usuario con eliptablesytablas ip6comandos La diferencia entre estos dos comandos es que el
primero funciona para redes IPv4, mientras que el segundo funciona en IPv6. Dado que ambas pilas de protocolos
de red probablemente existirán durante muchos años, ambas herramientas deberán usarse en paralelo. También
puede utilizar la excelente interfaz gráfica de usuarioconstructoraherramienta, que proporciona una representación
gráfica de las reglas de filtrado.

Independientemente de cómo decidas configurarlo,filtro de redes la implementación del firewall de Linux, así que echemos un
vistazo más de cerca a cómo funciona.

7.4.1. Comportamiento del filtro de red

filtro de redutiliza cuatro tablas distintas, que almacenan reglas que regulan tres tipos de operaciones en paquetes:

• filtrarse refiere a las reglas de filtrado (aceptar, rechazar o ignorar un paquete);

• natural (Traducción de direcciones de red) se refiere a la traducción de direcciones de origen o destino y


puertos de paquetes;

• mutilarse refiere a otros cambios en los paquetes IP (incluidos los ToS—Tipo de servicio—campo y
opciones);

• crudopermite otras modificaciones manuales en los paquetes antes de que lleguen al sistema de seguimiento de
conexiones.

Cada tabla contiene listas de reglas llamadascadenas. El cortafuegos utiliza cadenas estándar para gestionar
paquetes en función de circunstancias predefinidas. El administrador puede crear otras cadenas, que solo se
utilizarán cuando las remita una de las cadenas estándar (ya sea directa o indirectamente).

Elfiltrartable tiene tres cadenas estándar:

• APORTE:se refiere a paquetes cuyo destino es el propio cortafuegos;

• PRODUCCIÓN:se refiere a los paquetes emitidos por el cortafuegos;

• ADELANTE:se refiere a los paquetes que pasan a través del cortafuegos (que no es ni su
origen ni su destino).

Elnaturaltable también tiene tres cadenas estándar:

• RUTA PREVIA:para modificar paquetes tan pronto como lleguen;

• POSTERIOR ENRUTAMIENTO:modificar los paquetes cuando estén listos para seguir su camino;

• PRODUCCIÓN:para modificar los paquetes generados por el propio cortafuegos.

Estas cadenas se ilustran en la Figura7.1, “Cómofiltro de redLas cadenas se llaman” [página 161].

160 Kali Linux revelado


Figura 7.1Cómofiltro de redLas cadenas se llaman

Cada cadena es una lista de reglas; cada regla es un conjunto de condiciones y una acción a realizar cuando se
cumplen las condiciones. Al procesar un paquete, el firewall escanea la cadena apropiada, una regla tras otra, y
cuando se cumplen las condiciones para una regla, salta (de ahí el -jopción en los comandos con sección7.4.2.2, “
Normas” [página 163]) a la acción especificada para continuar con el procesamiento. Los comportamientos más
comunes están estandarizados y existen acciones dedicadas para ellos. Tomar una de estas acciones estándar
interrumpe el procesamiento de la cadena, ya que el destino de los paquetes ya está sellado (salvo una excepción
que se menciona a continuación). A continuación se enumeran losfiltro de redcomportamiento.

• ACEPTAR:permitir que el paquete siga su camino.

• RECHAZAR:rechazar el paquete con un paquete de error del protocolo de mensajes de control de


Internet (ICMP) (el --rechazar-contipoopción deiptablesdetermina el tipo de error a enviar).

• GOTA:eliminar (ignorar) el paquete.

• REGISTRO:registro (a través deregistro del sistema) un mensaje con una descripción del paquete. Tenga en
cuenta que esta acción no interrumpe el procesamiento y la ejecución de la cadena continúa en la siguiente
regla, por lo que el registro de paquetes rechazados requiere una regla LOG y REJECT/DROP. Los parámetros
comunes asociados con el registro incluyen:

– - -nivel de registro,con valor por defectoadvertencia,indica elregistro del sistemanivel de severidad.


– - -prefijo de registropermite especificar un prefijo de texto para diferenciar los mensajes registrados.
– - -registro-tcp-secuencia, --log-tcp-opciones,y --log-ip-opcionesindicar los datos adicionales que se integrarán
en el mensaje: respectivamente, el número de secuencia de TCP, las opciones de TCP y las opciones de IP.

• ULOG:registrar un mensaje a través deulogd, que puede adaptarse mejor y ser más eficiente que
registro del sistemapara manejar grandes cantidades de mensajes; tenga en cuenta que esta acción, como LOG, también
devuelve el procesamiento a la siguiente regla en la cadena de llamada.

• nombre_cadena: saltar a la cadena dada y evaluar sus reglas.

Capítulo 7: Protección y supervisión de Kali Linux 161


• DEVOLVER:interrumpir el procesamiento de la cadena actual y volver a la cadena de llamada; en caso de
que la cadena actual sea estándar, no hay una cadena de llamada, por lo que la acción predeterminada
(definida con -PAGopción aiptables) se ejecuta en su lugar.

• SNAT (solo en elnaturaltabla): aplicarTraducción de dirección de red de origen(SNA). Las opciones


adicionales describen los cambios exactos que se aplicarán, incluido el --a la fuenteDIRECCIÓN:puerto
opción, que define la nueva dirección IP y/o puerto de origen.

• ADNT (solo en elnaturaltabla): aplicarTraducción de direcciones de red de destino(ADNT). Las opciones


adicionales describen los cambios exactos que se aplicarán, incluido el --destinoDIRECCIÓN:puertoopción,
que define la nueva dirección IP y/o puerto de destino.

• MASCARADA (solo en elnaturaltabla): aplicarenmascarado(un caso especial deNAT de origen).

• REDIRECTO (solo en elnaturaltable): redirigir de forma transparente un paquete a un puerto determinado


del propio cortafuegos; esto se puede usar para configurar un proxy web transparente que funciona sin
configuración en el lado del cliente, ya que el cliente cree que se conecta al destinatario mientras que las
comunicaciones en realidad pasan por el proxy. El --a-puertospuerto(s)La opción indica el puerto, o el rango
de puertos, donde se deben redirigir los paquetes.

Otras actuaciones, en particular las relativas a lamutilartabla, están fuera del alcance de este
texto. Eliptables(8)ytablas ip6(8)Las páginas del manual tienen una lista completa.

¿Qué es ICMP? Protocolo de mensajes de control de Internet(ICMP) es el protocolo utilizado para transmitir
información auxiliar en las comunicaciones. Prueba la conectividad de la red con elsilbido
comando, que envía un ICMPsolicitud de ecomensaje, que el destinatario debe responder con
un ICMPrespuesta de ecomensaje. Señala un cortafuegos que rechaza un paquete, indica un
desbordamiento en un búfer de recepción, propone una mejor ruta para los siguientes
paquetes en la conexión, etc. Este protocolo está definido por varios documentos RFC. RFC777
y RFC792 fueron los primeros, pero muchos otros ampliaron y/o revisaron el protocolo.

mihttp://www.faqs.org/rfcs/rfc777.html
mihttp://www.faqs.org/rfcs/rfc792.html
Como referencia, un búfer de recepción es una pequeña zona de memoria que almacena datos entre el
momento en que llega desde la red y el momento en que el kernel los maneja. Si esta zona está llena, no se
pueden recibir nuevos datos e ICMP señala el problema para que el emisor pueda reducir su tasa de
transferencia (que idealmente debería alcanzar un equilibrio después de un tiempo).

Tenga en cuenta que aunque una red IPv4 puede funcionar sin ICMP, ICMPv6 es estrictamente
necesario para una red IPv6, ya que combina varias funciones que, en el mundo de IPv4, estaban
repartidas en ICMPv4,Protocolo de pertenencia a grupos de Internet(IGMP), yprotocolo de
resolucion de DIRECCION(ARP). ICMPv6 se define en RFC4443.

mihttp://www.faqs.org/rfcs/rfc4443.html

162 Kali Linux revelado


7.4.2. Sintaxis deiptablesytablas ip6

Eliptablesytablas ip6Los comandos se utilizan para manipular tablas, cadenas y reglas. Su


- tmesaopción indica en qué tabla operar (por defecto,filtrar).

Comandos

Las principales opciones para interactuar con las cadenas se enumeran a continuación:

• - Lcadenaenumera las reglas en la cadena. Esto se usa comúnmente con el -norteopción para deshabilitar la
resolución de nombres (por ejemplo,iptables -n -L ENTRADAmostrará las reglas relacionadas con los paquetes
entrantes).

• - nortecadenacrea una nueva cadena. Puede crear nuevas cadenas para varios propósitos, incluida la
prueba de un nuevo servicio de red o la defensa de un ataque a la red.

• - Xcadenaelimina una cadena vacía y sin usar (por ejemplo,iptables -X ddos-ataque).


• - Acadena de reglasagrega una regla al final de la cadena dada. Recuerde que las reglas se procesan de
arriba hacia abajo, así que asegúrese de tener esto en cuenta al agregar reglas.

• - Icadena rule_num reglainserta una regla antes del número de reglarule_num. Al igual que con el -Aopción, tenga
en cuenta el orden de procesamiento al insertar nuevas reglas en una cadena.

• - Dcadena rule_num(o -Dcadena de reglas) elimina una regla en una cadena; la primera sintaxis identifica
la regla que se eliminará por su número (iptables -L --números de líneamostrará estos números), mientras que el
segundo lo identifica por su contenido.

• - Fcadenavacía una cadena (borra todas sus reglas). Por ejemplo, para eliminar todas las reglas relacionadas
con los paquetes salientes, ejecutaríaiptables -F SALIDA. Si no se menciona ninguna cadena, se eliminan todas
las reglas de la tabla.

• - PAGacción en cadenadefine la acción predeterminada o "política" para una cadena dada; tenga en cuenta que solo las cadenas
estándar pueden tener una política de este tipo. Para descartar todo el tráfico entrante de forma predeterminada, ejecutaría

iptables -P CAÍDA DE ENTRADA.

Normas

Cada regla se expresa comocondiciones-jacción acción_opciones. Si se describen varias condiciones en


la misma regla, entonces el criterio es la conjunción (lógicaY) de las condiciones, que es al menos tan
restrictivo como cada condición individual.

El -pagprotocolola condición coincide con el campo de protocolo del paquete IP. Los valores más comunes
sontcp, udp, icmp,yicmpv6.Esta condición se puede complementar con condiciones en los puertos TCP, con
cláusulas como --Puerto de origenpuertoy --Puerto de destinopuerto.

Capítulo 7: Protección y supervisión de Kali Linux 163


Condiciones de negación Prefijar una condición con un signo de exclamación niega la condición. Por ejemplo, negar
una condición en el-pagla opción coincide con "cualquier paquete con un protocolo diferente al
especificado". Este mecanismo de negación también se puede aplicar a todas las demás
condiciones.

El -sDIRECCIÓNo -sred/máscarala condición coincide con la dirección de origen del paquete. En


consecuencia, -dDIRECCIÓNo -dred/máscaracoincide con la dirección de destino.

El -iinterfazcondition selecciona paquetes provenientes de la interfaz de red dada. -ointerfaz


selecciona los paquetes que salen en una interfaz específica.

El --estadoestadocondición coincide con el estado de un paquete en una conexión (esto requiere la


ipt_conntrackmódulo kernel, para el seguimiento de la conexión). ElNUEVOstate describe un paquete que inicia
una nueva conexión,ESTABLECIDOcoincide con los paquetes que pertenecen a una conexión ya existente, y
RELACIONADOcoincide con los paquetes que inician una nueva conexión relacionada con una existente (lo
cual es útil para elftp-datosconexiones en el modo “activo” del protocolo FTP).

Hay muchas opciones disponibles paraiptablesytablas ip6y dominarlos a todos requiere mucho estudio y
experiencia. Sin embargo, una de las opciones que usará con más frecuencia es la de bloquear el
tráfico de red malicioso de un host o rango de hosts. Por ejemplo, para bloquear silenciosamente el
tráfico entrante desde la dirección IP10.0.1.5y el31.13.74.0/24subred clase C:

# iptables -A ENTRADA -s 10.0.1.5 -j CAÍDA


# iptables -A ENTRADA -s 31.13.74.0/24 -j CAÍDA
# iptables -n -L ENTRADA Encadenar
INPUT (política ACEPTAR) destino
fuente de opción de beneficio destino
GOTA todo - - 10.0.1.5 0.0.0.0/0
GOTA todo - - 31.13.74.0/24 0.0.0.0/0

Otro de uso comúniptablesEl comando es permitir el tráfico de red para un servicio o puerto específico. Para
permitir que los usuarios se conecten a SSH, HTTP e IMAP, puede ejecutar los siguientes comandos:

# iptables -A ENTRADA -m estado --estado NUEVO -p tcp --dport 22 -j ACEPTAR


# iptables -A ENTRADA -m estado --estado NUEVO -p tcp --dport 80 -j ACEPTAR
# iptables -A ENTRADA -m estado --estado NUEVO -p tcp --dport 143 -j ACEPTAR
# iptables -n -L ENTRADA
Encadenar INPUT (política ACEPTAR)
destino fuente de opción de beneficio destino
GOTA todo - - 10.0.1.5 0.0.0.0/0
GOTA todo - - 31.13.74.0/24 0.0.0.0/0
ACEPTAR tcp -- 0.0.0.0/0 0.0.0.0/0 estado NUEVO tcp dpt:22
ACEPTAR tcp -- 0.0.0.0/0 0.0.0.0/0 estado NUEVO tcp dpt:80
ACEPTAR tcp -- 0.0.0.0/0 0.0.0.0/0 estado NUEVO tcp dpt:143

Se considera una buena computadora.higienepara limpiar reglas viejas e innecesarias. La forma más fácil de
eliminariptablesreglas es hacer referencia a las reglas por número de línea, que puede recuperar con

164 Kali Linux revelado


el --Línea de númerosopción. Sin embargo, tenga cuidado: al eliminar una regla, se volverán a numerar todas las reglas que
aparecen más abajo en la cadena.

# iptables -n -L ENTRADA --números de línea


Cadena ENTRADA (política ACEPTAR) núm
objetivo fuente de opción de beneficio destino
1 GOTA todo - - 10.0.1.5 0.0.0.0/0
2 GOTA todo - - 31.13.74.0/24 0.0.0.0/0
3 ACEPTAR tcp -- 0.0.0.0/0 0.0.0.0/0 estado NUEVO tcp dpt:22
4 ACEPTAR tcp -- 0.0.0.0/0 0.0.0.0/0 estado NUEVO tcp dpt:80
5 ACEPTAR tcp -- 0.0.0.0/0 0.0.0.0/0 estado NUEVO tcp dpt:143
# iptables -D ENTRADA 2
# iptables -D ENTRADA 1
# iptables -n -L ENTRADA --números de línea
Cadena ENTRADA (política ACEPTAR) núm
objetivo fuente de opción de beneficio destino
1 ACEPTAR tcp -- 0.0.0.0/0 0.0.0.0/0 estado NUEVO tcp dpt:22
2 ACEPTAR tcp -- 0.0.0.0/0 0.0.0.0/0 estado NUEVO tcp dpt:80
3 ACEPTAR tcp -- 0.0.0.0/0 0.0.0.0/0 estado NUEVO tcp dpt:143

Existen condiciones más específicas, dependiendo de las condiciones genéricas descritas anteriormente. Para
obtener más información, consulte las páginas del manual paraiptables(8)ytablas ip6(8)

7.4.3. Creación de reglas

Cada creación de regla requiere una invocación deiptablesotablas ip6. Escribir estos comandos manualmente puede
ser tedioso, por lo que las llamadas generalmente se almacenan en un script para que el sistema se configure
automáticamente de la misma manera cada vez que se inicia la máquina. Este script se puede escribir a mano pero
también puede ser interesante prepararlo con una herramienta de alto nivel comoconstructora.

# apt instalar fwbuilder

El principio es simple. En el primer paso, describa todos los elementos que estarán involucrados en las
reglas reales:

• El propio cortafuegos, con sus interfaces de red

• Las redes, con sus correspondientes rangos de IP

• Los servidores

• Los puertos pertenecientes a los servicios alojados en los servidores

Luego, cree las reglas con simples acciones de arrastrar y soltar en los objetos como se muestra en la Figura
7.2, “Ventana principal de Fwbuilder” [página 166]. Unos pocos menús contextuales pueden cambiar la
condición (negarla, por ejemplo). Luego, la acción debe elegirse y configurarse.

En lo que respecta a IPv6, puede crear dos conjuntos de reglas distintos para IPv4 e IPv6, o crear solo
uno y dejar queconstructoratraducir las reglas según las direcciones asignadas a los objetos.

Capítulo 7: Protección y supervisión de Kali Linux 165


Figura 7.2Ventana principal de Fwbuilder

constructoragenerará un script configurando el cortafuegos según las reglas que hayas definido.
Su arquitectura modular le da la capacidad de generar scripts dirigidos a diferentes sistemas,
incluidosiptablespara linux,ipfpara FreeBSD ypor favorpara OpenBSD.

7.4.4. Instalación de las reglas en cada arranque

Para implementar las reglas del firewall cada vez que se inicia la máquina, deberá registrar
el script de configuración en unarribadirectiva de la/etc/red/interfacesarchivo. En el siguiente
ejemplo, el script se almacena en/usr/local/etc/arrakis.fw(arrakis es el nombre de host de la
máquina).
auto eth0
iface eth0 inet estático
dirección 192.168.0.1
red 192.168.0.0
máscara de red 255.255.255.0
transmitir 192.168.0.255 hasta /usr/
local/etc/arrakis.fw

166 Kali Linux revelado


Este ejemplo asume que usted está usandosi arriba abajopara configurar las interfaces de red. Si está
usando algo más (comoGerente de Redesosystemd-networkd), luego consulte su documentación respectiva
para encontrar formas de ejecutar un script después de que se haya abierto la interfaz.

7.5. Supervisión y registro

La confidencialidad y la protección de los datos es un aspecto importante de la seguridad, pero es igualmente


importante garantizar la disponibilidad de los servicios. Como administrador y profesional de la seguridad, debe
asegurarse de que todo funcione como se espera y es su responsabilidad detectar el comportamiento anómalo y la
degradación del servicio de manera oportuna. El software de monitoreo y registro juega un papel clave en este
aspecto de la seguridad, ya que brinda información sobre lo que sucede en el sistema y la red.

En esta sección, revisaremos algunas herramientas que se pueden usar para monitorear varios aspectos de un sistema
Kali.

7.5.1. Seguimiento de registros converificación de registro

Elverificación de registroEl programa supervisa los archivos de registro cada hora de forma predeterminada y envía mensajes de registro inusuales en

correos electrónicos al administrador para un análisis más detallado.

La lista de archivos monitoreados se almacena en/etc/logcheck/logcheck.archivos de registro. Los valores predeterminados


funcionan bien si el/etc/rsyslog.confarchivo no ha sido completamente revisado.

verificación de registropuede informar en varios niveles de detalle:paranoico,servidor, ypuesto de trabajo.paranoicoesmuy


detallado y probablemente debería estar restringido a servidores específicos como firewalls.servidores el modo
predeterminado y se recomienda para la mayoría de los servidores.puesto de trabajoobviamente está diseñado para
estaciones de trabajo y es extremadamente conciso, filtrando más mensajes que las otras opciones.

En los tres casos,verificación de registroprobablemente debería personalizarse para excluir algunos mensajes adicionales
(según los servicios instalados), a menos que realmente desee recibir lotes por hora de correos electrónicos largos y poco
interesantes. Dado que el mecanismo de selección de mensajes es bastante complejo,/usr/compartir/doc/
logcheck-database/README.logcheck-database.gzes una lectura requerida, aunque desafiante.

Las reglas aplicadas se pueden dividir en varios tipos:

• los que califican un mensaje como intento de cracking (almacenados en un archivo en el/etc/logcheck/
grietas.d/directorio);

• intentos de craqueo ignorados (/etc/logcheck/cracking.ignore.d/);


• aquellos que clasifican un mensaje como una alerta de seguridad (/etc/logcheck/violations.d/);

• alertas de seguridad ignoradas (/etc/logcheck/violations.ignore.d/);

• por último, las aplicables al resto de mensajes (considerados comoeventos del sistema).

Capítulo 7: Protección y supervisión de Kali Linux 167


ignorar.dlos archivos se utilizan para (obviamente) ignorar los mensajes. Por ejemplo, un mensaje etiquetado como un
intento de craqueo o una alerta de seguridad (siguiendo una regla almacenada en un/etc/logcheck/violations.d/myfile
file) solo puede ser ignorado por una regla en un/etc/logcheck/violations.ignore.d/myfileo/etc/
logcheck/violations.ignore.d/myfile-extensiónarchivo.

Un evento del sistema siempre se señala a menos que una regla en uno de los/etc/logcheck/ignore.d. {paranoico,
servidor, estación de trabajo}/directorios indica que el evento debe ser ignorado. Por supuesto, los únicos
directorios que se tienen en cuenta son los correspondientes a niveles de verbosidad iguales o superiores al
modo de funcionamiento seleccionado.

corchetes {} en un El uso de llaves en un comando bash tiene muchas funciones diferentes. En el ejemplo
Dominio anterior, lo estamos usando como una forma abreviada de repetir partes del comando. Bash
luego expandirá el comando antes de ejecutarlo.

En el ejemplo a continuación, tendrá el mismo resultado, tres archivos creados en nuestro directorio
de inicio.

# toque /inicio/kali/archivo1.txt /inicio/kali/archivo2.txt /inicio/kali/


aarchivo3.txt
# toque /home/kali/archivo{1,2,3}.txt

7.5.2. Monitoreo de actividad en tiempo real

arribaes una herramienta interactiva que muestra una lista de los procesos que se están ejecutando actualmente. La clasificación

predeterminada se basa en la cantidad actual de uso del procesador y se puede obtener con elPAGllave. Otros órdenes de
clasificación incluyen una clasificación por memoria ocupada (METROclave), por el tiempo total del procesador (Tclave), y por
identificador de proceso (nortellave). Elkkey mata un proceso ingresando su identificador de proceso. Elrkey cambia la prioridad de
un proceso.

Cuando el sistema parece estar sobrecargado,arribaes una gran herramienta para ver qué procesos compiten por el
tiempo del procesador o consumen demasiada memoria. En particular, a menudo es interesante comprobar si los
procesos que consumen recursos coinciden con los servicios reales que se sabe que alberga la máquina. Un
proceso desconocido que se ejecuta como el usuario "www-data" realmente debería destacarse e investigarse, ya
que probablemente sea una instancia de software instalada y ejecutada en el sistema a través de una
vulnerabilidad en una aplicación web.

arribaes una herramienta muy flexible y su página de manual brinda detalles sobre cómo personalizar su pantalla y

adaptarla a sus necesidades y hábitos personales.

Eladministrador de tareas xfce4La herramienta gráfica es similar aarribay proporciona aproximadamente las mismas
características. Para los usuarios de GNOME haygnome-sistema-monitory para los usuarios de KDE hayksysguardque
también son similares.

168 Kali Linux revelado


7.5.3. Detectar cambios

Una vez que se instala y configura un sistema, la mayoría de los archivos del sistema deben permanecer relativamente
estáticos hasta que se actualice el sistema. Por lo tanto, es una buena idea monitorear los cambios en los archivos del
sistema, ya que cualquier cambio inesperado podría ser motivo de alarma y debe investigarse. Esta sección presenta
algunas de las herramientas más comunes utilizadas para monitorear los archivos del sistema, detectar cambios y,
opcionalmente, notificarlo como administrador del sistema.

Paquetes de auditoría condpkg --verificar

dpkg --verificar(odpkg -V) es una herramienta interesante ya que muestra los archivos del sistema que han sido
modificados (potencialmente por un atacante), pero esta salida debe tomarse con cautela. Para hacer su trabajo,
dpkgse basa en sumas de verificación almacenadas en su propia base de datos que se almacena en el disco duro
(que se encuentra en/var/lib/dpkg/info/paquete.md5sums). Por lo tanto, un atacante meticuloso modificará estos archivos
para que contengan las nuevas sumas de verificación para los archivos subvertidos, o un atacante avanzado pondrá
en peligro el paquete en su réplica de Debian. Para protegerse contra esta clase de ataque, utilice el sistema de
verificación de firma digital de APT (consulte la sección8.3.6, “Validación de la autenticidad del paquete” [página
208]) para verificar correctamente los paquetes.

¿Qué es un archivo? Como recordatorio: una huella dactilar es un valor, a menudo un número (aunque
¿Huella dactilar? en notación hexadecimal), que contiene una especie de firma para el contenido de
un archivo. Esta firma se calcula con un algoritmo (MD5, SHA1, SHA256 son
ejemplos bien conocidos) que más o menos garantiza que incluso el más mínimo
cambio en el contenido del archivo resultará en un cambio de la huella digital;
esto se conoce como el “efecto avalancha”. Una simple huella digital sirve como
prueba de fuego para verificar si el contenido de un archivo ha sido alterado.
Estos algoritmos no son reversibles; es decir, para la mayoría de ellos, conocer
una huella dactilar no permite encontrar el contenido correspondiente. Los
avances matemáticos recientes parecen debilitar el carácter absoluto de estos
principios, pero su uso no se cuestiona hasta el momento.

Correrdpkg -Vverificará todos los paquetes instalados e imprimirá una línea por cada archivo que no supere la verificación.
Cada carácter denota una prueba en algunos metadatos específicos. Desafortunadamente,dpkgno almacena los metadatos
necesarios para la mayoría de las pruebas y, por lo tanto, generará signos de interrogación para ellas. Actualmente, solo la
prueba de suma de comprobación puede arrojar un 5 en el tercer carácter (cuando falla).

# dpkg -V
??5?????? /lib/systemd/system/ssh.servicio
??5?????? c /etc/libvirt/qemu/networks/default.xml ??5?????? c /etc/
lvm/lvm.conf
??5?????? c /etc/salt/roster

En el ejemplo anterior, dpkg informa de un cambio en el archivo de servicio de SSH que el administrador realizó en el
archivo empaquetado en lugar de utilizar un archivo de servicio apropiado./etc/systemd/system/ssh.servicioanular

Capítulo 7: Protección y supervisión de Kali Linux 169


(que se almacenaría debajo/etc.como debería ser cualquier cambio de configuración). También enumera varios
archivos de configuración (identificados por la letra "c" en el segundo campo) que se han modificado
legítimamente.

Seguimiento de Archivos: AIDE

La herramienta Entorno de detección avanzada de intrusos (AIDE) comprueba la integridad del archivo y detecta
cualquier cambio en una imagen previamente grabada del sistema válido. La imagen se almacena como una base
de datos (/var/lib/aide/aide.db) que contiene la información relevante sobre todos los archivos del sistema (huellas
dactilares, permisos, marcas de tiempo, etc.).

Puede instalar AIDE ejecutandoactualización adecuadaseguido porasistente de instalación apto. Primero inicializará la base
de datos conayudante; entonces se ejecutará diariamente (a través del/etc/cron.diario/aidescript) para verificar que no
haya cambiado nada relevante. Cuando se detectan cambios, AIDE los registra en archivos de registro (/var/log/
ayudante/*.log) y envía sus conclusiones al administrador por correo electrónico.

Protección de la base de datos Dado que AIDE utiliza una base de datos local para comparar los estados de los expedientes, la
validez de sus resultados está directamente ligada a la validez de la base de datos. Si un atacante
obtiene permisos de root en un sistema comprometido, podrá reemplazar la base de datos y cubrir
sus huellas. Una forma de evitar esta subversión es almacenar los datos de referencia en medios de
almacenamiento de solo lectura.

Puede utilizar opciones en/etc/predeterminado/ayudantepara ajustar el comportamiento delayudantepaquete. El


La configuración AIDE propiamente dicha se almacena en/etc/aide/aide.confy/etc/aide/aide.conf.d/(C.A-
tualmente, estos archivos sólo son utilizados poractualización-aide.confpara generar/var/lib/aide/aide.conf. auto
generado). La configuración indica qué propiedades de qué archivos deben verificarse. Por ejemplo, el
contenido de los archivos de registro cambia de forma rutinaria y dichos cambios pueden ignorarse siempre
que los permisos de estos archivos permanezcan iguales, pero tanto el contenido como los permisos de los
programas ejecutables deben ser constantes. Aunque no es muy compleja, la sintaxis de configuración no es
del todo intuitiva y recomendamos leer elayudante.conf(5)página del manual para más detalles.

Diariamente se genera una nueva versión de la base de datos en/var/lib/aide/aide.db.nuevo; si todos los cambios registrados
fueron legítimos, se puede utilizar para reemplazar la base de datos de referencia.

Tripwire es muy similar a AIDE; incluso la sintaxis del archivo de configuración es casi la misma. La principal adición
proporcionada porcable trampaes un mecanismo para firmar el archivo de configuración para que un atacante no pueda
hacer que apunte a una versión diferente de la base de datos de referencia.

Samhain también ofrece características similares, así como algunas funciones para ayudar a detectar rootkits (ver “El
comprobar la seguridadychkrootkit/rkhunterpaquetes” [página 171] a continuación). También se puede implementar
globalmente en una red y registrar sus rastros en un servidor central (con una firma).

170 Kali Linux revelado


Elcomprobar la seguridady comprobar la seguridadconsta de varios scripts pequeños que realizan comprobaciones básicas en el
chkrootkit/rkhunter sistema (búsqueda de contraseñas vacías, nuevos archivos setuid, etc.) y le advierten si se detectan estas
paquetes condiciones. A pesar de su nombre explícito, no debe confiar únicamente en él para asegurarse de que un
sistema Linux sea seguro.

Elchkrootkityrkhunterlos paquetes detectan ciertosrootkitspotencialmente instalado en el sistema.


Como recordatorio, estas son piezas de software diseñadas para ocultar el compromiso de un
sistema mientras mantienen discretamente el control de la máquina. Las pruebas no son 100 por
ciento confiables, pero generalmente pueden llamar su atención sobre posibles problemas.

7.6. Resumen

En este capítulo, echamos un vistazo al concepto de políticas de seguridad, resaltando varios puntos a considerar al definir
dicha política y describiendo algunas de las amenazas para su sistema y para usted personalmente, como profesional de la
seguridad. Discutimos las medidas de seguridad de computadoras de escritorio y portátiles, así como los firewalls y el
filtrado de paquetes. Finalmente, revisamos las herramientas y estrategias de monitoreo y mostramos cómo
implementarlas mejor para detectar posibles amenazas a su sistema.

Resumen de consejos:

• Tómese el tiempo para definir una política de seguridad integral.

• A menudo surge un riesgo real cuando viaja de un cliente a otro. Por ejemplo, su computadora portátil podría ser
robada mientras viaja o incautada por la aduana. Prepárese para estas desafortunadas posibilidades utilizando el
cifrado de disco completo (consulte la sección4.2.2, “Instalación en un sistema de archivos totalmente cifrado
” [página 88]) y considere la característica nuclear (ver “Agregar una contraseña de Nuke para mayor seguridad
” [página 250]) para proteger los datos de sus clientes.

• Deshabilite los servicios que no utilice. Kali facilita hacer esto ya que todos los servicios de red externos están
deshabilitados de manera predeterminada.

• Si está ejecutando Kali en un servidor de acceso público, cambie las contraseñas predeterminadas para los
servicios que puedan configurarse (consulte la sección7.3, “Protección de servicios de red” [página 159]) y
restringir su acceso con un cortafuegos (ver sección7.4, “Cortafuegos o filtrado de paquetes” [página 159])
antes de lanzarlos.

• Usarfail2banpara detectar y bloquear ataques de adivinación de contraseñas y ataques remotos de contraseñas de fuerza
bruta.

• Si ejecuta servicios web, alójelos a través de HTTPS para evitar que los intermediarios de la red
detecten su tráfico (lo que podría incluir cookies de autenticación).
• El kernel de Linux incorpora elfiltro de redcortafuegos No existe una solución llave en mano para configurar
cualquier firewall, ya que los requisitos de la red y del usuario difieren. Sin embargo, puede controlarfiltro
de red desde el espacio de usuario con eliptablesytablas ip6comandos

• Implementar reglas de firewall (ver sección7.4, “Cortafuegos o filtrado de paquetes” [página 159]) para prohibir todo
el tráfico saliente excepto el tráfico generado por su VPNaccess. Esto se entiende como una seguridad

Capítulo 7: Protección y supervisión de Kali Linux 171


net, de modo que cuando la VPN no funcione, lo notará de inmediato (en lugar de recurrir al
acceso a la red local).

• arribaes una herramienta interactiva que muestra una lista de los procesos que se están ejecutando actualmente.

• Elverificación de registroEl programa supervisa los archivos de registro cada hora de forma predeterminada y envía mensajes de registro inusuales en

correos electrónicos al administrador para un análisis más detallado.

• dpkg --verificar(odpkg -V) muestra los archivos del sistema que han sido modificados (potencialmente por un atacante),
pero se basa en sumas de verificación, que pueden ser subvertidas por un atacante inteligente.

• La herramienta Entorno de detección avanzada de intrusos (AIDE) comprueba la integridad del archivo y
detecta cualquier cambio en una imagen previamente grabada del sistema válido.

• Tripwire es muy similar a AIDE pero utiliza un mecanismo para firmar el archivo de configuración, de modo que un
atacante no pueda hacer que apunte a una versión diferente de la base de datos de referencia.

• Considere el uso derkhunter,comprobar la seguridad, ychkrootkitpara ayudar a detectar rootkits en su


sistema.

En el próximo capítulo, profundizaremos en los fundamentos de Debian (capítulo8, “Gestión de paquetes de Debian
” [página 176]) y gestión de paquetes. Comprenderá rápidamente el poder detrás de las raíces de Debian de Kali y
aprenderá cómo los desarrolladores han aprovechado ese poder. Tenga cuidado, el próximo capítulo es bastante
denso, pero es fundamental que comprenda los conceptos básicos de Debian y la administración de paquetes si va
a ser un usuario avanzado de Kali.

172 Kali Linux revelado


Palabras clave

dpkg
apto
fuentes.lista
Actualizaciones

Repositorios de paquetes
Capítulo

Paquete Debian 8
Gestión
Contenido

Introducción a APT176 Interacción básica del paquete181 Configuración y uso avanzados de APT200
Referencia del paquete APT: profundizando en el sistema de paquetes de Debian210 Resumen222
Después de los conceptos básicos de Linux, es hora de aprender el sistema de gestión de paquetes de una distribución
basada en Debian. En tales distribuciones, incluida Kali, el paquete Debian es la forma canónica de hacer que el software
esté disponible para los usuarios finales. Comprender el sistema de administración de paquetes le brindará una gran
cantidad de información sobre cómo está estructurado Kali, le permitirá solucionar problemas de manera más efectiva y lo
ayudará a ubicar rápidamente la ayuda y la documentación para la amplia gama de herramientas y utilidades incluidas en
Kali Linux.

En este capítulo, presentaremos el sistema de administración de paquetes Debian y presentaremosdpkgy el


conjunto de herramientas APT. Una de las principales fortalezas de Kali Linux radica en la flexibilidad de su sistema
de administración de paquetes, que aprovecha estas herramientas para proporcionar una instalación,
actualización, eliminación y manipulación casi perfectas del software de la aplicación, e incluso del propio sistema
operativo base. Es fundamental que comprenda cómo funciona este sistema para aprovechar al máximo Kali y
agilizar sus esfuerzos. Los días de compilaciones dolorosas, actualizaciones desastrosas, depuraciónCCG,hacer, y
configurarlos problemas se han ido, sin embargo, la cantidad de aplicaciones disponibles se ha disparado y
necesita comprender las herramientas diseñadas para aprovecharlas. Esta también es una habilidad crítica
porque hay una serie de herramientas de seguridad que, debido a licencias u otros problemas, no se
pueden incluir en Kali pero tienen paquetes Debian disponibles para descargar. Es importante que sepa
cómo procesar e instalar estos paquetes y cómo impactan en el sistema, especialmente cuando las cosas no
salen como se esperaba.

Comenzaremos con algunas descripciones generales básicas de APT, describiremos la estructura y el contenido de los paquetes
binarios y fuente, echaremos un vistazo a algunas herramientas y escenarios básicos, y luego profundizaremos para ayudarlo a
exprimir cada onza de utilidad de este espectacular sistema de paquetes y suite. de herramientas

8.1. Introducción a APT

Comencemos con algunas definiciones básicas, una descripción general y un poco de historia sobre los paquetes de
Debian, comenzando condpkgy APTO.

8.1.1. Relación entre APT ydpkg

Un paquete Debian es un archivo comprimido de una aplicación de software. Apaquete binario(a.debutantefile)


contiene archivos que se pueden usar directamente (como programas o documentación), mientras que unpaquete
fuentecontiene el código fuente del software y las instrucciones necesarias para construir un paquete binario. Un
paquete Debian contiene los archivos de la aplicación, así como otrosmetadatosincluidos los nombres de las
dependencias que necesita la aplicación, así como los scripts que permiten la ejecución de comandos en diferentes
etapas del ciclo de vida del paquete (instalación, actualizaciones y eliminación).

Eldpkgherramienta fue diseñada para procesar e instalar.debutantepaquetes, pero si encuentra una


dependencia insatisfecha (como una biblioteca faltante) que impediría la instalación del paquete,dpkg
simplemente enumeraría la dependencia faltante, porque no tenía conciencia ni lógica incorporada para encontrar o
procesar los paquetes que podrían satisfacer esas dependencias. La herramienta de paquete avanzado (APT),

176 Kali Linux revelado


incluidoaptoyapt-get, fueron diseñados para abordar estas deficiencias y podrían resolver automáticamente
estos problemas. hablaremos de los dosdpkgy las herramientas APT en este capítulo.

El comando base para manejar paquetes Debian en el sistema esdpkg, que realiza instalación o análisis
de.debutantepaquetes y su contenido. Sin embargo,dpkgtiene solo una vista parcial del universo Debian:
sabe lo que está instalado en el sistema y lo que usted proporciona en la línea de comando, pero no
sabe nada de los otros paquetes disponibles. Como tal, fallará si no se cumple una dependencia. APT
aborda las limitaciones.

APT es un conjunto de herramientas que ayudan a administrar paquetes Debian o aplicaciones en su


sistema Debian. Puede usar APT para instalar y eliminar aplicaciones, actualizar paquetes e incluso actualizar
todo su sistema. La magia de APT radica en el hecho de que es un sistema completo de administración de
paquetes que no solo instalará o eliminará un paquete, sino que considerará los requisitos y las
dependencias de la aplicación empaquetada (e incluso sus requisitos y dependencias) e intentará
satisfacerlos. automáticamente. APT se basa endpkgpero APT difiere dedpkg, ya que el primero instala el
paquete más reciente desde una fuente en línea y trabaja para resolver las dependencias mientrasdpkg
instala un paquete ubicado en su sistema local y no resuelve automáticamente las dependencias.

Si ha vivido lo suficiente como para recordar compilar programas conCCG(incluso con la ayuda de
utilidades comohaceryconfigurar), probablemente recuerde que fue un proceso doloroso, especialmente
si la aplicación tenía varias dependencias. Al descifrar las diversas advertencias y mensajes de error, es
posible que haya podido determinar qué parte del código estaba fallando y, en la mayoría de los casos,
esa falla se debió a una biblioteca faltante u otra dependencia. Luego rastrearía esa biblioteca o
dependencia que falta, la corregiría y volvería a intentarlo. Luego, si tenía suerte, la compilación se
completaría, pero a menudo la compilación fallaría nuevamente, quejándose de otra dependencia
rota.

APT fue diseñado para ayudar a aliviar ese problema, cotejar los requisitos y dependencias del programa y
resolverlos. Esta funcionalidad funciona de forma inmediata en Kali Linux, pero no es infalible. Es importante
que comprenda cómo funciona el sistema de empaquetado de Debian y Kali porque necesitará instalar
paquetes, actualizar software o solucionar problemas con los paquetes. Utilizará APT en su trabajo diario con
Kali Linux y en este capítulo, le presentaremos APT y le mostraremos cómo instalar, eliminar, actualizar y
administrar paquetes, e incluso le mostraremos cómo mover paquetes entre diferentes distribuciones de
Linux. También hablaremos sobre las herramientas gráficas que aprovechan APT, le mostraremos cómo
validar la autenticidad de los paquetes y profundizaremos en el concepto de una distribución continua, una
técnica que trae actualizaciones diarias a su sistema Kali.

Antes de profundizar y mostrarle cómo usardpkgy APT para instalar y administrar paquetes, es importante
que profundicemos en algunos de los mecanismos internos de APT y analicemos la terminología que lo
rodea.

Origen del paquete y La palabrafuentepuede ser ambiguo. Un paquete fuente, un paquete que contiene el
Paquete fuente código fuente de un programa, no debe confundirse con un paquete fuente, un
repositorio (sitio web, servidor FTP, CD/DVD-ROM, directorio local, etc.) que contiene
paquetes.

Capítulo 8 — Gestión de paquetes de Debian 177


APT recupera sus paquetes de un repositorio, un sistema de almacenamiento de paquetes o simplemente, "fuente
de paquetes". El/etc/apt/fuentes.listaEl archivo enumera los diferentes repositorios (o fuentes) que publican paquetes
de Debian.

8.1.2. Entendiendo elfuentes.listaArchivo

Elfuentes.listaes el archivo de configuración clave para definir las fuentes de los paquetes, y es
importante comprender cómo se presenta y cómo configurarlo, ya que APT no funcionará sin una lista
de fuentes de paquetes definida correctamente. Analicemos su sintaxis, echemos un vistazo a los
diversos repositorios que utiliza Kali Linux y analicemos los espejos y la redirección de espejos, luego
estará listo para usar APT.

Cada línea activa del/etc/apt/fuentes.listaarchivo (y del/etc/apt/sources.list.d/*.


listaarchivos) contiene la descripción de una fuente, compuesta de tres partes separadas por espacios. Las líneas
comentadas comienzan con un carácter #:

# deb cdrom:[Debian GNU/Linux 2020.3 _Kali-rolling_ - Instantánea oficial amd64 LIVE/


aINSTALAR Binario 20200728-20:25]/ kali-last-snapshot contrib principal no libre

deb http://http.kali.org/kali kali-rolling principal contribución no libre

Echemos un vistazo a la sintaxis de este archivo. El primer campo indica el tipo de fuente:

• debutantepara paquetes binarios,

• deb-srcpara paquetes fuente.

El segundo campo proporciona la URL base de la fuente: puede consistir en un espejo de Kali o cualquier otro
archivo de paquete configurado por un tercero. La URL puede comenzar conarchivo://para indicar una fuente local
instalada en la jerarquía de archivos del sistema, conhttp://para indicar una fuente accesible desde un servidor web,
o conftp://para una fuente disponible en un servidor FTP. La URL también puede comenzar conCD ROM: para
instalaciones basadas en CD/DVD-ROM/Blu-ray disc, aunque esto es menos frecuente ya que los métodos de
instalación basados en red son cada vez más comunes.

ElCD ROMlas entradas describen el CD/DVD-ROM que tiene. A diferencia de otras entradas, un CD/DVD-ROM
no siempre está disponible, ya que debe insertarse en la unidad y, por lo general, solo se puede leer un
disco a la vez. Por esas razones, estas fuentes se administran de una manera ligeramente diferente y deben
agregarse con elapt-cdromprograma, normalmente ejecutado con elagregarparámetro. Este solicitará
entonces que se inserte el disco en la unidad y navegará por su contenido en busca dePaquetes
archivos Utilizará estos archivos para actualizar su base de datos de paquetes disponibles (esta operación generalmente la
realiza elactualización adecuadadominio). Después de eso, APT solicitará el disco si necesita un paquete almacenado en él.

La sintaxis del último campo depende de la estructura del repositorio. En los casos más simples, puede indicar
fácilmente un subdirectorio (con una barra inclinada al final requerida) de la fuente deseada (esto es a menudo un
simple "./”, que se refiere a la ausencia de un subdirectorio: los paquetes están directamente en el

178 Kali Linux revelado


URL especificada). Pero en el caso más común, los repositorios estarán estructurados como un espejo de Kali, con
múltiples distribuciones, cada una con múltiples componentes. En esos casos, nombre la distribución elegida, luego
los componentes (o secciones) para habilitar. Tomemos un momento para presentar estas secciones.

Debian y Kali utilizan tres apartados para diferenciar paquetes según las licencias elegidas por los autores de cada
obra. Una diferencia entre Debian y Kali es que Debian solo tiene principal habilitado de forma predeterminada,
mientras que Kali tiene los tres habilitados de forma predeterminada.

principalcontiene todos los paquetes que cumplen totalmente con losPautas de software libre de Debian1.

Elno libreEl archivo es diferente porque contiene software que no se ajusta (totalmente) a estos
principios pero que, sin embargo, puede distribuirse sin restricciones.
contribución (contribuciones) es un conjunto de software de código abierto que no puede funcionar sin algunos
elementos no libres. Estos elementos pueden incluir software delno libresección o archivos no libres como ROMs de
juegos, BIOS de consolas, etc.contribucióntambién incluye software libre cuya compilación requiere elementos
propietarios, como VirtualBox, que requiere un compilador no libre para construir algunos de sus archivos.

Ahora, echemos un vistazo a las fuentes o repositorios de paquetes estándar de Kali Linux.

8.1.3. Repositorios Kali

Un estandarfuentes.listaarchivo para un sistema que ejecuta Kali Linux se refiere a un repositorio (rodando
kali) y los tres componentes antes mencionados:principal, contribución,yno libre:

# Repositorio principal de Kali


deb http://http.kali.org/kali kali-rolling contribución principal no libre

Echemos un vistazo a los repositorios de Kali.

El depósito de Kali-Rolling

Este es el repositorio principal para los usuarios finales. Siempre debe contener paquetes instalables y recientes. Es
administrado por una herramienta que fusiona Debian Testing y los paquetes específicos de Kali de una manera que
garantiza que las dependencias de cada paquete se puedan satisfacer dentro de kali-rolling. En otras palabras, salvo
cualquier error en los scripts de mantenimiento, todos los paquetes deberían poder instalarse.

Dado que Debian Testing evoluciona a diario, Kali Rolling también lo hace. Los paquetes específicos de Kali también se actualizan
periódicamente a medida que supervisamos las versiones anteriores de los paquetes más importantes.

1https://www.debian.org/social_contract#guidelines

Capítulo 8 — Gestión de paquetes de Debian 179


El repositorio Kali-Dev

Este repositorio no es de uso público. Es un espacio donde los desarrolladores de Kali resuelven los problemas de
dependencia que surgen de la fusión de los paquetes específicos de Kali en Debian Testing.

También es el lugar donde llegan primero los paquetes actualizados, por lo que si necesita una actualización que se lanzó
recientemente y que aún no ha llegado a Kali-Rolling, es posible que pueda obtenerla de este repositorio. Esto no se
recomienda para usuarios habituales.

Los espejos de Kali Linux

Elfuentes.listaextractos anteriores se refieren ahttp.kali.org:este es un servidor corriendoespejocerebro2,


que redirigirá sus solicitudes HTTP a un espejo oficial cercano a usted. MirrorBrain monitorea cada
espejo para asegurarse de que funcionen y estén actualizados; siempre te redirigirá a un buen espejo.

Depuración de un espejo Si tiene un problema con el espejo (por ejemplo porqueactualización adecuadafalla),
Redirección puede usarrizo -sIpara ver a dónde se le está redirigiendo:

pscurl -sI http://http.kali.org/README HTTP/1.1


302 encontrado
Fecha: miércoles, 27 de enero de 2021
05:04:09 GMT Servidor: Apache/2.4.10
(Debian) X-MirrorBrain-Mirror: kali.download
X-MirrorBrain-Realm: país
Enlace: <http://http.kali.org/README.meta4>; rel=descrito por;
atipo=”aplicación/metalink4+xml”
Enlace: <http://kali.download/kali/README>; rel=duplicado; pri
a=1; geo=nosotros
Enlace: <http://mirrors.ocf.berkeley.edu/kali/README>; rel=
aduplicar; pri=2; geo=nosotros
Enlace: <http://mirror.anquan.cl/kali/README>; rel=duplicado;
apri=3; geo=cl
Enlace: <http://ftp.free.fr/pub/kali/README>; rel=duplicado;
apri=4; geo=es
Enlace: <http://archive-4.kali.org/kali/README>; rel=duplicado;
apri=5; geo=es
Ubicación: http://kali.download/kali/README Tipo de
contenido: texto/html; conjunto de caracteres = iso-8859-1

Si el problema persiste, puede editar/etc/apt/fuentes.listay codifique el nombre


de otro espejo de trabajo conocido en lugar de (o antes) delhttp.kali.org
entrada.

2http://mirrorbrain.org/

180 Kali Linux revelado


También tenemos una segunda instancia de MirrorBrain: dondehttp.kali.orgaloja los repositorios de paquetes,
cdimage.kali.orgaloja las imágenes ISO publicadas.

mihttp://cdimage.kali.org/
Si desea solicitar una lista de Kali Linux Mirrors oficiales, puede agregar .lista de espejosa cualquier URL válida que
apunte ahttp.kali.orgocdimage.kali.org.

mihttp://http.kali.org/README.mirrorlist
mihttp://cdimage.kali.org/README.mirrorlist
Estas listas no son exhaustivas debido a algunas limitaciones de MirrorBrain (en particular, los espejos
restringidos a algunos países no aparecen en la lista a menos que se encuentre en el país en cuestión). Pero
contienen los mejores espejos: están bien mantenidos y tienen una gran cantidad de ancho de banda
disponible.

8.2. Interacción básica del paquete

Armados con una comprensión básica del panorama APT, echemos un vistazo a algunas interacciones básicas del
paquete, incluida la inicialización de APT; instalación, eliminación y purga de paquetes; y actualización del sistema
Kali Linux. Entonces, aventurémonos desde la línea de comandos para echar un vistazo a algunas herramientas
gráficas de APT.

8.2.1. Inicializando APT

APT es un vasto proyecto y conjunto de herramientas, cuyos planes originales incluían una interfaz gráfica. Desde la
perspectiva del cliente, se centra en la herramienta de línea de comandosapt-getasí comoapto, que más tarde se desarrolló
para superar los defectos de diseño deapt-get.

Existen alternativas gráficas desarrolladas por terceros, incluyendosinápticoyaptitud, de la que hablaremos más
adelante. Tendemos a preferirapto, que usamos en los ejemplos que siguen. Sin embargo, detallaremos algunas de
las principales diferencias de sintaxis entre las herramientas, a medida que surjan.

Cuando trabaje con APT, primero debe descargar la lista de paquetes actualmente disponibles con
actualización adecuada. Dependiendo de la velocidad de su conexión, esto puede llevar algún tiempo porque la lista de varios
paquetes, la lista de fuentes y los archivos de traducción han crecido en tamaño junto con el desarrollo de Kali. Por
supuesto, los conjuntos de instalación de CD/DVD-ROM se instalan mucho más rápido, porque son locales para su
máquina.

Capítulo 8 — Gestión de paquetes de Debian 181


8.2.2. Instalación de paquetes

Gracias al cuidadoso diseño del sistema de paquetes de Debian, puede instalar paquetes, con o sin sus
dependencias, con bastante facilidad. Echemos un vistazo a la instalación del paquete condpkgy
apto.

Instalación de paquetes condpkg

dpkges la herramienta principal que utilizará (ya sea directa o indirectamente a través de APT) cuando
necesite instalar un paquete. También es una opción ideal si está operando sin conexión, ya que no requiere
una conexión a Internet. Recordar,dpkgno instalará ninguna dependencia que el paquete pueda requerir.
Para instalar un paquete condpkg, simplemente proporcione el -io --instalaropción y el camino a la.debutante.
Esto implica que previamente has descargado (u obtenido de alguna otra forma) el
. debutantearchivo del paquete a instalar.

# dpkg -i hombre-db_2.9.3-2_amd64.deb
(Leyendo base de datos... 309317 archivos y directorios actualmente instalados.) Preparando para
desempaquetar man-db_2.9.3-2_amd64.deb...
Desempaquetando man-db (2.9.3-2) sobre (2.9.3-2)...
Configurando man-db (2.9.3-2)...
Actualizando la base de datos de las páginas del manual...
man-db.service es una unidad deshabilitada o estática que no se ejecuta, no la inicia. Disparadores de
procesamiento para kali-menu (2020.4.0) ...
Disparadores de procesamiento para compatibilidad con mime (3.64) ...

Podemos ver los diferentes pasos realizados pordpkgy puede ver en qué punto se puede haber producido algún
error. El -io --instalarLa opción realiza dos pasos automáticamente: desempaqueta el paquete y ejecuta los scripts
de configuración. Puede realizar estos dos pasos de forma independiente (como lo hace apt detrás de escena) con
el --deshacery --configuraropciones, respectivamente:

# dpkg --desempaquetar man-db_2.9.3-2_amd64.deb


(Leyendo base de datos... 309317 archivos y directorios actualmente instalados.) Preparando para
desempaquetar man-db_2.9.3-2_amd64.deb...
Desempaquetando man-db (2.9.3-2) sobre (2.9.3-2)... Procesando
disparadores para kali-menu (2020.4.0)... Procesando
disparadores para mime-support (3.64)...
# dpkg --configure man-db Configurando man-
db (2.9.3-2)... Actualizando la base de datos de las
páginas del manual...

Tenga en cuenta que las líneas de "Desencadenadores de procesamiento" se refieren al código que se ejecuta
automáticamente cada vez que un paquete agrega, elimina o modifica archivos en algunos directorios monitoreados. por
ejemplo, elmimesupportpaquete de monitores/usr/lib/mime/paquetesy ejecuta elActualizar-mimodominio

182 Kali Linux revelado


cada vez que algo cambia en ese directorio (como/usr/lib/mime/paquetes/man-dben el caso
específico de man-db).
A vecesdpkgno podrá instalar un paquete y devolverá un error. Sin embargo, puede ordenar
dpkgpara ignorar esto y solo emitir una advertencia con varios --fuerza-*opciones emitiendo eldpkg
- - fuerza-ayudaEl comando mostrará una lista completa de estas opciones. Por ejemplo, puedes usar
dpkginstalar a la fuerzazsh:

psdpkg -i --force-overwrite zsh_5.8-5+b1_amd64.deb

Un error frecuente, que seguramente encontrará tarde o temprano, es una colisión de archivos.
Cuando un paquete contiene un archivo que ya está instalado por otro paquete,dpkgse negará a
instalarlo. Aparecerán los siguientes tipos de mensajes:

Desempaquetando libgdm (desde .../libgdm_3.8.3-2_amd64.deb) ...


dpkg: error al procesar /var/cache/apt/archives/libgdm_3.8.3-2_amd64.deb (--desempaquetar):
atratando de sobrescribir '/usr/bin/gdmflexiserver', que también está en el paquete gdm3
a3.4.1-9

En este caso, si cree que reemplazar este archivo no es un riesgo significativo para la estabilidad de su
sistema (que suele ser el caso), puede usar:forzar sobrescriturapara sobrescribir el archivo.

Si bien hay muchos disponibles,fuerza-*opciones, solo --forzar sobrescrituraes probable que se use
regularmente. Estas opciones existen para situaciones excepcionales, y es mejor dejarlas en paz tanto como
sea posible para respetar las reglas impuestas por el mecanismo de empaque. No lo olvide, estas reglas
aseguran la consistencia y estabilidad de su sistema.

Instalación de paquetes con APT

Aunque APT es mucho más avanzado quedpkgy hace mucho más detrás de escena, encontrará que
interactuar con los paquetes es bastante simple. Puede agregar un paquete al sistema con un simple
instalación aptapaquete. APT instalará automáticamente las dependencias necesarias:

# apt install kali-herramientas-gpu


Leyendo listas de paquetes... Listo
Construyendo árbol de dependencias Leyendo
información de estado... Listo
Se instalarán los siguientes paquetes adicionales:
truecrack olgausscrack
Se instalarán los siguientes paquetes NUEVOS: Necesita
obtener 2602 kB de archivos.
Después de esta operación, se utilizarán 2898 kB de espacio adicional en disco.
Obtenga: 1 http://kali.download/kali kali-rolling/main amd64 oclgausscrack amd64 1.3-1kali3
a[30,7 KB]
Obtenga: 2 http://kali.download/kali kali-rolling/main amd64 truecrack amd64 3.6+git20150326
a-0kali1 [2558 kB]

Capítulo 8 — Gestión de paquetes de Debian 183


Traducido del inglés al español - www.onlinedoctranslator.com

Obtenga: 3 http://kali.download/kali kali-rolling/main amd64 kali-tools-gpu amd64 2021.1.0


a[12,6 KB]
Obtuvo 2602 kB en 1 s (2645 kB/s)
Seleccionando el paquete no seleccionado previamente oclgausscrack.
(Leyendo base de datos... 108127 archivos y directorios actualmente instalados.) Preparando
para descomprimir.../oclgausscrack_1.3-1kali3_amd64.deb...
Desempaquetando oclgausscrack (1.3-1kali3) ... Seleccionando el
paquete truecrack previamente no seleccionado.
Preparándose para desempaquetar .../truecrack_3.6+git20150326-0kali1_amd64.deb ...
Desempaquetando truecrack (3.6+git20150326-0kali1) ...
Seleccionando el paquete kali-tools-gpu previamente no seleccionado.
Preparándose para descomprimir.../kali-tools-gpu_2021.1.0_amd64.deb...
Descomprimiendo kali-tools-gpu (2021.1.0)...
Configurando oclgausscrack (1.3-1kali3)... Configurando
truecrack (3.6+git20150326-0kali1)... Configurando kali-tools-gpu
(2021.1.0)... Activadores de procesamiento para man-db (2.9.3-
2) ... Disparadores de procesamiento para kali-menu (2020.4.0) ...

También puedes usarapt-get installpaquete, oinstalación de aptitudpaquete. Para paquete simple-


instalación de edad, hacen esencialmente lo mismo. Como verá más adelante, las diferencias son más significativas
para las actualizaciones o cuando la resolución de dependencias no tiene una solución perfecta.

Sifuentes.listaenumera varias distribuciones, puede especificar la versión del paquete coninstalación


apta paquete=versión, pero indicando su distribución de origen (kali-rolling o kali-dev) conapto
instalarpaquete/distribucióngeneralmente se prefiere.
# apt instalar zsh=5.7.1-1
# apt instalar zsh/kali-dev

Al igual que condpkg, también puede instruiraptopara instalar a la fuerza un paquete y sobrescribir archivos
con --forzar sobrescribir,pero la sintaxis es un poco extraña ya que está pasando el argumento adpkg:

# apt -o Dpkg::Options::=”--force-overwrite” install zsh

8.2.3. Actualizando Kali Linux

Como distribución continua, Kali Linux tiene capacidades de actualización espectaculares. En esta sección,
veremos qué tan simple es actualizar Kali y discutiremos estrategias para planificar sus actualizaciones.

Recomendamos actualizaciones periódicas, ya que instalarán las últimas actualizaciones de seguridad. Para actualizar,
usaractualización adecuadaseguido por cualquieraactualización apta,apt-obtener actualización, oactualización segura de aptitude.
Estos comandos buscan paquetes instalados que se pueden actualizar sin eliminar ningún paquete. En
otras palabras, el objetivo es garantizar la actualización menos intrusiva posible. Elapt-getdominio

184 Kali Linux revelado


la herramienta de línea es un poco más exigente queaptitudoaptoporque se negará a instalar paquetes que
no fueron instalados de antemano.

ElaptoLa herramienta generalmente seleccionará el número de versión más reciente.

Deciraptopara usar una distribución específica al buscar paquetes actualizados, debe usar el -to --
destino-lanzamientoopción, seguida del nombre de la distribución que desea (por ejemplo:
apt -t actualización continua de kali). Para evitar especificar esta opción cada vez que utiliceapto,
puedes añadirAPT::Default-Release ”kali-rolling”;en el archivo/etc/apt/apt.conf.d/local.
Para actualizaciones más importantes, como actualizaciones de versiones principales, useapt actualización completa.
Con esta instrucción,aptocompletará la actualización incluso si tiene que eliminar algunos paquetes obsoletos o
instalar nuevas dependencias. Este es también el comando que debe usar para las actualizaciones periódicas de su
sistema Kali Rolling. Es tan simple que apenas necesita explicación: la reputación de APT se basa en esta gran
funcionalidad.

A diferencia deaptoyaptitud,apt-getno sabe elactualización completadominio. En su lugar, debe


utilizarapt-get dist-upgrade(actualización de distribución), un comando bien conocido queaptoy
aptitudtambién se acepta por compatibilidad con versiones anteriores.

Tenga en cuenta lo importante Para anticipar algunos de estos problemas, puede instalar elapt-listchangespaquete, que
Cambios muestra información sobre posibles problemas al comienzo de la actualización de un paquete.
Esta información es compilada por los mantenedores del paquete y puesta en
/usr/compartir/doc/paquete/NOTICIAS.Debianarchivos para su beneficio. La lectura de estos archivos
(posiblemente a través deapt-listchanges) debería ayudarlo a evitar sorpresas desagradables.

Desde que se convirtió en una distribución continua, Kali puede recibir actualizaciones varias veces al día. Sin
embargo, esa podría no ser la mejor estrategia. Entonces, ¿con qué frecuencia debería actualizar Kali Linux? No hay
una regla estricta, pero hay algunas pautas que pueden ayudarlo. Deberías actualizar:

• Cuando tenga conocimiento de un problema de seguridad que se solucione en una actualización.

• Cuando sospecha que una versión actualizada podría corregir un error que está experimentando.

• Antes de reportar un error para asegurarse de que todavía está presente en la última versión que tiene
disponible.

• Con la frecuencia suficiente para obtener las correcciones de seguridad de las que no ha oído hablar.

También hay casos en los que es mejor no actualizar. Por ejemplo, puede que no sea una buena idea
actualizar:

• Si no puede permitirse ninguna rotura (por ejemplo, porque se desconecta o porque está a punto de dar una
presentación con su computadora); es mejor realizar la actualización más tarde, cuando tenga suficiente
tiempo para solucionar cualquier problema que se presente en el proceso.

• Si ocurrió un cambio disruptivo recientemente (o todavía está en curso) y teme que aún no se hayan
descubierto todos los problemas. Por ejemplo, cuando se lanza una nueva versión de GNOME, no todos

Capítulo 8 — Gestión de paquetes de Debian 185


los paquetes se actualizan al mismo tiempo y es probable que tenga una combinación de paquetes
con la versión anterior y la nueva. La mayoría de las veces esto está bien y ayuda a todos a lanzar esas
actualizaciones progresivamente, pero siempre hay excepciones y algunas aplicaciones pueden fallar
debido a tales discrepancias.

• Si elapt actualización completala salida le dice que eliminará los paquetes que considere importantes para
su trabajo. En esos casos, desea revisar la situación y tratar de entender por quéaptoquiere
eliminarlos. Tal vez los paquetes estén actualmente dañados y, en este caso, es posible que desee
esperar hasta que las versiones reparadas estén disponibles, o se han quedado obsoletos y debe
identificar sus reemplazos y luego continuar con la actualización completa de todos modos.

En general, le recomendamos que actualice Kali al menos una vez a la semana. Ciertamente, puede actualizar diariamente,
pero no tiene sentido hacerlo con más frecuencia que eso. Incluso si nuestras réplicas se sincronizan cuatro veces al día,
las actualizaciones provenientes de Debian generalmente solo llegan una vez al día.

8.2.4. Eliminación y purga de paquetes

Eliminar un paquete es incluso más sencillo que instalarlo. Echemos un vistazo a cómo eliminar
un paquete condpkgyapto.
Para eliminar un paquete condpkg, suministre el -ro --eliminaropción, seguida del nombre de un paquete. Sin embargo, esta
eliminación no es completa: todos los archivos de configuración, scripts de mantenimiento, archivos de registro (registros
del sistema), datos generados por el servicio (como el contenido de un directorio de servidor LDAP o el contenido de una
base de datos para un servidor SQL ), y la mayoría de los demás datos de usuario manejados por el paquete permanecen
intactos. La opción de eliminación facilita la desinstalación de un programa y su posterior reinstalación con la misma
configuración. Recuerde también que las dependencias no se eliminan. Considere este ejemplo:

# dpkg --remove kali-herramientas-gpu


(Leyendo base de datos... 108172 archivos y directorios actualmente instalados.) Eliminando
kali-tools-gpu (2021.1.0)...

También puede eliminar paquetes del sistema conapto eliminarpaquete. APT eliminará automáticamente los
paquetes que dependen del paquete que se está eliminando. Como eldpkgejemplo, los archivos de
configuración y los datos de usuario no se eliminarán.

A través de la adición de sufijos a los nombres de los paquetes, puede utilizarapto(oapt-getyaptitud) para
instalar ciertos paquetes y eliminar otros en la misma línea de comando. Con uninstalación apta
comando, agregue "-" a los nombres de los paquetes que desea eliminar. Con unapto eliminarcomando,
agregue "+" a los nombres de los paquetes que desea instalar.

El siguiente ejemplo muestra dos formas diferentes de instalarpaquete1y para quitarpaquete2.

# instalación aptapaquete1 paquete2-


[...]
# apto eliminarpaquete1+ paquete2

186 Kali Linux revelado


[...]

Esto también se puede usar para excluir paquetes que de otro modo se instalarían, por ejemplo, debido a un
recomienda (discutido más adelante en la sección8.4.1.3, “recomienda, sugiere,yMejoraCampos” [página 214]). En
general, el solucionador de dependencias utilizará esa información como una pista para buscar soluciones
alternativas.

Para eliminar todos los datos asociados con un paquete, puede purgar el paquete con eldpkg -P paquete
, opurga aptapaquetecomandos Esto eliminará por completo el paquete y todos los datos del usuario, y
en el caso deapto, también eliminará las dependencias.

# dpkg -r debian-cd
(Leyendo la base de datos... 333606 archivos y directorios actualmente instalados.) Eliminando
debian-cd (3.1.32)...
# dpkg -P debian-cd
(Leyendo la base de datos... 332950 archivos y directorios actualmente instalados.) Eliminando
debian-cd (3.1.32)...
Purgando archivos de configuración para debian-cd (3.1.32) ...

¡Advertencia! Dada la naturaleza definitiva de la purga, no la ejecute a la ligera. Perderá todo lo


relacionado con ese paquete.

8.2.5. Inspección de paquetes

A continuación, echemos un vistazo a algunas de las herramientas que se pueden usar para inspeccionar los paquetes de Debian.
aprenderemos dedpkg,apto, yapt-cachecomandos que se pueden usar para consultar y visualizar la base de datos del paquete.

consultandodpkgBase de datos e inspección de.debutantearchivos

Comenzaremos con variosdpkgopciones que consultan la base de datos interna de dpkg. Esta base de datos
reside en el sistema de archivos en/var/lib/dpkgy contiene varias secciones, incluidos los scripts de
configuración (/var/lib/dpkg/info), una lista de archivos que instaló el paquete (/var/lib/dpkg/info/*. lista), y el estado
de cada paquete que se ha instalado (/var/lib/dpkg/status). Puedes usardpkgpara interactuar con los archivos en
esta base de datos. Tenga en cuenta que la mayoría de las opciones están disponibles en una versión larga
(una o más palabras relevantes, precedidas por un guión doble) y una versión corta (una sola letra, a menudo
la inicial de una palabra de la versión larga, y precedida por un solo guión) . Esta convención es tan común
que es un estándar POSIX.

Primero, echemos un vistazo a...lista de archivospaquete(o -L),que enumera los archivos que fueron instalados por el
paquete especificado:

psdpkg -L base-contraseña
/.

Capítulo 8 — Gestión de paquetes de Debian 187


/usr
/usr/sbin
/usr/sbin/actualizar-
contraseña /usr/share
/usr/compartir/lintian
/usr/share/lintian/overrides /usr/share/lintian/
overrides/base-passwd /usr/share/doc-base

/usr/share/doc-base/usuarios-y-grupos /usr/
share/base-passwd
/usr/share/base-passwd/group.master /usr/
share/base-passwd/passwd.master /usr/share/
man
/usr/share/hombre/pl
/usr/share/man/pl/man8
/usr/share/man/pl/man8/update-passwd.8.gz [...]

/usr/compartir/doc
/usr/share/doc/base-passwd /usr/share/doc/base-passwd/users-
and-groups.txt.gz /usr/share/doc/base-passwd/changelog.gz

/usr/share/doc/base-passwd/copyright /usr/share/doc/base-
passwd/README /usr/share/doc/base-passwd/users-and-
groups.html

Próximo,dpkg --buscararchivo(o -S),encuentra cualquier paquete que contenga el archivo o la ruta pasada en el
argumento. Por ejemplo, para encontrar el paquete que contiene/bin/fecha:

psdpkg -S /bin/fecha
coreutils: /bin/fecha

Eldpkg --estadopaquete(o -s)El comando muestra los encabezados de un paquete instalado. Por ejemplo,
para buscar en los encabezados elcoreutilspaquete:

psdpkg -s coreutils
Paquete: coreutils
Estado: instalar ok instalado
Prioridad: requerido
Sección: útiles
Tamaño instalado: 13855
Mantenedor: Michael Stone < mstone@debian.org >
Arquitectura: amd64
Multi-Arco: exterior
Versión: 8.23-3
Reemplaza: mktemp, ruta real, tiempo de espera

188 Kali Linux revelado


Depende previamente: libacl1 (>= 2.2.51-8), libattr1 (>= 1:2.4.46-8), libc6 (>= 2.17),
alibselinux1 (>= 2.1.13) Conflictos:
tiempo de espera
Descripción: utilidades principales de GNU
Este paquete contiene las utilidades básicas de manipulación de archivos, shell y texto
que se espera que existan en todos los sistemas operativos. .

En concreto, este paquete incluye:


arco base64 nombre base gato chcon chgrp chmod chown chroot cksum comm cp csplit fecha
de corte dd df dir dircolors dirname du echo env expandir expr factor falso rebaño fmt doblar
grupos cabeza hostid id instalar unirse enlace ln nombre de registro ls md5sum mkdir mkfifo
mknod mktemp mv agradable nl nohup nproc numfmt od pegar pathchk pinky pr printenv printf
ptx pwd readlink realpath rm rmdir runcon sha*sum seq triturar dormir ordenar dividir
estadísticas stty suma sincronizar tac cola tee prueba tiempo de espera toque tr verdadero
truncar tsort tty uname desexpandir uniq desvincular usuarios vdir wc quién whoami sí

Página de inicio: http://gnu.org/software/coreutils

Eldpkg --lista(o -l)El comando muestra la lista de paquetes conocidos por el sistema y su estado de instalación.
También puedes usargrepen la salida para buscar ciertos campos, o proporcionar comodines (comob*)para
buscar paquetes que coincidan con una cadena de búsqueda parcial particular. Esto mostrará un resumen
de los paquetes. Por ejemplo, para mostrar una lista resumida de todos los paquetes que comienzan con 'b':

psdpkg -l 'b*'
Deseado=Desconocido/Instalar/Eliminar/Purgar/Retener
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend |/ Err?=(ninguno)/Reinst-
required (Estado,Err: mayúsculas=malo)
||/ Nombre Versión Descripción de la arquitectura
+ + + - =========================-==================== ======-============-===================== ii
backdoor-factory 3.4.2+dfsg -4 todos Parche binarios ELF y win32/64 de 32/64 bits con shellcode
respaldoninja
Naciones Unidas <ninguno> <ninguno> (sin descripción disponible) (sin
Naciones Unidas
copia de seguridad pc <ninguno> <ninguno> descripción disponible) (sin
balsa
Naciones Unidas <ninguno> <ninguno> descripción disponible) (sin
base
Naciones Unidas <ninguno> <ninguno> descripción disponible)
[...]

Eldpkg --contenidoarchivo.deb(o -C)El comando enumera todos los archivos en un determinado.debutantearchivo:

psdpkg -c /var/cache/apt/archives/gpg_2.2.20-1_amd64.deb drwxr-xr-x


raíz/raíz 0 2020-03-23 15:05 ./ 0 2020-03-23
drwxr-xr-x raíz/raíz 15:05 ./usr/ 0 2020-03-23 15:05 ./usr/bin/
drwxr-xr-x raíz/raíz 1062832 2020-03-23 15:05 ./ usuario/bin/
- rwxr-xr-x raíz/raíz gpg
drwxr-xr-x raíz/raíz 0 2020-03-23 15:05 ./usr/share/ 0 2020-03-23
drwxr-xr-x raíz/raíz 15:05 ./usr/share/doc/ 0 2020-03-23 15:05 ./usr/
drwxr-xr-x raíz/raíz share/doc/gpg /
- rw-r--r-- raíz/raíz 677 2020-03-23 14:45 ./usr/share/doc/gpg/NEWS.Debian.gz 24353 2020-03-23
- rw-r--r-- raíz/raíz 15:05 ./usr/share/doc/gpg/changelog.Debian.gz 384091 2020 -03-20 11:38 ./usr/
- rw-r--r-- raíz/raíz share/doc/gpg/changelog.gz

Capítulo 8 — Gestión de paquetes de Debian 189


- rw-r--r-- raíz/raíz 10555 2020-03-23 15:04 ./usr/share/doc/gpg/copyright
drwxr-xr-x raíz/raíz 0 2020-03-23 15:05 ./usr/share/man/ 0 2020-03-23 15:05 ./
drwxr-xr-x raíz/raíz usr/share/man/man1/ 46139 2020-03-23 15:05 ./usr/share /
- rw-r--r-- raíz/raíz hombre/hombre1/gpg.1.gz

Eldpkg--infoarchivo.deb(o -I)El comando muestra los encabezados de los especificados..debutantearchivo:

psdpkg -I /var/cache/apt/archives/gpg_2.2.20-1_amd64.deb nuevo


paquete Debian, versión 2.0.
tamaño 894224 bytes: archivo de control=1160 bytes.
1219 bytes, 25 lineas control
374 bytes, 6 lineas sumas md5
Paquete: gpg
Fuente: gnupg2
Versión: 2.2.20-1
Arquitectura: amd64
Mantenedor: Mantenedores de Debian GnuPG < pkg-gnupg-maint@lists.alioth.debian.org > Tamaño
instalado: 1505
Depende: gpgconf (= 2.2.20-1), libassuan0 (>= 2.5.0), libbz2-1.0, libc6 (>= 2.25),
alibgcrypt20 (>= 1.8.0), libgpg-error0 (>= 1.35), libreadline8 (>= 6.0),
alibsqlite3-0 (>= 3.7.15), zlib1g (>= 1:1.1.4) Recomienda: gnupg
(= 2.2.20-1)
Rompe: gnupg (<< 2.1.21-4)
Reemplaza: gnupg (<< 2.1.21-4)
Sección: utils
Prioridad: opcional
Multi-Arco: exterior
Página de inicio: https://www.gnupg.org/
Descripción: GNU Privacy Guard: operaciones de clave pública minimalistas GnuPG es la
herramienta de GNU para la comunicación segura y el almacenamiento de datos.
Se puede utilizar para cifrar datos y crear firmas digitales. Incluye una función avanzada
de administración de claves y cumple con el estándar de Internet OpenPGP propuesto,
como se describe en RFC4880. [...]

También puedes usardpkgpara comparar los números de versión del paquete con --comparar-versionesopción, que
a menudo es llamada por programas externos, incluidos los scripts de configuración ejecutados pordpkgsí mismo.
Esta opción requiere tres parámetros: un número de versión, un operador de comparación y un segundo número
de versión. Los diferentes operadores posibles son:es (estrictamente menor que),le (Menos que o igual a),
equivalente (igual),no (no es igual),edad (mayor o igual que), ygt (estrictamente mayor que). Si la comparación es
correcta,dpkgdevuelve 0 (éxito); si no, da un valor de retorno distinto de cero (lo que indica una falla). Considere
estas comparaciones:

psdpkg --compare-versiones 1.2-3 gt 1.1-4 pseco $?

190 Kali Linux revelado


psdpkg --comparar-versiones 1.2-3 lt 1.1-4 pseco $?

1
psdpkg --compare-versiones 2.6.0pre3-1 lt 2.6.0-1 pseco $?

Nótese el inesperado fracaso de la última comparación: paradpkg, la cuerda "anterior” (generalmente denota un
prelanzamiento) no tiene un significado particular, ydpkgsimplemente lo interpreta como una cadena, en cuyo caso
”2.6.0pre3-1”es alfabéticamente mayor que ”2.6.0-1”.Cuando queremos que el número de versión de un paquete
indique que es una versión preliminar, usamos el carácter de tilde, “~”:

psdpkg --compare-versiones 2.6.0~pre3-1 lt 2.6.0-1 pseco $?

Consultar la base de datos de paquetes disponibles conapt-cacheyapto

Elapt-cacheEl comando puede mostrar gran parte de la información almacenada en la base de datos interna de APT.
Esta información es una especie de caché, ya que se recopila de las diferentes fuentes enumeradas en el
fuentes.listaarchivo. Esto sucede durante elactualización adecuadaoperación.

VOCABULARIO Un caché es un sistema de almacenamiento temporal que se utiliza para acelerar el acceso frecuente a los datos

Cache cuando el método de acceso habitual es costoso (en cuanto al rendimiento). Este concepto se puede aplicar en
numerosas situaciones ya diferentes escalas, desde el núcleo de los microprocesadores hasta los sistemas de
almacenamiento de alta gama.

En el caso de APT, la referenciaPaquetesLos archivos son los que se encuentran en las réplicas de
Debian. Dicho esto, sería muy ineficaz impulsar cada búsqueda a través de las bases de datos de
paquetes en línea. Es por eso que APT almacena una copia de esos archivos (en/var/lib/apt/listas/) y las
búsquedas se realizan dentro de esos archivos locales. Similarmente,/var/caché/apt/archivos/
contiene una copia en caché de los paquetes ya descargados para evitar descargarlos
nuevamente si necesita reinstalarlos.

Para evitar un uso excesivo del disco cuando actualice con frecuencia, debe revisar
regularmente los/var/caché/apt/archivos/directorio. Se pueden usar dos comandos para
esto:apto limpio(oapt-limpiar) vacía completamente el directorio;limpieza automática apta
(apt-get limpieza automática) solo elimina paquetes que ya no se pueden descargar porque han
desaparecido del espejo y, por lo tanto, son inútiles. Tenga en cuenta que el parámetro de
configuraciónAPT::Instalación limpiase puede utilizar para evitar la eliminación de.debutantearchivos que
están instalados actualmente. Además, tenga en cuenta queaptoelimina los archivos descargados una
vez que se han instalado, por lo que esto importa principalmente cuando usa otras herramientas.

Elapt-cacheEl comando puede realizar búsquedas de paquetes basadas en palabras clave conbúsqueda de apt-cache
palabra clave. También puede mostrar los encabezados de las versiones disponibles del paquete conespectáculo apt-
caché paquete. Este comando proporciona la descripción del paquete, sus dependencias y el nombre de su

Capítulo 8 — Gestión de paquetes de Debian 191


mantenedor Esta característica es particularmente útil para determinar los paquetes que se instalan a través de metapaquetes,
comokali-herramientas-inalámbricas,kali-herramientas-web, ykali-herramientas-gpu. Tenga en cuenta quebúsqueda adecuada,
espectáculo apto,búsqueda de aptitud, yespectáculo de aptitudtrabajar de la misma manera.

Una alternativa:axi-caché búsqueda de apt-cachees una herramienta muy rudimentaria, básicamente implementandogrepen las
descripciones del paquete. A menudo devuelve demasiados resultados o ninguno en absoluto, cuando se
incluyen demasiadas palabras clave.

búsqueda de axi-cachétérmino, por otro lado, proporciona mejores resultados, ordenados por
relevancia. utiliza elXapianmotor de búsqueda y es parte delapt-xapian-indexpaquete, que
indexa toda la información del paquete (y más, como el.escritorioarchivos de todos los paquetes
de Debian). Conoce las etiquetas y devuelve resultados en cuestión de milisegundos.

psgráfico forense de búsqueda de axi-cache 7


resultados encontrados.
Resultados 1-7:
100% autopsia: interfaz gráfica para SleuthKit
94% forensics-all-gui - Entorno forense de Debian - GUI
acomponentes (metapaquete)
87% forensics-extra-gui - Entorno forense - GUI adicional
acomponentes (metapaquete)
86% forensics-colorize: muestra las diferencias entre los archivos usando
agráficos en color
44% gpart - Adivina la tabla de particiones de disco de PC, encuentra perdido
aparticiones
39% testdisk - Escáner de partición y herramienta de recuperación de disco, y
aHerramienta de recuperación de archivos PhotoRec
8% texlive-publishers - TeX Live: estilos editoriales, tesis,
aetc.
Más términos: herramientas expertos autopsia imagen pentesters éticos
apiratas informáticos

Más etiquetas: admin::forensics security::forensics admin::


ainterfaz de recuperación::administrador de línea de comandos::ámbito de arranque::
arol de utilidad::programa

Algunas funciones se utilizan con menos frecuencia. Por ejemplo,política de apt-cachemuestra las prioridades
de las fuentes de los paquetes, así como las de los paquetes individuales. Otro ejemplo esapt-cache dumpavail,
que muestra los encabezados de todas las versiones disponibles de todos los paquetes.apt-cache pkgnames
muestra la lista de todos los paquetes que aparecen al menos una vez en el caché.

8.2.6. Solución de problemas

Tarde o temprano, se encontrará con un problema al interactuar con un paquete. En esta sección, describiremos
algunos pasos básicos para la solución de problemas que puede seguir y proporcionaremos algunas herramientas
que lo acercarán a una posible solución.

192 Kali Linux revelado


Manejo de problemas después de una actualización

A pesar de los mejores esfuerzos de los mantenedores de Debian o Kali, una actualización del sistema no siempre es tan sencilla
como esperamos. Las nuevas versiones de software pueden ser incompatibles con las anteriores (por ejemplo, su comportamiento
predeterminado o su formato de datos pueden haber cambiado), o los errores pueden pasar desapercibidos a pesar de las pruebas
realizadas por los mantenedores de paquetes y los usuarios de Debian Unstable.

Aprovechando los informes de erroresEs posible que a veces descubra que una nueva versión del software no
funciona en absoluto. Esto generalmente sucede si la aplicación no es particularmente popular y no se ha probado
lo suficiente. Lo primero que hay que hacer es echar un vistazo a laRastreador de errores Kali3y en elSistema de
seguimiento de errores de Debian4enhttps://bugs.debian.org/paquete,y verifique si el problema ya se ha
informado. Si no es así, debe informarlo usted mismo (consulte la sección6.3, “Presentar un buen informe de error
” [página 134] para obtener instrucciones detalladas). Si ya se conoce, el informe de error y los mensajes asociados
suelen ser una excelente fuente de información relacionada con el error. En algunos casos, ya existe un parche y
está disponible en el propio informe de errores; luego puede volver a compilar una versión fija del paquete roto
localmente (consulte la sección9.1, “Modificación de paquetes de Kali” [página 228]). En otros casos, los usuarios
pueden haber encontrado una solución al problema y compartido sus ideas al respecto en sus respuestas al
informe; esas instrucciones pueden ayudarlo a solucionar el problema hasta que se publique una solución o un
parche. En el mejor de los casos, es posible que el paquete ya se haya reparado y puede encontrar detalles en el
informe de errores.

Bajar de categoría a una versión de trabajoCuando el problema es una regresión clara (donde funcionaba la
versión anterior), puede intentar degradar el paquete. En este caso, necesitará una copia de la versión anterior. Si
tiene acceso a la versión anterior en uno de los repositorios configurados en APT, puede usar un simple comando
de una línea para degradar (consulte la sección8.2.2.2, “Instalación de paquetes con APT” [página 183]). Pero con el
lanzamiento continuo de Kali, por lo general solo encontrará una versión única de cada paquete en un momento
dado.

Todavía puedes intentar encontrar el viejo.debutantearchivo e instalarlo manualmente condpkg. Viejo.debutanteLos archivos se pueden
encontrar en varios lugares:

• En el caché de APT en/var/caché/apt/archivos/

• En elpiscinadirectorio en su espejo Kali habitual (los paquetes eliminados y obsoletos se mantienen durante tres o
cuatro días para evitar problemas con los usuarios que no tienen los últimos índices de paquetes)

• Enhttps://snapshot.debian.org/si el paquete afectado fue proporcionado por Debian y no por Kali; este
servicio guarda versiones históricas de todos los paquetes de Debian

3https://bugs.kali.org/
4https://bugs.debian.org/

Capítulo 8 — Gestión de paquetes de Debian 193


Tratar con secuencias de comandos BrokenMaintainerA veces, la actualización se interrumpe porque uno de los
scripts de mantenimiento del paquete falla (por lo general, es elpostinstancia). En esos casos, puede intentar
diagnosticar el problema y posiblemente solucionarlo editando el script problemático.

Aquí nos basamos en el hecho de que los scripts de mantenimiento se almacenan en/var/lib/dpkg/info/y que podemos
revisarlos y modificarlos.

Dado que los scripts de mantenimiento suelen ser simples scripts de shell, es posible agregar unconjunto -xlínea justo
después de la línea shebang y dispóngalos para que se vuelvan a ejecutar (condpkg --configure -aparapostinstancia) para ver con
precisión qué está pasando y dónde está fallando. Esta salida también puede complementar muy bien cualquier informe
de error que pueda presentar.

Con este conocimiento recién adquirido, puede solucionar el problema subyacente o transformar el
comando fallido en uno que funcione (por ejemplo, agregando||verdaderoal final de la línea).

Tenga en cuenta que este consejo no funciona para una fallapreinstanciaya que ese script se ejecuta incluso antes de
que se instale el paquete, por lo que aún no está en su ubicación final. Funciona paracorreo postalyprematuro
aunque deberá ejecutar una eliminación de paquete (actualizar respectivamente) para activarlos.

EldpkgArchivo de registro

Eldpkgherramienta mantiene un registro de todas sus acciones en/var/log/dpkg.log. Este registro es extremadamente
detallado, ya que detalla todas las etapas de cada paquete. Además de ofrecer una forma de rastrear el
comportamiento de dpkg, ayuda a mantener un historial del desarrollo del sistema: puede encontrar el momento
exacto en que se instaló o actualizó cada paquete, y esta información puede ser extremadamente útil para
comprender un reciente cambio de comportamiento. Además, con todas las versiones registradas, es fácil cotejar la
información con elregistro de cambios.Debian.gzpara paquetes en cuestión, o incluso con informes de errores en línea.

# cola /var/log/dpkg.log
2021-01-06 23:16:37 estado instalado kali-tools-gpu:amd64 2021.1.0 2021-01-06 23:16:37
eliminar kali-tools-gpu:amd64 2021.1.0 <ninguno> 2021-01- 06 23:16:37 estado medio
configurado kali-tools-gpu:amd64 2021.1.0 2021-01-06 23:16:37 estado medio instalado kali-
tools-gpu:amd64 2021.1.0 2021-01-06 23 :16:37 estado archivos de configuración kali-tools-
gpu:amd64 2021.1.0 2021-01-06 23:16:37 estado no instalado kali-tools-gpu:amd64 <ninguno>

Reinstalación de paquetes conapto --reinstalaryaptitude reinstalar

Cuando daña su sistema por error eliminando o modificando ciertos archivos, la forma más fácil de
restaurarlos es reinstalar el paquete afectado. Desafortunadamente, el sistema de empaquetado
encuentra que el paquete ya está instalado y amablemente se niega a reinstalarlo. Para evitar esto,
use el --reinstalar opción de laaptoyapt-getcomandos El siguiente comando reinstalasufijoincluso si ya
está presente:

194 Kali Linux revelado


# apt --reinstall instalar postfijo

Elaptitudlínea de comando es ligeramente diferente pero logra el mismo resultado conaptitude


reinstalar postfix. EldpkgEl comando no impide la reinstalación, pero rara vez se llama directamente.

No utiliceapto Usandoapto --reinstalarrestaurar paquetes modificados durante un ataque ciertamente no


- - reinstalarpara recuperar recuperará el sistema como estaba.
de un ataque Después de un ataque, no puedes confiar en nada:dpkgyaptopodría haber sido reemplazado
por programas maliciosos, no reinstalando los archivos como le gustaría. El atacante también
podría haber alterado o creado archivos fuera del control dedpkg.

Recuerde que puede especificar una distribución específica conaptotambién, lo que significa que puede retroceder
a una versión anterior de un paquete (si, por ejemplo, sabe que funciona bien), siempre que todavía esté
disponible en una de las fuentes a las que hace referencia elfuentes.listaarchivo:

# apt instalar w3af/kali-dev

Aprovechando --force-* para reparar dependencias rotas

Si no tiene cuidado, el uso de un --fuerza-*opción o algún otro mal funcionamiento puede conducir a un sistema en
el que la familia de comandos APT se negará a funcionar. En efecto, algunas de estas opciones permiten la
instalación de un paquete cuando no se cumple una dependencia o cuando hay un conflicto. El resultado es un
sistema inconsistente desde el punto de vista de las dependencias, y los comandos APT se negarán a ejecutar
cualquier acción, excepto aquellas que devolverán el sistema a un estado consistente (esto a menudo consiste en
instalar la dependencia faltante o eliminar un paquete problemático). ). Esto suele dar como resultado un mensaje
como este, obtenido después de instalar una nueva versión deescritoriomientras ignora su dependencia de una
versión más nueva delibc6:

# apt actualización completa

[...]
Es posible que desee ejecutar 'apt-get -f install' para corregirlos. Los siguientes
paquetes tienen dependencias no satisfechas:
rdesktop: Depende: libc6 (>= 2.14) pero 2.3.6.ds1-13etch7 está instalado E: Dependencias
no satisfechas. Intenta usar -f.

Si es un administrador valiente que está seguro de la corrección de su análisis, puede optar


por ignorar una dependencia o conflicto y utilizar el correspondiente...fuerza-*opción. En
este caso, si desea poder seguir utilizandoaptooaptitud, debes editar/var/lib/dpkg/status
para eliminar o modificar la dependencia, o conflicto, que ha elegido anular.
Esta manipulación es un truco feo y nunca debe usarse, excepto en el caso más extremo de necesidad. Con
bastante frecuencia, una solución más adecuada es volver a compilar el paquete que está causando

Capítulo 8 — Gestión de paquetes de Debian 195


el problema o use una nueva versión (posiblemente corregida) de un repositorio que proporcione backports (backports
son versiones más nuevas especialmente recompiladas para funcionar en un entorno más antiguo).

8.2.7. Frente termina:aptitudysináptico

APT es un programa en C++ cuyo código reside principalmente en elpaquete libaptbiblioteca compartida. Gracias a esta
biblioteca compartida, se abrió la puerta a la creación de interfaces de usuario (front-end), ya que el código de la biblioteca
compartida se puede reutilizar fácilmente. Históricamente,apt-getsolo fue diseñado como un front-end de prueba para
paquete libaptpero su éxito tiende a oscurecer este hecho.

Con el tiempo, a pesar de la popularidad de las interfaces de línea de comandos comoaptoyapt-get, se


desarrollaron varias interfaces gráficas. Echaremos un vistazo a dos de esas interfaces en esta sección:
aptitudysináptico.

Aptitud

Aptitud, mostrada en la figura8.1, “Elaptitudgerente de empaquetación” [página 196], es un programa interactivo


que se puede utilizar en modo semigráfico en la consola. Puede navegar por la lista de paquetes instalados y
disponibles, buscar toda la información y seleccionar paquetes para instalar o eliminar. El programa está diseñado
específicamente para ser utilizado por administradores, por lo que su comportamiento predeterminado es mucho
más inteligente que el de APT y su interfaz es mucho más fácil de entender.

Figura 8.1Elaptitudgerente de empaquetación

196 Kali Linux revelado


cuando corresaptitud, se le muestra una lista de paquetes ordenados por estado (instalado, no instalado o instalado
pero no disponible en los espejos), mientras que otras secciones muestran tareas, paquetes virtuales y nuevos
paquetes que aparecieron recientemente en los espejos. Para facilitar la navegación temática, hay disponibles otras
vistas.

En todos los casos,aptitudmuestra una lista que combina categorías y paquetes en la pantalla. Las categorías se
organizan a través de una estructura de árbol, cuyas ramas se pueden desplegar o plegar respectivamente con las
teclas Enter, [, y ]. La tecla + debe usarse para marcar un paquete para su instalación, - para marcarlo para su
eliminación y _ para purgarlo. Tenga en cuenta que estas claves también se pueden utilizar para categorías, en
cuyo caso las acciones correspondientes se aplicarán a todos los paquetes de la categoría. La tecla u actualiza las
listas de paquetes disponibles y Shift+u prepara una actualización global del sistema. La tecla g cambia a una vista
de resumen de los cambios solicitados (y si vuelve a escribir g se aplicarán los cambios), y q sale de la vista actual. Si
estás en la vista inicial, esta se cerraráaptitud.

aptitudDocumentación de Esta sección no cubre los detalles más finos del usoaptitud, más bien se enfoca en brindarle un
kit de supervivencia de usuario.aptitudestá bastante bien documentado y le recomendamos
que utilice su manual completo disponible en elaptitude-doc-espaquete (ver/usuario/
compartir/doc/aptitude/html/en/index.html) o en
mihttps://www.debian.org/doc/manuals/aptitude/
.

Para buscar un paquete, puede escribir / seguido de un patrón de búsqueda. Este patrón coincide con el
nombre del paquete, pero también se puede aplicar a la descripción (si va precedida de ~d),a la sección (con
~s),oa otras características detalladas en la documentación. Los mismos patrones pueden filtrar la lista de
paquetes mostrados: escriba la tecla l (como enlímite) e ingrese el patrón.

Manejando elbandera automáticade paquetes Debian (ver sección8.3.4, “Seguimiento de paquetes


instalados automáticamente” [página 205]) es una brisa conaptitud. Es posible navegar por la lista de
paquetes instalados y marcar paquetes como automáticos con Shift+m o puede eliminar la marca con la
tecla m. Los paquetes automáticos se muestran con una “A” en la lista de paquetes. Esta característica
también ofrece una forma sencilla de visualizar los paquetes en uso en una máquina, sin todas las
bibliotecas y dependencias que realmente no le interesan. El patrón relacionado que se puede usar con l
(para activar el modo de filtro) es ~yo!~M.Especifica que solo desea ver los paquetes instalados (~i)no
marcado como automático (!~METRO).

Usandoaptituden la interfaz Se puede acceder a la mayoría de las funciones de Aptitude a través de la interfaz interactiva, así como a través de la
de línea de comandos línea de comandos. Estas líneas de comando les resultarán familiares a los usuarios habituales deapt-get
yapt-cache.
Las características avanzadas deaptitudtambién están disponibles en la línea de comandos. Puede
utilizar los mismos patrones de búsqueda de paquetes que en la versión interactiva. Por ejemplo, si
desea limpiar la lista de paquetes instalados manualmente y sabe que ninguno de los programas
instalados localmente requiere bibliotecas o módulos Perl en particular, puede marcar los paquetes
correspondientes como automáticos con un solo comando:

Capítulo 8 — Gestión de paquetes de Debian 197


# aptitude markauto '~slibs|~sperl'

Aquí, puede ver claramente el poder del sistema de patrones de búsqueda deaptitud, que
permite la selección instantánea de todos los paquetes en elliberacionesyperlassecciones.

Tenga cuidado, si algunos paquetes están marcados como automáticos y si ningún otro paquete depende de
ellos, se eliminarán inmediatamente (después de una solicitud de confirmación).

Gestión de recomendaciones, sugerencias y tareasOtra característica interesante de


aptitudes el hecho de que respeta las recomendaciones entre paquetes al tiempo que ofrece a los usuarios la
opción de no instalarlos caso por caso. por ejemplo, elgnomopaquete recomiendagdebi(entre otros). Cuando
selecciona el primero para la instalación, el último también se seleccionará (y se marcará como automático si
aún no está instalado en el sistema). Escribir g hará que sea obvio:gdebiaparece en la pantalla de resumen
de acciones pendientes en la lista de paquetes instalados automáticamente para satisfacer dependencias.
Sin embargo, puede decidir no instalarlo deseleccionándolo antes de confirmar las operaciones.

Tenga en cuenta que esta función de seguimiento de recomendaciones no se aplica a las actualizaciones. Por ejemplo, si
una nueva versión degnomorecomienda un paquete que no recomendaba anteriormente, el paquete no se marcará para
la instalación. Sin embargo, aparecerá en la pantalla de actualización para que el administrador aún pueda seleccionarlo
para la instalación.

Las sugerencias entre paquetes también se tienen en cuenta, pero de forma adaptada a su estado
específico. Por ejemplo, desdegnomosugieredia-gnomo, este último se mostrará en la pantalla de
resumen de acciones pendientes (en la sección de paquetes sugeridos por otros paquetes). De esta
forma queda visible y el administrador puede decidir si tiene en cuenta o no la sugerencia. Dado que
es solo una sugerencia y no una dependencia o recomendación, el paquete no se seleccionará
automáticamente, su selección requiere una intervención manual (por lo tanto, el paquete no se
marcará como automático).

Con el mismo espíritu, recuerda queaptitudhace un uso inteligente del concepto de tareas. Dado que las tareas se muestran
como categorías en las pantallas de las listas de paquetes, puede seleccionar una tarea completa para su instalación o
eliminación o explorar la lista de paquetes incluidos en la tarea para seleccionar un subconjunto más pequeño.

Mejores algoritmos de resoluciónPara concluir esta sección, tengamos en cuenta queaptitudtiene algoritmos más
elaborados en comparación conaptocuando se trata de resolver situaciones difíciles. Cuando se solicita un conjunto
de acciones y cuando estas acciones combinadas conducirían a un sistema incoherente,aptitud
evalúa varios escenarios posibles y los presenta en orden de importancia decreciente. Sin embargo, estos
algoritmos no son infalibles. Afortunadamente, siempre existe la posibilidad de seleccionar manualmente las
acciones a realizar. Cuando las acciones actualmente seleccionadas generan contradicciones, la parte superior de la
pantalla indica una cantidad de paquetes rotos (puede navegar directamente a esos paquetes

198 Kali Linux revelado


pulsando b). Luego puede construir manualmente una solución. En particular, puede acceder a las
diferentes versiones disponibles seleccionando el paquete con Enter. Si la selección de una de estas
versiones soluciona el problema, no debe dudar en utilizar la función. Cuando el número de paquetes rotos
llega a cero, puede ir de forma segura a la pantalla de resumen de las acciones pendientes para realizar una
última comprobación antes de aplicarlas.

Registro de Aptitud Comodpkg,aptitudmantiene un rastro de las acciones ejecutadas en su archivo de registro (/var/log/aptitud). Sin
embargo, dado que ambos comandos funcionan en un nivel muy diferente, no puede encontrar la misma
información en sus respectivos archivos de registro. Mientrasdpkgregistra todas las operaciones ejecutadas en
paquetes individuales paso a paso,aptitudofrece una visión más amplia de las operaciones de alto nivel, como
una actualización de todo el sistema.

Tenga cuidado, este archivo de registro solo contiene un resumen de las operaciones realizadas por
aptitud. Si otros front-ends (o inclusodpkgsí mismo) se usan ocasionalmente, entoncesaptitudEl registro
de solo contendrá una vista parcial de las operaciones, por lo que no puede confiar en él para crear
un historial confiable del sistema.

sináptico

Synaptic es un administrador de paquetes gráficos que presenta una interfaz gráfica limpia y eficiente (que
se muestra en la Figura8.2, “sinápticoGerente de empaquetación” [página 200]) basado en GTK+. Sus
numerosos filtros listos para usar brindan acceso rápido a paquetes nuevos disponibles, paquetes
instalados, paquetes actualizables, paquetes obsoletos, etc. Si navega por estas listas, puede seleccionar las
operaciones a realizar en los paquetes (instalar, actualizar, eliminar, purgar); estas operaciones no se
realizan inmediatamente, sino que se incluyen en una lista de tareas. Un solo clic en un botón luego valida
las operaciones y se realizan de una sola vez.

Capítulo 8 — Gestión de paquetes de Debian 199


Figura 8.2sinápticoGerente de empaquetación

8.3. Configuración y uso avanzados de APT

Ahora es el momento de sumergirse en algunos temas más avanzados. Primero, veremos la


configuración avanzada de APT, que le permitirá establecer opciones más permanentes que se
aplicarán a las herramientas de APT. A continuación, mostraremos cómo se pueden manipular las
prioridades de los paquetes, lo que abre la puerta a mejoras y mejoras personalizadas y
perfeccionadas. También le mostraremos cómo manejar múltiples distribuciones para que pueda
comenzar a experimentar con paquetes provenientes de otras distribuciones. A continuación, veremos
cómo rastrear paquetes instalados automáticamente, una capacidad que le permite administrar
paquetes que se instalan a través de dependencias. También explicaremos cómo la compatibilidad con
múltiples arquitecturas abre la puerta para ejecutar paquetes creados para varias arquitecturas de
hardware. Por último, pero no menos importante,

8.3.1. Configuración de APT

Antes de sumergirnos en la configuración de APT, tomemos un momento para analizar el mecanismo de


configuración de un sistema basado en Debian. Históricamente, la configuración se manejaba mediante archivos de
configuración dedicados. Sin embargo, en los sistemas Linux modernos como Debian y Kali, los directorios de
configuración con el.dsufijo son cada vez más utilizados. Cada directorio representa una configuración.

200 Kali Linux revelado


archivo que se divide en varios archivos. En este sentido, todos los archivos en/etc/apt/apt.conf.d/son instrucciones para la
configuración de APT. APT procesa los archivos en orden alfabético, de modo que los archivos posteriores puedan
modificar los elementos de configuración definidos en los archivos anteriores.

Esta estructura brinda cierta flexibilidad a los administradores y mantenedores de paquetes, lo que les permite
realizar cambios en la configuración del software mediante la adición de archivos sin tener que cambiar un archivo
existente. Esto es especialmente útil para los mantenedores de paquetes porque pueden usar este enfoque para
adaptar la configuración de otro software para garantizar que coexista perfectamente con el suyo, sin romper la
política de Debian que prohíbe explícitamente modificar los archivos de configuración de otros paquetes. debido a
la.dmecanismo de configuración, no tiene que seguir manualmente las instrucciones de configuración de varios
paquetes que normalmente se encuentran en el paquete/usr/compartir/doc/paquete
/README.Debianarchivo, ya que el instalador puede incluir archivos de configuración.

Cuidado con la configuración Si bien APT tiene soporte nativo de su/etc/apt/apt.conf.ddirectorio, esto no es siempre el caso.
Archivos generados a partir de.d Para algunas aplicaciones (como exim, por ejemplo), el.dEl directorio es una adición específica
directorios de Debian que se usa como entrada para generar dinámicamente el archivo de configuración
canónica que usa la aplicación. En esos casos, los paquetes proporcionan un comando
"actualizar-*" (por ejemplo:actualizar-exim4.conf) que concatenará los archivos del
. ddirectorio y sobrescriba el archivo de configuración principal.

En esos casos, no debe editar manualmente el archivo de configuración principal ya que sus
cambios se perderán en la próxima ejecución delactualizar-*comando, y tampoco debe olvidar
ejecutar el comando anterior después de haber editado un archivo fuera del.ddirectorio (o sus
cambios no serán utilizados).

Armado con una comprensión de la.dmecanismo de configuración, hablemos de cómo puede aprovecharlo para
configurar APT. Como hemos discutido, puede alterar el comportamiento de APT a través de argumentos de línea
de comandos paradpkgcomo este ejemplo, que realiza una instalación de sobrescritura forzada de
zsh:

# apt -o Dpkg::Options::=”--force-overwrite” install zsh

Obviamente, esto es muy engorroso, especialmente si usa las opciones con frecuencia, pero también puede
usar el.destructura de configuración de directorios para configurar ciertos aspectos de APT agregando
directivas a un archivo en el/etc/apt/apt.conf.d/directorio. Por ejemplo, esta (y cualquier otra) directiva se puede
agregar fácilmente a un archivo en/etc/apt/apt.conf.d/. El nombre de este archivo es algo arbitrario, pero una
convención común es usarlocalo99local:

psgato /etc/apt/apt.conf.d/99local
Dpkg::Opciones {
”--forzar-sobrescribir”;
}

Hay muchas otras opciones de configuración útiles y ciertamente no podemos cubrirlas todas, pero una que
mencionaremos involucra la conectividad de red. Por ejemplo, si solo puede acceder a la web

Capítulo 8 — Gestión de paquetes de Debian 201


a través de un proxy, agregue una línea comoAdquirir::http::proxy ”http://tuproxy:3128”.Para un proxy FTP,
useAdquirir::ftp::proxy ”ftp://tuproxy”.

Para descubrir más opciones de configuración, lea elapt.conf(5)página del manual con elman apt.confcomando (para
más detalles sobre las páginas del manual, consulte la sección6.1.1, “Páginas manuales” [página 128]).

8.3.2. Gestión de prioridades de paquetes

Uno de los aspectos más importantes en la configuración de APT es la gestión de las prioridades
asociadas a cada fuente de paquetes. Por ejemplo, es posible que desee ampliar su sistema Kali Linux
con uno o dos paquetes más nuevos de Debian Unstable o Debian Experimental. Es posible asignar
una prioridad a cada paquete disponible (un mismo paquete puede tener varias prioridades
dependiendo de su versión o de la distribución que lo proporcione). Estas prioridades influirán en el
comportamiento de APT: para cada paquete, siempre seleccionará la versión con mayor prioridad
(excepto si esta versión es más antigua que la instalada y su prioridad es inferior a 1000).

APT define varias prioridades predeterminadas. Cada versión del paquete instalado tiene una prioridad de 100. Una versión
no instalada tiene una prioridad de 500 de forma predeterminada, pero puede saltar a 990 si es parte de la versión de
destino (definida con -topción de línea de comandos o laAPT::Versión predeterminadadirectiva de configuración).

Puede modificar las prioridades agregando entradas en el/etc/apto/preferenciasarchivo con los nombres
de los paquetes afectados, su versión, su origen y su nueva prioridad.

APT nunca instalará una versión anterior de un paquete (es decir, un paquete cuyo número de versión sea
inferior al del paquete actualmente instalado), excepto cuando su prioridad sea superior a 1000. APT siempre
instalará el paquete de mayor prioridad que sigue a este. restricción. Si dos paquetes tienen la misma
prioridad, APT instala el más nuevo (cuyo número de versión es el más alto). Si dos paquetes de la misma
versión tienen la misma prioridad pero difieren en su contenido, APT instala la versión que no está instalada
(esta regla se ha creado para cubrir el caso de una actualización de paquete sin el incremento del número de
revisión, que generalmente se requiere ).

En términos más concretos, nunca se instalará un paquete cuya prioridad sea inferior a 0. Un paquete
con una prioridad entre 0 y 100 solo se instalará si no se ha instalado ninguna otra versión del
paquete. Con una prioridad entre 100 y 500, el paquete solo se instalará si no hay otra versión más
nueva instalada o disponible en otra distribución. Un paquete de prioridad entre 501 y 990 solo se
instalará si no hay una versión más nueva instalada o disponible en la distribución de destino. Con una
prioridad entre 990 y 1000, el paquete se instalará excepto si la versión instalada es más nueva. Una
prioridad superior a 1000 siempre conducirá a la instalación del paquete, incluso si obliga a APT a
cambiar a una versión anterior.

Cuando APT comprueba/etc/apto/preferencias, primero tiene en cuenta las entradas más específicas (a menudo las que
especifican el paquete en cuestión), luego las más genéricas (incluidos, por ejemplo, todos los paquetes de una
distribución). Si existen varias entradas genéricas, se utiliza la primera coincidencia. Los criterios de selección
disponibles incluyen el nombre del paquete y la fuente que lo proporciona. cada paquete

202 Kali Linux revelado


la fuente se identifica por la información contenida en unLiberararchivo que APT descarga junto con elPaquetes
archivos Estos archivos especifican el origen, generalmente "Kali" para los paquetes de los espejos oficiales
de Kali y "Debian" para los paquetes de los espejos oficiales de Debian, pero el origen también puede ser el
nombre de una persona o una organización para repositorios de terceros. ElLiberarEl archivo también
proporciona el nombre de la distribución junto con su versión. Echemos un vistazo a su sintaxis a través de
algunos estudios de casos realistas de este mecanismo.

Prioridad de Debian Si incluyó Debian experimental en sufuentes.listafile, los paquetes correspondientes casi nunca
Experimental se instalarán porque su prioridad APT predeterminada es 1. Este es, por supuesto, un caso
específico, diseñado para evitar que los usuarios instalen paquetes experimentales por error.
Los paquetes solo se pueden instalar escribiendoinstalación apta paquete/experimental,
asumiendo, por supuesto, que eres consciente de los riesgos y los posibles dolores de cabeza
de la vida al límite. Todavía es posible (aunquenorecomendado) tratar los paquetes de
experimental como los de otras distribuciones dándoles una prioridad de 500. Esto se hace
con una entrada específica en/etc/apto/preferencias:

Paquete: *
Pin: release a=experimental Pin-
Prioridad: 500

Supongamos que solo desea usar paquetes de Kali y que solo desea instalar paquetes de Debian
cuando se solicita explícitamente. Podría escribir las siguientes entradas en el/etc/apto/
preferenciasarchivo (o en cualquier archivo en/etc/apt/preferencias.d/):
Paquete: *
Pin: liberación o = Kali
Prioridad de pin: 900

Paquete: *
Pin: lanzamiento o = Debian
Prioridad pin: -10

En los dos últimos ejemplos, has vistoa=experimental,que define el nombre de la distribución


seleccionada yo = Kaliyo=Debian,que limitan el alcance a los paquetes cuyo origen es Kali y Debian,
respectivamente.

Supongamos ahora que tiene un servidor con varios programas locales según la versión 5.22 de Perl y que
desea asegurarse de que las actualizaciones no instalarán otra versión del mismo. Podrías usar esta
entrada:
Paquete: Perla
Pin: versión 5.22*
Pin-Prioridad: 1001

La documentación de referencia para este archivo de configuración está disponible en la página del manual
preferencias_apt(5), que puede mostrar conhombre apt_preferences.

Capítulo 8 — Gestión de paquetes de Debian 203


Adición de comentarios en No existe una sintaxis oficial para los comentarios en/etc/apto/preferencias, pero se pueden
/etc/apt/preferencias proporcionar algunas descripciones textuales anteponiendo uno o másExplicacióncampos en cada
entrada:

Explicación: El paquete xserver-xorg-video-intel proporcionó Explicación: en


experimental se puede usar de forma segura
Paquete: xserver-xorg-video-intel Pin:
release a=experimental Pin-Priority: 500

8.3.3. Trabajar con varias distribuciones

Dado queaptoes una herramienta tan maravillosa que probablemente querrá sumergirse y comenzar a
experimentar con paquetes provenientes de otras distribuciones. Por ejemplo, después de instalar un
sistema Kali Rolling, es posible que desee probar un paquete de software disponible en Kali Dev, Debian
Unstable o Debian Experimental sin desviarse demasiado del estado inicial del sistema.

Incluso si ocasionalmente encuentra problemas al mezclar paquetes de diferentes distribuciones,apto


gestiona muy bien dicha coexistencia y limita los riesgos de manera muy eficaz (siempre que las
dependencias del paquete sean precisas). Primero, liste todas las distribuciones usadas en/etc/apt/fuentes.lista
y defina su distribución de referencia con elAPT::Versión predeterminadaparámetro (ver sección8.2.3, “
Actualizando Kali Linux” [página 184]).

Supongamos que Kali Rolling es su distribución de referencia, pero que Kali Dev y Debian Unstable
también aparecen en su lista.fuentes.listaarchivo. En este caso, puede utilizarinstalación apta paquete/
inestablepara instalar un paquete de Debian Unstable. Si la instalación falla debido a algunas
dependencias insatisfactorias, deje que resuelva esas dependencias dentro de Unstable agregando el -
t inestableparámetro.

En esta situación, las actualizaciones (mejorayactualización completa) se realizan dentro de Kali Rolling excepto para
paquetes ya actualizados a otra distribución: estos seguirán las actualizaciones disponibles en las otras
distribuciones. Explicaremos este comportamiento con la ayuda de las prioridades predeterminadas establecidas
por APT a continuación. No dude en utilizarpolítica de apt-cache(ver barra lateral “Usandopolítica de apt-cache” [página
204]) para verificar las prioridades dadas.

Todo se basa en que APT solo considera paquetes de versión superior o igual al paquete
instalado (asumiendo que/etc/apto/preferenciasno se ha utilizado para forzar prioridades superiores
a 1000 para algunos paquetes).

Usandopolítica de apt-cache Para comprender mejor el mecanismo de prioridad, no dude en ejecutarpolítica de apt-cache
para mostrar la prioridad predeterminada asociada con cada origen del paquete. También
puedes usarpolítica de apt-cachepaquetepara mostrar las prioridades de todas las versiones
disponibles de un paquete determinado.

204 Kali Linux revelado


Supongamos que ha instalado la versión 1 de un primer paquete deKali rodandoy que la versión 2 y 3 están
disponibles respectivamente enkali desarrolloyDebian inestable. La versión instalada tiene una prioridad de 100
pero la versión disponible enKali rodando(el mismo) tiene una prioridad de 990 (porque es parte de la versión de
destino). Paquetes enkali desarrolloyDebian inestabletener una prioridad de 500 (la prioridad predeterminada de
una versión no instalada). El ganador es por lo tanto la versión 1 con una prioridad de 990. El paquete se queda en
Kali rodando.

Tomemos el ejemplo de otro paquete cuya versión 2 se ha instalado desdekali desarrollo. La versión 1
está disponible enKali rodandoy la versión 3 enDebian inestable. La versión 1 (de prioridad 990, por lo
tanto inferior a 1000) se descarta porque es inferior a la versión instalada. Esto solo deja la versión 2 y
3, ambas de prioridad 500. Ante esta alternativa, APT selecciona la versión más nueva, la deDebian
inestable. Si no desea que se instale un paquete desdekali desarrollomigrar aDebian inestable, hay que
asignar una prioridad inferior a 500 (490 por ejemplo) a los paquetes procedentes de Debian inestable.
Puedes modificar/etc/apto/preferenciaspara este efecto:

Paquete: *
Pin: release a=inestable Pin-
Prioridad: 490

8.3.4. Seguimiento de paquetes instalados automáticamente

Una de las funcionalidades esenciales deaptoes el seguimiento de paquetes instalados solo a través de
dependencias. Estos paquetes se llamanautomáticoya menudo incluyen bibliotecas.

Con esta información, cuando se eliminan paquetes, los administradores de paquetes pueden calcular una lista de
paquetes automáticos que ya no se necesitan (porque no hay paquetes instalados manualmente que dependan de
ellos). El comandoeliminación automática aptse deshará de esos paquetes. Aptitude no tiene este comando porque los
elimina automáticamente tan pronto como se identifican. En todos los casos, las herramientas muestran un
mensaje claro que enumera los paquetes afectados.

Es un buen hábito marcar como automático cualquier paquete que no necesite directamente para que
se eliminen automáticamente cuando ya no sean necesarios. Puedes usarmarca apt auto paquetepara
marcar el paquete dado como automático, mientras queapt-marca manualpaquetehace lo contrario.
aptitude markautoyaptitud unmarkautofuncionan de la misma manera, aunque ofrecen más funciones para
marcar muchos paquetes a la vez (ver sección8.2.7.1, “Aptitud” [página 196]). La interfaz interactiva
basada en consola deaptitudtambién facilita la revisión del indicador automático en muchos paquetes.

Es posible que desee saber por qué un paquete instalado automáticamente está presente en el sistema.
Para obtener esta información desde la línea de comando, puede usaraptitud por quépaquete(aptoyapt-get
no tienen ninguna característica similar):

psaptitude por qué python-debian


yo aptitud Recomienda apt-xapian-index
i A apt-xapian-index Depende de python-debian (>= 0.1.15)

Capítulo 8 — Gestión de paquetes de Debian 205


8.3.5. Aprovechando el soporte de múltiples arcos

Todos los paquetes de Debian tienen unArquitecturaen su información de control. Este campo puede
contener "todo" (para paquetes que son independientes de la arquitectura) o el nombre de la arquitectura a
la que se dirige (como amd64 o armhf). En este último caso, por defecto,dpkgsolo instalará el paquete si su
arquitectura coincide con la arquitectura del host devuelta pordpkg --print-architecture.

Esta restricción garantiza que no termine con archivos binarios compilados para una arquitectura incorrecta. Todo
sería perfecto excepto que (algunas) computadoras pueden ejecutar binarios para múltiples arquitecturas, ya sea
de forma nativa (un sistema amd64 puede ejecutar binarios i386) oa través de emuladores.

Habilitación de múltiples arcos

Soporte multiarco paradpkgpermite a los usuarios definir arquitecturas externas que se pueden instalar
en el sistema actual. Esto se hace fácilmente condpkg --add-arquitectura, como en el ejemplo a
continuación, donde la arquitectura i386 debe agregarse al sistema amd64 para ejecutar aplicaciones
de Microsoft Windows usandoVino5. Hay un correspondientedpkg --remove-arquitecturapara eliminar el
soporte de una arquitectura ajena, pero solo se puede usar cuando no quedan paquetes de esta
arquitectura instalados.

# dpkg --print-architecture
amd64
# vino
parece que falta wine32, debe instalarlo. Multiarch debe habilitarse
primero. como root, ejecute ”dpkg --add-architecture i386 & apt-get
update & apt-get install wine32”

Uso: vino PROGRAMA [ARGUMENTOS...] Ejecutar el programa especificado Mostrar


vino --ayuda esta ayuda y salir Información de la versión de
vino --versión salida y salir
# dpkg --add-arquitectura i386
# dpkg --print-foreign-architectures i386

# actualización adecuada

[...]
# apt instalar wine32 [...]

Configurando libwine:i386 (1.8.6-5)... Configurando vdpau-


driver-all:i386 (1.1.1-6)... Configurando wine32:i386 (1.8.6-5)...

5https://www.winehq.org/

206 Kali Linux revelado


Configuración de libasound2-plugins:i386 (1.1.1-1)...
Activadores de procesamiento para libc-bin (2.24-9)
# vino
Uso: vino PROGRAMA [ARGUMENTOS...] Ejecutar el programa especificado Mostrar
vino --ayuda esta ayuda y salir Información de la versión de
vino --versión salida y salir
# dpkg --remove-arquitectura i386
dpkg: error: no se puede eliminar la arquitectura 'i386' actualmente en uso por la base de datos
# dpkg --print-foreign-architectures i386

APT detectará automáticamente cuándo se ha configurado dpkg para soportar arquitecturas extranjeras y
comenzará a descargar el correspondientePaquetesarchivos durante su proceso de actualización.

Los paquetes foráneos se pueden instalar coninstalación aptapaquete:arquitectura.

Usando el propietario i386 Hay múltiples casos de uso para multi-arch, pero el más popular es la posibilidad de ejecutar binarios
binarios en amd64 de 32 bits (i386) en sistemas de 64 bits (amd64), en particular porque varias aplicaciones propietarias
populares (como Skype) solo se proporcionan en versiones de 32 bits.

Cambios relacionados con múltiples arcos

Para que las arquitecturas múltiples fueran realmente útiles y usables, las bibliotecas tuvieron que volver a empaquetarse
y moverse a un directorio específico de la arquitectura para que se puedan instalar varias copias (dirigidas a diferentes
arquitecturas) una al lado de la otra. Dichos paquetes actualizados contienen laMulti-Arco: igualcampo de encabezado para
decirle al sistema de empaquetado que las diversas arquitecturas del paquete se pueden coinstalar de forma segura (y que
esos paquetes solo pueden satisfacer las dependencias de los paquetes de la misma arquitectura).

psdpkg -s libwine
dpkg-query: error: --status necesita un nombre de paquete válido pero 'libwine' no lo es: ambiguo
anombre del paquete 'libwine' con más de una instancia instalada

Use --help para obtener ayuda sobre cómo consultar


paquetes. psdpkg -s libwine:amd64 libwine:i386 | grep Multi
Multi-Arco: igual
Multi-Arco: igual
psdpkg -L libgcc1:amd64 | grep .so [...]

/usr/lib/x86_64-linux-gnu/wine/libwine.so.1 $dpkg -S /usr/share/doc/libwine/


copyright libwine:amd64, libwine:i386: /usr/share/doc/libwine/copyright

Cabe resaltar queMulti-Arco: iguallos paquetes deben tener sus nombres calificados con su arquitectura
para ser identificables sin ambigüedades. Estos paquetes también pueden compartir archivos con otros

Capítulo 8 — Gestión de paquetes de Debian 207


instancias del mismo paquete;dpkgasegura que todos los paquetes tengan archivos idénticos bit a bit cuando se
comparten. Además, todas las instancias de un paquete deben tener la misma versión, por lo que deben
actualizarse juntas.

La compatibilidad con varias arquitecturas también presenta algunos desafíos interesantes en la forma en que se
manejan las dependencias. Satisfacer una dependencia requiere un paquete marcadoMulti-Arco: exterioro un
paquete cuya arquitectura coincida con la del paquete que declara la dependencia (en este proceso de resolución
de dependencia, se supone que los paquetes independientes de la arquitectura tienen la misma arquitectura que el
host). Una dependencia también se puede debilitar para permitir que cualquier arquitectura la cumpla, con la
paquete:cualquiersintaxis, pero los paquetes foráneos solo pueden satisfacer tal dependencia si están marcados
Multi-Arco: permitido.

8.3.6. Validación de la autenticidad del paquete

Las actualizaciones del sistema son operaciones muy sensibles y realmente desea asegurarse de que solo instala
paquetes oficiales de los repositorios de Kali. Si el espejo Kali que está utilizando se ha visto comprometido, un
pirata informático podría intentar agregar un código malicioso a un paquete legítimo. Dicho paquete, si se instala,
podría hacer cualquier cosa para la que el cracker lo diseñó, incluida la divulgación de contraseñas o información
confidencial. Para evitar este riesgo, Kali proporciona un sello a prueba de manipulaciones para garantizar, en el
momento de la instalación, que un paquete realmente proviene de su mantenedor oficial y no ha sido modificado
por un tercero.

El sello funciona con una cadena de hashes criptográficos y una firma. El archivo firmado es elLiberar
archivo, proporcionado por los espejos de Kali. Contiene una lista de losPaquetesarchivos (incluyendo
sus formas comprimidas,Paquetes.gzyPaquetes.xzy las versiones incrementales), junto con sus hashes
MD5, SHA1 y SHA256, lo que garantiza que los archivos no hayan sido manipulados. Estos
PaquetesLos archivos contienen una lista de los paquetes Debian disponibles en el espejo junto con sus
valores hash, lo que a su vez garantiza que el contenido de los paquetes tampoco haya sido alterado.

Las claves de confianza se gestionan con elapt-clavecomando que se encuentra en elaptopaquete. Este programa
mantiene un conjunto de claves públicas GnuPG, que se utilizan para verificar las firmas en elLiberar.gpg
archivos disponibles en los espejos. Se puede usar para agregar nuevas claves manualmente (cuando se necesitan réplicas
no oficiales). Generalmente, sin embargo, solo se necesitan las claves oficiales de Kali. Estas claves son mantenidas
automáticamente actualizadas por elkali-archivo-llaveropaquete (que pone los llaveros correspondientes en/etc/apt/de
confianza.gpg.d). Sin embargo, la primera instalación de este paquete en particular requiere precaución: incluso si el paquete

está firmado como cualquier otro, la firma no se puede verificar externamente. Por lo tanto, los administradores cautelosos
deben verificar las huellas dactilares de las claves importadas antes de confiar en ellas para instalar nuevos paquetes:

# huella dactilar apt-key


Advertencia: apt-key está en desuso. En su lugar, administre los archivos del conjunto de claves en trusted.gpg.d (consulte apt-
key(8)). /etc/apt/trusted.gpg.d/debian-archive-buster-automatic.gpg
-------------------------------------------------------------
pub rsa4096 2019-04-14 [SC] [caduca: 2027-04-12] 80D1 5823 B7FD 1561
F9F7 BCDD DC30 D7C2 3CBB ABEE
fluido [desconocido] Clave de firma automática del archivo Debian (10/buster) < ftpmaster@debian.org >

208 Kali Linux revelado


sub rsa4096 2019-04-14 [S] [expira: 2027-04-12]

/etc/apt/trusted.gpg.d/debian-archive-buster-security-automatic.gpg
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - pub
rsa4096 2019-04-14 [SC] [caduca: 2027-04-12] 5E61 B217 265D A980
7A23 C5FF 4DFA B270 CAA9 6DFA
fluido [desconocido] Clave de firma automática del archivo de seguridad de Debian (10/buster) <ftpma ster@debian.org >
sub rsa4096 2019-04-14 [S] [expires: 2027-04-12]

/etc/apt/trusted.gpg.d/debian-archive-buster-stable.gpg
----------------------------------------------------------
pub rsa4096 2019-02-05 [SC] [caduca: 2027-02-03] 6D33 866E DD8F
FA41 C014 3AED DCC9 EFBF 77E1 1517
fluido [desconocido] Clave de versión estable de Debian (10/buster) < debian-release@lists.debian.org >

/etc/apt/trusted.gpg.d/debian-archive-jessie-automatic.gpg
-------------------------------------------------------------
pub rsa4096 2014-11-21 [SC] [caduca: 2022-11-19] 126C 0D24 BD8A
2942 CC7D F8AC 7638 D044 2B90 D010
fluido [desconocido] Clave de firma automática del archivo Debian (8/jessie) < ftpmaster@debian.org >

/etc/apt/trusted.gpg.d/debian-archive-jessie-security-automatic.gpg
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - pub
rsa4096 2014-11-21 [SC] [caduca: 2022-11-19] D211 6914 1CEC
D440 F2EB 8DDA 9D6D 8F6B C857 C906
fluido [desconocido] Clave de firma automática del archivo de seguridad de Debian (8/jessie) < ftpmaster@debian.org >

/etc/apt/trusted.gpg.d/debian-archive-jessie-stable.gpg
----------------------------------------------------------
pub rsa4096 2013-08-17 [SC] [caduca: 2021-08-15] 75DD C3C4 A499
F1A1 8CB5 F3C8 CBF8 D6FD 518E 17E1
fluido [desconocido] Clave de versión estable de Jessie < debian-release@lists.debian.org >

/etc/apt/trusted.gpg.d/debian-archive-stretch-automatic.gpg
--------------------------------------------------------------
pub rsa4096 2017-05-22 [SC] [caduca: 2025-05-20] E1CF 20DD FFE4 B89E
8026 58F1 E0B1 1894 F66A EC98
fluido [desconocido] Clave de firma automática del archivo Debian (9/stretch) <ftpma ster@debian.org > rsa4096
sub 2017-05-22 [S] [caduca: 2025-05-20]

/etc/apt/trusted.gpg.d/debian-archive-stretch-security-automatic.gpg
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - pub
rsa4096 2017-05-22 [SC] [caduca: 2025-05-20] 6ED6 F5CB 5FA6 FB2F
460A E88E EDA0 D238 8AE2 2BA9
fluido [desconocido] Clave de firma automática del archivo de seguridad de Debian (9/stretch) <ftpma ster@debian.org > rsa4096
sub 2017-05-22 [S] [caduca: 2025-05-20]

/etc/apt/trusted.gpg.d/debian-archive-stretch-stable.gpg
-----------------------------------------------------------
pub rsa4096 2017-05-20 [SC] [caduca: 2025-05-18] 067E 3C45 6BAE 240A
CEE8 8F6F EF0F 382A 1A7B 6500
fluido [desconocido] Clave de versión estable de Debian (9/stretch) < debian-release@lists.debian.org >

/etc/apt/trusted.gpg.d/kali-archive-keyring.gpg
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - pub
rsa4096 2012-03-05 [SC] [caduca: 2023-01-16] 44C6 513A 8E4F B3D3
0875 F758 ED44 4FF0 7D8D 0BF6
fluido [desconocido] Repositorio Kali Linux < devel@kali.org > rsa4096
sub 2012-03-05 [E] [expira: 2023-01-16]

Cuando se agrega una fuente de paquete de terceros alfuentes.listaarchivo, se debe indicar a APT que confíe en la
clave de autenticación GPG correspondiente (de lo contrario, seguirá quejándose de que no puede garantizar la
autenticidad de los paquetes que provienen de ese repositorio). El primer paso es por supuesto

Capítulo 8 — Gestión de paquetes de Debian 209


para obtener la clave pública. La mayoría de las veces, la clave se proporcionará como un pequeño archivo de texto, al que
llamaremostecla.ascen los siguientes ejemplos.

Para agregar la clave al conjunto de claves de confianza, el administrador puede ejecutarapt-clave


agregar < clave.asc. Otra forma es usar elsinápticointerfaz gráfica: su pestaña Autenticación en elAjustes
→ RepositoriosEl menú ofrece la posibilidad de importar una clave desde eltecla.ascarchivo.
Para las personas que prefieren una aplicación dedicada y más detalles sobre las claves de confianza, es posible utilizargui-
apt-key(en el paquete del mismo nombre), una pequeña interfaz gráfica de usuario que gestiona el conjunto de claves de
confianza.

Una vez que las claves apropiadas están en el conjunto de claves, APT verificará las firmas antes de cualquier operación riesgosa, de
modo que las interfaces mostrarán una advertencia si se les solicita que instalen un paquete cuya autenticidad no se puede
determinar.

8.4. Referencia del paquete APT: profundizando en el sistema de paquetes de


Debian

Ahora es el momento de profundizar en el sistema de paquetes de Debian y Kali. En este punto, vamos a ir
más allá de las herramientas y la sintaxis y nos centraremos más en los elementos básicos del sistema de
empaquetado. Esta vista detrás de escena lo ayudará a comprender cómo funciona APT en su base y le dará
una idea de cómo optimizar y personalizar seriamente su sistema Kali. Es posible que no memorice
necesariamente todo el material de esta sección, pero el material de guía y de referencia le será de gran
utilidad a medida que aumente su dominio del sistema Kali Linux.

Hasta ahora, ha interactuado con los datos del paquete de APT a través de varias herramientas diseñadas para interactuar
con él. A continuación, profundizaremos y echaremos un vistazo dentro de los paquetes y veremos el interiormeta
informacion(o información sobre otra información) utilizada por las herramientas de gestión de paquetes.

Esta combinación de archivo de archivo y de metainformación es directamente visible en la estructura de un


. debutantearchivo, que es simplemente unArkansasarchive, concatenando tres archivos:

psar t /var/cache/apt/archives/apt_1.4~beta1_amd64.deb debian-


binario
control.tar.gz
datos.tar.xz

Eldebian-binarioEl archivo contiene un único número de versión que describe el formato del archivo:

psar p /var/cache/apt/archives/apt_1.4~beta1_amd64.deb debian-binary


2.0

Elcontrol.tar.gzEl archivo contiene metainformación:


psar p /var/cache/apt/archives/apt_1.4~beta1_amd64.deb control.tar.gz | tar -tzf-
./

210 Kali Linux revelado


. /confíles
. /control
. /md5sums
. /postinstante
. /posterior
. /preinst
. /prem
. /shlibs
. /disparadores

Y finalmente, eldatos.tar.xzEl archivo (el formato de compresión puede variar) contiene los archivos reales que se
instalarán en el sistema de archivos:

psar p /var/cache/apt/archives/apt_1.4~beta1_amd64.deb data.tar.xz | tar -tJf-


./
. /etc/
. /etc/apto/
. /etc/apt/apt.conf.d/
. /etc/apt/apt.conf.d/01autoremove
. /etc/apt/preferences.d/
. /etc/apt/sources.list.d/
. /etc/apt/trusted.gpg.d/
. /etc/cron.daily/
. /etc/cron.daily/apt-compat
. /etc/kernel/
. /etc/kernel/postinst.d/
. /etc/kernel/postinst.d/apt-auto-eliminación
. /etc/logrotate.d/
. /etc/logrotate.d/apt
. /lib/
. /lib/sistemad/
[...]

Tenga en cuenta que en este ejemplo, está viendo un.debutantepaquete en el caché de archivo de APT y que su
archivo puede contener archivos con números de versión diferentes a los que se muestran.

En esta sección, presentaremos esta metainformación contenida en cada paquete y le mostraremos cómo
aprovecharla.

8.4.1. ElcontrolArchivo

Comenzaremos mirando elcontrolarchivo, que se encuentra en elcontrol.tar.gzarchivo. ElcontrolEl archivo


contiene la información más importante sobre el paquete. Utiliza una estructura similar a los
encabezados de correo electrónico y se puede ver con eldpkg-yodominio. por ejemplo, elcontrolarchivo
paraaptoSe ve como esto:

Capítulo 8 — Gestión de paquetes de Debian 211


psdpkg -I apt_1.4~beta1_amd64.deb control
Paquete: apto
Versión: 1.4~beta1
Arquitectura: amd64
Mantenedor: Equipo de desarrollo de APT < deity@lists.debian.org >
Tamaño de instalación: 3478
Depende: adduser, gpgv | gpgv2 | gpgv1, debian-archive-keyring, init-system-helpers (>=
a1.18~), libapt-pkg5.0 (>= 1.3~rc2), libc6 (>= 2.15), libgcc1 (>= 1:3.0),
alibstdc++6 (>= 5.2) Recomienda: gnupg
| gnupg2 | gnupg1
Sugiere: apt-doc, aptitude | sináptico | wajig, dpkg-dev (>= 1.17.2), powermgmt-base,
apython-apt
Rompe: apt-utils (<< 1.3~exp2~) Reemplaza:
apt-utils (<< 1.3~exp2~) Sección: admin

prioridad: importante
Descripción: administrador de paquetes de línea de comandos
Este paquete proporciona herramientas de línea de comandos para buscar
y administrar, así como consultar información sobre paquetes.
como acceso de bajo nivel a todas las funciones de la biblioteca libapt-pkg. .

Éstas incluyen:
* apt-get para la recuperación de paquetes e información sobre ellos de fuentes
autenticadas y para la instalación, actualización y eliminación de paquetes junto
con sus dependencias
* apt-cache para consultar información disponible sobre paquetes instalados e
instalables
* apt-cdrom para usar medios extraíbles como fuente de paquetes
* apt-config como interfaz para los ajustes de configuración
* apt-key como interfaz para administrar claves de autenticación

En esta sección, lo guiaremos a través del archivo de control y le explicaremos los diversos campos. Cada uno de
estos le brindará una mejor comprensión del sistema de empaquetado, le brindará un control de configuración
más preciso y le brindará la información necesaria para solucionar los problemas que puedan surgir.

Dependencias: el campo Depends

Las dependencias del paquete se definen en elDependecampo en el encabezado del paquete. Esta es una lista de condiciones que
se deben cumplir para que el paquete funcione correctamente; esta información es utilizada por herramientas como
aptopara instalar las librerías requeridas, en versiones adecuadas cumpliendo con las dependencias
del paquete a instalar. Para cada dependencia, puede restringir el rango de versiones que cumplen
esa condición. En otras palabras, es posible expresar el hecho de que necesita el paquetelibc6

212 Kali Linux revelado


en una versión igual o superior a “2.15” (escrito “libc6 (>= 2.15)”). Los operadores de comparación de versiones
son los siguientes:

• <<: menos que;

• <=: Menos que o igual a;

• =: igual a (nótese que “2.6.1”no es igual a "2.6.1-1”);

• > =: Mayor qué o igual a;

• > >: mas grande que.

En una lista de condiciones a cumplir, la coma sirve como separador, interpretado como un "Y"
lógico. En las condiciones, la barra vertical (“|”) expresa un “O” lógico (es un “O” inclusivo, no un “o
bien/o” exclusivo). Al tener mayor prioridad que "Y", puede usarlo tantas veces como sea
necesario. Así, la dependencia “(A O B) Y C” se escribeun | ANTES DE CRISTO. En cambio, la expresión
“A O (B Y C)” debe escribirse como “(A O B) Y (A O C)”, ya que laDependefield no tolera paréntesis
que cambien el orden de prioridades entre los operadores lógicos “OR” y “AND”.
Así se escribiríaun | B, A | C. Verhttps://www.debian.org/doc/debian-policy/ch-relationships.htmlpara
más información.
El sistema de dependencias es un buen mecanismo para garantizar el funcionamiento de un programa pero tiene
otro uso con los metapaquetes. Estos son paquetes vacíos que solo describen dependencias. Facilitan la instalación
de un grupo consistente de programas preseleccionados por el mantenedor del metapaquete; como tal,instalación
aptametapaqueteinstalará automáticamente todos estos programas utilizando las dependencias del metapaquete. El
gnomo,kali-herramientas-inalámbricas, ykali-linux-grandeLos paquetes son ejemplos de metapaquetes. Para
obtener más información sobre los metapaquetes de Kali, consultehttps://herramientas.
kali.org/kali-metapackages

Pre-depende, un depende más exigente

Las predependencias, que se enumeran en elPre-Dependecampo en los encabezados del paquete, complete
las dependencias normales; su sintaxis es idéntica. Una dependencia normal indica que el paquete en
cuestión debe desempaquetarse y configurarse antes de la configuración del paquete que declara la
dependencia. Una predependencia estipula que el paquete en cuestión debe desempaquetarse y
configurarse antes de la ejecución del script de preinstalación del paquete que declara la predependencia, es
decir, antes de su instalación.

Una predependencia es muy exigente paraaptoporque agrega una restricción estricta en el orden de los paquetes a
instalar. Como tal, se desaconsejan las dependencias previas a menos que sea absolutamente necesario. Incluso se
recomienda consultar a otros desarrolladores sobredebian-devel@lists.debian.org antes de agregar una
dependencia previa, ya que generalmente es posible encontrar otra solución como alternativa.

Capítulo 8 — Gestión de paquetes de Debian 213


Campos de recomendaciones, sugerencias y mejoras

Elrecomiendaysugierecampos describen dependencias que no son obligatorias. Las dependencias


recomendadas, las más importantes, mejoran considerablemente la funcionalidad que ofrece el
paquete pero no son indispensables para su funcionamiento. Las dependencias sugeridas, de
importancia secundaria, indican que ciertos paquetes pueden complementar y aumentar su respectiva
utilidad, pero es perfectamente razonable instalar uno sin los otros.

Siempre debe instalar los paquetes recomendados a menos que sepa exactamente por qué no los necesita.
Por el contrario, no es necesario instalar los paquetes sugeridos a menos que sepa por qué los necesita.

ElMejoracampo también describe una sugerencia, pero en un contexto diferente. De hecho, se encuentra en
el paquete sugerido y no en el paquete que se beneficia de la sugerencia. Su interés radica en que es posible
agregar una sugerencia sin tener que modificar el paquete en cuestión. Por lo tanto, todos los
complementos, complementos y otras extensiones de un programa pueden aparecer en la lista de
sugerencias relacionadas con el software. Aunque existe desde hace varios años, este último campo sigue
siendo ignorado en gran medida por programas comoaptoosináptico. El objetivo original era dejar que un
paquete como xul-ext-adblock-plus(una extensión de Firefox) declararMejoras: firefox, firefox-esry así
aparecer en la lista de paquetes sugeridos asociados aFirefoxyfirefox-esr.

Conflictos: el campo de los conflictos

ElConflictosEl campo indica cuando un paquete no se puede instalar simultáneamente con otro. Las razones
más comunes para esto son que ambos paquetes incluyen un archivo con el mismo nombre, brindan el
mismo servicio en el mismo puerto de protocolo de control de transmisión (TCP) o dificultarían la operación
del otro.

Si desencadena un conflicto con un paquete ya instalado,dpkgse negará a instalar un paquete,


excepto si el nuevo paquete especifica que reemplazará el paquete instalado, en cuyo casodpkg
elegirá reemplazar el paquete antiguo por el nuevo. APT siempre sigue sus instrucciones: si elige
instalar un nuevo paquete, automáticamente le ofrecerá desinstalar el paquete que presenta un
problema.

Incompatibilidades: el campo Breaks

Eldescansoscampo tiene un efecto similar al de laConflictoscampo, pero con un significado especial.


Señala que la instalación de un paquete romperá otro paquete (o versiones particulares del mismo). En
general, esta incompatibilidad entre dos paquetes es transitoria y ladescansosrelación se refiere
específicamente a las versiones incompatibles.

214 Kali Linux revelado


Cuando un paquete rompe un paquete ya instalado,dpkgse negará a instalarlo, yaptointentará resolver el
problema actualizando el paquete que estaría roto a una versión más nueva (que se supone que está
arreglada y, por lo tanto, es compatible de nuevo).

Este tipo de situación puede ocurrir en el caso de actualizaciones sin compatibilidad con versiones
anteriores: este es el caso si la nueva versión ya no funciona con la versión anterior y provoca un mal
funcionamiento en otro programa sin tomar medidas especiales. Eldescansoscampo ayuda a prevenir este
tipo de problemas.

Elementos proporcionados: el campo Proporciona

Este campo introduce el concepto muy interesante de unpaquete virtual. Tiene muchos roles, pero dos
son de particular importancia. El primer rol consiste en utilizar un paquete virtual para asociarle un
servicio genérico (el paquete proporciona el servicio). La segunda indica que un paquete reemplaza
completamente a otro y que para ello, también puede satisfacer las dependencias que el otro
satisfaría. Por lo tanto, es posible crear un paquete de sustitución sin tener que usar el mismo nombre
de paquete.

metapaquete y Virtual Es esencial distinguir claramente los metapaquetes de los paquetes virtuales. Los primeros
Paquete son paquetes reales (que incluyen.debutantefiles), cuyo único propósito es expresar
dependencias.

Los paquetes virtuales, sin embargo, no existen físicamente; son solo un medio para
identificar paquetes reales basados en criterios lógicos comunes (por ejemplo, servicio
prestado o compatibilidad con un programa estándar o un paquete preexistente).

Proporcionar un servicioAnalicemos el primer caso con más detalle con un ejemplo: todos los servidores de
correo, comosufijooenviar correose dice que proporcionan lacorreo-transporte-agentepaquete virtual. Por lo tanto,
cualquier paquete que necesite este servicio para ser funcional (por ejemplo, un administrador de listas de correo,
como lista inteligenteosimpa) simplemente establece en sus dependencias que requiere uncorreo-transporte-
agenteen lugar de especificar una lista larga pero incompleta de posibles soluciones. Además, es inútil instalar dos
servidores de correo en la misma máquina, por lo que cada uno de estos paquetes declara un conflicto con el
correo-transporte-agentepaquete virtual. El sistema ignora un conflicto entre un paquete y él mismo, pero esta
técnica prohibirá la instalación de dos servidores de correo uno al lado del otro.

Intercambiabilidad con otro paqueteElproporcionaEl campo también es interesante cuando el contenido


de un paquete se incluye en un paquete más grande. por ejemplo, ellibdigest-md5-perlEl módulo Perl era un
módulo opcional en Perl 5.6 y se ha integrado como estándar en Perl 5.8. Como tal, el paqueteperlasha
declarado desde la versión 5.8Proporciona: libdigest-md5-perlpara que las dependencias de este paquete se
cumplan si el sistema tiene Perl 5.8 (o posterior). Ellibdigest-md5-perlEl paquete en sí fue eliminado, ya que
ya no tenía ningún propósito cuando se eliminaron las versiones antiguas de Perl.

Capítulo 8 — Gestión de paquetes de Debian 215


Figura 8.3Uso de un campo Provides para no romper dependencias

Esta función es muy útil, ya que nunca es posible anticipar los caprichos del desarrollo y es
necesario poder adaptarse al cambio de nombre y otros reemplazos automáticos de software
obsoleto.

Reemplazo de archivos: el campo Reemplaza

ElReemplazaEl campo indica que el paquete contiene archivos que también están presentes en otro
paquete, pero que el paquete tiene derecho legítimo a reemplazarlos. Sin esta especificación,dpkg
falla, indicando que no puede sobrescribir los archivos de otro paquete (técnicamente, es posible
forzarlo a hacerlo con el --forzar sobrescrituraopción, pero eso no se considera una operación
estándar). Esto permite la identificación de problemas potenciales y requiere que el mantenedor
estudie el asunto antes de elegir si agregar dicho campo.

El uso de este campo se justifica cuando los nombres de los paquetes cambian o cuando un paquete se incluye en
otro. Esto también sucede cuando el mantenedor decide distribuir archivos de manera diferente entre varios
paquetes binarios producidos a partir del mismo paquete fuente: un archivo reemplazado ya no pertenece al
paquete anterior, sino solo al nuevo.

Si se han reemplazado todos los archivos de un paquete instalado, se considera que el paquete se eliminó.
Finalmente, este campo también fomentadpkgpara eliminar el paquete reemplazado donde hay un conflicto.

216 Kali Linux revelado


8.4.2. Guiones de configuración

Además decontrolarchivo, elcontrol.tar.gzEl archivo de cada paquete de Debian puede contener varios scripts (
postinstancia,correo postal,preinstancia,prematuro) llamado pordpkgen diferentes etapas en el procesamiento de un
paquete. Nosotros podemos usardpkg-yopara mostrar estos archivos tal como residen en un.debutantearchivo del
paquete:

psdpkg -I /var/cache/apt/archives/zsh_5.3-1_amd64.deb | cabeza nuevo


paquete debian, versión 2.0.
tamaño 814486 bytes: archivo de control=2557 bytes.
838 bytes, 20 lineas control
3327 bytes, 43 lineas sumas md5
969 bytes, 41 lineas * postinstant #!/bin/sh
348 bytes, 20 lineas * correo postal #!/bin/sh
175 bytes, 5 lineas * preinstalación #!/bin/sh
175 bytes, 5 lineas * prematuro #!/bin/sh
Paquete: zsh
Versión: 5.3-1
psdpkg -I zsh_5.3-1_amd64.deb preinst
#!/bin/sh
conjunto -e

# Agregado automáticamente por dh_installdeb


dpkg-maintscript-helper symlink_to_dir /usr/share/doc/zsh zsh-common 5.0.7-3 -- ”$@”
# Terminar la sección agregada automáticamente

ElPolítica de Debian6describe cada uno de estos archivos en detalle, especificando los scripts llamados y los
argumentos que reciben. Estas secuencias pueden ser complicadas, ya que si uno de los scripts falla,
dpkgintentará volver a un estado satisfactorio cancelando la instalación o desinstalación en curso (en la
medida de lo posible).

EldpkgBase de datos Puedes atravesar eldpkgbase de datos en el sistema de archivos en/var/lib/dpkg/. Este directorio
contiene un registro continuo de todos los paquetes que se han instalado en el sistema. Todos
los scripts de configuración para los paquetes instalados se almacenan en el
/var/lib/dpkg/info/directorio, en forma de archivo con el prefijo del nombre del
paquete:

psls /var/lib/dpkg/info/zsh.* /var/lib/


dpkg/info/zsh.list /var/lib/dpkg/info/
zsh.md5sums /var/lib/dpkg/info/
zsh.postinst /var/lib/dpkg/info/
zsh.postrm /var /lib/dpkg/info/
zsh.preinst /var/lib/dpkg/info/zsh.prerm

Este directorio también incluye un archivo con el.listaextensión para cada paquete, que contiene la
lista de archivos que pertenecen a ese paquete:

6https://www.debian.org/doc/debian-policy/ch-maintainerscripts.html

Capítulo 8 — Gestión de paquetes de Debian 217


pscabeza /var/lib/dpkg/info/zsh.list /.

/papelera

/bin/zsh
/bin/zsh5
/usr
/usr/lib
/usr/lib/x86_64-linux-gnu /usr/lib/x86_64-linux-
gnu/zsh /usr/lib/x86_64-linux-gnu/zsh/5.2 /usr/
lib/x86_64-linux-gnu/zsh/5.2 /zsh [...]

El/var/lib/dpkg/statusEl archivo contiene una serie de bloques de datos (en el formato de los
famosos encabezados de correo de solicitud de comentarios, RFC 2822) que describen el
estado de cada paquete. La información de lacontrolEl archivo de los paquetes instalados
también se replica allí.

psmás /var/lib/dpkg/status
Paquete: gnome-characters Estado:
instalar bien instalado Prioridad:
opcional
Sección: gnomo
Tamaño instalado: 1785
Mantenedor: Mantenedores de Debian GNOME <pkg-gnome-
amantainers@lists.alioth.debian.org > Arquitectura:
amd64
Versión: 3.20.1-1
[...]

Analicemos los archivos de configuración y veamos cómo interactúan. En general, elpreinstanciascript se


ejecuta antes de la instalación del paquete, mientras que elpostinstancialo sigue Asimismo,prematurose invoca
antes de la eliminación de un paquete ycorreo postaldespués. Una actualización de un paquete equivale a la
eliminación de la versión anterior y la instalación de la nueva. No es posible describir en detalle todos los
escenarios posibles aquí, pero discutiremos los dos más comunes: una instalación/actualización y una
eliminación.

Estas secuencias pueden ser bastante confusas, pero una representación visual puede ayudar.Manoj
Srivastava hizo algunos diagramas7explicando cómo los scripts de configuración son llamados pordpkg.El
proyecto Debian Women también ha desarrollado diagramas similares.8; son un poco más simples de
entender, pero menos completas.

7https://people.debian.org/~srivasta/MaintainerScripts.html
8https://wiki.debian.org/MaintainerScripts

218 Kali Linux revelado


Precaución Las secuencias descritas en esta sección llaman a los scripts de configuración por nombres
Nombres simbólicos de los específicos, comoantiguo prermonuevo-postinst. Son, respectivamente, losprematuroscript contenido
Guiones en la versión anterior del paquete (instalado antes de la actualización) y elpostinstancia
script contenido en la nueva versión (instalado por la actualización).

Secuencia de script de instalación y actualización

Esto es lo que sucede durante una instalación (o una actualización):

1. Para una actualización,dpkgllama alactualización prerm anteriornueva versión.

2. Todavía para una actualización,dpkgluego ejecutaactualización nueva preinstaladaversión antigua; para una
primera instalación, ejecutainstalación nueva preinstalada. Puede agregar la versión anterior en el último
parámetro si el paquete ya se instaló y eliminó (pero no se depuró, ya que se conservaron los archivos
de configuración).

3. A continuación, se descomprimen los archivos del nuevo paquete. Si ya existe un archivo, se reemplaza, pero se realiza una copia de

seguridad y se almacena temporalmente.

4. Para una actualización,dpkgejecutaactualización de postrm antiguonueva versión.

5.dpkgactualiza todos los datos internos (lista de archivos, scripts de configuración, etc.) y elimina las copias de
seguridad de los archivos reemplazados. Este es el punto de no retorno:dpkgya no tiene acceso a todos los
elementos necesarios para volver al estado anterior.

6.dpkgactualizará los archivos de configuración y le pedirá que decida si no puede administrar automáticamente esta
tarea. Los detalles de este procedimiento se discuten en la sección8.4.3, “Sumas de comprobación, archivos
confidenciales” [página 220].

7. Finalmente,dpkgconfigura el paquete ejecutandoconfiguración nueva-postinst


última versión configurada.

Eliminación de paquetes

Esto es lo que sucede durante la eliminación de un paquete.

1.dpkgllamadasprem eliminar.
2.dpkgelimina todos los archivos del paquete, con la excepción de los archivos de configuración y los
scripts de configuración.

3.dpkgejecutacorreo postal eliminar. Todos los scripts de configuración, exceptocorreo postal, son removidos.
Si no ha utilizado la opción de purga, el proceso se detiene aquí.

4. Para una purga completa del paquete (comando emitido condpkg --purgaodpkg -P), también se
eliminan los archivos de configuración, así como un cierto número de copias (*.dpkg-tmp,
* . dpkg-viejo,*.dpkg-nuevo) y archivos temporales;dpkgluego ejecutapurga posterior.

Capítulo 8 — Gestión de paquetes de Debian 219


En algunos casos, un paquete puede usardebconfsolicitarle información de configuración: los cuatro scripts
detallados anteriormente se complementan con unconfiguraciónguión diseñado para adquirir esa información.
Durante la instalación, este script define en detalle qué preguntasdebconfle preguntará. Las respuestas se
registran en eldebconfbase de datos para referencia futura. El script es generalmente ejecutado poraptoantes
de instalar los paquetes uno por uno para agrupar todas las preguntas al comienzo del proceso. Los scripts
previos y posteriores a la instalación pueden usar esta información para operar de acuerdo con sus deseos.

EldebconfHerramienta EldebconfLa herramienta fue creada para resolver un problema recurrente en Debian. Todos
los paquetes de Debian que no pueden funcionar sin un mínimo de configuración se utilizan
para hacer preguntas con llamadas alecoyleercomandos enpostinstanciascripts de shell (y otros
scripts similares). Esto obligó al instalador a cuidar grandes instalaciones o actualizaciones
para responder a diversas consultas de configuración a medida que surgían. Estas
interacciones manuales ahora se han prescindido casi por completo, gracias adebconf.

EldebconfLa herramienta tiene muchas características interesantes: requiere que el desarrollador


especifique la interacción del usuario; permite la localización de todas las cadenas mostradas (todas
las traducciones se almacenan en elplantillasarchivo que describe las interacciones); proporciona
diferentes interfaces para preguntas (modo texto, modo gráfico, no interactivo); y permite la creación
de una base de datos central de respuestas para compartir la misma configuración con varios
ordenadores. La característica más importante es que todas las preguntas se pueden presentar en
una fila, todas a la vez, antes de iniciar un largo proceso de instalación o actualización. Ahora, puede
ocuparse de su negocio mientras el sistema maneja la instalación por sí solo, sin tener que quedarse
allí mirando la pantalla, esperando que surjan preguntas.

8.4.3. Sumas de comprobación, archivos confidenciales

Además de los scripts de mantenimiento y los datos de control ya mencionados en las secciones anteriores,
elcontrol.tar.gzEl archivo de un paquete Debian puede contener otros archivos interesantes:

# ar p /var/cache/apt/archives/bash_4.4-2_amd64.deb control.tar.gz | tar -tzf-


./
. /confíles
. /control
. /md5sums
. /postinstante
. /posterior
. /preinst
. /prem

La primera-sumas md5: contiene las sumas de comprobación MD5 de todos los archivos del paquete. Su principal ventaja es
que permitedpkg --verificarpara comprobar si estos archivos han sido modificados desde su instalación. Tenga en cuenta que
cuando este archivo no existe,dpkglo generará dinámicamente en el momento de la instalación (y lo almacenará en la base
de datos dpkg al igual que otros archivos de control).

220 Kali Linux revelado


confiadosenumera los archivos de paquete que deben manejarse como archivos de configuración. Los archivos de configuración

pueden ser modificados por el administrador, ydpkgintentará conservar esos cambios durante una actualización del paquete.

En efecto, en esta situación,dpkgse comporta de la forma más inteligente posible: si el archivo de


configuración estándar no ha cambiado entre las dos versiones, no hace nada. Sin embargo, si el
archivo ha cambiado, intentará actualizar este archivo. Son posibles dos casos: el administrador no ha
tocado este archivo de configuración, en cuyo casodpkginstala automáticamente la nueva versión; o el
archivo ha sido modificado, en cuyo casodpkgpregunta al administrador qué versión desea usar (la
anterior con modificaciones o la nueva provista con el paquete). Para ayudar a tomar esta decisión,
dpkgofrece mostrar undiferenciaque muestra la diferencia entre las dos versiones. Si elige conservar la
versión anterior, la nueva se almacenará en la misma ubicación en un archivo con la.dpkg-dist
sufijo. Si elige la nueva versión, la anterior se conserva en un archivo con la.dpkg-viejosufijo. Otra acción
disponible consiste en interrumpir momentáneamentedpkgpara editar el archivo e intentar restablecer las
modificaciones relevantes (identificadas previamente condiferencia).

dpkgmaneja las actualizaciones del archivo de configuración, pero, mientras lo hace, interrumpe
regularmente su trabajo para solicitar información al administrador. Esto puede llevar mucho tiempo y ser
inconveniente. Afortunadamente, puede instruirdpkgpara responder a estas indicaciones automáticamente.
El--fuerza-confoldopción conserva la versión anterior del archivo, mientras que--forzar-confnewutilizará la nueva
versión. Estas opciones se respetan, incluso si el administrador no ha cambiado el archivo, lo que rara vez
tiene el efecto deseado. Agregando el--forzar-confdefopción dicedpkgdecidir por sí mismo cuando sea posible
(es decir, cuando no se haya tocado el archivo de configuración original), y sólo utiliza
- - forzar-confnewo--fuerza-confoldpara otros casos.
Estas opciones se aplican adpkg, pero la mayoría de las veces el administrador trabajará directamente con el
aptitudoaptoprogramas Es, pues, necesario conocer la sintaxis utilizada para indicar las opciones a
pasar aldpkgcomando (sus interfaces de línea de comandos son muy similares).

# apt -o DPkg::options::=”--force-confdef” -o DPkg::options::=”--force-confold” full-


amejora

Estas opciones se pueden almacenar directamente enaptoconfiguración de . Para hacerlo, simplemente escriba lo siguiente
línea en el/etc/apt/apt.conf.d/localarchivo:
DPkg::options { ”--force-confdef”; ”--force-confold”; }

Incluir esta opción en el archivo de configuración significa que también se utilizará en una interfaz
gráfica comoaptitud.

Por el contrario, también puede forzardpkgpara hacer preguntas sobre el archivo de configuración. El--forzar-confask
opción instruyedpkgpara mostrar las preguntas sobre los archivos de configuración, incluso en los
casos en que normalmente no serían necesarios. Así, al reinstalar un paquete con esta opción,dpkg
volverá a hacer las preguntas para todos los archivos de configuración modificados por el administrador.
Esto es muy conveniente, especialmente para reinstalar el archivo de configuración original si se eliminó y

Capítulo 8 — Gestión de paquetes de Debian 221


no hay otra copia disponible: una reinstalación normal no funcionará porquedpkgconsidera la eliminación como
una forma de modificación legítima y, por lo tanto, no instala el archivo de configuración deseado.

8.5. Resumen

En esta sección, aprendimos más sobre el sistema de paquetes Debian, discutimos la Herramienta avanzada de
paquetes (APT) ydpkg, aprendió sobre la interacción básica del paquete, la configuración y el uso avanzados de APT,
y profundizó en el sistema de paquetes de Debian con una breve referencia del.debutanteformato de archivo.
Miramos elcontrolarchivo, scripts de configuración, sumas de verificación y elconfiadosarchivo.

Resumen de consejos:

Un paquete Debian es un archivo comprimido de una aplicación de software. Contiene los archivos de la aplicación,
así como otros metadatos, incluidos los nombres de las dependencias que necesita la aplicación, además de
cualquier script que permita la ejecución de comandos en diferentes etapas del ciclo de vida del paquete
(instalación, eliminación, actualizaciones).

Eldpkgherramienta, contrariamente aaptoyapt-get(de la familia APT), no tiene conocimiento de todos los paquetes disponibles que
podrían usarse para cumplir con las dependencias de los paquetes. Por lo tanto, para administrar los paquetes de Debian,
probablemente utilizará las últimas herramientas, ya que pueden resolver automáticamente los problemas de dependencia.

Puede usar APT para instalar y eliminar aplicaciones, actualizar paquetes e incluso actualizar todo
su sistema. Estos son los puntos clave que debe saber sobre APT y su configuración:

• Elfuentes.listafile es el archivo de configuración clave para definir fuentes de paquetes (o


repositorios que contienen paquetes).
• Debian y Kali utilizan tres apartados para diferenciar paquetes según las licencias elegidas por los
autores de cada obra:principalcontiene todos los paquetes que cumplen totalmente con losPautas de
software libre de Debian9;no librecontiene software que no se ajusta (en su totalidad) a las Directrices
de software libre pero que, sin embargo, puede distribuirse sin restricciones; y contribución (
contribuciones) incluye software de código abierto que no puede funcionar sin algunos elementos
que no son libres.

• Kali mantiene varios repositorios que incluyen:rodando kali,que es el repositorio principal para los usuarios
finales y siempre debe contener paquetes instalables y recientes; ykali-dev,que es utilizado por los
desarrolladores de Kali y no es para uso público.

• Cuando trabaje con APT, primero debe descargar la lista de paquetes disponibles actualmente
conactualización adecuada.

• Puede agregar un paquete al sistema con un simpleinstalación aptapaquete. APT instalará


automáticamente las dependencias necesarias.
• Para eliminar un uso del paqueteapto eliminarpaquete. También eliminará las dependencias inversas del
paquete (es decir, paquetes que dependen del paquete que se eliminará).

9https://www.debian.org/social_contract#guidelines

222 Kali Linux revelado


• Para eliminar todos los datos asociados con un paquete, puede "purgar" el paquete con elpurga apta
paquetedominio. A diferencia de una eliminación, esto no solo eliminará el paquete, sino también sus
archivos de configuración y, a veces, los datos de usuario asociados.

Recomendamos actualizaciones periódicas para instalar las últimas actualizaciones de seguridad. Para actualizar, utiliceapto
actualizarseguido por cualquieraactualización apta,apt-obtener actualización, oactualización segura de aptitude. Estos
Los comandos buscan paquetes instalados que se pueden actualizar sin eliminar ningún paquete.

Para actualizaciones más importantes, como actualizaciones de versiones principales, useapt actualización completa. Con esta
instrucción,aptocompletará la actualización incluso si tiene que eliminar algunos paquetes obsoletos o instalar nuevas
dependencias. Este es también el comando que debe usar para las actualizaciones periódicas de su sistema Kali Rolling.
Revise los pros y los contras de las actualizaciones que describimos en este capítulo.

Se pueden usar varias herramientas para inspeccionar los paquetes de Debian:

• dpkg --listfilespaquete(o -L)enumera los archivos que instaló el paquete especificado.


• dpkg --buscararchivo(o -S)encuentra cualquier paquete que contenga el archivo o la ruta pasada en el
argumento.

• dpkg --lista(o
-l)muestra la lista de paquetes conocidos por el sistema y su estado de
instalación.
• dpkg --contenidoarchivo.deb(o -C)enumera todos los archivos en un determinado.debutantearchivo.

• dpkg--infoarchivo.deb(o -I)muestra los encabezados de los especificados.debutantearchivo.

• Los diversosapt-cacheLos subcomandos muestran gran parte de la información almacenada en la base de datos
interna de APT.

Para evitar un uso excesivo del disco, debe revisar regularmente/var/caché/apt/archivos/. Se pueden
usar dos comandos para esto:apto limpio(oapt-limpiar) vacía completamente el directorio;limpieza
automática apta(apt-get limpieza automática) solo elimina paquetes que ya no se pueden descargar
porque han desaparecido del espejo y, por lo tanto, son inútiles.
aptitudes un programa interactivo que se puede utilizar en modo semigráfico en la consola. Es un programa
extremadamente robusto que puede ayudarlo a instalar y solucionar problemas de paquetes.

sinápticoes un administrador de paquetes gráficos que presenta una interfaz gráfica limpia y eficiente.

Como usuario avanzado, puede crear archivos en/etc/apt/apt.conf.d/para configurar ciertos aspectos de APT. También
puede administrar las prioridades de los paquetes, rastrear paquetes instalados automáticamente, trabajar con
varias distribuciones o arquitecturas a la vez, usar firmas criptográficas para validar paquetes y actualizar archivos
usando las técnicas descritas en este capítulo.

A pesar de los mejores esfuerzos de los mantenedores de Debian o Kali, una actualización del sistema no siempre
es tan sencilla como esperamos. Cuando esto suceda, puede mirar elRastreador de errores Kali10y en elSistema de
seguimiento de errores de Debian11enhttps://bugs.debian.org/paquetepara comprobar si el problema ya ha

10https://bugs.kali.org/
11https://bugs.debian.org/

Capítulo 8 — Gestión de paquetes de Debian 223


sido reportado. También puede intentar degradar el paquete o depurar y reparar un script de mantenimiento de
paquete fallido.

224 Kali Linux revelado


Palabras clave

Paquetes personalizados
Núcleo personalizado
Imágenes personalizadas

construcción en vivo

Persistencia
Capítulo

Uso avanzado 9
Contenido

Modificación de paquetes de Kali228 Recompilación del kernel de Linux237 Creación de imágenes ISO Kali Live personalizadas241

Agregar persistencia a Live ISO con una llave USB246 Resumen251


Kali se ha construido como una plataforma de prueba de penetración altamente modular y personalizable y
permite una personalización y un uso bastante avanzados. Las personalizaciones pueden ocurrir en múltiples
niveles, comenzando en el nivel del código fuente. Las fuentes de todos los paquetes de Kali están disponibles
públicamente. En este capítulo, le mostraremos cómo puede recuperar paquetes, modificarlos y crear sus propios
paquetes personalizados a partir de ellos. El kernel de Linux es algo así como un caso especial y, como tal, está
cubierto en una sección dedicada (sección9.2, “Recompilación del kernel de Linux” [página 237]), donde
discutiremos dónde encontrar fuentes, cómo configurar la compilación del kernel y, finalmente, cómo compilarlo y
cómo compilar los paquetes del kernel asociados.

El segundo nivel de personalización está en el proceso de creación de imágenes ISO en vivo. Mostraremos cómo la
construcción en vivoLa herramienta ofrece muchos ganchos y opciones de configuración para personalizar la imagen ISO

resultante, incluida la posibilidad de usar paquetes Debian personalizados en lugar de los paquetes disponibles en los
espejos.

También discutiremos cómo puede crear un ISO en vivo persistente integrado en una llave USB que conservará los
archivos y los cambios del sistema operativo entre reinicios.

9.1. Modificación de paquetes de Kali

La modificación de los paquetes de Kali suele ser una tarea para los colaboradores y desarrolladores de Kali: actualizan los
paquetes con nuevas versiones anteriores, modifican la configuración predeterminada para una mejor integración en la
distribución o corrigen los errores informados por los usuarios. Pero es posible que tenga necesidades específicas que los
paquetes oficiales no satisfacen y, por lo tanto, saber cómo crear un paquete modificado puede ser muy valioso.

Quizás se pregunte por qué necesita preocuparse por el paquete. Después de todo, si tiene que modificar una pieza
de software, siempre puede obtener su código fuente (generalmente congit) y ejecute la versión modificada
directamente desde la comprobación de origen. Esto está bien cuando es posible y cuando usa su directorio de
inicio para este propósito, pero si su aplicación requiere una configuración de todo el sistema (por ejemplo, con un
hacer instalarpaso) entonces contaminará su sistema de archivos con archivos desconocidos paradpkgy pronto creará
problemas que las dependencias de paquetes no pueden detectar. Además, con los paquetes adecuados, podrá
compartir sus cambios e implementarlos en varias computadoras mucho más fácilmente o revertir los cambios
después de haber descubierto que no estaban funcionando tan bien como esperaba.

Entonces, ¿cuándo desearía modificar un paquete? Echemos un vistazo a algunos ejemplos. Primero, supondremos
que usted es un gran usuario de Social-Engineer Toolkit (SET) y notó una nueva versión ascendente, pero los
desarrolladores de Kali están todos ocupados para una conferencia y desea probarlo de inmediato. Desea
actualizar el paquete usted mismo. En otro caso, supondremos que está luchando para que su tarjeta MIFARE NFC
funcione y desea reconstruir "libfreefare” para habilitar los mensajes de depuración para tener datos procesables
para proporcionar en un informe de errores que está preparando actualmente. En un último caso, supondremos
que el “piritaEl programa falla con un mensaje de error críptico. Después de una búsqueda en la web, encuentra una
confirmación que espera solucionar su problema en el repositorio de GitHub ascendente y desea reconstruir el
paquete con esta corrección aplicada.

228 Kali Linux revelado


Revisaremos todas esas muestras en las siguientes secciones. Intentaremos generalizar las explicaciones
para que pueda aplicar mejor las instrucciones a otros casos, pero es imposible cubrir todas las situaciones
que pueda encontrar. Si encuentra problemas, aplique su mejor juicio para encontrar una solución o busque
ayuda en los foros más apropiados (consulte el capítulo6, “Ayudarse a sí mismo y obtener ayuda” [página
128]).

Independientemente del cambio que desee realizar, el proceso general es siempre el mismo: tome el paquete
fuente, extráigalo, realice los cambios y luego cree el paquete. Pero para cada paso, a menudo hay múltiples
herramientas que pueden manejar la tarea. Elegimos las herramientas más relevantes y populares, pero nuestra
revisión no es exhaustiva.

9.1.1. Obtener las fuentes

La reconstrucción de un paquete de Kali comienza con la obtención de su código fuente. Un paquete fuente
se compone de varios archivos: el archivo principal es el*.dsc(Control de fuente de Debian) ya que enumera
los otros archivos adjuntos, que pueden ser*.alquitrán.gz,bz2,xz, a veces*.diferencia.gz, o*.debian.tar.gz,bz2,xz
archivos

Los paquetes fuente se almacenan en réplicas de Kali que están disponibles a través de HTTP. Puede usar su
navegador web para descargar todos los archivos requeridos, pero la forma más fácil de lograr esto es usar
elfuente adecuadasource_package_namedominio. Este comando requiere undeb-srclínea en el
/etc/apt/sources.listarchivo y archivos de índice actualizados (logrado al ejecutaractualización adecuada). De forma
predeterminada, Kali no agrega la línea requerida, ya que pocos usuarios de Kali realmente necesitan recuperar
paquetes fuente, pero puede agregarla fácilmente (consulte el archivo de muestra en la sección8.1.3, “Repositorios
Kali” [página 179] y las explicaciones asociadas en la sección8.1.2, “Entendiendo elfuentes.listaArchivo” [página 178]).

psfuente apt libfreefare Leyendo


listas de paquetes... Listo
AVISO: el paquete 'libfreefare' se mantiene en el sistema de control de versiones 'Git' en: git://
anonscm.debian.org/collab-maint/libnfc.git
Por favor use:
git clone git://anonscm.debian.org/collab-maint/libnfc.git
para recuperar las actualizaciones más recientes (posiblemente inéditas) del paquete.
Necesita obtener 119 kB de archivos fuente.
Obtener: 1 http://kali.download/kali kali-rolling/main libfreefare 0.4.0-2.1 (dsc) [2144 B] Obtener: 2 http://
kali.download/kali kali-rolling/main libfreefare 0.4. 0-2.1 (tar) [113 kB] Obtenga: 3 http://kali.download/kali kali-rolling/
main libfreefare 0.4.0-2.1 (diff) [3732 B] Obtuvo 119 kB en 1 s (100 kB/s )

dpkg-source: info: extrayendo libfreefare en libfreefare-0.4.0 dpkg-source: info:


desempaquetando libfreefare_0.4.0.orig.tar.gz dpkg-source: info: desempaquetando
libfreefare_0.4.0-2.1.debian.tar.xz $cd libfreefare-0.4.0

psls
AUTORES hacer configure.ac COPIANDO ejemplos libfreefare m4 NOTICIAS prueba
ChangeLog CMakeLists.txt contribución $es HACKING de debian libfreefare.pc.in Makefile.am LÉAME TODO
debian
registro de cambios control de compatibilidad derechos de autor libfreefare0.install libfreefare-bin.install libfreefare-dev.install libfreefare-doc.install README.Source reglas fuente ver

En este ejemplo, aunque recibimos el paquete fuente de un espejo de Kali, el paquete es el mismo que
en Debian ya que la cadena de versión no contiene "kali". Esto significa que no se han aplicado
cambios específicos de kali.

Si necesita una versión específica del paquete fuente, que actualmente no está disponible en los
repositorios enumerados en/etc/apt/fuentes.lista, entonces la forma más fácil de descargarlo es
averiguar la URL de su.dscarchivo buscándolo enhttps://pkg.kali.org/y luego entregar esa URL adget(
desde eldevscriptspaquete).

Capítulo 9 — Uso avanzado 229


Después de haber buscado la URL del paquete fuente libreefare disponible en kali-dev, puede
descargarlo condget. Primero descargará el.dscluego analícelo para saber a qué otros archivos se hace
referencia y luego descárguelos desde la misma ubicación:

psdget http://http.kali.org/pool/main/libf/libfreefare/libfreefare_0.4.0+0~
agit1439352548.ffde4d-1.dsc
dget: recuperando http://http.kali.org/pool/main/libf/libfreefare/libfreefare_0.4.0+0~
agit1439352548.ffde4d-1.dsc % total
% recibido % transferido Velocidad media Tiempo Tiempo Tiempo Actual
Descargar Subir Total Gastado Izquierda Velocidad

100 362 100 362 0 0 1117 1120


0 --:--:-- --:--:-- --:--:-- 0 --:--:-- --:--:-- --:--:-- 3252
100 1935 100 1935 0 0 3252
dget: recuperando http://http.kali.org/pool/main/libf/libfreefare/libfreefare_0.4.0+0~
agit1439352548.ffde4d.orig.tar.gz [...]

libfreefare_0.4.0+0~git1439352548.ffde4d-1.dsc:
dscverify: libfreefare_0.4.0+0~git1439352548.ffde4d-1.dsc falló en la verificación de firma: gpg:
ADVERTENCIA: no se proporcionó ningún comando. Tratando de adivinar lo que quieres decir...
gpg: Firma realizada el miércoles 12 de agosto de 2015 a las 12:14:03 a. m. EDT
gpg: utilizando la clave RSA 43EF73F4BD8096DA
gpg: No se puede comprobar la firma: No hay clave
pública Validación FALLIDA!!
psdpkg-fuente -x libfreefare_0.4.0+0~git1439352548.ffde4d-1.dsc gpgv: Firma
realizada el miércoles 12 de agosto de 2015 a las 12:14:03 a. m. EDT gpgv:
utilizando la clave RSA 43EF73F4BD8096DA
gpgv: no se puede verificar la firma: no hay clave pública
dpkg-source: advertencia: no se pudo verificar la firma en ./libfreefare_0.4.0+0~git1439352548
a.ffde4d-1.dsc
dpkg-source: info: extrayendo libfreefare en libfreefare-0.4.0+0~git1439352548.ffde4d dpkg-source: info:
desempaquetando libfreefare_0.4.0+0~git1439352548.ffde4d.orig.tar.gz dpkg-source: info: desempaquetando
libfreefare_0 .4.0+0~git1439352548.ffde4d-1.debian.tar.xz

Cabe resaltar quedgetno extrajo automáticamente el paquete fuente porque no pudo


verificar la firma PGP en el paquete fuente. Por lo tanto, hicimos ese paso manualmente con
dpkg-fuente -xarchivo dsc. También puede forzar la extracción del paquete fuente pasando el -
- permitir-no autenticadoo -tuopción. Inversamente, puedes usar -solo descargapara omitir el paso de
extracción del paquete fuente.

Recuperando Fuentes de Es posible que hayas notado que elfuente adecuadala invocación le informa sobre un posible
Git repositorio de Git utilizado para mantener el paquete. Puede apuntar a un repositorio de Debian Git
o a un repositorio de Kali Git.

Todos los paquetes específicos de Kali se mantienen en repositorios de Git alojados en


gitlab.com/- kalilinux/paquetes1. Puede recuperar las fuentes de esos repositorios congit
clonar https://gitlab.com/kalilinux/packages/paquete fuente.git.

230 Kali Linux revelado


Al contrario de lo que obtienes confuente adecuada, el árbol obtenido no tendrá parches
aplicados automáticamente. Mira estodebian/parches/para conocer los posibles cambios
realizados por Kali.

psclon de git https://gitlab.com/kalilinux/packages/kali-meta.


agit
Clonación en 'kali-meta'... remoto: Contar
objetos: 760, listo.
remoto: Comprimir objetos: 100% (614/614), hecho. remoto: Total 760 (delta
279), reutilizado 0 (delta 0) Recepción de objetos: 100 % (760/760), 141,01 KiB
| 0 bytes/s,
ahecho.
Resolviendo deltas: 100% (279/279), hecho.
Comprobando conectividad... hecho.
pscd kali-meta
psls
Debian
pses debian
fuente de reglas de copyright de control de compatibilidad de registro de cambios

Puede usar los repositorios de Git como otra forma de recuperar las fuentes y, por lo tanto,
(principalmente) seguir las otras instrucciones de esta sección. Pero cuando los desarrolladores de
Kali trabajan con esos repositorios, usan otro flujo de trabajo de empaquetado y usan herramientas
delgit-buildpackagepaquete que no cubriremos aquí. Puede obtener más información sobre estas
herramientas aquí:

mihttps://honk.sigxcpu.org/piki/projects/git-buildpackage/

9.1.2. Instalación de dependencias de compilación

Ahora que tiene las fuentes, aún necesita instalar las dependencias de compilación. Serán necesarios para compilar los
paquetes binarios deseados, pero es probable que también se requieran para compilaciones parciales que quizás desee
ejecutar para probar los cambios mientras los realiza.

Cada paquete fuente declara sus dependencias de compilación en elDepende de la construccióncampo de ladebian/ control
archivo. vamos a instruiraptopara instalarlos (asumiendo que se encuentra en un directorio que contiene un paquete
fuente desempaquetado):

pssudo apt build-dep./


Tenga en cuenta que usa el directorio './' para obtener las dependencias de
compilación Leyendo listas de paquetes... Listo
Construyendo árbol de dependencias Leyendo
información de estado... Listo
Se instalarán los siguientes paquetes NUEVOS:
autoconf automake autopoint autotools-dev debhelper dh-autoreconf

1https://gitlab.com/kalilinux/paquetes

Capítulo 9 — Uso avanzado 231


dh-strip-nondeterminism gettext intltool-debian libarchive-zip-perl libfile-
stripnondeterminism-perl libtool po-debconf
0 actualizado, 13 recién instalado, 0 para eliminar y 0 no actualizado. Necesita
obtener 4 456 kB de archivos.
Después de esta operación, se utilizarán 14,6 MB de espacio adicional en disco. ¿Quieres
continuar? [T/n]
[...]

En este ejemplo, todas las dependencias de compilación se pueden satisfacer con paquetes disponibles para APT. Es posible que
este no sea siempre el caso, ya que la herramienta de creación de kali-rolling no garantiza la instalación de las dependencias de
compilación (solo se tienen en cuenta las dependencias de los paquetes binarios). En la práctica, las dependencias binarias y las
dependencias de compilación suelen estar estrechamente relacionadas y la mayoría de los paquetes tendrán sus dependencias de
compilación satisfactorias.

9.1.3. Haciendo cambios

En esta sección, no podemos cubrir todos los posibles cambios que desee realizar en un paquete
determinado. Esto equivaldría a enseñarle todo elnitty arenoso2detalles del empaquetado de Debian. Sin
embargo, cubriremos los tres casos de uso comunes presentados anteriormente y explicaremos algunas de
las partes inevitables (como mantener elregistro de cambiosarchivo).

Lo primero que debe hacer es cambiar el número de versión del paquete para que los paquetes
reconstruidos puedan distinguirse de los paquetes originales proporcionados por Debian o Kali. Para
conseguirlo, solemos añadir un sufijo identificativo de la entidad (persona o empresa) que aplica los
cambios. Desdeatractivoes mi apodo de IRC, lo usaré como sufijo. Tal cambio se efectúa mejor con ladch
dominio (Registro de cambios de Debian) desde eldevscriptspaquete, con un comando comodch --buxy local.
Esto invoca un editor de texto (editor sensible, que ejecuta el editor asignado en elVISUALoEDITORvariables de
entorno, o/usuario/bin/editorde lo contrario), lo que le permite documentar las diferencias introducidas por esta
reconstrucción. Este editor muestra quedchrealmente cambió eldebian/registro de cambios
archivo:

pscabeza -n 1 debian/registro de cambios libfreefare


(0.4.0-2) inestable; urgencia = bajo $dch --buxy local [...]

pscabeza debian/registro de cambios


libfreefare (0.4.0-2buxy1) SIN PUBLICAR; urgencia=media

* Habilitar la opción de configuración --with-debug.

- - Raphael Hertzog < buxy@kali.org > viernes, 22 de enero de 2021 10:36:00 -0400

libfreefare (0.4.0-2) inestable; urgencia=baja

2https://www.debian.org/doc/manuals/maint-guide/

232 Kali Linux revelado


* Actualizar debian/copyright.
Arreglar licencia a LGPL3+.

Si realiza estos cambios con regularidad, es posible que desee configurar elDEBFULLNAMEyDEBE CORREOvariables
de entorno a su nombre completo y su correo electrónico, respectivamente. Sus valores serán usados por muchas
herramientas de empaque, incluyendodch, que los insertará en la línea de tráiler que se muestra arriba
(comenzando con "--").

Aplicar un parche

En uno de nuestros casos de uso, hemos descargado elpiritapaquete fuente y queremos aplicar un parche que
encontramos en el repositorio Git ascendente. Esta es una operación común y siempre debe ser simple.
Desafortunadamente, los parches se pueden manejar de diferentes maneras según el formato del paquete de
origen y el flujo de trabajo de empaquetado de Git en uso (cuando se usa Git para mantener el paquete).

Con un paquete fuente desempaquetadohas corridopirita fuente aptay tienes unpirita-0. 4.0
directorio. Puede aplicar su parche directamente conparche -p1 <archivo de parche:

pspirita fuente apta


[...]
pscd pyrit-0.4.0
pswget https://github.com/JPaulMora/Pyrit/commit/14
aec997174b8e8fd20d22b6a97c57e19633f12a0.patch -O /tmp/pirit-parche [...]

psparche -p1 </tmp/pirit-parche parcheando el


archivo cpyrit/pckttools.py Hunk #1 tuvo éxito en 53
(compensación -1 líneas).
psdch --local buxy ”Aplicar parche para trabajar con scapy 2.3”

En este punto, ha parcheado manualmente el código fuente y ya puede crear paquetes binarios de su
versión modificada (consulte la sección9.1.4, “Comenzando la construcción” [página 236]). Pero si intenta
crear un paquete fuente actualizado, fallará y se quejará de "cambios ascendentes inesperados". Esto se
debe a que pyrit (como la mayoría de los paquetes fuente) usa el formato fuente (ver
debian/fuente/formatoarchivo) conocido como 3.0 (colcha), donde los cambios en el código ascendente
deben registrarse en parches separados almacenados endebian/parches/y donde eldebian/parches/serie
El archivo indica el orden en que se deben aplicar los parches. Puede registrar sus cambios en un nuevo
parche corriendodpkg-fuente --commit:
psdpkg-fuente --commit
dpkg-source: info: cambios locales detectados, los archivos modificados son:
pyrit-0.4.0/cpyrit/pckttools.py
Ingrese el nombre del parche deseado:arreglo-para-scapy-2.3.patch

Capítulo 9 — Uso avanzado 233


dpkg-source: información: se registraron cambios locales en un nuevo parche: pyrit-0.4.0/debian/
aparches/arreglo-para-scapy-2.3.patch $cola
-n 1 debian/parches/series arreglo-para-
scapy-2.3.patch

Serie de parches de edredón Esta convención de administración de parches ha sido popularizada por una herramienta llamadacolcha
y el formato del paquete fuente "3.0 (quilt)" es, por lo tanto, compatible con esta herramienta, con la
pequeña desviación que utilizadebian/parchesen lugar deparches. Esta herramienta está disponible en
el paquete del mismo nombre y puede encontrar un buen tutorial aquí:

mihttps://raphaelhertzog.com/2012/08/08/ how-to-use-quilt-to-manage-
patches-in-debian-packages/

Si el paquete de origen utiliza el formato de origen 1.0 o 3.0 (nativo), entonces no es necesario
registrar los cambios anteriores en un parche. Se empaquetan automáticamente en el paquete fuente
resultante.

Con un repositorio GitSi ha utilizado Git para recuperar el paquete fuente, la situación es aún más
complicada. Existen múltiples flujos de trabajo de Git y herramientas asociadas y, obviamente, no todos los
paquetes de Debian utilizan los mismos flujos de trabajo y herramientas. La distinción ya explicada sobre el
formato de origen sigue siendo relevante, pero también debe comprobar si los parches se aplican
previamente en el árbol de origen o si solo se almacenan endebian/parches(en este caso, se aplican en el
momento de la compilación).

La herramienta más popular esgit-buildpackage. Es lo que usamos para administrar todos los repositorios en
gitlab.com/kalilinux/packages. Cuando lo usa, los parches no se aplican previamente en el árbol de fuentes,
pero se almacenan endebian/parches. Puede agregar parches manualmente en ese directorio y enumerarlos
endebian/parches/seriepero los usuarios de git-buildpackage tienden a usarGBP PQpara editar toda la serie de
parches como una sola rama que puede ampliar o reorganizar a su gusto. Consulte las páginas del manual
paragbp-pq(1)para aprender a invocarlo.

git-dpm(con el comando asociado del mismo nombre) es otra herramienta de empaquetado de git que puede encontrar
en uso. Registra metadatos endebian/.git-dpmy mantiene los parches aplicados en el árbol de fuentes mediante la fusión de
una rama constantemente reorganizada que se construye a partir del contenido dedebian/parches.

Ajuste de las opciones de compilación

Por lo general, debe modificar las opciones de compilación cuando desea habilitar una función o comportamiento opcional
que no está activado en el paquete oficial, o cuando desea personalizar los parámetros que se establecen en el momento
de la compilación a través de un./configuraropción o a través de variables establecidas en el entorno de compilación.

En esos casos, los cambios suelen limitarse adebian/reglas, que impulsa los pasos en el proceso de creación del
paquete. En los casos más sencillos, las líneas relativas a la configuración inicial (./configurar…)o la
construcción real ($(HACER) …ohacer …)son fáciles de detectar. Si estos comandos no son

234 Kali Linux revelado


llamados explícitamente, probablemente sean un efecto secundario de otro comando explícito, en cuyo caso, consulte su
documentación para obtener más información sobre cómo cambiar el comportamiento predeterminado. Con paquetes
usandodh, es posible que deba agregar una anulación para eldh_auto_configureodh_auto_build
comandos (ver sus respectivas páginas de manual para obtener explicaciones sobre cómo lograr esto).

Para hacer esas explicaciones más concretas, apliquémoslas a nuestro caso de uso de muestra. Usted decidió
modificar libfreefare para pasar el --habilitar-depuraropción a la./configurarscript para que pueda obtener una salida
más detallada de sus herramientas de comunicación de campo cercano (NFC) y presentar un mejor informe de
errores sobre su tarjeta Mifare NFC no reconocida. Dado que el paquete utilizadhpara impulsar el proceso de
compilación, agrega (o en este caso modifica) eloverride_dh_auto_configureobjetivo. Aquí está el extracto
correspondiente de libfreefare'sdebian/reglasarchivo:

override_dh_auto_configure:
dh_auto_configure -- --sin-cortador --disable-silent-rules --enable-debug

Empaquetado de una nueva versión ascendente

Echemos un vistazo a un ejemplo en este punto, mientras discutimos el empaquetado de versiones anteriores.
Digamos que usted es un usuario avanzado de SET y notó una nueva versión ascendente (7.4.5) que aún no está
disponible en Kali (que solo tiene la versión 7.4.4). Desea crear un paquete actualizado y probarlo. Esta es una
versión menor y, por lo tanto, no espera que la actualización requiera ningún cambio en el nivel del paquete.

Para actualizar el paquete fuente, extrae el nuevo tarball fuente al lado del paquete
fuente actual y copia elDebiandirectorio del paquete fuente actual al nuevo. Luego
golpeas la versión endebian/registro de cambios.
psconjunto de fuentes apto

Leyendo listas de paquetes... Listo


AVISO: el paquete 'set' se mantiene en el sistema de control de versiones 'Git' en: https://gitlab.com/
kalilinux/packages/set.git
Por favor use:
clon de git https://gitlab.com/kalilinux/packages/set.git
para recuperar las actualizaciones más recientes (posiblemente inéditas) del paquete.
Necesita obtener 42,3 MB de archivos fuente.
[...]
dpkg-source: advertencia: no se pudo verificar la firma en ./set_7.4.4-0kali1.dsc dpkg-source:
información: extrayendo conjunto en set-7.4.4
dpkg-source: info: desempaquetando set_7.4.4.orig.tar.gz dpkg-source: info:
desempaquetando set_7.4.4-0kali1.debian.tar.xz dpkg-source: info: aplicando
edit-config-file
dpkg-source: información: aplicando fix-path-interpreter.patch
pswget https://github.com/trustedsec/social-engineer-toolkit/archive/7.4.5.tar.gz -O
aset_7.4.5.orig.tar.gz [...]

Capítulo 9 — Uso avanzado 235


pstar xvf set_7.4.5.orig.tar.gz [...]

kit de herramientas de ingeniería social-7.4.5/src/wireless/wifiattack.py $cp -a


set-7.4.4/debian social-engineer-toolkit-7.4.5/debian pscd kit de
herramientas de ingeniería social-7.4.5
psdch -v 7.4.5-0buxy1 ”Nueva versión ascendente”

Eso es todo. Ahora puede compilar el paquete actualizado.

Según el tipo de cambios que introduzca la nueva versión ascendente, es posible que también deba cambiar las
dependencias de compilación y las dependencias de tiempo de ejecución, e instalar nuevos archivos. Esas son operaciones
mucho más complicadas que no están cubiertas por este libro.

9.1.4. Comenzando la construcción

Cuando se hayan aplicado todos los cambios necesarios a las fuentes, puede comenzar a generar el
paquete binario real o.debutantearchivo. Todo el proceso es gestionado por eldpkg-buildpackagecomando
y se ve así:
psdpkg-buildpackage -us -uc -b dpkg-buildpackage: paquete fuente libfreefare dpkg-
buildpackage: versión fuente 0.4.0-2buxy1 dpkg-buildpackage: distribución fuente NO
PUBLICADO dpkg-buildpackage: fuente modificada por Raphael Hertzog < buxy@kali.org >
dpkg-buildpackage: arquitectura host amd64

[...]
dh_builddeb
dpkg-deb: paquete de construcción 'libfreefare0-dbgsym' en '../libfreefare0-dbgsym_0.4.0-2buxy1_amd64.deb'. dpkg-deb: paquete de
construcción 'libfreefare0' en '../libfreefare0_0.4.0-2buxy1_amd64.deb'.
dpkg-deb: paquete de construcción 'libfreefare-dev' en '../libfreefare-dev_0.4.0-2buxy1_amd64.deb'. dpkg-deb: paquete de construcción
'libfreefare-bin-dbgsym' en '../libfreefare-bin-dbgsym_0.4.0-2buxy1_amd64.deb'. dpkg-deb: paquete de construcción 'libfreefare-bin' en '../
libfreefare-bin_0.4.0-2buxy1_amd64.deb'.
dpkg-deb: paquete de construcción 'libfreefare-doc' en '../libfreefare-doc_0.4.0-2buxy1_all.deb'. dpkg-genchanges -b >../
libfreefare_0.4.0-2buxy1_amd64.changes
dpkg-genchanges: carga solo binaria (sin código fuente incluido) dpkg-source --
after-build libfreefare-0.4.0
dpkg-buildpackage: carga solo binaria (sin fuente incluida)

El -nosotros-ucLas opciones deshabilitan las firmas en algunos de los archivos generados (.dsc,.cambios)
porque esta operación fallará si no tiene una clave GnuPG asociada con la identidad que ha puesto en el
registro de cambiosarchivo. El -bLa opción solicita una "compilación solo binaria". En este caso, el paquete fuente (.dsc) no se

creará, solo el binario (.debutante) los paquetes lo harán. Use esta opción para evitar fallas durante la compilación del
paquete fuente: si no ha registrado correctamente sus cambios en el sistema de administración de parches, es posible que
se queje e interrumpa el proceso de compilación.

Como lo sugieredpkg-debde los mensajes, los paquetes binarios generados ahora están disponibles en
el directorio principal (el que aloja el directorio del paquete fuente). Puedes instalarlos
condpkg -ioinstalación apta.
pssudo apt install ../libfreefare0_0.4.0-2buxy1_amd64.deb \
. . /libfreefare-bin_0.4.0-2buxy1_amd64.deb Leyendo
listas de paquetes... Listo

236 Kali Linux revelado


Construyendo árbol de dependencias
Leyendo información de estado... Listo
Nota, seleccionando 'libfreefare0' en lugar de '../libfreefare0_0.4.0-2buxy1_amd64.deb' Nota, seleccionando 'libfreefare-
bin' en lugar de '../libfreefare-bin_0.4.0-2buxy1_amd64.deb' Se actualizarán los siguientes paquetes :

libfreefare-bin libfreefare0
2 actualizados, 0 recién instalados, 0 para eliminar y 0 no actualizados. Necesita
obtener 0 B/69,4 kB de archivos.
Después de esta operación, se utilizarán 2 048 B de espacio adicional en disco. [...]

Nosotros preferimosinstalación aptaencimadpkg -iya que se ocupará de las dependencias que faltan con gracia. Pero no hace
mucho tiempo, tenías que usardpkgcomoaptono fue capaz de hacer frente a.debutantearchivos fuera de cualquier repositorio.

dpkg-buildpackage La mayoría de las veces, los desarrolladores de Debian usan un programa de nivel superior como
envoltorios deconstruir; esto corredpkg-buildpackagecomo de costumbre, pero también agrega una invocación de un
programa (linciano) que ejecuta muchas comprobaciones para validar el paquete generado contra el
Política de Debian3. Este script también limpia el entorno para que las variables del entorno local no
contaminen la construcción del paquete. EldeconstruirEl comando es una de las herramientas en el
devscriptssuite, que comparten cierta consistencia y configuración para facilitar la tarea de los
mantenedores.

9.2. Recompilación del kernel de Linux

Los núcleos proporcionados por Kali incluyen la mayor cantidad posible de funciones, así como la máxima cantidad
de controladores, para cubrir el espectro más amplio de configuraciones de hardware existentes. Esta es la razón
por la que algunos usuarios prefieren recompilar el kernel para incluir solo lo que necesitan específicamente. Hay
dos razones para esta elección. En primer lugar, es una forma de optimizar el consumo de memoria ya que todo el
código del núcleo, aunque nunca se utilice, ocupa memoria física. Debido a que las partes compiladas
estáticamente del kernel nunca se mueven al espacio de intercambio, se producirá una disminución general en el
rendimiento del sistema al tener controladores y características integradas que nunca se usan. En segundo lugar, la
reducción de la cantidad de controladores y características del kernel reduce el riesgo de problemas de seguridad,
ya que solo se ejecuta una fracción del código del kernel disponible.

3https://www.debian.org/doc/debian-policy/

Capítulo 9 — Uso avanzado 237


Importante

Si elige compilar su propio kernel, debe aceptar las consecuencias: Kali no puede
garantizar actualizaciones de seguridad para su kernel personalizado. Al mantener
el núcleo provisto por Kali, se beneficia de las actualizaciones preparadas por el
Proyecto Debian.

La recompilación del kernel también es necesaria si desea utilizar ciertas funciones que solo están
disponibles como parches (y no están incluidas en la versión estándar del kernel).

El núcleo de Debian El equipo del kernel de Debian mantiene laManual del núcleo de Debian(también disponible en el
Manual manual-del-kernel-debianpaquete) con documentación completa sobre la mayoría de las tareas
relacionadas con el kernel y sobre cómo se manejan los paquetes oficiales del kernel de Debian. Este
es el primer lugar en el que debe buscar si necesita más información de la que se proporciona en
esta sección.

mihttps://kernel-team.pages.debian.net/kernel-handbook/

9.2.1. Introducción y requisitos previos

Como era de esperar, Debian y Kali administran el núcleo en forma de paquete, que no es la forma en que
tradicionalmente se han compilado e instalado los núcleos. Dado que el kernel permanece bajo el control del
sistema de empaquetado, puede eliminarse limpiamente o implementarse en varias máquinas. Además, los
scripts asociados con estos paquetes automatizan la interacción con el cargador de arranque y el generador
de initrd.

Las fuentes de Linux ascendentes contienen todo lo necesario para construir un paquete Debian del kernel, pero
aún necesita instalar elconstruir-esencialpaquete para asegurarse de que tiene las herramientas necesarias para
construir un paquete Debian. Además, el paso de configuración para el núcleo requiere lalibncurses5- devpaquete.
Finalmente, elraíz falsaEl paquete permitirá la creación del paquete Debian sin necesidad de privilegios
administrativos.

# apt install build-essential libncurses5-dev fakeroot

9.2.2. Obtener las fuentes

Dado que las fuentes del kernel de Linux están disponibles como un paquete, puede recuperarlas instalando el
linux-fuente-paquete de versión. Elapt-cache buscar ^linux-fuenteEl comando debe enumerar la última versión del kernel
empaquetada por Kali. Tenga en cuenta que el código fuente contenido en estos paquetes

238 Kali Linux revelado


no se corresponde precisamente con esopublicado por Linus Torvalds y los desarrolladores del kernel4; Como todas
las distribuciones, Debian y Kali aplican una serie de parches, que podrían (o no) llegar a la versión anterior de
Linux. Estas modificaciones incluyen versiones anteriores de correcciones/características/controladores de
versiones más nuevas del kernel, nuevas características que aún no se han fusionado (totalmente) en el árbol
ascendente de Linux y, a veces, incluso cambios específicos de Debian o Kali.

El resto de esta sección se centra en la versión 4.9 del kernel de Linux, pero los ejemplos pueden,
por supuesto, adaptarse a la versión particular del kernel que desee.
En este ejemplo, suponemos que ellinux-fuente-4.9Se ha instalado el paquete binario. Tenga en cuenta que
instalamos un paquete binario que contiene las fuentes ascendentes pero no recuperamos el paquete fuente de
Kali llamadolinux.

# apt install linux-fuente-4.9 Leyendo


listas de paquetes... Listo Construyendo
árbol de dependencias Leyendo
información de estado... Listo
Se instalarán los siguientes paquetes adicionales:
bc libreadline7
Paquetes sugeridos:
libncurses-dev | ncurses-dev libqt4-dev Se instalarán los
siguientes paquetes NUEVOS:
bc libreadline7 linux-fuente-4.9
0 actualizado, 3 recién instalado, 0 para eliminar y 0 no actualizado. Necesita
obtener 95,4 MB de archivos.
Después de esta operación, se utilizarán 95,8 MB de espacio adicional en disco. ¿Quieres
continuar? [T/n]y [...]

# ls /usr/src
linux-config-4.9 linux-parche-4.9-rt.patch.xz linux-source-4.9.tar.xz

Observe que el paquete contiene/usr/src/linux-source-4.9.tar.xz, un archivo comprimido de las fuentes del


kernel. Debe extraer estos archivos en un nuevo directorio (no directamente bajo/usuario/origen/, ya que
no hay necesidad de permisos especiales para compilar un kernel de Linux). En cambio,~/núcleo/es más
apropiado.

psmkdir ~/núcleo; cd ~/núcleo


pstar -xaf /usr/src/linux-source-4.9.tar.xz

9.2.3. Configuración del núcleo

El siguiente paso consiste en configurar el kernel según tus necesidades. El procedimiento exacto depende
de los objetivos.

4https://www.kernel.org/

Capítulo 9 — Uso avanzado 239


La compilación del kernel depende de un archivo de configuración del kernel. En la mayoría de los casos, lo más probable
es que te acerques lo más posible a la propuesta de Kali, que, como todas las distribuciones de Linux, se instala en el
/botadirectorio. En este caso, en lugar de reconfigurar todo desde cero, basta con hacer una copia del/
boot/config-versiónarchivo. La versión debe ser la misma que la versión del kernel que se usa
actualmente, que se puede encontrar con eluname -rdominio. Coloque la copia en un.configuración
archivo en el directorio que contiene las fuentes del núcleo.

pscp /boot/config-4.9.0-kali1-amd64 ~/kernel/linux-source-4.9/.config

Alternativamente, dado que el núcleo proporciona configuraciones predeterminadas enarco/arco/


configs/*_ defconfig, puede poner su configuración seleccionada en su lugar con un comando comohacer
x86_64_defconfig(en el caso de un PC de 64 bits) ohacer i386_defconfig(en el caso de un PC de 32 bits).

A menos que necesite cambiar la configuración, puede detenerse aquí y pasar a la sección9.2.4, “
Compilación y construcción del paquete” [página 241]. Si necesita hacer cambios o si decide
reconfigurar todo desde cero, debe tomarse el tiempo para configurar su kernel. Hay varias interfaces
dedicadas en el directorio fuente del kernel que se pueden usar llamando alhacer objetivocomando,
dondeobjetivoes uno de los valores descritos a continuación.

hacer menuconfigcompila y lanza una interfaz de configuración del kernel en modo texto (aquí es donde
libncurses5-devse requiere el paquete), lo que permite navegar por las muchas opciones disponibles del
núcleo en una estructura jerárquica. Presionando elEspaciotecla cambia el valor de la opción seleccionada, y
Ingresarvalida el botón seleccionado en la parte inferior de la pantalla; Seleccionar vuelve al submenú
seleccionado; Salir cierra la pantalla actual y retrocede en la jerarquía; La ayuda mostrará información más
detallada sobre la función de la opción seleccionada. Las teclas de flecha permiten moverse dentro de la lista
de opciones y botones. Para salir del programa de configuración, seleccione Salir en el menú principal.
Luego, el programa ofrece guardar los cambios que ha realizado; acepte si está satisfecho con sus
elecciones.

Otras interfaces tienen características similares pero funcionan dentro de interfaces gráficas más
modernas, comohacer xconfig, que utiliza una interfaz gráfica Qt, yhacer gconfig, que utiliza GTK+. Lo
anterior requierelibqt4-dev, mientras que este último depende delibglade2-devylibgtk2.0-dev.

Tratar con obsoletos Cuando proporcionas un.configuraciónque se ha generado con otra versión del kernel
. configuraciónarchivos (generalmente más antigua), deberá actualizarlo. Puedes hacerlo conhacer configuración antigua,
que de forma interactiva te hará las preguntas correspondientes a las nuevas opciones de
configuración. Si desea utilizar la respuesta predeterminada a todas esas preguntas, puede
utilizarhacer olddefconfig. Conhacer oldnoconfig, asumirá una respuesta negativa a todas las
preguntas.

240 Kali Linux revelado


9.2.4. Compilación y construcción del paquete

limpiar antes Si ya ha compilado un kernel en el directorio y desea reconstruir todo desde cero
Reconstrucción (por ejemplo, porque cambió sustancialmente la configuración del kernel), deberá
ejecutarhacer limpiapara eliminar los archivos compilados.limpiar
elimina aún más archivos generados, incluido su.configuraciónarchivo, así que asegúrese de hacer una copia de
seguridad primero.

Una vez que la configuración del kernel está lista, un simplehacer paquete de deudagenerará hasta cinco paquetes
Debian en estándar.debutanteformato:imagen-linux-versión, que contiene la imagen del núcleo y los módulos
asociados;linux-cabeceras-versión, que contiene los archivos de encabezado necesarios para construir módulos
externos;linux-firmware-imagen-versión, que contiene los archivos de firmware que necesitan algunos
controladores (es posible que falte este paquete cuando compila a partir de las fuentes del kernel proporcionadas
por Debian o Kali);imagen-linux-versión-dbg, que contiene los símbolos de depuración de la imagen del kernel y sus
módulos; ylinux-libc-dev, que contiene encabezados relevantes para algunas bibliotecas de espacio de usuario
como la biblioteca C de GNU (glibc).

Elversiónse define por la concatenación de la versión anterior (según lo definido por las variables
VERSIÓN, PATCHLEVEL, SUBNIVEL,yEXTRAVERSIÓNen elMakefile), delLOCALVER-SIONparámetro de
configuración, y delVERSIÓN LOCALVariable ambiental. La versión del paquete reutiliza la misma
cadena de versión con una revisión adjunta que se incrementa periódicamente (y se almacena en.
versión), excepto si lo anula con elKDEB_PKGVERSIONVariable ambiental.

pshacer deb-pkg LOCALVERSION=-custom KDEB_PKGVERSION=$(hacer kernelversion)-1 [...]

psls ../*.deb
. . /linux-headers-4.9.0-kali1-custom_4.9.2-1_amd64.deb
. . /linux-image-4.9.0-kali1-custom_4.9.2-1_amd64.deb
. . /linux-imagen-4.9.0-kali1-personalizado-dbg_4.9.2-1_amd64.deb
. . /linux-libc-dev_4.9.2-1_amd64.deb

Para usar realmente el kernel construido, el único paso que queda es instalar los paquetes requeridos
condpkg -i archivo.deb. Se requiere el paquete “linux-image”; solo tiene que instalar el paquete "linux-
headers" si tiene algunos módulos de kernel externos para compilar, que es el caso si tiene algunos
paquetes "*-dkms" instalados (verifique condpkg -l ”*-dkms” | grep^ii). ¡Los otros paquetes generalmente no
son necesarios (a menos que sepa por qué los necesita)!

9.3. Creación de imágenes ISO Kali Live personalizadas

Kali Linux tiene una tonelada de funcionalidad y flexibilidad desde el primer momento. Una vez que Kali está instalado,
puede realizar todo tipo de hazañas asombrosas con un poco de orientación, creatividad, paciencia y práctica.

Capítulo 9 — Uso avanzado 241


Sin embargo, también puede personalizar una compilación de Kali para que contenga archivos o paquetes específicos
(para ampliar o reducir el rendimiento y las características) y pueda realizar ciertas funciones automáticamente. por
ejemplo, elKali ISO de la perdición5y elPunto de acceso inalámbrico Kali Evil6ambos son excelentes proyectos que se basan
en una implementación personalizada de Kali Linux. Echemos un vistazo al proceso de creación de una imagen ISO
personalizada de Kali Linux.

Las imágenes ISO oficiales de Kali están construidas conconstrucción en vivo7, que es un conjunto de scripts que permite la
automatización y personalización completas de todas las facetas de la creación de imágenes ISO. Elconstrucción en vivo
suite utiliza una estructura de directorio completa como entrada para su configuración. Almacenamos esta configuración y
algunos scripts auxiliares asociados en unlive-build-configrepositorio Git. Usaremos este repositorio como base para
construir imágenes personalizadas.

Antes de continuar, debe saber que los comandos que se muestran en esta sección están destinados a ejecutarse en un
sistema Kali Linux actualizado. Es muy probable que fallen si se ejecutan en un sistema que no sea Kali o si el sistema está
desactualizado.

9.3.1. Instalación de requisitos previos

El primer paso es instalar los paquetes necesarios y recuperar el repositorio de Git con Kali construcción en
vivoconfiguración:

# apt install curl git live-build [...]

# clon de git https://gitlab.com/kalilinux/build-scripts/live-build-config.git [...]

# cd live-build-config
# ls
auto bin build_all.sh build.sh kali-config README.md simple-cdd

En este punto, ya puede crear una imagen ISO en vivo de Kali actualizada (pero sin modificar) simplemente
ejecutando./compilar.sh --verbose. La compilación tardará mucho tiempo en completarse, ya que descargará
todos los paquetes que se incluirán. Cuando termine, encontrará la imagen ISO recién creada en el nuevo
imágenesdirectorio.

9.3.2. Creación de imágenes en vivo con diferentes entornos de escritorio

Elconstruir.shEl envoltorio de construcción en vivo que proporcionamos es responsable de configurar elconfiguración


directorio queconstrucción en vivoespera encontrar. Puede poner en marcha diferentes configuraciones dependiendo de su --
varianteopción.

5https://www.offensive-security.com/kali-linux/kali-linux-iso-of-doom/
6https://www.offensive-security.com/kali-linux/kali-linux-evil-wireless-access-point/
7https://live-team.pages.debian.net/live-manual/html/live-manual/index.en.html

242 Kali Linux revelado


El envoltorio crea elconfiguracióndirectorio combinando archivos dekali-config/comúny
kali-config/variant-X, dóndeXes el nombre de una variante dada con --varianteparámetro. Cuando la
opción no se da explícitamente, se utilizapor defectocomo el nombre de la variante.

Elkali-configEl directorio contiene directorios para los entornos de escritorio más comunes:

• e17para la iluminación;
• gnomopara GNOMO;

• i3wmpara el gestor de ventanas correspondiente;

• kdepara KDE;

• lxdepara LXDE;
• compañeropara el entorno de escritorio Mate;

• xfcepara Xfce.

Puede crear fácilmente una imagen en vivo de Kali utilizando KDE como entorno de escritorio con este único
comando:

# . /build.sh --variant kde --verbose

Este concepto devariantepermite algunas personalizaciones predefinidas de alto nivel, pero si se toma el
tiempo de leer elManual del sistema Debian Live8, descubrirá muchas otras formas de personalizar las
imágenes, simplemente cambiando el contenido del subdirectorio apropiado dekali-config. Las siguientes
secciones proporcionarán algunos ejemplos.

9.3.3. Cambio del conjunto de paquetes instalados

Una vez lanzado,construcción en vivoinstala todos los paquetes enumerados enlistas de paquetes/*.list.chroot
archivos La configuración predeterminada que proporcionamos incluye unlistas de paquetes/kali.list.chroot
archivo, que enumerakali-linux-predeterminado(el metapaquete principal que incluye todos los paquetes de
Kali). Puede comentar este paquete y poner otro metapaquete de su elección o incluir un conjunto preciso de
otros paquetes. También puede combinar ambos enfoques comenzando con un metapaquete y agregando
paquetes complementarios de su elección.

Conlistas de paquetes, solo puede incluir paquetes que ya están disponibles en el repositorio oficial de
Kali. Pero si tiene paquetes personalizados, puede incluirlos en la imagen en vivo colocando el
. debutantearchivos en unpaquetes.chrootdirectorio (por ejemplokali-config/config-gnome/paquetes.
chrootsi construye la variante GNOME).

Los metapaquetes son paquetes vacíos cuyo único propósito es tener muchas dependencias con otros
paquetes. Facilitan la instalación de conjuntos de paquetes que a menudo desea instalar juntos. Elkali-metaEl
paquete fuente construye todos los metapaquetes provistos por Kali Linux:

8https://live-team.pages.debian.net/live-manual/html/live-manual.en.html

Capítulo 9 — Uso avanzado 243


• kali-linux-core: el sistema base (lo extraen todos los demás metapaquetes)

• kali-linux-headless: las herramientas de línea de comandos de instalación predeterminadas de Kali Linux

• kali-linux-default: la instalación predeterminada de Kali Linux, tanto gráfica como de línea de comandos

• kali-linux-large: conjunto de herramientas de gama más amplia, que no se utilizan con tanta frecuencia

• kali-linux-everything: metapaquete de todos los metapaquetes y otros paquetes (casi todo lo que
proporciona Kali, ¡así que es realmente enorme!)

• kali-tools-top10: las diez herramientas más populares

• kali-tools-web: herramientas de evaluación de aplicaciones web

• kali-tools-passwords: herramientas para descifrar contraseñas

• kali-tools-wireless: La colección de herramientas inalámbricas de evaluación y análisis 802.11,


Bluetooth, RFID y SDR

• kali-tools-forensics: herramientas forenses (búsqueda de pruebas de lo sucedido)

• kali-tools-802-11: herramientas inalámbricas de evaluación y análisis

• kali-tools-bluetooth: herramientas centradas en Bluetooth

• kali-tools-crypto-stego: herramientas de criptografía y esteganografía

• kali-tools-crypto-fuzzing: herramientas de ataque fuzzing

• kali-tools-gpu: herramientas impulsadas por GPU (herramientas que utilizan la potencia informática disponible en
su tarjeta gráfica)

• kali-tools-hardware: herramientas diseñadas para atacar hardware

• kali-tools-rfid: herramientas de identificación por radiofrecuencia (RFID)

• kali-tools-sdr: herramientas de radio definidas por software (SDR)

• kali-tools-voip: herramientas de voz sobre IP

• kali-tools-windows-resources: archivos binarios precompilados de Microsoft Windows

Puede aprovechar estos metapaquetes cuando crea listas de paquetes personalizadas paraconstrucción en vivo. La lista
completa de metapaquetes disponibles y las herramientas que incluyen se puede encontrar enhttps://herramientas.kali.
org/kali-metapaquetes

Debconf Preconfiguración de Puede proporcionar archivos preconfigurados de Debconf (consulte la sección4.3.2, “Creación de un archivo
Paquetes instalados preconfigurado” [página 97] para obtener explicaciones) comopreconfiguración/*.cfgarchivos Se utilizarán para configurar
los paquetes instalados en el sistema de archivos en vivo.

244 Kali Linux revelado


9.3.4. Uso de ganchos para modificar el contenido de la imagen

construcción en vivoofrece ganchos que se pueden ejecutar en diferentes pasos del proceso de construcción. Los
ganchos chroot son scripts ejecutables que instalas comoganchos/en vivo/*.chrootarchivos en su árbol de configuración
y que se ejecutan dentro del chroot. Mientraschrootes el comando que le permite cambiar temporalmente el
directorio raíz del sistema operativo a un directorio de su elección, también se usa por extensión para designar un
directorio que aloja un árbol de sistema de archivos completo (alternativo). Este es el caso aquí conconstrucción en vivo
, donde el directorio chroot es el directorio donde se prepara el sistema de archivos en vivo. Dado que las
aplicaciones iniciadas en un chroot no pueden ver fuera de ese directorio, lo mismo ocurre con los ganchos chroot:
solo puede usar y modificar cualquier cosa disponible en ese entorno chroot. Confiamos en esos ganchos para
realizar múltiples personalizaciones específicas de Kali (ver
kali-config/common/hooks/live/kali-hacks.chroot).

Ganchos binarios (ganchos/en vivo/*.binario) se ejecutan en el contexto del proceso de compilación (y no se modifican
en ningún lugar) al final del proceso. Puede modificar el contenido de la imagen ISO construida pero no del sistema
de archivos en vivo ya que en este punto ya se ha generado. Usamos esta función en Kali para realizar algunos
cambios en la configuración isolinux predeterminada generada por live-build. Para
ejemplo, verkali-config/common/hooks/live/persistence.binarydonde añadimos la bota
Entradas de menú que permiten la persistencia.

9.3.5. Adición de archivos en la imagen ISO o en el sistema de archivos en vivo

Otra personalización muy común es agregar archivos en el sistema de archivos en vivo o en la imagen
ISO.

Puede agregar archivos al sistema de archivos en vivo colocándolos en su ubicación esperada debajo
delincluye.chrootdirectorio de configuración. Por ejemplo, proporcionamoskali-config/común/
incluye.chroot/usr/lib/live/config/0031-kali-contraseña, que termina como/usr/lib/live/config/0031-kali-
contraseñaen el sistema de archivos en vivo.

Ganchos de arranque vivo Scripts instalados como/lib/live/config/XXXX-nombreson ejecutados por el script de inicio del paquete
live-boot. Reconfiguran muchos aspectos del sistema para adaptarlos a un sistema en vivo. Puede
agregar sus propios scripts para personalizar su sistema en vivo en tiempo de ejecución: se usa
especialmente para implementar un parámetro de arranque personalizado, por ejemplo.

Puede agregar archivos a la imagen ISO colocándolos en su ubicación esperada debajo delincluye
binariodirectorio de configuración. Por ejemplo, proporcionamoskali-config/common/includes.binary/
isolinux/splash.pngpara anular la imagen de fondo utilizada por el gestor de arranque de Isolinux (que se
almacena en/isolinux/splash.pngen el sistema de archivos de la imagen ISO).

Capítulo 9 — Uso avanzado 245


9.4. Agregar persistencia a Live ISO con una llave USB

9.4.1. La función de persistencia: explicaciones

A continuación, analizaremos los pasos necesarios para agregar persistencia a una llave USB Kali. La naturaleza de un
sistema vivo es ser efímero. Todos los datos almacenados en el sistema en vivo y todos los cambios realizados se pierden
cuando reinicia. Para remediar esto, puede usar una función dearranque en vivollamado persistencia, que se habilita
cuando los parámetros de arranque incluyen elpersistenciapalabra clave.

Dado que modificar el menú de inicio no es una tarea trivial, la imagen en vivo de Kali incluye dos entradas de menú de manera
predeterminada que habilitan la persistencia: Persistencia de USB en vivo y Persistencia cifrada de USB en vivo, como se muestra en
la Figura9.1, “Entradas del menú de persistencia” [página 246].

Figura 9.1Entradas del menú de persistencia

Cuando esta función está habilitada,arranque en vivoescaneará todas las particiones en busca de sistemas de
archivos etiquetadospersistencia (que puede anularse con elpersistencia-etiqueta=valorparámetro de arranque) y el
instalador configurará la persistencia de los directorios que se enumeran en elpersistencia.confarchivo encontrado en
esa partición (un directorio por línea). El valor especial “/Unión"permite la persistencia completa de todos los
directorios con unmontaje de unión, una superposición que almacena solo los cambios en comparación con el
sistema de archivos subyacente. Los datos de los directorios persistentes se almacenan en el sistema de archivos
que contiene el correspondientepersistencia.confarchivo.

246 Kali Linux revelado


9.4.2. Configuración de persistencia sin cifrar en una llave USB

En esta sección, asumimos que ha preparado una llave USB Kali en vivo siguiendo las instrucciones en la sección
2.1.4, “Copia de la imagen en un DVD-ROM o llave USB” [página 19] y que ha utilizado una llave USB lo
suficientemente grande como para contener la imagen ISO (aproximadamente 4 GB) y los datos de los directorios
que desea conservar. También asumimos que la llave USB es reconocida por Linux como /desarrollo/sdby que solo
contiene las dos particiones que forman parte de la imagen ISO por defecto (/dev/sdb1y /desarrollo/sdb2). Tenga
mucho cuidado al realizar este procedimiento. Puede destruir fácilmente datos importantes si vuelve a particionar
el disco equivocado.

Para agregar una nueva partición, debe saber el tamaño de la imagen que copió para que pueda hacer que la
nueva partición comience después de la imagen en vivo. Entonces usase separaronpara crear realmente la partición.
Los siguientes comandos analizan la imagen ISO denominadakali-linux-2020.3-live-amd64.iso, que se supone que
también está presente en la llave USB:

# parted /dev/sdb imprimir Modelo:


SanDisk Cruzer Glide (scsi) Disco /dev/sdb:
16,0 GB
Tamaño del sector (lógico/físico): 512B/512B Tabla de
particiones: msdos
Indicadores de disco:

Número Comenzar Fin Tamaño Tipo sistema de archivos banderas

1 32,8 kB 3516 MB 3516 MB principal 3516 bota, oculto


2 MB 3517 MB 754 kB principal
# start=$(du --block-size=1MB kali-linux-2020.3-live-amd64.iso | awk '{imprimir $1}')
# echo ”El tamaño de la imagen es $start MB” El
tamaño de la imagen es de 3518 MB
# parted -a óptimo /dev/sdb mkpart primario ”${start}MB” 100%
Información: Es posible que deba actualizar /etc/fstab.

# parted /dev/sdb imprimir Modelo:


SanDisk Cruzer Glide (scsi) Disco /dev/sdb:
16,0 GB
Tamaño del sector (lógico/físico): 512B/512B Tabla de
particiones: msdos
Indicadores de disco:

Número Comenzar Fin Tamaño Tipo sistema de archivos banderas

1 32,8 kB 3516 MB 3516 MB principal 3516 bota, oculto


2 MB 3517 MB 754 kB principal 3518 MB
3 16,0 GB 12,5 GB principal

con el nuevo/dev/sdb3partición en su lugar, formatéela con un sistema de archivos ext4 etiquetado como
"persistencia" con la ayuda delmkfs.ext4comando (y su -Lopción para establecer la etiqueta). A continuación, la
partición se monta en el/mntdirectorio y agregas el requeridopersistencia.confarchivo de configuración. Como

Capítulo 9 — Uso avanzado 247


siempre, tenga cuidado al formatear cualquier disco. Podría perder información valiosa si formatea el disco
o la partición incorrectos.

# mkfs.ext4 -L persistencia /dev/sdb3 mke2fs


1.45.6 (20 de marzo de 2020)
Creación de un sistema de archivos con 3049472 bloques de 4k y 762528 inodos UUID del
sistema de archivos: cedc7589-a002-4aae-8963-f5197d6d9d4a Copias de seguridad de
Superblock almacenadas en bloques:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208

Asignación de tablas de grupo: hecho Escritura


de tablas de inodos: hecho Creación de diario
(16384 bloques): hecho
Escribir superbloques e información de contabilidad del sistema de archivos: hecho
# montar /dev/sdb3 /mnt
# echo ”/unión” >/mnt/persistencia.conf
# ls -l /mnt
20 totales
drwx------ 2 raíz raíz 16384 10 de mayo 13:31 perdido+encontrado
- rw-r--r-- 1 raíz raíz 8 10 de mayo 13:34 persistencia.conf
# desmontar /mnt

La llave USB ahora está lista y se puede iniciar con la entrada del menú de inicio "Persistencia de USB en vivo".

9.4.3. Configuración de la persistencia cifrada en una llave USB

arranque en vivotambién puede manejar sistemas de archivos persistentes en particiones cifradas. Por lo tanto, puede
proteger los datos de sus directorios persistentes creando una partición cifrada LUKS que contenga los datos
persistentes.

Los pasos iniciales son los mismos hasta la creación de la partición, pero en lugar de formatearla con un sistema de
archivos ext4, utiliceconfiguración de criptaspara inicializarlo como un contenedor LUKS. Luego abra ese contenedor y
configure el sistema de archivos ext4 de la misma manera que en la configuración no encriptada, pero en lugar de
usar el/desarrollo/sdb3partición, utilice la partición virtual creada porconfiguración de criptas. Esta partición virtual
representa el contenido descifrado de la partición cifrada, que está disponible en/desarrollador/mapeador
bajo el nombre que usted le asignó. En el siguiente ejemplo, usaremos el nombrekali_persistencia.
Nuevamente, asegúrese de estar utilizando la unidad y la partición correctas.

# cryptsetup --verbose --verify-passphrase luksFormat /dev/sdb3

¡ADVERTENCIA!

========
Esto sobrescribirá los datos en /dev/sdb3 de forma irrevocable.

¿Está seguro? (Escribir en mayúsculas sí):SÍ Ingrese


la frase de contraseña para /dev/sdb3:

248 Kali Linux revelado


Verificar frase de contraseña:
Ranura de llave 0 creada.
Comando exitoso.
# cryptsetup luksOpen /dev/sdb3 kali_persistencia Ingrese
la frase de contraseña para /dev/sdb3:
# mkfs.ext4 -L persistencia /dev/mapper/kali_persistencia mke2fs
1.45.6 (20 de marzo de 2020)
Creación de un sistema de archivos con 3045376 bloques de 4k y 761856 inodos UUID del
sistema de archivos: 22adeb99-e32d-43e7-b9df-f04389dd0ba4 Copias de seguridad de
Superblock almacenadas en bloques:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208

Asignación de tablas de grupo: hecho Escritura


de tablas de inodos: hecho Creación de diario
(16384 bloques): hecho
Escribir superbloques e información de contabilidad del sistema de archivos: hecho

# montar /dev/mapper/kali_persistencia /mnt


# echo ”/unión” >/mnt/persistencia.conf
# desmontar /mnt
# cryptsetup luksCerrar /dev/mapper/kali_persistence

9.4.4. Uso de múltiples almacenes de persistencia

Si tiene múltiples casos de uso para su sistema Kali en vivo, puede usar múltiples sistemas de archivos con diferentes
etiquetas e indicar en la línea de comando de arranque qué (conjunto de) sistemas de archivos deben usarse para la
función de persistencia: esto se hace con la ayuda de lapersistencia-etiqueta=etiquetaparámetro de arranque.

Supongamos que eres un pentester profesional. Cuando trabaja para un cliente, utiliza una partición de
persistencia cifrada para proteger la confidencialidad de sus datos en caso de que la clave USB sea robada o
comprometida. Al mismo tiempo, desea poder exhibir Kali y algún material promocional almacenado en una
partición sin cifrar de la misma llave USB. Dado que no desea editar manualmente los parámetros de inicio
en cada inicio, desea crear una imagen en vivo personalizada con entradas de menú de inicio dedicadas.

El primer paso es construir el ISO en vivo personalizado (siguiente sección9.3, “Creación de imágenes ISO
Kali Live personalizadas” [página 241] y en particular apartado9.3.4, “Uso de ganchos para modificar el
contenido de la imagen” [página 245]). La personalización principal es modificarkali-config/common/hooks/live/
persistence-menu.binarypara que se vea así (tenga en cuenta laetiqueta de persistenciaparámetros):

#!/bin/sh

si [ ! -d isolinux]; entonces
cd binario
fi

Capítulo 9 — Uso avanzado 249


gato >>isolinux/live.cfg <<FIN

etiqueta demostración en vivo

etiqueta de menú L̂ive USB con datos de


demostración linux /live/vmlinuz
initrd /live/initrd.img
agregar arranque = nombre de usuario en vivo = nombre de host raíz = etiqueta de persistencia de kali = persistencia de demostración

etiqueta trabajo en vivo


etiqueta de menú L̂ive USB con datos de
trabajo linux /live/vmlinuz
initrd /live/initrd.img
agregar boot = nombre de usuario en vivo = nombre de host raíz = etiqueta de persistencia de kali = persistencia de trabajo-
aencriptación = luks persistencia

FIN

A continuación, crearemos nuestra ISO personalizada y la copiaremos en la llave USB. Luego crearemos e inicializaremos
las dos particiones y sistemas de archivos que se utilizarán para la persistencia. La primera partición no está cifrada
(etiquetada como "demo") y la segunda está cifrada (etiquetada como "trabajo"). Asumiendo/desarrollo/sdbes nuestra llave
USB y el tamaño de nuestra imagen ISO personalizada es de 3000 MB, se vería así:

# partió /dev/sdb mkpart primario 3000 MB 55%


# parted /dev/sdb mkpart primario 55% 100%
# mkfs.ext4 -L demostración /dev/
sdb3 [...]
# montar /dev/sdb3 /mnt
# echo ”/unión” >/mnt/persistencia.conf
# desmontar /mnt
# cryptsetup --verbose --verify-passphrase luksFormat /dev/sdb4 [...]

# cryptsetup luksOpen /dev/sdb4 kali_persistencia [...]

# mkfs.ext4 -L trabajo /dev/mapper/kali_persistencia [...]

# montar /dev/mapper/kali_persistencia /mnt


# echo ”/unión” >/mnt/persistencia.conf
# desmontar /mnt
# cryptsetup luksCerrar /dev/mapper/kali_persistence

Y eso es todo. ¡Ahora puede iniciar la llave USB y seleccionar entre las nuevas entradas del menú de inicio según sea necesario!

Agregar una contraseña nuclear Kali ofrece unacryptsetup-nuke-contraseñapaquete que modificaconfiguración de criptasprimeros scripts de
para mayor seguridad arranque para implementar una nueva función: puede configurar uncontraseña nuclearque, cuando se usa,
destruirá todas las claves utilizadas para administrar la partición cifrada.

250 Kali Linux revelado


Esto puede ser útil cuando viaja mucho y necesita una forma rápida de asegurarse de que sus
datos no se puedan recuperar. Al iniciar, simplemente escriba la contraseña nuclear en lugar
de la real y entonces será imposible que nadie (incluido usted) acceda a sus datos.

Antes de usar esa función, es aconsejable hacer una copia de seguridad de sus claves de
cifrado y guardarlas en un lugar seguro.

Puede configurar una contraseña nuke con este comando (asumiendo que tiene el
paquete instalado):

# dpkg-reconfigure cryptsetup-nuke-contraseña

Puede encontrar más información sobre esta función en el siguiente tutorial:

mihttps://www.kali.org/tutorials/nuke-kali-linux-luks/

9.5. Resumen

En este capítulo, aprendimos sobre la modificación de los paquetes fuente de Kali, que son los componentes
básicos de todas las aplicaciones enviadas en Kali. También descubrimos cómo personalizar e instalar el
kernel de Kali. Luego discutimos elconstrucción en vivoentorno y discutió cómo construir un Kali Linux ISO
personalizado. También demostramos cómo crear instalaciones Kali USB cifradas y no cifradas.

9.5.1. Resumen de consejos para modificar paquetes de Kali

La modificación de los paquetes de Kali suele ser una tarea para los colaboradores y desarrolladores de Kali, pero es
posible que tenga necesidades específicas que los paquetes oficiales no satisfacen y saber cómo crear un paquete
modificado puede ser muy valioso, especialmente si desea compartir sus cambios, implementarlos internamente. o
revertir limpiamente el software a un estado anterior.

Cuando necesite modificar una pieza de software, puede ser tentador descargar la fuente, realizar los cambios y utilizar el
software modificado. Sin embargo, si su aplicación requiere una configuración de todo el sistema (por ejemplo, con un
hacer instalarpaso), entonces serácontaminarsu sistema de archivos con archivos desconocidos para

dpkgy pronto creará problemas que las dependencias de paquetes no pueden detectar. Además, este tipo de
modificación de software es más tediosa de compartir.

Al crear un paquete modificado, el proceso general es siempre el mismo: tome el paquete fuente,
extráigalo, realice los cambios y luego cree el paquete. Para cada paso, a menudo hay múltiples
herramientas que pueden manejar cada tarea.

Para comenzar a reconstruir un paquete Kali, primero descargue el paquete fuente, que se compone de un
* . dsc(Control de fuente de Debian) y de archivos adicionales a los que se hace referencia desde ese archivo de control.

Capítulo 9 — Uso avanzado 251


Los paquetes de origen se almacenan en espejos accesibles por HTTP. La forma más eficiente de obtenerlos
es confuente adecuadanombre-del-paquete-fuente, que requiere que agregue undeb-srclínea a la/etc/apt/sources.listy
actualice los archivos de índice conactualización adecuada.

Además, puede utilizardget(desde eldevscriptspaquete) para descargar un.dscarchivo directamente junto con
los archivos que lo acompañan. Para paquetes específicos de Kali cuyas fuentes están alojadas en un
repositorio de Git engitlab.com/kalilinux/paquetes9, puede recuperar las fuentes conclonar
https://gitlab.com/kalilinux/packages/paquete fuente.git.

Después de descargar las fuentes, instale los paquetes enumerados en las dependencias de compilación del
paquete fuente consudo apt build-dep./. Este comando debe ejecutarse desde el directorio de origen del paquete.

Las actualizaciones de un paquete fuente consisten en una combinación de algunos de los siguientes pasos:

• El primer paso requerido es cambiar el número de versión para distinguir su paquete del
original condch --localidentificador de versión, o modificar otros detalles del paquete con
dch.

• Aplicar un parche conparche -p1 <archivo de parcheo modificandocolchaSerie de parches de .

• Ajustar las opciones de compilación, que generalmente se encuentran en el paquetedebian/reglasarchivo u otros


archivos en elDebian/directorio.

Después de modificar un paquete fuente, puede compilar el paquete binario condpkg-buildpackage


- nosotros -uc -bdel directorio de origen, que generará un paquete binario sin firmar. El paquete-
La edad se puede instalar condpkg -inombre-paquete_versión_arch.deb.

9.5.2. Resumen de consejos para volver a compilar el kernel de Linux

Como usuario avanzado, es posible que desee volver a compilar el kernel de Kali. Es posible que desee reducir el kernel de
Kali estándar, que está cargado con muchas funciones y controladores, agregar controladores o funciones no estándar o
aplicar parches de kernel. Sin embargo, tenga cuidado: un kernel mal configurado puede desestabilizar su sistema y debe
estar preparado para aceptar que Kali no puede garantizar actualizaciones de seguridad para su kernel personalizado.

Para la mayoría de las modificaciones del kernel, deberá instalar algunos paquetes coninstalación apta
build-essential libncurses5-dev fakeroot.

El comandoapt-cache buscar ^linux-fuentedebe enumerar la última versión del kernel empaquetada


por Kali, yapt install linux-source-número de versióninstala un archivo comprimido de la fuente del
núcleo en/usuario/origen.
Los archivos de origen deben extraerse conalquitrán -xafen un directorio que no sea/usuario/origen(como
~/núcleo).

Cuando llegue el momento de configurar su kernel, tenga en cuenta estos puntos:

9https://gitlab.com/kalilinux/paquetes

252 Kali Linux revelado


• A menos que sea un usuario avanzado, primero debe completar un archivo de configuración del
kernel. El método preferido es tomar prestada la configuración estándar de Kali copiando/bota/
config-versión-cadenaa~/kernel/linux-fuente-número de versión/.config. alterna-
tivamente, puede utilizarhacerarquitectura_defconfigpara obtener una configuración razonable para la
arquitectura dada.

• El basado en textohacer menuconfigherramienta de configuración del kernel leerá el.configuracióny presentarle


todos los elementos de configuración en un menú enorme por el que puede navegar. La selección de un
artículo le muestra su documentación, sus valores posibles y le permite ingresar un nuevo valor.

Cuando se ejecuta desde el directorio fuente de su kernel,hacer limpiaeliminará los archivos compilados previamente
yhacer paquete de deudagenerará hasta cinco paquetes Debian. Elimagen-linux-versión.debutanteEl archivo contiene la
imagen del núcleo y los módulos asociados.

Para usar realmente el kernel construido, instale los paquetes requeridos condpkg -iarchivo.deb. Se
requiere el paquete “linuximage”; solo tiene que instalar el paquete "linux-headers" si tiene algunos
módulos de kernel externos para compilar, que es el caso si tiene algunos paquetes "*-dkms"
instalados (verifique condpkg -l ”*-dkms” | grep^ii). Los otros paquetes generalmente no son necesarios (¡a
menos que sepa por qué los necesita!).

9.5.3. Resumen de consejos para crear imágenes ISO Kali Live personalizadas

Las imágenes ISO oficiales de Kali están construidas conconstrucción en vivo10, que es un conjunto de scripts que permite la
automatización y personalización completas de todas las facetas de la creación de imágenes ISO.

Su sistema Kali debe estar completamente actualizado antes de usar la construcción en vivo.

La configuración de compilación en vivo de Kali se puede recuperar de los repositorios Git de Kali
con dos comandos: apt install curl git live-buildseguido porclonar
https://gitlab.com/kalilinux/build-scripts/live-build-config.git

Para generar una imagen ISO en vivo de Kali actualizada pero sin modificar, simplemente ejecute./compilar.sh --verbose
. La compilación tardará mucho tiempo en completarse, ya que descargará todos los paquetes que se incluirán.
Cuando haya terminado, encontrará la nueva imagen ISO en laimágenesdirectorio. si agregas--variantevariante
a la línea de comando, construirá la variante dada de la imagen ISO de Kali. Las diversas variantes
están definidas por sus directorios de configuración.kali-config/variante-*. La imagen principal es laXfce
variante.

Hay varias formas de personalizar su ISO modificando el directorio de configuración de live-build:

• Los paquetes pueden agregarse (o eliminarse) de un ISO en vivo modificandolistas de paquetes/*.


lista.chrootarchivos

• Los paquetes personalizados se pueden incluir en la imagen en vivo colocando el.debutantearchivos en un


paquetes chrootdirectorio. Su instalación puede preconfigurarse conpreconfiguración/*.cfgarchivos

10https://live-team.pages.debian.net/live-manual/html/live-manual/index.en.html

Capítulo 9 — Uso avanzado 253


Traducido del inglés al español - www.onlinedoctranslator.com

• Puede agregar archivos al sistema de archivos en vivo colocándolos en su ubicación esperada debajo del
incluye.chrootdirectorio de configuración.

• Puede ejecutar secuencias de comandos durante el proceso de configuración de chroot del sistema en vivo instalándolos como

ganchos/en vivo/*.chrootarchivos También puede ejecutar secuencias de comandos en el momento del


arranque de la imagen en vivo generada: debe hacer arreglos para que se instalen en/usr/lib/live/config/XXXX-
nombre, por ejemplo, confiando en elincluye.chrootdirectorio de configuración.

• ElManual de sistemas vivos de Debian11es una excelente referencia para la configuración y las pruebas de compilación en
vivo.

Configuración de persistencia cifrada y no cifrada en una llave USB: es bastante simple crear una
instalación estándar de Kali Live USB. Aunque el proceso puede parecer sintácticamente complejo, es
relativamente sencillo agregar persistencia cifrada y no cifrada a su instalación portátil para ampliar
significativamente su funcionalidad.

En el próximo capítulo (capítulo10, “Kali Linux en la empresa” [página 258]), discutiremos cómo Kali escala a
la empresa. Hablaremos sobre la administración de la configuración y le mostraremos cómo extender y
personalizar Kali Linux de una manera que sea fácil de implementar, ya sea que tenga un par de máquinas o
varios miles.

11https://live-team.pages.debian.net/live-manual/html/live-manual/index.en.html

254 Kali Linux revelado


Palabras clave

instalación de PXE
Configuración
gestión
pila de sal
Bifurcación de paquetes de Kali
Configuración
paquetes
Repositorio de paquetes
Capítulo

Kali Linux en el 10
Empresa
Contenido

Instalación de Kali Linux a través de la red (arranque PXE)258 Aprovechamiento de la gestión de la configuración261

Ampliación y personalización de Kali Linux268 Resumen279


Hasta ahora, hemos visto que Kali es un derivado de Debian extremadamente capaz y seguro que proporciona
funciones de cifrado y seguridad de potencia industrial, gestión avanzada de paquetes, capacidad multiplataforma
y (por lo que es más conocido) un arsenal de herramientas de clase mundial para el profesional de la seguridad. Lo
que podría no ser obvio es cómo Kali escala más allá del escritorio a implementaciones de mediana o gran escala e
incluso al nivel empresarial. En este capítulo, le mostraremos qué tan bien Kali puede escalar más allá del escritorio,
brindando administración centralizada y control a nivel empresarial sobre múltiples instalaciones de Kali Linux. En
resumen, después de leer este capítulo, podrá implementar rápidamente sistemas Kali de alta seguridad
preconfigurados para sus necesidades específicas y mantenerlos sincronizados gracias a la instalación
(semiautomática) de actualizaciones de paquetes de Kali.

Este nivel de escala requiere varios pasos, incluido el inicio de un arranque de red PXE, el uso de una herramienta
de administración de configuración avanzada (SaltStack), la capacidad de bifurcar y personalizar paquetes y la
implementación de un repositorio de paquetes. Cubriremos cada paso en detalle, le mostraremos cómo eliminar el
"trabajo pesado" e implementar, administrar y mantener multitud de instalaciones personalizadas de Kali Linux con
relativa facilidad. Como si eso no fuera suficiente, agregaremos una multitud de minions para ayudarlo a
administrar su imperio.

10.1. Instalación de Kali Linux a través de la red (arranque PXE)

Como hemos visto en capítulos anteriores, el proceso básico de instalación de Kali Linux es sencillo una vez
que conoce el camino. Pero si tiene que instalar Kali en varias máquinas, la configuración estándar puede
ser bastante tediosa. Afortunadamente, puede iniciar el procedimiento de instalación de Kali iniciando una
computadora a través de la red. Esto le permite instalar Kali rápida y fácilmente en muchas máquinas a la
vez.

Primero, deberá iniciar su máquina de destino desde la red. Esto lo facilita el Preboot eXecution Environment
(PXE), una interfaz cliente/servidor diseñada para arrancar cualquier máquina conectada a la red incluso si
no tiene un sistema operativo instalado. La configuración del arranque de red PXE requiere que configure al
menos un servidor de protocolo trivial de transferencia de archivos (TFTP) y un servidor DHCP/BOOTP.
También necesitará un servidor web si desea alojar undebconfarchivo de preconfiguración que se utilizará
automáticamente en el proceso de instalación.

Afortunadamente,dnsmasqmaneja DHCP y TFTP para que pueda confiar en un solo servicio para configurar todo lo
que necesita. Y el servidor web Apache está instalado (pero no habilitado) de forma predeterminada en los
sistemas Kali.

DHCP y TFTP separados Para configuraciones más complejas,dnsmasqEl conjunto de funciones de puede ser demasiado
servicios limitado o es posible que desee habilitar el arranque PXE en su red principal que ya ejecuta un
servicio DHCP. En ambos casos, deberá configurar servicios DHCP y TFTP separados.

El manual de instalación de Debian cubre la configuración deisc-dhcp-servidorytftpd-hpapara


arranque PXE.

mihttps://www.debian.org/releases/stable/amd64/ch04s05

258 Kali Linux revelado


Para configurardnsmasq, primero debe configurarlo a través de/etc/dnsmasq.conf. Una configuración básica
consta de solo unas pocas líneas clave:

# Interfaz de red para manejar


interface=eth0
# Opciones de DHCP
# Rango de IP para asignar dhcp-
range=192.168.101.100,192.168.101.200,12h
# Gateway para anunciar a los clientes dhcp-
option=option:router,192.168.101.1
# Servidores DNS para anunciar a los clientes dhcp-
option=option:dns-server,8.8.8.8,8.8.4.4
# Archivo de arranque para anunciar a los
clientes dhcp-boot=pxelinux.0
# opciones TFTP
habilitar-tftp
# Directorio de alojamiento de archivos para
servir tftp-root=/tftpboot/

Con/etc/dnsmasq.confconfigurado, deberá colocar los archivos de inicio de instalación en el


/tftpboot/directorio. Kali Linux proporciona un archivo de archivos dedicado a este propósito que se puede
descomprimir directamente en/arranque tftp/. Simplemente seleccione entre métodos de instalación de 32 bits
(i386) y 64 bits (amd64) y estándar o gráfico (gtk) para su máquina de destino y elija el archivo adecuado:

mihttp://http.kali.org/dists/kali-rolling/main/installer-amd64/current/images/netboot/gtk/netboot.tar.gz

mihttp://http.kali.org/dists/kali-rolling/main/installer-amd64/current/images/netboot/netboot.tar.gz

mi http://http.kali.org/dists/kali-rolling/main/installer-i386/current/images/netboot/gtk/netboot.tar.gz

mi http://http.kali.org/dists/kali-rolling/main/installer-i386/current/images/netboot/netboot.tar.gz

Una vez que haya seleccionado el archivo, cree/arranque tftp/, descargue el archivo y descomprímalo en ese
directorio:

# mkdir /tftpboot
# cd /tftpboot
# wget http://http.kali.org/dists/kali-rolling/main/installer-amd64/current/images/
anetboot/netboot.tar.gz
# tar xf netboot.tar.gz
# ls-l
totales 25896
drwxrwxr-x 3 raíz raíz 4096 6 de mayo 04:43 instalador de debian

Capítulo 10: Kali Linux en la empresa 259


lrwxrwxrwx 1 raíz raíz 47 mayo 6 04:43 ldlinux.c32 -> debian-installer/amd64/boot
a-pantallas/ldlinux.c32
- rw-r--r-- 1 raíz raíz 26507247 Mayo 6 04:43 netboot.tar.gz
lrwxrwxrwx 1 raíz raíz 33 de mayo 6 04:43 pxelinux.0 -> debian-installer/amd64/
apxelinux.0
lrwxrwxrwx 1 raíz raíz 35 de mayo 6 04:43 pxelinux.cfg -> debian-installer/amd64/
apxelinux.cfg
- rw-rw-r-- 1 raíz raíz 71 mayo 6 04:43 versión.info

Los archivos desempaquetados incluyen elpxelinuxgestor de arranque, que utiliza los mismos archivos de
configuración que syslinuxyisolinux. Debido a esto, puede modificar los archivos de arranque endebian-installer/
amd64/ pantallas de arranque/como lo haría al generarimágenes ISO en vivo de Kali Linux personalizadas.

Por ejemplo, suponiendo que haya elegido el instalador textual, puede agregar parámetros de arranque para
preconfigurar los valores de idioma, país, mapa de teclas, nombre de host y nombre de dominio. También puede
dirigir el instalador a una URL externa preconfigurada y configurar el tiempo de espera para que el arranque se
realice automáticamente si no se presiona ninguna tecla en 5 segundos. Para lograr esto, primero modificaría
eldebian-installer/amd64/txt.cfgarchivo:

instalación de etiquetas

etiqueta de menú Înstall


kernel debian-installer/amd64/linux
agregar vga=788 initrd=debian-installer/amd64/initrd.gz --- silenciosoidioma=en
apaís=US keymap=us hostname=kali domain= url=http://192.168.101.1/
apreseed.cfg

Luego, modificaría eldebian-installer/amd64/syslinux.cfgarchivo para ajustar el tiempo de espera:

# Configuración DI versión 2.0


# ruta de búsqueda de las bibliotecas de soporte de c32 (libcom32, libutil, etc.) ruta
debian-installer/amd64/boot-screens/
incluir debian-installer/amd64/boot-screens/menu.cfg default debian-
installer/amd64/boot-screens/vesamenu.c32 aviso 0

tiempo de espera 50

Armado con la capacidad de iniciar cualquier máquina desde la red a través de PXE, puede aprovechar todas
las funciones descritas en la sección4.3, “Instalaciones desatendidas” [página 95], lo que le permite realizar
un inicio completo, preconfiguración e instalación desatendida en varias computadoras sin medios de inicio
físicos. Además, no olvide la flexibilidad del parámetro de arranquepreconfiguración/url=http://servidor/
preseed.cfg (ni el uso de laURLalias), que le permite establecer un archivo de preconfiguración basado en la
red.

260 Kali Linux revelado


10.2. Aprovechamiento de la gestión de la configuración

Con la capacidad de instalar Kali en varias computadoras muy rápidamente, necesitará ayuda para administrar esas
máquinas después de la instalación. Puede aprovechar las herramientas de administración de configuración para
administrar máquinas o configurar computadoras de reemplazo en cualquier estado deseado.

Kali Linux contiene muchas herramientas de administración de configuración populares que quizás desee usar (
Ansible,cocinero,Marioneta,pila de sal, etc.), pero en esta sección solo cubriremospila de sal.

mihttps://www.saltstack.com/

10.2.1. Configuración de SaltStack

SaltStack es un servicio de administración de configuración centralizado: unmaestro de la salmaneja muchos


secuaces de sal. Debes instalar elmaestro de la salpaquete en un servidor al que pueden acceder todos los hosts
que desea administrar ysal-minionen los hosts que desea administrar. Cada siervo debe saber dónde encontrar a
su maestro. Simplemente edite/etc./sal/miniony establecer elmaestrokey al nombre DNS (o dirección IP) del maestro
Salt. Tenga en cuenta que Salt usa YAML como formato para sus archivos de configuración.

esbirro#vim /etc/salt/minion esbirro#grep


master /etc/salt/minion maestro:
192.168.122.105

Cada minion tiene un identificador único almacenado en/etc/sal/minion_id, que por defecto es su nombre de host. Este
identificador de subordinado se utilizará en las reglas de configuración y, como tal, es importante configurarlo
correctamente antes de que el subordinado abra su conexión con el maestro:

esbirro#echo kali-scratch >/etc/salt/minion_id esbirro#


systemctl habilitar salt-minion esbirro#systemctl iniciar
sal-minion

Cuando elsal-minionel servicio se está ejecutando, intentará conectarse al maestro de Salt para intercambiar
algunas claves criptográficas. En el lado maestro, debe aceptar la clave que el minion está usando para
identificarse y permitir que la conexión continúe. Las conexiones posteriores serán automáticas:

maestro#systemctl habilitar salt-master


maestro#systemctl iniciar salt-maestro
maestro#salt-key --enumere todo Claves
aceptadas:
Claves denegadas:
Claves no aceptadas:
kali-scratch
Claves rechazadas:
maestro#salt-key --aceptar kali-scratch Se aceptarán las
siguientes claves:

Capítulo 10: Kali Linux en la empresa 261


Claves no aceptadas:
kali-scratch
¿Proceder? [Nueva York]y
Clave para minion kali-scratch aceptada.

10.2.2. Ejecutar comandos en Minions

Tan pronto como los minions estén conectados, puedes ejecutar comandos sobre ellos desde el maestro:

maestro#sal '*' prueba.ping kali-


scratch:
Verdadero

kali-maestro:
Verdadero

Este comando pide a todos los minions (el '*' es un comodín dirigido a todos los minions) que ejecuten el
silbido función de lapruebamódulo de ejecución. Esta función devuelve unVerdaderovalor en el éxito y es
una forma sencilla de garantizar que la conexión funcione entre el maestro y los diversos secuaces.

También puede apuntar a un súbdito específico dando su identificador en el primer parámetro, o


posiblemente a un subconjunto de súbditos usando un comodín menos genérico (como '*-scratch' o 'kali-*').
Aquí hay un ejemplo de cómo ejecutar un comando de shell arbitrario en el minion kali-scratch:
maestro#sal kali-scratch cmd.shell 'tiempo de actividad; uname -a'
kali-scratch:
05:25:48 hasta 44 min, 2 usuarios, promedio de carga: 0.00, 0.01, 0.05
Linux kali-scratch 4.5.0-kali1-amd64 #1 SMP Debian 4.5.3-2kali1 (2020-05-09) x86_64
aGNU/Linux

Referencia del módulo de sal Hay muchos módulos de ejecución disponibles para todo tipo de casos de uso. No los
cubriremos todos aquí, pero la lista completa está disponible enhttps://docs.saltproject.io/en/
latest/ref/modules/all/index.html. También puedes obtener una descripción de todos los
módulos de ejecución y sus funciones disponibles en un esbirro dado con elsal esbirro
sys.docdominio. Ejecutar este comando devuelve una lista muy larga de funciones, pero
puede filtrar la lista pasando el nombre de una función o módulo con el prefijo de su
módulo principal como parámetro:

maestro#salt kali-scratch sys.doc disk.usage uso del


disco:

Devolver información de uso para los volúmenes montados en este


aesbirro

Uno de los módulos más útiles espaquete,que es una abstracción del administrador de paquetes que se basa en el
administrador de paquetes apropiado para el sistema (apt-getpara Debian y sus derivados como Kali).

262 Kali Linux revelado


Elpkg.refresh_dbEl comando actualiza la lista de paquetes (es decir, realizaapt-obtener actualización)
mientraspkg.actualizarinstala todas las actualizaciones disponibles (realizaapt-obtener actualizaciónoapt-get
dist-upgrade, dependiendo de las opciones recibidas). Elpkg.list_upgradesEl comando enumera las
operaciones de actualización pendientes (que serían realizadas por elpkg.upgrade dist_upgrade=Verdadero
dominio).
ElservicioEl módulo es una abstracción del administrador de servicios (sistemaden el caso de Kali), que le
permite realizar todas las funciones habitualessystemctloperaciones:servicio.habilitar,servicio.deshabilitar,
servicio.start,parada de servicio,servicio.reiniciar, yservicio.recargar:

maestro#sal '*' servicio.habilitar ssh kali-


scratch:
Verdadero

kali-maestro:
Verdadero

maestro#sal '*' servicio.iniciar ssh kali-


maestro:
Verdadero

kali-scratch:
Verdadero

maestro#sal '*' pkg.refresh_db kali-


scratch:
----------
kali-maestro:
----------
maestro#salt '*' pkg.upgrade dist_upgrade=Verdadero
kali-scratch:
----------
cambios:
----------
archivos base:
----------
nuevo:
1:2020.2.1
viejo:
1:2020.2.0
[...]
zaproxy:
----------
nuevo:
2.5.0-0kali1
viejo:
2.4.3-0kali3
comentario:
resultado:
Verdadero

Capítulo 10: Kali Linux en la empresa 263


Como una muestra más concreta, podría configurar fácilmente un sistema distribuidoNmapescanear condnmap. Después
de haber instalado el paquete en todos los minions, inicias el servidor en una primera terminal:

servidor#sal '*' paquete.instalar dnmap [...]

servidor#vim dnmap.txt
servidor#servidor_dnmap -f dnmap.txt

Suponiendo que la IP del servidor es 1.2.3.4, a continuación puede decirles a todos los minions que inicien un proceso de cliente
que se conecte al servidor:

servidor#sal '*' cmd.run_bg template=jinja 'dnmap_client -s 1.2.3.4 -a {{ granos.id }}' kali-scratch:

----------
pid:
17137
[...]

Tenga en cuenta que el ejemplo utilizacmd.run_bgpara ejecutar elcliente_dnmapComando en segundo plano. No


espere hasta que termine, ya que es un proceso de larga duración. Desafortunadamente, no se apaga
correctamente cuando interrumpe el servidor, por lo que es posible que deba limpiarlo:

servidor#salt '*' cmd.shell 'pkill -f dnmap_client'

10.2.3. Estados de sal y otras características

Si bien la ejecución remota es un componente importante, es solo una pequeña fracción de lo que SaltStack puede
hacer.

Al configurar una nueva máquina, a menudo ejecuta muchos comandos y pruebas para determinar los detalles del
sistema antes de la instalación. Estas operaciones se pueden formalizar en plantillas de configuración reutilizables
denominadasarchivos de estado. Las operaciones descritas en los archivos de estado se pueden realizar con un
soloestado.aplicarcomando de sal

Para ahorrar tiempo, puede confiar en muchos archivos de estado listos para usar que han sido creados por
la comunidad y que se distribuyen en "Fórmulas de sal":

mi https://docs.saltproject.io/en/latest/topics/development/conventions/ formulas.html

Hay muchas otras características que se pueden combinar:

• Ejecución programada de acciones

• Definición de acciones en respuesta a eventos desencadenados por minions

• Recopilación de datos de minions

264 Kali Linux revelado


• Orquestación de una secuencia de operaciones a través de múltiples minions

• Aplicar estados sobre SSH sin instalar el servicio salt-minion


• Aprovisionamiento de sistemas en infraestructuras en la nube y gestión de los mismos
• Y más

SaltStack es bastante amplio y posiblemente no podamos cubrir todas las características aquí. De hecho, hay libros
dedicados por completo a SaltStack y la documentación en línea también es muy extensa. Échale un vistazo si
quieres saber más sobre sus características:

mihttps://docs.saltproject.io/en/latest/
Si administra una cantidad significativa de máquinas, le recomendamos que obtenga más información sobre
SaltStack, ya que puede ahorrar una cantidad significativa de tiempo al implementar nuevas máquinas y
podrá mantener una configuración coherente en toda su red.

Para darle una idea de cómo se ve trabajar con archivos de estado, cubriremos un ejemplo simple: cómo
habilitar el repositorio APT e instalar un paquete que cree en la sección10.3.3, “Creación de un repositorio de
paquetes para APT” [página 275] y sección10.3.2, “Creación de paquetes de configuración” [página 269].
También registrará una clave SSH en la cuenta de root para que pueda iniciar sesión de forma remota en
caso de problemas.

Por defecto, los archivos de estado se almacenan en/srv/salen el maestro; son archivos estructurados YAML con un.SLS
extensión. Al igual que para ejecutar comandos, la aplicación de un estado depende de muchos módulos de estado:

mihttps://docs.saltproject.io/en/latest/topics/tutorials/starting_states.html
mihttps://docs.saltproject.io/en/latest/ref/states/all/
Su/srv/salt/offsec.slsfile llamará a tres de esos módulos:
offsec_repositorio:
pkgrepo.gestionado:
- nombre: deb http://pkgrepo.offsec.com offsec-interno principal
- archivo: /etc/apt/sources.list.d/offsec.list
- key_url: salt://offsec-apt-key.asc
- require_in:
- paquete: valores predeterminados de offsec

valores predeterminados de offsec:

paquete.instalado

ssh_key_para_raíz:
ssh_auth.presente:
- usuario: raíz
- nombre: ssh-rsa AAAAB3NzaC1yc2...89C4N rhertzog@kali

Eloffsec_repositorioel estado se basa en elpkgrepomódulo de estado. El ejemplo utiliza eladministrado


función en ese módulo de estado para registrar un repositorio de paquetes. Con elclave_urlatributo, tu

Capítulo 10: Kali Linux en la empresa 265


hágale saber a salt que la clave GPG (ASCII blindada) requerida para verificar la firma del repositorio se puede
obtener de/srv/salt/offsec-apt-clave.ascen el maestro de sal. Elrequire_inEl atributo asegura que este estado se procese
antes que eloffsec-valores predeterminados,ya que este último necesita que el repositorio esté correctamente
configurado para poder instalar el paquete.

Elvalores predeterminados de offsecstate instala el paquete del mismo nombre. Esto muestra que el nombre
de la clave suele ser un valor importante para los estados, aunque siempre se puede anular con unnombre
atributo (como se hizo para el estado anterior). Para casos simples como este, esto es legible y conciso.

El último estado (ssh_key_para_raíz)agrega la clave SSH dada en elnombreatribuir a/root/.ssh/claves_autorizadas(el


usuario de destino se establece en elusuarioatributo). Tenga en cuenta que aquí hemos acortado la clave para
facilitar la lectura, pero debe poner la clave completa en el atributo de nombre.

Este archivo de estado se puede aplicar a continuación a un minion determinado:

servidor#salt kali-scratch state.apply offsec kali-scratch:

----------
ID: offsec_repositorio
Función: pkgrepo.gestionado
Nombre: deb http://pkgrepo.offsec.com offsec-internal main Resultado:
Verdadero
Comentario: paquete configurado repo 'deb http://pkgrepo.offsec.com offsec-internal
aprincipal'
Iniciado: 06:00:15.767794
Duración: 4707.35 ms
Cambios:
----------
repositorio:
deb http://pkgrepo.offsec.com offsec-interno principal
----------
ID: offsec-predeterminados
Función: paquete instalado
Resultado: Verdadero

Comentario: Se instalaron/actualizaron los siguientes paquetes: offsec-defaults Comenzó:


06:00:21.325184
Duración: 19246.041ms
Cambios:
- - - - - - - - - - - valores

predeterminados de offsec:

----------
nuevo:
1.0
viejo:
----------
ID: ssh_key_for_root
Función: ssh_auth.presente

266 Kali Linux revelado


Nombre: ssh-rsa AAAAB3NzaC1yc2...89C4N rhertzog@kali
Resultado: Verdadero
Comentario: Se agregó la clave de host autorizada AAAAB3NzaC1yc2...89C4N para el usuario raíz. Inicio:
06:00:40.582539
Duración: 62.103ms
Cambios:
----------
AAAAB3NzaC1yc2...89C4N:
Nuevo

Resumen de kali-scratch
- - - - - - - - - - - - Exitoso: 3
(cambiado=3) Fallido: 0

- - - - - - - - - - - - Total de
estados ejecutados: 3
Tiempo total de ejecución: 24.015 s

También se puede asociar de forma permanente al minion grabándolo en el/srv/salt/top.sls


archivo, que es utilizado por elestado.highstateComando para aplicar todos los estados relevantes en una sola pasada:

servidor#gato /srv/salt/top.sls base:

kali-scratch:
- offsec
servidor#sal kali-scratch state.highstate kali-
scratch:
----------
ID: offsec_repositorio
Función: pkgrepo.gestionado
Nombre: deb http://pkgrepo.offsec.com offsec-internal main Resultado:
Verdadero
Comentario: Paquete repo 'deb http://pkgrepo.offsec.com offsec-internal main' ya
aconfigurado
Iniciado: 06:06:20.650053
Duración: 62.805 ms
Cambios:
----------
ID: offsec-predeterminados
Función: paquete instalado
Resultado: Verdadero

Comentario: El paquete offsec-defaults ya está instalado Iniciado:


06:06:21.436193
Duración: 385.092ms
Cambios:
----------
ID: ssh_key_for_root

Capítulo 10: Kali Linux en la empresa 267


Función: ssh_auth.presente
Nombre: ssh-rsa AAAAB3NzaC1yc2...89C4N rhertzog@kali
Resultado: Verdadero
Comentario: La clave de host autorizada AAAAB3NzaC1yc2...89C4N ya está presente para
araíz del usuario
Iniciado: 06:06:21.821811
Duración: 1.936 ms
Cambios:

Resumen de kali-scratch
------------
Sucedidos: 3
fallido: 0
- - - - - - - - - - - - Total de
estados ejecutados: 3
Tiempo de ejecución total: 449,833 ms

10.3. Ampliación y personalización de Kali Linux

A veces necesita modificar Kali Linux para que se ajuste a sus necesidades locales. La mejor manera de lograr esto es
mantener su propio repositorio de paquetes que aloje las versiones modificadas de los paquetes de Kali que tuvo que
bifurcar, así como paquetes complementarios que proporcionen una configuración personalizada y software adicional (no
proporcionado por Kali Linux).

10.3.1. Paquetes de vacaciones en Kali

Consulte la sección9.1, “Modificación de paquetes de Kali” [página 228] para obtener explicaciones sobre este tema.

Todos los paquetes se pueden bifurcar si tiene una buena razón, pero debe tener en cuenta que bifurcar un
paquete tiene un costo, ya que debe actualizarlo cada vez que Kali publica una actualización. Aquí hay algunas
razones por las que podría querer bifurcar un paquete:

• Para agregar un parche para corregir un error o agregar una nueva función. Aunque en la mayoría de los casos,
querrá enviar ese parche a los desarrolladores de nivel superior para que se corrija el error o se agregue la función
en la fuente.

• Para compilarlo con diferentes opciones (suponiendo que haya buenas razones por las que Kali no lo
compiló con esas opciones; de lo contrario, sería mejor discutir esto conDesarrolladores Kali1
para ver si pueden habilitar las opciones deseadas).

Por el contrario, aquí hay algunas malas razones para bifurcar un paquete junto con sugerencias sobre cómo manejar su
problema:

1https://bugs.kali.org/

268 Kali Linux revelado


• Para modificar un archivo de configuración. Tiene varias opciones mejores, como usar la administración de
configuración para instalar automáticamente un archivo de configuración modificado o instalar un paquete de
configuración que colocará un archivo en un directorio de configuración (cuando esté disponible) o que desviará el
archivo de configuración original.

• Para actualizar a una versión anterior más reciente. Nuevamente, es mejor trabajar con los desarrolladores para actualizar el
paquete directamente en Debian o Kali. Con el modelo de lanzamiento continuo, las actualizaciones llegan bastante rápido
a los usuarios finales.

Entre todos los paquetes disponibles, hay algunos que son bloques de construcción de Kali Linux y que podrían ser
interesantes para bifurcar en algunas situaciones:

• kali-meta: este paquete fuente compila todos los metapaquetes kali-linux-* y kali-tools-* y, en particular,kali-
linux-predeterminado, que define qué paquetes se instalan en la imagen ISO predeterminada de Kali Linux.

• base de escritorio: este paquete fuente contiene varios archivos misceláneos que se usan de forma
predeterminada en las instalaciones de escritorio. Considere bifurcar este paquete si desea mostrar la
marca de su organización en el fondo predeterminado o cambiar el tema del escritorio.

• kali-menu: este paquete define la estructura del menú de Kali y proporciona.escritorioarchivos para
todas las aplicaciones que deben aparecer en el menú de Kali.

10.3.2. Creación de paquetes de configuración

Ahora que hemos tocado el arranque PXE y discutido la administración de configuración con Salt-Stack, así como la
bifurcación de paquetes, es hora de envolver estos procesos en un ejemplo práctico y ampliar el escenario creando
un paquete de configuración personalizado para implementar una configuración personalizada para varias
máquinas de forma semiautomática.

En este ejemplo, creará un paquete personalizado que configura y utiliza su propio repositorio de paquetes y la clave de
firma de GnuPG, distribuye una configuración de SaltStack, inserta un fondo personalizado y proporciona configuraciones
de escritorio predeterminadas de manera unificada para todas sus instalaciones de Kali.

Esto puede parecer una tarea desalentadora (especialmente si echa un vistazo a través de laGuía del nuevo mantenedor de
Debian2) pero, afortunadamente para nosotros, un paquete de configuración es principalmente un archivo sofisticado y
convertirlo en un paquete es bastante fácil.

Mirando una muestra Si desea ver un paquete real que es básicamente un paquete de configuración, considere elvalores
Paquete predeterminados de kalipaquete. No es tan simple como el ejemplo de esta sección, pero tiene
todas las características relevantes e incluso utiliza algunas técnicas avanzadas (como
dpkg-desvío) para reemplazar archivos ya proporcionados por otros paquetes.

Elvalores predeterminados de offsecEl paquete contendrá algunos archivos:

2https://www.debian.org/doc/manuals/maint-guide/

Capítulo 10: Kali Linux en la empresa 269


• /etc/apt/sources.list.d/offsec.list: afuentes.listaentrada para APT, habilitando el
repositorio interno de paquetes de la empresa

• /etc/apt/de confianza.gpg.d/offsec.gpg: la clave GnuPG utilizada para firmar el repositorio de paquetes


interno de la empresa

• /etc/sal/minion.d/offsec.conf: un archivo de configuración de SaltStack para indicar dónde encontrar el


maestro de Salt

• /usr/share/images/offsec/background.png: una bonita imagen de fondo con la ofensa-


logotipo de seguridad sive

• /usr/share/glib-2.0/schemas/90_offsec-defaults.gschema.override: un proveedor de archivos


configuración predeterminada alternativa para el escritorio GNOME

Primero, crea unoffsec-predeterminados-1.0directorio y poner todos los archivos en ese directorio. Entonces corre
dh_make --nativo(desde eldh-hacerpaquete) para agregar las instrucciones de empaquetado de Debian, que se
almacenarán en unDebiansubdirectorio:

psmkdir offsec-valores predeterminados-1.0; cd offsec-


predeterminados-1.0 psdh_make --nativo
Tipo de paquete: (single, indep, library, python) [s/i/l/p]?i

Dirección de correo electrónico : buxy'


Licencia : gpl3
Nombre del paquete : offsec-predeterminados
Nombre del mantenedor : Rafael Hertzog
Versión : 1.0
Tipo de paquete : independiente

Fecha : jueves, 16 de junio de 2020 18:04:21 +0200


¿Son correctos los detalles? [S/n/p]y
Actualmente no hay Makefile de nivel superior. Esto puede requerir ajustes adicionales Hecho. Edite
los archivos en el subdirectorio debian/ ahora.

Primero, se le solicita un tipo de paquete. En el ejemplo, seleccionamosindependiente, lo que indica que este
paquete fuente generará un solo paquete binario que se puede compartir entre todas las arquitecturas (
Arquitectura: todas).solteroactúa como una contraparte y produce un único paquete binario que depende de la
arquitectura de destino (Arquitectura: cualquiera).En este caso,independientees más relevante, ya que el paquete
solo contiene archivos de texto y no programas binarios, por lo que puede usarse de manera similar en
computadoras de todas las arquitecturas. Elbibliotecatype es útil para bibliotecas compartidas, ya que necesitan
seguir reglas estrictas de empaquetado. De una forma similar,pitóndebe estar restringido a los módulos de Python.

Nombre del mantenedor y La mayoría de los programas involucrados en el mantenimiento de paquetes buscarán su nombre y
Dirección de correo electrónico dirección de correo electrónico en elDEBFULLNAMEyDEBE CORREOoCORREO ELECTRÓNICOVariables de
entorno. Definirlos, de una vez por todas, evita volver a escribirlos varias veces. Si su shell habitual es
Bash, es una simple cuestión de agregar las siguientes dos líneas en su~/.bashrc
archivo. Por ejemplo:

270 Kali Linux revelado


exportar EMAIL=” buxy@kali.org ” exportar
DEBFULLNAME=”Raphael Hertzog”

Eldh_hacercomando creó unDebiansubdirectorio que contiene muchos archivos. Algunos son necesarios, en
particularnormas,control,registro de cambios, yderechos de autor. archivos con el.exextension son archivos de
ejemplo que se pueden usar modificándolos y eliminando la extensión. Cuando no se necesiten,
recomendamos retirarlos. Elcompatiblearchivo debe ser conservado, ya que es necesario para el correcto
funcionamiento de laayudante de debconjunto de programas (todos comenzando con eldh_prefijo) utilizado
en varias etapas del proceso de creación del paquete.

Elderechos de autorEl archivo debe contener información sobre los autores de los documentos incluidos en el paquete
y la licencia relacionada. Si la licencia predeterminada seleccionada pordh_hacerno le conviene, entonces debe editar
este archivo. Aquí está la versión modificada del archivo de derechos de autor:

Formato: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ Nombre


ascendente: offsec-defaults

Archivos: *
Copyright: 2020 Licencia de seguridad
ofensiva: GPL-3.0+

Licencia: GPL-3.0+
Este programa es software libre: puede redistribuirlo y/o modificarlo según los términos
de la Licencia Pública General GNU publicada por la Free Software Foundation, ya sea la
versión 3 de la Licencia o (a su elección) cualquier versión posterior.

.
Este paquete se distribuye con la esperanza de que sea útil, pero SIN NINGUNA
GARANTÍA; sin siquiera la garantía implícita de COMERCIABILIDAD o IDONEIDAD
PARA UN PROPÓSITO PARTICULAR. Consulte la Licencia pública general de GNU
para obtener más detalles.
.
Debería haber recibido una copia de la Licencia Pública General de GNU junto con este
programa. Si no, consulte <https://www.gnu.org/licenses/>. .

En los sistemas Debian, el texto completo de GNU General


La licencia pública versión 3 se puede encontrar en ”/usr/share/common-licenses/GPL-3”.

El valor por defectoregistro de cambiosel archivo es generalmente apropiado; reemplazar el "Lanzamiento inicial" con una
explicación más detallada debería ser suficiente:

offsec-defaults (1.0) inestable; urgencia=media

* Agregue el archivo de configuración de Salt Minion.


* Agregue una entrada de lista de fuentes de APT y una clave GPG confiable de APT.

Capítulo 10: Kali Linux en la empresa 271


* Anular el esquema gsettings que define la imagen de fondo.

- - Raphaël Hertzog < buxy@kali.org > jue, 16 jun 2020 18:04:21 +0200

En el ejemplo, haremos cambios en elcontrolarchivo. vamos a cambiar elSeccióncampo avarios y quitar


elPágina de inicio, Vcs-Git,yNavegador Vcscampos. Por último, completaremos elDescripción campo:

Fuente: offsec-defaults
Sección: misc
Prioridad: opcional
Mantenedor: Raphaël Hertzog < buxy@kali.org > Build-
Depends: debhelper (>= 9)
Versión estándar: 3.9.8

Paquete: offsec-defaults
Arquitectura: todos
Depende: ${misc:Depende}
Descripción: configuración predeterminada para Offensive Security. Este
paquete contiene varios archivos para configurar equipos propiedad de
Offensive Security.
.
Se modifica notablemente:
- Configuración de APT
- configuración de salt-minion
- la configuración de escritorio predeterminada

ElnormasEl archivo generalmente contiene un conjunto de reglas utilizadas para configurar, construir e
instalar el software en un subdirectorio dedicado (llamado así por el paquete binario generado). El contenido
de este subdirectorio luego se archiva dentro del paquete Debian como si fuera la raíz del sistema de
archivos. En este caso, los archivos se instalarán en eldebian/offsec-valores predeterminados/subdirectorio. Por
ejemplo, para terminar con la instalación de un paquete/etc/apt/sources.list.d/offsec.list, instale el archivo en
debian/offsec-defaults/etc/apt/sources.list.d/offsec.list. ElnormasEl archivo se utiliza como
Makefile,
con algunos objetivos estándar (incluidoslimpioybinario,respectivamente para limpiar el
directorio fuente y generar el paquete binario).

que es unMakefile¿archivo? Es posible que haya notado el mensaje sobre la faltaMakefileal final dedh_hacersalida y la
mención de su similitud con elnormasarchivo. AMakefilees un archivo de script utilizado por el
hacerprograma; describe reglas sobre cómo crear un conjunto de archivos entre sí en un árbol
de dependencias. Por ejemplo, se puede construir un programa a partir de un conjunto de
archivos fuente. ElMakefileEl archivo describe estas reglas en el siguiente formato:

destino: fuente1 fuente2 ...


comando1
comando2

272 Kali Linux revelado


La interpretación de tal regla es la siguiente: si uno de losfuente*archivos es más reciente que
elobjetivoarchivo, entonces el destino necesita ser generado, usandocomando1
ycomando2.
Tenga en cuenta que las líneas de comando deben comenzar con un carácter de tabulación; también
tenga en cuenta que cuando una línea de comando comienza con un guión (-), la falla del comando
no interrumpe todo el proceso.

Aunque este archivo es el corazón del proceso, contiene solo lo mínimo para ejecutar un conjunto estándar de
comandos proporcionados por elayudante de debherramienta. Tal es el caso de los archivos generados por
dh_hacer. Para instalar la mayoría de sus archivos, le recomendamos que configure el comportamiento deldh_instalar

comando creando lo siguientedebian/offsec-defaults.instalararchivo:


apt/offsec.list etc/apt/sources.list.d/ apt/offsec.gpg etc/apt/
trusted.gpg.d/ salt/offsec.conf etc/salt/minion.d/ images/
background.png usr/ compartir/imágenes/offsec/

También puede usar esto para instalar el archivo de anulación de gsettings, pero debhelper proporciona una herramienta
dedicada para esto (dh_installgsettings) para que pueda confiar en él. Primero, ponga su configuración enDebian/
offsec-defaults.gsettings-override:

[org.gnome.desktop.background]
opciones de imagen='zoom'
imagen-uri='archivo:///usr/share/images/offsec/background.png'

A continuación, anule eldh_installgsettingsllamardebian/reglaspara aumentar la prioridad al nivel


esperado para una anulación de organización (que es 90 según la página del manual):
# !/usr/bin/hacer -f

%:
dh $ @

override_dh_installgsettings:
dh_installgsettings --prioridad=90

En este punto, el paquete fuente está listo. Todo lo que queda por hacer es generar el paquete binario con el
mismo método utilizado anteriormente para reconstruir paquetes: ejecute eldpkg-buildpackage -us
- ucComando desde dentro de laoffsec-predeterminados-1.0directorio:
psdpkg-buildpackage -us -uc
dpkg-buildpackage: info: paquete fuente offsec-defaults dpkg-
buildpackage: info: fuente versión 1.0
dpkg-buildpackage: información: fuente de distribución inestable dpkg-buildpackage:
información: fuente modificada por Raphaël Hertzog <bu xy@kali.org > dpkg-buildpackage:
información: arquitectura de host amd64

Capítulo 10: Kali Linux en la empresa 273


dpkg-source --before-build offsec-defaults-1.0 fakeroot
debian/rules clean
dh limpio
dh_testdir
dh_auto_clean
dh_limpio
dpkg-fuente -b offsec-valores predeterminados-1.0
dpkg-source: información: utilizando el formato de origen '3.0 (nativo)'
dpkg-source: información: creación de valores predeterminados de offsec en offsec-defaults_1.0.tar.xz fuente
de dpkg: información: creación de valores predeterminados de offsec en offsec-defaults_1.0.dsc debian/rules
build
construir
dh_testdir
dh_update_autotools_config
dh_auto_configure
dh_auto_build
dh_auto_test
fakeroot debian/rules binario dh
binario
dh_testroot
dh_prep
dh_auto_instalar
dh_instalar
dh_installdocs
dh_installchangelogs
debian/rules override_dh_installgsettings
make[1]: Ingresando al directorio '/home/kali/offsec-defaults-1.0'
dh_installgsettings --priority=90
make[1]: dejando el directorio '/home/kali/offsec-defaults-1.0'
dh_perl
dh_enlace
dh_strip_nondeterminism
dh_compress
dh_fixperms
dh_installdeb
dh_gencontrol
dh_md5sums
dh_builddeb
dpkg-deb: paquete de construcción 'offsec-defaults' en '../offsec-defaults_1.0_all.deb'. dpkg-genchanges >../
offsec-defaults_1.0_amd64.changes
dpkg-genchanges: información: incluido el código fuente completo en la carga
dpkg-source --after-build offsec-defaults-1.0
dpkg-buildpackage: información: carga completa; Paquete nativo de Debian (se incluye la fuente completa)

274 Kali Linux revelado


10.3.3. Creación de un repositorio de paquetes para APT

Ahora que tiene un paquete personalizado, puede distribuirlo a través de un repositorio de paquetes APT. Usar
reprepropara crear el repositorio deseado y llenarlo. Esta herramienta es bastante poderosa y su página de manual
ciertamente vale la pena leerla.

Un repositorio de paquetes normalmente se aloja en un servidor. Para separarlo correctamente de otros


servicios que se ejecutan en el servidor, es mejor crear un usuario dedicado a este servicio. En la cuenta de
usuario dedicada, podrá alojar los archivos del repositorio y también la clave GnuPG que se usará para
firmar el repositorio del paquete:

# apt install reprepro gnupg [...]

# agregar usuario --sistema --grupo pkgrepo


Agregando usuario del sistema 'pkgrepo' (UID 136)...
Agregando nuevo grupo 'pkgrepo' (GID 142)...
Agregando el nuevo usuario 'pkgrepo' (UID 136) con el grupo 'pkgrepo'...
Creando el directorio de inicio '/home/pkgrepo'...
# chown pkgrepo $(tty)
# su - -s /bin/bash pkgrepo
pkgrepo@kali :~$gpg --gen-clave
gpg (GnuPG) 2.1.11; Copyright (C) 2020 Free Software Foundation, Inc. Este es software
libre: usted es libre de cambiarlo y redistribuirlo. NO HAY GARANTÍA, en la medida
permitida por la ley.

gpg: directorio '/home/pkgrepo/.gnupg' creado


gpg: nuevo archivo de configuración '/home/pkgrepo/.gnupg/dirmngr.conf' creado gpg:
nuevo archivo de configuración '/home/pkgrepo/.gnupg/gpg.conf' creado gpg: keybox '/
home/pkgrepo/.gnupg/ pubring.kbx' creado
Nota: Use ”gpg --full-gen-key” para un cuadro de diálogo de generación de claves con todas las funciones.

GnuPG necesita construir una ID de usuario para identificar su clave.

Nombre real:Clave de firma del repositorio de seguridad ofensiva Dirección


de correo electrónico:repoadmin@offsec.com Ha seleccionado este ID DE
USUARIO:
"Clave de firma del repositorio de seguridad ofensiva < repoadmin@offsec.com >"

¿Cambiar (N)nombre, (E)mail o (O)bien/(Q)uit?o


Necesitamos generar muchos bytes aleatorios. Es una buena idea realizar alguna otra acción
(escribir en el teclado, mover el mouse, utilizar los discos) durante la generación principal;
esto le da al generador de números aleatorios una mejor oportunidad de ganar suficiente
entropía.
[...]
gpg: /home/pkgrepo/.gnupg/trustdb.gpg: trustdb creado gpg: clave
B4EF2D0D marcada como de confianza final
gpg: directorio '/home/pkgrepo/.gnupg/openpgp-revocs.d' creado

Capítulo 10: Kali Linux en la empresa 275


gpg: certificado de revocación almacenado como '/home/pkgrepo/.gnupg/openpgp-revocs.d/
aF8FE22F74F1B714E38DA6181B27F74F7B4EF2D0D.rev' clave
pública y secreta creada y firmada.

gpg: comprobando el trustdb gpg:


marginales necesarios: 3 gpg: completos necesarios: 1 modelo de confianza: PGP
profundidad: 0 válido: 1 firmado: 0 confianza: 0-, 0q, 0n, 0m, 0f, 1u
pub rsa2048/B4EF2D0D 2020-06-17 [C]
Huella dactilar clave = F8FE 22F7 4F1B 714E 38DA 6181 B27F 74F7 B4EF 2D0D
fluido [última] Clave de firma del repositorio de seguridad ofensiva < repoadmin@offsec.com >
sub rsa2048/38035F38 2020-06-17 []

Tenga en cuenta que cuando se le solicite una frase de contraseña, debe ingresar un valor vacío (y confirmar que
no desea proteger su clave privada) ya que desea poder firmar el repositorio de forma no interactiva. Tenga en
cuenta también quegpgrequiere acceso de escritura a la terminal para poder solicitar una frase de contraseña de
manera segura: es por eso que cambió la propiedad de la terminal virtual (que es propiedad de root ya que
inicialmente se conectó como ese usuario) antes de iniciar un shell comopkgrepo.

Ahora puede comenzar a configurar el repositorio. Un directorio dedicado es necesario pararepreproy dentro
de ese directorio tienes que crear unconf/distribucionesarchivo que documenta qué distribuciones están
disponibles en el repositorio de paquetes:

pkgrepo@kali :~$mkdir -p reprepro/conf pkgrepo@kali :~$


reproducción de cd pkgrepo@kali :~/reprepro$cat >conf/
distributions <<END Nombre en clave: offsec-internal

AlsoAcceptFor: inestable Origen: Seguridad


ofensiva Descripción: Paquetes internos de
Offsec Arquitecturas: fuente amd64 i386
Componentes: principal

Firmar con: F8FE22F74F1B714E38DA6181B27F74F7B4EF2D0D


FIN

Los campos requeridos sonNombre clave,que da el nombre de la distribución,arquitecturas,que indica qué


arquitecturas estarán disponibles en la distribución (y aceptadas en el lado de entrada), yComponentes,que
indica los diversos componentes disponibles en la distribución (los componentes son una especie de
subsección de la distribución, que se pueden habilitar por separado en la lista de fuentes de APT). ElOrigeny
DescripciónLos campos son puramente informativos y se copian tal cual en elLiberararchivo. ElFirma conel
campo preguntareprepropara firmar el repositorio con la clave GnuPG cuyo identificador aparece en la lista
(coloque la huella digital completa aquí para asegurarse de que usa la clave correcta y no otra que colisione
con el identificador corto). ElTambiénAceptarParaNo se requiere ajuste, pero permite procesar.cambios
archivos cuyo campo Distribución tiene un valor listado aquí (sin esto, solo aceptaría el nombre en clave de la
distribución en ese campo).

Con esta configuración básica en su lugar, puede dejarrepreprogenerar un repositorio vacío:

276 Kali Linux revelado


pkgrepo@kali :~/reprepro$exportación reprepro
Exportando índices...
pkgrepo@kali :~/reprepro$encontrar .
.
. /db
. /db/versión
. /db/referencias.db
. /db/contents.cache.db
. /db/checksums.db
. /db/paquetes.db
. /db/release.caches.db
. /conf
. /conf/distribuciones
. /distancias
. /dists/offsec-interno
. /dists/offsec-internal/Release.gpg
. /dists/offsec-internal/Release
. /dists/offsec-interno/principal
. /dists/offsec-interno/principal/fuente
. /dists/offsec-internal/main/source/Release
. /dists/offsec-internal/main/source/Sources.gz
. /dists/offsec-internal/main/binary-amd64
. /dists/offsec-internal/main/binary-amd64/Paquetes
. /dists/offsec-internal/main/binary-amd64/Release
. /dists/offsec-internal/main/binary-amd64/Packages.gz
. /dists/offsec-internal/main/binary-i386
. /dists/offsec-internal/main/binary-i386/Paquetes
. /dists/offsec-internal/main/binary-i386/Release
. /dists/offsec-internal/main/binary-i386/Packages.gz
. /dists/offsec-internal/InRelease

Como se puede ver,repreprocreó la metainformación del repositorio en undistanciassubdirectorio. También inicializó


una base de datos interna en unbase de datossubdirectorio.

Ahora es el momento de agregar su primer paquete. Primero, copie los archivos generados por la compilación
delvalores predeterminados de offsecpaquete (offsec-predeterminados_1.0.dsc,offsec-defaults_1.0.tar.xz,
offsec-defaults_1.0_all.deb, yoffsec-predeterminados_1.0_amd64.cambios) en/tmpsobre el
servidor que aloja el repositorio de paquetes y preguntereprepropara incluir el paquete:

pkgrepo@kali :~/reprepro$reprepro incluye offsec-internal /tmp/offsec-defaults_1.0


a_amd64.cambios
Exportando índices...
pkgrepo@kali :~/reprepro$encontrar piscina
piscina
piscina/principal

piscina/principal/o

Capítulo 10: Kali Linux en la empresa 277


pool/main/o/offsec-defaults pool/main/o/offsec-defaults/offsec-
defaults_1.0.dsc pool/main/o/offsec-defaults/offsec-defaults_1.0.tar.xz
pool/main/o /offsec-defaults/offsec-defaults_1.0_all.deb

Como puede ver, agregó los archivos a su propio grupo de paquetes en unpiscinasubdirectorio.

EldistanciasypiscinaLos directorios son los dos directorios que debe poner a disposición (públicamente) a través de
HTTP para finalizar la configuración de su repositorio APT. Contienen todos los archivos que APT querrá descargar.

Suponiendo que desea alojar esto en un host virtual llamadopkgrepo.offsec.com,podría crear el


siguiente archivo de configuración de Apache, guárdelo en/etc/apache2/sitios-disponibles/pkgrepo.
offsec.com.confy habilitarlo cona2ensite pkgrepo.offsec.com):
<Host virtual *:80>
Nombre del servidor pkgrepo.offsec.com
Administrador del servidor repoadmin@offsec.com

ErrorLog /var/log/apache2/pkgrepo.offsec.com-error.log
CustomLog /var/log/apache2/pkgrepo.offsec.com-access.log ”%h %l %u %t \”%r\” %>s %O”

DocumentRoot /home/pkgrepo/reprepro

<Directorio ”/home/pkgrepo/reprepro”>
Opciones Índices FollowSymLinks MultiViews Requerir
todo concedido
Permitir anular todo
</Directorio>
</HostVirtual>

y el correspondientefuentes.listaLa entrada para agregar en las máquinas que necesitan paquetes de


este repositorio se vería así:

deb http://pkgrepo.offsec.com offsec-interno principal

# Habilite la siguiente línea si también desea acceder a los paquetes fuente


# deb-src http://pkgrepo.offsec.com offsec-interno principal

Su paquete ahora está publicado y debería estar disponible para sus hosts en red.

Aunque esta ha sido una configuración larga, el "trabajo pesado" ahora está completo. Puede iniciar sus máquinas en red a
través de PXE, instalar una versión personalizada de Kali Linux sin interacción gracias a una configuración previa
proporcionada por la red, configurar SaltStack para administrar sus configuraciones (¡y controlar a los minions!), Crear
paquetes personalizados bifurcados y distribuir esos paquetes a través de su propio paquete. repositorio. Esto proporciona
administración centralizada y control de nivel empresarial sobre múltiples instalaciones de Kali Linux. En resumen, ahora
puede implementar rápidamente sistemas Kali altamente seguros preconfigurados para sus necesidades específicas y
mantenerlos sincronizados gracias a la instalación (semiautomática) de Kali de todas las actualizaciones de paquetes.

278 Kali Linux revelado


10.4. Resumen

Kali Linux escala más allá del escritorio a implementaciones de mediana o gran escala e incluso a nivel empresarial.
En este capítulo, cubrimos cómo centralizar la administración de múltiples instalaciones de Kali con SaltStack, lo
que le permite implementar rápidamente sistemas Kali altamente seguros preconfigurados para sus necesidades
específicas. También revelamos cómo puede mantenerlos sincronizados gracias a la instalación (semiautomática)
de actualizaciones de paquetes de Kali.

Hablamos sobre la bifurcación de paquetes, que le permite crear sus propios paquetes fuente distribuibles
personalizados.

En resumen, repasemos los principales pasos necesarios para establecer maestros y minions de Salt, que le
permiten el control y la configuración remotos de hosts remotos.

Resumen de consejos:

• Arrancar la máquina desde la red con PXE, con al menos un servidor de archivos TFTP, un servidor DHCP/
BOOTP (y un servidor web para la preconfiguración de debconf).dnsmasqmaneja tanto DHCP como TFTP, y
elapache2El servidor web viene preinstalado (pero deshabilitado) en Kali.

• El manual de instalación de Debian cubre la configuración deisc-dhcp-servidorytftpd-hpapara arranque PXE:

mihttps://www.debian.org/releases/stable/amd64/ch04s05
• dnsmasqse configura a través/etc/dnsmasq.conf. Una configuración básica consta de solo unas pocas
líneas clave:

# Interfaz de red para manejar


interface=eth0
# Opciones de DHCP
# Rango de IP para asignar dhcp-
range=192.168.101.100,192.168.101.200,12h
# Gateway para anunciar a los clientes dhcp-
option=option:router,192.168.101.1
# Servidores DNS para anunciar a los clientes dhcp-
option=option:dns-server,8.8.8.8,8.8.4.4
# Archivo de arranque para anunciar a los
clientes dhcp-boot=pxelinux.0
# opciones TFTP
habilitar-tftp
# Directorio de alojamiento de archivos para
servir tftp-root=/tftpboot/

• Descomprima los archivos de arranque de instalación de 32 bits (i386), 64 bits (amd64), estándar o gráfica (gtk) del
archivo de Kali en/arranque tftp/. Los archivos se pueden encontrar aquí:

mi http://http.kali.org/dists/kali-rolling/main/installer-amd64/current/images/netboot/gtk/
netboot.tar.gz

Capítulo 10: Kali Linux en la empresa 279


mi http://http.kali.org/dists/kali-rolling/main/installer-amd64/current/images/netboot/
netboot.tar.gz

mi http://http.kali.org/dists/kali-rolling/main/installer-i386/current/images/netboot/gtk/
netboot.tar.gz

mi http://http.kali.org/dists/kali-rolling/main/installer-i386/current/images/netboot/
netboot.tar.gz

# mkdir /tftpboot
# cd /tftpboot
# wget http://http.kali.org/dists/kali-rolling/main/installer-amd64/current/
aimágenes/netboot/netboot.tar.gz
# tar xf netboot.tar.gz

• Modificar opcionalmentetxt.cfgpara preconfigurar parámetros o tiempos de espera personalizados. Mira la sección4.3, “


Instalaciones desatendidas” [página 95]. A continuación, puede aprovechar las herramientas de administración de
configuración para administrar máquinas o configurar computadoras remotas en cualquier estado deseado.

• SaltStack es un servicio de administración de configuración centralizado: un maestro de Salt administra


muchos minions de Salt. Instala elmaestro de la salpaquete en un servidor accesible ysal-minionen hosts
gestionados.

• Editar el/etc./sal/minionarchivo de configuración con formato YAML y configure elmaestrokey al nombre


DNS (o dirección IP) del maestro Salt.

• Establecer el identificador único de minion en/etc/sal/minion_id:

esbirro#echo kali-scratch >/etc/salt/minion_id esbirro#


systemctl habilitar salt-minion esbirro#systemctl iniciar
sal-minion

• Seguirá el intercambio de llaves. En el maestro, acepta la clave de identificación del súbdito. Las conexiones
posteriores serán automáticas:

maestro#systemctl habilitar salt-master


maestro#systemctl iniciar salt-maestro
maestro#salt-key --enumere todo Claves
aceptadas:
Claves denegadas:
Claves no aceptadas:
kali-scratch
Claves rechazadas:
maestro#salt-key --aceptar kali-scratch Se aceptarán las
siguientes claves: Claves no aceptadas:

kali-scratch
¿Proceder? [Nueva York]y
Clave para minion kali-scratch aceptada.

280 Kali Linux revelado


• Una vez que los minions están conectados, puedes ejecutar comandos sobre ellos desde el maestro.
Ejemplos:

maestro#sal '*' prueba.ping kali-


scratch:
Verdadero

kali-maestro:
Verdadero

maestro#sal kali-scratch cmd.shell 'tiempo de actividad; uname -a'


maestro#sal kali-scratch sys.doc' maestro#sal '*' servicio.habilitar
ssh [...]

maestro#sal '*' servicio.iniciar ssh [...]

maestro#sal '*' pkg.refresh_db [...]

maestro#salt '*' pkg.upgrade dist_upgrade=Verdadero


servidor#salt '*' cmd.shell 'pkill -f dnmap_client'

• La lista completa de módulos de ejecución se puede encontrar enhttps://docs.saltproject.io/en/


último/ref/módulos/todos/index.html.

• Utilice archivos de estado de Salt (plantillas de configuración reutilizables) para programar acciones,
recopilar datos, orquestar secuencias de operaciones en múltiples minions, aprovisionar sistemas en
la nube y administrarlos, y más. Ahorre tiempo con fórmulas de sal predefinidas:

mi https://docs.saltproject.io/en/latest/topics/development/conventions/ formulas.html

• Cuando llegue el momento de entregar un paquete, primero decida si es una tarea que debe abordar.
Hay ventajas y desventajas significativas. Revíselos cuidadosamente. Elkali-meta,base de escritorio, y
kali-menuLos paquetes son opciones interesantes y probables. El proceso de bifurcar un paquete
puede ser abrumador y difícil de resumir.

Ahora que hemos cubierto todas las bases en términos de instalación, configuración, personalización e
implementación de Kali Linux, pasemos al papel de Kali Linux en el campo de la seguridad de la información.

Capítulo 10: Kali Linux en la empresa 281


Palabras clave

Tipos de evaluaciones
Vulnerabilidad
evaluación
Cumplimiento
prueba de penetración
Tradicional
prueba de penetración
Solicitud
evaluación
Tipos de ataques
Negación de servicio
Corrupción de memoria
vulnerabilidades web
Ataques de contraseña
Ataques del lado del cliente
Capítulo

Introducción a 11
Seguridad
Evaluaciones
Contenido

Kali Linux en una evaluación285 Tipos de evaluaciones287 Formalización de la Evaluación297


Tipos de ataques298 Resumen301
Hemos cubierto muchas características específicas de Kali Linux hasta este punto, por lo que debe tener una sólida
comprensión de lo que hace que Kali sea especial y cómo realizar una serie de tareas complejas.

Sin embargo, antes de utilizar Kali, hay algunos conceptos relacionados con las evaluaciones de seguridad que
debe comprender. En este capítulo, presentaremos estos conceptos para ayudarlo a comenzar y proporcionar
referencias que lo ayudarán si necesita usar Kali para realizar una evaluación de seguridad.

Para empezar, vale la pena tomarse un tiempo para explorar exactamente qué significa "seguridad" cuando
se trata de sistemas de información. Al intentar asegurar un sistema de información, se enfoca en tres
atributos principales del sistema:

• Confidencialidad: ¿los actores que no deberían tener acceso al sistema oa la información pueden acceder al
sistema oa la información?

• Integridad: ¿Se pueden modificar los datos o el sistema de alguna forma no prevista?

• Disponibilidad: ¿los datos o el sistema son accesibles cuándo y cómo se pretende que sean?

Juntos, estos conceptos conforman la tríada CIA (Confidencialidad, Integridad, Disponibilidad) y, en gran parte, son
los elementos principales en los que se centrará al proteger un sistema como parte de la implementación, el
mantenimiento o la evaluación estándar.

También es importante tener en cuenta que, en algunos casos, puede estar mucho más
preocupado por un aspecto de la tríada de la CIA que por otros. Por ejemplo, si tiene un diario
personal que contiene sus pensamientos más secretos, la confidencialidad del diario puede ser
mucho más importante para usted que la integridad o la disponibilidad. En otras palabras, es
posible que no le preocupe tanto si alguien puede escribir en la revista (en lugar de leerla) o si la
revista está siempre accesible o no. Por otro lado, si está asegurando un sistema que rastrea
recetas médicas, la integridad de los datos será más crítica. Si bien es importante evitar que otras
personas lean qué medicamentos usa alguien y es importante que pueda acceder a esta lista de
medicamentos, si alguien pudiera cambiar el contenido del sistema (alterando la integridad),

Cuando esté asegurando un sistema y se descubra un problema, tendrá que considerar en cuál de
estos tres conceptos, o en qué combinación de ellos, cae el problema. Esto lo ayuda a comprender el
problema de una manera más integral y le permite categorizar los problemas y responder en
consecuencia. Es posible identificar vulnerabilidades que afectan uno o varios elementos de la tríada
de la CIA. Para usar una aplicación web con una vulnerabilidad de inyección SQL como ejemplo:

• Confidencialidad: una vulnerabilidad de inyección SQL que permite a un atacante extraer el contenido completo de
la aplicación web, lo que le permite tener acceso completo para leer todos los datos, pero no la capacidad de
cambiar la información o deshabilitar el acceso a la base de datos.

• Integridad: una vulnerabilidad de inyección SQL que permite a un atacante cambiar la información
existente en la base de datos. El atacante no puede leer los datos ni evitar que otros accedan a la base
de datos.

284 Kali Linux revelado


• Disponibilidad: una vulnerabilidad de inyección SQL que inicia una consulta de larga ejecución, consumiendo una
gran cantidad de recursos en el servidor. Esta consulta, cuando se inicia varias veces, conduce a una situación de
denegación de servicio (DoS). El atacante no tiene la capacidad de acceder o cambiar los datos, pero puede evitar
que los usuarios legítimos accedan a la aplicación web.

• Múltiple: una vulnerabilidad de inyección de SQL conduce al acceso de shell interactivo completo
al sistema operativo host que ejecuta la aplicación web. Con este acceso, el atacante puede
violar la confidencialidad del sistema accediendo a los datos a su antojo, comprometer la
integridad del sistema alterando los datos y, si así lo decide, destruir la aplicación web,
comprometiendo la disponibilidad de la sistema.

Los conceptos detrás de la tríada de la CIA no son demasiado complicados y, de manera realista, son
elementos con los que está trabajando intuitivamente, incluso si no los reconoce. Sin embargo, es
importante interactuar conscientemente con el concepto, ya que puede ayudarlo a reconocer hacia dónde
dirigir sus esfuerzos. Esta base conceptual lo ayudará a identificar los componentes críticos de sus sistemas
y la cantidad de esfuerzo y recursos que vale la pena invertir para corregir los problemas identificados.

Otro concepto que abordaremos en detalle esriesgo, y cómo está compuestoamenazasyvulnerabilidades.


Estos conceptos no son demasiado complejos, pero es fácil equivocarse. Cubriremos estos conceptos en
detalle más adelante, pero a un alto nivel, es mejor pensar enriesgocomo lo que estás tratando de evitar que
suceda,amenazacomo quien te lo haría a ti, yvulnerabilidadcomo lo que les permite hacerlo. Se pueden
implementar controles para abordar la amenaza o vulnerabilidad, con el objetivo de mitigar el riesgo.

Por ejemplo, al visitar algunas partes del mundo, usted puede estar en considerableriesgode contraer
malaria. Esto se debe a que elamenazade mosquitos es muy alto en algunas áreas, y es casi seguro que
usted no es inmune a la malaria. Afortunadamente, puedes controlar elvulnerabilidadcon medicación y
tratar de controlar laamenazacon el uso de repelente de insectos y mosquiteros. Con controles
implementados que aborden tanto laamenazay elvulnerabilidad, puede ayudar a garantizar queriesgono se
actualiza.

11.1. Kali Linux en una evaluación

Al prepararse para usar Kali Linux en el campo, primero debe asegurarse de tener una instalación limpia y
funcional. Un error común que cometen muchos profesionales de seguridad novatos es usar una sola
instalación en múltiples evaluaciones. Este es un problema por dos razones principales:

• En el transcurso de una evaluación, a menudo instalará, modificará o cambiará su sistema


manualmente. Estos cambios únicos pueden ponerlo en marcha rápidamente o resolver
un problema en particular, pero son difíciles de seguir; hacen que su sistema sea más
difícil de mantener; y complican futuras configuraciones.
• Cada evaluación de seguridad es única. Dejar notas, código y otros cambios puede generar confusión o, lo
que es peor, contaminación cruzada de los datos del cliente.

Capítulo 11: Introducción a las evaluaciones de seguridad 285


Es por eso que se recomienda encarecidamente comenzar con una instalación limpia de Kali y por qué vale la pena
rápidamente tener una versión personalizada de Kali Linux que esté lista para la instalación automatizada.
Asegúrese de volver a consultar la sección9.3, “Creación de imágenes ISO Kali Live personalizadas” [página 241] y
sección4.3, “Instalaciones desatendidas” [página 95] sobre cómo hacer esto, ya que cuanto más automatice hoy,
menos tiempo perderá mañana.

Todos tienen diferentes requisitos en cuanto a cómo les gusta configurar Kali Linux cuando están en el
campo, pero hay algunas recomendaciones universales que realmente desea seguir. Primero, considere usar
una instalación encriptada como se documenta en la sección4.2.2, “Instalación en un sistema de archivos
totalmente cifrado” [página 88]. Esto protegerá sus datos en la máquina física, lo cual es un salvavidas si
alguna vez le roban su computadora portátil.

Para mayor seguridad durante el viaje, es posible que desee destruir la clave de descifrado (consulte “Agregar una contraseña de
Nuke para mayor seguridad” [página 250]) después de haber enviado una copia (encriptada) de la llave a un compañero de trabajo
en la oficina. De esa manera, sus datos estarán seguros hasta que regrese a la oficina, donde podrá restaurar la computadora
portátil con la clave de descifrado.

Otro elemento que debe verificar dos veces es la lista de paquetes que ha instalado. Considere qué herramientas
podría necesitar para el trabajo que se propone realizar. Por ejemplo, si se está embarcando en una evaluación de
seguridad inalámbrica, puede considerar instalar elkali-herramientas-inalámbricas metapaquete, que contiene
todas las herramientas de evaluación inalámbrica disponibles en Kali Linux, o si se acerca una evaluación de
aplicaciones web, puede instalar todas las herramientas de prueba de aplicaciones web disponibles con elkali-
herramientas-webmetapaquete. Es mejor suponer que no tendrá fácil acceso a Internet mientras realiza una
evaluación de seguridad, así que asegúrese de prepararse con la mayor anticipación posible.

Por la misma razón, es posible que desee revisar la configuración de su red (consulte la sección5.1, “
Configuración de la red” [página 108] y sección7.3, “Protección de servicios de red” [página 159]). Vuelva a
verificar su configuración de DHCP y revise los servicios que están escuchando en su dirección IP asignada.
Estas configuraciones pueden tener un impacto crítico en su éxito. No puede evaluar lo que no puede ver y
los servicios de escucha excesivos pueden marcar su sistema y hacer que se apague antes de comenzar.

Si su función consiste en investigar intrusiones en la red, prestar mucha atención a la configuración de su


red es aún más importante y debe evitar alterar los sistemas afectados. Una versión personalizada de Kali
con elkali-herramientas-forenseEl metapaquete iniciado en modo forense no montará automáticamente los
discos ni utilizará una partición de intercambio. De esta manera, puede ayudar a mantener la integridad del
sistema bajo análisis mientras utiliza las muchas herramientas forenses disponibles en Kali Linux.

Es fundamental que prepare adecuadamente su instalación de Kali Linux para el trabajo. Descubrirá
que un entorno Kali limpio, eficiente y efectivo siempre hará que todo lo que sigue sea mucho más
fluido.

286 Kali Linux revelado


11.2. Tipos de evaluaciones

Ahora que se aseguró de que su entorno de Kali esté listo, el siguiente paso es definir exactamente qué tipo
de evaluación está realizando. Al más alto nivel, podemos describir cuatro tipos de evaluaciones: una
evaluación de vulnerabilidad, aprueba de cumplimiento, aprueba de penetración tradicional, y unevaluación
de la aplicación. Un compromiso puede involucrar varios elementos de cada tipo de evaluación, pero vale la
pena describirlos con cierto detalle y explicar su relevancia para su entorno y compilación de Kali Linux.

Antes de profundizar en los diferentes tipos de evaluaciones, es importante notar primero la diferencia
entre una vulnerabilidad y un exploit.

Avulnerabilidadse define como una falla que, al ser aprovechada, comprometerá la confidencialidad,
integridad o disponibilidad de un sistema de información. Hay muchos tipos diferentes de
vulnerabilidades que se pueden encontrar, incluyendo:

• Inclusión de archivos:Vulnerabilidades de inclusión de archivos1en las aplicaciones web le permiten


incluirel contenido de un archivo local o remoto en el cálculo de un programa. Por ejemplo, una
aplicación web puede tener una función de "Mensaje del día" que lee el contenido de un archivo y lo
incluye en la página web para mostrárselo al usuario. Cuando este tipo de función se programa
incorrectamente, puede permitir que un atacante modifique su solicitud web para obligar al sitio a
incluir el contenido de un archivo de su elección.

• Inyección SQL: unainyección SQL2El ataque es aquel en el que se omiten las rutinas de validación de entrada para el
programa, lo que permite que un atacante proporcione comandos SQL para que se ejecute el programa de destino.
Esta es una forma de ejecución de comandos que puede generar posibles problemas de seguridad.

• Desbordamiento de búfer: Adesbordamiento de búfer3es una vulnerabilidad que pasa por alto las rutinas de
validación de entrada para escribir datos en la memoria adyacente de un búfer. En algunos casos, esa ubicación de
memoria adyacente puede ser crítica para la operación del programa de destino y el control de la ejecución del
código se puede obtener mediante una manipulación cuidadosa de los datos de memoria sobrescritos.

• Condiciones de carrera: Acondición de carrera4es una vulnerabilidad que aprovecha las dependencias de
tiempo en un programa. En algunos casos, el flujo de trabajo de un programa depende de que ocurra una
secuencia específica de eventos. Si puede alterar esta secuencia de eventos, eso puede conducir a una
vulnerabilidad.

Unexplotar, por otro lado, es un software que, cuando se usa, aprovecha una vulnerabilidad específica,
aunque no todas las vulnerabilidades son explotables. Dado que un exploit debe cambiar un proceso en
ejecución, obligándolo a realizar una acción no deseada, la creación de exploits puede ser compleja. Además,
hay una serie de tecnologías anti-exploit en las plataformas informáticas modernas que han sido

1https://en.wikipedia.org/wiki/File_inclusion_vulnerability
2https://en.wikipedia.org/wiki/SQL_injection
3https://en.wikipedia.org/wiki/Buffer_overflow
4https://en.wikipedia.org/wiki/Race_condition

Capítulo 11: Introducción a las evaluaciones de seguridad 287


diseñado para dificultar la explotación de vulnerabilidades, comoprevención de ejecución de datos5(DEP) y
Aleatorización del diseño del espacio de direcciones6(ASLR). Sin embargo, el hecho de que no exista un exploit
conocido públicamente para una vulnerabilidad específica no significa que no exista (o que no se pueda crear). Por
ejemplo, muchas organizaciones venden exploits comercializados que nunca se hacen públicos, por lo que todas
las vulnerabilidades deben tratarse como potencialmente explotables.

11.2.1. Evaluación de vulnerabilidad

Avulnerabilidadse considera una debilidad que podría utilizarse de alguna manera para comprometer la
confidencialidad, integridad o disponibilidad de un sistema de información. En una evaluación de
vulnerabilidades, su objetivo es crear un inventario simple de vulnerabilidades descubiertas dentro del
entorno de destino. Este concepto de un entorno de destino es extremadamente importante. Debe
asegurarse de mantenerse dentro del alcance de la red de destino de su cliente y los objetivos requeridos.
Salir del alcance de una evaluación puede causar una interrupción del servicio, un abuso de confianza con su
cliente o una acción legal contra usted y su empleador.

Debido a su relativa simplicidad, a menudo se realiza una prueba de vulnerabilidad en entornos más maduros de forma
regular como parte de la demostración de su debida diligencia. En la mayoría de los casos, una herramienta automatizada,
como las que se encuentran en elAnálisis de vulnerabilidad7yAplicaciones web8Las categorías del sitio de herramientas de
Kali y el menú de aplicaciones de escritorio de Kali se utilizan para descubrir sistemas en vivo en un entorno de destino,
identificar servicios de escucha y enumerarlos para descubrir la mayor cantidad de información posible, como el software
del servidor, la versión, la plataforma, etc. .

Luego, esta información se verifica en busca de firmas conocidas de posibles problemas o vulnerabilidades. Estas
firmas se componen de combinaciones de puntos de datos que pretenden representar problemas conocidos. Se
utilizan múltiples puntos de datos, porque cuantos más puntos de datos utilice, más precisa será la identificación.
Existe una gran cantidad de puntos de datos potenciales, incluidos, entre otros, los siguientes:

• Versión del sistema operativo: no es raro que el software sea vulnerable en una versión del
sistema operativo pero no en otra. Debido a esto, el escáner intentará determinar, con la
mayor precisión posible, qué versión del sistema operativo aloja la aplicación de destino.

• Nivel de parche: muchas veces, se lanzarán parches para un sistema operativo que no aumentan
la información de la versión, pero que cambian la forma en que responderá una vulnerabilidad,
o incluso la eliminan por completo.

• Arquitectura del procesador: muchas aplicaciones de software están disponibles para varias
arquitecturas de procesador, como Intel x86, Intel x64, varias versiones de ARM, UltraSPARC, etc.

5https://en.wikipedia.org/wiki/Executable_space_protection#Windows
6https://en.wikipedia.org/wiki/Address_space_layout_randomization
7https://tools.kali.org/category/vulnerability-analysis
8https://tools.kali.org/category/web-applications

288 Kali Linux revelado


En algunos casos, una vulnerabilidad solo existirá en una arquitectura específica, por lo que conocer este bit de
información puede ser fundamental para una firma precisa.

• Versión de software: la versión del software de destino es uno de los elementos básicos que deben
capturarse para identificar una vulnerabilidad.

Estos y muchos otros puntos de datos se utilizarán para crear una firma como parte de un análisis de
vulnerabilidades. Como era de esperar, cuantos más puntos de datos coincidan, más precisa será la firma. Cuando
se trata de coincidencias de firmas, puede tener algunos resultados potenciales diferentes:

• Verdadero positivo: la firma coincide y captura una vulnerabilidad verdadera. Estos resultados
son los que deberá seguir y corregir, ya que estos son los elementos que las personas
malintencionadas pueden aprovechar para dañar su organización (o la de su cliente).
• Falso positivo: la firma coincide; sin embargo, el problema detectado no es una verdadera vulnerabilidad. En
una evaluación, estos a menudo se consideran ruido y pueden ser bastante frustrantes. Nunca desea
descartar un verdadero positivo como falso positivo sin una validación más extensa.

• Verdadero negativo: la firma no coincide y no hay vulnerabilidad. Este es el escenario ideal,


verificar que no existe una vulnerabilidad en un objetivo.
• Falso negativo: la firma no coincide pero existe una vulnerabilidad. Tan malo como es un falso
positivo, un falso negativo es mucho peor. En este caso, existe un problema pero el escáner no
lo detectó, por lo que no tiene indicios de su existencia.

Como puede imaginar, la precisión de las firmas es extremadamente importante para obtener resultados precisos.
Cuantos más datos se proporcionen, mayor será la posibilidad de obtener resultados precisos de un escaneo
automatizado basado en firmas, razón por la cual los escaneos autenticados suelen ser tan populares.

Con un escaneo autenticado, el software de escaneo utilizará las credenciales proporcionadas para
autenticarse en el objetivo. Esto proporciona un nivel más profundo de visibilidad de un objetivo de lo que
sería posible de otro modo. Por ejemplo, en un escaneo normal, es posible que solo detecte información
sobre el sistema que se puede derivar de los servicios de escucha y la funcionalidad que brindan. Esto puede
ser bastante información a veces, pero no puede competir con el nivel y la profundidad de los datos que se
obtendrán si se autentica en el sistema y revisa exhaustivamente todo el software instalado, los parches
aplicados, los procesos en ejecución, etc. Esta amplitud de datos es útil para detectar vulnerabilidades que
de otro modo no se habrían descubierto.

Una evaluación de vulnerabilidades bien realizada presenta una instantánea de los problemas potenciales en una
organización y proporciona métricas para medir los cambios a lo largo del tiempo. Esta es una evaluación bastante liviana,
pero aún así, muchas organizaciones realizarán regularmente escaneos de vulnerabilidades automatizados fuera del
horario laboral para evitar posibles problemas durante el día, cuando la disponibilidad del servicio y el ancho de banda son
más críticos.

Como se mencionó anteriormente, un análisis de vulnerabilidad tendrá que verificar muchos puntos de datos
diferentes para obtener un resultado preciso. Todas estas comprobaciones diferentes pueden generar carga en el
sistema de destino y consumir ancho de banda. Desafortunadamente, es difícil saber exactamente cuántos
recursos se consumirán en el objetivo, ya que depende de la cantidad de servicios abiertos y los tipos de

Capítulo 11: Introducción a las evaluaciones de seguridad 289


cheques que estarían asociados con esos servicios. Este es el costo de hacer un escaneo; va a ocupar los
recursos del sistema. Tener una idea general de los recursos que se consumirán y cuánta carga puede
soportar el sistema de destino es importante cuando se ejecutan estas herramientas.

Escaneo de subprocesos La mayoría de los escáneres de vulnerabilidades incluyen una opción para establecersubprocesos por
escaneo, que equivale al número de comprobaciones simultáneas que se producen al mismo tiempo.
Aumentar este número tendrá un impacto directo en la carga de la plataforma de evaluación, así
como en las redes y los objetivos con los que está interactuando. Es importante tener esto en cuenta
al utilizar estos escáneres. Es tentador aumentar los subprocesos para completar los escaneos más
rápido, pero recuerde el aumento sustancial de la carga asociado con hacerlo.

Cuando finaliza un escaneo de vulnerabilidades, los problemas descubiertos generalmente se vinculan a identificadores
estándar de la industria, comonúmero CVE9,EDB-ID10y avisos de proveedores. Esta información, junto con las
vulnerabilidadesPuntuación CVSS11, se utiliza para determinar una calificación de riesgo. Junto con los falsos negativos (y
los falsos positivos), estas clasificaciones de riesgo arbitrarias son problemas comunes que deben tenerse en cuenta al
analizar los resultados del análisis.

Dado que las herramientas automatizadas utilizan una base de datos de firmas para detectar vulnerabilidades,
cualquier ligera desviación de una firma conocida puede alterar el resultado y la validez de la vulnerabilidad
percibida. Un falso positivo señala incorrectamente una vulnerabilidad que no existe, mientras que un falso
negativo oculta efectivamente una vulnerabilidad y no la informa. Debido a esto, a menudo se dice que un escáner
es tan bueno como su base de reglas de firma. Por esta razón, muchos proveedores ofrecen varios conjuntos de
firmas: uno que puede ser gratuito para los usuarios domésticos y otro bastante costoso que es más completo y
que generalmente se vende a clientes corporativos.

El otro problema que se encuentra a menudo con los análisis de vulnerabilidades es la validez de las clasificaciones de
riesgo sugeridas. Estas clasificaciones de riesgo se definen de forma genérica, teniendo en cuenta muchos factores
diferentes, como el nivel de privilegio, el tipo de software y la autenticación previa o posterior. Dependiendo de su entorno,
estas clasificaciones pueden o no ser aplicables, por lo que no deben aceptarse a ciegas. Solo aquellos que conocen bien
los sistemas y las vulnerabilidades pueden validar adecuadamente las calificaciones de riesgo.

Si bien no existe un acuerdo universalmente definido sobre las calificaciones de riesgo,NIST Publicación especial 800-3012
se recomienda como referencia para la evaluación de las clasificaciones de riesgo y su precisión en su entorno. NIST
SP 800-30 define el verdadero riesgo de una vulnerabilidad descubierta comouna combinación de la probabilidad
de ocurrencia y el impacto potencial.

9https://cve.mitre.org/
10https://www.exploit-db.com/
11https://www.first.org/cvss/
12https://csrc.nist.gov/publications/sp#800-30

290 Kali Linux revelado


Probabilidad de ocurrencia

Según el Instituto Nacional de Estándares y Tecnología (NIST), la probabilidad de ocurrencia se basa en


la probabilidad de que una amenaza en particular sea capaz de explotar una vulnerabilidad en
particular, con posibles calificaciones de Baja, Media o Alta.

• Alto: el adversario potencial está altamente capacitado y motivado y las medidas que se han puesto en
marcha para protegerse contra la vulnerabilidad son insuficientes.

• Medio: el adversario potencial está motivado y capacitado, pero las medidas implementadas para
protegerse contra la vulnerabilidad pueden impedir su éxito.

• Bajo: el adversario potencial no está capacitado o carece de motivación y existen medidas


de protección contra la vulnerabilidad que son parcial o totalmente efectivas.

Impacto

El nivel de impacto se determina evaluando la cantidad de daño que podría ocurrir si la


vulnerabilidad en cuestión fuera explotada o aprovechada.

• Alto: aprovechar la vulnerabilidad podría resultar en pérdidas financieras muy significativas,


daños graves a la misión o reputación de la organización, o incluso lesiones graves, incluida la
pérdida de la vida.

• Medio: aprovechar la vulnerabilidad podría generar pérdidas financieras, daños a la misión


o reputación de la organización, o lesiones humanas.

• Bajo: aprovechar la vulnerabilidad podría resultar en algún grado de pérdida financiera o


impacto en la misión y reputación de la organización.

Riesgo general

Una vez que se han determinado la probabilidad de ocurrencia y el impacto, puede determinar la calificación
de riesgo general, que se define como una función de las dos calificaciones. El riesgo general se puede
calificar como Bajo, Medio o Alto, lo que brinda orientación a los responsables de proteger y mantener los
sistemas en cuestión.

• Alto: Existe un fuerte requisito de implementar medidas adicionales para proteger contra la
vulnerabilidad. En algunos casos, se puede permitir que el sistema continúe funcionando, pero
se debe diseñar e implementar un plan lo antes posible.

• Medio: Existe el requisito de que se implementen medidas adicionales para proteger contra la
vulnerabilidad. Un plan para implementar las medidas requeridas debe hacerse de manera
oportuna.

Capítulo 11: Introducción a las evaluaciones de seguridad 291


• Bajo: el propietario del sistema determinará si implementará medidas adicionales para
protegerse contra la vulnerabilidad o puede optar por aceptar el riesgo y dejar el sistema
sin cambios.

En resumen

Con tantos factores que componen el verdadero riesgo de una vulnerabilidad descubierta, las clasificaciones de riesgo predefinidas
de la salida de la herramienta solo deben usarse como punto de partida para determinar el verdadero riesgo para la organización
en general.

Los informes creados de manera competente a partir de una evaluación de vulnerabilidad, cuando los analiza un profesional,
pueden proporcionar una base inicial para otras evaluaciones, como las pruebas de penetración de cumplimiento. Como tal, es
importante comprender cómo obtener los mejores resultados posibles de esta evaluación inicial.

Kali es una excelente plataforma para realizar una evaluación de vulnerabilidades y no necesita ninguna
configuración especial. En el menú Aplicaciones de Kali, encontrará numerosas herramientas para la
evaluación de vulnerabilidades en elRecopilación de información, análisis de vulnerabilidad,yAnálisis de
aplicaciones webcategorías. Varios sitios, incluido el mencionadoListado de herramientas de Kali Linux13,La
documentación oficial de Kali Linux14sitio, y el libreMetasploit desatado15El curso proporciona excelentes
recursos para usar Kali Linux durante una evaluación de vulnerabilidad.

11.2.2. Prueba de penetración de cumplimiento

El siguiente tipo de evaluación en orden de complejidad es una prueba de penetración basada en el cumplimiento.
Estas son las pruebas de penetración más comunes, ya que son requisitos exigidos por el gobierno y la industria
basados en un marco de cumplimiento en el que opera toda la organización.

Si bien existen muchos marcos de cumplimiento específicos de la industria, el más común probablemente sería
Estándar de seguridad de datos de la industria de tarjetas de pagodieciséis(PCI DSS), un marco dictado por las
compañías de tarjetas de pago que deben cumplir los minoristas que procesan pagos con tarjeta. Sin embargo,
existen otras normas, como laGuías de implementación técnica de seguridad de la Agencia de sistemas de
información de defensa17(ESTIGO DISA),Programa Federal de Gestión de Riesgos y Autorizaciones18
(FedRAMP),Ley Federal de Gestión de la Seguridad de la Información19(FISMA), y otros. En algunos casos, un
cliente corporativo puede solicitar una evaluación o pedir ver los resultados de la evaluación más reciente
por varias razones. Ya sea ad-hoc ormandado, este tipo de evaluaciones son colectivamente

13https://tools.kali.org/tools-listing
14https://www.kali.org/docs/
15https://www.offensive-security.com/metasploit-unleashed/
dieciséishttps://www.pcisecuritystandards.org/documents/Penetration_Testing_Guidance_March_2015.pdf
17https://public.cyber.mil/stigs/
18https://www.fedramp.gov/about-us/about/
19https://csrc.nist.gov/projects/risk-management

292 Kali Linux revelado


llamadas pruebas de penetración basadas en el cumplimiento, o simplemente "evaluaciones de cumplimiento" o "verificaciones de

cumplimiento".

Una prueba de cumplimiento a menudo comienza con una evaluación de vulnerabilidad. En el caso deAuditoría de
cumplimiento de PCI20, una evaluación de vulnerabilidad, cuando se realiza correctamente, puede satisfacer varios de los
requisitos básicos, que incluyen: “2. No utilice los valores predeterminados proporcionados por el proveedor para las
contraseñas del sistema y otros parámetros de seguridad” (por ejemplo, con herramientas delAtaques de contraseña
categoría de menú), “11. Probar periódicamente los sistemas y procesos de seguridad” (con herramientas de laEvaluación
de la base de datoscategoría) y otros. Algunos requisitos, como “9. Restringir el acceso físico a los datos del titular de la
tarjeta” y “12. Mantener una política que aborde la seguridad de la información para todo el personal” no parecen prestarse
a la evaluación de vulnerabilidad tradicional basada en herramientas y requieren creatividad y pruebas adicionales.

A pesar de que puede no parecer sencillo usar Kali Linux para algunos elementos de una prueba de cumplimiento,
el hecho es que Kali encaja perfectamente en este entorno, no solo por la amplia gama de herramientas
relacionadas con la seguridad, sino también debido al entorno Debian de código abierto en el que se basa, lo que
permite la instalación de una amplia gama de herramientas. Buscar en el administrador de paquetes con palabras
clave cuidadosamente seleccionadas de cualquier marco de cumplimiento que esté utilizando es casi seguro que
arrojará múltiples resultados. Tal como está, muchas organizaciones usan Kali Linux como la plataforma estándar
para este tipo exacto de evaluaciones.

11.2.3. Prueba de penetración tradicional

Una prueba de penetración tradicional se ha convertido en un elemento difícil de definir, y muchos trabajan a partir
de diferentes definiciones, según el espacio en el que operan. Parte de esta confusión del mercado se debe al
hecho de que el término "Prueba de penetración" se ha vuelto más comúnmente utilizado para la prueba de
penetración basada en el cumplimiento mencionada anteriormente (o incluso una evaluación de vulnerabilidad)
donde, por diseño, no está profundizando demasiado en la evaluación porque iría más allá de los requisitos
mínimos.

A los efectos de esta sección, dejaremos de lado ese debate y utilizaremos esta categoría para cubrir
las evaluaciones que van más allá de los requisitos mínimos; evaluaciones diseñadas para mejorar
realmente la seguridad general de la organización.

A diferencia de los tipos de evaluación discutidos anteriormente, las pruebas de penetración a menudo no comienzan con
una definición de alcance, sino con un objetivo como "simular lo que sucedería si un usuario interno se ve comprometido"
o "identificar lo que sucedería si el organización fue objeto de un ataque concentrado por parte de una parte
malintencionada externa”. Un diferenciador clave de este tipo de evaluaciones es que no solo encuentran y validan
vulnerabilidades, sino que aprovechan los problemas identificados para descubrir el peor de los casos. En lugar de
depender únicamente de conjuntos pesados de herramientas de análisis de vulnerabilidades, debe realizar un
seguimiento con la validación de los hallazgos mediante el uso de exploits o pruebas para eliminar los falsos positivos y
hacer todo lo posible para detectar vulnerabilidades ocultas o falsos negativos. Esto a menudo implica explotar

20https://www.pcisecuritystandards.org/documents/PCIDSS_QRGv3_2.pdf

Capítulo 11: Introducción a las evaluaciones de seguridad 293


vulnerabilidades descubiertas inicialmente, explorando el nivel de acceso que proporciona el exploit y utilizando
este mayor acceso como palanca para ataques adicionales contra el objetivo.

Esto requiere una revisión crítica del entorno de destino junto con la búsqueda manual, la creatividad y el
pensamiento innovador para descubrir otras vías de vulnerabilidad potencial y, en última instancia, usar otras
herramientas y pruebas fuera de las encontradas por los escáneres de vulnerabilidades más pesados. Una vez que
esto se completa, a menudo es necesario comenzar todo el proceso nuevamente varias veces para hacer un trabajo
completo y completo.

Incluso con este enfoque, a menudo encontrará que muchas evaluaciones se componen de diferentes
fases. Kali facilita la búsqueda de programas para cada fase a través del Menú Kali:

• Recopilación de información: en esta fase, se enfoca en aprender tanto como sea posible sobre el
entorno de destino. Por lo general, esta actividad no es invasiva y parecerá similar a la actividad
estándar del usuario. Estas acciones constituirán la base del resto de la evaluación y, por lo tanto,
deben ser lo más completas posible. de KaliRecopilación de informaciónLa categoría tiene docenas de
herramientas para descubrir la mayor cantidad de información posible sobre el entorno que se está
evaluando.

• Descubrimiento de vulnerabilidades: esto a menudo se denomina "recopilación de información activa", en la que no


ataca sino que se involucra en un comportamiento de usuario no estándar en un intento de identificar
vulnerabilidades potenciales en el entorno de destino. Aquí es donde se llevará a cabo con mayor frecuencia el
análisis de vulnerabilidades mencionado anteriormente. Los programas enumerados en elAnálisis de
vulnerabilidades, análisis de aplicaciones web, evaluación de bases de datos,yIngeniería inversaLas categorías
serán útiles para esta fase.

• Explotación: con las vulnerabilidades potenciales descubiertas, en esta fase intenta explotarlas para
afianzarse en el objetivo. Las herramientas para ayudarlo en esta fase se pueden encontrar en el Análisis de
aplicaciones web, evaluación de bases de datos, ataques de contraseña,yHerramientas de explotación
categorías.

• Pivote y exfiltración: una vez que se establece el punto de apoyo inicial, se deben completar otros
pasos. A menudo, estos privilegios aumentan a un nivel adecuado para lograr sus objetivos como
atacante, se conectan a otros sistemas a los que es posible que no haya tenido acceso anteriormente
y extraen información confidencial de los sistemas objetivo. Referirse a Ataques de contraseña,
herramientas de explotación, rastreo y suplantación de identidad,yPublicar explotacióncategorías
para ayudar con esta fase.

• Informes: una vez que se completa la parte activa de la evaluación, debe documentar e informar sobre las
actividades realizadas. Esta fase a menudo no es tan técnica como las fases anteriores, sin embargo, es muy
importante asegurarse de que su cliente obtenga el máximo valor del trabajo realizado. ElHerramientas de
informesLa categoría contiene una serie de herramientas que han demostrado su utilidad en la fase de
presentación de informes.

En la mayoría de los casos, estas evaluaciones serán muy singulares en su diseño ya que cada organización
operará con diferentes amenazas y activos para proteger. Kali Linux es una base muy versátil para

294 Kali Linux revelado


este tipo de evaluaciones y aquí es donde realmente puede aprovechar las numerosas funciones de
personalización de Kali Linux. Muchas organizaciones que realizan este tipo de evaluaciones mantendrán versiones
altamente personalizadas de Kali Linux para uso interno para acelerar la implementación de sistemas antes de una
nueva evaluación.

Las personalizaciones que las organizaciones realizan en sus instalaciones de Kali Linux a menudo incluirán:

• Preinstalación de paquetes comerciales con información de licenciamiento. Por ejemplo, puede tener
un paquete como un escáner de vulnerabilidad comercial que le gustaría usar. Para evitar tener que
instalar este paquete con cada compilación, puede hacerlo una vez y que aparezca en cada
implementación de Kali que realice.

• Redes privadas virtuales (VPN) de conexión preconfigurada. Estos son muy útiles en los dispositivos que se
dejan atrás y que le permiten realizar evaluaciones "internas remotas". En la mayoría de los casos, estos
sistemas se volverán a conectar a un sistema controlado por un evaluador, creando un túnel que el
evaluador puede usar para acceder a los sistemas internos. ElKali Linux ISO de Doom21es un ejemplo de este
tipo exacto de personalización.

• Herramientas y software desarrollados internamente y preinstalados. Muchas organizaciones tendrán conjuntos de herramientas

privados, por lo que configurarlos una vez en una instalación personalizada de Kali ahorra tiempo.

• Configuraciones de sistema operativo preconfiguradas, como asignaciones de host, papel tapiz de escritorio,
configuración de proxy, etc. Muchos usuarios de Kali tienenajustes específicos22les gusta haber ajustado así.
Si va a volver a implementar Kali de forma regular, capturar estos cambios tiene mucho sentido.

11.2.4. Evaluación de aplicaciones

Si bien la mayoría de las evaluaciones tienen un alcance amplio, la evaluación de una aplicación es una especialidad que se
centra estrictamente en una sola aplicación. Este tipo de evaluaciones se está volviendo más común debido a la
complejidad de las aplicaciones de misión crítica que utilizan las organizaciones, muchas de las cuales se crean
internamente. Una evaluación de la aplicación generalmente se agrega a una evaluación más amplia, según sea necesario.
Las solicitudes que pueden evaluarse de esta manera incluyen, pero no se limitan a:

• Aplicaciones web: la superficie de ataque externa más común, las aplicaciones web son excelentes objetivos
simplemente porque son accesibles. A menudo, las evaluaciones estándar encontrarán problemas básicos
en las aplicaciones web, sin embargo, una revisión más enfocada a menudo vale la pena para identificar
problemas relacionados con el flujo de trabajo de la aplicación. Elkali-herramientas-webmetapackage tiene
una serie de herramientas para ayudar con estas evaluaciones.

• Aplicaciones de escritorio compiladas: el software del servidor no es el único objetivo; Las aplicaciones de escritorio también
constituyen una maravillosa superficie de ataque. En años anteriores, muchas aplicaciones de escritorio, como lectores de
PDF o programas de video basados en la web, eran muy específicas, lo que los obligaba a madurar.

21https://www.offensive-security.com/kali-linux/kali-rolling-iso-of-doom/
22https://www.offensive-security.com/kali-linux/kali-linux-recipes/

Capítulo 11: Introducción a las evaluaciones de seguridad 295


Sin embargo, todavía hay una gran cantidad de aplicaciones de escritorio que son una gran cantidad de vulnerabilidades
cuando se revisan adecuadamente.

• Aplicaciones móviles: a medida que los dispositivos móviles se vuelven más populares, las aplicaciones móviles se
convertirán en una superficie de ataque mucho más estándar en muchas evaluaciones. Este es un objetivo de
rápido movimiento y las metodologías aún están madurando en esta área, lo que lleva a nuevos desarrollos
prácticamente todas las semanas. Las herramientas relacionadas con el análisis de aplicaciones móviles se pueden
encontrar en elIngeniería inversacategoría del menú.

Las evaluaciones de las aplicaciones se pueden realizar de diversas formas. Como ejemplo simple, se puede ejecutar una
herramienta automatizada específica de la aplicación contra la aplicación en un intento de identificar problemas
potenciales. Estas herramientas utilizarán la lógica específica de la aplicación en un intento de identificar problemas
desconocidos en lugar de solo depender de un conjunto de firmas conocidas. Estas herramientas deben tener una
comprensión integrada del comportamiento de la aplicación. Un ejemplo común de esto sería un escáner de vulnerabilidad
de aplicaciones web comoSuite de eructos23, dirigido contra una aplicación que primero identifica varios campos de
entrada y luego envía ataques de inyección SQL comunes a estos campos mientras monitorea la respuesta de la aplicación
en busca de indicaciones de un ataque exitoso.

En un escenario más complejo, una evaluación de la aplicación se puede realizar de forma interactiva en un caja
negraocaja blancamanera.

• Evaluación de caja negra: la herramienta (o evaluador) interactúa con la aplicación sin ningún conocimiento o
acceso especial más allá del de un usuario estándar. Por ejemplo, en el caso de una aplicación web, el
evaluador solo puede tener acceso a las funciones y características que están disponibles para un usuario
que no haya iniciado sesión en el sistema. Cualquier cuenta de usuario utilizada sería aquella en la que un
usuario general puede registrar automáticamente la cuenta. Esto evitaría que el atacante pueda revisar
cualquier funcionalidad que solo esté disponible para los usuarios y que deba ser creada por un
administrador.

• Evaluación de caja blanca: la herramienta (o evaluador) a menudo tendrá acceso total al código fuente,
acceso administrativo a la plataforma que ejecuta la aplicación, etc. Esto garantiza que se complete una
revisión completa y completa de toda la funcionalidad de la aplicación, independientemente de dónde
resida esa funcionalidad en la aplicación. La contrapartida de esto es que la evaluación no es de ninguna
manera una simulación de una actividad maliciosa real.

Obviamente hay tonos de gris en el medio. Por lo general, el factor decisivo es el objetivo de la evaluación. Si
el objetivo es identificar qué sucedería en caso de que la aplicación sufriera un ataque externo enfocado,
probablemente lo mejor sería una evaluación de caja negra. Si el objetivo es identificar y eliminar tantos
problemas de seguridad como sea posible en un período de tiempo relativamente corto, un enfoque de caja
blanca puede ser más eficiente.

En otros casos, se puede adoptar un enfoque híbrido en el que el evaluador no tiene acceso total al código fuente
de la aplicación de la plataforma que ejecuta la aplicación, pero un administrador proporciona las cuentas de
usuario para permitir el acceso a la mayor funcionalidad posible de la aplicación.

23https://portswigger.net/burp

296 Kali Linux revelado


Kali es una plataforma ideal para todo tipo de evaluaciones de aplicaciones. En una instalación predeterminada, hay
disponible una gama de diferentes escáneres específicos de la aplicación. Para evaluaciones más avanzadas, existe una
variedad de herramientas, editores de fuentes y entornos de secuencias de comandos. Usted puede encontrar elAplicación
web24yIngeniería inversa25secciones de laHerramientas Kali26sitio web útil.

11.3. Formalización de la Evaluación

Con su entorno Kali listo y el tipo de evaluación definido, está casi listo para comenzar a trabajar. Tu
último paso es formalizar el trabajo a realizar. Esto es de vital importancia, ya que define cuáles serán
las expectativas para el trabajo y le otorga permiso para realizar lo que de otro modo podría ser una
actividad ilegal. Cubriremos esto a un alto nivel, pero este es un paso muy complejo e importante, por
lo que probablemente querrá consultar con el representante legal de su organización para obtener
ayuda.

Como parte del proceso de formalización, deberá definir las reglas de contratación para el trabajo. Esto
cubre elementos como:

• ¿Con qué sistemas se le permite interactuar? Es importante asegurarse de no interferir


accidentalmente con nada que sea crítico para las operaciones comerciales.
• ¿A qué hora del día y durante qué ventana de ataque se permite que ocurra la evaluación? A algunas
organizaciones les gusta limitar los tiempos en que se puede realizar el trabajo de evaluación.

• Cuando descubre una vulnerabilidad potencial, ¿tiene permitido explotarla? Si no, ¿cuál es el proceso de
aprobación? Hay algunas organizaciones que adoptan un enfoque muy controlado para cada intento de
explotación, mientras que a otras les gustaría un enfoque más realista. Es mejor definir claramente estas
expectativas antes de que comience el trabajo.

• Si se descubre un problema importante, ¿cómo debe manejarse? A veces, las organizaciones quieren
que se les informe de inmediato; de lo contrario, normalmente se aborda al final de la evaluación.

• En caso de emergencia, ¿a quién debe contactar? Siempre es importante saber a quién contactar
cuando ocurre un problema de cualquier tipo.

• ¿Quién sabrá acerca de la actividad? ¿Cómo se les comunicará? En algunos casos, las
organizaciones querrán probar su respuesta a incidentes y el rendimiento de detección como
parte de la evaluación. Siempre es una buena idea saber esto de antemano, para que sepa si
debe tomar algún grado de cautela en el enfoque de la evaluación.
• ¿Cuáles son las expectativas al final de la evaluación? ¿Cómo se comunicarán los resultados? Sepa lo
que todas las partes esperan al final de la evaluación. Definir el entregable es la mejor manera de
mantener a todos felices después de que se complete el trabajo.

24https://tools.kali.org/category/web-applications
25https://tools.kali.org/category/reverse-engineering
26https://tools.kali.org/

Capítulo 11: Introducción a las evaluaciones de seguridad 297


Si bien no está completa, esta lista le da una idea de los detalles que deben cubrirse. Sin embargo, debe
darse cuenta de que no hay sustituto para una buena representación legal. Una vez que se definen estos
elementos, debe adquirir la autorización adecuada para realizar la evaluación, ya que gran parte de la
actividad que realizará en el curso de una evaluación puede no ser legal sin la autorización adecuada de
alguien con la autoridad para otorgar ese permiso.

Con todo eso en su lugar, todavía hay un último paso que querrá dar antes de comenzar a trabajar: la validación.
Nunca confíe en el alcance que se le proporciona, siempre valídelo. Utilice múltiples fuentes de información para
confirmar que los sistemas dentro del alcance son de hecho propiedad del cliente y que también son operados por
el cliente. Con el predominio de los servicios en la nube, una organización puede olvidar que en realidad no es
propietaria de los sistemas que le brindan el servicio. Es posible que deba obtener un permiso especial de un
proveedor de servicios en la nube antes de comenzar a trabajar. Además, siempre valide los bloques de direcciones
IP. No cuente con la suposición de una organización de que posee bloques completos de IP, incluso si los aprueba
como objetivos viables. Por ejemplo, hemos visto ejemplos de organizaciones que solicitan una evaluación de todo
un rango de red de clase C cuando, de hecho, solo poseían un subconjunto de esas direcciones. Al atacar todo el
espacio de direcciones de clase C, habríamos terminado atacando a los vecinos de la red de la organización. El
Análisis OSINTsubcategoría de laRecopilación de informaciónEl menú contiene una serie de herramientas que
pueden ayudarlo con este proceso de validación.

11.4. Tipos de ataques

Una vez que se esté realizando el trabajo, ¿cuáles son algunos de los tipos específicos de ataques que llevará
a cabo? Cadatipo de vulnerabilidad27tiene sus propias técnicas de explotación asociadas. Esta sección cubrirá
las diversas clases de vulnerabilidades con las que interactuará más a menudo.

No importa qué categoría de vulnerabilidad esté buscando, Kali hace que estas herramientas y exploits sean fáciles
de encontrar. El menú de Kali en su interfaz gráfica de usuario está dividido en categorías para facilitar la búsqueda
de la herramienta adecuada. además, elSitio web de Kali Tools28tiene listas completas de las diversas herramientas
disponibles en Kali, organizadas por categoría y etiquetadas para facilitar la navegación. Cada entrada contiene
información detallada sobre la herramienta, así como ejemplos de uso.

11.4.1. Negación de servicio

Los ataques de denegación de servicio aprovechan una vulnerabilidad para crear una pérdida de servicio, a menudo bloqueando el
proceso vulnerable. ElPruebas de estrésLa categoría del menú de Kali Linux contiene una serie de herramientas para este
propósito.

Cuando muchas personas escuchan el término "ataque de denegación de servicio", inmediatamente piensan en
ataques de consumo de recursos que se envían desde varias fuentes a la vez contra un solo objetivo. Estos

27https://www.cvedetails.com/vulnerabilidades-por-tipos.php
28https://tools.kali.org/tools-listing

298 Kali Linux revelado


seria unrepartidoAtaque de denegación de servicios o DDoS. Este tipo de ataques rara vez forman parte de una
evaluación de seguridad profesional.

En cambio, un ataque singular de denegación de servicio suele ser el resultado de un intento inadecuado de
explotar una vulnerabilidad. Si un escritor de exploits publica un código parcialmente funcional o de prueba de
concepto (PoC) y se usa en el campo, esto podría crear una condición de denegación de servicio. Incluso un exploit
codificado correctamente puede funcionar solo en circunstancias muy específicas, pero causar una denegación de
servicio en circunstancias menores. Puede parecer que la solución es usar solo un código de explotación seguro y
probado, o escribir uno propio. Incluso con esta solución, no hay garantías y esto limita severamente al evaluador,
provocando restricciones indebidas, lo que resulta en una evaluación menor. En cambio, la clave es el compromiso.
Evite el código PoC y los exploits no probados en el campo y siempre asegúrese de que un abogado lo tenga
cubierto para otros percances.

Por lo general, los ataques de denegación de servicio no se lanzan intencionalmente. La mayoría de las herramientas de
vulnerabilidad automatizadas declararán las vulnerabilidades de denegación de servicio como de menor riesgo debido al hecho de
que, si bien puede eliminar un servicio de la operación, ese servicio no puede explotarse para la ejecución de código. Sin embargo,
es importante recordar que no todos los exploits se publican y una vulnerabilidad de denegación de servicio puede enmascarar una
amenaza más profunda y grave. Puede existir una explotación de ejecución de código para una denegación de servicio conocida,
pero no ser pública. El punto es, preste atención a las vulnerabilidades de denegación de servicio y anime a su cliente a que las
parchee, independientemente de su calificación de amenaza (a menudo baja).

11.4.2. Corrupción de memoria

Una corrupción de memoria ocurre cuando una ubicación dentro del espacio de memoria de un proceso se modifica
accidentalmente debido a errores de programación. Los errores de corrupción de la memoria generalmente conducen a un
comportamiento impredecible del programa; sin embargo, en muchos casos, estos errores permiten la manipulación de la memoria
del proceso de tal manera que se puede controlar el flujo de ejecución del programa, lo que permite la actividad definida por el
atacante.

Estos ataques suelen denominarse desbordamientos de búfer, aunque este término es una
simplificación excesiva. Los tipos más comunes de corrupción de la memoria son muy diferentes entre
sí y tienen sus propias tácticas y técnicas requeridas para una explotación exitosa.

• Desbordamiento del búfer de la pila: cuando un programa escribe más datos en un búfer de la pila que el espacio
disponible para él, la memoria adyacente puede corromperse, lo que a menudo hace que el programa se bloquee.

• Corrupción del montón: la memoria del montón se asigna en tiempo de ejecución y generalmente contiene datos del programa en ejecución. Las

corrupciones de almacenamiento dinámico ocurren al manipular los datos para sobrescribirlos a través de la lista vinculada de punteros de

memoria de almacenamiento dinámico.

• Desbordamiento de enteros: estos desbordamientos se producen cuando una aplicación intenta crear un valor numérico
que no puede contenerse dentro de su espacio de almacenamiento asignado.

• Cadena de formato: cuando un programa acepta la entrada del usuario y la formatea sin verificarla, las
ubicaciones de la memoria pueden revelarse o sobrescribirse, según los tokens de formato que se utilicen.

Capítulo 11: Introducción a las evaluaciones de seguridad 299


11.4.3. Vulnerabilidades web

Debido al hecho de que los sitios web modernos ya no son páginas estáticas, sino generadas
dinámicamente para el usuario, el sitio web promedio es bastante complejo. Las vulnerabilidades web se
aprovechan de esta complejidad en un esfuerzo por atacar la lógica de generación de la página final o la
presentación al visitante del sitio.

Este tipo de ataques son extremadamente comunes, ya que muchas organizaciones han llegado al punto en
que tienen muy pocos servicios externos. dos de lostipos de ataques de aplicaciones web más frecuentes29
son inyección SQL y secuencias de comandos entre sitios (XSS).

• Inyección SQL: estos ataques se aprovechan de aplicaciones mal programadas que no


desinfectan correctamente la entrada del usuario, lo que permite extraer información de la base
de datos o incluso la toma completa del servidor.

• Cross-site scripting: Al igual que con la inyección de SQL, los ataques XSS son el resultado de una sanitización inadecuada de
la entrada del usuario, lo que permite a los atacantes manipular al usuario o al sitio para ejecutar código en el contexto de
su propia sesión de navegador.

Las aplicaciones web complejas, ricas y complicadas son muy comunes y presentan una superficie de ataque bienvenida
para las partes malintencionadas. Encontrará una gran cantidad de herramientas útiles en elAnálisis de aplicaciones web
categoría del menú y lakali-herramientas-webmetapaquete.

11.4.4. Ataques de contraseña

Los ataques de contraseña son ataques contra el sistema de autenticación de un servicio. Estos ataques a menudo
se dividen en ataques de contraseña en línea y ataques de contraseña fuera de línea, que encontrará reflejados en
elAtaques de contraseñacategoría del menú. En un ataque de contraseña en línea, se intentan múltiples
contraseñas contra un sistema en ejecución. En un ataque de contraseña fuera de línea, se obtienen los valores
cifrados o cifrados de las contraseñas y el atacante intenta obtener los valores de texto sin cifrar. La protección
contra este tipo de ataque es el hecho de que es computacionalmente costoso realizar este proceso, lo que limita la
cantidad de intentos por segundo que puede generar. Sin embargo, existen soluciones alternativas para esto, como
el uso de unidades de procesador gráfico (GPU) para acelerar la cantidad de intentos que se pueden realizar. Elkali-
herramientas-gpuEl metapaquete contiene una serie de herramientas que aprovechan este poder.

Más comúnmente, los ataques de contraseña tienen como objetivo las contraseñas predeterminadas proporcionadas por el
proveedor. Como estos son valores bien conocidos, los atacantes buscarán estas cuentas predeterminadas, con la esperanza de
tener suerte. Otros ataques comunes incluyen ataques de diccionario personalizado donde se crea una lista de palabras que se ha
adaptado al entorno de destino y luego se lleva a cabo un ataque de contraseña en línea contra cuentas comunes, predeterminadas
o conocidas donde cada palabra se intenta en secuencia.

29https://owasp.org/www-project-top-ten/

300 Kali Linux revelado


En una evaluación, es muy importante comprender las posibles consecuencias de este tipo de ataque. En primer
lugar, suelen ser muy ruidosos debido a los repetidos intentos de autenticación. En segundo lugar, estos ataques a
menudo pueden resultar en una situación de bloqueo de cuenta después de que se realizan demasiados intentos
no válidos contra una sola cuenta. Por último, el rendimiento de estos ataques suele ser bastante lento, lo que
genera dificultades al intentar utilizar una lista de palabras completa.

11.4.5. Ataques del lado del cliente

La mayoría de los ataques se realizan contra servidores, pero a medida que los servicios se han vuelto más difíciles de atacar, se han
seleccionado objetivos más fáciles. Los ataques del lado del cliente son el resultado de esto, donde un atacante apuntará a las
diversas aplicaciones instaladas en la estación de trabajo de un empleado dentro de una organización objetivo. ElHerramientas de
ingeniería socialLa categoría de menú tiene una serie de excelentes aplicaciones que pueden ayudar a realizar este tipo de ataques.

Este tipo de ataque fue comúnmente explotado por Flash, Acrobat Reader y Java a principios de la década de 2000.
Actualmente, la aplicación HTML (HTA) es el método popular. En los casos anteriores, los atacantes intentarían solicitar a un
objetivo que visite una página web maliciosa. Estas páginas contendrían código especializado que desencadenaría
vulnerabilidades en estas aplicaciones del lado del cliente o engañaría al usuario, lo que daría como resultado la capacidad
de ejecutar código malicioso en el sistema objetivo.

Los ataques del lado del cliente son increíblemente difíciles de prevenir y requieren una gran cantidad de educación del usuario,
actualizaciones constantes de aplicaciones y controles de red para mitigar el riesgo de manera efectiva.

11.5. Resumen

En este capítulo, analizamos brevemente el papel de Kali en el campo de la seguridad de la información.


Discutimos la importancia de una instalación limpia y funcional y el uso de encriptación antes de salir al
campo para proteger la información de su cliente, y la importancia de la representación legal para proteger
sus intereses y los de su cliente.

Los componentes de la tríada CIA (confidencialidad, integridad, disponibilidad) son los elementos principales
en los que se centrará al proteger un sistema como parte de la implementación, el mantenimiento o la
evaluación estándar. Esta base conceptual lo ayudará a identificar los componentes críticos de sus sistemas y
la cantidad de esfuerzo y recursos que vale la pena invertir para corregir los problemas identificados.

Discutimos varios tipos de vulnerabilidades, incluida la inclusión de archivos, la inyección de SQL, los desbordamientos de búfer y las
condiciones de carrera.

La precisión de las firmas es extremadamente importante para obtener resultados útiles de evaluación de vulnerabilidades.
Cuantos más datos se proporcionen, mayor será la posibilidad de obtener resultados precisos de un escaneo automatizado
basado en firmas, razón por la cual los escaneos autenticados suelen ser tan populares.

Capítulo 11: Introducción a las evaluaciones de seguridad 301


Dado que las herramientas automatizadas utilizan una base de datos de firmas para detectar vulnerabilidades, cualquier
ligera desviación de una firma conocida puede alterar el resultado y la validez de la vulnerabilidad percibida.

También discutimos los cuatro tipos de evaluaciones: laevaluación de vulnerabilidad,prueba de cumplimiento,prueba de


penetración tradicional, y elevaluación de aplicaciones. Aunque cada tipo de evaluación aprovecha un conjunto básico de
herramientas, muchas de las herramientas y técnicas se superponen.

La evaluación de vulnerabilidades es relativamente simple en comparación con los otros tipos de evaluación y, a
menudo, consiste en un inventario automatizado de problemas descubiertos dentro de un entorno de destino. En
esta sección, discutimos que una vulnerabilidad es una falla que, cuando se explota, comprometerá la
confidencialidad, integridad o disponibilidad de un sistema de información. Dado que se basa en firmas, este tipo
de evaluación se basa en firmas precisas y puede presentar falsos positivos y negativos. Encontrará las
herramientas básicas para este tipo de evaluación en elAnálisis de vulnerabilidadyHerramientas de explotación
categorías de menú de Kali Linux.

Las pruebas de cumplimiento se basan en requisitos exigidos por el gobierno y la industria (como PCI DSS, DISA
STIG y FISMA), que a su vez se basan en un marco de cumplimiento. Esta prueba generalmente comienza con una
evaluación de vulnerabilidad.

Una prueba de penetración tradicional es una evaluación de seguridad exhaustiva que está diseñada para mejorar
la postura de seguridad general de una organización en función de ciertas amenazas del mundo real. Este tipo de
prueba implica varios pasos (reflejados en la estructura de menús de Kali Linux) y culmina en la explotación de
vulnerabilidades y el acceso dinámico a otras máquinas y redes dentro del alcance objetivo.

Las evaluaciones de aplicaciones (generalmente de caja blanca o negra) se enfocan en una sola aplicación y usan
herramientas especializadas como las que se encuentran en elAnálisis de aplicaciones web, evaluación de bases de datos,
ingeniería inversa,yHerramientas de explotacióncategorías del menú.

Se discutieron varios tipos de ataques, entre ellos: Denegación de servicio, que interrumpe el comportamiento de una
aplicación y la vuelve inaccesible; corrupción de la memoria, que conduce a la manipulación de la memoria del proceso, lo
que a menudo permite la ejecución de código por parte de un atacante; ataques web, que atacan servicios web utilizando
técnicas como inyección SQL y ataques XSS; y ataques de contraseña, que a menudo aprovechan las listas de contraseñas
para atacar las credenciales del servicio.

302 Kali Linux revelado


Palabras clave

Cambios constantes
Certificaciones
Entrenamientos
Capítulo

Conclusión: El 12
Camino por delante
Contenido

Mantenerse al día con los cambios306 Mostrando su conocimiento recién adquirido306 Ir más lejos307
¡Felicidades! Con suerte, ahora debería estar más familiarizado con su sistema Kali Linux y no debería
tener miedo de usarlo para cualquier experimento que se le ocurra. Ha descubierto sus características
más interesantes, pero también conoce sus límites y varias formas de evitar esas limitaciones.

Si no ha puesto en práctica todas las funciones, conserve este libro como referencia y refresque su memoria
cuando esté a punto de probar una nueva función. Recuerda que no hay nada mejor que la práctica (y la
constancia) para desarrollar nuevas habilidades.Esforzarse más1, como dice Seguridad Ofensiva.

12.1. Mantenerse al día con los cambios

Con una distribución en constante cambio comorodando kali, algunas partes del libro necesariamente quedarán obsoletas.
Haremos todo lo posible para mantenerlo actualizado (al menos por elversión en línea2), pero en la mayoría de los casos
tratamos de proporcionar explicaciones genéricas que deberían ser útiles durante mucho tiempo.

Dicho esto, debe estar listo para aceptar los cambios y encontrar soluciones a cualquier
problema que pueda surgir. Con una mejor comprensión de Kali Linux y su relación con Debian,
puede confiar en las comunidades de Debian y Kali y sus numerosos recursos (registradores de
errores, foros, listas de correo, etc.) cuando se atasque.
No tenga miedo de reportar errores (vea la sección6.3, “Presentar un buen informe de error” [página 134])!
Si es como yo, para cuando haya completado los pasos necesarios para presentar un buen informe de error
(y lleva algo de tiempo), habrá resuelto el problema o al menos encontrado una buena solución. Y al archivar
el error, estarás ayudando a otras personas afectadas por el problema.

12.2. Mostrando su conocimiento recién adquirido

¿Estás orgulloso de tus nuevas habilidades con Kali Linux? ¿Te gustaría asegurarte de recordar las cosas
realmente importantes? Si responde afirmativamente a una de esas preguntas, entonces debería considerar
solicitar el programa Kali Linux Certified Professional.

Es una certificación integral que garantizará que sepa cómo implementar y usar Kali Linux en muchos casos
de uso realistas. Es una buena adición a su currículum y también demuestra que está listo para ir más allá.

1https://www.offensive-security.com/offsec/say-try-harder/
2https://kali.entrenamiento/

306 Kali Linux revelado


12.3. Ir más lejos

Este libro le enseñó muchas cosas que cualquier usuario de Kali Linux debería saber, pero tomamos algunas
decisiones difíciles para mantenerlo breve y hay muchos temas que no se cubrieron.

12.3.1. Hacia la administración del sistema

Si desea obtener más información sobre la administración del sistema, solo podemos recomendarle que
consulte el Manual del administrador de Debian:

mihttps://debian-handbook.info/get/
Allí encontrará muchos capítulos complementarios que cubren los servicios comunes de Unix que hemos omitido
por completo en este libro. E incluso para los capítulos que se han reutilizado en el libro de Kali, encontrará
muchos consejos complementarios, en particular sobre el sistema de empaquetado (que también se cubre más
extensamente en su nivel más bajo).

El libro de Debian obviamente presenta más profundamente la comunidad de Debian y la forma en que está organizada. Si
bien este conocimiento no es vital, es realmente útil cuando tiene que interactuar con los colaboradores de Debian, por
ejemplo, a través de informes de errores.

12.3.2. Hacia las pruebas de penetración

Probablemente ya haya notado que este libro no le enseñó las pruebas de penetración. Pero las cosas que
aprendiste siguen siendo importantes. Ahora está listo para explotar completamente el poder de Kali Linux, el
mejor marco de pruebas de penetración. Y tiene las habilidades básicas de Linux requeridas para participar en la
capacitación de Offensive Security.

Si cree que aún no está listo para un curso pago, puede comenzar siguiendo lasMetasploit desatado3
formación en línea gratuita. Metasploit es una herramienta de prueba de penetración muy popular y debe
conocerla si se toma en serio sus planes para aprender las pruebas de penetración.

El siguiente paso lógico sería entonces seguir elPruebas de penetración con Kali Linux4curso en línea que
abre el camino hacia la famosa certificación “Offensive Security Certified Professional”. Este curso en línea se
puede seguir a su propio ritmo, pero la certificación es en realidad una prueba de penetración práctica,
difícil, de 24 horas de duración, en palabras reales, que se lleva a cabo en una red VPN aislada.

¿Estás preparado para el desafío?

3https://www.offensive-security.com/metasploit-unleashed/
4https://www.offensive-security.com/cursos-y-certificaciones/

Capítulo 12 — Conclusión: El camino por delante 307


Índice

_ añadir un usuario a un grupo,112


. configuración,239 añadir grupo,113
. d,200 agregar usuario,112

. htaccess,120 Herramienta de paquete avanzado,177 ayudante


/desarrollo,48 (paquete Debian),170 AllowOverride, directiva de
/etc/apt/apt.conf.d/,200 /etc/ Apache,119,120 análisis
apt/preferencias,202 /etc/
apt/sources.list,178 /etc/apt/ vulnerabilidad,6
trusted.gpg.d/,208 /etc/ Aplicación web,6
grupo,112 ansible,261
/etc/gshadow,112 Apache,118
/etc/red/interfaces,109 /etc/ directivas,119
contraseña,112 directivas apache,121
/etc/sal/minion,261 evaluaciones de aplicaciones,295
/etc/sombra,112 aplicaciones
/etc/ssh/sshd_config,115 / recopilación,10
proc,48 menú,6
/sistema,48 aplicando un parche,233 a
/var/lib/dpkg/,217 propósito,128
/var/www/html/,118 APTO,177
CPU de 32 bits,dieciséis configuración,200
CPU de 64 bits,dieciséis pantalla de encabezado,191

Configuracion inicial,84
A interfaces,196
a2dismod,118 búsqueda de paquetes,191

a2enmod,118 fijación,202
a2ensita,119 preferencias,202
ACEPTAR,161 apto,181
cuenta apt build-dep,231
creación,112 apt dist-actualización,185
desactivar,113 actualización completa apt,185

modificación,113 instalación apta,183

actividad, seguimiento,168 purga apta,186


apto eliminar,186 evaluación
búsqueda adecuada,191 solicitud,295
espectáculo apto,191 caja negra,296
fuente adecuada,229 formalización,297
actualización adecuada,181 vulnerabilidad,288
actualización adecuada,184 caja blanca,296
apt-caché,191 ataques
apt-cache dumpavail,192 lado del cliente,301

nombres de paquetes apt-cache, base de datos,6

192 política de apt-cache,192 negación de servicio,298

búsqueda apt-cache,191 corrupción de la memoria,299

programa apt-cache,191 contraseña,7,300


apt-cdrom,178 tipos de,298
apt-get,181 web,300
inalámbrico,7
apt-get dist-upgrade,185
apt-get install,183 auditoría, seguridad,5

apt-get purga,187 autenticación


autenticación de paquetes,208
apt-get remove,186
AuthName, directiva de Apache,120
apt-obtener actualización,181
AuthType, directiva de Apache,120
actualización de apt-get,184
AuthUserFile, directiva de Apache,120
clave apt,208
instalación automática,95 paquetes
marca apt auto,205
instalados automáticamente,205 efecto
manual de marca apt,205
avalancha,169
apt-xapian-índice,192
axi-caché,192
apt.conf.d/,200
aptitud,181,196 actualización de
B
aptitude dist,185 actualización
proceso de fondo,57
completa de aptitude,185 Retractarse,XXI,2 bash
instalación de aptitud,183 corchetes,168 truco de
aptitude markauto,205 bash,168
purga de aptitud,187 bg,57
eliminación de aptitud,186 BIOS,24
actualización segura de aptitude,184 archivo de dispositivo de bloque,49

búsqueda de aptitudes,191 preselección de arranque,96

espectáculo de aptitud,191 pantalla de arranque,67

aptitud unmarkauto,205 llave USB de arranque,19


actualización de aptitud,181 gestor de arranque,85
aptitud por qué,205 BOOTP,258
arquitectura Saltos, campo de encabezado,
soporte de múltiples arcos, 214 dependencia rota,195
206 instalaciones ARM,98 bruce schneier,156

Índice 309
ataques de fuerza bruta,300 Compilacion
buffer de un núcleo,237 prueba de
Desbordamiento,299 penetración de cumplimiento,292
recibir búfer,162 componente (de un repositorio),179
informe de error,134 confites,220
bichos.kali.org,138 confidencialidad
construir dependencias, instalación,231 opciones archivos,88

de construcción,234 configuración, secuencia de comandos

Depende de la construcción,231 debconf,220 configuración

edificio creando paquetes de configuración,269


una imagen ISO en vivo personalizada, archivos,220
241 un paquete,236 configuración inicial de APT,
84 gestión,261
C
red
caché, proxy,84
DHCP,71
gato,56
estático,71
cd,52
del núcleo,239 configuración
cdimage.kali.org,14,181
del programa,114 conflictos,
preselección de cdrom,96
214
Certificación,306
Conflictos, campo de encabezado,214
cambio,113
contribución, sección,179
cadena,160
control,211
archivo de registro de cambios,271
archivo de control,272
registro de cambios.Debian.gz,130
suma de control,169
archivo de dispositivo de caracteres,49

comprobar la seguridad,171
control.tar.gz,217
copiando imagen iso,19
sumas de control,220
derechos de autor,131
cocinero,261
archivo de derechos de autor,271
franco suizo,113

chgrp,58 selección de país,68


mod,58 cp,53
elección creadob,116
de país,68 crear usuario,116
del lenguaje,67 creación
Chon,58 de una base de datos PostgreSQL,116

chroot,245 de un usuario de PostgreSQL,116 de

chsh,113 grupos,113

ataques del lado del cliente,301 de cuentas de usuario,112 credenciales,

clúster, clúster PostgreSQL,116,117 predeterminado,159 secuencias de comandos

línea de comando,51 entre sitios (XSS),300 configuración de criptas,

comunidades,132 248

comparación de versiones,190 contraseña nuclear,250

310 Kali Linux revelado


llaves rizadas,168 dh_instalar,273
personalización de la imagen ISO en vivo,241 DHCP,258
ataques de diccionario,300 directivas,
D apache,119,121 DirectoryIndex, directiva de
evaluación de la base de datos,6 Apache,120 deshabilitar una cuenta,113
servidor de base de datos,115
preselección de disco,96
dch,232
dd,22 Discos (programa),21
debconf,220 utilidad de disco,23

debconf-obtener,101 distribucion2
debconf-obtener-selecciones,98 dm-cripta,89
conjunto de debconf,101 mensaje,60
DEBE CORREO,270 ADNT,161
DEBFULLNAME,270 dnsmasq,258
Debian documentación,128,130
relación con Kali Linux,4 Manual del descargar
administrador de Debian,307 Directrices imagen ISO,14
de software libre de Debian,5 Debian las fuentes,229
GNU/Linux,2 dpkg,176
Política de Debian,5 base de datos,217
debian-archive-llavero,208 dpkg --verificar,169
manual-del-kernel-debian,238 operación interna,219
debian/registro de cambios,232, paquete de compilación dpkg,236
271 debian/control,272 dpkg-deb,236
debian/derechos de autor,271 dpkg-fuente --commit,233
debian/parches,230 unidad, unidad USB,19 GOTA,
debian/reglas,234,273 161
deconstruir,237 dropdb,116
contraseñas predeterminadas,159
dropuser,116
objetivo por defecto,122 arranque doble,87
eliminación de un grupo,
113 del grupo,113 mi
negación de servicio,298 eco,54
dependencia,212 editor,56
Depende, campo de encabezado, partición encriptada,88
212 entorno de escritorio,3 persistencia encriptada,248
elección durante la construcción de ISO en vivo, ingeniería
242 base de escritorio,269 contrarrestar,7

detectar cambios en el sistema de archivos,169 archivo de Ingeniería social,7


dispositivo,49 Mejoras, campo de encabezado,
df,60 214 ambiente
dh-hacer,270 Variable ambiental,54

Índice 311
ExecCGI, directiva de Apache,120 información,130

módulos de ejecución, sal,262 gcontraseña,113


ejecución, derecho,57 clave GPG,17
experimental,203 objetivo gráfico,122
Explicación,204 grep,56
herramientas de explotación,7 grupo
añadir un usuario,112
F cambiar,113
fail2ban,158 creación,113
características,8 supresión,113
fg,57 de volúmenes,89
archivo
dueño,57
confidencialidad,88 modo de grupo,113
Archivos de configuración,220 COMIDA,85
sistema de archivos,49 gui-apt-clave,210
sistema de archivos
partición guiada,76
jerarquía,54
regla de filtrado,160,163 H
encontrar,56 descubrimiento de hardware,61

huella dactilar,169 montón de corrupción,299


cortafuegos,159 historia de kali linux,2
FollowSymLinks, directiva de Apache,120 HOGAR,55
forense,7 directorio de inicio,55
modo,8 anfitrión, anfitrión virtual,118
formalización de la evaluación,297 htcontraseña,121
formato de disco,49 servidor proxy HTTP,84

foros,132 servidor HTTP,118


foros.kali.org,132 http.kali.org,180
ADELANTE,160 HTTPS,118
gratis,60 hiper-v,24
nodo libre,133
constructor de muebles,166
I
ICMP,162
GRAMO identificación,60,113

obtener las fuentes,229 si arriba abajo,109


getente,112 interpretación,7
clon de git,230 Incluye, directiva Apache,120
problemas de GitHub,148 incompatibilidades,214
GNOMO,3 Índices, directiva de Apache,120
gnome-disco-utilidad,21 información,130
gnome-sistema-monitor,168 recopilación de información,6
ÑU initrd preseed,96

312 Kali Linux revelado


APORTE,160 kali-dev,4,180 kali-linux-*
instalación,66 metapaquetes,243 menú kali,
automático,95 269
de dependencias de compilación,231 en kali meta,269
dispositivos ARM,98 instalación de rodando kali,4,179
paquetes,182,183 solución de kali.org/docs/,131
problemas,99 KDE,3
desesperado,95 núcleo,48
preconfiguración del instalador,96 Compilacion,237
desbordamiento de enteros,299 configuración,239
Protocolo de mensajes de control de registros,60

Internet,162 tablas ip6,159,163 iptables,159 fuentes,238


,163 canal irc,133 llave
claves de autenticación de APT,209
servidor isc-dhcp,258 Llave USB,19
imagen ISO Diseño del teclado,69
autenticación,17 matar,57

arrancando,24 conquistador,130
proceso de copiar,19 kvm,24
generación personalizada,241

descargar,14 L
espejos,14 Selección de idioma,67

variantes,dieciséis
diseño, teclado,69
menos,56

j libapache-mod-php,118
diario,60 linux,48
diario,60 distribución,2
núcleo,2,9
k fuentes del núcleo,238
kali linux imagen ISO en vivo,14
comunidades,132 generación personalizada,241

documentación,131 arranque en vivo,245

descargar,14 construcción en vivo,241

características,8 agregando archivos,245

empezando,14 presentación preliminar de debconf,

historia,2 244 manos,245

metapaquetes,243 paquetes para instalar,243


políticas,10 cargador
relación con Debian,4 gestor de arranque,85

repositorios,179 REGISTRO,161

kali-archivo-llavero,208 valores verificación de registro,167

predeterminados de kali,269 Inicio sesión,167

Índice 313
Administrador de volumen lógico,89 inicio de espejos,14,180
sesión, inicio de sesión remoto,115 registros mkdir,53
mkfs,49
aptitud,199 modificación de un paquete,228
dpkg,194 modificación, derecho,57
diario,60 supervisión,167
núcleo,60 actividad,168
supervisión,167 archivos,170

yo,52 archivos de registro,167

lsdev,61 más,56
lshw,61 montar,49
lspci,61 punto de montaje,82
lspcmcia,61 Multi-Arco,206
susb,61 objetivo multiusuario,122
LUCKS,89 MultiViews, directiva de Apache,120
LVM,89 mv,53

METRO norte

máquina, máquina virtual,24 filtro de red,159


sección principal,179 configuración de la red,71,108
hacer paquete de deuda,241 con si arriba abajo,109
archivo de maquillaje,272 con administrador de red,
hombre,128 108 con systemd-red,110
gestión instalación de red,258
gestión de configuración,261 de preselección de red,97
servicios,121 servicios de red,10
paginas de manual,128 asegurar,159
paquetes instalados manualmente,205 Gerente de Redes,108
mascarilla nuevo grupo,58,113
máscara de derechos,59 NOTICIAS.Debian.gz,130
MASCARADA,161 no libre, sección,179
Registro de arranque contraseña nuclear,250
principal,87 amo, amo de la
sal,261 MD5,169 O
sumas md5,220 representación octal de derechos,59
corrupción de la memoria,299 seguridad ofensiva,2
menú, menú de aplicaciones de Kali Linux,6 abre el servidor sh,115
metapaquete,213,215 Opciones, directiva de Apache,119
kali-linux-*,243 PRODUCCIÓN,160
metapaquetes,85 desbordamiento, búfer,299
Metasploit desatado,307 sistema de archivos superpuesto,

siervo, siervo de sal,261 246 dueño

314 Kali Linux revelado


grupo,57 filtrar,159
usuario,57 propiedad intelectual,159

PAE (Extensión de dirección física),36 se


PAG separaron,247
paquete dividir
control de autenticidad,208
encriptado,88
paquete binario,176
intercambiar particion,82
construir,236
fraccionamiento,75
configuración,269
partición guiada,75
conflicto,214
partición manual,79
inspección de contenido,
contraseña,113
189 paquete Debian,176
contraseña,113
dependencia,212
ataques,300
lista de archivos,187
contraseñas predeterminadas,159
lista de encabezados,190
política,158
incompatibilidad,214
ataques de contraseña,7
información,190
parche,233
instalación,182,183
aplicación de parche,233
haciendo cambios,232
CAMINO,53
meta informacion,210,211
pci,292
modificación,228
prueba de penetración
prioridad,202
cumplimiento,292
purga,187
eliminación,183,
tradicional,293
pruebas de penetración,5
186 reemplazo,216
repositorio,275 curso de pruebas de penetración,

sello,208 307 permisos,57

buscar,188, persistencia,246
191 firma,208 encriptado,248
fuente de,178 varias tiendas,249
paquete fuente,176 pg_createcluster,117
estado,188 pg_ctlcluster,117
desempacar,182 pg_dropcluster,117
comparación de versiones, pg_hba.conf,116
190 paquete virtual,215 pg_lsclusters,117
rastreador de paquetes,5 pg_renamecluster,117
Paquetes.xz,178 pg_upgradecluster,117
embalaje clave PGP,17
opciones de construcción,234 PHP,118
paquetes de configuración,269 PID, identificador de proceso,50

nueva versión anterior,235 Alfiler,204


paquete Pin-Prioridad,204

Índice 315
Pinfo,130 reinstalación,194
silbido,162 RECHAZAR,161
fijación, fijación APT,202 punto, Liberar.gpg,208
punto de montaje,82 después de inicio de sesión remoto,115

la explotación,7 eliminación de un paquete,


postgresql,115 183 quitar un paquete,186
postinstancia,217 reemplazo,216
postal,217 Reemplaza, campo de encabezado,216

POSTERIOR,160 Reportar un error,134 Reportar un error,

predependencia,213 143

Pre-Depende, campo de encabezado, herramientas de informes,7

213 preferencias,202 repositorio de paquetes,275


preinstancia,217 reprepro,275
prematuro,217 Requerir, directiva de Apache,121
ENRUTAMIENTO PREVIO,160 requisitos mínimos de instalación
archivo preconfigurado,97 mentos,66
instalación previa de debian,96 modo de rescate del instalador,87

prioridad cambiar el tamaño de una partición,

prioridad del paquete,202 80 recuperar las fuentes,229

programa Ingeniería inversa,7

configuración,114 derechos,57

Proporciona, campo de encabezado,215 mascarilla,59

apoderado,84 representación octal,59


caché proxy,84 modelo de riesgo,156
PD,57 clasificaciones de riesgo,290

marioneta,261 cazador de rk,171

purga de un paquete,187 purgar un rm,53


paquete,187 personas con rmdir,53
discapacidad,52 rodando, Kali rodando,3
arranque PXE,258 contraseña raíz,159
rtfm,128
q archivo de reglas,273

QCOW,30
QEMU,24 S
módulos de ejecución de sal,262
R fórmulas de sal,264
leer, correcto,57 módulos de estado de sal,265
LÉAME.Debian,130 estados de sal,264
recibir búfer,162 llave de sal,261
Recomendaciones, campo de encabezado, pila de sal,261
214 REDIRECTO,161 samhain,170
redirección,56 escaneando hilos,290

316 Kali Linux revelado


Schneier, Bruce,156 fuentes.lista,178
búsqueda de paquetes,191 Fuentes.xz,178
sección suplantación de identidad,7

contribuir,179 Inyección SQL,300


principal,179 SSH,115
no libre,179 servicio ssh,159
arranque seguro,24 SSL,118
ssh seguro,159 módulos de estado, sal,265

asegurar,156 pedacito pegajoso,58

un ordenador portátil,158 sudo,109


un servidor,158 Sugiere, campo de encabezado,214

servicios de red,159 intercambio,82

seguridad intercambiar particion,82

evaluaciones,284 SymLinksIfOwnerMatch, directiva de Apache,120

revisión de cuentas,5
sináptico,196,199 administracion del sistema,307

política,156 sistema, sistema de archivos,49 systemctl,121

archivo de servicio, archivo de servicio systemd,


122 Administración de Servicios,121 directorio
setgid,58
sistema,121
setgid, correcto,58
systemd-red,110
resuelto por systemd,111
setuido, cierto,58
Configuración,24
T
sg,113
objetivo, objetivo del sistema,122
SHA1,169
TFTP,258
SHA256SUMAS,17
tftpd-hpa,258
caparazón,52
modelo de amenaza,156
reducir una partición,80
TLS,118
señal,57
arriba,168
firma rastreador
firma del paquete,208
rastreador de paquetes,5
SNAT,161 prueba de penetración tradicional,293
olfateando,7
capacitación,306
herramientas de ingeniería social,7
cable trampa,170
fuente
solucionar problemas de instalaciones,99
de paquetes,178 confianza, red de confianza,18 clave de
del núcleo de Linux,238 confianza,209
paquete,176
recuperación,229 tu
paquete fuente UEFI,24
construir,236 ULOG,161
haciendo cambios,232 máscara,59

Índice 317
tu nombre,60 web,300
instalación desatendida,95
montaje de unión,246 W
unidad, unidad systemd,121 WantedBy, directiva systemd,122

desempacar Deseos, directiva systemd,122

paquete binario,182 restricción de acceso web,121 análisis

mejora de aplicaciones web,6 ataques web,

manejo de problemas después de una actualización,193


300

Actualización de sistema,184
autenticación web,120 red

versión anterior, empaquetando una nueva,235 de confianza,18 Servidor

Llave USB,19 web,118


generador de imágenes de disco
usuario

dueño,57 Win32,19 ataques inalámbricos,7

creación de usuarios,72
escribe bien,57
espacio de usuario,48
X
V xdg,55
entorno variable,54 variantes Xen,24
de imagen ISO en vivo,242 VDI, Xfce,3
30
Y
versión, comparación,190
gañido,130
vigor,112
VIP,112
anfitrión virtual,118
máquina virtual,24
memoria virtual,82
paquete virtual,215
caja virtual,24
vmware,24
volumen
grupo,89
volumen lógico,89
volumen físico,89
vulnerabilidad
análisis,6
evaluaciones,288
lado del cliente,301
negación de servicio,298
corrupción de la memoria,299
contraseña,300
escaneos,290

tipos de,298

318 Kali Linux revelado

También podría gustarte

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy