Вы находитесь на странице: 1из 341

Kali Linux

Revelado
 
El dominio de las pruebas de penetración
Distribución
Kali Linux
Revelado
 
El dominio de las pruebas de penetración
Distribución

por Raphaël Hertzog, Jim


O'Gorman, y Mati Aharoni
Kali Linux Revelado

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

Este libro es bajo licencia 3.0 Licencia Creative Commons Reconocimiento-Compartir bajo la misma.

mi http://creativecommons.org/licenses/by-sa/3.0/

Algunas secciones de este libro prestado el contenido de la “Guía del administrador de Debian, Debian Jessie desde el descubrimiento hasta la
maestría” escrito por la Raphaël Hertzog y Roland Mas, que está disponible aquí:

mi https://debian-handbook.info/browse/stable/

A los efectos de la licencia CC-BY-SA, Kali Linux es Revelado anAdaptation del Manual del DebianAdministrator.

“Kali Linux” es una marca comercial de Seguridad ofensivo. Cualquier uso o distribución de este libro, modificado o no, deben cumplir con la política de marcas
comerciales se define aquí:

mi https://www.kali.org/trademark-policy/

Todos los derechos no explícitamente concedidos anteriormente son reservados. ISBN:

978-0-9976156-0-9 (Paperback)

Offsec Press
19701 Bethel Church Road, # 103-253 Cornelio NC 28031
EE.UU.

www.offensive-security.com

Biblioteca del Congreso de control el número: 2017905895

La información contenida en este libro se distribuye “tal cual”, sin garantía. Mientras que todas las precauciones se han tomado en la
preparación de este trabajo, ni los autores ni Offsec Prensa tendrá ninguna dad liabil- a cualquier 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 eso.

Debido a la naturaleza dinámica de Internet, las direcciones AnyWeb o enlaces contenidos en este bookmay han cambiado desde su publicación

y puede que ya no sea válida. 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 Gestión de la diferencia con Debian. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.3 Propósito y casos de uso. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.4 Características principales Kali Linux. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.4.1 Un sistema vivo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.4.2 Modo Forense . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .8
1.4.3 un núcleo de Linux personalizado. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.4.4 totalmente adaptables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .9
1.4.5 Un sistema operativo de Trustable. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.4.6 Se puede utilizar en una amplia gama de dispositivos ARM. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.5 Políticas Kali Linux. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.5.1 solo usuario predeterminado root . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.5.2 Servicios de red desactivado por defecto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.5.3 Una colección Curated de aplicaciones. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.6
1 Resumen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
6 Resumen

2. Introducción a Kali Linux 13


2 1 Desca ga de una magen SO Ka 14
2 1 1 Cuando pa a de a ga 14
2 1 2 Lo que ha que de a ga 14
V d ec sé s
B w S 17

B W PGP 17
2 1 4 op a a magen en un DVD ROM o a e USB 19
C U W w 19

C USB K 20
C USB K OS X M OS 23
2 2 A anque de una magen de Ka SO en modo d ec o 24

2 2 1 En un equ po ea 24
2 2 2 En una máqu na ua 24
Observaciones preliminares . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
VirtualBox. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
VMware. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
2.3 Resumen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

3. Fundamentos de Linux 47
3.1 ¿Qué es Linux y qué está haciendo? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
3.1.1 Hardware Conducir. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
3.1.2 La unificación de los sistemas de archivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
3.1.3 Procesos de Gestión. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
Gestión 3.1.4 Derechos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
3.2 La línea de comandos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
3.2.1 Cómo obtener una línea de comandos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
3.2.2 Línea de comando básico: Navegar por árbol de directorios y administración de archivos. . . . . . . . . . . . . . . . . . 52
3.3 El sistema de archivos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54

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


3.3.2 El directorio principal del usuario. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
3.4
3 4 Comandos ú es . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
útiles.
m 56

3 4 2 Bú queda de a h o den o de a h o 56
3 4 3 P o e o de Ge ón 57
3 4 4 De e ho de ge ón 57
3 4 5 Ob en ón de n o ma ón de ema Reg o 60
3 4 6 E de ub m en o de ha dwa e 61
3 5 Resumen 62

4 nsta ac ón de Ka L nux sesen a y c nco

4 1 Requ s os pa a a ns a ac ón m n ma 66
4 2 ns a ac ón paso a paso en un d sco du o 66
4 2 1 n a a ón n o ma o 66
E 66

Se e ón de d oma 68
Se e ona e pa 69
Se e ón de a d bu ón de e ado 70
w 70

Ca gando omponen e 70
D w 71

Con gu a ón de a ed 71
Roo 72
C 73

La de e ón de d o o o d po o 74
Pa onam en o 74

V K R
Copiando la imagen en vivo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
Configuración del gestor de paquetes ( apto) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
Instalación del gestor de arranque GRUB. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
Finalización de la instalación y reinicio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
4.2.2 Instalación en un sistema de archivos totalmente encriptada. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
Introducción a LVM. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
Introducción a LUKS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
Para crear particiones cifradas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
Fin de la partición cifrada guiada con LVM. . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
4.3 Instalaciones desatendidas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
4.3.1 Respuestas preconfiguración . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
Con parámetros de inicio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
Con un fichero de preconfiguración en el initrd. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
Con un fichero de preconfiguración en el medio de arranque. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93

Con un fichero de preconfiguración cargado de la red. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93


4.3.2 Creación de un fichero de preconfiguración. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
4.4
4 4 Instalaciones
ns a ac ones b azo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
brazo.
4 5 ns a ac ones de so uc ón de p ob emas 95
4 6 Resumen 100

5 Conf gurac ón de Ka L nux 103


5 1 Con gu ac ón de a ed 104
5 1 1 En e e o o on Ge en e de Redes 104

5 1 2 En a nea de omando on updown 105


E m sys emd ne wo kd 106

5 2 Ges ón de usua os y g upos Un x Un x 107


C 107

5 2 2 Mod a ón de una uen a e en e o on a eña 108


5 2 3 De a a ón de una uen a 109
5 2 4 G upo Un de ge ón 109
5 3 Con gu a ón de e o 109

5 3 1 Con gu a ón de un p og ama e pe o 110


C H m 110

5 3 3 Con gu a ón de ba e de da o Po g eSQL 111


T po de one ón au en a ón de en e 111
C ea ón de u ua o ba e de da o 112
m Q 113

5 3 4 Con gu a ón de Apa he 113


Con gu a ón de ho ua e 114
D e a omune 115
5 4 Adm n s a se v c os 117
5 5 Resumen 119

V
6. ayudarse a sí mismo y Obtención de ayuda 123
6.1 Fuentes de documentación. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
6.1.1 Páginas de Manual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
6.1.2 información documentos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
6.1.3 Paquete-específica Documentación. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
6.1.4 Sitios Web. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
6.1.5 Documentación de Kali docs.kali.org. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
6.2 Comunidades Kali Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
6.2.1 WebForos en forums.kali.org. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
6.2.2 # kali-linux Canal IRC en Freenode. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
6.3 La presentación de un informe de errores buenos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129

6.3.1 Recomendaciones genéricas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130


Cómo comunicarse. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
Qué poner en el informe de error. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
Consejos misceláneos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
6.3.2 Donde un informe de error. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
6.3.3
6 3 3 Cómo p
presentar
e en a un informe
n o me de e
error.
o ......................................... 133
m 133

m D 137

m w 144

6 4 Resumen 146

7. Asegurar y Monitoreo de Kali Linux 149


7 1 De n c ón de una Po ca de Segu dad 150

7 2 Pos b es med das de segu dad 152


E 152

7 2 2 en un o denado po á 152
7 3 P o ecc ón de se v c os de ed 153
7 4 F ewa o e ado de paque es 153
C m m N 154

742Sna de 157
omando 157

Reg a 157
7 4 3 C ea ón de eg a 159
7 4 4 n a a ón de a Reg a en ada a anque 160
7 5 Mon o zac ón y eg s o 161
7 5 1 Reg o de Segu m en o on a 161
7 5 2 Supe ón de a a dad en empo ea 162
7 5 3 Camb o de de e ón 162
Paque e de aud o a on 162
A h o de mon o eo A DE 163
7 6 Resumen 164

K R
8. Gestión de paquetes de Debian 169
8.1 Introducción a la APT. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
8.1.1 Relación entre la APT y dpkg. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
8.1.2 La comprensión de la sources.list Expediente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
8.1.3 Repositorios Kali. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
El Kali-Balanceo Repositorio. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
El Repositorio de Kali-Dev . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174
El Repositorio de Kali-bleeding-edge. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174
El Linux Espejos Kali . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174
8.2 Interacción paquete básico. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175
8.2.1 Inicialización de APT. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176
8.2.2 Instalación de paquetes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176
Instalación de paquetes con dpkg. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176
Instalación de paquetes con APT. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
8.2.3 Actualización de Kali Linux. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179
8.2.4
8 24E Extracción
a ón y pu
purga
ga paque
paquetes.
e ..................................... 180
8 2 5 Paque e de n pe ón 181
C S A 181
Con u a de a ba e de da o de paque e d pon b e on 185
8 2 6 So u ón de p ob ema 187
G m 187
188

Vo e a n a a o paque e on 189
Ap o e hando o e epa a dependen a oa 189
8 2 7 F on end 190
Ap ud 190
S náp a 194
8 3 Con gu ac ón avanzada APT y su uso 194
8 3 1 Con gu a ón de APT 195
8 3 2 ge ón de a p o dade de paque e 196
8 3 3 T aba a on a a d bu one 198
8 3 4 Segu m en o de paque e n a ado au omá amen e 199
8 3 5 Ap o e ham en o Sopo e Mu A o 200
Pe m endo Mu A o 200
ARCH m m 201
8 3 6 Va da ón de au en dad de un paque e 202
8 4 e e enc a de paque e P o und zando en e S s ema de paque e Deb an 204
841E E ped en e 206
Dependen a e ampo depende 207
P D A m 207

Re om enda nd a me o a ampo 208

V
Conflictos: el conflicto de campo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208
Incompatibilidades: se rompe el campo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209
Los productos proporcionados: Proporciona el campo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209

Sustitución de Archivos: El Reemplaza campo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210


8.4.2 Secuencias de comandos de configuración. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211

Instalación y actualización de secuencias de comandos de secuencia. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213

La eliminación de paquetes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214


8.4.3 sumas de comprobación, conffiles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214
8.5 Resumen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216

9. Uso avanzado 221


9.1 Modificación de paquetes Kali. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222

9.1.1 Obtención de las Fuentes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223


9.1.2 Dependencias instalar la revisión . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226
9.1.3 Cambios decisiones. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226
La aplicación de un parche. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227
Ajustar las opciones de compilación.
A m ........................................ 229
E 229
9 1 4 n o de a on u ón 230
9 2 Vo e a omp a e Ke ne de L nu 232

9 2 1 n odu ón equ o pe o 232


O 233

9 2 3 Con gu ando e nú eo 234


9 2 4 Comp a a on u ón de paque e 235
9 3 mágenes Cus om Bu d ng Ka SO v vas 236
9 3 1 n a a ón P e equ o 236
9 3 2 mágene Ed o o on d e en e en o no de e o o 237
9 3 3 Camb o de on un o de paque e n a ado 237
9 3 4 E u o de gan ho pa a mod a e on en do de a magen 238
A m SO m 239
9 4 Ad c ón de Pe s s enc a de a SO en v vo con una ave USB 239
P E 239

9 4 2 Con gu a ón de a Pe en a en una a e USB 241


9 4 3 Con gu a ón de ado Pe en a en una a e USB 242
9 4 4 U o de a o a ma ene de pe en a 243
9 5 Resumen 245
R m C P M K 245
R m C m 246

9 5 3 Re umen Con e o pa a mágene Cu om Bu d ng Ka SO a 247

10. Kali Linux en la empresa 251


10 1 ns a ac ón de Ka L nux avés de a ed PXE Boo 252

V K R
10.2 Gestión de la Configuración de apalancamiento. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255

10.2.1 Configuración de SaltStack . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255


10.2.2 Ejecución de comandos en Minions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256
10.2.3 Sal Unidos y otras características . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258
10.3 extender y personalizar Kali Linux. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262
Paquetes 10.3.1 bifurca Kali. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262
10.3.2 Creación de paquetes de configuración. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263
10.3.3 Creación de un repositorio de paquete para APT. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269
10.4 Resumen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273

11. Introducción a las evaluaciones de seguridad 279


11.1 Kali Linux en una evaluación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281
11.2 Tipos de evaluaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283
Evaluación de la vulnerabilidad 11.2.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284
Probabilidad de ocurrencia. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287
Impacto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287
Riesgo general. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287
En resumen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 288
11.2.2 Cumplimiento Penetration Test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 288
11.2.3 Prueba de Penetración tradicional. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289
Evaluación de aplicaciones 11.2.4. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291
11.3 La formalización de la Evaluación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293
11.4
11 4 tipos
pos de a aques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294
ataques.
11 4 1 Denega ón de Se o 295
11 4 2 daño en a memo a 295
11 4 3 u ne ab dade en a Web 296
11 4 4 a aque de on a eña 296
11 4 5 Lo a aque de ado de en e 297
11 5 Resumen 297

12 Conc us ón: E cam no por recorrer 301


12 1 E con nua con os camb os 302

12 2 mos ando sus conoc m en os ec én adqu dos 302


12 3 Yendo más e os 302
12 3 1 Ha a adm n a ón de ema 303
H P P 303

nd ce 304

X
Prefacio

No tienes ni idea de lo bien que lo tienes.

En 1998, yo era un up-and-coming hacker, co-fundador uno de los equipos de hackers de sombrero blanco profesionales más tempranas.
Éramos niños, en realidad, con trabajos ideales, pagan para entrar en algunos de los más seguros sistemas informáticos, redes y edificios
en el planeta.

Suena bastante atractivo, pero en realidad, que pasó la mayor parte de nuestro tiempo se cierne sobre un teclado, armado con las herramientas digitales

de nuestro comercio. Hemos empuñado una sórdida colección de programas, diseñado para mapear redes y localizar objetivos; a continuación, analizar,

explotar, y pivotar a través de ellos. En algunos casos, uno de nosotros (a menudo Jim Chapple) escribiría herramientas personalizadas que hacer cosas

malas como escanear una red de clase (algo que ninguna otra herramienta podría hacer, en el momento), pero con mayor frecuencia se usaría o

modificar herramientas escritas por la comunidad hacker. En aquellos tiempos pre-Google, frecuentábamos BugTraq, Astalavista, Packet Storm, w00w00,

SecurityFocus, X-Force, y otros recursos para llevar a cabo la investigación y la construcción de nuestro arsenal.

Como teníamos tiempo limitado en cada concierto, tuvimos que actuar con rapidez. Eso significa que no podía pasar mucho tiempo jugando con

herramientas. Que significaba que teníamos que aprender las herramientas básicas dentro y por fuera, y mantener los auxiliares de barril, por si acaso.

Que significaba que tuvimos que tener las herramientas bien organizados, documentados y probados para que hubiera pocas sorpresas en el campo.

Después de todo, si no nos ponemos en, hemos perdido la cara con nuestros clientes y que tomaríamos nuestras recomendaciones mucho menos serio.

Debido a esto, he pasado una gran cantidad de herramientas de catalogación de tiempo. Cuando una herramienta fue puesto en libertad o actualiza, me

gustaría ir a través de una rutina. Tenía que averiguar si se ejecutan en la plataforma de ataque (algunos no lo hicieron), y si valía la pena (algunos no lo

eran); Tenía que actualizar las secuencias de comandos que dependían de ella, la documentan, y lo prueba, incluyendo la realización sobre los cambios

realizados en la versión anterior. Entonces, me sacuda todas las herramientas y ponerlas en directorios en función de su finalidad durante una evaluación.

Me gustaría escribir guiones envoltorio para ciertas herramientas, cadena algunas herramientas juntas, y correlacionar todo esto en un CD separado que

podríamos tener en áreas sensibles, cuando los clientes no tomemos en máquinas de ataque o quitar el medio de sus laboratorios.

Este proceso fue doloroso, pero era necesario. Sabíamos que teníamos la capacidad de romper en cualquier red, si aplicamos nuestros
conocimientos y experiencia adecuada, se quedó organizada, andworked eficiente. A pesar de que queda invicto era un motivador, se
trataba de proporcionar un servicio a los clientes que
necesario Nos entrar en las redes, por lo que resolvería falta y mover dinero hacia los programas de seguridad de información
descuidada-pero- crítico.
Pasamos años afilar nuestras habilidades y conocimientos, pero que no habría tenido éxito sin la organización y la eficiencia. Nos hubiera
fallado si no podíamos poner nuestras manos sobre la herramienta adecuada cuando sea necesario.

Es por eso que pasé tanto tiempo a la investigación, documentación, pruebas y herramientas de catalogación, y en la vuelta del siglo 21, se

estaba convirtiendo rápidamente en una, tarea abrumadora a tiempo completo. Gracias a Internet, la superficie de ataque en todo el mundo

explotó y la variedad y el número de herramientas de ataque aumentó exponencialmente, al igual que la carga de trabajo necesaria para su

mantenimiento.

A partir de 2004, la Internet explotó no sólo como una base para los negocios, sino también como una plataforma social. Las computadoras
eran asequibles, más favorable a los consumidores y ubicua. Almacenamiento tecnolo- gía 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ápido y más barato que nunca. El
comercio electrónico va en aumento, los sitios de medios sociales como Facebook (2004) y Twitter (2006) llegaron en línea andGoogle
(1998) hadmatured hasta el punto de que cualquier persona (incluyendo los delincuentes) podría encontrar casi cualquier cosa en línea.

La investigación se convirtió en crítico para equipos como el nuestro, porque hemos tenido que mantenerse al día con nuevos ataques y conjuntos

de herramientas. Respondimos a más delitos informáticos, y el trabajo forense exigió que ir con cuidado, ya que mucked través de la evidencia

potencial. El concepto de una CD en vivo significaba que podíamos realizar análisis forense en vivo en una máquina comprometida, sin

comprometer la evidencia. Ahora nuestro pequeño equipo ha tenido que gestionar herramientas de ataque, herramientas forenses, y una

herramienta de distri- bución área sensible; tuvimos que mantenerse al día con las últimas ataque y explotar las metodologías; y tuvimos que, ya

sabes, en realidad hacer lo que nos pagaron las pruebas de penetración, que estaban en gran demanda. Las cosas estaban fuera de control, y en

poco tiempo, wewere pasar menos tiempo en la batalla andmuchmore tiempo investigando, afilar nuestras herramientas y planificación.

No estábamos solos en esta lucha. En 2004, Mati “Mut” Aharoni, un hacker y seguridad profe- sional liberado “WHoppiX”
(White Hat Knoppix), un CD de Linux en vivo que anuncia como “el CD pruebas de penetración máxima en vivo”, que
incluía “todos los exploits SecurityFocus, Packet Storm y k-otik, Metasploit Marco 2.2, y mucho, mucho más.”

Recuerdo pensar downloadingWHoppiXand itwas una gran cosa ahora tener alrededor. He descargado otros CD en vivo, pensando que si alguna

vez en una pizca de verdad, CD en vivo podrían savemy tocino en el campo. Pero no iba a confiar en WHoppiX o cualquier otro CD para el trabajo

real. No confiaba en cualquiera de ellos para cumplir con la mayoría de mis necesidades; ninguno de ellos se sentía bien para mi flujo de trabajo;

que no estaban completos, distribuciones instalables; y el momento en que los descargué estaban fuera de fecha. Un conjunto de herramientas de

edad es el beso de la muerte en nuestra industria.

Simplemente añadí estas imágenes de CD, a pesar de su tamaño relativamente masiva, a nuestro arsenal y se mantiene hasta el doloroso proceso de

mantenimiento de nuestra caja de herramientas “reales”.

Pero a pesar de mis opiniones personales en el momento, y tal vez a pesar de las expectativas Muts', WHoppiX y sus descendientes
tuvieron un impacto sísmico en su vida, nuestra industria y nuestra comunidad.

XII Kali Linux Revelado


En 2005, se desarrolló WHoppiX intoWHAX, con un conjunto de herramientas ampliada y actualizada, basada en la “themore SLAX
modular (Slackware) CD en vivo.” Mut y un creciente equipo de voluntarios de la comuni- dad de hackers pareció darse cuenta de que
nomatter cómo perspicaz que eran, que nunca podrían anticipar todo el crecimiento y la fluctuación de nuestra industria y que los
usuarios de su CD tendrían variadas necesidades en el campo. Era obvio que Mut y su equipo estaban en realidad el uso WHAX en el
campo, y parecían dedicados a hacer que funcione. Este fue alentador para mí.

En 2006, Mut, Max Moser, y sus equipos consolidan auditor de seguridad de Linux y WHAX en una sola distribución denominada Ruta inversa. Todavía

se basa en SLAX, BackTrack continuó creciendo, añadiendo más herramientas, más marcos de soporte de idiomas, extendida, un amplio soporte

inalámbrico, una estructura de menú de catering para el principiante y los usuarios profesionales, y un núcleo heavilymodified. BackTrack se convirtió

en el líder de la distribución de la seguridad, pero muchos como yo todavía se utiliza como una copia de seguridad de sus “herramientas reales.” A

principios de 2009, Mut y su teamhad extendió significativamente BackTrack que dar marcha atrás 4. Ahora, un trabajo de tiempo completo para Mut,

BackTrack era ya no es un CD en vivo, sino una distribución basada en Ubuntu en toda regla aprovechamiento de los repositorios de software de

Ubuntu. El cambio marcado una evolución grave: BackTrack 4 tenía un mecanismo de actualización. En las propias palabras Muts': ‘Al sincronizar con

nuestros repositorios BackTrack, obtendrá regularmente herramienta de seguridad actualiza poco después de ser puestos en libertad.’

Este fue un punto de inflexión. El equipo BackTrack había sintonizado con las luchas que enfrentan pruebas de intrusión, analistas forenses y
otras personas que trabajan en nuestra industria. Sus esfuerzos se nos permitirá ahorrar mucho tiempo y proporcionar una base firme, que
nos permite obtener de nuevo en la pelea y pasar más tiempo haciendo las cosas importantes (y divertido). Como resultado, la comunidad
respondió que acuden a los foros y wiki; y por lanzar en el equipo de desarrollo. BackTrack fue realmente un esfuerzo de la comunidad,
withMuts sigue llevando la carga.

BackTrack 4had finallybecome un industrial-strengthplatformand I, andothers likeme, dio un suspiro de alivio. Sabíamos de primera mano “el
dolor y sufferance” Mut y su equipo estaban dando, becausewe habían estado allí. Como resultado, muchos de nosotros empezó a utilizar
BackTrack como fundamento principal para nuestro trabajo. Sí, todavía jugaba con herramientas, escribimos nuestro propio código, y
desarrollamos nuestras propias hazañas y técnicas; andwe investigado y experimentado; pero nose pasar todo el tiempo de recolección,
actualización, validación, y la organización de herramientas.

BackTrack 4 R1 y R2 son nuevas revisiones en 2010, lo que lleva a la planta en marcha la reconstrucción de BackTrack 5 en 2011. Aún
basado en Ubuntu, y a todo vapor con cada lanzamiento, BackTrack era ahora un proyecto masivo que requiere un voluntario heroica y
esfuerzo de la comunidad, sino también la financiación. Mut lanzaron ofensivas de Seguridad (en 2006) no sólo para proporcionar la formación
de clase mundial y servicios de pruebas de la penetración, sino también para proporcionar un vehículo para mantener BackTrack rodadura
desarrollo, y asegurar que se mantuvo BackTrack de código abierto y de uso gratuito.

BackTrack continuó creciendo y mejorando hasta el año 2012 (con R1, R2 y R3), manteniendo un núcleo de Ubuntu y añadiendo cientos
de nuevas herramientas, incluyendo herramientas de explotación física y hardware, soporte de VMware, un sinnúmero de controladores
inalámbricos y hardware, y una multitud de estabilidad provements y correcciones de errores im-. Sin embargo, después de la liberación
de R3, desarrollo BackTrack fue relati- vamente, y algo misterioso, silencioso.

Prefacio XIII
Hubo cierta especulación en la industria. Algunos pensaban que se iba a BackTrack “compró”, que vende su alma a un supremo
corporativa sin rostro del mal para un pago masivo. seguri- dad ofensiva se estaba convirtiendo en una de las compañías más
respetadas de formación y un líder en nuestra industria, y algunos especularon que su éxito había engullido y dejado de lado los
principales desarrolladores BackTrack. Sin embargo, nada podría estar más lejos de la verdad.

En 2013, Kali Linux 1.0 fue lanzado. A partir de las notas de: “Después de un año de desarrollo en silencio, ofensivo Seguridad se
enorgullece en anunciar el lanzamiento y la disponibilidad pública de Kali Linux, el más avanzado, robusto y estable de distribución de
pruebas de penetración hasta la fecha. Kali es una cura SE- más maduro, y la versión lista para la empresa de BackTrack “.

Kali Linux no era un simple cambio de nombre de BackTrack. Luciendo más de 600 herramientas de edad completamente reempacados, era
claramente un conjunto de herramientas impresionante, pero todavía era más que eso. Kali se había construido, desde la base, en un núcleo de
Debian. Para los no informados, esto podría no parecer una gran cosa. Pero el efecto dominó fueron sorprendentes. Gracias a un esfuerzo
masivo de reenvasado, los usuarios pueden descargar el Kali fuente para cada herramienta individual; podrían modificar y volver a una
herramienta, según sea necesario, con sólo unas pocas pulsaciones de teclas. A diferencia de otros sistemas operativos principales del día, Kali
Linux sincronizado con los repositorios de Debian cuatro veces al día, lo que significaba usuarios Kali podían obtener las actualizaciones de
paquetes y parches de seguridad con malicia actual. Kali desarrolladores lanzaron a la refriega, el envasado y el mantenimiento de versiones de
aguas arriba de muchas herramientas para que los usuarios se mantienen constantemente en el borde sangrado. Gracias a sus raíces de
Debian, los usuarios de Kali podría arrancar una instalación o ISO directamente desde los repositorios, lo que abrió la puerta para Kali
completamente personalizado in- stallations o despliegues masivos de la empresa, que podría ser más automatizado y personalizado con
ficheros de preconfiguración. Para completar la trifecta personalización, Kali usuarios podrían modificar el entorno de escritorio, alterar menús,
iconos de cambio, e incluso sustituir a entornos de ventanas. Una ofensiva a gran escala ARMdevelopment abrió la puerta para la instalación de
Kali Linux en awide gama de plataformas de hardware incluyendo puntos de acceso, computadoras de una placa (Frambuesa Pi, ODROID,
BEAGLEBONE y CubieBoard, por ejemplo), y los ordenadores Chromebook basados ​en ARM. Y por último pero no menos importante, Kali
Linux lucía menor sin problemas y mejoras importantes, lo que significaba devotos nunca tenga que volver a instalar configuraciones
personalizadas Kali Linux.

La comunidad se dio cuenta. En los primeros cinco días, 90.000 de nosotros descargado Kali 1.0. Esto fue solo el comienzo. En 2015, Kali 2.0

fue lanzado, seguido de los de 2016 liberación continua. En resumen, “Si Kali 1.0 se centra en la construcción de una infraestructura sólida,

entonces Kali 2.0 se centra en reformar la experiencia del usuario y el mantenimiento de paquetes actualizados y repositorios de

herramientas.” La versión actual de Kali Linux es una distribución de rodadura, que marca el final de siones ver- discretos. Ahora, los usuarios

están actualizados continuamente y recibir actualizaciones y parches a medida que se crean. herramientas básicas se actualizan con más

frecuencia gracias a un sistema de etiquetado versión principal, rompiendo subterráneas mejoras de accesibilidad para los discapacitados

visuales se han aplicado, y los núcleos de Linux están actualizados y parcheados a continuewireless 802.11 soporte de inyección. Software

De- finedRadio (SDR) Comunicación andNear-campo (NFC) Herramientas de añadir soporte para nuevos campos de pruebas de seguridad.

opciones de instalación completa de Linux cifrado de disco y de autodestrucción de emergencia están disponibles,

XIV Kali Linux Revelado


Gracias a LVM y LUKS, respectivamente, se han añadido opciones de persistencia USB, lo que permite Kali basado USB- instala para
mantener los cambios entre reinicios, si la unidad USB está encriptada o no. Por último, las últimas revisiones de Kali abrió la puerta
forNetHunter, sistema operativo de sourceworld clase anopen que se ejecutan en dispositivos móviles basados ​en Linux y Android Kali.
Kali Linux ha evolucionado no sólo en la plataforma del profesional de seguridad de la información de elección, pero realmente en un
grado industrial, de clase mundial, y la distribución madura, segura y lista para empresas del sistema operativo.

A través del proceso de desarrollo de una década de duración, Mut y su equipo, junto con el catión dedicación incansable de un
sinnúmero de voluntarios de la comunidad hacker, han asumido la carga de la guarnición racionalizado y la organización de nuestro
entorno de trabajo, nos frommuch liberar de la servidumbre de nuestro trabajo y proporcionar una base segura y fiable, lo que nos
permite concentrarse en la conducción de la industria hacia la meta final de asegurar nuestro mundo digital.

Y es interesante, pero no es sorprendente que una comunidad sorprendente ha construido en torno a Kali Linux. Todos y
everymonth tres y un cuatro cien mil nos descarga una versión de Kali. Nos hemos reunido en los foros de Kali, unos cuarenta mil
fuerte, y tres a cuatrocientos de nosotros a la vez se puede encontrar en el canal de IRC Kali. Nos reunimos en conferencias y
asistimos a Kali Dojos para aprender a aprovechar mejor Kali de los propios desarrolladores.

Kali Linux ha cambiado el mundo de la seguridad de la información para el mejor, y Mut y su equipo han guardado cada uno de nosotros
muchas horas de trabajo y la frustración, lo que nos permite dedicar más tiempo y energía motriz de la industria hacia adelante, juntos.

Pero a pesar de su increíble aceptación, apoyo y popularidad, Kali nunca ha publicado un manual oficial. Pues bien, ahora eso ha
cambiado. Estoy encantado de haber llegado junto con el equipo de desarrollo de Kali y específicamente Mati Aharoni, Raphaël
Hertzog, Devon Kearns, y Jim O'Gorman ofrecer esta, la primera en tal vez una serie de publicaciones oficiales se centraron en Kali
Linux. En este libro, nos centraremos en la plataforma Kali Linux en sí mismo, y ayudará a entender y maximizar el uso de Kali
desde cero. Todavía no ahondaremos en el arsenal de herramientas contenidas en Kali Linux, pero si usted es un veterano o un
n00b absoluta, este es el mejor lugar para empezar, si usted está listo para cavar y tomar en serio con Kali Linux .
Independientemente de cuánto tiempo ha estado en el juego, su decisión de leer este libro que se conecta a la creciente
comunidad Kali Linux, uno de los más antiguos, más grande, más activa y más vibrante de nuestra industria.

En nombre de Mut y el resto del equipo de Kali increíble, felicitaciones por dar el primer paso para el dominio de Kali Linux!

Johnny largo de febrero de 2017

Prefacio XV
Prefacio

Los dieciséis portátiles de gama alta ordenados para su equipo pentesting acaba de llegar, y que tienen la tarea de establecer el compromiso

fuera del sitio para themup-de mañana. Instalar Kali y arrancar uno de los ordenadores portátiles sólo para descubrir que es apenas utilizable. A

pesar del núcleo de vanguardia de Kali, las tarjetas de red andmouse no están funcionando, y la tarjeta gráfica NVIDIA GPU fuerte y te están

mirando sin comprender, porque carecen de los conductores instalados correctamente. Suspiras. en Kali el modo en directo, a escribir con

rapidez lspci en una consola, a continuación, entrecerrar los ojos. Se desplaza por la lista de hardware: “puente PCI, controlador USB,

controlador SATA. Aha! Ethernet y ladores de red con-.”Una rápida búsqueda en Google por sus respectivos números de modelo, una

referencia cruzada con la versión del núcleo Kali, revela que estos controladores de última generación no han alcanzado todavía el núcleo

principal.

Pero no todo está perdido. Un plan está formulando lentamente en su cabeza, y gracias a los cielos para el
Kali Linux Revelado libro que se ha levantado hace un par de semanas. Se podría utilizar el sistema de construcción Kali Live- para crear una
costumbre Kali ISO, lo que tendría los controladores necesarios horneados en el InstallationMedia. Además, puede incluir los controladores de

gráficos de NVIDIA, así como las bibliotecas CUDA necesarios para conseguir que la bestia de un GPU para hablar muy bien a hashcat, y lo han

ronroneo mientras descubre las contraseñas hash a velocidades de vértigo. Heck, incluso se podría lanzar en un fondo de pantalla personalizado

con el logotipo de Microsoft en él, para burlarse de su equipo en el trabajo.

Dado que los perfiles de hardware para sus instalaciones son idénticos, se agrega una opción de inicio preconfigurados de antemano a la ISO,
para que su teamcanboot fuera ausb palo andhave Kali installedwithno usuario interacción- la instalación ocupa de sí mismo, cifrado de disco
completo y todo.

¡Perfecto! Ahora puede generar una versión actualizada de Kali en la demanda, específicamente diseñado y optimizado para
el hardware. Guardó el día. ¡Misión cumplida!

Con la avalancha de hardware de salir al mercado, este escenario es cada vez más común para los que aventurarse fuera
sistemas frommainstreamoperating, en busca de algo más delgado, más alto y 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 atractivo pasatiempo, fascinación, o línea de

trabajo. Como recién llegados, a menudo se encuentran perplejos por la ment ENTORNO o el sistema operativo. Para muchos recién llegados

Kali es su primera introducción a Linux. Nos dimos cuenta de este cambio en nuestra base de usuarios de un par de años atrás, y pensé que

podríamos ayudar a nuestra comunidad mediante la creación de un libro estructurado, introductoria que guiaría a los usuarios en el mundo
de seguridad, mientras que les da toda la sofisticación de Linux que necesitarían para empezar. Y así, el libro nació Kali-ahora
disponible gratuitamente a través de Internet para el beneficio de todos los interesados ​en entrar en el campo de la seguridad a través
de Kali Linux.

Como el libro comenzó a tomar forma, sin embargo, rápidamente nos dimos cuenta de que había potencial sin explotar. Esto sería una
gran oportunidad para ir más allá de un libro de introducción Kali Linux y explorar algunas de las características más interesantes y poco
conocidos. Por lo tanto, el nombre del libro: Kali Linux Revelado.

Al final, nos Chuffed con el resultado. El libro respondió a todas nuestras necesidades y me enorgullece decir que superó
nuestras expectativas. Nos dimos cuenta de que habíamos ampliado inadvertidamente base de usuarios potenciales del libro. Ya
no estaba destinado exclusivamente a los recién llegados al campo de la seguridad, sino que también incluye una gran
información para experiencedpenetration testerswhoneeded para mejorar y pulir su control de Kali-Linux que les permite liberar
todo el potencial de nuestra distribución. Si estaban fildear una sola máquina o miles en toda la empresa, los cambios de
configuración makingminor o completamente customizingdown a nivel del núcleo, la construcción de sus propios repositorios,
tocando la superficie o profundizando en el sistema de gestión de paquetes de Debian increíble, Kali Linux Revelado proporciona
la hoja de ruta.

Con el mapa en la mano, en nombre mío y de todo el equipo de Kali Linux, les deseo un emocionante, divertido, fructífera, y el

viaje “revelador”! Mut, febrero de 2017

XVIII Kali Linux Revelado


Introducción

Kali Linux es theworld'smost plataforma de pruebas de penetración potente y popular, utilizado por profesionales de la seguridad en una
amplia gama de especialidades, incluyendo las pruebas de penetración, análisis forense, ingeniería y evaluación de vulnerabilidades
inversa. Es la culminación de años de refinamiento y el resultado de una evolución continua de la plataforma, fromWHoppiX toWHAX, dar
marcha atrás, y ahora a un marco de pruebas de penetración completa aprovechando muchas características de Debian GNU / Linux y la
comunidad de código abierto vibrante en todo el mundo.

Kali Linux no se ha construido para ser una simple colección de herramientas, sino más bien un marco flexible que los probadores de penetración profesionales,

entusiastas de la seguridad, los estudiantes y los aficionados pueden personalizar para adaptarse a sus necesidades específicas.

¿Por qué este libro?

Kali Linux no es más que una colección de diversas herramientas de seguridad de la información que están instalados en una base de
Debian estándar y preconfigurado para que pueda empezar a usarlo de inmediato. Para obtener el máximo provecho de Kali, es importante
tener un conocimiento profundo de sus potentes bases de Debian GNU / Linux (que soportan todas esas grandes herramientas) y aprender
cómo se puede ponerlas en práctica en su entorno.

Aunque Kali es decididamente de usos múltiples, que está diseñado principalmente para ayudar en las pruebas de penetración. El objetivo de este

libro no es sólo para ayudarle a sentirse como en casa cuando se utiliza Kali Linux, sino también para ayudar a mejorar su comprensión y simplificar

su experiencia de modo que cuando usted está comprometido en una prueba de penetración y el tiempo es la esencia, has ganado 't necesidad de

preocuparse de perder preciosos minutos para instalar nuevo software o habilitar un nuevo servicio de red. En este libro, vamos a introducir por

primera vez a Linux, a continuación, vamos a bucear más profundo a medida que te presentamos a los matices específicos de Kali Linux para saber

exactamente lo que está sucediendo bajo el capó.

Este es un conocimiento muy valioso tener, sobre todo cuando se está tratando de trabajar bajo limitaciones de tiempo. No es raro que requiere
esta profundidad de conocimiento cuando usted está consiguiendo configurar, solucionar un problema, tratando de doblar una herramienta a su
voluntad, el análisis salida de una herramienta o el aprovechamiento de Kali en un entorno de mayor escala.
¿Este libro es para ti?

Si está ansioso de sumergirse en el campo intelectual rica e increíblemente fascinante de la seguridad de la información, y con razón ha
seleccionado Kali Linux como plataforma principal, entonces este libro le ayudará en ese viaje. Este libro está escrito para ayudar a los
usuarios principiantes de Linux, así como los usuarios actuales Kali que buscan profundizar sus conocimientos acerca de los fundamentos
de Kali, así como aquellos que han utilizado Kali durante años, pero que están buscando para formalizar su aprendizaje, ampliar su utilizar
de Kali, y llenar los vacíos en su conocimiento.

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

Enfoque general y estructura del libro

Este libro ha sido diseñado para que usted puede poner sus manos sobre Kali Linux desde el principio. Usted no tiene que leer la
mitad del libro para empezar. Cada tema se trata de una manera muy pragmática, y el libro es packedwith muestras y capturas
de pantalla para el hormigón HELPMAKE explanationsmore.

En el capítulo 1, “Acerca de Kali Linux” [página 2], se define la terminología básica y explicamos El propósito de Kali Linux. En el
capítulo 2, “Introducción a Linux Kali” [página 14], los guiamos paso a paso de la descarga de la imagen ISO para conseguir Kali Linux
se ejecuta en el ordenador. A continuación viene el capítulo 3, “Fundamentos de Linux” [página 48], que suministra los conocimientos
básicos que usted necesita saber acerca de cualquier sistema Linux, como su arquitectura, proceso de instalación, la jerarquía del
sistema de archivos, permisos, y mucho más.

En este punto, usted ha estado utilizando Kali Linux como sistema vivo por un tiempo. Con el capítulo 4, “Instalación de Kali Linux” [página
66] youwill aprender tomake una instalación permanente Kali Linux (en su disco duro) y con el capítulo 5, “Configuración de Kali Linux”
[página 104] cómo ajustar a su gusto. Como un usuario normal Kali, es el momento para familiarizarse con los importantes recursos
disponibles para los usuarios Kali: Capítulo 6, “ayudarse a sí mismo y Obtención de ayuda” [página 124] que da las claves para hacer
frente a los problemas inesperados que es probable que la cara .

Con lo básico bien cubiertos, el resto del libro se sumerge en temas más avanzados: Capítulo 7, “Hacer seguras y Monitoreo Kali Linux”
[página 150] le da consejos para asegurarse de que la instalación de Kali Linux cumple con los requisitos de seguridad. A continuación,
el capítulo 8, “Gestión de paquetes de Debian” [página 170] explica cómo aprovechar al máximo el potencial del ecosistema de
paquetes de Debian. Y en el capítulo 9, “Uso avanzado” [página 222], se aprende cómo crear una imagen de Kali Linux ISO totalmente
personalizado. Todos estos temas son aún más relevante cuando se implementa Kali Linux a gran escala en una empresa tal como se
documenta en el capítulo 10, “Kali Linux en la empresa” [página 252].

XX Kali Linux Revelado


El último capítulo, el capítulo 11, “Introducción a las evaluaciones de seguridad” [página 280], hace que el vínculo entre todo lo
que ha aprendido en este libro y el trabajo del día a día de la fesionales de seguridad pro.

Reconocimientos de Raphaël Hertzog

Me gustaría dar las gracias Mati Aharoni: en 2012, se puso en contacto conmigo porque yo era uno de los consultores de Debian y
decenas hewanted para construir un sucesor que dar marcha atrás que estaría basada en Debian. Así es como empecé a trabajar
en Kali Linux, y desde entonces he disfrutado de mi viaje en el mundo Kali.

Con los años, Kali Linux se acercaba a Debian GNU / Linux, en particular con el cambio a Kali Rodando, basado en Debian
Testing. Nowmost de mywork, ya sea en Kali o en Debian, proporciona 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 es también una gran oportunidad que me ofreció Mati. No es el mismo tipo de trabajo, pero es igualmente
gratificante poder ayudar a la gente y compartir con ellos mis conocimientos del sistema operativo Debian / Kali. Sobre la base de
mi experiencia con el Manual del administrador de Debian, Espero que mis explicaciones le ayudarán a empezar en el mundo de
rápido movimiento de la seguridad informática.

También me gustaría agradecer a todas las personas ofensiva de seguridad que participaron en el libro: Jim O'Gorman
(co-autor de algunos capítulos), Devon Kearns (revisor), Ron Henry (editor técnico), Joe y Tony Steinbach Cruse ( gestores
de proyectos). Y gracias a Johnny largo que se unió a escribir el prefacio, pero terminó la revisión de todo el libro.

Reconocimientos de JimO'Gorman

Me gustaría dar las gracias a todos los involucrados en este proyecto por sus contribuciones, de whichminewere sólo una pequeña
parte. Este libro, al igual que en sí Kali Linux era un proyecto de colaboración de muchas manos hacen el trabajo ligero. Un
agradecimiento especial a Rafael, Devon, Mati, Johnny, y Ron para asumir la mayor parte del esfuerzo. Sin ellos, este libro no
habría llegado juntos.

Reconocimientos de Mati Aharoni

Ha sido un par de años desde Kali Linux fue lanzado por primera vez, y desde el primer día, siempre he soñado con la publicación de
un libro oficial que cubre el sistema operativo Kali en su conjunto. Por lo tanto, es un gran privilegio para mí ver por fin un libro así por
lo que es a la opinión pública. Me gustaría agradecer sinceramente a todos los involucrados en la creación de este proyecto
incluyendo Jim, Devon, Johnny,

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

XXII Kali Linux Revelado


Palabras clave

derivado de Debian
distribución de Linux
Propósito

Características

Políticas
Capítulo

Acerca de Kali Linux 1


Contenido

Un poco de historia 2 Relación con Debian 4 Propósito y casos de uso 5 Características generales Kali Linux 7

Políticas Kali Linux 9 Resumen 11


Kali Linux 1 es una distribución de Linux auditoría de seguridad lista para la empresa basada en Debian GNU / Linux. Kali está dirigido a
profesionales de la seguridad y los administradores de TI, lo que les permite con- ducto de pruebas avanzada penetración, análisis
forense, y auditoría de seguridad.

¿Qué es un Linux
¿Distribución? Aunque seelusa
sólo comúnmente
nombre del núcleo, como un nombre
una pieza para
de software quetodo el sistema
se encarga de lasoperativo, Linux
interacciones eslas aplicaciones de hardware y de
entre

los usuarios finales. La expresion distribución de Linux, por el contrario, se refiere a un sistema operativo completo

incorporado en la parte superior del núcleo de Linux, que generalmente incluye un programa de instalación y muchas

aplicaciones, que son ya sea preinstalado o empaquetado de una manera fácilmente instalable.

Debian GNU / Linux 2 es una distribución de Linux genérico o líder, conocido por su calidad y estabilidad. Kali Linux se basa
en el trabajo del proyecto Debian y añade más de 300 paquetes de fines especiales propios, todos ellos relacionados con la
seguridad de la información, sobre todo el campo de pruebas de penetración.

Debian es un proyecto de software libre que proporciona múltiples versiones de su sistema operativo y que a menudo se
utiliza el término distribución para referirse a una versión específica de la misma, por ejemplo, las distribuciones
estables o Debian testing de Debian. Lo mismo se aplica a Linux Kali-Kali con la distribución continua, por ejemplo.

1.1. Un poco de historia

El proyecto comenzó en silencio Kali Linux en 2012, cuando ofensivo de Seguridad decidió que querían reemplazar su Linuxproject
venerableBackTrack, whichwasmanuallymaintained, con algo que podría convertirse en un derivado genuina Debian 3, completo con
toda la infraestructura necesaria y la mejora de las técnicas de envasado. Los decisionwas hicieron para construir Kali en la parte
superior de la dis- tribución Debian, ya que es bien conocido por su calidad, estabilidad, andwide selección de software disponible.
Es por eso que (Rafael) se involucró en este proyecto, como consultor de Debian.

La primera versión (versión 1.0) sucedió un año después, en marzo de 2013, y se basa en Debian 7 “Wheezy”, distribución estable
de Debian en el momento. En ese primer año de desarrollo, se envasan cientos de aplicaciones relacionadas con la pluma-prueba
y construimos la infraestructura. A pesar de que el número de solicitudes es significativo, la lista de aplicaciones ha sido
meticulosamente curada, aplicaciones de ping abandonos que ya no trabajaban o que cuenta con duplicados ya disponibles en
mejores programas.

Durante los dos años siguientes la versión 1.0, Kali lanzado muchas actualizaciones incrementales, ampliando la gama de aplicaciones
disponibles y mejorar el soporte de hardware, gracias a un núcleo nuevo arrendamiento re-. que con un poco de inversión en la integración
continua, nos aseguramos de todos los paquetes importantes

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

2 Kali Linux Revelado


se mantienen en un estado instalable y que las imágenes en directo personalizados (un sello distintivo de la distribución) siempre se podrían crear.

En 2015, cuando Debian 8 “Jessie” salió, trabajamos para reajustar Kali Linux en la parte superior de la misma. Mientras Kali Linux 1.x
evitarse el Shell de GNOME (GNOME depender de repliegue en su lugar), en esta versión, decidimos abrazar y mejorarla: hemos añadido
algunas extensiones de GNOME Shell para adquirir características que faltan, especialmente el menú de aplicaciones. El resultado de ese
trabajo se convirtió en Kali Linux 2.0, publicada en agosto de 2015.

GNOME es Kali Linux Un entorno de escritorio es una colección de aplicaciones gráficas que comparten un conjunto de herramientas gráficas común y

escritorio por defecto que están destinados a ser utilizados juntos en estaciones de trabajo de usuario. Los entornos de escritorio generalmente no se
Ambiente utilizan en servidores. Por lo general, proporcionan un lanzador de aplicaciones, un gestor de archivos, un navegador web, un

cliente de correo electrónico, una suite de oficina, etc. GNOME 4 es uno de los entornos de escritorio más populares (junto con KDE 5,

Xfce 6, LXDE 7, COMPAÑERO 8) y se instala en las principales imágenes ISO proporcionados por Kali Linux. Si no le gusta
GNOME, es fácil construir una imagen ISO personalizada con el entorno de escritorio de su elección. Las instrucciones
para hacerlo se tratan más adelante en este libro en el capítulo 9, “Uso avanzado” [página 222].

Al mismo tiempo, hemos aumentado nuestros esfuerzos para asegurar que Kali Linux siempre tiene la última versión de todas las
aplicaciones pen-testing. Por desgracia, ese objetivo era un poco en desacuerdo con el uso de Debian estable como base para la
distribución, porque nos requiere acondicionarlo muchos paquetes. Esto es debido al hecho de que Debian Estable da prioridad a la
estabilidad del software, a menudo causando un retraso de la liberación de una actualización aguas arriba hasta cuando está integrado en la
distribución. Dada nuestra inversión en la integración continua, era bastante un movimiento natural para reajustar Kali Linux en la parte
superior de Debian Testing para que pudiéramos beneficiarse 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, lo que es más compatible con la filosofía de Kali
Linux.

Esto es, en esencia, el concepto de Kali balanceo. Si bien la distribución de rodadura está disponible desde hace bastante tiempo, Kali

2.016,1 fue la primera versión de abrazar oficialmente el carácter progresivo de esa distribución: al instalar la última versión de Kali, su

sistema en realidad un seguimiento de la distribución de Kali Rodamientos, todos los días se obtiene nuevas actualizaciones. En el pasado,

los comunicados de Kali eran instantáneas de la distribución Debian subyacente con paquetes específicos Kali-inyectados en ella. Una

distribución de rodadura tiene muchas ventajas pero también viene withmultiple retos, tanto para aquellos de nosotros que están

construyendo la distribución y para los usuarios que tienen que hacer frente a un flujo interminable de actualizaciones y cambios, a veces

hacia atrás incompatibles. Este libro pretende dar los conocimientos necesarios para hacer frente a todo lo que puede encontrar mientras

que la gestión de la instalación Kali Linux.

4 https://www.gnome.org
5 https://www.kde.org
6 http://www.xfce.org
7 http://lxde.org
8 http://mate-desktop.org

Capítulo 1 - Acerca de Kali Linux 3


1.2. Relación con Debian

La distribución Kali Linux está basado en Debian Testing 9. Por lo tanto, la mayoría de los paquetes disponibles en Kali Linux vienen
directamente de la fuente de la distribución.

Mientras Kali Linux basa en gran medida en Debian, también es completamente independiente en el sentido de que tenemos nuestra propia

infraestructura y retener la libertad de hacer cualquier cambio que queremos.

1.2.1. El Flujo de Paquetes

En el lado de Debian, los contribuyentes están trabajando todos los días en la actualización de paquetes y subirlas a la distribución
inestable de Debian. A partir de ahí, los paquetes migran a la distribución Debian Testing una vez que los insectos más problemáticos
han sido sacados. El proceso de migración también asegura que no hay dependencias se dividen en Debian Testing. El objetivo es que
la prueba está siempre en un estado utilizable (o incluso puede liberar!).

objetivos de Debian Testing se alinean muy bien con los de Kali Linux así que elegimos como la base. Para agregar los paquetes de Kali-específicas en la

distribución, seguimos un proceso de dos pasos. En primer lugar, tomamos Debian Testing y la fuerza-inyectamos nuestros propios paquetes Kali (que se

encuentra en nuestra kali-dev-only

repositorio) para construir el kali-dev repositorio. Este depósito será romper de vez en cuando: a la postura in-, nuestra packagesmight

Kali-específico no sea instalable hasta que hayan vuelto a compilar contra las librerías más nuevos. En otras situaciones, los paquetes que hemos

bifurcadas también podría tener que actualizarse, ya sea para convertirse en instalable de nuevo, o para fijar la capacidad de instalación de otro

paquete que depende de una versión más reciente del paquete en forma de horquilla. En todo caso, kali-dev No es para los usuarios finales.

kali-balanceo es la distribución que se espera que los usuarios de Linux Kali para rastrear y se construyen a partir de kali-dev

de la misma manera que Debian Testing se construye fuera de Debian inestable. Paquetes migran sólo cuando todas las dependencias pueden

ser satisfechas en la distribución de destino.

1.2.2. La gestión de la diferencia con Debian

Como una decisión de diseño, tratamos tominimize el número de paquetes de horquilla tanto como sea posible. SIN EMBARGO, con el fin de poner en

práctica algunas de las características únicas de Kali, se deben hacer algunos cambios. Para limitar el impacto de estos cambios, nos esforzamos para

enviar themupstream, ya sea mediante la integración de la función di- rectamente, o mediante la adición de los ganchos necesarios para que sea

sencillo para habilitar la característica deseada sin modificar aún más los propios paquetes de aguas arriba. El Kali Package Tracker 10 nos ayuda a

mantener un registro de nuestra divergencia con Debian. En cualquier momento, podemos mirar hacia arriba, que el paquete ha sido bifurcada y si está

en sincronía con Debian, o si hay una actualización

9 https://www.debian.org/releases/testing/
10 http://pkg.kali.org/derivative/kali-dev/

4 Kali Linux Revelado


es requerido. Todos nuestros paquetes se mantienen en repositorios Git 11 anfitrión de una rama de Debian y un lado-a-lado rama Kali.
Gracias a esto, la actualización de un paquete en forma de horquilla es un simple proceso de dos pasos: actualizar la rama Debian y lo
combinan con la rama Kali.

Mientras que el número de paquetes en forma de horquilla Kali es relativamente baja, el número de paquetes adicionales es bastante
elevado: en abril de 2017 eran casi 400. La mayoría de estos paquetes de software libre son complyingwith las directrices de
software libre de Debian 12 y nuestro objetivo final sería tomaintain esos paquetes withinDebianwhenever posible. Es decir whywe se
esfuerzan por complywith la política de Debian 13 y seguir las buenas prácticas de envasado utilizados en Debian. Por desgracia,
también hay bastantes excepciones en las que el embalaje adecuado era casi imposible crear. Como resultado de momento
escasos, algunos paquetes han sido empujados a Debian.

1.3. Propósito y casos de uso

Mientras que el enfoque de Kali puede ser rápidamente resumirse como “pruebas de penetración y auditoría de seguridad”, hay muchas tareas diferentes

involucrados detrás de esas actividades. Kali Linux está construido como una marco de referencia, BE- causar que incluye muchas herramientas que cubren

muy diferentes casos de uso (aunque ciertamente se pueden usar en combinación durante una prueba de penetración).

Por ejemplo, Kali Linux se puede utilizar en varios tipos de ordenadores: obviamente en los ordenadores portátiles de pruebas de penetración, sino

también en los servidores de los administradores de sistemas que deseen controlar su trabajo NET, en las estaciones de trabajo de los analistas

forenses, andmore de forma inesperada, el sigiloso incrustado vicios de-, típicamente con ARMCPUs, que pueden ser ignoradas en el rango de una

red inalámbrica o enchufado en el ordenador de los usuarios objetivo. Muchos dispositivos ARM también son máquinas de ataque perfecto gracias a

sus pequeños factores de forma y requisitos de baja potencia. Kali Linux también se puede implementar en la nube para construir rápidamente una

granja de máquinas de descifrado de contraseñas y en los teléfonos móviles y tabletas para permitir pruebas de penetración verdaderamente portátil.

Pero eso no es todo; pruebas de penetración también necesitan servidores: utilizar el software de colaboración dentro de un equipo de pen-testers, para

configurar un servidor web para su uso en campañas de phishing, para ejecutar herramientas de análisis de vulnerabilidades, y otras actividades relacionadas.

Una vez que haya arrancado Kali, usted descubrirá rápidamente que el menú principal de Kali Linux está organizado por el tema en los distintos

tipos de tareas y actividades que son relevantes para el pen-testers y otros profesionales de la seguridad de la información como se muestra en

la Figura 1.1, “Menú Aplicaciones de Kali Linux ”[página 6].

11 http://git.kali.org
12 https://www.debian.org/social_contract
13 https://www.debian.org/doc/debian-policy/

Capítulo 1 - Acerca de Kali Linux 5


Figura 1.1 Menú Aplicaciones de Kali Linux

Estas tareas y actividades incluyen:

• Recopilación de información: recogida de datos sobre la red de destino y su estructura, que identifique los valores computadoras, sus
sistemas operativos y los servicios que se ejecutan. La identificación de poten- cialmente partes sensibles del sistema de información.
La extracción de todo tipo de anuncios se ejecuten los servicios de directorio.

• Análisis de vulnerabilidad: probar rápidamente si un sistema local o remoto se ve afectada por una serie de vulnerabilidades
conocidas o configuraciones inseguras. Los scanners de vulnerabilidades utilizan bases de datos que contienen miles de
firmas para identificar posibles vulnerabilidades.

• Análisis de aplicaciones Web: Identificar los errores de configuración y debilidades de seguridad en aplicaciones web. Es crucial
para identificar y mitigar estos problemas, dado que la disponi- bilidad pública de estas aplicaciones los convierte en objetivos
ideales para los atacantes.

• Evaluación de la base de datos: De inyección de SQL para credenciales de ataque, ataques de bases de datos son un vector muy común para los
atacantes. Herramientas que ponen a prueba para los vectores de ataque que van desde Jection SQL en especie a la extracción y el análisis de datos se

pueden encontrar aquí.

• Los ataques de contraseña: sistemas de autenticación son siempre una salida al vector de ataque. Muchas herramientas útiles se pueden
encontrar aquí, de herramientas de ataque de contraseñas en línea a fuera de línea los ataques contra los sistemas de cifrado o hash.

• Los ataques inalámbricos: La naturaleza omnipresente de las redes inalámbricas significa que siempre van a ser un vector
comúnmente atacado. Con su amplia gama de soporte para múltiples tarjetas inalámbricas, Kali es una elección obvia para los
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 las actividades ofensivas, es
uno de los principales métodos para la identificación de la vulnerabilidad y

6 Kali Linux Revelado


explotar el desarrollo. En el lado defensivo, que se utiliza para analizar el malware empleado en Aduaneros ataques geted. En esta
capacidad, el objetivo es identificar las capacidades de una determinada pieza de Tradecraft.

• Herramientas de explotación: Explotación, o que se aprovechan de una vulnerabilidad (anteriormente identificado), le permite
obtener el control de una máquina remota (o dispositivo). Este acceso puede ser utilizado para nuevos ataques de escalada de
privilegios, ya sea de forma local en el ordenador afectado, 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 propias hazañas.

• Olfateando y Spoofing: El acceso a los datos a medida que viajan a través de la red a menudo se AD- vantageous 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 que le permiten

capturar y analizar los datos de la derecha del alambre de la inhalación. Cuando se utiliza en conjunto, estas herramientas pueden ser muy

poderosos.

• La explotación de la publicación: Una vez que haya obtenido acceso a un sistema, a menudo deseará tomaintain ese nivel de acceso o
extender el control moviendo lateralmente a través de la red. Herramientas que ayudan en estos objetivos se encuentran aquí.

• Los forenses: entornos de arranque directo de Linux forenses han sido muy populares desde hace años. Kali contiene un gran número
de herramientas forenses basadas en Linux populares que le permite hacer erything EV de triaje inicial, la formación de imágenes de

datos, el análisis completo y manejo de casos.

• Herramientas de informes: Una prueba de penetración sólo se completa una vez que se ha informado de los resultados. Esta categoría
contiene herramientas para ayudar a recopilar los datos recogidos de las herramientas de recopilación de información, descubrir

relaciones no evidentes, y llevar todo junto en varios informes.

• Herramientas de ingeniería social: Cuando esté bien respaldado el aspecto técnico, a menudo existe la posi- bilidad de explotar el
comportamiento humano como un vector de ataque. Dada la influencia correcta, la gente con frecuencia pueden ser inducidas a tomar
acciones que comprometen la seguridad del medio ambiente. Hizo la llave USB que el secretario simplemente enchufado contener un
PDF inofensivo? ¿O era también un caballo de Troya que instala una puerta trasera? Fue el bankingwebsite el contador acaba de
conectarse al sitio web esperado o una copia perfecta utilizado para propósitos de phishing? Esta categoría con- tiene herramientas
que ayudan en este tipo de ataques.

• Servicios del sistema: Esta categoría incluye herramientas que le permiten iniciar y detener las aplicaciones que se ejecutan en segundo plano
como los servicios del sistema.

1.4. Características generales Kali Linux

Kali Linux es una distribución Linux que contiene su propia colección de cientos de herramientas de software diseñadas específicamente para sus

probadores de penetración de usuarios de destino y otros profesionales de la seguridad. También viene con un programa de instalación a

instalación completamente Kali Linux como sistema operativo principal en cualquier ordenador.

Capítulo 1 - Acerca de Kali Linux 7


Esto es más o menos igual que todas las demás distribuciones Linux existentes, pero hay otras características que diferencian a Kali Linux, muchos de

los cuales se adaptan a las necesidades específicas de las pruebas de penetración. Vamos a echar un vistazo a algunas de esas características.

1.4.1. Un Sistema Vivo

Al contrario de la mayoría de las distribuciones de Linux, la imagen principal ISO que descargue no es simplemente ded- icated a instalar el

sistema operativo; También se puede utilizar como un sistema vivo de arranque. En otras palabras, puede utilizar Kali Linux sin instalarlo,

simplemente mediante el arranque de la imagen ISO (por lo general después de copiar la imagen en una llave USB).

Los systemcontains en vivo las herramientas más utilizadas por los probadores de penetración por lo que incluso si su sistema de día-a-día no

es Kali Linux, puede simplemente insertar la llave USB o disco y reiniciar el sistema para ejecutar Kali. Sin embargo, tenga en cuenta que la

configuración por defecto no conservará los cambios entre reinicios. Si configura la persistencia con una llave USB (véase la sección 9.4,

“Adición de Persistencia de la ISO vivas, con una llave USB” [página 239]), entonces usted puede ajustar el sistema a su gusto (modificar

archivos de configuración, guardar los informes, el software de actualización , e instalar paquetes adicionales, por ejemplo), y los cambios serán

retenidos en los reinicios.

1.4.2. Modo de análisis forense

En general, cuando se hace el trabajo forense en un sistema, se quiere evitar cualquier actividad que pueda alterar los datos en el sistema

analizado en forma alguna. Por desgracia, los entornos de escritorio modernos tienden a interferir con este objetivo, tratando de auto-montar

cualquier disco (s) que detectan. Para evitar este comportamiento, Kali Linux tiene un modo de análisis forense que se pueden activar desde el

menú de inicio: se desactivará todas esas características.

El sistema vivo es particularmente útil para fines forenses, ya que es posible reiniciar cualquier ordenador en un Kali Linux
systemwithout acceder o modificar sus discos duros.

1.4.3. Una Linux kernel personalizado

Kali Linux siempre proporciona una reciente núcleo de Linux personalizado, basado en la versión de Debian Un- estable. Esto asegura el soporte de

hardware sólido, especialmente para una amplia gama de dispositivos inalámbricos. El núcleo está parcheado para herramientas de evaluación de seguridad

de soporte de inyección inalámbrica sincemanywireless depender de esta característica.

Dado que muchos dispositivos de hardware requieren archivos de firmware hasta a la fecha (que se encuentra en / lib / firmware /), Kali todos ellos

se instala por defecto, incluyendo el firmware disponible en Debian de no libre sección. Los que no se instalan por defecto en Debian, ya que son

de código cerrado y por lo tanto no es parte de Debian adecuada.

8 Kali Linux Revelado


1.4.4. completamente personalizable

Kali Linux está construido por pruebas de penetración para pruebas de penetración pero entendemos que no EV eryone estarán de acuerdo

con nuestras decisiones de diseño o selección de herramientas para incluir por defecto. Con esto en mente, siempre nos aseguramos de que

Kali Linux es fácil de personalizar en función de sus propias necesidades y preferencias. Con este fin, publicamos la configuración live-build

usado para construir las imágenes oficiales Kali para que pueda personalizar a su gusto. Es muy fácil empezar desde esta configuración

publicada e implementar varios cambios en función de sus necesidades gracias a la versatilidad de live-build. Live-build incluye muchas

características para modificar el sistema instalado, instale los archivos suplementarios, instalar paquetes adicionales, ejecutar comandos

arbitrarios, y cambiar los valores previos a la cabeza de serie a debconf.

1.4.5. Un sistema operativo de Trustable

Los usuarios de una distribución de seguridad legítimamente quieren saber que se puede confiar y que se ha desarrollado a la vista, lo que permite

que cualquiera pueda inspeccionar el código fuente. Kali Linux es desarrollado por un pequeño equipo de desarrolladores con conocimientos de

trabajo de forma transparente y siguiendo las mejores prácticas de seguridad: se carga firmaron paquetes fuente, que a su vez se construyen sobre

demonios de construcción dedicados. Los paquetes son entonces una suma de comprobación y distribuidos como parte de un repositorio firmado. El

trabajo realizado en los paquetes puede someterse a una revisión a través de los repositorios Git envases 14

(Que contienen las etiquetas firmados) que se utilizan para construir los paquetes fuente Kali. La evolución de cada paquete también se puede

seguir a través del paquete de seguimiento de Kali 15.

1.4.6. Se puede utilizar en una amplia gama de dispositivos ARM

Kali Linux proporciona los paquetes binarios para las arquitecturas Armel, armhf y arm64 ARM. Gracias a las imágenes fácilmente
instalables proporcionados por la ofensiva de seguridad, Kali Linux se puede implementar en muchos interestingdevices,
fromsmartphones y tabletas routers towi-Fi y ordenadores de diferentes formas y tamaños.

1.5. Políticas Kali Linux

Mientras Kali Linux se esfuerza por seguir el Debianpolicywhenever posible, hay algunos areaswhere hicimos significativamente diferentes
opciones de diseño debido a las necesidades particulares de seguridad del als profesión-.

14 http://git.kali.org
15 http://pkg.kali.org

Capítulo 1 - Acerca de Kali Linux 9


1.5.1. Un solo usuario predeterminado root

La mayoría de las distribuciones de Linux animan, con bastante sensatez, el uso de una cuenta sin privilegios mientras Run-nir el sistema y el

uso de una utilidad como sudo cuando se necesitan privilegios administrativos. Este es un consejo de seguridad de sonido, proporcionando una

capa adicional de protección entre el usuario y cualquier potencial- mente comandos u operaciones del sistema operativo o destructivos. Esto

es especialmente cierto para los sistemas de múltiples usuarios, donde la separación de privilegios de usuario es un requisito-mal

comportamiento de un usuario puede alterar o destruir el trabajo de muchos usuarios. Dado que muchas herramientas incluidas en Kali Linux

sólo puede ser ejecutada con raíz privilegios, esta es la cuenta de usuario de- culpa Kali. A diferencia de otras distribuciones de Linux, no se le

pedirá que cree un usuario sin privilegios al instalar Kali. Esta política particular es una desviación importante de la mayoría de los sistemas

Linux y tiende a ser muy confuso para los usuarios menos experimentados. Los principiantes deben ser espe- cialmente cuidado al usar Kali

puesto que los errores más destructivos ocurren cuando se opera con privilegios de root.

1.5.2. Servicios de red desactivado por defecto

En contraste con Debian, Kali Linux desactiva cualquier servicio instalado que escuchar en una interfaz de trabajo NET pública por
defecto, como HTTP y SSH.

El fundamento de esta decisión es reducir al mínimo la exposición durante una prueba de penetración cuando es perjudicial para
anunciar su presencia y riesgo de detección debido a las interacciones de red inesperados.

Todavía se puede activar manualmente cualquiera de los servicios de su elección mediante la ejecución systemctl permitir

Servicio. Nos pondremos en contacto con esto en el capítulo 5, “Configuración de Kali Linux” [página 104] más adelante en este libro.

1.5.3. Una colección de aplicaciones Curated

Debian tiene como objetivo ser el sistema operativo universal y pone muy pocos límites en lo que se envasados, siempre que cada
paquete tiene un mantenedor.

A modo de contraste, Kali Linux no empaquetar todas las herramientas disponibles pruebas de penetración. En lugar de ello, nuestro objetivo es ofrecer sólo

las mejores herramientas de tareas coveringmost licencia libremente que un aparato de penetración posible que desee realizar.

Kali desarrolladores que trabajan como pruebas de penetración conducir el proceso de selección y aprovechar su experiencia y conocimientos

para tomar decisiones iluminadas. En algunos casos se trata de una cuestión de hecho, pero hay otras opciones, más difíciles que vienen

simplemente una cuestión de preferencia personal. Éstos son algunos de los puntos considerados cuando una nueva aplicación se evalúa:

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

10 Kali Linux Revelado


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

• La licencia de la aplicación

• necesidades de recursos de la aplicación

El mantenimiento de un depósito de herramienta de pruebas de penetración actualizada y útil es una tarea difícil. Damos la bienvenida a las sugerencias de

herramientas dentro de una categoría especial ( Las solicitudes NewTool) en el Bug Tracker Kali dieciséis.

Las nuevas solicitudes de herramientas se reciben mejor cuando está bien presentada la presentación, incluyendo una explicación de por qué la herramienta

es útil, cómo se compara con otras aplicaciones similares, y así sucesivamente.

1.6. Resumen

En este capítulo le hemos introducido a Kali Linux, siempre un poco de historia, ejecución de algunas de las principales características,

y presentado varios casos de uso. También hemos discutido algunas de las políticas que hemos adoptado en el desarrollo de Kali

Linux. Resumen Consejos:

• Kali Linux 17 es una distribución de Linux auditoría de seguridad lista para la empresa basada en Debian GNU / Linux. Kali está
dirigido a profesionales de la seguridad y los administradores de TI, lo que les permite realizar pruebas avanzadas penetración,
análisis forense, y auditoría de seguridad.

• sistemas Unlikemostmainstreamoperating, Kali Linux es un rollingdistribution, que whichmeans usted recibirá


actualizaciones diariamente.

• La distribución Kali Linux está basado en Debian Testing 18. Por lo tanto, la mayoría de los paquetes disponibles en Kali Linux
vienen directamente de la fuente de la distribución.

• Mientras que el enfoque de Kali se puede resumir con rapidez “pruebas de penetración y la seguridad audit- ing”, hay varios
casos de uso, incluyendo los administradores de sistemas que deseen controlar sus redes, análisis forense, instalaciones de
dispositivos integrados, monitoreo inalámbrico, instala- ción en plataformas móviles, y Más.

• menús de Kali hacen que sea fácil llegar a herramientas para diversas tareas y actividades que incluyen: análisis de vulnerabili- dad, análisis de
aplicaciones Web, pruebas en la base de datos, ataques de contraseña, ataques inalámbricos, ingeniería, herramientas de explotación, olfateando y la

suplantación de identidad, herramientas posterior explotación inversa, medicina forense, herramientas de información, herramientas de ingeniería social,

y servicios del sistema.

• Kali Linux tiene muchas características avanzadas que incluyen: el uso como un sistema vivo (no instalado), un busto RO- y el modo de análisis
forense de seguridad, un Linux kernel personalizado, posibilidad de personalizar completamente el sistema, un sistema operativo base confiable

y seguro, la instalación de ARM la capacidad, las políticas de seguridad de red falla de-, y un conjunto de aplicaciones curada.

En el siguiente capítulo, vamos a entrar y probar Kali Linux gracias a su modo directo.

dieciséis http://bugs.kali.org
17 https://www.kali.org
18 https://www.debian.org/releases/testing/

Capítulo 1 - Acerca de Kali Linux 11


Palabras clave

Descargar

imagen ISO de

arranque en vivo
Capítulo

Empezar con 2
Kali Linux
Contenido

La descarga de una imagen ISO Kali 14 El arranque de una imagen de Kali ISO en modo en vivo 24 Resumen 43
A diferencia de otros sistemas operativos, Kali Linuxmakes para empezar fácil, gracias al hecho de que sus imágenes de disco son ISOs en
vivo, lo que significa que puede arrancar la imagen descargada sin seguir ningún procedimiento de instalación anterior. Esto significa que
puede utilizar la misma imagen durante la prueba, para su uso como una imagen de DVD-ROM USB o de arranque en un caso forense, o
para instalar 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. Kali usuarios son a menudo el blanco de las personas con
malas intenciones, si los grupos patrocinados por el estado, elementos del crimen orga- nizado, o piratas informáticos individuales. La
naturaleza de código abierto de Kali Linux hace que sea relativamente fácil de construir y distribuir versiones falsas, por lo que es esencial que
se obtiene en el hábito de la descarga de fuentes originales y la verificación de la integridad y la autenticidad de su descarga. Esto es
especialmente relevante para los profesionales de seguridad que a menudo tienen acceso a las redes sensibles y están encargados de los
datos del cliente.

2.1. La descarga de una imagen ISO Kali

2.1.1. Donde descargar

La única fuente oficial de imágenes ISO Kali Linux es la sección de descargas del sitio web de Kali. Debido a su popularidad, numerosos
sitios ofrecen imágenes Kali para su descarga, pero nodebería ser considerados dignos de confianza y de hecho puede estar infectado
con malware o causar daños irreparables en el sistema de otra manera.

mi https://www.kali.org/downloads/

La página web está disponible a través HTTPS, por lo que es difícil de suplantar. Ser capaz de llevar a cabo un ataque man-in-the-middle no
es suficiente, ya que el atacante necesitaría también una www.kali.org certificado firmado por una autoridad de certificación Transport Layer
Security (TLS) que es de confianza por el navegador del Vic- de Tim. Debido a que las autoridades de certificación existen precisamente para
evitar este tipo de problemas, que entregan certificados sólo a las personas cuyas identidades han sido verificadas y que han proporcionado
pruebas de que ellos controlan la página web correspondiente.

cdimage.kali.org Los enlaces que se encuentran en el punto de descarga de la página cdimage.kali.org dominio, que
redirige a un espejo cerca de usted, lo que mejora la velocidad de transferencia al tiempo que reduce la carga sobre los servidores centrales

de Kali. Una lista de los servidores disponibles se puede encontrar aquí:

mi http://cdimage.kali.org/README.mirrorlist

2.1.2. Lo que para descargar

La página oficial de descargas muestra una breve lista de imágenes ISO, como se muestra en la Figura 2.1, “Lista de imágenes ofrece para su descarga”

[página 15].

14 Kali Linux Revelado


Figura 2.1 Lista de Imágenes ofrece para su descarga

Todas las imágenes de disco etiquetados de 32 o 64 bits se refieren a imágenes adecuadas para CPU, que se encuentra más íntimo de los mejores equipo de

escritorio y portátiles modernos. Si va a descargar para su uso en una máquina bastante moderno, es muy probable que contiene 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 se puede descargar y ejecutar la

imagen de 32 bits. A la inversa no es cierto, sin embargo. Consulte la barra lateral para obtener información más detallada.

Si usted está planeando instalar Kali en un dispositivo embebido, teléfono inteligente, Chromebook, punto de acceso, o cualquier otro
dispositivo con un procesador ARM, debe utilizar el Linux Armel o armhf imágenes.

Capítulo 2 - Introducción a Kali Linux 15


Mi CPU es de 32 o de 64 bits? En Windows, se puede encontrar esta información mediante la ejecución del Información del sistema
aplicación (que se encuentra en la carpeta Accesorios> SystemTools). En la pantalla SystemSummary, puede inspeccionar el
campo Tipo de sistema: contendrá “PC basado en x64” para una CPU de 64 bits o “PC basado en x86” para una CPU de 32
bits.

En OS X / MacOS, no hay una aplicación estándar que muestra esta información, pero todavía se puede inferir
que desde la salida de la uname -m comando ejecutar en el terminal. Volverá x86_64 en un sistema con un núcleo de
64 bits (que sólo se puede ejecutar en una CPU de 64 bits) y en sistemas con un núcleo de 32 bits, devolverá i386 o
algo similar ( i486, i586, o i686). Cualquier núcleo de 32 bits puede ejecutar en una CPU de 64 bits, pero desde 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 / cpuinfo de archivos virtual. Si contiene el lm atributo, entonces su
CPU es de 64 bits; de lo contrario, se trata de una de 32 bits. La línea de comandos le dirá qué tipo de CPU tiene:

PS grep -qp '^ banderas \ s *:. * \ BLM \ b' / proc / cpuinfo && echo de 64 bits
A || eco 32 bits
64-bit

Ahora que knowwhether necesita una imagen de 32 bits o de 64 bits, sólo hay un paso a la izquierda: seleccionar el tipo de imagen. La
imagen de Kali Linux por defecto y la variante de luz Kali Linux son dos ISOs en vivo que se pueden utilizar para ejecutar el sistema en vivo o
para iniciar el proceso de instalación. Sólo se diferencian por el conjunto de aplicaciones preinstaladas. La imagen por defecto viene con el
escritorio GNOME y una gran colección de paquetes encontrados a ser apropiado para la mayoría de pruebas de penetración, mientras que
la imagen de luz viene con el escritorio Xfce, (que es mucho menos exigente con los recursos del sistema), y una colección limitada de
paquetes , que le permite elegir sólo las aplicaciones que necesita. Las imágenes restantes utilizan entornos de escritorio alternativos, pero
vienen con la misma colección paquete de medidas como la imagen principal.

Una vez que haya decidido sobre la imagen que necesita, puede descargar la imagen haciendo clic en “ISO” en la fila respectiva.
Alternativamente, se puede descargar la imagen desde la red peer-to-peer de BitTorrent haciendo clic en “Torrent”, siempre y
cuando tenga un cliente de BitTorrent asociado con el
. extensión torrente.

Mientras que su imagen ISO elegido es la descarga, usted debe tomar nota de la checksumwritten en la columna de la sha256sum. Una vez que

haya descargado su imagen, utilice esta suma de comprobación para verificar que la imagen descargada coincide con el que el equipo de

desarrollo Kali puso en línea (véase la siguiente sección).

2.1.3. Verificación de Integridad y autenticidad

Los profesionales de seguridad deben verificar la integridad de sus herramientas no sólo para proteger sus datos y redes, sino también los de
sus clientes. Mientras que la página de descarga Kali está protegida contra TLS, los puntos de enlace de descarga reales a una URL no
codificada, que no ofrece ninguna protección contra posibles ataques del hombre de mediana-in-. El hecho de que Kali se basa en una red de
espejos externos para distribuir el

dieciséis Kali Linux Revelado


imagen significa que no se debe confiar ciegamente en lo que descarga. El espejo se le ha remitido a puede estar en peligro, o podría ser

víctima de un ataque a sí mismo. Para aliviar esto, el proyecto Kali siempre proporciona sumas de comprobación de las imágenes que

distribuye. Pero para que dicha comprobación efectiva, debe estar seguro de que la suma de comprobación agarraste es efectivamente la

suma de comprobación publicado por los desarrolladores de Linux Kali. Usted tiene diferentes maneras de determinar esto.

Basándose en el sitio web protegido-TLS

Al recuperar la suma de comprobación de la página web de descarga protegido con TLS, su origen está indirectamente garantizada

por el modelo de seguridad de certificados X.509: el contenido se ve proviene de un sitio web que es efectivamente bajo el control de

la persona que solicita la certificado TLS. Ahora usted debe generar la suma de verificación de la imagen descargada y asegurarse

de que coincide con lo que ha grabado desde el sitio web Kali:

PS sha256sum kali-linux-2017.1-amd64.iso
49b1c5769b909220060dc4c0e11ae09d97a270a80d259e05773101df62e11e9d kali-linux-2016.2-amd64.iso

Si sus checksummatches generado el uno en el Kali Linux descarga página, usted tiene el archivo rect cor-. Si las sumas de
comprobación difieren, hay un problema, aunque esto no indica un compromiso o un ataque; descargas de vez en cuando se dañan
a medida que atraviesan Internet. Probar su descargarse por otra vez, oficial fromanother Kali espejo, si es posible (ver
“cdimage.kali.org” [página 14] para más información acerca de los espejos disponibles).

Basándose en la Web de confianza de PGP

Si usted no confía en HTTPS para la autenticación, usted es un poco paranoico, pero con razón. Hay muchos ejemplos de autoridades de
certificación mal gestionados que emiten certificados sin escrúpulos, que terminó siendo mal utilizados. También puede ser víctima de un
“amigo” man-in-the-middle tachuela en- implementado en muchas redes corporativas, utilizando una costumbre, almacén de confianza del
navegador implantados que presenta certificados falsos a sitios web encriptados, permitiendo que los auditores corporativos para monitorear
en - encriptado de tráfico.

Para casos como este, también ofrecemos una clave GnuPG que utilizamos para firmar las sumas de comprobación de las imágenes que ofrecemos.

identificadores de la clave y sus huellas dactilares se muestran aquí:

rsa4096 pub / 0xED444FF07D8D0BF6 2012-03-05 [SC] [expira: 02/02/2018]


huella de la clave = 44C6 513A 8E4F B3D3 0875 F758 ED44 4FF0 7D8D 0BF6 uid
[Completa] Kali Linux Repositorio <devel@kali.org>
sub rsa4096 / 0xA8373E18FC0D0DCB 2012-03-05 [E] [expira: 02/02/2018]

Esta clave es parte de un mundial red de confianza porque se ha firmado al menos por mí (Raphaël Hertzog) y yo soy parte de la red de

confianza debido a mi uso de GnuPG pesado como un desarrollador de Debian.

Capítulo 2 - Introducción a Kali Linux 17


El modelo de seguridad de PGP / GPG es muy singular. Cualquier persona puede generar cualquier tecla con cualquier identidad, pero
sólo youwould confiar en que la clave si se ha firmado por otra de las claves que ya confía. Al firmar una clave, usted certifica que se
reunió con el titular de la clave y que sabe que la identidad asociada es correcta. Y se define el conjunto inicial de claves en los que
confía, que obviamente incluye su propia llave.

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 acaba de decidir que usted confía en él porque su huella digital coincide con lo que señalizarse en varios lugares, entre ellos justo por

encima de este libro:

PS wget -q -O - https://www.kali.org/archive-key.asc | gpg --import


[O] $ gpg --keyserver hkp: //keys.gnupg.net ED444FF07D8D0BF6 --recv-clave

gpg: clave 0xED444FF07D8D0BF6: clave pública “Kali Linux Repositorio <devel@kali.org>” importada gpg: Número total procesada: 1 gpg:

importado: 1 (RSA: 1)
PS gpg --fingerprint 7D8D0BF6

[...] clave de huellas dactilares = 44C6 513A 8E4F B3D3 0875 F758 ED44 4FF0 7D8D 0BF6 [...]

Después de haber recuperado la tecla, se puede usar para verificar las sumas de comprobación de las edades im- distribuidos. Vamos a
descargar el archivo con las sumas de comprobación ( SHA256SUMS) y el archivo de firma asociado ( SHA256SUMS.gpg) y verificar la firma:

PS wget http://cdimage.kali.org/current/SHA256SUMS
PS wget http://cdimage.kali.org/current/SHA256SUMS.gpg

PS gpg --verify SHA256SUMS.gpg SHA256SUMS

gpg: Firma hecho jue 16 Mar 2017 08:55:45 AM MDT gpg:


utilizando RSA ED444FF07D8D0BF6 clave
gpg: Firma correcta de “Kali Linux Repositorio <devel@kali.org>”

Si usted recibe el mensaje de que “la firma bueno”, puede confiar en el contenido de la SHA256SUMS presentar y utilizarlo para
comprobar los archivos que ha descargado. De lo contrario, hay un problema. Debe revisar si ha descargado los ficheros desde una
réplica legítima Kali Linux.

Tenga en cuenta que puede utilizar la siguiente línea de comandos para verificar que el archivo descargado tiene la misma suma de control que se

muestra en SHA256SUMS, siempre que el archivo ISO descargado se encuentra en la misma direc- torio:

PS SHA256SUMS grep kali-linux-2017.1-amd64.iso | sha256sum -c


kali-linux-2017.1-amd64.iso: OK

Si usted no recibe DE ACUERDO en respuesta, entonces el archivo que ha descargado es diferente de la re-alquilado por el equipo de
Kali. No se puede confiar y no debe ser utilizado.

18 Kali Linux Revelado


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

A menos que desee ejecutar Kali Linux en una máquina virtual, la imagen ISO es de uso limitado en sí mismo. Debe grabar
en un DVD-ROM o copiarla en una llave USB para poder arrancar su máquina en Kali Linux.

No vamos a cubrir cómo quemar la imagen ISO en un DVD-ROM, ya que el proceso varía ampliamente según la plata- forma y el medio ambiente, pero en

la mayoría de los casos, a la derecha haga clic en el. Yo asi archivo presentará un elemento del 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 arbitraria de una imagen ISO Kali Linux con.
Siempre verifique el disco de destino antes de iniciar la operación como un solo error sería probable causar
la pérdida de datos completa y posiblemente dañar su configuración sin posibilidad de reparación.

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

Como requisito previo, debe descargar e instalar Win32 disco Imager:

mi https://sourceforge.net/projects/win32diskimager/

Conecte su llave USB en su PC con Windows y tenga en cuenta el designador de unidad asociada a la misma (por ejem- plo, “E: \”).

Lanzamiento Win32 disco Imager y elegir el archivo de Kali Linux ISO que desea copiar en la llave USB. Compruebe que la letra del

dispositivo seleccionado se corresponde con la asignada a la llave USB. Una vez que esté seguro de que ha seleccionado la unidad

correcta, haga clic en el botón Escribir y confirme que desea sobrescribir el contenido de la memoria USB como se muestra en la Figura

2.2, “Win32 disco Imager en la acción” [página 20].

Capítulo 2 - Introducción a Kali Linux 19


Figura 2.2 Win32 disco Imager en la acción

Una vez que se haya completado la copia, expulsar de forma segura la unidad USB del sistema de Windows. Ahora puede utilizar el dispositivo USB para

arrancar Linux Kali.

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

La creación de una memoria USB Kali Linux en un entorno Linux es fácil. El escritorio GNOME bientes ronment, que se instala por defecto
en muchas distribuciones de Linux, viene con una discos utilidad (en el gnome-disco-utilidad paquete, que ya se ha instalado la imagen de
Kali en la acción). Ese programa muestra una lista de los discos, que refresca dinámicamente cuando se conecte o desconecte un disco.
Cuando Se- lect su llave USB en la lista de discos, información detallada aparecerá y le ayudará a confirmar que ha seleccionado el disco
correcto. Tenga en cuenta que puede encontrar su nombre de dispositivo en la barra de título, como se muestra en la Figura 2.3, “Discos de
GNOME” [página 21].

20 Kali Linux Revelado


Figura 2.3 Los discos de 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 Inicio Restauración ... como se muestra en la Figura 2.4, “Restaurar imagen de disco de diálogo” [página 21].

Figura 2.4 Restaurar la imagen de disco de diálogo

Capítulo 2 - Introducción a Kali Linux 21


Disfrutar de una taza de café mientras que termine de copiar la imagen de la llave USB (Figura 2.5, “La progresión de la Restauración de la

imagen” [página 22]).

Figura 2.5 La progresión de la Restauración de Imágenes

Crear la unidad USB de A pesar de que el proceso de gráfica es bastante sencillo, la operación es igual de fácil para los usuarios de la línea de
arranque del Comando comandos.
Línea
Al insertar la llave USB, el núcleo Linux lo detectará y asignarle un nombre, que se imprime en los registros del kernel.

Usted puede encontrar su nombre mediante la inspección de los registros devueltos por dmesg. PS dmesg

[...]
[234743.896134] USB 1-1,2: nuevo número de dispositivo USB de alta velocidad y 6 usando ehci-pci [234.743,990764] USB 1-1,2: Nuevo
dispositivo USB encontró, idVendor = 08ec, idProduct = 0020 [234.743,990771] USB 1-1,2: Nuevo USB cadenas de dispositivos: Fabricante
= 1, producto = 2,
una SerialNumber = 3
[234743.990774] USB 1-1,2: Producto: Store'n'Go [234.743,990777] USB 1-1,2: Fabricante: Verbatim [234.743,990780] USB
1-1,2: SerialNumber: 0390627052A2F897 [234.743,991845] de almacenamiento USB-1-1,2: 1.0: USB dispositivo de
almacenamiento masivo detectado [234.743,992017] host7 SCSI: USB-almacenamiento 1-1,2: 1,0 [234.744,993818] SCSI 7: 0:
0: 0: Direct-Access

VBTM Store'n'Go 6.51


una PQ: 0 ANSI: 0 CCS
[234744.994425] sd 7: 0: 0: 0: SCSI conectados tipo sg1 genérico 0 [234.744,995753] sd 7: 0: 0: 0: [SDB] 3903487 de 512 bytes
bloques lógicos: (2.00 GB
una / 1,86 GIB)
[234744.996663] sd 7: 0: 0: 0: [SDB] protección contra escritura está fuera [234.744,996669] sd 7: 0: 0: 0: [SDB] Modo
Sentido: 45 00 00 08 [234.744,997518] sd 7: 0: 0 : 0: [SDB] Sin página de modo de almacenamiento en caché encontró
[234,744.997524] sd 7: 0: 0: 0: [SDB] Suponiendo caché de la unidad: escribir a través [234.745,009375] SDB: sdb1
[234.745,015113] sd 7: 0: 0: 0: [ SDB] disco extraíble Attached SCSI

Ahora que ya sabe que la llave USB está disponible como / dev / sdb, se puede proceder a copiar la imagen
con el dd mando:

# dd if = kali-linux-light-2017.1-amd64.iso of = / dev / sdb


2070784 + 0 registros en 2070784 + 0
records out
1060241408 bytes (1,1 GB, 1011 MiB) copiada, 334.175 s, 3,2 MB / s

Tenga en cuenta que necesita permisos de root para realizar esta operación correctamente y también debe asegurarse de
que la llave USB no se utiliza. Es decir, usted debe asegurarse de que ninguna de sus particiones se montan. El comando
también asume que se ejecuta mientras que en el directorio que aloja la imagen ISO, de lo contrario tendrá que ser
siempre la ruta completa.

22 Kali Linux Revelado


Para referencia, Si es sinónimo de “archivo de entrada” y de para el “archivo de salida”. La dd comando lee los datos del
archivo de entrada y escribe de nuevo al archivo de salida. No muestra ninguna información de progreso de manera
youmust ser paciente mientras está haciendo su trabajo (que no es raro que el comando para tomar más de media hora!).
Mira la actividad de escritura del LED en la llave USB si desea volver a comprobar que el comando está trabajando. Las
estadísticas muestran arriba sólo se muestran cuando el comando se ha completado. En OS X / MacOS, también puede
pulsar CTRL + T durante la operación para obtener información estadística sobre la copia incluyendo cómo se ha copiado
muchos datos.

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

OS X / macOS está basado en UNIX, por lo que el proceso de crear una unidad USB de arranque de Linux Kali es similar al procedimiento de
Linux. Una vez que haya descargado y verificado su archivo ISO Kali elegido, utilice dd
para copiarlo en su memoria USB.

Para identificar el nombre del dispositivo de la llave USB, ejecutar lista diskutil para listar los discos disponibles en el sistema. A
continuación, inserte su llave USB y ejecutar el lista diskutil comando de nuevo. La segunda salida debe enumerar un disco adicional. Se
puede determinar el nombre del dispositivo de la llave USB al comparar la salida de ambos comandos. Buscar una nueva línea de
identificación de su disco USB y anote la / dev / disk X dónde X representa el ID del disco.

Usted shouldmake seguro de que se theUSBkey notmounted, whichcanbe accomplishedwithanexplicit comando unmount (suponiendo
/ dev / disk6 es el nombre del dispositivo de la memoria USB):

PS Desmontar diskutil / dev / disk6

Ahora proceda a ejecutar la dd mando. Esta vez, añadir un parámetro adicional - Bs para el tamaño de bloque. Se define el tamaño
del bloque que se lee desde el archivo de entrada y luego escribe en el archivo de salida.

# dd if = kali-linux-light-2017.1-amd64.iso of = / dev / disk6 bs = 1M


1011 + 0 registros en 1011 + 0
registros fuera
1060241408 bytes transferidos en 327.061 segundos (3242328 bytes / seg)

Eso es. Su llave USB ya está listo y se puede arrancar desde él o usarlo para instalar Kali Linux.

Arrancar un disco alternativo


En OS X / macOS Para arrancarmanteniendo pulsada
unidad alternativa la tecla
Froman enOpción inmediatamente
un sistema después
OS X / MacOS, de encender
que aparezca el dispositivo
el menú y seleccionar la unidad que desee
de arranque

utilizar. Para obtener más información, consulte la base de conocimientos de Apple 1.

1 http://support.apple.com/kb/ht1310

Capítulo 2 - Introducción a Kali Linux 23


2.2. El arranque de una imagen de Kali ISO en modo en vivo

2.2.1. En un ordenador real

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

El BIOS / UEFI es responsable del proceso de inicio temprano y se puede configurar a través de una pieza de software llamada de
configuración. En particular, permite a los usuarios elegir qué dispositivo de arranque es el preferido. En este caso, desea seleccionar ya sea
la unidad de DVD-ROM o una unidad USB, dependiendo del dispositivo que ha creado.

Iniciar la configuración por lo general consiste en presionar una tecla en particular muy pronto después de que el ordenador está encendido. Esta

clave es a menudo del o Esc, y aveces F2 o F10. La mayoría de las veces, la elección se destella brevemente en pantalla cuando se enciende el

equipo encendido, antes de la carga del sistema operativo. Una vez que el BIOS / UEFI ha sido correctamente configurado para arrancar desde el

dispositivo, arrancando Kali Linux es simplemente una cuestión de insertar el DVD-ROM o de conectar la unidad USB y encender el ordenador.

Desactivar arranque seguro Mientras que las imágenes Kali Linux se puede arrancar en modo UEFI, que no son compatibles seguro
bota. Debe desactivar esa característica en el programa de instalación.

2.2.2. En una Máquina Virtual

Virtualmachines havemultiple beneficios para los usuarios de Linux Kali. Son especialmente útiles si youwant para probar Kali Linux, pero no están

dispuestos a comprometerse a instalar de forma permanente en su equipo o si usted tiene un sistema potente y desea runmultiple sistemas

operativos al mismo tiempo. Esta es una opción popular para muchas pruebas de penetración y profesionales de la seguridad que necesitan

utilizar la amplia gama de herramientas disponibles en Kali Linux, pero aún quieren tener acceso completo a su sistema operativo principal. Esto

también proporciona themwith la capacidad de archivar o eliminar de forma segura la máquina virtual y los datos del cliente que pueda contener en

lugar de volver a instalar la totalidad de su sistema operativo. Las características de instantáneas de software de virtualización también hacen que

sea fácil de experimentar con las operaciones potencialmente peligrosas, tales como análisis de malware, permitiendo al mismo tiempo una salida

fácil mediante la restauración de una instantánea anterior.

24 Kali Linux Revelado


Hay aremany herramientas de virtualización disponibles para allmajor sistemas operativos, incluyendo VirtualBox®, VMware Workstation®,
Xen, KVM, y Hyper-V para nombrar unos pocos. En última instancia, va a utilizar el que mejor se adapte a usted, pero vamos a cubrir los dos
más utilizados en un contexto de escritorio: VirtualBox®
y VMware Workstation Pro®, tanto se ejecuta en Windows 10. Si usted no tiene limitaciones de la política corporativa o preferencia personal,

nuestra recomendación es que pruebe VirtualBox en primer lugar, ya que está libre, que funciona bien, es (en su mayoría) de código abierto, y

está disponible para la mayoría sistemas operativos. Para thenext secciones, wewill suponer que youhave ya instalada la herramienta de

virtualización apropiada y están familiarizados con su funcionamiento.

Observaciones preliminares

Para beneficiarse totalmente de la virtualización, usted debe tener una CPU con las características de virtualización apropiadas y que no

esté desactivado por el BIOS / UEFI. Comprube “Intel® Tecnología Virtual-ización” y / o “opciones Intel® VT-d de función” en las pantallas

de configuración. Usted también debe tener un sistema operativo host de 64 bits, como amd64 arquitectura para las distribuciones de Linux

basadas en Debian, x86_64 arquitectura para las distribuciones de Linux basadas en RedHat, y De Windows de 64 bits ... para ventanas.

Si carecen de alguno de los requisitos previos, o bien la herramienta de virtualización no funcionará correctamente o será restringido a correr sólo

los sistemas operativos invitados de 32 bits.

Dado que las herramientas de virtualización enganchan en el sistema operativo host y el hardware en un nivel bajo, a menudo existen

incompatibilidades entre ellos. No espere que estas herramientas para que funcione bien al mismo tiempo. Además, ten en cuenta que las versiones

profesionales de Windows vienen con Hyper-V instalado y ES- abled, lo que podría interferir con su herramienta de virtualización de elección. Para

desactivarlo, ejecutar “Activar las características de Windows o desactivar” fromWindows Configuración.

Capítulo 2 - Introducción a Kali Linux 25


VirtualBox

Después de la instalación inicial, la pantalla principal de VirtualBox se ve algo parecido a la figura 2.6, “Pantalla de inicio de VirtualBox”
[página 26].

Figura 2.6 Pantalla de inicio de VirtualBox

Haga clic en Nuevo (Figura 2.7, “Nombre y funcionamiento del sistema” [página 27]) para iniciar un asistente que le guiará a través de los

múltiples pasos necesarios para introducir todos los parámetros de la nueva máquina virtual.

26 Kali Linux Revelado


Figura 2.7 Nombre y sistema operativo

En el primer paso, que se muestra en la Figura 2.7, “Nombre y funcionamiento del sistema” [página 27], debe asignar un nombre a la
nueva máquina virtual. Use “Kali Linux”. También debe indicar qué tipo de explota- ción de systemwill ser utilizado. Desde Kali Linux se
basa en Debian GNU / Linux, seleccione Linux para el tipo y Debian (32 bits) o Debian (64-bit) para la versión. A pesar de cualquier otra
versión de Linux de trabajo lo más probable, esto ayudará a distinguir entre las diferentes máquinas virtuales que es posible que haya
instalado.

Capítulo 2 - Introducción a Kali Linux 27


Figura 2.8 Tamaño de la memoria

En el segundo paso, se debe decidir howmuch memoria para asignar a la máquina virtual. Mientras que el tamaño recomendado de 768 MB es

aceptable para una máquina virtual Debian que actúa como servidor, es definitivamente no es suficiente para hacer funcionar un sistema de

escritorio Kali, y menos para un sistema vivo Kali Linux desde el sistema en vivo usa memoria para almacenar los cambios realizados en el

sistema de archivos. Recomendamos aumentar el valor a 1500 MB (Figura 2.8, “Tamaño de la memoria” [página 28]), es muy recomendable que

se puede asignar no menos de 2048 MB de memoria RAM.

28 Kali Linux Revelado


Figura 2.9 Disco duro

En el tercer paso (que se muestra en la Figura 2.9, “disco duro” [página 29]), se le pedirá que elija una físi- cas o disco duro virtual para su
nueva máquina virtual. Aunque un disco duro no es necesario para ejecutar Kali Linux como un sistema vivo, agrega uno para cuando se
demuestra el procedimiento de instalación más adelante, en el capítulo 4, “Instalación de Kali Linux” [página 66].

Capítulo 2 - Introducción a Kali Linux 29


Figura 2.10 Disco duro Tipo de archivo

El contenido del disco duro de la máquina virtual se almacena en el ordenador central como un archivo. Virtualmente Albox es capaz de almacenar el

contenido del disco duro que utiliza múltiples formatos (que se muestra en la Figura 2.10, “Disco duro Tipo de archivo” [página 30]): el valor por

defecto ( VDI) se corresponde con el formato nativo de VirtualBox;

VMDK es el formato utilizado por VMware; qcow es el formato utilizado por QEMU. Mantenga el valor por defecto, ya que no tiene
ninguna razón para cambiarlo. La capacidad de utilizar múltiples formatos es interesante sobre todo cuando se quiere mover una
máquina virtual de un herramienta de virtualización a otro.

30 Kali Linux Revelado


Figura 2.11 Almacenamiento en disco duro físico

El texto explicativo en la Figura 2.11, “Almacenamiento en disco duro físico” [página 31] describe claramente las ventajas y los
inconvenientes de asignación de disco dinámico y fijo. En este ejemplo, se acepta la selección por defecto (dinámicamente asignada),
ya que estamos utilizando unos discos SSD laptopwith. No queremos desperdiciar espacio y no necesitará el toque adicional de
rendimiento que la máquina ya es bastante rápido para empezar.

Capítulo 2 - Introducción a Kali Linux 31


Figura 2.12 Localización y tamaños de archivo

El tamaño predeterminado del disco duro de 8 GB se muestra en la Figura 2.12, “Ubicación del archivo y el tamaño” [página 32] no es suficiente para

una instalación estándar de Kali Linux, por lo que aumenta el tamaño de 20 GB. También puede modificar el nombre y la ubicación de la imagen de

disco. Esto puede ser handywhen usted no tiene suficiente espacio en el disco duro, lo que le permite almacenar la imagen de disco en una unidad

externa.

32 Kali Linux Revelado


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

La máquina virtual se ha creado, pero realmente no se puede ejecutar sin embargo, porque no hay un sistema operativo instalado. También tiene

algunos ajustes de ajustar. Haga clic en Configuración en la pantalla del Administrador de máquina virtual y vamos a revisar algunas de las opciones

más útiles.

Figura 2.14 Configuración de almacenamiento

Capítulo 2 - Introducción a Kali Linux 33


En la pantalla de almacenamiento (Figura 2.14, “Configuración de almacenamiento” [página 33]), se debe asociar la imagen de Kali Linux ISO con el

lector de CD / DVD-ROM virtual. En primer lugar, seleccione la unidad de CD-ROM en la lista del árbol de almace- namiento y luego haga clic en el

pequeño icono de CD-ROM a la derecha para mostrar un menú contextual donde se puede Elija virtual del archivo de disco óptico ....

Figura 2.15 Configuración del sistema: Placa madre

En el Systemscreen (Figura 2.15, “systemsettings: la placa base” [página 34]), youwill encontrar pestaña erboard aMoth-. Asegúrese de
que el orden de arranque indica que el sistema primero intentará arrancar desde cualquier dispositivo óptico antes de intentar un disco
duro. Esta es también la pestaña donde se puede alterar la cantidad de memoria asignada a la máquina virtual, en caso de necesidad.

34 Kali Linux Revelado


Figura 2.16 Configuración del sistema: Procesador

En la misma pantalla, pero en la pestaña “procesador” (Figura 2.16, “Configuración del sistema: Procesador” [página 35]), puede ajustar el
número de procesadores asignados a la máquina virtual. Lo más importante, si se utiliza una imagen de 32 bits, habilitar PAE / NX o la imagen
de Kali no arrancará desde la variante de kernel predeterminado utilizado por Kali para i386 (acertadamente llamado “686-PAE”) se compila en
una forma que requiere Física Dirección de Extensión de soporte (PAE) en la CPU.

Hay muchos otros parámetros que se pueden configurar, como la configuración de la red (la definición de cómo se maneja el tráfico en la tarjeta de red), pero los

cambios anteriores son suficientes para ser capaz de arrancar un sistema Linux en funcionamiento en vivo Kali. Por último, haga clic en arranque y la máquina

virtual debe arrancar correctamente, como se muestra en la Figura 2.17, “Kali pantalla de arranque de Linux en VirtualBox” [página 36]. Si no es así, revisar

cuidadosamente todos los ajustes y vuelve a intentarlo.

Capítulo 2 - Introducción a Kali Linux 35


Figura 2.17 Pantalla Kali arranque de Linux en VirtualBox

VMware

VMware Workstation Pro es muy similar a VirtualBox en términos de características y la interfaz de usuario, BE- causan ambos están diseñados
principalmente para uso de escritorio, pero el proceso de instalación de una nueva máquina virtual es un poco diferente.

36 Kali Linux Revelado


Figura 2.18 Pantalla de inicio de VMware

La pantalla inicial, que se muestra en la Figura 2.18, “VMware Pantalla de inicio” [página 37], muestra un gran botón Crear una
NewVirtual máquina que inicia un asistente que le guiará a través de la creación de la máquina virtual.

Figura 2.19 Asistente para nueva máquina virtual

En el primer paso, se debe decidir si desea que se le presenta con la configuración avanzada Duran- te el proceso de configuración.
En este ejemplo, no hay requisitos especiales así que elige la instalación típica, como se muestra en la Figura 2.19, “Asistente para
nuevo equipo virtual” [página 37].

Capítulo 2 - Introducción a Kali Linux 37


Figura 2.20 Instalación del sistema operativo invitado

El asistente se supone que desea instalar el sistema operativo inmediatamente y le pide que seleccione la imagen ISO que contiene el
programa de instalación (Figura 2.20, “Instalación del sistema operativo invitado” [página 38]). Seleccione “archivo de imagen de disco de
instalación (ISO)” y haga clic en Examinar para seleccionar el archivo de imagen.

Figura 2.21 Seleccione un sistema operativo invitado

38 Kali Linux Revelado


Cuando el sistema operativo (OS) no puede ser detectada a partir de la imagen ISO seleccionado, el asistente le pregunta qué tipo de sistema operativo

huésped va a ejecutar. Debe seleccionar “Linux” para el sistema operativo y “8.x Debian” para la versión, como se muestra en la Figura 2.21,

“Seleccionar un sistema operativo invitado” [página 38].

Figura 2.22 Nombre de la máquina virtual

Elija “Kali Linux” como el nombre de la nueva máquina virtual (Figura 2.22, “Nombre del lomo virtual Ma-” [página 39]). Como
withVirtualBox, también tiene la opción de almacenar theVMfiles en una ubicación alternativa.

Capítulo 2 - Introducción a Kali Linux 39


Figura 2.23 Especificar disco de capacidad

El tamaño por defecto de disco duro de 20 GB (Figura 2.23, “Especificación de disco de capacidad” [página 40]) suele ser sufi- ciente, pero se puede

ajustar aquí en función de sus necesidades previstas. A diferencia de VirtualBox, que se puede utilizar un solo archivo de tamaño variable, VMware

tiene la capacidad de almacenar el contenido del disco a través de múltiples archivos. En ambos casos, el objetivo es ahorrar espacio en disco del

huésped.

40 Kali Linux Revelado


Figura 2.24 Listo para crear la máquina virtual

VMware Workstation está configurado para crear la nueva máquina virtual. Se muestra un resumen de las decisiones tomadas por lo
que se puede hacer doble comprobar todo antes de crear themachine. Observe que el asistente optó por destinar sólo 512 MB de RAM
para la máquina virtual, lo cual no es suficiente para hacer clic en Personalizar Hardware ... (Figura 2.24, “listo para crear la máquina
virtual” [página 41]) y ajustar la configuración de memoria , como se muestra en la Figura 2.25, “Configurar ventana Hardware” [página
42].

Capítulo 2 - Introducción a Kali Linux 41


Figura 2.25 Configurar la ventana de hardware

Después de un último clic en Finish (Figura 2.24, “listo para crear la máquina virtual” [página 41]), la máquina virtual está
configurado y se puede iniciar haciendo clic en “Power en esta máquina virtual”, como se muestra en la Figura 2.26, “Kali Linux
virtual Machine Ready”[página 43].

42 Kali Linux Revelado


Figura 2.26 Kali Linux Virtual Machine Ready

2.3. Resumen

En este capítulo, usted aprendió sobre las diversas imágenes Kali Linux ISO, aprendido cómo verificar y descarga, y aprendió a crear

discos de arranque USB de ellas en diversos sistemas operativos. También hablamos sobre cómo arrancar los discos USB y

revisamos cómo configurar los parámetros de la BIOS y puesta en marcha en diversas plataformas de hardware de manera que los

discos USB arranca. Resumen Consejos:

• www.kali.org es el único sitio oficial de descarga de Kali ISO. No descargarlos desde cualquier otro sitio, porque
esas descargas pueden contener malware.

• Siempre validar la sha256sum de las descargas con el sha256sum mando para asegurar la integridad de la descarga
de la ISO. Si no coincide, intente de nuevo la descarga o el uso de una fuente diferente.

• Debe escribir la imagen de Kali Linux ISO en un medio de inicio si desea arrancar en una máquina física. Utilizar Win32
disco Imager en Windows, la utilidad de discos en Linux, o el dd
comando onMac OS X / MacOS. Ser muy cuidadoso whenwriting la imagen. Selección de disco incorrecto podría dañar
permanentemente los datos en su máquina.

• Configurar las pantallas de configuración del BIOS / UEFI en un PC o sostener el Opción clave en OS X / macOS para permitir que la máquina para
arrancar desde la unidad USB.

Capítulo 2 - Introducción a Kali Linux 43


• programas de máquinas virtuales como VirtualBox y VMware Workstation Pro son especialmente útiles si usted quiere probar
Kali Linux, pero no están dispuestos a comprometerse a instalar de forma permanente en su equipo o si usted tiene un sistema
potente y desea runmultiple sistemas operativos al mismo tiempo.

Ahora que tiene una instalación de trabajo de Kali Linux, es el momento de profundizar en algunos damentals fun- Linux que se
requieren para el funcionamiento básico y avanzado de Kali. Si usted es un usuario de moderada a Linux avanzado, considere rozando
el siguiente capítulo.

44 Kali Linux Revelado


Palabras clave

kernel de Linux
Usuario de la

línea de comandos espacio

golpetazo

Jerarquía del Sistema de Archivos

comandos de Unix
Capítulo

Fundamentos de Linux 3
Contenido

¿Qué es Linux y qué está haciendo? 48 La línea de comandos 51 El sistema de archivos 54

Comandos útiles 56 Resumen 62


Antes de que pueda dominar Kali Linux, debe estar a gusto con un sistema genérico de Linux. ciencia Linux Profi- le servirá bien, debido a que
un gran porcentaje de la Web, correo electrónico y otros servicios de Internet se ejecutan en servidores Linux.

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

3.1. ¿Qué es Linux y qué está haciendo?

El término “Linux” se utiliza a menudo para referirse a todo el sistema operativo, pero en realidad, Linux es el núcleo del sistema
operativo, que se inicia por el cargador de arranque, que es en sí comenzó por BIOS / UEFI. El núcleo asume un papel similar al de un
conductor en una orquesta-se encarga de la coordinación entre el hardware y el software. Esta función incluye el hardware de gestión,
procesos, usuarios, permisos, y el sistema de archivos. El núcleo proporciona una base común a todos los otros programas en el sistema
y por lo general se ejecuta en anillo de cero, también conocido como el espacio del núcleo.

El espacio de usuario Usamos el término el espacio de usuario a agrupar todo lo que sucede fuera de la
núcleo.

Entre los programas que se ejecutan en espacio de usuario son muchas utilidades básicas del proyecto GNU 1, la mayoría de los

cuales están destinados a ser ejecutado desde la línea de comandos. Usted las puede utilizar en secuencias de comandos para

automatizar muchas tareas. Véase la sección 3.4, “comandos útiles” [página 56] para más información sobre los comandos más

importantes.

Vamos a revisar rápidamente las diversas tareas manejadas por el núcleo Linux.

3.1.1. Hardware conducir

El núcleo tiene la tarea, en primer lugar, con el control de los componentes de hardware del equipo. Se detecta y configura themwhen los poderes

de ordenador en, o cuando se inserta un dispositivo o que se habían quitado (por ejemplo, un dispositivo USB). Se alsomakes themavailable a

software de nivel superior, a través de una interfaz de programación simplificado, lo que las aplicaciones pueden tomar ventaja de los dispositivos

sin tener que hacer frente a los detalles tales como qué ranura de extensión una placa opcional se conecta. La interfaz de programación también

proporciona una capa de abstracción; esto permite que el software de videoconferencia, por ejem- plo, para usar una cámara web,

independientemente de su fabricante y modelo. El software se puede utilizar el De vídeo para Linux

(V4L) interfaz y el núcleo se traducirá llamadas a funciones de la interfaz en comandos de hardware reales que necesita la cámara web específica

en uso. Los datos de las exportaciones del núcleo sobre el hardware detectado a través de la / proc / y / sys / de archivos virtuales siste- mas.

Aplicaciones menudo acceder a los dispositivos a través de los archivos creados dentro / dev /. archivos específicos repre-

1 http://www.gnu.org

48 Kali Linux Revelado


resentir unidades de disco (por ejemplo, / dev / sda), particiones (/ dev / sda1), ratones (/ dev / input / Mouse0),
(teclados / dev / input / event0), Las tarjetas de sonido (/ dev / snd / *), puertos seriales (/ dev / ttyS *), y otros componentes.

Hay dos tipos de archivos de dispositivo: bloquear y personaje. El primero tiene características de un bloque de datos: Tiene un tamaño finito, y se

puede acceder a los bytes en cualquier posición en el bloque. Este último se comporta como un personajes flowof. Usted puede leer andwrite

caracteres, pero no se puede tratar de un givenposition y cambiar bytes arbitrarias. Para averiguar el tipo de un archivo determinado dispositivo,

inspeccionar la primera letra de la salida de ls -l. Es bien segundo, para dispositivos de bloque, o do, para dispositivos de caracteres:

PS ls -l / dev / sda / dev / ttyS0


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

Como era de esperar, las unidades de disco y 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ífico de dispositivo que se pueden invocar a través de

la ioctl llamada al sistema.

3.1.2. La unificación de los sistemas de archivos

Los sistemas de archivos son un aspecto destacado del núcleo. Similar a Unix systemsmerge todos los almacenes de archivos en una jerarquía única,

que permite a los usuarios y las aplicaciones accedan a los datos por conocer su locationwithin esa jerarquía.

El punto de partida de este árbol jerárquico se llama la raíz, representado por el carácter “/”. Este directorio puede
containnamed subdirectorios. Por ejemplo, la casa subdirectorio de / se llama
/casa/. Este subdirectorio puede, a su vez, los subdirectorios containother, y así sucesivamente. Eachdirectory también puede contener

archivos, donde se almacenarán los datos. Por lo tanto, / Inicio / buxy / Escritorio / hola.txt se refiere a un archivo llamado hola.txt almacenado en
la Escritorio subdirectorio del buxy subdirectorio del casa
directorio, presente en la raíz. El núcleo se traduce entre este sistema de nombres y la ubicación de almacenamiento en un disco.

A diferencia de otros sistemas, Linux posee solamente un tal jerarquía, y se puede integrar datos de varios discos. Uno de estos discos
se convierte en la raíz, y los otros son montado en los directorios en la jerarquía (el comando Linux se llama montar). Estos otros discos
son entonces disponible bajo la puntos de montaje. Esto permite el almacenamiento de directorios de los usuarios (tradicionalmente
almacenada dentro / casa/)
en un disco duro independiente, que contendrá la buxy directorio (junto con directorios personales de otros usuarios). Una vez que se monta el

disco en / casa/, estos directorios se hacen accesibles en sus lugares habituales, y caminos tales como / Inicio / buxy / Escritorio / hola.txt sigue

trabajando. Hay muchos formatos del sistema de archivos, que corresponden a muchas formas de almacenar físicamente los datos en los

discos. El más ampliamente conocidos son ext2, ext3, y ext4, pero existen otros. Por ejemplo, VFAT es el sistema de archivos que se ha utilizado

históricamente por los sistemas operativos DOS y Windows. El apoyo de Linux para VFAT permite que los discos duros sean accesibles en

virtud de Kali aswell como underWindows. En cualquier caso, youmust preparar un sistema de archivos en un disco antes de poder montarlo y

esta operación se conoce como formateo.

Capítulo 3 - Fundamentos de Linux 49


Comandos tales como mkfs.ext3 ( dónde mkfs representa MaKe sistema de archivos) manejar formato. Estos comandos requieren, como un
parámetro, un archivo de dispositivo que representa la partición a ser formateado (por ejemplo, / dev / sda1, la primera partitionon la primera
unidad). Esta operación es destructivo y se debe ejecutar sólo una vez, a menos que desee para limpiar un sistema de archivos y empezar de
cero.

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 almacena y los recupera en la demanda. Gracias a la abstracción del sistema de archivos, usted no
tiene que preocuparse acerca de cómo conectar este disco, ya que los archivos sean 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 propio programa y sus datos de

funcionamiento. El núcleo está a cargo de la creación y el seguimiento de los procesos. Cuando se ejecuta un programa, el núcleo pone primero a

un lado algo de memoria, carga el código ejecutable del sistema de archivos en él, y luego comienza el código en ejecución. Se mantiene

información sobre este proceso, themost visible de que es un número de identificación conocido como el identificador de proceso ( PID). Como la

mayoría de los sistemas operativos modernos, los que tienen núcleos de tipo Unix, incluyendo Linux, son capaces de realizar múltiples tareas. En

otras palabras, permiten que el sistema funcione muchos procesos al mismo tiempo. En realidad, hay sólo un proceso en ejecución en un momento

dado, pero el núcleo se divide el tiempo de CPU en pequeños trozos y se ejecuta eachprocess a su vez. Dado que estos intervalos de tiempo son

muy cortos (en el rango themillisecond), que crean la apariencia de procesos que se ejecutan en paralelo, a pesar de que sólo están activas durante

su intervalo de tiempo y dejar pasar el resto del tiempo. El trabajo del kernel es ajustar sus mecanismos de planificación para mantener ese aspecto,

al tiempo que maximiza el rendimiento del sistema global. Si los intervalos de tiempo son demasiado largos, la aplicación puede no parecer tan

sensible como se desee. Demasiado corto, y el sistema pierde tiempo al cambiar tareas con demasiada frecuencia. Estas decisiones pueden ser

refinados con las prioridades de proceso, donde los procesos de alta prioridad se ejecutarán por períodos más largos y Withmore intervalos de

tiempo frecuentes que los procesos de baja prioridad.

Sistemas multiprocesador
(Y variantes) La limitaciónsese ha descrito
aplica: anteriormente,
la restricción real es que de
no un solohaber
puede proceso en proceso
un solo ejecución
en aejecución porsiempre
la vez, no núcleo de procesador. Multi-procesador,
multi-núcleo, o hiper-roscado sistemas permiten que varios procesos se ejecutan en paralelo. Se utiliza el mismo sistema de

tiempo compartido, sin embargo, para manejar casos en los que hay procesos más activos que los núcleos de procesamiento

disponibles. Esto no es inusual: un sistema básico, aunque sea sobre todo en reposo, casi siempre tiene decenas de procesos en

ejecución.

El kernel permite que varias instancias independientes de un mismo programa a ejecutar, pero se permite acceder a cada uno sólo sus propios intervalos

de tiempo y la memoria. por tanto, sus datos se mantienen independientes.

50 Kali Linux Revelado


3.1.4. Gestión de Derechos

sistemas Unix soportan múltiples usuarios y grupos y permiten el control de permisos. La mayor parte del tiempo, un proceso es
identificado por el usuario que lo inició. Ese proceso sólo se permite tomar acciones permitidas para su dueño. Por ejemplo, la apertura
de un archivo requiere que el núcleo para comprobar la identidad del proceso contra los permisos de acceso (para más detalles sobre
este ejemplo en particular, véase la sección 3.4.4, “Gestión de Derechos” [página 57]).

3.2. La línea de comandos

Por “línea de comandos”, nos referimos a una interfaz basada en texto que le permite introducir comandos, ejecutar ellos, y ver los
resultados. Puede ejecutar un terminal (una pantalla de texto en el escritorio gráfico, o la consola de texto en sí fuera de cualquier
interfaz gráfica) y un intérprete de comandos en su interior ( la cáscara).

3.2.1. Cómo conseguir una línea de comandos

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

Figura 3.1 A partir del Terminal de GNOME

Capítulo 3 - Fundamentos de Linux 51


Por ejemplo, en un sistema de Kali Linux por defecto, GNOME Terminal se puede iniciar desde la lista de aplicaciones Vorite fa-.
También puede escribir “terminal”, mientras que en la pantalla de Actividades (la que se activa cuando se mueve el ratón a la esquina
superior izquierda) y haga clic en el icono de la aplicación correcta que aparece (Figura 3.1, “Inicio de la Terminal de GNOME” [página
51]).

En el caso de que su interfaz gráfica se rompe, usted todavía puede obtener una línea de comandos en las consolas virtuales (hasta seis de
ellos pueden ser accesibles a través de las seis combinaciones de teclas de CTRL + ALT + F1 a CTRL + ALT + F6 - el CTRL clave se puede
omitir si ya se encuentra en modo de texto, fuera de la interfaz gráfica de Xorg o de Wayland). Se obtiene una pantalla de inicio de sesión muy
básico en el que introduce su usuario y contraseña antes de ser concedido el acceso a la línea de comandos con su cáscara:

Kali GNU / Linux balanceo kali-balanceo tty3 kali-balanceo entrada: raíz

Contraseña:
Última entrada: 25 de Mar de abeto 12:30:05 EDT 2016 de 192.168.122.1 en pts / 2 Linux kali-rolling-4.4.0-kali1 amd4 SMP Debian 4.4.6-1kali1
(03/18/2016) x86_64 # 1

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

Kali GNU / Linux viene con absolutamente ninguna garantía en la medida permitida por la ley aplicable. root @
kali-balanceo: ~ #

El manejo de su entrada y la ejecución de los comandos de programa se llama una cáscara ( o un intérprete de línea de comandos). El shell por
defecto proporcionada en Kali Linux es Bash ( lo que representa Bourne Again Shell).
El arrastre “$” o el carácter “#” indica que la cáscara está a la espera de su entrada. También indica si Bash se reconoce
como un usuario normal (el primer caso con el dólar) o como superusuario (el último caso con el hash).

3.2.2. Fundamentos de línea de comandos: Navegar por árbol de directorios y archivos Gestión

En esta sección sólo se ofrece un breve resumen de los comandos que se cubren, todos los cuales tienen muchas opciones que no se

describen aquí, así que por favor refiérase a la abundante documentación disponible en sus páginas de manual res- pectivas. En las pruebas de

penetración, lo más a menudo reciben acceso a una consola a un sistema después de explotar con éxito, en lugar de una interfaz gráfica de

usuario. Capacidad con la línea de comandos es esencial para su éxito como profesional de seguridad. Una vez que una sesión está abierta, la pwd

comando (que significa directorio de trabajo de impresión) muestra su ubicación actual en el sistema de archivos. El directorio actual se cambia

con el discos compactos directorio com- Mand ( discos compactos es para cambio de directorio). Cuando no se especifica el directorio de destino, se

le llevará a su directorio. Cuando se utiliza discos compactos -, usted vuelve al directorio de trabajo anterior (el que está en uso antes de la última discos

compactos llamada). El directorio padre siempre se llama .. (Dos puntos), mientras que la

52 Kali Linux Revelado


directorio actual también se conoce como. (un punto). los ls comando permite listado el contenido de un directorio. Si usted no
proporciona parámetros, ls opera en el directorio actual.

PS pwd

/ Home / $ buxy cd
escritorio
PS pwd

/ Home / buxy / Desktop $ discos

compactos .

PS pwd

/ Home / buxy / Desktop $ discos

compactos ..

PS pwd

/ Home / $ buxy ls

Escritorio Descargas Imágenes plantillas


documentos Música Público vídeos

Se puede crear un nuevo directorio con mkdir directorio, y quitar un directorio existente (vacío) con rmdir directorio. los mv comando
permite emocionante y renombrar archivos y directorios; movimiento re- un archivo se logra con rm expediente, y la copia de un
archivo se realiza con cp targetfile fuente-archivo.

PS mkdir prueba

PS ls

Escritorio Plantillas Descargas Imágenes Vídeos


documentos Música Público prueba

PS mv nueva prueba

PS ls

Escritorio descargas nueva Público vídeos


documentos Música Fotos de plantillas
PS rmdir nueva

PS ls

Escritorio Plantillas Descargas Imágenes Vídeos


documentos Música Público

El shell ejecuta cada comando mediante la ejecución del primer programa del nombre dado que se encuentra en un directorio que
aparece en el CAMINO Variable ambiental. Muy a menudo, estos programas están en / bin, / sbin, / Usr / bin, o / usr / sbin. Por ejemplo,
el ls comando se encuentra en / bin / ls; la cual
comando informa de la ubicación de un archivo ejecutable dado. A veces, el comando se realiza directamente por la carcasa, en cuyo caso, se

le llama una cáscara de comando integrado ( discos compactos y pwd están entre los); la

tipo comando permite consultar el tipo de cada comando.

PS echo $ PATH

/ Usr / local / sbin: / usr / local / bin: / usr / sbin: / usr / bin: / sbin: / bin $ el cual ls

/ bin / ls

Capítulo 3 - Fundamentos de Linux 53


PS escriba rm

RM es / bin / rm $ tipo
cd
cd es una orden interna del shell

Tenga en cuenta el uso de la eco comando, que simplemente muestra una cadena en el terminal. En este caso, se utiliza para imprimir
el contenido de una variable de entorno desde la cáscara sustituye automáticamente variables con sus valores antes de ejecutar la
línea de comandos.

Variables de entorno Las variables de entorno permiten el almacenamiento de la configuración global de la cáscara o varios otros
programas. Ellos son contextuales, pero se puede heredar. Por ejemplo, cada proceso tiene su propio conjunto de
variables de entorno (son contextual). Conchas, como conchas de inicio de sesión, puede declarar variables, que se
transmiten a otros programas que se ejecutan (que son heredables).

Estas variables se pueden definir en todo el sistema en / etc / profile o por usuario en ~ /
. perfil pero las variables que no son específicos a los intérpretes de línea de comandos son mejores puestos en / etc / medio
ambiente, desde serán inyectados esas variables en todas las sesiones de usuario gracias a un enchufable
AuthenticationModule (PAM) - incluso cuando no se ejecuta ningún shell.

3.3. El sistema de archivos

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

Al igual que con otras distribuciones de Linux, Kali Linux es organizado para ser coherente con el Sistema de archivos estándar Hi-erarchy ( FHS),

permitiendo a los usuarios de otras distribuciones de Linux para encontrar fácilmente su camino alrededor de Kali. El FHS define el propósito de

cada directorio. Los directorios de nivel superior se describen como sigue.

• /compartimiento/: programas básicos

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

• / Dev /: ficheros de dispositivo

• / Etc /: Archivos de configuración

• /casa/: archivos personales del usuario

• / Lib /: bibliotecas básicas

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

• / Mnt /: punto de montaje temporal

• /optar/: aplicaciones adicionales proporcionados por terceros

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

54 Kali Linux Revelado


• /correr/: datos de tiempo de ejecución volátil que no persiste en los reinicios (todavía no incluido en el FHS)

• / Sbin /: los programas del sistema

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

• / Tmp /: archivos temporales (este directorio es a menudo vació en el arranque)

• / Usr /: aplicaciones (este directorio se subdividen en bin, sbin, lib de acuerdo con la misma lógica que en el directorio raíz)
Además, / usr / share / arquitectura- contiene datos independientes. Los / usr / local / directorio está destinado a ser utilizado
por el administrador para la instalación de aplicaciones de forma manual sin sobrescribir los archivos manejados por el
sistema de envasado ( dpkg).

• / Var /: datos variables manejadas por los demonios. Esto incluye los archivos de registro, colas, bobinas, y cachés.

• / Proc / y / sys / son específicos para el kernel de Linux (y no forma parte de la FHS). Son utilizados por el kernel para exportar
datos al espacio de usuario.

3.3.2. Directorio principal del usuario

El contenido del directorio principal de un usuario no están estandarizados, pero todavía hay algunas convenciones dignos de
mención. Una es que el directorio personal del usuario se refiere a menudo por una tilde ( “~”). Esto es útil saber porque intérpretes de
comandos reemplazan automáticamente una tilde con el directorio correcto (que se almacena en el CASA variable de entorno, y cuyo
valor habitual es / casa/ usuario/).

Tradicionalmente, los archivos de configuración de aplicaciones a menudo se almacenan directamente bajo el directorio inicial, pero los nombres de archivo por lo

general comienzan con un punto (por ejemplo, la chucho cliente de correo electrónico almacena su con- figuración en ~ /. muttrc). Tenga en cuenta que los nombres

de archivo que comienzan con un punto están ocultas por defecto; la ls mand com- únicas listas themwhen el - una opción se utiliza y administradores de archivos

gráficos deben configurarse explícitamente para mostrar los archivos ocultos.

Algunos programas también utilizan varios archivos de configuración organizados en un directorio (por ejemplo, ~ /
. ssh /). Algunas aplicaciones (como el navegador web Firefox) también utilizan su directorio para almacenar una memoria caché de datos descargados.

Esto significa que esos directorios pueden llegar a consumir una gran cantidad de espacio en disco.

Estos archivos de configuración almacenados directamente en su directorio personal, a menudo se hace referencia colectivamente como

dotfiles, han proliferado mucho hasta el punto de que estos directorios pueden ser bastante desordenado con ellos. Afortunadamente, un esfuerzo
dirigido colectivamente bajo el paraguas FreeDesktop.org ha dado como resultado la XDG BaseDirectory Especificación, una convención que tiene

por objeto la limpieza de estos archivos anddirectories. Esta especificación establece que los archivos de configuración se deben almacenar en ~ /. config,

archivos de caché menores

~ / .Cache, y archivos de datos de aplicación en ~ /. local ( o subdirectorios del mismo). Esta convención está ganando lentamente la

tracción.

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

Capítulo 3 - Fundamentos de Linux 55


Por último, el sistema de correo electrónico a veces almacena mensajes de correo electrónico entrantes en una ~ / Correo/ directorio.

3.4. Comandos útiles

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

los gato expediente comando (la intención de concatenar archivos en el 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 utilizar un localizador como Menos ( o Más) para visualizar

página por página. los editor comando inicia un editor de texto (como Vi o Nano) y permite crear, modificar, y la lectura de archivos de texto.

Los archivos más simples a veces se pueden crear directamente desde el comando inter preter gracias al cambio de dirección: comando>

archivo crea un archivo llamado expediente que contiene la salida de la orden dada. >> Archivo de comandos es similar, excepto que se

añade la salida del comando al archivo en lugar de sobrescribirlo.

PS echo “reglas Kali!”> kali-rules.txt


PS gato Kali-rules.txt
normas Kali! PS echo “Kali es el mejor!” >> kali-rules.txt

PS gato Kali-rules.txt
normas Kali!
Kali es el mejor!

3.4.2. Búsqueda de archivos y dentro de Archivos

los encontrar criterios de directorio comando busca archivos en la jerarquía bajo directorio AC- cording a varios criterios. El criterio más
utilizado es - nombre nombre del archivo, lo que permite la búsqueda de un archivo por su nombre. También puede utilizar comodines
comunes, tales como “*” en la búsqueda de un archivo.

PS encontrar / etc -name anfitriones

/ etc / hosts
/ Etc / hosts avahi / $ find / etc -name “*
anfitriones”
/ etc / hosts
/etc/hosts.allow
/etc/hosts.deny / etc / avahi /
hosts

los grep archivos de expresión comando busca en el contenido de los archivos y los extractos de las líneas que coincidan con la expresión
regular. La adición de la - r opción permite una búsqueda recursiva en todos los archivos contenidas en el directorio. Esto le permite buscar un
archivo cuando sólo se conoce una parte de su contenido.

56 Kali Linux Revelado


3.4.3. Gestión de procesos

los ps aux comando lista los procesos en ejecución actualmente y ayuda a identificar themby mostrando su PID. Una vez que knowthe PID de
un proceso, el matar - señal de pid comando le permite enviar una señal (si es el propietario del proceso). Existen varias señales; más
comúnmente utilizados son TÉRMINO( una petición para terminar con gracia) y MATAR ( una matanza forzada).

El intérprete de comandos también puede ejecutar programas en segundo plano si el comando es seguido por “&”. Al utilizar el
signo, se reanuda el control de la cáscara de inmediato a pesar de que el comando está en ejecución (oculto a la vista como un
proceso en segundo plano). los trabajos comando muestra los procesos que se ejecutan en segundo plano; corriendo fg% Número
de trabajo ( para primer plano) restaura un trabajo al primer plano. Cuando un comando se ejecuta en el primer plano (ya sea
porque se inició con normalidad o traído de vuelta al primer plano con fg), la combinación de teclas Control + Z se detiene el
proceso y se reanuda el control de la línea de comandos. Entonces, el proceso puede reiniciarse en el fondo con bg% Número de
trabajo ( para fondo).

3.4.4. Gestión de Derechos

Linux es amulti-usuario del sistema por lo que es necesario disponer de un sistema de permisos para controlar el conjunto de las operaciones

autorizadas de archivos y directorios, que incluye todos los systemresources y dispositivos (en un sistema UNIX, cualquier dispositivo está

representado por un archivo o directorio) . Este principio es común a todos los sistemas Unix.

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

• Su propietario (simbolizada por u, como en el usuario)

• Su grupo propietario (simbolizada por sol, como en el grupo), que representa a todos los miembros del grupo

• Los otros (simbolizados por O, al igual que en otros) Tres tipos

de derechos se pueden combinar:

• lectura (simbolizada por r, como en lectura);

• escrito (o modificar, simbolizada por w, como en escritura);

• ejecutar (simbolizado por X, como en ejecutar).

En el caso de un archivo, estos derechos son fáciles de entender: el acceso de lectura permite leer el contenido (incluida la copia), el acceso
de escritura permite cambiarlo, y acceso de ejecución permite ejecutarlo (que sólo funcionará si se trata de un programa).

Capítulo 3 - Fundamentos de Linux 57


setuid y setgid
ejecutables Dos derechos particulares
con la son relevantes
letra “s”). Tenga en cuentapara los archivos
que con ejecutables:
frecuencia bits, yyasetgid
se habla desetuid ( simbolizado
que cada uno de estos valores booleanos pueden ser

representados por un 0 o un 1. Estos dos derechos permiten a cualquier usuario ejecutar el programa con los derechos del

propietario o del grupo, respectivamente. Este mecanismo de subvenciones acceso a las funciones que requieren mayores

permisos de nivel que aquellos que normalmente tienen. Desde un setuid programa de la raíz se ejecuta sistemáticamente bajo

la identidad de super-usuario, es muy importante asegurarse de que es seguro y confiable. Cualquier usuario que logra

subvertir un programa setuid root llamar a un mandato de su elección, entonces podría hacerse pasar por el usuario root y

tienen todos los derechos sobre el sistema. pruebas de penetración buscar regularmente para estos tipos de archivos cuando

acceden a un sistema como una forma de escalada de sus privilegios.

Un directorio se maneja de forma diferente a partir de un archivo. El acceso de lectura da el derecho de consultar la lista de su contenido
(archivos y directorios); el acceso a escritura permite crear o eliminar archivos; y ejecutar el acceso permite cruzar a través del directorio
para acceder a su contenido (por ejemplo, con el discos compactos mando). Ser capaz de cruzar a través de un directorio sin ser capaz de leer
le da permiso al usuario para acceder a las entradas en el mismo que son conocidos por su nombre, pero no para encontrarlos sin conocer
su nombre exacto.

SEGURIDAD los setgid bit también se aplica a los directorios. Cualquier artículo que acaba de crear en esos directorios se asigna

setgid directorio y pegajoso automáticamente al grupo propietario del directorio padre, en lugar de heredar grupo principal del creador como de

poco costumbre. Debido a esto, usted no tiene que cambiar su grupo principal (con la newgrp comando) cuando se trabaja en un

árbol de archivos compartidos entre varios usuarios del mismo grupo dedicado. los poco pegajosa ( simbolizada por la

letra “t”) es un permiso que sólo es útil en los directorios. Se utiliza sobre todo para los directorios temporales, donde todo

el mundo tiene acceso de escritura (como / tmp /): que restringe la supresión de los ficheros de modo que sólo su dueño o el

propietario del directorio padre pueden eliminarlos. A falta de esto, todo el mundo podría eliminar archivos de otros

usuarios en / tmp /.

Tres órdenes de control de los permisos asociados a un archivo:

• chown archivo de usuario cambia el propietario del archivo

PROPINA Frecuencia con la que desea cambiar el grupo de un archivo a la vez que se cambia el propietario. los chown

Cambiar el usuario y comando tiene una sintaxis especial para ello: chown
usuario: archivo de grupo
grupo

• chgrp archivo de grupo altera el grupo propietario

• chmod archivo de los derechos cambia los permisos para el archivo

Hay dos maneras de representar los derechos. Entre ellos, la representación simbólica es probablemente el más fácil de entender y recordar.
Se trata de los símbolos de letras mencionados anteriormente. Se pueden definir los derechos de cada categoría de usuarios ( u / g / o), configurando
explícitamente (con =), mediante la adición de

58 Kali Linux Revelado


(+), O restando (-). Por lo tanto, la u = rwx, g + RW, o fórmula da la lectura propietario, escritura y ejecución de los derechos, añade leer y
escribir derechos para el grupo propietario, y elimina los derechos de otros usuarios leer. Los derechos no alteradas por la adición o
sustracción de un comando permanecen sin modificar. La carta una, para todos, cubre las tres categorías de usuarios, por lo que a = rx otorga
a las tres categorías de los mismos derechos (lectura y ejecución, pero no escribir).

Los (octal) asociados representación numérica de cada correctas con un valor de 4: para lectura, escritura para 2, y 1 para ejecutar.

Asociamos cada combinación de los derechos con la suma de las tres figuras, y se le asigna un valor a cada categoría de usuarios, en el

orden habitual (propietario, grupo u otros). Por ejemplo, la chmod 754 expediente orden fijará los siguientes derechos: leer, escribir y ejecutar

para el propietario (desde el 7 = 4 + 2 + 1); leer y ejecutar para el grupo (desde el 5 = 4 + 1); de sólo lectura para los demás. los 0 significa que

no hay derechos; así chmod 600 expediente permite leer permisos andwrite para el propietario, y no hay derechos para cualquier otra persona.

Themost combinaciones correctas son frecuentes 755 para los archivos y directorios ejecutables, y 644 para archivos de datos.

Para representar los derechos especiales, se puede prefijar una cuarta cifra a este número según el mismo principio, en el que el
setuid, setgid, y pegajoso bits son 4, 2 y 1, respectivamente. El comando
chmod 4754 asociará la setuid bit con los derechos descritos anteriormente. Tenga en cuenta que el uso de la notación octal sólo se le permite

configurar todos los derechos a la vez en un archivo; no se puede utilizar para añadir un nuevo derecho, tales como acceso de lectura para el

propietario del grupo, ya que youmust tener en cuenta los derechos existentes y calcular el nuevo valor numérico correspondiente. La

representación octal también se utiliza con el umask de comandos, que se utiliza para restringir siones permisiva en los archivos recién creados.

Cuando una aplicación crea un archivo, se asigna permisos indicativos, sabiendo que el sistema elimina automáticamente los derechos

definidos con umask. Entrar umask en una cáscara; verá una máscara como 0022. Esto es simplemente una representación octal de los derechos a

ser eliminado de forma sistemática (en este caso, los derechos de escritura para el grupo y otros usuarios). Si se le da un nuevo valor octal, la umask

comando modifica la máscara. Se utiliza en un archivo de la inicialización de comandos (por ejemplo, ~ /. bash_profile), que va a cambiar de

manera efectiva la máscara por defecto para sus sesiones de trabajo.

PROPINA A veces tenemos que cambiar los derechos de un árbol de archivos completo. Todos los comandos anteriores tienen un - R opción de

operar de forma recursiva en subdirectorios.


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

Capítulo 3 - Fundamentos de Linux 59


3.4.5. Obtención de información de sistema y Registros

los gratis comando muestra información sobre la memoria; libre en disco ( df) informes sobre el espacio de disco disponible en cada uno de los
discos montados en el sistema de archivos. su - h opción (por legible por humanos) convierte los tamaños en una unidad más legible (por lo
general mebibytes o gibibytes). De un modo similar, la gratis
comando admite el - metro y - sol opciones, y muestra sus datos, ya sea inmebibytes o en gibibytes, respectivamente.

PS gratis

total usado gratis buff compartida / cache disponibles


Mem: 2052944 661232 621208 10520 770504 1359916
Intercambiar: 0 0 0
PS df

sistema de archivos 1K-bloques Se utiliza% Disponible uso Montado en


udev 1014584 0 1014584 0% / dev
tmpfs 205296 8940 196.356 5% / run
/ Dev / vda1 30830588 11168116 18073328 39% /
tmpfs 1026472 456 1026016 1% / dev / shm
tmpfs 5120 0 5120 0% / run / bloqueo
tmpfs 1026472 0 1026472 0% / sys / fs / cgroup
tmpfs 205296 36 205 260 1% / run / user / 132
tmpfs 205296 24 205 272 1% / run / user / 0

los carné de identidad comando muestra la identidad del usuario que ejecuta la sesión alongwith de la lista de grupos a los que pertenecen. Dado que el

acceso a algunos archivos o dispositivos puede estar limitada a los miembros del grupo, comprobando la pertenencia al grupo disposición puede ser útil.

PS carné de identidad

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

los uname comando devuelve una sola línea que documenta el nombre del núcleo ( Linux), el nombre de host, la liberación del núcleo, la
versión del núcleo, el tipo de máquina (una cadena de la arquitectura como x86_64),
y el nombre del sistema operativo ( GNU / Linux). El resultado de este comando generalmente debe ser incluida en los informes de errores, ya
que define claramente el kernel en uso y la plataforma de hardware está ejecutando sucesivamente.

PS uname
Linux 4.9.0 kali-kali3 amd64 # 1 SMP Debian 4.9.18-1kali1 (04/04/2017) x86_64 GNU / Linux

Todos estos comandos proporcionan información en tiempo de ejecución, pero a menudo es necesario consultar los registros de ENTIENDE lo

que sucedió en su ordenador. En particular, el núcleo emite mensajes que almacena en una memoria cíclica cada vez que sucede algo

interesante (como un nuevo dispositivo USB están insertados, en su defecto una operación de disco duro, o de detección de hardware en el

arranque inicial). Se pueden recuperar los registros del kernel con el dmesg mando.

60 Kali Linux Revelado


El diario de Systemd también almacena varios registros de salida (stdout / stderr de demonios, los mensajes de registro del sistema,
registros del núcleo) y hace que sea fácil de consultar con journalctl. Sin argumentos, sólo vuelca todos los registros disponibles en forma
cronológica. Con el - r opción, se invertirá el orden de modo que newermessages se muestran primero. Con el - F opción, se imprimirá
continuamente nuevas entradas de registro a medida que se añaden a su base de datos. Los - u opción puede limitar los mensajes a los
emitidos por una unidad systemd específica (por ejemplo: journalctl -u ssh.service).

3.4.6. Descubriendo el hardware

Las exportaciones del núcleo muchos detalles sobre el hardware detectado a través de la / proc / y / sys / sistemas de archivos virtuales. Varias
herramientas resumen esos detalles. Entre ellos, lspci ( en el pciutils paquete) enumera los dispositivos PCI, lsusb ( en el usbutils paquete)
enumera los dispositivos USB, y lspcmcia ( en el pcmciautils
paquete) enumera las tarjetas PCMCIA. Estas herramientas son muy útiles para la identificación de la exactmodel de un dispositivo. Esta
identificación también permite búsquedas más precisas en la web, que a su vez, conducen a los documentos más relevantes. Tenga en
cuenta que la pciutils y usbutils paquetes ya están instalados en el sistema base, pero Kali pcmciautils debe instalarse con apto instalación
pcmciautils. Vamos a discutir más sobre la instalación y la gestión de paquetes en un capítulo posterior.

ejemplo 3.1 Ejemplo de información proporcionada por lspci y lsusb

PS lspci
[...]
02.1 controlador de pantalla:: 00 Intel Corporation Mobile 915GM / GMS / 910GML controlador de gráficos Express (rev 03) 00: puente PCI 1c.0: Intel Corporation 82801FB / FBM / FR / FW / FRW (ICH6
familia) PCI Express Puerto 1 (rev 03) 00: 1d.0 controlador USB: Intel Corporation 82801FB / FBM / FR / FW / FRW (ICH6 familia) UHCI USB # 1 (rev 03) [...]

controlador Ethernet 00.0:: 01 NetXtreme Broadcom Corporation BCM5751 Gigabit Ethernet PCI Express (rev 01) 02: 03.0 controlador de red: Intel Corporation PRO / Wireless 2200BG Conexión de red
inalámbrica (rev 05) $ lsusb

Bus 005 Device 004: 413c ID: A005 Dell Computer Corp. bus 005 del dispositivo 008: ID 413c: 9001
Dell Computer Corp. bus 005 007 Dispositivo: 045e ID: 00dd Microsoft Corp. bus 005 del dispositivo
006: ID 046d: c03d Logitech, Inc . [...]

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

Estos programas tienen un - v la opción de que las listas de informa- ción muchmore detallada (pero por lo general innecesarios). Finalmente, el lsdev

mando (en lo procinfo paquete) enumera los recursos de comunicación utilizados por los dispositivos. los lshw programa es una combinación de

los programas anteriores y muestra una larga descripción del hardware que se encuentre de forma jerárquica. Debe adjuntar su salida completa

a cualquier informe acerca de los problemas de soporte de hardware.

Capítulo 3 - Fundamentos de Linux 61


3.5. Resumen

En esta sección, tomamos un viaje relámpago del paisaje Linux. Discutimos el espacio del núcleo y el usuario, revisaron muchos

comandos shell de Linux comunes, procesos y discutimos cómo manejarlos, revisados ​los conceptos de seguridad de usuarios y grupos,

discutimos el FHS, y visitamos algunos de themost directorios y archivos comunes que se encuentran en Kali Linux. Resumen Consejos:

• Linux se utiliza a menudo para referirse a todo el sistema operativo, pero en la realidad misma Linux es el núcleo del sistema operativo
que se inicia con el cargador de arranque, que a su vez se pone en marcha por el BIOS / UEFI.

• espacio de usuario se refiere a todo lo que sucede fuera del núcleo. Entre los programas que se ejecutan en espacio de
usuario, hay muchas utilidades básicas del proyecto GNU 2, la mayoría de los cuales están destinados a ser ejecutado desde la
línea de comandos (una interfaz basada en texto que le permite introducir comandos, ejecutar ellos, y ver los resultados). Un
shell ejecuta sus comandos dentro de esa interfaz.

• Comandos comunes incluyen: pwd ( imprimir directorio de trabajo), discos compactos ( cambio de directorio), (LS o archivo de lista de
contenido del directorio), mkdir ( hacer directorio), rmdir ( eliminar el directorio), mv, rm, y

cp ( mover, eliminar o copiar el archivo o directorio, respectivamente), gato ( concatenar o mostrar archivos),

Menos mas ( Mostrar todos los archivos de una página a la vez), editor ( iniciar un editor de texto), encontrar ( localizar un archivo o directorio), gratis ( información

de la memoria de pantalla), df ( espectáculo de espacio libre en disco), carné de identidad mostrar la identidad del usuario, junto con la lista de grupos

a los que pertenecen), dmesg ( troncos opinión núcleo), y journalctl ( mostrar todos los registros).

• Puede inspeccionar el hardware en un sistema de Kali con varios comandos: lspci ( Lista PCI de- vicios), lsusb ( dispositivos de la lista
USB), y lspcmcia enumera las tarjetas PCMCIA.

• Un proceso es una instancia en ejecución de un programa, que requiere memoria para almacenar tanto el propio programa y sus
datos de funcionamiento. Usted canmanage procesos con comandos como: ps ( procesos muestran), matar ( procesos de matar), bg
( enviar al proceso de fondo), fg ( traer proceso en segundo plano a plano), y trabajos ( mostrar procesos en segundo plano).

• Los sistemas de tipo Unix son multiusuario. Apoyan a varios usuarios y grupos y permiten con- trol sobre las acciones,
basado en permisos. Puede gestionar los derechos de archivos y directorios con comandos erales SeV, incluyendo: chmod ( cambiar
permisos), chown ( cambiar propietario), y chgrp
(Grupo de cambio).

• Al igual que con otras distribuciones de Linux profesionales, Kali Linux es organizado para ser coherente con el FilesystemHierarchy
estándar ( FHS), allowingusers viene fromother Linuxdistributions a encontrar fácilmente su camino alrededor de Kali.

• Tradicionalmente, los archivos de configuración de la aplicación se almacenan en el directorio inicial, en ficheros o directorios den HID-
que comienzan con un punto (o puntos).

2 http://www.gnu.org

62 Kali Linux Revelado


Ahora que tiene una manija en los fundamentos de Linux, vamos a Kali Linux configurado y funcionando.

Capítulo 3 - Fundamentos de Linux 63


Palabras clave

Instalación La

instalación

desatendida

dispositivos ARM

Solución de problemas
Capítulo

Instalación de Kali Linux 4


Contenido

Requisitos mínimos para la instalación 66 Instalación paso a paso en un disco duro 66 Instalaciones desatendidas 91

Instalaciones ARM 94 Instalaciones de solución de problemas 95 Resumen 100


En este capítulo, nos centraremos en el proceso de instalación de Linux Kali. En primer lugar, vamos a discutir los requisitos de
instalación mınimo (sección 4.1, “Requisitos de instalación mínima” [página 66]) para asegurarse de que su sistema real o virtual está bien
configurado para manejar el tipo de instalación que va a perseguir. A continuación, vamos a ir a través de cada paso del proceso de
instalación (sección 4.2, “Instalación paso a paso en un disco duro” [página 66]) para una instalación sencilla, así como para una
instalación cura más SE- que implica un archivo encriptado totalmente sistema. También discutiremos pregconfiguación lo que permite
instalaciones desatendidas (sección 4.3, “Instalaciones desatendidas” [página 91]), proporcionando respuestas a las preguntas
predeterminadas de instalación. También le mostrará cómo instalar Kali Linux en diversas ARMdevices (sección 4.4, “instalaciones brazo”
[página 94]), que amplía los lazos capabili- de Kali mucho más allá del escritorio. Por último, vamos a mostrar lo que debe hacer en el raro
caso de un error de instalación (sección 4.5, “Instalaciones resolución de problemas” [página 95]), por lo que puede trabajar a través de la
emisión y el éxito terminar un duro instalan.

4.1. Requisitos mínimos para la instalación

Los requisitos de instalación de Kali Linux varían dependiendo de lo que desea instalar. En el extremo inferior, se puede configurar como
un servidor Kali básica de Secure Shell (SSH) sin escritorio, usando tan sólo 128 MB de RAM (se recomiendan 512 MB) y 2 GB de
espacio en disco. En el extremo superior, si se opta para instalar el escritorio GNOME por defecto y el kali-linux-completa meta-paquete,
que realmente debería apuntar a al menos 2048 MB de RAM y 20 GB de espacio en disco.

Además de la memoria RAM y disco duro, el equipo tiene que haber una CPU con el apoyo de al menos una de las
arquitecturas amd64, i386, Armel, armhf o arm64.

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

En esta sección, se supone que tiene una unidad USB o DVD de arranque (véase la sección 2.1.4, “Copia de la imagen en una clave de

DVD-ROM o USB” [página 19] para más detalles sobre cómo preparar una unidad de este tipo) y que ha arrancado desde él para iniciar el

proceso de instalación.

4.2.1. Instalación llanura

En primer lugar, vamos a echar un vistazo a una instalación estándar Kali, con un sistema de archivos sin cifrar.

El arranque e inicio del instalador

Una vez que el BIOS se ha iniciado el arranque desde la unidad USB o DVD-ROM, aparece el menú del gestor de arranque Isolinux, como se

muestra en la Figura 4.1, “Pantalla de inicio” [página 67]. En esta etapa, el núcleo de Linux aún no se ha cargado; este menú le permite elegir el

kernel para arrancar y entrar en los parámetros opcionales para ser transferidos a ella en el proceso.

66 Kali Linux Revelado


Para una instalación estándar, sólo tiene que elegir una instalación o instalación gráfica (con las teclas de flecha) y pulse el Entrar clave

para iniciar el resto del proceso de instalación. Eachmenu entrada oculta una línea de comandos de arranque específico, que puede

configurarse según sea necesario por el ing Press- Lengüeta clave antes de validar la entrada y arranque.

Figura 4.1 Pantalla de arranque

Una vez arrancado, el programa de instalación le guía paso a paso a través del proceso. Vamos a echar un vistazo a cada uno de
estos pasos en detalle. Vamos a cubrir la instalación de una ROM estándar DVD-Kali Linux; instalaciones de una mini.iso puede ser
ligeramente diferente. También abordaremos la instalación en modo gráfico, pero la única diferencia con respecto a la instalación
clásica en modo texto es la apariencia. Las versiones plantean preguntas idénticas y presentar opciones idénticas.

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


Selección del idioma

Como se muestra en la Figura 4.2, “Selección del idioma” [página 68], el programa de instalación se inicia en Inglés, pero el primer
paso le permite elegir el idioma que se utilizará para el resto del proceso de instalación. Esta elección de idioma también se utiliza
para definir las opciones predeterminadas más relevantes en etapas posteriores (en particular el tipo de teclado).

Navegar con el
Teclado Algunos pasos en el proceso
tener varias depueden
áreas que instalación requieren
obtener el foco que
(áreaingrese información.
de entrada de texto,estas pantallas
casillas de verificación, la lista de opciones,

botones Aceptar y Cancelar), y la tecla Tab le permite moverse de uno a otro. En el modo de instalación gráfica, puede

utilizar el ratón como lo haría normalmente en un entorno gráfico instalado.

Figura 4.2 Selección del idioma

68 Kali Linux Revelado


Seleccionar el país

El segundo paso (Figura 4.3, “Selección del país” [página 69]) consiste en la elección de su país. En combinación con el
lenguaje, esta información permite que el programa de instalación para ofrecer la distribución de teclado más adecuada. Esto
también influirá en la configuración de la zona horaria. En los Estados Unidos, un teclado QWERTY estándar y se sugiere la
instalación presenta una selección de zonas horarias apropiadas.

Figura 4.3 Seleccionar el país

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


Selección de la distribución de teclado

El teclado Inglés Americano propuesto corresponde a la distribución QWERTY habitual como se muestra en la Figura 4.4, “Elección de
teclado” [página 70].

Figura 4.4 Elección del teclado

La detección de hardware

En la gran mayoría de los casos, la etapa de detección de hardware es completamente automático. El instalador detecta su hardware y trata de
identificar el dispositivo de arranque utilizado con el fin de acceder a su contenido. Se carga themodules correspondientes a los distintos
componentes de hardware detectados y thenmounts el dispositivo de arranque finde para leerlo. El stepswere anterior contenida por completo
la imagen de arranque incluido en el dispositivo de arranque, un archivo de tamaño limitado y cargado intomemory por el gestor de arranque al
arrancar desde el dispositivo de arranque.

Cargando componentes

Con el contenido del dispositivo de arranque ya está disponible, las cargas de instalación de 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 tratará de identificar automáticamente la tarjeta de red y cargar el módulo correspon- diente. Si falla la
detección automática, puede seleccionar manualmente el módulo de carga. Si todo esto falla, puede cargar un módulo específico de un
dispositivo extraíble. Esta última solución es por lo general sólo es necesario si el controlador apropiado no está incluido en el kernel
estándar de Linux, pero está disponible en otros lugares, como el sitio web del fabricante.

Este stepmust absolutamente tener éxito para instalaciones en red (como los de un donewhenbooting mini.iso), ya que los
paquetes de Debian se deben cargar desde la red.

Configuración de la red

Con el fin de automatizar el proceso tanto como sea posible, el instalador intenta una configuración de trabajo NET automática
usando el protocolo de configuración dinámica de host (DHCP) (para IPv4 y IPv6) y Vecino de ICMPv6 Discovery Protocol (para
IPv6), como se muestra en la Figura 4.5, “ración Red Autoconfigu-” [página 71].

Figura 4.5 red de autoconfiguración

Si la configuración automática falla, el instalador ofrece más opciones: tratar de nuevo con una configuración normal DHCP, el intento
de configuración de DHCP declarando el nombre de themachine, o la creación de 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 entrada potencial, un nombre de máquina, y un

nombre de dominio.

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


configuración sin
DHCP Si la red
porque
localprefiere
está equipado
definir una
condirección
un servidor
IP DHCP
estáticaque
para
noladesea
máquina
utilizar
durante la instalación, se puede añadir el netcfg
/ use_dhcp = false opción al arrancar. Sólo tiene que editar la entrada del menú deseado pulsando la tecla
Tab y añadiendo la opción deseada antes de pulsar la tecla Intro.

root Contraseña

El instalador solicita una contraseña (Figura 4.6, “contraseña de root” [página 72]), ya que crea automáticamente una cuenta de raíz de
superusuario. El instalador también solicita una confirmación de la contraseña para evitar cualquier error de entrada que más tarde sería
difícil de ajustar.

Figura 4.6 root Contraseña

72 Kali Linux Revelado


El administrador
Contraseña La contraseña del
de adivinar, ya usuario
que root debe
los atacantes ser largo
se dirigen (ocho caracteres
a los ordenadores o más)
conectados e imposible
a Internet y servidores con herramientas

automatizadas, intentar iniciar sesión con contraseñas obvias. A veces los atacantes ataques de diccionario de apalancamiento,

usando muchas combinaciones de palabras y números como contraseñas. Evitar el uso de los nombres de los niños o los padres

y las fechas de nacimiento, ya que estos se adivinan fácilmente.

Estas observaciones son igualmente aplicables a otras contraseñas de usuario, pero las consecuencias de una cuenta

comprometida son menos drásticas para los usuarios sin derechos administrativos. Si se carece de inspiración, no dude en

utilizar un generador de contraseñas, tales como


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

Configuración del reloj

Si la red está disponible, el reloj interno del sistema se puede actualizar desde un servidor de hora de red col proto (NTP). Esto es
beneficioso ya que asegura marcas de tiempo en los registros serán correctas desde el primer arranque.

Si su país se extiende por varias zonas horarias, se le pedirá que seleccione la zona horaria que desea utilizar, como se muestra en la Figura
4.7, “Selección de zona horaria” [página 73].

Figura 4.7 Selección de zona horaria

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


La detección de discos y otros dispositivos

Este paso detecta automáticamente las unidades de disco duro en el que se puede instalar Kali, cada uno de los cuales serán presentados en el

siguiente paso: la partición.

particionamiento

particionamiento es un paso indispensable en la instalación, que consiste en dividir el espacio disponible en los discos duros en
secciones discretas ( particiones) según la función prevista del equipo y las particiones. El particionamiento también implica la elección de

los sistemas de archivos que se utilizarán. Todas estas decisiones tendrán una influencia en el rendimiento, la seguridad de datos y

administración de servidores. La etapa de separación es tradicionalmente difícil para los nuevos usuarios. Sin embargo, los sistemas

Linux de archivos y particiones, incluyendo la memoria virtual (o intercambiar particiones) deben definirse como que forman la dación

Fun- del sistema. Esta tarea puede llegar a ser complicado si ya ha instalado otro sistema operativo en la máquina y que desea que los

dos coexisten. En este caso, debe asegurarse de no alterar sus particiones, o si es necesario, cambiar el tamaño de themwithout causar

daños. Para accommodatemore esquemas de partición comunes (y más simples), la mayoría de los usuarios prefieren la Guiado

el modo que recomienda configuraciones de partición y proporciona sugerencias cada paso del camino. Los usuarios más
avanzados apreciarán la Manual de modo, que permite la configura- ciones más avanzadas. Cada modo comparte ciertas
capacidades.

Figura 4.8 Elección del modo de Partición

74 Kali Linux Revelado


particionado guiado La primera pantalla en la herramienta de particionamiento (Figura 4.8, “Selección de Modo Partitioning” [página
74]) presenta puntos de entrada para los modos de particionado guiado y manuales. “Guiado - utilizar todo el disco” es el esquema más
simple y común de partición, que destinará un disco entero a Kali Linux.

Los siguientes dos selecciones utilizar el Administrador de Volúmenes Lógicos (LVM) para configurar particiones lógicas (en lugar de física),

opcionalmente encriptada,. Vamos a discutir LVM y cifrado más adelante en este capítulo. Finalmente, la última opción de partición

initiatesmanual, lo que permite a redes avanzadas de particionamiento formore, como la instalación de Kali Linux dentro de otros sistemas

operativos. Vamos a discutir el modo manual en la siguiente sección.

En este ejemplo, vamos a asignar un disco duro completo a Kali, así que seleccione “Guiado - utilizar todo el disco” para proceder al siguiente
paso.

La siguiente pantalla (que se muestra en la Figura 4.9, “disco que puede utilizarse para la partición guiada” [página 75]) le permite elegir el
disco donde se va a instalar Kali seleccionando la entrada correspondiente (por ejem- plo, “disco virtual 1 (VDA ) - 32,2 GB Virtio Block
Device”). Una vez seleccionado, el particionado guiado va a continuar. Esta opción borrará todos los datos de este disco, así que elige
sabiamente.

Figura 4.9 Disco que se utiliza para la partición guiada

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


A continuación, la herramienta de particionado guiado ofrece tres métodos de partición, que corresponden a diferencias usos ent, como se

muestra en la Figura 4.10, “guiada Asignación partición” [página 76].

Figura 4.10 Asignació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 único sistema de
archivos, lo que corresponde a la raíz (”/”) guía. Este sencillo y robusto schemeworks partición perfectlywell para sistemas
personales o de usuario único. A pesar del nombre, en realidad se crearán dos particiones: la primera se ubicará el sistema
completo, el segundo la memoria virtual (o “intercambio”).

El segundo método, “independiente / casa/ partición,”es similar, pero divide la jerarquía de archivos en dos: una partición contiene el

sistema Linux (/), y el segundo contiene los directorios de inicio‘’(es decir, los datos del usuario en los archivos y subdirectorios disponibles

bajo / casa/). Una ventaja de este método es que es fácil de conservar los datos de los usuarios si tiene que volver a instalar el sistema. El

último método de partición, llamada “independiente / casa, / var, y / tmp particiones “, que es apropiado para los servidores y sistemas

multiusuario. Se divide el árbol de archivos en muchas particiones: además de la raíz (/) y cuentas de usuario (/ casa/) particiones, también

tiene particiones para datos de software del servidor (/ var /), y los archivos temporales (/ tmp /). Una ventaja de este método es que los

usuarios finales no pueden bloquear el servidor mediante el consumo de todo el espacio disponible en disco duro (sólo pueden llenarse / tmp

/ y / casa/).

Al mismo tiempo, los datos daemon (especialmente troncos) ya no pueden obstruir el resto del sistema.

76 Kali Linux Revelado


Después de elegir el tipo de partición, la instalación presenta un resumen de las selecciones en la pantalla como un mapa de
particiones (Figura 4.11, “Validación de Partición” [página 77]). Puede modificar cada partición individualmente seleccionando una
partición. Por ejemplo, se puede elegir otro sistema de archivos si el estándar ( ext4) no es apropiado. En la mayoría de los casos, sin
embargo, el reparto propuesto es razo- nable y se puede aceptar que al seleccionar “Finalizar el particionado y escribir los cambios en
el disco.” Puede ser evidente, pero elegir sabiamente ya que esto borrará el contenido del disco seleccionado.

Figura 4.11 La partición validar

particiones Manual SelectingManual en themain pantalla “discos de partición” (Figura 4.8, “Elección de PartitioningMode” [página 74])
permite una mayor flexibilidad, lo que le permite choosemore configuraciones avanzadas y específicamente dictar el propósito y el
tamaño de cada partición. Por ejemplo, este modo le permite instalar Kali junto a otros sistemas operativos, habilitar una matriz
redundante basada en software de discos independientes (RAID) para proteger los datos de fallos de disco duro, y con seguridad cambia
el tamaño de las particiones existentes sin pérdida de datos, entre otras cosas .

Reducir una de Windows


Dividir Para instalar Kali Linux
se necesita dentrodisponible,
espacio de un sistema operativo
sin usar el discoexistente
duro para(Windows o de otro
las particiones tipo), se
dedicadas a Kali. En la mayoría de casos,

esto significa la reducción de 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 Windows con bastante facilidad. Sólo tiene que elegir la

partición de Windows e introduzca su nuevo tamaño (esto funciona de la misma con FAT y NTFS).

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


Si usted es un usuario menos experimentado que trabaja en un sistema con los datos existentes, por favor tener mucho cuidado con este método

de instalación ya que es muy fácil cometer errores que podrían conducir a la pérdida de datos. La primera pantalla en el instalador manual es

realmente el mismo que el que se muestra en la Figura 4.11, “que validen Partitioning” [página 77], excepto que no incluye ninguna nuevas

particiones a crear. Es hasta usted para añadir esos.

En primer lugar, verá una opción para introducir “particionado guiado”, seguido de varias op- ciones de configuración. A continuación, el
instalador mostrará los discos disponibles, sus particiones y cualquier posible espacio libre que aún no se ha dividido. Puede seleccionar
cada elemento que aparece y pulse el Entrar clave para interactuar con él, como de costumbre.

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

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

Figura 4.12 Creación de particiones en el espacio libre

La primera entrada creará una única partición con las características (incluyendo el tamaño) de su elección. La segunda
entrada utilizará todo el espacio libre y va a crear varias particiones en ella con la ayuda del asistente de particionado guiado
(ver sección 4.2.1.12.1, “Particionado guiado” [página 75]). Esta opción es particularmente interesante cuando se desea
instalar Kali junto a otro sistema operativo, pero cuando no se desea micro-gestión de la distribución de la partición. La última
entrada mostrará los números / cabeza / cilindro del sector del inicio y del final del espacio libre. Cuando se selecciona “Crear
una nueva partición”, se entra en la carne de la secuencia de funciona- parti- manual. Después de seleccionar esta opción, se
le pedirá un tamaño de la partición. Si el disco

78 Kali Linux Revelado


utiliza la tabla de particiones anMSDOS, youwill se dará la opción de crear una partición primaria o lógica. (Lo que debe saber:. Sólo
puede tener cuatro particiones primarias butmanymore particiones lógicas La partición que contiene / bota, y por lo tanto el kernel,
debe ser uno primario, particiones lógicas residen en una partición extendida, que consume una de las cuatro particiones primarias)
A continuación, debería ver la pantalla de configuración de la partición genérica.:

Figura 4.13 Pantalla de configuración de particiones

Para resumir este paso de particionado manual, vamos a echar un vistazo a lo que puede hacer con la nueva partición. Usted puede:

• Formatearlo e incluirla en el árbol de archivos por la elección de un punto de montaje. El punto de montaje es el directorio que albergará
el contenido del sistema de archivos en la partición seleccionada. Por lo tanto, una partición montada en / casa/ está destinado

tradicionalmente para contener datos de usuario, mientras que “/” se conoce como el raíz del árbol de archivos, y por lo tanto la raíz de

la partición que en realidad será la sede del sistema de Kali.

• Utilizarlo como una partición de intercambio. Cuando el núcleo de Linux carece de suficiente memoria libre, almacenará partes inactivas de la
memoria RAM en una partición especial de intercambio en el disco duro. El subsistema de memoria virtual hace que este transparente para las

aplicaciones. Para simular la memoria adicional, Win- dows utiliza un archivo de intercambio (paginación) que está contenido directamente en un

sistema de archivos. A la inversa, Linux utiliza una partición dedicada a este fin, por lo tanto, la partición de intercambio plazo.

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


• Convertirlo en un “volumen físico para cifrado” para proteger la confidencialidad de los datos sobre ciertas particiones. Este caso
está automatizado en el particionado guiado. Véase la sección 4.2.2, “instala- ción de un sistema de archivos totalmente
encriptada” [página 85] para más información.

• Que sea un “volumen físico para LVM” (no incluidos en este libro). Tenga en cuenta que esta característica es utilizada por el
particionado guiado al configurar particiones cifradas.

• Utilizarlo como un dispositivo RAID (no incluidos en este libro).

• Optar por no utilizar la partición, y se deja sin cambios.

Cuando haya terminado, puede volver a salir de la partición manual seleccionando la opción “Deshacer los cambios realizados a las particiones” o

escribir sus cambios en el disco mediante la opción “Finalizar el particionado y escribir los cambios al disco” de la pantalla de instalación manual

(Figura 4.11, “Validación de Partición” [página 77]).

Copiando la imagen en vivo

El siguiente paso, que no requiere ninguna interacción del usuario, copia el contenido de la imagen en directo al sistema de archivos de destino,

como se muestra en la Figura 4.14, “Copia de los datos de la imagen en vivo” [página 80].

Figura 4.14 Copiar los datos de la imagen en vivo

80 Kali Linux Revelado


Configuración del gestor de paquetes ( apto)

Con el fin de poder instalar software adicional, necesidades susceptibles de ser configurados y toldwhere para encontrar paquetes
Debian. En Kali, este paso es en su mayoría no interactivo como forzamos el espejo para ser http.kali. org. Usted sólo tiene que
confirmar si desea utilizar este espejo (Figura 4.15, “una réplica en red?” [Página 81]). Si no lo utiliza, usted no será capaz de instalar
paquetes complementarios con
apto a menos que se configure un repositorio de paquetes más tarde.

Figura 4.15 Una réplica en red?

Si desea utilizar una réplica local en lugar de http.kali.org, se puede pasar su nombre en la línea de comandos del núcleo (en el
arranque) con una sintaxis como esta: espejo / http / hostname = my.own.mirror.

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


Por último, el programa propone utilizar una proxy HTTP como se muestra en la Figura 4.16, “Use un Proxy HTTP” [página 82]. AnHTTP
proxy es un servidor que reenvía las peticiones HTTP para usuarios de la red. A veces ayuda a acelerar las descargas al mantener una
copia de los archivos que se han transferido a través de ella (se habla entonces de un proxy de caché). En algunos casos, es el único
medio de acceder a un servidor web externo; en tales casos el installerwill sólo será capaz de descargar theDebianpackages si
youproperly llenar este campo durante la instalación. Si usted no proporciona una dirección de proxy, el instalador intentará conectarse
directamente a Internet.

Figura 4.16 Utilizar un proxy HTTP

A continuación, el Packages.xz y Sources.xz archivos se descargan automáticamente para actualizar la lista de paquetes reconocidos por
APT.

82 Kali Linux Revelado


Instalación del gestor de arranque GRUB

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

Debido a su superioridad técnica, GRUB es el gestor de arranque por defecto instalado por Debian: 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 núcleo, 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 maestro de arranque (MBR) a menos que

haya otro sistema Linux instalado que sabe cómo arrancar Kali Linux. Como se observa en la Figura 4.17, “Instalar el GRUBBoot Loader en

un disco duro” [página 83], la modificación del MBR hará que los sistemas operativos no reconocidos que dependen de ella que no arranca

hasta que corrija la configuración de GRUB.

Figura 4.17 Instalar el gestor de arranque GRUB en un disco duro

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


En este paso (Figura 4.18, “Dispositivo para la instalación del cargador de arranque” [página 84]), se debe seleccionar la que GRUB dispositivo

se instalará en. Esta debe ser la unidad de arranque actual.

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

Por defecto, el menú de arranque propuesto por GRUB muestra todos los núcleos de Linux instalados, así como cualesquiera otros sistemas

operativos que fueron detectados. Es por eso que debe aceptar la oferta para instalarlo en el registro maestro de arranque. Mantener las

versiones más antiguas del núcleo conserva la capacidad de arrancar el sistema si el núcleo más recientemente instalada es defectuoso o mal

adaptada al hardware. por lo tanto le recomendamos que mantener algunas versiones antiguas del kernel instalados.

Cuidado: El cargador de arranque

y arranque dual Esta fase del proceso


instalado de instalación
en el equipo detecta los sistemas
y añadirá automáticamente operativos
las entradas que ya están
correspondientes en el menú de arranque. Sin embargo,

no todos los programas de instalación hacen esto. En particular, si se instala (o reinstala) de Windows a partir de

entonces, se borrará el cargador de arranque. Kali todavía estará en el disco duro, pero ya no será accesible fromthe

menú de arranque. A continuación, tendría que iniciar el instalador con el Kali rescue / enable = true

parámetro en la línea de comandos del kernel para volver a instalar el cargador de arranque. Esta operación se describe en

detalle en el manual de instalación Debian.

mi http://www.debian.org/releases/stable/amd64/ch08s07.html

84 Kali Linux Revelado


Finalización de la instalación y reinicio

Ahora que se complete la instalación, el programa le pide que elimine el DVD-ROM del lector (o desconecte la unidad USB) para
que el equipo pueda arrancar en su nuevo sistema de Kali después de que el instalador reinicia el sistema (Figura 4.19, “Instalación
completa ”[página 85]). Por último, el instalador hacer algún trabajo de limpieza, como la eliminación de paquetes que son
específicos de creat- ing del entorno real.

Figura 4.19 Instalación completa

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

Para garantizar la confidencialidad de sus datos, puede configurar particiones cifradas. Esto de protegerlo contra sus datos si su ordenador
portátil o un disco duro de pérdida o robo. La herramienta de particionamiento le puede ayudar en este proceso, tanto en modo guiado y
manual.

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


El modo de particionado guiado combinará el uso de dos tecnologías: Luks (LUKS) para el cifrado de particiones y administración de
volúmenes lógicos (LVM) para la gestión de almacenamiento de forma dinámica. Ambas características también se pueden instalar y
configurar a través del modo de particionamiento manual.

Introducción a LVM

Vamos a discutir primero LVM. Utilizando la terminología LVM, una partición virtual es un volumen lógico, que es parte de una grupo de
volúmenes, o una asociación de varios volúmenes físicos. Los volúmenes físicos son particiones reales (o particiones virtuales exportados
por otras abstracciones, como un dispositivo de software RAID o una partición cifrada).

Con su falta de distinción entre particiones lógicas “” “física” y, LVM permite crear particiones “virtuales” que abarcan varios discos. Los
beneficios son dobles: el tamaño de las particiones ya no está limitado por los discos individuales, sino por su volumen acumulado, y se
puede cambiar el tamaño de las particiones existentes en cualquier momento, como después de añadir 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 se
correlaciona LVM. La adición de un nuevo disco provocará la creación de un nuevo volumen físico que proporciona nuevos bloques que se
pueden asociar a cualquier grupo de volúmenes. Todas las particiones en el grupo de volúmenes a continuación, puede aprovechar al
máximo el espacio asignado adicional.

Introducción a LUKS

Toprotect sus datos, puede agregar capa anencryption underneathyour elección archivo systemof. Linux (y más particularmente la dm-crypt
conductor) utiliza el mapeador de dispositivos para crear la partición virtual (cuyos contenidos están protegidos), basado en una
partición subyacente que almacenará los datos de forma encriptada (gracias a LUKS). LUKS estandariza el almacenamiento de los
datos cifrados, así como meta-información que indica los algoritmos de cifrado utilizados.

Partición de intercambio cifrada Cuando se utiliza una partición cifrada, la clave de cifrado se almacena en la memoria (RAM),
y cuando hibernación, un ordenador portátil va a copiar la clave, junto con el resto del contenido de la memoria RAM, a la partición de

intercambio del disco duro. Dado que cualquier persona con acceso al archivo de intercambio (incluyendo un técnico o un ladrón)

podría extraer la clave y descifrar sus datos, el intercambio de filemust ser protegida con cifrado.

Debido a esto, el instalador le avisará si intenta utilizar una partición cifrada junto a una partición de
intercambio sin cifrar.

Para crear particiones cifradas

El proceso de instalación para LVM cifrado es lo mismo que una instalación estándar a excepción de la etapa de separación
(Figura 4.20, “Particionamiento guiado con LVM cifrado” [página 87]) donde

86 Kali Linux Revelado


en su lugar seleccione “Guiado -. utilizar todo el disco y configurar LVM cifrado” El resultado neto será un sistema que no
se puede arrancar o se accede hasta que se proporcione la frase de cifrado. Esto cifrar y proteger los datos del disco.

Figura 4.20 Particionado guiado con LVM cifrado

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

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


Figura 4.21 Confirmar cambios en la tabla de particiones

Esta nueva partición es entonces inicializa con datos aleatorios, como se muestra en la Figura 4.22, “borrar datos en partición
cifrada” [página 88]. Esto hace que las áreas que contienen datos idénticos a los de las áreas no utilizadas, por lo que es más difícil
de detectar, y, posteriormente, ataque, los datos cifrados.

Figura 4.22 Borrado de datos de partición cifrada

88 Kali Linux Revelado


A continuación, el instalador le pide que introduzca una frase de cifrado (Figura 4.23, “introduzca su contraseña ción Encryp-”
[página 89]). Con el fin de ver el contenido de la partición cifrada, tendrá que introducir esta contraseña cada vez que reinicie el
sistema. Tenga en cuenta la advertencia en el instalador: su systemwill cifrada sólo será tan fuerte como esta frase de contraseña.

Figura 4.23 Introduzca su contraseña de cifrado

La herramienta de particionamiento ahora tiene acceso a una nueva partición virtual cuyos contenidos se almacenan en- encriptado en la
partición física subyacente. Desde LVM utiliza esta nueva partición como un volumen físico, puede proteger varias particiones (o
volúmenes lógicos LVM) con la misma clave de cifrado, incluyendo la partición de intercambio (véase el recuadro “partición de intercambio
cifrada” [página 86]). Aquí, LVM no se utiliza para hacer más fácil para ampliar el tamaño de almacenamiento, pero sólo para la
conveniencia de la vía indirecta que permite dividir una partición cifrada en varios volúmenes lógicos.

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


Final de la Partición guiado con LVM cifrado

A continuación, se muestra el esquema de partición resultante (Figura 4.24, “Validación de particionamiento para los En- Crypted instalación LVM” [página

90]) para que pueda ajustar la configuración según sea necesario.

Figura 4.24 La validación de creación de particiones para la instalación LVM cifrado

90 Kali Linux Revelado


Finalmente, después de la validación de la configuración de las particiones, la herramienta solicita la confirmación para escribir los cambios en los discos, como se

muestra en la Figura 4.25, “Confirmar que las particiones con formato” [página 91].

Figura 4.25 Confirmar que las particiones formateadas

Por último, el installationprocess continúa como de costumbre como se documenta en la sección 4.2.1.14, “Configuración del gestor de paquetes ( apto)

”[Página 81].

4.3. Instalaciones desatendidas

Los instaladores de Debian y Kali son muy modular: en el nivel básico, no son más que ejecutando muchos guiones (envasados ​en
pequeños paquetes llamados udeb-para μdeb o micro-deb) uno tras otro. Cada guión se basa en debconf ( véase “The debconf los
parámetros de instalación de la herramienta”[página 214]), que interactúa con usted, el usuario, y almacena. Debido a esto, el instalador
también se puede automatizar a través

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


preconfiguración de debconf, una función que le permite proporcionar respuestas a desatendidos ciones installationques-.

4.3.1. preconfiguración Respuestas

Hay varias formas de preconfigurar respuestas a la instalación. Cada método tiene sus propias ventajas y desventajas. Dependiendo del
momento en el que ocurre la preconfiguración, las preguntas que se pueden sembrar pre varían.

Con parámetros de inicio

Puede preconfigurar cualquier pregunta instalador con los parámetros de arranque que terminan en la línea de comandos del kernel, accesible a

través de / proc / cmdline. Algunos gestores de arranque le permitirá editar estos parámetros de forma interactiva (que es práctico para propósitos

de prueba), pero si usted desea hacer los cambios persis- tienda de campaña, que tendrá que modificar la configuración del gestor de arranque.

Usted candirectly utiliza el identificador completo de las preguntas de debconf (como debian-installer / language = es) o puede utilizar abreviaturas

para las preguntas más comunes (como language = es o hostname = Duke). Vea la lista completa 1 de alias en el manual de instalación de Debian.

No hay ninguna restricción sobre la que preguntas puede preconfigurar los parámetros de arranque ya están disponibles desde el inicio

del proceso de instalación y se procesan muy temprano. Sin embargo, el número de parámetros de arranque está limitado a 32 y un

número de los que ya se utiliza de forma predeterminada. También es importante darse cuenta de que el cambio de la configuración del

gestor de arranque puede ser no trivial a veces. En la sección 9.3, “Imágenes Edificio CustomKali ISO vivas” [página 236] youwill también

aprenden tomodify la configuración Isolinux al generar su propia imagen ISO Kali.

Con un fichero de preconfiguración en el initrd

Puede añadir un archivo llamado preseed.cfg en la raíz del instalador de initrd ( este es el initrdwhich se utiliza para iniciar el instalador). Por

lo general, esto requiere la reconstrucción del paquete fuente del instalador de Debian para generar nuevas versiones del initrd. Sin

embargo, live-build ofrece una manera conveniente de hacer esto, que se detalla en la sección 9.3, “Imágenes Custom Building Kali ISO

vivas” [página 236]. Este método también no tiene ninguna restricción en las preguntas que se pueden preconfigurar se ubica el fichero

está disponible inmediatamente después del arranque. En Kali, ya hacer uso de esta característica para personalizar el comportamiento del

instalador oficial de Debian.

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

92 Kali Linux Revelado


Con un fichero de preconfiguración en el medio de arranque

Se puede añadir un fichero de preconfiguración en el medio de arranque (CD o llave USB); preconfiguración entonces sucede tan pronto como se

monta los medios de comunicación, lo que significa justo después de las preguntas sobre el lenguaje y la disposición del teclado. los preseed / archivo parámetro

de arranque puede ser utilizado para indicar la ubicación del archivo de preconfiguración (por ejemplo, / cdrom / preseed.cfg al instalar froma CD-ROM, o

/ hd-media / preseed.cfg

al instalar desde una llave USB).

Youmaynot preconfigurar respuestas a las opciones de idioma y país que el archivo de preconfiguración se carga posteriormente en el proceso,

una vez que los controladores de hardware se han cargado. En el lado positivo, live-build

hace que sea fácil de poner un archivo complementario en las imágenes ISO generados (véase la sección 9.3, “Imágenes Custom Building Kali ISO

vivas” [página 236]).

Con un fichero de preconfiguración cargado de la Red

Usted puede hacer un fichero de preconfiguración disponible en la red a través de un servidor web y decirle al instalador para descargar ese fichero de

preconfiguración añadiendo el parámetro de arranque preseed / url = http: // servidor/ preseed.cfg

(O mediante el uso de la url alias).

Sin embargo, cuando se utiliza este método, recuerde que la red debe estar configurado. Esto significa que las preguntas de debconf
relacionados con la red (en particular, el nombre de host y el nombre de dominio) y todas las preguntas anteriores (como el idioma y el país)
no pueden ser preconfigurada con este método. Este método se utiliza más a menudo en combinación con los parámetros de arranque de
preconfiguración esas preguntas específicas.

Este método de preconfiguración es la más flexible, como se puede cambiar la configuración de la instalación sin necesidad de cambiar el
medio de instalación.

El retraso en el lenguaje, Para superar la limitación de no poder para preconfigurar el idioma, el país y preguntas de teclado, puede
País, teclado añadir el parámetro de arranque auto-install / enable = true
preguntas (o auto = true). Con esta opción las preguntas se harán más adelante en el proceso, después de que la red se ha

configurado y por lo tanto después de la descarga del fichero de preconfiguración. La desventaja es que los primeros

pasos (en particular de configuración de red) siempre van a ocurrir en Inglés y si hay errores que el usuario tendrá que

trabajar a través de las pantallas en inglés (con un teclado QWERTY configurado).

4.3.2. La creación de un fichero de preconfiguración

Un fichero de preconfiguración es un archivo de texto sin formato en el que cada línea contiene la respuesta a una pregunta Debconf. Una línea se divide en

cuatro campos separados por espacios en blanco (espacios o tabuladores). Por ejemplo, di espejo / suite cadena de kali-rodadura:

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


• El primer campo indica el titular de la cuestión. Por ejemplo, “di” se utiliza para cuestiones relacionadas con el instalador.
También puede ver el nombre del paquete, para las preguntas procedentes de los paquetes de De- bian (como en este ejemplo: atftpd
atftpd / use_inetd falsa boolean).

• El segundo campo es un identificador para la pregunta.

• El tercer campo indica el tipo de pregunta.

• El cuarto y último campo contiene el valor de la respuesta esperada. Tenga en cuenta que debe ser separada de la tercera
campo con un solo espacio; los caracteres de espacio adicionales son parte consi- Ered del valor.

La forma más sencilla de escribir un fichero de preconfiguración es la instalación de un sistema con la mano. Entonces el debconf-GetSelections
--installer comando proporcionará las respuestas que proporcionó al instalador. Puede obtener respuestas dirigidas a otros paquetes con debconf-get-selecc

Sin embargo, una solución más limpia es escribir el fichero de preconfiguración con la mano, a partir de un ejemplo y luego ir a través de
la documentación. Con este enfoque, sólo preguntas donde la respuesta por defecto se necesita omitir pueden preconfiguren.
Proporcionar la prioridad = crítico parámetro de arranque para instruir Deb- conf para solamente hacer preguntas críticas, y utilizar la
respuesta por defecto para los demás.

Guía de instalación
Apéndice La guíaelde
usoinstalación
de un ficherode
de Debian, disponible
preconfiguración en un en línea, También
apéndice. incluye incluye
documentación detallada
un archivo de ejemplo detallado y comentado, que puede

servir como base para las personalizaciones locales.

mi https://www.debian.org/releases/stable/amd64/apb.html

mi https://www.debian.org/releases/stable/example-preseed.txt

Tenga en cuenta sin embargo, que los enlaces de arriba documentan la versión estable de Debian y que Kali utiliza la
versión de prueba de modo que puede encontrar ligeras diferencias. También puede consultar el manual de instalación
alojada en la página web del proyecto Debian-instalador. Se puede estar más al día.

mi http://di.alioth.debian.org/manual/en.amd64/apb.html

4.4. Instalaciones ARM

Kali Linux se ejecuta en una amplia variedad de dispositivos basados ​en ARM (ordenadores portátiles, ordenadores integrados, y tablas de oper

desa-, por ejemplo) pero no se puede utilizar el instalador tradicional Kali en estos dispositivos ya que a menudo tienen requisitos específicos en

términos de kernel o de arranque configuración del cargador. Para que esos dispositivos sean más accesibles a los usuarios Kali, ofensivo Seguridad

desarrollado guiones para construir imágenes de disco 2 están listos para su uso con diversos dispositivos ARM. Proporcionan esas imágenes para su

descarga en su página web:

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

2 https://github.com/offensive-security/kali-arm-build-scripts

94 Kali Linux Revelado


Dado que estas imágenes están disponibles, su tarea de instalar Kali en una ARMdevice se simplifica enormemente. Aquí están los pasos básicos:

1. Descargar la imagen para su dispositivo ARM y asegúrese de que la suma de comprobación coincide con la proporcionada en el sitio web

(véase la sección 2.1.3, “Comprobar la integridad y autenticidad” [página 16] para obtener explicaciones sobre cómo hacerlo). Tenga en

cuenta que las imágenes son por lo general xz comprimido; asegúrese de descomprimir themwith unxz.

2. Dependiendo de la ranura de expansión de almacenamiento disponible en el dispositivo ARM específico, adquirir una tarjeta SD, una tarjeta micro

SD, o módulo eMMC que tiene una capacidad de al menos 8 GB.

3. Copiar la imagen descargada en el dispositivo de almacenamiento con dd. Esto es similar al proceso de
copiar una imagen ISO en una memoria USB (véase la sección 2.1.4, “Copia de la imagen en una clave de DVD-ROM o USB” [página 19]).

# dd if = kali-image.img of = / dev / alguna cosa bs = 512k

4. Enchufe la tarjeta SD / eMMC en el dispositivo ARM.

5. Arranque el ARMdevice y acceder a él ( usuario “root”, contraseña “Toor”). Si usted no tiene una pantalla
conectada, entonces tendrá que averiguar la dirección IP que ha sido asignada 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 los contratos vigentes. Si usted no
tiene nada de eso, usar un sniffer para buscar el tráfico concesión DHCP.

6. Cambiar la contraseña de root y generar nuevas claves SSH, especialmente si el dispositivo va a correr de forma
permanente en una red pública! Los pasos son relativamente sencillos, ver “la generación de nuevas claves SSH host”
[página 111].

7. Disfrute de su nuevo dispositivo ARM corriendo Kali Linux!

Casos especiales y documentación más detallada Estas instrucciones son genéricos y mientras trabajan para la mayoría de los dispositivos, siempre hay
excepciones. Por ejemplo, Chromebooks requieren modo desarrollador y otros dispositivos requieren pulsar una tecla

especial para poder arrancar desde una unidad externa. Dado que los dispositivos ARM se añaden con relativa frecuencia y

sus especificaciones son tan dinámico, que no cubriremos instrucciones específicas para diversos dispositivos ARM aquí. En

su lugar, consulte la sección dedicada “Kali en ARM” de la página web de documentación Kali para obtener información

acerca de cada dispositivo ARM apoyado por la ofensiva de seguridad:

mi http://docs.kali.org/category/kali-on-arm

4.5. Instalaciones de solución de problemas

El instalador es bastante fiable, pero puede encontrarse con errores o hacer frente a los problemas externos tales como: problemas trabajaran
en colaboración, malos espejos, y suficiente espacio en disco. Debido a esto, es muy útil para poder solucionar los problemas que aparecen en
el proceso de instalación.

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


Cuando el instalador falla, se le mostrará una pantalla en lugar inútil como la que se muestra en la Fig- Ure 4.26, “Instalación
Paso Error” [página 96].

Figura 4.26 Instalación Paso Falló

En este punto, es bueno saber que el instalador hace uso de varias consolas virtuales: la pantalla principal que se ve está en
marcha, ya sea en el quinto consola (para el instalador gráfico, CTRL + Shift + F5) o en la primera consola ( para el instalador de
texto, Ctrl + Shift + F1). En ambos casos, la cuarta consola (Ctrl + Shift + F4) muestra registros de lo que está sucediendo y por
lo general se puede ver un mensaje de error más útil allí, como el de la Figura 4.27, “La pantalla de registro del instalador”
[página 97], lo que revela que el instalador haya quedado sin espacio en disco.

96 Kali Linux Revelado


Figura 4.27 La pantalla de registro del instalador

Las consolas segundo y tercero (Ctrl + Shift + F2 y CTRL + Shift + F3, respectivamente) conchas de acogida que se pueden utilizar para investigar la

situación actual en más detalle. La mayoría de las herramientas de línea de comandos son proporcionados por BusyBox por lo que el conjunto de

características es bastante limitado, pero es suficiente para averiguar la mayor parte de los problemas que es probable que encuentre.

¿Qué puede hacerse en el


instalador de Shell Ustedconjunto.
puede inspeccionar y modificar
Estos comandos la base de datos
son especialmente de debconf
convenientes paracon
probar y debconf-
los valores
debconf-get de preconfiguración. Puede inspeccionar

cualquier archivo (como el registro de instalación completa disponible en / var / log / syslog) con gato o Más. Puede editar

cualquier archivo con nano, incluyendo todos los archivos que se instala en el sistema. El sistema de archivos raíz será

montado en / objetivo una vez que la etapa de separación del proceso de instalación se ha completado. Una vez que el

acceso a la red se ha configurado, puede utilizar wget y nc ( netcat) para recuperar y exportar datos en la red.

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


Una vez que se hace clic en Continuar en la pantalla principal fallo de instalación (Figura 4.26, “Instalación Paso Failed” [página 96]), se
le devolverá a la pantalla que va normalmente no ver (el menú principal se muestra en la Figura 4.28, “Menú Principal del
instalador”[página 98]), que le permite lanzar un paso de la instalación tras otra. Si se las arregló para solucionar el problema a través
del acceso a una consola (felicitaciones!), Entonces usted puede volver a intentar el paso que ha fallado.

Figura 4.28 Menú principal del instalador

98 Kali Linux Revelado


Si no puede resolver el problema, es posible que desee presentar un informe de error. El informe debe incluir entonces los registros del

instalador, que se puede recuperar con la función de “informe de fallos” del menú principal. Ofrece múltiples formas de exportar los registros,

como se muestra en la Figura 4.29, “Guardar registros de depuración (1/2)” [página 99].

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

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


El método más conveniente, y el que se recomienda, es dejar que el instalador se inicia un servidor de alojamiento web los archivos de
registro (Figura 4.30, “Guardar registros de depuración (2/2)” [página 100]). A continuación, puede lanzar un navegador desde otra
computadora en la misma red y descargar todos los archivos de registro y los tiros screen- que se han tomado con el botón de pantalla
disponibles en cada pantalla.

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

4.6. Resumen

En este capítulo, nos centramos en el proceso de instalación de Linux Kali. Discutimos los requisitos de instalación de mini-madre Kali

Linux, el proceso de instalación de siste- mas de archivos estándar y totalmente encriptados, preconfiguración, que permite a las

instalaciones desatendidas, cómo instalar Kali Linux en diversos dispositivos ARM, y qué hacer en el caso raro de una error en la

instalación. Resumen Consejos:

100 Kali Linux Revelado


• Los requisitos de instalación de Kali Linux varían desde un servidor SSH básica sin escritorio, tan poco como 128 MB de
RAM (512 MB recomendado) y espacio en disco 2 GB, a la gama más alta Kali-Linux-completa meta-paquete, con al
menos 2048 MB de RAM y 20 GB de espacio en disco. Además, el equipo debe tener una CPU de apoyo de al menos una
de las arquitecturas amd64, i386, Armel, armhf o arm64.

• Kali puede ser fácilmente instalado como sistema operativo principal, junto con otros siste- mas que operan a través de la
modificación de particiones y gestor de arranque, o como una máquina virtual.

• Para garantizar la confidencialidad de sus datos, puede configurar particiones cifradas. Esto protegerá sus datos si su
ordenador portátil o disco duro se pierde o es robado.

• El instalador también puede ser automatizado a través de la preconfiguración de debconf, una función que le permite proporcionar respuestas a
las preguntas sin supervisión de instalación.

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

de arranque, con un fichero de preconfiguración en el initrd, con un fichero de preconfiguración en el medio de arranque, o con un fichero de

preconfiguración de la red.

• Kali Linux se ejecuta en una amplia variedad de dispositivos basados ​en ARM, tales como ordenadores portátiles, ERS computa-
embebidos, y placas de desarrollo. ARM instalación es bastante sencillo. Descargar la imagen adecuada, grabarla en una tarjeta SD,

una unidad USB o un controlador embebido multimedia (eMMC) mo- ULE, conecte todo, arranque el ARMdevice, encontrar su

dispositivo en la red, inicie sesión y cambiar el SSH contraseña y host SSH llaves.

• Puede depurar instalaciones fallidas con las consolas virtuales (accesible con las teclas Shift y función CTRL +), debconf-get
y debconf-set comandos, la lectura de la / var / log / syslog
archivo de registro o mediante el envío de un informe de error con archivos de registro retrievedwith función “de informe de fallos” del instalador.

Ahora que hemos discutido los fundamentos de Linux y la instalación Kali Linux, vamos a hablar de configu- ración para que pueda empezar a adaptar

Kali para satisfacer sus necesidades.

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


Palabras clave

Los usuarios y

los grupos de la red

Servicios
Apache
PostgreSQL
SSH
Capítulo

Configuración de Kali Linux 5


Contenido

Configuración de la red 104 Gestión de usuarios y grupos Unix Unix 107 Configuración de los servicios 109

Gestión de Servicios 117 Resumen 119


En este capítulo, vamos a echar un vistazo a varias formas de configurar Kali Linux. En primer lugar, en la sec- ción 5.1,
“Configuración de la red” [página 104], le mostrará cómo configurar los parámetros de red utilizando un entorno gráfico y la línea de
comandos. En la sección 5.2, “Gestión de usuarios y grupos Unix Unix” [página 107], vamos a hablar acerca de los usuarios y grupos,
que muestra cómo CRE comió y modificar cuentas de usuario, contraseñas conjunto, deshabilitar cuentas y gestionar grupos. Por
último, vamos a hablar de los servicios en la sección 5.3, “Configuración de servicios” [página 109] y explicar cómo configurar y
mantener los servicios genéricos y también se centran en tres servicios muy importantes y específicas: SSH, PostgreSQL, y Apache.

5.1. Configuración de la red

5.1.1. En el escritorio con Gerente de Redes

En una instalación típica de escritorio, tendrá Gerente de Redes ya instalado y se puede Controlled y configurado centro de control
de throughGNOME ya través de la parte superior-rightmenu como se muestra en la Figura 5.1, “Pantalla de configuración de red”
[página 104].

Figura 5.1 Pantalla de configuración de red

104 Kali Linux Revelado


La configuración de red por defecto se basa en DHCP para obtener una dirección IP, servidores DNS y de manera Gate-, pero se puede utilizar

el icono de engranaje en la esquina inferior derecha para alterar la configuración de muchas maneras (por ejemplo: establecer la dirección MAC,

cambiar a una configuración estática, habilitar o deshabilitar IPv6, y añadir rutas adicionales). Se pueden crear perfiles de guardar múltiples

configuraciones de red cableada y cambiar fácilmente entre ellos. Para las redes inalámbricas, sus valores están vinculados automáticamente a

su identificador público (SSID).

NetworkManager también se encarga de las conexiones de banda ancha móvil (Red de área amplia inalámbrica WWAN) y por los módems
que usan el 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 ginebras plu- dedicados: SSH, OpenVPN, VPNC de Cisco, PPTP, strongSwan. Revisar
la gerente de Redes-* paquetes; la mayoría de ellos no están instalados por defecto. Fíjese en que necesita los paquetes con el sufijo - gnomo

para poder configurar a través de la interfaz gráfica de usuario.

5.1.2. En la línea de comandos con ifupdown

Alternativamente, cuando se prefiere no usar (o no tienen acceso a) un escritorio gráfico, puede configurar la red con el ya
instalado ifupdown paquete, que incluye la ifup y
ifdown herramientas. Estas herramientas leen las definiciones de la / etc / network / interfaces archivo de configuración y están en el
corazón de la / etc / init.d / networking script de inicio que configura la red en el arranque.

Eachnetwork devicemanaged por ifupdown puede ser desconfigurado en cualquier Tiempo librecon ifdown dispositivo de red. A
continuación, puede modificar / etc / network / interfaces y llevar la red de copia de seguridad (con la nueva configuración) con ifup dispositivo
de red.

Vamos a echar un vistazo atwhatwe canput en el archivo de configuración de ifupdown. Hay twomaindirectives:
auto dispositivo de red, que cuenta ifupdown para configurar automáticamente la interfaz de red una vez que esté disponible, y Yo afronto inet
red-dispositivo / tipo inet6 para configurar una interfaz dada. Por ejemplo, una configuración de DHCP sin formato es el siguiente:

Lo automática

del iface lo inet loopback

eth0 automático

del iface eth0 inet dhcp

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

Capítulo 5 - Configuración de Kali Linux 105


eth0 automático

del iface eth0 inet static


dirección 192.168.0.3 máscara de red
255.255.255.0 broadcast 192.168.0.255
192.168.0.0 192.168.0.1 red de pasarela

Para las interfaces inalámbricas, debe tener la wpasupplicant paquete (incluido en Kali por defecto), que ofrece muchas wpa-
* opciones que se pueden utilizar en / etc / network / interfaces. Mira esto / usr / share / doc / wpasupplicant / README.Debian.gz para
ejemplos y explicaciones. Las opciones más comunes son wpa-SSID ( que define el nombre de la red inalámbrica para
unirse a) y
PSK WPA ( que define la frase de contraseña o la tecla de la protección de la red).

del iface wlan0 inet dhcp


wpa-SSID MyNetwork WPA-PSK
plaintextsecret

5.1.3. En la línea de comandos con systemd-networkd

Mientras ifupdown es la herramienta histórico utilizado por Debian, y aunque todavía es el valor por defecto para el servidor u otras
instalaciones mínimas, existe una herramienta nueva pena considerar: systemd-networkd. Su inte- gración con el systemd init
systemmakes que es una opción muy atractiva. No es específica de Debian distribuciones basadas (en contra de ifupdown) y ha sido
diseñado para ser muy pequeña, eficiente y relativamente fácil de configurar si se entiende la sintaxis de los archivos de la unidad
systemd. Esta es una opción especialmente atractiva si se tiene en cuenta Gerente de Redes hinchado y difícil de configurar. configura systemd-network
mediante la colocación de . red archivos en el directorio / etc / systemd / red / rectoría di-. Como alternativa, puede usar / lib / systemd / red / para
los archivos empaquetados o / RUN / systemd / red / para los archivos generados en tiempo de ejecución. El formato de estos archivos
está documentado en systemd. red (5). los Partido sección indica las interfaces de red de la configuración se aplica. Puede especificar la
interfaz de muchas maneras, incluso por el control de acceso al medio (MAC) o un dispositivo tipo. los Red sección define la
configuración de red.

Ejemplo 5.1 Configuración DHCP basados ​en / etc / systemd / red / 80-dhcp.network

[Partido]

Nombre = es *

[Red] DHCP =
yes

106 Kali Linux Revelado


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

[Partido] Name =
enp2s0

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

Tenga en cuenta que sistema de networkd está desactivado por defecto, así que si quieres usarlo, debe activarlo. También depende de systemd
de resolución temporal para la integración adecuada de la resolución de DNS, que a su vez re- manos de papel que sustituya / etc / resolv.conf con

un enlace simbólico a / run / sistema / resolver / resolv.conf,


que es administrado por Resuelta systemd.

# systemctl permitir systemd-networkd


# systemctl permitir systemd de resolución temporal
# systemctl comenzar systemd-networkd
# systemctl comenzar systemd resuelta
# En -sf /run/system/resolve/resolv.conf /etc/resolv.conf

A pesar de que systemd-networkd adolece de algunas limitaciones, como la falta de apoyo integrado para redes inalámbricas, puede
confiar en una externa preexistente wpa_supplicant configuración para soporte inalámbrico. Sin embargo, es particularmente útil en
envases y las máquinas virtuales y fue desarrollado originalmente para entornos inwhich configuración de red de un recipiente
dependido de configuración de red de su huésped. En este escenario, systemd-networkd hace que sea más fácil de manejar ambos
lados de una manera consistente al mismo tiempo el apoyo a todo tipo de dispositivos de red virtual que puede ser necesario en
este tipo de escenario (ver systemd.netdev (5)).

5.2. Gestión de usuarios y grupos Unix Unix

La base de datos de usuarios y grupos Unix consiste en los archivos de texto / etc / passwd ( lista de usuarios),
/ Etc / shadow ( contraseñas cifradas de los usuarios), / etc / group ( lista de grupos), y / etc / gshadow
(contraseñas cifradas de los grupos). Sus formatos están documentados en passwd (5), sombra (5), el grupo (5), y gshadow (5) respectivamente.
Aunque estos archivos se pueden editar manualmente con herramientas como
vipw y vigr, hay herramientas de alto nivel para llevar a cabo las operaciones más comunes.

5.2.1. Creación de cuentas de usuario

Aunque Kali más a menudo se runwhile autentificado como usuario root, youmay a menudo necesitan para crear cuentas de usuario sin
privilegios, por diversas razones, sobre todo si está utilizando Kali como primaria

Capítulo 5 - Configuración de Kali Linux 107


sistema operativo. La forma más típica para añadir un usuario es con el agregar usuario de comandos, que toma un argumento
requerido: el nombre de usuario para el nuevo usuario que desea crear. los agregar usuario comando hace algunas preguntas antes
de crear la cuenta, pero su uso es bastante sencillo. Su archivo de configuración, / etc / adduser.conf, incluye muchas configuraciones
interesantes. Puede, por ejemplo, definir el rango de identificadores de usuario (UID) que se pueden utilizar, dictan si los usuarios
comparten un grupo común o no, conchas definir por defecto, y más.

La creación de una cuenta activa de la población del directorio personal del usuario con el contenido de la / etc / skel / modelo. Esto
proporciona al usuario un conjunto de directorios y archivos estándar URACIÓN CONFIG-.

En algunos casos, será útil añadir un usuario a un grupo (distinto de su grupo principal defecto) con el fin de conceder permisos
adicionales. Por ejemplo, un usuario que se incluye en el sudo grupo tiene privilegios administrativos completos a través de la sudo mando.
Esto se puede lograr con un comando como agregar usuario grupo de usuario.

Utilizando getent consultar


la base de datos del usuario los getent
usuarios y grupos)
( conseguir utilizando
entradas) las funciones
comando compruebade
lasbiblioteca adecuados,
bases de datos que(incluidos
del sistema a su vezlos
requieren
de el interruptor de servicio de

nombres (NSS) módulos configurados en el directorio / etc / nsswitch.conf expediente. El comando toma uno o dos

argumentos: el nombre de la base de datos para comprobar, y una posible clave de búsqueda. Por lo tanto, el comando getent

passwd kaliuser1 devolverá la información de la base de datos del usuario en relación con el usuario kaliuser1. root @ kali:

~ # getent passwd kaliuser1

kaliuser1: x: 1001: 1001: Usuario Kali


una , 4444,123-867-5309,321-867-5309: / home / kaliuser1: / bin /
una golpetazo

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

Los siguientes comandos allowmodification de la información almacenada en campos específicos de las bases de datos de usuario:

• passwd -Permisos un usuario regular para cambiar su contraseña, que a su vez, actualiza los / etc / shadow expediente.

• chfn - (cambio de nombre completo), reservado para el superusuario (root), modifica la GECOS, o el campo “Información eral ge-”.

• chsh - (Cambio de Shell) cambia shell de entrada del usuario. Sin embargo, las opciones disponibles serán limita- das a los
enumerados en / etc / shells; el administrador, por otra parte, no está obligado por esta restricción y puede establecer la concha a
cualquier programa elegido.

• chage - (AGE modificar) permite al administrador para cambiar la configuración de caducidad de contraseñas pasando el nombre de
usuario como argumento o anuncie configuración actual utilizando el - l usuario opción.

108 Kali Linux Revelado


Como alternativa, también se puede obligar a la expiración de una contraseña utilizando el passwd -e usuario

de comandos, lo que obliga al usuario cambiar su contraseña la próxima vez que se conecten.

5.2.3. Deshabilitar una cuenta

Youmay encuentre que necesita para desactivar una cuenta (bloquear a un usuario) como un disciplinarymeasure, a los fines de una
investigación, o simplemente en el caso de una ausencia prolongada o definitiva de un usuario. Una cuenta desactivada significa que el
usuario no puede iniciar sesión o acceder a la máquina. La cuenta se mantiene intacta en la máquina y se elimina ningún archivo o
datos; es simplemente inaccesible. Esto se logra mediante el comando passwd -l usuario ( bloquear). Al volver a habilitar la cuenta se
realiza de forma similar, con la - u opción (desbloquear).

5.2.4. Gestión de Grupos de Unix

los añadir grupo y delgroup comandos añadir o eliminar un grupo, respectivamente. los groupmod mandmodifies com- información
de un grupo (su gid o identificador). El comando gpasswd grupo cambia la contraseña para el grupo, mientras que el gpasswd -r grupo
comando elimina.

Trabajar con Varios


grupos Cada usuario
creadopuede
durante
serlamiembro
configuración inicialgrupos.
de diversos del usuario.
grupoPor defecto,
principal de cada archivo
un usuario es,que
porcrea un usuario pertenece al usuario,
defecto,

así como al grupo principal del usuario. Esto no siempre es deseable; por ejemplo, cuando el usuario necesita para

trabajar en un directorio compartido por un grupo distinto de su grupo principal. En este caso, el usuario necesita cambiar

de grupo usando uno de los siguientes comandos: newgrp, que comienza una nueva cáscara, o sg, que simplemente

ejecuta un comando usando el grupo alternativo suministrado. Estos comandos también permiten al usuario para unirse

a un grupo al que no pertenecen actualmente. Si el grupo está protegido con contraseña, que tendrán que proporcionar

la contraseña adecuada antes de ejecutar el comando. Alternativamente, el usuario puede configurar el setgid poco en el

directorio, lo que hace que los archivos creados en ese directorio a pertenecer automáticamente al grupo correcto. Para

más detalles, véase el recuadro “ setgid directorio y poco pegajosa ”[Página 58]. los carné de identidad comando muestra el

estado actual de un usuario, con su identificador personal ( UID variable), grupo principal actual ( gid variable), y la lista de

grupos a los que pertenecen ( grupos variable).

5.3. Configuración de los servicios

En este sectionwe va a echar un vistazo a los servicios (a veces llamados demonios), o programas que se ejecutan como un proceso en
segundo plano y realizar varias funciones para el sistema. Vamos a empezar por discutir los archivos de configuración y se procederá a
explicar cómo algunos servicios importantes (tales como SSH, Post-greSQL, y Apache) la función y la forma en que se pueden configurar.

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


5.3.1. Configuración de un programa específico

Cuando se quiere configurar un paquete desconocido, se debe proceder por etapas. En primer lugar, usted debe leer lo que el mantenedor
del paquete ha documentado. Los / usr / share / doc / paquete/ README. Debian archivo es un buen lugar para empezar. Este archivo contendrá a
menudo información sobre el paquete, incluyendo punteros que pueden hacer referencia a otra documentación. A menudo se ahorrará
mucho tiempo y evitar una gran cantidad de frustración, mediante la lectura de este archivo primero, ya que a menudo se detallan los errores
y soluciones más comunes a la mayoría de los problemas comunes.

A continuación, usted debe buscar en la documentación oficial del software. Consulte la sección 6.1, “Fuentes de Documen- tación” [página 124]

para obtener consejos sobre cómo encontrar diversas fuentes de documentación. los dpkg -L

paquete comando proporciona una lista de los archivos incluidos en el paquete; Por lo tanto, se puede identificar rápidamente la documentación

disponible (así como los archivos de configuración, que se encuentra en / etc /). También, dpkg -s

paquete muestra el packagemeta-datos y muestra las posibles edades PACK- recomendadas o sugeridas; allí, se puede
encontrar documentación o tal vez una utilidad que va a facilitar la configuración del software.

Por último, los archivos de configuración son a menudo auto-documentado por muchos comentarios explicativos detalle- ing los diferentes valores

posibles para cada opción de configuración. En algunos casos, se puede obtener el software en funcionamiento eliminando el comentario de una

sola línea en el archivo de configuración. En otros casos, los ejemplos de los archivos de configuración se proporcionan en el / usr / share / doc / paquete/

ejemplos / directorio. Pueden servir como base para su propio fichero de configuración.

5.3.2. Configuración de SSH para las entradas remotas

SSH le permite acceder de forma remota a una máquina, transferir archivos, o ejecutar comandos. Se trata de una indus- tria herramienta

estándar ( ssh) y el servicio ( sshd) para conectar a las máquinas de forma remota. Mientras que la openssh-server paquete se instala por defecto,

el SSH el servicio está desactivado por defecto y por lo tanto no se inicia en el arranque. Puede iniciar manualmente el servicio SSH con systemctl

iniciar ssh o configurarlo para que se inicie durante el arranque con systemctl habilitar SSH.

El servicio SSH tiene una configuración por defecto relativamente cuerdo, pero teniendo en cuenta sus capacidades de gran alcance y la

naturaleza sensible, es bueno saber lo que puede hacer con su archivo de configuración, / etc / ssh / sshd_ config. Todas las opciones están

documentadas en sshd_config (5).

La configuración por defecto desactiva inicios de sesión basados ​en contraseña para el usuario root, lo que significa que primero debe configurar las claves

SSH con ssh-keygen. Puede extender esto a todos los usuarios mediante el establecimiento

PasswordAuthentication a no, o puede levantar esta restricción cambiando PermitRootLogin a


Sí ( en lugar del predeterminado prohibir-contraseña). El servicio SSH escucha por defecto en el puerto 22, pero esto se puede cambiar

con el Puerto directiva. Para aplicar la nueva configuración, se debe ejecutar ssh recarga systemctl.

110 Kali Linux Revelado


Nueva generación de host SSH
Llaves Caday servidor
se almacenan en /sus
SSH tiene etc propias *. Deben mantenerse
claves criptográficas;
/ ssh / ssh_host_ en privado
que se denominan si quieres
“claves confidencialidad
de host SSH” y no deben ser

compartidos por varias máquinas. Al instalar el sistema copiando una imagen completa del disco (en lugar de usar

debian-installer), la imagen puede contener claves pre-generados en el servidor SSH que usted debe reemplazar por lo

tanto con claves generadas recientemente. La imagen probablemente también viene con una contraseña de root por

defecto que desea restablecer al mismo tiempo. Usted puede hacer todo esto con los siguientes comandos:

# passwd
[...]
# rm / etc / ssh / ssh_host_ *
# dpkg-reconfigure openssh-server
# Reiniciar servicio 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í misma, pero se utiliza bymany otros servicios para almacenar datos. Estos
servicios generalmente acceder al servidor de base de datos en la red y por lo general requieren credenciales de autenticación para poder
conectarse. La creación de estos servicios por lo tanto requiere la creación de bases de datos PostgreSQL y cuentas de usuario con privilegios
apropiados en la base de datos. Para poder hacer eso, necesitamos el servicio se esté ejecutando, por lo que vamos a empezar con systemctl
iniciar PostgreSQL.

versiones PostgreSQL múltiples compatibles El embalaje PostgreSQL permite múltiples versiones del servidor de base de datos para ser
co-instalado. También es posible manejar múltiples clusters ( un cluster es una colección de bases de datos servidos por
el mismo administrador de correos). Para lograr esto, los archivos de configuración se almacenan en / etc / postgresql / /
Versión / cluster-nombre.

Para que las agrupaciones de corren lado a lado, cada nuevo grupo se le asigna el siguiente número de puerto
disponible (por lo general 5433 para el segundo grupo). los postgresql.service archivo es una cáscara vacía, por lo que es
fácil actuar sobre todos los grupos juntos como cada grupo tiene su propia unidad ( postgresql @ versión-cluster. Servicio).

Tipo de conexión y autenticación de cliente

Por defecto, PostgreSQL escucha las conexiones entrantes en twoways: en el puerto TCP 5432 de la interfaz localhost y en el socket
basado en archivos / var / run / PostgreSQL / .s.PGSQL.5432. Esto puede ser calculado en con- postgresql.conf con diversas directivas: listen_addresses
para las direcciones que escuchan, Puerto para el puerto TCP, y unix_socket_directories para definir el directorio donde se crean los
zócalos basados ​en archivos.

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


Dependiendo de cómo se conectan, los clientes se autentican de diferentes maneras. los pg_hba.conf
archivo de configuración define quién está autorizado para conectar en cada toma de corriente y la forma en que son autenti- cadas. Por defecto,

las conexiones del zócalo basado en archivos utilizan la cuenta de usuario Unix como el nombre del usuario PosgreSQL, y se supone que no se

requiere una autenticación adicional. Por ción conexiones TCP, PostgreSQL requiere el usuario para autenticarse con un nombre de usuario y una

contraseña (aunque no es un nombre de usuario Unix / contraseña, sino más bien uno administrado por sí PostgreSQL). los postgres el usuario es

especial y tiene privilegios administrativos sobre todas las bases de datos. Vamos a utilizar esta identidad para crear nuevos usuarios y bases de

datos.

Creación de usuarios y bases de datos

los crear usuario comando agrega un nuevo usuario y dropuser elimina uno. Asimismo, el createdb
comando añade una nueva base de datos y dropdb elimina uno. Cada uno de estos comandos tienen sus propias páginas de manual, pero vamos a

discutir algunas de las opciones aquí. Cada comando actúa sobre el clúster predeterminado (que se ejecuta en el puerto 5432), pero se puede pasar - port

= Puerto para modificar los usuarios y bases de datos de un clúster alternativo.

Estos commandsmust se conectan al servidor PostgreSQL para hacer su trabajo y theymust ser autenti- cadas como usuario con privilegios
suficientes para poder ejecutar la operación especificada. La manera más sencilla de lograr esto es utilizar el postgres Unix cuenta y
conectarse a través de la toma de corriente basado en archivos:

# su - postgres
PS createuser -P king_phisher
Introduzca la contraseña de nuevo papel: Introduzca de nuevo: $ createdb -T template0 -E UTF-8 -O
king_phisher king_phisher

PS salida

En el ejemplo anterior, el - PAG pide opción crear usuario para consultar una contraseña una vez que se crea el nuevo king_phisher usuario.

Mirando a la createdb comando, el - O define el usuario propietario de la nueva base de datos (que por lo tanto tienen los derechos para crear

tablas y conceder permisos y así sucesivamente). También queremos poder utilizar cadenas Unicode, así que agregamos la - E UTF-8 opción

para configurar la codificación, que a su vez nos obliga a utilizar el - T opción de elegir otra plantilla de base de datos. Ahora podemos

probar que podemos conectar a la base de datos sobre el socket de escucha en localhost (- h localhost) como el usuario king_phisher (- T

king_phisher):

# psql -h localhost -U king_phisher king_phisher


King_phisher contraseña para el usuario: psql (9.5.2)

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


una compresión: apagado) Tipo de
“ayuda” para obtener ayuda.

king_phisher =>

112 Kali Linux Revelado


Como se puede ver, la conexión se ha realizado correctamente.

Administrar clústeres de PostgreSQL

En primer lugar, vale la pena señalar que el concepto de “grupo de PostgreSQL” es una adición específica de Debian y que no va a encontrar

ninguna referencia a este término en la documentación oficial de PostgreSQL. Desde el punto de vista de las herramientas de PostgreSQL, un

grupo tal es sólo una instancia de un servidor de base de datos que se ejecuta en un puerto específico. Dicho esto, Debian postgresql-common paquete

proporciona múltiples herramientas para gestionar estas agrupaciones:

pg_createcluster, pg_dropcluster, pg_ctlcluster, pg_upgradecluster,


pg_renamecluster, y pg_lsclusters. No vamos a cubrir todas aquellas herramientas que aquí, pero se puede hacer referencia a sus respectivas

páginas de manual para más información.

Lo youmust saber es thatwhen un versiónde newmajor PostgreSQL se instala onyour sistema, se creará un nuevo grupo
que se ejecutará en el siguiente puerto (generalmente 5433) y se seguirá utilizando la versión anterior hasta que migre sus
bases de datos del clúster antiguo a la uno nuevo. Puede recuperar una lista de todos los grupos y su situación con pg_lsclusters.
tantly más impor-, puede automatizar la migración de clúster a la versión más reciente de PostgreSQL con

pg_upgradecluster la vieja versión de clúster nombre. Para que esto tenga éxito, es posible que tenga que quitar primero el cluster

(vacío) creada para la nueva versión (con pg_dropcluster nueva versión de clúster-nombre). El grupo de edad no se deja caer en el
proceso, sino que también no se iniciará automática- mente. Usted puede dejar una vez que haya comprobado que el clúster
mejorado funciona bien.

5.3.4. Configuración de Apache

Una instalación típica Kali Linux incluye el servidor web Apache, proporcionada por el apache2 paquete. Al ser un servicio de red, que
está desactivado por defecto. Usted canmanually empezar con systemctl comenzar apache2.

Con más y más aplicaciones que se distribuyen como aplicaciones web, es importante tener algún conocimiento de
Apache con el fin de albergar estas aplicaciones, ya sea para uso local o para ponerlos a disposición en la red.

Apache es un servidor modular y muchas características se implementan mediante módulos externos que las principales cargas del programa
durante su inicialización. La configuración por defecto sólo permite a los módulos más comunes, pero permitiendo nuevos módulos se realiza
fácilmente mediante la ejecución a2enmod módulo. Utilizar
a2dismod módulo desactivar un módulo. Estos programas realmente sólo crean (o eliminar) los enlaces simbólicos en / etc / apache2

/ mods-enabled /, señalando a los archivos reales (almacenada en / etc / apache2 / mods-available /).

Hay muchos módulos disponibles, pero dos son dignos de consideración inicial: PHP y SSL. plicaciones web AP- writtenwith
PHP se ejecutan por el servidor web Apache con la ayuda de los dedicados

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


módulo proporcionado por el libapache-mod-php paquete, y su instalación permite automáticamente el módulo.

Apache 2.4 incluye la SSLmodule requerido para HTTP seguro (HTTPS) fuera de la caja. En primer lugar, se debe activar
con ssl a2enmod, a continuación, las directivas necesarias deben agregarse a los archivos de configuración. Un ejemplo de
configuración se proporciona en / etc / apache2 / sites-available / default-ssl. conf. Ver http://httpd.apache.org/docs/2.4/mod/mod_ssl.html
para más información. La lista completa de standardApachemodules canbe foundonline en http://httpd.apache.org/docs/

2,4 / mod / index.html.

Con su configuración por defecto, el servidor Web escucha en el puerto 80 (como se configura en / etc / apache2 / ports.conf), y sirve
páginas de la / var / www / html / directorio por defecto (como se configura en
/etc/apache2/sites-enabled/000-default.conf).

Configuración de hosts virtuales

Una máquina virtual es una identidad adicional para el servidor web. El mismo proceso Apache puede servir para múltiples sitios web (por ejemplo www.kali.org

y www.offensive-security.com) debido a que las peticiones HTTP integrar tanto el nombre de thewebsite solicitada y la parte local URL (esta

característica se conoce como hosts virtuales basados ​en nombre).

La configuración por defecto para Apache 2 permite hosts virtuales basados ​en nombres. Además, una máquina virtual predeterminada se define

en el / etc / apache2 / sites-enabled / 000-default.conf expediente; este host virtual se utilizará si no se encuentra un juego de acogida la solicitud

enviada por el cliente.

Importante

Las solicitudes relativas a los hosts virtuales desconocidos siempre serán atendidos por el host virtual definido en

primer lugar, por lo que el paquete se envía una 000-default. conf archivo de configuración, que ordena el primer lugar

entre todos los demás archivos que crean youmight.

Cada host virtual adicional se describe a continuación, mediante un archivo almacenado en / etc / apache2 / sites-available /.

El archivo por lo general lleva el nombre del nombre de host del sitio web seguido de una. conf sufijo (por ejemplo:
www.example.com.conf). A continuación, puede permitir que el anfitrión con newvirtual www.example a2ensite. com. Aquí es una configuración

de host virtual mínimo para un sitio web cuyos archivos se almacenan en / srv / www. example.com/www/ ( definido con la Raiz del
documento opción):

<VirtualHost *: 80>
ServerName www.example.com ServerAlias
​example.com

114 Kali Linux Revelado


DocumentRoot /srv/www.example.com/www </ VirtualHost>

También considerar la adición de Youmight CustomLog y Registro de errores directivas para configurar Apache para registros de salida de archivos dedicados

a la máquina virtual.

Directivas comunes

Esta sección revisa brevemente algunas de las directivas de configuración de Apache de uso común. El archivo de configuración principal

por lo general incluye varios Directorio bloques; que permiten especificar comportamientos dife- rentes para el servidor en función de la

ubicación del archivo que se sirve. Tal bloque incluye comúnmente opciones y Permitir sobrescritura directivas:

<Directorio / var / www>


Incluye opciones AllowOverride All FollowSymLinks

DirectoryIndex index.php index.html index.htm </ Directory>

los DirectoryIndex Directiva contiene una lista de archivos para probar cuando la solicitud del cliente coincide con un toria direcciones. El primer archivo

existente en la lista se utiliza y se envía como una respuesta. los opciones Directiva es seguido por una lista de opciones para activar. los Ninguna valor

deshabilita todas las opciones; correspondientemente, Todos todos ellos, excepto permite MultiViews. Las opciones disponibles incluyen:

• ExecCGI -indica que los scripts CGI se pueden ejecutar.

• FollowSymLinks -cuenta el servidor que enlaces simbólicos pueden ser seguidas, y que la respuesta debe contener el
contenido de la diana de tales enlaces.

• SymLinksIfOwnerMatch -también le dice al servidor para seguir enlaces simbólicos, pero sólo cuando el enlace y su objetivo tienen
el mismo propietario.

• incluye -permite Lado del servidor incluye ( SSI). Estas son las directivas incrustados en páginas HTML y ejecutado sobre la marcha
para cada solicitud.

• índices -cuenta el servidor para mostrar el contenido de un directorio si la petición HTTP enviada por los puntos de cliente a un
directorio sin un archivo de índice (es decir, cuando no hay archivos por parte del
DirectoryIndex Directiva existe en este directorio).

• MultiViews -permite la negociación de contenido; esto puede ser usado por el servidor para devolver una página que coincida con el
idioma preferido tal como está configurado en el navegador.

La autenticación que requiere En algunas circunstancias, el acceso a parte de un sitio web debe ser re stricted, por lo que sólo los usuarios
legítimos que proporcionan un nombre de usuario y una contraseña se concede acceso al contenido.

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


Los . .htaccess archivo contiene directivas de configuración de Apache aplican cada vez que una solicitud de con- preocupaciones un elemento

desde el directorio en el. .htaccess archivo se almacena. Estas directrices son recursivos, la ampliación del alcance a todos los subdirectorios. La

mayor parte de las directivas que puede ocurrir en una Directorio bloque también son legales en una. .htaccess expediente. los

Permitir sobrescritura Directiva enumera todas las opciones que pueden ser activadas o desactivadas a través de. .htaccess.

Un uso común de esta opción es para restringir ExecCGI, de modo que el administrador elige qué usuarios pueden ejecutar
programas bajo la identidad del servidor web (el www-data usuario).

Ejemplo 5.3. .htaccess Exigir la autenticación del archivo

Require valid-user
AuthName “Directorio privado” TipoAut básico

AuthUserFile / etc / apache2 / AuthFiles / htpasswd-privada

autenticación básica
No ofrece seguridad El sistemacomo la contraseña
de autenticación se envía
utilizado en elen texto claro
ejemplo (que
anterior sólo se
( BASIC) codifica
tiene como base
una seguridad 64, que es una codificación sencilla
mínima
en lugar de un método de cifrado). También hay que señalar que los documentos protegidos por este
mecanismo también pasan por la red en el claro. Si la seguridad es importante, toda la sesión HTTP debe ser
cifrado con Transport Layer Security (TLS).

Los / etc / apache2 / AuthFiles / htpasswd-privada archivo contiene una lista de usuarios y contraseñas; se manipula comúnmente
con el htpasswd mando. Por ejemplo, el siguiente comando se utiliza para agregar un usuario o cambiar su contraseña:

# htpasswd / etc / apache2 / AuthFiles / htpasswd-privada usuario


Nueva contraseña:
Vuelva a escribir la nueva contraseña: Adición de la

contraseña de usuario usuario

Restricción de acceso los Exigir Directiva controla restricciones de acceso para un directorio (y sus subdirectorios, de forma recursiva).

Se puede utilizar para restringir los criterios basados ​onmany de acceso; wewill se detiene en la descripción de restricción de acceso

basado en la dirección IP del cliente, pero se puede hacer mucho más potente que eso, especialmente cuando varios Exigir directivas se

combinan dentro de una RequireAll bloquear. Por ejemplo, se puede restringir el acceso a la red local con la siguiente directiva:

Requerir IP 192.168.0.0/16

116 Kali Linux Revelado


5.4. Gestión de Servicios

Kali usa systemd como su sistema de inicio, que no sólo es responsable de la secuencia de arranque, sino también de forma permanente actúa como un

administrador completo servicio ofrecido, el inicio y seguimiento de los servicios.

systemd se pueden consultar y controlado con systemctl. Sin ningún argumento, se corre el
list-unidades systemctl comando, que emite una lista de los activos unidades. Si tu corres systemctl estado, la salida muestra una
visión jerárquica de los servicios que se ejecutan. Comparando ambos pone ambulatorios, inmediatamente verá que hay varios
tipos de unidades y que los servicios son sólo uno entre ellos.

Cada servicio está representado por una unidad de servicio, que está descrito por un archivo de servicio normalmente enviado en

/ Lib / systemd / sistema / ( o / run / systemd / system /, o / etc / systemd / system /; que se enumeran por orden de importancia cada vez
mayor, y la última gana). Cada uno está posiblemente modificado por otra
Nombre del Servicio. service.d / *. conf archivos en el mismo conjunto de directorios. Esos archivos de unidades son archivos de texto cuyo formato

está inspirado en los “archivos * .ini” bien conocidos de Microsoft Windows, con llave
= valor pares agrupados entre [ sección] cabeceras. Aquí vemos un archivo de servicio de muestra para / lib / systemd / system /

ssh.service: [Unidad]

Descripción = OpenBSD Secure Shell servidor Después =


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 = Reiniciar proceso = fallo ON

RestartPreventExitStatus = 255 = Tipo notificar

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

unidades de destino son otra parte del diseño de systemd. Representan un estado deseado que se quiere alcanzar en términos de
activatedunits (whichmeans un servicio que se ejecuta en el caso de unidades de servicio). Ellos existmainly tan lejos a las
dependencias del grupo en otras unidades. Cuando los systemstarts, que permite a las unidades necesarias para alcanzar el default.target
( que es un enlace a graphical.target, andwhich a su vez depende multi-user.target). Así que todas las dependencias de esos objetivos se

activan durante el arranque.

Tales dependencias se expresan con el Quiere Directiva relativa a la unidad objetivo. Pero usted no tiene que editar la unidad de destino para

agregar nuevas dependencias, también se puede crear un enlace simbólico que apunta a la

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


unidad dependiente en el / etc / systemd / system / meta-nombre. target.wants / directorio. Y esto es exactlywhat systemctl permitir foo.service
hace. Cuando se habilita un servicio, le dice systemd para agregar una dependencia de los objetivos enumerados en el Buscado
por entrada de la [ Instalar] sección del archivo de la unidad de servicio. A la inversa, systemctl desactivar foo.service gotas el
mismo enlace simbólico y por lo tanto la dependencia. los habilitar y inhabilitar comandos no cambian nada en relación con el
estado actual de los servicios. Ellos sólo influyen en lo que sucederá en el siguiente inicio. Si desea ejecutar el servicio
inmediatamente, debe ejecutar inicio systemctl foo.service. A la inversa, se puede detener con systemctl detener foo.service. También
puede inspeccionar el estado actual de un servicio con

estado systemctl foo.service, que convendría incluye 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 reiniciarlo: esas operaciones se realizan con recarga
systemctl foo.service y reinicio systemctl foo. Servicio respectivamente.

# PostgreSQL estado systemctl


● postgresql.service - RDBMS PostgreSQL
Cargado: cargado (/lib/systemd/system/postgresql.service; discapacitados; proveedor PRESET:
una desactivado) activo: inactivo
(muerto)
# ls -al /etc/systemd/system/multi-user.target.wants/postgresql.service
ls: no pueden acceder a '/etc/systemd/system/multi-user.target.wants/postgresql.service': No se
una tal archivo o directorio
# systemctl permitir PostgreSQL
[...]
# ls -al /etc/systemd/system/multi-user.target.wants/postgresql.service
lrwxrwxrwx 1 root 38 Abr 16:21 21 de /etc/systemd/system/multi-user.target.wants/
una postgresql.service -> /lib/systemd/system/postgresql.service
# PostgreSQL estado systemctl
● postgresql.service - RDBMS PostgreSQL
Cargado: cargado (/lib/systemd/system/postgresql.service; habilitado; proveedor preset:
una desactivado) activo: inactivo
(muerto)
# systemctl iniciar PostgreSQL
# PostgreSQL estado systemctl
● postgresql.service - RDBMS PostgreSQL
Cargado: cargado (/lib/systemd/system/postgresql.service; habilitado; proveedor preset:
una discapacitado)

Activo: activo (salido) desde Thu 04/21/2016 16:22:29 EDT; 2s Proceso hace: 6355 ExecStart = / bin / true
(código = salió, estado = 0 / SUCCESS) Principal PID: 6355 (código = salido, estado = 0 / SUCCESS)

Abr 21 de 16:22:29 Kali-rodando systemd [1]: A partir RDBMS PostgreSQL ... 21 de Abr systemd 16:22:29 Kali-rodadura
[1]: Iniciado RDBMS PostgreSQL.

118 Kali Linux Revelado


5.5. Resumen

En este capítulo, hemos aprendido cómo configurar Kali Linux. Hemos configurado los ajustes de red, hablamos de usuarios y grupos, y

discutimos cómo crear y modificar cuentas de usuario, establecer contraseñas, deshabilitar cuentas y gestionar grupos. Finalmente,

discutimos los servicios y explicamos cómo configurar y mantener los servicios genéricos, específicamente SSH, PostgreSQL, y Apache.

Resumen Consejos:

• En una instalación típica de escritorio, tendrá Gerente de Redes ya instalado y puede controlarse y configurarse a
través del centro de control de GNOME y por el menú superior derecha.

• Puede configurar la red desde la línea de comandos con el ifup y ifdown herramientas, que leen las instrucciones del / etc
/ network / interfaces archivo de configuración. Una herramienta aún más reciente, systemd-networkd trabaja con el systemd
sistema de inicio.

• Por defecto, la base de datos de usuarios y grupos Unix consiste en los archivos de texto / etc / passwd
(Lista de usuarios), / etc / shadow ( encryptedpasswords de usuarios), / etc / group ( lista de grupos), y
/ Etc / gshadow ( contraseñas cifradas de los grupos).

• Se puede utilizar el getent comando para consultar la base de datos de usuario y otras bases de datos del sistema.

• los agregar usuario comando hace algunas preguntas antes de crear la cuenta, pero es un camino a seguir recta para crear una
nueva cuenta de usuario.

• Varios comandos se pueden utilizar para modificar los campos específicos en la base de datos de usuario que incluye:
passwd ( Cambia la contraseña), chfn ( cambiar el nombre completo y la GECOS, o campo de informa- ción general), chsh ( cambio shell

de entrada), chage ( la edad del cambio de contraseña), y passwd -e usuario


(Obliga al usuario a cambiar su contraseña la próxima vez que inicien sesión).

• Cada usuario puede ser un miembro de uno o varios grupos. Varios comandos se pueden utilizar para modificar la identidad de
grupo: newgrp cambia el ID de grupo actual, sg ejecuta un comando usando el grupo alternativo suministrado, la setgid poco canbe
coloca en un directorio, haciendo que los archivos creados en ese directorio a pertenecer automáticamente al grupo correcto.
además, el carné de identidad comando muestra el estado actual de un usuario que incluye una lista de su pertenencia al grupo.

• Puede iniciar manualmente con SSH systemctl iniciar ssh o permanentemente activarlo con
systemctl habilitar SSH. La configuración por defecto desactiva inicios de sesión basados ​en contraseña para el usuario root, lo que significa

que primero debe instalar contraseñas SSH con ssh-keygen.

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

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

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


• Con su configuración por defecto, Apache escucha en el puerto 80 (como se configura en / etc / apache2 / ports.conf), y
sirve páginas de la / var / www / html / directorio por defecto (como ured config en / etc / apache2 / sites-enabled /
000-default.conf).

Ahora que hemos abordado los fundamentos de Linux y la instalación y configuración de Linux Kali, vamos a discutir cómo solucionar Kali y
le enseñe algunas herramientas y trucos para conseguir que todo vuelva a correr- Ning cuando se encuentra con problemas.

120 Kali Linux Revelado


Palabras clave

Documentación
Los foros
de IRC informe
canal Bug
Capítulo

Ayudándose y 6
Obteniendo ayuda
Contenido

Fuentes de documentación 124 Kali Comunidades Linux 128 La presentación de un informe de errores buenos 129 Resumen 146
No importa cuántos años de experiencia que tiene, no hay duda de que, tarde o temprano se encontrará con un problema. La solución de
ese problema es entonces a menudo una cuestión de entenderlo y luego tomar ventaja de varios recursos para encontrar una solución o
solución temporal. En este capítulo, vamos a discutir las diversas fuentes de información disponibles y discutir las mejores estrategias
para encontrar la ayuda que necesita o la solución a un problema que podría estar enfrentando. También le llevará en un recorrido por
algunos de los recursos de la comunidad Kali Linux disponibles, incluyendo los foros y laWeb Internet Relay Chat canal (IRC). Por último,
vamos a presentar informes de errores y le mostrará cómo tomar ventaja de los sistemas de archivo de errores para solucionar
problemas y diseñar estrategias para ayudarle a presentar su propio informe de error por lo que los temas de indocumentados se pueden
manejar con rapidez y eficacia.

6.1. Fuentes de documentación

Antes de que pueda entender lo que realmente está pasando cuando hay un problema, es necesario conocer el papel desempeñado teórico por

cada programa involucrados en el problema. Una de las mejores maneras de hacer esto es la revisión de la documentación del programa. Vamos

a empezar por discutir dónde, exactamente, se puede encontrar documentación, ya que a menudo se dispersa.

Cómo evitar RTFM


respuestas Es variante
el acrónimo de “leer el“leer
más amigable, f ***eling manual”,
manual bien.”pero
Estatambién
frase sese puede
utiliza ampliar
a veces enrespuestas
en las una lacónicas () a las
preguntas de los novatos. Es un poco brusca, y revela una cierta molestia a una pregunta hecha 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 en absoluto ya que este al menos insinúa que la respuesta está dentro de la documentación. Cuando
envías preguntas, no necesariamente ser ofendido por la respuesta RTFM de vez en cuando, pero haga lo que
pueda por lo menos demostrar que usted ha tomado el tiempo para hacer una investigación antes de publicar la
pregunta; mencionar las fuentes que ha consultado y describir los diversos pasos que ha tomado personalmente para
encontrar la información. Esto va un largo camino para demostrar que no eres perezoso y está buscando realmente
el conocimiento. Siguiendo las directrices de Eric Raymond es una buena manera de evitar los errores más comunes
y obtener respuestas útiles.

mi http://catb.org/~esr/faqs/smart-questions.html

6.1.1. Páginas manuales

Las páginas de manual, aunque relativamente breve en el estilo, contienen una gran cantidad de información esencial. Para ver una página del

manual, simplemente escriba hombre manual de páginas. La página del manual suele coincidir con el nombre del comando. Por ejemplo, para

aprender acerca de las posibles opciones para la cp comando, debe escribir man cp en el símbolo del sistema.

Las páginas man no sólo los programas de documentos accesibles fromthe línea de comandos, sino también archivos de configuración, llamadas al sistema,

funciones de biblioteca C, y así sucesivamente. A veces, los nombres pueden colisionar. Por ejemplo,

124 Kali Linux Revelado


de la cáscara leer comando tiene el mismo nombre que el leer llamada al sistema. Esta es la razón por páginas de manual están organizados en las

siguientes secciones numeradas:

1. Los comandos que se pueden ejecutar desde la línea de comandos

2. Las llamadas al sistema (funciones proporcionadas por el núcleo)

3. Funciones de biblioteca (proporcionada por las bibliotecas del sistema)

4. Dispositivos (en sistemas tipo Unix, estos son archivos especiales, generalmente colocados en el directorio / dev / directorio)

5. Los archivos de configuración (formatos y convenciones)

6. Juegos

7. Conjuntos de macros y normas

8. comandos de administración del sistema

9. Rutinas del núcleo

Puede especificar la página themanual sectionof que buscas: a viewthe documentación para el leer llamada al sistema, tendría que
escribir Man 2 leer. Cuando se especifica explícitamente ninguna sección, se mostrará la primera sección que tiene una página de
manual con el nombre solicitado. Así, hombre de la sombra
devoluciones sombra (5) porque no existen páginas de manual de sombra en las secciones 1-4. Por supuesto, si usted no sabe los
nombres de los comandos, el manual no va a ser de mucha utilidad para usted. Introducir el a propósito comando, que busca en las
páginas del manual (o más específicamente sus breves descripciones) de las palabras clave que usted proporciona. los a propósito comando
devuelve una lista de manuales cuyo resumen menciona las palabras clave solicitados junto con el resumen de una línea desde la
página del manual. Si elige bien sus palabras clave, se encuentra el nombre del comando que necesita.

Ejemplo 6.1 Hallazgo cp con a propósito

PS a propósito de “archivo de copia”

cp (1) - copiar archivos y directorios


cpio (1) - copiar archivos desde y hacia archivos
gvfs-copia (1) - Copiar archivos

gvfs-movimiento (1) - Copiar archivos

HCopie (1) - copiar archivos desde o hacia un volumen HFS


instalar (1) - copiar archivos y atributos establecidos
ntfscp (8) - copiar el archivo en un volumen NTFS.

Documentación de navegación
Siguiendo los enlaces Muchas páginas
que manuales
se refiere tienen
a otrasuna
páginas manuales
sección pertinentes
“Vea también”, por lo a los comandos
general cerca delsimilares, o a la documentación externa. Se puede
final del documento,

utilizar esta sección para encontrar documentación pertinente, incluso cuando la primera opción no es óptima.

Capítulo 6 - ayudarse a sí mismo y Obtención de ayuda 125


Además de hombre, puedes usar Konqueror ( en KDE) y Yelp ( en GNOME) para buscar páginas man también.

6.1.2. Documentos de información

El proyecto GNU tiene writtenmanuals para la mayoría de sus programas en el info formato; esto es whymany páginas de manual se
refieren a la correspondiente info documentación. Este formato ofrece algunas ventajas, pero el programa predeterminado para ver
estos documentos (también llamado info) es slightlymore complejo. Usted haría bien en utilizar pinfo en lugar (de la pinfo paquete). Para
instalarlo, sólo tiene que ejecutar apt update seguido por apto instalar pinfo ( véase la sección 8.2.2.2, “Instalación de paquetes withAPT”
[página 177]). los info documentación tiene una estructura jerárquica y si se invoca pinfo sin parámetros, se 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. Como alternativa, también se puede utilizar un navegador ical graph- (lo cual
es mucho más fácil de usar), tales como Konqueror o gañido.

En lo que se refiere a traducciones de la lengua, la info sistema siempre está en Inglés y no se traje- capaces para la traducción, a diferencia
de la hombre sistema de página. Sin embargo, cuando se pide la pinfo programa para mostrar un no-existente info página, se va a caer de
nuevo en el hombre la página con el mismo nombre (si existe), que podría traducirse.

6.1.3. Documentación específica del paquete

Cada paquete incluye su propia documentación e incluso los programas menos documentados generalmente tienen una README archivo
que contiene información interesante y / o importantes. Este docu- mentación se instala en el directorio / usr / share / doc / paquete/ directorio
(donde paquete representa el nombre del paquete). Si la documentación es particularmente grande, itmay no se incluirá en el paquete
principal del programa, pero puede ser descargado a un paquete dedicado que generalmente se denomina paquete- Doc.

El paquete principal generalmente recomienda el paquete de documentación para que pueda encontrarlo fácilmente. Los / usr /
share / doc / paquete/ directorio también contiene algunos archivos que ofrece Debian, que com- plete la documentación

especificando particularidades o mejoras del paquete en comparación con una instalación tradicional del software. los README.Debian
archivo también indica todas las adaptaciones que se hicieron para cumplir con la normativa de Debian. los changelog.Debian.gz archivo
permite al usuario seguir las modificaciones realizadas en el paquete con el tiempo; es muy útil para tratar de entender lo que ha
cambiado entre dos versiones instaladas que no tienen el mismo comporta- miento. Por último, existe a veces una NEWS.Debian.gz
archivo que documenta los principales cambios en el programa que puedan afectar directamente al administrador.

126 Kali Linux Revelado


6.1.4. Sitios Web

En muchos casos, se 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 cargados de información relevante en diversas formas, tales como documentación oficial, las
preguntas más frecuentes (FAQ), y archivos de la lista de correo. En la mayoría de los casos, los problemas de archivos de la lista de
direcciones de correo de preguntas frecuentes o que pueda haber tenido. En la búsqueda de información en línea, es inmensamente valioso a
la sintaxis de búsqueda principal. Un consejo rápido: tratar de restringir la búsqueda a un dominio específico, como el dedicado al programa
que le está dando problemas. Si la búsqueda devuelve demasiadas páginas o si los resultados no coinciden con lo que busca, puede agregar
la palabra clave kali o debian para limitar los resultados y orientar la información relevante.

Del error a una


Solución Si el software
(Entre comillas
devuelvedobles, ”, conde
un mensaje el error
fin demuy
buscar la frase lo
específica, completa, enun
inserta en lugar de de
motor lasbúsqueda
palabras clave individuales). En la
mayoría de los casos, los primeros eslabones devuelta contendrá la respuesta que necesita.

En otros casos, se producirán errores muy generales, tales como “Permiso denegado”. En este caso, lo mejor es comprobar los

permisos de los elementos que intervienen (archivos, ID de usuario, grupos, etc.). En resumen, no entrar en el hábito de usar

siempre un motor de búsqueda para encontrar una solución a su problema. Usted encontrará que es demasiado fácil olvidar que

usar el sentido común.

Si no conoce la dirección de la página web del software, existen diversos medios de localizarlo. En primer lugar, buscar una Página
principal campo en la meta-información del paquete ( espectáculo apto paquete). Alternativamente, la descripción del paquete puede
contener un enlace a la página oficial del programa. Si no se indica el URL, el mantenedor del paquete puede haber incluido una URL
en el / usr / share / doc / paquete/ derechos de autor expediente. Por último, es posible que pueda utilizar un motor de búsqueda (como
Google, DuckDuckGo, Yahoo, etc.) para encontrar el sitio web del software.

6.1.5. Documentación Kali en docs.kali.org

El Kali projectmaintains una colección de documentación útil en http://docs.kali.org. Si bien este libro cubre una gran parte de lo
que usted debe saber acerca de Kali Linux, la documentación que aún podría ser útil, ya que contiene instrucciones paso a
paso (al igual que la forma-tos) sobre muchos temas.

mi http://docs.kali.org/

Vamos a repasar los diversos temas tratados allí:

• Conceptos básicos: una serie de instrucciones, incluyendo instrucciones de descarga, para los nuevos en Kali

• Kali Linux vivo: documentación que describe cómo utilizar Kali Linux como un sistema vivo

• Instalación de Kali Linux: varios documentos que describen la instalación Kali Linux, incluyendo cómo instalarlo de lado a
lado con otros sistemas operativos

Capítulo 6 - ayudarse a sí mismo y Obtención de ayuda 127


• Kali Linux en ARM: muchas recetas sobre la ejecución de Kali Linux en varios dispositivos basados ​en ARM

• El uso de Kali Linux: múltiples tutoriales que cubren muchas peticiones comunes

• Personalización de Kali Linux: instrucciones para los manitas que les gusta para reconstruir Kali en base a sus propias necesidades

• Kali Soporte Comunidad: punteros a las distintas comunidades donde se puede obtener apoyo y explicaciones sobre cómo
enviar informes de errores

• Políticas Kali Linux: explicaciones sobre lo que hace Kali Linux especial si se compara con otras distribuciones de
Linux

• El Kali Linux Dojo: videos de Negro Hat y DEF CON talleres

6.2. Kali Comunidades Linux

Hay muchas comunidades Kali Linux en todo el mundo que utilizan muchas herramientas diferentes para comuni- carse (foros y
redes sociales, por ejemplo). En esta sección, sólo presentaremos dos comunidades oficiales Kali Linux.

6.2.1. Foros web sobre forums.kali.org

Los foros oficiales de la comunidad para el proyecto Kali Linux se encuentran en forums.kali.org 1. Al igual que todos los foros basado en

la web, youmust crea una cuenta para poder escribir y el sistema recuerda lo que los mensajes que ya han visto, por lo que es fácil de

seguir las conversaciones sobre una base regular. Antes de la publicación, debe leer las reglas del foro:

mi http://docs.kali.org/community/kali-linux-community-forums

No vamos a copiarlos aquí, pero vale la pena señalar que no se le permite hablar de activi- dades ilegales tales como irrumpir
en las redes de otras personas. Youmust ser respetuosos de otros miembros de la comunidad a fin de crear una comunidad
acogedora. La publicidad está prohibida y discusiones fuera de tema deben ser evitadas. Hay suficientes categorías para cubrir
todo lo que le gustaría hablar sobre Kali Linux.

6.2.2. # Kali-linux canal de IRC en Freenode

IRC es un sistema de chat en tiempo real. Las discusiones suceden en las salas de chat que se llaman canales y por lo general se centran
en torno a un tema o comunidad en particular. El proyecto Kali Linux utiliza el # Kali Linux canal en el Freenode 2 la red (se puede utilizar chat.freenode.net
como servidor IRC, en el puerto 6667 para una conexión TLS codificado o puerto 6666 para una conexión de texto sin cifrar).

1 http://forums.kali.org
2 http://www.freenode.net

128 Kali Linux Revelado


Para unirse a las discusiones en el IRC, usted tiene que utilizar un cliente de IRC como hexchat ( en modo gráfico) o irssi ( en el modo de
consola). También hay un cliente basado en web disponible en webchat.freenode.net 3.

Si bien es muy fácil de unirse a la conversación, usted debe ser consciente de que los canales de IRC tienen sus propias reglas y
que no son operadores de canal (su apodo tiene el prefijo @) que pueden ES- forzar las reglas: se le puede poner fuera de la
canal (o incluso prohibir que si continúa a desobedecer las reglas). Los # kali-linux canal no es una excepción. Las reglas han sido
documentados aquí:

mi http://docs.kali.org/community/kali-linux-irc-channel

Para resumir las reglas: tienes que ser amable, tolerante y razonable. Debe evitar discusiones fuera de tema. En particular, están
prohibidas las discusiones acerca de las actividades ilegales, warez / grietas / soft- ware pirateada, la política y las religiones.
Tenga en cuenta que su dirección IP estará disponible para otros.

Si desea pedir ayuda, siga las recomendaciones que figuran en el “¿Cómo evitar respuestas RTFM” [página 124]: hacer su
investigación primero y compartir los resultados. Cuando se le solicita información complementaria, por favor provea con precisión (si
youmust proporcionan alguna salida detallada, no pegarlo en el canal directamente, en lugar de utilizar un servicio como Pastebin 4 y
publicar sólo el URL Pastebin). No hay que esperar una respuesta inmediata. A pesar de que el IRC es una plataforma de
comunicación en tiempo real, los participantes sesión de todo el mundo, por lo que las zonas horarias y horarios de trabajo varían.
Puede tardar unos minutos u horas para alguien para responder a su pregunta. Sin embargo, cuando los demás incluyen su apodo en
tu respuesta, tu nick se resaltará y la mayoría de los clientes de IRC le avisará, así que deje su cliente conectado y ser paciente.

6.3. La presentación de un informe de errores buenos

Si todos sus esfuerzos para resolver un problema fallan, es posible que el problema se debe a un error en el programa. En este caso, el

problema puede haber dado lugar a un informe de error. Puede buscar informes de error para encontrar una solución a su problema, pero vamos

a echar un vistazo en el procedimiento de informar de un error de Kali, Debian, o directamente a los desarrolladores originales para que pueda

comprender el proceso en caso de necesitar para presentar su propio informe.

El objetivo de un informe de error es proporcionar suficiente información para que los desarrolladores o personal de mantenimiento de la

(supuestamente) programcan defectuosa reproducir el problema, depurar su comportamiento, y desarrollar una solución. Esto significa que su

informe de error debe contener información apropiada y debe ser dirigida a la persona correcta o equipo de proyecto. El informe también debe estar

bien escrito y exhaustiva, asegurando una respuesta más rápida.

El procedimiento exacto para el informe de error puede variar dependiendo de dónde se va a presentar el informe (Kali, Debian, los
desarrolladores upstream), pero hay algunas recomendaciones genéricas que se aplican a todos los casos. En este capítulo vamos a
discutir esas recomendaciones.

3 http://webchat.freenode.net
4 http://pastebin.com

Capítulo 6 - ayudarse a sí mismo y Obtención de ayuda 129


6.3.1. Recomendaciones genéricas

Vamos a discutir algunas recomendaciones generales y directrices que ayudarán a que envíe un informe de error que es clara,
completa y mejora las posibilidades de que el error será abordado por los desarrolladores en el momento oportuno.

Cómo comunicarse

Escriba su Informe en Inglés La comunidad del software libre es internacional ya menos que usted sabe que su interlocutor, usted debe
utilizar la llanura Inglés. Si usted es un hablante nativo de Inglés, utilice frases simples y evitar construcciones que podrían ser difíciles de
entender para las personas con conocimientos limitados de inglés. A pesar de que la mayoría de los desarrolladores son muy
inteligentes, no todos ellos tienen sólidos conocimientos del idioma Inglés. Es mejor no asumir es.

Sea respetuoso con el trabajo de los desarrolladores Recuerde que la mayoría de los desarrolladores de software libre (INCLUYENDO los

que están detrás de Kali Linux) son benévolos y están gastando su limitado tiempo libre para trabajar en el software que está utilizando

libremente. Muchos están haciendo esto por altruismo. Por lo tanto, al presentar un informe de error, sea respetuoso (incluso si el error se ve

como un error evidente por el promotor) y no asuma que se deben a una solución. darles las gracias por su contribución en su lugar. Si usted

sabe cómo modificar y volver a compilar el software, ofrecer para ayudar a los desarrolladores en la prueba de los parches que presenten a

usted. Esto demostrará que usted está dispuesto a invertir su propio tiempo también.

Ser reactivo y listo para proporcionar más información En algunos casos, el desarrollador va a volver a youwith información
formore solicitudes o peticiones para que usted intente recrear el problema tal vez mediante el uso de diferentes opciones o el uso de
un paquete actualizado. Usted debe tratar de responder a estas preguntas lo más rápido posible. El más rápido de enviar su respuesta,
mayor será la probabilidad de que serán capaces de resolverlo rápidamente, mientras que el análisis inicial es todavía fresco en su
mente. Mientras que usted debe tratar de responder rápidamente, usted debe también no ir demasiado rápido: los datos submittedmust
sean correctas y que debe contener todo lo que los desarrolladores solicitaron. Serán molesto si tienen que pedir algo por segunda vez.

Qué poner en el informe de errores

Instrucciones para reproducir el problema Para poder reproducir el problema, los desarrolladores necesitan saber lo que está

utilizando, donde lo tienes, y cómo lo ha instalado. Usted debe proporcionar instrucciones precisas, paso a paso que describen cómo

reproducir el problema. Si es necesario utilizar algunos datos para reproducir el problema, adjuntar el archivo correspondiente al

informe de fallo. Tratar de llegar con el conjunto mínimo de instrucciones necesarias para reproducir el error.

130 Kali Linux Revelado


Dale un poco de contexto y ponga sus expectativas Explica lo que estaba tratando de hacer y cómo se espera que el programa de
comportarse.

En algunos casos, el fallo sólo se desencadena debido a que estaba utilizando el programa de una manera que no fue diseñado para
operar por los desarrolladores. Al explicar lo que estaba tratando de lograr, se le permitirá a los desarrolladores a ver claramente cuando
este es el caso.

En algunos otros casos, el comportamiento que usted describe como un bugmight ser en realidad el comportamiento normal. Sea explícito
acerca de lo que se esperaba que el programa haga. Esto aclarará la situación para los desarrolladores. Pueden mejorar el comportamiento,
ya sea o mejorar la documentación, pero por lo menos saben que el comportamiento de su programa está confundiendo algunos usuarios!

Se específico Incluya los números de versiones del software que utiliza, posiblemente con los números de versión de sus
dependencias. Cuando se hace referencia a algo que ha descargado, incluir su dirección URL completa.

Cuando se obtiene un mensaje de error, cita exactamente como lo vio. Si es posible, incluya una copia de su salida de pantalla o una pantalla. Incluya

una copia de cualquier archivo de registro correspondiente, asegurando que elimine cualquier dato sensible en primer lugar.

Mención posibles soluciones o alternativas Antes de presentar el informe de error, es probable que trató de volver a resolver el
problema. Explicar lo que ha intentado y los resultados que ha recibido. Sea muy claro sobre lo que es un hecho y lo que era sólo una
hipótesis de su parte.

Si usted hizo una búsqueda en Internet y encontró algunas explicaciones acerca de un problema similar, se puede mencio- nar ellos, en particular, cuando

encontraste otros informes de errores similares en el seguimiento de errores de Debian o en el seguimiento de errores aguas arriba.

Si has encontrado una manera de lograr el resultado deseado sin provocar el fallo, por favor documentar que también. Esto ayudará a otros
usuarios que están afectados por el mismo problema.

Informes de errores largos están bien Un informe de error de dos líneas es insuficiente; proporcionar toda la información necesaria por lo

general requiere de varios párrafos (o, a veces páginas) de texto.

Suministrar toda la información que pueda. Tratar de atenerse a lo que es relevante, pero si no está seguro, demasiado es mejor que demasiado

poco.

Si su informe de error es muy largo, tomar algún tiempo para estructurar el contenido y proporcionar un breve resumen en el inicio.

Consejos misceláneos

Evitar la presentación de informes de fallos duplicados En el mundo del Software Libre, todos los gestores de fallos son públicos. cuestiones abiertas

pueden ser navegado y que incluso tienen una función de búsqueda. Por lo tanto, antes de presentar un nuevo informe de error, tratar de determinar si su

problema ya ha sido reportado por otra persona.

Capítulo 6 - ayudarse a sí mismo y Obtención de ayuda 131


Si usted encuentra un informe de error existente, suscribirse a él y, posiblemente, añadir información complementaria. No se debe publicar

comentarios tales como “Yo también” o “1”; no sirven para nada. Sin embargo, se puede indicar que usted está disponible para pruebas adicionales

si el remitente original no ofrecen esto.

Si no ha encontrado ningún informe de su problema, seguir adelante y presentarla. Si se han encontrado entradas relacionadas, asegúrese de

mencionarlos.

Asegúrese de que utiliza la versión más reciente Es muy frustrante para los desarrolladores para recibir informes de errores para los problemas

que ya se han resuelto o problemas que no pueden reproducirse con la versión que están utilizando (los desarrolladores utilizan casi siempre la

versión más reciente de su producto). Incluso cuando las versiones anteriores son mantenidos por los desarrolladores, el apoyo es a menudo

limitada a los parches de seguridad y de los principales problemas. ¿Estás seguro de que su error es uno de esos?

Iswhy que, antes de presentar un informe de error, que shouldmake asegurarse de que está utilizando la última versiónde el sistema
problemático y aplicación y que se puede reproducir el problema en esa situación. Si Kali Linux no ofrece la versión más reciente de
la aplicación (ni en kali-balanceo ni en Kali-bleeding-edge, véase la sección 8.1.3.3, “El Kali-bleeding-edge repositorio” [página
174]), que tiene al - soluciones alter-: se puede intentar la instalación amanual de la versión más reciente en una máquina virtual de
usar y tirar, o puede revisar los cambios de las fuentes (o Git cometer la historia) para ver que no ha habido ningún cambio que
podría solucionar el problema que que está viendo (y luego presentar el error a pesar de que la persona no trató la última versión).

No mezclar diversos problemas en el un informe de error individual Presentar un informe de error por número. De esa manera, las
discusiones posteriores no bajen demasiado desordenado y cada error puede fijarse de acuerdo con su propio horario. Si no lo hace, ya sea el
bicho individual necesita ser reutilizados varias veces y sólo se puede cerrar cuando todos los problemas se han solucionado, o los promotores
deben presentar los informes complementarios que deben haber sido creados en el primer lugar.

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 la cual pieza de software reside el problema. Lo ideal es realizar el seguimiento del problemdown a un archivo en
su systemand entonces se puede utilizar dpkg para averiguar qué paquete pertenece ese archivo y donde ese paquete viene.
Vamos a suponer que ha encontrado un fallo en una aplicación gráfica. Después de buscar en la lista de procesos en ejecución
(la salida del auxf ps), que descubrió que la aplicación se inició con el / usr / bin / sparta ejecutable:

PS dpkg -S / usr / bin / sparta


sparta: / usr / bin / sparta $ dpkg -s Esparta | grep ^
Versión:
Versión: 1.0.1 + git20150729-0kali1

Se aprende que el / usr / bin / sparta es proporcionado por el Esparta paquete, que se encuentra en la versión 1.0.1 + git 20150729-0kali1. El
hecho de que la cadena de versión contiene kali indica a usted que el paquete

132 Kali Linux Revelado


proviene de Kali Linux (o se modifica por Kali Linux). Cualquier paquete que no tiene kali en su cadena de versión (o en el
nombre del paquete) viene directamente de Debian (Debian Testing en general).

Antes de la comprobación minuciosa Si usted encuentra un error en un paquete importado directamente de Debian, que idealmente debe ser informado y se fija
Bugs de en el lado de Debian. Sin embargo, antes de hacer esto, asegúrese de que el problema es reproducible en un sistema
Debian Debian llanura desde Kali puede haber causado el problema mediante la modificación de otros paquetes o dependencias.

La forma más sencilla de lograr esto es configurar una máquina virtual que se ejecuta Debian Testing. Puede encontrar una
ISO de instalación de Debian Testing en el sitio web del instalador de Debian:

mi https://www.debian.org/devel/debian-installer/

Si usted puede confirmar el problema en la máquina virtual, a continuación, puede enviar el error a Debian ejecutando Reportar
un error dentro 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 ser dirigidas a sus upstreamprojects excepto cuando
se enfrenta a un problema de integración: en ese caso, el error es un error en la forma en que el software se empaqueta y se integra en Debian
o Kali. Por ejemplo, si una aplicación ofrece en tiempo de compilación opciones que el paquete no habilita ni los applicationdoes Notwork a
causa de una biblioteca que falta (poniendo así en luz que falta una dependencia en el paquete de meta-información), es posible que frente a
un problema de integración. Cuando usted no sabe qué tipo de problema que se enfrenta, por lo general es la mejor manera de presentar el
problema en ambos lados y hacer referencias cruzadas entre ellos.

La identificación del proyecto aguas arriba y encontrar dónde presentar el informe de error suele ser fácil. Sólo tienes que navegar por la
upstreamwebsite, la cual se hace referencia en el Página principal Campo de la meta-datos de embalaje:

PS dpkg -s Esparta | grep ^ Inicio:


Inicio: https://github.com/SECFORCE/sparta

6.3.3. Cómo presentar un informe de error

La presentación de un informe de error en Kali

Kali utiliza un gestor de fallos basada en la web en http://bugs.kali.org donde se pueden consultar todos los informes de errores de forma anónima,

pero si usted desea hacer un comentario o presentar un nuevo informe de error, tendrá que registrar una cuenta.

Registrarse para obtener una cuenta de seguimiento de fallos Para empezar, basta con hacer clic Regístrese para recibir nueva cuenta en el sitio web de

seguimiento de errores, como se muestra en la Figura 6.1, “Kali Bug Tracker página de inicio” [página 134].

Capítulo 6 - ayudarse a sí mismo y Obtención de ayuda 133


Figura 6.1 Kali Bug Tracker página de inicio

A continuación, un nombre de usuario, dirección de correo electrónico, y la respuesta al desafío de CAPTCHA. A continuación, haga clic en el botón de registro

para continuar (Figura 6.2, “inscribirse Página” [página 134]).

Figura 6.2 Registrar Página

134 Kali Linux Revelado


Si tiene éxito, la siguiente página (Figura 6.3, “SignupConfirmationPage” [página 135]) le notificará que el registro de la cuenta ha sido
procesado, y el seguimiento de errores systemwill enviar un correo electrónico de confirmación a la dirección que proporcionó. Usted
tendrá que hacer clic en el enlace del correo electrónico para activar su cuenta.

Una vez que su cuenta ha sido activada, haga clic en Continuar para pasar a la página de inicio de sesión gestor de fallos.

Figura 6.3 Registrar página de confirmación

Capítulo 6 - ayudarse a sí mismo y Obtención de ayuda 135


Crear el informe Para empezar su informe, acceda a su cuenta y haga clic en el enlace Informe de Emisión en la página de destino. Se le

presentará una formwith muchos campos a rellenar, como se muestra en la Figura 6.4, “Formulario para informar de un fallo” [página 136].

Figura 6.4 Formar informar de un error

Éste es un resumen de todos los campos del formulario:

Categoría (obligatorio) Este campo describe la categoría del error que está presentando. Informes
que se puede atribuir a un paquete específico debe ser presentada en el Bug Kali paquete o categorías mejora Kali del paquete. Otros

informes deben utilizar el Bug general o característica Re- quests categorías. Las categorías restantes son para casos de uso

específicos: Herramienta de actualización se puede utilizar para notificar a los desarrolladores de Kali de la disponibilidad de una nueva

versión de un software empaquetado

136 Kali Linux Revelado


en Kali. Nuevas peticiones de herramientas se pueden utilizar para sugerir nuevas herramientas para empaquetar e integrar en la distribución Kali.

reproducibilidad Este campo documentos si el problema es reproducible de una manera predecible


o si sucede sólo un poco al azar.

De gravedad y prioridad Esos campos es mejor dejar sin modificar, ya que aremainly para los desarrolladores.
Los pueden usar para ordenar la lista de temas de acuerdo con la gravedad del problema y de la prioridad a la
que debe manejarse.

version del producto Este campo se debe indicar qué versión de Kali Linux está ejecutando (o el
uno que es el más cercano a lo que se está ejecutando). Piense dos veces antes de informar de un problema en una vieja versión de

que ya no es compatible.

Resumen (obligatorio) Esto es esencialmente el título de su informe de error y es lo primero que se


la gente va a ver. Asegúrese que transmite la razón por la que está presentando el informe. Evitar descripciones
genéricas como “X no funciona” y optar por “X falla con el error Y en condiciones Z.”

Descripción (obligatorio) Este es el cuerpo de su informe. Aquí se debe introducir toda la in-
formación que ha recopilado sobre el problema que está experimentando. No se olvide de todas las recomendaciones
dadas en el apartado anterior.

Pasos para reproducir En este campo, una lista de todas las instrucciones detalladas que explica cómo activar el

problema.

Información Adicional En esta sección, puede proporcionar cualquier información adicional que usted cree
es relevante para el tema. Si usted tiene un arreglo o solución para el problema, proporcione en esta sección.

Subir archivo No todo se puede explicar con texto sin formato. Este campo le permite conectar arbitraria
archivos a sus informes: capturas de pantalla para mostrar el error, documentos de muestra que desencadenan el proble- ma, archivos de registro, etc.

Ver el estado de Deja ese conjunto de campo de “público” para que todo el mundo puede ver su informe de error. Use “pri-

Vate”únicamente para los estudios relacionados con la seguridad que contienen información acerca de las vulnerabilidades de seguridad no reveladas.

La presentación de un informe de error en Debian

Debian usa a (sobre todo) a base de e-mail sistema de seguimiento de errores conocido como Debbugs. Para abrir un nuevo informe de error,

youwill enviar un correo electrónico (con una sintaxis especial) a submit@bugs.debian.org. Thiswill asignar un número de error XXXXXX e

informarle que se puede enviar información adicional por correo XXX XXX @ bugs.debian.org. Cada fallo está asociado a un paquete Debian.

Puede navegar por todos los errores de

Capítulo 6 - ayudarse a sí mismo y Obtención de ayuda 137


un paquete dado (incluyendo el error que usted está pensando en la presentación de informes) a https://bugs.debian.org/

paquete. Puede comprobar la historia de un error dada en https://bugs.debian.org/ XXXXXX.

Configuración de reportbug Si bien se puede abrir un nuevo error con un simple correo electrónico, se recomienda utilizar Reportar un error porque

ayudará a redactar un informe de error sólido con toda la información requerida. Idealmente, se debe ejecutar desde un sistema Debian (por

ejemplo, en la máquina virtual donde se reprodujo el problema). La primera ejecución de Reportar un error se inicia una secuencia de comandos de

configuración. En primer lugar, seleccione un nivel de habilidad. Debe elegir principiante o estándar; utilizamos este último, ya que ofrece un

control más fino. A continuación, seleccione una interfaz e introduzca sus datos personales. Por último, seleccione una interfaz de usuario. El

guión con- figuración le permitirá utilizar un agente de transporte de correo local, un servidor SMTP, o como último recurso, un servidor SMTP

Debian.

Bienvenido a reportbug! Ya que parece que esta es la primera vez que utiliza reportbug, estamos configurando su
comportamiento. Estos ajustes se guardan en el archivo “/root/.reportbugrc”, que va a ser libre para hacer otras modificaciones.

Por favor, seleccione el modo de funcionamiento por defecto para reportbug.

1 novato Ofrecer instrucciones simples, sin pasar por cuestiones técnicas.

2 Oferta más extensas indicaciones estándar, incluyendo preguntando por cosas


que se esperaría que un usuario moderadamente sofisticadas saber sobre Debian.

3 avanzadas como estándar, pero asume que saber un poco más sobre Debian,
una incluyendo “entrante”.

4 experto Bypass mayoría de las medidas toman de las manos y las rutinas de triaje preliminares. Este modo no
debe ser utilizado por personas no familiarizadas con las políticas y procedimientos de operación de
Debian.

Seleccione modo: [novato] estándar


Por favor seleccione la interfaz predeterminada para reportbug.

1 texto Una interfaz de usuario de la consola orientada a texto

2 gtk2 Una interfaz gráfica de usuario (GTK +).

3 urwid Una interfaz de usuario de la consola basada en menús

Seleccione la interfaz: texto


Se reportbug a menudo tienen acceso directo a Internet? (Usted debe responder afirmativamente a esta pregunta si no sabe
lo que está haciendo y va a comprobar si los informes duplicados se han presentado a través de algún otro canal.)

138 Kali Linux Revelado


[Y | n | q |?]? Y
¿Qué nombre real se debe utilizar para el envío de informes de errores? [Root]> Raphaël
Hertzog
¿Cuál de sus direcciones de correo electrónico se debe utilizar 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 correo no deseado.) [Root@localhost.localdomain]> buxy@kali.org

¿Tiene un “agente de transporte de correo” (MTA) como Exim, Postfix o ssmtp configurado en este equipo para enviar
correo a Internet? [Y | n | q |?]? norte
Por favor, introduzca el nombre de su servidor SMTP. Por lo general, se llama algo así como “mail.example.org” o
“smtp.example.org”. Si es necesario utilizar un puerto diferente al predeterminado, utilice el <host>: <puerto> formato
alternativo. Sólo tiene que pulsar ENTER si usted no tiene uno o no lo sabe, y por lo tanto se utilizará una máquina Debian
SMTP.

>
Por favor, introduzca el nombre de su servidor proxy. Sólo se debe utilizar este parámetro si está detrás de un firewall. El
argumento PROXY debe tener el formato de un URL HTTP válida, incluyendo (si es necesario) un número de puerto; por
ejemplo, http://192.168.1.1:3128/. Sólo tiene que pulsar ENTER si usted no tiene uno o no sabe.

>
archivo de preferencias por defecto escrito. Para volver a configurar, volver a ejecutar reportbug con la opción “--configure”.

usando reportbug Con la fase de configuración completado, el informe real de errores puede comenzar. Se le pedirá un nombre de
paquete, aunque también se puede dar el nombre del paquete directamente en la línea de comandos con Reportar un error paquete).

Running 'reportbug' como root es probablemente insegura! Continuar [y | n | q |?]? y


Por favor, introduzca el nombre del paquete en el que usted ha encontrado un problema, o escriba 'otro' para informar de un
problema más general. Si usted no sabe qué paquete es el error, por favor póngase en contacto con
debian-user@lists.debian.org para obtener ayuda.

> Wireshark

En contra de los consejos dados anteriormente, si usted no sabe cuál es el paquete en contra de presentar el fallo, debe ponerse en contacto con

un foro de soporte Kali (descrito en la sección 6.2, “Comunidades Kali Linux” [página 128]). En el siguiente paso, Reportar un error descarga la lista

de errores presentadas en contra de los paquetes, y le permite navegar por ellos para ver si se puede encontrar el suyo.

*** Bienvenido a reportbug. Utilizar ? ayuda en indicaciones. *** Nota: los informes de fallos se archivan públicamente
(incluyendo la dirección de correo electrónico del remitente).

juego de caracteres detectado: UTF-8

Capítulo 6 - ayudarse a sí mismo y Obtención de ayuda 139


Por favor, cambie el entorno local si esto es incorrecto.

El uso de '”Raphaël Hertzog” <buxy@kali.org>' como su dirección de. Obtener el estado de Wireshark ...
Verificación de la integridad del paquete ...

Comprobando si hay nuevas versiones en el Madison ... Enviará informe a Debian (por
lsb_release). Consulta de Debian BTS para los informes sobre Wireshark (fuente) ... 35 informes
de errores encontrados:

Errores con severidad importante


1) # 478200 tshark: parece ignorar leer filtros a la hora de escribir ...
2) # 776206 mergecap: no puede crear archivo de salida> 2 GB
3) # 780089 Wireshark: “En el wireshark GNOME no tiene barra de título. Hace…
Errores con gravedad normal de
4) # 151017 etéreos: “Estadísticas jerarquía de protocolos” dar engañosa ...
5) # 275839 no diseccionar correctamente ESMTP canalización
[...]
35) # 815122 Wireshark: añadir 1.3.6.1.4.1.11129.2.4.2 OID
(24-35 / 35) Es el error que has encontrado enumerados anteriormente [y | n | b | m | r | q | s | f | e |?]? ? y - Problema ya
se ha informado; opcionalmente añadir información adicional. N - (predeterminado) Problema no mencionados
anteriormente; posiblemente marcar más. b - Abra la lista de errores completos en un navegador web.

m - Obtener más información acerca de un error (también puede introducir un número


sin seleccionar “m” primero). R - Volver a mostrar los
últimos errores que se muestran. q - estoy aburrido; dejar de
fumar por favor.
s - Saltar problemas restante; presentar un nuevo informe de inmediato. f - Filtro de lista de errores
utilizando un patrón. e - Abra el informe utilizando un cliente de correo electrónico. ? - Mostrar esta
ayuda.

(24-35 / 35) Es el error que has encontrado enumerados anteriormente [y | n | b | m | r | q | s | f | e |?]? norte

Mantenedor de Wireshark es 'Balint Reczey <balint@balintreczey.hu>'. Mirando hacia arriba dependencias de Wireshark
...

Si encuentra que su error ya presentada, se puede optar por enviar información complementaria, de lo contrario, se le invita a presentar un

nuevo informe de error:

Brevemente describir el problema (máx. 100 caracteres permitidos). Este será el tema de errores de correo electrónico, a fin
de mantener el resumen de lo más conciso posible, por ejemplo: “no puede enviar correo electrónico” o “no se inicia con la
opción -q especificada” (introduzca Ctrl + C para salir reportbug sin informar de un error) .

> no diseccionar foobar protocolo


Reescribiendo sujetos a 'Wireshark: no diseccionar foobar protocolo'

Después de proporcionar un resumen de una línea de su problema, youmust califica su gravedad a lo largo de una escala ampliada:

140 Kali Linux Revelado


¿Cómo calificaría la gravedad de este problema o informe?

1 crítica hace que el software no relacionado en el sistema (o el sistema entero) rompa, o causa la
pérdida de datos importantes, o introduce un agujero de seguridad en los sistemas en los que
instale el paquete.

2 tumba hace que el paquete en cuestión no utilizable por la mayoría o todos los usuarios, o causa la
pérdida de datos, o introduce un agujero de seguridad que permite el acceso a las cuentas
de los usuarios que utilizan el paquete.

3 seria es una violación grave de las normas de Debian (es decir, el problema es una violación de un 'must' o
directiva 'necesaria'); puede o no afectar a la usabilidad del paquete. Tenga en cuenta que
violaciónes de política no graves pueden ser 'normal', 'menor' o "errores en su lista. (Encargados de
los paquetes también pueden designar otros insectos como 'grave' y por lo tanto con severidad
crítica;. Sin embargo, los usuarios finales no deberían hacerlo). Para la lista canónica de cuestiones
worthing una severidad grave puede hacer referencia a esta página web:
http://release.debian.org/testing/rc_policy.txt

4 importantes un error que tiene un efecto importante en la usabilidad de un paquete, sin hacerle
completamente inservible para todos.

5 hace-no-construir un error que detiene el paquete de ser compilado.


(Esta es una 'gravedad virtual').
6 normales un error que no menoscabe la capacidad de uso de todo el paquete; por ejemplo, un problema
con una determinada opción o elemento del menú.

7 menores cosas como errores de ortografía y otros errores cosméticos menores que no afectan a la
funcionalidad principal del paquete.

8 Lista de deseos sugerencias y solicitudes de nuevas características.

Por favor, seleccione un nivel de gravedad: [Normal]

Si no está seguro, sólo mantener la severidad del defecto normal.

También puede etiquetar su informe con unas pocas palabras clave:

¿Alguno de los siguientes casos este informe?

1 di Este fallo es relevante para el desarrollo del instalador de Debian.


2 ipv6 Este error afecta a compatibilidad con el protocolo de Internet versión 6.
3 l10n Este error se informa de un problema de localización / internacionalización.
4 LFS Este error afecta a la compatibilidad con archivos de gran tamaño (más de 2 gigabytes).
5 recién llegado Este error tiene una solución conocida, pero el mantenedor pide a alguien
otra cosa ponerlo en práctica.

Capítulo 6 - ayudarse a sí mismo y Obtención de ayuda 141


6 parche Se está incluyendo un parche para solucionar este problema.
7 aguas arriba Este error se aplica a la parte aguas arriba del paquete. 8 ninguno

Por favor, seleccione las etiquetas: (uno a la vez) [ninguno]

La mayoría de las etiquetas son bastante esotérica, pero si el informe incluye una solución, hay que seleccionar la parche etiqueta. Una vez

que esto se ha completado, Reportar un error Abre un editor de texto con una plantilla que debería editar (6,2 ejem- plo, “Plantilla generada

por Reportar un error ”[Página 142]). Contiene una serie de preguntas que se debe eliminar y respuestas, así como alguna información sobre

su sistema que ha sido recogido automática- mente. Observe cómo se estructuran las primeras líneas. Ellos no deben modificarse, ya que

serán analizados por el gestor de fallos para asignar el informe al paquete correcto.

Ejemplo 6.2 Plantilla generada por Reportar un error

Asunto: Wireshark: no diseccionar foobar protocolo

Paquete: La versión de Wireshark: 2.0.2 +


ga16e22e-1 Severidad: Largo

Estimado Mantenedor,

*** Reportero, por que responder a estas preguntas, en su caso ***

* Lo que llevó a la situación?


* ¿Qué es exactamente lo que hace (o no) que fue efectivo (o ineficaz)?

* ¿Cuál fue el resultado de esta acción?


* ¿Qué resultado esperabas en su lugar?

*** Fin de la plantilla - eliminar estas líneas de la plantilla ***

- - Información del sistema: Debian


lanzamiento: estiramiento / sid
APT prefiere prueba
política de APT: (500, 'prueba') Arquitectura:
amd64 (x86_64) Exteriores: i386

Kernel: Linux 4.4.0-1-amd64 (SMP w / 4 núcleos de CPU) Configuración regional: LANG = fr_FR.utf8,
LC_CTYPE = fr_FR.utf8 (charmap = UTF-8) Shell: / bin / sh vinculados a / bin / dash init: systemd (a
través de / run / systemd / sistema)

142 Kali Linux Revelado


Las versiones de paquetes de Wireshark depende de: ii 2.0.2
Wireshark-qt + ga16e22e-1

Wireshark recomienda ningún paquete.

Wireshark sugiere ningún paquete.

- - ninguna información debconf

Una vez que guarde el informe y cierre el editor de texto, vuelve a Reportar un error, el cual providesmany otras opciones y ofertas
para enviar el informe resultante.

Desove sensible-editor de ...


Informe será enviado al “sistema de seguimiento de fallos de Debian” <submit@bugs.debian.org> Enviar este informe sobre
Wireshark (e para editar) [y | n | a | c | e | i | l | m | p | q | d | t | s |?]? ? Y - (predeterminado) Presentar el informe de error a través de
correo electrónico.
n - no presentar el informe de error; en cambio, guardarlo en un archivo temporal (salidas reportbug). a - Adjuntar un archivo.

c - Cambio editor y re-edición. e - Re-editar el


informe de error. i - calcular un archivo de texto.

l - Pipe el mensaje a través del buscapersonas. m - Elija un anuncio


publicitario para editar el informe. p - print mensaje a la salida
estándar.
q - guardarlo en un archivo temporal y dejar de fumar. d - Separar un
archivo adjunto. t - Añadir etiquetas.

s - Añadir un destinatario X-Debbugs-CC (CC pero después de 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


Guardar una copia de seguridad del informe en / tmp / reportbug-Wireshark de copia de seguridad 20160328-19073-87oJWJ Conexión a través de
SMTP reportbug.debian.org ...

Informe de error presentado a: “Sistema de seguimiento de fallos de Debian” <submit@bugs.debian.org> Las copias se enviarán
después del tratamiento para:
buxy@kali.org

Si desea proporcionar información adicional, por favor espere para recibir el número de seguimiento de errores a través de
correo electrónico; a continuación, puede enviar cualquier información adicional para n@bugs.debian.org (por ejemplo
999999@bugs.debian.org), donde n es el número de error. Normalmente, recibirá un acuse de recibo por correo electrónico
incluyendo el número de informe de error dentro de una hora; si no ha recibido una confirmación, entonces el proceso de
notificación de errores no en algún momento (reportbug o el fracaso de MTA, BTS mantenimiento, etc.).

Capítulo 6 - ayudarse a sí mismo y Obtención de ayuda 143


La presentación de un informe de error en otro proyecto de software libre

Hay una gran diversidad de proyectos de software libre, utilizando diferentes flujos de trabajo y herramientas. Esta di- versidad también se aplica a los

gestores de fallos en su uso. Mientras que muchos proyectos están alojados en GitHub y utilizan Cuestiones de GitHub para realizar un seguimiento de

sus errores, también hay muchos otros recibiendo sus propios seguidores, basados ​en Bugzilla, Trac, Redmine, Flyspray, y otros. La mayoría de ellos

están basados ​en la web y requieren que se registre una cuenta para enviar un nuevo billete.

No vamos a cubrir todos los seguidores aquí. Es hasta usted para conocer los detalles específicos de los distintos rastreadores para otros proyectos de

software libre, pero desde GitHub es relativamente popular, vamos a echar un breve vistazo a aquí. Al igual que con otros seguidores, primero debe crear una

cuenta y abrir una sesión. A continuación, haga clic en la pestaña Temas, como se muestra en la Figura 6.5, “Página principal de un proyecto GitHub” [página

144].

Figura 6.5 página principal de un proyecto GitHub

A continuación, puede ver (y buscar) la lista de cuestiones abiertas. Una vez que esté seguro de que el insecto todavía no se ha presentado, puede

hacer clic en el botón Nuevo número (Figura 6.6, “página de problemas de un proyecto GitHub” [página 145]).

144 Kali Linux Revelado


Figura 6.6 página de problemas de un proyecto GitHub

Ahora se encuentra en una página en la que debe describir el problema (Figura 6.7, “forma GitHub para presentar una nueva emisión de” [página

145]). Aunque no existe una plantilla como la que se encuentra en Reportar un error, el mecanismo de notificación de errores es bastante sencilla,

lo que le permite adjuntar archivos, aplicar formato al texto, y mucho más. Por supuesto, para obtener mejores resultados, asegúrese de seguir

las directrices para la creación de un informe detallado y bien descrito.

Figura 6.7 GitHub forma de presentar una nueva emisión

Capítulo 6 - ayudarse a sí mismo y Obtención de ayuda 145


6.4. Resumen

En esta sección, discutimos varios métodos para ayudarle a encontrar la documentación y la información sobre los programas y cómo

encontrar ayuda para los problemas que pueden aparecer. Tomamos un vistazo a las páginas de manual e info y la a propósito y info comandos.

Hablamos de control de errores, siempre y algunos consejos sobre cómo buscar y presentar buenos informes de errores, y nos proporcionó

algunos consejos para ayudarle a determinar quién posee el programa o proyecto en cuestión. Resumen Consejos:

• Antes de que pueda entender lo que realmente está pasando cuando hay un problema, es necesario conocer el papel desempeñado
teórico por cada programa involucrados en el problema. Una de las mejores maneras de hacer esto es la revisión de la
documentación del programa.

• Para ver una página del manual, simplemente escriba hombre manual de páginas, rellenando el nombre de la orden después de que un número de
sección opcional.

• los a propósito comando devuelve una lista de páginas de manual cuyo resumen menciona las palabras clave Quested re-, junto
con el resumen de una línea desde la página del manual.

• El proyecto GNU ha escrito manuales para la mayoría de sus programas en el info formato. Por esta razón muchas páginas de manual
se refieren a los correspondientes info documentación.

• Cada paquete incluye su propia documentación e incluso los programas menos documentados generalmente tienen una README
archivo que contiene información interesante y / o importantes. Esta documentación se instala en el directorio / usr / share /
doc / paquete/ directorio.

• En la mayoría de los casos, las preguntas frecuentes o la lista de correo archivos del sitio web oficial de un programa pueden abordar los problemas que
pueda haber tenido.

• El proyecto Kali mantiene una colección de documentación útil en http://docs.kali.org.

• El proyecto Kali Linux utiliza el # kali-linux canal en el Freenode 5 red IRC. Puedes usar chat.freenode.net como servidor IRC,
en el puerto 6667 para una conexión TLS codificado o puerto 6666 para una conexión de texto sin cifrar. Para unirse a las
discusiones en el IRC, usted tiene que utilizar un cliente de IRC como hexchat ( en modo gráfico) o irssi ( en el modo de
consola). También hay un cliente basado en web disponible en webchat.freenode.net 6.

• Los foros oficiales de la comunidad para el proyecto Kali Linux se encuentran en forums.kali.org 7.

• Si descubre un error en un programa, puede buscar informes de errores o presentar su propia. Asegúrese de seguir las directrices
que hemos esbozado para asegurar que su informe es claro siva, Comprehensive, y mejora las posibilidades de que el error será
abordado por los desarrolladores en el momento oportuno.

5 https://www.freenode.net
6 https://webchat.freenode.net
7 https://forums.kali.org

146 Kali Linux Revelado


• Algunos informes de errores se deben presentar a Kali, mientras que otros se pueden presentar en el lado de Debian. Un
comando como dpkg -s nombre-paquete | grep ^ Versión: revelará el número de versión y será etiquetado como “Kali” si es un
paquete modificado-Kali.

• La identificación de un upstreamproject y findingwhere para presentar el informe de error suele ser fácil. simple- mente navegar por la
upstreamwebsite que se hace referencia en el Página principal Campo de la meta-datos de embalaje.

• Kali utiliza basada en AWeb seguimiento de errores en el https://bugs.kali.org donde se pueden consultar todos los informes de errores de
forma anónima, pero si usted desea hacer un comentario o presentar un nuevo informe de error, tendrá que registrar una cuenta.

• Debian usa a (sobre todo) a base de e-mail sistema de seguimiento de errores conocido como Debbugs. Para abrir un nuevo informe de
error, puede enviar un correo electrónico (con una sintaxis especial) a submit@bugs.debian.org o puede utilizar la Reportar un error mando,

que le guiará a través del proceso.

• Mientras que muchos proyectos están alojados en GitHub y utilizan Cuestiones de GitHub para realizar un seguimiento de sus errores, también hay
muchos otros recibiendo sus propios seguidores. Puede que tenga que investigar los conceptos básicos de control de errores de terceros si usted

necesita para enviar a ellos.

Ahora que tiene las herramientas básicas para navegar Linux, instalación y configuración de Kali, y trou- bleshooting su sistema
y obtener ayuda, es hora de mirar hacia abajo Kali bloqueo para que pueda proteger su instalación, así como los datos de su
cliente.

Capítulo 6 - ayudarse a sí mismo y Obtención de ayuda 147


Palabras clave

Politica de seguridad

iptables
firewall
Monitoreo
Explotación florestal
Capítulo

Asegurar y 7
Monitoreo de Kali Linux
Contenido

Definición de una Política de Seguridad 150 Posibles Medidas de Seguridad 152 Protección de los servicios de red 153

Servidor de seguridad o el filtrado de paquetes 153 Monitoreo y registro 161 Resumen 164
Al comenzar a utilizar Linux Kali para el trabajo cada vez más sensibles y más alto perfil, es probable que tenga que tomar la seguridad de su
instalación más en serio. En este capítulo, discutiremos primero las políticas de seguridad, destacando varios puntos a considerar cuando se
define una política de este tipo, y outlin- ing algunas de las amenazas a su sistema y para que como profesional de seguridad. También
discutiremos las medidas de seguridad para los sistemas portátiles y de escritorio y se centran en los firewalls y filtrado de paquetes. Final-
mente, vamos a discutir las herramientas y estrategias de seguimiento y le mostrará cómo implementar mejor de ellos para detectar
amenazas potenciales a su sistema.

7.1. Definición de una Política de Seguridad

No es práctico para discutir la seguridad a grandes rasgos ya que la idea representa una amplia gama de conceptos, herramientas y

procedimientos, ninguno de los cuales se aplican universalmente. La elección entre ellos requiere una idea precisa de lo que son sus metas.

Asegurar un systemstartswith respondiendo a fewquestions. Rush- ing de cabeza en la implementación de un conjunto arbitrario de herramientas

corre el riesgo de centrarse en los aspectos equivocados de seguridad.

Por lo general, la mejor manera de determinar un objetivo específico. Un buen método para ayudar con esa determinación se inicia con las

siguientes preguntas:

• Qué está tratando de proteger? La política de seguridad será diferente dependiendo de si se desea proteger
ordenadores o datos. En este último caso, también hay que knowwhich datos.

• ¿Qué está tratando de proteger ¿en contra? Es que las fugas de datos confidenciales? pérdida accidental de datos? pérdida de ingresos
causada por la interrupción del servicio?

• También, quien está tratando de proteger contra? Las medidas de seguridad serán muy diferentes de protección frente a un error
tipográfico por un usuario regular del sistema de protección frente contra un grupo deter- minado atacante externo.

El término “riesgo” se utiliza habitualmente para referirse colectivamente a estos tres factores: lo que debe proteger, lo que debe
evitarse, y que podrían hacer que esto ocurra. Modelando el riesgo requiere respuestas a estas tres preguntas. A partir de este
riskmodel, una política de seguridad puede ser construido y la política se puede implementar con acciones concretas.

El cuestionamiento permanente Bruce Schneier, un experto mundial en materia de seguridad (no sólo la seguridad informática), intentos
para hacer frente a uno de los mitos importantes security'smost con amotto: “La seguridad es un proceso, no un producto.” Los

activos a ser protegidos cambian con el tiempo y también lo hacen las amenazas y los medios disponibles para posibles

atacantes. Incluso si una política de seguridad ha sido inicialmente perfectamente diseñado y puesto en práctica, nunca se debe

dormirse en los laureles. Los componentes de riesgo evolucionan y la respuesta a ese riesgo deben evolucionar en consecuencia.

restricciones adicionales son también vale la pena teniendo en cuenta, ya que pueden restringir la gama de políticas disponibles. ¿Hasta dónde estás

dispuesto a llegar para asegurar un sistema? Esta cuestión tiene un impacto importante en el que la política de implementar. Con demasiada frecuencia,

la respuesta sólo se define en términos de costos monetarios,

150 Kali Linux Revelado


pero otros elementos también deben ser considerados, tales como la cantidad de inconvenientes impuesta a los usuarios del sistema o
degradación del rendimiento.

Una vez que el riesgo se ha modelado, puede empezar a pensar en el diseño de 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 para

proporcionar la seguridad básica del sistema. Por ejemplo, si el systemto únicamente protegerse comprende un ordenador de

segunda mano, el uso exclusivo de los cuales es añadir algunos números al final del día, la decisión de no hacer nada especial para

protegerlo sería bastante razonable. El valor intrínseco del sistema es bajo y el valor de los datos son cero, ya que no se almacenan

en el ordenador. Un atacante potencial infiltración de este sistema sólo ganaría una calculadora. El costo de asegurar un sistema de

este tipo sería probablemente mayor que el costo de una violación.

En el otro extremo del espectro, es posible que desee proteger la confidencialidad de los datos secretos de la manera más completa posible,

superando cualquier otra consideración. En este caso, una respuesta piado appro- sería la destrucción total de los datos (de forma segura borrado

de los archivos, trituración de los discos duros en pedazos, a continuación, la disolución de estos bits en ácido, y así sucesivamente). Si hay un

requisito adicional de que los datos deben ser mantenidos en el almacén para su uso futuro (aunque no necesariamente fácilmente disponible), y si

el costo todavía no es un factor, entonces un punto de partida sería el almacenamiento de los datos sobre la aleación de iridio-platino placas

almacenadas en refugios a prueba de bombas en diversas montañas en el mundo, cada uno de los cuales es (por supuesto), ambos totalmente

secreto y protegido por ejércitos enteros.

Extrema, aunque estos ejemplos pueden parecer, que no obstante, sería una respuesta adecuada a ciertos riesgos definidos, en
tanto que son el resultado de un proceso de pensamiento que tiene en cuenta los objetivos a reachand las restricciones a cumplir.
Whencoming reasoneddecision froma, ninguna política de seguridad es más o menos respetable que cualquier otro.

Volviendo a un caso más típico, un sistema de información puede ser segmentado en subsistemas consistentes y en su mayoría
independientes. Cada subsystemwill tienen sus propios requisitos y limitaciones, por lo que la evaluación de riesgos y el diseño de
la política de seguridad debería 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 defender que uno grande. La organización de la red también debe ser diseñado en consecuencia:
los servicios sensibles deben concentrarse en un pequeño número de máquinas, y estas máquinas sólo debe ser cessible AC- a
través de un número mínimo de rutas o puntos de control. La lógica es simple: es más fácil de asegurar que esos puestos de
control para asegurar todas las máquinas sensibles frente a la totalidad del mundo exterior. Es en este punto que la utilidad de
filtrado de red (incluyendo por firewalls) se hace evidente. Este filtrado puede implementarse con hardware dedicado, pero una
solución más simple y más flexible es el uso de un firewall de software, tales como la integrada en el núcleo de Linux.

Capítulo 7 - Protección y Monitoreo Kali Linux 151


7.2. Posibles Medidas de Seguridad

A medida que la sección anterior explicó, no hay respuesta única a la pregunta de cómo asegurar Kali Linux. Todo depende
de cómo lo usa y lo que está tratando de proteger.

7.2.1. En un servidor

Si ejecuta Kali Linux en un servidor de acceso público, es muy probable que desea proteger vicios de red ser- cambiando las contraseñas
predeterminadas que pueden ser configuradas (ver sección 7.3, “Protección de servicios de trabajo Net-” [página 153]) y posiblemente
también restringiendo su acceso a un servidor de seguridad (ver sec- ción 7.4, “firewall o el filtrado de paquetes” [página 153]).

Si usted reparte las cuentas de usuario, ya sea directamente en el servidor o en uno de los servicios, usted quiere asegurarse de configurar

contraseñas seguras (que deben resistir los ataques de fuerza bruta). Al mismo tiempo, es posible que desee configurar fail2ban, lo que hará que

sea mucho más difícil de fuerza bruta contraseñas través de la red (mediante el filtrado de direcciones IP de distancia que exceden un límite de

intentos de acceso fallidos). Instalar

fail2ban con apt update seguido por apto instalar fail2ban.

Si ejecuta los servicios web, es probable que desea alojar themover HTTPS para evitar que la red intermedia- rios de oler
su tráfico (que podría incluir cookies de autenticación).

7.2.2. En un ordenador portátil

El ordenador 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 sea objeto de exploraciones aleatorias de niños de la escritura e incluso cuando se encuentre, es probable que no ha activado ningún servicio

de red .

riesgo real a menudo surge cuando se viaja de un cliente a otro. Por ejemplo, el portátil podría ser robado mientras viaja o se agarra por la
aduana. Por eso, es muy probable que desea utilizar el cifrado de disco completo (véase la sección 4.2.2, “Instalación en un sistema de
archivos totalmente encriptada” [página 85]) y posiblemente también configurar la función de “arma nuclear” (consulte “Adición de una
contraseña para Nuke Seguridad extra”[página 245]): los datos que se han recogido durante sus compromisos son confidenciales y
requieren la máxima protección.

Youmay también necesitan reglas de cortafuegos (ver sección 7.4, “Firewall o el filtrado de paquetes” [página 153]), pero no con el
mismo fin que en el servidor. Es posible que desee prohibir todo el tráfico saliente excepto el tráfico generado por el acceso a la
VPN. Esto se entiende como una red de seguridad, por lo que cuando la VPN está abajo, usted notará inmediatamente que (en
lugar de caer de nuevo al acceso a la red local). De esa manera, no divulgue las direcciones IP de sus clientes al navegar por la web
o realizar otras actividades en línea. Además, si va a realizar un compromiso internas locales, lo mejor es mantener el control de la
totalidad de su actividad para reducir el ruido que se crea en la red, que puede alertar al sus sistemas de defensa del cliente y.

152 Kali Linux Revelado


7.3. Protección de los servicios de red

En general, es una buena idea para desactivar los servicios que no utiliza. Kali hace que sea fácil de hacer esto, ya que la mayoría de los servicios de

red están desactivados por defecto.

Mientras se mantienen los servicios de personas con discapacidad, que no suponen ninguna amenaza para la seguridad. Sin embargo, hay que tener cuidado

cuando se habilita porque:

• no hay ningún servidor de seguridad por defecto, por lo que si se escuchan en todas las interfaces de red, que son efectivamente a disposición del
público.

• algunos servicios no tienen credenciales de autenticación y les permiten establecer en el primer uso; otros tienen por defecto (y por lo tanto
ampliamente conocidos) credenciales predefinidas. Asegúrese de (re) establecer ninguna contraseña a algo que sólo usted conozca.

• muchos servicios se ejecutan como root con privilegios de administrador completos, por lo que las consecuencias de un acceso de piezas no autorizada
o una violación de la seguridad son, por tanto, suelen ser graves.

Las credenciales predeterminadas No vamos a enumerar aquí todas las herramientas que vienen con credenciales por defecto, en lugar del que debiera

comprobar el README.Debian archivo de los respectivos paquetes, así como docs.kali.org 1


y tools.kali.org 2 para ver si el servicio necesita un poco de cuidados especiales para ser asegurado. Si se ejecuta en modo directo, la

contraseña de la cuenta root es “ Toor. ”Por lo tanto no se deben activar SSH antes de cambiar la contraseña de la cuenta de root, o

antes de haber ajustado su configuración para no permitir inicios de sesión basados ​en contraseñas. También tenga en cuenta que el

proyecto de la carne de vacuno (del paquete ya instalado carne de res-XSS) También se sabe que tiene las credenciales de usuario

por defecto “ternera”, contraseña “carne de vaca”) hardcoded en su archivo de configuración por defecto.

7.4. Servidor de seguridad o el filtrado de paquetes

UNA cortafuegos es una pieza de equipo de cómputo con el hardware, software o ambos que analiza los paquetes de red que
viene dentro o salientes (que viene a o saliendo de una red local) y sólo deja pasar aquellos que emparejan ciertas condiciones
predefinidas.

Una puerta de enlace de red de filtrado es un tipo de servidor de seguridad que protege a toda una red. Por lo general se instala en una máquina

dedicada configurado como puerta de entrada para la red de modo que pueda analizar todos los paquetes que pasan dentro y fuera de la red.

Alternativamente, un servidor de seguridad local es un servicio de software que se ejecuta en una máquina en particular con el fin de filtrar o limitar el

acceso a algunos servicios en esa máquina, o posiblemente para evitar que las conexiones salientes de software falso que un usuario podría,

voluntariamente o no, tenga instaladas.

1 https://docs.kali.org
2 https://tools.kali.org

Capítulo 7 - Protección y Monitoreo Kali Linux 153


El núcleo de Linux incorpora el netfilter cortafuegos. No hay una solución llave en mano para la configuración de cualquier servidor de seguridad ya que

los requisitos de red y de usuario difieren. Sin embargo, se puede controlar netfilter de usuario spacewith la iptables y ip6tables comandos. La diferencia

entre estos dos comandos es que los trabajos anteriores para redes IPv4, mientras que los segundos trabajos sobre IPv6. Dado que ambas pilas de

protocolos de red, probablemente será de alrededor durante muchos años, tendrán que ser utilizados en paralelo ambas herramientas. También puede

utilizar la excelente interfaz gráfica de usuario basada fwbuilder herramienta, que proporciona una ción gráfica de representación de las reglas de filtrado.

Sin embargo usted decide configurarlo, netfilter es la aplicación cortafuegos de Linux, así que vamos a echar un vistazo más de cerca cómo

funciona.

7.4.1. Comportamiento netfilter

netfilter utiliza cuatro mesas distintas, que almacenan las reglas que regulan tres tipos de operaciones en los paquetes:

• filtrar preocupaciones Reglas de filtrado (aceptando, Rechazar, o haciendo caso omiso de un paquete);

• NAT ( La traducción de direcciones de red) se refiere a la traducción de direcciones de origen o destino y los puertos de paquetes;

• mutilar preocupaciones otros cambios en los paquetes IP (incluyendo el ToS- Tipo de servicio -field y opciones);

• crudo permite otras modificaciones manuales en los paquetes antes de que alcancen la conexión pista- sistema ing.

Cada tabla contiene una lista de reglas llamadas cadenas. El cortafuegos utiliza cadenas estándar para manejar los paquetes basados ​en

circunstancias predefinidas. El administrador puede crear otras cadenas, que sólo se utilizarán cuando es referido por una de las cadenas

estándar (ya sea directa o indirectamente). los filtrar tabla tiene tres cadenas estándar:

• ENTRADA: se refiere a paquetes cuyo destino es el propio servidor de seguridad;

• SALIDA: se refiere a los paquetes emitidos por el servidor de seguridad;

• ADELANTE: se refiere a los paquetes que pasan a través del servidor de seguridad (que no es ni su origen ni su destino). los nat

tabla también tiene tres cadenas estándar:

• PREROUTING: modificar los paquetes tan pronto como llegan;

• POSTROUTING: modificar los paquetes cuando están listos para ir en su camino;

• SALIDA: para modificar los paquetes generados por el propio servidor de seguridad. Estas cadenas se ilustran en la Figura

7.1, “¿Cómo netfilter Las cadenas se llama”[página 155].

154 Kali Linux Revelado


Figura 7.1 Cómo netfilter Cadenas se denominan

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 servidor de seguridad escanea la cadena apropiada, una regla después de otro, y cuando se cumplen las condiciones
para una regla, salta (de ahí el - j opción en los comandos) a la acción especificada para continuar el procesamiento. Los comportamientos más
comunes están dares dardized y existen acciones específicas para ellos. Tomando una de estas acciones estándar interrumpe el
procesamiento de la cadena, ya que el destino de paquetes ya está sellado (salvo una excepción menciona a continuación). A continuación se
enumeran netfilter comportamiento.

• ACEPTAR: permitir que el paquete para ir en su camino.

• RECHAZAR: rechazar el paquete con un paquete de protocolo de mensaje (ICMP) error de control de Internet (la - rechazar-con
tipo opción de iptables determina el tipo de error para enviar).

• SOLTAR: eliminar (ignorar) el paquete.

• INICIAR SESIÓN: log (a través syslogd) 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, que iswhy registro de refusedpackets
requiere tanto una regla / DROP LOGand aREJECT. parámetros comunes asociados con el registro incluyen:

- - - nivel de registro, con el valor por defecto advertencia, indica el syslog nivel de severidad.
- - - log-prefix permite la especificación de un prefijo de texto para diferenciar entre mensajes registrados.
- - - log-tcp-secuencia, --log-tcp-options, y - log-ip-options indican datos adicionales a ser in- tegrated en el mensaje:
respectivamente, el número de secuencia TCP, TCP opciones, y las opciones de IP.

• ULOG: registrar un mensaje a través de ulogd, que puede ser mejor adaptada y más eficiente que
syslogd para el manejo de un gran número de mensajes; en cuenta que esta acción, como LOG, también re- vueltas de procesamiento a la

siguiente regla de la cadena de llamadas.

• chain_name: saltar a la cadena dada y evaluar sus reglas.

Capítulo 7 - Protección y Monitoreo Kali Linux 155


• REGRESO: interrumpir el procesamiento de la cadena actual y regresar a la cadena que llama; en el caso de la cadena actual es
estándar, no hay cadena de llamadas, por lo que la acción predeterminada (definida con el - PAG opción de iptables) se ejecuta en
su lugar.

• SNAT ( sólo en el nat tabla): se aplican La traducción de direcciones de red de origen ( SNAT). Opciones adicionales se describen los
cambios exactos para aplicar, incluyendo el - a la fuente dirección: puerto opción, que define la nueva dirección IP de origen y / o

puerto.

• DNAT ( sólo en el nat tabla): se aplican La traducción de direcciones de red de destino ( DNAT). op- ciones adicionales se
describen los cambios exactos para aplicar, incluyendo el - a-destino dirección: puerto opción, que define la nueva dirección IP de
destino y / o puerto.

• MASCARADA ( sólo en el nat tabla): se aplican enmascaramiento ( un caso especial de Fuente NAT).

• REDIRECT ( sólo en el nat tabla): transparente redirigir un paquete a un puerto dado de la propia firewall; esto puede ser

usado para configurar un proxy transparente web que funciona sin con- figuración en el lado del cliente, ya que el cliente

piensa que conecta con el receptor mientras que las comunicaciones van realmente a través del proxy. Los -- a-puertos puerto

(s) opción indica el intervalo de puertos, o puerto, donde deben ser redirigidos los paquetes. Otras acciones, en particular
las relativas a la mutilar tabla, están fuera del alcance de este texto. los iptables (8) y ip6tables (8) páginas man tienen una lista

completa.

¿Cuál es ICMP? Protocolo de mensajes de control de Internet ( ICMP) es el protocolo utilizado para transmitir información auxiliar en las
comunicaciones. Se prueba la conectividad de red con el silbido de comandos, que envía un ICMP solicitud de eco mensaje,
que el receptor está destinado a responder con un ICMP respuesta de eco mensaje. Se señala un firewall rechazar un
paquete, indica un desbordamiento en una memoria intermedia de recepción, propone una mejor ruta para los próximos
paquetes en la conexión, y así sucesivamente. Este protocolo se define por varios documentos RFC. RFC777 y RFC792
fueron la primera, pero muchos otros extendidos y / o revisaron el protocolo.

mi http://www.faqs.org/rfcs/rfc777.html

mi http://www.faqs.org/rfcs/rfc792.html

Como referencia, una memoria intermedia de recepción es una pequeña zona de memoria que almacena datos entre el

momento en que llega desde la red y el tiempo del kernel maneja. Si esta zona está llena, los nuevos datos no se pueden recibir

señales de ICMP y el problema para que el emisor puede ralentizar su velocidad de transferencia (que debe llegar a un equilibrio

ideal sería que después de algún tiempo). Tenga en cuenta que a pesar de una red IPv4 puede funcionar sin ICMP, ICMPv6 es

estrictamente necesario para una red IPv6, ya que combina varias funciones que eran, en el mundo IPv4, todas repartidas en

ICMPv4, Protocolo de pertenencia a grupos de Internet ( IGMP), y Protocolo de resolucion de DIRECCION ( ARP).

ICMPv6 se define en la RFC4443.

mi http://www.faqs.org/rfcs/rfc4443.html

156 Kali Linux Revelado


7.4.2. sintaxis de iptables y ip6tables

los iptables y ip6tables comandos se utilizan para manipular las tablas, cadenas y reglas. Su
- t mesa opción indica qué tabla para operar en (por defecto, filtrar).

comandos

Las principales opciones para interactuar con cadenas se enumeran a continuación:

• - L cadena enumera las reglas en la cadena. Esto es comúnmente utilizado con el - norte Opción para desactivar la resolución de nombres
(por ejemplo, iptables -N -L ENTRADA mostrará las reglas relacionadas con la in- próximos paquetes).

• -N cadena crea anewchain. Puede createnewchains para anumber de propósitos, incluyendo la prueba de un nuevo servicio
de red o defenderse de un ataque de red.

• -X cadena Elimina una cadena vacía y sin usar (por ejemplo, iptables -X DDoS-ataque).

• - UNA cadena de reglas agrega una regla al final de la cadena dada. Recuerde que las reglas se procesan de arriba a abajo así que
asegúrese de tener esto en cuenta a la hora de añadir reglas.

• - YO regla rule_num cadena Inserta una regla antes de la regla número rule_num. Al igual que con el - UNA opción, mantener el orden de
procesamiento en cuenta a la hora de insertar nuevas reglas en una cadena.

• - D rule_num cadena ( o - re cadena de reglas) elimina una regla en una cadena; la primera sintaxis identifica la regla que desea
eliminar por su número ( iptables -L---line números mostrará estas fibras No. de orden), mientras que el segundo lo identifica por su
contenido.

• - F cadena vuelca una cadena (elimina todos sus reglas). Por ejemplo, para eliminar todas las reglas relacionadas con los paquetes de
salida, tendría que ejecutar iptables -F SALIDA. Si no se menciona ninguna cadena, se eliminan todas las reglas de la tabla.

• - PAG acción cadena define la acción predeterminada, o “política” para una cadena dada; en cuenta que las cadenas dard única dares pueden tener
una política de este tipo. Para excluir todo el tráfico entrante por defecto, debe ejecutar

iptables -P GOTA DE ENTRADA.

Reglas

Cada regla se expresa como condiciones - j action_options de acción. Si se describen varias condiciones en la misma norma,

entonces el criterio es la conjunción (lógico Y) de las condiciones, que es al menos tan restrictivas como cada condición individual. Los

- pag protocolo condición coincide con el campo de protocolo del paquete IP. Los valores más comunes son tcp, UDP, ICMP, y ICMPv6. Esta

condición se puede complementar con las condiciones en los puertos TCP, con cláusulas como - Puerto de origen Puerto y - Puerto de

destino Puerto.

Capítulo 7 - Protección y Monitoreo Kali Linux 157


negando Condiciones Anteponiendo una condición con un signo de exclamación niega la condición. Por ejemplo,
negando una condición en la - pag opción coincide con “cualquier paquete con un protocolo diferente de la
especificada.” Este mecanismo negación se puede aplicar a todas las otras condiciones también.

Los - s dirección o - s red / máscara condición coincide con la dirección de origen del paquete. Correspondientemente, - re dirección o

- re red / máscara coincide con la dirección de destino. Los - yo interfaz condición selecciona paquetes procedentes de la interfaz de

red dado. - o interfaz


selecciona los paquetes de salir en una interfaz específica. Los -- estado estado condición coincide con el estado de un paquete en una

conexión (esto requiere la conntrack ipt_ módulo del núcleo, para el seguimiento de conexiones). los NUEVO estado describe un paquete

de iniciar una nueva conexión, ESTABLECIDO partidos paquetes que pertenecen a una conexión ya existente, y RELACIONADO partidos

paquetes que inician una nueva conexión relacionada con una ya existente (que es útil para la ftp-data conexiones en el modo “activo”

del protocolo FTP). Hay muchas opciones disponibles para iptables y ip6tables y el dominio de todos ellos requiere una gran cantidad de

estudio y experiencia. Sin embargo, una de las opciones que va a utilizar con mayor frecuencia es la de blockmalicious tráfico de la red

de acogida froma o rango de los ejércitos. Por ejemplo, para bloquear el tráfico entrante en silencio desde la dirección IP 10.0.1.5 y el 31.13.74.0/24

clase C de subred:

# iptables -A -s ENTRADA 10.0.1.5 -j DROP


# iptables -A -s ENTRADA 31.13.74.0/24 -j DROP
# iptables -N -L ENTRADA
Chain INPUT (política ACCEPT) objetivo
fuente opt prot destino
SOLTAR todo - 10.0.1.5 0.0.0.0/0
SOLTAR todo - 31.13.74.0/24 0.0.0.0/0

Otra comúnmente utilizado iptables comando es para permitir el tráfico de red para un servicio o un puerto específico. Para permitir a los
usuarios conectarse a SSH, HTTP, e IMAP, puede ejecutar los siguientes comandos:

# Estado iptables ENTRADA -m -p tcp --state NUEVO --dport 22 -j ACCEPT


# estado iptables -A ENTRADA -m --state NUEVO -p tcp --dport 80 -j ACCEPT
# iptables -A ENTRADA -m estado --state NUEVO tcp -p --dport 143 -j ACCEPT
# iptables -N -L ENTRADA
Chain INPUT (política ACCEPT) objetivo
fuente opt prot destino
SOLTAR todo - 10.0.1.5 0.0.0.0/0
SOLTAR todo - 31.13.74.0/24 0.0.0.0/0
ACEPTAR tcp - 0.0.0.0/0 0.0.0.0/0 Estado de Nueva dpt tcp: 22
ACEPTAR tcp - 0.0.0.0/0 0.0.0.0/0 Estado de Nueva dpt tcp: 80
ACEPTAR tcp - 0.0.0.0/0 0.0.0.0/0 Estado de Nueva dpt tcp: 143

Se considera que es buena computadora higiene para limpiar las viejas reglas e innecesarios. La forma más fácil de borrar iptables reglas es
para hacer referencia a las normas por número de línea, que se puede recuperar con

158 Kali Linux Revelado


la -- Línea de números opción. Tenga cuidado sin embargo: dejar caer una regla volverá a numerar todas las reglas que aparecen más abajo en la

cadena.

# iptables -N -L INPUT --line números


Chain INPUT (ACEPTAR política) objetivo num
fuente opt prot destino
1 SOLTAR todo - 10.0.1.5 0.0.0.0/0
2 SOLTAR 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 de Nueva dpt tcp: 22
4 ACEPTAR tcp - 0.0.0.0/0 0.0.0.0/0 Estado de Nueva dpt tcp: 80
5 ACEPTAR tcp - 0.0.0.0/0 0.0.0.0/0 Estado de Nueva dpt tcp: 143
# iptables ENTRADA -D 2
# iptables ENTRADA -D 1
# iptables -N -L INPUT --line números
Chain INPUT (ACEPTAR política) objetivo num
fuente opt prot destino
1 ACEPTAR tcp - 0.0.0.0/0 0.0.0.0/0 Estado de Nueva dpt tcp: 22
2 ACEPTAR tcp - 0.0.0.0/0 0.0.0.0/0 Estado de Nueva dpt tcp: 80
3 ACEPTAR tcp - 0.0.0.0/0 0.0.0.0/0 Estado de Nueva dpt tcp: 143

Hay condiciones más específicas, dependiendo de las condiciones genéricos descritos anteriormente. Para obtener más
información, consulte iptables (8) y ip6tables (8)

7.4.3. Creación de reglas

Cada creación regla requiere una invocación iptables o ip6tables. Al escribir estos comandos manualmente puede ser tedioso, por lo que las llamadas

se suelen almacenar en una secuencia de comandos para que el sistema se configura automática- mente de la misma manera cada vez que se

inicia el equipo. Este script puede ser escrito a mano, pero también puede ser interesante para prepararlo con una herramienta de alto nivel tales

como fwbuilder.

# apto fwbuilder instalar

El principio es simple. En el primer paso, estén todos los elementos que van a participar en las reglas actuales:

• El servidor de seguridad en sí, con sus interfaces de red

• Las redes, con sus rangos de IP correspondientes

• los servidores

• Los puertos que pertenecen a los servicios alojados en los servidores

A continuación, crear las reglas con las acciones de arrastrar y soltar en los objetos como se muestra en la Figura 7.2, “MainWindow de
fwbuilder” [página 160]. Unos menús contextuales pueden cambiar la condición (ing negat- que, por ejemplo). A continuación, la acción
debe ser elegido y configurado.

En lo que se refiere a IPv6, puede crear dos conjuntos de reglas diferentes para IPv4 e IPv6, o crear un único y dejar fwbuilder traducir
las normas de acuerdo con las direcciones asignadas a los objetos.

Capítulo 7 - Protección y Monitoreo Kali Linux 159


Figura 7.2 La ventana principal de fwbuilder

fwbuilder generará un script de configuración del servidor de seguridad de acuerdo con las reglas que se han definido.
arquitectura Itsmodular le da la capacidad de generar sistemas targetingdifferent guiones incluidos iptables para Linux, IPF para
FreeBSD, y PF para OpenBSD.

7.4.4. La instalación de las Reglas en cada arranque

Con el fin de implementar el servidor de seguridad gobierna cada vez que se inicie themachine, youwill necesita registrar el script de

configuración en una arriba Directiva del / etc / network / interfaces expediente. En el siguiente ejemplo, la secuencia de comandos se almacena bajo

/ usr / local / etc / arrakis.fw local. eth0 automático

del iface eth0 inet static


dirección de red 192.168.0.1 192.168.0.0
máscara de red 255.255.255.0 broadcast
192.168.0.255 hasta /usr/local/etc/arrakis.fw

160 Kali Linux Revelado


En este ejemplo se asume que está utilizando ifupdown para configurar las interfaces de red. Si está utilizando otra cosa (como Gerente de
Redes o systemd-networkd), a continuación, consulte a su respectiva documentación para averiguar formas de ejecutar una secuencia de
comandos después de la interfaz ha sido criado.

7.5. Monitoreo y registro

confidencialidad y protección de datos es un aspecto importante de la seguridad, pero es igualmente importante para asegurar la disponibilidad

de los servicios. Como administrador y profesional de la seguridad, debe asegurarse de que todo funciona como se esperaba, y es su

responsabilidad para detectar comportamientos anómalos y la degradación del servicio en el momento oportuno. Supervisión y registro de

software juega un papel clave en este aspecto de la seguridad, proporcionando información sobre lo que está ocurriendo en el sistema y la red.

En esta sección, vamos a revisar algunas de las herramientas que se pueden utilizar para controlar varios aspectos de un sistema de Kali.

7.5.1. Monitoreo de registros con logcheck

los logcheck monitores del programa fichero de registro cada hora de forma predeterminada y envía mensajes de registro inusuales en mensajes de

correo electrónico al administrador para su posterior análisis. La lista de archivos monitorizados se almacena en / etc / logcheck / logcheck.logfiles. Los

valores por defecto funcionan bien si el / etc / rsyslog.conf archivo no ha sido completamente modificada.

logcheck puede reportar en varios niveles de detalle: paranoico, servidor, y puesto de trabajo. paranoico es muy

verbosa y probablemente debería restringirse a servidores específicos tales como cortafuegos. servidor es el modo por defecto y se recomienda

para la mayoría de los servidores. puesto de trabajo obviamente está diseñado para estaciones de trabajo y es muy escueta, el filtrado de los

mensajes más que las otras opciones. En los tres casos, logcheck probablemente debería ser personalizadas para excluir algunos mensajes

adicionales (des pendiente sobre los servicios instalados), a menos que realmente desea recibir los lotes por hora de los mensajes de correo

electrónico largos interesantes y atractivos unin-. Dado que el mecanismo de selección de mensaje es bastante complejo, / usr / share / doc /

logcheck-base de datos / README.logcheck-database.gz REQUERIDO-si-leer un reto. Las reglas aplicadas se pueden dividir en varios tipos:

• para aquellos que recibirán un mensaje como un intento de craqueo (almacena en un archivo en el directorio / etc / logcheck / cracking.d / directorio);

• intentos de craqueo ignorados (/ etc / logcheck / cracking.ignore.d /);

• aquellos clasificar un mensaje como una alerta de seguridad (/ etc / logcheck / violations.d /);

• alertas de seguridad ignorados (/ etc / logcheck / violations.ignore.d /);

• por último, las que se aplican a los mensajes restantes (considerado como los eventos del sistema).

Capítulo 7 - Protección y Monitoreo Kali Linux 161


ignore.d archivos se utilizan para ignoremessages (obviamente). Por ejemplo, amessage etiquetado como un intento de agrietamiento o una alerta
de seguridad (siguiendo una regla almacenada en un / etc / logcheck / violations.d / mi_archivo

archivo) sólo puede ser ignorado por regla general en un / etc / logcheck / violations.ignore.d / mi_archivo o / etc / logcheck /
violations.ignore.d / myfile- extensión expediente. Un evento del sistema siempre se indica a menos que una regla en uno de los / etc /

logcheck / ignore.d. {Paranoico, servidor, estación de trabajo} / directorios establece el evento debe ser ignorada. Por supuesto, los únicos

directorios tomadas en cuenta son los que corresponden a la verbosidad niveles igual o mayor que el modo de funcionamiento
seleccionado.

7.5.2. Supervisión de la actividad en tiempo real

parte superior es una herramienta interactiva que muestra una lista de procesos actualmente en ejecución. La clasificación predeterminado se basa en la

cantidad actual de uso del procesador y se puede obtener con el PAG llave. Otros criterios de ordenación incluyen una especie de occupiedmemory ( METRO clave),

por el tiempo total del procesador ( T clave), y por el identificador de proceso ( norte llave). los k clave mata a un proceso mediante la introducción de su

identificador de proceso. los r cambios clave la prioridad de un proceso.

Cuando el sistema parece estar sobrecargado, parte superior Es una gran herramienta para ver qué procesos están compe- ción de tiempo de
procesador o consumir demasiada memoria. En particular, a menudo es interesante comprobar si los procesos que consumen recursos
coinciden con los servicios reales que la máquina es conocida por albergar. Un proceso desconocido se ejecuta como el usuario “www-data”
en realidad debería destacar y ser investigadas, ya que es probable que una instancia del software instalado y ejecutado en el sistema a
través de una vulnerabilidad en una aplicación web.

parte superior Es una herramienta muy flexible y su página de manual da detalles sobre cómo personalizar su pantalla y adaptarlo a sus necesidades y

hábitos personales. los gnome-system-monitor herramienta gráfica es similar a parte superior y proporciona más o menos las mismas las distintas

prestaciones.

7.5.3. la detección de cambios

Una vez que un sistema está instalado y configurado, la mayoría de los archivos del sistema deben permanecer relativamente estático hasta que el sistema

se actualice. Por lo tanto, es una buena idea para monitorear los cambios en los archivos del sistema, ya que cualquier cambio inesperado podría ser motivo

de alarma y debe ser investigado. Esta sección presenta algunas de las herramientas más comunes que se utilizan para supervisar los archivos del sistema,

detectar los cambios, y opcionalmente se notifique al administrador del sistema.

Paquetes de auditoría con dpkg --verify

dpkg --verify ( o dpkg -V) es una herramienta interesante, ya que muestra los archivos del sistema que se beenmodified

(potencialmente por un atacante), pero este resultado se debe tomar con un grano de sal. A

162 Kali Linux Revelado


hacer su trabajo, dpkg se basa en las sumas de comprobación almacenados en su propia base de datos que se almacena en el disco duro (que se

encuentra en / var / lib / dpkg / info / paquete. md5sums). Por tanto, un atacante a fondo va a modificar estos archivos por lo que contienen las nuevas

sumas de comprobación de los archivos subvertido, o un atacante avanzada pondrá en peligro el paquete en su réplica. Para protegerse contra

este tipo de ataque, utilizar el sistema de verificación de firma digital de APT (véase la sección 8.3.6, “Validación de autenticidad de un paquete”

[página 202]) para verificar adecuadamente los paquetes.

¿Qué es una huella digital del archivo? Como recordatorio: una huella digital es un valor, a menudo un número (aunque en no- hexadecimal
tación), que contiene una especie de firma de los contenidos de un archivo. Esta firma se calcula con un algoritmo (MD5
o SHA1 siendo ejemplos bien conocidos) que más o menos garantiza que incluso el más mínimo cambio en el contenido
del archivo dará lugar a un cambio de la huella dactilar; esto se conoce como el “efecto avalancha”. Un simple huella
digital numérica sirve entonces como una prueba de fuego para comprobar si el contenido de un archivo han sido
alterados. Estos algoritmos no son reversibles; en otras palabras, la mayor parte de ellos, a sabiendas de una huella
digital no permite la búsqueda de los contenidos correspondientes. Recientes avances matemáticos parecen debilitar el
carácter absoluto de estos principios, pero su uso no se ponga en duda hasta el momento, ya que la creación de
diferentes contenidos que producen la misma huella todavía parece ser una tarea bastante difícil.

Corriendo -V dpkg verificará todos los paquetes instalados y se imprimirá una línea para cada archivo que no pasa la verificación. Cada personaje denota

una prueba en alguna de meta-datos específica. Desafortunadamente, dpkg no almacena los metadatos necesarios para la mayoría de las pruebas y

signos de interrogación será por lo tanto de salida para ellos. Actual- mente sólo la prueba de suma de control puede producir un 5 en el tercer carácter

(cuando falla).

# -V dpkg
?? 5 ?????? /lib/systemd/system/ssh.service ?? 5 ?????? c
/etc/libvirt/qemu/networks/default.xml ?? 5 ?????? c /etc/lvm/lvm.conf ?? 5 ?????? c /
etc / sal / lista

En el ejemplo anterior, dpkg informa de un cambio en el archivo de servicio de SSH que el administrador hizo con el archivo empaquetado
en lugar de utilizar un apropiado / etc / systemd / system / ssh.service override (que se almacena por debajo de / etc. como cualquier cambio en
la configuración debe ser). También enumera varios archivos de configuración (identificadas por la letra “c” en el segundo campo) que
habían sido modificados legítimamente.

Monitoreo de Archivos: AIDE

La herramienta comprueba el Medio Ambiente Avanzada de Detección de Intrusos (AIDE) integridad de los archivos y detecta cualquier cambio en

contra de una imagen grabada previamente del sistema válido. La imagen se almacena como una base de datos (/ var / lib / ayudante / aide.db) que

contiene la información pertinente sobre todos los archivos del sistema (huellas dactilares, permisos, marcas de tiempo, y así sucesivamente). Puede

instalar mediante la ejecución de AIDE apt update seguido por apto instalar ayudante. Youwill primera inicialización ize la base de datos con aideinit; que se

ejecutará al día (a través de la / etc / cron.daily / ayudante guión) a

Capítulo 7 - Protección y Monitoreo Kali Linux 163


compruebe que ha cambiado nada relevante. Cuando se detectan cambios, AIDE los registra en los archivos de registro (/ var / log / ayudante / *. log) y

envía sus conclusiones al administrador por correo electrónico.

La protección de la base de datos Desde AIDE utiliza una base de datos local para comparar los estados de los archivos, la validez de
sus resultados está directamente relacionada con la validez de la base de datos. Si un atacante obtiene permisos de root en un

sistema comprometido, que será capaz de reemplazar la base de datos y cubrir sus huellas. Una forma de prevenir esta

subversión es almacenar los datos de referencia en medios de almacenamiento de sólo lectura.

Puede utilizar las opciones en / etc / default / ayudante para modificar el comportamiento de la ayudante paquete. La configuración AIDE adecuada

se almacena en / etc / ayudante / aide.conf y / etc / ayudante / aide.conf.d / ( ac- tualmente, estos archivos sólo son utilizados por update-aide.conf para

generar / var / lib / ayudante / aide.conf. auto generado). La configuración indica que las propiedades de los archivos que necesitan ser comprobados.

Por ejemplo, el contenido de los archivos de registro de los cambios de forma rutinaria, y tales cambios pueden ser ignorados, siempre y

cuando los permisos de estos archivos se mantienen igual, pero tanto los contenidos y los permisos de programas ejecutables deben ser

constantes. Aunque no es muy compleja, la sintaxis de configuración no es totalmente intuitiva y recomendamos la lectura de la aide.conf (5) página

del manual para más detalles. Una nueva versión de la base de datos se genera a diario en / var / lib / ayudante / aide.db.new; si todos los cambios

registrados eran legítimos, que puede ser utilizado para reemplazar la base de datos de referencia.

Tripwire es muy similar a AIDE; incluso la sintaxis del archivo de configuración es casi lo mismo. La principal adición proporcionada por cable

trampa es un mecanismo para firmar el archivo de configuración para que un atacante no puede 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 (véase el recuadro “El checksecurity
y chkrootkit / rkhunter paquetes”[página 164]). También se puede implementar a nivel mundial en una red y registrar sus huellas en un
servidor central (con una firma).

los checksecurity y checksecurity se compone de varios pequeños scripts que performbasic controles del régimen (en busca de contraseñas
chkrootkit / rkhunter vacías, los nuevos archivos setuid, y así sucesivamente) y le advierten si se detectan estas condiciones. A pesar de su
paquetes nombre explícito, no debe basarse únicamente en él para asegurarse de que Linux es un sistema seguro. los chkrootkit y rkhunter

detectar ciertos paquetes rootkits potencialmente instalado en el sistema. A modo de recordatorio, estos son piezas de

software diseñados para ocultar el compromiso de un sistema mientras discretamente mantener el control de la máquina. Las

pruebas no son 100 por ciento confiable, pero por lo general pueden llamar su atención sobre problemas potenciales.

7.6. Resumen

En este capítulo, nos dimos un vistazo al concepto de políticas de seguridad, destacando varios puntos a considerar cuando se define una
política de este tipo y esbozar algunas de las amenazas a su sistema y para usted personalmente como profesional de seguridad. Hemos
discutido las medidas de seguridad portátiles y de escritorio, así

164 Kali Linux Revelado


como cortafuegos y filtrado de paquetes. Por último, se reviewedmonitoring herramientas y estrategias y mostró cómo implementar

mejor a detectar amenazas potenciales a su sistema. Resumen Consejos:

• Tómese el tiempo para definir una política de seguridad integral.

• Si está ejecutando Kali en un servidor de acceso público, cambiar las contraseñas por defecto para los servicios que pueden ser
configuradas (ver sección 7.3, “Protección de servicios de red” [página 153]) y restringir su acceso con un servidor de seguridad
(ver sección 7.4 “, Firewall o el filtrado de paquetes”[página 153]) antes de lanzarlos.

• Utilizar fail2ban para detectar y bloquear ataques de adivinar la contraseña y remotas ataques de contraseña de fuerza bruta.

• Si ejecuta los servicios web, el anfitrión de ellos a través de HTTPS para evitar intermediarios de la red de oler su
tráfico (que podría incluir cookies de autenticación).

• riesgo real a menudo surge cuando se viaja al cliente fromone a la siguiente. Por ejemplo, su parte superior CUBRAN EL REGAZO podría ser itinerante
stolenwhile o incautados por la aduana. Prepararse para estas posi- bilidades desafortunadas mediante el uso de cifrado de disco completo (véase la

sección 4.2.2, “Instalación en un sistema de archivos totalmente encriptada” [página 85]) y considerar la función nuclear (consulte “Adición de una

contraseña para mayor seguridad del arma nuclear” [ página 245]) para proteger los datos de los clientes.

• Aplicar las reglas del cortafuegos (ver sección 7.4, “Firewall o el filtrado de paquetes” [página 153]) para prohibir todo el tráfico
saliente excepto el tráfico generatedBy yourVPNaccess. Este ismeant como red de seguridad, por lo que cuando la VPN está abajo,
inmediatamente se percibe que (en lugar de caer de nuevo al acceso a la red local).

• deshabilitar servicios que no utilizan. Kali hace que sea fácil de hacer esto ya que todos los servicios de red externos están desactivados
por defecto.

• El núcleo de Linux incorpora el netfilter cortafuegos. No hay una solución llave en mano para la configuración de cualquier servidor de seguridad, ya
que los requisitos de red y de usuario difieren. Sin embargo, se puede controlar netfilter

de espacio de usuario con el iptables y ip6tables comandos.

• los logcheck programmonitors fichero de registro cada hora de forma predeterminada y envía sabios de registro inusual men- en mensajes de correo
electrónico al administrador para su posterior análisis.

• parte superior es una herramienta interactiva que muestra una lista de procesos actualmente en ejecución.

• dpkg --verify ( o dpkg -V) muestra los archivos del sistema que se beenmodified (potencialmente por un atacante), pero depende de las
sumas de comprobación, que pueden ser subvertidos por un atacante inteligente.

• La herramienta comprueba avanzada IntrusionDetection Medio Ambiente (AIDE) integridad de los archivos y detecta cualquier cambio en
contra de una imagen grabada previamente del sistema válido.

• Tripwire es muy similar a AIDE pero utiliza un mecanismo para firmar el archivo de configuración, de manera que un atacante no puede
hacer que apunte a una versión diferente de la base de datos de referencia.

• Considere el uso de rkhunter, checksecurity, y chkrootkit para ayudar a detectar rootkits en el sistema.

Capítulo 7 - Protección y Monitoreo Kali Linux 165


En el siguiente capítulo, vamos a cavar en Fundamentos de Debian y de gestión de paquetes. Usted va a entender rápidamente el poder
detrás de las raíces de Debian de Kali y aprender cómo los desarrolladores han aprovechado ese poder. Se advirtió, el siguiente capítulo
es bastante densa, pero es fundamental que se entenderían incluso conceptos básicos y gestión de paquetes de Debian si va a ser un
usuario avanzado de Kali.

166 Kali Linux Revelado


Palabras clave

Las

actualizaciones

dpkg

sources.list de apt

repositorios de paquetes
Capítulo

Paquetes Debian 8
administración
Contenido

Introducción a la APT 170 Interacción Paquete Básico 175 Configuración de APT avanzada y Uso 194

De referencia del paquete: Profundizando en el sistema de paquetes de Debian 204 Resumen 216
Después de los conceptos básicos de Linux, es el momento de aprender el sistema de gestión de paquetes de una distribución basada en

Debian. En tales distribuciones, incluyendo Kali, el paquete Debian es la forma canónica de hacer que el software disponible para los usuarios

finales. La comprensión del sistema de gestión de paquetes le dará una gran cantidad de información sobre howKali está estructurado, que

pueda tomore solucionar eficazmente los problemas, y le ayudará a localizar rápidamente ayuda y documentación para thewide gama de

herramientas y utilidades incluidas en Kali Linux.

En este capítulo, el wewill introducir theDebianpackagemanagement systemand introducir dpkg y una suite de herramientas theAPT. Uno de
los principales puntos fuertes de Kali Linux radica en la flexibilidad de su sistema de gestión de paquetes, que aprovecha estas
herramientas para proporcionar una instalación casi de una pieza, actualizaciones, extracción y manipulación del software de aplicación, e
incluso del propio sistema operativo base. Es importante que usted entienda cómo este Systemworks para obtener el máximo provecho de
Kali y optimizar sus esfuerzos. Los días de compilaciones dolorosas, actualizaciones desastrosas, depuración gcc, make, y

configurar problemas han quedado atrás, sin embargo, el número de aplicaciones disponibles se ha disparado y hay que entender las

herramientas diseñadas para aprovecharse de ellos. Esto también es una habilidad crítica porque hay una serie de herramientas de
seguridad que, debido a la concesión de licencias u otras cuestiones, no pueden ser incluidos en Kali, pero los paquetes de Debian para
su descarga. Es importante que usted sepa cómo procesar e instalar estos paquetes y su impacto en el sistema, especiallywhen las
cosas no salen como se esperaba.

Wewill beginwith algunas descripciones básicas de APT, describir la estructura y el contenido de los paquetes binarios y fuentes, echar un vistazo a

algunas herramientas y escenarios básicos, y luego profundizar más para ayudarle a exprimir hasta la última gota de la utilidad de este espectacular

sistema de paquetes y un conjunto de herramientas .

8.1. Introducción a la APT

Vamos a empezar con algunas definiciones básicas, una visión general y un poco de historia acerca de los paquetes de Debian, a partir de dpkg y

APT.

8.1.1. Relación entre la APT y dpkg

Un paquete Debian es un archivo comprimido de una aplicación de software. UNA paquete binario ( a . debutante archivo) contiene los archivos

que se pueden utilizar directamente (como los programas o documentación), mientras que una edad fuente Pack- contiene el código fuente

del software y las instrucciones necesarias para la construcción de un paquete binario. Un paquete Debian contiene archivos de la aplicación,

así como otra metadatos incluyendo los nombres de las dependencias necesita la aplicación, así como las secuencias de comandos que

permiten la ejecución de comandos en diferentes etapas del ciclo de vida del paquete (instalación, remoción y actualizaciones). los dpkg herramienta

fue diseñada para procesar e instalar. debutante los paquetes, pero si se encontró una dependencia isfied unsat- (como una biblioteca que

falta) que impida el paquete de instalación, dpkg

sería simplemente una lista de la dependencia que falta, porque no tenía la conciencia o una función de la lógica para encontrar o procesar los

paquetes que podrían satisfacer esas dependencias. El Advanced Package Tool (APT),

170 Kali Linux Revelado


incluso apto y apt-get, fueron diseñados para hacer frente a estas deficiencias y podría resolver automáticamente estos temas. Vamos a
hablar de los dos dpkg y las herramientas APT en este capítulo. El comando de base para el manejo de paquetes de Debian en el
sistema es dpkg, que realiza ción o análisis de instala-. debutante paquetes y sus contenidos. Sin embargo, dpkg tiene una visión parcial
del universo Debian: sepa qué está instalado en el sistema y todo lo que usted proporciona en la línea de Mand com-, pero no sabe
nada de los otros paquetes disponibles. Como tal, se producirá un error si no se cumple una dependencia. direcciones APT las
limitaciones.

APT es un conjunto de herramientas que helpmanage Debianpackages, o aplicaciones en su sistema Debian. Puede utilizar APT
para instalar y eliminar aplicaciones, actualizar paquetes, e incluso actualizar todo el sistema. La magia de la mentira de la APT en
el hecho de que es un sistema de gestión de paquetes completa que no sólo instalar o desinstalar un paquete, pero tendrá en
cuenta los requisitos y las dependencias de la aplicación empaquetada (e incluso sus requisitos y dependencias) y tratar de
satisfacer themautomatically . APT se basa en dpkg pero difiere de la APT dpkg, ya que el primero se instala el paquete más reciente
de una fuente en línea y trabaja para resolver las dependencias, mientras dpkg instala un paquete se encuentra en el sistema local y
no resuelve automáticamente las dependencias. Si ha existido el tiempo suficiente para recordar la compilación de programas con gcc
( incluso con la ayuda de los servicios públicos tales como hacer y configurar), es probable que recordar que fue un proceso doloroso,

especialmente si la aplicación tenía varias dependencias. Descifrando los diversos avisos y mensajes de error, que puede ser
capaz de determinar qué parte del código estaba fallando y más a menudo que el fracaso se debió a la falta de una biblioteca u otra
dependencia. A continuación, rastrear la biblioteca que falta o dependencia, corregirlos, y vuelve a intentarlo. Entonces, si tienes
suerte, la compilación sería completa, pero a menudo la acumulación fallaría de nuevo, quejándose de otra depen- dencia roto.

APTwas diseñados para ayudar a aliviar este problema, cotejar programrequirements y dependencias, y resolverlos. Esta
funcionalidad trabaja fuera de la caja de Kali Linux, pero no es infalible. Es importante que entienda howDebian y systemworks
embalaje de Kali, ya que necesitará para instalar paquetes, actualizar el software, o solucionar problemas con los paquetes. Que
va a utilizar APT en su trabajo del día a día con Kali Linux y en este capítulo, vamos a presentarle a la APT y mostrar cómo
instalar, eliminar, actualizar y administrar paquetes, e incluso mostrar cómo mover paquetes entre diferentes distribuciones de
Linux. También vamos a hablar de las herramientas gráficas que aprovechan APT, que muestran cómo validar la autenticidad de
los paquetes, y profundizar en el concepto de una distribución de rodadura, una técnica que ofrece actualizaciones diarias a su
sistema de Kali. Antes de profundizar en y te mostrará cómo utilizar dpkg y APT para instalar y administrar paquetes, es
importante que profundizar en algunos de los trabajos internos de APT y se discuten algunos de los términos que lo rodea.

Origen del paquete y


fuente
fuente paquete La palabracódigo puede
fuente de ser ambigua.no
un programa Una fuente
debe paquete uncon
ser confundida paquete que contiene
una fuente la
de un paquete de repositorio (sitio web,
servidor FTP, CD-ROM, directorio local, etc.) que contiene paquetes.

Capítulo 8 - Administración de paquetes Debian 171


APT recupera sus paquetes desde un repositorio, un sistema de almacenamiento paquete o simplemente, “origen del paquete”. Los
/ etc / apt / sources.list archivo lista los diferentes repositorios (o fuentes) que pu- paquetes Debian ñol.

8.1.2. la comprensión de la sources.list Expediente

los sources.list archivo es el archivo de configuración clave para la definición de las fuentes de paquetes, y es impor- tante para entender
la forma en que se presenta y cómo configurarlo desde APT no funcionará sin una lista adecuadamente definida de fuentes de paquetes.
Vamos a discutir su sintaxis, echar un vistazo a las diversas itories repos- que son utilizados por Kali Linux, y discutir los espejos y la
redirección de espejo, entonces usted estará listo para poner APT para usar. Cada línea activa de la / etc / apt / sources.list presentar (y de
la / etc / apt / sources.list.d / *. lista archivos) contiene la descripción de una fuente, hecha de tres partes separadas por espacios. mentados
líneas com- comienzan con un # personaje:

# deb cdrom: [Debian GNU / Linux 2016.1 _Kali-rolling_ - Oficial vivo Captura AMD64 /
una INSTALAR binario 20160830-11: 29] / kali-balanceo main contrib non-free

deb http://http.kali.org/kali kali-rodando main contrib non-free

Vamos a echar un vistazo a la sintaxis de este archivo. El primer campo indica el tipo de fuente:

• debutante paquetes binarios,

• deb-src para paquetes de código.

El segundo campo da la URL base de la fuente: esto puede consistir en un Debianmirror o cualquier otro archivo de paquetes creado por
un tercero. La URL puede comenzar con expediente:// para indicar una fuente local instalado en la jerarquía de ficheros del sistema, con http:
// para indicar una fuente accesible desde un servidor web, o con ftp: // para una fuente disponible en un servidor FTP. La URL también
puede comenzar con CD ROM: para instalaciones basadas en disco / Blu-ray CD-ROM / DVD-ROM, aunque esto es menos frecuente ya
que los métodos de instalación basada en red son cada vez más común. los CD ROM entradas describen el CD / DVD-ROM que tiene. Al
contrario de otras entradas, un CD-ROM no está siempre disponible, ya que tiene que ser insertado en la unidad y por lo general sólo un
disco se puede leer a la vez. Por estas razones, estas fuentes se gestionan de una manera ligeramente diferente y necesitan ser añadido
a la apt-cdrom programa, generalmente ejecutado con el añadir parámetro. Este último solicitará entonces que el disco sea insertado en la
unidad y examinar su contenido en busca de paquetes

archivos. Se utilizará estos archivos para actualizar su base de datos de paquetes disponibles (esta operación se realiza generalmente por el apt
update mando). 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, simplemente puede indicar un
subdirectorio (con una barra final requerida) de la fuente deseada (esto es a menudo un simple “./”, que se refiere a la ausencia de
un subdirectorio-los paquetes son luego directamente

172 Kali Linux Revelado


en la URL especificada). Pero en el caso más común, los repositorios se estructurarán como una réplica de Debian, con múltiples
distribuciones de cada uno múltiples componentes. En esos casos, el nombre de la distribución elegida, a continuación, los
componentes (o secciones) para permitir. Vamos a tomar un momento para introducir estas secciones.

Debian y Kali utilizan tres secciones para diferenciar los paquetes de acuerdo con las licencias elegidas por los autores de cada
trabajo.

Principal contiene todos los paquetes que cumplen plenamente con las directrices de software libre de Debian 1.

los no libre archivo es diferente, ya que contiene un software que no lo hace (en su totalidad) se ajusta a estos principios,
pero que sin embargo se puede distribuir sin restricciones.

contrib ( contribuciones) es un conjunto de software de código abierto que no puede funcionar sin algunos elementos no libres. Estos
elementos pueden incluir software de la no libre sección o no libres archivos tales como ROM BIOS de juego, consolas, etc. contrib También
incluye el software libre cuya elaboración requiere de elementos de propiedad, como VirtualBox, que requiere un compilador que no es
libre para construir algunos de sus archivos.

Ahora, vamos a echar un vistazo a los orígenes de los paquetes Kali Linux estándar, o repositorios.

8.1.3. Kali repositorios

Un estandar sources.list solicitar una systemrunning Kali Linux hace referencia a un repositorio ( kali-balanceo)
y los tres componentes anteriormente mencionados: main, contrib y no libre:

# repositorio principal Kali


deb http://http.kali.org/kali kali-rodando main contrib non-free

Vamos a echar un vistazo a los distintos repositorios de Kali.

El Kali-Balanceo Repositorio

Esta es themain repositorio para los usuarios finales. Debe contener siempre paquetes instalables y recientes. Está gestionado por una

herramienta que combina Debian Testing y los paquetes de Kali-específicas de una manera que asegura que las dependencias de cada paquete

se pueden satisfacer dentro de kali-balanceo. En otras palabras, si no hay error en programas de desarrollador, todos los paquetes deben ser

instalable.

Desde Debian Testing evoluciona todos los días, lo mismo ocurre con Kali balanceo. Los paquetes de Kali-específicos están también regu- larmente actualizan a

medida que hacemos un seguimiento de las versiones del código fuente de los paquetes más importantes.

1 https://www.debian.org/social_contract#guidelines

Capítulo 8 - Administración de paquetes Debian 173


El Repositorio de Kali-Dev

Este depósito no es para uso público. Es un espacio donde los desarrolladores Kali resolver proble- mas de dependencia derivados de la fusión

de los paquetes de Kali-específicas en Debian Testing. También es el lugar donde los paquetes actualizados aterrizan en primer lugar, por lo que

si necesita una actualización que se publicó recientemente y que aún no ha alcanzado kali-balanceo, youmight poder agarrarlo fromthis

repositorio. Esto no es recomendable para los usuarios regulares.

El Repositorio de Kali-bleeding-edge

Este repositorio contiene los paquetes construidos automáticamente fuera de la Git aguas arriba (o Subversion) repositorio. La ventaja es que
usted tiene acceso inmediato a las últimas características y correcciones de errores menos de 24 horas después de que hayan sido cometidos.
Esta es una forma ideal para verificar si un error que usted reportó aguas arriba se ha solucionado.

La desventaja es que estos paquetes no han sido probados o investigados: si los cambios ascendentes afectados los envases (la
adición de una nueva dependencia), entonces ese paquete no funcionen. Debido a esto, el repositorio está marcado de tal manera
que la APT no se instala automáticamente los paquetes de la misma, en particular durante una actualización. Puede registrar el
repositorio ya sea editando / etc / apt / sources.list o mediante la creación de un nuevo archivo en el directorio / etc / apt / sources.list.d directorio,
que tiene la ventaja de dejar el sistema original sources.list archivo no-alterado. En este ejemplo, optamos para crear una partición / etc
/ apt / sources.list.d / kali-sangría-edge.list presentar la siguiente manera:

# Kali Bleeding Edge repositorio


deb http://http.kali.org/kali kali-sangría-borde principal contrib non-free

El Linux Espejos Kali

los sources.list extractos de arriba se refieren a http.kali.org: esto es un servidor que ejecuta MirrorBrain 2,
que redirigirá sus peticiones HTTP a una réplica oficial cerca de usted. MirrorBrain supervisa cada espejo para asegurarse de
que están trabajando y hasta a la fecha; que siempre le redirigirá a un buen espejo.

Depuración de un espejo
redirección Si ustedpuedo
tiene un
usar
problema
-Si rizo para
con ver
el espejo
dónde (por
estáejemplo,
siendo redirigido:
porque apt update falla), se

PS -Si rizo http://http.kali.org/README


HTTP / 1.1 302 Encontrado

Fecha: Lun 11 Abr el año 2016 09:43:21 GMT

2 http://mirrorbrain.org

174 Kali Linux Revelado


Servidor: Apache / 2.4.10 (Debian) X-MirrorBrain-Espejo:
ftp.free.fr X-MirrorBrain-Realm: país

Enlace: <http://http.kali.org/README.meta4>; rel = describedby;


una type =”application / metalink4 + xml”
Enlace: <http://ftp.free.fr/pub/kali/README>; rel = duplicado;
una pri = 1; geo = fr
Enlace: <http://de-rien.fr/kali/README>; rel = duplicado; pri = 2;
una geo = fr
Enlace: <http://ftp.halifax.rwth-aachen.de/kali/README>; rel =
una duplicar; pri = 3; geo = de
Enlace: <http://ftp.belnet.be/kali/kali/README>; rel = duplicado;
una pri = 4; geo = sea
Enlace: <http://ftp2.nluug.nl/os/Linux/distr/kali/README>; rel =
una duplicar; pri = 5; geo = nl Ubicación:
http://ftp.free.fr/pub/kali/README Content-Type: text / html; charset =
iso-8859-1

Si el problema persiste, puede editar / etc / apt / sources.list y codificar el nombre de otro espejo de trabajo
conocido en lugar de (o antes) de la http.kali.org
entrada.

También tenemos una segunda instancia MirrorBrain: donde http.kali.org alberga los depósitos de paquetes,
cdimage.kali.org acoge las imágenes ISO liberados.

mi http://cdimage.kali.org

Si desea solicitar una lista de Kali Linux Espejos oficiales, se puede añadir. mirrorlist a cualquier URL válida señalando http.kali.org o
cdimage.kali.org.

mi http://http.kali.org/README.mirrorlist

mi http://cdimage.kali.org/README.mirrorlist

Estas listas no son exhaustivas debido a algunas limitaciones MirrorBrain (más notablemente espejos re- stricted a algunos
países no aparecen en la lista a menos que esté en el mismo país). Pero que contienen los mejores espejos que están en buen
estado y tienen grandes cantidades de ancho de banda disponible.

8.2. Interacción Paquete Básico

Armado con una comprensión básica de la escena APT, vamos a echar un vistazo a algunas de las interacciones básicas de paquetes que incluyen la

inicialización de APT; instalación, retirada, y la purga de los paquetes; y la actualización del sistema de Kali Linux. A continuación, vamos a aventurarse

desde la línea de comandos para echar un vistazo a algunas de las herramientas gráficas de la APT.

Capítulo 8 - Administración de paquetes Debian 175


8.2.1. La inicialización de APT

APT es un vasto conjunto de proyectos y herramientas, cuyos planes original incluido una interfaz gráfica. froma perspectiva del cliente, que se centra

alrededor de la herramienta de línea de comandos apt-get tanto como apto, que más tarde fue desarrollado para superar los defectos de diseño de apt-get.

Hay alternativas gráficas desarrolladas por terceros, incluidas las sináptica y aptitud,
del que hablaremos más adelante. Tenemos la tendencia a preferir apto, que utilizamos en los ejemplos que siguen. Nosotros, sin embargo, detalle

algunas de las principales diferencias de sintaxis entre las herramientas, a medida que surgen. Cuando se trabaja con APT, debe descargar primero la

lista de paquetes disponibles en la actualidad con

actualización apt. Dependiendo de la velocidad de la conexión, esto puede llevar algún tiempo, porque lista, fuentes diferentes paquetes lista

de archivos y de traducción han crecido en tamaño junto con el desarrollo de Debian. Por supuesto, juegos de montaje de CD / DVD de
instalación mucho más rápidamente, porque son locales a su máquina.

8.2.2. Instalación de Paquetes

Gracias al diseño inteligente del sistema de paquetes de Debian, puede instalar paquetes, con o sin sus dependencias, con
bastante facilidad. Vamos a echar un vistazo a la instalación de paquetes con dpkg y
apto.

Instalación de paquetes con dpkg

dpkg es la herramienta principal que va a utilizar (ya sea directa o indirectamente a través de APT) cuando se necesita instalar un

paquete. También es una elección ir si se está operando fuera de línea, ya que no requiere una conexión a Internet. Recuerda, dpkg no
se instalará ninguna dependencia que el paquete pueda requerir. Para instalar un paquete con dpkg, simplemente proporcionar al - yo o
- instalar opción y la ruta al. debutante. Esto implica que usted ha descargado previamente (u obtenida de alguna otra manera) la

. debutante archivo del paquete que desea instalar.

# dpkg -i hombre-db_2.7.0.2-5_amd64.deb
(Base de datos de lectura ... 86425 ficheros y directorios instalados actualmente.) Preparación para descomprimir el
hombre db_2.7.0.2-5_amd64.deb ... Desembalaje de man-db (2.7.0.2-5) sobre (2.7.0.2-4) ... La creación de man-db
(2.7.0.2-5) ... Actualización de la base de datos de páginas de manual ... Procesando disparadores para mime-apoyo
(3.58) ...

Podemos ver las diferentes etapas llevadas a cabo por dpkg y se puede ver en qué punto cualquier error puede haber ocurrido. Los - yo o - instalar
opción realiza dos pasos de forma automática: se descomprime el paquete y ejecuta los scripts de configuración. Usted canperformthese
dos pasos por separado (como apt lo hace detrás de las escenas) con el - deshacer y - configurar opciones, respectivamente:

176 Kali Linux Revelado


# dpkg --unpack hombre-db_2.7.0.2-5_amd64.deb
(Base de datos de lectura ... 86425 ficheros y directorios instalados actualmente.) Preparación para descomprimir el
hombre db_2.7.0.2-5_amd64.deb ... Desembalaje de man-db (2.7.0.2-5) sobre (2.7.0.2-5) ... Procesando disparadores
para mime-apoyo (3.58) ...

# dpkg --configure man-db


La creación de man-db (2.7.0.2-5) ... Actualización de la base
de datos de páginas de manual ...

Tenga en cuenta que las líneas de procesamiento “disparadores” se refieren al código que se ejecuta automáticamente cada vez que
un paquete añade, elimina o modifica archivos en algunos directorios monitoreados. Por ejemplo, la soporte MIME monitores de
paquetes / usr / lib / MIME / paquetes y ejecuta el update-mime comando siempre que algo cambie en ese directorio (como / usr / lib / MIME
/ paquetes / man-db en el caso específico de man-db). Algunas veces dpkg dejará de instalar un paquete y devolver un error. Sin

embargo, puede solicitar dpkg

hacer caso omiso de esto y sólo se emitirá un aviso con diversas - fuerza-* Opciones. la emisión de la --forcehelp dpkg comando
mostrará una lista completa de estas opciones. Por ejemplo, puede utilizar dpkg para instalar la fuerza zsh: $ dpkg -i
--force-sobrescritura zsh_5.2-5 + b1_amd64.deb

Un error frecuente, que está obligado a encontrar tarde o temprano, se produce una colisión de archivos. Cuando un paquete contiene
un archivo que ya está instalado por otro paquete, dpkg se negará a instalarlo. Entonces aparecerán los siguientes tipos de mensajes:

Desembalaje libgdm (de ... / libgdm_3.8.3-2_amd64.deb) ...


/var/cache/apt/archives/libgdm_3.8.3-2_amd64.deb procesamiento de error (--unpack): dpkg:
una intentando sobreescribir '/ usr / bin / gdmflexiserver', que está también en el paquete gdm3
una 3.4.1-9

En este caso, si se piensa que la sustitución de este archivo no es un riesgo importante para la estabilidad de su sistema (que suele ser el

caso), puede utilizar - fuerza de sobreescritura sobrescribir el archivo. Si bien hay muchos disponibles - fuerza-* opciones, solamente - fuerza de

sobreescritura es probable que se utilicen regular- mente. existen estas opciones para situaciones excepcionales, y es mejor dejar themalone

asmuch como sea posible con el fin de respetar las normas impuestas por el mecanismo de empaquetamiento. No se olvide, estas normas

garantizan la consistencia y la estabilidad de su sistema.

Instalación de paquetes con APT

Aunque APT es mucho más avanzada que la dpkg y lo hace mucho más detrás de las escenas, se dará cuenta de que la interacción
con los paquetes es bastante simple. Se puede añadir un paquete para el sistema con un simple apto instalar paquete. APT instalará
automáticamente las dependencias necesarias:

Capítulo 8 - Administración de paquetes Debian 177


# apto instalar Kali-Linux-GPU
Leyendo lista de paquetes ... Hecho Creando árbol
de dependencias
La lectura de la información de estado ... Hecho
Se instalarán los siguientes paquetes adicionales:
oclgausscrack oclhashcat
Se instalarán los siguientes paquetes NUEVOS:
kali-linux-GPU oclgausscrack oclhashcat
0 actualizados, 3 se instalarán, 0 para eliminar y 416 no actualizados. Se necesita descargar 2.494 kB de
archivos.
Después de esta operación, se utilizarán 51,5 MB de espacio de disco adicional. ¿Quieres continuar? [Y / n]

Get: 1 http://archive-2.kali.org/kali kali-balanceo / amd64 no libre oclhashcat amd64 2.01+


una git20160114-0kali2 [2451 kB]
Get: 2 http://archive-2.kali.org/kali kali-balanceo amd64 / AMD64 principal oclgausscrack 1.3-1
una kali2 [37,2 kB]
Get: 3 http://archive-2.kali.org/kali kali-balanceo / amd64 principal kali-linux-GPU amd64
una 03/02/2016 [6412 B]
Descabellada 2.494 kB en 0s (3,060 kB / s)
Selección oclhashcat paquete previamente no seleccionado.
(Base de datos de lectura ... 317084 ficheros y directorios instalados actualmente.) Preparación para descomprimir ... /
0-oclhashcat_2.01 + git20160114-0kali2_amd64.deb ... Desembalaje oclhashcat (2,01 + git20160114-0kali2) ... Al seleccionar
previamente no seleccionado oclgausscrack empaquetar. Preparación para descomprimir ... /
1-oclgausscrack_1.3-1kali2_amd64.deb ... Desembalaje oclgausscrack (1.3-1kali2) ...

Seleccionando previamente no seleccionado paquete de kali-linux-GPU. Preparación para descomprimir ... /


2-kali-linux-gpu_2016.3.2_amd64.deb ... Desembalaje kali-linux-GPU (03/02/2016) ... La creación de
oclhashcat (2,01 + git20160114-0kali2) ... Ajuste hasta oclgausscrack (1.3-1kali2) ... La creación de
kali-linux-GPU (03/02/2016) ...

También puedes usar apt-get install paquete, o aptitude install paquete. Para una instalación sencilla PAQUETE,, que hacen

esencialmente lo mismo. Como se verá más adelante, las diferencias son más significativas para las actualizaciones o cuando

dependencias resolución no tiene ninguna solución perfecta. Si sources.list enumera varias distribuciones, puede especificar el

paquete versionwith apto instalar


paquete = versión, pero indicando su distribución de origen (kali-laminación, kali-dev, o borde kali-al sangrado) con apto instalar paquete

/ distribución por lo general se prefiere. Al igual que con dpkg, también puede indicar apto para instalar un paquete de fuerza y

​sobrescribir los archivos con - forceoverwrite, pero la sintaxis es un poco extraño, ya que está de paso a través de la discusión dpkg:

# -o APT DPKG :: Opciones :: =”- fuerza sobrescribir” instalar zsh

178 Kali Linux Revelado


8.2.3. Actualización de Kali Linux

Como una distribución de laminados, Kali Linux tiene espectaculares capacidad de actualización. En esta sección, vamos a echar un vistazo a lo fácil

que es para actualizar Kali, y vamos a discutir estrategias para la planificación de sus actualizaciones.

Recomendamos actualizaciones regulares, porque theywill instalar las últimas actualizaciones de seguridad. Para actualizar,
usar apt update seguido de apt upgrade, apt-get upgrade, o aptitude safe-upgrade.
Estos comandos buscan installedpackages que Canbe upgradedwithout anypackages eliminación. En otras palabras, el objetivo es

asegurar la menos intrusiva posible actualización. los apt-get herramienta de línea de comandos es exigente que slightlymore aptitud o

apto porque se niegan a instalar paquetes que no se instalaron previamente. los apto herramienta generalmente seleccionará el

número de versión más reciente (a excepción de los paquetes de Kali-bleeding-edge, que son ignorados por defecto sea cual sea su

número de versión). Decir apto utilizar una distribución específica en la búsqueda de paquetes actualizados, es necesario utilizar el - t o

- objetivo de liberación opción, seguido del nombre de la distribución que desee (por ejemplo:

apt-t-kali rodando actualización). Para evitar especificar esta opción cada vez que utilice apto, puedes añadir APT ::
Default-Release “kali-rolling”; en el archivo / etc / apt / apt.conf.d / local.

Para las actualizaciones más importantes, tales como actualizaciones de versiones principales, el uso apt-actualización completa. Con esta

instrucción, apto se completa la actualización, incluso si tiene que eliminar algunos paquetes obsoletos o instalar nuevas dependencias.

Este es también el comando que se debe utilizar para las actualizaciones regulares de su sistema Kali balanceo. Es tan simple que casi no

necesita explicación: la reputación de APT se basa en este gran funcionalidad. diferente a apto y aptitude, apt-get no conoce la -Actualización

completa mando. En su lugar, se debe utilizar apt-get dist-upgrade ( actualización de la distribución), un comando bien conocido que apto y

aptitud También acepta por compatibilidad hacia atrás.

Sea consciente de Importante


cambios Para anticipar
que muestra información
algunos acerca de los
de estos problemas, posibles
se puede el apt-listchanges
problemas
instalar en el inicio depaquete,
una actualización del paquete. Esta
información es recopilada por los encargados del paquete y poner en
/ Usr / share / doc / paquete/ NEWS.Debian archivos para su beneficio. La lectura de estos archivos (posiblemente a través de apt-listchanges)
debería ayudar a evitar sorpresas desagradables.

Desde que se hizo la distribución de rodadura, Kali puede recibir actualizaciones varias veces al día. Sin embargo, eso podría no ser
la mejor estrategia. Por lo tanto, ¿con qué frecuencia debe actualizar Kali Linux? No hay una regla fija, pero hay algunas pautas que
pueden ayudarle. Debe actualizar:

• Cuando se da cuenta de un problema de seguridad que se fija en una actualización

• Cuando se sospecha que una versión actualizada podría corregir un error que está experimentando

• Antes de informar de un error para asegurarse de que todavía está presente en la versión más reciente que tiene disponible

Capítulo 8 - Administración de paquetes Debian 179


• Con la suficiente frecuencia para obtener las revisiones de seguridad que usted no ha oído hablar

También hay casos en los que es mejor no es actualizar. Por ejemplo, puede que no sea una buena idea para actualizar:

• Si usted no puede permitirse cualquier rotura (por ejemplo, porque se desconecta, o porque está a punto de dar una
presentación con el ordenador); lo mejor es hacer la actualización más tarde, cuando se tiene tiempo suficiente para solucionar
cualquier problema introducido en el proceso.

• Si un cambio disruptivo ocurrido recientemente (o está todavía en curso) y se teme que todos los problemas aún no se han
descubierto. Por ejemplo, cuando se libera una nueva versión de GNOME, no todos los paquetes se actualizan al mismo tiempo y
que es probable que tengan una combinación de paquetes con la versión antigua y la nueva versión. La mayoría de las veces
esto está muy bien y ayuda a todo el mundo para liberar esos cambios progresivamente, pero siempre hay excepciones y algunas
aplicaciones puede ser roto debido a tales discrepancias.

• Si el apt-actualización completa salida le indica que va a eliminar los paquetes que considere importantes para su trabajo. En esos

casos, se desea revisar la situación e intentar Deben conocerse por qué apto quiere eliminarlos. Tal vez los paquetes están

actualmente rotas y en este caso es posible que desee esperar hasta versiones fijas están disponibles, o se han quedado

obsoletos y deben identificar sus reemplazos y luego proceder con la actualización completa de todos modos. En general, se

recomienda que actualice Kali al menos una vez a la semana. Por supuesto que puede actualizar a diario, pero que no tiene

sentido hacerlo más a menudo que eso. Incluso si los espejos están sincronizados cuatro veces al día, las actualizaciones

procedentes de Debian generalmente la tierra sólo una vez al día.

8.2.4. Extracción y purga Paquetes

La eliminación de un paquete es aún más simple que la instalación de uno. Vamos a echar un vistazo a cómo quitar un paquete con dpkg y apto.

Para eliminar un paquete con dpkg, suministrar el - r o - retirar opción, seguido del nombre de un PAQUETE,. Esta eliminación no es, sin embargo,

completa: todos los archivos de configuración, programas de desarrollador, archivos (registros del sistema), los datos generados por el demonio de

registro (por ejemplo, el contenido de un directorio del servidor LDAP o el contenido de una base de datos de un servidor SQL ), y la mayoría de

otros datos de usuario que maneja el paquete permanecen intactos. La opción Quitar hace que sea fácil de desinstalar un programa y luego volver

a instalarlo con la misma configuración. Asimismo, recuerda que las dependencias no se quitan. Considere este ejem- plo:

# dpkg --remove kali-linux-GPU


(Base de datos de lectura ... 317681 ficheros y directorios instalados actualmente.) Extracción de kali-linux-GPU (03/02/2016)
...

También puede eliminar paquetes fromthe systemwith remove aptos paquete. APTwill eliminar automáticamente los paquetes que
dependen del paquete que se va a quitar. Como el dpkg ejemplo, los archivos de configuración y datos de usuario no serán
eliminados.

180 Kali Linux Revelado


A través de la adición de sufijos para empaquetar nombres, puede utilizar apt ( o apt-get y aptitud)
instalar ciertos paquetes y quitar otros en la misma línea de comandos. Con un Inst apto todo de comandos, añadir “-” para
los nombres de los paquetes que desea eliminar. Con un remove aptos
de comandos, añadir “+” para los nombres de los paquetes que desea instalar. El siguiente ejemplo muestra dos maneras

diferentes de instalar package1 y de quitar envase2.

# apto instalar package1 package2-


[...]
# remove aptos package1 + envase2
[...]

Esto también puede ser utilizado para excluir paquetes que de otro modo se instalan, por ejemplo, debido a una Recomienda ( discutido
después). En general, el solucionador de dependencia usar esa información como una sugerencia para buscar soluciones alternativas.

Para eliminar todos los datos asociados a un paquete, puede purgar el paquete con el -P dpkg
paquete, o purga aptos paquete comandos. Esto eliminará por completo el paquete y todos los datos de usuario, y en el
caso de apto, eliminará dependencias.

# dpkg -r debian-cd
(Base de datos de lectura ... 97747 ficheros y directorios instalados actualmente.) Extracción de debian-cd (3.1.17) ...

# dpkg -P debian-cd
(Base de datos de lectura ... 97401 ficheros y directorios instalados actualmente.) Extracción de debian-cd (3.1.17) ...

Purgar los archivos de configuración de debian-cd (3.1.17) ...

¡Advertencia! Dado el carácter definitivo de purga, no ejecute a la ligera. Usted perderá todo lo relacionado con ese
paquete.

8.2.5. Inspección de Paquetes

A continuación, vamos a echar un vistazo a algunas de las herramientas que se pueden utilizar para inspeccionar los paquetes de Debian. Vamos a aprender de dpkg,

apt, y apt-cache los comandos que se pueden utilizar para consultar y visualizar la base de datos del paquete.

Consulta dpkg 'S de base de datos e inspección. debutante archivos

Comenzaremos con varios dpkg Opciones que consultan la base de datos de dpkg interna. Esta base de datos reside en el sistema de
archivos en / var / lib / dpkg y contiene varias secciones que incluyen instrucciones con- figuración (/ var / lib / dpkg / info), una lista de archivos
instalado el paquete (/ var / lib / dpkg / info / *. lista), y el estado de cada paquete que se ha instalado (/ var / lib / dpkg / status). Puedes usar dpkg para
interactuar con los archivos de esta base de datos. Tenga en cuenta que la mayoría de las opciones están disponibles en una larga

Capítulo 8 - Administración de paquetes Debian 181


Versión (una o más palabras relevantes, precedidos 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 precedidos por un único guión). Esta convención es tan común que es un estándar POSIX. En primer

lugar, vamos a echar un vistazo a - listfiles paquete ( o - L), que enumera los archivos que fueron instalados por el paquete especificado:

PS dpkg -L base passwd


/. / usr

/ Usr / sbin
/ Usr / sbin / update-passwd / usr / share

/ Usr / share / lintian


/ Usr / share / lintian / anulaciones
/ Usr / share / lintian / anulaciones / usr / share / doc-base /
base-passwd
/ 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 / man / pl / usr / share / man / pl / man8

/usr/share/man/pl/man8/update-passwd.8.gz [...]

/ Usr / share / 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

Siguiente, dpkg --search expediente ( o - S), encuentra ningún paquete que contiene el archivo o la ruta aprobada en el argumento. Por ejemplo,

para encontrar el paquete que contiene / bin / fecha: $ dpkg -S / bin / fecha

coreutils: / bin / fecha

los --status dpkg paquete ( o - s) comando muestra los encabezados de un paquete instalado. Por ejemplo, para buscar las
cabeceras para el coreutils paquete:

PS dpkg -s coreutils
Paquete: coreutils Esencial: sí

Status: Instalar bien instalado

182 Kali Linux Revelado


Prioridad: requerida Sección:
utils
Tamaño de instalación: 13855
Mantenedor: Michael Stone <mstone@debian.org> Arquitectura: amd64
Multi-Arco: Versión extranjera: 8,23-3

Reemplaza: mktemp, la ruta real, tiempo de espera


Pre-Depends: libacl1 (> = 2.2.51-8), libattr1 (> = 1: 2.4.46-8), libc6 (> = 2.17),
una libselinux1 (> = 2.1.13) Los conflictos de
tiempo de espera:
Descripción: GNU Core Utilities
Este paquete contiene las utilidades básicas de archivos, Shell y manipulación de texto que se espera que existan
en cada sistema operativo.
.
Específicamente, este paquete incluye:
arco gato base 64 nombrebase chcon chgrp chmod chown chroot cksum comm cp csplit fecha límite dd df dir dircolors
nombredir du eco env ampliar los factores de expr grupos FMT plegado falsa rebaño cabeza Identificación del hostid instalar
unirse enlace ln logname ls md5sum mkdir mkfifo mknod mktemp mv agradable nproc nohup nl numfmt desde pegar pathchk
meñique pr printenv printf PTX pwd readlink realpath rm rmdir runcon sha * suma ss sueño triturar especie de división de
estadísticas stty suma de sincronización cola tac camiseta tiempo de espera de la prueba táctil tr cierto truncado tsort TTY
uname unexpand uniq desvincular usuarios vdir wc que whoami sí Inicio: http://gnu.org/software/coreutils

los dpkg --list ( o - l) comando muestra la lista de paquetes conocidos por el sistema y su estado de instalación. También puedes usar grep en
la salida para buscar ciertos campos, o proporcionar comodines (como segundo*) para buscar paquetes que coinciden con una cadena
de búsqueda parcial en particular. Esto le mostrará un resumen de los paquetes. Por ejemplo, para mostrar una lista resumida de todos
los paquetes que comienzan con 'b':

PS dpkg -l '* b'


Deseada = Desconocido / Instalar / eliminar / borrar / conservar

| Estado = No / Inst / CONF-files / desempaquetado / half-conf / Media-inst / trig-aguardan / Trig-Pend | / Err = (ninguno) /
requerido-reinst (Estado, Err: mayúscula = malo)? || / Nombre
Versión Arquitectura Descripción
+ + + - ============== - ============ - ============ - ========= ======================== ii b43-fwcutter 1: 019-3
amd64 utilidad para la extracción de Broadcom 4
ii 3.4.2-0kali1 puerta trasera-facto todo Win32 Patch / 64 binarios con Shel
ONU backupninja <Ninguno> <Ninguno> (No hay descripción disponible)
ONU backuppc <Ninguno> <Ninguno> (No hay descripción disponible)
Baobab II 3.22.1-1 amd64 analizador de uso de disco de GNOME

[...]

Capítulo 8 - Administración de paquetes Debian 183


los --contents dpkg archivo.deb ( o - do) comando enumera todos los archivos de un particular. debutante expediente:

PS /var/cache/apt/archives/gnupg_1.4.18-6_amd64.deb -c dpkg
drwxr-xr-x root / root 0 04.12.2014 23:03 ./
drwxr-xr-x root / root 0 04.12.2014 23:03 ./lib/
drwxr-xr-x root / root 0 04.12.2014 23:03 ./lib/udev/
drwxr-xr-x root / root 0 04.12.2014 23:03 ./lib/udev/rules.d/
- rw-r - r-- root / root 2711 04/12/2014 23:03 ./lib/udev/rules.d/60-gnupg.rules
drwxr-xr-x root / root 0 04.12.2014 23:03 ./usr/
drwxr-xr-x root / root 0 04.12.2014 23:03 ./usr/lib/
drwxr-xr-x root / root 0 04.12.2014 23:03 ./usr/lib/gnupg/
- -rwxr-xr-x root / root 39328 04/12/2014 23:03 ./usr/lib/gnupg/gpgkeys_ldap
- -rwxr-xr-x root / root 92.872 04/12/2014 23:03 ./usr/lib/gnupg/gpgkeys_hkp
- -rwxr-xr-x root / root 47576 12/04/2014 23:03 ./usr/lib/gnupg/gpgkeys_finger
- -rwxr-xr-x root / root 84648 12/04/2014 23:03 ./usr/lib/gnupg/gpgkeys_curl
- -rwxr-xr-x root / root 3499 12/04/2014 23:03 ./usr/lib/gnupg/gpgkeys_mailto
drwxr-xr-x root / root 0 04.12.2014 23:03 ./usr/bin/
- -rwxr-xr-x root / root 60128 12/04/2014 23:03 ./usr/bin/gpgsplit
- -rwxr-xr-x root / root 1012688 04/12/2014 23:03 ./usr/bin/gpg [...]

los dpkg --info archivo.deb ( o - YO) comando muestra las cabeceras de la especificada. debutante expediente:

PS dpkg -I /var/cache/apt/archives/gnupg_1.4.18-6_amd64.deb
nuevo paquete Debian, versión 2.0.
tamaño de 1148362 bytes: archivo de control = 3422 bytes.
1264 bytes, 26 líneas controlar
4521 bytes, 65 líneas md5sums
479 bytes, * 13 líneas postinst #! / Bin / sh
473 bytes, * 13 líneas preinst #! / Bin / sh
Paquete: GnuPG Versión:
1.4.18-6 Arquitectura: amd64

Mantenedor: Debian GnuPG-Mantenedores <pkg-gnupg-maint@lists.alioth.debian.org> Tamaño de instalación: 4888

Depende: gpgv, libbz2-1.0, libc6 (> = 2,15), libreadline6 (> = 6.0), libusb-0,1-4 (> =
una 2: 0.1.12), zlib1g (> = 1: 1.1.4) Recomienda: gnupg-rizo, libldap-2.4-2 (>
= 2.4.7)
Sugiere: GnuPG-doc, libpcsclite1, parcimonie, xloadimage | ImageMagick | Sección EOG: Utiles de Prioridad: importante Multi-Arco:
extranjera

Inicio: http://www.gnupg.org
Descripción: GNU Privacy Guard - un reemplazo libre de PGP GnuPG es una herramienta de GNU para la
comunicación segura y almacenamiento de datos. Puede ser utilizado para cifrar datos y para crear firmas
digitales. Incluye una instalación de gestión de claves avanzada y es compatible

184 Kali Linux Revelado


con el estándar de Internet OpenPGP propuesta tal como se describe en el RFC 4880. [...]

También puedes usar dpkg comparar los números de versión del paquete con el - compare-versions opción, que a menudo es llamado por
programas externos, incluyendo scripts de configuración ejecutados por dpkg sí 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: lt ( estrictamente
menor que), Le ( Menos que o igual a), eq ( igual), NE ( no es igual), ge ( mayor que o igual a), y GT ( estrictamente mayor que). Si la
comparación es correcta, dpkg devuelve 0 (éxito); si no, se le da un valor de retorno no cero (lo que indica fallo). Tenga en cuenta estas
comparaciones:

PS dpkg --compare-versiones 1.2-3 gt 1.1-4


PS $ Eco?
0 $ dpkg --compare-versiones 1.2-3 lt 1.1-4

PS $ Eco?
1 $ dpkg --compare-versiones 2.6.0pre3-1 LT 2.6.0-1

PS $ Eco?
1

Tenga en cuenta el fallo inesperado de la última comparación, porque dpkg, la cuerda " pre ”(Generalmente denota una pre-release) no tiene un

significado en particular, y dpkg simplemente lo interpreta como una cadena, en cuyo caso” 2.

6.0pre3-1 ”Es alfabéticamente mayor que” 2.6.0-1 ”. Cuando queremos número de versión de un paquete para indicar que se trata de un
pre-lanzamiento, se utiliza el carácter de tilde “~”:

PS dpkg --compare-versiones 2.6.0 ~ pre3-1 lt 2.6.0-1


PS $ Eco?
0

Consulta de la base de datos de paquetes disponibles con apt-cache y apto

los apt-cache comando puede mostrar gran parte de la información almacenada en la base de datos interna de la APT. Esta información es
una especie de caché, ya que se obtiene de las diferentes fuentes que se indican en el
sources.list expediente. Esto ocurre durante el apt update operación.

Capítulo 8 - Administración de paquetes Debian 185


VOCABULARIO La memoria caché es un sistema de almacenamiento temporal que se utiliza para acelerar el acceso de datos frecuentes cuando el

Cache método de acceso habitual es caro (en cuanto al rendimiento). Este concepto puede ser aplicado en numerosas situaciones y en

diferentes escalas, desde el núcleo de los microprocesadores para sistemas de almacenamiento de gama alta. En el caso de APT, la

referencia paquetes archivos son los ubicados en las réplicas de Debian. Dicho esto, sería muy ineficaz para empujar todas las

búsquedas a través de las bases de datos de paquete en línea. Esa es la razón por la APT tiendas una copia de esos archivos (en / var

/ lib / apt / lists /)

y las búsquedas se realizan dentro de esos archivos locales. Similar, / var / cache / apt / archives /
contiene una copia en caché de paquetes ya descargados para evitar la descarga de nuevo si es necesario
volver a instalarlos.

Para evitar un uso excesivo de disco cuando se actualiza con frecuencia, debe ordenar a través de la
regularidad / var / cache / apt / archives / directorio. Dos comandos se pueden utilizar para esto: limpia apt ( o apt-get
clean) completamente vacía el directorio; autoclean aptos

( autoclean apt-get) sólo elimina paquetes que ya no se pueden descargar, ya que han desaparecido del espejo y por lo tanto
son inútiles. Tenga en cuenta que el parámetro de configuración APT :: Clean-Instalado se puede utilizar para evitar la
eliminación de. debutante los archivos que están instalados actualmente. Asimismo, cabe destacar que apto gotas de los
archivos descargados una vez que han sido instalados, por lo que esto es importante sobre todo cuando se utiliza otras
herramientas.

los apt-cache comando puede hacer búsquedas de paquetes basados ​en palabras clave con apt-cache search palabra clave. También puede
mostrar las cabeceras de las versiones disponibles del paquete con apt-cache show
paquete. Este comando proporciona la descripción del paquete, sus dependencias, y el nombre de itsmaintainer. Esta característica es

particularmente útil indetermining los paquetes que están instalados a través de meta-paquetes, tales como kali-linux-inalámbrico, kali-linux-web,
y kali-linux-GPU. Tenga en cuenta que Búsqueda apto, apto espectáculo, Búsqueda de aptitud, y espectáculo de aptitud trabajar de la misma manera.

Una alternativa: axi-cache apt-cache search es una herramienta muy rudimentaria, básicamente la implementación grep en Pack-
descripciones de edad. Se vuelve a menudo demasiados resultados o ninguno en absoluto, si se incluyen demasiadas palabras

clave.

Búsqueda axi-cache término, por el contrario, proporciona mejores resultados, ordenados por relevancia. Utiliza el xapian motor
de búsqueda y es parte de la apt-xapian índice paquete, que indexa todo el paquete de información (y más, como el. escritorio
archivos de todos los paquetes de Debian). Se sabe acerca de las etiquetas y devuelve los resultados en cuestión de
milisegundos.

PS axi-cache forense de búsqueda gráfica


5 resultados. Resultados
1-5:
100% de la autopsia - interfaz gráfica para SleuthKit 82% forense-colorear - muestran diferencias entre los
archivos usando
una gráficos en color
73% DFF - Potente, eficiente y forense digital de modular
una marco de referencia

53% gpart - Guess tabla de particiones de disco PC, encontrará perdido


una particiones
46% TestDisk - escáner de reparto y una herramienta de recuperación de disco, y
una herramienta de recuperación de archivos PhotoRec

186 Kali Linux Revelado


Más términos: colorear particiones de archivos de etiquetas de disco de la autopsia

una diferencias digitales


Más etiquetas: admin :: :: forense de seguridad forense papel :: programa de
una la interfaz de administración de recuperación :: :: :: administrador de comandos de arranque

una alcance :: utilidad

Algunas de las características son más raramente utilizados. Por ejemplo, política de apt-cache muestra las prioridades de las fuentes de
paquetes, así como las de los paquetes individuales. Otro ejemplo es apt-cache velo Dumpa, que muestra las cabeceras de todas las
versiones disponibles de todos los paquetes. pkgnames apt-cache
muestra la lista de todos los paquetes que aparecen al menos una vez en la memoria caché.

8.2.6. Solución de problemas

Tarde o temprano, que se ejecutará en un problema cuando se interactúa con un paquete. En esta sección, vamos a describir algunos pasos básicos

de solución de problemas que se pueden realizar y proporcionar algunas herramientas que le llevará más cerca de una solución potencial.

Gestión de problemas después de una actualización

A pesar de la Kali / mejores esfuerzos Debianmaintainers', un systemupgrade no siempre es tan suave como esperaríamos. Las nuevas versiones

de software pueden ser incompatibles con los anteriores (por ejemplo, su comportamiento por defecto o su formato de datos pueden haber

cambiado), o los insectos pueden deslizarse a través de las grietas a pesar de las pruebas realizadas por los desarrolladores de paquetes y usuarios

de Debian inestable.

Aprovechando informes de fallos Youmight veces parece que un newversion de software no funciona en absoluto. Esto generalmente
ocurre si la aplicación no es particularmente popular y no ha sido probado lo suficiente. El primero que hay que hacer es tener una mirada
en el seguimiento de errores Kali 3 y en el sistema de seguimiento de fallos de Debian 4 a https://bugs.debian.org/ paquete, y comprobar si ya
los problemhas sido reportados. Si no lo tiene, debe informar de ello a sí mismo (ver sección 6.3, “presentar un buen informe de errores”
[página 129] para obtener instrucciones detalladas). Si ya se sabe, el informe de error y los mensajes asociados suelen ser una excelente
fuente de información relacionada con el fallo. En algunos casos, un parche que ya existe y tiene beenmade disponible en el propio informe
de error; a continuación, puede volver a compilar una versión fija del paquete roto a nivel local (véase la sección 9.1, “Modificación de
paquetes Kali” [página 222]). En otros casos, los usuarios pueden haber encontrado una solución para el problema y compartir sus puntos
de vista al respecto en sus respuestas al informe; esas instrucciones pueden ayudarle a evitar el problema hasta que se libera una solución
o parche. En el mejor de los casos, el paquete puede haber sido ya fijado y usted puede encontrar los detalles en el informe de error.

3 http://bugs.kali.org
4 https://bugs.debian.org

Capítulo 8 - Administración de paquetes Debian 187


La degradación hasta la versión aWorking Cuando el problema es una regresión clara (en la versión anterior trabajó), se puede tratar de

rebajar el paquete. En este caso, necesitará una copia de la versión anterior. Si usted tiene acceso a la versión anterior en uno de los

repositorios configurados en APT, se puede usar un simple comando de una sola línea de rebajar (véase la sección 8.2.2.2, “Instalación de

paquetes con APT” [página 177]). Pero con rolling release de Kali, por lo general sólo se encuentra una única versión de cada paquete en un

momento dado. Usted todavía puede tratar de encontrar el viejo. debutante archivo e instalarlo manualmente con dpkg. Antiguo . debutante los

archivos se pueden encontrar en varios lugares:

• en la caché de APT en / var / cache / apt / archives /

• en el piscina directorio en su espejo habitual Kali (quita y paquetes obsoletos se mantuvo durante tres o cuatro días para
evitar problemas con los usuarios no tener los últimos índices de paquetes)

• en http://snapshot.debian.org si el paquete afectado fue proporcionado por Debian y no por Kali; este servicio mantiene las
versiones históricas de todos los paquetes de Debian

Scripts Dealingwith BrokenMaintainer A veces, la actualización se interrumpe debido a que uno de los guiones del paquete considera falla

(por lo general, es el postinst). En esos casos, se puede tratar de diagnosticar el problema, y, posiblemente, evitar que, mediante la edición de

la secuencia de comandos problemático. Aquí nos basamos en el hecho de que programas de desarrollador se almacenan en / var / lib / dpkg /

info / y que podemos revisar y modificarlos.

Desde programas de desarrollador son scripts de shell generalmente simples, es posible añadir una set -x línea después de la línea shebang y

disponerlas para volver a ejecutar (con dpkg --configure -a para postinst) para ver exactamente lo que está sucediendo y donde 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 mandato que ha fallado en un

trabajo uno (por ejemplo, añadiendo || cierto al final de la línea). Tenga en cuenta que este truco no funciona para un defecto preinst

ya que se ejecuta el guión, incluso antes el paquete se instala por lo que todavía no está en su ubicación final. No funciona para postrm

y prerm
aunque tendrá que ejecutar una eliminación de paquetes (actualizar respectivamente) para desencadenar ellos.

los dpkg Archivo de registro

los dpkg herramienta mantiene un registro de todas sus acciones en / var / log / dpkg.log. Este registro es muy detallado, ya que detalla todas
las etapas de cada paquete. Además de ofrecer una manera de seguir de comporta- miento dpkg, que ayuda a mantener una historia del
desarrollo del sistema: se puede encontrar el momento exacto en que cada paquete se ha instalado o actualizado, y esta información
puede ser muy útil en la comprensión un reciente cambio en el comportamiento. Además, con todas las versiones siendo grabadas, es
fácil para una verificación cruzada de la información con el changelog.Debian.gz paquetes en cuestión, o incluso con informes de errores en
línea.

188 Kali Linux Revelado


# /var/log/dpkg.log cola
22/12/2016 09:04:05 estado instalado kali-linux-GPU: amd64 03/02/2016 22/12/2016 09:20:07 paquetes de inicio
eliminar
22/12/2016 09:20:07 estado instalado kali-linux-GPU: amd64 03/02/2016 22/12/2016 09:20:07 quitar kali-linux-GPU: amd64
02/03/2016 <ninguno> 2016-12- 22 09:20:07 estado configurado medio-kali-linux-GPU: amd64 02/03/2016 22/12/2016
09:20:07 estado de la mitad instalado kali-linux-GPU: amd64 02/03/2016 22/12/2016 09 : 20: 07 de estado config-archivos
kali-linux-GPU: amd64 02/03/2016 22/12/2016 09:20:07 estatus de los archivos de configuración kali-linux-GPU: amd64
03/02/2016 22/12/2016 09:20 : 07 de estado config-archivos kali-linux-GPU: amd64 02/03/2016 22/12/2016 09:20:07 estado
no se instala-kali-linux-GPU: amd64 <ninguno>

Volver a instalar los paquetes con --reinstall aptos y reinstalación de aptitud

Cuando youmistakenly dañar su eliminación systemby ormodifying ciertos archivos, la manera más fácil para restaurar Themis
volver a instalar el affectedpackage. Por desgracia, el embalaje systemfinds que el paquete ya está instalado y cortésmente se
niega a volver a instalarlo. Para evitar esto, utilice el - reinstalar
de la opción apto y apt-get comandos. Los siguientes comandos vuelve a instalar sufijo incluso si ya está presente:

# apto --reinstall instalar postfix

los aptitud línea de comandos es un poco diferente, pero logra el mismo resultado con postfix reinstalación de aptitud. los dpkg
comando no impide la re-instalación, pero rara vez se llama directamente.

No utilice apto Utilizando --reinstall aptos para restaurar los paquetes modificados durante un ataque sin duda no recuperar el sistema como
- - reinstalar para recuperar estaba. Después de un ataque, no se puede confiar en cualquier cosa: dpkg y apto podría haber sido reemplazado por
de un ataque programas maliciosos, no volver a instalar los archivos como le gustaría que lo hagan. El atacante también podría haber

alterado o creado archivos fuera del control de dpkg.

Recuerde que usted puede especificar una distribución específica con apto así, lo que significa que puede volver a una versión anterior
de un paquete (por ejemplo, si usted sabe que funciona bien), a condición de que todavía está disponible en una de las fuentes de
referencia el sources.list expediente:

# apto instalar w3af / kali-balanceo

Aprovechando --force- * reparar dependencias rotas

Si no se tiene cuidado, el uso de un - fuerza-* opción o algún otro mal funcionamiento puede conducir a un sistema donde la familia APT
de comandos se negará a funcionar. En efecto, algunas de estas opciones permiten

Capítulo 8 - Administración de paquetes Debian 189


la instalación de un paquete cuando no se cumple una dependencia, o cuando hay un conflicto. El resultado es un sistema
inconsistente fromthe punto de dependencias viewof, y los comandos de APT negarse a ejecutar cualquier acción excepto aquellos
que traerá el sistema a un estado coherente (esto a menudo consiste en instalar la dependencia falta o eliminar un paquete
problemático). Esto usualmente resulta en amessage como éste, obtenido después de la instalación de un newversion de rdesktop sin
tener en cuenta su dependencia de una nueva versión de libc6:

# apt-actualización completa

[...]
Es posible que desee ejecutar 'apt-get -f install' para corregirlo. Los siguientes paquetes tienen
dependencias incumplidas:
rdesktop: Depende: libc6 (> = 2.5) pero 2.3.6.ds1-13etch7 está instalado E: insatisfecha dependencias. Trate de usar
-f.

Si usted es un administrador de valiente que es seguro de la exactitud de su análisis, puede optar por hacer caso omiso de una
dependencia o conflicto y utilizar la correspondiente - fuerza-* opción. En este caso, si usted quiere ser capaz de seguir
utilizando apto o aptitud, debe editar / var / lib / dpkg / status
eliminar o modificar la dependencia, o conflicto, que ha elegido para anular. Esta manipulación es un truco feo y nunca debe
utilizarse, salvo en el caso más extremo de necesidad. Con bastante frecuencia, una solución más apropiado es recompilar el
paquete que está causando el problema o utilizar una nueva versión (potencialmente corregido) de un repositorio de
proporcionar backports (backports nuevas versiones especialmente recopilados a trabajar en un ambiente más).

8.2.7. Frente termina: aptitud y sináptica

APT es un código programwhose C ++ reside principalmente en el libapt-PKG biblioteca compartida. Gracias a esta biblioteca compartida, se abrió la

puerta para la creación de interfaces de usuario (front-end), ya que el código de la biblioteca compartida fácilmente se puede reutilizar. Históricamente, apt-get

solamente fue diseñado como un front-end de prueba para

libapt-PKG pero su éxito tiende a oscurecer este hecho. Con el tiempo, a pesar de la popularidad de las interfaces de línea de comandos

como apto y apt-get, Se han desarrollado diversas interfaces ical graph-. Vamos a echar un vistazo a dos de esas interfaces en esta

sección:
aptitud y sináptica.

Aptitud

Aptitud, que se muestra en la Figura 8.1, “The aptitud gestor de paquetes”[página 191], es un pro- grama interactivo que se puede utilizar en
modo semi-gráfica en la consola. Puede navegar por la lista de paquetes instalados y disponibles, consultar toda la información y seleccionar
paquetes para instalar o quitar. El programa está diseñado específicamente para ser utilizado por los administradores por lo que su
comportamiento por defecto es muchomás inteligentes que los de APT, y su interfaz mucho más fácil de entender.

190 Kali Linux Revelado


Figura 8.1 los aptitud gerente de empaquetación

Cuando se ejecuta aptitud, se le muestra una lista de paquetes ordenados por estado (instalado, no se instala, o instalado pero no está

disponible en los espejos), mientras que otras secciones muestran las tareas, paquetes virtuales y newpackages aparecidos recientemente

onmirrors. Para facilitar la navegación temática, otros puntos de vista están disponibles. En todos los casos, aptitud muestra una lista de

categorías y la combinación de paquetes en la pantalla. Las categorías se organizan a través de una estructura de árbol, cuyas ramas,

respectivamente, puede ser desplegada o plegada con las teclas ENTRAR, [y]. La tecla + se debe utilizar Tomark un paquete de instalación, -

Tomark para realizar una extracción, y _ para purgarlo. Tenga en cuenta que estas teclas también se pueden utilizar para las categorías,

inwhich caso las acciones correspondientes se aplicarán a todos los envases de la categoría. El U actualizaciones clave de las listas de

paquetes y Shift + U disponibles prepara una actualización del sistema global. Los interruptores g clave a una vista de resumen de los cambios

solicitados (y escribiendo g de nuevo se aplicarán los cambios), y q cierra la vista actual. Si está en la vista inicial, esto se cerrará aptitud.

aptitud 'S Documentación Esta sección no cubre los detalles más finos de la utilización de aptitud, más bien se centra en
dándole un kit de supervivencia de usuario. aptitud está bastante bien documentado y le recomendamos que utilice su manual

completo está disponible en el aptitud-doc-en paquete.

mi archivo: ///usr/share/doc/aptitude/html/en/index.html

Para buscar un paquete, puede escribir / seguida 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 es precedida por ~ re), a la sección

Capítulo 8 - Administración de paquetes Debian 191


(Con ~ s), oa otras características se detallan en la documentación. Los mismos patrones pueden filtrar la lista de paquetes que se
muestran: escriba la clave l (como en límite) y introducir el patrón. la gestión de la bandera automática de los paquetes de Debian (véase
la sección 8.3.4, “Seguimiento de paquetes automáticamente INSTALADO” [página 199]) es una brisa con aptitud. Es posible navegar
por la lista de paquetes instalados y marcar paquetes como automática con Shift + m o se puede quitar la marca con la tecla m.
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 depen- dencias que no les importa. El patrón relacionado
que puede ser usado con l (para activar el modo de filtro) es de ~ i! ~ M. Se especifica que sólo desea ver los paquetes instalados (~ yo) no
marcado como automática (! ~ METRO).

Utilizando aptitud en la interfaz de línea de comandos La mayor parte de las características de aptitud son accesibles a través de la interfaz interactiva, así como a través de
la línea de comandos. Estas líneas de comandos le resultará familiar a los usuarios habituales de aptget y apt-cache.

Las características avanzadas de aptitud También están disponibles en la línea de comandos. Se pueden utilizar los
mismos patrones de búsqueda de paquetes como en la versión interactiva. Por ejemplo, si desea limpiar la lista de
paquetes instalados manualmente, y si usted sabe que ninguno de los programas instalados localmente requiere ninguna
bibliotecas particulares o módulos Perl, puede marcar los paquetes correspondientes como automática con un solo
comando:

# markauto aptitud '~ slibs | ~ sperl'

Aquí, se puede ver claramente el poder del sistema de patrón de búsqueda aptitud, que permite el instante selección

de todos los paquetes en el libs y perl secciones. Cuidado, si algunos paquetes están marcados como automático y si

no hay otro paquete depende de ellos, van a ser retirados inmediatamente (después de una solicitud de

confirmación).

La gestión de recomendaciones, sugerencias y Tareas Otra característica interesante de


aptitud es el hecho de que respeta las recomendaciones entre los bultos, pero dando a los usuarios la opción de no instalar sobre

una base de caso por caso. Por ejemplo, el gnomo Mends paquete ciones GDebi ( entre otros). Cuando se selecciona el primero
para la instalación, también se seleccionará el último (y se marca como automática si no está ya instalado en el sistema).
Tecleando g hará más evidente: GDebi aparece en la pantalla de resumen de las acciones pendientes en la lista de paquetes
instalados automáticamente para satisfacer las dependencias. Sin embargo, puede decidir no instalar, desactivando antes de
confirmar las operaciones.

Tenga en cuenta que esta característica de seguimiento de la recomendación no se aplica a las actualizaciones. Por ejemplo, si un nuevo versiónde gnomo

recomienda un paquete que nose recomendar anteriormente, la packagewon't ser seleccionado para ser instalado. Sin embargo, ésta aparecerá en la

pantalla de actualización para que el administrador todavía puede seleccionarlo para su instalación.

Sugerencias entre paquetes también se tienen en cuenta, pero de una manera adaptada a su estado CIFIC espe-. Por
ejemplo, desde gnomo sugiere dia-gnome, este último se mostrará en la SUM-

192 Kali Linux Revelado


mary pantalla de acciones pendientes (en la sección de paquetes sugerido por otros paquetes). De esta manera, es visible y el
administrador puede decidir si tomar la sugerencia en cuenta o no. Dado que es sólo una sugerencia y no una dependencia o una
recomendación, no se seleccionará automáticamente el paquete-su selección requiere intervención manual (por lo tanto, el paquete
no se marcará como automática). En el mismo espíritu, recuerda que aptitud hace un uso inteligente del concepto de tareas. Dado
que las tareas se muestran como las categorías en las pantallas de listas de paquetes, puede seleccionar una tarea completa para
la instalación o remoción o navegar por la lista de paquetes incluidos en la tarea de seleccionar un subconjunto más pequeño.

Mejores algoritmos de Solver Para concluir esta sección, notemos que aptitud hasmore algoritmos elaborados en comparación con
apto cuando se trata de resolver situaciones difíciles. Cuando se solicita un conjunto de acciones y cuando estas acciones

combinadas daría lugar a un sistema incoherente, aptitud


evalúa varios escenarios posibles y los presenta en orden decreciente de importancia. Sin embargo, estos algoritmos no son
infalibles. Afortunadamente, siempre existe la posibilidad de seleccionar manualmente las acciones a realizar. Cuando las acciones
seleccionadas actualmente conducen a contradicciones, la parte superior de la pantalla indica el número de paquetes rotos (se puede
navegar directamente a esos paquetes pulsando b). A continuación, puede crear manualmente una solución. En particular, puede
obtener acceso a las diferentes versiones disponibles seleccionando el paquete con Enter. Si la selección de una de estas versiones
resuelve el problema, no debe dudar en utilizar la función. Cuando el número de paquetes rotos se pone a cero, se puede ir con
seguridad a la pantalla de resumen de las acciones pendientes para una última comprobación antes de aplicarlas.

Iniciar sesión de Aptitud Me gusta dpkg, la aptitud mantiene un rastro de acciones ejecutadas en su archivo de registro (/ var / log /
aptitud). Sin embargo, dado que ambos comandos funcionan a un nivel muy diferente, no se puede encontrar la misma información

en sus respectivos archivos de registro. Mientras dpkg registra todas las operaciones ejecutadas en paquetes individuales, paso a

paso, aptitud da una visión más amplia de operaciones de alto nivel como una actualización de todo el sistema. Tenga cuidado, este

archivo de registro sólo contiene un resumen de las operaciones realizadas por aptitud.

Si otros front-end (o incluso dpkg en sí) se usan de vez en cuando, a continuación, aptitud 'S registro sólo contendrá una vista

parcial de las operaciones, por lo que no se puede confiar en él para construir una historia digna de confianza del sistema.

Capítulo 8 - Administración de paquetes Debian 193


sináptica

Synaptic es un gestor gráfico paquete que cuenta con una interfaz gráfica limpia y eficiente (que se muestra en la Figura 8.2, “ sináptica Administrador
de paquetes”[página 194]) basado en GTK + y GNOME. Sus muchos filtros y listas para su uso dan acceso rápido a los nuevos paquetes
disponibles, los paquetes instalados, upgrad- paquetes capaces, paquetes obsoletos, y así sucesivamente. Si usted navega a través de
estas listas, puede seleccionar las operaciones a realizar en los paquetes (instalar, actualizar, eliminar purga); estas operaciones no se
llevan a cabo de inmediato, pero ponen en una lista de tareas. Un solo clic en un botón a continuación, valida las operaciones y que se llevan
a cabo de una sola vez.

Figura 8.2 sináptica Gerente de empaquetación

8.3. Configuración de APT avanzada y Uso

Ahora es el momento de sumergirse en algunos temas más avanzados. En primer lugar, vamos a echar un vistazo a la configuración avanzada de APT,

que le permitirá configurar más opciones permanentes que se aplicarán a las herramientas APT. a continuación, vamos a mostrar cómo las prioridades

de paquetes pueden ser manipulados, lo que abre la puerta para avanzadas afinamos, customizedupdates andupgrades. Wewill también distribuciones

showhowtohandlemultiple de modo que usted puede comenzar a experimentar con paquetes procedentes de otras distribuciones. A continuación, el

wewill echar un vistazo a la forma de realizar un seguimiento de los paquetes instalados de forma automática, una capacidad que le permite administrar

los paquetes que se instalan a través de dependencias. También explicaremos soporte para el arco howmulti- abre la puerta para paquetes de

funcionamiento construidas por diversas arquitecturas de hardware. Último

194 Kali Linux Revelado


pero no menos importante, vamos a discutir los protocolos criptográficos y utilidades en el lugar que le permitirá validar la autenticidad de
cada paquete.

8.3.1. Configuración de APT

Antes de profundizar en la configuración de APT, tomemos un momento para discutir la configuración mechanismof del sistema Debian.
Históricamente, configurationwas manejado por los archivos de con- figuración dedicados. Sin embargo, en los sistemas Linux modernos
como Debian y Kali, directorios de configuración con el. re sufijo son cada vez más habituales. Cada directorio representa un archivo de
configuración que se divide en varios archivos. En este sentido, todos los archivos en / etc / apt / apt.conf.d / son ins- trucciones para la
configuración de APT. procesos APT los archivos en orden alfabético, de modo que los archivos posteriores puede modificar elementos
de configuración definidos en los archivos anteriores.

Esta estructura aporta cierta flexibilidad a los administradores y los responsables de los paquetes, que les permite hacer cambios en la
configuración de software a través de adiciones de archivos sin tener que cambiar un archivo isting ex. Esto es especialmente útil para los
desarrolladores de paquetes, ya que pueden utilizar este enfoque para adaptar la configuración de otro software para asegurarse de que la
perfección coexiste con el de ellos, con- sin romper la política de Debian, que prohíbe explícitamente la modificación de los archivos de
configuración de otras edades PACK-. Debido al. re mecanismo de configuración, usted no tiene que seguir las instrucciones de configuración
manualmente múltiples paquete se encuentran típicamente en / del paquete usr / share / doc / paquete

/README.Debian presentar, ya que el instalador puede caer en archivos de configuración.

Cuidado con los archivos de Mientras APT tiene soporte nativo de su / etc / apt / apt.conf.d directorio, esto no siempre es el caso. Para algunas
configuración generado a partir. re aplicaciones (como exim, por ejemplo), la. re directorio es una adición Debian-específico usado como entrada para
directorios generar dinámicamente el archivo de configuración canónica utilizada por la aplicación. En esos casos, los
paquetes proporcionan un comando “Actualización: *” (por ejemplo: update-exim4.conf) que concatena los archivos
de la
. re directorio y sobreescribir el archivo de configuración.

En esos casos, no youmust editar manualmente themain archivo de configuración como sus cambios se perderán en
la próxima ejecución de la actualizar-* mando, y debe también no se olvide de ejecutar el comando anterior después
de haber editado un archivo fuera de la. re (No serán utilizados o los cambios) guía.

Armado con una comprensión de la. re mecanismo de configuración, vamos a hablar de cómo se puede aprovechar para configurar APT. Como ya

hemos comentado, se puede alterar el comportamiento de APT a través de argumentos de línea de comandos para dpkg como en este ejemplo,

que realiza una instalación con sobregrabación forzada de

zsh:

# -o APT DPKG :: Opciones :: =”- fuerza sobrescribir” instalar zsh

Obviamente esto es muy engorroso, especialmente si se utiliza con frecuencia opciones, pero también se puede utilizar el archivo. re estructura de

configuración directorio para configurar ciertos aspectos de la APT mediante la adición de directivas a un archivo en el directorio / etc / apt / apt.conf.d / directorio.

Por ejemplo, esto (y cualquier otra) Directiva puede basarse

Capítulo 8 - Administración de paquetes Debian 195


fácilmente ser añadido a un archivo en / etc / apt / apt.conf.d /. El nombre de este archivo es un tanto arbitraria, sino una

convención común es utilizar local o 99local: $ /etc/apt/apt.conf.d/99local gato

Dpkg :: {Opciones
“--Force-sobrescribir”; }

Hay muchas otras opciones de configuración útil y ciertamente no pueden cubrir a todos, pero uno tocaremos implica la
conectividad de red. Por ejemplo, si sólo se puede acceder a la web a través de un proxy, añada una línea como Acquire :: http ::
Proxy “http: // yourproxy: 3128” . Para un proxy FTP, el uso Acquire :: :: FTP proxy “ftp: // yourproxy ”.

Para descubrir más opciones de configuración, lea la apt.conf (5) página manual con el man apt. conf comando (para más detalles sobre las
páginas del manual, véase la sección 6.1.1, “Páginas de manual” [página 124]).

8.3.2. Gestión de las prioridades del paquete

Uno de los aspectos más importantes de la configuración de APT es la gestión de los lazos prioridades associatedwith cada fuente
de paquete. Por ejemplo, youmight desea extender su sistema de Kali balanceo con uno o dos nuevos paquetes de Debian
inestable o Debian experimental. Se posi- ble para asignar una prioridad a cada paquete disponible (el mismo paquete puede tener
varias prioridades en función de su versión o la distribución dotándolo). Estas prioridades influirán en el comportamiento de APT:
para cada paquete, se seleccionará siempre la versión con la prioridad más alta (excepto si esta versión es más antigua que la
instalada y su prioridad es inferior a 1000). APT define varias prioridades por defecto. Cada versión del paquete instalado tiene una
prioridad de 100. Una versión no instalado tiene una prioridad del 500 por defecto, pero se puede saltar al 990 si es parte de la
distribución objetivo (definido con la - t opción de línea de comandos o la APT :: Default-Release configuración direc- tiva).

Usted canmodify las prioridades añadiendo entradas en el directorio / etc / apt / preferences filewith los nombres de los paquetes
afectados, su versión, su origen y su nueva prioridad.

APT nunca va a instalar una versión anterior de un paquete (es decir, un paquete cuyo número de versión es menor que la del
paquete actualmente instalado), excepto cuando su prioridad es mayor que 1000. APT siempre instalar el paquete de prioridad
más alta que sigue este restricción. Si dos paquetes tienen la misma prioridad, APT instala la más reciente (cuya versión
número 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á instalado (esta regla ha sido creada para cubrir el caso de una actualización de paquete sin el
incremento del número de revisión, que por lo general se requiere ).

En términos más concretos, un paquete cuya prioridad es nunca será instalado a menos de 0. Un paquete con una
prioridad que oscila entre 0 y sólo 100will ser instalado si no hay otra versiónde el paquete ya está instalado. Con una
prioridad entre 100 y 500, sólo se instala el paquete si hay

196 Kali Linux Revelado


hay otra versión más reciente instalado o disponible en otra distribución. Un paquete de prioridad entre 501 y 990 sólo se instala si
no hay una nueva versión instalada o disponible en la distribución de destino. Con una prioridad entre 990 y 1000, se instalará el
paquete excepto si la versión instalada es más reciente. Una prioridad superior a 1000 siempre dará lugar a la instalación del
paquete, incluso si obliga APT para volver a una versión anterior. Cuando los cheques APT / etc / apt / preferences, primero tiene en
cuenta las entradas más específicas (a menudo las que especifican el paquete en cuestión), luego los más genéricos (incluyendo,
por ejem- plo todos los paquetes de una distribución). Si existen varias entradas genéricas, se utiliza el primer partido. Los criterios
de selección disponibles incluyen el nombre del paquete y la fuente que proporciona la misma. Cada origen del paquete es
identificado por la información contenida en una Lanzamiento archivo que descargas APT junto con el paquetes archivos. Estos
archivos especifican el origen, por lo general “Kali” para los paquetes de réplicas oficiales de Kali y “Debian” para los paquetes de
réplicas oficiales de Debian, pero el origen también puede ser una persona de o el nombre de una organización para los repositorios
de terceros. los Lanzamiento archivo también proporciona el nombre de la distribución junto con su versión. Vamos a echar un vistazo
a su sintaxis a través de algunos estudios de casos reales de este mecanismo.

prioridad de Si enumeró kali-bleeding-edge o experimental de Debian en su sources.list archivo, casi nunca se instala los paquetes
Kali-bleeding-edge y correspondientes debido a que su prioridad APT por defecto es 1. Esto es, por supuesto, un caso específico, diseñado
Debian Experimental para mantener a los usuarios de la instalación de paquetes de punta de lanza por error. Los paquetes sólo se pueden
instalar escribiendo apto instalar paquete/ kali-sangrado de borde, asumiendo por supuesto que son conscientes de los riesgos
potenciales y los dolores de cabeza de la vida en el borde. Todavía es posible (aunque no recomendado) para el
tratamiento de paquetes de Kali-bleeding-edge / experimentales como los de otras distribuciones, dándoles una
prioridad de 500. Esto se hace con una entrada específica en

/ etc / apt / preferences:

Package: *
Pin: release a = kali-bleeding-edge Pin-Priority: 500

Supongamos que sólo desea utilizar los paquetes de Kali y que sólo desea paquetes Debian instalados cuando se le solicite
explícitamente. Se puede escribir las siguientes entradas en el directorio / etc / apt / preferences presentar (o en cualquier archivo en / etc
/ apt / preferences.d /):

Paquete: *
Pin: release o = Kali Pin-Priority:
900

Paquete: *
Pin: release o = Debian Pin-Priority:
-10

Capítulo 8 - Administración de paquetes Debian 197


En los dos últimos ejemplos, usted ha visto a = kali-sangrado de borde, que define el nombre de la distribución cionado SE- y o =
Kali y o = Debian, que limitar el alcance a los paquetes cuyo origen son Kali y Debian, respectivamente.

Vamos a nowassume que youhave un serverwith varios programas locales en función de la versión 5.22 del Perl y que desea asegurarse
de que las actualizaciones no se instalarán otra versión del mismo. Se podría utilizar esta entrada:

Paquete: Perl Pin: Versión 5.22


* Pin-Priority: 1001

La documentación de referencia para este archivo de configuración está disponible en la página del manual erences apt_pref (5), que
puede mostrar con apt_preferences hombre.

Adición de comentarios en No hay una sintaxis oficial para comentarios en / etc / apt / preferences, pero algunas descripciones textuales pueden ser
/ etc / apt / preferences proporcionados por una o más anteponiendo Explicación campos en cada entrada:

Explicación: El paquete de servidor X-xorg-video-intel proporcionado explicación: en experimental


puede ser utilizado con seguridad Paquete: servidor X-xorg-video-intel Pin: release a = experimental
Pin-Priority: 500

8.3.3. Trabajar con varias distribuciones

Dado que apto es una herramienta tan maravillosa, que es probable que desee sumergirse y comenzar a experimentar con paquetes
procedentes distribuciones fromother. Por ejemplo, después de instalar un sistema de balanceo Kali, es posible que desee probar un
paquete de software disponible en Kali Dev, Debian inestable, o Debian Experimental sin apartarse demasiado del estado inicial del
sistema.

Incluso si usted va de vez en cuando encontrarse con problemas durante la mezcla de diferentes paquetes de las distribuciones, apto gestiona dicha

coexistencia muy bien y limita los riesgos de manera muy eficaz (siempre que las dependencias de los paquetes son exactos). En primer lugar, la lista

de todas las distribuciones utilizadas en / etc / apt / sources.list

y definir su referencia distributionwith la APT :: Default-Release parámetro (véase la sección 8.2.3, “Actualización de Kali Linux”
[página 179]).

Supongamos que Kali balanceo es su distribución de referencia, pero que Kali Dev y Debian inesta- ble también se enumeran en
su sources.list expediente. En este caso, puede utilizar apto instalar paquete/
inestable instalar un paquete de Debian inestable. Si la instalación falla debido a algunas dependencias isfiable unsat-, dejar
que resolver esas dependencias dentro inestable añadiendo el - t inestable
parámetro.

198 Kali Linux Revelado


En esta situación, las actualizaciones ( mejorar y full-actualización) se llevan a cabo dentro de Kali balanceo excepción de paquetes
alreadyupgraded a otra distribución: thosewill followupdates disponible en las otras distribuciones. Wewill explicar este behaviorwith la
ayuda de las prioridades establecidas por defecto byAPT a continuación. No dude en utilizar política de apt-cache ( ver recuadro “Uso política
de apt-cache ”[Página 199]) para verificar las prioridades dadas.

Todo se basa en el hecho de que sólo se tiene en cuenta APT paquetes de versión superior o igual que el paquete instalado
(suponiendo que / etc / apt / preferences No se ha utilizado para forzar prioridades más altas que 1000 para algunos paquetes).

Utilizando política de apt-cache Para obtener una mejor comprensión del mecanismo de prioridad, no dude en eje-
linda política de apt-cache para mostrar la prioridad por defecto asociado a cada origen del paquete. También puedes usar política
de apt-cache paquete para visualizar las prioridades de todas las versiones disponibles de un paquete determinado.

Vamos a suponer que usted ha instalado la versión 1 de un primer paquete de Kali balanceo y que la versión 2 y 3 están disponibles,
respectivamente, en Kali Dev y Debian inestable. La versión instalada tiene una prioridad de 100, pero la versión disponible en Kali balanceo ( el
mismo) tiene una prioridad de 990 (debido a que es parte de la versión de destino). Los paquetes en Kali Dev y Debian inestable tener una
prioridad de 500 (la prioridad predeterminada de una versión no está instalado). El ganador es, pues, la versión 1 con una prioridad de 990. El
paquete permanece en Kali balanceo.

Tomemos el ejemplo de otro paquete cuya versión 2 se ha instalado desde Kali Dev. Ver- sión 1 está disponible en Kali
balanceo y la versión 3 en Debian inestable. Versión 1 (de prioridad 990-por lo tanto inferior a 1000) se descarta debido a que
es más baja que la versión instalada. Esto sólo deja versión 2 y 3, ambos de prioridad 500. Frente a esta alternativa, APT
selecciona la versión más reciente, el de Debian inestable. Si no desea que un paquete instalado Kali Dev migrar a Debian
inestable, tiene que asignar una prioridad menor que 500 (490 por ejemplo) a los paquetes procedentes de

Debian inestable. Puede modificar / etc / apt / preferences para este efecto:

Paquete: *
Pin: release a = inestable Pin-Priority:
490

8.3.4. Seguimiento de paquetes instalados automáticamente

Una de las funcionalidades esenciales de apto es el seguimiento de los paquetes instalados sólo a través de pendencias de-. Estos

paquetes se denominan automático y con frecuencia incluyen bibliotecas. Con esta información, cuando se quitan los paquetes, los

gestores de paquetes puede calcular una lista de paquetes automáticos que ya no son necesarios (porque no existen paquetes

instalados manualmente en función de ellos). El comando autoremove aptos se librará de esos paquetes. aptitud hace

Capítulo 8 - Administración de paquetes Debian 199


no tiene este comando, ya que les quita automáticamente tan pronto como sean identificados. En todos los casos, las herramientas muestran

un mensaje claro con una lista de los paquetes afectados.

Es una buena costumbre para marcar como automática cualquier paquete que no necesita directamente de manera que se eliminan
automáticamente cuando ya no son necesarios. Puedes usar apt-marca de automóviles
paquete para marcar el paquete dado como automática, mientras manual de apt-marca paquete hace lo contrario. markauto aptitud y unmarkauto
aptitud el trabajo de la misma manera, a pesar de que offermore paquetes formarkingmany características a la vez (véase la sección

8.2.7.1, “Aptitud” [página 190]). La interfaz interactiva basada en la consola de aptitud También hace que sea fácil de revisar la
bandera automática en muchos paquetes.

Es posible que desee knowwhy un paquete instalado de forma automática está presente en el sistema. Para obtener esta información
desde la línea de comandos, puede utilizar aptitude why paquete ( apto y apt-get
no tienen función similar):

PS aptitude why python-debian


i aptitud Recomienda apt-xapian índice
i A-xapian-index apt Depende python-debian (> = 0.1.15)

8.3.5. Aprovechando Soporte Multi-Arco

Todos los paquetes de Debian tienen una Arquitectura campo en su información de control. Este campo puede contener “ todos ”(Para
los paquetes que dependen de la arquitectura) o el nombre de la arquitectura que se dirige (como AMD64 o armhf). En este último
caso, por defecto, dpkg sólo se instalará el paquete si su arquitectura coincide con la arquitectura del huésped tal como lo devuelve dpkg
--print-arquitectura.

Esta restricción asegura que no termina con binarios compilados para una arquitec- tura incorrecta. Todo sería perfecto, excepto
que (algunos) sistemas puede ejecutar binarios para múltiples arquitecturas, ya sea de forma nativa (un sistema AMD64 puede
ejecutar binarios i386) oa través de emuladores.

Permitiendo Multi-Arco

El soporte multi-arco de dpkg permite a los usuarios definir arquitecturas extranjeras que se pueden instalar en el sistema actual.
Esto se hace fácilmente con dpkg --add-arquitectura, como en el siguiente ejemplo, donde la arquitectura i386 necesita ser añadido al
sistema amd64 el fin de ejecutar complicaciones de Windows AP- usingWine 5. Hay una correspondiente dpkg --remove-arquitectura a
soltar de una arquitectura extranjera, pero sólo se puede utilizar cuando no hay permanecen instalados los paquetes de esta
arquitectura.

# dpkg --print-arquitectura
amd64

5 https://www.winehq.org/

200 Kali Linux Revelado


# vino
parece que wine32 no está presente, éste debe ser instalado. Multiarch necesita ser activado en
primer lugar. como root, por favor ejecutar “dpkg---add arquitectura i386 y apt-get update y apt-get
install wine32”

Uso: PROGRAMA vino [argumentos ...] Ejecuta el programa especificado


--help vino Muestra esta ayuda y salir
--version vino Salida de información de la versión y sale
# dpkg --add-arquitectura i386
# dpkg --print-extranjeros-arquitecturas
i386
# apt update
[...]
# apto wine32 instalar
[...]
La creación de libwine: i386 (1.8.6-5) ... La creación de VDPAU-driver-todo: i386
(1.1.1-6) ... La creación de wine32: i386 (1.8.6-5) ...

La creación de libasound2-plugins: i386 (1.1.1-1) ... Procesando disparadores para


libc-bin (2,24-9)
# vino
Uso: PROGRAMA vino [argumentos ...] Ejecuta el programa especificado
--help vino Muestra esta ayuda y salir
--version vino Salida de información de la versión y sale
# dpkg --remove-arquitectura i386
dpkg: error: No se puede quitar la arquitectura 'i386' actualmente en uso por la base de datos
# dpkg --print-extranjeros-arquitecturas
i386

APT detectará automáticamente cuando dpkg se ha configurado para soportar arquitecturas extranjeras y se iniciará la descarga del

correspondiente paquetes archivos durante el proceso de actualización. ForeignPackages continuación, se pueden instalar con apto

instalar Paquete: la arquitectura.

El uso de i386 Propietario


Binarios en AMD64 Hay variospara
casos de uso
ejecutar para múltiples
32 binarios arquitecturas,
de bits (i386) pero
en sistemas la más
de 64 popular en
bits (amd64), es particular
la posibilidad
desde varias aplicaciones propietarias
populares (como Skype) se proporcionan solo en las versiones de 32 bits.

Multi-Arco Cambios relacionados

Para hacer multi-arch realmente útil y utilizable, bibliotecas tuvieron que ser empaquetado de nuevo y se trasladaron a un directorio
específico de la arquitectura de manera que múltiples copias (dirigidos a diferentes arquitecturas) puede ser instalado al lado de otros.
Suchupdatedpackages contienen el Multi-Arco: igual campo de cabecera para contar el embalaje systemthat las diversas arquitecturas del
paquete Canbe segura co-instalado (y que esos paquetes sólo puede satisfacer las dependencias de los paquetes de la misma
arquitectura).

Capítulo 8 - Administración de paquetes Debian 201


PS dpkg -s libwine
dpkg-query: Error: --status necesita un nombre de paquete válido, pero 'libwine' no es: ambigua
una nombre del paquete 'libwine' con más de una instancia instalada

Utilice --help para obtener ayuda sobre cómo consultar los paquetes. PS dpkg -s
libwine: libwine amd64: i386 | grep ^ Multi
Multi-Arco: la misma multi-Arco: $ misma dpkg -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 que Multi-Arco: igual paquetes deben tener sus nombres cualificados con su arquitectura para ser inequívocamente
identificable. Estos paquetes también pueden compartir archivos con otras instancias del mismo paquete; dpkg asegura que todos los
paquetes tienen 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 tanto, deben actualizarse juntos.

El soporte multi-Arch también trae algunos retos interesantes en la forma en que se manejan las dependencias. La satisfacción de una
dependencia requiere ya sea una packagemarked Multi-Arco: extranjera o una arquitectura packagewhose coincide con el del paquete de
declarar la dependencia (en este proceso olución res- dependencia, paquetes independientes de la arquitectura se supone que son de la
misma arquitectura que el anfitrión). Una dependencia también puede ser debilitada para permitir que cualquier arquitectura para cumplirla,
con el
paquete: alguna sintaxis, pero extranjeros paquetes sólo pueden satisfacer una dependencia tal si están marcadas
Multi-Arco: permitido.

8.3.6. Validando autenticidad de un paquete

Systemupgrades operaciones son muy sensibles y que realmente desean asegurarse de que sólo instala los paquetes oficiales de los
repositorios de Kali. Si el Kali espejo que está utilizando ha visto comprometida, una galleta computadora podría intentar agregar código
malicioso para un paquete de otra manera legítima. Dicho paquete, si está instalado, podría hacer cualquier cosa el cracker lo diseñó
para hacer incluyendo contraseñas o divulga la información confidencial. Para evitar este riesgo, Kali proporciona un sello de protección
para garantizar -al momento de la instalación, que un paquete realmente proviene de su mantenedor oficial y no ha sido modificado por
un tercero.

El sello workswith un chainof hashes criptográficos y una firma. El archivo firmado es el Lanzamiento
archivo, proporcionado por los espejos Kali. Contiene una lista de las paquetes archivos (incluyendo sus formas prensadas
com-, Packages.gz y Packages.xz, y las versiones incrementales), junto con su MD5, SHA1 y SHA256 hash, lo que garantiza
que los archivos no han sido manipulados. Estas

202 Kali Linux Revelado


paquetes archivos de la lista de containa theDebianpackages disponibles en themirror alongwith sus hash, lo que garantiza a su vez que

el contenido de los paquetes mismos no han sido alterados tampoco. Las claves de confianza del aremanagedwith apt-key comando

que se encuentra en el apto paquete. Este programa mantiene un llavero de claves públicas de GnuPG, que se utilizan para verificar

las firmas en el Release.gpg


archivos disponibles en los espejos. Se puede utilizar para agregar nuevas claves de forma manual (cuando se necesitan espejos no oficiales).

Generalmente sin embargo, se necesitan llaves sólo el Kali oficiales. Estas claves se mantienen automática- mente hasta a la fecha por el kali-archive-keyring

paquete (que pone los anillos de claves correspondientes en / etc / apt / trusted.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 puede ser verificada externamente.

administradores prudentes, por tanto, debe comprobar las huellas dactilares de claves importadas antes de confiar en ellos para instalar nuevos

paquetes:

# huella digital apt-key


/etc/apt/trusted.gpg.d/debian-archive-jessie-automatic.gpg
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
4096R pub / 2B90D010 21/11/2014 [expira: 11/19/2022]
huella de la clave = 126C 0D24 BD8A 2942 CC7D F8AC 7638 D044 2B90 D010 uid
Archivo de Debian Clave de firma automática (8 / Jessie) <ftpmaster@debian.org>

/etc/apt/trusted.gpg.d/debian-archive-jessie-security-automatic.gpg
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
4096R pub / C857C906 21/11/2014 [expira: 19/11/2022]
huella de la clave = D211 6914 1CEC D440 F2EB 8DDA 9D6D 8F6B C857 C906 uid
Debian Archivo de Seguridad Firma automática de claves (8 / Jessie) <ftpmaster@debian.org>

/etc/apt/trusted.gpg.d/debian-archive-jessie-stable.gpg
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
4096R pub / 518E17E1 08/17/2013 [expira: 15/08/2021]
huella de la clave = 75DD C3C4 A499 F1A1 8CB5 F3C8 CBF8 D6FD 518E 17E1 uid
Jessie clave Stable Release <debian-release@lists.debian.org>

/etc/apt/trusted.gpg.d/debian-archive-squeeze-automatic.gpg
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
pub 4096R / 473041FA 2010-08-27 [expira: 05/03/2018]
huella de la clave = 9FED 2BCB DCD2 9CDF 7626 78CB AED4 B06F 4730 uid 41FA
Archivo de Debian Firma automática de claves (6.0 / squeeze) <ftpmaster@debian.org>

/etc/apt/trusted.gpg.d/debian-archive-squeeze-stable.gpg
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
4096R pub / B98321F9 2010-08-07 [expira: 08/05/2017]
huella de la clave = 0E4E DE2C 7F3E 1FC0 D033 800E 6,448 1,591 B983 21F9 uid
Estable exprimir llave de desbloqueo <debian-release@lists.debian.org>

/etc/apt/trusted.gpg.d/debian-archive-wheezy-automatic.gpg
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
4096R pub / 46925553 2012-04-27 [expira: 25/04/2020]
huella de la clave = A1BD 8E9D 78F7 FE5C 3E65 D8AF 8B48 AD62 4692 5553 uid
Archivo de Debian Firma automática de claves (7.0 / sibilante) <ftpmaster@debian.org>

/etc/apt/trusted.gpg.d/debian-archive-wheezy-stable.gpg
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
4096R pub / 65FFB764 2012-05-08 [expira: 07/05/2019]
huella de la clave = ED6D 6527 1AAC F0FF 15D1 2303 6FB2 A1C2 65FF uid B764
Wheezy Estable llave de desbloqueo <debian-release@lists.debian.org>

Capítulo 8 - Administración de paquetes Debian 203


/etc/apt/trusted.gpg.d/kali-archive-keyring.gpg
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
4096R pub / 7D8D0BF6 2012-03-05 [expira: 02/02/2018]
huella de la clave = 44C6 513A 8E4F B3D3 0875 F758 ED44 4FF0 7D8D 0BF6 uid
Kali Linux Repositorio <devel@kali.org>
sub 4096R / FC0D0DCB 2012-03-05 [expira: 02.02.2018]

Cuando se añade una fuente de paquetes de terceros para el sources.list archivos, las necesidades de la APT que se les diga que confiar en la clave

de autenticación GPG correspondiente (de lo contrario se mantendrá quejándose de que no se puede garantizar la autenticidad de los paquetes

procedentes de ese repositorio). El primer paso es, por supuesto, para obtener la clave pública. Más a menudo que no, la clave se proporciona

como un archivo de texto pequeño, que llamaremos key.asc en los siguientes ejemplos.

Para agregar la clave al depósito de claves de confianza, el administrador puede ejecutar apt-key add <key.asc. An- otra forma
es utilizar la sináptica interfaz gráfica: la ficha Autenticación en el ajustes
→ repositorios menú proporciona la capacidad de importar una clave de la key.asc expediente. Para peoplewho prefieren una aplicación
dedicada andmore detalles sobre las claves de confianza, es posible utilizar gui-apt-key ( en el paquete del mismo nombre), una pequeña interfaz

gráfica de usuario thatmanages el anillo de claves de confianza.

Una vez que las teclas correspondientes están en el anillo de claves, APT resolverá las firmas antes de que cualquier ración OP arriesgado, por lo que

front-end se mostrará una advertencia si se le pide que instale un paquete cuya autenticidad no puede determinarse.

8.4. De referencia del paquete: Profundizando en el sistema de paquetes de Debian

Ahora es el momento de bucear muy profundo en Debian y de Kali sistema de paquetes. En este punto, vamos a ir más allá de las

herramientas y la sintaxis y centrarse más en los aspectos prácticos del sistema de paquetes. Este detrás de las escenas de ver le

ayudará a entender cómo funciona la APT en su fundación y le dará una idea de la forma de simplificar en serio y personalizar el

sistema de Kali. Es posible que no todos los necessarilymemorize Thematerial en esta sección, pero el material recorrido y referencia,

serán muy útiles a medida que crece en su dominio del sistema de Kali Linux. Hasta el momento, los datos del paquete de youhave

interactedwithAPT a través de las diversas herramientas diseñadas para interactuar con él. A continuación, vamos a profundizar y echar

un vistazo dentro de los envases y mirar el interior meta informacion ( o información sobre otros datos) que utiliza las herramientas de

gestión de paquetes. Esta combinación de un archivo del archivo y de la meta-información es directamente visible en la estructura de

una

. debutante archivo, que es simplemente una Arkansas archivo, la concatenación de tres archivos:

PS ar t /var/cache/apt/archives/apt_1.4~beta1_amd64.deb
debian-binario
data.tar.xz control.tar.gz

los debian-binary archivo contiene un único número de versión que describe el formato del archivo:

204 Kali Linux Revelado


PS ar p /var/cache/apt/archives/apt_1.4~beta1_amd64.deb debian-binario
2.0

los control.tar.gz archivo contiene meta-información:

PS ar p /var/cache/apt/archives/apt_1.4~beta1_amd64.deb control.tar.gz | tar -tzf -


./
. / conffiles
. /controlar
. / md5sums
. / postinst
. / postrm
. / preinst
. / prerm
. / shlibs
. / triggers

Y, por último, la data.tar.xz de archivo (el formato de compresión puede variar) contiene los archivos reales que se instalen en el
sistema de archivos:

PS ar p /var/cache/apt/archives/apt_1.4~beta1_amd64.deb data.tar.xz | tar -tJf -


./
. / Etc /
. / Etc / apt /
. /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-removal
. /etc/logrotate.d/
. /etc/logrotate.d/apt
. / Lib /
. / Lib / systemd / [...]

Tenga en cuenta que en este ejemplo, está viendo una. debutante creación de un paquete de archivo de APT y que su archivo puede

contener archivos con diferentes números de versión que lo que se muestra. En esta sección, vamos a introducir este meta-información

contenida en cada paquete y le mostrará cómo aprovecharla.

Capítulo 8 - Administración de paquetes Debian 205


8.4.1. los controlar Expediente

Vamos a empezar por mirar el controlar archivo, que está contenido en el control.tar.gz archivo. los controlar themost archivo contiene
información vital sobre el paquete. Se utiliza una estructura similar a las cabeceras de correo electrónico y se puede ver con la dpkg
-I mando. Por ejemplo, el controlar para presentar apto Se ve como esto:

PS dpkg -I apt_1.4 ~ control de beta1_amd64.deb


Paquete: apt
Versión: 1.4 ~ beta 1
Arquitectura: amd64
Mantenedor: Desarrollo APT Equipo <deity@lists.debian.org> Tamaño de instalación: 3478

Depende: adduser, gpgv | gpgv2 | gpgv1, debian-archive-keyring, init-system-ayudantes (> =


una 1,18 ~), libapt-pkg5.0 (> = 1,3 ~ rc2), libc6 (> = 2,15), libgcc1 (> = 1: 3,0),
una libstdc ++ 6 (> = 5.2) recomienda: GnuPG |
gnupg2 | gnupg1
Sugiere: apt-doc, la aptitud | sináptica | wajig, dpkg-dev (> = 1.17.2), powermgmt-base,
una python-apt
Breaks: apt-utils (<< 1,3 ~ ~ exp2) sustituye: apt-utils (<<
1,3 ~ ~ exp2) Sección: admin Prioridad: importante

Descripción: gestor de paquetes de comandos


Este paquete proporciona herramientas de línea de comandos para la búsqueda y la gestión, así como la
consulta de información sobre los paquetes como un bajo nivel de acceso a todas las funciones de la biblioteca
libapt-PKG.
.
Éstos incluyen:
* apt-get para la recuperación de paquetes e información acerca de ellos procedentes de fuentes
autenticados y para la instalación, actualización y eliminación de paquetes y sus dependencias de

* apt-cache para consultar la información disponible de instalado, así como paquetes instalables

* apt-cdrom para utilizar medios extraíbles como fuente de paquetes


* apt-config como una interfaz para los ajustes de configuración
* apt-key como una interfaz para gestionar las claves de autenticación

En esta sección, vamos a caminar a través del archivo de control y explicar los distintos campos. Cada uno de estos le dará una
mejor comprensión del sistema de envasado, darle el control de configuración más afinado, y le proporcionará conocimientos
necesarios para solucionar los problemas que puedan ocurrir.

206 Kali Linux Revelado


Dependencias: el campo depende

Las dependencias del paquete se definen en el depende campo en la cabecera del paquete. Esta es una lista de condiciones que deben cumplirse para

que el paquete funcione correctamente, esta información es utilizada por herramientas como

apto con el fin de instalar las bibliotecas necesarias, en versiones adecuadas que cumplan las dependencias del paquete esté

instalado. Para cada dependencia, se puede restringir el número de versiones que cumplen esa condición. En otras palabras, es
posible expresar el hecho de que se necesita el paquete libc6
en una versión igual o superior a “2,15” (escrito “ libc6 (> = 2.15) “). operadores de comparación versión son los siguientes:

• <<: menos que;

• <=: Menos que o igual a;

• =: igual a (tenga en cuenta 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 que deben cumplir, la coma sirve como un separador, interpretado como una lógica “Y”. En
condiciones, la barra vertical ( “|”) expresa una lógica “OR” (que es un inclusivo “OR” no un clusive ex “o / o”). Llevar una
mayor prioridad que la “Y”, que puede utilizar tantas veces como Essary nece-. Por lo tanto, la dependencia “(A o B) y C”
se escribe A | ANTES DE CRISTO. En contraste, la expre- sión “A O (B y C)” deben ser escritos como “(A o B) y (A o C)”, ya
que la depende campo no tolera paréntesis, que cambian el orden de prioridades entre los operadores lógicos “OR” y “y”.
Por lo tanto, se escribiría A | B, A | DO. Ver http://www.debian.org/doc/ debian-policy / ch-relationships.html para más información.

El sistema de dependencias es un goodmechanism para garantizar el funcionamiento de un programbut tiene otro uso con
meta-paquetes. Estos son paquetes vacíos que sólo se describen las dependencias. Facilitan la instalación de un grupo consistente
de los programas preseleccionados por el mantenedor themeta-paquete; como tal, apto instalar meta-paquete instalará automáticamente
todos estos programas utilizando las dependencias del meta-paquete. los GNOME, KDE completo, y kali-linux-completa paquetes son
ejem- plos de meta-paquetes.

Pre-Dependencia, A depende más exigente

Pre-dependencias, que se enumeran en el Pre-Dependencia campo en las cabeceras de paquetes, completar las dependencias
normales; su sintaxis es idéntica. Una dependencia normal indica que el paquete en cuestión debe ser desempaquetado y
configurado antes de la configuración del paquete de declarar la dependencia. Un pre-dependencia establece que el paquete en
cuestión debe ser desempaquetado y configurado antes de la ejecución de la previa a la instalación del paquete de declarar la
dependencia previa, es decir, antes de su instalación.

Capítulo 8 - Administración de paquetes Debian 207


Un pre-dependencia es muy exigente para apto ya que añade una restricción estricta en el orden de los paquetes a instalar. Como tal,
pre-dependencias no se animan a menos que sea absolutamente necesario. Incluso se recomienda consultar a otros desarrolladores
ondebian-devel@lists.debian.org antes de añadir un pre-dependencia, ya que generalmente es posible encontrar otra solución como una
solución temporal.

Recomienda, indica, y mejora campos

los Recomienda y sugiere campos describen dependencias que no son obligatorios. Las dependencias reco- mienda, el más
importante, mejorar considerablemente la funcionalidad ofrecida por 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 el otro.

Siempre se 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 knowwhy que los necesite. los Mejora campo 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 añadir una sugerencia sin tener que modificar el paquete que se refiere. Por lo tanto,
todos los add-ons, plug-ins, y otras extensiones de un programa, entonces pueden aparecer en la lista de sugerencias relacionadas
con el software. A pesar de que existe desde hace varios años, este último campo está todavía en gran parte ignorado por programas
como apto o sináptica. El objetivo original era dejar que un paquete como

xul-ext-Adblock-plus ( una extensión de Firefox) declarar Mejora: firefox, firefox-ESR y por lo tanto aparecen en la lista de paquetes
asociados a sugeridas Firefox y firefox-ESR.

Conflictos: el conflicto de campo

los conflictos campo indica cuando un paquete no se puede instalar simultaneouslywith otra. Las razones más comunes para esto son que
ambos paquetes incluyen un archivo del mismo nombre, proporcionan el mismo servicio en el puerto mismo protocolo de control de
transmisión (TCP), o podrían obstaculizar el funcionamiento de cada uno.

Si se desencadena un conflicto con un paquete ya instalado, dpkg se niegan a instalar un paquete, excepto si el nuevo
paquete especifica que reemplazará el paquete instalado, en cuyo caso dpkg
elegirá para reemplazar el paquete antiguo con el nuevo. APT siempre sigue sus instrucciones: si decide instalar un nuevo
paquete, que ofrecerá automáticamente al desinstalar el paquete que plantea un problema.

208 Kali Linux Revelado


Incompatibilidades: se rompe el Campo

los descansos campo tiene un efecto similar a la de la conflictos campo, pero con un significado especial. Se señala que la
instalación de un paquete se romperá otro paquete (o versiones particulares de la misma). En general, esta incompatibilidad entre
dos paquetes es transitoria y la descansos relación se refiere específicamente a las versiones incompatibles. Cuando se rompe un
paquete de un paquete ya instalado, dpkg se negará a instalarlo, y apto tratará de resolver el problema mediante la actualización del
paquete que se rompería a una versión más reciente (que se supone que es fijo y, por lo tanto, compatibles otra vez).

Este tipo de situación puede ocurrir en el caso de cambios sin compatibilidad hacia atrás: este es el caso si la nueva
versión ya no funciona con la versión anterior y causa amalfunction en otro programa sin hacer provisiones especiales. los descansos
campo ayuda a prevenir este tipo de problemas.

Elementos proporcionados: Proporciona el campo

Este campo se introduce el concepto muy interesante de una paquete virtual. Se hasMany papeles, pero dos son de particular
importancia. La primera función consiste en utilizar un paquete virtual para asociar un servicio genérico con él (el paquete
proporciona el servicio). El segundo indica que un paquete reemplaza completamente a otra y que para este propósito, sino que
también puede satisfacer las dependencias que la otra satisfaría. Por lo tanto, es posible crear un paquete de sustitución sin tener
que usar el mismo nombre de paquete.

Meta-paquete y Virtual Es esencial distinguir claramente los meta-paquetes de paquetes virtuales. Los primeros son los paquetes reales
Paquete (incluyendo bienes. debutante archivos), cuyo único propósito es expresar dependencias.

Paquetes virtuales, sin embargo, no existen físicamente; son sólo un medio de identificación de paquetes reales sobre
la base de criterios comunes, lógicos (por ejemplo, servicio prestado, o la compatibilidad con un programa estándar o
un paquete pre-existente).

Proporcionar un servicio Vamos a discutir el primer caso con mayor detalle con un ejemplo: todos los servidores de correo, como sufijo o enviar

correo se dice para proporcionar la mail-transport-agent paquete virtual. Por lo tanto, cualquier paquete que necesite este servicio sea funcional (por
ejemplo, un gestor de listas de correo, tales como

SmartList o sympa) se limita a establecer en sus dependencias que requiere una mail-transport-agent en lugar de especificar una gran
lista todavía incompleta de las posibles soluciones. Por otra parte, es inútil para instalar dos servidores de correo en la misma
máquina, por lo que cada uno de estos paquetes declara un conflicto con el mail-transport-agent paquete virtual. Un conflicto entre un
paquete y el mismo es ignorado por el sistema, pero esta técnica prohibirá la instalación de dos servidores de correo lado a lado.

Capítulo 8 - Administración de paquetes Debian 209


Intercambiabilidad con otro paquete los proporciona campo también es interesante cuando el con- tenido de un paquete está incluido
en un paquete más grande. Por ejemplo, el libdigest-md5-perl módulo de Perl era un módulo opcional en Perl 5.6, y se ha integrado de
serie en Perl 5.8. Como tal, el paquete perl desde entonces se ha declarado la versión 5.8 Proporciona: libdigest-md5-perl de manera
que las dependencias de este paquete se cumple si el sistema tiene Perl 5.8 (o posterior). los libdigest-md5-perl propio envase fue
borrado, ya que ya no tenía ningún propósito cuando se eliminaron antiguas versiones de Perl.

Figura 8.3 El uso de un Proporciona campo a fin de no romper las dependencias

Esta característica es muy útil, ya que nunca es posible anticipar los caprichos de desarrollo y es necesario ser capaz de
adaptarse a los cambio de nombre, y otra sustitución automática de software obsoleto.

Sustitución de Archivos: El Reemplaza Campo

los Reemplaza campo indica que el paquete contiene los archivos que están también presentes en otro paquete, pero que el
paquete está legítimamente para reemplazarlos. Sin esta especificación, dpkg
falla, indicando que no se puede sobrescribir los archivos de otro paquete (técnicamente, es posible forzar a hacerlo con la - fuerza de
sobreescritura opción, pero que no se considera el funcionamiento estándar). Esto permite la identificación de problemas potenciales y
requiere que el mantenedor para estudiar el asunto antes de elegir si desea añadir un campo de este tipo.

210 Kali Linux Revelado


El uso de este campo se justifica cuando cambian los nombres de paquetes o cuando un paquete está incluido en otro. Esto también
sucede cuando el sustentador decide distribuir archivos de forma diferente entre los distintos paquetes binarios producidos fromthe
mismo paquete fuente: un archivo reemplazado ya no pertenece a la vieja paquete, pero sólo en la nueva.

Si todos los archivos en un paquete instalado han sido reemplazados, se considera que ser trasladado re el paquete. Por último, este
campo también anima dpkg para eliminar el paquete reemplazado donde hay un conflicto.

8.4.2. Los scripts de configuración

Además de controlar archivo, el control.tar.gz Archivo para cada Debian packagemay contiene una serie de secuencias de comandos ( postinst,

postrm, preinst, prerm) llamado por dpkg en diferentes etapas en el procesamiento de un paquete. Nosotros podemos usar dpkg -I para mostrar

estos archivos ya que residen en una. debutante archivo de paquetes:

PS dpkg -I /var/cache/apt/archives/zsh_5.3-1_amd64.deb | cabeza


nuevo paquete Debian, versión 2.0.
tamaño de 814486 bytes: archivo de control = 2557 bytes.
838 bytes, 20 líneas controlar
3327 bytes, 43 líneas md5sums
969 bytes, 41 líneas * postinst #! / Bin / sh
348 bytes, * 20 líneas postrm #! / Bin / sh
175 bytes, 5 líneas * preinst #! / Bin / sh
175 bytes, 5 líneas * prerm #! / Bin / sh
Paquete: Versión zsh: 5.3-1 $ dpkg -I zsh_5.3-1_amd64.deb
preinst

# ! / Bin / sh
conjunto -e

# añadido automáticamente por dh_installdeb


dpkg-maintscript-helper symlink_to_dir / usr / share / doc / zsh zsh-5.0.7-3 común - “$ @”
# Poner fin a la sección añade automáticamente

Las normas de Debian describe cada uno de estos archivos en detalle, especificando los guiones de llamadas y los argumentos que
reciben. Estos sequencesmay ser complicado, ya que si uno de los guiones falla, dpkg intentará volver a un estado satisfactorio al
cancelar la instalación o eliminación en curso (en la medida de lo posible).

Capítulo 8 - Administración de paquetes Debian 211


los dpkg Base de datos Puede atravesar la dpkg base de datos del sistema de archivos en / var / lib / / dpkg. esta di-
rectoría contiene un registro actualizado de todos los paquetes que han sido instalados en el sistema. Todos los
scripts de configuración de paquetes instalados se almacenan en el
/ Var / lib / dpkg / info / directorio, en forma de un archivo con el prefijo con el nombre del paquete:

PS ls /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
/var/lib/dpkg/info/zsh.prerm /lib/dpkg/info/zsh.preinst

Este directorio también incluye un archivo con la extensión. lista extensión para cada paquete, que contiene la lista de archivos

que pertenecen a ese paquete:

PS /var/lib/dpkg/info/zsh.list cabeza
/. / Bin / 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 [...]

Los / var / lib / dpkg / status archivo contiene una serie de bloques de datos (en el formato de la famosa petición
encabezados de correo para hacer comentarios, RFC 2822) que describe el estado de cada paquete. La información
de la controlar archivo de los paquetes instalados también se replica allí.

PS más / var / lib / dpkg / status


Paquete: gnome-caracteres Estado: instalar
Prioridad instalado bien: Sección opcional:
gnome Tamaño de instalación: 1785

Mantenedor: Debian GNOME Maintainers <pkg-gnome


una maintainers@lists.alioth.debian.org> Arquitectura: amd64
Versión: 3.20.1-1 [...]

212 Kali Linux Revelado


Vamos a discutir los archivos de configuración y ver cómo interactúan. En general, la preinst script se ejecuta antes de la instalación
del paquete, mientras que el postinst lo sigue. Igualmente, prerm se invoca antes de la retirada de un paquete y postrm después. Una
actualización de un paquete es equivalente a la eliminación de la versión anterior y la instalación de la nueva. No es posible
describir en detalle todos los posibles escenarios de aquí, pero wewill discutir themost común dos: una instalación / fecha hacia
arriba y una eliminación.

Estas secuencias pueden ser muy confuso, pero una representación visual puede ayudar. Manoj Srivastava hizo estos diagramas que
explican cómo los scripts de configuración son llamados por dpkg. diagramas similares también han sido desarrollados por el proyecto
Debian Women; que son un poco más fácil de soporte inferior, pero menos completa.

mi https://people.debian.org/~srivasta/MaintainerScripts.html

mi https://wiki.debian.org/MaintainerScripts

Precaución Las secuencias descritas en esta sección de llamadas scripts de configuración por nombres específicos, tales como la
vieja prerm o nueva-postinst. Ellos son, respectivamente, la prerm la escritura contenida en la versión antigua del paquete
Los nombres simbólicos de la
(instalado antes de la actualización) y el postinst
Guiones
la escritura contenida en la nueva versión (instalado por la actualización).

Instalación y actualización de secuencias de comandos Secuencia

Esto es lo que sucede durante una instalación (o una actualización):

1. Para una actualización, dpkg llama a la actualización de la vieja prerm nueva versión.

2. Aún para una actualización, dpkg luego ejecuta actualización de nueva preinst versión antigua; para un primer in-

stalación, ejecuta nueva-preinst instalar. Se puede añadir la versión antigua en el último ter paráme- si el paquete ya se
ha instalado y retirado (pero no purgada, los archivos de configuración que hayan sido incluidas).

3. Los nuevos archivos de paquetes son entonces desempaquetado. Si ya existe un archivo, se reemplaza, sino que se hace una copia de seguridad y se

almacena temporalmente.

4. Para una actualización, dpkg ejecuta actualización de la vieja postrm nueva versión.

5. dpkg actualiza todos los datos internos (lista de archivos, scripts de configuración, etc.) y elimina la
copias de seguridad de los archivos reemplazados. Este es el punto de no retorno: dpkg ya no tiene acceso a todos los elementos
necesarios para volver al estado anterior.

6. dpkg actualizará los archivos de configuración, que le pide que decida si es incapaz de automat-
camente gestionar esta tarea. Los detalles de este procedimiento se describen en la sección 8.4.3, “sumas Fecha entrada, conffiles” [página

214].

7. Por último, dpkg configura el paquete ejecutando Configurar nueva-postinst último-


Versión-configurado.

Capítulo 8 - Administración de paquetes Debian 213


la eliminación de paquetes

Esto es lo que sucede durante una eliminación de paquetes.

1. dpkg llamadas prerm quitar.

2. dpkg elimina todos los archivos del paquete, con la excepción de los archivos de configuración y
scripts de configuración.

3. dpkg ejecuta postrm quitar. Todos los scripts de configuración, excepto postrm, 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 con dpkg --purge o dpkg -P),
los archivos de configuración también se eliminan, así como un cierto número de copias (*. dpkg-TMP,
* . dpkg de edad, * .New) y los archivos temporales; dpkg luego ejecuta purga postrm.

En algunos casos, un paquete puede utilizar debconf para requerir información de configuración de usted: los cuatro guiones detallados
anteriormente son complementados por una config guión diseñado para adquirir esa informa- ción. Durante la instalación, este script define
en detalle qué preguntas debconf le preguntará. Las respuestas se registran en el debconf base de datos para futuras referencias. El guión es
generalmente ejecu- tados por apto antes de instalar los paquetes de uno a uno con el fin de agrupar todas las preguntas, junto al comienzo
del proceso. Las secuencias de comandos previas y posteriores a la instalación pueden usar esta información para operar de acuerdo a
sus deseos.

los debconf Herramienta los debconf herramienta fue creada para resolver un problema que se repite en Debian. Todo Debian
empaqueta incapaces de funcionar sin un mínimo de configuración que se utiliza para hacer preguntas con llamadas a la eco y leer
comandos en postinst secuencias de comandos shell (y otras secuencias de comandos similares). Esto obligó al instalador para
cuidar a las grandes instalaciones o actualizaciones con el fin de responder a varias preguntas de configuración a medida que
surgían. Estas interacciones manuales han sido ahora casi en su totalidad prescindido, gracias a debconf.

los debconf herramienta tiene muchas características interesantes: Se requiere que el desarrollador para especificar la
interacción del usuario; que permite la localización de todas las cadenas mostradas (todas las traducciones se almacenan en el plantillas
archivo que describe las interacciones); que proporciona diferentes interfaces a la pregunta (en modo texto, modo gráfico, no
interactiva); y que 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, a la vez,
antes de iniciar un proceso de instalación o actualización de largo. Ahora, usted puede ir sobre su negocio, mientras el sistema
se encarga de la instalación por su cuenta, sin tener que permanecer allí mirando a la pantalla, a la espera de las preguntas
que aparecen.

8.4.3. Sumas de comprobación, conffiles

Además de los programas de desarrollador y datos de control ya mencionados en los apartados anteriores, la control.tar.gz 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 -

214 Kali Linux Revelado


./
. / conffiles
. /controlar
. / md5sums
. / postinst
. / postrm
. / preinst
. / prerm

El primero- md5sums sumas de comprobación -Contiene theMD5 para todos los archivos del paquete. Su principal ventaja es que permite dpkg

--verify para comprobar si estos archivos han sido modificados desde su instalación. Tenga en cuenta que cuando no existe este archivo, dpkg generará

de forma dinámica durante la instalación (y almacenarla en la base de datos de dpkg al igual que otros archivos de control).

conffiles listas de archivos de paquetes que deben ser manejados como archivos de configuración. Los archivos de configuración pueden ser modificados

por el administrador, y dpkg tratará de preservar esos cambios durante una actualización del paquete.

En efecto, en esta situación, dpkg se comporta como 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, se intentará actualizar este archivo.
Dos casos son posibles: o bien el administrador no ha tocado este archivo de configuración, en cuyo caso dpkg instala
automáticamente la nueva versión; o el archivo ha sido modificado, en cuyo caso dpkg pregunta el administrador de la versión que
desea utilizar (la anterior con modificaciones, o el nuevo incluido en el paquete). Para ayudar en la toma de esta decisión,

dpkg ofrece para mostrar una diff que muestra la diferencia entre las dos versiones. Si decide mantener la versión antigua,
la newonewill ser almacenado en el mismo lugar en un filewith el. dpkg-dist
sufijo. Si se elige la nueva versión, el antiguo se conserva en un archivo con la extensión. dpkg de edad sufijo. Otra de las acciones
disponibles consiste en interrumpir momentáneamente dpkg para editar el archivo y tratar de restablecer las modificaciones pertinentes
(previamente identificado con diff). dpkg maneja las actualizaciones de archivos de configuración, pero, al hacerlo, se interrumpe
periódicamente su trabajo para pedir la entrada del administrador. Esto puede llevar mucho tiempo e inconveniente. Afortunadamente,
puede indicarle dpkg para responder a estos mensajes automáticamente. Los -- fuerza-confold opción conserva la versión anterior del
archivo, mientras que - fuerza-confnew utilizará la nueva versión. se respetan estas opciones, incluso si el archivo no ha sido cambiado
por el administrador, que sólo rara vez tiene el efecto deseado. La adición de la - fuerza-confdef opción le dice dpkg para decidir por sí
mismo cuando sea posible (en otras palabras, cuando el archivo de configuración original no se ha tocado), y sólo utiliza - forceconfnew o
- fuerza-confold para otros casos. Estas opciones se aplican a dpkg, pero la mayoría de las veces el administrador trabajará directamente
con la

aptitud o apto programas. Es, por lo tanto, necesario conocer la sintaxis utilizada para indicar las opciones de pasar a la dpkg comando

(sus interfaces de línea de comandos son muy similares).

# -o APT :: DPKG opciones :: =”- fuerza-confdef” -o DPKG :: options :: =”- fuerza-confold” completo
una mejorar

Capítulo 8 - Administración de paquetes Debian 215


Estas opciones pueden ser almacenados directamente en apto 'Configuración s. Para ello, basta con escribir la siguiente línea en el archivo / etc / apt /

apt.conf.d / local expediente:

DPkg :: options { “--force-confdef”; “--Force-confold”; }

La inclusión de esta opción en el archivo de configuración significa que también se puede utilizar en una interfase gráfica como aptitud.

A la inversa, también puede forzar dpkg a hacer preguntas archivo de configuración. Los -- fuerza-confask
instruye opción dpkg para visualizar las preguntas acerca de los archivos de configuración, incluso en los casos en los que normalmente no
sería necesario. Por lo tanto, al volver a instalar un paquete con esta opción, dpkg
hará las preguntas de nuevo por todos los archivos de configuración modificados por el administrador. Esto es muy conveniente,
especialmente para volver a instalar el archivo de configuración original si ha sido borrada y no hay otra copia está disponible: una
re-instalación normal no va a funcionar, porque dpkg considera la eliminación como una forma de modificación legítimo, y, por tanto, no se
instala el archivo de configuración deseado.

8.5. Resumen

En esta sección, hemos aprendido más sobre el sistema de paquetes de Debian, discutimos la herramienta de edad avanzada Pack-(APT) y dpkg, aprendido

acerca de la interacción paquete básico, la configuración APT avanzada y el uso, y excavado más profundamente en el paquete Debian systemwith

una breve referencia de la. debutante formato de archivo. Nos fijamos en el controlar archivos, scripts de configuración, las sumas de comprobación, y el conffiles

expediente. Resumen Consejos:

Un paquete Debian es un archivo comprimido de una aplicación de software. Contiene archivos de la aplicación, así como othermetadata

incluyendo los nombres de las dependencias que necesita la aplicación, así como las secuencias de comandos que permiten la ejecución de

comandos en diferentes etapas del ciclo de vida del paquete (instalación, retirada, actualizaciones). los dpkg herramienta, en contra de apto y apt-get

( de la familia APT), no tiene conocimiento de todos los paquetes capaces dispo- que podrían ser utilizados para cumplir con las dependencias de

paquetes. Por lo tanto, para administrar las edades de Debian Pack-, youwill probable uso de la última herramientas, ya que son capaces de

resolver automáticamente problemas de dependencia. Puede utilizar APT para instalar y eliminar aplicaciones, actualizar paquetes, e incluso

actualizar todo el sistema. Estos son los puntos clave que usted debe saber acerca de APT y su configuración:

• los sources.list archivo es el archivo de configuración clave para la definición de las fuentes de paquetes (o reposi- torios que contienen
paquetes).

• Debian andKali utilizar tres secciones para diferenciar los paquetes de acuerdo con las licencias elegidas por los autores de
cada trabajo: principal contiene todos los paquetes que cumplen plenamente con las directrices de software libre de Debian 6; no
libre contiene software que no lo hace (en su totalidad) sigan las directrices de software libre pero sin embargo se puede
distribuir sin restricciones; y

6 https://www.debian.org/social_contract#guidelines

216 Kali Linux Revelado


contrib ( contribuciones) incluye el software de código abierto que no puede funcionar sin algunos elementos que no son libres.

• Kali mantiene varios repositorios, incluyendo: kali-balanceo, que es el repositorio principal para los usuarios finales y siempre
debe contener paquetes instalables y recientes; kali-dev, que es utilizado por los desarrolladores de Kali y no es para uso
público; y kali-sangrado de borde, que a menudo contiene paquetes no probados y un-examinados construidas automáticamente
fuera de la upstreamGit (o Subversion) repositorio menos de veinticuatro horas después de que se han cometido.

• Cuando se trabaja con APT, debe descargar primero la lista de paquetes disponibles en la actualidad con actualización apt.

• Se puede añadir un paquete para el sistema con un simple apto instalar paquete. APT automática- mente instalar las
dependencias necesarias.

• Para eliminar un paquete de uso remove aptos paquete. Además, eliminará los CIE inversa dependen- del paquete (es decir,
paquetes que dependen de que el paquete sea eliminado).

• Para eliminar todos los datos asociados a un paquete, puede “purgar” el paquete con el purga aptos paquete mando. A diferencia de

un retiro, esto no sólo se eliminará el paquete, sino también sus archivos de configuración y, a veces los datos de usuario asociados.

Recomendamos actualizaciones regulares para instalar las últimas actualizaciones de seguridad. Para actualizar, usar apt update seguido de apt

upgrade, apt-get upgrade, o aptitude safe-upgrade. Estos comandos buscan paquetes instalados que se pueden actualizar sin necesidad de retirar

ningún paquete. Para las actualizaciones más importantes, tales como actualizaciones de versiones principales, el uso apt-actualización

completa. Con esta instrucción, apto se completa la actualización, incluso si tiene que eliminar algunos paquetes obsoletos o instalar nuevas

dependencias. Este es también el comando que se debe utilizar para las actualizaciones regulares de su sistema Kali balanceo. Revisar los

pros y los contras de las actualizaciones que se describen en este capítulo. Varias herramientas se pueden utilizar para inspeccionar los

paquetes de Debian:

• --listfiles dpkg paquete ( o - L) enumera los archivos que fueron instalados por el paquete especificado.

• dpkg --search expediente ( o - S) encuentra ningún paquete que contiene el archivo o la ruta aprobada en el argumento.

• dpkg --list ( o - l) muestra la lista de paquetes conocidos por el sistema y su estado de instalación.

• --contents dpkg archivo.deb ( o - do) enumera todos los archivos de un particular. debutante expediente.

• dpkg --info archivo.deb ( o - YO) muestra las cabeceras de la especificada. debutante expediente.

• Los diversos apt-cache subcomandos muestran gran parte de la información almacenada en la base de datos in- terna de APT.

Para evitar el uso del disco excesivas, deberá ordenar a través de regularidad / var / cache / apt / archives /.
Dos comandos se pueden utilizar para esto: limpia apt ( o apt-get clean) completamente vacía la direc-

Capítulo 8 - Administración de paquetes Debian 217


conservador; autoclean apt (autoclean apt-get) sólo elimina paquetes que ya no se pueden cargar Down- porque han
desaparecido del espejo y por lo tanto son inútiles. Aptitud es un programa interactivo que se puede utilizar en modo
semi-gráfica en la consola. Es un programa muy robusto que puede ayudar a instalar y solucionar problemas de los
paquetes.

sináptica es un gestor de paquetes gráfico que cuenta con una interfaz gráfica limpia y eficiente. Como un usuario avanzado, puede

crear archivos en / etc / apt / apt.conf.d / para configurar ciertos aspectos de la APT. Puede alsomanage prioridades de paquetes,

seguimiento de paquetes instalados automáticamente, workwith varias distribuciones o arquitecturas a la vez, utilizar firmas

criptográficas para validar paquetes y actualizar archivos utilizando las técnicas descritas en este capítulo.

A pesar de los mejores esfuerzos de los mantenedores Kali / Debian, una actualización del sistema no siempre es tan suave como
esperaríamos. Cuando esto sucede, usted puede mirar en el seguimiento de errores Kali 7 y en el sistema de seguimiento de fallos de Debian 8 a
https://bugs.debian.org/ paquete para comprobar si el problema ya ha sido reportado. También puede tratar de rebajar el paquete o para
depurar y reparar un guión mantenedor del paquete fallido.

7 http://bugs.kali.org
8 https://bugs.debian.org

218 Kali Linux Revelado


Palabras clave

Los paquetes personalizados

Imágenes

personalizadas de kernel personalizados

live-build
Persistencia
Capítulo

Uso avanzado 9
Contenido

Modificación de paquetes Kali 222 Recompilar el kernel de Linux 232 Imágenes de la construcción personalizada Kali ISO vivas 236

Persistencia añadiendo a la ISO en vivo con una llave USB 239 Resumen 245
Kali se ha construido como un marco de pruebas de penetración altamente modular y personalizable y mínimos al- cierta
personalización bastante avanzada y su uso. Personalizaciones pueden ocurrir en múltiples niveles, comenzando en el nivel de código
fuente. Las fuentes de todos los paquetes de Kali están disponibles al público. En este capítulo, vamos a mostrar cómo se puede
recuperar paquetes, modificarlos y crear sus propios paquetes personalizados fuera de ellos. El núcleo de Linux es algo así como un
caso especial y, como tal, está cubierta en una sección dedicada (sección 9.2, “volver a compilar el kernel de Linux” [página 232]),
donde discutiremos dónde encontrar las fuentes, cómo configurar el kernel construir, y finalmente cómo compilarlo y cómo construir los
paquetes del núcleo asociados.

El segundo nivel de personalización está en el proceso de construcción de imágenes ISO en vivo. Vamos a mostrar cómo el live-build herramienta

ofrece un montón de ganchos y opciones de configuración para personalizar la imagen ISO resultante, incluyendo la posibilidad de utilizar los

paquetes de Debian personalizados en lugar de los paquetes dispo- capaces de espejos.

Wewill también discuten howyou puede crear una ISO vivo persistente integrado en una llave USB que preservará los archivos y cambios en el
sistema operativo tras el reinicio.

9.1. Modificación de paquetes Kali

Modificación de paquetes Kali suele ser una tarea para los colaboradores y desarrolladores Kali: actualicen paquetes con la última versión

original, que retocar la configuración por defecto para una mejor integración en la distribución, o corregir errores reportados por los usuarios.

Pero youmight tienen necesidades específicas no cumplidas por los paquetes oficiales y saber cómo construir un paquete modificado puede

pues ser muy valiosa. Youmight preguntarse por qué tiene que molestarse con el paquete en absoluto. Después de todo, si usted tiene

tomodify una pieza de software, siempre se puede agarrar su código fuente (por lo general con GIT) y ejecutar la versión modificada

directamente desde la caja de origen. Esto está bien cuando es posible y cuando se utiliza el directorio de inicio para este propósito, pero si su

aplicación requiere una configuración de todo el sistema (por ejemplo, con una make install paso), entonces se va a contaminar el archivo de los

archivos desconocidos a systemwith dpkg andwill pronto crear problemas que no pueden ser capturadas por las dependencias del paquete.

Por otra parte, con los paquetes apropiados usted será capaz de compartir los cambios y desplegarlos en varios equipos con mucha más

facilidad o revertir los cambios después de haber descubierto que no estaban funcionando tan bien como usted esperaba.

Así que cuando usted desee modificar un paquete? Vamos a echar un vistazo a algunos ejemplos. En primer lugar, vamos a suponer que usted

es un usuario intensivo de SET y notamos que una nueva versión del código fuente, pero los desarrolladores de Kali todos muy ocupados para

una conferencia y desea probarlo de inmediato. ¿Quieres actualizar el paquete usted mismo. En otro caso, vamos a suponer que usted está

luchando para conseguir su trabajo MIFARE NFC y que desea reconstruir “libfreefare” para activar los mensajes de depuración a fin de tener

datos procesables para proporcionar en un informe de error que se está preparando actualmente. En un último caso, vamos a suponer que el

programa “Pyrit” falla con un mensaje de error críptico. Después de una búsqueda en Internet, a encontrar una confirmación de que se puede

esperar para arreglar el problema en el repositorio y aguas arriba GitHub que desea reconstruir el paquete con esta corrección aplicada.

222 Kali Linux Revelado


Vamos a pasar por todas aquellas muestras en las siguientes secciones. Vamos a tratar de generalizar las explicaciones para que mejor
puede aplicar las instrucciones a otros casos pero es imposible abarcar todas las situaciones que pueden surgir. Si usted choca con
problemas, aplicar su mejor criterio para encontrar una solución o ir a buscar ayuda en los foros más apropiados (véase el capítulo 6,
“ayudarse a sí mismo y Obtención de ayuda” [página 124]).

Cualquiera que sea el cambio que deseas tomake, el proceso general es siempre el mismo: agarrar el paquete fuente, extraerlo, realice los
cambios, a continuación, construir el paquete. Pero para cada paso, a menudo hay varias herramientas que pueden manejar la tarea.
Escogimos las herramientas más importantes y más populares, pero nuestra opinión no es exhaustiva.

9.1.1. Conseguir 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 ( Debian Fuente de control) presentar, ya que enumera los otros archivos que lo acompaña, que pueden ser *. alquitrán.

gz, bz2, XZ, algunas veces *. diff.gz, o *. debian.tar. gz, bz2, xz

archivos.

Los paquetes fuente se almacenan en los espejos Kali que están disponibles a través de HTTP. Se podría utilizar el navegador web
para descargar todos los archivos necesarios, pero la forma más fácil de lograr esto es utilizar el fuente apt source_package_name mando.
Este comando requiere una deb-src línea en el
/etc/apt/sources.list presentar y hasta al día los archivos de índice (logrado mediante la ejecución actualización APT).

Por defecto, Kali no agrega la línea deseada como Kali pocos usuarios realmente necesitan para recuperar los paquetes fuente, pero se puede

añadir fácilmente (véase el archivo de ejemplo en la sección 8.1.3, “Kali Repositorios” [página 173] y las explicaciones correspondientes en la

sección 8.1.2, “Descripción de la sources.list Archivo”[página 172]).

PS libfreefare fuente apt


Leyendo lista de paquetes ... Hecho
AVISO: Los envases de 'libfreefare' se mantiene en el sistema de control 'Git' versión en: git: //anonscm.debian.org/collab-maint/libnfc.git favor use:

git clone: ​//anonscm.debian.org/collab-maint/libnfc.git para recuperar las últimas actualizaciones (posiblemente inéditos) en el
paquete. Se necesita descargar 119 kB de archivos fuente.

Obtener: 1 http://archive-2.kali.org/kali kali-rolling / libfreefare principal 0.4.0-2 (DSC) [2090 B] Get: 2 http://archive-2.kali.org/kali kali-balanceo / libfreefare principal 0.4.0-2
(alquitrán) [113 kB] Get: 3 http://archive-2.kali.org/kali kali-balanceo / libfreefare principal 0.4.0-2 (dif) [3640 B] fue a buscar 119 kB en 1s (63,4 kB / s)

gpgv: keyblock recursos '/home/rhertzog/.gnupg/trustedkeys.gpg': archivo abierto gpgv de error: Firma hecha mar 04 Mar 2014 06:57:36 PM EST
utilizando RSA key ID 40AD1FA6 gpgv: No se puede comprobar la firma: public clave no encontrada

dpkg-source: advertencia: no se puede verificar la firma el ./libfreefare_0.4.0-2.dsc dpkg-source: Info: libfreefare extracción en libfreefare-0.4.0
dpkg-source: Info: desembalaje libfreefare_0.4.0.orig.tar.gz dpkg-source: Info: desembalaje $ libfreefare_0.4.0-2.debian.tar.xz cd libfreefare-0.4.0

PS ls
AUTORES CMakeLists.txt HACKING COPIA m4 README
configure.ac Registro de cambios debian libfreefare prueba de Makefile.am

Capítulo 9 - Uso avanzado 223


cmake contrib ejemplos libfreefare.pc.in NOTICIAS QUE HACER

PS ls debian
los derechos de autor de cambios normas libfreefare-dev.install
compat libfreefare0.install fuente libfreefare-doc.install
controlar libfreefare-bin.install README.Source watch

In this example, while we received the source package from a Kali mirror, the package is the same as in Debian since the
version string doesn’t contain “kali.” This means that no kali-specific changes have been applied.

If you need a specific version of the source package, which is currently not available in the repos- itories listed in / etc/apt/sources.list,
then the easiest way to download it is to find out the URL of its . dsc file by looking it up on http://pkg.kali.org and then handing
that URL over to
dget ( from the devscripts package).

After having looked up the URL of the libreefare source package available in kali-bleeding-edge, you can download it with dget.
It will first download the . dsc file, then parse it to know what other files are referenced, and then download those from the
same location:

$ dget http://http.kali.org/pool/main/libf/libfreefare/libfreefare_0.4.0+0~
å git1439352548.ffde4d-1.dsc
dget: retrieving http://http.kali.org/pool/main/libf/libfreefare/libfreefare_0.4.0+0~
å git1439352548.ffde4d-1.dsc % Total
% Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 364 100 364 0 0 852 0 --:--:-- --:--:-- --:--:-- 854
100 1935 100 1935 0 0 2650 0 --:--:-- --:--:-- --:--:-- 19948
dget: retrieving http://http.kali.org/pool/main/libf/libfreefare/libfreefare_0.4.0+0~
å git1439352548.ffde4d.orig.tar.gz [...]

dget: retrieving http://http.kali.org/pool/main/libf/libfreefare/libfreefare_0.4.0+0~


å git1439352548.ffde4d-1.debian.tar.xz [...]

libfreefare_0.4.0+0~git1439352548.ffde4d-1.dsc:
dscverify: libfreefare_0.4.0+0~git1439352548.ffde4d-1.dsc failed signature check: gpg: Signature made Wed Aug 12 06:14:03 2015 CEST
gpg:
using RSA key 43EF73F4BD8096DA
gpg: Can’t check signature: No public key Validation FAILED!! $ dpkg-source -x
libfreefare_0.4.0+0~git1439352548.ffde4d-1.dsc

gpgv: Signature made Wed Aug 12 06:14:03 2015 CEST gpgv:


using RSA key 43EF73F4BD8096DA
gpgv: Can’t check signature: No public key
dpkg-source: warning: failed to verify signature on ./libfreefare_0.4.0+0~git1439352548
å . ffde4d-1.dsc
dpkg-source: info: extracting libfreefare in libfreefare-0.4.0+0~git1439352548.ffde4d dpkg-source: info: unpacking
libfreefare_0.4.0+0~git1439352548.ffde4d.orig.tar.gz dpkg-source: info: unpacking libfreefare_0.4.0+0~git1439352548.ffde4d-1.debian.tar.xz

224 Kali Linux Revealed


It is worth noting that dget did not automatically extract the source package because it could not verify the PGP signature on
the source package. Thus we did that step manually with dpkgsource -x dsc-file. You can also force the source package
extraction by passing the -- allowunauthenticated or - u option. Inversely, you can use -- download-only to skip the source
package extraction step.

Retrieving Sources from


Git Youmight
repository
haveused
noticed
to maintain
that the apt
thesource
package.
invocation
It mighttells
point
you
toabout
a Debian
a possible
Git repository
Git or to a Kali Git repository.

All Kali-specific packages are maintained in Git repositories hosted on git.kali.org 1.


You can retrieve the sources from those repositories with git clone git://git. kali.org/packages/ source-package. If the
operation doesn’t yield the expected sources, try switching to the kali/master branchwith git checkout kali/master.

Contrary to what you get with apt source, the obtained tree will not have patches automatically applied. Have a
look at debian/patches/ to learn about the possible changes made by Kali.

$ git clone git://git.kali.org/packages/kali-meta


Cloning into ’kali-meta’... remote: Counting objects: 760, done. remote: Compressing objects: 100%
(614/614), done. remote: Total 760 (delta 279), reused 0 (delta 0) Receiving objects: 100% (760/760),
141.01 KiB | 0 bytes/s,

å done.
Resolving deltas: 100% (279/279), done. Checking connectivity...
done. $ cd kali-meta

$ ls
debian $ ls debian

changelog compat control copyright rules source

You can use the git repositories as another way to retrieve the sources and thus (mostly) follow the other
instructions from this section. But when Kali developers work with those repositories, they use another
packaging workflow and use tools from the git-buildpackage package that we will not cover here. You can
learn more about those tools here:

è https://honk.sigxcpu.org/piki/projects/git-buildpackage/

1 http://git.kali.org

Chapter 9 — Advanced Usage 225


9.1.2. Installing Build Dependencies

Now that you have the sources, you still need to install build dependencies. Theywill be necessary to build the desired
binary packages but are also likely required for partial builds that you might want to run to test the changes while you make
them. Each source package declares its build dependencies in the Build-Depends field of the debian/ control file. Let’s
instruct apt to install those (assuming that you are in a directory containing an unpacked source package):

$ sudo apt build-dep ./


Note, using directory ’./’ to get the build dependencies Reading package lists... Done Building
dependency tree

Reading state information... Done


The following NEW packages will be installed:
autoconf automake autopoint autotools-dev debhelper dh-autoreconf dh-strip-nondeterminism gettext intltool-debian
libarchive-zip-perl libfile-stripnondeterminism-perl libtool po-debconf 0 upgraded, 13 newly installed, 0 to remove and 0
not upgraded. Need to get 4 456 kB of archives.

After this operation, 14,6 MB of additional disk space will be used. Do you want to continue? [Y/n] […]

In this sample, all build dependencies can be satisfied with packages available to APT. This might not always be the case
as the tool building kali-rolling does not ensure installability of build de- pendencies (only dependencies of binary packages
are taken into account). In practice, binary dependencies and build dependencies are often tightly coupled andmost
packages will have their build dependencies satisfiable.

9.1.3. Making Changes

We can’t cover all the possible changes that you might want to make to a given package in this section. This would amount
to teaching you all the nitty gritty 2 details of Debian packaging. How- ever, we will cover the three common use cases
presented earlier and we will explain some of the unavoidable parts (like maintaining the changelog file).

The first thing to do is to change the package version number so that the rebuilt packages can be distinguished from the
original packages provided by Kali or Debian. To achieve this, we usually add a suffix identifying the entity (person or
company) applying the changes. Since buxy is my IRC nickname, I will use it as a suffix. Such a change is best
effectedwith the dch command ( Debian CHangelog) from the devscripts package, with a command such as dch --local buxy. This
invokes

2 https://www.debian.org/doc/manuals/maint-guide/

226 Kali Linux Revealed


a text editor ( sensible-editor, which runs the editor assigned in the VISUAL or EDITOR environ- ment variables, or / usr/bin/editor
otherwise), which allows you to document the differences introduced by this rebuild. This editor shows that dch really did
change the debian/changelog
file:

$ head -n 1 debian/changelog
libfreefare (0.4.0-2) unstable; urgency=low $ dch --local buxy

[...] $ head debian/changelog

libfreefare (0.4.0-2buxy1) UNRELEASED; urgency=medium

* Enable --with-debug configure option.

- - Raphael Hertzog <buxy@kali.org> Fri, 22 Apr 2016 10:36:00 -0400

libfreefare (0.4.0-2) unstable; urgency=low

* Update debian/copyrtight. Fix license to


LGPL3+.

If you do such changes regularly, you might want to set the DEBFULLNAME and DEBEMAIL en- vironment variables to
your full name and your email, respectively. Their values will be used by many packaging tools, including dch, which will
embed them on the trailer line shown above (starting with “ -- ”).

Applying a Patch

In one of our use cases, we have downloaded the pyrit source package andwewant to apply a patch that we found in the
upstream git repository. This is a common operation and it should always be simple. Unfortunately, patches can be handled
in different ways depending on the source package format and on the Git packaging workflow in use (when Git is used to
maintain the package).

With an Unpacked Source Package You have run apt source pyrit and you have a pyrit-0.
4.0 directory. You can apply your patch directly with patch -p1 < patch-file:

$ apt source pyrit


[...] $ cd pyrit-0.4.0

$ wget https://github.com/JPaulMora/Pyrit/commit/14
å ec997174b8e8fd20d22b6a97c57e19633f12a0.patch -O /tmp/pyrit-patch
[...] $ patch -p1 </tmp/pyrit-patch

patching file cpyrit/pckttools.py

Chapter 9 — Advanced Usage 227


Hunk #1 succeeded at 53 (offset -1 lines). $ dch --local buxy ”Apply patch to work with
scapy 2.3”

At this point, you have manually patched the source code and you can already build binary pack- ages of your modified
version (see section 9.1.4, “Starting the Build” [page 230]). But if you try to build an updated source package, it will fail,
complaining about “unexpected upstream changes.” This is because pyrit (like amajority of the source packages) uses the
source format (see
debian/source/format file) known as 3.0 (quilt), where changes to the upstream code must be recorded in separate patches
stored in debian/patches/ andwhere the debian/patches/series
file indicates the order in which patches must be applied. You can register your changes in a new patch by running dpkg-source

--commit: $ dpkg-source --commit

dpkg-source: info: local changes detected, the modified files are: pyrit-0.4.0/cpyrit/pckttools.py Enter the desired
patch name: fix-for-scapy-2.3.patch

dpkg-source: info: local changes have been recorded in a new patch: pyrit-0.4.0/debian/
å patches/fix-for-scapy-2.3.patch $ tail -n 1
debian/patches/series
fix-for-scapy-2.3.patch

Quilt Patch Series This patch management convention has been popularized by a tool named quilt
and the “3.0 (quilt)” source package format is thus compatible with this tool—with the small deviation that it
uses debian/patches instead of patches. This tool is available in the package of the same name and you can find
a nice tutorial here:

è https://raphaelhertzog.com/2012/08/08/ how-to-use-quilt-to-manage-patches-in-debian-packages/

If the source package uses the 1.0 or 3.0 (native) source format, then there is no requirement to register your
upstreamchanges in a patch. They are automatically bundled in the resulting source package.

With a Git Repository If you have used Git to retrieve the source package, the situation is even more complicated. There
are multiple Git workflows and associated tools, and obviously not all Debian packages are using the same workflows and
tools. The distinction already explained about source format is still relevant but you must also check whether patches are
pre-applied in the source tree orwhether they are only stored in debian/patches ( in this case, they are then applied at build
time).

Themost popular tool is git-buildpackage. It iswhatwe use tomanage all repositories ongit.kali.org. When you use it, patches
are not pre-applied in the source tree but they are stored in debian/ patches. You can manually add patches in that directory
and list them in debian/patches/

228 Kali Linux Revealed


series but users of git-buildpackage tend to use gbp pq to edit the entire patch series as a single branch that you can extend
or rebase to your liking. Check gbp-pq(1) to learn how to invoke it.

git-dpm ( with associated command of the same name) is another git packaging tool that you can find in use. It records
metadata in debian/.git-dpm and keeps patches applied in the source tree by merging a constantly-rebased branch that it
builds out of the content of debian/patches.

Tweaking Build Options

You usually have to tweak build options when you want to enable an optional feature or behavior that is not activated in the
official package, or when you want to customize parameters that are set at build time through a ./ configure option or through
variables set in the build environment. In those cases, the changes are usually limited to debian/rules, which drives the steps
in the package build process. In the simplest cases, the lines concerning the initial configuration (./ configure …) or the
actual build ($( MAKE) … or make …) are easy to spot. If these commands are not explicitly called, they are probably a side
effect of another explicit command, in which case, please refer to their documentation to learn more about how to change
the default behav- ior. With packages using dh, you might need to add an override for the dh_auto_configure or

dh_auto_build commands (see their respectivemanual pages for explanations on how to achieve this).

To make those explanations more concrete, let’s apply them to our sample use case. You decided to modify libfreefare to
pass the -- enable-debug option to the ./ configure script so that you could get a more verbose output from your near field
communication (NFC) tools and file a better bug report about your non-recognized Mifare NFC card. Since the package
uses dh to drive the build process, you add (or in this case modify) the override_dh_auto_configure target. Here is the
corresponding extract of libfreefare’s debian/rules file:

override_dh_auto_configure:
dh_auto_configure -- --without-cutter --disable-silent-rules --enable-debug

Packaging a New Upstream Version

Let’s take a look at an example at this point, as we discuss packaging upstream versions. Let’s say you are a SET
power-user and you noticed a new upstream release (7.4.5) that is not yet available inKali (which only has version 7.4.4).
Youwant to build anupdated package and try it out. This is a minor version bump and you thus don’t expect the update to
require any change at the packaging level.

To update the source package, you extract the new source tarball next to the current source pack- age and you copy the debian
directory from the current source package to the new one. Then you bump the version in debian/changelog.

Chapter 9 — Advanced Usage 229


$ apt source set
Reading package lists... Done
NOTICE: ’set’ packaging is maintained in the ’Git’ version control system at: git://git.kali.org/packages/set.git Please use:

git clone git://git.kali.org/packages/set.git


to retrieve the latest (possibly unreleased) updates to the package. Need to get 42.3 MB of source archives. [...]

dpkg-source: warning: failed to verify signature on ./set_7.4.4-0kali1.dsc dpkg-source: info: extracting set in set-7.4.4 dpkg-source: info: unpacking
set_7.4.4.orig.tar.gz dpkg-source: info: unpacking set_7.4.4-0kali1.debian.tar.xz dpkg-source: info: applying edit-config-file dpkg-source: info:
applying fix-path-interpreter.patch $ wget https://github.com/trustedsec/social-engineer-toolkit/archive/7.4.5.tar.gz -O

å set_7.4.5.orig.tar.gz
[...] $ tar xvf set_7.4.5.orig.tar.gz

[...]
social-engineer-toolkit-7.4.5/src/wireless/wifiattack.py $ cp -a set-7.4.4/debian
social-engineer-toolkit-7.4.5/debian
$ cd social-engineer-toolkit-7.4.5
$ dch -v 7.4.5-0buxy1 ”New upstream release”

That’s it. You can now build the updated package.

Depending on the kind of changes that the new upstream version introduces, you may also need to change build
dependencies and run-time dependencies, and install new files. Those are much more involved operations that are not
covered by this book.

9.1.4. Starting the Build

When all the needed changes have been applied to the sources, you can start generating the actual binary package or . deb
file. The whole process is managed by the dpkg-buildpackage command and it looks like this:

$ dpkg-buildpackage -us -uc -b


dpkg-buildpackage: source package libfreefare dpkg-buildpackage: source version
0.4.0-2buxy1 dpkg-buildpackage: source distribution UNRELEASED

dpkg-buildpackage: source changed by Raphael Hertzog <buxy@kali.org> dpkg-buildpackage: host architecture amd64 [...]

dh_builddeb
dpkg-deb: building package ’libfreefare0-dbgsym’ in ’../libfreefare0-dbgsym_0.4.0-2buxy1_amd64.deb’. dpkg-deb: building package ’libfreefare0’ in ’../libfreefare0_0.4.0-2buxy1_amd64.deb’. dpkg-deb:
building package ’libfreefare-dev’ in ’../libfreefare-dev_0.4.0-2buxy1_amd64.deb’. dpkg-deb: building package ’libfreefare-bin-dbgsym’ in ’../libfreefare-bin-dbgsym_0.4.0-2buxy1_amd64.deb’.

230 Kali Linux Revealed


dpkg-deb: building package ’libfreefare-bin’ in ’../libfreefare-bin_0.4.0-2buxy1_amd64.deb’. dpkg-deb: building package ’libfreefare-doc’ in
’../libfreefare-doc_0.4.0-2buxy1_all.deb’. dpkg-genchanges -b >../libfreefare_0.4.0-2buxy1_amd64.changes dpkg-genchanges: binary-only upload (no source code included)
dpkg-source --after-build libfreefare-0.4.0 dpkg-buildpackage: binary-only upload (no source included)

The - us -uc options disable signatures on some of the generated files (. dsc, .changes) because this operation will fail if you
do not have a GnuPG key associated with the identity you have put in the
changelog file. The - b optionasks for a “binary-only build.” In this case, the source package (. dsc)
will not be created, only the binary (. deb) packages will. Use this option to avoid failures during the source package build: if
youhaven’t properly recorded your changes in the patchmanagement system, it might complain and interrupt the build
process. As suggested by dpkg-deb ’s messages, the generated binary packages are now available in the parent directory
(the one that hosts the directory of the source package). You can install them with dpkg -i or apt install.

$ sudo apt install ../libfreefare0_0.4.0-2buxy1_amd64.deb \


. . /libfreefare-bin_0.4.0-2buxy1_amd64.deb
Reading package lists... Done Building
dependency tree
Reading state information... Done
Note, selecting ’libfreefare0’ instead of ’../libfreefare0_0.4.0-2buxy1_amd64.deb’ Note, selecting ’libfreefare-bin’ instead of
’../libfreefare-bin_0.4.0-2buxy1_amd64.deb’ The following packages will be upgraded:

libfreefare-bin libfreefare0
2 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. Need to get 0 B/69,4 kB of archives.

After this operation, 2 048 B of additional disk space will be used. [...]

We prefer apt install over dpkg -i as it will deal with missing dependencies gracefully. But not so long ago, you had to use dpkg
as apt was not able to deal with . deb files outside of any repository.

dpkg-buildpackage More often than not, Debian developers use a higher-level program such as debuild;
wrappers this runs dpkg-buildpackage as usual, but it also adds an invocation of a program ( lintian) that runs many checks
to validate the generated package against the Debian policy 3. This script also cleans up the environment so
that local environment variables do not pollute the package build. The debuild command is one of the tools in
the devscripts suite, which share some consistency and configuration to make the maintainers’ task easier.

3 https://www.debian.org/doc/debian-policy/

Chapter 9 — Advanced Usage 231


9.2. Recompiling the Linux Kernel

The kernels provided by Kali include the largest possible number of features, as well as the max- imum number of drivers,
in order to cover the broadest spectrum of existing hardware configu- rations. This is why some users prefer to recompile
the kernel in order to include only what they specifically need. There are two reasons for this choice. First, it is a way to
optimize memory consumption since all kernel code, even if it is never used, occupies physical memory. Because the
statically compiled portions of the kernel are never moved to swap space, an overall decrease in system performance will
result from having drivers and features built in that are never used. Second, reducing the number of drivers and kernel
features reduces the risk of security problems since only a fraction of the available kernel code is being run.

Important

If you choose to compile your own kernel, you must accept the consequences: Kali cannot
ensure security updates for your custom kernel. By keeping the kernel provided by Kali, you
benefit from updates prepared by the Debian Project.

Recompilation of the kernel is also necessary if you want to use certain features that are only available as patches (and
not included in the standard kernel version).

The Debian Kernel


debian-kernel-handbook
Handbook The Debian Debianwith
package)
kernel teammaintains the Kernel Handbook documentation
comprehensive ( also available about
in the most kernel-related tasks
and about how official Debian kernel packages are handled. This is the first place you should look into if you
need more information than what is provided in this section.

è http://kernel-handbook.alioth.debian.org

9.2.1. Introduction and Prerequisites

Unsurprisingly, Debian and Kali manage the kernel in the formof a package, which is not how ker- nels have traditionally
been compiled and installed. Since the kernel remains under the control of the packaging system, it can then be removed
cleanly, or deployed on several machines. Further- more, the scripts associated with these packages automate the
interaction with the bootloader and the initrd generator.

The upstream Linux sources contain everything needed to build a Debian package of the kernel but you still need to install
the build-essential package to ensure that you have the tools required to

232 Kali Linux Revealed


build aDebianpackage. Furthermore, the configuration step for the kernel requires the libncurses5- dev package. Finally, the fakeroot
packagewill enable creation of the Debian packagewithout need- ing administrative privileges.

# apt install build-essential libncurses5-dev fakeroot

9.2.2. Getting the Sources

Since the Linux kernel sources are available as a package, you can retrieve them by installing the
linux-source- version package. The apt-cache search ^linux-source command should list the latest kernel version packaged by
Kali. Note that the source code contained in these packages does not correspond precisely with that published by Linus
Torvalds and the kernel developers 4;
like all distributions, Debian and Kali apply a number of patches, which might (or might not) find their way into the upstream
version of Linux. These modifications include backports of fixes/fea- tures/drivers fromnewer kernel versions, new features
not yet (entirely) merged in the upstream Linux tree, and sometimes even Debian or Kali specific changes.

The remainder of this section focuses on the 4.9 version of the Linux kernel, but the examples can, of course, be adapted
to the particular version of the kernel that you want. In this example, we assume that the linux-source-4.9 binary package
has been installed. Note that we install a binary package containing the upstream sources but do not retrieve the Kali
source package named linux.

# apt install linux-source-4.9


Reading package lists... Done Building
dependency tree
Reading state information... Done
The following additional packages will be installed:
bc libreadline7 Suggested
packages:
libncurses-dev | ncurses-dev libqt4-dev The following NEW packages will
be installed:
bc libreadline7 linux-source-4.9
0 upgraded, 3 newly installed, 0 to remove and 0 not upgraded. Need to get 95.4 MB of archives.

After this operation, 95.8 MB of additional disk space will be used. Do you want to continue? [Y/n] y

[...]
# ls /usr/src
linux-config-4.9 linux-patch-4.9-rt.patch.xz linux-source-4.9.tar.xz

Notice that the package contains / usr/src/linux-source-4.9.tar.xz, a compressed archive of the kernel sources. Youmust extract
these files in a new directory (not directly under / usr/src/,
4 https://kernel.org/

Chapter 9 — Advanced Usage 233


since there is no need for special permissions to compile a Linux kernel). Instead, ~/ kernel/ is more appropriate.

$ mkdir ~/kernel; cd ~/kernel


$ tar -xaf /usr/src/linux-source-4.9.tar.xz

9.2.3. Configuring the Kernel

The next step consists of configuring the kernel according to your needs. The exact procedure depends on the goals.

The kernel build depends on a kernel configuration file. In most cases, you will most likely keep as close as possible to that
proposed by Kali, which, like all Linux distributions, is installed in the
/boot directory. In this case, rather than reconfiguring everything from scratch, it is sufficient to make a copy of the / boot/config-
version file. (The version should be the same as that version of the kernel currently used, which can be found with the uname

-r command.) Place the copy into a . config file in the directory containing the kernel sources.

$ cp /boot/config-4.9.0-kali1-amd64 ~/kernel/linux-source-4.9/.config

Alternatively, since the kernel provides default configurations in arch/ arch/ configs/*_ defconfig, you can put your selected
configuration in place with a command like make x86_64_defconfig ( in the case of a 64-bit PC) or make i386_defconfig ( in the
case of a 32-bit PC).

Unless you need to change the configuration, you can stop here and skip to section 9.2.4, “Com- piling and Building the
Package” [page 235]. If you need to make changes or if you decide to reconfigure everything from scratch, you must take
the time to configure your kernel. There are various dedicated interfaces in the kernel source directory that can be used by
calling the make
target command, where target is one of the values described below.

make menuconfig compiles and launches a text-mode kernel configuration interface (this is where the libncurses5-dev package
is required), which allows navigating the many available ker- nel options in a hierarchical structure. Pressing the Space key
changes the value of the selected option, and Enter validates the button selected at the bottom of the screen; Select
returns to the selected sub-menu; Exit closes the current screen and moves back up in the hierarchy; Help will display
more detailed information on the role of the selected option. The arrow keys allow mov- ing within the list of options and
buttons. To exit the configuration program, choose Exit from the main menu. The program then offers to save the changes
that you have made; accept if you are satisfied with your choices.

Other interfaces have similar features but they work within more modern graphical interfaces, such as make xconfig, which
uses a Qt graphical interface, and make gconfig, which uses GTK+. The former requires libqt4-dev, while the latter depends
on libglade2-dev and libgtk2.0-dev.

234 Kali Linux Revealed


Dealing with Outdated
. config Files When you
kernel
provide
version,
a . config
youfile
willthat
havehas
to been
update
generatedwith
it. You can do
another
so with(usually older) which will interactively ask you the
make oldconfig,
questions corresponding to the new configuration options. If you want to use the default answer to all those
questions, you can use make olddefconfig. With make oldnoconfig, it will assume a negative answer to all
questions.

9.2.4. Compiling and Building the Package

Clean Up Before
Rebuilding If you have
from already
scratch compiled
(for example
a kernel
because
in theyou
directory
substantially
and wish
changed
to rebuild
the kernel
everything
configuration), youwill have to run make
clean to remove the compiled files. make distclean
removes even more generated files, including your . config file, so make sure to back it up first.

Once the kernel configuration is ready, a simple make deb-pkg will generate up to five Debian packages in standard . deb format:
linux-image- version, which contains the kernel image and the associated modules; linux-headers- version, which contains
the header files required to build ex- ternal modules; linux-firmware-image- version, which contains the firmware files
needed by some drivers (this package might be missing when you build from the kernel sources provided by Debian or
Kali); linux-image- version- dbg, which contains the debugging symbols for the kernel image and its modules; and linux-libc-dev,
which contains headers relevant to some user-space libraries like GNU’s C library (glibc). The version is defined by the
concatenation of the upstream version (as defined by the vari- ables VERSION, PATCHLEVEL, SUBLEVEL, and EXTRAVERSION
in the Makefile), of the

LOCALVERSION configuration parameter, and of the LOCALVERSION environment variable. The package version reuses
the same version string with an appended revision that is regularly incremented (and stored in . version), except if you
override it with the KDEB_PKGVERSION
environment variable.

$ make deb-pkg LOCALVERSION=-custom KDEB_PKGVERSION=$(make kernelversion)-1


[...] $ ls ../*.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-image-4.9.0-kali1-custom-dbg_4.9.2-1_amd64.deb
. . /linux-libc-dev_4.9.2-1_amd64.deb

To actually use the built kernel, the only step left is to install the required packages with dpkg
- i file.deb. The “linux-image” package is required; you only have to install the “linux-headers” package if you have some
external kernel modules to build, which is the case if you have some

Chapter 9 — Advanced Usage 235


“*-dkms” packages installed (check with dpkg -l ”*-dkms” | grep ^ii). The other packages are generally not needed (Unless you
know why you need them!).

9.3. Building Custom Kali Live ISO Images

Kali Linux has a ton of functionality and flexibility right out of the box. Once Kali is installed, you can perform all sorts of
amazing feats with a little guidance, creativity, patience, and practice. However, you can also customize a Kali build so that
it contains specific files or packages (to scale up or scale down performance and features) and can performcertain
functions automatically. For example, the Kali ISO of Doom 5 and the Kali Evil Wireless Access Point 6 are both excellent
projects that rely on a custom-built implementation of Kali Linux. Let’s take a look at the process of rolling a custom Kali
Linux ISO image.

Official Kali ISO images are built with live-build 7, which is a set of scripts that allows for the com- plete automation and
customization of all facets of ISO image creation. The live-build suite uses an entire directory structure as input for its
configuration. We store this configuration and some associated helper scripts in a live-build-config Git repository. We will
use this repository as a basis for building customized images.

Before going further, you must know that the commands shown in this section are meant to be run on an up-to-date Kali
Linux system. They are very likely to fail if run on a non-Kali system or if the system is out of date.

9.3.1. Installing Pre-Requisites

The first step is to install the packages needed and to retrieve the Git repository with the Kali
live-build configuration:

# apt install curl git live-build


[...]
# git clone git://git.kali.org/live-build-config.git
[...]
# cd live-build-config
# ls
auto build_all.sh build.sh kali-config README

At this point, you can already create an updated (but unmodified) Kali ISO image just by running
. /build.sh --verbose. The build will take a long time to complete as it will download all the packages to include. When
finished, you will find the new ISO image in the images directory.

5 https://www.offensive-security.com/kali-linux/kali-linux-iso-of-doom
6 https://www.offensive-security.com/kali-linux/kali-linux-evil-wireless-access-point/
7 http://debian-live.alioth.debian.org/live-build/

236 Kali Linux Revealed


9.3.2. Building Live Images with Different Desktop Environments

The build.sh live-build wrapper that we provide is responsible for setting up the config direc- tory that live-build expects to find.
It can put in place different configurations depending on its -- variant option. The wrapper creates the config directory by
combining files from kali-config/common and

kali-config/variant- X, where X is the name of a variant given with the -- variant parameter. When the option is not explicitly

given, it uses default as the name of the variant. The kali-config directory contains directories for the most common desktop

environments:

• e17 for Enlightenment;

• gnome for GNOME;

• i3wm for the corresponding windowmanager;

• kde for KDE;

• lxde for LXDE;

• mate for the Mate Desktop Environment;

• xfce for XFCE. The light variant is a bit special; it is based on XFCE 8 and is used to generate the official “light” ISO

images that contain a reduced set of applications.

You can easily create a Kali live image using KDE as desktop environment with this single com- mand:

# . /build.sh --variant kde --verbose

This concept of variant allows for some high-level pre-defined customizations but if you take the time to read through the
Debian Live SystemManual 9, you will discover many other ways to cus- tomize the images, just by changing the content of
the appropriate sub-directory of kali-config.
The following sections will provide some examples.

9.3.3. Changing the Set of Installed Packages

Once launched, live-build installs all the packages listed in package-lists/*.list.chroot


files. The default configuration that we provide includes a package-lists/kali.list.chroot
file, which lists kali-linux-full ( themainmeta-package pulling all the Kali packages to include). You can comment out this
package and put another meta-package of your choice or include a precise set of other packages. You can also combine
both approaches by starting with a meta-package and adding supplementary packages of your choice.

8 https://www.xfce.org/
9 http://debian-live.alioth.debian.org/live-manual/unstable/manual/html/live-manual.en.html

Chapter 9 — Advanced Usage 237


With package-lists, you can only include packages that are already available in the official Kali repository. But if you have
custompackages, you can include them in the live image by placing the
. deb files in a packages.chroot directory (for example kali-config/config-gnome/packages. chroot if you build the GNOME variant).

Meta-packages are empty packages whose sole purpose is to have many dependencies on other packages. They make it
easier to install sets of packages that you often want to install together. The kali-meta source package builds all the
meta-packages provided by Kali Linux:

• kali-linux: the base system (it is pulled by all the other meta-packages)

• kali-linux-full:the default Kali Linux installation

• kali-linux-all: meta-package of all the meta-packages and other packages (almost every- thing that Kali provides so
it is really huge!)

• kali-linux-sdr: Software Defined Radio (SDR) tools

• kali-linux-gpu: GPU-powered tools (tools making use of the computing power available in your graphical card)

• kali-linux-wireless: wireless assessment and analysis tools

• kali-linux-web: web applications assessment tools

• kali-linux-forensic: forensic tools (finding evidence of what happened)

• kali-linux-voip: Voice Over IP tools

• kali-linux-pwtools: password cracking tools

• kali-linux-top10: the ten most popular tools

• kali-linux-rfid: RFID tools

You can leverage thesemeta-packages when you create custompackage lists for live-build. The full list of
availablemeta-packages and the tools they include can be found at http://tools.kali. org/kali-metapackages

Debconf Preseeding of
Installed Packages You can [page
provide
93]Debconf
for explanations)
preseed files
as preseed/*.cfg
(see section 4.3.2,
files. They
“Creating
will be aused
Preseed
to configure
File” the packages installed in the
live file system.

9.3.4. Using Hooks to Tweak the Contents of the Image

live-build offers hooks that can be executed at different steps of the build process. Chroot hooks are executable scripts that
you install as hooks/live/*.chroot files in your config tree and that are executed within the chroot. While chroot is the
command that lets you temporarily changes the operating system’s root directory to a directory of your choice, it is also
used by extension to

238 Kali Linux Revealed


designate a directory hosting a full (alternate) file system tree. This is the case here with livebuild, where the chroot directory
is the directory where the live file system is being prepared. Since applications started in a chroot can’t see outside of that
directory, the same goes with the chroot hooks: you can only use and modify anything available in that chroot environment.
We rely on those hooks to performmultiple Kali specific customizations (see kali-config/common/ hooks/live/kali-hacks.chroot).

Binary hooks ( hooks/live/*.binary) are executed in the context of the build process (and not chrooted anywhere) at the end of
the process. You can modify the content of the ISO image built but not of the live file systemsince at this point, it has
already been generated. We use this feature in Kali to make some changes to the default isolinux configuration generated
by live-build. For example, see kali-config/common/hooks/live/persistence.binary where we add the boot menu entries enabling
persistence.

9.3.5. Adding Files in the ISO Image or in the Live Filesystem

Another very common customization is to add files either in the live file system or in the ISO image.

You can add files to the live file system by putting them at their expected location be- low the includes.chroot config directory.
For example, we provide kali-config/common/ includes.chroot/usr/lib/live/config/0031-root-password, which ends up as / usr/lib/
live/config/0031-root-password in the live file system.

Live-Boot Hooks Scripts installed as / lib/live/config/ XXXX-name are executed by the init script
of the live-boot package. They reconfigure many aspects of the system to be suited for a live system. You
can add scripts of your own to customize your live system at run-time: it’s notably used to implement a
custom boot parameter for example.

You can add files to the ISO image by putting them at their expected location below the includes. binary config directory. For
example, we provide kali-config/common/includes.binary/ isolinux/splash.png to override the background image used by the
Isolinux bootloader (which is stored in / isolinux/splash.png in the filesystem of the ISO image).

9.4. Adding Persistence to the Live ISO with a USB Key

9.4.1. The Persistence Feature: Explanations

Next, we will discuss the steps required to add persistence to a Kali USB key. The nature of a live system is to be
ephemeral. All data stored on the live system and all the changes made are lost when you reboot. To remedy this, you can
use a feature of live-boot called persistence, which is enabled when the boot parameters include the persistence keyword.

Chapter 9 — Advanced Usage 239


Since modifying the boot menu is a non-trivial task, Kali includes two menu entries by default that enable persistence: Live
USB Persistence and Live USB Encrypted Persistence, as shown in Figure 9.1, “Persistence Menu Entries” [page 240].

Figure 9.1 Persistence Menu Entries

When this feature is enabled, live-boot will scan all partitions looking for file systems labeled
persistence ( which can be overridden with the persistence-label= value boot parameter) and the installer will set up
persistence of the directories which are listed in the persistence.conf file found in that partition (one directory per line). The
special value “/  union ” enables full persistence of all directories with a union mount, an overlay that stores only the changes
when compared to the underlying file system. The data of the persisted directories are stored in the file system that
contains the corresponding persistence.conf file.

240 Kali Linux Revealed


9.4.2. Setting Up Unencrypted Persistence on a USB Key

In this section, we assume that youhave prepared a Kali LiveUSBKey by following the instructions at section 2.1.4, “Copying
the Image on a DVD-ROM or USB Key” [page 19] and that you have used a USB key big enough to hold the ISO image
(roughly 3 GB) and the data of the directories that you want to persist. We also assume that the USB key is recognized by
Linux as / dev/sdb and that it only contains the two partitions that are part of the default ISO image (/ dev/sdb1 and / dev/sdb2).

Be very careful when performing this procedure. You can easily destroy important data if you re-partition the wrong drive.

To add a new partition, youmust know the size of the image that you copied so that you canmake the new partition start
after the live image. Then use parted to actually create the partition. The commands below analyze the ISO image named kali-linux-2016.1-a
which is assumed to be present on the USB key as well:

# parted /dev/sdb print


Model: SanDisk Cruzer Edge (scsi) Disk /dev/sdb: 32,0GB

Sector size (logical/physical): 512B/512B Partition Table: msdos Disk


Flags:

Number Start End Size Type File system Flags


1 32,8kB 2852MB 2852MB primary boot, hidden
2 2852MB 2945MB 93,4MB primary
# start=$(du --block-size=1MB kali-linux-2016.1-amd64.iso | awk ’{print $1}’)
# echo ”Size of image is $start MB”
Size of image is 2946 MB
# parted -a optimal /dev/sdb mkpart primary ”${start}MB” 100%
Information: You may need to update /etc/fstab.

# parted /dev/sdb print


Model: SanDisk Cruzer Edge (scsi) Disk /dev/sdb: 32,0GB

Sector size (logical/physical): 512B/512B Partition Table: msdos Disk


Flags:

Number Start End Size Type File system Flags


1 32,8kB 2852MB 2852MB primary boot, hidden
2 2852MB 2945MB 93,4MB primary 3
2946MB 32,0GB 29,1GB primary

With the new/ dev/sdb3 partition inplace, format it with an ext4 filesystemlabelled “persistence” with the help of the mkfs.ext4 command
(and its - L option to set the label). The partition is then mountedon the / mnt directory andyouadd the required persistence.conf configuration
file. As

Chapter 9 — Advanced Usage 241


always, use caution when formatting any disk. You could lose valuable information if you format the wrong disk or partition.

# mkfs.ext4 -L persistence /dev/sdb3


mke2fs 1.43-WIP (15-Mar-2016)
Creating filesystem with 7096832 4k blocks and 1777664 inodes Filesystem UUID:
dede20c4-5239-479a-b115-96561ac857b6 Superblock backups stored on blocks:

32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 4096000

Allocating group tables: done Writing inode tables:


done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
# mount /dev/sdb3 /mnt
# echo ”/ union” >/mnt/persistence.conf
# ls -l /mnt
total 20
drwx------ 2 root root 16384 May 10 13:31 lost+found
- rw-r--r-- 1 root root 8 May 10 13:34 persistence.conf
# umount /mnt

The USB key is now ready and can be booted with the “Live USB Persistence” boot menu entry.

9.4.3. Setting Up Encrypted Persistence on a USB Key

live-boot is also able to handle persistence file systems on encrypted partitions. You can thus protect the data of your
persistent directories by creating a LUKS encrypted partition holding the persistence data.

The initial steps are the same up to the creation of the partition but instead of formatting it with an ext4 file system, use cryptsetup
to initialize it as a LUKS container. Then open that container and setup the ext4 file system in the same way as in the
non-encrypted setup, but instead of using the / dev/sdb3 partition, use the virtual partition created by cryptsetup. This virtual
partition represents the decrypted content of the encrypted partition, which is available in / dev/mapper

under the name that you assigned it. In the example below, we will use the name kali_persistence.
Again, ensure that you are using the correct drive and partition.

# cryptsetup --verbose --verify-passphrase luksFormat /dev/sdb3

WARNING!
========
This will overwrite data on /dev/sdb3 irrevocably.

Are you sure? (Type uppercase yes): YES

242 Kali Linux Revealed


Enter passphrase: Verify
passphrase: Command
successful.
# cryptsetup luksOpen /dev/sdb3 kali_persistence
Enter passphrase for /dev/sdb3:
# mkfs.ext4 -L persistence /dev/mapper/kali_persistence
mke2fs 1.43-WIP (15-Mar-2016)
Creating filesystem with 7096320 4k blocks and 1774192 inodes Filesystem UUID:
287892c1-00bb-43cb-b513-81cc9e6fa72b Superblock backups stored on blocks:

32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 4096000

Allocating group tables: done Writing inode tables:


done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

# mount /dev/mapper/kali_persistence /mnt


# echo ”/ union” >/mnt/persistence.conf
# umount /mnt
# cryptsetup luksClose /dev/mapper/kali_persistence

9.4.4. Using Multiple Persistence Stores

If you have multiple use-cases for your Kali live system, you can use multiple filesystems with dif- ferent labels and indicate
on the boot command line which (set of) filesystems should be used for the persistence feature: this is done with the help
of the persistence-label= label boot parameter. Let’s assume that you are a professional pen-tester. When you work for a
customer, you use an encrypted persistence partition to protect the confidentiality of your data in case the USB key is
stolen or compromised. At the same time, you want to be able to showcase Kali and some pro- motional material stored in
an unencrypted partition of the same USB key. Since you don’t want to manually edit the boot parameters on each boot,
you want to build a custom live image with dedicated boot menu entries.

The first step is to build the custom live ISO (following section 9.3, “Building Custom Kali Live ISO Images” [page 236] and
in particular section 9.3.4, “Using Hooks to Tweak the Contents of the Image” [page 238]). Themain customization is
tomodify kali-config/common/hooks/live/ persistence-menu.binary to make it look like this (note the persistence-label parameters):

# !/bin/sh

if [ ! -d isolinux ]; then
cd binary

Chapter 9 — Advanced Usage 243


fi

cat >>isolinux/live.cfg <<END

label live-demo
menu label ^Live USB with Demo Data linux /live/vmlinuz
initrd /live/initrd.img

append boot=live username=root hostname=kali persistence-label=demo persistence

label live-work
menu label ^Live USB with Work Data linux /live/vmlinuz initrd
/live/initrd.img

append boot=live username=root hostname=kali persistence-label=work persistence-


å encryption=luks persistence

END

Next, wewill build our customISOand copy it to theUSBkey. Thenwewill create and initialize the two partitions and files
ystems that will be used for persistence. The first partition is unencrypted (labeled “demo”), and the second is encrypted
(labeled “work”). Assuming / dev/sdb is our USB key and the size of our custom ISO image is 3000 MB, it would look like
this:

# parted /dev/sdb mkpart primary 3000 MB 55%


# parted /dev/sdb mkpart primary 55% 100%
# mkfs.ext4 -L demo /dev/sdb3
[...]
# mount /dev/sdb3 /mnt
# echo ”/ union” >/mnt/persistence.conf
# umount /mnt
# cryptsetup --verbose --verify-passphrase luksFormat /dev/sdb4
[...]
# cryptsetup luksOpen /dev/sdb4 kali_persistence
[...]
# mkfs.ext4 -L work /dev/mapper/kali_persistence
[...]
# mount /dev/mapper/kali_persistence /mnt
# echo ”/ union” >/mnt/persistence.conf
# umount /mnt
# cryptsetup luksClose /dev/mapper/kali_persistence

And that’s all. You cannowboot theUSBkey and select fromthe newbootmenu entries as needed!

244 Kali Linux Revealed


Adding a Nuke Password
for Extra Safety Kali has word
modified
which—when
cryptsetup toused—
implement
will destroy
a new feature:
all keys you
usedcan set a nuke
to manage the pass-
encrypted partition.

This can be useful when you travel a lot and need a quick way to ensure your data cannot be recovered.
When booting, just type the nuke password instead of the real one and it will then be impossible for anyone
(including you) to access your data. Before using that feature, it is thus wise to make a backup copy of your
encryption keys and keep them at some secure place.

Following the example in this section, you could add a nuke password with this command:

# cryptsetup luksAddNuke /dev/sdb4


Enter any existing passphrase: Enter new passphrase for
key slot: Verify passphrase:

More information about this feature can be found in the following tutorial:

è https://www.kali.org/tutorials/nuke-kali-linux-luks/

9.5. Summary

In this chapter, we learned about modifying Kali source packages, which are the basic building blocks of all applications
shipped in Kali. We also discovered how to customize and install the Kali kernel. Then we discussed the live-build environment
and discussed how to build a customized Kali Linux ISO. We also demonstrated how to create both encrypted and
unencrypted Kali USB installs.

9.5.1. Summary Tips for Modifying Kali Packages

Modifying Kali packages is usually a task for Kali contributors and developers, but youmight have specific needs not
fulfilled by the official packages and knowing how to build a modified package can be very valuable, especially if you want
to share your changes, deploy them internally, or cleanly roll the software back to a previous state.

When you need to modify a piece of software, it might be tempting to download the source, make the changes, and use
the modified software. However, if your application requires a system-wide setup (e.g. with a make install step), then it will pollute
your file system with files unknown to
dpkg and will soon create problems that cannot be caught by package dependencies. In addition, this type of software
modification is more tedious to share.

Chapter 9 — Advanced Usage 245


When creating a modified package, the general process is always the same: grab the source pack- age, extract it, make
your changes, and then build the package. For each step, there are often multiple tools that can handle each task.

To start rebuilding a Kali package, first download the source package, which is composed of a
* . dsc ( Debian Source Control) file and of additional files referenced from that control file. Source packages are stored on

HTTP-accessible mirrors. The most efficient way to obtain them is with apt source source-package-name, which requires that
you add a deb-src line to the / etc/ apt/sources.list file and update the index files with apt update.

Additionally, you can use dget ( from the devscripts package) to download a . dsc file directly to- gether with its accompanying
files. For Kali-specific packages whose sources are hosted in a Git repository on git.kali.org 10, you can retrieve the sources
with git clone git://git.kali.org/ packages/ source-package ( if you don’t see anything in your repository, try switching to the kali/
master branch with git checkout kali/master).

After downloading sources, install the packages listed in the source package’s build dependencies with sudo apt build-dep ./. This

command must be run from the package’s source directory. Updates to a source package consist of a combination of

some of the following steps:

• The required first step is changing the version number to distinguish your package from the original with dch --local version-identifie
ormodify other package detailswith
dch.

• Applying a patch with patch -p1 < patch-file or modifying quilt ’s patch series.

• Tweaking build options, usually found in the package’s debian/rules file, or other files in the debian/ directory.

After modifying a source package, you can build the binary package with dpkg-buildpackage
- us -uc -b from the source directory, whichwill generate an unsigned binary package. The pack- age can then be installed
with dpkg -i package-name_version_arch.deb.

9.5.2. Summary Tips for Recompiling the Linux Kernel

As an advanced user, you may wish to recompile the Kali kernel. You may want to slim down the standard Kali kernel,
which is loaded with many features and drivers, add non-standard drivers or features, or apply kernel patches. Beware
though: amisconfigured kernel may destabilize your system and you must be prepared to accept that Kali cannot ensure
security updates for your custom kernel.

For most kernel modifications, you will need to install a few packages with apt install buildessential libncurses5-dev fakeroot.

10 http://git.kali.org

246 Kali Linux Revealed


The command apt-cache search ^linux-source should list the latest kernel version packaged by Kali, and apt install linux-source- version-numbe
installs a compressed archive of the kernel source into / usr/src.

The source files should be extracted with tar -xaf into a directory other than / usr/src ( such as
~/kernel).

When the time comes to configure your kernel, keep these points in mind:

• Unless you are an advanced user, you should first populate a kernel configuration file. The preferred method is to
borrow Kali’s standard configuration by copying / boot/ config- version-string to ~/ kernel/linux-source- version-number/. config. Alterna-
tively, you can use make architecture_ defconfig to get a reasonable configuration for the given architecture.

• The text-based make menuconfig kernel configuration tool will read the . config file and present you all the

configuration items in a huge menu that you can navigate. Selecting an item shows you its documentation, its possible
values, and permits you to enter a new value. When run from your kernel source directory, make clean will remove
previously-compiled files and make deb-pkg will generate up to five Debian packages. The linux-image- version . deb file
contains the kernel image and the associated modules. To actually use the built kernel, install the required packageswith dpkg
-i file.deb. The “linux- image” package is required; you only have to install the “linux-headers” package if you have some

external kernel modules to build, which is the case if you have some “*-dkms” packages installed (check with dpkg -l
”*-dkms” | grep ^ii). The other packages are generally not needed (un- less you know why you need them!).

9.5.3. Summary Tips for Building Custom Kali Live ISO Images

Official Kali ISO images are built with live-build 11, which is a set of scripts that allows for the complete automation and

customization of all facets of ISO image creation. Your Kali systemmust be completely up-to-date before using live-build.

The Kali live-build configuration can be retrieved from Kali’s Git repositories with two com- mands: apt install curl git live-build followed
by git clone git://git.kali.org/ live-build-config.git

To generate an updated but unmodified Kali ISO image, simply run ./ build.sh --verbose. The build will take a long time to
complete as it will download all the packages to include. When finished, you will find the new ISO image in the images directory.
If you add -- variant variant
to the command line, it will build the given variant of the Kali ISO image. The various variants

11 http://debian-live.alioth.debian.org/live-build/

Chapter 9 — Advanced Usage 247


are defined by their configuration directories kali-config/variant-*. The main image is the
gnome variant.

There are several ways to customize your ISO by modifying live-build’s configuration directory:

• Packages can be added to (or removed from) a live ISO by modifying package-lists/*. list.chroot files.

• Custom packages can be included in the live image by placing the . deb files in a packages. chroot directory. Their
installation can be preseeded with preseed/*.cfg files.

• You can add files to the live filesystemby putting themat their expected location below the
includes.chroot config directory.

• You can execute scripts during the live system’s chroot setup process by installing them as
hooks/live/*.chroot files. You can also execute scripts at boot time of the generated live image: youmust arrange for
themto be installed in / usr/lib/live/config/ XXXX-name, for example by relying on the includes.chroot config directory.

• The Debian Live Systems Manual 12 is an excellent reference for live-build configuration and testing.

Setting up encrypted and unencrypted persistence on a USB key: it’s fairly simple to create a standard Kali Live USB
installation. Although the process may seem syntactically complex, it is relatively straight-forward to add both encrypted
and unencrypted persistence to your portable installation to significantly extend its functionality.

In the next chapter, wewill discuss howKali scales to the enterprise. Wewill discuss configuration management and show
you how to extend and customize Kali Linux in a way that is easy to deploy whether you have a pair of machines, or
several thousand.

12 http://debian-live.alioth.debian.org/live-manual/unstable/manual/html/live-manual.en.html

248 Kali Linux Revealed


Keywords

PXE installation
Configuration
management
Saltstack
Forking Kali packages
Configuration
packages
Package repository
Chapter

Kali Linux in the 10


Enterprise
Contents

Installing Kali Linux Over the Network (PXE Boot) 252 Leveraging Configuration Management 255

Extending and Customizing Kali Linux 262 Summary 273


So far, we have seen that Kali is an extremely capable and secure Debian derivative provid- ing industrial-strength security
and encryption features, advanced package management, multi- platformcapability, and (what it ismost-known for) an
arsenal of world-class tools for the security professional. What might not be obvious is howKali scales beyond the desktop
tomediumor large scale deployments and even to the enterprise level. In this chapter, we will show you how well Kali can
scale beyond the desktop, providing centralized management and enterprise-level con- trol over multiple Kali Linux
installations. In short, after reading this chapter you will be able to quickly deploy highly secure Kali systems preconfigured
for your specific needs and keep them synchronized thanks to Kali’s (semi-automatic) installation of package updates. This
level of scale requires several steps, including initiating a PXE network boot, use of an ad- vanced configuration
management tool (SaltStack), the ability to fork and customize packages, and the deployment of a package repository. We
will cover each step in detail, show you how to get the “heavy lifting” out of the way, and deploy, manage, and maintain
multitudes of custom Kali Linux installations with relative ease. As if that were not enough, we will throw in a crowd of
minions to assist you in running your empire.

10.1. Installing Kali Linux Over the Network (PXE Boot)

As we have seen in previous chapters, the basic Kali Linux installation process is straightforward once you knowyourway
around. But if you have to install Kali onmultiplemachines, the standard setup can be quite tedious. Thankfully, you can
start the Kali installation procedure by booting a computer over the network. This allows you to install Kali quickly and
easily on many machines at a time.

First, you will need to boot your target machine from the network. This is facilitated by the Pre- boot eXecution Environment
(PXE), a client/server interface designed to boot any networkedma- chine from the network even if it does not have an
operating system installed. Setting up PXE network boot requires that you configure at least a trivial file transfer protocol
(TFTP) server and a DHCP/BOOTP server. You will also need a web server if you want to host a debconf preseeding file
that will be automatically used in the installation process. Fortunately, dnsmasq handles both DHCP and TFTP so that you
can rely on a single service to set up everything you need. And the Apache web server is installed (but not enabled) by
default on Kali systems.

Separate DHCP and TFTP


daemons For more
wantcomplex setups,
to enable dnsmasq
PXE booting ’s feature
on your main set mightthat
network be too limited
already or ayou
runs might
DHCP daemon. In both cases, you will
then have to configure separate DHCP and TFTP daemons. The Debian installation manual covers the setup
of isc-dhcp-server and tftpd-hpa for PXE booting.

è https://www.debian.org/releases/stable/amd64/ch04s05.html

252 Kali Linux Revealed


In order to set up dnsmasq, you must first configure it through / etc/dnsmasq.conf. A basic con- figuration consists of only a few
key lines:

# Network interface to handle interface=eth0

# DHCP options
# IP range to allocate
dhcp-range=192.168.101.100,192.168.101.200,12h
# Gateway to announce to clients
dhcp-option=option:router,192.168.101.1
# DNS servers to announce to clients
dhcp-option=option:dns-server,8.8.8.8,8.8.4.4
# Boot file to announce to clients dhcp-boot=pxelinux.0

# TFTP options
enable-tftp
# Directory hosting files to serve tftp-root=/tftpboot/

With / etc/dnsmasq.conf configured, you will need to place the installation boot files in the
/tftpboot/ directory. Kali Linux provides a file archive dedicated to this purpose that can be directly unpacked into / tftpboot/. Simply
select between 32-bit (i386) and 64-bit (amd64) and standard or graphical (gtk) install methods for your target machine
and choose the appropriate archive:

è http://http.kali.org/dists/kali-rolling/main/installer-amd64/current/images/ netboot/gtk/netboot.tar.gz

è http://http.kali.org/dists/kali-rolling/main/installer-amd64/current/images/ netboot/netboot.tar.gz

è http://http.kali.org/dists/kali-rolling/main/installer-i386/current/images/ netboot/gtk/netboot.tar.gz

è http://http.kali.org/dists/kali-rolling/main/installer-i386/current/images/ netboot/netboot.tar.gz

Once you have selected the archive, create / tftpboot/, download the archive, and unpack it into that directory:

# mkdir /tftpboot
# cd /tftpboot
# wget http://http.kali.org/dists/kali-rolling/main/installer-amd64/current/images/
å netboot/netboot.tar.gz
# tar xf netboot.tar.gz
# ls -l
total 25896
drwxrwxr-x 3 root root 4096 May 6 04:43 debian-installer

Chapter 10 — Kali Linux in the Enterprise 253


lrwxrwxrwx 1 root root 47 May 6 04:43 ldlinux.c32 -> debian-installer/amd64/boot
å - screens/ldlinux.c32
- rw-r--r-- 1 root root 26507247 May 6 04:43 netboot.tar.gz lrwxrwxrwx 1 root root
33 May 6 04:43 pxelinux.0 -> debian-installer/amd64/
å pxelinux.0 lrwxrwxrwx 1 root
root 35 May 6 04:43 pxelinux.cfg -> debian-installer/amd64/
å pxelinux.cfg
- rw-rw-r-- 1 root root 71 May 6 04:43 version.info

The unpacked files include the pxelinux bootloader, which uses the same configuration files as
syslinux and isolinux. Because of this, you can tweak the boot files in debian-installer/amd64/ boot-screens/ as you would when
generating custom Kali Linux Live ISO images. For example, assuming that you have picked the textual installer, you can
add boot parameters to preseed the language, country, keymap, hostname, and domainname values. You can also point
the installer to an external preseed URL and configure the timeout so that the boot happens au- tomatically if no key is
pressed within 5 seconds. To accomplish this, you would first modify the

debian-installer/amd64/txt.cfg file:

label install
menu label ^Install
kernel debian-installer/amd64/linux
append vga=788 initrd=debian-installer/amd64/initrd.gz --- quiet language=en
å country=US keymap=us hostname=kali domain= url=http://192.168.101.1/
å preseed.cfg

Then, you would modify the debian-installer/amd64/syslinux.cfg file to adjust the timeout:

# D-I config version 2.0


# search path for the c32 support libraries (libcom32, libutil etc.) path debian-installer/amd64/boot-screens/ include
debian-installer/amd64/boot-screens/menu.cfg default debian-installer/amd64/boot-screens/vesamenu.c32 prompt 0

timeout 50

Armed with the ability to boot any machine from the network via PXE, you can take advantage of all the features outlined in
section 4.3, “Unattended Installations” [page 91], enabling you to do full booting, preseeding, andunattended
installationonmultiple computerswithout physical boot media. Also, don’t forget the flexibility of the boot parameter preseed/url=http://
server/ preseed. cfg ( nor the use of the url alias), which allows you to set a network-based preseed file.

254 Kali Linux Revealed


10.2. Leveraging Configuration Management

With the ability to install Kali on multiple computers very quickly, you will need some help in managing those machines
post-installation. You can leverage configuration management tools to manage machines or configure replacement
computers to any desired state. Kali Linux contains many popular configuration management tools that you might want to
use ( ansible, chef, puppet, saltstack, etc.) but in this section, we will only cover SaltStack.

è https://saltstack.com

10.2.1. Setting Up SaltStack

SaltStack is a centralized configuration management service: a salt master manages many salt min- ions. You should install
the salt-master package on a server that is reachable by all the hosts that you want to manage and salt-minion on the
hosts that you wish to manage. Each minion must be told where to find their master. Simply edit / etc/salt/minion and set the master
key to the DNS name (or IP address) of the Salt master. Note that Salt uses YAML as format for its configuration files.

minion# vim /etc/salt/minion


minion# grep ^master /etc/salt/minion
master: 192.168.122.105

Each minion has a unique identifier stored in / etc/salt/minion_id, which defaults to its host- name. This minion identifier will be
used in the configuration rules and as such, it is important to set it properly before the minion opens its connection to the
master:

minion# echo kali-scratch >/etc/salt/minion_id


minion# systemctl enable salt-minion
minion# systemctl start salt-minion

When the salt-minion service is running, it will try to connect to the Salt master to exchange some cryptographic keys. On
the master side, you have to accept the key that the minion is using to identify itself to let the connection proceed.
Subsequent connections will be automatic:

master# systemctl enable salt-master


master# systemctl start salt-master
master# salt-key --list all
Accepted Keys: Denied Keys: Unaccepted Keys: kali-scratch
Rejected Keys: master# salt-key --accept kali-scratch

The following keys are going to be accepted:

Chapter 10 — Kali Linux in the Enterprise 255


Unaccepted Keys:
kali-scratch Proceed? [n/Y] y

Key for minion kali-scratch accepted.

10.2.2. Executing Commands on Minions

As soon as minions are connected, you can execute commands on them from the master:

master# salt ’*’ test.ping


kali-scratch:
True
kali-master:
True

This command asks all minions (the ’*’ is a wildcard targeting all minions) to execute the ping
function from the test execution module. This function returns a True value on success and is a simple way to ensure that
the connection is working between themaster and the various minions. You can also target a specific minion by giving its
identifier in the first parameter, or possibly a subset of minions by using a less-generic wildcard (such as ’*-scratch’ or
’kali-*’). Here is an example of how to execute an arbitrary shell command on the kali-scratch minion:

master# salt kali-scratch cmd.shell ’uptime; uname -a’


kali-scratch:
05:25:48 up 44 min, 2 users, load average: 0.00, 0.01, 0.05
Linux kali-scratch 4.5.0-kali1-amd64 #1 SMP Debian 4.5.3-2kali1 (2016-05-09) x86_64
å GNU/Linux

Salt Module Reference There are many execution modules available for all sorts of use cases. We won’t
cover them all here, but the full list is available at https://docs.saltstack.com/ en/latest/ref/modules/all/index.html. You
can also obtain a description of all the execution modules and their available functions on a given minion with
the salt
minion sys.doc command. Running this command returns a very long list of functions, but you can filter the list
by passing the name of a function or module prefixed by its parent module as a parameter:

master# salt kali-scratch sys.doc disk.usage


disk.usage:

Return usage information for volumes mounted on this


å minion

One of the most useful modules is pkg, which is a package manager abstraction relying on the appropriate package
manager for the system ( apt-get for Debian and its derivatives like Kali).

256 Kali Linux Revealed


The pkg.refresh_db command updates the package list (that is, it performs apt-get update)
while pkg.upgrade installs all the available updates (it performs apt-get upgrade or apt-get dist-upgrade, depending on the
options received). The pkg.list_upgrades command lists the pending upgrade operations (that would be performed by the pkg.upgrade
dist_upgrade=True
command). The service module is anabstractionof the servicemanager ( systemd in the case of Kali), which lets you perform

all the usual systemctl operations: service.enable, service.disable, service. start, service.stop, service.restart, and service.reload:

master# salt ’*’ service.enable ssh

kali-scratch:
True
kali-master:
True master# salt ’*’ service.start ssh

kali-master:
True
kali-scratch:
True master# salt ’*’ pkg.refresh_db

kali-scratch:
- - - - - - - - - -
kali-master:
- - - - - - - - - -
master# salt ’*’ pkg.upgrade dist_upgrade=True
kali-scratch:
- - - - - - - - - -
changes:
- - - - - - - - - -
base-files:
- - - - - - - - - -
new:
1:2016.2.1 old:

1:2016.2.0
[...]
zaproxy:
- - - - - - - - - -
new:
2.5.0-0kali1
old:
2.4.3-0kali3
comment:
result:
True

Chapter 10 — Kali Linux in the Enterprise 257


As a more concrete sample, you could easily set up a distributed Nmap scan with dnmap. After having installed the
package on all the minions, you start the server in a first terminal:

server# salt ’*’ pkg.install dnmap


[...] server# vim dnmap.txt

server# dnmap_server -f dnmap.txt

Assuming that the server IP is 1.2.3.4, you can next tell all minions to start a client process that connects to the server:

server# salt ’*’ cmd.run_bg template=jinja ’dnmap_client -s 1.2.3.4 -a {{ grains.id }}’


kali-scratch:
- - - - - - - - - -
pid:
17137
[...]

Note that the example uses cmd.run_bg to run the dnmap_client command in the background. Don’t wait until it finishes,
since it is a long-running process. Unfortunately, it doesn’t kill itself properly when you interrupt the server so you might
have to clean it up:

server# salt ’*’ cmd.shell ’pkill -f dnmap_client’

10.2.3. Salt States and Other Features

While remote execution is an important building block, it is only a tiny fraction of what SaltStack can do.

When setting up a newmachine, you often runmany commands and tests to determine the details of the system prior to
installation. These operations can be formalized in re-usable configuration templates called state files. The operations
described in state files can then be performed with a single state.apply salt command.

To save some time, you can rely on many ready-to-use state files that have been created by the community and which are
distributed in “Salt formulas”:

è https://docs.saltstack.com/en/latest/topics/development/conventions/formulas. html

There are many other features that can be combined:

• Scheduled execution of actions

• Defining actions in response to events triggered by minions

• Collecting data out of minions

258 Kali Linux Revealed


• Orchestration of a sequence of operations across multiple minions

• Applying states over SSH without installing the salt-minion service

• Provisioning systems on cloud infrastructures and bringing them under management

• And more

SaltStack is quite vast and we can’t possibly cover all the features here. In fact, there are books dedicated entirely to
SaltStack and the online documentation is very extensive as well. Check it out if you want to learn more about its features:

è https://docs.saltstack.com/en/latest/

If you manage a significant number of machines, you would be well advised to learn more about SaltStack as you can
save a significant amount of time when deploying newmachines and youwill be able to maintain a coherent configuration
throughout your network.

To give you a taste of what it looks like to work with state files, we will cover a simple example: how to enable the APT
repository and install a package that you create in section 10.3.3, “Creating a Package Repository for APT” [page 269] and
section 10.3.2, “Creating Configuration Packages” [page 263]. You will also register a SSH key in root’s account so that
you can login remotely in case of problems.

By default, state files are stored in / srv/salt on the master; they are YAML structured files with
a . sls extension. Just like for running commands, applying a state relies on many state modules:

è https://docs.saltstack.com/en/latest/topics/tutorials/starting_states.html

è https://docs.saltstack.com/en/latest/ref/states/all/

Your / srv/salt/offsec.sls file will call three of those modules:

offsec_repository:
pkgrepo.managed:
- name: deb http://pkgrepo.offsec.com offsec-internal main
- file: /etc/apt/sources.list.d/offsec.list
- key_url: salt://offsec-apt-key.asc
- require_in:
- pkg: offsec-defaults

offsec-defaults:
pkg.installed

ssh_key_for_root:
ssh_auth.present:
- user: root
- name: ssh-rsa AAAAB3NzaC1yc2...89C4N rhertzog@kali

The offsec_repository state relies on the pkgrepo state module. The example uses the managed
function in that state module to register a package repository. With the key_url attribute, you

Chapter 10 — Kali Linux in the Enterprise 259


let salt know that the (ASCII armored) GPG key required to verify the repository’s signature can be fetched from / srv/salt/offsec-apt-key.asc
on the salt master. The require_in attribute ensures that this state is processed before the offsec-defaults, since the latter
needs the repository correctly configured to be able to install the package. The offsec-defaults state installs the package of
the same name. This shows that the name of the key is often an important value for states, although it can always be
overridden with a name at- tribute (as done for the former state). For simple-cases like this one, this is both readable and
concise.

The last state ( ssh_key_for_root) adds the SSH key given in the name attribute to / root/.ssh/ authorized_keys ( the target user
is set in the user attribute). Note that we have shortened the key for readability here, but you should put the full key in the
name attribute. This state file can next be applied to a given minion:

server# salt kali-scratch state.apply offsec


kali-scratch:
- - - - - - - - - -
ID: offsec_repository Function:
pkgrepo.managed
Name: deb http://pkgrepo.offsec.com offsec-internal main Result: True

Comment: Configured package repo ’deb http://pkgrepo.offsec.com offsec-internal


å main’
Started: 06:00:15.767794 Duration:
4707.35 ms Changes:

- - - - - - - - - -
repo:
deb http://pkgrepo.offsec.com offsec-internal main
- - - - - - - - - -
ID: offsec-defaults Function:
pkg.installed
Result: True
Comment: The following packages were installed/updated: offsec-defaults Started: 06:00:21.325184 Duration: 19246.041 ms
Changes:

- - - - - - - - - -
offsec-defaults:
- - - - - - - - - -
new:
1.0
old:
- - - - - - - - - -
ID: ssh_key_for_root Function:
ssh_auth.present

260 Kali Linux Revealed


Name: ssh-rsa AAAAB3NzaC1yc2...89C4N rhertzog@kali Result: True

Comment: The authorized host key AAAAB3NzaC1yc2...89C4N for user root was added Started: 06:00:40.582539 Duration: 62.103 ms
Changes:

- - - - - - - - - -
AAAAB3NzaC1yc2...89C4N:
New

Summary for kali-scratch


- - - - - - - - - - - -
Succeeded: 3 (changed=3) Failed:
0
- - - - - - - - - - - -
Total states run: 3
Total run time: 24.015 s

It can also be permanently associated to the minion by recording it in the / srv/salt/top.sls


file, which is used by the state.highstate command to apply all relevant states in a single pass:

server# cat /srv/salt/top.sls


base:
kali-scratch:
- offsec server# salt kali-scratch state.highstate

kali-scratch:
- - - - - - - - - -
ID: offsec_repository Function:
pkgrepo.managed
Name: deb http://pkgrepo.offsec.com offsec-internal main Result: True

Comment: Package repo ’deb http://pkgrepo.offsec.com offsec-internal main’ already


å configured Started:
06:06:20.650053 Duration: 62.805 ms
Changes:

- - - - - - - - - -
ID: offsec-defaults Function:
pkg.installed
Result: True
Comment: Package offsec-defaults is already installed Started: 06:06:21.436193 Duration:
385.092 ms Changes:

- - - - - - - - - -
ID: ssh_key_for_root

Chapter 10 — Kali Linux in the Enterprise 261


Function: ssh_auth.present
Name: ssh-rsa AAAAB3NzaC1yc2...89C4N rhertzog@kali Result: True

Comment: The authorized host key AAAAB3NzaC1yc2...89C4N is already present for


å user root
Started: 06:06:21.821811 Duration: 1.936
ms Changes:

Summary for kali-scratch


- - - - - - - - - - - -
Succeeded: 3 Failed:
0
- - - - - - - - - - - -
Total states run: 3
Total run time: 449.833 ms

10.3. Extending and Customizing Kali Linux

Sometimes you need to modify Kali Linux to make it fit your local needs. The best way to achieve this is tomaintain your
own package repository hosting themodified versions of the Kali packages that you had to fork, as well as supplementary
packages providing customconfiguration and extra software (not provided by Kali Linux).

10.3.1. Forking Kali Packages

Please refer to section 9.1, “Modifying Kali Packages” [page 222] for explanations about this topic. All packages can be
forked if you have a good reason but youmust be aware that forking a package has a cost, since you have to update it
every time that Kali publishes an update. Here are some reasons why you might want to fork a package:

• To add a patch to fix a bug or add a new feature. Although in most cases, you will want to submit that patch to the
upstreamdevelopers so that the bug is fixed or the feature is added at the source.

• To compile it with different options (assuming that there are good reasons why Kali did not compile it with those
options; otherwise it might be best to discuss this with Kali developers to see if they can enable the desired
options).

By contrast, here are some bad reasons to fork a package along with suggestions of how to handle your problem:

262 Kali Linux Revealed


• To modify a configuration file. You have multiple, better options like using configuration management to
automatically install a modified configuration file or installing a configu- ration package that will put a file in a
configuration directory (when available) or that will divert the original configuration file.

• To update to a newer upstreamversion. Again, it is better toworkwith developers to update the package directly in
Debian or Kali. With the rolling release model, updates are rather quick to reach end users.

Among all the available packages, there are some that are building blocks of Kali Linux and that could be interesting to fork
in some situations:

• kali-meta: this source package builds all the kali-linux-*meta packages andnotably kali-linux- full, which defines what
packages are installed in the default Kali Linux ISO image.

• desktop-base: This source package contains various miscellaneous files that are used by de- fault in desktop
installations. Consider forking this package if you would like to show your organization’s brand in the default
background or change the theme of the desktop.

• kali-menu: this package defines the structure of the Kali menu and provides . desktop files for all applications that
should be listed in the Kali menu.

10.3.2. Creating Configuration Packages

Now that we have touched on PXE booting and discussed configuration management with Salt- Stack as well as package
forking, it is time to wrap these processes up into a practical example and extend the scenario by creating a
customconfiguration package to deploy a customconfiguration to multiple machines semi-automatically.

In this example, youwill create a custompackage that sets up and utilizes your ownpackage repos- itory and GnuPG
signing key, distributes a SaltStack configuration, pushes a custom background, and provides default desktop settings in a
unified way to all your Kali installations. This may seem like a daunting task (especially if you glance through the Debian
New Maintainer Guide 1) but fortunately for us, a configuration package is mainly a sophisticated file archive and turning it
into a package is rather easy.

Looking into a Sample If you want to look into a real package that is basically a configuration package, consider the kali-defaults package.
Package It is not as simple as the sample in this section but it has all the relevant characteristics and even uses some
advanced techniques (like
dpkg-divert) to replace files already provided by other packages.

1 https://www.debian.org/doc/manuals/maint-guide/

Chapter 10 — Kali Linux in the Enterprise 263


The offsec-defaults package will contain a few files:

• /etc/apt/sources.list.d/offsec.list: a sources.list entry for APT, enabling the company’s internal package repository

• /etc/apt/trusted.gpg.d/offsec.gpg: the GnuPG key used to sign the company’s inter- nal package repository

• /etc/salt/minion.d/offsec.conf: a SaltStack configuration file to indicatewhere to find the Salt master

• /usr/share/images/offsec/background.png: a nice background image with the


Offensive Security logo

• /usr/share/glib-2.0/schemas/90_offsec-defaults.gschema.override: a file provid- ing alternate default settings for the

GNOME desktop First, create an offsec-defaults-1.0 directory and put all the files in that directory. Then run

dh_make --native ( from the dh-make package) to add Debian packaging instructions, which will be stored in a debian sub-directory:

$ mkdir offsec-defaults-1.0; cd offsec-defaults-1.0


$ dh_make --native
Type of package: (single, indep, library, python) [s/i/l/p]? i

Email-Address : buxy@kali.org
License : gpl3
Package Name : offsec-defaults
Maintainer Name : Raphaël Hertzog
Version : 1.0
Package Type : indep
Date : Thu, 16 Jun 2016 18:04:21 +0200
Are the details correct? [Y/n/q] y
Currently there is not top level Makefile. This may require additional tuning Done. Please edit the files in the debian/ subdirectory now.

First, you are prompted for a package type. In the example, we selected indep, which indicates that this source package will
generate a single binary package that can be shared across all archi- tectures ( Architecture: all). single acts as a
counterpart, and produces a single binary package that is dependent on the target architecture ( Architecture: any). In this
case, indep is more relevant, since the package only contains text files and no binary programs, so that it can be used
similarly on computers of all architectures. The library type is useful for shared libraries, since they need to follow strict
packaging rules. In a similar fashion, python should be restricted to Python modules.

264 Kali Linux Revealed


Maintainer’s Name and
Email Address Most ofemail
the programs
address involved
in the DEBFULLNAME
in package maintenance
and DEBEMAIL
willorlook for environment
EMAIL your name and
variables. Defining them, once and
for all, prevents re-typing themmultiple times. If your usual shell is Bash, it is a simple matter of adding the
following two lines in your ~/. bashrc
file. For example:

export EMAIL=”buxy@kali.org” export


DEBFULLNAME=”Raphael Hertzog”

The dh_make command created a debian subdirectory containing many files. Some are required, in particular rules, control, changelog,
and copyright. Files with the . ex extension are ex- ample files that can be used by modifying them and removing the
extension. When they are not needed, we recommend removing them. The compat file should be kept, since it is required
for the correct functioning of the debhelper suite of programs (all beginning with the dh_ prefix) used at various stages of
the package build process. The copyright file must contain information about the authors of the documents included in the
package, and the related license. If the default license selected by dh_make does not suit you, then you must edit this file.
Here is the modified version of the copyright file:

Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ Upstream-Name: offsec-defaults

Files: *
Copyright: 2016 Offensive Security License: GPL-3.0+

License: GPL-3.0+
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public
License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later
version.

.
This package is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.

.
You should have received a copy of the GNU General Public License along with this program. If not, see
<https://www.gnu.org/licenses/>.
.
On Debian systems, the complete text of the GNU General
Public License version 3 can be found in ”/usr/share/common-licenses/GPL-3”.

Chapter 10 — Kali Linux in the Enterprise 265


The default changelog file is generally appropriate; replacing the “Initial release” with a more verbose explanation should be
enough:

offsec-defaults (1.0) unstable; urgency=medium

* Add salt minion’s configuration file.


* Add an APT’s sources.list entry and an APT’s trusted GPG key.
* Override the gsettings schema defining the background picture.

- - Raphaël Hertzog <buxy@kali.org> Thu, 16 Jun 2016 18:04:21 +0200

In the example, we will make changes to the control file. We will change the Section field to misc
and remove the Homepage, Vcs-Git, and Vcs-Browser fields. Lastly, we will fill in the Description
field:

Source: offsec-defaults Section: misc


Priority: optional

Maintainer: Raphaël Hertzog <buxy@kali.org> Build-Depends: debhelper


(>= 9) Standards-Version: 3.9.8

Package: offsec-defaults Architecture: all

Depends: ${misc:Depends}
Description: Default settings for Offensive Security This package contains multiple files to configure
computers owned by Offensive Security.

.
It notably modifies:
- APT’s configuration
- salt-minion’s configuration
- the default desktop settings

The rules file usually contains a set of rules used to configure, build, and install the software in a dedicated subdirectory
(named after the generated binary package). The contents of this subdirectory are then archived within the Debian
package as if it were the root of the filesystem. In this case, files will be installed in the debian/offsec-defaults/ subdirectory.
For example, to end up with a package installing / etc/apt/sources.list.d/offsec.list, install the file in

debian/offsec-defaults/etc/apt/sources.list.d/offsec.list. The rules file is used as a


Makefile, with a few standard targets (including clean and binary, used respectively to clean the source directory and
generate the binary package).

266 Kali Linux Revealed


What is a Makefile file? You may have noticed the message concerning the missing Makefile at the end of
the dh_make output and the mention of its similarity to the rules file. A Makefile is a script file used by the make program;
it describes rules for how to build a set of files from each other in a tree of dependencies. For instance, a
program can be built from a set of source files. The Makefile file describes these rules in the following format:

target: source1 source2 ...


command1
command2

The interpretation of such a rule is as follows: if one of the source* files is more recent than the target file, then
the target needs to be generated, using command1
and command2.

Note that the command lines must start with a tab character; also note that when a command line starts with
a dash character (-), failure of the command does not interrupt the whole process.

Although this file is the heart of the process, it contains only the bare minimum for running a standard set of commands
provided by the debhelper tool. Such is the case for files gener- ated by dh_make. To install most of your files, we
recommend configuring the behavior of the
dh_install command by creating the following debian/offsec-defaults.install file:

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/share/images/offsec/

You could also use this to install the gsettings override file but debhelper provides a dedicated tool for this ( dh_installgsettings)
so you can rely on it. First, put your settings in debian/ offsec-defaults.gsettings-override: [org.gnome.desktop.background]
picture-options=’zoom’

picture-uri=’file:///usr/share/images/offsec/background.png’

Next, override the dh_installgsettings call in debian/rules to increase the priority to the level expected for an organization
override (which is 90 according to the manual page):

# !/usr/bin/make -f

%:
dh $@

override_dh_installgsettings:
dh_installgsettings --priority=90

Chapter 10 — Kali Linux in the Enterprise 267


At this point, the source package is ready. All that is left to do is to generate the binary package with the samemethod used
previously for rebuilding packages: run the dpkg-buildpackage -us
- uc command fromwithin the offsec-defaults-1.0 directory:

$ dpkg-buildpackage -us -uc


dpkg-buildpackage: info: source package offsec-defaults dpkg-buildpackage: info: source version
1.0 dpkg-buildpackage: info: source distribution unstable

dpkg-buildpackage: info: source changed by Raphaël Hertzog <buxy@kali.org> dpkg-buildpackage: info: host architecture amd64
dpkg-source --before-build offsec-defaults-1.0 fakeroot debian/rules clean dh clean

dh_testdir
dh_auto_clean
dh_clean
dpkg-source -b offsec-defaults-1.0
dpkg-source: info: using source format ’3.0 (native)’
dpkg-source: info: building offsec-defaults in offsec-defaults_1.0.tar.xz dpkg-source: info: building offsec-defaults in
offsec-defaults_1.0.dsc debian/rules build dh build

dh_testdir
dh_update_autotools_config
dh_auto_configure dh_auto_build
dh_auto_test

fakeroot debian/rules binary dh binary

dh_testroot
dh_prep
dh_auto_install dh_install
dh_installdocs
dh_installchangelogs

debian/rules override_dh_installgsettings
make[1]: Entering directory ’/home/rhertzog/kali/kali-book/samples/offsec-defaults-1.0’ dh_installgsettings --priority=90

make[1]: Leaving directory ’/home/rhertzog/kali/kali-book/samples/offsec-defaults-1.0’


dh_perl
dh_link
dh_strip_nondeterminism dh_compress
dh_fixperms dh_installdeb dh_gencontrol
dh_md5sums

268 Kali Linux Revealed


dh_builddeb
dpkg-deb: building package ’offsec-defaults’ in ’../offsec-defaults_1.0_all.deb’. dpkg-genchanges >../offsec-defaults_1.0_amd64.changes
dpkg-genchanges: info: including full source code in upload dpkg-source --after-build offsec-defaults-1.0

dpkg-buildpackage: info: full upload; Debian-native package (full source is included)

10.3.3. Creating a Package Repository for APT

Now that you have a custom package, you can distribute it through an APT package repository. Use reprepro to create the
desired repository and to fill it. This tool is rather powerful and its manual page is certainly worth reading.

A package repository is typically hosted on a server. To properly separate it from other services running on the server, it is
best to create a user dedicated to this service. In the dedicated user account, you will be able to host the repository files
and also the GnuPG key that will be used to sign the package repository:

# apt install reprepro gnupg


[...]
# adduser --system --group pkgrepo
Adding system user ‘pkgrepo’ (UID 136) ... Adding new group ‘pkgrepo’
(GID 142) ...
Adding new user ‘pkgrepo’ (UID 136) with group ‘pkgrepo’ ... Creating home directory ‘/home/pkgrepo’ ...

# chown pkgrepo $(tty)


# su - -s /bin/bash pkgrepo
$ gpg --gen-key
gpg (GnuPG) 2.1.11; Copyright (C) 2016 Free Software Foundation, Inc. This is free software: you are free to change and
redistribute it. There is NO WARRANTY, to the extent permitted by law.

gpg: directory ’/home/pkgrepo/.gnupg’ created


gpg: new configuration file ’/home/pkgrepo/.gnupg/dirmngr.conf’ created gpg: new configuration file
’/home/pkgrepo/.gnupg/gpg.conf’ created gpg: keybox ’/home/pkgrepo/.gnupg/pubring.kbx’ created

Note: Use ”gpg --full-gen-key” for a full featured key generation dialog.

GnuPG needs to construct a user ID to identify your key.

Real name: Offensive Security Repository Signing Key


Email address: repoadmin@offsec.com
You selected this USER-ID:
”Offensive Security Repository Signing Key <repoadmin@offsec.com>”

Chapter 10 — Kali Linux in the Enterprise 269


Change (N)ame, (E)mail, or (O)kay/(Q)uit? o
We need to generate a lot of random bytes. It is a good idea to perform some other action (type on the keyboard, move the
mouse, utilize the disks) during the prime generation; this gives the random number generator a better chance to gain
enough entropy. [...]

gpg: /home/pkgrepo/.gnupg/trustdb.gpg: trustdb created gpg: key B4EF2D0D marked as


ultimately trusted
gpg: directory ’/home/pkgrepo/.gnupg/openpgp-revocs.d’ created gpg: revocation certificate stored as
’/home/pkgrepo/.gnupg/openpgp-revocs.d/
å F8FE22F74F1B714E38DA6181B27F74F7B4EF2D0D.rev’ public and secret key
created and signed.

gpg: checking the trustdb


gpg: marginals needed: 3 completes needed: 1 trust model: PGP gpg: depth: 0 valid: 1 signed: 0 trust: 0-, 0q, 0n, 0m, 0f,
1u pub rsa2048/B4EF2D0D 2016-06-17 [S]

Key fingerprint = F8FE 22F7 4F1B 714E 38DA 6181 B27F 74F7 B4EF 2D0D uid
[ultimate] Offensive Security Repository Signing Key <repoadmin@offsec.com>
sub rsa2048/38035F38 2016-06-17 []

Note that when you are prompted for a passphrase, you should enter an empty value (and confirm that you don’t want to
protect your private key) as you want to be able to sign the repository non- interactively. Note also that gpg requireswrite
access to the terminal tobe able to securelyprompt for a passphrase: that is why you changed the ownership of the virtual
terminal (which is owned by root since you initially connected as that user) before starting a shell as pkgrepo.

Now you can start setting up the repository. A dedicated directory is necessary for reprepro and inside that directory you
have to create a conf/distributions file documenting which distribu- tions are available in the package repository:

$ mkdir -p reprepro/conf
$ cd reprepro
$ cat >conf/distributions <<END Codename:
offsec-internal AlsoAcceptFor: unstable Origin:
Offensive Security

Description: Offsec’s Internal packages Architectures: source


amd64 i386 Components: main

SignWith: F8FE22F74F1B714E38DA6181B27F74F7B4EF2D0D END

The required fields are Codename, which gives the name of the distribution, Architectures, which indicates which
architectures will be available in the distribution (and accepted on the input side), and Components, which indicates the
various components available in the distribution (com-

270 Kali Linux Revealed


ponents are a sort of sub-section of the distribution, which can be enabled separately in APT’s sources.list). The Origin and
Description fields are purely informative and they are copied as-is in the Release file. The SignWith field asks reprepro to
sign the repository with the GnuPG key whose identifier is listed (put the full fingerprint here to ensure you use the correct
key, and not another one colliding on the short identifier). The AlsoAcceptFor setting is not required butmakes it possible to
process . changes files whose Distribution field has a value listed here (without this, it would only accept the distribution’s
codename in that field). With this basic setup in place, you can let reprepro generate an empty repository:

$ reprepro export
Exporting indices... $ find .

.
. /db
. /db/version
. /db/references.db
. /db/contents.cache.db
. /db/checksums.db
. /db/packages.db
. /db/release.caches.db
. /conf
. /conf/distributions
. /dists
. /dists/offsec-internal
. /dists/offsec-internal/Release.gpg
. /dists/offsec-internal/Release
. /dists/offsec-internal/main
. /dists/offsec-internal/main/source
. /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/Packages
. /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/Packages
. /dists/offsec-internal/main/binary-i386/Release
. /dists/offsec-internal/main/binary-i386/Packages.gz
. /dists/offsec-internal/InRelease

As you can see, reprepro created the repository meta-information in a dists sub-directory. It also initialized an internal
database in a db sub-directory.

It is now time to add your first package. First, copy the files generated by the build of the offsecdefaults
package ( offsec-defaults_1.0.dsc, offsec-defaults_1.0.tar.xz,

Chapter 10 — Kali Linux in the Enterprise 271


offsec-defaults_1.0_all.deb, and offsec-defaults_1.0_amd64.changes) into / tmp
on the server hosting the package repository and ask reprepro to include the package:

$ reprepro include offsec-internal /tmp/offsec-defaults_1.0_amd64.changes


Exporting indices... $ find pool

pool
pool/main
pool/main/o
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

As you can see, it added the files into its own package pool in a pool sub-directory. The dists and pool directories are the
two directories that you need to make (publicly) available over HTTP to finish the setup of your APT repository. They
contain all the files that APT will want to download.

Assuming that you want to host this on a virtual host named pkgrepo.offsec.com, you could cre- ate the followingApache
configuration file, save it to / etc/apache2/sites-available/pkgrepo. offsec.com.conf, and enable it with a2ensite pkgrepo.offsec.com):
<VirtualHost *:80>

ServerName pkgrepo.offsec.com ServerAdmin


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 <Directory

”/home/pkgrepo/reprepro”>

Options Indexes FollowSymLinks MultiViews Require all granted


AllowOverride All </Directory> </VirtualHost>

And the corresponding sources.list entry to add on machines that need packages from this repository would look like this:

deb http://pkgrepo.offsec.com offsec-internal main

# Enable next line if you want access to source packages too


# deb-src http://pkgrepo.offsec.com offsec-internal main

Your package is now published and should be available to your networked hosts.

272 Kali Linux Revealed


Although this has been a lengthy setup, the “heavy lifting” is now completed. You can boot your networkedmachines via
PXE, install a customized versionof Kali Linuxwithout interaction thanks to a network-delivered preseed, configure
SaltStack to manage your configurations (and control minions!), create forked custom packages, and distribute those
packages through your own pack- age repository. This provides centralizedmanagement and enterprise-level control over
multiple Kali Linux installations. In short, you can now quickly deploy highly secure Kali systems precon- figured for your
specific needs and keep them synchronized thanks to Kali’s (semi-automatic) in- stallation of all package updates.

10.4. Summary

Kali Linux scales beyond the desktop to medium or large scale deployments and even to the en- terprise level. In this
chapter, we covered how to centralize management of multiple Kali instal- lations with SaltStack, allowing you to quickly
deploy highly secure Kali systems preconfigured for your specific needs. We also revealed how you can keep them
synchronized thanks to Kali’s (semi-automatic) installation of package updates.

We discussed package forking, which allows you to create your own customized distributable source packages.

In summary, let’s review the major steps required to establish Salt masters and minions, which allow you remote control

and configuration of remote hosts. Summary Tips:

• Boot machine from the network with PXE, with at least a TFTP file server, a DHCP/BOOTP server (and a web server
for debconf preseeding). dnsmasq handles both DHCP and TFTP, and the apache2 web server comes pre-installed
(but disabled) on Kali.

• The Debian installationmanual covers the setup of isc-dhcp-server and tftpd-hpa for PXE boot- ing:

è https://www.debian.org/releases/stable/amd64/ch04s05.html

• dnsmasq is configured through / etc/dnsmasq.conf. A basic configuration consists of only a few key lines:

# Network interface to handle interface=eth0

# DHCP options
# IP range to allocate
dhcp-range=192.168.101.100,192.168.101.200,12h
# Gateway to announce to clients
dhcp-option=option:router,192.168.101.1
# DNS servers to announce to clients
dhcp-option=option:dns-server,8.8.8.8,8.8.4.4
# Boot file to announce to clients

Chapter 10 — Kali Linux in the Enterprise 273


dhcp-boot=pxelinux.0
# TFTP options
enable-tftp
# Directory hosting files to serve tftp-root=/tftpboot/

• Unpack 32-bit (i386), 64-bit (amd64), standard or graphical (gtk) installation boot files from the Kali archive into / tftpboot/.
The archives can be found here:

è http://http.kali.org/dists/kali-rolling/main/installer-amd64/current/ images/netboot/gtk/netboot.tar.gz

è http://http.kali.org/dists/kali-rolling/main/installer-amd64/current/ images/netboot/netboot.tar.gz

è http://http.kali.org/dists/kali-rolling/main/installer-i386/current/ images/netboot/gtk/netboot.tar.gz

è 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/
å images/netboot/netboot.tar.gz
# tar xf netboot.tar.gz

• Optionally modify txt.cfg to preseed parameters or custom timeouts. See section 4.3, “Unattended Installations”
[page 91]. Next, you can leverage configuration management tools to manage machines or configure remote
computers to any desired state.

• SaltStack is a centralized configuration management service: a Salt master manages many Salt minions. Install the salt-master
package on a reachable server and salt-minion on man- aged hosts.

• Edit the / etc/salt/minion YAML-formatted config file and set the master key to the DNS name (or IP address) of the
Salt master.

• Set minion’s unique identifier in / etc/salt/minion_id: minion# echo kali-scratch

>/etc/salt/minion_id
minion# systemctl enable salt-minion
minion# systemctl start salt-minion

• Key exchange will follow. On the master, accept minion’s identification key. Subsequent connections will be
automatic:

master# systemctl enable salt-master


master# systemctl start salt-master
master# salt-key --list all

274 Kali Linux Revealed


Accepted Keys: Denied Keys: Unaccepted Keys: kali-scratch
Rejected Keys: master# salt-key --accept kali-scratch

The following keys are going to be accepted: Unaccepted Keys: kali-scratch


Proceed? [n/Y] y

Key for minion kali-scratch accepted.

• Once minions are connected, you can execute commands on them from the master. Exam- ples:

master# salt ’*’ test.ping


kali-scratch: True

kali-master: True master# salt kali-scratch cmd.shell ’uptime; uname -a’

master# salt kali-scratch sys.doc’


master# salt ’*’ service.enable ssh
[...] master# salt ’*’ service.start ssh

[...] master# salt ’*’ pkg.refresh_db

[...] master# salt ’*’ pkg.upgrade dist_upgrade=True

server# salt ’*’ cmd.shell ’pkill -f dnmap_client’

• The full list of execution modules can be found at https://docs.saltstack.com/en/ latest/ref/modules/all/index.html.

• Use Salt state files (re-usable configuration templates) to schedule actions, collect data, or- chestrate sequences of
operations on multiple minions, provision cloud systems and bring them under management, and more. Save time
with pre-defined Salt formulas:

è https://docs.saltstack.com/en/latest/topics/development/conventions/ formulas.html

• When it comes time to fork a package, first decide if it is a task that you need to tackle. There are significant
advantages and disadvantages. Review themcarefully. The kali-meta, desktop- base, and kali-menu packages are
interesting, probable choices. The process of forking a package can be daunting and is difficult to summarize.

Chapter 10 — Kali Linux in the Enterprise 275


Now that we have covered all the bases in terms of installation, configuration, customization, and deployment of Kali Linux,
let’s turn towards the role of Kali Linux in the field of Information Security.

276 Kali Linux Revealed


Keywords

Types of assessments
Vulnerability
assessment
Compliance
penetration test
Traditional
penetration test
Application
assessment Types of
attacks Denial of
service Memory
corruption Web
vulnerabilities
Password attacks
Client-side attacks
Chapter

Introduction to 11
Security
Assessments
Contents

Kali Linux in an Assessment 281 Types of Assessments 283 Formalization of the Assessment 293

Types of Attacks 294 Summary 297


We have covered many Kali Linux-specific features up to this point so you should have a strong understanding of what
makes Kali special and how to accomplish a number of complex tasks. Before putting Kali to use however, there are a few
concepts relating to security assessments that you should understand. In this chapter, we will introduce these concepts to
get you started and provide references that will help if you need to use Kali to perform a security assessment. To start
with, it is worth taking some time to explore exactly what ”security” means when dealing with information systems. When
attempting to secure an information system, you focus on three primary attributes of the system:

• Confidentiality: can actors who should not have access to the system or information access the system or
information?

• Integrity: can the data or the system be modified in some way that is not intended?

• Availability: are the data or the system accessible when and how it is intended to be? Together, these concepts

make up the CIA (Confidentiality, Integrity, Availability) triad and in large part, are the primary items that youwill focus

onwhen securing a systemas part of standard deployment, maintenance, or assessment.

It is also important to note that in some cases, you may be far more concerned with one aspect of the CIA triad than others.
For instance, if you have a personal journal that contains your most secret thoughts, the confidentiality of the journal may
be far more important to you than the integrity or the availability. In other words, you may not be as concerned about
whether some- one can write to the journal (as opposed to reading it) or whether or not the journal is always accessible. On
the other hand, if you are securing a system that tracks medical prescriptions, the integrity of the data will be most critical.
While it is important to prevent other people from read- ingwhat medications someone uses and it is important that you can
access this list of medications, if someone were able to change the contents of the system (altering the integrity), it could
lead to life-threatening results.

Whenyou are securing a systemand an issue is discovered, youwill have to considerwhichof these three concepts, or
which combination of them, the issue falls into. This helps you understand the problem in a more comprehensive manner
and allows you to categorize the issues and respond accordingly. It is possible to identify vulnerabilities that impact a
single, or multiple items from the CIA triad. To use a web application with a SQL injection vulnerability as an example:

• Confidentiality: a SQL injection vulnerability that allows an attacker to extract the full con- tents of the web
application, allowing them to have full access to read all the data, but no ability to change the information or disable
access to the database.

• Integrity: a SQL injection vulnerability that allows an attacker to change the existing infor- mation in the database.
The attacker can’t read the data or prevent others from accessing the database.

280 Kali Linux Revealed


• Availability: a SQL injection vulnerability that initiates a long-running query, consuming a large amount of resources
on the server. This query, when initiatedmultiple times, leads to a denial of service (DoS) situation. The attacker
has no ability to access or change data but can prevent legitimate users from accessing the web application.

• Multiple: a SQL injection vulnerability leads to full interactive shell access to the host op- erating system running the
web application. With this access, the attacker can breach the confidentiality of the system by accessing data as
they please, compromise the integrity of the system by altering data, and if they so choose, destroy the web
application, leading to a compromise of the availability of the system.

The concepts behind the CIA triad are not overly complicated, and realistically are items that you are working with
intuitively, even if you don’t recognize it. However, it is important to mindfully interactwith the concept as it canhelpyou
recognizewhere to direct your efforts. This conceptual foundation will assist you with the identification of the critical
components of your systems and the amount of effort and resources worth investing in correcting identified problems.
Another concept that we will address in detail is risk, and how it is made up of threats and vulnera- bilities. These concepts
are not too complex, but they are easy to get wrong. We will cover these concepts in detail later on, but at a high level, it is
best to think of risk as what you are trying to prevent fromhappening, threat as who would do it to you, and vulnerability as
what allows them to do it. Controls can be put in place to address the threat or vulnerability, with the goal ofmitigating the
risk.

For example, when visiting some parts of the world, you may be at substantial risk of catching malaria. This is because the
threat of mosquitoes is very high in some areas, and you are almost certainly not immune to malaria. Fortunately, you can
control the vulnerability with medication and attempt to control the threat with the use of bug repellent and mosquito nets.
With controls in place addressing both the threat and the vulnerability, you can help ensure the risk does not actualize.

11.1. Kali Linux in an Assessment

When preparing to use Kali Linux in the field, you must first ensure you have a clean, working installation. A common
mistake that many novice security professionals make is using a single installation across multiple assessments. This is a
problem for two primary reasons:

• Over the course of an assessment, you will often manually install, tweak, or otherwise change your system. These
one-off changes may get you up and running quickly or solve a particular problem, but they are difficult to keep
track of; they make your system more difficult to maintain; and they complicate future configurations.

• Each security assessment is unique. Leaving behind notes, code, and other changes can lead to confusion, or
worse — cross-contamination of client data.

Chapter 11 — Introduction to Security Assessments 281


That is why starting with a clean Kali installation is highly recommended and why having a pre- customized version of Kali
Linux that is ready for automated installation quickly pays off. Be sure to refer back to section 9.3, “Building Custom Kali
Live ISO Images” [page 236] and section 4.3, “Unattended Installations” [page 91] on how to do this, since the more you
automate today, the less time you waste tomorrow.

Everyone has different requirements when it comes to how they like Kali Linux configured when they are in the field, but
there are some universal recommendations that you reallywant to follow. First, consider using an encrypted installation as
documented in section 4.2.2, “Installation on a Fully Encrypted File System” [page 85]. This will protect your data on the
physical machine, which is a life-saver if your laptop is ever stolen.

For extra safety during travel, you might want to nuke the decryption key (see “Adding a Nuke Password for Extra Safety”
[page 245]) after having sent an (encrypted) copy of the key to a co- worker in the office. That way, your data are secure
until you get back to the office where you can restore the laptop with the decryption key.

Another itemthat you should double-check is the list of packages that youhave installed. Consider what tools youmight
need for the work you are setting out to accomplish. For example, if you are embarking on a wireless security assessment,
you may consider installing the kali-linux-wireless
metapackage, which contains all of thewireless assessment tools available inKali Linux, or if aweb application assessment
is coming up, you can install all of the available web application testing tools with the kali-linux-web metapackage. It is best
to assume that you will not have easy access to the Internet while conducting a security assessment, so be sure to prepare
as much as possible in advance.

For the same reason, you might want to review your network settings (see section 5.1, “Config- uring the Network” [page
104] and section 7.3, “Securing Network Services” [page 153]). Double- check your DHCP settings and review the services
that are listening on your assigned IP address. These settings might make a critical impact to your success. You can’t
assess what you can’t see and excessive listening services might flag your system and get you shut down before you get
started.

If your role involves investigating network intrusions, paying close attention to your network set- tings is even more
important and you need to avoid altering the impacted systems. A customized version of Kali with the kali-linux-forensic metapackage
booted up in forensics mode will not auto- matically mount disks or use a swap partition. In this way, you can help maintain
the integrity of the system under analysis while making use of the many forensics tools available in Kali Linux. It is critical
that you properly prepare your Kali Linux installation for the job. You will find that a clean, efficient, and effective Kali
environment will always make everything that follows much smoother.

282 Kali Linux Revealed


11.2. Types of Assessments

Now that you have ensured that your Kali environment is ready, the next step is defining exactly what sort of assessment
you are conducting. At the highest level, we may describe four types of assessments: a vulnerability assessment, a compliance
test, a traditional penetration test, and an applica- tion assessment. An engagement may involve various elements of each
type of assessment but it is worth describing them in some detail and explaining their relevance to your Kali Linux build and
environment.

Before delving into the different types of assessments, it is important to first note the difference between a vulnerability and
an exploit. A vulnerability is defined as a flaw that, when taken advantage of, will compromise the confiden- tiality, integrity,
or availability of an information system. There are many different types of vul- nerabilities that can be encountered,
including:

• File Inclusion: File inclusion vulnerabilities 1 in web applications allow you to include the contents of a local or
remote file into the computation of a program. For example, a web application may have a ”Message of the day”
function that reads the contents of a file and includes it in theweb page to display it to the user. When this type of
feature is programmed incorrectly, it can allow an attacker to modify their web request to force the site to include
the contents of a file of their choosing.

• SQL Injection: A SQL injection 2 attack is one where the input validation routines for the program are bypassed,
allowing an attacker to provide SQL commands for the targeted pro- gram to execute. This is a form of command
execution that can lead to potential security issues.

• Buffer Overflow: A buffer overflow 3 is a vulnerability that bypasses input validation rou- tines to write data into a
buffer’s adjacent memory. In some cases, that adjacent memory location may be critical to the operation of the
targeted program and control of code exe- cution can be obtained through careful manipulation of the overwritten
memory data.

• Race Conditions: A race condition 4 is a vulnerability that takes advantage of timing depen- dencies in a program. In

some cases, the workflow of a program depends on a specific sequence of events to occur. If you can alter this
sequence of events, that may lead to a vulnerability. An exploit, on the other hand, is software that, when used, takes
advantage of a specific vulner- ability, although not all vulnerabilities are exploitable. Since an exploit must change a
running process, forcing it to make an unintended action, exploit creation can be complex. Furthermore, there are a
number of anti-exploit technologies in modern computing platforms that have been

1 https://en.wikipedia.org/wiki/File_inclusion_vulnerability
2 https://en.wikipedia.org/wiki/SQL_injection
3 https://en.wikipedia.org/wiki/Buffer_overflow
4 https://en.wikipedia.org/wiki/Race_condition

Chapter 11 — Introduction to Security Assessments 283


designed tomake it harder to exploit vulnerabilities, such as Data ExecutionPrevention 5 ( DEP) and Address Space Layout
Randomization 6 ( ASLR). However, just because there is no publicly-known exploit for a specific vulnerability, that does not
mean that one does not exist (or that one can not be created). For example, many organizations sell commercialized
exploits that are never made public, so all vulnerabilities must be treated as potentially exploitable.

11.2.1. Vulnerability Assessment

A vulnerability is considered a weakness that could be used in some manner to compromise the confidentiality, integrity, or
availability of an information system. In a vulnerability assessment, your objective is to create a simple inventory of
discovered vulnerabilities within the target envi- ronment. This concept of a target environment is extremely important. You
must be sure to stay within the scope of your client’s target network and required objectives. Creeping outside the scope of
an assessment can cause an interruption of service, a breach of trust with your client, or legal action against you and your
employer.

Due to its relative simplicity, a vulnerability test is often completed inmoremature environments on a regular basis as part of
demonstrating their due diligence. In most cases, an automated tool, such as the ones in the Vulnerability Analysis 7 andWeb
Applications 8 categories of the Kali Tools site and Kali desktop Applications menu, is used to discover live systems in a
target environment, identify listening services, and enumerate them to discover as much information as possible such as
the server software, version, platform, and so on.

This information is then checked for known signatures of potential issues or vulnerabilities. These signatures are made up
of data point combinations that are intended to represent known issues. Multiple data points are used, because the more
data points you use, the more accurate the iden- tification. A very large number of potential data points exist, including but
not limited to:

• Operating System Version: It is not uncommon for software to be vulnerable on one op- erating system version but
not on another. Because of this, the scanner will attempt to determine, as accurately as possible, what operating
system version is hosting the targeted application.

• Patch Level: Many times, patches for an operating system will be released that do not in- crease the version
information, but still change the way a vulnerability will respond, or even eliminate the vulnerability entirely.

• Processor Architecture: Many software applications are available for multiple processor architectures such as Intel
x86, Intel x64, multiple versions of ARM, UltraSPARC, and so on.

5 https://en.wikipedia.org/wiki/Executable_space_protection#Windows
6 https://en.wikipedia.org/wiki/Address_space_layout_randomization
7 http://tools.kali.org/category/vulnerability-analysis
8 http://tools.kali.org/category/web-applications

284 Kali Linux Revealed


In some cases, a vulnerability will only exist on a specific architecture, so knowing this bit of information can be
critical for an accurate signature.

• Software Version: The version of the targeted software is one of the basic items that needs to be captured to
identify a vulnerability.

These, and many other data points, will be used to make up a signature as part of a vulnerability scan. As expected,
themore data points thatmatch, themore accurate the signaturewill be. When dealing with signature matches, you can
have a few different potential results:

• True Positive: The signature is matched and it captures a true vulnerability. These results are the ones you will
need to follow up on and correct, as these are the items that malicious individuals can take advantage of to hurt
your organization (or your client’s).

• False Positive: The signature is matched; however the detected issue is not a true vulnera- bility. In an assessment,
these are often considered noise and can be quite frustrating. You never want to dismiss a true positive as a false
positive without more extensive validation.

• True Negative: The signature is not matched and there is no vulnerability. This is the ideal scenario, verifying that a
vulnerability does not exist on a target.

• False Negative: The signature is not matched but there is an existing vulnerability. As bad as a false positive is, a
false negative is much worse. In this case, a problem exists but the scanner did not detect it, so you have no
indication of its existence.

As you can imagine, the accuracy of the signatures is extremely important for accurate results. The more data that are
provided, the greater the chance there is to have accurate results from an automated signature-based scan, which is why
authenticated scans are often so popular. With an authenticated scan, the scanning software will use provided credentials
to authenticate to the target. This provides a deeper level of visibility into a target than would otherwise be possi- ble. For
instance, on a normal scan youmay only detect information about the system that can be derived from listening services
and the functionality they provide. This can be quite a bit of infor- mation sometimes but it can’t competewith the level and
depth of data that will be obtained if you authenticate to the system and comprehensively review all installed software,
applied patches, running processes, and so on. This breadth of data is useful for detecting vulnerabilities that oth- erwise
may not have been discovered.

Awell-conducted vulnerability assessment presents a snapshot of potential problems in an organi- zation and provides
metrics to measure change over time. This is a fairly lightweight assessment, but even still, many organizations will
regularly perform automated vulnerability scans in off- hours to avoid potential problems during the day when service
availability and bandwidth are most critical.

As previously mentioned, a vulnerability scan will have to check many different data points in order to get an accurate
result. All of these different checks can create load on the target system as well as consume bandwidth. Unfortunately, it is
difficult to know exactly howmany resources will be consumed on the target as it depends on the number of open services
and the types of

Chapter 11 — Introduction to Security Assessments 285


checks that would be associated with those services. This is the cost of doing a scan; it is going to occupy system
resources. Having a general idea of the resources that will be consumed and how much load the target system can take is
important when running these tools.

Scanning Threads Most vulnerability scanners include an option to set threads per scan, which equates
to the number of concurrent checks that occur at one time. Increasing this number will have a direct impact
on the load on the assessment platform as well as the networks and targets you are interacting with. This is
important to keep in mind as you use these scanners. It is tempting to increase the threads in order to
complete scans faster but remember the substantial load increase associated with doing so.

When a vulnerability scan is finished, the discovered issues are typically linked back to industry standard identifiers such as
CVE number 9, EDB-ID 10, and vendor advisories. This information, along with the vulnerabilities CVSS score 11, is used to
determine a risk rating. Along with false negatives (and false positives), these arbitrary risk ratings are common issues that
need to be considered when analyzing the scan results.

Since automated tools use a database of signatures to detect vulnerabilities, any slight deviation from a known signature
can alter the result and likewise the validity of the perceived vulnerabil- ity. A false positive incorrectly flags a vulnerability
that does not exist, while a false negative is effectively blind to a vulnerability and does not report it. Because of this, a
scanner is often said to only be as good as its signature rule base. For this reason, many vendors provide multiple sig-
nature sets: one that might be free to home users and another fairly expensive set that is more comprehensive, which is
generally sold to corporate customers.

The other issue that is often encountered with vulnerability scans is the validity of the suggested risk ratings. These risk
ratings are defined on a generic basis, considering many different factors such as privilege level, type of software, and pre-
or post-authentication. Depending on your environment, these ratings may or may not be applicable so they should not be
accepted blindly. Only those well-versed in the systems and the vulnerabilities can properly validate risk ratings. While
there is no universally defined agreement on risk ratings, NIST Special publication 800-30 12

is recommended as a baseline for evaluation of risk ratings and their accuracy in your environ- ment. NIST SP 800-30
defines the true risk of a discovered vulnerability as a combination of the likelihood of occurrence and the potential impact.

9 https://cve.mitre.org
10 https://www.exploit-db.com/about/
11 https://www.first.org/cvss
12 http://csrc.nist.gov/publications/PubsSPs.html#800-30

286 Kali Linux Revealed


Likelihood of Occurrence

According to the National Institute of Standards and Technology (NIST), the likelihood of occur- rence is based on the
probability that a particular threat is capable of exploiting a particular vul- nerability, with possible ratings of Low, Medium,
or High.

• High: the potential adversary is highly skilled and motivated and the measures that have been put in place to
protect against the vulnerability are insufficient.

• Medium: the potential adversary is motivated and skilled but the measures put in place to protect against the
vulnerability may impede their success.

• Low: the potential adversary is unskilled or lacks motivation and there are measures in place to protect against the
vulnerability that are partially or completely effective.

Impact

The level of impact is determined by evaluating the amount of harm that could occur if the vul- nerability in question were
exploited or otherwise taken advantage of.

• High: taking advantage of the vulnerability could result in very significant financial losses, serious harm to the
mission or reputation of the organization, or even serious injury, in- cluding loss of life.

• Medium: taking advantage of the vulnerability could lead to financial losses, harm to the mission or reputation of
the organization, or human injury.

• Low: taking advantage of the vulnerability could result in some degree of financial loss or impact to the mission and
reputation of the organization.

Overall Risk

Once the likelihood of occurrence and impact have been determined, you can then determine the overall risk rating, which
is defined as a function of the two ratings. The overall risk can be rated Low, Medium, orHigh, whichprovides guidance to
those responsible for securing andmaintaining the systems in question.

• High: There is a strong requirement for additional measures to be implemented to protect against the vulnerability.
In some cases, the systemmay be allowed to continue operating but a plan must be designed and implemented as
soon as possible.

• Medium: There is a requirement for additional measures to be implemented to protect against the vulnerability. A
plan to implement the required measures must be done in a timely manner.

Chapter 11 — Introduction to Security Assessments 287


• Low: The owner of the system will determine whether to implement additional measures to protect against the
vulnerability or they can opt to accept the risk instead and leave the system unchanged.

In Summary

With so many factors making up the true risk of a discovered vulnerability, the pre-defined risk ratings from tool output
should only be used as a starting point to determine the true risk to the overall organization.

Competently-created reports from a vulnerability assessment, when analyzed by a professional, can provide an initial
foundation for other assessments, such as compliance penetration tests. As such, it is important to understand how to get
the best results possible fromthis initial assessment. Kali makes an excellent platform for conducting a vulnerability
assessment and does not need any special configuration. In the Kali Applications menu, you will find numerous tools for
vul- nerability assessments in the Information Gathering, Vulnerability Analysis, and Web Application Analysis categories.
Several sites, including the aforementioned Kali Linux Tools Listing 13, The Kali Linux Official Documentation 14 site, and the
free Metasploit Unleashed 15 course provide ex- cellent resources for using Kali Linux during a vulnerability assessment.

11.2.2. Compliance Penetration Test

The next type of assessment in order of complexity is a compliance- based penetration test. These are the most common
penetration tests as they are government- and industry-mandated require- ments based on a compliance framework the
entire organization operates under. While there are many industry-specific compliance frameworks, the most common
would likely be Payment Card Industry Data Security Standard 16 ( PCI DSS), a framework dictated by payment card
companies that retailers processing card-based payments must comply with. However, a number of other standards exist
such as the Defense Information Systems Agency Security Techni- cal Implementation Guides 17 ( DISA STIG), Federal Risk
and AuthorizationManagement Program 18

(FedRAMP), Federal Information Security Management Act 19 ( FISMA), and others. In some cases, a corporate client may
request an assessment, or ask to see the results of the most recent assess- ment for various reasons. Whether ad-hoc
ormandated, these sorts of assessments are collectively

13 http://tools.kali.org/tools-listing
14 http://docs.kali.org
15 https://www.offensive-security.com/metasploit-unleashed/
16 https://www.pcisecuritystandards.org/documents/Penetration_Testing_Guidance_March_2015.pdf
17 http://iase.disa.mil/stigs/Pages/index.aspx
18 https://www.fedramp.gov/about-us/about/
19 http://csrc.nist.gov/groups/SMA/fisma/

288 Kali Linux Revealed


called compliance-based penetration tests, or simply “compliance assessments” or “compliance checks”.

A compliance test often begins with a vulnerability assessment. In the case of PCI compliance auditing 20, a vulnerability
assessment, when performed properly, can satisfy several of the base requirements, including: “2. Do not use
vendor-supplied defaults for system passwords and other security parameters” (for example, with tools from the Password
Attacks menu category), “11. Regularly test security systems and processes” (with tools from the Database Assessment cat-
egory) and others. Some requirements, such as “9. Restrict physical access to cardholder data” and “12. Maintain a policy
that addresses information security for all personnel” don’t seem to lend themselves to traditional tool-based vulnerability
assessment and require additional creativ- ity and testing.

Despite the fact that it might not seem straight-forward to use Kali Linux for some elements of a compliance test, the fact is
that Kali is a perfect fit in this environment, not just because of the wide range of security-related tools, but because of the
open-source Debian environment it is built on, allowing for the installation of a wide range of tools. Searching the package
manager with carefully chosen keywords from whichever compliance framework you are using is almost certain to turn
upmultiple results. As it stands, many organizations use Kali Linux as the standard platform for these exact sorts of
assessments.

11.2.3. Traditional Penetration Test

A traditional penetration test has become a difficult item to define, with many working from dif- ferent definitions, depending
on the space they operate in. Part of this market confusion is driven by the fact that the term “Penetration Test” has
become more commonly used for the previously mentioned compliance-based penetration test (or even a vulnerability
assessment) where, by de- sign, you are not delving too deep into the assessment because thatwould go beyond
theminimum requirements.

For the purposes of this section, we will side-step that debate and use this category to cover as- sessments that go beyond
the minimum requirements; assessments that are designed to actually improve the overall security of the organization.

As opposed to the previously-discussed assessment types, penetration tests don’t often start with a scope definition, but
instead a goal such as, “simulate what would happen if an internal user is compromised” or, “identify what would happen if
the organization came under focused attack by an external malicious party.” A key differentiator of these sorts of
assessments is that they don’t just find and validate vulnerabilities, but instead leverage identified issues to uncover the
worst- case scenario. Instead of relying solely on heavy vulnerability scanning toolsets, you must follow up with validation
of the findings through the use of exploits or tests to eliminate false positives and do your best to detect hidden
vulnerabilities or false negatives. This often involves exploiting

20 https://www.pcisecuritystandards.org/documents/PCIDSS_QRGv3_2.pdf

Chapter 11 — Introduction to Security Assessments 289


vulnerabilities discovered initially, exploring the level of access the exploit provides, and using this increased access as
leverage for additional attacks against the target.

This requires critical review of the target environment along with manual searching, creativity, and outside-the-box thinking
to discover other avenues of potential vulnerability and ultimately using other tools and tests outside those found by the
heavier vulnerability scanners. Once this is completed, it is often necessary to start the whole process over again multiple
times to do a full and complete job.

Even with this approach, you will often find that many assessments are composed of different phases. Kali makes it easy
to find programs for each phase by way of the Kali Menu:

• Information Gathering: In this phase, you focus on learning as much as possible about the target environment.
Typically, this activity is non-invasive and will appear similar to stan- dard user activity. These actions will make up
the foundation of the rest of the assessment and therefore need to be as complete as possible. Kali’s Information
Gathering category has dozens of tools to uncover as much information as possible about the environment being
assessed.

• VulnerabilityDiscovery: Thiswill often be called ”active information gathering”, where you don’t attack but engage in
non-standard user behavior in an attempt to identify potential vulnerabilities in the target environment. This is where
the previously-discussed vulnera- bility scanning will most often take place. The programs listed in the Vulnerability
Analysis, Web Application Analysis, Database Assessment, and Reverse Engineering categories will be useful for
this phase.

• Exploitation: With the potential vulnerabilities discovered, in this phase you try to exploit them to get a foothold into
the target. Tools to assist you in this phase can be found in the
Web Application Analysis, Database Assessment, Password Attacks, and Exploitation Tools
categories.

• Pivoting and Exfiltration: Once the initial foothold is established, further steps have to be completed. These are
often escalating privileges to a level adequate to accomplish your goals as an attacker, pivoting into other systems
that may not have been previously acces- sible to you, and exfiltrating sensitive information from the targeted
systems. Refer to the
Password Attacks, Exploitation Tools, Sniffing & Spoofing, and Post Exploitation categories to help with this phase.

• Reporting: Once the active portion of the assessment is completed, you then have to docu- ment and report on the
activities that were conducted. This phase is often not as technical as the previous phases, however it is highly
important to ensure your client gets full value from the work completed. The Reporting Tools category contains a
number of tools that have proven useful in the reporting phase.

In most cases, these assessments will be very unique in their design as every organization will operate with different
threats and assets to protect. Kali Linux makes a very versatile base for

290 Kali Linux Revealed


these sorts of assessments and this is where you can really take advantage of the many Kali Linux customization features.
Many organizations that conduct these sorts of assessments will maintain highly customized versions of Kali Linux for
internal use to speedupdeployment of systems before a new assessment.

Customizations that organizations make to their Kali Linux installations will often include:

• Pre-installation of commercial packages with licensing information. For instance, you may have a package such as
a commercial vulnerability scanner that you would like to use. To avoid having to install this package with each
build, you can do it once 21 and have it show up in every Kali deployment you do.

• Pre-configured connect-back virtual private networks (VPN). These are very useful in leave- behind devices that
allow you to conduct ”remote internal” assessments. In most cases, these systems will connect back to an
assessor-controlled system, creating a tunnel that the assessor can use to access internal systems. The Kali Linux
ISO of Doom 22 is an example of this exact type of customization.

• Pre-installed internally-developed software and tools. Many organizationswill have private toolsets, so setting these
up once in a customized Kali install 23 saves time.

• Pre-configured OS configurations such as hostmappings, desktopwallpaper, proxy settings, etc. Many Kali users
have specific settings 24 they like to have tweaked just so. If you are going to do a re-deployment of Kali on a regular
basis, capturing these changes makes a lot of sense.

11.2.4. Application Assessment

While most assessments have a broad scope, an application assessment is a specialty that is nar- rowly focused on a
single application. These sorts of assessments are becoming more common due to the complexity of mission-critical
applications that organizations use, many of which are built in-house. An application assessment is usually added on to a
broader assessment, as required. Applications that may be assessed in this manner include, but are not limited to:

• Web applications: The most common externally-facing attack surface, web applications make great targets simply
because they are accessible. Often, standard assessments will find basic problems in web applications, however a
more focused review is often worth the time to identify issues relating to the workflow of the application. The kali-linux-web
meta- package has a number of tools to help with these assessments.

• Compiled desktop applications: Server software is not the only target; desktop applications also make up a
wonderful attack surface. In years past, many desktop applications such as
21 http://docs.kali.org/kali-dojo/02-mastering-live-build
22 https://www.offensive-security.com/kali-linux/kali-rolling-iso-of-doom/
23 http://docs.kali.org/development/live-build-a-custom-kali-iso
24 https://www.offensive-security.com/kali-linux/kali-linux-recipes/

Chapter 11 — Introduction to Security Assessments 291


PDF readers or web-based video programs were highly targeted, forcing them to mature. However, there are still a
wide number of desktop applications that are a wealth of vulner- abilities when properly reviewed.

• Mobile applications: As mobile devices become more popular, mobile applications will be- come that much more of
a standard attack surface in many assessments. This is a fast mov- ing target and methodologies are still maturing
in this area, leading to new developments practically every week. Tools related to the analysis of mobile
applications can be found in the Reverse Engineering menu category.

Application assessments can be conducted in a variety of different ways. As a simple example, an application-specific
automated tool can be run against the application in an attempt to identify potential issues. These tools will use
application-specific logic in an attempt to identify unknown issues rather than just depending on a set of known signatures.
These tools must have a built-in understanding of the application’s behavior. A common example of this would be a web
applica- tion vulnerability scanner such as Burp Suite 25, directed against an application that first identifies various input
fields and then sends common SQL injection attacks to these fields whilemonitoring the application’s response for
indications of a successful attack.

In a more complex scenario, an application assessment can be conducted interactively in either a


black box or white box manner.

• Black Box Assessment: The tool (or assessor) interacts with the application with no special knowledge or access
beyond that of a standard user. For instance, in the case of a web ap- plication, the assessor may only have access
to the functions and features that are available to a user that has not logged into the system. Any user accounts
used would be ones where a general user can self-register the account. This would prevent the attacker from being
able to review any functionality that is only available to users that need to be created by an administrator.

• White Box Assessment: The tool (or assessor) will often have full access to the source code, administrative access
to the platform running the application, and so on. This ensures that a full and comprehensive review of all
application functionality is completed, regardless of where that functionality lives in the application. The trade-off
with this is that the assess- ment is in no way a simulation of actual malicious activity.

There are obviously shades of grey in between. Typically, the deciding factor is the goal of the assessment. If the goal is to
identify what would happen in the event that the application came under a focused external attack, a black box
assessment would likely be best. If the goal is to identify and eliminate as many security issues as possible in a relatively
short time period, a white box approach may be more efficient.

25 https://portswigger.net/burp/

292 Kali Linux Revealed


In other cases, a hybrid approachmay be takenwhere the assessor does not have full access to the application source
code of the platformrunning the application, but user accounts are provisioned by an administrator to allow access to as
much application functionality as possible. Kali is an ideal platform for all manner of application assessments. On a default
installation, a range of different application-specific scanners are available. For more advanced assessments, a range of
tools, source editors, and scripting environments exist. You may find the Web Applica- tion 26 and Reverse Engineering 27 sections
of the Kali Tools 28 website helpful.

11.3. Formalization of the Assessment

With your Kali environment ready and the type of assessment defined, you are almost ready to start working. Your last
step is to formalize the work to be done. This is critically important, as this defineswhat the expectations for theworkwill be,
and grants you permission to conduct what might otherwise be illegal activity. We will cover this at a high level, but this is a
very complex and important step so you will likely want to check with your organization’s legal representative for
assistance.

As part of the formalization process, you will need to define the rules of engagement for the work. This covers items such
as:

• What systems are you allowed to interact with? It is important to ensure you don’t acciden- tally interfere with
anything that is critical to business operations.

• What time of day and over what attack window is the assessment allowed to occur? Some organizations like to
limit the times that the assessment work can be conducted.

• When you discover a potential vulnerability, are you allowed to exploit it? If not, what is the approval process?
There are some organizations that take a very controlled approach to each exploitation attempt, whereas others
would like amore realistic approach. It is best to define these expectations clearly before work begins.

• If a significant issue is discovered, how should it be handled? Sometimes, organizations want to be informed right
away, otherwise it is typically addressed at the end of the assess- ment.

• In case of emergency, who should you contact? It is always important to know who to con- tact when a problem of
any sort occurs.

• Who will know about the activity? How will it be communicated to them? In some cases, organizations will want to
test their incident response and detection performance as part of the assessment. It is always a good idea to know
this beforehand, so you know if you should take any degree of stealth in the approach to the assessment.

26 http://tools.kali.org/category/web-applications
27 http://tools.kali.org/category/reverse-engineering
28 http://tools.kali.org

Chapter 11 — Introduction to Security Assessments 293


• What are the expectations at the end of the assessment? Howwill results be communicated? Know what all parties
expect at the end of the assessment. Defining the deliverable is the best way to keep everyone happy after the
work is completed.

While not complete, this listing gives you an idea of the details that should be covered. However, you should realize that
there is no substitute for good legal representation. Once these items are defined, you need to acquire proper authorization
to perform the assessment, since much of the activity that you will do in the course of an assessment may not be legal
without proper authority from someone with the authority to give that permission.

With all that in place, there is still one last step you will want to take before starting work: valida- tion. Never trust the scope
that you are provided—always validate it. Use multiple information sources to confirm that the systems within scope are in
fact owned by the client and that they are operated by the client as well. With the prevalence of cloud services, an
organization may forget that they don’t actually own the systems providing them service. You may find that you have to
obtain special permission from a cloud service provider before starting work. In addition, always validate IP address blocks.
Don’t count on an organization’s assumption that they own entire IP blocks, even if they sign off on them as viable targets.
For example, we have seen examples of organizations that request an assessment of an entire class C network range
when, in fact, they only owned a subset of those addresses. By attacking the entire class C address space, we would have
ended up attacking the organization’s network neighbors. The OSINT Analysis sub-category of the Information Gathering menu
contains a number of tools that can assist you with this vali- dation process.

11.4. Types of Attacks

Once the work is taking place, what are some of the specific sorts of attacks that you will be con- ducting? Each type of
vulnerability 29 has its own associated exploitation techniques. This section will cover the various classes of vulnerabilities
that you will interact with most often. No matter what category of vulnerability you are looking at, Kali makes these tools
and exploits easy to find. The Kali menu on your graphical user interface is divided up into categories to help make the
right tool easier to find. In addition, the Kali Tools website 30 has comprehensive listings of the various tools available in Kali,
organized by category and tagged for easy browsing. Each entry contains detailed information about the tool as well as
example usage.

29 https://www.cvedetails.com/vulnerabilities-by-types.php
30 http://tools.kali.org/tools-listing

294 Kali Linux Revealed


11.4.1. Denial of Service

Denial of service attacks leverage a vulnerability to create a loss of service, often by crashing the vulnerable process. The Stress
Testing category of the Kali Linuxmenu contains a number of tools for this purpose.

When many people hear the term “denial of service attack”, they immediately think of resource consumption attacks that
are sent out frommultiple sources at once against a single target. These would be a distributed denial of services attack, or
DDoS. These sorts of attacks are rarely part of a professional security assessment.

Instead, a singular denial of service attack is most often the result of an improper attempt to exploit a vulnerability. If an
exploit writer releases partially functional, or proof-of-concept (PoC) code and it is used in the field, this could create a
denial of service condition. Even a properly- coded exploitmay onlywork under very specific circumstances but cause a
denial of service under lesser circumstances. It may seem that the solution is to only use safe and tested exploit code, or to
write your own. Even with this solution, there are no guarantees and this severely limits the assessor, causing undue
constraints, which results in a lesser assessment. Instead, the key is compromise. Avoid PoC code and untested exploits in
the field and always make sure a lawyer has you covered for other mishaps.

Typically, denial of service attacks are not launched intentionally. Most automated vulnerability tools will declare denial of
service vulnerabilities as lower risk due to the fact that while you can remove a service from operation, that service can’t be
exploited for code execution. However, it is important to remember that not all exploits are released publicly and a denial of
service vulner- ability may mask a deeper, more serious threat. A code execution exploit for a known denial of service may
exist but not be public. The point is, pay attention to denial of service vulnerabilities and encourage your customer to get
them patched regardless of their (often low) threat rating.

11.4.2. Memory Corruption

A memory corruption happens when a location within the memory space of a process is acciden- tally modified due to
programming mistakes. Memory corruption bugs usually lead to unpre- dictable program behavior, however in many cases,
these bugs allow process memory manipula- tion in such a way that the program execution flow can be controlled, allowing
attacker-defined activity.

These attacks are typically referred to as buffer overflows, although this term is an over- simplification. The most common
types of memory corruption are vastly different from one an- other and have their own tactics and techniques required for
successful exploitation.

• Stack Buffer Overflow: When a programwritesmore data to a buffer on the stack than there is space available for it,
adjacent memory can be corrupted, often causing the program to crash.

Chapter 11 — Introduction to Security Assessments 295


• Heap Corruption: Heapmemory is allocated at run- time and usually contains data from the running program. Heap
corruptions occur by manipulating the data to overwrite through the linked list of heap memory pointers.

• Integer Overflow: These overflows occurwhen an application tries to create a numeric value that can’t be contained
within its allocated storage space.

• Format String: When a programaccepts user input and formats it without checking it, mem- ory locations can be
revealed or overwritten, depending on the format tokens that are used.

11.4.3. Web Vulnerabilities

Due to the fact thatmodernweb sites areno longer static pages, but insteaddynamically generated for the user, the average
website is quite complex. Web vulnerabilities take advantage of this complexity in an effort to attack either the back end
page generation logic or the presentation to the visitor of the site.

These sorts of attacks are extremely common, as many organizations have reached the point where they have very few
externally facing services. Two of the most prevalent web application attack types 31 are SQL injection and cross-site
scripting (XSS).

• SQL injection: These attacks take advantage of improperly-programmed applications that do not properly sanitize
user input, leading to the ability to extract information from the database or even the complete takeover of the
server.

• Cross-site scripting: As with SQL injection, XSS attacks result from improper sanitization of user input, allowing
attackers to manipulate the user or site into executing code in the context of their own browser session.

Complex, rich, and complicated web applications are very common, presenting a welcome attack surface for malicious
parties. You will find a large number of useful tools in the Web Application Analysis menu category and the kali-linux-web metapackage.

11.4.4. Password Attacks

Password attacks are attacks against the authentication system of a service. These attacks are often broken into online
password attacks and offline password attacks, which you will find re- flected in the Password Attacks menu category. In
an online password attack, multiple passwords are attempted against a running system. In an offline password attack, the
hashed or encrypted values of the passwords are obtained and the attacker attempts to obtain the clear text values. The
protection against this sort of attack is the fact that it is computationally expensive to work through this process, limiting the
number of attempts per second you can generate. However,

31 https://www.owasp.org/index.php/Top_10_2013-Top_10

296 Kali Linux Revealed


workarounds for this do exist, such as using graphic processor units (GPUs) to accelerate the num- ber of attempts that can
be made. The kali-linux-gpu metapackage contains a number of tools that tap into this power.

Most commonly, password attacks target vendor-supplied default passwords. As these are well- known values, attackers
will scan for these default accounts, hoping to get lucky. Other common attacks include custom dictionary attacks where a
wordlist is created that has been tailored to the target environment and then an online password attack against common,
default, or known accounts is conducted where each word is attempted in sequence.

In an assessment, it is very important to understand the potential consequences of this sort of attack. First, they are often
very noisy due to the repeated authentication attempts. Secondly, these attacks can often result in an account lock out
situation after too many invalid attempts are performed against a single account. Finally, the performance of these attacks
is often quite slow, resulting in difficulty when attempting to use a comprehensive wordlist.

11.4.5. Client-Side Attacks

Most attacks are conducted against servers, but as services have become harder to attack, easier targets have been
selected. Client-side attacks are a result of this, where an attacker will target the various applications installed on the
workstation of an employee within a target organization. The Social Engineering Tools menu category has a number of
excellent applications that can help conduct these types of attacks.

This sort of attack is best exploited by the Flash, Acrobat Reader, and Java attacks that were very common in the early
2000s. In these cases, attackerswould try to solicit a target to visit amalicious web page. These pages would contain
specialized code that would trigger vulnerabilities in these client-side applications, resulting in the ability to run malicious
code on the targets system. Client-side attacks are incredibly difficult to prevent, requiring a great deal of user education,
constant application updates, and network controls to effectively mitigate the risk.

11.5. Summary

In this chapter, we took a brief look at Kali’s role in the field of information security. We discussed the importance of a
clean, working installation and the use of encryption before heading out to the field in order to protect your client’s
information, and the importance of legal representation to protect you and your client’s interests.

The components of the CIA (confidentiality, integrity, availability) triad are the primary items that you will focus on when
securing a system as part of standard deployment, maintenance, or assessment. This conceptual foundation will assist you
with the identification of the critical com-

Chapter 11 — Introduction to Security Assessments 297


ponents of your systems and the amount of effort and resources worth investing into correcting identified problems.

We discussed several types of vulnerabilities including file inclusion, SQL injection, buffer over- flows, and race conditions.

The accuracy of the signatures is extremely important to get useful vulnerability assessment re- sults. The more data that
are provided, the higher chance there is to have accurate results from an automated signature-based scan, which is why
authenticated scans are often so popular. Since automated tools use a database of signatures to detect vulnerabilities, any
slight deviation froma known signature can alter the result and likewise the validity of the perceived vulnerability. We also
discussed the four types of assessments: the vulnerability assessment, compliance test, tradi- tional penetration test, and the
applicationassessment. Even thougheach type of assessment leverages a core set of tools, many of the tools and
techniques overlap.

The vulnerability assessment is relatively simple in comparison to the other assessment types and often consists of an
automated inventory of discovered issues within a target environment. In this section, we discussed that a vulnerability is a
flaw that, when exploited, will compromise the confidentiality, integrity, or availability of an information system. Since it is
signature-based, this type of assessment relies on accurate signatures and canpresent false positives andnegatives. You
will find the core tools for this type of assessment in the Vulnerability Analysis and Exploitation Tools menu categories of
Kali Linux.

Compliance tests are based on government- and industry-mandated requirements (such as PCI DSS, DISA STIG, and
FISMA), which are in turn based on a compliance framework. This test usually begins with a vulnerability assessment.

A traditional penetration test is a thorough security assessment that is designed to improve the overall security posture of
an organization based on certain real-world threats. This type of test involves several steps (mirrored by the Kali
Linuxmenu structure) and culminates in exploitation of vulnerabilities and pivoting access to other machines and networks
within the target scope. Application assessments (usually white- or black-box) focus on a single application and use spe-
cialized tools such as those found in the Web Application Analysis, Database Assessment, Reverse Engineering, and Exploitation
Tools menu categories.

Several types of attacks were discussed including: denial of service, which breaks the behavior of an application andmakes
it inaccessible; memory corruption, which leads tomanipulation of pro- cess memory, often allowing an attacker code
execution; web attacks, which attack web services using techniques like SQL injection and XSS attacks; and password
attacks, which often leverage password lists to attack service credentials.

298 Kali Linux Revealed


Keywords

Constant changes
Certifications
Trainings
Chapter

Conclusion: The 12
Road Ahead
Contents

Keeping Up with Changes 302 Showing Off Your Newly Gained Knowledge 302 Going Further 302
Congratulations! Hopefully you should nowbemore familiar with your Kali Linux systemand you should not be afraid of
using it for any experiment that you can think of. You have discovered its most interesting features but you also know its
limits and various ways to work around those limitations.

If you have not put all features into practice, keep this book around for reference purposes and refresh your memory when
you are about to try a new feature. Remember that there is noth- ing better than practice (and perseverance) to develop
new skills. Try Harder 1, as the Offensive Security trainers keep repeating.

12.1. Keeping Up with Changes

With a constantly-changing distribution like kali-rolling, some parts of the book will necessarily become obsolete. We will do
our best to keep it up to date (at least for the online version) but for most parts we tried to provide generic explanations that
should be useful for a long time to come. That said, you should be ready to embrace changes and to find out solutions to
any problem that might pop up. With the better understanding of Kali Linux and its relationship to Debian, you can rely on
both the Kali and Debian communities and their numerous resources (bug trackers, forums, mailing lists, etc.) when you
are getting stuck.

Don’t be afraid to file bugs (see section 6.3, “Filing a Good Bug Report” [page 129])! If you are like me, by the time you
have completed the steps involved in filing a good bug report (and it takes some time), you will have solved the problem or
at least found a good work-around. And by actually filing the bug, you will be helping others who are affected by the issue.

12.2. Showing Off Your Newly Gained Knowledge

Are you proud of your new Kali Linux skills? Would you like to ensure that you remember the really important things? If you
answer yes to one of those questions, then you should consider applying for the Kali Linux Certified Professional program.

It is a comprehensive certification that will ensure that you knowhow to deploy and use Kali Linux inmany realistic use
cases. It is a nice addition to your resume and it also proves that you are ready to go further.

12.3. Going Further

This book taught you a lot of things that any Kali Linux user should know, but we made some hard choices to keep it short,
and there are many topics that were not covered.

1 https://www.offensive-security.com/offsec/say-try-harder/

302 Kali Linux Revealed


12.3.1. Towards System Administration

If you want to learn more about system administration, then we can only recommend that you check out the Debian
Administrator’s Handbook:

è https://debian-handbook.info/get/

You will find there many supplementary chapters covering common Unix services that we have entirely skipped in this
book. And even for chapters that have been reused in the Kali book, you will find plenty of supplementary tips, notably on
the packaging system (which is also covered more extensively at its lowest level).

The Debian book obviously presents more deeply the Debian community and the way it is orga- nized. While this
knowledge is not vital, it is really useful when you have to interact with Debian contributors, for example through bug
reports.

12.3.2. Towards Penetration Testing

You probably noticed by now that this book did not teach you penetration testing. But the things you learned are still
important. You are now ready to fully exploit the power of Kali Linux, the best penetration testing framework. And you have
the basic Linux skills required to participate in Offensive Security’s training.

If you feel that you are not yet ready for a paid course, you can start by following the Metasploit Unleashed 2 free online
training. Metasploit is a very popular penetration testing tool and you have to know it if you are serious about your plans to
learn penetration testing. The next logical step would then be to follow the Penetration Testing with Kali Linux 3 online
course leading the path to the famous “Offensive Security Certified Professional” certification. This online course can be
followed at your own pace but the certification is actually a difficult, 24h long, real-word, hands-on penetration test which
takes place in an isolated VPN network. Are you up to the challenge?

2 https://www.offensive-security.com/metasploit-unleashed/
3 https://www.offensive-security.com/information-security-training/

Chapter 12 — Conclusion: The Road Ahead 303


Index

_. config, 234 add a user to a group, 108 addgroup, 109 adduser,


108 administrator password, 72 Advanced Package
. d, 195 Tool, 171 aide (Debian package), 163 AllowOverride,
. htaccess, 116 Apache directive, 115, 116 analysis
/dev, 48
/etc/apt/apt.conf.d/, 195
/etc/apt/preferences, 196
/etc/apt/sources.list, 172
/etc/apt/trusted.gpg.d/, 203 vulnerability, 6 web
/etc/group, 107 /etc/gshadow, 107 application, 6 ansible, 255
Apache, 113
/etc/network/interfaces, 105
/etc/passwd, 107 /etc/salt/minion, 255 directives, 115 Apache
/etc/shadow, 107 directives, 116 application
assessments, 291 applications
/etc/ssh/sshd_config, 110 /proc,
48 /sys, 48 collection, 10 menu, 5
applying a patch, 227
/var/lib/dpkg/, 212 apropos, 124 APT, 171
/var/www/html/, 114 32-bit
CPU, 16 64-bit CPU, 16
configuration, 195 header
display, 185 initial configuration,
A a2dismod, 113 81 interfaces, 190 package

a2enmod, 113 search, 185 pinning, 196


preferences, 196 apt, 176 apt
a2ensite, 114
build-dep, 226 apt dist-upgrade,
ACCEPT, 155 179 apt full-upgrade, 179 apt
account install, 177
creation, 107 disable, 109
modification, 108 activity,
monitoring, 162
apt purge, 180 apt ARM installations, 94
remove, 180 apt assessment
search, 186 apt show, application, 291 black
186 apt source, 223 box, 292 formalization,
apt update, 176 apt 293 vulnerability, 284
upgrade, 179 white box, 292 attacks
apt-cache, 185

apt-cache dumpavail, 187 client side, 297 database, 6

apt-cache pkgnames, 187 denial of service, 295 memory

apt-cache policy, 187 apt-cache corruption, 295 password, 6, 296

search, 186 apt-cache show, 186 types of, 294 web, 296 wireless,

apt-cdrom, 172 apt-get, 176 6 auditing, security, 5


authentication

apt-get dist-upgrade, 179 apt-get


install, 177 apt-get purge, 181
apt-get remove, 180 apt-get
package authentication, 202 AuthName,
update, 176 apt-get upgrade,
Apache directive, 116 AuthType, Apache
179 apt-key, 203
directive, 116 AuthUserFile, Apache directive,
116 automatic installation, 91 automatically
installed packages, 199 avalanche effect, 163
apt-mark auto, 200 apt-mark
axi-cache, 186
manual, 200
apt-xapian-index, 186
apt.conf.d/, 195 aptitude,
176, 190 B background process, 57
aptitude dist-upgrade, 179
BackTrack, XXI, 2 bg, 57 BIOS,
aptitude full-upgrade, 179 aptitude
24 block device file, 49 boot
install, 177 aptitude markauto, 200
preseed, 92 boot screen, 67
aptitude purge, 181 aptitude
bootable USB key, 19
remove, 180 aptitude
bootloader, 83 BOOTP, 252
safe-upgrade, 179 aptitude
Breaks, header field, 209 broken
search, 186 aptitude show, 186
dependency, 189 Bruce
aptitude unmarkauto, 200 aptitude
Schneier, 150 brute-force
update, 176 aptitude why, 200
architecture attacks, 296

multi-arch support, 200

Index 305
buffer of a kernel, 232 compliance
overflow, 295 receive penetration test, 288 component (of a
buffer, 156 bug report, 129 repository), 173 conffiles, 214
bugs.kali.org, 133 confidentiality

build dependencies, installation, 226 build files, 85 config, debconf


options, 229 Build-Depends, 226 building script, 214 configuration

creating configuration packages, 263 files, 214


a custom live ISO image, 236 a
package, 230 initial configuration of APT, 81
management, 255 network DHCP, 71 static,
C cache, proxy, 82
71 of the kernel, 234 program configuration,
110 conflicts, 208 Conflicts, header field,
cat, 56
208 contrib, section, 173 control, 206 control
cd, 52
file, 266 control sum, 163 control.tar.gz, 211
cdimage.kali.org, 14, 175 cdrom
copying, ISO image, 19 copyright, 127
preseed, 93 certification, 302
copyright file, 265 country selection, 69 cp,
chage, 108 chain, 154
53 createdb, 112 createuser, 112 creation

changelog file, 266


changelog.Debian.gz, 126
character device file, 49
checksecurity, 164 checksums,
214 chef, 255 chfn, 108 chgrp, 58
chmod, 58 choice

of country, 69 of
language, 68 chown, 58
chroot, 238 chsh, 108 of a PostgreSQL database, 112 of a
PostgreSQL user, 112 of groups, 109 of
user accounts, 107 credentials, default,
client side attacks, 297 153 cross-site scripting (XSS), 296
cluster, PostgreSQL cluster, 111, 113 cryptsetup, 242
command line, 51 communities, 128

comparison of versions, 185 nuke password, 245 customization of live


compilation ISO image, 236

306 Kali Linux Revealed


D database assessment, 6 dictionary attacks, 296 directives, Apache, 115,
116 DirectoryIndex, Apache directive, 115 disable
database server, 111 dch, 226
an account, 109 disk preseed, 93 Disks
dd, 22
(program), 20 diskutil, 23 distribution, Linux, 2
dm-crypt, 86 dmesg, 60 DNAT, 155 dnsmasq,
debconf, 214 252 docs.kali.org, 127 documentation, 124, 126
debconf-get, 97 download
debconf-get-selections, 94
debconf-set, 97 DEBEMAIL, 265
DEBFULLNAME, 265 Debian

relationship with Kali Linux, 4 Debian


Administrator’s Handbook, 303 Debian Free
Software Guidelines, 5 Debian GNU/Linux, 2
ISO image, 14 the
Debian Policy, 5
sources, 223 dpkg, 170

debian-archive-keyring, 203
database, 212 dpkg --verify,
debian-kernel-handbook, 232
162 internal operation, 213
debian/changelog, 226, 266
dpkg-buildpackage, 230 dpkg-deb,
debian/control, 266 debian/copyright,
231 dpkg-source --commit, 227
265 debian/patches, 225
drive, USB drive, 19 DROP, 155
debian/rules, 229, 267 debuild, 231
dropdb, 112 dropuser, 112 dual
boot, 84

default passwords, 153


default.target, 117 deletion of
a group, 109 delgroup, 109

denial of service, 295 E echo, 54 editor, 56 encrypted


dependency, 207
partition, 85 encrypted
Depends, header field, 207
persistence, 242 engineering
desktop environment, 3
choice during build of live ISO, 237
desktop-base, 263
detecting changes on the filesystem, 162 device file, reverse, 6 social engineering,
49 df, 60 7 Enhances, header field, 208
environment
dh-make, 264
dh_install, 267 environment variable, 54
DHCP, 252 ExecCGI, Apache directive, 115

Index 307
execution modules, salt, 256 gpasswd, 109 GPG key, 17
execution, right, 57 experimental, graphical.target, 117 grep,
197 Explanation, 198 exploitation 56 group
tools, 7

add a user, 108 change,


F fail2ban, 152 109 creation, 109 deletion,
109 of volumes, 86 owner,
features, 7 fg, 57
57 groupmod, 109 GRUB,
83 gui-apt-key, 204 guided
file confidentiality, 85 partitioning, 75

configuration files, 214 file


system, 49 filesystem

hierarchy, 54 filtering
rule, 154, 157 find, 56 H hardware discovery, 61 heap
corruption, 295 history of Kali
fingerprint, 163 Linux, 2 HOME, 55 home
firewall, 153 directory, 55 host, virtual host,
FollowSymLinks, Apache directive, 115 forensics,
114 htpasswd, 116 HTTP
7
proxy, 82 HTTP server, 113
mode, 8
http.kali.org, 174 HTTPS, 114
formalization of the assessment, 293 format
Hyper-V, 25
disk, 49 forums, 128

forums.kali.org, 128
FORWARD, 154 free, 60

Freenode, 128
fwbuilder, 160 I ICMP, 156 id, 60, 109 ifupdown, 105
impersonation, 7 Includes, Apache
G get the sources, 223 directive, 115 incompatibilities, 209
getent, 108 git clone, 225 Indexes, Apache directive, 115 info, 126

GitHub issues, 144 information gathering, 6 initrd preseed,

GNOME, 3 92 INPUT, 154

gnome-disk-utility, 20

gnome-system-monitor, 162

GNUInfo, 126

308 Kali Linux Revealed


installation, 66 kali-dev, 4, 174 kali-linux-*
automatic, 91 meta-packages, 238 kali-menu, 263
of build dependencies, 226 on kali-meta, 263 kali-rolling, 4, 173 KDE, 3
ARM devices, 94 kernel, 48
package installation, 176, 177
troubleshooting, 95 unattended, 91
installer preseeding, 92 integer overflow,
295 compilation, 232 configuration, 234

logs, 60 sources, 233 key APT’s


Internet Control Message Protocol, 156 ip6tables,
authentication keys, 204
153, 157 iptables, 153, 157 IRC channel, 128
isc-dhcp-server, 252 ISO image

USB key, 19
keyboard layout, 70 kill,
authentication, 16 57 konqueror, 126 KVM,
booting, 24 copying, 19 25
custom build, 236
download, 14 mirrors,
L language selection, 68 layout,
14 variants, 16
keyboard, 70 less, 56

libapache-mod-php, 113 Linux,

48
J journal, 60

journalctl, 60 distribution, 2 kernel, 2, 8


kernel sources, 233 live
K Kali Linux ISO image, 14

communities, 128 custom build, 236


documentation, 127 live-boot, 239 live-build, 236
download, 14 features, 7
adding files, 239 debconf
getting started, 14 preseeding, 238 hooks, 238
history, 2 packages to install, 237 loader
meta-packages, 238
policies, 9
relationship with Debian, 4 bootloader, 83 LOG, 155
repositories, 173 kali-archive-keyring, logcheck, 161 logging, 161 Logical
203 kali-bleeding-edge, 174, 197 Volume Manager, 86
kali-defaults, 263

Index 309
login, remote login, 110 logs mirrors, 14, 81, 174
mkdir, 53 mkfs, 49
aptitude, 193
dpkg, 188 journal, 60 modification of a package, 222
kernel, 60 monitoring, 161 modification, right, 57 monitoring, 161
ls, 52 lsdev, 61 lshw, 61
lspci, 61 lspcmcia, 61 activity, 162 files, 163 log files, 161
lsusb, 61 LUKS, 86 LVM, more, 56 mount, 49 mount point, 79
86 LXDE, 3 Multi-Arch, 200 multi-user.target, 117
MultiViews, Apache directive, 115

mv, 53

M machine, virtual machine, 24 main, N netfilter, 153 network configuration,


section, 173 make deb-pkg, 235

Makefile, 267 man, 124 management


71, 104
with ifupdown, 105 with
NetworkManager, 104 with
systemd-network, 106 network
installation, 252 network mirrors, 81
configuration management, 255 of network preseed, 93 network services,
services, 117 manual pages, 124 10

manually installed packages, 199 securing, 153


maskrights mask, 59 MASQUERADE, 155 NetworkManager, 104

master boot record, 84 master, salt master, newgrp, 58, 109

255 MATE, 3 MD5, 163 md5sums, 214


NEWS.Debian.gz, 126
non-free, section, 173 nuke
password, 245

O octal representation of rights, 59

Offensive Security, 2 openssh-server, 110


memory corruption, 295
Options, Apache directive, 115 OUTPUT,
menu, Kali Linux’s applications menu, 5
154 overflow, buffer, 295 overlay
meta-package, 207, 209
filesystem, 240
kali-linux-*, 238 Metasploit
Unleashed, 303 minion, salt
minion, 255

310 Kali Linux Revealed


owner packet
group, 57 filter, 153 IP,
user, 57 153
PAE (Physical Address Extension), 35 parted,
P package
241 partition

authenticity check, 202 binary


encrypted, 85 swap
package, 170 build, 230
partition, 79 partitioning,
74
configuration, 263
guided partitioning, 75 manual
conflict, 208
partitioning, 77 passwd, 108
content inspection, 184 Debian
password, 108
package, 170 dependency,
207 file list, 181 header list,
attacks, 296 default
184 incompatibility, 209 info,
passwords, 153 policy, 152
184
password attacks, 6 patch, 227
patch application, 227 PATH, 53
PCI, 288 penetration test
installation, 176, 177 making
changes, 226 meta-information,
204, 206 modification, 222 priority,
196 purge, 181

compliance, 288 traditional, 289


penetration testing, 5 penetration
removal, 177, 180
testing course, 303 permissions, 57
replacement, 210
repository, 269 seal,
persistence, 239

202
search, 182, 185 signature,
202 source of, 172 source encrypted, 242 multiple

package, 170 status, 182 stores, 243 pg_createcluster, 113

unpacking, 177 pg_ctlcluster, 113 pg_dropcluster,


113 pg_hba.conf, 111
pg_lsclusters, 113

version comparison, 185 virtual pg_renamecluster, 113

package, 209 package tracker, 4 pg_upgradecluster, 113 PGP


Packages.xz, 171 packaging key, 17 PHP, 113 PID, process
identifier, 50 Pin, 198

build options, 229


configuration packages, 263 new
upstream version, 229

Index 311
Pin-Priority, 198 redirection, 56 reinstallation, 189 REJECT, 155 Release.gpg,
pinfo, 126 ping, 156 203 remote login, 110 removal of a package, 177 removing a
package, 180 replacement, 210 Replaces, header field, 210
pinning, APT pinning, 196 point, report a bug, 129 reportbug, 139 reporting tools, 7 repository
mount point, 79 post exploitation, of packages, 269 reprepro, 269 Require, Apache directive,
7 PostgreSQL, 111 postinst, 211 116 requirements, minimal installation require-
postrm, 211

POSTROUTING, 154
pre-dependency, 207
Pre-Depends, header field, 207
preferences, 196 preinst, 211 prerm,
211

PREROUTING, 154
preseed file, 93 ments, 66 rescue mode
preseeding debian-installer, 92 priority of installer, 84 resize a partition, 77
retrieve the sources, 223 reverse
package priority, 196 engineering, 6 rights, 57
program
configuration, 110 Provides,
header field, 209 proxy, 82 mask, 59 octal representation,
59 risk model, 150 risk ratings, 286
proxy cache, 82 ps, rkhunter, 164 rm, 53 rmdir, 53
57 Rolling, Kali Rolling, 3 root, 10 root
puppet, 255 password, 72, 153 RTFM, 124 rules
purge of a package, 181 file, 267
purging a package, 181 pwd,
52
PXE boot, 252

Q QCOW, 30

QEMU, 25
S salt execution modules, 256 salt
R read, right, 57 formulas, 258 salt state modules,

259 salt states, 258 salt-key, 255


README.Debian, 126
saltstack, 255
receive buffer, 156
Recommends, header field, 208
REDIRECT, 155

312 Kali Linux Revealed


samhain, 164 making changes, 226
scanning threads, 286 sources.list, 172 Sources.xz, 171
Schneier, Bruce, 150 search of spoofing, 7 SQL injection, 296
packages, 185 section SSH, 110 SSL, 114 state
modules, salt, 259 sticky bit, 58
contrib, 173 main, sudo, 10

173 non-free, 173


secure boot, 24
securing, 150

a laptop, 152 a Suggests, header field, 208 swap,

server, 152 79 swap partition, 79

network services, 153


security SymLinksIfOwnerMatch, Apache directive, 115 synaptic,

assessments, 280 190, 194 system administration, 303 system services, 7

auditing, 5 policy, 150 system, file system, 49 systemctl, 117 systemd, 117
systemd-network, 106 systemd-resolved, 107

service file, systemd service file, 117 services


management, 117 setgid directory, 58 setgid,
right, 58 setuid, right, 58 Setup, 24 sg, 109
SHA1, 163

T target, systemd target, 117 TFTP,

252 tftpd-hpa, 252 threat model,

SHA256SUMS, 16 150 TLS, 114 top, 162 tracker

shell, 52
shrink a partition, 77
signal, 57 signature

package signature, 202 SNAT,


package tracker, 4 traditional
155 sniffing, 7
penetration test, 289 training, 302
tripwire, 164
social engineering tools, 7 source

troubleshooting installations, 95 trust,


of packages, 172 of the Linux web of trust, 17 trusted key, 204
kernel, 233 package, 170
retrieval, 223 source package
U UEFI, 24

build, 230 ULOG, 155

Index 313
umask, 59 web, 296
uname, 60
unattended installation, 91 union W WantedBy, systemd directive, 118 Wants,

mount, 240 unit, systemd unit, 117 systemd directive, 118 web access

unpacking restriction, 116 web application analysis, 6


web attacks, 296 web authentication, 115
binary package, 177 web of trust, 17 web server, 113 Win32 Disk
upgrade Imager, 19 wireless attacks, 6 write, right,
handling problems after an upgrade, 187 system
57
upgrade, 179
upstream version, packaging a new one, 229 USB key, 19

userowner, 57 user space, 48

X XDG, 55

V variable, environment, 54 variants of Xen, 25

live ISO image, 237 VDI, 30 Xfce, 3

Y yelp, 126
version, comparison, 185 vigr,
107 vipw, 107

virtual host, 114 virtual


machine, 24 virtual
memory, 79 virtual
package, 209 VirtualBox,
25 VMware, 25 volume

group, 86
logical volume, 86
physical volume, 86
vulnerability
analysis, 6 assessments, 284
client side, 297 denial of service,
295 memory corruption, 295
password, 296 scans, 286 types
of, 294

314 Kali Linux Revealed

Вам также может понравиться