Академический Документы
Профессиональный Документы
Культура Документы
Revelado
El dominio de las pruebas de penetración
Distribución
Kali Linux
Revelado
El dominio de las pruebas de penetración
Distribución
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/
978-0-9976156-0-9 (Paperback)
Offsec Press
19701 Bethel Church Road, # 103-253 Cornelio NC 28031
EE.UU.
www.offensive-security.com
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
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 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 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
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
m D 137
m w 144
6 4 Resumen 146
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
V
Conflictos: el conflicto de campo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208
Incompatibilidades: se rompe el campo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209
Los productos proporcionados: Proporciona el campo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209
V K R
10.2 Gestión de la Configuración de apalancamiento. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255
nd ce 304
X
Prefacio
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
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
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.
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,
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!
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
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
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.
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
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.
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].
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.
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.
derivado de Debian
distribución de Linux
Propósito
Características
Políticas
Capítulo
Un poco de historia 2 Relación con Debian 4 Propósito y casos de uso 5 Características generales Kali Linux 7
¿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.
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
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
4 https://www.gnome.org
5 https://www.kde.org
6 http://www.xfce.org
7 http://lxde.org
8 http://mate-desktop.org
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
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
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
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á
9 https://www.debian.org/releases/testing/
10 http://pkg.kali.org/derivative/kali-dev/
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.
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
11 http://git.kali.org
12 https://www.debian.org/social_contract
13 https://www.debian.org/doc/debian-policy/
• 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
• 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
• 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
• 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
• 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.
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.
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.
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
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
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.
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
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
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
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
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.
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
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.
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.
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 licencia 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
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
• 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.
• 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,
• 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/
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.
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
mi http://cdimage.kali.org/README.mirrorlist
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].
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.
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
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
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.
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
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).
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.
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
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
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
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:
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.
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.
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
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
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].
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].
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
Ahora que ya sabe que la llave USB está disponible como / dev / sdb, se puede proceder a copiar la imagen
con el dd mando:
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.
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):
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.
Eso es. Su llave USB ya está listo y se puede arrancar desde él o usarlo para instalar Kali Linux.
1 http://support.apple.com/kb/ht1310
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.
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
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
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
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
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].
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.
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.
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
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].
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
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.
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.
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.
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.
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 ....
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.
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
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.
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.
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].
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.
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,
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.
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.
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].
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].
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
• 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.
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.
kernel de Linux
Usuario de la
golpetazo
comandos de Unix
Capítulo
Fundamentos de Linux 3
Contenido
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 .
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.
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,
(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
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:
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
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
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.
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
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
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]).
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).
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.
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:
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
PS pwd
/ Home / $ buxy cd
escritorio
PS pwd
compactos .
PS pwd
compactos ..
PS pwd
/ Home / $ buxy ls
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
PS mv nueva prueba
PS ls
PS ls
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
PS echo $ PATH
/ Usr / local / sbin: / usr / local / bin: / usr / sbin: / usr / bin: / sbin: / bin $ el cual ls
/ bin / ls
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.
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
• /bota/: Kali kernel Linux y otros archivos necesarios para su proceso de inicio temprano
• /medios de comunicación/*: puntos de montaje para los dispositivos extraíbles (CD-ROM, memorias USB, etc.)
• / 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.
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
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,
~ / .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).
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
PS gato Kali-rules.txt
normas Kali!
Kali es el mejor!
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.
/ 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.
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).
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 grupo propietario (simbolizada por sol, como en el grupo), que representa a todos los miembros del grupo
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).
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
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 /.
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
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
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
PROPINA A veces tenemos que cambiar los derechos de un árbol de archivos completo. Todos los comandos anteriores tienen un - R opción de
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
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.
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.
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
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
Instalación La
instalación
desatendida
dispositivos ARM
Solución de problemas
Capítulo
Requisitos mínimos para la instalación 66 Instalación paso a paso en un disco duro 66 Instalaciones desatendidas 91
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.
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.
En primer lugar, vamos a echar un vistazo a una instalación estándar Kali, con un sistema de archivos sin cifrar.
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.
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.
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.
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
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.
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].
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.
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].
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.
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.
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
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
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].
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
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.
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
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.
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.
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 .
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).
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
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.
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
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
• 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.
• 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.
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
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].
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.
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.
A continuación, el Packages.xz y Sources.xz archivos se descargan automáticamente para actualizar la lista de paquetes reconocidos por
APT.
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
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.
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
mi http://www.debian.org/releases/stable/amd64/ch08s07.html
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.
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.
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.
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
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.
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.
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.
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
muestra en la Figura 4.25, “Confirmar que las particiones con formato” [página 91].
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].
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
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.
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
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
1 https://www.debian.org/releases/stable/amd64/apbs02#preseed-aliases
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
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
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
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
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:
• 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
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
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
mi https://www.offensive-security.com/kali-linux-arm-images/
2 https://github.com/offensive-security/kali-arm-build-scripts
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
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]).
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].
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
mi http://docs.kali.org/category/kali-on-arm
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.
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.
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.
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.
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].
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
• 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
Los usuarios y
Servicios
Apache
PostgreSQL
SSH
Capítulo
Configuración de la red 104 Gestión de usuarios y grupos Unix Unix 107 Configuración de los servicios 109
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].
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
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
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
eth0 automático
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:
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).
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
[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
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)).
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.
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
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.
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:
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.
de comandos, lo que obliga al usuario cambiar su contraseña la próxima vez que se conecten.
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).
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.
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
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.
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.
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
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
con el Puerto directiva. Para aplicar la nueva configuración, se debe ejecutar ssh recarga systemctl.
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
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).
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.
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.
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
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):
king_phisher =>
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
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.
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
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/
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).
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
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
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
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
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:
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:
• 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.
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).
Require valid-user
AuthName “Directorio privado” TipoAut básico
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:
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
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
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]
[Servicio]
EnvironmentFile = - / etc / default / ssh ExecStart = / usr / sbin /
sshd -D $ SSHD_OPTS ExecReload = / bin / kill -HUP $ MAINPID
KillMode = Reiniciar proceso = fallo ON
[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
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
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.
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.
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
• 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
• 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.
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.
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.
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.
mi http://catb.org/~esr/faqs/smart-questions.html
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,
4. Dispositivos (en sistemas tipo Unix, estos son archivos especiales, generalmente colocados en el directorio / dev / directorio)
6. Juegos
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.
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.
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.
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.
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.
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
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.
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/
• 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
• 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
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.
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.
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
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.
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
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
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
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.
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.
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
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
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 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.
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:
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
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:
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].
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
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.
presentará una formwith muchos campos a rellenar, como se muestra en la Figura 6.4, “Formulario para informar de un fallo” [página 136].
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
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.
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.
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.
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.
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.
¿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).
> 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).
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:
(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
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) .
Después de proporcionar un resumen de una línea de su problema, youmust califica su gravedad a lo largo de una escala ampliada:
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.
7 menores cosas como errores de ortografía y otros errores cosméticos menores que no afectan a la
funcionalidad principal del paquete.
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.
Estimado Mantenedor,
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)
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.
s - Añadir un destinatario X-Debbugs-CC (CC pero después de procesamiento BTS). ? - Mostrar esta ayuda.
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.).
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].
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]).
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
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 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
• 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,
• 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
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.
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.
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
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,
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
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
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.
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
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).
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.
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
Mientras se mantienen los servicios de personas con discapacidad, que no suponen ninguna amenaza para la seguridad. Sin embargo, hay que tener cuidado
• 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
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.
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,
1 https://docs.kali.org
2 https://tools.kali.org
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.
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:
• 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
• SALIDA: para modificar los paquetes generados por el propio servidor de seguridad. Estas cadenas se ilustran en la Figura
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.
• 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).
• 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
• 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).
mi http://www.faqs.org/rfcs/rfc4443.html
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
• - 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
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.
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
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:
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:
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
cadena.
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)
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.
El principio es simple. En el primer paso, estén todos los elementos que van a participar en las reglas actuales:
• 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.
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.
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
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.
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);
• aquellos clasificar un mensaje como una alerta de seguridad (/ etc / logcheck / violations.d /);
• por último, las que se aplican a los mensajes restantes (considerado como los eventos del sistema).
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.
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
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.
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,
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
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”
¿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.
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
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
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í
• 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
• 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.
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
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
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.
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
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),
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.
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
Vamos a echar un vistazo a la sintaxis de este archivo. El primer campo indica el tipo de fuente:
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
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.
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:
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
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
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:
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
2 http://mirrorbrain.org
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.
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.
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
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.
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.
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
# 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:
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
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:
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
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:
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
/ 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:
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
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 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
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
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:
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.
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) ...
¡Advertencia! Dado el carácter definitivo de purga, no ejecute a la ligera. Usted perderá todo lo relacionado con ese
paquete.
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.
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
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:
/ Usr / sbin
/ Usr / sbin / update-passwd / usr / share
/usr/share/man/pl/man8/update-passwd.8.gz [...]
/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
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í
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':
| 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
[...]
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
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
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 $ 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 “~”:
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.
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
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.
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é.
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.
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
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
• 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 /
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 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.
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:
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
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:
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
# 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).
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
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.
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
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
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:
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).
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-
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
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.
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.
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
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
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,
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.
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]).
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
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
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
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:
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:
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
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.
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
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
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):
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/
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
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).
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.
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
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
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:
/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>
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
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.
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:
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:
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
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:
* apt-cache para consultar la información disponible de instalado, así como paquetes instalables
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.
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:
• =: igual a (tenga en cuenta que “ 2.6.1 " no es igual a " 2.6.1-1 “);
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-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.
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.
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.
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.
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.
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.
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.
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.
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
# ! / Bin / sh
conjunto -e
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).
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
PS /var/lib/dpkg/info/zsh.list cabeza
/. / Bin / bin /
zsh / bin / zsh5 /
usr / usr / lib
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í.
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).
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].
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.
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:
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
# -o APT :: DPKG opciones :: =”- fuerza-confdef” -o DPKG :: options :: =”- fuerza-confold” completo
una mejorar
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
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
• 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-
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
Imágenes
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
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.
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.
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.
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.
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
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
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 [...]
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
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.
å done.
Resolving deltas: 100% (279/279), done. Checking connectivity...
done. $ cd kali-meta
$ ls
debian $ ls debian
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
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):
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.
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/
$ head -n 1 debian/changelog
libfreefare (0.4.0-2) unstable; urgency=low $ dch --local buxy
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:
$ wget https://github.com/JPaulMora/Pyrit/commit/14
å ec997174b8e8fd20d22b6a97c57e19633f12a0.patch -O /tmp/pyrit-patch
[...] $ patch -p1 </tmp/pyrit-patch
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
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/
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.
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
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.
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”
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.
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: 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’.
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.
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/
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).
è http://kernel-handbook.alioth.debian.org
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
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.
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/
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.
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.
. . /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
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.
The first step is to install the packages needed and to retrieve the Git repository with the Kali
live-build configuration:
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/
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:
• 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
You can easily create a Kali live image using KDE as desktop environment with this single com- mand:
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.
8 https://www.xfce.org/
9 http://debian-live.alioth.debian.org/live-manual/unstable/manual/html/live-manual.en.html
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-all: meta-package of all the meta-packages and other packages (almost every- thing that Kali provides so
it is really huge!)
• kali-linux-gpu: GPU-powered tools (tools making use of the computing power available in your graphical card)
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.
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
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.
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).
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.
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.
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:
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
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 4096000
The USB key is now ready and can be booted with the “Live USB Persistence” boot menu entry.
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.
WARNING!
========
This will overwrite data on /dev/sdb3 irrevocably.
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 4096000
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
label live-demo
menu label ^Live USB with Demo Data linux /live/vmlinuz
initrd /live/initrd.img
label live-work
menu label ^Live USB with Work Data linux /live/vmlinuz initrd
/live/initrd.img
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:
And that’s all. You cannowboot theUSBkey and select fromthe newbootmenu entries as needed!
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:
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.
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.
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
• 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.
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
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/
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
PXE installation
Configuration
management
Saltstack
Forking Kali packages
Configuration
packages
Package repository
Chapter
Installing Kali Linux Over the Network (PXE Boot) 252 Leveraging Configuration Management 255
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.
è https://www.debian.org/releases/stable/amd64/ch04s05.html
# 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
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:
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.
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
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.
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:
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:
As soon as minions are connected, you can execute commands on them from the master:
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:
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:
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).
all the usual systemctl operations: service.enable, service.disable, service. start, service.stop, service.restart, and service.reload:
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
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:
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:
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
• 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/
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
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:
- - - - - - - - - -
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
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
kali-scratch:
- - - - - - - - - -
ID: offsec_repository Function:
pkgrepo.managed
Name: deb http://pkgrepo.offsec.com offsec-internal main Result: True
- - - - - - - - - -
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
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).
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:
• 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.
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/
• /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
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:
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.
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:
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”.
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:
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
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:
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
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
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
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:
Note: Use ”gpg --full-gen-key” for a full featured key generation dialog.
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
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-
$ 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,
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>
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”>
And the corresponding sources.list entry to add on machines that need packages from this repository would look like this:
Your package is now published and should be available to your networked hosts.
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
• 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:
# 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
• 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.
>/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:
• Once minions are connected, you can execute commands on them from the master. Exam- ples:
• 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.
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
• 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
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.
• 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.
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.
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.
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
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
• 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
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
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.
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.
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/
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.
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
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
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.
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/
• 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.
• 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/
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
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.
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
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.
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.
• 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.
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.
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
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.
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-
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.
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.
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.
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.
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/
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.
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/
search, 186 apt-cache show, 186 types of, 294 web, 296 wireless,
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
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
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
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
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
gnome-disk-utility, 20
gnome-system-monitor, 162
GNUInfo, 126
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
48
J journal, 60
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
202
search, 182, 185 signature,
202 source of, 172 source encrypted, 242 multiple
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,
auditing, 5 policy, 150 system, file system, 49 systemctl, 117 systemd, 117
systemd-network, 106 systemd-resolved, 107
shell, 52
shrink a partition, 77
signal, 57 signature
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
X XDG, 55
Y yelp, 126
version, comparison, 185 vigr,
107 vipw, 107
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