Merged
Merged
Merged
com
kali linux
Reveló
Dominar las pruebas de penetración
Distribución (2021)
kali linux
Reveló
Dominar las pruebas de penetración
Distribución (2021)
Copyright © 2021 Raphaël Hertzog, Jim O'Gorman, Mati Aharoni y Joe O'Gorman
Este libro tiene una licencia Creative Commons Attribution-ShareAlike 3.0 Unported.
mihttps://creativecommons.org/licenses/by-sa/3.0/
Algunas secciones de este libro toman prestado contenido del "Manual del administrador de Debian, Debian Jessie from
Discovery to Mastery" escrito por Raphaël Hertzog y Roland Mas, que está disponible aquí:
mihttps://debian-handbook.info/browse/stable/
A los efectos de la licencia CC-BY-SA, Kali Linux Revealed es una adaptación del Manual del administrador de
Debian.
"Kali Linux" es una marca comercial de Offensive Security. Cualquier uso o distribución de este libro, modificado o no, debe cumplir
con la política de marcas registradas definida aquí:
mihttps://www.kali.org/trademark-policy/
Todos los derechos no otorgados explícitamente anteriormente están
Presione OffSec
230 Park Ave, 3.er piso Oeste de
Nueva York NY 10169
EE.UU
www.ofensiva-seguridad.com
La información de este libro se distribuye "tal cual", sin garantía. Si bien se han tomado todas las precauciones en la
preparación de este trabajo, ni los autores ni OffSec Press serán responsables ante ninguna persona o entidad con
respecto a cualquier pérdida o daño causado o presuntamente causado directa o indirectamente por la información
contenida en él. .
Debido a la naturaleza dinámica de Internet, las direcciones web o los enlaces contenidos en este libro pueden haber cambiado
desde la publicación y es posible que ya no sean válidos.
Tabla de contenido V
6. Ayudarse a sí mismo y obtener ayuda 127
6.1 Fuentes de documentación. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .128
...............................................
6.1.1 Páginas del manual 128
..............................................
6.1.2 Documentos de información 130
6.1.3 Documentación específica del paquete. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .130
6.1.4 Sitios web. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .131
6.1.5 Documentación de Kali en kali.org/docs/. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .131
6.2 Comunidades Kali Linux. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .132
6.2.1 Foros en forums.kali.org. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .132
6.2.2 Canal IRC #kali-linux en Freenode. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .133
6.3 Presentación de un informe de error bueno. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .134
6.3.1 Recomendaciones genéricas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .134
Cómo comunicarse.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .134
Qué poner en el informe de errores. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .135
Consejos varios. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .136
6.3.2 Dónde presentar un informe de error. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .137
6.3.3 Cómo presentar un informe de error. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .138
.......................................
Presentar un informe de error en Kali 138
Presentar un informe de error en Debian ...................................... 142
Presentar un informe de error en otro proyecto de software libre . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
6.4 Resumen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .151
7. Asegurar y monitorear Kali Linux 155
7.1 Definición de una política de seguridad. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .156
7.2 Posibles medidas de seguridad. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .158
7.2.1 En un servidor ................................................ 158
................................................
7.2.2 En una computadora portátil 158
7.3 Protección de los servicios de red .......................................... 159
7.4 Cortafuegos o filtrado de paquetes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .159
7.4.1 Comportamiento del filtro de red. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .160
7.4.2 Sintaxis deiptablesytablas ip6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .163
Comandos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .163
Normas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .163
7.4.3 Creación de reglas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .165
7.4.4 Instalación de las reglas en cada inicio. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .166
7.5 Supervisión y registro. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .167
7.5.1 Seguimiento de registros con ......................................
verificación de registro 167
7.5.2 Actividad de Monitoreo en Tiempo Real ...................................... 168
7.5.3 Detección de cambios. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .169
Paquetes de auditoría condpkg --verificar. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .169
Seguimiento de Archivos: AIDE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .170
7.6 Resumen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .171
Índice 308
Tabla de contenido IX
Prefacio
Suena bastante sexy, pero en realidad, pasamos la mayor parte de nuestro tiempo flotando sobre un teclado, armados con
las herramientas digitales de nuestro oficio. Manejábamos una sórdida colección de programas, diseñados para mapear
redes y localizar objetivos; luego escanee, explote y pivote a través de ellos. En algunos casos, uno de nosotros (a menudo
Jim Chapple) escribía herramientas personalizadas para hacer cosas malvadas como escanear una red de Clase A (algo que
ninguna otra herramienta podía hacer en ese momento), pero la mayoría de las veces usábamos o modificábamos
herramientas escritas por la comunidad de hackers. En aquellos días previos a Google, frecuentábamos BugTraq,
AstaLaVista, Packet Storm, w00w00, SecurityFocus, X-Force y otros recursos para realizar investigaciones y construir
nuestro arsenal.
Como teníamos un tiempo limitado en cada concierto, teníamos que actuar rápidamente. Eso significaba que no podíamos pasar
mucho tiempo manipulando herramientas. Significaba que teníamos que aprender las herramientas principales por dentro y por
fuera, y mantener las auxiliares a mano, por si acaso. Significaba que teníamos que tener nuestras herramientas bien organizadas,
documentadas y probadas para que hubiera pocas sorpresas en el campo. Después de todo, si no conseguíamos, perderíamos
prestigio con nuestros clientes y ellos tomarían nuestras recomendaciones mucho menos en serio.
Debido a esto, pasé mucho tiempo catalogando herramientas. Cuando se lanzaba o actualizaba una
herramienta, seguía una rutina. Tenía que averiguar si se ejecutaría en la plataforma de ataque (algunos no
lo hacían) y si valía la pena (algunos no lo valían); Tuve que actualizar los scripts que se basaban en él,
documentarlo y probarlo, incluido el traspaso de los cambios realizados a la versión anterior.
Luego, sacudiría todas las herramientas y las colocaría en directorios según su propósito durante una evaluación.
Escribía scripts de envoltorio para ciertas herramientas, encadenaba algunas herramientas juntas y correlacionaba
todo eso en un CD separado que podíamos llevar a áreas sensibles, cuando los clientes no nos permitían tomar
máquinas de ataque o eliminar medios de sus laboratorios.
Este proceso fue doloroso, pero necesario. Sabíamos que teníamos la capacidad de entrar en cualquier red, si aplicábamos
nuestras habilidades y experiencia correctamente, nos manteníamos organizados y trabajábamos de manera eficiente. Si
bien mantenerse invicto era un motivador, se trataba de brindar un servicio a clientes que necesarionosotros para entrar
en las redes, para que puedan tapar las brechas y mover el dinero hacia programas de seguridad de la información críticos
pero descuidados.
Pasamos años perfeccionando nuestras habilidades y experiencia, pero no habríamos tenido éxito sin organización y
eficiencia. Habríamos fallado si no hubiéramos podido poner nuestras manos en la herramienta adecuada cuando fuera
necesario.
Es por eso que pasé tanto tiempo investigando, documentando, probando y catalogando herramientas y, a comienzos del
siglo XXI, se estaba convirtiendo rápidamente en un trabajo abrumador de tiempo completo. Gracias a Internet, la
superficie de ataque mundial se disparó y la variedad y la cantidad de herramientas de ataque aumentaron
exponencialmente, al igual que la carga de trabajo necesaria para mantenerlas.
A partir de 2004, Internet explotó no solo como base para los negocios, sino también como plataforma social. Las
computadoras eran asequibles, más fáciles de usar y omnipresentes. La tecnología de almacenamiento se expandió
de megabytes a gigabytes. Ethernet saltó de cientos de kilobits a decenas de megabits por segundo, y las
conexiones a Internet eran más rápidas y económicas que nunca. El comercio electrónico iba en aumento, los sitios
de redes sociales como Facebook (2004) y Twitter (2006) se pusieron en línea y Google (1998) había madurado hasta
el punto de que cualquiera (incluidos los delincuentes) podía encontrar casi cualquier cosa en línea.
La investigación se volvió crítica para equipos como el nuestro porque teníamos que mantenernos al día con nuevos
ataques y conjuntos de herramientas. Respondimos a más delitos informáticos, y el trabajo forense exigió que
anduviésemos con cuidado mientras escarbábamos entre las pruebas potenciales. el concepto de unCD en vivosignificaba
que podíamos realizar análisis forenses en vivo en una máquina comprometida sin comprometer la evidencia.
Ahora nuestro pequeño equipo tenía que administrar herramientas de ataque, herramientas forenses y una distribución de
herramientas de área sensible; teníamos que mantenernos al día con las últimas metodologías de ataque y explotación; y
tuvimos que, ya sabes, hacer aquello por lo que nos pagaron: pruebas de penetración, que tenían una gran demanda. Las
cosas se estaban saliendo de control y, en poco tiempo, pasamos menos tiempo en la batalla y mucho más tiempo
investigando, afilando nuestras herramientas y planificando.
No estábamos solos en esta lucha. En 2004, Mati "Muts" Aharoni, un hacker y profesional de la seguridad,
lanzó "WHoppiX" (White Hat Knoppix), un CD de Linux en vivo que calificó como "el último CD en vivo de
pruebas de penetración". Incluía "todas las vulnerabilidades de SecurityFocus, Packet Storm y k-otik,
Metasploit Framework 2.2 y mucho, mucho más”.
Recuerdo haber descargado WHoppiX y pensé que era genial tenerlo cerca. Descargué otros CD en vivo, pensando que si
alguna vez estaba en apuros, los CD en vivo podrían salvar mi tocino en el campo. Pero no estaba dispuesto a depender de
WHOppiX o cualquier otro CD para el trabajo real. No confiaba en ninguno de ellos para satisfacer la mayoría de mis
necesidades; ninguno de ellos se sintió adecuado para mi flujo de trabajo; no eran distribuciones instalables completas; y
en el momento en que los descargué estaban desactualizados. Un juego de herramientas envejecido es el beso de la
muerte en nuestra industria.
Simplemente agregué estas imágenes de CD, a pesar de su tamaño relativamente masivo, a nuestro arsenal y seguí con el doloroso
proceso de mantener nuestro conjunto de herramientas "real".
Pero a pesar de mis opiniones personales en ese momento, y quizás a pesar de las expectativas de Muts, WHOppiX y sus
descendientes tuvieron un impacto sísmico en su vida, nuestra industria y nuestra comunidad.
En 2006, Muts, Max Moser y sus equipos consolidaron Auditor Security Linux y WHAX en una sola distribución
llamada BackTrack. Todavía basado en SLAX, BackTrack siguió creciendo, agregando más herramientas, más
marcos, soporte de idiomas extendido, soporte inalámbrico extenso, una estructura de menú que atiende tanto a
usuarios novatos como profesionales, y un núcleo muy modificado. BackTrack se convirtió en la distribución de
seguridad líder, pero muchos como yo todavía lo usamos como respaldo para sus "herramientas reales".
A principios de 2009, Muts y su equipo habían ampliado BackTrack significativamente a BackTrack 4. Ahora, un trabajo de
tiempo completo para Muts, BackTrack ya no era un CD en vivo sino una distribución completa basada en Ubuntu que
aprovechaba los repositorios de software de Ubuntu. El cambio marcó una evolución seria: BackTrack 4 tenía un
mecanismo de actualización. En las propias palabras de Muts: "Al sincronizar con nuestros repositorios BackTrack, recibirá
regularmente actualizaciones de herramientas de seguridad poco después de su lanzamiento".
Este fue un punto de inflexión. El equipo de BackTrack se había sintonizado con las dificultades que enfrentaban los
evaluadores de penetración, los analistas forenses y otras personas que trabajaban en nuestra industria. Sus esfuerzos nos
ahorrarían innumerables horas y proporcionarían una base firme, permitiéndonos volver a la lucha y dedicar más tiempo a
las cosas importantes (y divertidas). Como resultado, la comunidad respondió acudiendo en masa a los foros y wiki; y
colaborando con el equipo de desarrollo. BackTrack fue verdaderamente un esfuerzo de la comunidad, con Muts todavía a
la cabeza.
BackTrack 4 finalmente se había convertido en una plataforma de fuerza industrial y yo, y otros como yo, respiramos
aliviados. Sabíamos de primera mano el "dolor y el sufrimiento" que Muts y su equipo estaban soportando, porque
habíamos estado allí. Como resultado, muchos de nosotros comenzamos a utilizar BackTrack como base principal de
nuestro trabajo. Sí, todavía jugueteamos con las herramientas, escribimos nuestro propio código y desarrollamos nuestros
propios exploits y técnicas; e investigamos y experimentamos; pero no dedicamos todo nuestro tiempo a recopilar,
actualizar, validar y organizar herramientas.
BackTrack 4 R1 y R2 fueron revisiones adicionales en 2010, lo que condujo a la reconstrucción desde cero de Back-Track 5
en 2011. Todavía basado en Ubuntu y cobrando fuerza con cada lanzamiento, BackTrack era ahora un proyecto enorme
que requería un voluntario heroico. y el esfuerzo de la comunidad, sino también la financiación. Muts lanzó Offensive
Security (en 2006) no solo para brindar servicios de capacitación y pruebas de penetración de clase mundial, sino también
para proporcionar un vehículo para mantener el desarrollo de BackTrack en marcha y garantizar que BackTrack siga siendo
de código abierto y de uso gratuito.
BackTrack continuó creciendo y mejorando durante 2012 (con R1, R2 y R3), manteniendo un núcleo de Ubuntu y
agregando cientos de nuevas herramientas, incluidas herramientas de explotación física y de hardware, soporte de
VMware, innumerables controladores inalámbricos y de hardware, y una multitud de estabilidad. mejoras y
correcciones de errores. Sin embargo, después del lanzamiento de R3, el desarrollo de BackTrack fue relativamente,
y algo misterioso, silencioso.
Prefacio XIII
Había algo de especulación en la industria. Algunos pensaron que BackTrack estaba siendo "comprado", vendiendo
su alma a un malvado señor corporativo sin rostro por un pago masivo. Offensive Security se estaba convirtiendo
en una de las empresas de capacitación más respetadas y un líder intelectual en nuestra industria, y algunos
especularon que su éxito había engullido y dejado de lado a los desarrolladores clave de BackTrack. Sin embargo,
nada podría estar más lejos de la verdad.
En 2013, se lanzó Kali Linux 1.0. De las notas de la versión: “Después de un año de desarrollo silencioso, Offensive
Security se enorgullece de anunciar el lanzamiento y la disponibilidad pública de Kali Linux, la distribución de
prueba de penetración más avanzada, robusta y estable hasta la fecha. Kali es una versión de BackTrack más
madura, segura y preparada para empresas”.
Kali Linux no fue un simple cambio de marca de BackTrack. Con más de 600 herramientas completamente
reempaquetadas, era claramente un conjunto de herramientas increíble, pero aún había más que eso. Kali
había sido construido, desde cero, sobre un núcleo Debian. Para los desinformados, esto puede no parecer
gran cosa. Pero los efectos dominó fueron asombrosos. Gracias a un enorme esfuerzo de reempaquetado,
los usuarios de Kali pudieron descargar el código fuente de cada herramienta; podían modificar y reconstruir
una herramienta según fuera necesario, con solo unas pocas pulsaciones de teclas. A diferencia de otros
sistemas operativos principales de la época, Kali Linux se sincronizaba con los repositorios de Debian cuatro
veces al día, lo que significaba que los usuarios de Kali podían obtener actualizaciones de paquetes y
correcciones de seguridad perversamente actuales. Los desarrolladores de Kali se lanzaron a la refriega,
empaquetar y mantener versiones anteriores de muchas herramientas para que los usuarios se mantuvieran
constantemente a la vanguardia. Gracias a sus raíces de Debian, los usuarios de Kali podían iniciar una
instalación o ISO directamente desde los repositorios, lo que abrió la puerta para instalaciones de Kali
completamente personalizadas o implementaciones empresariales masivas, que podrían automatizarse y
personalizarse aún más con archivos preconfigurados. Para completar la trifecta de personalización, los
usuarios de Kali podían modificar el entorno de escritorio, alterar menús, cambiar iconos e incluso
reemplazar entornos de ventanas. Un impulso masivo de desarrollo de ARM abrió la puerta para la
instalación de Kali Linux en una amplia gama de plataformas de hardware, incluidos puntos de acceso,
computadoras de placa única (Raspberry Pi, ODROID, BeagleBone y CubieBoard, por ejemplo) y
computadoras Chromebook basadas en ARM. Y por último pero no menos importante,
La comunidad se dio cuenta. En los primeros cinco días, 90.000 de nosotros descargamos Kali 1.0.
Esto fue solo el comienzo. En 2015, se lanzó Kali 2.0, seguido de los lanzamientos continuos de 2016. En
resumen, "si Kali 1.0 se enfocó en construir una infraestructura sólida, entonces Kali 2.0 se enfoca en revisar
la experiencia del usuario y mantener paquetes y repositorios de herramientas actualizados".
La versión actual de Kali Linux es una distribución continua, que marca el final de las versiones discretas. Ahora, los
usuarios están actualizados continuamente y reciben actualizaciones y parches a medida que se crean. Las herramientas
principales se actualizan con más frecuencia gracias a un sistema de etiquetado de versiones anteriores, se implementaron
mejoras de accesibilidad innovadoras para personas con discapacidades visuales y los kernels de Linux se actualizan y
parchean para continuar con el soporte de inyección inalámbrica 802.11. Las herramientas Software Defined Radio (SDR) y
Near-Field Communication (NFC) agregan soporte para nuevos campos de pruebas de seguridad. Están disponibles la
instalación completa de discos cifrados de Linux y las opciones de autodestrucción de emergencia,
Kali Linux ha evolucionado no solo hasta convertirse en la plataforma elegida por los profesionales de la seguridad de la
información, sino también en una distribución de sistema operativo de grado industrial, de clase mundial, madura, segura
y lista para empresas.
Durante el proceso de desarrollo de una década, Muts y su equipo, junto con la incansable dedicación de
innumerables voluntarios de la comunidad de hackers, han asumido la carga de simplificar y organizar
nuestro entorno de trabajo, liberándonos de gran parte de la monotonía de nuestro trabajo y
proporcionando una base segura y confiable, lo que nos permite concentrarnos en impulsar la industria
hacia el objetivo final de asegurar nuestro mundo digital.
Y de manera interesante, pero no sorprendente, se ha creado una comunidad increíble en torno a Kali Linux.
Cada mes, entre trescientos y cuatrocientos mil de nosotros descargamos una versión de Kali. Nos reunimos
en los foros de Kali, unos cuarenta mil, y de tres a cuatrocientos de nosotros a la vez se pueden encontrar en
el canal Kali IRC. Nos reunimos en conferencias y asistimos a Kali Dojos para aprender cómo aprovechar
mejor Kali de los propios desarrolladores.
Kali Linux ha mejorado el mundo de la seguridad de la información, y Muts y su equipo nos han ahorrado a
cada uno de nosotros incontables horas de esfuerzo y frustración, permitiéndonos dedicar más tiempo y
energía a impulsar la industria juntos.
febrero 2017
Prefacio XV
Prefacio
Acaban de llegar las dieciséis computadoras portátiles de gama alta ordenadas para su equipo de pentesting y se le ha
asignado la tarea de configurarlas para el compromiso externo de mañana. Instala Kali y enciende una de las
computadoras portátiles solo para descubrir que apenas se puede usar. A pesar del núcleo de vanguardia de Kali, las
tarjetas de red y el mouse no funcionan, y la tarjeta gráfica NVIDIA y la GPU pesadas lo miran fijamente porque no tienen
los controladores instalados correctamente. tu suspiras
en KaliModo en vivo, escribes rápidamentelspcien una consola, luego entrecerrar los ojos. Se desplaza por la lista de
hardware: “Puente PCI, controlador USB, controlador SATA. ¡Ajá! Controladores de Red y Ethernet.” Una búsqueda
rápida en Google de sus respectivos números de modelo, con referencias cruzadas con la versión del kernel de Kali,
revela que estos controladores de última generación aún no han llegado al kernel de la línea principal.
Pero no todo está perdido. Un plan se está formulando lentamente en tu cabeza, y agradeces al cielo por el Kali
Linux reveladolibro que recogiste hace un par de semanas. Puede usar el sistema Kali Live-Build para crear un Kali
ISO personalizado, que tendría los controladores necesarios integrados en los medios de instalación. Además,
puede incluir los controladores de gráficos NVIDIA, así como las bibliotecas CUDA necesarias para que esa bestia de
GPU hable bien con hashcat y haga que ronronee mientras descifra hashes de contraseñas a velocidades
vertiginosas. Diablos, incluso podría agregar un fondo de pantalla personalizado con un logotipo de Microsoft para
burlarse de su equipo en el trabajo.
Dado que los perfiles de hardware para sus instalaciones son idénticos, agrega una opción de arranque predeterminada a la ISO, de
modo que su equipo pueda arrancar desde una memoria USB y tener Kali instalado sin interacción del usuario: la instalación se
encarga de sí misma, con cifrado de disco completo y todo.
¡Perfecto! Ahora puede generar una versión actualizada de Kali bajo demanda, específicamente diseñada y
optimizada para su hardware. Salvaste el día. ¡Misión cumplida!
Con la avalancha de hardware que llega al mercado, este escenario se está volviendo más común para aquellos de
nosotros que nos aventuramos lejos de los sistemas operativos convencionales, en busca de algo más ligero, más
malo o más adecuado para nuestro trabajo y estilo.
Esto es especialmente aplicable a aquellos atraídos por el campo de la seguridad, ya sea un pasatiempo atractivo,
una fascinación o una línea de trabajo. Como recién llegados, a menudo se encuentran perplejos por el entorno o el
sistema operativo. Para muchos recién llegados, Kali es su primera introducción a Linux.
Reconocimos este cambio en nuestra base de usuarios hace un par de años y pensamos que podíamos ayudar a
nuestra comunidad creando un libro introductorio estructurado que guiaría a los usuarios en el mundo.
de seguridad, mientras les brinda toda la sofisticación de Linux que necesitarían para comenzar. Y así nació
el libro Kali, ahora disponible gratis en Internet para el beneficio de cualquier persona interesada en
ingresar al campo de la seguridad a través de Kali Linux.
Sin embargo, a medida que el libro comenzó a tomar forma, rápidamente nos dimos cuenta de que había un
potencial sin explotar. Esta sería una gran oportunidad para ir más allá de un libro introductorio de Kali Linux y
explorar algunas de las características más interesantes y poco conocidas. De ahí el nombre del libro:Kali Linux
revelado.
Al final, quedamos encantados con el resultado. El libro respondió a todos nuestros requisitos y me enorgullece
decir que superó nuestras expectativas. Nos dimos cuenta de que, sin darnos cuenta, habíamos ampliado la base
de usuarios potenciales del libro. Ya no estaba destinado solo a los recién llegados al campo de la seguridad, sino
que también incluía excelente información para los probadores de penetración experimentados que necesitaban
mejorar y pulir su control de Kali Linux, permitiéndoles desbloquear todo el potencial de nuestra distribución. Ya
sea que estuvieran instalando una sola máquina o miles en una empresa, realizando cambios menores en la
configuración o personalizándolos completamente hasta el nivel del núcleo, creando sus propios repositorios,
tocando la superficie o profundizando en el increíble sistema de administración de paquetes Debian,Kali Linux
reveladoproporciona la hoja de ruta.
Con su mapa en la mano, en mi nombre y en el de todo el equipo de Kali Linux, ¡les deseo un viaje
emocionante, divertido, fructífero y "revelador"!
mudos
febrero 2017
Kali Linux es la plataforma de pruebas de penetración más poderosa y popular del mundo, utilizada por
profesionales de seguridad en una amplia gama de especializaciones, incluidas pruebas de penetración, análisis
forense, ingeniería inversa y evaluación de vulnerabilidades. Es la culminación de años de refinamiento y el
resultado de una evolución continua de la plataforma, de WHOppiX a WHAX, a BackTrack, y ahora a un completo
marco de pruebas de penetración que aprovecha muchas características de Debian GNU/Linux y la vibrante
comunidad de código abierto en todo el mundo. .
Kali Linux no se ha creado para ser una simple colección de herramientas, sino un marco flexible que los probadores de
penetración profesionales, entusiastas de la seguridad, estudiantes y aficionados pueden personalizar para satisfacer sus
necesidades específicas.
Kali Linux no es simplemente una colección de varias herramientas de seguridad de la información que se instalan
en una base estándar de Debian y se configuran previamente para que pueda comenzar a funcionar de inmediato.
Para sacar el máximo provecho de Kali, es importante tener una comprensión profunda de sus poderosos
fundamentos de Debian GNU/Linux (que admiten todas esas excelentes herramientas) y aprender cómo puede
utilizarlas en su entorno.
Aunque Kali es decididamente polivalente, está diseñado principalmente para ayudar en las pruebas de
penetración. El objetivo de este libro no es solo ayudarlo a sentirse como en casa cuando usa Kali Linux, sino
también ayudarlo a mejorar su comprensión y simplificar su experiencia para que cuando esté involucrado
en una prueba de penetración y el tiempo sea esencial, gane. No necesita preocuparse por perder valiosos
minutos para instalar un nuevo software o habilitar un nuevo servicio de red. En este libro, primero le
presentaremos Linux, luego profundizaremos a medida que le presentemos los matices específicos de Kali
Linux para que sepa exactamente lo que sucede debajo del capó.
Este es un conocimiento invaluable, particularmente cuando está tratando de trabajar con limitaciones de tiempo.
No es raro que se requiera esta profundidad de conocimiento cuando se está configurando, solucionando un
problema, luchando para adaptar una herramienta a su voluntad, analizando la salida de una herramienta o
aprovechando Kali en un entorno de mayor escala.
¿Este libro es para ti?
Si está ansioso por sumergirse en el campo intelectualmente rico e increíblemente fascinante de la seguridad de la
información, y ha seleccionado Kali Linux como plataforma principal, entonces este libro lo ayudará en ese viaje.
Este libro está escrito para ayudar a los usuarios de Linux por primera vez, así como a los usuarios actuales de Kali
que buscan profundizar sus conocimientos sobre los fundamentos de Kali, así como a aquellos que han usado Kali
durante años pero que buscan formalizar su aprendizaje, expandir su uso de Kali, y llenar los vacíos en su
conocimiento.
Además, este libro puede servir como hoja de ruta, referencia técnica y guía de estudio para aquellos que
buscan la certificación Kali Linux Certified Professional.
Este libro ha sido diseñado para que pueda tener en sus manos Kali Linux desde el principio. No tienes que
leer la mitad del libro para empezar. Cada tema se cubre de una manera muy pragmática, y el libro está
repleto de muestras y capturas de pantalla para ayudar a que las explicaciones sean más concretas.
en el capitulo1, “Acerca de Kali Linux” [página 2], definimos una terminología básica y explicamos el
propósito de Kali Linux. en el capitulo2, “Primeros pasos con Kali Linux” [página 14], lo guiamos paso a paso
desde la descarga de la imagen ISO hasta que Kali Linux se ejecute en su computadora. Luego viene el
capitulo3, “Fundamentos de Linux” [página 48] que proporciona el conocimiento básico que necesita saber
sobre cualquier sistema Linux, como su arquitectura, proceso de instalación, jerarquía del sistema de
archivos, permisos y más.
En este punto, ha estado usando Kali Linux como sistema en vivo por un tiempo. con capitulo4, “Instalando
KaliLinux” [página 66] aprenderá cómo hacer una instalación permanente de Kali Linux (en su disco duro) y
con el capítulo5, “Configuración de Kali Linux” [página 108] cómo ajustarlo a tu gusto. Como usuario habitual
de Kali, es hora de familiarizarse con los importantes recursos disponibles para los usuarios de Kali: capítulo
6, “Ayudarse a sí mismo y obtener ayuda” [página 128] le da las claves para lidiar con los problemas
inesperados que probablemente enfrentará.
Con los conceptos básicos bien cubiertos, el resto del libro se sumerge en temas más avanzados: capítulo7, “
Asegurando y Monitoreando Kali Linux” [página 156] le brinda consejos para asegurarse de que su
instalación de Kali Linux cumpla con sus requisitos de seguridad. Siguiente capítulo8, “Gestión de paquetes
de Debian” [página 176] explica cómo aprovechar todo el potencial del ecosistema de empaquetado de
Debian. Y en el capitulo9, “Uso avanzado” [página 228], aprenderá a crear una imagen ISO de Kali Linux
totalmente personalizada. Todos esos temas son aún más relevantes cuando implementa Kali Linux a escala
en una empresa como se documenta en el capítulo10, “Kali Linux en la empresa” [página 258].
Quisiera agradecer a Mati Aharoni: en 2012, se puso en contacto conmigo porque yo era uno entre docenas
de consultores de Debian y quería construir un sucesor de BackTrack que estuviera basado en Debian. Así
fue como comencé a trabajar en Kali Linux, y desde entonces he disfrutado mi viaje en el mundo de Kali.
A lo largo de los años, Kali Linux se acercó más a Debian GNU/Linux, especialmente con el cambio a Kali Rolling,
basado en Debian Testing. Ahora, la mayor parte de mi trabajo, ya sea en Kali o en Debian, brinda beneficios a todo
el ecosistema de Debian. Y esto es exactamente lo que me mantiene tan motivado para continuar, día tras día, mes
tras mes, año tras año.
Trabajar en este libro también es una gran oportunidad que me brindó Mati. No es el mismo tipo de
trabajo, pero es igualmente gratificante poder ayudar a la gente y compartir con ellos mi experiencia
en el sistema operativo Debian/Kali. Sobre la base de mi experiencia con elManual del administrador
de Debian, espero que mis explicaciones te ayuden a iniciarte en el vertiginoso mundo de la seguridad
informática.
También me gustaría agradecer a todas las personas de Offensive Security que participaron en el libro:
Jim O'Gorman (coautor de algunos capítulos), Devon Kearns (revisor), Ron Henry (editor técnico), Joe
Steinbach y Tony Cruse ( directores de proyecto). Y gracias a Johnny Long que se unió para escribir el
prefacio pero terminó revisando todo el libro.
Me gustaría agradecer a todos los involucrados en este proyecto por sus contribuciones, de las cuales las
mías fueron solo una pequeña parte. Este libro, al igual que Kali Linux, fue un proyecto colaborativo de
muchas manos que hicieron un trabajo ligero. Un agradecimiento especial a Raphaël, Devon, Mati, Johnny y
Ron por asumir la mayor parte del esfuerzo. Sin ellos, este libro no habría salido adelante.
Han pasado algunos años desde que se lanzó por primera vez Kali Linux y, desde el primer día, siempre he
soñado con publicar un libro oficial que cubra el sistema operativo Kali en su totalidad. Por lo tanto, es un
gran privilegio para mí ver finalmente que un libro así se hace público. Me gustaría agradecer sinceramente
a todos los involucrados en la creación de este proyecto, incluidos Jim, Devon, Johnny,
Introducción XXI
y ron Un agradecimiento muy especial para Raphaël por hacer la mayor parte del trabajo pesado en este
libro y aportar su amplia experiencia a nuestro grupo.
Kali Linux ha cambiado mucho desde que Kali Linux Revealed se lanzó por primera vez en 2017. Desde
desarrolladores adicionales hasta dejar de usar root como el usuario predeterminado, se han logrado muchos
avances a lo largo de los años. Kali Linux Revealed debía recibir una revisión actualizada, y me siento honrado por
la oportunidad de haber contribuido a este proyecto épico durante el proceso de revisión.
distribución de linux
Derivado de Debian
Objetivo
Características
Políticas
Capítulo
Un poco de historia2 Relación con Debian4 Propósito y casos de uso5 Características principales de Kali Linux8
que es un linux Aunque comúnmente se usa como un nombre para todo el sistema operativo, Linux es solo el
¿Distribución? nombre del kernel, una pieza de software que maneja las interacciones entre el hardware y
las aplicaciones del usuario final.
Debian GNU/Linux2es una distribución genérica de Linux líder, conocida por su calidad y estabilidad. Kali
Linux se basa en el trabajo del proyecto Debian y agrega más de 400 paquetes propios de propósito especial,
todos relacionados con la seguridad de la información, particularmente en el campo de las pruebas de
penetración.
Debian es un proyecto de software libre que proporciona múltiples versiones de su sistema operativo
y a menudo usamos el términodistribuciónpara referirse a una versión específica del mismo, por
ejemplo, las distribuciones Debian Stable o Debian Testing. Lo mismo también se aplica a Kali Linux,
con la distribución Kali Rolling, por ejemplo.
El proyecto Kali Linux comenzó tranquilamente en 2012, cuando Offensive Security decidió que querían
reemplazar su venerable proyecto BackTrack Linux, que se mantenía manualmente, con algo que pudiera
convertirse en un auténticoDerivado de Debian3, completo con toda la infraestructura necesaria y técnicas
de envasado mejoradas. Se tomó la decisión de desarrollar Kali sobre la distribución Debian porque es
conocida por su calidad, estabilidad y amplia selección de software disponible. Es por eso que yo (Raphaël)
me involucré en este proyecto, como consultor de Debian.
El primer lanzamiento (versión 1.0) se produjo un año después, en marzo de 2013, y estaba basado en Debian 7
“Wheezy”, la distribución estable de Debian en ese momento. En ese primer año de desarrollo, empaquetamos
cientos de aplicaciones relacionadas con pruebas de penetración y construimos la infraestructura. Aunque la
cantidad de aplicaciones es significativa, la lista de aplicaciones se ha seleccionado meticulosamente, descartando
aplicaciones que ya no funcionaban o que duplicaban funciones que ya estaban disponibles en mejores programas.
Durante los dos años posteriores a la versión 1.0, Kali lanzó muchas actualizaciones incrementales, ampliando la
gama de aplicaciones disponibles y mejorando el soporte de hardware, gracias a las nuevas versiones del kernel.
Con alguna inversión en integración continua, nos aseguramos de que todos los paquetes importantes
1https://www.kali.org/
2https://www.debian.org/
3https://wiki.debian.org/Derivatives/Census
En 2015, cuando salió Debian 8 "Jessie", trabajamos para reorganizar Kali Linux encima. Si bien Kali
Linux 1.x evitó GNOME Shell (confiando en su lugar en GNOME Fallback), en esta versión decidimos
adoptarlo y mejorarlo: agregamos algunas extensiones de GNOME Shell para adquirir funciones
faltantes, sobre todo el menú Aplicaciones. El resultado de ese trabajo se convirtió en Kali Linux 2.0,
publicado en agosto de 2015.
Xfce es Kali Linux Un entorno de escritorio es una colección de aplicaciones gráficas que comparten un conjunto de herramientas gráficas
Escritorio predeterminado común y que están diseñadas para usarse juntas en las estaciones de trabajo de los usuarios. Los entornos de escritorio
Ambiente generalmente no se utilizan en los servidores. Por lo general, proporcionan un lanzador de aplicaciones, un
administrador de archivos, un navegador web, un cliente de correo electrónico, una suite ofimática, etc.
Xfce4es uno de los entornos de escritorio livianos más populares, perfecto para nuestras imágenes
ISO en vivo y está incluido en las imágenes ISO del instalador principal proporcionadas por Kali Linux
(junto conGNOMO5,KDE6). Puede seleccionar un entorno de escritorio de su elección durante la
instalación. De lo contrario, después de la instalación tiene las opciones adicionales de;i37,i3-brechas
8,COMPAÑERO9,Iluminación10,LXDE11.
Paralelamente, aumentamos nuestros esfuerzos para garantizar que Kali Linux siempre tenga la última versión de todas las aplicaciones de
prueba de penetración. Desafortunadamente, ese objetivo estaba un poco en desacuerdo con el uso deDebian estable12
como base para la distribución, porque requería que hiciéramos backport de muchos paquetes. Esto se debe al
hecho de que Debian Stable le da prioridad a la estabilidad del software, lo que a menudo provoca una gran
demora desde el lanzamiento de una actualización hasta el momento en que se integra en la distribución. Dada
nuestra inversión en integración continua, fue un movimiento bastante natural reorganizar Kali Linux sobre
Pruebas de Debian13para que pudiéramos beneficiarnos de la última versión de todos los paquetes de Debian tan
pronto como estuvieran disponibles. Debian Testing tiene un ciclo de actualización mucho más agresivo, que es
más compatible con la filosofía de Kali Linux.
Este es, en esencia, el concepto de Kali Rolling. Si bien la distribución continua ha estado disponible durante
bastante tiempo, Kali 2016.1 fue el primer lanzamiento que adoptó oficialmente la naturaleza continua de esa
distribución: cuando instala la última versión de Kali, su sistema realmente rastrea la distribución de Kali Rolling y
todos los días recibes nuevas actualizaciones. En el pasado, los lanzamientos de Kali eran instantáneas de la
distribución subyacente de Debian con paquetes específicos de Kali inyectados en ella.
4https://www.xfce.org/
5https://www.gnome.org/
6https://kde.org/
7https://i3wm.org/
8https://github.com/Airblader/i3
9https://mate-desktop.org/
10https://www.iluminación.org/
11https://www.lxde.org/
12https://www.debian.org/releases/stable/
13https://www.debian.org/releases/testing/
La distribución de Kali Linux se basa enPruebas de Debian14. Por lo tanto, la mayoría de los paquetes disponibles en Kali
Linux provienen directamente de este repositorio de Debian.
Si bien Kali Linux se basa en gran medida en Debian, también es completamenteindependiente15en el sentido de que
tenemos nuestra propia infraestructura y conservamos la libertad de hacer los cambios que queramos.
En el lado de Debian, los colaboradores trabajan todos los días para actualizar paquetes y subirlos a la
distribución Debian Unstable (Unstable también se conoce comosiddieciséis). A partir de ahí, los paquetes
migran a la distribución Debian Testing una vez que se eliminan los errores más problemáticos. El proceso
de migración también garantiza que no se rompan dependencias en Debian Testing. El objetivo es que
Testing esté siempre en un estado utilizable (¡o incluso liberable!).
Los objetivos de Debian Testing se alinean bastante bien con los de Kali Linux, por lo que lo elegimos como base. Para
agregar los paquetes específicos de Kali en la distribución, seguimos un proceso de dos pasos.
Primero, tomamos Debian Testing e inyectamos a la fuerza nuestros propios paquetes de Kali (ubicados en nuestrokali-dev-
solo repositorio) para construir elkali-devrepositorio. Este repositorio se romperá de vez en cuando: por ejemplo, es posible
que nuestros paquetes específicos de Kali no se puedan instalar hasta que se hayan vuelto a compilar con las bibliotecas
más nuevas. En otras situaciones, es posible que los paquetes que hemos bifurcado también deban actualizarse, ya sea
para volver a ser instalables o para corregir la instalabilidad de otro paquete que depende de una versión más nueva del
paquete bifurcado. En todo caso,kali-devno es para usuarios finales.
rodando kalies la distribución que se espera que los usuarios de Kali Linux sigan y está construida a partir dekali-dev de la
misma manera que Debian Testing se basa en Debian Unstable. Los paquetes migran solo cuando se pueden satisfacer
todas las dependencias en la distribución de destino.
14https://www.debian.org/releases/testing/
15https://www.debian.org/derivatives/
dieciséishttps://www.debian.org/releases/sid/
Como decisión de diseño, tratamos de minimizar la cantidad de paquetes bifurcados tanto como sea posible. Sin
embargo, para implementar algunas de las características únicas de Kali, se deben realizar algunos cambios. Para
limitar el impacto de estos cambios, nos esforzamos por enviarlos en sentido ascendente, ya sea integrando la
función directamente o agregando los enlaces necesarios para que sea sencillo habilitar las funciones deseadas sin
modificar más los paquetes ascendentes.
ElRastreador de paquetes Kali17nos ayuda a realizar un seguimiento de nuestra divergencia con Debian. En
cualquier momento, podemos buscar qué paquete se ha bifurcado y si está sincronizado con Debian o si se
requiere una actualización. Todos nuestros paquetes se mantienen enRepositorios Git18alojando una rama de
Debian y una rama de Kali una al lado de la otra. Gracias a esto, actualizar un paquete bifurcado es un proceso
simple de dos pasos: actualice la rama de Debian y luego incorpórela a la rama de Kali.
Si bien la cantidad de paquetes bifurcados en Kali es relativamente baja, la cantidad de paquetes adicionales
es bastante alta: en enero de 2021 había casi50019. La mayoría de estos paquetes son software libre que
cumple con losPautas de software libre de Debian20y nuestro objetivo final sería mantener esos paquetes
dentro de Debian siempre que sea posible. Por eso nos esforzamos por cumplir con lasPolítica de Debian21y
seguir las buenas prácticas de empaquetado utilizadas en Debian. Desafortunadamente, también hay
algunas excepciones en las que fue casi imposible crear un embalaje adecuado. Como resultado de la
escasez de tiempo, se han enviado pocos paquetes a Debian.
Si bien el enfoque de Kali se puede resumir rápidamente como "pruebas de penetración y auditoría de seguridad", hay
muchas tareas diferentes involucradas detrás de esas actividades. Kali Linux está construido como unplataforma, porque
incluye muchas herramientas que cubren casos de uso muy diferentes (aunque ciertamente pueden usarse en
combinación durante una prueba de penetración).
Por ejemplo, Kali Linux se puede usar en varios tipos de computadoras: obviamente en las computadoras portátiles de los
evaluadores de penetración, pero también en los servidores de los administradores de sistemas que desean monitorear su
red, en las estaciones de trabajo de los analistas forenses y, más inesperadamente, en dispositivos integrados sigilosos. ,
generalmente con CPU ARM, que se pueden colocar en el rango de una red inalámbrica o conectar a la computadora de los
usuarios objetivo. Muchos dispositivos ARM también son máquinas de ataque perfectas debido a sus pequeños factores de
forma y bajos requisitos de energía. Kali Linux también se puede implementar en la nube para construir rápidamente una
granja de máquinas para descifrar contraseñas y en teléfonos móviles y tabletas para permitir pruebas de penetración
verdaderamente portátiles.
17https://pkg.kali.org/derivative/kali-dev/
18https://gitlab.com/kalilinux/paquetes
19https://pkg.kali.org/derivative/kali-roll/
20https://www.debian.org/social_contract
21https://www.debian.org/doc/debian-policy/
de evaluadores de penetración, configurar un servidor web para usar en campañas de phishing, ejecutar herramientas de escaneo de
Una vez que haya iniciado Kali, descubrirá rápidamente que el menú principal de Kali Linux está organizado por
tema en los diversos tipos de tareas y actividades que son relevantes para los pen-testers y otros profesionales de
la seguridad de la información, como se muestra en la Figura1.1, “Menú de aplicaciones de Kali Linux” [página 6].
• Recopilación de información: Recopilación de datos sobre la red de destino y su estructura, identificando las
computadoras, sus sistemas operativos y los servicios que ejecutan. Identificar partes potencialmente
sensibles del sistema de información. Extraer todo tipo de listados de los servicios de directorio en
ejecución.
• Análisis de vulnerabilidades: prueba rápida si un sistema local o remoto se ve afectado por una serie de
vulnerabilidades conocidas o configuraciones inseguras. Los escáneres de vulnerabilidades utilizan bases
de datos que contienen miles de firmas para identificar posibles vulnerabilidades.
vector común para los atacantes. Las herramientas que prueban los vectores de ataque que van desde la inyección de SQL hasta la
• Ataques de contraseña: los sistemas de autenticación siempre son un vector de ataque. Aquí se pueden encontrar
muchas herramientas útiles, desde herramientas de ataque de contraseña en línea hasta ataques fuera de línea
contra los sistemas de cifrado o hash.
• Ataques inalámbricos: la naturaleza omnipresente de las redes inalámbricas significa que siempre serán un
vector comúnmente atacado. Con su amplia gama de soporte para múltiples tarjetas inalámbricas, Kali es
una opción obvia para ataques contra múltiples tipos de redes inalámbricas.
• Ingeniería Inversa: La ingeniería inversa es una actividad con muchos propósitos. En apoyo de
actividades ofensivas, es uno de los principales métodos para la identificación de vulnerabilidades y el
desarrollo de exploits. En el aspecto defensivo, se utiliza para analizar el malware empleado en
ataques dirigidos. En esta capacidad, el objetivo es identificar las capacidades de una determinada
pieza de oficio.
• Rastreo y suplantación de identidad: Obtener acceso a los datos mientras viajan por la red suele ser una ventaja para
un atacante. Aquí puede encontrar herramientas de suplantación de identidad que le permiten hacerse pasar por
un usuario legítimo, así como herramientas de rastreo que le permiten capturar y analizar datos de inmediato.
Cuando se usan juntas, estas herramientas pueden ser muy poderosas.
• Explotación posterior: una vez que haya obtenido acceso a un sistema, a menudo querrá mantener ese nivel
de acceso o ampliar el control moviéndose lateralmente a través de la red. Las herramientas que ayudan en
estos objetivos se encuentran aquí.
• Análisis forense: los entornos de arranque en vivo forenses de Linux han sido muy populares desde hace años. Kali contiene
una gran cantidad de herramientas forenses populares basadas en Linux que le permiten hacer de todo, desde la
clasificación inicial hasta la generación de imágenes de datos, el análisis completo y la gestión de casos.
• Herramientas de informes: una prueba de penetración solo se completa una vez que se han informado los hallazgos.
Esta categoría contiene herramientas para ayudar a recopilar los datos recopilados de las herramientas de
recopilación de información, descubrir relaciones no obvias y reunir todo en varios informes.
• Herramientas de ingeniería social: cuando la parte técnica está bien protegida, a menudo existe la posibilidad
de explotar el comportamiento humano como vector de ataque. Si se cuenta con la influencia adecuada, con
frecuencia se puede inducir a las personas a realizar acciones que comprometan la seguridad del medio
ambiente. ¿La llave USB que acaba de conectar la secretaria contenía un PDF inofensivo? ¿O también fue un
caballo de Troya que instaló una puerta trasera? ¿El contador acaba de iniciar sesión en el sitio web bancario
o se usó una copia perfecta con fines de phishing? Esta categoría contiene herramientas que ayudan en este
tipo de ataques.
Kali Linux es una distribución de Linux que contiene su propia colección de cientos de herramientas de software diseñadas
específicamente para sus usuarios objetivo: probadores de penetración y otros profesionales de la seguridad. También
viene con un programa de instalación para configurar completamente Kali Linux como el sistema operativo principal en
cualquier computadora.
Esto es muy parecido a todas las demás distribuciones de Linux existentes, pero hay otras características que diferencian a
Kali Linux, muchas de las cuales se adaptan a las necesidades específicas de los evaluadores de penetración. Echemos un
vistazo a algunas de esas características.
Junto con las imágenes ISO del instalador principal, Kali Linux ofrece una imagen ISO en vivo separada para descargar. Esto
le permite usar Kali Linux como un sistema en vivo de arranque. En otras palabras, puede usar Kali Linux sin instalarlo,
simplemente iniciando la imagen ISO (generalmente después de haber copiado la imagen en una llave USB).
El sistema en vivo contiene las herramientas más utilizadas por los evaluadores de penetración, por lo que incluso si
su sistema diario no es Kali Linux, simplemente puede insertar el disco o la llave USB y reiniciar para ejecutar Kali.
Sin embargo, tenga en cuenta que la configuración predeterminada no conservará los cambios entre reinicios. Si
configuras la persistencia con una llave USB (ver apartado9.4, “Agregar persistencia a Live ISO con una llave USB
” [página 246]), luego puede modificar el sistema a su gusto (modificar archivos de configuración, guardar informes,
actualizar software e instalar paquetes adicionales, por ejemplo), y los cambios se conservarán al reiniciar.
En general, al realizar un trabajo forense en un sistema, desea evitar cualquier actividad que altere los datos del
sistema analizado de alguna manera. Desafortunadamente, los entornos de escritorio modernos tienden a
interferir con este objetivo al intentar montar automáticamente cualquier disco que detecten. Para evitar este
comportamiento, Kali Linux tiene un modo forense que se puede habilitar desde el menú de inicio: deshabilitará
todas esas funciones.
El sistema en vivo es particularmente útil para propósitos forenses, porque es posible reiniciar cualquier
computadora en un sistema Kali Linux sin acceder o modificar sus discos duros.
Kali Linux siempre proporciona un reciente personalizadonúcleo de linux22, basado en la versión de Debian Unstable. Esto
asegura un sólido soporte de hardware, especialmente para una amplia gama de dispositivos inalámbricos. el núcleo es
parcheado23para soporte de inyección inalámbrica ya que muchas herramientas de evaluación de seguridad inalámbrica
dependen de esta función.
Dado que muchos dispositivos de hardware requieren archivos de firmware actualizados (que se encuentran en/biblioteca/firmware/),
Kali los instala todos de forma predeterminada, incluido el firmware disponible en Debian'sno libresección. Esos no están instalados
por defecto en Debian, porque son de código cerrado y, por lo tanto, no forman parte de Debian propiamente dicho.
Kali Linux está construido por probadores de penetración para probadores de penetración, pero entendemos que no todos
estarán de acuerdo con nuestras decisiones de diseño o la elección de herramientas para incluir de forma predeterminada.
Con esto en mente, siempre nos aseguramos de que Kali Linux sea fácil de personalizar según sus propias necesidades y
preferencias. Con este fin, publicamos elconstrucción en vivo24configuración utilizada para construir las imágenes oficiales
de Kali para que puedas personalizarlo a tu gusto. Es muy fácil comenzar con esta configuración publicada e implementar
varios cambios según sus necesidades gracias a la versatilidad de Live-Build.
Live-build incluye muchas funciones para modificar el sistema instalado, instalar archivos complementarios, instalar
paquetes adicionales, ejecutar comandos arbitrarios y cambiar los valores predeterminados en debconf.
Los usuarios de una distribución de seguridad legítimamente quieren saber que se puede confiar en ella y que se ha
desarrollado a simple vista, lo que permite que cualquier persona inspeccione el código fuente. Kali Linux es desarrollado
por un pequeño equipo25de desarrolladores expertos que trabajan de manera transparente y siguen las mejores prácticas
de seguridad: cargan paquetes fuente firmados, que luego se crean en demonios de compilación dedicados. Luego, los
paquetes se suman y distribuyen como parte de un repositorio firmado.
El trabajo realizado en los paquetes se puede revisar completamente a través de laempaquetado de repositorios Git26
(que contienen etiquetas firmadas) que se utilizan para construir los paquetes fuente de Kali. La evolución de cada paquete
también se puede seguir a través de laRastreador de paquetes Kali27.
22https://pkg.kali.org/pkg/linux
23https://gitlab.com/kalilinux/packages/linux/-/blob/kali/master/debian/patches/series
24https://gitlab.com/kalilinux/build-scripts/live-build-config
25https://www.kali.org/about-us/
26https://gitlab.com/kalilinux/paquetes
27https://pkg.kali.org/
Kali Linux proporciona paquetes binarios para las arquitecturas armel, armhf y arm64 ARM. Gracias a las imágenes
fácilmente instalables proporcionadas por Offensive Security, Kali Linux se puede implementar en muchos
dispositivos interesantes, desde teléfonos inteligentes y tabletas hasta enrutadores Wi-Fi y computadoras de varias
formas y tamaños.
Si bien Kali Linux se esfuerza por seguir la política de Debian siempre que sea posible, hay algunas áreas en las que tomamos
decisiones de diseño significativamente diferentes debido a las necesidades particulares de los profesionales de la seguridad.
A diferencia de Debian, Kali Linux deshabilita cualquier servicio instalado que escucharía en una interfaz de red
pública de forma predeterminada, como HTTP y SSH.
El fundamento de esta decisión es minimizar la exposición durante una prueba de penetración cuando
es perjudicial anunciar su presencia y detectar riesgos debido a interacciones de red inesperadas.
Todavía puede habilitar manualmente cualquier servicio de su elección ejecutandoHabilitar sudo systemctl servicio.
Volveremos sobre esto en el capítulo5, “Configuración de Kali Linux” [página 108] más adelante en este libro.
Debian pretende ser el sistema operativo universal y pone muy pocos límites a lo que se empaqueta,
siempre que cada paquete tenga un mantenedor.
Por el contrario, Kali Linux no incluye todas las herramientas de prueba de penetración disponibles. En cambio, nuestro objetivo es
proporcionar solo las mejores herramientas con licencia libre que cubran la mayoría de las tareas que un probador de penetración
podría querer realizar.
Los desarrolladores de Kali que trabajan como probadores de penetración impulsan el proceso de selección y
aprovechamos su experiencia y conocimientos para tomar decisiones informadas. En algunos casos, esto es un
hecho, pero hay otras opciones más difíciles que simplemente se reducen a preferencias personales.
Estos son algunos de los puntos considerados cuando se evalúa una nueva aplicación:
Mantener un repositorio de herramientas de prueba de penetración actualizado y útil es una tarea desafiante. Damos la bienvenida
a sugerencias de herramientas dentro de una categoría dedicada (Nuevas solicitudes de herramientas) en elRastreador de errores
de Kali28. Las solicitudes de nuevas herramientas se reciben mejor cuando el envío está bien presentado, incluida una explicación de
por qué la herramienta es útil, cómo se compara con otras aplicaciones similares, etc.
1.6. Resumen
En este capítulo, le presentamos Kali Linux, proporcionamos un poco de historia, repasamos algunas de las
funciones principales y presentamos varios casos de uso. También hemos discutido algunas de las políticas
que hemos adoptado al desarrollar Kali Linux.
Resumen de consejos:
• kali linux29es una distribución de Linux de auditoría de seguridad lista para empresas basada en Debian
GNU/Linux. Kali está dirigido a profesionales de la seguridad y administradores de TI, lo que les permite
realizar pruebas de penetración avanzadas, análisis forenses y auditorías de seguridad.
• A diferencia de la mayoría de los sistemas operativos convencionales, Kali Linux es una distribución continua, lo que significa
queRecibirás actualizaciones todos los días..
• La distribución de Kali Linux se basa enPruebas de Debian30. Por lo tanto, la mayoría de los paquetes
disponibles en Kali Linux provienen directamente de este repositorio de Debian.
• Si bien el enfoque de Kali se puede resumir rápidamente con "pruebas de penetración y auditoría de
seguridad", existen varios casos de uso que incluyen administradores de sistemas que desean monitorear
sus redes, análisis forense, instalaciones de dispositivos integrados, monitoreo inalámbrico, instalación en
plataformas móviles y más.
• Los menús de Kali facilitan el acceso a las herramientas para diversas tareas y actividades, que incluyen: análisis de vulnerabilidades,
análisis de aplicaciones web, evaluación de bases de datos, ataques de contraseña, ataques inalámbricos, ingeniería inversa,
herramientas de explotación, rastreo y suplantación de identidad, herramientas de explotación posterior, análisis forense,
• Kali Linux tiene muchas características avanzadas que incluyen: uso como un sistema vivo (no instalado), un modo
forense sólido y seguro, un kernel de Linux personalizado, la capacidad de personalizar completamente el sistema,
un sistema operativo base confiable y seguro, capacidad de instalación ARM , políticas de red predeterminadas
seguras y un conjunto seleccionado de aplicaciones.
En el próximo capítulo (capítulo2, “Primeros pasos con Kali Linux” [página 14]), entraremos y
probaremos Kali Linux gracias a su modo en vivo.
28https://bugs.kali.org/
29https://www.kali.org
30https://www.debian.org/releases/testing/
Descargar
imagen ISO
Arranque en vivo
Capítulo
Empezar con 2
kali linux
Contenido
Descargar una imagen ISO de Kali14 Inicio de una imagen ISO de Kali en modo en vivo24 Resumen44
A diferencia de otros sistemas operativos, Kali Linux facilita el inicio, gracias al hecho de que unimagen de disco en
vivoestá disponible, lo que significa que puede iniciar la imagen descargada sin seguir ningún procedimiento de
instalación previo. Esto significa que puede usar la misma imagen para realizar pruebas, como una imagen de
DVD-ROM o USB de arranque en un caso forense, o para instalarla como un sistema operativo permanente en
hardware físico o virtual.
Debido a esta simplicidad, es fácil olvidar que se deben tomar ciertas precauciones. Los usuarios de Kali suelen ser
el objetivo de personas con malas intenciones, ya sean grupos patrocinados por el estado, elementos del crimen
organizado o piratas informáticos individuales. La naturaleza de código abierto de Kali Linux hace que sea
relativamente fácil crear y distribuir versiones falsas, por lo que es esencial que adquiera el hábito de descargar
desde fuentes originales y verificar la integridad y la autenticidad de su descarga. Esto es especialmente relevante
para los profesionales de seguridad que a menudo tienen acceso a redes confidenciales y se les confían datos de
clientes.
La única fuente oficial de imágenes ISO de Kali Linux es la sección de Descargas del sitio web de Kali. Debido
a su popularidad, numerosos sitios ofrecen imágenes de Kali para descargar, pero no deben considerarse
confiables y, de hecho, pueden estar infectadas con malware o causar daños irreparables a su sistema.
mihttps://www.kali.org/descargas/
El sitio web está disponible enHTTPS, lo que dificulta la suplantación. Ser capaz de llevar a cabo un ataque
man-in-the-middle no es suficiente ya que el atacante también necesitaría unwww.kali.orgcertificado firmado
por una autoridad de certificación de seguridad de la capa de transporte (TLS) en la que confía el navegador
de la víctima. Debido a que las autoridades de certificación existen precisamente para prevenir este tipo de
problemas, entregan certificados solo a personas cuyas identidades han sido verificadas y que han
demostrado que controlan el sitio web correspondiente.
cdimage.kali.org Los enlaces que se encuentran en la página de descarga apuntan a lacdimage.kali.orgdominio, que
redirige a un espejo cercano a usted, mejorando su velocidad de transferencia y reduciendo la carga
en los servidores centrales de Kali.
mihttps://cdimage.kali.org/README.mirrorlist
La página de descarga oficial muestra una breve lista de imágenes ISO, como se muestra en la Figura2.1, “Lista de imágenes
ofrecidas para descargar” [página 15].
de las computadoras portátiles y de escritorio modernas. Si está descargando para usar en una máquina bastante moderna, lo más probable
es que contenga un procesador de 64 bits. Si no está seguro, puede estar seguro de que todos los procesadores de 64 bits pueden ejecutar
instrucciones de 32 bits. Siempre puede descargar y ejecutar la imagen de 32 bits. Sin embargo, lo contrario no es cierto. Consulte la barra
Si planea instalar Kali en un dispositivo basado en ARM, debe consultarSeguridad Ofensiva página de
descarga1para la lista de dispositivos disponibles.
¿Mi CPU es de 64 bits o En Microsoft Windows, puede encontrar esta información ejecutando elInformación del sistema
32 bits? aplicación (que se encuentra en la carpeta Accesorios > Herramientas del sistema). En la pantalla
Resumen del sistema, puede inspeccionar el campo Tipo de sistema: contendrá "PC basada en x64"
para una CPU de 64 bits o "PC basada en x86" para una CPU de 32 bits.
En OS X/macOS, no existe una aplicación estándar que muestre esta información, pero aún
puede deducirla a partir de la salida deluname -mejecución del comando en la terminal.
regresaráx86_64en un sistema con un kernel de 64 bits (que solo puede ejecutarse en una CPU
de 64 bits), sistemas con un kernel de 32 bits, devolverái386o algo similar (i486,
i586, oi686), y en sistemas con un kernel arm64, devolverábrazo64. Cualquier kernel de 32 bits
puede ejecutarse en una CPU de 64 bits, pero dado que Apple controla el hardware y el
software, es poco probable que encuentre esta configuración.
Ahora que ya sabe si necesita una imagen de 64 bits o de 32 bits, solo queda un paso: seleccionar el tipo de
imagen. Las imágenes disponibles difieren en cómo se instalan. ElInstalador yinstalador de redLas
imágenes, especializadas para una instalación sencilla con opciones de instalación seleccionables, no vienen
con la capacidad de ejecutar el sistema en vivo. ElVivirimage, sin embargo, viene con la capacidad de
ejecutar el sistema en vivo o iniciar el proceso de instalación, aunque carece de las opciones seleccionables
que aparecen en las imágenes de instalación. Las opciones seleccionables incluyen opciones en entornos de
escritorio, así como qué colección de paquetes instalar. Usaremos la imagen en vivo a lo largo de este libro.
Una vez que haya decidido la imagen que necesita, puede descargar la imagen haciendo clic en el
título en la fila respectiva. Alternativamente, puede descargar la imagen de la red punto a punto de
BitTorrent haciendo clic en "Torrent", siempre que tenga un cliente de BitTorrent asociado con el
archivo .torrenteextensión.
Mientras se descarga la imagen ISO elegida, debe tomar nota de la suma de comprobación escrita en la columna
sha256sum. Una vez que haya descargado su imagen, use esta suma de verificación para verificar que
1https://www.offensive-security.com/kali-linux-arm-images/
Los profesionales de la seguridad deben verificar la integridad de sus herramientas para proteger no solo sus datos
y redes, sino también los de sus clientes. Si bien la página de descarga y los enlaces de Kali están protegidos por
TLS, Kali se basa en una red de espejos externos para distribuir la imagen, lo que significa que no debe confiar
ciegamente en lo que descarga. El espejo al que fue dirigido puede haber sido comprometido, o usted mismo
podría ser víctima de un ataque.
Para aliviar esto, el proyecto Kali siempre proporciona sumas de verificación de las imágenes que distribuye. Pero para que
dicha verificación sea efectiva, debe asegurarse de que la suma de verificación que tomó sea efectivamente la suma de
verificación publicada por los desarrolladores de Kali Linux. Tienes diferentes formas de comprobar esto.
Cuando recupera la suma de verificación de la página web de descarga protegida por TLS, su origen está
garantizado indirectamente por el modelo de seguridad del certificado X.509: el contenido que ve proviene de un
sitio web que está efectivamente bajo el control de la persona que solicitó el certificado TLS. .
Ahora debe generar la suma de verificación de su imagen descargada y asegurarse de que coincida
con lo que registró en el sitio web de Kali:
Si su suma de verificación generada coincide con la de la página de descarga de Kali Linux, tiene el archivo correcto.
Si las sumas de verificación difieren, hay un problema, aunque esto no siempre indica un compromiso o un ataque;
las descargas ocasionalmente se corrompen a medida que atraviesan Internet. Intente su descarga nuevamente,
desde otro espejo oficial de Kali, si es posible (ver “cdimage.kali.org” [página 14] para obtener más información
sobre los espejos disponibles).
Si no confía en HTTPS para la autenticación, es un poco paranoico, pero con razón. Hay muchos ejemplos de
autoridades de certificación mal administradas que emitieron certificados falsos, que terminaron siendo mal
utilizados. También puede ser víctima de un ataque de intermediario "amigable" implementado en muchas redes
corporativas, utilizando un almacén de confianza personalizado e implantado en el navegador que presenta
certificados falsos a sitios web cifrados, lo que permite a los auditores corporativos monitorear el tráfico cifrado.
Esta clave es parte de un globalred de confianzaporque ha sido firmado al menos por mí (Raphaël Hertzog) y soy
parte de la red de confianza debido a mi uso intensivo de GnuPG como desarrollador de Debian.
El modelo de seguridad PGP/GPG es muy singular. Cualquiera puede generar cualquier clave con
cualquier identidad, pero solo confiaría en esa clave si ha sido firmada por otra clave en la que ya
confía. Cuando firma una clave, certifica que conoció al titular de la clave y que sabe que la identidad
asociada es correcta. Y define el conjunto inicial de claves en las que confía, que obviamente incluye su
propia clave.
Este modelo tiene sus propias limitaciones, por lo que puede optar por descargar la clave pública de Kali a través de
HTTPS (o desde un servidor de claves) y simplemente decidir que confía en él porque su huella digital coincide con
lo que anunciamos en varios lugares, incluso arriba en este libro:
44C6 513A 8E4F B3D3 0875 F758 ED44 4FF0 7D8D 0BF6
[...]
Una vez que haya recuperado la clave, puede usarla para verificar las sumas de verificación de las imágenes
distribuidas. Descarguemos el archivo con las sumas de verificación (SHA256SUMAS) y el archivo de firma
asociado (SHA256SUMS.gpg) y verificar la firma:
Si recibe ese mensaje de "Buena firma", puede confiar en el contenido delSHA256SUMASy utilícelo
para verificar los archivos que descargó. De lo contrario, hay un problema. Debe revisar si
descargó los archivos de un espejo legítimo de Kali Linux.
A menos que desee ejecutar Kali Linux en una máquina virtual, la imagen ISO tiene un uso limitado en sí misma.
Debe grabarlo en un DVD-ROM o copiarlo en una llave USB para poder iniciar su máquina en Kali Linux. Hemos
elegido la imagen en vivo de Kali porque deseamos arrancar desde un USB, lo que nos permite usar un entorno en
vivo o instalar la configuración predeterminada de Kali Linux.
No cubriremos cómo grabar la imagen ISO en un DVD-ROM, ya que el proceso varía mucho según la plataforma y el
entorno, pero en la mayoría de los casos, al hacer clic derecho en el.Yo asiEl archivo presentará un elemento de menú
contextual que ejecuta una aplicación de grabación de DVD-ROM. ¡Pruébalo!
Advertencia
En esta sección, aprenderá cómo sobrescribir un disco arbitrario con una imagen ISO de Kali
Linux. Siempre verifique dos veces el disco de destino antes de iniciar la operación, ya que un
solo error probablemente causaría la pérdida completa de datos y posiblemente dañaría su
configuración sin posibilidad de reparación.
mihttps://sourceforge.net/projects/win32diskimager/
Conecte su llave USB a su PC con Microsoft Windows y anote el designador de unidad asociado (por
ejemplo, "E:\").
LanzamientoGenerador de imágenes de disco Win32y elija el archivo ISO de Kali Linux que desea copiar en la llave
USB. Verifique que la letra del dispositivo seleccionado se corresponda con la asignada a la llave USB. Una vez que
esté seguro de haber seleccionado la unidad correcta, haga clic en el botón Escribir y confirme que
Una vez completada la copia, expulse de forma segura la unidad USB de su sistema Microsoft Windows. Ahora
puede usar el dispositivo USB para iniciar Kali Linux.
Crear una llave USB Kali Linux de arranque en un entorno Linux es fácil. El entorno de escritorio GNOME, que se
instala de forma predeterminada en muchas distribuciones de Linux, viene con unDiscosutilidad (en elgnome-disco-
utilidadpaquete). Ese programa muestra una lista de discos, que se actualiza dinámicamente cuando conecta o
desconecta un disco. Cuando seleccione su llave USB en la lista de discos, aparecerá información detallada que le
ayudará a confirmar que seleccionó el disco correcto. Tenga en cuenta que puede encontrar el nombre de su
dispositivo en la barra de título, como se muestra en la Figura2.3, “Discos GNOME” [página 21].
Haga clic en el botón de menú y seleccione Restaurar imagen de disco... en el menú emergente que aparece. Seleccione la imagen
ISO que descargó anteriormente y haga clic en Comenzar a restaurar... como se muestra en la Figura2.4, “Cuadro de diálogo
Restaurar imagen de disco” [página 21].
Cree la unidad USB de Aunque el proceso gráfico es bastante sencillo, la operación es igual de sencilla para los
arranque desde el comando usuarios de la línea de comandos.
Línea
Cuando inserte su llave USB, el kernel de Linux la detectará y le asignará un nombre, que se imprime
en los registros del kernel. Puede encontrar su nombre inspeccionando los registros devueltos por
dmesg.
psdmesg
[...]
[ 2596.727036] usb 1-2.1: nuevo dispositivo USB de alta velocidad número 7 usando uhci_hcd
[ 2597.023023] usb 1-2.1: Nuevo dispositivo USB encontrado, idVendor=0781, idProduct=5575,
abcdDispositivo= 1.26
[ 2597.023025] usb 1-2.1: Nuevas cadenas de dispositivo USB: Mfr=1, Product=2,
aNúmero de serie = 3
[ 2597.023026] usb 1-2.1: Producto: Cruzer Glide [ 2597.023026]
usb 1-2.1: Fabricante: SanDisk
[2597.023026] usb 1-2.1: Número de serie: 200533495211C0824E58
[ 2597.025989] almacenamiento usb 1-2.1:1.0: Dispositivo de almacenamiento masivo USB
detectado [ 2597.026064] scsi host3: almacenamiento usb 1-2.1:1.0
[ 2598.055632] scsi 3:0:0:0: acceso directo SanDisk Cruzer Glide 1.26
aPQ: 0 ANSI: 5
[ 2598.058596] sd 3:0:0:0: adjunto scsi genérico sg2 tipo 0
[ 2598.063036] sd 3:0:0:0: [sdb] 31266816 Bloques lógicos de 512 bytes: (16,0 GB
a/14,9 GiB)
[ 2598.067356] sd 3:0:0:0: [sdb] Write Protect está desactivado [ 2598.067361]
sd 3:0:0:0: [sdb] Mode Sense: 43 00 00 00
[ 2598.074276] sd 3:0:0:0: [sdb] Caché de escritura: deshabilitado, caché de lectura: habilitado,
ano es compatible con DPO o FUA
[ 2598.095976] sdb: sdb1
[ 2598.108225] sd 3:0:0:0: [sdb] Disco extraíble SCSI adjunto
Ahora que sabe que la llave USB está disponible como/desarrollo/sdb, puede proceder a
copiar la imagen con eldddominio:
Para referencia,sisignifica "archivo de entrada" ydepara "archivo de salida". ElddEl comando lee los
datos del archivo de entrada y los vuelve a escribir en el archivo de salida. No muestra ninguna
información de progreso, por lo que debe tener paciencia mientras realiza su trabajo (¡no es inusual
que el comando tarde más de media hora!). Mire el LED de actividad de escritura en la llave USB si
desea verificar que el comando funciona. Las estadísticas que se muestran arriba se muestran solo
cuando el comando se ha completado. En OS X/macOS, también puede presionar CTRL+T durante la
operación para obtener información estadística sobre la copia, incluida la cantidad de datos que se
han copiado.
OS X/macOS se basa en UNIX, por lo que el proceso de creación de una unidad USB Kali Linux de arranque es
similar al procedimiento de Linux. Una vez que haya descargado y verificado el archivo Kali ISO elegido, usedd
para copiarlo en su memoria USB.
Para identificar el nombre del dispositivo de la llave USB, ejecutelista de utilidades de discopara listar los discos
disponibles en su sistema. A continuación, inserte su llave USB y ejecute ellista de utilidades de discocomando de nuevo.
La segunda salida debe mostrar un disco adicional. Puede determinar el nombre del dispositivo de la llave USB
comparando la salida de ambos comandos. Busque una nueva línea que identifique su disco USB y observe el/dev/
discoXdóndeXrepresenta el ID del disco.
Debe asegurarse de que la llave USB no esté montada, lo que se puede lograr con un comando de
desmontaje explícito (suponiendo que/dev/disco6es el nombre del dispositivo de la llave USB):
psdiskutil desmontar /dev/disk6
Ahora proceda a ejecutar eldddominio. Esta vez, agregue un parámetro complementario:bspara el tamaño del
bloque. Define el tamaño del bloque que se lee del archivo de entrada y luego se escribe en el archivo de salida.
También utilizaremos la ruta del disco sin procesar (representada por elrantesdisco) que permitirá velocidades de
escritura más rápidas.
Eso es todo. Su llave USB ahora está lista y puede arrancar desde ella o usarla para instalar Kali Linux.
Arrancar un disco alternativo Para iniciar desde una unidad alternativa en un sistema OS X/macOS, abra el menú de inicio presionando y
en OS X/macOS manteniendo presionada la tecla Opción inmediatamente después de encender el dispositivo y
seleccionando la unidad que desea usar.
Como requisito previo, necesita una llave USB preparada (como se detalla en la sección anterior) o un DVD-
ROM grabado con una imagen ISO de Kali Linux.
El BIOS/UEFI es responsable del proceso de inicio temprano y se puede configurar a través de un software llamado
Configuración. En particular, permite a los usuarios elegir qué dispositivo de arranque prefieren. En este caso,
desea seleccionar la unidad de DVD-ROM o la unidad USB, según el dispositivo que haya creado. Dependiendo de
su BIOS/UEFI, es posible que tenga una opción de menú de inicio de una sola vez, lo que le permite cambiar
temporalmente el orden de inicio.
Iniciar la configuración generalmente implica presionar una tecla en particular poco después de encender la
computadora. Esta clave es a menudoBorraroEscapar,y avecesF2, F8, F10oF12.La mayoría de las veces, la opción
aparece brevemente en la pantalla cuando se enciende la computadora, antes de que se cargue el sistema
operativo.
Una vez que el BIOS/UEFI se haya configurado correctamente para arrancar desde su dispositivo, arrancar Kali
Linux es simplemente una cuestión de insertar el DVD-ROM o conectar la unidad USB y encender la computadora.
Deshabilitar arranque seguro Si bien las imágenes de Kali Linux se pueden iniciar en modo UEFI, no son compatiblesarranque
seguro. Debe deshabilitar esa función en la configuración de su máquina.
Las máquinas virtuales tienen múltiples beneficios para los usuarios de Kali Linux. Son especialmente útiles si
desea probar Kali Linux pero no está listo para comprometerse a instalarlo permanentemente en su máquina o si
tiene un sistema potente y desea ejecutar varios sistemas operativos simultáneamente. Esta es una opción popular
para muchos probadores de penetración y profesionales de la seguridad que necesitan usar la amplia gama de
herramientas disponibles en Kali Linux pero aún desean tener acceso completo a su sistema operativo principal.
Esto también les brinda la capacidad de archivar o eliminar de forma segura la máquina virtual y cualquier dato de
cliente que pueda contener en lugar de reinstalar todo el sistema operativo.
Las funciones de instantáneas del software de virtualización también facilitan la experimentación con operaciones
potencialmente peligrosas, como el análisis de malware, al tiempo que permiten una salida fácil al restaurar una
instantánea anterior.
Hay muchas herramientas de virtualización disponibles para todos los principales sistemas operativos, incluidos
VirtualBox®, Estación de trabajo VMware®,Xen,KVM, yHiper-Vpara nombrar unos pocos. En última instancia, utilizará el
que mejor se adapte a usted, pero cubriremos los dos más utilizados en un contexto de escritorio:VirtualBox®y
2https://support.apple.com/en-gb/guide/mac-help/mchlp1034/mac
Para las próximas secciones, asumiremos que ya instaló la herramienta de virtualización adecuada y está
familiarizado con su funcionamiento.
Observaciones preliminares
Para beneficiarse plenamente de la virtualización, debe tener una CPU con las funciones de virtualización
adecuadas y BIOS/UEFI no deben deshabilitarlas. Vuelva a verificar las opciones de "Tecnología de
virtualización Intel®" y/o "Característica Intel® VT-d" en las pantallas de configuración de la máquina.
También debe tener un sistema operativo host de 64 bits, comoamd64arquitectura para distribuciones Linux
basadas en Debian,x86_64arquitectura para distribuciones de Linux basadas en RedHat, y64 bitspara
Microsoft Windows.
Si no cumple alguno de los requisitos previos, la herramienta de virtualización no funcionará correctamente o estará
restringida para ejecutar solo sistemas operativos invitados de 32 bits.
Dado que las herramientas de virtualización se conectan al sistema operativo host y al hardware a un nivel bajo, a menudo existen
incompatibilidades entre ellas. No espere que estas herramientas funcionen bien al mismo tiempo. Además, los usuarios de
Microsoft Windows deben tener en cuenta que las ediciones profesionales o superiores vienen conHiper-V instalado y activado, lo
que podría interferir con la herramienta de virtualización de su elección. Para desactivarlo, ejecute "Activar o desactivar las
características de Windows" desde la Configuración de Windows.
caja virtual
Después de la instalación inicial, la pantalla principal de VirtualBox se parece a la Figura2.6, “Pantalla de inicio
de Virtual-Box” [página 26].
Haga clic en Nuevo (Figura2.7, “Nombre y Sistema Operativo” [página 27]) para iniciar un asistente que lo guiará a
través de los múltiples pasos necesarios para ingresar todos los parámetros de la nueva máquina virtual.
En el primer paso, que se muestra en la figura2.7, “Nombre y Sistema Operativo” [página 27], debe asignar
un nombre a su nueva máquina virtual. Usaremos “Kali Linux”. También debe indicar qué tipo de sistema
operativo se utilizará. Dado que Kali Linux se basa en Debian GNU/Linux, seleccione "Linux" para el tipo y
"Debian (32 bits)" o "Debian (64 bits)" para la versión. Aunque lo más probable es que funcione cualquier otra
versión de Linux, esto ayudará a distinguir entre las diversas máquinas virtuales que podría tener instaladas.
En el segundo paso, debe decidir cuánta memoria asignar a la máquina virtual. Si bien el tamaño recomendado de
1024 MB es aceptable para una máquina virtual Debian que actúa como servidor, definitivamente no es suficiente
para ejecutar un sistema de escritorio Kali, especialmente para un sistema Kali Linux en vivo, ya que el sistema en
vivo usa memoria para almacenar los cambios realizados. al sistema de archivos. Recomendamos aumentar el valor
a 1500 MB (Figura2.8, “Tamaño de la memoria” [página 28]) y le recomendamos que asigne no menos de 2048 MB
de RAM. Para obtener más información, consulte la sección4.1, “Requisitos mínimos de instalación” [página 66]
En el tercer paso (que se muestra en la Figura2.9, “Disco duro” [página 29]), se le pedirá que elija un disco duro
físico o virtual para su nueva máquina virtual. Aunque no se requiere un disco duro para ejecutar Kali Linux como
un sistema en vivo, agregue uno para cuando demostremos el procedimiento de instalación más adelante, en el
capítulo4, “Instalando KaliLinux” [página 66].
El contenido del disco duro de la máquina virtual se almacena en la máquina host como un archivo. VirtualBox
puede almacenar el contenido del disco duro utilizando múltiples formatos (se muestra en la Figura2.10, “Tipo de
archivo de disco duro” [página 30]): el valor predeterminado (VDI)corresponde al formato nativo de VirtualBox;
VMDKes el formato utilizado por VMware. Mantenga el valor predeterminado, porque no tiene ningún motivo para
cambiarlo. La capacidad de usar múltiples formatos es interesante principalmente cuando desea mover una
máquina virtual de una herramienta de virtualización a otra.
El texto explicativo en la Figura2.11, “Almacenamiento en disco duro físico” [página 31] describe claramente las
ventajas y desventajas de la asignación de disco fija y dinámica. En este ejemplo, aceptamos la selección
predeterminada (Asignación dinámica), ya que estamos usando una computadora portátil con discos SSD. No
queremos desperdiciar espacio y no necesitaremos un poco más de rendimiento ya que, para empezar, la máquina
ya es bastante rápida.
El tamaño de disco duro predeterminado de 20 GB que se muestra en la figura2.12, “Ubicación y tamaño del archivo
” [página 32] es suficiente para una instalación estándar de Kali Linux, por lo que no lo cambiaremos. Para obtener más
información sobre los requisitos de Kali, consulte la sección4.1, “Requisitos mínimos de instalación” [página 66]. También
puede modificar el nombre y la ubicación de la imagen del disco. Esto puede ser útil cuando no tiene suficiente espacio en
su disco duro, lo que le permite almacenar la imagen del disco en una unidad externa.
La máquina virtual se ha creado, pero aún no puede ejecutarla porque no hay un sistema operativo instalado.
También tiene algunas configuraciones para modificar. Haga clic en Configuración en la pantalla Administrador de
VM y revisemos algunas de las configuraciones más útiles.
En la pantalla Almacenamiento (Figura2.14, “Configuración de almacenamiento” [página 34]), debe asociar la imagen ISO
de Kali Linux con el lector virtual de CD/DVD-ROM. Primero, seleccione la unidad de CD-ROM en la lista del árbol de
almacenamiento y luego haga clic en el icono pequeño de CD-ROM a la derecha para mostrar un menú contextual donde
puedeElija Archivo de disco óptico virtual….
En la pantalla del sistema (Figura2.15, “Configuración del sistema: placa base” [página 35]), encontrará una pestaña Placa
base. Asegúrese de que el orden de arranque indique que el sistema primero intentará arrancar desde cualquier
dispositivo óptico antes de intentarlo desde un disco duro. Esta es también la pestaña donde puede modificar la cantidad
de memoria asignada a la máquina virtual, en caso de necesidad.
En la misma pantalla pero en la pestaña “Procesador” (Figura2.16, “Configuración del sistema: Procesador” [página 36]),
puede ajustar la cantidad de procesadores asignados a la máquina virtual. Lo que es más importante, si usa una imagen de
32 bits, habilite PAE/NX o la imagen de Kali no se iniciará ya que la variante de kernel predeterminada utilizada por Kali
para i386 (acertadamente llamada "686-pae") está compilada de una manera que requiere Physical Soporte de extensión
de dirección (PAE) en la CPU.
Hay muchos otros parámetros que se pueden configurar, como la configuración de la red (que define cómo se maneja el tráfico en
la tarjeta de red), pero los cambios anteriores son suficientes para poder iniciar un sistema Kali Linux en vivo que funcione.
Finalmente, haga clic en Arrancar y la máquina virtual debería arrancar correctamente, como se muestra en la Figura2.17, “Pantalla
de arranque de Kali Linux en VirtualBox” [página 37]. Si no es así, revise detenidamente todas las configuraciones y vuelva a
intentarlo.
VMware Estación de trabajoes muy similar acaja virtualen términos de funciones e interfaz de usuario, porque ambos están
diseñados principalmente para uso de escritorio, pero el proceso de configuración para una nueva máquina virtual es un
poco diferente. estaremos usandoEstación de trabajo VMware Proedición.
La pantalla inicial, que se muestra en la Figura2.18, “Pantalla de inicio de VMware” [página 38], muestra un botón
grande Crear una nueva máquina virtual que inicia un asistente para guiarlo a través de la creación de su máquina
virtual.
El asistente asume que desea instalar el sistema operativo inmediatamente y le pide que seleccione la imagen ISO
que contiene el programa de instalación (Figura2.20, “Instalación del sistema operativo invitado” [página 39]).
Seleccione "Archivo de imagen de disco de instalación (iso)" y haga clic en Examinar para seleccionar el archivo de
imagen.
Cuando no se puede detectar el sistema operativo a partir de la imagen ISO seleccionada, el asistente le pregunta qué tipo
de sistema operativo invitado desea ejecutar. Debe seleccionar "Linux" para el sistema operativo y "Debian 10.x de 64 bits"
para la versión, como se muestra en la Figura2.21, “Seleccione un sistema operativo invitado” [página 40]. Seleccionamos
"Debian 10.x" debido a que Kali Linux se actualiza constantemente a lael más nuevoversión de Debian.
Elija "Kali Linux" como el nombre de la nueva máquina virtual (Figura2.22, “Asigne un nombre a la máquina virtual” [página
41]). Al igual que con VirtualBox, también tiene la opción de almacenar los archivos de la máquina virtual en una ubicación
alternativa.
VMware Workstation ahora está configurado para crear la nueva máquina virtual. Muestra un resumen de las
elecciones realizadas para que pueda verificar todo antes de crear la máquina. Observe que el asistente optó por
asignar 2048 MB de RAM a la máquina virtual, que es suficiente para nuestras necesidades. Si el valor asignado es
más bajo, eso no es suficiente, así que haga clic en Personalizar hardware... (Figura2.24, “Listo para crear una
máquina virtual” [página 42]) y modifique la configuración de Memoria, como se muestra en la Figura2.25, “
Configurar ventana de hardware” [página 43].
Después de un último clic en Finalizar (Figura2.24, “Listo para crear una máquina virtual” [página 42]), la máquina
virtual ahora está configurada y se puede iniciar haciendo clic en ”Encender esta máquina virtual” como se muestra
en la Figura2.26, “Listo para la máquina virtual Kali Linux” [página 44].
2.3. Resumen
En este capítulo, aprendió sobre las diversas imágenes ISO de Kali Linux, aprendió cómo verificarlas y
descargarlas, y aprendió cómo crear discos USB de arranque a partir de ellos en varios sistemas operativos.
También discutimos cómo iniciar los discos USB y revisamos cómo configurar el BIOS/UEFI y las
configuraciones de inicio en varias plataformas de hardware para que los discos USB se inicien.
Resumen de consejos:
• www.kali.orges el único sitio oficial de descarga de Kali ISO. No los descargues de ningún
otro sitio, porque esas descargas podrían contener malware.
• Debe escribir la imagen ISO de Kali Linux en un dispositivo de inicio si desea iniciarlo en una máquina
física. UsarGenerador de imágenes de disco Win32en Microsoft Windows, elUtilidad de discosen Linux
usando GNOME, o elddcomando en Mac OS X/macOS/Linux. Sermuy cuidadosoal escribir la imagen.
Seleccionar el disco incorrecto podría dañar permanentemente los datos en su máquina.
• Configure las pantallas de configuración de BIOS/UEFI en una PC o mantenga presionada la teclaOpciónclave en OS X/macOS para
• Programas de máquinas virtuales comocaja virtualyEstación de trabajo VMware Proson especialmente útiles
si desea probar Kali Linux pero no está listo para comprometerse a instalarlo permanentemente en
Ahora que tiene una instalación funcional de Kali Linux, es hora de profundizar en algunos aspectos básicos de
Linux que se requieren para el funcionamiento básico y avanzado de Kali. Si usted es un usuario de Linux moderado
a avanzado, considere hojear el próximo capítulo (capítulo3, “Fundamentos de Linux” [página 48]).
núcleo de linux
Espacio de usuario
Línea de comando
intento
Comandos Unix
Capítulo
Fundamentos de Linux 3
Contenido
En esta sección, nos esforzamos por cubrir los conceptos básicos de Linux, pero asumimos que ya conoce
los sistemas informáticos en general, incluidos componentes como la CPU, la RAM, la placa base y el disco
duro, así como los controladores de dispositivos y sus conectores asociados. .
El término "Linux" se usa a menudo para referirse a todo el sistema operativo, pero en realidad, Linux es el
kernel del sistema operativo, que es iniciado por el cargador de arranque, que a su vez es iniciado por BIOS/
UEFI. El núcleo asume un papel similar al de un director de orquesta: garantiza la coordinación entre el
hardware y el software. Este rol incluye la gestión de hardware, procesos, usuarios, permisos y el sistema de
archivos. El núcleo proporciona una base común para todos los demás programas del sistema y, por lo
general, se ejecuta enanillo cero, también conocido comoespacio del núcleo.
El espacio del usuario Usamos el términoespacio de usuariopara agrupar todo lo que sucede fuera del
núcleo.
Entre los programas que se ejecutan en el espacio del usuario se encuentran muchas utilidades principales
delproyecto GNU1, la mayoría de los cuales están destinados a ejecutarse desde la línea de comandos. Puede
usarlos en scripts para automatizar muchas tareas. Consulte la sección3.4, “Comandos útiles” [página 56]
para obtener más información sobre los comandos más importantes.
El kernel tiene la tarea, ante todo, de controlar los componentes de hardware de la computadora. Los detecta y
configura cuando la computadora se enciende, o cuando se inserta o retira un dispositivo (por ejemplo, un
dispositivo USB). También los pone a disposición del software de nivel superior, a través de una interfaz de
programación simplificada, para que las aplicaciones puedan aprovechar los dispositivos sin tener que abordar
detalles como en qué ranura de extensión está conectada una placa opcional. La interfaz de programación también
proporciona una capa de abstracción; esto permite que el software de videoconferencia, por ejemplo, use una
cámara web independientemente de su fabricante y modelo. El software puede utilizar elVídeo para Linux (V4L) y el
kernel traducirá las llamadas de función de la interfaz en comandos de hardware reales que necesita la cámara web
específica en uso.
El kernel exporta datos sobre el hardware detectado a través del/proceso/y/sistema/sistemas de archivos virtuales. Las aplicaciones a
menudo acceden a los dispositivos a través de archivos creados dentro/desarrollador/. Representante de archivos específicos
1https://www.gnu.org/
Como es de esperar, las unidades de disco y las particiones utilizan dispositivos de bloque, mientras que el ratón, el teclado
y los puertos serie utilizan dispositivos de caracteres. En ambos casos, la interfaz de programación incluye comandos
específicos del dispositivo que se pueden invocar a través delioctlllamada del sistema.
Los sistemas de archivos son un aspecto destacado del kernel. Los sistemas similares a Unix combinan todos los almacenes de
archivos en una sola jerarquía, lo que permite a los usuarios y las aplicaciones acceder a los datos conociendo su ubicación dentro
de esa jerarquía.
El punto de partida de este árbol jerárquico se llama la raíz, representada por el “/" personaje. Este
directorio puede contener subdirectorios con nombre. por ejemplo, elhogarsubdirectorio de/se llama
/hogar/. Este subdirectorio puede, a su vez, contener otros subdirectorios, y así sucesivamente. Cada directorio
también puede contener archivos, donde se almacenarán los datos. De este modo,/home/kali/Escritorio/hola.txtse
refiere a un archivo llamadohola.txtalmacenado en elEscritoriosubdirectorio de lakalisubdirectorio de lahogar
directorio, presente en la raíz. El kernel traduce entre este sistema de nombres y la ubicación de almacenamiento
en un disco.
A diferencia de otros sistemas, Linux posee solo una jerarquía de este tipo y puede integrar datos de varios
discos. Uno de estos discos se convierte en raíz y los otros sonmontadoen directorios en la jerarquía (el
comando de Linux se llamamontar). Estos otros discos están entonces disponibles bajo el puntos de montaje.
Esto permite almacenar los directorios de inicio de los usuarios (tradicionalmente almacenados dentro de/
hogar/) en un disco duro separado, que contendrá elkali(junto con los directorios de inicio de otros usuarios).
Una vez que monte el disco en/hogar/, estos directorios se vuelven accesibles en sus ubicaciones habituales y
rutas como/home/kali/Escritorio/hola.txtsigue trabajando.
Hay muchos formatos de sistemas de archivos, correspondientes a muchas formas de almacenar datos físicamente
en discos. Los más conocidos sonext2,ext3, yext4, pero existen otros. Por ejemplo,VFATes el sistema de archivos
que históricamente fue utilizado por los sistemas operativos DOS y Microsoft Windows. El soporte de Linux para
VFAT permite que los discos duros sean accesibles tanto en Kali como en Microsoft Windows. En cualquier caso,
debe preparar un sistema de archivos en un disco antes de poder montarlo y esta operación es
También hay sistemas de archivos de red como NFS, que no almacenan datos en un disco local. En cambio,
los datos se transmiten a través de la red a un servidor que los almacena y los recupera a pedido. Gracias a
la abstracción del sistema de archivos, no tiene que preocuparse por cómo se conecta este disco, ya que los
archivos permanecen accesibles en su forma jerárquica habitual.
Un proceso es una instancia en ejecución de un programa, que requiere memoria para almacenar tanto el
programa en sí como sus datos operativos. El kernel está a cargo de crear y rastrear procesos. Cuando se ejecuta
un programa, el kernel primero reserva algo de memoria, carga el código ejecutable del sistema de archivos y
luego inicia la ejecución del código. Mantiene información sobre este proceso, la más visible de las cuales es un
número de identificación conocido como elidentificador de proceso(DPI).
Como la mayoría de los sistemas operativos modernos, aquellos con núcleos tipo Unix, incluido
Linux, son capaces de realizar múltiples tareas. En otras palabras, permiten que el sistema
ejecute muchos procesos al mismo tiempo. En realidad, solo hay un proceso en ejecución a la vez,
pero el kernel divide el tiempo de la CPU en pequeñas porciones y ejecuta cada proceso por
turno. Dado que estos intervalos de tiempo son muy cortos (en el rango de milisegundos), crean
la apariencia de procesos que se ejecutan en paralelo, aunque están activos solo durante su
intervalo de tiempo y están inactivos el resto del tiempo. El trabajo del núcleo es ajustar sus
mecanismos de programación para mantener esa apariencia, mientras maximiza el rendimiento
del sistema global. Si los intervalos de tiempo son demasiado largos, es posible que la aplicación
no responda tan bien como se desea. Demasiado corto, y el sistema pierde tiempo cambiando
tareas con demasiada frecuencia.
Sistemas multiprocesador La limitación descrita anteriormente, de solo un proceso ejecutándose a la vez, no siempre se aplica:
(y variantes) la restricción real es que solo puede haber un proceso en ejecuciónpor núcleo de procesador.
Multiprocesador, multinúcleo ohiper-hiloLos sistemas permiten que varios procesos se ejecuten en
paralelo. Sin embargo, se utiliza el mismo sistema de división de tiempo para manejar casos en los
que hay más procesos activos que núcleos de procesador disponibles. Esto no es inusual: un sistema
básico, incluso uno en su mayoría inactivo, casi siempre tiene decenas de procesos en ejecución.
El kernel permite que se ejecuten varias instancias independientes del mismo programa, pero cada una puede acceder
solo a sus propios intervalos de tiempo y memoria. Por lo tanto, sus datos permanecen independientes.
Los sistemas similares a Unix admiten múltiples usuarios y grupos y permiten el control de permisos. La mayoría
de las veces, un proceso es identificado por el usuario que lo inició. Ese proceso solo puede realizar acciones
permitidas para su propietario. Por ejemplo, abrir un archivo requiere que el núcleo verifique la identidad del
proceso con los permisos de acceso (para obtener más detalles sobre este ejemplo en particular, consulte la
sección3.4.4, “Gestión de derechos” [página 57]).
Por "línea de comandos", nos referimos a una interfaz basada en texto que le permite ingresar comandos,
ejecutarlos y ver los resultados. Puede ejecutar una terminal (una pantalla de texto dentro del escritorio gráfico o la
propia consola de texto fuera de cualquier interfaz gráfica) y un intérprete de comandos dentro de ella (la cáscara).
Cuando su sistema funciona correctamente, la forma más fácil de acceder a la línea de comandos es ejecutar una
terminal en su sesión de escritorio gráfico.
En el caso de que su interfaz gráfica no funcione, aún puede obtener una línea de comando en las consolas
virtuales (se puede acceder a hasta seis de ellas a través de las seis combinaciones de teclas de CTRL+ALT+F1
a CTRL+ALT+F6 — laCONTROLpuede omitirse si ya está en modo texto, fuera de Xorg o de la interfaz gráfica
de Wayland). Obtiene una pantalla de inicio de sesión muy básica donde ingresa su nombre de usuario y
contraseña antes de que se le otorgue acceso a la línea de comando con su shell:
Los programas incluidos con el sistema Kali GNU/Linux son software libre; los términos de
distribución exactos para cada programa se describen en los archivos individuales en /usr/
share/doc/*/copyright.
3.2.2. Conceptos básicos de la línea de comandos: exploración del árbol de directorios y administración de archivos
Esta sección solo proporciona una breve descripción general de los comandos cubiertos, todos los cuales tienen muchas
opciones que no se describen aquí, así que consulte la abundante documentación disponible en sus respectivas páginas de
manual. En las pruebas de penetración, la mayoría de las veces recibirá acceso de shell a un sistema después de una
explotación exitosa, en lugar de una interfaz gráfica de usuario. El dominio de la línea de comandos es esencial para su
éxito como profesional de la seguridad.
Una vez abierta una sesión, elpersonas con discapacidadcomando (que significaimprimir directorio de trabajo)
muestra su ubicación actual en el sistema de archivos. El directorio actual se cambia con elcddirectorio
dominio (cdes paracambio de directorio). Cuando no especifica el directorio de destino, se le lleva a su
directorio de inicio. cuando usascd -(guión), vuelve al directorio de trabajo anterior (el que estaba en uso
antes del últimocdllamar). El directorio padre siempre se llama .. (dos puntos), mientras que
/inicio/kali
pscd de escritorio
pspersonas con discapacidad
/inicio/kali/Escritorio
pscd .
pspersonas con discapacidad
/inicio/kali/Escritorio
pscd ..
pspersonas con discapacidad
/inicio/kali
psls
Escritorio Descargas Fotos Plantillas
Documentos Música Público Vídeos
Puede crear un nuevo directorio conmkdirdirectorioy elimine un directorio existente (vacío) conrmdir
directorio. Elm.v.el comando permiteMovientey renombrar archivos y directorios;quitandose logra un
archivo conrmarchivo, y la copia de un archivo se realiza conc.p.archivo de origen archivo de destino.
psprueba mkdir
psls
Escritorio Descargas Imágenes Plantillas Vídeos Música
Documentos Público prueba
El shell ejecuta cada comando ejecutando el primer programa del nombre dado que encuentra en un directorio
listado en elCAMINOVariable ambiental. La mayoría de las veces, estos programas están en/papelera,
/sbin,/usuario/bin, o/usuario/sbin. por ejemplo, ellsEl comando se encuentra en/papelera/ls; elcual
El comando informa la ubicación de un ejecutable determinado. A veces, el comando es manejado directamente por el
shell, en cuyo caso, se denomina comando incorporado del shell (cdypersonas con discapacidadestán entre ellos); el
tipoEl comando le permite consultar el tipo de cada comando.
psecho $RUTA
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin $cual es
/bin/ls
pstipo rm
cd es un shell incorporado
Tenga en cuenta el uso de laecocomando, que simplemente muestra una cadena en la terminal. En este caso,
se usa para imprimir el contenido de una variable de entorno ya que el shell sustituye automáticamente las
variables con sus valores antes de ejecutar la línea de comando.
Variables de entorno Las variables de entorno permiten el almacenamiento de configuraciones globales para el shell u
otros programas. Son contextuales pero heredables. Por ejemplo, cada proceso tiene su propio
conjunto de variables de entorno (son contextuales). Los shells, como los shells de inicio de sesión,
pueden declarar variables, que se transmitirán a otros programas que ejecuten (son heredables).
Estas variables se pueden definir para todo el sistema en/etc/perfilo por usuario en~/
. perfilpero es mejor incluir las variables que no son específicas de los intérpretes de línea de
comandos./etc/medio ambiente, ya que esas variables se inyectarán en todas las sesiones de usuario
gracias a un módulo de autenticación conectable (PAM), incluso cuando no se ejecute ningún shell.
Al igual que con otras distribuciones de Linux, Kali Linux está organizado para ser consistente con elEstándar de jerarquía
del sistema de archivos(FHS), lo que permite a los usuarios de otras distribuciones de Linux orientarse fácilmente en Kali. El
FHS define el propósito de cada directorio. Los directorios de nivel superior se describen a continuación.
• /bota/: kernel de Kali Linux y otros archivos necesarios para su proceso de inicio temprano
• /medios de comunicación/: puntos de montaje para dispositivos extraíbles (CD/DVD-ROM, llaves USB, etc.)
• /correr/: datos de tiempo de ejecución volátiles que no persisten entre reinicios (aún no incluidos en el FHS)
• /usuario/: aplicaciones (este directorio se subdivide enpapelera,sbin,liberaciónde acuerdo con la misma lógica que
en el directorio raíz) Además,/usr/compartir/contiene datos independientes de la arquitectura. El/usuario/local/El
directorio está destinado a ser utilizado por el administrador para instalar aplicaciones manualmente sin
sobrescribir los archivos manejados por el sistema de empaquetado.
(dpkg).
• /var/: datos variables manejados por los servicios. Esto incluye archivos de registro, colas, colas y cachés.
• /proceso/y/sistema/son específicos del kernel de Linux (y no forman parte del FHS). Son utilizados por el kernel
para exportar datos al espacio del usuario.
El contenido del directorio de inicio de un usuario no está estandarizado, pero aún existen algunas convenciones
dignas de mención. Una es que el directorio de inicio de un usuario a menudo se menciona con una tilde ("~"). Es
útil saberlo porque los intérpretes de comandos reemplazan automáticamente una tilde con el directorio correcto
(que se almacena en elHOGARvariable de entorno, y cuyo valor habitual es/hogar/usuario/).
Tradicionalmente, los archivos de configuración de la aplicación a menudo se almacenan directamente en su directorio de inicio, pero los
nombres de los archivos generalmente comienzan con un punto (por ejemplo, elchuchocliente de correo electrónico almacena su configuración
en~/.muttrc). Tenga en cuenta que los nombres de archivo que comienzan con un punto están ocultos de forma predeterminada; ellsel
comando solo los enumera cuando el -aSe utiliza la opción y los administradores de archivos gráficos deben configurarse explícitamente para
Algunos programas también usan múltiples archivos de configuración organizados en un directorio (por ejemplo,~/
. ssh/). Algunas aplicaciones (como el navegador web Firefox) también usan su directorio para almacenar un caché
de datos descargados. Esto significa que esos directorios pueden terminar consumiendo mucho espacio en disco.
Los escritorios gráficos suelen tener accesos directos para mostrar el contenido del~/Escritorio/directorio (o
cualquiera que sea la traducción apropiada para sistemas no configurados en inglés).
2https://www.freedesktop.org/
EleditorEl comando inicia un editor de texto (como Vi o Nano) y permite crear, modificar y leer archivos
de texto. Los archivos más simples a veces se pueden crear directamente desde el intérprete de
comandos gracias a la redirección:dominio>archivocrea un archivo llamadoarchivoque contiene la salida
del comando dado.dominio>>archivoes similar, excepto que agrega la salida del comando al archivo en
lugar de sobrescribirlo.
Elgreparchivos de expresiónEl comando busca el contenido de los archivos y extrae las líneas que coinciden con
la expresión regular. Agregando el -rLa opción habilita una búsqueda recursiva en todos los archivos
contenidos en el directorio. Esto le permite buscar un archivo cuando solo conoce una parte de su contenido.
Elpd auxiliarEl comando enumera los procesos que se están ejecutando actualmente y ayuda a identificarlos mostrando su
PID. Una vez que sepas elPIDde un proceso, elmatar -pid de señalEl comando le permite enviarle una señal (si es el
propietario del proceso). Existen varias señales; más comúnmente utilizados sonTÉRMINO (una solicitud para terminar con
gracia) yMATAR (un asesinato forzado).
El intérprete de comandos también puede ejecutar programas en segundo plano si el comando va seguido
de “&”. Al usar el ampersand, reanuda el control del shell inmediatamente aunque el comando aún se esté
ejecutando (oculto a la vista como un proceso en segundo plano). Eltrabajosel comando enumera los
procesos que se ejecutan en segundo plano; correrfg %Número de empleo(paraprimer plano) restaura un
trabajo al primer plano. Cuando un comando se ejecuta en primer plano (ya sea porque se inició
normalmente o porque volvió al primer plano confg), la combinación de teclas Control+Z detiene el proceso
y reanuda el control de la línea de comandos. El proceso se puede reiniciar en segundo plano con% de
volumenNúmero de empleo(parafondo).
Linux es un sistema multiusuario por lo que es necesario proporcionar un sistema de permisos para controlar el conjunto
de operaciones autorizadas sobre archivos y directorios, que incluye todos los recursos y dispositivos del sistema (en un
sistema Unix, cualquier dispositivo está representado por un archivo o directorio). Este principio es común a todos los
sistemas similares a Unix.
Cada archivo o directorio tiene permisos específicos para tres categorías de usuarios:
• Su grupo propietario (simbolizado porgramo,como en Grupo), en representación de todos los miembros del grupo
En el caso de un archivo, estos derechos se entienden fácilmente: el acceso de lectura permite leer el contenido (incluida la
copia), el acceso de escritura permite modificarlo y el acceso de ejecución permite ejecutarlo (que solo funcionará si se
trata de un programa).
setuidoysetgid Dos derechos particulares son relevantes para los archivos ejecutables:setuidoysetgid(simbolizado con la letra
ejecutables “s”). Tenga en cuenta que con frecuencia hablamos de bit, ya que cada uno de estos valores booleanos se
puede representar con un 0 o un 1. Estos dos derechos permiten que cualquier usuario pueda ejecutar el
programa con los derechos del propietario o del grupo, respectivamente. este mecanismo
SEGURIDAD Elsetgidbit también se aplica a los directorios. A cualquier elemento recién creado en dichos
setgiddirectorio ypegajoso directorios se le asigna automáticamente el grupo propietario del directorio principal, en lugar de
pocoheredar el grupo principal del creador como de costumbre. Debido a esto, no tienes que cambiar tu
grupo principal (con elnuevo grupocomando) cuando se trabaja en un árbol de archivos compartido
entre varios usuarios del mismo grupo dedicado.
Elpoco pegajoso(simbolizado por la letra “t”) es un permiso que solo es útil en directorios. Se utiliza
especialmente para directorios temporales en los que todo el mundo tiene acceso de escritura (como
/tmp/): restringe la eliminación de archivos para que solo su propietario o el propietario del directorio
principal pueda eliminarlos. Sin esto, todos podrían eliminar los archivos de otros usuarios en/tmp/.
CONSEJO Con frecuencia desea cambiar el grupo de un archivo al mismo tiempo que cambia el
Cambio de usuario y propietario. ElChonEl comando tiene una sintaxis especial para eso:Chonusuario:grupo
grupo archivo
Hay dos formas de representar los derechos. Entre ellos, la representación simbólica es probablemente la más fácil de
comprender y recordar. Se trata de los símbolos de letras mencionados anteriormente. Puede definir derechos para cada
categoría de usuarios (u/g/o),estableciéndolos explícitamente (con =), agregando (+),o restando (-). Por lo tanto, la
u=rwx,g+rw,oLa fórmula otorga al propietario derechos de lectura, escritura y ejecución, agrega derechos de lectura y
escritura para el grupo de propietarios y elimina los derechos de lectura para otros usuarios.
La representación numérica (octal) asocia cada derecho con un valor: 4 para leer, 2 para escribir y 1
para ejecutar. Asociamos cada combinación de derechos a la suma de las tres cifras, y se asigna un
valor a cada categoría de usuarios, en el orden habitual (propietario, grupo, otros).
por ejemplo, elmod 754archivoel comando establecerá los siguientes derechos: lectura, escritura y ejecución para el
propietario (ya que 7 = 4 + 2 + 1); leer y ejecutar para el grupo (ya que 5 = 4 + 1); de sólo lectura para otros. El0
significa sin derechos; de este modomod 600archivopermite permisos de lectura y escritura para el propietario, y
ningún derecho para nadie más. Las combinaciones correctas más frecuentes son755para archivos ejecutables y
directorios, y644para archivos de datos.
Para representar derechos especiales, puede anteponer un cuarto dígito a este número de acuerdo con el
mismo principio, donde elsetuid, setgid,ypegajosolos bits son 4, 2 y 1, respectivamente. El comando
chmod 4754asociará elsetuidobit con los derechos antes descritos.
Tenga en cuenta que el uso de la notación octal solo le permite establecer todos los derechos a la vez en un archivo; no
puede usarlo para agregar un nuevo derecho, como acceso de lectura para el propietario del grupo, ya que debe tener en
cuenta los derechos existentes y calcular el nuevo valor numérico correspondiente.
La representación octal también se utiliza con elmáscaracomando, que se utiliza para restringir los permisos en los
archivos recién creados. Cuando una aplicación crea un archivo, asigna permisos indicativos, sabiendo que el
sistema elimina automáticamente los derechos definidos conmáscara. Ingresarmáscaraen una concha; verá una
máscara como0022. Esta es simplemente una representación octal de los derechos que se eliminarán
sistemáticamente (en este caso, los derechos de escritura para el grupo y otros usuarios).
Si le das un nuevo valor octal, elmáscaraEl comando modifica la máscara. Se utiliza en un archivo de inicialización de
shell (por ejemplo,~/.bash_perfil), cambiará efectivamente la máscara predeterminada para sus sesiones de trabajo.
CONSEJO A veces tenemos que cambiar los derechos de un árbol de archivos completo. Todos los comandos anteriores
La distinción entre directorios y archivos a veces causa problemas con las operaciones recursivas. Por
eso se ha introducido la letra “X” en la representación simbólica de los derechos. Representa un
derecho de ejecución que se aplica solo a los directorios (y no a los archivos que carecen de este
derecho). De este modo,chmod -R a+Xdirectoriosolo agregará derechos de ejecución para todas las
categorías de usuarios (a) para todos los subdirectorios y archivos para los que al menos una
categoría de usuario (incluso si es su único propietario) ya tiene derechos de ejecución.
Elgratisel comando muestra información en la memoria; (d.f.(paradisco libre) informa sobre el espacio en
disco disponible en cada uno de los discos montados en el sistema de archivos. Es -hopción (paralegible por
humanos) convierte los tamaños en una unidad más legible (generalmente mebibytes o gibibytes). De
manera similar, elgratisEl comando admite el -metroy -gramoy muestra sus datos en mebibytes o en
gibibytes, respectivamente.
psgratis
total usado gratis compartido beneficio/caché disponible
Memoria: 2052944 661232 621208 10520 770504 1359916
Intercambio: 0 0 0
psd.f.
sistema de archivos 1K-bloques Usado Disponible Uso % Montado en
udev 1014584 0 1014584 0% /desv.
tmpfs 205296 8940 196356 5% /ejecutar
ElidentificaciónEl comando muestra la identidad del usuario que ejecuta la sesión junto con la lista de grupos a los que
pertenecen. Dado que el acceso a algunos archivos o dispositivos puede estar limitado a los miembros del grupo, puede
ser útil verificar la membresía del grupo disponible.
psidentificación
Eluname -aEl comando devuelve una sola línea que documenta el nombre del kernel (linux),el nombre de host, la
versión del kernel, la versión del kernel, el tipo de máquina (una cadena de arquitectura comox86_64), y el nombre
del sistema operativo (GNU/Linux).El resultado de este comando generalmente debe incluirse en los informes de
errores, ya que define claramente el kernel en uso y la plataforma de hardware en la que se está ejecutando.
psuname -a
Linux kali 5.8.0-kali3-amd64 #1 SMP Debian 5.8.14-1kali1 (2020-10-13) x86_64 GNU/Linux
Todos estos comandos brindan información en tiempo de ejecución, pero a menudo necesita consultar los registros
para comprender qué sucedió en su computadora. En particular, el núcleo emite mensajes que almacena en un
búfer de anillo cada vez que sucede algo interesante (como la inserción de un nuevo dispositivo USB, una operación
fallida del disco duro o la detección inicial de hardware en el arranque). Puede recuperar los registros del núcleo
con eldmesgdominio.
El diario de Systemd también almacena varios registros (salida estándar/stderr de servicios, mensajes de registro
del sistema, registros del núcleo) y facilita su consulta condiarioctl. Sin ningún argumento, simplemente vuelca
pslspci
[...]
00:02.1 Controlador de pantalla: Intel Corporation Mobile 915GM/GMS/910GML Express Graphics Controller (rev. 03) 00:1c.0 Puente PCI: Intel
Corporation 82801FB/FBM/FR/FW/FRW (familia ICH6) Puerto PCI Express 1 (rev. 03) 03) 00:1d.0 Controlador USB: Intel Corporation 82801FB/
FBM/FR/FW/FRW (Familia ICH6) USB UHCI #1 (rev 03)
[...]
01:00.0 Controlador Ethernet: Broadcom Corporation NetXtreme BCM5751 Gigabit Ethernet PCI Express (rev. 01) 02:03.0 Controlador de red:
Intel Corporation PRO/Wireless 2200BG Network Connection (rev. 05)
pssusb
Bus 005 Dispositivo 004: ID 413c:a005 Dell Computer Corp. Bus 005
Dispositivo 008: ID 413c:9001 Dell Computer Corp. Bus 005
Dispositivo 007: ID 045e:00dd Microsoft Corp.
Bus 005 Dispositivo 006: ID 046d:c03d Logitech, Inc. [...]
Bus 002 Dispositivo 004: ID 413c:8103 Dell Computer Corp. Wireless 350 Bluetooth
Estos programas tienen un -vopción que enumera información mucho más detallada (pero generalmente innecesaria).
Finalmente, ellsdevcomando (en elprocinfopaquete) enumera los recursos de comunicación utilizados por los dispositivos.
EllshwEl programa es una combinación de los programas anteriores y muestra una descripción larga del
hardware descubierto de manera jerárquica. Debe adjuntar su resultado completo a cualquier informe
sobre problemas de soporte de hardware.
En esta sección, hicimos un recorrido vertiginoso por el panorama de Linux. Discutimos el kernel y el espacio del usuario,
revisamos muchos comandos comunes de shell de Linux, discutimos los procesos y cómo administrarlos, revisamos los
conceptos de seguridad de usuarios y grupos, discutimos el FHS y recorrimos algunos de los directorios y archivos más
comunes que se encuentran en Kali Linux.
Resumen de consejos:
• Linux se usa a menudo para referirse a todo el sistema operativo, pero en realidad Linux en sí mismo es el
núcleo del sistema operativo que inicia el cargador de arranque, que a su vez es iniciado por el BIOS/UEFI.
• El espacio de usuario se refiere a todo lo que sucede fuera del kernel. Entre los programas que se ejecutan
en el espacio del usuario, hay muchas utilidades básicas delproyecto GNU3, la mayoría de los cuales están
destinados a ejecutarse desde la línea de comandos (una interfaz basada en texto que le permite ingresar
comandos, ejecutarlos y ver los resultados). Un shell ejecuta sus comandos dentro de esa interfaz.
• Puede inspeccionar el hardware en un sistema Kali con varios comandos:lspci(enumerar dispositivos PCI),susb(
lista de dispositivos USB), ylspcmciaenumera las tarjetas PCMCIA.
• Un proceso es una instancia en ejecución de un programa, que requiere memoria para almacenar tanto el
programa en sí como sus datos operativos. Puede administrar procesos con comandos como:PD(mostrar
procesos),matar(matar procesos),bg(enviar el proceso a segundo plano),fg(traer el proceso de fondo al primer
plano), ytrabajos(mostrar procesos en segundo plano).
• Los sistemas similares a Unix son multiusuario. Admiten múltiples usuarios y grupos y permiten el control
sobre las acciones, en función de los permisos. Puede administrar los derechos de archivos y directorios con
varios comandos, incluidos:chmod(cambiar permisos),Chon(cambiar de propietario), ychgrp
(cambio de grupo).
• Al igual que con otras distribuciones profesionales de Linux, Kali Linux está organizado para ser consistente con el
Sistema de archivosJerarquíaEstándar(FHS), lo que permite a los usuarios que provienen de otras distribuciones de
Linux orientarse fácilmente en Kali.
3https://www.gnu.org/
Instalación
Desesperado
instalación
dispositivos ARM
Solución de problemas
Capítulo
Instalando KaliLinux 4
Contenido
Requisitos mínimos de instalación66 Instalación paso a paso en un disco duro66 Instalaciones desatendidas95
Los requisitos de instalación de Kali Linux varían según lo que desee instalar. En el extremo inferior, puede
configurar Kali como un servidor Secure Shell (SSH) básico sin escritorio, utilizando tan solo 128 MB de RAM (se
recomiendan 512 MB) y 2 GB de espacio en disco. En el extremo superior, si opta por instalar el escritorio Xfce
predeterminado y elkali-linux-predeterminadometapaquete, realmente debería aspirar a por lo menos 2048 MB de
RAM y 20 GB de espacio en disco.
Además de los requisitos de RAM y disco duro, su computadora debe tener una CPU compatible con al
menos una de las arquitecturas amd64, i386 o arm64.
En esta sección, asumimos que tiene una unidad USB o DVD de arranque (consulte la sección2.1.4, “Copia de la imagen en
un DVD-ROM o llave USB” [página 19] para obtener detalles sobre cómo preparar una unidad de este tipo) y que arrancó
desde ella para iniciar el proceso de instalación.
Primero, veremos una instalación estándar de Kali, con un sistema de archivos sin cifrar.
Una vez que el BIOS/UEFI ha comenzado a arrancar desde la unidad USB o DVD-ROM, aparece el menú del
cargador de arranque isolinux, como se muestra en la Figura4.1, “Pantalla de arranque” [página 67]. En esta etapa,
el kernel de Linux aún no está cargado; este menú le permite elegir el kernel para arrancar e ingresar parámetros
opcionales para transferirlos en el proceso.
Cada entrada del menú oculta una línea de comando de arranque específica, que se puede configurar según sea necesario
presionando el botónPestañaclave antes de validar la entrada y arrancar.
Una vez iniciado, el programa de instalación lo guía paso a paso a través del proceso. Echaremos un vistazo a
cada uno de estos pasos en detalle. Cubriremos la instalación desde una imagen en vivo estándar de Kali
Linux; instalaciones de unmini.isopuede verse ligeramente diferente. También abordaremos la instalación en
modo gráfico, pero la única diferencia con la instalación clásica en modo texto es la apariencia. Las versiones
plantean preguntas idénticas y presentan opciones idénticas.
Como se muestra en la figura4.2, “Selección del idioma” [página 68], el programa de instalación
comienza en inglés pero el primer paso le permite elegir el idioma que se utilizará para el resto del
Navegando con el Algunos pasos del proceso de instalación requieren que ingrese información. Estas pantallas tienen
Teclado varias áreas que pueden enfocarse (área de entrada de texto, casillas de verificación, lista de
opciones, botones Aceptar y Cancelar), y la tecla Tab le permite pasar de una a otra.
El segundo paso (Figura4.3, “Selección del país” [página 69]) consiste en elegir tu país. Combinada con
el idioma, esta información permite que el programa de instalación ofrezca la distribución de teclado
más adecuada. Esto también influirá en la configuración de la zona horaria. En los Estados Unidos, se
sugiere un teclado QWERTY estándar y el instalador presenta una selección de zonas horarias
apropiadas.
El teclado de inglés americano propuesto corresponde al diseño QWERTY habitual, como se muestra en la
Figura4.4, “Elección de teclado” [página 70].
Detección de hardware
En la gran mayoría de los casos, el paso de detección de hardware es completamente automático. El instalador detecta su
hardware e intenta identificar el dispositivo de arranque utilizado para acceder a su contenido. Carga los módulos
correspondientes a los distintos componentes de hardware detectados y luego monta el dispositivo de arranque para
poder leerlo. Los pasos anteriores estaban completamente contenidos en la imagen de arranque incluida en el dispositivo
de arranque, un archivo de tamaño limitado y cargado en la memoria por el gestor de arranque al arrancar desde el
dispositivo de arranque.
Cargando Componentes
Con el contenido del dispositivo de arranque ahora disponible, el instalador carga todos los archivos necesarios
para continuar con su trabajo. Esto incluye controladores adicionales para el hardware restante (especialmente la
tarjeta de red), así como todos los componentes del programa de instalación.
En este paso, el instalador intentará identificar automáticamente la tarjeta de red y cargar el módulo
correspondiente. Si la detección automática falla, puede seleccionar manualmente el módulo para cargar. Si todo lo
demás falla, puede cargar un módulo específico desde un dispositivo extraíble. Esta última solución generalmente
solo se necesita si el controlador apropiado no está incluido en el kernel estándar de Linux, pero está disponible en
otro lugar, como el sitio web del fabricante.
Este paso debe ser absolutamente exitoso para las instalaciones de red (como las que se realizan al arrancar
desde unmini.iso), ya que los paquetes Debian deben cargarse desde la red.
Configuración de la red
Para automatizar el proceso tanto como sea posible, el instalador intenta una configuración de red
automática utilizando el Protocolo de configuración dinámica de host (DHCP) (para IPv4 e IPv6) y el Protocolo
de descubrimiento de vecinos de ICMPv6 (para IPv6), como se muestra en la Figura4.5, “Autoconfiguración
de red” [página 71].
Esta última opción requiere una dirección IP, una máscara de subred, una dirección IP para una puerta de enlace potencial, un
nombre de máquina y un nombre de dominio.
Configuración sin Si la red local está equipada con un servidor DHCP que no desea utilizar porque prefiere
DHCP definir una dirección IP estática para la máquina durante la instalación, puede agregar
elnetcfg/use_dhcp=falsoopción al arrancar. Solo necesita editar la entrada de menú
deseada presionando la tecla Tab y agregando la opción deseada antes de presionar la
tecla Enter.
Creación de usuarios
El instalador solicita la creación de un nuevo usuario (Figura4.6, “Crear usuario” [página 73]) ya que
automáticamente crea una cuenta de usuario en el grupo ”sudo”. Esto significa que el usuario tiene plenos
privilegios administrativos a través delsudodominio. Esto es útil debido al hecho de que varios elementos solo están
disponibles a través de privilegios administrativos.
El instalador también solicita un nombre de usuario para la cuenta, así como una contraseña. El instalador
solicitará la confirmación de la contraseña para evitar cualquier error de entrada.
El usuario predeterminado La contraseña de usuario predeterminada debe ser larga (ocho caracteres o más) e imposible de adivinar, ya
Contraseña que los atacantes se dirigen a las computadoras y servidores conectados a Internet con herramientas
automatizadas, intentando iniciar sesión con contraseñas obvias. A veces, los atacantes aprovechan los
ataques de diccionario, utilizando muchas combinaciones de palabras y números como contraseñas. Evite
utilizar los nombres de los hijos o de los padres y las fechas de nacimiento, ya que son fáciles de adivinar.
Estos comentarios son igualmente aplicables a las contraseñas de otros usuarios, pero las consecuencias de
una cuenta comprometida son menos drásticas para los usuarios sin privilegios de sudo.
Si la red está disponible, el reloj interno del sistema se actualizará desde un servidor de protocolo de tiempo de red (NTP).
Esto es beneficioso porque garantiza que las marcas de tiempo en los registros serán correctas desde el primer arranque.
Si su país abarca varias zonas horarias, se le pedirá que seleccione la zona horaria que desea usar, como se
muestra en la Figura4.7, “Selección de zona horaria” [página 74].
Este paso detecta automáticamente los discos duros en los que se puede instalar Kali, cada uno de los cuales se
presentará en el siguiente paso: partición.
Fraccionamientoes un paso indispensable en la instalación, que consiste en dividir el espacio disponible en los
discos duros en secciones discretas (particiones) de acuerdo con la función prevista de la computadora y esas
particiones. El particionamiento también implica elegir los sistemas de archivos que se utilizarán. Todas estas
decisiones influirán en el rendimiento, la seguridad de los datos y la administración del servidor.
El paso de partición es tradicionalmente difícil para los nuevos usuarios. Sin embargo, los sistemas de
archivos y particiones de Linux, incluida la memoria virtual (ointercambioparticiones) deben definirse
ya que forman la base del sistema. Esta tarea puede complicarse si ya ha instalado otro sistema
operativo en la máquina y desea que los dos coexistan. En este caso, debes asegurarte de no alterar
sus particiones o, en su caso, redimensionarlas sin causar daños.
Para acomodar esquemas de partición más comunes (y más simples), la mayoría de los usuarios preferirán el
Guiado modo que recomienda configuraciones de partición y proporciona sugerencias en cada paso del
camino. Los usuarios más avanzados apreciarán laManualmodo, que permite configuraciones más
avanzadas. Cada modo comparte ciertas capacidades.
Particionamiento guiadoLa primera pantalla en la herramienta de partición (Figura4.8, “Elección del modo
de partición” [página 76]) presenta puntos de entrada para los modos de partición guiada y manual. "Guiado:
usar todo el disco" es el esquema de partición más simple y común, que asignará un disco completo a Kali
Linux.
Las siguientes dos selecciones usan Logical Volume Manager (LVM) para configurar particiones lógicas (en lugar de
físicas), opcionalmente encriptadas. Discutiremos LVM y el cifrado más adelante en este capítulo con la sección4.2.2
, “Instalación en un sistema de archivos totalmente cifrado” [página 88]).
Finalmente, la última opción inicia la partición manual, lo que permite esquemas de partición más
avanzados, como instalar Kali Linux junto con otros sistemas operativos. Discutiremos el modo manual en la
siguiente sección ("Cuidado: el cargador de arranque y el arranque dual” [página 87])
En este ejemplo, asignaremos un disco duro completo a Kali, por lo que seleccionamos "Guiado: usar todo el disco" para
continuar con el siguiente paso.
La siguiente pantalla (que se muestra en la Figura4.9, “Disco a usar para el particionamiento guiado” [página 77]) le
permite elegir el disco donde se instalará Kali seleccionando la entrada correspondiente (por ejemplo, “SCSI3 (0,0,0)
(sda) - 21.5 GB VMware, VMware Virtual S”). Una vez seleccionada, la partición guiada continuará. Esta opción
borrará todos los datos en este disco, así que elija sabiamente.
A continuación, la herramienta de partición guiada ofrece tres métodos de partición, que corresponden a diferentes usos,
como se muestra en la Figura4.10, “Asignación de partición guiada” [página 78].
El primer método se llama "Todos los archivos en una partición". Todo el árbol del sistema Linux se almacena en un
solo sistema de archivos, correspondiente a la raíz ("/”) directorio. Este esquema de partición simple y robusto
funciona perfectamente bien para sistemas personales o de un solo usuario. A pesar del nombre, en realidad se
crearán dos particiones: la primera albergará el sistema completo, la segunda la memoria virtual (o "intercambio").
El segundo método, “Separar/hogar/partición”, es similar, pero divide la jerarquía de archivos en dos: una
partición contiene el sistema Linux (/), y el segundo contiene "directorios de inicio" (es decir, datos de
usuario, en archivos y subdirectorios disponibles bajo/hogar/). Una ventaja de este método es que es fácil
conservar los datos de los usuarios si tiene que reinstalar el sistema.
Si es un usuario con menos experiencia que trabaja en un sistema con datos existentes, tenga mucho cuidado con este
método de configuración, ya que es muy fácil cometer errores que podrían provocar la pérdida de datos.
Si está utilizando el modo de partición manual, el instalador puede reducir una partición de
Microsoft Windows con bastante facilidad. Solo necesita elegir la partición de Microsoft
Windows e ingresar su nuevo tamaño (esto funciona igual con las particiones FAT y NTFS).
La primera pantalla del instalador manual es en realidad la misma que se muestra en la Figura4.11, “
Validación de particiones” [página 79], excepto que no incluye nuevas particiones para crear. Depende de
usted agregarlos.
Primero, verá una opción para ingresar a "Particionamiento guiado" seguida de varias opciones de configuración. A
continuación, el instalador mostrará los discos disponibles, sus particiones y cualquier posible espacio libre que aún no se
haya particionado. Puede seleccionar cada elemento visualizado y pulsar el botónIngresarclave para interactuar con él,
como de costumbre.
Si el disco es completamente nuevo, es posible que deba crear una tabla de particiones. Puede hacerlo
seleccionando el disco. Una vez hecho esto, debería ver espacio libre disponible en el disco.
Para hacer uso de este espacio libre, debe seleccionarlo y el instalador le ofrecerá dos formas de crear
particiones en ese espacio.
La primera entrada creará una única partición con las características (incluido el tamaño) de su
elección. La segunda entrada usará todo el espacio libre y creará múltiples particiones con la ayuda del
asistente de particionamiento guiado (vea la sección4.2.1.12.1, “Particionamiento guiado” [página 75]).
Esta opción es particularmente interesante cuando desea instalar Kali junto con otro sistema
operativo, pero no desea microgestionar el diseño de la partición. La última entrada mostrará los
números de cilindro/culata/sector del inicio y del final del espacio libre.
Cuando seleccione "Crear una nueva partición", entrará en la parte principal de la secuencia de partición
manual. Después de seleccionar esta opción, se le pedirá un tamaño de partición. Si el disco utiliza una tabla
de particiones de MSDOS, se le dará la opción de crear una partición primaria o lógica. (Cosas que debe
saber: solo puede tener cuatro particiones primarias pero muchas más particiones lógicas. La partición que
contiene/bota, y por lo tanto el kernel, debe ser primario, las particiones lógicas residen en una partición
extendida, que consume una de las cuatro particiones primarias). Luego debería ver la pantalla de
configuración de partición genérica:
Para resumir este paso de partición manual, echemos un vistazo a lo que puede hacer con la nueva
partición. Puede:
• Úselo como unpartición de intercambio. Cuando el kernel de Linux carece de suficiente memoria libre, almacenará partes
inactivas de RAM en una partición de intercambio especial en el disco duro. El subsistema de memoria virtual hace que esto
sea transparente para las aplicaciones. Para simular la memoria adicional, Microsoft Windows utiliza un archivo de
intercambio (paginación) que se encuentra directamente en un sistema de archivos. Por el contrario, Linux utiliza una
partición dedicada a este propósito, de ahí el término partición de intercambio.
• Conviértalo en un "volumen físico para el cifrado" para proteger la confidencialidad de los datos en ciertas
particiones. Este caso está automatizado en el particionamiento guiado. Mira la sección4.2.2, “Instalación en un
sistema de archivos totalmente cifrado” [página 88] para obtener más información.
Cuando haya terminado, puede retirarse del particionamiento manual seleccionando "Deshacer cambios en las
particiones" o escribir los cambios en el disco seleccionando "Finalizar el particionamiento y escribir cambios en el
disco" en la pantalla del instalador manual (Figura4.11, “Validación de particiones” [página 79]).
El siguiente paso, que no requiere ninguna interacción del usuario, copia el contenido de la imagen en vivo en el sistema
de archivos de destino, como se muestra en la Figura4.14, “Copia de los datos de la imagen en vivo” [página 83].
Si desea utilizar un espejo local en lugar dehttp.kali.org,puede pasar su nombre en la línea de comando del kernel (en el
momento del arranque) con una sintaxis como esta:espejo/http/nombre de host=mi.propio.espejo.
El programa instalador propone utilizar unservidor proxy HTTPcomo se muestra en la figura4.15, “Utilice un proxy
HTTP” [página 84]. Un proxy HTTP es un servidor que reenvía solicitudes HTTP para usuarios de la red. A veces
ayuda a acelerar las descargas manteniendo una copia de los archivos que se han transferido a través de él
(entonces hablamos de un proxy de almacenamiento en caché). En algunos casos, es el único medio de acceder a
un servidor web externo; en tales casos, el instalador solo podrá descargar los paquetes de Debian si completa
correctamente este campo durante la instalación. Si no proporciona una dirección proxy, el instalador intentará
conectarse directamente a Internet.
Si está instalando el sistema desde las imágenes del instalador o del netinstaller, ahora tendrá la
opción de elegir qué paquetes desea instalar. Tenga en cuenta que esto requerirá acceso a Internet si
está utilizando la imagen de netinstaller. Se le da a elegir el entorno de escritorio y la selección de
herramientas que le gustaría incluir. También puede cambiar estas selecciones en cualquier momento
después de instalar Kali Linux, incluso si usa la imagen en vivo para instalar Kali.
El cargador de arranque es el primer programa iniciado por el BIOS. Este programa carga el kernel de Linux en la
memoria y luego lo ejecuta. El cargador de arranque a menudo ofrece un menú que le permite elegir el kernel para
cargar o el sistema operativo para arrancar.
Debe instalar GRUB en el Registro de inicio maestro (MBR) a menos que ya tenga instalado otro sistema Linux que
sepa cómo iniciar Kali Linux. Como se observa en la figura4.17, “Instale el cargador de arranque GRUB en un disco
duro” [página 86], la modificación del MBR hará que los sistemas operativos no reconocidos que dependen de él no
se puedan iniciar hasta que corrija la configuración de GRUB.
En este paso (Figura4.18, “Dispositivo para la instalación del cargador de arranque” [página 87]), debe seleccionar en qué
dispositivo se instalará GRUB. Esta debería ser su unidad de arranque actual.
De forma predeterminada, el menú de inicio propuesto por GRUB muestra todos los kernels de Linux instalados, así como
cualquier otro sistema operativo que se haya detectado. Es por eso que debe aceptar la oferta para instalarlo en el Master
Boot Record. Mantener las versiones anteriores del kernel conserva la capacidad de iniciar el sistema si el kernel instalado
más recientemente está defectuoso o mal adaptado al hardware. Por lo tanto, le recomendamos que mantenga instaladas
algunas versiones anteriores del kernel.
Cuidado: el cargador de arranque Esta fase del proceso de instalación detecta los sistemas operativos que ya están instalados en la
y arranque dual computadora y agregará automáticamente las entradas correspondientes en el menú de inicio. Sin
embargo, no todos los programas de instalación hacen esto.
mihttps://www.debian.org/releases/stable/amd64/ch08s06.en.html
Ahora que la instalación está completa, el programa le pide que desconecte su unidad USB o retire el DVD-
ROM del lector para que su computadora pueda iniciarse en su nuevo sistema Kali después de que el
instalador reinicie el sistema (Figura4.19, “Instalación completa” [página 88]).
Finalmente, el instalador realizará un trabajo de limpieza, como eliminar paquetes que son específicos para crear el
entorno en vivo. También detectará si Kali Linux se ha instalado en una máquina virtual (VM) e instalará
automáticamente cualquier herramienta de invitado para ayudar a la integración entre el host y el invitado de Kali.
Para garantizar la confidencialidad de sus datos, puede configurar particiones cifradas. Esto protegerá sus datos en
caso de pérdida o robo de su computadora portátil o disco duro. La herramienta de partición puede ayudarte en
este proceso, tanto en modo guiado como manual.
Introducción a LVM
Hablemos primero de LVM. Utilizando la terminología LVM, unpartición virtuales un volumen lógico, que forma
parte de ungrupo de volumen, o una asociación de varios volúmenes físicos. Los volúmenes físicos son particiones
reales (o particiones virtuales exportadas por otras abstracciones, como un dispositivo RAID de software o una
partición cifrada).
Con su falta de distinción entre particiones "físicas" y "lógicas", LVM le permite crear particiones "virtuales" que
abarcan varios discos. Los beneficios son dobles: el tamaño de las particiones ya no está limitado por discos
individuales sino por su volumen acumulativo, y puede cambiar el tamaño de las particiones existentes en
cualquier momento, por ejemplo, después de agregar un disco adicional.
Esta técnica funciona de una manera muy simple: cada volumen, ya sea físico o lógico, se divide en bloques del
mismo tamaño, que LVM correlaciona. La adición de un nuevo disco provocará la creación de un nuevo volumen
físico que proporcionará nuevos bloques que se pueden asociar a cualquier grupo de volúmenes. Todas las
particiones del grupo de volúmenes pueden aprovechar al máximo el espacio adicional asignado.
Introducción a LUKS
Para proteger sus datos, puede agregar una capa de cifrado debajo del sistema de archivos de su elección.
Linux (y más particularmente eldm-criptadriver) utiliza el mapeador de dispositivos para crear la partición
virtual (cuyo contenido está protegido) basada en una partición subyacente que almacenará los datos de
forma cifrada (gracias a LUKS). LUKS estandariza el almacenamiento de los datos cifrados, así como la
metainformación que indica los algoritmos de cifrado utilizados.
Configuraremos LUKS como parte de nuestra función "nuke" más adelante en "Agregar una contraseña de Nuke para
mayor seguridad” [página 250].
Partición de intercambio cifrada Cuando se usa una partición cifrada, la clave de cifrado se almacena en la memoria (RAM) y, cuando hiberna,
una computadora portátil copiará la clave, junto con otros contenidos de la RAM, en la partición de
intercambio del disco duro. Dado que cualquier persona con acceso al archivo de intercambio (incluido un
técnico o un ladrón) podría extraer la clave y descifrar sus datos, el archivo de intercambio debe estar
protegido con cifrado.
Debido a esto, el instalador le advertirá si intenta utilizar una partición cifrada junto con una
partición de intercambio no cifrada.
El proceso de instalación de LVM encriptado es el mismo que una instalación estándar excepto por el paso
de partición (Figura4.20, “Particionamiento guiado con LVM cifrado” [página 90]) donde, en su lugar,
seleccionará “Guiado: use todo el disco y configure LVM encriptado”. El resultado neto será un sistema al que
no se podrá iniciar ni acceder hasta que se proporcione la frase de contraseña de cifrado. Esto cifrará y
protegerá los datos en su disco.
El instalador de particionamiento guiado asignará automáticamente una partición física para el almacenamiento de
datos cifrados, como se muestra en la Figura4.21, “Confirmar cambios en la tabla de particiones” [página 91]. En
este punto, el instalador confirmará los cambios antes de que se escriban en el disco.
Esta nueva partición luego se inicializa con datos aleatorios, como se muestra en la Figura4.22, “Borrado de datos
en partición cifrada” [página 92]. Esto hace que las áreas que contienen datos sean indistinguibles de las áreas no
utilizadas, lo que dificulta la detección y, posteriormente, el ataque de los datos cifrados.
A continuación, el instalador le pide que ingrese una frase de contraseña de cifrado (Figura4.23, “Ingrese su frase
de contraseña de cifrado” [página 93]). Para ver el contenido de la partición cifrada, deberá ingresar esta frase de
contraseña cada vez que reinicie el sistema. Tenga en cuenta la advertencia en el instalador: su sistema encriptado
solo será tan fuerte como esta frase de contraseña.
La herramienta de partición ahora tiene acceso a una nueva partición virtual cuyo contenido se almacena cifrado en
la partición física subyacente. Dado que LVM usa esta nueva partición como un volumen físico, puede proteger
varias particiones (o volúmenes lógicos de LVM) con la misma clave de cifrado, incluida la partición de intercambio
(consulte la barra lateral "Partición de intercambio cifrada” [página 89]). Aquí, LVM no se usa para facilitar la
ampliación del tamaño del almacenamiento, sino solo por la comodidad de la indirección que permite dividir una
única partición cifrada en varios volúmenes lógicos.
A continuación, se muestra el esquema de partición resultante (Figura4.24, “Validación de particiones para la instalación de
LVM cifrado” [página 94]) para que pueda ajustar la configuración según sea necesario.
Finalmente, después de validar la configuración de la partición, la herramienta solicita confirmación para escribir los cambios en los
discos, como se muestra en la Figura4.25, “Confirmar particiones para formatear” [página 95].
Finalmente, el proceso de instalación continúa normalmente como se documenta en la sección4.2.1.14, “Configuración del
administrador de paquetes (apto)” [página 84].
Los instaladores de Debian y Kali son muy modulares: en el nivel básico, solo ejecutan muchos scripts
(empaquetados en pequeños paquetes llamados udeb, para µdeb o micro-deb) uno tras otro. Cada guión se basa
endebconf(ver "EldebconfHerramienta” [página 220]), que interactúa con usted, el usuario, y almacena parámetros de
instalación. Debido a esto, el instalador también se puede automatizar a través de la preconfiguración de debconf,
una función que le permite proporcionar respuestas desatendidas a las preguntas de instalación.
Hay varias formas de preconfigurar respuestas para el instalador. Cada método tiene sus propias ventajas y
desventajas. Dependiendo de cuándo ocurra la preconfiguración, las preguntas que pueden preconfigurarse
varían.
Puede preconfigurar cualquier pregunta del instalador con parámetros de arranque que terminan en la línea de comandos
del kernel, accesible a través de/proc/líneacmd. Algunos cargadores de arranque le permitirán editar estos parámetros de
forma interactiva (lo cual es práctico para fines de prueba), pero si desea que los cambios sean persistentes, deberá
modificar la configuración del cargador de arranque.
No hay restricciones sobre qué preguntas puede preconfigurar, ya que los parámetros de arranque están disponibles
desde el inicio del proceso de instalación y se procesan muy pronto. Sin embargo, el número de parámetros de arranque
está limitado a 32 y varios de ellos ya se utilizan de forma predeterminada. También es importante darse cuenta de que, en
ocasiones, cambiar la configuración del cargador de arranque puede no ser trivial.
En la sección9.3, “Creación de imágenes ISO Kali Live personalizadas” [página 241] también aprenderá cómo
modificar la configuración de isolinux cuando genera su propia imagen ISO de Kali.
Puede agregar un archivo llamadopreseed.cfgen la raíz del instaladorinitrd(este es el initrd que se usa para iniciar el
instalador). Por lo general, esto requiere reconstruir el paquete fuente debian-installer para generar nuevas
versiones de initrd. Sin embargo,construcción en vivoofrece una manera conveniente de hacer esto, que se detalla en
la sección9.3, “Creación de imágenes ISO Kali Live personalizadas” [página 241].
Este método tampoco tiene restricciones sobre las preguntas que puede preconfigurar, ya que el archivo de
preconfiguración está disponible inmediatamente después del arranque. En Kali, ya usamos esta función para
personalizar el comportamiento del instalador oficial de Debian.
Puede agregar un archivo predeterminado en el medio de arranque (DVD o llave USB); la preconfiguración ocurre tan pronto como
se monta el medio, lo que significa justo después de las preguntas sobre el idioma y la distribución del teclado. Elpreconfiguración/
archivoEl parámetro de arranque se puede usar para indicar la ubicación del archivo de preconfiguración (por
1https://www.debian.org/releases/stable/amd64/apbs02#preseed-aliases
Puede hacer que un archivo preconfigurado esté disponible en la red a través de un servidor web y decirle al instalador
que descargue ese archivo preconfigurado agregando el parámetro de arranquepreconfiguración/url=http://servidor/
preseed.cfg (o usando elURLalias).
Sin embargo, cuando utilice este método, recuerde que primero debe configurar la red. Esto significa que las
preguntas de debconf relacionadas con la red (en particular, el nombre del host y el nombre del dominio) y todas
las preguntas anteriores (como el idioma y el país) no pueden preconfigurarse con este método. Este método se
usa con mayor frecuencia en combinación con parámetros de arranque que preconfiguran esas preguntas
específicas.
Este método de preconfiguración es el más flexible, ya que puede cambiar la configuración de instalación sin
cambiar los medios de instalación.
retrasando el lenguaje, Para superar la limitación de no poder preseleccionar las preguntas de idioma, país y
País, Teclado teclado, puede agregar el parámetro de arranqueauto-instalar/habilitar=verdadero
Preguntas (oautomático=verdadero). Con esta opción, las preguntas se realizarán más adelante en el proceso, después de
que se haya configurado la red y, por lo tanto, después de la descarga del archivo preconfigurado.
Un archivo preconfigurado es un archivo de texto sin formato en el que cada línea contiene la respuesta a una pregunta de
Debconf. Una línea se divide en cuatro campos separados por espacios en blanco (espacios o tabuladores). Por ejemplo,di mirror/-
suite string kali-rolling:
• El primer campo indica el propietario de la pregunta. Por ejemplo, "di" se usa para preguntas relevantes para
el instalador. También puede ver un nombre de paquete, para preguntas provenientes de paquetes de
Debian (como en este ejemplo:atftpd atftpd/use_inetd booleano falso).
La forma más sencilla de escribir un archivo preconfigurado es instalar un sistema a mano. Entonces el
debconf-get-selections --instaladorEl comando proporcionará las respuestas que proporcionó al instalador. Puede
obtener respuestas dirigidas a otros paquetes condebconf-get-selections. Sin embargo, una solución más limpia
es escribir el archivo preconfigurado a mano, comenzando con un ejemplo y luego revisando la
documentación. Con este enfoque, solo se pueden preconfigurar las preguntas en las que se deba anular la
respuesta predeterminada. Proporcionar laprioridad=críticoparámetro de arranque para indicar a Debconf
que solo haga preguntas críticas y que use la respuesta predeterminada para los demás.
Guía de instalación La guía de instalación de Debian, disponible en línea, incluye documentación detallada sobre el uso
Apéndice de un archivo preconfigurado en un apéndice. También incluye un archivo de muestra detallado y
comentado, que puede servir como base para personalizaciones locales.
mihttps://www.debian.org/releases/stable/amd64/apb
mihttps://www.debian.org/releases/stable/example-preseed.txt
Sin embargo, tenga en cuenta que los enlaces anteriores documentan la versión estable de Debian y
que Kali usa la versión de prueba, por lo que puede encontrar ligeras diferencias. También puede
consultar el manual de instalación alojado en el sitio web del proyecto Debian-installer. Puede estar
más actualizado.
Kali Linux se ejecuta en una amplia variedad de dispositivos basados en ARM (computadoras portátiles, computadoras integradas y
placas de desarrollo, por ejemplo), pero no puede usar el instalador tradicional de Kali en estos dispositivos, ya que a menudo
tienen requisitos específicos en términos de configuración del kernel o del cargador de arranque. .
Para hacer que esos dispositivos sean más accesibles para los usuarios de Kali, Offensive Security desarrollóscripts para
construir imágenes de disco2que están listos para usar con varios dispositivos ARM. Proporcionan estas imágenes
pregeneradas, listas para descargar en su sitio web:
mihttps://www.offensive-security.com/kali-linux-arm-images/
Dado que estas imágenes están disponibles, su tarea de instalar Kali en un dispositivo ARM se simplifica enormemente.
Aquí están los pasos básicos:
1. Descargue la imagen para su dispositivo ARM y asegúrese de que la suma de verificación coincida con la
proporcionada en el sitio web (consulte la sección2.1.3, “Verificación de integridad y autenticidad” [página 17] para
obtener explicaciones sobre cómo hacerlo). Tenga en cuenta que las imágenes suelen estar comprimidas en xz;
asegúrese de descomprimirlos conunxz.
2https://gitlab.com/kalilinux/build-scripts/kali-brazo
3. Copie la imagen descargada al dispositivo de almacenamiento condd. Esto es similar al proceso de copiar una
imagen ISO en una llave USB (consulte la sección2.1.4, “Copia de la imagen en un DVD-ROM o llave USB
” [página 19]).
# dd si =kali-imagen.imgde=/dev/algobs=512k
5. Inicie su dispositivo ARM e inicie sesión en él (usuario ”kali”, contraseña ”kali”). Si no tiene una pantalla
conectada, deberá descubrir la dirección IP que se ha asignado a través de DHCP y conectarse a esa
dirección a través de SSH. Algunos servidores DHCP tienen herramientas o interfaces web para
mostrar las concesiones actuales. Si no tiene esta opción, use un sniffer para buscar el tráfico de
arrendamiento de DHCP o un escaneo ICMP/ARP de la red local.
6. Cambie la contraseña de usuario predeterminada y genere nuevas claves de host SSH, ¡especialmente si el
dispositivo se ejecutará permanentemente en una red pública! Estos pasos son relativamente sencillos,
consulte “Generación de nuevas claves de host SSH” [página 115].
Casos especiales y Estas instrucciones son genéricas y, aunque funcionan para la mayoría de los dispositivos, siempre hay
documentación más detallada excepciones. Por ejemplo, los Chromebook requierenmodo desarrolladory otros dispositivos requieren una
pulsación de tecla especial para arrancar desde medios externos.
Dado que los dispositivos ARM se agregan con relativa frecuencia y sus especificaciones son tan
dinámicas, aquí no cubriremos las instrucciones de instalación específicas para varios dispositivos
ARM. En su lugar, consulte la sección dedicada "Kali en ARM" del sitio web de documentación de Kali
para obtener información sobre cada dispositivo ARM compatible con Offensive Security:
mihttps://www.kali.org/docs/arm/
El instalador es bastante confiable, pero puede encontrar errores o enfrentar problemas externos como:
problemas de red, espejos defectuosos y espacio en disco insuficiente. Debido a esto, es bastante útil para
poder solucionar problemas que aparecen en el proceso de instalación.
Cuando el instalador falla, le mostrará una pantalla poco útil como la que se muestra en la Figura4.26, “
Paso de instalación fallido” [página 100].
En este punto, es bueno saber que el instalador utiliza varias consolas virtuales: la pantalla principal que ve
se ejecuta en la quinta consola (para el instalador gráfico, CTRL+ALT+F5) o en la primera consola ( para el
instalador clásico en modo texto, CTRL+ALT+F1). En ambos casos, la cuarta consola ( CTRL+ALT+F4 ) muestra
registros de lo que sucede y, por lo general, puede ver un mensaje de error más útil allí, como el que se
muestra en la Figura4.27, “La pantalla de registro del instalador” [página 101], que revela que el instalador se
quedó sin espacio en disco.
Las consolas segunda y tercera (CTRL+ALT+F2 y CTRL+ALT+F3, respectivamente) albergan shells que puede utilizar para
investigar la situación actual con más detalle. BusyBox proporciona la mayoría de las herramientas de línea de comandos,
por lo que el conjunto de funciones es bastante limitado, pero es suficiente para resolver la mayoría de los problemas que
probablemente encuentre.
¿Qué se puede hacer en el Puede inspeccionar y modificar la base de datos debconf condebconf-obtenery
Shell del instalador conjunto debconf. Estos comandos son especialmente convenientes para probar valores de preconfiguración.
Puede inspeccionar cualquier archivo (como el registro de instalación completo disponible en/var/log/
syslog) congatoomenos. Puede editar cualquier archivo connano, incluidos todos los archivos que se
instalan en el sistema. El sistema de archivos raíz se montará en/objetivouna vez que se haya
completado el paso de partición del proceso de instalación.
Una vez configurado el acceso a la red, puede utilizarwgetyCarolina del Norte(netcat) para recuperar y
exportar datos a través de la red.
Una vez que haga clic en Continuar desde la pantalla de falla del instalador principal (Figura4.26, “Paso de
instalación fallido” [página 100]), volverá a una pantalla que normalmente nunca verá (la Pantalla principal).
Si no puede resolver el problema, es posible que desee presentar un informe de error. El informe debe incluir los registros
del instalador, que puede recuperar con la función "Guardar registros de depuración" del menú principal. Ofrece múltiples
formas de exportar los registros, como se muestra en la Figura4.29, “Guardar registros de depuración (1/2)” [página 103].
El método más conveniente, y el que recomendamos, es dejar que el instalador inicie un servidor web que aloje los
archivos de registro (Figura4.30, “Guardar registros de depuración (2/2)” [página 104]). Luego puede iniciar un
navegador desde otra computadora en la misma red y descargar todos los archivos de registro y capturas de
pantalla que haya tomado con el botón Captura de pantalla disponible en cada pantalla.
4.6. Resumen
En este capítulo, nos enfocamos en el proceso de instalación de Kali Linux. Discutimos los requisitos mínimos de
instalación de Kali Linux, el proceso de instalación para sistemas de archivos estándar y totalmente encriptados, la
preconfiguración, que permite instalaciones desatendidas, cómo instalar Kali Linux en varios dispositivos ARM y
qué hacer en el raro caso de una falla en la instalación.
Resumen de consejos:
• Los requisitos de instalación para Kali Linux varían desde un servidor SSH básico sin escritorio, con tan
solo 128 MB de RAM (se recomiendan 512 MB) y 2 GB de espacio en disco, hasta el más alto.kalilinux-
predeterminadometapaquete, con al menos 2048 MB de RAM y 20 GB de espacio en disco. Además,
su máquina debe tener una CPU compatible con al menos una de las arquitecturas amd64, i386 o
arm64.
• Kali se puede instalar fácilmente como el sistema operativo principal, junto con otros sistemas operativos a través de
la partición y la modificación del cargador de arranque, o como una máquina virtual.
• El instalador también se puede automatizar a través de la preconfiguración de debconf, una función que le permite
proporcionar respuestas desatendidas a las preguntas de instalación.
• Un archivo preconfigurado es un archivo de texto sin formato en el que cada línea contiene la respuesta a una pregunta de
Debconf. Una línea se divide en cuatro campos separados por espacios en blanco (espacios o tabuladores). Puede
preconfigurar respuestas al instalador con parámetros de arranque, con un archivo preconfigurado en initrd, con un
archivo preconfigurado en el medio de arranque o con un archivo preconfigurado de la red.
• Kali Linux se ejecuta en una amplia variedad de dispositivos basados en ARM, como computadoras portátiles,
computadoras integradas y placas de desarrollo. La instalación de ARM es bastante sencilla. Descargue la imagen
adecuada, cópiela en una tarjeta SD, unidad USB o módulo de controlador multimedia incorporado (eMMC),
conéctelo, inicie el dispositivo ARM, encuentre su dispositivo en la red, inicie sesión y cambie la contraseña SSH y
claves de host SSH.
• Puede depurar instalaciones fallidas con consolas virtuales (accesible con CTRL+ALT y
teclas de función),debconf-obteneryconjunto debconfcomandos, leyendo el/var/registro/syslog
log o enviando un informe de error con los archivos de registro recuperados con la función "Guardar registros de
depuración" del instalador.
Ahora que hemos discutido los fundamentos de Linux y la instalación de Kali Linux, analicemos la configuración
para que pueda comenzar a adaptar Kali a sus necesidades.
Red
Usuarios y grupos
Servicios
apache
postgresql
SSH
Capítulo
En una instalación de escritorio típica, tendráGerente de Redesya instalado y se puede controlar y configurar a
través de la configuración del sistema de Xfce y a través del menú superior derecho como se muestra en la Figura
5.1, “Pantalla de configuración de red” [página 108].
La configuración de red predeterminada se basa en DHCP para obtener una dirección IP, un servidor DNS y una puerta de
enlace, pero puede usar el ícono de ajustes en la esquina inferior izquierda para modificar la configuración de muchas
maneras (por ejemplo: establezca la dirección MAC, cambie a una configuración estática, habilitar o deshabilitar IPv6 y
agregar rutas adicionales). Puede crear perfiles para guardar múltiples configuraciones de red cableada y fácilmente
NetworkManager también maneja conexiones por banda ancha móvil (Wireless Wide Area Network WWAN) y por
módems usando protocolo punto a punto sobre ethernet (PPPoE). Por último, pero no menos importante,
proporciona integración con muchos tipos de redes privadas virtuales (VPN) a través de complementos dedicados:
SSH, OpenVPN, VPNC de Cisco, PPTP, Strongswan. Revisar lagerente de Redes-*paquetes; la mayoría de ellos no
están instalados por defecto.
Usandosudopara acceder a Elsudo(super usuario do) permite a los usuarios privilegiados ejecutar comandos con permisos
los privilegios administrativos administrativos. Esto da acceso total a elementos que pueden estar restringidos solo al
usuario raíz, como programas en/sbin/o acceso a opciones de red que son útiles para
herramientas de prueba de penetración comunes.
Cada dispositivo de red administrado porsi arriba abajose puede desconfigurar en cualquier momento
consi abajo dispositivo de red. A continuación, puede modificar/etc/red/interfacesy vuelva a activar la red
(con la nueva configuración) consi arribadispositivo de red.
Echemos un vistazo a lo que podemos poner en el archivo de configuración de ifupdown. Hay dos directivas principales:
autodispositivo de red, que cuentasi arriba abajopara configurar automáticamente la interfaz de red una vez que esté
disponible, yYo afrontotipo de dispositivo de red inet/inet6para configurar una interfaz determinada. Por ejemplo, una
configuración simple de DHCP se ve así:
auto bajo
auto eth0
iface eth0 inet dhcp
Tenga en cuenta que la configuración especial para el dispositivo de bucle invertido siempre debe estar presente en
este archivo. Para una configuración de dirección IP fija, debe proporcionar más detalles, como la dirección IP, la
red y la IP de la puerta de enlace:
auto eth0
iface eth0 inet estático
dirección 192.168.0.3
máscara de red 255.255.255.0
difusión 192.168.0.255 red
192.168.0.0
puerta de enlace 192.168.0.1
Para las interfaces inalámbricas, debe tener lawpasupplicantpaquete (incluido en Kali por defecto), que
proporciona muchoswpa-*opciones que se pueden utilizar en/etc/red/interfaces. Echar un vistazo
en/usr/share/doc/wpasupplicant/README.Debian.gzpara ejemplos y explicaciones. El
las opciones más comunes sonwpa-ssid (que define el nombre de la red inalámbrica a unirse) y PSK
WPA (que define la frase de contraseña o la clave que protege la red).
iface wlan0 inet dhcp
wpa-ssid MyNetWork
secreto de texto plano wpa-psk
Mientrassi arriba abajoes la herramienta histórica utilizada por Debian y Kali, y aunque todavía es la
predeterminada para instalaciones mínimas, hay una herramienta más nueva que vale la pena considerar:systemd-
networkd. Su integración con elsistemadEl sistema init lo convierte en una opción muy atractiva. No es específico de
las distribuciones basadas en Debian (al contrario desi arriba abajo) y ha sido diseñado para ser muy pequeño,
eficiente y relativamente fácil de configurar si comprende la sintaxis de los archivos unitarios de systemd. Esta es
una opción especialmente atractiva si se consideraGerente de Redesinflado y difícil de configurar.
[Fósforo]
Nombre=enp2s0
[Red]
Dirección=192.168.0.15/24
Puerta de enlace=192.168.0.1
DNS=8.8.8.8
[Fósforo]
Nombre=es*
[Red]
DHCP=sí
Tenga en cuenta quesystem-networkdestá deshabilitado de forma predeterminada, por lo que si desea usarlo, debe
habilitarlo. tambien depende desystemd-resueltopara una correcta integración de la resolución de DNS, que a su vez
requiere que usted reemplace/etc/resolv.confcon un enlace simbólico a/ejecutar/systemd/resolver/resolver.
conferencia, que es administrado porsystemd-resuelto.
A pesar desystemd-networkdsufre de algunas limitaciones, como la falta de soporte integrado para redes
inalámbricas, puede confiar en un externo preexistentewpa_supplicantconfiguración para soporte inalámbrico.
Sin embargo, es especialmente útil en contenedores y máquinas virtuales, y se desarrolló originalmente para
entornos en los que la configuración de red de un contenedor dependía de la configuración de red de su
host. En este escenario,systemd-networkdhace que sea más fácil administrar ambos lados de manera
consistente y al mismo tiempo admite todo tipo de dispositivos de red virtual que pueda necesitar en este
tipo de escenario (consultesystemd.netdev(5)en la sección6.1.1, “Páginas manuales” [página 128]).
La base de datos de usuarios y grupos de Unix consiste en los archivos de texto/etc/contraseña(lista de usuarios),
/etc/sombra(contraseñas encriptadas de los usuarios),/etc/grupo(lista de grupos), y/etc./gshadow
(contraseñas cifradas de grupos). Sus formatos están documentados encontraseña(5),sombra(5),
grupo(5), ysombra(5)respectivamente (ver sección6.1.1, “Páginas manuales” [página 128]). Si bien estos archivos se
pueden editar manualmente con herramientas comoVIPWyvigor, existen herramientas de nivel superior para realizar
las operaciones más habituales.
Usandogetenteconsultar Elgetente(obtener entradas) comprueba las bases de datos del sistema (incluidas las de
la base de datos de usuarios usuarios y grupos) utilizando las funciones de biblioteca adecuadas, que a su vez llaman a los
módulos de cambio de servicio de nombres (NSS) configurados en el/etc/nsswitch.confarchivo. El
comando toma uno o dos argumentos: el nombre de la base de datos a verificar y una posible
clave de búsqueda. Así, el comandocontraseña getent kaliuser1devolverá la información de la base
de datos del usuario con respecto al usuariokaliuser1.
Aunque Kali se ejecuta con mayor frecuencia con privilegios con permisos de sudo, a menudo es posible que
deba crear cuentas de usuario sin privilegios por varias razones, especialmente si está utilizando Kali como
sistema operativo principal. La forma más típica de agregar un usuario es con elagregar usuariocomando, que
toma un argumento requerido: el nombre de usuario para el nuevo usuario que le gustaría crear.
Elagregar usuarioEl comando hace algunas preguntas antes de crear la cuenta, pero su uso es bastante
sencillo. Su archivo de configuración,/etc/adduser.conf, incluye muchos escenarios interesantes. Puede, por
ejemplo, definir el rango de identificadores de usuario (UID) que se pueden usar, dictar si los usuarios
comparten o no un grupo común, definir shells predeterminados y más.
La creación de una cuenta desencadena la población del directorio de inicio del usuario con el contenido de
la/etc./skel/plantilla. Esto proporciona al usuario un conjunto de directorios estándar y archivos de
configuración.
En algunos casos, será útil agregar un usuario a un grupo (que no sea su grupo principal predeterminado)
para otorgar permisos adicionales. Por ejemplo, un usuario que está incluido en elestibadorEl grupo tiene
acceso completo a los comandos y servicios de Docker. Esto se puede lograr con un comando como
agregar usuariogrupo de usuario.
Los siguientes comandos permiten modificar la información almacenada en campos específicos de las bases de datos de los
usuarios:
• CHF—(Cambiar Nombre Completo), reservado para el superusuario (root), modifica elGECOS,o el campo
"información general".
• chsh—(CAMBIAR SHell) cambia el shell de inicio de sesión del usuario. Sin embargo, las opciones disponibles
se limitarán a las enumeradas en/etc/conchas; el administrador, por otro lado, no está sujeto a esta restricción
y puede configurar el shell para cualquier programa elegido.
pasar el nombre de usuario como argumento o enumerar la configuración actual usando -yousuarioopción.
Alternativamente, también puede forzar la caducidad de una contraseña usando elcontraseña -eusuario
comando, que obliga al usuario a cambiar su contraseña la próxima vez que inicie sesión.
Puede verse en la necesidad de inhabilitar una cuenta (bloquear a un usuario) como medida disciplinaria, a efectos
de una investigación, o simplemente en caso de ausencia prolongada o definitiva de un usuario. Una cuenta
deshabilitada significa que el usuario no puede iniciar sesión ni obtener acceso a la máquina. La cuenta permanece
intacta en la máquina y no se eliminan archivos ni datos; es simplemente inaccesible. Esto se logra usando el
comandocontraseña -lusuario(cerrar con llave). La reactivación de la cuenta se realiza de manera similar, con el -tu
opción (desbloquear).
Elañadir grupoydelgrupolos comandos agregan o eliminan un grupo, respectivamente. Elgrupo modEl comando
modifica la información de un grupo (suGido identificador). El comandogcontraseñagrupocambia la contraseña
del grupo, mientras que elgcontraseña -rgrupoel comando lo elimina.
Trabajando con Varios Cada usuario puede ser miembro de muchos grupos. El grupo principal de un usuario se crea, de manera
Grupos predeterminada, durante la configuración inicial del usuario. De forma predeterminada, cada archivo que
crea un usuario pertenece al usuario, así como al grupo principal del usuario. Esto no siempre es deseable;
por ejemplo, cuando el usuario necesita trabajar en un directorio compartido por un grupo que no sea su
grupo principal. En este caso, el usuario necesita cambiar de grupo usando uno de los siguientes comandos:
nuevo grupo, que inicia un nuevo shell, osg, que simplemente ejecuta un comando utilizando el grupo
alternativo proporcionado. Estos comandos también permiten al usuario unirse a un grupo al que no
pertenece actualmente. Si el grupo está protegido con contraseña, deberán proporcionar la contraseña
adecuada antes de ejecutar el comando.
Alternativamente, el usuario puede configurar elsetgidbit en el directorio, lo que hace que los archivos creados
en ese directorio pertenezcan automáticamente al grupo correcto. Para más detalles, consulte la barra lateral
“setgiddirectorio ypoco pegajoso” [página 58].
En esta sección, veremos los servicios (a veces llamados demonios) o programas que se ejecutan como un
proceso en segundo plano y realizan varias funciones para el sistema. Comenzaremos analizando los
archivos de configuración y procederemos a explicar cómo funcionan algunos servicios importantes (como
SSH, PostgreSQL y Apache) y cómo se pueden configurar.
La política de Kali Linux es tener cualquier servicio de red deshabilitado por defecto, lo cual es un comportamiento
diferente al de otros sistemas operativos Linux. Para más información ver apartado1.5, “Políticas de Kali Linux” [página 10].
Cuando desee configurar un paquete desconocido, debe proceder por etapas. Primero, debe leer lo
que ha documentado el mantenedor del paquete. El/usr/compartir/doc/paquete/LÉAME. DebianEl archivo es un
buen lugar para comenzar. Este archivo a menudo contendrá información sobre el paquete, incluidos
indicadores que pueden remitirlo a otra documentación. A menudo se ahorrará mucho tiempo y
evitará mucha frustración leyendo este archivo primero, ya que a menudo detalla los errores más
comunes y las soluciones a los problemas más comunes.
A continuación, debe consultar la documentación oficial del software. Consulte la sección6.1, “Fuentes de
documentación” [página 128] para obtener sugerencias sobre cómo encontrar varias fuentes de
documentación. Eldpkg -L paquetecomando da una lista de archivos incluidos en el paquete; por lo tanto,
puede identificar rápidamente la documentación disponible (así como los archivos de configuración,
ubicados en/etc/). También,dpkg-s paquetemuestra los metadatos del paquete y muestra cualquier posible
paquete recomendado o sugerido; allí, puede encontrar documentación o tal vez una utilidad que facilitará la
configuración del software.
Finalmente, los archivos de configuración a menudo están autodocumentados por muchos comentarios
explicativos que detallan los diversos valores posibles para cada ajuste de configuración. En algunos casos, puede
poner en marcha el software quitando los comentarios de una sola línea en el archivo de configuración. En otros
casos, se proporcionan ejemplos de archivos de configuración en el/usr/compartir/doc/paquete/ejemplos/directorio.
Pueden servir como base para su propio archivo de configuración.
SSH le permite iniciar sesión de forma remota en una máquina, transferir archivos o ejecutar comandos. Es una
herramienta estándar de la industria (ssh) y servicio (sshd) para conectarse a máquinas de forma remota.
Mientras que laabre el servidor shpaquete está instalado por defecto, elSSHEl servicio está deshabilitado de forma predeterminada
y, por lo tanto, no se inicia en el momento del arranque. Puede iniciar manualmente el servicio SSH consystemctl iniciar ssho
configurarlo para que comience en el momento del arranque consystemctl habilitar ssh.
El servicio SSH tiene una configuración predeterminada relativamente sana, pero dadas sus poderosas capacidades
y su naturaleza sensible, es bueno saber qué puede hacer con su archivo de configuración./etc/ssh/sshd_config. Todas
las opciones están documentadas ensshd_config(5)(mira la sección6.1.1, “Páginas manuales” [página 128])
La configuración predeterminada permite inicios de sesión basados en contraseña. Si no desea esto, puede
deshabilitarlo configurandoContraseñaAutenticaciónaNo.Hacerlo significará que será necesario generar una clave
SSH. El servicio SSH escucha de forma predeterminada en el puerto 22, pero puede cambiar esto con elPuerto
directiva.
Generación de nuevo host SSH Cada servidor SSH tiene sus propias claves criptográficas; se denominan "claves de host
Llaves SSH" y se almacenan en/etc/ssh/ssh_host_*. Deben mantenerse en privado si desea
confidencialidad y no deben compartirse entre varias máquinas.
Cuando instala su sistema copiando una imagen de disco completa (en lugar de usar debianinstaller
como imágenes ARM), la imagen puede contener claves de host SSH generadas previamente que, por
lo tanto, debe reemplazar con claves recién generadas. La imagen probablemente también viene con
una contraseña de usuario predeterminada que desea restablecer al mismo tiempo. Puedes hacer
todo esto con los siguientes comandos:
# Contraseña
[...]
# rm /etc/ssh/ssh_host_*
# dpkg-reconfigure abre el servidor sh
# systemct reiniciar ssh
PostgreSQL es un servidor de base de datos. Rara vez es útil por sí solo, pero muchos otros servicios lo utilizan para
almacenar datos. Esos servicios generalmente accederán al servidor de la base de datos a través de la red y, por lo general,
requerirán credenciales de autenticación para poder conectarse. Por lo tanto, configurar esos servicios requiere crear
bases de datos PostgreSQL y cuentas de usuario con los privilegios apropiados en la base de datos. A
Múltiples PostgreSQL El paquete de PostgreSQL permite la coinstalación de varias versiones del servidor de la base de
versiones compatibles datos. También es posible manejar múltiplesracimos(un clúster es una colección de bases de datos
servidas por el mismoadministrador de correos). Para lograr esto, los archivos de configuración
se almacenan en/etc/postgresql/versión/nombre del clúster/.
Para que los clústeres se ejecuten en paralelo, a cada nuevo clúster se le asigna el siguiente número de
puerto disponible (generalmente 5433 para el segundo clúster). Elpostgresql.servicioEl archivo es un caparazón
vacío, lo que facilita actuar en todos los clústeres juntos, ya que cada clúster tiene su propio
propia unidad (postgresql@versión-grupo.servicio).
De forma predeterminada, PostgreSQL escucha las conexiones entrantes de dos maneras: en el puerto TCP
5432 de la interfaz localhost y en el socket basado en archivos./var/run/postgresql/.s.PGSQL.5432. Esto se puede
configurar enpostgresql.confcon varias directivas:escucha_direccionespara las direcciones a escuchar,puerto
para el puerto TCP, ydirectorios_socket_unixpara definir el directorio donde se crean los sockets basados en
archivos.
ElpostgresEl usuario es especial y tiene plenos privilegios administrativos sobre todas las bases de datos. Usaremos esta
identidad para crear nuevos usuarios y nuevas bases de datos.
Estos comandos deben conectarse al servidor PostgreSQL para hacer su trabajo y deben estar autenticados como
un usuario con suficientes privilegios para poder ejecutar la operación especificada. La forma más fácil de lograr
esto es usar elpostgrescuenta de Unix y conéctese a través del socket basado en archivos:
# su - postgres
En el ejemplo anterior, el -PAGla opción preguntacrear usuariopara consultar una contraseña una vez que crea la
nuevarey_phisherusuario. Mirando a lacreadobcomando, el -Odefine el usuario propietario de la nueva base de datos
(que, por lo tanto, tendrá todos los derechos para crear tablas y otorgar permisos, etc.). También queremos poder
usar cadenas Unicode, por lo que agregamos el -UE UTF-8opción para establecer la codificación, que a su vez
requiere que usemos el -Topción para elegir otra plantilla de base de datos.
Ahora podemos probar que podemos conectarnos a la base de datos a través del socket que escucha en localhost (-h
servidor local)como usuario king_phisher (-Uking_phisher):
rey_phisher=>
En primer lugar, vale la pena señalar que el concepto de "clúster de PostgreSQL" es unAdición específica de Debian1y que
no encontrará ninguna referencia a este término en eldocumentación oficial de PostgreSQL2. Desde el punto de vista de
las herramientas de PostgreSQL, dicho clúster es solo una instancia de un servidor de base de datos que se ejecuta en un
puerto específico.
Dicho esto, Debianpostgresql-comúnEl paquete proporciona múltiples herramientas para administrar dichos
clústeres: pg_createcluster,pg_dropcluster,pg_ctlcluster,pg_upgradecluster,
pg_renamecluster, ypg_lsclusters. No cubriremos todas esas herramientas aquí, pero puede consultar sus
respectivas páginas de manual para obtener más información.
Lo que debe saber es que cuando se instala una nueva versión principal de PostgreSQL en su sistema, creará
un nuevo clúster que se ejecutará en el siguiente puerto (generalmente 5433) y seguirá usando la versión
anterior hasta que migre sus bases de datos de la anterior. clúster al nuevo.
Puede recuperar una lista de todos los clústeres y su estado conpg_lsclusters. Más importante aún,
puede automatizar la migración de su clúster a la última versión de PostgreSQL con
1https://wiki.debian.org/PostgreSql
2https://www.postgresql.org/docs/
Una instalación típica de Kali Linux incluye el servidor web Apache, proporcionado por elapache2paquete. Al
ser un servicio de red, está deshabilitado por defecto. Puede iniciarlo manualmente coninicio systemctl
apache2.
Con más y más aplicaciones que se distribuyen como aplicaciones web, es importante tener
algún conocimiento de Apache para alojar esas aplicaciones, ya sea para uso local o para que
estén disponibles a través de la red.
Apache es un servidor modular y muchas funciones se implementan mediante módulos externos que el programa
principal carga durante su inicialización. La configuración predeterminada solo habilita los módulos más comunes,
pero la habilitación de nuevos módulos se realiza fácilmente ejecutandoa2enmodmódulo. Usar
a2dismodmódulopara deshabilitar un módulo. Estos programas solo crean (o eliminan) enlaces
simbólicos en/etc/apache2/mods-enabled/, apuntando a los archivos reales (almacenados en/etc/apache2/
mods-disponible/).
Hay muchos módulos disponibles, pero vale la pena considerar dos inicialmente: PHP y SSL (usado
para TLS). Las aplicaciones web escritas con PHP son ejecutadas por el servidor web Apache con la
ayuda del módulo dedicado provisto por ellibapache-mod-phppaquete, y su instalación habilita
automáticamente el módulo.
Apache 2.4 incluye el módulo SSL necesario para el Protocolo seguro de transferencia de hipertexto (HTTPS)
listo para usar. Primero debe habilitarse cona2enmod ssl, entonces se deben agregar las directivas requeridas
a los archivos de configuración. Se proporciona un ejemplo de configuración en/etc/apache2/
sitios-disponibles/predeterminado-ssl.conf. Verhttps://httpd.apache.org/docs/2.4/mod/mod_
ssl.htmlpara más información.
La lista completa de módulos estándar de Apache se puede encontrar en línea enhttps://httpd.apache.org/
docs/2.4/mod/index.html.
Con su configuración predeterminada, el servidor web escucha en el puerto 80 (como se configuró en/etc/
apache2/ puertos.conf), y sirve páginas desde el/var/www/html/directorio por defecto (como se configuró en
/etc/apache2/sites-enabled/000-default.conf).
Un host virtual es una identidad adicional para el servidor web. El mismo proceso de Apache puede servir a varios
sitios web (digamoswww.kali.orgywww.offensive-security.com)porque las solicitudes HTTP incrustan
La configuración predeterminada para Apache 2 habilita hosts virtuales basados en nombres. Además, se define un host
virtual predeterminado en /etc/apache2/sites-enabled/000-default.confarchivo; este host virtual se utilizará si no se
encuentra ningún host que coincida con la solicitud enviada por el cliente.
Importante
Las solicitudes relacionadas con hosts virtuales desconocidos siempre serán atendidas por el
primer host virtual definido, razón por la cual el paquete se envía como000-predeterminado.
conferenciaarchivo de configuración, que se ordena primero entre todos los demás archivos que
puede crear.
Luego, cada host virtual adicional se describe mediante un archivo almacenado en/etc/apache2/sitios-disponibles/. El archivo
generalmente lleva el nombre del nombre de host del sitio web seguido de una extensión .conferenciasufijo (por ejemplo:
www.kali.org.conf). A continuación, puede habilitar el nuevo host virtual cona2ensite www.kali.org. Aquí hay una
configuración mínima de host virtual para un sitio web cuyos archivos se almacenan en/srv/www.kali. org/www/(
definido con elRaiz del documentoopción):
También puede considerar agregarRegistro personalizadoyRegistro de erroresdirectivas para configurar Apache para generar
registros en archivos dedicados al host virtual.
Directivas comunes
Esta sección revisa brevemente algunas de las directivas de configuración de Apache más utilizadas.
<Directorio /var/www>
Opciones Incluye FollowSymLinks
AllowOverride All
ÍndiceDirectorio index.php index.html index.htm </
Directorio>
ElOpcionesLa directiva va seguida de una lista de opciones para habilitar. ElNingunoel valor deshabilita todas las opciones;
correspondientemente,Todoles permite a todos exceptoMultivistas.Las opciones disponibles incluyen:
• SymLinksIfOwnerMatch—también le dice al servidor que siga enlaces simbólicos, pero solo cuando el
enlace y su destino tienen el mismo propietario.
• Incluye—permiteEl lado del servidor incluye(SSI). Estas son directivas incrustadas en páginas HTML y
ejecutadas sobre la marcha para cada solicitud.
• Índices—le dice al servidor que enumere el contenido de un directorio si la solicitud HTTP enviada por el
cliente apunta a un directorio sin un archivo de índice (es decir, cuando no hay archivos mencionados por el
DirectorioÍndicedirectiva existe en este directorio).
• Vistas múltiples—permite la negociación de contenido; esto puede ser utilizado por el servidor para devolver una página
web que coincida con el idioma preferido según lo configurado en el navegador.
Requerir AutenticaciónEn algunas circunstancias, es necesario restringir el acceso a una parte de un sitio web, por
lo que solo los usuarios legítimos que proporcionan un nombre de usuario y una contraseña tienen acceso a los
contenidos.
El.htaccessEl archivo contiene las directivas de configuración de Apache que se aplican cada vez que una solicitud se refiere a
un elemento del directorio donde se encuentra el archivo..htaccessel archivo está almacenado. Estas directivas son
recursivas, expandiendo el alcance a todos los subdirectorios.
La mayoría de las directivas que pueden ocurrir en unDirectoriobloque también son legales en un.htaccessarchivo. El
Permitir sobrescrituradirectiva enumera todas las opciones que se pueden habilitar o deshabilitar a través de.
htaccess. Un uso común de esta opción es restringirCGI ejecutivo,para que el administrador elija qué usuarios
pueden ejecutar programas bajo la identidad del servidor web (lawww-datosusuario).
Se puede utilizar para restringir el acceso según muchos criterios; nos detendremos en describir la restricción de
acceso basada en la dirección IP del cliente, pero se puede hacer mucho más poderosa que eso, especialmente
cuando variosRequerirdirectivas se combinan dentro de unRequerir todobloquear.
Por ejemplo, podría restringir el acceso a la red local con la siguiente directiva:
Requerir ip 192.168.0.0/16
Kali utilizasistemadcomo su sistema init, que no solo es responsable de la secuencia de arranque, sino que también actúa
permanentemente como un administrador de servicios con todas las funciones, iniciando y monitoreando servicios.
Cada servicio está representado por ununidad de servicio, que se describe mediante un archivo de servicio que generalmente se envía en
[Unidad]
Descripción=Servidor OpenBSD Secure Shell
After=network.target auditd.service ConditionPathExists=!/etc/
ssh/sshd_not_to_be_run
[Servicio]
EnvironmentFile=-/etc/default/ssh ExecStart=/usr/
sbin/sshd -D $SSHD_OPTS ExecReload=/bin/kill
-HUP $MAINPID KillMode=proceso
[Instalar]
WantedBy=multi-user.target
Alias=sshd.service
Las unidades de destino son otra parte del diseño de systemd. Representan un estado deseado que desea alcanzar en
términos de unidades activadas (lo que significa un servicio en ejecución en el caso de las unidades de servicio). Existen
principalmente como una forma de agrupar dependencias en otras unidades. Cuando el sistema arranca, habilita las
unidades requeridas para llegar aldestino predeterminado(que es un enlace simbólico agráfico.objetivo, y que a su vez depende
deobjetivo multiusuario). Entonces, todas las dependencias de esos objetivos se activan durante el arranque.
Tales dependencias se expresan con elQuieredirectiva sobre la unidad de destino. Pero no tiene que editar la
unidad de destino para agregar nuevas dependencias, también puede crear un enlace simbólico que apunte a la
unidad dependiente en el/etc/sistemad/sistema/nombre de destino.objetivo.quiere/directorio. Y esto es exactamente lo que
Habilitar systemctlfoo.serviciohace. Cuando habilita un servicio, le dice a systemd que agregue una dependencia en los
objetivos enumerados en elBuscado porentrada de [Instalar]sección del archivo de la unidad de servicio. En
cambio,systemctl deshabilitarfoo.servicioelimina el mismo enlace simbólico y, por lo tanto, la dependencia.
ElpermitirydesactivarLos comandos no cambian nada con respecto al estado actual de los servicios.
Solo influyen en lo que sucederá en el próximo arranque. Si desea ejecutar el servicio
inmediatamente, debe ejecutarinicio systemctlfoo.servicio. Por el contrario, puede detenerlo con
detener systemctlfoo.servicio. También puede inspeccionar el estado actual de un servicio conestado del
sistemafoo.servicio, que incluye de forma útil las últimas líneas del registro asociado. Después de
haber cambiado la configuración de un servicio, es posible que desee volver a cargarlo o reiniciar
it: esas operaciones se hacen conrecarga systemctlfoo.servicioyreinicio systemctl
foo.serviciorespectivamente.
5.5. Resumen
En este capítulo, aprendimos cómo configurar Kali Linux. Configuramos ajustes de red, hablamos sobre
usuarios y grupos, y discutimos cómo crear y modificar cuentas de usuario, establecer contraseñas,
deshabilitar cuentas y administrar grupos. Finalmente, discutimos los servicios y explicamos cómo
configurar y mantener servicios genéricos, específicamente SSH, PostgreSQL y Apache.
Resumen de consejos:
• En una instalación de escritorio típica, tendráGerente de Redesya está instalado y se puede controlar y
configurar a través de la configuración del sistema de Xfce y a través del menú superior derecho.
• Puede configurar la red desde la línea de comandos con elsi arribaysi abajoherramientas, que leen
sus instrucciones del/etc/red/interfacesarchivo de configuración. Una herramienta aún más nueva,
systemd-networkdtrabaja con elsistemadsistema de inicio.
• Puede utilizar elgetentecomando para consultar la base de datos del usuario y otras bases de datos del sistema.
• Elagregar usuarioEl comando hace algunas preguntas antes de crear la cuenta, pero es una forma
sencilla de crear una nueva cuenta de usuario.
• Se pueden usar varios comandos para modificar campos específicos en la base de datos del usuario, incluidos:
Contraseña(cambiar la contraseña),CHF(cambiar el nombre completo y elGECOS,o campo de información general),chsh(
cambiar shell de inicio de sesión),cambio(cambiar la antigüedad de la contraseña), ycontraseña -eusuario
(obliga al usuario a cambiar su contraseña la próxima vez que inicie sesión).
• Cada usuario puede ser miembro de uno o varios grupos. Se pueden usar varios comandos para modificar la
identidad del grupo:nuevo grupocambia el ID de grupo actual,sgejecuta un comando utilizando el grupo
alternativo suministrado, elsetgidbit se puede colocar en un directorio, lo que hace que los archivos creados
en ese directorio pertenezcan automáticamente al grupo correcto. además, elidentificaciónEl comando
muestra el estado actual de un usuario, incluida una lista de miembros de su grupo.
• Puede iniciar manualmente SSH consystemctl iniciar ssho habilitarlo permanentemente con
systemctl habilitar ssh.
• PostgreSQL es un servidor de base de datos. Rara vez es útil por sí solo, pero muchos otros servicios lo utilizan para
almacenar datos.
• Una instalación típica de Kali Linux incluye el servidor web Apache, proporcionado por elapache2
paquete. Al ser un servicio de red, está deshabilitado por defecto. Puede iniciarlo manualmente con
systemctl iniciar apache2.
Ahora que hemos abordado los fundamentos de Linux y la instalación y configuración de Kali Linux, analicemos
cómo solucionar los problemas de Kali y le enseñemos algunas herramientas y trucos para que pueda volver a
funcionar cuando tenga problemas.
Documentación
Foros
canal de IRC
Informe de error
Capítulo
Ayudándote a ti mismo y 6
Obteniendo ayuda
Contenido
Fuentes de documentación128 Comunidades Kali Linux132 Presentar un buen informe de error134 Resumen151
No importa cuántos años de experiencia tengas, no hay duda de que, tarde o temprano, encontrarás
un problema. Resolver ese problema es a menudo una cuestión de comprenderlo y luego aprovechar
varios recursos para encontrar una solución o una solución temporal.
En este capítulo, analizaremos las diversas fuentes de información disponibles y analizaremos las mejores estrategias para
encontrar la ayuda que necesita o la solución a un problema que pueda estar enfrentando. También lo llevaremos en un
recorrido por algunos de los recursos disponibles de la comunidad de Kali Linux, incluidos los foros y el canal Internet Relay
Chat (IRC). Por último, presentaremos el informe de errores y le mostraremos cómo aprovechar los sistemas de archivo de
errores para solucionar problemas y diseñar estrategias para ayudarlo a presentar su propio informe de errores para que
los problemas no documentados se puedan manejar de manera rápida y efectiva.
Antes de que pueda comprender lo que realmente sucede cuando hay un problema, debe conocer el papel teórico
que desempeña cada programa involucrado en el problema. Una de las mejores maneras de hacer esto es revisar
la documentación del programa. Comencemos discutiendo dónde, exactamente, puede encontrar documentación,
ya que a menudo está dispersa.
Cómo evitar RTFM Este acrónimo significa "leer el maldito manual", pero también se puede expandir en una
respuestas variante más amigable, "leer el buen manual". Esta frase se usa a veces en respuestas
(concisas) a preguntas de novatos. Es bastante abrupto y delata cierta molestia ante una
pregunta formulada por alguien que ni siquiera se ha molestado en leer la documentación.
Algunos dicen que esta respuesta clásica es mejor que ninguna respuesta ya que esto al
menos sugiere que la respuesta se encuentra dentro de la documentación.
mihttp://catb.org/~esr/faqs/smart-questions.html
Las páginas del manual (man), aunque tienen un estilo relativamente conciso, contienen una gran cantidad de
información esencial. Para ver una página de manual, simplemente escribahombrepágina del manual. La página del
manual suele coincidir con el nombre del comando. Por ejemplo, para conocer las posibles opciones para elc.p.
comando, escribiríashombre cpen el símbolo del sistema.
Las páginas del manual no solo documentan los programas accesibles desde la línea de comandos, sino también los archivos de
configuración, las llamadas al sistema, las funciones de la biblioteca C, etc. A veces los nombres pueden chocar. Para
4. Dispositivos (en sistemas similares a Unix, estos son archivos especiales, generalmente colocados en el/desarrollador/directorio)
6. Juegos
7. Conjuntos de macros y estándares
Puede especificar la sección de la página del manual que está buscando: para ver la documentación delleerllamada
al sistema, escribiríahombre 2 leer. Cuando no se especifica explícitamente ninguna sección, se mostrará la primera
sección que tenga una página de manual con el nombre solicitado. De este modo,sombra de hombre
devolucionessombra(5)porque no hay páginas de manual parasombraen las secciones 1–4.
Eso sí, si no conoces los nombres de los comandos, el manual no te va a ser de mucha utilidad. Introducir ela
propósitocomando, que busca en las páginas del manual (o más específicamente en sus breves descripciones)
cualquier palabra clave que proporcione. Ela propósitoLuego, el comando devuelve una lista de páginas de
manual cuyo resumen menciona las palabras clave solicitadas junto con el resumen de una línea de la
página de manual. Si elige bien sus palabras clave, encontrará el nombre del comando que necesita.
Documentación de navegación Muchas páginas de manual tienen una sección "Ver también", generalmente cerca del final del documento,
siguiendo los enlaces que hace referencia a otras páginas de manual relacionadas con comandos similares o documentación
externa. Puede usar esta sección para encontrar documentación relevante incluso cuando la primera opción
no sea la óptima.
El proyecto GNU ha escrito manuales para la mayoría de sus programas en elinformaciónformato; esta es la razón por la
cual muchas páginas del manual se refieren a las correspondientesinformacióndocumentación. Este formato ofrece
algunas ventajas, pero el programa predeterminado para ver estos documentos (también llamadoinformación) es un poco
más complejo. Sería aconsejable utilizarpinfoen cambio (de lapinfopaquete). Para instalarlo, simplemente ejecuteactualización
adecuadaseguido porapt instalar pinfo(mira la sección8.2.2.2, “Instalación de paquetes con APT” [página 183]).
Puede utilizar las teclas de flecha para navegar entre los nodos. Alternativamente, también podría usar un
navegador gráfico (que es mucho más fácil de usar) comoconquistadorogañido.
En lo que respecta a las traducciones de idiomas, lainformaciónEl sistema siempre está en inglés y no es adecuado para la
traducción, a diferencia delhombresistema de paginas Sin embargo, cuando le preguntas a lapinfoprograma para mostrar
un inexistenteinformaciónpágina, volverá a la páginahombrepágina con el mismo nombre (si existe), que podría estar
traducida.
Cada paquete incluye su propia documentación e incluso los programas menos documentados generalmente
tienen unLÉAMEarchivo que contiene información interesante y/o importante. Esta documentación está instalada en
el/usr/compartir/doc/paquete/directorio (dondepaqueterepresenta el nombre del paquete). Si la documentación es
particularmente grande, es posible que no esté incluida en el paquete principal del programa, pero podría
descargarse en un paquete dedicado que generalmente se llamapaquete-doc. El paquete principal generalmente
recomienda el paquete de documentación para que pueda encontrarlo fácilmente.
El/usr/compartir/doc/paquete/El directorio también contiene algunos archivos proporcionados por Debian, que
completan la documentación especificando las particularidades o mejoras del paquete en comparación con
una instalación tradicional del software. ElLÉAME.Debianarchivo también indica todas las adaptaciones que se
hicieron para cumplir con elPolítica de Debian1. Elregistro de cambios.Debian.gzEl archivo permite al usuario
seguir las modificaciones realizadas en el paquete a lo largo del tiempo; es muy útil para tratar de entender
qué ha cambiado entre dos versiones instaladas que no tienen el mismo comportamiento. Finalmente, a
veces hay unNOTICIAS.Debian.gzarchivo que documenta los principales cambios en el programa que pueden
afectar directamente al administrador.
1https://www.debian.org/doc/debian-policy/
En muchos casos, puede encontrar sitios web que se utilizan para distribuir programas de software libre y para
reunir a la comunidad de sus desarrolladores y usuarios. Estos sitios están repletos de información relevante en
diversas formas, como documentación oficial, preguntas frecuentes (FAQ) y archivos de listas de correo. En la
mayoría de los casos, las preguntas frecuentes o los archivos de la lista de correo abordan los problemas que ha
encontrado. A medida que busca información en línea, es inmensamente valioso dominar la sintaxis de búsqueda.
Un consejo rápido: intente restringir una búsqueda a un dominio específico, como el dedicado al programa que le
está causando problemas. Si la búsqueda arroja demasiadas páginas o si los resultados no coinciden con lo que
busca, puede agregar la palabra clavekalioDebianpara limitar los resultados y orientar la información relevante.
Del error a un Si el software devuelve un mensaje de error muy específico, ingréselo en un motor de búsqueda
Solución (entre comillas dobles,”, para buscar la frase completa, en lugar de las palabras clave individuales). En
la mayoría de los casos, los primeros enlaces devueltos contendrán la respuesta que necesita.
En otros casos, obtendrá errores muy generales, como "Permiso denegado". En este caso, lo mejor
es comprobar los permisos de los elementos implicados (archivos, ID de usuario, grupos, etc.). En
definitiva, no te acostumbres a utilizar siempre un buscador para encontrar una solución a tu
problema. Descubrirá que es demasiado fácil olvidarse de usar el sentido común.
Si no conoce la dirección del sitio web del software, existen varios medios para localizarlo. Primero, busca un
Página principalcampo en la metainformación del paquete (espectáculo aptopaquete). Alternativamente, la
descripción del paquete puede contener un enlace al sitio web oficial del programa. Si no se indica ninguna
URL, es posible que el mantenedor del paquete haya incluido una URL en el/usr/compartir/doc/paquete/derechos
de autorarchivo. Finalmente, puede utilizar un motor de búsqueda de Internet (como Google, Bing,
DuckDuckGo, etc.) para encontrar el sitio web del software.
El proyecto Kali mantiene una colección de documentación útil enhttps://www.kali.org/docs/. Si bien este libro
cubre una gran parte de lo que debe saber sobre Kali Linux, la documentación que contiene aún puede ser
útil, ya que contiene instrucciones paso a paso (muy parecidas a procedimientos) sobre muchos temas.
mihttps://www.kali.org/docs/
Repasemos los diversos temas tratados allí:
• Introducción: documentación que describe qué es Kali Linux y todas sus características
• Instalación: varios documentos que describen la instalación de Kali Linux, incluido cómo
instalarlo junto con otros sistemas operativos
• USB: documentación que describe cómo crear un USB en vivo de arranque de Kali Linux
• Kali Linux en ARM: muchas recetas sobre cómo ejecutar Kali Linux en varios dispositivos basados en ARM
• Contenedores: documentación que describe cómo usar Kali Linux en contenedores como Docker o
LXC
• WSL: varios documentos que contienen información sobre posibles formas de usar Kali Linux a través del
Subsistema de Windows para Linux
• Nube: documentación que describe cómo crear instancias en la nube de Kali Linux
• Kali NetHunter: documentación sobre todo lo relacionado con el puerto móvil de Kali
• Uso general: varios documentos sobre los casos de uso típicos de Kali Linux y respuestas a varias
preguntas que se pueden hacer
• Solución de problemas: varios documentos que contienen información que puede ser beneficiosa para
solucionar problemas
• Desarrollo: documentación que describe muchos aspectos del proceso de creación de Kali Linux
• Política: explicaciones sobre lo que hace que Kali Linux sea especial en comparación con otras distribuciones
de Linux
Hay muchas comunidades de Kali Linux en todo el mundo que utilizan muchas herramientas diferentes para
comunicarse (foros, chat en tiempo real y redes sociales, por ejemplo). En esta sección, solo presentaremos
dos comunidades oficiales de Kali Linux.
Los foros oficiales de la comunidad para el proyecto Kali Linux se encuentran enforos.kali.org2. Como todos
los foros basados en la web, debe crear una cuenta para poder publicar y el sistema recuerda las
publicaciones que ya ha visto, lo que facilita el seguimiento de las conversaciones de manera regular.
mihttps://www.kali.org/docs/community/kali-linux-community-forums/
2https://forums.kali.org/
IRC es un sistema de chat en tiempo real. Las discusiones ocurren en salas de chat llamadascanalesy
generalmente se centran en un tema o comunidad en particular. El proyecto Kali Linux usa el #kalilinuxcanal
en elnodo libre3red (puede usarchat.freenode.netcomo servidor IRC, en el puerto 6667 para una conexión
cifrada con TLS o en el puerto 6666 para una conexión de texto claro).
Para unirse a las discusiones en IRC, debe usar un cliente de IRC comohexadecimal(en modo gráfico) oIrsi(
en modo consola). También hay un cliente basado en web disponible enwebchat.freenode.net4.
Si bien es muy fácil unirse a la conversación, debe tener en cuenta que los canales de IRC tienen sus
propias reglas y que hay operadores de canales (su apodo tiene el prefijo @ cuando se usa elHexChat5
cliente de IRC) que pueden hacer cumplir las reglas: pueden expulsarlo del canal (o incluso banearlo si
continúa desobedeciendo las reglas). El #kali-linuxEl canal no es una excepción. Las reglas han sido
documentadas aquí:
mihttps://www.kali.org/docs/community/kali-linux-irc-channel/
Para resumir las reglas: tienes que ser amable, tolerante y razonable. Debes evitar discusiones fuera de
tema. En particular, están prohibidas las discusiones sobre actividades ilegales, software pirateado, política y
religión. Tenga en cuenta que su dirección IP estará disponible para otros por defecto.
Si desea solicitar ayuda, siga las recomendaciones que figuran en “Cómo evitar las respuestas RTFM” [página
128]: investigue primero y comparta los resultados. Cuando se le solicite información adicional,
proporciónela con precisión (si debe proporcionar algún resultado detallado, no lo pegue directamente en el
canal; en su lugar, utilice un servicio comoPastebin6y publicar solo la URL de Pastebin).
No espere una respuesta inmediata. Aunque IRC es una plataforma de comunicación en tiempo real, los
participantes se conectan desde todo el mundo, por lo que las zonas horarias y los horarios de trabajo varían.
Puede tomar algunos minutos u horas para que alguien responda a su pregunta. Sin embargo, cuando otros
incluyan su apodo en una respuesta, su apodo se resaltará y la mayoría de los clientes de IRC le notificarán, así que
deje a su cliente conectado y tenga paciencia.
3https://freenode.net/
4https://webchat.freenode.net/
5https://hexchat.github.io/
6https://pastebin.com/
Si todos sus esfuerzos para resolver un problema fallan, es posible que el problema se deba a un error en el
programa. En este caso, el problema puede haber resultado en un informe de error. Puede buscar informes de
errores para encontrar una solución a su problema, pero echemos un vistazo al procedimiento de informar un
error a Kali, Debian o directamente a los desarrolladores ascendentes para que comprenda el proceso en caso de
que necesite enviar su propio informe.
El objetivo de un informe de error es proporcionar suficiente información para que los desarrolladores o mantenedores del
(supuestamente) programa defectuoso puedan reproducir el problema, depurar su comportamiento y desarrollar una
solución. Esto significa que su informe de error debe contener la información adecuada y debe estar dirigido a la persona o
equipo de proyecto correcto. El informe también debe estar bien escrito y completo, lo que garantiza una respuesta más
rápida.
El procedimiento exacto para el informe de errores variará dependiendo de dónde envíe el informe (Kali,
Debian o desarrolladores ascendentes), pero hay algunas recomendaciones genéricas que se aplican a todos
los casos. En este capítulo discutiremos esas recomendaciones.
Cómo comunicarse
Escriba su informe en inglésLa comunidad de software libre es internacional y, a menos que conozca a su
interlocutor, debe utilizar un lenguaje sencillo. Si es un hablante nativo de inglés, use oraciones simples y
evite construcciones que puedan ser difíciles de entender para personas con conocimientos limitados de
inglés. Aunque la mayoría de los desarrolladores son muy inteligentes, no todos tienen un buen dominio del
idioma inglés. Es mejor nunca asumir.
Sea respetuoso con el trabajo de los desarrolladoresRecuerde que la mayoría de los desarrolladores de software
libre (incluidos los que están detrás de Kali Linux) son benévolos y dedican su tiempo libre limitado a trabajar en el
software que está utilizando libremente. Muchos están haciendo esto por altruismo. Por lo tanto, cuando presente
un informe de error, sea respetuoso (incluso si el error parece un error obvio del desarrollador) y no asuma que le
deben una solución. Agradézcales por su contribución en su lugar.
Si sabe cómo modificar y volver a compilar el software, ofrezca ayudar a los desarrolladores a probar
los parches que le envíen. Esto les demostrará que también estás dispuesto a invertir tu propio
tiempo.
Si bien debe intentar responder rápidamente, tampoco debe ir demasiado rápido: los datos enviados
deben ser correctos y deben contener todo lo que los desarrolladores solicitaron. Pueden molestarse
si tienen que pedir algo por segunda vez.
Debe proporcionar instrucciones precisas paso a paso que describan cómo reproducir el problema. Si
necesita utilizar algunos datos para reproducir el problema, adjunte el archivo correspondiente al informe de
error. Intente encontrar el conjunto mínimo de instrucciones necesarias para reproducir el error.
Dé algo de contexto y establezca sus expectativasExplique lo que estaba tratando de hacer y cómo esperaba
que se comportara el programa.
En algunos casos, el error solo se activa porque estaba usando el programa de una manera que los
desarrolladores no diseñaron para operar. Al explicar lo que estaba tratando de lograr, permitirá que
los desarrolladores vean claramente cuándo es el caso.
En algunos otros casos, el comportamiento que describe como un error podría ser en realidad el comportamiento
normal. Sea explícito acerca de lo que esperaba que hiciera el programa. Esto aclarará la situación para los
desarrolladores. Pueden mejorar el comportamiento o mejorar la documentación, ¡pero al menos saben que el
comportamiento de su programa está confundiendo a algunos usuarios!
Se específicoIncluya los números de versión del software que utiliza, posiblemente con los números
de versión de sus dependencias. Cuando haga referencia a algo que descargó, incluya su URL
completa.
Cuando reciba un mensaje de error, cítelo exactamente como lo vio. Si es posible, incluya una copia de su salida de pantalla o una
captura de pantalla. Incluya una copia de cualquier archivo de registro relevante, asegurándose de eliminar primero cualquier
información confidencial.
Si realizó una búsqueda en Internet y encontró algunas explicaciones sobre un problema similar, puede mencionarlas, en
particular cuando encontró otros informes de errores similares en los rastreadores de errores.
Los informes largos de errores están bienUn informe de error de dos líneas es insuficiente; proporcionar toda la
información necesaria generalmente requiere varios párrafos (o, a veces, páginas) de texto.
Proporcione toda la información que pueda. Trate de ceñirse a lo que es relevante, pero si no está seguro,
mucho es mejor que muy poco.
Si su informe de error es muy largo, tómese un tiempo para estructurar el contenido y proporcione un breve
resumen al principio.
Consejos varios
Evite presentar informes de errores duplicadosEn el mundo del software libre, todos los rastreadores de errores son públicos.
Los problemas abiertos se pueden explorar e incluso tienen una función de búsqueda. Por lo tanto, antes de presentar un nuevo
informe de error, intente determinar si su problema ya ha sido informado por otra persona.
Asegúrese de usar la última versiónEs muy frustrante para los desarrolladores recibir informes de errores por
problemas que ya han resuelto o problemas que no pueden reproducir con la versión que están usando (los
desarrolladores casi siempre usan la última versión de su producto). Incluso cuando los desarrolladores mantienen
las versiones anteriores, el soporte a menudo se limita a correcciones de seguridad y problemas importantes.
¿Estás seguro de que tu bicho es uno de esos?
Por eso, antes de presentar un informe de error, debe asegurarse de que está utilizando la última versión del
sistema y la aplicación problemáticos y que puede reproducir el problema en esa situación.
Si Kali Linux no ofrece la última versión de la aplicación, tiene soluciones alternativas: puede intentar una
instalación manual de la última versión en una máquina virtual desechable, o puede revisar el Registro de
cambios ascendente (o cualquier registro histórico en su sistema de control de versiones elegido) para ver
que no ha habido ningún cambio que pueda solucionar el problema que está viendo (y luego registre el
error aunque no haya probado la última versión).
No mezcle varios problemas en un solo informe de errorPresente un informe de error por problema. De esa
forma, las discusiones subsiguientes no se complican demasiado y cada error se puede corregir de acuerdo con su
propio cronograma. Si no lo hace, el error único debe reutilizarse varias veces y solo puede cerrarse cuando se
hayan solucionado todos los problemas, o los desarrolladores deben presentar los informes complementarios que
debería haber creado en primer lugar.
Para poder decidir dónde presentar el informe de error, debe tener una buena comprensión del
problema y debe haber identificado en qué pieza de software se encuentra el problema.
Verifique dos veces antes Si encuentra un error en un paquete importado directamente desde Debian, lo ideal es
Presentación de errores contra informarlo y corregirlo en el lado de Debian. Sin embargo, antes de hacer esto, asegúrese de
Debian que el problema sea reproducible en un sistema Debian simple, ya que Kali puede haber
causado el problema al modificar otros paquetes o dependencias.
La forma más fácil de lograr esto es configurar una máquina virtual que ejecute Debian Testing.
Puede encontrar un ISO de instalación para Debian Testing en el sitio web del instalador de Debian:
mihttps://www.debian.org/devel/debian-installer/
Si puede confirmar el problema en la máquina virtual, puede enviar el error a Debian
ejecutandoReportar un errordentro de la máquina virtual y siguiendo las instrucciones
proporcionadas.
La mayoría de los informes de errores sobre el comportamiento de las aplicaciones deben dirigirse a sus proyectos
anteriores, excepto cuando se enfrentan a un problema de integración: en ese caso, el error es un error en la forma
en que el software se empaqueta e integra en Debian o Kali. Por ejemplo, si una aplicación ofrece opciones de
tiempo de compilación que el paquete no habilita o la aplicación no funciona debido a que falta una biblioteca (lo
que pone de manifiesto una dependencia faltante en la metainformación del paquete), es posible que se enfrente a
una integración. problema. Cuando no sabe qué tipo de problema enfrenta, generalmente es mejor presentar el
problema en ambos lados y hacer una referencia cruzada.
Identificar el proyecto upstream y encontrar dónde archivar el informe de error suele ser fácil. Solo tiene que
navegar por el sitio web upstream, al que se hace referencia en elPágina principalcampo de los metadatos del
embalaje:
Kali usa un rastreador de errores basado en la web enhttps://bugs.kali.org/donde puede consultar todos los informes
de errores de forma anónima, pero si desea comentar o presentar un nuevo informe de errores, deberá registrar
una cuenta.
Registrarse para obtener una cuenta de seguimiento de erroresPara comenzar, simplemente haga clic enRegístrese para una nueva cuentaen el sitio
web del rastreador de errores, como se muestra en la Figura6.1, “Página de inicio de Kali Bug Tracker” [página 138].
A continuación, proporcione un nombre de usuario, una dirección de correo electrónico y una respuesta al desafío CAPTCHA. Luego haga clic
Si tiene éxito, la página siguiente (Figura6.3, “Página de confirmación de registro” [página 139]) le notificará que se
ha procesado el registro de la cuenta y el sistema de seguimiento de errores le enviará un correo electrónico de
confirmación a la dirección que proporcionó. Deberá hacer clic en el enlace del correo electrónico para activar su
cuenta.
Una vez que su cuenta haya sido activada, haga clic en Continuar para continuar a la página de inicio de sesión del rastreador de errores.
Categoría (obligatorio)Este campo describe la categoría del error que está enviando. Informes
que se puede atribuir a un paquete específico debe archivarse en Kali Package Bug o Kali
Gravedad y PrioridadEs mejor dejar esos campos sin modificar, ya que son principalmente para los desarrolladores.
Pueden usarlos para clasificar la lista de problemas según la gravedad del problema y la
prioridad con la que debe manejarse.
version del productoEste campo debe indicar qué versión de Kali Linux está ejecutando (o la
uno que es el más cercano a lo que está ejecutando). Piénselo dos veces antes de informar un problema en
una versión anterior que ya no es compatible.
Asignar a y versión de destinoTambién es mejor dejar esos campos sin modificar como están de nuevo,
principalmente para los desarrolladores. Pueden usarlos para indicar qué desarrollador está manejando el
problema y cuándo se debe resolver el problema.
Descripción (obligatorio)Este es el cuerpo de su informe. Aquí debe ingresar todos los datos en-
formación que recopiló sobre el problema que está experimentando. No olvide todas las
recomendaciones dadas en la sección anterior.
Pasos para reproducirEn este campo, enumere todas las instrucciones detalladas que explican cómo activar el
problema.
información adicionalEn esta sección, puede proporcionar cualquier información adicional que crea
es relevante para el problema. Si tiene una solución o solución alternativa para el problema, indíquela en
esta sección.
Adjuntar etiquetasEsta es una sección que es mejor dejar sin modificar. Los desarrolladores utilizan etiquetas para permitir
acceso más fácil a informes de errores similares.
Subir archivoNo todo se puede explicar con texto plano. Este campo le permite adjuntar arbitrariamente
archivos a sus informes: capturas de pantalla para mostrar el error, documentos de muestra que desencadenan el problema,
Debian utiliza un sistema de seguimiento de errores (principalmente) basado en correo electrónico conocido
como Debbugs. Para abrir un nuevo informe de error, deberá enviar un correo electrónico (con una sintaxis
especial) aenviar@bugs.debian.org .Esto asignará un número de errorXXXXXe informarle que puede enviar
información adicional por correoXXXXX@bugs.debian.org.Cada error está asociado a un paquete Debian.
Puede buscar todos los errores de un paquete determinado (incluido el error que está pensando informar)
enhttps://bugs.debian.org/paquete. Puede consultar el historial de un error determinado en https://
bugs.debian.org/XXXXX.
Configuración de ReportbugSi bien puede abrir un nuevo error con un simple correo electrónico, le
recomendamos que utiliceReportar un errorporque le ayudará a redactar un informe de error sólido con toda la
información requerida. Lo ideal es que lo ejecutes desde un sistema Debian (por ejemplo, en la máquina virtual
donde reprodujiste el problema).
La primera corrida deReportar un errorinicia un script de configuración. Primero, seleccione un nivel de habilidad. Debe elegir
Principiante o Estándar; usamos este último porque ofrece un control más detallado. A continuación, seleccione una
interfaz e introduzca sus datos personales. Finalmente, seleccione una interfaz de usuario. El script de configuración le
permitirá utilizar un agente de transporte de correo local, un servidor SMTP o, como último recurso, un servidor SMTP de
Debian.
¡Bienvenido a reportbug! Dado que parece que es la primera vez que usa Reportbug, estamos
configurando su comportamiento. Esta configuración se guardará en el archivo "/home/
kali/.reportbugrc", que podrá editar más a fondo.
2 estándar Ofrezca indicaciones más amplias, incluidas preguntas sobre cosas que se
esperaría que un usuario moderadamente sofisticado supiera sobre Debian.
3 avanzado Como estándar, pero se supone que sabe un poco más sobre Debian,
aincluyendo "entrante".
4 experto Omita la mayoría de las medidas de agarre y las rutinas preliminares de triaje. Este
modo no debe ser utilizado por personas que no estén familiarizadas con las
políticas y los procedimientos operativos de Debian.
Seleccionar interfaz:texto
¿Reportbug tendrá a menudo acceso directo a Internet? (Debe responder afirmativamente a
esta pregunta a menos que sepa lo que está haciendo y planee verificar si se han presentado
informes duplicados a través de algún otro canal). [S|n|q|?]?Y
¿Qué nombre real se debe usar para enviar informes de errores? [kalí]>
Rafael Hertzog
¿Cuál de sus direcciones de correo electrónico debe usarse al enviar informes de errores? (Tenga en
cuenta que esta dirección será visible en el sistema de seguimiento de errores, por lo que es posible que
desee utilizar una dirección de correo web u otra dirección con buenas capacidades de filtrado de spam).
[ kali@localhost.localdomain ]>buxy@kali.org
¿Tiene un "agente de transporte de correo" (MTA) como Exim, Postfix o SSMTP configurado
en esta computadora para enviar correo a Internet? [s|n|q|?]?norte Introduzca el nombre
de su servidor SMTP. Por lo general, se llama algo así como "mail.example.org" o
"smtp.example.org". Si necesita usar un puerto diferente al predeterminado, use el formato
alternativo <host>:<port>. Simplemente presione ENTER si no tiene uno o no lo sabe, y así se
usará un host SMTP de Debian.
>
Introduzca el nombre de su servidor proxy. Solo debe usar este parámetro si está detrás de un
firewall. El argumento PROXY debe formatearse como una URL HTTP válida, incluido (si es
necesario) un número de puerto; por ejemplo, http://192.168.1.1:3128/. Simplemente presione
ENTER si no tiene uno o no lo sabe.
>
Archivo de preferencias predeterminado escrito. Para reconfigurar, vuelva a ejecutar
reportbug con la opción "--configure".
Uso de ReportbugUna vez completada la fase de configuración, puede comenzar el informe de error real. Se le
pedirá un nombre de paquete, aunque también puede proporcionar el nombre del paquete directamente en la
línea de comando conReportar un errorpaquete).
Ingrese el nombre del paquete en el que encontró un problema o escriba 'otro' para informar un
problema más general. Si no sabe en qué paquete se encuentra el error, comuníquese con
debian-user@lists.debian.org para obtener ayuda.
Contrariamente al consejo dado anteriormente, si no sabe contra qué paquete presentar el error, debe ponerse en
contacto con un foro de soporte de Kali (descrito en la sección6.2, “Comunidades Kali Linux” [página 132]). En el
siguiente paso,Reportar un errordescarga la lista de errores presentados contra el paquete dado y le permite
explorarlos para ver si puede encontrar el suyo.
Si encuentra que su error ya se presentó, puede optar por enviar información complementaria; de lo contrario, está
invitado a presentar un nuevo informe de error:
o ”no comienza con la opción -q especificada” (ingrese Ctrl+c para salir de reportbug sin
areportar un error).
> no disecciona el protocolo foobar
Reescritura sujeta a 'wireshark: no analiza el protocolo foobar'
Después de proporcionar un resumen de una línea de su problema, debe calificar su gravedad a lo largo de una escala extendida:
1 año Este error es relevante para la accesibilidad del paquete. Este error es relevante
2 días para el desarrollo de debian-installer. El paquete no se puede compilar desde el
3 ftbfs origen.
4 ipv6 Este error afecta la compatibilidad con la versión 6 del Protocolo de Internet.
5 l10n Este error informa de un problema de localización/internacionalización. Este
6 lfs error afecta la compatibilidad con archivos grandes (más de 2 gigabytes).
7 recién llegado Este error tiene una solución conocida, pero el mantenedor solicita a otra persona.
aImpleméntalo.
8 parche Estás incluyendo un parche para solucionar este problema. Este error
9 aguas arriba se aplica a la parte ascendente del paquete.
10 ninguno
La mayoría de las etiquetas son bastante esotéricas, pero si su informe incluye una solución, debe seleccionar laparcheetiqueta.
Una vez que esto se completa,Reportar un errorabre un editor de texto con una plantilla que debe editar
(Ejemplo6.2, “Plantilla generada porReportar un error” [página 146]). Contiene algunas preguntas que
debe eliminar y responder, así como información sobre su sistema que se ha recopilado
automáticamente. Observe cómo están estructuradas las primeras líneas. No deben modificarse, ya
que el rastreador de errores los analizará para asignar el informe al paquete correcto.
Estimado Mantenedor,
Una vez que guarde el informe y cierre el editor de texto, volverá aReportar un error, que proporciona muchas otras
opciones y ofertas para enviar el informe resultante.
Informe de errores enviado a: ”Sistema de seguimiento de errores de Debian” <sub mit@bugs.debian.org >
Se enviarán copias después de procesarlas a:
buxy@kali.org
Existe una gran diversidad de proyectos de software libre, utilizando diferentes flujos de trabajo y herramientas. Esta
diversidad también se aplica a los rastreadores de errores en uso. Si bien muchos proyectos están alojados en GitHub y
usan problemas de GitHub para rastrear sus errores, también hay muchos otros que alojan sus propios rastreadores,
basados en Bugzilla, Trac, Redmine, Flyspray y otros. La mayoría de ellos están basados en la web y requieren que
registre una cuenta para enviar un nuevo boleto.
No cubriremos todos los rastreadores aquí. Depende de usted aprender las especificaciones de varios rastreadores para otros
proyectos de software libre, pero dado queGitHub7es relativamente popular, lo veremos brevemente aquí. Al igual que con otros
rastreadores, primero debe crear una cuenta e iniciar sesión. A continuación, haga clic en la pestaña Problemas, como se muestra
en la Figura6.5, “Página principal de un proyecto de GitHub” [página 149].
7https://github.com/
A continuación, puede examinar (y buscar) la lista de problemas abiertos. Una vez que esté seguro de que su error aún no se ha
archivado, puede hacer clic en el botón Nuevo problema (Figura6.6, “Página de problemas de un proyecto de GitHub” [página 150]).
Ahora está en una página donde debe describir su problema (Figura6.7, “Formulario de GitHub para presentar un
problema nuevo” [página 150]). GitHub tiene una función de plantilla que permite al propietario del repositorio
definir su propia plantilla de problema personalizada; sin embargo, parece que este repositorio no tiene una
configuración. Sin embargo, el mecanismo de informe de errores es bastante sencillo y le permite adjuntar
archivos, aplicar formato al texto y mucho más. Por supuesto, para obtener los mejores resultados, asegúrese de
seguir nuestras pautas para crear un informe detallado y bien descrito.
En esta sección, discutimos varios métodos para ayudarlo a encontrar documentación e información sobre programas y
cómo encontrar ayuda con los problemas que pueda encontrar. Echamos un vistazo al manual y las páginas de
información y ela propósitoyinformacióncomandos Hablamos sobre los rastreadores de errores, brindamos algunos consejos
sobre cómo buscar y enviar buenos informes de errores y brindamos algunos consejos para ayudarlo a descubrir quién es
el propietario del programa o proyecto en cuestión.
Resumen de consejos:
• Antes de que pueda entender lo que realmente sucede cuando hay un problema, necesita saber el
papel teórico que juega cada programa involucrado en el problema. Una de las mejores maneras de
hacer esto es revisar la documentación del programa.
• Para ver una página de manual, simplemente escribahombrepágina del manual, completando el nombre del comando después
de un número de sección opcional.
• Ela propósitoEl comando devuelve una lista de páginas de manual cuyo resumen menciona las palabras
clave solicitadas, junto con el resumen de una línea de la página de manual.
• El proyecto GNU ha escrito manuales para la mayoría de sus programas en elinformaciónformato. Esta es la razón por la cual muchas
• Cada paquete incluye su propia documentación e incluso los programas menos documentados
generalmente tienen unLÉAMEarchivo que contiene información interesante y/o importante. Esta
documentación está instalada en el/usr/compartir/doc/paquete/directorio.
• En la mayoría de los casos, las preguntas frecuentes o los archivos de la lista de correo del sitio web oficial de un programa pueden
• El proyecto Kali Linux usa el #kali-linuxcanal en elnodo libre8red IRC. Puedes usar
chat.freenode.netcomo servidor IRC, en el puerto 6667 para una conexión cifrada con TLS o en
el puerto 6666 para una conexión de texto claro. Para unirse a las discusiones en IRC, debe usar
un cliente de IRC comohexadecimal(en modo gráfico) oIrsi(en modo consola). También hay un
cliente basado en web disponible enwebchat.freenode.net9.
• Los foros oficiales de la comunidad para el proyecto Kali Linux se encuentran enforos.kali.org10.
• Si descubre un error en un programa, puede buscar informes de errores o presentar uno propio.
Asegúrese de seguir las pautas que hemos descrito para garantizar que su informe sea claro,
completo y mejore las posibilidades de que los desarrolladores aborden el error de manera oportuna.
8https://freenode.net/
9https://webchat.freenode.net/
10https://forums.kali.org/
• Identificar un proyecto upstream y encontrar dónde archivar el informe de error suele ser fácil. Simplemente
navegue por el sitio web upstream al que se hace referencia en elPágina principalcampo de los metadatos del
embalaje.
• Kali utiliza un rastreador de errores basado en la web enhttps://bugs.kali.org/donde puede consultar todos los
informes de errores de forma anónima, pero si desea comentar o presentar un nuevo informe de errores,
deberá registrar una cuenta.
• Debian utiliza un sistema de seguimiento de errores (principalmente) basado en correo electrónico conocido como Debbugs.
Para abrir un nuevo informe de errores, puede enviar un correo electrónico (con una sintaxis especial) a
enviar@bugs.debian.org o puedes usar elReportar un errorcomando, que lo guiará a través del proceso.
• Si bien muchos proyectos están alojados en GitHub y utilizan problemas de GitHub para rastrear sus errores,
también hay muchos otros que alojan sus propios rastreadores. Es posible que deba investigar los conceptos
básicos de los rastreadores de errores de terceros si necesita publicarlos.
Ahora que tiene las herramientas básicas para navegar por Linux, instalar y configurar Kali, y
solucionar problemas de su sistema y obtener ayuda, es hora de considerar bloquear Kali para que
pueda proteger su instalación y los datos de su cliente.
Politica de seguridad
cortafuegos
iptables
Supervisión
Inicio sesión
Capítulo
Asegurar y 7
Monitoreo de Kali Linux
Contenido
Definición de una política de seguridad156 Posibles medidas de seguridad158 Protección de servicios de red159
No es práctico discutir la seguridad a grandes rasgos, ya que la idea representa una amplia gama de conceptos,
herramientas y procedimientos, ninguno de los cuales se aplica universalmente. Elegir entre ellos requiere una idea
precisa de cuáles son sus objetivos. Asegurar un sistema comienza con responder algunas preguntas. Si se
apresura a implementar un conjunto arbitrario de herramientas, se corre el riesgo de centrarse en aspectos de
seguridad erróneos.
Por lo general, es mejor determinar un objetivo específico. Un buen enfoque para ayudar con esa determinación
comienza con las siguientes preguntas:
• ¿Qué estás tratando de proteger?contra? ¿Es una fuga de datos confidenciales? ¿Pérdida accidental de datos?
¿Pérdida de ingresos causada por la interrupción del servicio?
• También,OMS¿Estás tratando de protegerte? Las medidas de seguridad serán bastante diferentes para protegerse contra un
error tipográfico por parte de un usuario habitual del sistema en comparación con la protección contra un determinado
grupo de atacantes externos.
El término "riesgo" se usa habitualmente para referirse colectivamente a estos tres factores: qué proteger, qué
debe prevenirse y quién podría hacer que esto suceda. Modelar el riesgo requiere respuestas a estas tres
preguntas. A partir de este modelo de riesgo, se puede construir una política de seguridad y la política se puede
implementar con acciones concretas.
Interrogatorio Permanente Bruce Schneier, un experto mundial en temas de seguridad (no solo seguridad informática), intenta
contrarrestar uno de los mitos más importantes de la seguridad con un lema: “La seguridad es un proceso,
no un producto”. Los activos a proteger cambian con el tiempo, al igual que las amenazas y los medios
disponibles para los atacantes potenciales. Incluso si una política de seguridad se ha diseñado e
implementado inicialmente a la perfección, nunca debe dormirse en los laureles. Los componentes del riesgo
evolucionan y la respuesta a ese riesgo debe evolucionar en consecuencia.
También vale la pena tener en cuenta las restricciones adicionales, ya que pueden restringir el rango de políticas
disponibles. ¿Hasta dónde está dispuesto a llegar para asegurar un sistema? Esta pregunta tiene un gran impacto sobre
qué política implementar. Con demasiada frecuencia, la respuesta solo se define en términos de costos monetarios,
Una vez que se ha modelado el riesgo, puede comenzar a pensar en diseñar una política de seguridad real.
Hay extremos que pueden entrar en juego al decidir el nivel de protección de seguridad a adoptar. Por un
lado, puede ser extremadamente simple proporcionar la seguridad básica del sistema.
Por ejemplo, si el sistema a proteger consiste únicamente en un ordenador de segunda mano, cuyo
único uso es sumar unos números al final del día, sería bastante razonable decidir no hacer nada
especial para protegerlo. El valor intrínseco del sistema es bajo y el valor de los datos es cero ya que
no se almacenan en la computadora. Un atacante potencial que se infiltre en este sistema solo
obtendrá una calculadora. El costo de asegurar dicho sistema probablemente sería mayor que el costo
de una brecha.
En el otro extremo del espectro, es posible que desee proteger la confidencialidad de los datos secretos de la
manera más completa posible, por encima de cualquier otra consideración. En este caso, una respuesta adecuada
sería la destrucción total de los datos (borrado seguro de los archivos, trituración de los discos duros en bits, luego
disolución de estos bits en ácido, etc.). Si existe un requisito adicional de que los datos deben almacenarse para uso
futuro (aunque no necesariamente estén fácilmente disponibles), y si el costo aún no es un factor, entonces un
punto de partida sería almacenar los datos en placas de aleación de iridio-platino almacenadas en búnkeres a
prueba de bombas debajo de varias montañas en el mundo, cada uno de los cuales (por supuesto) es
completamente secreto y está protegido por ejércitos enteros.
Por extremos que puedan parecer estos ejemplos, serían una respuesta adecuada a ciertos riesgos
definidos, en la medida en que son el resultado de un proceso de pensamiento que tiene en cuenta las
metas a alcanzar y las limitaciones a cumplir. Cuando se parte de una decisión razonada, ninguna política de
seguridad es más o menos respetable que otra.
Volviendo a un caso más típico, un sistema de información se puede segmentar en subsistemas consistentes
y en su mayoría independientes. Cada subsistema tendrá sus propios requisitos y limitaciones, por lo que la
evaluación de riesgos y el diseño de la política de seguridad deben realizarse por separado para cada uno.
Un buen principio a tener en cuenta es que una pequeña superficie de ataque es más fácil de defender que
una grande. La organización de la red también debe diseñarse en consecuencia: los servicios confidenciales
deben concentrarse en una pequeña cantidad de máquinas, y estas máquinas solo deben ser accesibles a
través de una cantidad mínima de rutas o puntos de control. La lógica es sencilla: es más fácil proteger estos
puntos de control que proteger todas las máquinas sensibles contra la totalidad del mundo exterior. Es en
este punto cuando se hace evidente la utilidad del filtrado de red (incluidos los cortafuegos). Este filtrado se
puede implementar con hardware dedicado, pero una solución más simple y flexible es usar un firewall de
software como el integrado en el kernel de Linux.
Como se explicó en la sección anterior, no hay una respuesta única a la pregunta de cómo asegurar Kali
Linux. Todo depende de cómo lo uses y de lo que estés tratando de proteger.
7.2.1. en un servidor
Si ejecuta Kali Linux en un servidor de acceso público, lo más probable es que desee proteger los servicios de red
cambiando las contraseñas predeterminadas que puedan configurarse (consulte la sección7.3, “Protección de
servicios de red” [página 159]) y posiblemente también restringiendo su acceso con un cortafuegos (consulte la
sección7.4, “Cortafuegos o filtrado de paquetes” [página 159]).
Si entrega cuentas de usuario directamente en el servidor o en uno de los servicios, debe asegurarse de
establecer contraseñas seguras (deben resistir los ataques de fuerza bruta). Al mismo tiempo, es posible que
desee configurarfail2ban, lo que dificultará mucho más la fuerza bruta de las contraseñas en la red (al filtrar
las direcciones IP que excedan el límite de intentos fallidos de inicio de sesión). Instalar
fail2banconactualización adecuadaseguido porinstalar apt fail2ban.
Si ejecuta servicios web, probablemente desee alojarlos a través de HTTPS para evitar que los intermediarios
de la red detecten su tráfico (lo que podría incluir cookies de autenticación).
La computadora portátil de un probador de penetración no está sujeta a los mismos riesgos que un servidor público: por
ejemplo, es menos probable que esté sujeto a escaneos aleatorios de script kiddies e incluso cuando lo esté,
probablemente no tendrá ningún servicio de red habilitado. .
El riesgo real a menudo surge cuando viaja de un cliente a otro. Por ejemplo, su computadora portátil podría ser robada
mientras viaja o incautada por la aduana. Es por eso que lo más probable es que desee utilizar el cifrado de disco completo
(consulte la sección4.2.2, “Instalación en un sistema de archivos totalmente cifrado” [página 88]) y posiblemente también
configurar la función “nuke” (ver “Agregar una contraseña de Nuke para mayor seguridad” [página 250]): los datos que ha
recopilado durante sus compromisos son confidenciales y requieren la máxima protección.
También puede necesitar reglas de firewall (consulte la sección7.4, “Cortafuegos o filtrado de paquetes
” [página 159]) pero no para el mismo propósito que en el servidor. Es posible que desee prohibir todo el
tráfico saliente, excepto el tráfico generado por su acceso VPN. Esto se entiende como una red de seguridad,
de modo que cuando la VPN está inactiva, lo nota de inmediato (en lugar de recurrir al acceso a la red local).
De esa manera, no divulga las direcciones IP de sus clientes cuando navega por la web o realiza otras
actividades en línea. Además, si está realizando un compromiso interno local, es mejor mantener el control
de toda su actividad para reducir el ruido que crea en la red, lo que puede alertar al cliente y sus sistemas de
defensa.
En general, es una buena idea deshabilitar los servicios que no usa. Kali facilita hacer esto ya que los servicios de
red están deshabilitados de forma predeterminada.
Mientras los servicios permanezcan deshabilitados, no representan ninguna amenaza para la seguridad. Sin embargo,
debe tener cuidado cuando los habilite porque:
• no hay un cortafuegos por defecto, por lo que si escuchan en todas las interfaces de red, están efectivamente
disponibles públicamente.
• algunos servicios no tienen credenciales de autenticación y le permiten configurarlas en el primer uso; otros tienen
credenciales predeterminadas (y, por lo tanto, ampliamente conocidas). Asegúrese de (re)establecer cualquier
contraseña a algo que solo usted sepa.
• muchos servicios se ejecutan como root con todos los privilegios de administrador, por lo que las consecuencias de
un acceso no autorizado o una violación de la seguridad suelen ser graves.
Credenciales predeterminadas No enumeraremos aquí todas las herramientas que vienen con credenciales predeterminadas, en su
lugar, debe verificar elLÉAME.Debianarchivo de los respectivos paquetes, así comokali.org/docs/1
yherramientas.kali.org2para ver si el servicio necesita algún cuidado especial para ser asegurado.
Servicio SSH Si ejecuta en modo en vivo, la contraseña de la cuenta de kali es "kali.” Por lo tanto, no debe habilitar
SSH antes de cambiar la contraseña de la cuenta de kali, o antes de haber modificado su
configuración para no permitir inicios de sesión basados en contraseña.
También es posible que desee generar nuevas claves SSH de host, si instaló Kali mediante una
imagen pregenerada. Esto está cubierto en “Generación de nuevas claves de host SSH” [página 115].
Acortafuegoses una pieza de equipo informático con hardware, software o ambos que analiza los
paquetes de red entrantes o salientes (que llegan o salen de una red local) y solo deja pasar aquellos
que cumplen ciertas condiciones predefinidas.
Una puerta de enlace de red de filtrado es un tipo de cortafuegos que protege una red completa. Por lo general, se instala
en una máquina dedicada configurada como una puerta de enlace para la red para que pueda analizar todos los paquetes
que entran y salen de la red. Alternativamente, un firewall local es un servicio de software que se ejecuta en una máquina
en particular para filtrar o limitar el acceso a algunos servicios en esa máquina, o posiblemente para evitar conexiones
salientes por software no autorizado que un usuario podría haber instalado, voluntariamente o no.
1https://www.kali.org/docs/introduction/default-credentials/
2https://tools.kali.org/
Independientemente de cómo decidas configurarlo,filtro de redes la implementación del firewall de Linux, así que echemos un
vistazo más de cerca a cómo funciona.
filtro de redutiliza cuatro tablas distintas, que almacenan reglas que regulan tres tipos de operaciones en paquetes:
• mutilarse refiere a otros cambios en los paquetes IP (incluidos los ToS—Tipo de servicio—campo y
opciones);
• crudopermite otras modificaciones manuales en los paquetes antes de que lleguen al sistema de seguimiento de
conexiones.
Cada tabla contiene listas de reglas llamadascadenas. El cortafuegos utiliza cadenas estándar para gestionar
paquetes en función de circunstancias predefinidas. El administrador puede crear otras cadenas, que solo se
utilizarán cuando las remita una de las cadenas estándar (ya sea directa o indirectamente).
• ADELANTE:se refiere a los paquetes que pasan a través del cortafuegos (que no es ni su
origen ni su destino).
• POSTERIOR ENRUTAMIENTO:modificar los paquetes cuando estén listos para seguir su camino;
Estas cadenas se ilustran en la Figura7.1, “Cómofiltro de redLas cadenas se llaman” [página 161].
Cada cadena es una lista de reglas; cada regla es un conjunto de condiciones y una acción a realizar cuando se
cumplen las condiciones. Al procesar un paquete, el firewall escanea la cadena apropiada, una regla tras otra, y
cuando se cumplen las condiciones para una regla, salta (de ahí el -jopción en los comandos con sección7.4.2.2, “
Normas” [página 163]) a la acción especificada para continuar con el procesamiento. Los comportamientos más
comunes están estandarizados y existen acciones dedicadas para ellos. Tomar una de estas acciones estándar
interrumpe el procesamiento de la cadena, ya que el destino de los paquetes ya está sellado (salvo una excepción
que se menciona a continuación). A continuación se enumeran losfiltro de redcomportamiento.
• REGISTRO:registro (a través deregistro del sistema) un mensaje con una descripción del paquete. Tenga en
cuenta que esta acción no interrumpe el procesamiento y la ejecución de la cadena continúa en la siguiente
regla, por lo que el registro de paquetes rechazados requiere una regla LOG y REJECT/DROP. Los parámetros
comunes asociados con el registro incluyen:
• ULOG:registrar un mensaje a través deulogd, que puede adaptarse mejor y ser más eficiente que
registro del sistemapara manejar grandes cantidades de mensajes; tenga en cuenta que esta acción, como LOG, también
devuelve el procesamiento a la siguiente regla en la cadena de llamada.
Otras actuaciones, en particular las relativas a lamutilartabla, están fuera del alcance de este
texto. Eliptables(8)ytablas ip6(8)Las páginas del manual tienen una lista completa.
¿Qué es ICMP? Protocolo de mensajes de control de Internet(ICMP) es el protocolo utilizado para transmitir
información auxiliar en las comunicaciones. Prueba la conectividad de la red con elsilbido
comando, que envía un ICMPsolicitud de ecomensaje, que el destinatario debe responder con
un ICMPrespuesta de ecomensaje. Señala un cortafuegos que rechaza un paquete, indica un
desbordamiento en un búfer de recepción, propone una mejor ruta para los siguientes
paquetes en la conexión, etc. Este protocolo está definido por varios documentos RFC. RFC777
y RFC792 fueron los primeros, pero muchos otros ampliaron y/o revisaron el protocolo.
mihttp://www.faqs.org/rfcs/rfc777.html
mihttp://www.faqs.org/rfcs/rfc792.html
Como referencia, un búfer de recepción es una pequeña zona de memoria que almacena datos entre el
momento en que llega desde la red y el momento en que el kernel los maneja. Si esta zona está llena, no se
pueden recibir nuevos datos e ICMP señala el problema para que el emisor pueda reducir su tasa de
transferencia (que idealmente debería alcanzar un equilibrio después de un tiempo).
Tenga en cuenta que aunque una red IPv4 puede funcionar sin ICMP, ICMPv6 es estrictamente
necesario para una red IPv6, ya que combina varias funciones que, en el mundo de IPv4, estaban
repartidas en ICMPv4,Protocolo de pertenencia a grupos de Internet(IGMP), yprotocolo de
resolucion de DIRECCION(ARP). ICMPv6 se define en RFC4443.
mihttp://www.faqs.org/rfcs/rfc4443.html
Comandos
Las principales opciones para interactuar con las cadenas se enumeran a continuación:
• - Lcadenaenumera las reglas en la cadena. Esto se usa comúnmente con el -norteopción para deshabilitar la
resolución de nombres (por ejemplo,iptables -n -L ENTRADAmostrará las reglas relacionadas con los paquetes
entrantes).
• - nortecadenacrea una nueva cadena. Puede crear nuevas cadenas para varios propósitos, incluida la
prueba de un nuevo servicio de red o la defensa de un ataque a la red.
• - Icadena rule_num reglainserta una regla antes del número de reglarule_num. Al igual que con el -Aopción, tenga
en cuenta el orden de procesamiento al insertar nuevas reglas en una cadena.
• - Dcadena rule_num(o -Dcadena de reglas) elimina una regla en una cadena; la primera sintaxis identifica
la regla que se eliminará por su número (iptables -L --números de líneamostrará estos números), mientras que el
segundo lo identifica por su contenido.
• - Fcadenavacía una cadena (borra todas sus reglas). Por ejemplo, para eliminar todas las reglas relacionadas
con los paquetes salientes, ejecutaríaiptables -F SALIDA. Si no se menciona ninguna cadena, se eliminan todas
las reglas de la tabla.
• - PAGacción en cadenadefine la acción predeterminada o "política" para una cadena dada; tenga en cuenta que solo las cadenas
estándar pueden tener una política de este tipo. Para descartar todo el tráfico entrante de forma predeterminada, ejecutaría
Normas
El -pagprotocolola condición coincide con el campo de protocolo del paquete IP. Los valores más comunes
sontcp, udp, icmp,yicmpv6.Esta condición se puede complementar con condiciones en los puertos TCP, con
cláusulas como --Puerto de origenpuertoy --Puerto de destinopuerto.
Hay muchas opciones disponibles paraiptablesytablas ip6y dominarlos a todos requiere mucho estudio y
experiencia. Sin embargo, una de las opciones que usará con más frecuencia es la de bloquear el
tráfico de red malicioso de un host o rango de hosts. Por ejemplo, para bloquear silenciosamente el
tráfico entrante desde la dirección IP10.0.1.5y el31.13.74.0/24subred clase C:
Otro de uso comúniptablesEl comando es permitir el tráfico de red para un servicio o puerto específico. Para
permitir que los usuarios se conecten a SSH, HTTP e IMAP, puede ejecutar los siguientes comandos:
Se considera una buena computadora.higienepara limpiar reglas viejas e innecesarias. La forma más fácil de
eliminariptablesreglas es hacer referencia a las reglas por número de línea, que puede recuperar con
Existen condiciones más específicas, dependiendo de las condiciones genéricas descritas anteriormente. Para
obtener más información, consulte las páginas del manual paraiptables(8)ytablas ip6(8)
Cada creación de regla requiere una invocación deiptablesotablas ip6. Escribir estos comandos manualmente puede
ser tedioso, por lo que las llamadas generalmente se almacenan en un script para que el sistema se configure
automáticamente de la misma manera cada vez que se inicia la máquina. Este script se puede escribir a mano pero
también puede ser interesante prepararlo con una herramienta de alto nivel comoconstructora.
El principio es simple. En el primer paso, describa todos los elementos que estarán involucrados en las
reglas reales:
• Los servidores
Luego, cree las reglas con simples acciones de arrastrar y soltar en los objetos como se muestra en la Figura
7.2, “Ventana principal de Fwbuilder” [página 166]. Unos pocos menús contextuales pueden cambiar la
condición (negarla, por ejemplo). Luego, la acción debe elegirse y configurarse.
En lo que respecta a IPv6, puede crear dos conjuntos de reglas distintos para IPv4 e IPv6, o crear solo
uno y dejar queconstructoratraducir las reglas según las direcciones asignadas a los objetos.
constructoragenerará un script configurando el cortafuegos según las reglas que hayas definido.
Su arquitectura modular le da la capacidad de generar scripts dirigidos a diferentes sistemas,
incluidosiptablespara linux,ipfpara FreeBSD ypor favorpara OpenBSD.
Para implementar las reglas del firewall cada vez que se inicia la máquina, deberá registrar
el script de configuración en unarribadirectiva de la/etc/red/interfacesarchivo. En el siguiente
ejemplo, el script se almacena en/usr/local/etc/arrakis.fw(arrakis es el nombre de host de la
máquina).
auto eth0
iface eth0 inet estático
dirección 192.168.0.1
red 192.168.0.0
máscara de red 255.255.255.0
transmitir 192.168.0.255 hasta /usr/
local/etc/arrakis.fw
En esta sección, revisaremos algunas herramientas que se pueden usar para monitorear varios aspectos de un sistema
Kali.
Elverificación de registroEl programa supervisa los archivos de registro cada hora de forma predeterminada y envía mensajes de registro inusuales en
En los tres casos,verificación de registroprobablemente debería personalizarse para excluir algunos mensajes adicionales
(según los servicios instalados), a menos que realmente desee recibir lotes por hora de correos electrónicos largos y poco
interesantes. Dado que el mecanismo de selección de mensajes es bastante complejo,/usr/compartir/doc/
logcheck-database/README.logcheck-database.gzes una lectura requerida, aunque desafiante.
• los que califican un mensaje como intento de cracking (almacenados en un archivo en el/etc/logcheck/
grietas.d/directorio);
• por último, las aplicables al resto de mensajes (considerados comoeventos del sistema).
Un evento del sistema siempre se señala a menos que una regla en uno de los/etc/logcheck/ignore.d. {paranoico,
servidor, estación de trabajo}/directorios indica que el evento debe ser ignorado. Por supuesto, los únicos
directorios que se tienen en cuenta son los correspondientes a niveles de verbosidad iguales o superiores al
modo de funcionamiento seleccionado.
corchetes {} en un El uso de llaves en un comando bash tiene muchas funciones diferentes. En el ejemplo
Dominio anterior, lo estamos usando como una forma abreviada de repetir partes del comando. Bash
luego expandirá el comando antes de ejecutarlo.
En el ejemplo a continuación, tendrá el mismo resultado, tres archivos creados en nuestro directorio
de inicio.
arribaes una herramienta interactiva que muestra una lista de los procesos que se están ejecutando actualmente. La clasificación
predeterminada se basa en la cantidad actual de uso del procesador y se puede obtener con elPAGllave. Otros órdenes de
clasificación incluyen una clasificación por memoria ocupada (METROclave), por el tiempo total del procesador (Tclave), y por
identificador de proceso (nortellave). Elkkey mata un proceso ingresando su identificador de proceso. Elrkey cambia la prioridad de
un proceso.
Cuando el sistema parece estar sobrecargado,arribaes una gran herramienta para ver qué procesos compiten por el
tiempo del procesador o consumen demasiada memoria. En particular, a menudo es interesante comprobar si los
procesos que consumen recursos coinciden con los servicios reales que se sabe que alberga la máquina. Un
proceso desconocido que se ejecuta como el usuario "www-data" realmente debería destacarse e investigarse, ya
que probablemente sea una instancia de software instalada y ejecutada en el sistema a través de una
vulnerabilidad en una aplicación web.
arribaes una herramienta muy flexible y su página de manual brinda detalles sobre cómo personalizar su pantalla y
Eladministrador de tareas xfce4La herramienta gráfica es similar aarribay proporciona aproximadamente las mismas
características. Para los usuarios de GNOME haygnome-sistema-monitory para los usuarios de KDE hayksysguardque
también son similares.
Una vez que se instala y configura un sistema, la mayoría de los archivos del sistema deben permanecer relativamente
estáticos hasta que se actualice el sistema. Por lo tanto, es una buena idea monitorear los cambios en los archivos del
sistema, ya que cualquier cambio inesperado podría ser motivo de alarma y debe investigarse. Esta sección presenta
algunas de las herramientas más comunes utilizadas para monitorear los archivos del sistema, detectar cambios y,
opcionalmente, notificarlo como administrador del sistema.
dpkg --verificar(odpkg -V) es una herramienta interesante ya que muestra los archivos del sistema que han sido
modificados (potencialmente por un atacante), pero esta salida debe tomarse con cautela. Para hacer su trabajo,
dpkgse basa en sumas de verificación almacenadas en su propia base de datos que se almacena en el disco duro
(que se encuentra en/var/lib/dpkg/info/paquete.md5sums). Por lo tanto, un atacante meticuloso modificará estos archivos
para que contengan las nuevas sumas de verificación para los archivos subvertidos, o un atacante avanzado pondrá
en peligro el paquete en su réplica de Debian. Para protegerse contra esta clase de ataque, utilice el sistema de
verificación de firma digital de APT (consulte la sección8.3.6, “Validación de la autenticidad del paquete” [página
208]) para verificar correctamente los paquetes.
¿Qué es un archivo? Como recordatorio: una huella dactilar es un valor, a menudo un número (aunque
¿Huella dactilar? en notación hexadecimal), que contiene una especie de firma para el contenido de
un archivo. Esta firma se calcula con un algoritmo (MD5, SHA1, SHA256 son
ejemplos bien conocidos) que más o menos garantiza que incluso el más mínimo
cambio en el contenido del archivo resultará en un cambio de la huella digital;
esto se conoce como el “efecto avalancha”. Una simple huella digital sirve como
prueba de fuego para verificar si el contenido de un archivo ha sido alterado.
Estos algoritmos no son reversibles; es decir, para la mayoría de ellos, conocer
una huella dactilar no permite encontrar el contenido correspondiente. Los
avances matemáticos recientes parecen debilitar el carácter absoluto de estos
principios, pero su uso no se cuestiona hasta el momento.
Correrdpkg -Vverificará todos los paquetes instalados e imprimirá una línea por cada archivo que no supere la verificación.
Cada carácter denota una prueba en algunos metadatos específicos. Desafortunadamente,dpkgno almacena los metadatos
necesarios para la mayoría de las pruebas y, por lo tanto, generará signos de interrogación para ellas. Actualmente, solo la
prueba de suma de comprobación puede arrojar un 5 en el tercer carácter (cuando falla).
# dpkg -V
??5?????? /lib/systemd/system/ssh.servicio
??5?????? c /etc/libvirt/qemu/networks/default.xml ??5?????? c /etc/
lvm/lvm.conf
??5?????? c /etc/salt/roster
En el ejemplo anterior, dpkg informa de un cambio en el archivo de servicio de SSH que el administrador realizó en el
archivo empaquetado en lugar de utilizar un archivo de servicio apropiado./etc/systemd/system/ssh.servicioanular
La herramienta Entorno de detección avanzada de intrusos (AIDE) comprueba la integridad del archivo y detecta
cualquier cambio en una imagen previamente grabada del sistema válido. La imagen se almacena como una base
de datos (/var/lib/aide/aide.db) que contiene la información relevante sobre todos los archivos del sistema (huellas
dactilares, permisos, marcas de tiempo, etc.).
Puede instalar AIDE ejecutandoactualización adecuadaseguido porasistente de instalación apto. Primero inicializará la base
de datos conayudante; entonces se ejecutará diariamente (a través del/etc/cron.diario/aidescript) para verificar que no
haya cambiado nada relevante. Cuando se detectan cambios, AIDE los registra en archivos de registro (/var/log/
ayudante/*.log) y envía sus conclusiones al administrador por correo electrónico.
Protección de la base de datos Dado que AIDE utiliza una base de datos local para comparar los estados de los expedientes, la
validez de sus resultados está directamente ligada a la validez de la base de datos. Si un atacante
obtiene permisos de root en un sistema comprometido, podrá reemplazar la base de datos y cubrir
sus huellas. Una forma de evitar esta subversión es almacenar los datos de referencia en medios de
almacenamiento de solo lectura.
Diariamente se genera una nueva versión de la base de datos en/var/lib/aide/aide.db.nuevo; si todos los cambios registrados
fueron legítimos, se puede utilizar para reemplazar la base de datos de referencia.
Tripwire es muy similar a AIDE; incluso la sintaxis del archivo de configuración es casi la misma. La principal adición
proporcionada porcable trampaes un mecanismo para firmar el archivo de configuración para que un atacante no pueda
hacer que apunte a una versión diferente de la base de datos de referencia.
Samhain también ofrece características similares, así como algunas funciones para ayudar a detectar rootkits (ver “El
comprobar la seguridadychkrootkit/rkhunterpaquetes” [página 171] a continuación). También se puede implementar
globalmente en una red y registrar sus rastros en un servidor central (con una firma).
7.6. Resumen
En este capítulo, echamos un vistazo al concepto de políticas de seguridad, resaltando varios puntos a considerar al definir
dicha política y describiendo algunas de las amenazas para su sistema y para usted personalmente, como profesional de la
seguridad. Discutimos las medidas de seguridad de computadoras de escritorio y portátiles, así como los firewalls y el
filtrado de paquetes. Finalmente, revisamos las herramientas y estrategias de monitoreo y mostramos cómo
implementarlas mejor para detectar posibles amenazas a su sistema.
Resumen de consejos:
• A menudo surge un riesgo real cuando viaja de un cliente a otro. Por ejemplo, su computadora portátil podría ser
robada mientras viaja o incautada por la aduana. Prepárese para estas desafortunadas posibilidades utilizando el
cifrado de disco completo (consulte la sección4.2.2, “Instalación en un sistema de archivos totalmente cifrado
” [página 88]) y considere la característica nuclear (ver “Agregar una contraseña de Nuke para mayor seguridad
” [página 250]) para proteger los datos de sus clientes.
• Deshabilite los servicios que no utilice. Kali facilita hacer esto ya que todos los servicios de red externos están
deshabilitados de manera predeterminada.
• Si está ejecutando Kali en un servidor de acceso público, cambie las contraseñas predeterminadas para los
servicios que puedan configurarse (consulte la sección7.3, “Protección de servicios de red” [página 159]) y
restringir su acceso con un cortafuegos (ver sección7.4, “Cortafuegos o filtrado de paquetes” [página 159])
antes de lanzarlos.
• Usarfail2banpara detectar y bloquear ataques de adivinación de contraseñas y ataques remotos de contraseñas de fuerza
bruta.
• Si ejecuta servicios web, alójelos a través de HTTPS para evitar que los intermediarios de la red
detecten su tráfico (lo que podría incluir cookies de autenticación).
• El kernel de Linux incorpora elfiltro de redcortafuegos No existe una solución llave en mano para configurar
cualquier firewall, ya que los requisitos de la red y del usuario difieren. Sin embargo, puede controlarfiltro
de red desde el espacio de usuario con eliptablesytablas ip6comandos
• Implementar reglas de firewall (ver sección7.4, “Cortafuegos o filtrado de paquetes” [página 159]) para prohibir todo
el tráfico saliente excepto el tráfico generado por su VPNaccess. Esto se entiende como una seguridad
• arribaes una herramienta interactiva que muestra una lista de los procesos que se están ejecutando actualmente.
• Elverificación de registroEl programa supervisa los archivos de registro cada hora de forma predeterminada y envía mensajes de registro inusuales en
• dpkg --verificar(odpkg -V) muestra los archivos del sistema que han sido modificados (potencialmente por un atacante),
pero se basa en sumas de verificación, que pueden ser subvertidas por un atacante inteligente.
• La herramienta Entorno de detección avanzada de intrusos (AIDE) comprueba la integridad del archivo y
detecta cualquier cambio en una imagen previamente grabada del sistema válido.
• Tripwire es muy similar a AIDE pero utiliza un mecanismo para firmar el archivo de configuración, de modo que un
atacante no pueda hacer que apunte a una versión diferente de la base de datos de referencia.
En el próximo capítulo, profundizaremos en los fundamentos de Debian (capítulo8, “Gestión de paquetes de Debian
” [página 176]) y gestión de paquetes. Comprenderá rápidamente el poder detrás de las raíces de Debian de Kali y
aprenderá cómo los desarrolladores han aprovechado ese poder. Tenga cuidado, el próximo capítulo es bastante
denso, pero es fundamental que comprenda los conceptos básicos de Debian y la administración de paquetes si va
a ser un usuario avanzado de Kali.
dpkg
apto
fuentes.lista
Actualizaciones
Repositorios de paquetes
Capítulo
Paquete Debian 8
Gestión
Contenido
Introducción a APT176 Interacción básica del paquete181 Configuración y uso avanzados de APT200
Referencia del paquete APT: profundizando en el sistema de paquetes de Debian210 Resumen222
Después de los conceptos básicos de Linux, es hora de aprender el sistema de gestión de paquetes de una distribución
basada en Debian. En tales distribuciones, incluida Kali, el paquete Debian es la forma canónica de hacer que el software
esté disponible para los usuarios finales. Comprender el sistema de administración de paquetes le brindará una gran
cantidad de información sobre cómo está estructurado Kali, le permitirá solucionar problemas de manera más efectiva y lo
ayudará a ubicar rápidamente la ayuda y la documentación para la amplia gama de herramientas y utilidades incluidas en
Kali Linux.
Comenzaremos con algunas descripciones generales básicas de APT, describiremos la estructura y el contenido de los paquetes
binarios y fuente, echaremos un vistazo a algunas herramientas y escenarios básicos, y luego profundizaremos para ayudarlo a
exprimir cada onza de utilidad de este espectacular sistema de paquetes y suite. de herramientas
Comencemos con algunas definiciones básicas, una descripción general y un poco de historia sobre los paquetes de
Debian, comenzando condpkgy APTO.
El comando base para manejar paquetes Debian en el sistema esdpkg, que realiza instalación o análisis
de.debutantepaquetes y su contenido. Sin embargo,dpkgtiene solo una vista parcial del universo Debian:
sabe lo que está instalado en el sistema y lo que usted proporciona en la línea de comando, pero no
sabe nada de los otros paquetes disponibles. Como tal, fallará si no se cumple una dependencia. APT
aborda las limitaciones.
Si ha vivido lo suficiente como para recordar compilar programas conCCG(incluso con la ayuda de
utilidades comohaceryconfigurar), probablemente recuerde que fue un proceso doloroso, especialmente
si la aplicación tenía varias dependencias. Al descifrar las diversas advertencias y mensajes de error, es
posible que haya podido determinar qué parte del código estaba fallando y, en la mayoría de los casos,
esa falla se debió a una biblioteca faltante u otra dependencia. Luego rastrearía esa biblioteca o
dependencia que falta, la corregiría y volvería a intentarlo. Luego, si tenía suerte, la compilación se
completaría, pero a menudo la compilación fallaría nuevamente, quejándose de otra dependencia
rota.
APT fue diseñado para ayudar a aliviar ese problema, cotejar los requisitos y dependencias del programa y
resolverlos. Esta funcionalidad funciona de forma inmediata en Kali Linux, pero no es infalible. Es importante
que comprenda cómo funciona el sistema de empaquetado de Debian y Kali porque necesitará instalar
paquetes, actualizar software o solucionar problemas con los paquetes. Utilizará APT en su trabajo diario con
Kali Linux y en este capítulo, le presentaremos APT y le mostraremos cómo instalar, eliminar, actualizar y
administrar paquetes, e incluso le mostraremos cómo mover paquetes entre diferentes distribuciones de
Linux. También hablaremos sobre las herramientas gráficas que aprovechan APT, le mostraremos cómo
validar la autenticidad de los paquetes y profundizaremos en el concepto de una distribución continua, una
técnica que trae actualizaciones diarias a su sistema Kali.
Antes de profundizar y mostrarle cómo usardpkgy APT para instalar y administrar paquetes, es importante
que profundicemos en algunos de los mecanismos internos de APT y analicemos la terminología que lo
rodea.
Origen del paquete y La palabrafuentepuede ser ambiguo. Un paquete fuente, un paquete que contiene el
Paquete fuente código fuente de un programa, no debe confundirse con un paquete fuente, un
repositorio (sitio web, servidor FTP, CD/DVD-ROM, directorio local, etc.) que contiene
paquetes.
Elfuentes.listaes el archivo de configuración clave para definir las fuentes de los paquetes, y es
importante comprender cómo se presenta y cómo configurarlo, ya que APT no funcionará sin una lista
de fuentes de paquetes definida correctamente. Analicemos su sintaxis, echemos un vistazo a los
diversos repositorios que utiliza Kali Linux y analicemos los espejos y la redirección de espejos, luego
estará listo para usar APT.
Echemos un vistazo a la sintaxis de este archivo. El primer campo indica el tipo de fuente:
El segundo campo proporciona la URL base de la fuente: puede consistir en un espejo de Kali o cualquier otro
archivo de paquete configurado por un tercero. La URL puede comenzar conarchivo://para indicar una fuente local
instalada en la jerarquía de archivos del sistema, conhttp://para indicar una fuente accesible desde un servidor web,
o conftp://para una fuente disponible en un servidor FTP. La URL también puede comenzar conCD ROM: para
instalaciones basadas en CD/DVD-ROM/Blu-ray disc, aunque esto es menos frecuente ya que los métodos de
instalación basados en red son cada vez más comunes.
ElCD ROMlas entradas describen el CD/DVD-ROM que tiene. A diferencia de otras entradas, un CD/DVD-ROM
no siempre está disponible, ya que debe insertarse en la unidad y, por lo general, solo se puede leer un
disco a la vez. Por esas razones, estas fuentes se administran de una manera ligeramente diferente y deben
agregarse con elapt-cdromprograma, normalmente ejecutado con elagregarparámetro. Este solicitará
entonces que se inserte el disco en la unidad y navegará por su contenido en busca dePaquetes
archivos Utilizará estos archivos para actualizar su base de datos de paquetes disponibles (esta operación generalmente la
realiza elactualización adecuadadominio). Después de eso, APT solicitará el disco si necesita un paquete almacenado en él.
La sintaxis del último campo depende de la estructura del repositorio. En los casos más simples, puede indicar
fácilmente un subdirectorio (con una barra inclinada al final requerida) de la fuente deseada (esto es a menudo un
simple "./”, que se refiere a la ausencia de un subdirectorio: los paquetes están directamente en el
Debian y Kali utilizan tres apartados para diferenciar paquetes según las licencias elegidas por los autores de cada
obra. Una diferencia entre Debian y Kali es que Debian solo tiene principal habilitado de forma predeterminada,
mientras que Kali tiene los tres habilitados de forma predeterminada.
principalcontiene todos los paquetes que cumplen totalmente con losPautas de software libre de Debian1.
Elno libreEl archivo es diferente porque contiene software que no se ajusta (totalmente) a estos
principios pero que, sin embargo, puede distribuirse sin restricciones.
contribución (contribuciones) es un conjunto de software de código abierto que no puede funcionar sin algunos
elementos no libres. Estos elementos pueden incluir software delno libresección o archivos no libres como ROMs de
juegos, BIOS de consolas, etc.contribucióntambién incluye software libre cuya compilación requiere elementos
propietarios, como VirtualBox, que requiere un compilador no libre para construir algunos de sus archivos.
Ahora, echemos un vistazo a las fuentes o repositorios de paquetes estándar de Kali Linux.
Un estandarfuentes.listaarchivo para un sistema que ejecuta Kali Linux se refiere a un repositorio (rodando
kali) y los tres componentes antes mencionados:principal, contribución,yno libre:
El depósito de Kali-Rolling
Este es el repositorio principal para los usuarios finales. Siempre debe contener paquetes instalables y recientes. Es
administrado por una herramienta que fusiona Debian Testing y los paquetes específicos de Kali de una manera que
garantiza que las dependencias de cada paquete se puedan satisfacer dentro de kali-rolling. En otras palabras, salvo
cualquier error en los scripts de mantenimiento, todos los paquetes deberían poder instalarse.
Dado que Debian Testing evoluciona a diario, Kali Rolling también lo hace. Los paquetes específicos de Kali también se actualizan
periódicamente a medida que supervisamos las versiones anteriores de los paquetes más importantes.
1https://www.debian.org/social_contract#guidelines
Este repositorio no es de uso público. Es un espacio donde los desarrolladores de Kali resuelven los problemas de
dependencia que surgen de la fusión de los paquetes específicos de Kali en Debian Testing.
También es el lugar donde llegan primero los paquetes actualizados, por lo que si necesita una actualización que se lanzó
recientemente y que aún no ha llegado a Kali-Rolling, es posible que pueda obtenerla de este repositorio. Esto no se
recomienda para usuarios habituales.
Depuración de un espejo Si tiene un problema con el espejo (por ejemplo porqueactualización adecuadafalla),
Redirección puede usarrizo -sIpara ver a dónde se le está redirigiendo:
2http://mirrorbrain.org/
mihttp://cdimage.kali.org/
Si desea solicitar una lista de Kali Linux Mirrors oficiales, puede agregar .lista de espejosa cualquier URL válida que
apunte ahttp.kali.orgocdimage.kali.org.
mihttp://http.kali.org/README.mirrorlist
mihttp://cdimage.kali.org/README.mirrorlist
Estas listas no son exhaustivas debido a algunas limitaciones de MirrorBrain (en particular, los espejos
restringidos a algunos países no aparecen en la lista a menos que se encuentre en el país en cuestión). Pero
contienen los mejores espejos: están bien mantenidos y tienen una gran cantidad de ancho de banda
disponible.
Armados con una comprensión básica del panorama APT, echemos un vistazo a algunas interacciones básicas del
paquete, incluida la inicialización de APT; instalación, eliminación y purga de paquetes; y actualización del sistema
Kali Linux. Entonces, aventurémonos desde la línea de comandos para echar un vistazo a algunas herramientas
gráficas de APT.
APT es un vasto proyecto y conjunto de herramientas, cuyos planes originales incluían una interfaz gráfica. Desde la
perspectiva del cliente, se centra en la herramienta de línea de comandosapt-getasí comoapto, que más tarde se desarrolló
para superar los defectos de diseño deapt-get.
Existen alternativas gráficas desarrolladas por terceros, incluyendosinápticoyaptitud, de la que hablaremos más
adelante. Tendemos a preferirapto, que usamos en los ejemplos que siguen. Sin embargo, detallaremos algunas de
las principales diferencias de sintaxis entre las herramientas, a medida que surjan.
Cuando trabaje con APT, primero debe descargar la lista de paquetes actualmente disponibles con
actualización adecuada. Dependiendo de la velocidad de su conexión, esto puede llevar algún tiempo porque la lista de varios
paquetes, la lista de fuentes y los archivos de traducción han crecido en tamaño junto con el desarrollo de Kali. Por
supuesto, los conjuntos de instalación de CD/DVD-ROM se instalan mucho más rápido, porque son locales para su
máquina.
Gracias al cuidadoso diseño del sistema de paquetes de Debian, puede instalar paquetes, con o sin sus
dependencias, con bastante facilidad. Echemos un vistazo a la instalación del paquete condpkgy
apto.
dpkges la herramienta principal que utilizará (ya sea directa o indirectamente a través de APT) cuando
necesite instalar un paquete. También es una opción ideal si está operando sin conexión, ya que no requiere
una conexión a Internet. Recordar,dpkgno instalará ninguna dependencia que el paquete pueda requerir.
Para instalar un paquete condpkg, simplemente proporcione el -io --instalaropción y el camino a la.debutante.
Esto implica que previamente has descargado (u obtenido de alguna otra forma) el
. debutantearchivo del paquete a instalar.
# dpkg -i hombre-db_2.9.3-2_amd64.deb
(Leyendo base de datos... 309317 archivos y directorios actualmente instalados.) Preparando para
desempaquetar man-db_2.9.3-2_amd64.deb...
Desempaquetando man-db (2.9.3-2) sobre (2.9.3-2)...
Configurando man-db (2.9.3-2)...
Actualizando la base de datos de las páginas del manual...
man-db.service es una unidad deshabilitada o estática que no se ejecuta, no la inicia. Disparadores de
procesamiento para kali-menu (2020.4.0) ...
Disparadores de procesamiento para compatibilidad con mime (3.64) ...
Podemos ver los diferentes pasos realizados pordpkgy puede ver en qué punto se puede haber producido algún
error. El -io --instalarLa opción realiza dos pasos automáticamente: desempaqueta el paquete y ejecuta los scripts
de configuración. Puede realizar estos dos pasos de forma independiente (como lo hace apt detrás de escena) con
el --deshacery --configuraropciones, respectivamente:
Tenga en cuenta que las líneas de "Desencadenadores de procesamiento" se refieren al código que se ejecuta
automáticamente cada vez que un paquete agrega, elimina o modifica archivos en algunos directorios monitoreados. por
ejemplo, elmimesupportpaquete de monitores/usr/lib/mime/paquetesy ejecuta elActualizar-mimodominio
Un error frecuente, que seguramente encontrará tarde o temprano, es una colisión de archivos.
Cuando un paquete contiene un archivo que ya está instalado por otro paquete,dpkgse negará a
instalarlo. Aparecerán los siguientes tipos de mensajes:
En este caso, si cree que reemplazar este archivo no es un riesgo significativo para la estabilidad de su
sistema (que suele ser el caso), puede usar:forzar sobrescriturapara sobrescribir el archivo.
Si bien hay muchos disponibles,fuerza-*opciones, solo --forzar sobrescrituraes probable que se use
regularmente. Estas opciones existen para situaciones excepcionales, y es mejor dejarlas en paz tanto como
sea posible para respetar las reglas impuestas por el mecanismo de empaque. No lo olvide, estas reglas
aseguran la consistencia y estabilidad de su sistema.
Aunque APT es mucho más avanzado quedpkgy hace mucho más detrás de escena, encontrará que
interactuar con los paquetes es bastante simple. Puede agregar un paquete al sistema con un simple
instalación aptapaquete. APT instalará automáticamente las dependencias necesarias:
Al igual que condpkg, también puede instruiraptopara instalar a la fuerza un paquete y sobrescribir archivos
con --forzar sobrescribir,pero la sintaxis es un poco extraña ya que está pasando el argumento adpkg:
Como distribución continua, Kali Linux tiene capacidades de actualización espectaculares. En esta sección,
veremos qué tan simple es actualizar Kali y discutiremos estrategias para planificar sus actualizaciones.
Recomendamos actualizaciones periódicas, ya que instalarán las últimas actualizaciones de seguridad. Para actualizar,
usaractualización adecuadaseguido por cualquieraactualización apta,apt-obtener actualización, oactualización segura de aptitude.
Estos comandos buscan paquetes instalados que se pueden actualizar sin eliminar ningún paquete. En
otras palabras, el objetivo es garantizar la actualización menos intrusiva posible. Elapt-getdominio
Deciraptopara usar una distribución específica al buscar paquetes actualizados, debe usar el -to --
destino-lanzamientoopción, seguida del nombre de la distribución que desea (por ejemplo:
apt -t actualización continua de kali). Para evitar especificar esta opción cada vez que utiliceapto,
puedes añadirAPT::Default-Release ”kali-rolling”;en el archivo/etc/apt/apt.conf.d/local.
Para actualizaciones más importantes, como actualizaciones de versiones principales, useapt actualización completa.
Con esta instrucción,aptocompletará la actualización incluso si tiene que eliminar algunos paquetes obsoletos o
instalar nuevas dependencias. Este es también el comando que debe usar para las actualizaciones periódicas de su
sistema Kali Rolling. Es tan simple que apenas necesita explicación: la reputación de APT se basa en esta gran
funcionalidad.
Tenga en cuenta lo importante Para anticipar algunos de estos problemas, puede instalar elapt-listchangespaquete, que
Cambios muestra información sobre posibles problemas al comienzo de la actualización de un paquete.
Esta información es compilada por los mantenedores del paquete y puesta en
/usr/compartir/doc/paquete/NOTICIAS.Debianarchivos para su beneficio. La lectura de estos archivos
(posiblemente a través deapt-listchanges) debería ayudarlo a evitar sorpresas desagradables.
Desde que se convirtió en una distribución continua, Kali puede recibir actualizaciones varias veces al día. Sin
embargo, esa podría no ser la mejor estrategia. Entonces, ¿con qué frecuencia debería actualizar Kali Linux? No hay
una regla estricta, pero hay algunas pautas que pueden ayudarlo. Deberías actualizar:
• Cuando sospecha que una versión actualizada podría corregir un error que está experimentando.
• Antes de reportar un error para asegurarse de que todavía está presente en la última versión que tiene
disponible.
• Con la frecuencia suficiente para obtener las correcciones de seguridad de las que no ha oído hablar.
También hay casos en los que es mejor no actualizar. Por ejemplo, puede que no sea una buena idea
actualizar:
• Si no puede permitirse ninguna rotura (por ejemplo, porque se desconecta o porque está a punto de dar una
presentación con su computadora); es mejor realizar la actualización más tarde, cuando tenga suficiente
tiempo para solucionar cualquier problema que se presente en el proceso.
• Si ocurrió un cambio disruptivo recientemente (o todavía está en curso) y teme que aún no se hayan
descubierto todos los problemas. Por ejemplo, cuando se lanza una nueva versión de GNOME, no todos
• Si elapt actualización completala salida le dice que eliminará los paquetes que considere importantes para
su trabajo. En esos casos, desea revisar la situación y tratar de entender por quéaptoquiere
eliminarlos. Tal vez los paquetes estén actualmente dañados y, en este caso, es posible que desee
esperar hasta que las versiones reparadas estén disponibles, o se han quedado obsoletos y debe
identificar sus reemplazos y luego continuar con la actualización completa de todos modos.
En general, le recomendamos que actualice Kali al menos una vez a la semana. Ciertamente, puede actualizar diariamente,
pero no tiene sentido hacerlo con más frecuencia que eso. Incluso si nuestras réplicas se sincronizan cuatro veces al día,
las actualizaciones provenientes de Debian generalmente solo llegan una vez al día.
Eliminar un paquete es incluso más sencillo que instalarlo. Echemos un vistazo a cómo eliminar
un paquete condpkgyapto.
Para eliminar un paquete condpkg, suministre el -ro --eliminaropción, seguida del nombre de un paquete. Sin embargo, esta
eliminación no es completa: todos los archivos de configuración, scripts de mantenimiento, archivos de registro (registros
del sistema), datos generados por el servicio (como el contenido de un directorio de servidor LDAP o el contenido de una
base de datos para un servidor SQL ), y la mayoría de los demás datos de usuario manejados por el paquete permanecen
intactos. La opción de eliminación facilita la desinstalación de un programa y su posterior reinstalación con la misma
configuración. Recuerde también que las dependencias no se eliminan. Considere este ejemplo:
También puede eliminar paquetes del sistema conapto eliminarpaquete. APT eliminará automáticamente los
paquetes que dependen del paquete que se está eliminando. Como eldpkgejemplo, los archivos de
configuración y los datos de usuario no se eliminarán.
A través de la adición de sufijos a los nombres de los paquetes, puede utilizarapto(oapt-getyaptitud) para
instalar ciertos paquetes y eliminar otros en la misma línea de comando. Con uninstalación apta
comando, agregue "-" a los nombres de los paquetes que desea eliminar. Con unapto eliminarcomando,
agregue "+" a los nombres de los paquetes que desea instalar.
Esto también se puede usar para excluir paquetes que de otro modo se instalarían, por ejemplo, debido a un
recomienda (discutido más adelante en la sección8.4.1.3, “recomienda, sugiere,yMejoraCampos” [página 214]). En
general, el solucionador de dependencias utilizará esa información como una pista para buscar soluciones
alternativas.
Para eliminar todos los datos asociados con un paquete, puede purgar el paquete con eldpkg -P paquete
, opurga aptapaquetecomandos Esto eliminará por completo el paquete y todos los datos del usuario, y
en el caso deapto, también eliminará las dependencias.
# dpkg -r debian-cd
(Leyendo la base de datos... 333606 archivos y directorios actualmente instalados.) Eliminando
debian-cd (3.1.32)...
# dpkg -P debian-cd
(Leyendo la base de datos... 332950 archivos y directorios actualmente instalados.) Eliminando
debian-cd (3.1.32)...
Purgando archivos de configuración para debian-cd (3.1.32) ...
A continuación, echemos un vistazo a algunas de las herramientas que se pueden usar para inspeccionar los paquetes de Debian.
aprenderemos dedpkg,apto, yapt-cachecomandos que se pueden usar para consultar y visualizar la base de datos del paquete.
Comenzaremos con variosdpkgopciones que consultan la base de datos interna de dpkg. Esta base de datos
reside en el sistema de archivos en/var/lib/dpkgy contiene varias secciones, incluidos los scripts de
configuración (/var/lib/dpkg/info), una lista de archivos que instaló el paquete (/var/lib/dpkg/info/*. lista), y el estado
de cada paquete que se ha instalado (/var/lib/dpkg/status). Puedes usardpkgpara interactuar con los archivos en
esta base de datos. Tenga en cuenta que la mayoría de las opciones están disponibles en una versión larga
(una o más palabras relevantes, precedidas por un guión doble) y una versión corta (una sola letra, a menudo
la inicial de una palabra de la versión larga, y precedida por un solo guión) . Esta convención es tan común
que es un estándar POSIX.
Primero, echemos un vistazo a...lista de archivospaquete(o -L),que enumera los archivos que fueron instalados por el
paquete especificado:
psdpkg -L base-contraseña
/.
/usr/share/doc-base/usuarios-y-grupos /usr/
share/base-passwd
/usr/share/base-passwd/group.master /usr/
share/base-passwd/passwd.master /usr/share/
man
/usr/share/hombre/pl
/usr/share/man/pl/man8
/usr/share/man/pl/man8/update-passwd.8.gz [...]
/usr/compartir/doc
/usr/share/doc/base-passwd /usr/share/doc/base-passwd/users-
and-groups.txt.gz /usr/share/doc/base-passwd/changelog.gz
/usr/share/doc/base-passwd/copyright /usr/share/doc/base-
passwd/README /usr/share/doc/base-passwd/users-and-
groups.html
Próximo,dpkg --buscararchivo(o -S),encuentra cualquier paquete que contenga el archivo o la ruta pasada en el
argumento. Por ejemplo, para encontrar el paquete que contiene/bin/fecha:
psdpkg -S /bin/fecha
coreutils: /bin/fecha
Eldpkg --estadopaquete(o -s)El comando muestra los encabezados de un paquete instalado. Por ejemplo,
para buscar en los encabezados elcoreutilspaquete:
psdpkg -s coreutils
Paquete: coreutils
Estado: instalar ok instalado
Prioridad: requerido
Sección: útiles
Tamaño instalado: 13855
Mantenedor: Michael Stone < mstone@debian.org >
Arquitectura: amd64
Multi-Arco: exterior
Versión: 8.23-3
Reemplaza: mktemp, ruta real, tiempo de espera
Eldpkg --lista(o -l)El comando muestra la lista de paquetes conocidos por el sistema y su estado de instalación.
También puedes usargrepen la salida para buscar ciertos campos, o proporcionar comodines (comob*)para
buscar paquetes que coincidan con una cadena de búsqueda parcial particular. Esto mostrará un resumen
de los paquetes. Por ejemplo, para mostrar una lista resumida de todos los paquetes que comienzan con 'b':
psdpkg -l 'b*'
Deseado=Desconocido/Instalar/Eliminar/Purgar/Retener
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend |/ Err?=(ninguno)/Reinst-
required (Estado,Err: mayúsculas=malo)
||/ Nombre Versión Descripción de la arquitectura
+ + + - =========================-==================== ======-============-===================== ii
backdoor-factory 3.4.2+dfsg -4 todos Parche binarios ELF y win32/64 de 32/64 bits con shellcode
respaldoninja
Naciones Unidas <ninguno> <ninguno> (sin descripción disponible) (sin
Naciones Unidas
copia de seguridad pc <ninguno> <ninguno> descripción disponible) (sin
balsa
Naciones Unidas <ninguno> <ninguno> descripción disponible) (sin
base
Naciones Unidas <ninguno> <ninguno> descripción disponible)
[...]
También puedes usardpkgpara comparar los números de versión del paquete con --comparar-versionesopción, que
a menudo es llamada por programas externos, incluidos los scripts de configuración ejecutados pordpkgsí mismo.
Esta opción requiere tres parámetros: un número de versión, un operador de comparación y un segundo número
de versión. Los diferentes operadores posibles son:es (estrictamente menor que),le (Menos que o igual a),
equivalente (igual),no (no es igual),edad (mayor o igual que), ygt (estrictamente mayor que). Si la comparación es
correcta,dpkgdevuelve 0 (éxito); si no, da un valor de retorno distinto de cero (lo que indica una falla). Considere
estas comparaciones:
1
psdpkg --compare-versiones 2.6.0pre3-1 lt 2.6.0-1 pseco $?
Nótese el inesperado fracaso de la última comparación: paradpkg, la cuerda "anterior” (generalmente denota un
prelanzamiento) no tiene un significado particular, ydpkgsimplemente lo interpreta como una cadena, en cuyo caso
”2.6.0pre3-1”es alfabéticamente mayor que ”2.6.0-1”.Cuando queremos que el número de versión de un paquete
indique que es una versión preliminar, usamos el carácter de tilde, “~”:
Elapt-cacheEl comando puede mostrar gran parte de la información almacenada en la base de datos interna de APT.
Esta información es una especie de caché, ya que se recopila de las diferentes fuentes enumeradas en el
fuentes.listaarchivo. Esto sucede durante elactualización adecuadaoperación.
VOCABULARIO Un caché es un sistema de almacenamiento temporal que se utiliza para acelerar el acceso frecuente a los datos
Cache cuando el método de acceso habitual es costoso (en cuanto al rendimiento). Este concepto se puede aplicar en
numerosas situaciones ya diferentes escalas, desde el núcleo de los microprocesadores hasta los sistemas de
almacenamiento de alta gama.
En el caso de APT, la referenciaPaquetesLos archivos son los que se encuentran en las réplicas de
Debian. Dicho esto, sería muy ineficaz impulsar cada búsqueda a través de las bases de datos de
paquetes en línea. Es por eso que APT almacena una copia de esos archivos (en/var/lib/apt/listas/) y las
búsquedas se realizan dentro de esos archivos locales. Similarmente,/var/caché/apt/archivos/
contiene una copia en caché de los paquetes ya descargados para evitar descargarlos
nuevamente si necesita reinstalarlos.
Para evitar un uso excesivo del disco cuando actualice con frecuencia, debe revisar
regularmente los/var/caché/apt/archivos/directorio. Se pueden usar dos comandos para
esto:apto limpio(oapt-limpiar) vacía completamente el directorio;limpieza automática apta
(apt-get limpieza automática) solo elimina paquetes que ya no se pueden descargar porque han
desaparecido del espejo y, por lo tanto, son inútiles. Tenga en cuenta que el parámetro de
configuraciónAPT::Instalación limpiase puede utilizar para evitar la eliminación de.debutantearchivos que
están instalados actualmente. Además, tenga en cuenta queaptoelimina los archivos descargados una
vez que se han instalado, por lo que esto importa principalmente cuando usa otras herramientas.
Elapt-cacheEl comando puede realizar búsquedas de paquetes basadas en palabras clave conbúsqueda de apt-cache
palabra clave. También puede mostrar los encabezados de las versiones disponibles del paquete conespectáculo apt-
caché paquete. Este comando proporciona la descripción del paquete, sus dependencias y el nombre de su
Una alternativa:axi-caché búsqueda de apt-cachees una herramienta muy rudimentaria, básicamente implementandogrepen las
descripciones del paquete. A menudo devuelve demasiados resultados o ninguno en absoluto, cuando se
incluyen demasiadas palabras clave.
búsqueda de axi-cachétérmino, por otro lado, proporciona mejores resultados, ordenados por
relevancia. utiliza elXapianmotor de búsqueda y es parte delapt-xapian-indexpaquete, que
indexa toda la información del paquete (y más, como el.escritorioarchivos de todos los paquetes
de Debian). Conoce las etiquetas y devuelve resultados en cuestión de milisegundos.
Algunas funciones se utilizan con menos frecuencia. Por ejemplo,política de apt-cachemuestra las prioridades
de las fuentes de los paquetes, así como las de los paquetes individuales. Otro ejemplo esapt-cache dumpavail,
que muestra los encabezados de todas las versiones disponibles de todos los paquetes.apt-cache pkgnames
muestra la lista de todos los paquetes que aparecen al menos una vez en el caché.
Tarde o temprano, se encontrará con un problema al interactuar con un paquete. En esta sección, describiremos
algunos pasos básicos para la solución de problemas que puede seguir y proporcionaremos algunas herramientas
que lo acercarán a una posible solución.
A pesar de los mejores esfuerzos de los mantenedores de Debian o Kali, una actualización del sistema no siempre es tan sencilla
como esperamos. Las nuevas versiones de software pueden ser incompatibles con las anteriores (por ejemplo, su comportamiento
predeterminado o su formato de datos pueden haber cambiado), o los errores pueden pasar desapercibidos a pesar de las pruebas
realizadas por los mantenedores de paquetes y los usuarios de Debian Unstable.
Aprovechando los informes de erroresEs posible que a veces descubra que una nueva versión del software no
funciona en absoluto. Esto generalmente sucede si la aplicación no es particularmente popular y no se ha probado
lo suficiente. Lo primero que hay que hacer es echar un vistazo a laRastreador de errores Kali3y en elSistema de
seguimiento de errores de Debian4enhttps://bugs.debian.org/paquete,y verifique si el problema ya se ha
informado. Si no es así, debe informarlo usted mismo (consulte la sección6.3, “Presentar un buen informe de error
” [página 134] para obtener instrucciones detalladas). Si ya se conoce, el informe de error y los mensajes asociados
suelen ser una excelente fuente de información relacionada con el error. En algunos casos, ya existe un parche y
está disponible en el propio informe de errores; luego puede volver a compilar una versión fija del paquete roto
localmente (consulte la sección9.1, “Modificación de paquetes de Kali” [página 228]). En otros casos, los usuarios
pueden haber encontrado una solución al problema y compartido sus ideas al respecto en sus respuestas al
informe; esas instrucciones pueden ayudarlo a solucionar el problema hasta que se publique una solución o un
parche. En el mejor de los casos, es posible que el paquete ya se haya reparado y puede encontrar detalles en el
informe de errores.
Bajar de categoría a una versión de trabajoCuando el problema es una regresión clara (donde funcionaba la
versión anterior), puede intentar degradar el paquete. En este caso, necesitará una copia de la versión anterior. Si
tiene acceso a la versión anterior en uno de los repositorios configurados en APT, puede usar un simple comando
de una línea para degradar (consulte la sección8.2.2.2, “Instalación de paquetes con APT” [página 183]). Pero con el
lanzamiento continuo de Kali, por lo general solo encontrará una versión única de cada paquete en un momento
dado.
Todavía puedes intentar encontrar el viejo.debutantearchivo e instalarlo manualmente condpkg. Viejo.debutanteLos archivos se pueden
encontrar en varios lugares:
• En elpiscinadirectorio en su espejo Kali habitual (los paquetes eliminados y obsoletos se mantienen durante tres o
cuatro días para evitar problemas con los usuarios que no tienen los últimos índices de paquetes)
• Enhttps://snapshot.debian.org/si el paquete afectado fue proporcionado por Debian y no por Kali; este
servicio guarda versiones históricas de todos los paquetes de Debian
3https://bugs.kali.org/
4https://bugs.debian.org/
Aquí nos basamos en el hecho de que los scripts de mantenimiento se almacenan en/var/lib/dpkg/info/y que podemos
revisarlos y modificarlos.
Dado que los scripts de mantenimiento suelen ser simples scripts de shell, es posible agregar unconjunto -xlínea justo
después de la línea shebang y dispóngalos para que se vuelvan a ejecutar (condpkg --configure -aparapostinstancia) para ver con
precisión qué está pasando y dónde está fallando. Esta salida también puede complementar muy bien cualquier informe
de error que pueda presentar.
Con este conocimiento recién adquirido, puede solucionar el problema subyacente o transformar el
comando fallido en uno que funcione (por ejemplo, agregando||verdaderoal final de la línea).
Tenga en cuenta que este consejo no funciona para una fallapreinstanciaya que ese script se ejecuta incluso antes de
que se instale el paquete, por lo que aún no está en su ubicación final. Funciona paracorreo postalyprematuro
aunque deberá ejecutar una eliminación de paquete (actualizar respectivamente) para activarlos.
EldpkgArchivo de registro
Eldpkgherramienta mantiene un registro de todas sus acciones en/var/log/dpkg.log. Este registro es extremadamente
detallado, ya que detalla todas las etapas de cada paquete. Además de ofrecer una forma de rastrear el
comportamiento de dpkg, ayuda a mantener un historial del desarrollo del sistema: puede encontrar el momento
exacto en que se instaló o actualizó cada paquete, y esta información puede ser extremadamente útil para
comprender un reciente cambio de comportamiento. Además, con todas las versiones registradas, es fácil cotejar la
información con elregistro de cambios.Debian.gzpara paquetes en cuestión, o incluso con informes de errores en línea.
# cola /var/log/dpkg.log
2021-01-06 23:16:37 estado instalado kali-tools-gpu:amd64 2021.1.0 2021-01-06 23:16:37
eliminar kali-tools-gpu:amd64 2021.1.0 <ninguno> 2021-01- 06 23:16:37 estado medio
configurado kali-tools-gpu:amd64 2021.1.0 2021-01-06 23:16:37 estado medio instalado kali-
tools-gpu:amd64 2021.1.0 2021-01-06 23 :16:37 estado archivos de configuración kali-tools-
gpu:amd64 2021.1.0 2021-01-06 23:16:37 estado no instalado kali-tools-gpu:amd64 <ninguno>
Cuando daña su sistema por error eliminando o modificando ciertos archivos, la forma más fácil de
restaurarlos es reinstalar el paquete afectado. Desafortunadamente, el sistema de empaquetado
encuentra que el paquete ya está instalado y amablemente se niega a reinstalarlo. Para evitar esto,
use el --reinstalar opción de laaptoyapt-getcomandos El siguiente comando reinstalasufijoincluso si ya
está presente:
Recuerde que puede especificar una distribución específica conaptotambién, lo que significa que puede retroceder
a una versión anterior de un paquete (si, por ejemplo, sabe que funciona bien), siempre que todavía esté
disponible en una de las fuentes a las que hace referencia elfuentes.listaarchivo:
Si no tiene cuidado, el uso de un --fuerza-*opción o algún otro mal funcionamiento puede conducir a un sistema en
el que la familia de comandos APT se negará a funcionar. En efecto, algunas de estas opciones permiten la
instalación de un paquete cuando no se cumple una dependencia o cuando hay un conflicto. El resultado es un
sistema inconsistente desde el punto de vista de las dependencias, y los comandos APT se negarán a ejecutar
cualquier acción, excepto aquellas que devolverán el sistema a un estado consistente (esto a menudo consiste en
instalar la dependencia faltante o eliminar un paquete problemático). ). Esto suele dar como resultado un mensaje
como este, obtenido después de instalar una nueva versión deescritoriomientras ignora su dependencia de una
versión más nueva delibc6:
[...]
Es posible que desee ejecutar 'apt-get -f install' para corregirlos. Los siguientes
paquetes tienen dependencias no satisfechas:
rdesktop: Depende: libc6 (>= 2.14) pero 2.3.6.ds1-13etch7 está instalado E: Dependencias
no satisfechas. Intenta usar -f.
APT es un programa en C++ cuyo código reside principalmente en elpaquete libaptbiblioteca compartida. Gracias a esta
biblioteca compartida, se abrió la puerta a la creación de interfaces de usuario (front-end), ya que el código de la biblioteca
compartida se puede reutilizar fácilmente. Históricamente,apt-getsolo fue diseñado como un front-end de prueba para
paquete libaptpero su éxito tiende a oscurecer este hecho.
Aptitud
En todos los casos,aptitudmuestra una lista que combina categorías y paquetes en la pantalla. Las categorías se
organizan a través de una estructura de árbol, cuyas ramas se pueden desplegar o plegar respectivamente con las
teclas Enter, [, y ]. La tecla + debe usarse para marcar un paquete para su instalación, - para marcarlo para su
eliminación y _ para purgarlo. Tenga en cuenta que estas claves también se pueden utilizar para categorías, en
cuyo caso las acciones correspondientes se aplicarán a todos los paquetes de la categoría. La tecla u actualiza las
listas de paquetes disponibles y Shift+u prepara una actualización global del sistema. La tecla g cambia a una vista
de resumen de los cambios solicitados (y si vuelve a escribir g se aplicarán los cambios), y q sale de la vista actual. Si
estás en la vista inicial, esta se cerraráaptitud.
aptitudDocumentación de Esta sección no cubre los detalles más finos del usoaptitud, más bien se enfoca en brindarle un
kit de supervivencia de usuario.aptitudestá bastante bien documentado y le recomendamos
que utilice su manual completo disponible en elaptitude-doc-espaquete (ver/usuario/
compartir/doc/aptitude/html/en/index.html) o en
mihttps://www.debian.org/doc/manuals/aptitude/
.
Para buscar un paquete, puede escribir / seguido de un patrón de búsqueda. Este patrón coincide con el
nombre del paquete, pero también se puede aplicar a la descripción (si va precedida de ~d),a la sección (con
~s),oa otras características detalladas en la documentación. Los mismos patrones pueden filtrar la lista de
paquetes mostrados: escriba la tecla l (como enlímite) e ingrese el patrón.
Usandoaptituden la interfaz Se puede acceder a la mayoría de las funciones de Aptitude a través de la interfaz interactiva, así como a través de la
de línea de comandos línea de comandos. Estas líneas de comando les resultarán familiares a los usuarios habituales deapt-get
yapt-cache.
Las características avanzadas deaptitudtambién están disponibles en la línea de comandos. Puede
utilizar los mismos patrones de búsqueda de paquetes que en la versión interactiva. Por ejemplo, si
desea limpiar la lista de paquetes instalados manualmente y sabe que ninguno de los programas
instalados localmente requiere bibliotecas o módulos Perl en particular, puede marcar los paquetes
correspondientes como automáticos con un solo comando:
Aquí, puede ver claramente el poder del sistema de patrones de búsqueda deaptitud, que
permite la selección instantánea de todos los paquetes en elliberacionesyperlassecciones.
Tenga cuidado, si algunos paquetes están marcados como automáticos y si ningún otro paquete depende de
ellos, se eliminarán inmediatamente (después de una solicitud de confirmación).
Tenga en cuenta que esta función de seguimiento de recomendaciones no se aplica a las actualizaciones. Por ejemplo, si
una nueva versión degnomorecomienda un paquete que no recomendaba anteriormente, el paquete no se marcará para
la instalación. Sin embargo, aparecerá en la pantalla de actualización para que el administrador aún pueda seleccionarlo
para la instalación.
Las sugerencias entre paquetes también se tienen en cuenta, pero de forma adaptada a su estado
específico. Por ejemplo, desdegnomosugieredia-gnomo, este último se mostrará en la pantalla de
resumen de acciones pendientes (en la sección de paquetes sugeridos por otros paquetes). De esta
forma queda visible y el administrador puede decidir si tiene en cuenta o no la sugerencia. Dado que
es solo una sugerencia y no una dependencia o recomendación, el paquete no se seleccionará
automáticamente, su selección requiere una intervención manual (por lo tanto, el paquete no se
marcará como automático).
Con el mismo espíritu, recuerda queaptitudhace un uso inteligente del concepto de tareas. Dado que las tareas se muestran
como categorías en las pantallas de las listas de paquetes, puede seleccionar una tarea completa para su instalación o
eliminación o explorar la lista de paquetes incluidos en la tarea para seleccionar un subconjunto más pequeño.
Mejores algoritmos de resoluciónPara concluir esta sección, tengamos en cuenta queaptitudtiene algoritmos más
elaborados en comparación conaptocuando se trata de resolver situaciones difíciles. Cuando se solicita un conjunto
de acciones y cuando estas acciones combinadas conducirían a un sistema incoherente,aptitud
evalúa varios escenarios posibles y los presenta en orden de importancia decreciente. Sin embargo, estos
algoritmos no son infalibles. Afortunadamente, siempre existe la posibilidad de seleccionar manualmente las
acciones a realizar. Cuando las acciones actualmente seleccionadas generan contradicciones, la parte superior de la
pantalla indica una cantidad de paquetes rotos (puede navegar directamente a esos paquetes
Registro de Aptitud Comodpkg,aptitudmantiene un rastro de las acciones ejecutadas en su archivo de registro (/var/log/aptitud). Sin
embargo, dado que ambos comandos funcionan en un nivel muy diferente, no puede encontrar la misma
información en sus respectivos archivos de registro. Mientrasdpkgregistra todas las operaciones ejecutadas en
paquetes individuales paso a paso,aptitudofrece una visión más amplia de las operaciones de alto nivel, como
una actualización de todo el sistema.
Tenga cuidado, este archivo de registro solo contiene un resumen de las operaciones realizadas por
aptitud. Si otros front-ends (o inclusodpkgsí mismo) se usan ocasionalmente, entoncesaptitudEl registro
de solo contendrá una vista parcial de las operaciones, por lo que no puede confiar en él para crear
un historial confiable del sistema.
sináptico
Synaptic es un administrador de paquetes gráficos que presenta una interfaz gráfica limpia y eficiente (que
se muestra en la Figura8.2, “sinápticoGerente de empaquetación” [página 200]) basado en GTK+. Sus
numerosos filtros listos para usar brindan acceso rápido a paquetes nuevos disponibles, paquetes
instalados, paquetes actualizables, paquetes obsoletos, etc. Si navega por estas listas, puede seleccionar las
operaciones a realizar en los paquetes (instalar, actualizar, eliminar, purgar); estas operaciones no se
realizan inmediatamente, sino que se incluyen en una lista de tareas. Un solo clic en un botón luego valida
las operaciones y se realizan de una sola vez.
Esta estructura brinda cierta flexibilidad a los administradores y mantenedores de paquetes, lo que les permite
realizar cambios en la configuración del software mediante la adición de archivos sin tener que cambiar un archivo
existente. Esto es especialmente útil para los mantenedores de paquetes porque pueden usar este enfoque para
adaptar la configuración de otro software para garantizar que coexista perfectamente con el suyo, sin romper la
política de Debian que prohíbe explícitamente modificar los archivos de configuración de otros paquetes. debido a
la.dmecanismo de configuración, no tiene que seguir manualmente las instrucciones de configuración de varios
paquetes que normalmente se encuentran en el paquete/usr/compartir/doc/paquete
/README.Debianarchivo, ya que el instalador puede incluir archivos de configuración.
Cuidado con la configuración Si bien APT tiene soporte nativo de su/etc/apt/apt.conf.ddirectorio, esto no es siempre el caso.
Archivos generados a partir de.d Para algunas aplicaciones (como exim, por ejemplo), el.dEl directorio es una adición específica
directorios de Debian que se usa como entrada para generar dinámicamente el archivo de configuración
canónica que usa la aplicación. En esos casos, los paquetes proporcionan un comando
"actualizar-*" (por ejemplo:actualizar-exim4.conf) que concatenará los archivos del
. ddirectorio y sobrescriba el archivo de configuración principal.
En esos casos, no debe editar manualmente el archivo de configuración principal ya que sus
cambios se perderán en la próxima ejecución delactualizar-*comando, y tampoco debe olvidar
ejecutar el comando anterior después de haber editado un archivo fuera del.ddirectorio (o sus
cambios no serán utilizados).
Armado con una comprensión de la.dmecanismo de configuración, hablemos de cómo puede aprovecharlo para
configurar APT. Como hemos discutido, puede alterar el comportamiento de APT a través de argumentos de línea
de comandos paradpkgcomo este ejemplo, que realiza una instalación de sobrescritura forzada de
zsh:
Obviamente, esto es muy engorroso, especialmente si usa las opciones con frecuencia, pero también puede
usar el.destructura de configuración de directorios para configurar ciertos aspectos de APT agregando
directivas a un archivo en el/etc/apt/apt.conf.d/directorio. Por ejemplo, esta (y cualquier otra) directiva se puede
agregar fácilmente a un archivo en/etc/apt/apt.conf.d/. El nombre de este archivo es algo arbitrario, pero una
convención común es usarlocalo99local:
psgato /etc/apt/apt.conf.d/99local
Dpkg::Opciones {
”--forzar-sobrescribir”;
}
Hay muchas otras opciones de configuración útiles y ciertamente no podemos cubrirlas todas, pero una que
mencionaremos involucra la conectividad de red. Por ejemplo, si solo puede acceder a la web
Para descubrir más opciones de configuración, lea elapt.conf(5)página del manual con elman apt.confcomando (para
más detalles sobre las páginas del manual, consulte la sección6.1.1, “Páginas manuales” [página 128]).
Uno de los aspectos más importantes en la configuración de APT es la gestión de las prioridades
asociadas a cada fuente de paquetes. Por ejemplo, es posible que desee ampliar su sistema Kali Linux
con uno o dos paquetes más nuevos de Debian Unstable o Debian Experimental. Es posible asignar
una prioridad a cada paquete disponible (un mismo paquete puede tener varias prioridades
dependiendo de su versión o de la distribución que lo proporcione). Estas prioridades influirán en el
comportamiento de APT: para cada paquete, siempre seleccionará la versión con mayor prioridad
(excepto si esta versión es más antigua que la instalada y su prioridad es inferior a 1000).
APT define varias prioridades predeterminadas. Cada versión del paquete instalado tiene una prioridad de 100. Una versión
no instalada tiene una prioridad de 500 de forma predeterminada, pero puede saltar a 990 si es parte de la versión de
destino (definida con -topción de línea de comandos o laAPT::Versión predeterminadadirectiva de configuración).
Puede modificar las prioridades agregando entradas en el/etc/apto/preferenciasarchivo con los nombres
de los paquetes afectados, su versión, su origen y su nueva prioridad.
APT nunca instalará una versión anterior de un paquete (es decir, un paquete cuyo número de versión sea
inferior al del paquete actualmente instalado), excepto cuando su prioridad sea superior a 1000. APT siempre
instalará el paquete de mayor prioridad que sigue a este. restricción. Si dos paquetes tienen la misma
prioridad, APT instala el más nuevo (cuyo número de versión es el más alto). Si dos paquetes de la misma
versión tienen la misma prioridad pero difieren en su contenido, APT instala la versión que no está instalada
(esta regla se ha creado para cubrir el caso de una actualización de paquete sin el incremento del número de
revisión, que generalmente se requiere ).
En términos más concretos, nunca se instalará un paquete cuya prioridad sea inferior a 0. Un paquete
con una prioridad entre 0 y 100 solo se instalará si no se ha instalado ninguna otra versión del
paquete. Con una prioridad entre 100 y 500, el paquete solo se instalará si no hay otra versión más
nueva instalada o disponible en otra distribución. Un paquete de prioridad entre 501 y 990 solo se
instalará si no hay una versión más nueva instalada o disponible en la distribución de destino. Con una
prioridad entre 990 y 1000, el paquete se instalará excepto si la versión instalada es más nueva. Una
prioridad superior a 1000 siempre conducirá a la instalación del paquete, incluso si obliga a APT a
cambiar a una versión anterior.
Cuando APT comprueba/etc/apto/preferencias, primero tiene en cuenta las entradas más específicas (a menudo las que
especifican el paquete en cuestión), luego las más genéricas (incluidos, por ejemplo, todos los paquetes de una
distribución). Si existen varias entradas genéricas, se utiliza la primera coincidencia. Los criterios de selección
disponibles incluyen el nombre del paquete y la fuente que lo proporciona. cada paquete
Prioridad de Debian Si incluyó Debian experimental en sufuentes.listafile, los paquetes correspondientes casi nunca
Experimental se instalarán porque su prioridad APT predeterminada es 1. Este es, por supuesto, un caso
específico, diseñado para evitar que los usuarios instalen paquetes experimentales por error.
Los paquetes solo se pueden instalar escribiendoinstalación apta paquete/experimental,
asumiendo, por supuesto, que eres consciente de los riesgos y los posibles dolores de cabeza
de la vida al límite. Todavía es posible (aunquenorecomendado) tratar los paquetes de
experimental como los de otras distribuciones dándoles una prioridad de 500. Esto se hace
con una entrada específica en/etc/apto/preferencias:
Paquete: *
Pin: release a=experimental Pin-
Prioridad: 500
Supongamos que solo desea usar paquetes de Kali y que solo desea instalar paquetes de Debian
cuando se solicita explícitamente. Podría escribir las siguientes entradas en el/etc/apto/
preferenciasarchivo (o en cualquier archivo en/etc/apt/preferencias.d/):
Paquete: *
Pin: liberación o = Kali
Prioridad de pin: 900
Paquete: *
Pin: lanzamiento o = Debian
Prioridad pin: -10
Supongamos ahora que tiene un servidor con varios programas locales según la versión 5.22 de Perl y que
desea asegurarse de que las actualizaciones no instalarán otra versión del mismo. Podrías usar esta
entrada:
Paquete: Perla
Pin: versión 5.22*
Pin-Prioridad: 1001
La documentación de referencia para este archivo de configuración está disponible en la página del manual
preferencias_apt(5), que puede mostrar conhombre apt_preferences.
Dado queaptoes una herramienta tan maravillosa que probablemente querrá sumergirse y comenzar a
experimentar con paquetes provenientes de otras distribuciones. Por ejemplo, después de instalar un
sistema Kali Rolling, es posible que desee probar un paquete de software disponible en Kali Dev, Debian
Unstable o Debian Experimental sin desviarse demasiado del estado inicial del sistema.
Supongamos que Kali Rolling es su distribución de referencia, pero que Kali Dev y Debian Unstable
también aparecen en su lista.fuentes.listaarchivo. En este caso, puede utilizarinstalación apta paquete/
inestablepara instalar un paquete de Debian Unstable. Si la instalación falla debido a algunas
dependencias insatisfactorias, deje que resuelva esas dependencias dentro de Unstable agregando el -
t inestableparámetro.
En esta situación, las actualizaciones (mejorayactualización completa) se realizan dentro de Kali Rolling excepto para
paquetes ya actualizados a otra distribución: estos seguirán las actualizaciones disponibles en las otras
distribuciones. Explicaremos este comportamiento con la ayuda de las prioridades predeterminadas establecidas
por APT a continuación. No dude en utilizarpolítica de apt-cache(ver barra lateral “Usandopolítica de apt-cache” [página
204]) para verificar las prioridades dadas.
Todo se basa en que APT solo considera paquetes de versión superior o igual al paquete
instalado (asumiendo que/etc/apto/preferenciasno se ha utilizado para forzar prioridades superiores
a 1000 para algunos paquetes).
Usandopolítica de apt-cache Para comprender mejor el mecanismo de prioridad, no dude en ejecutarpolítica de apt-cache
para mostrar la prioridad predeterminada asociada con cada origen del paquete. También
puedes usarpolítica de apt-cachepaquetepara mostrar las prioridades de todas las versiones
disponibles de un paquete determinado.
Tomemos el ejemplo de otro paquete cuya versión 2 se ha instalado desdekali desarrollo. La versión 1
está disponible enKali rodandoy la versión 3 enDebian inestable. La versión 1 (de prioridad 990, por lo
tanto inferior a 1000) se descarta porque es inferior a la versión instalada. Esto solo deja la versión 2 y
3, ambas de prioridad 500. Ante esta alternativa, APT selecciona la versión más nueva, la deDebian
inestable. Si no desea que se instale un paquete desdekali desarrollomigrar aDebian inestable, hay que
asignar una prioridad inferior a 500 (490 por ejemplo) a los paquetes procedentes de Debian inestable.
Puedes modificar/etc/apto/preferenciaspara este efecto:
Paquete: *
Pin: release a=inestable Pin-
Prioridad: 490
Una de las funcionalidades esenciales deaptoes el seguimiento de paquetes instalados solo a través de
dependencias. Estos paquetes se llamanautomáticoya menudo incluyen bibliotecas.
Con esta información, cuando se eliminan paquetes, los administradores de paquetes pueden calcular una lista de
paquetes automáticos que ya no se necesitan (porque no hay paquetes instalados manualmente que dependan de
ellos). El comandoeliminación automática aptse deshará de esos paquetes. Aptitude no tiene este comando porque los
elimina automáticamente tan pronto como se identifican. En todos los casos, las herramientas muestran un
mensaje claro que enumera los paquetes afectados.
Es un buen hábito marcar como automático cualquier paquete que no necesite directamente para que
se eliminen automáticamente cuando ya no sean necesarios. Puedes usarmarca apt auto paquetepara
marcar el paquete dado como automático, mientras queapt-marca manualpaquetehace lo contrario.
aptitude markautoyaptitud unmarkautofuncionan de la misma manera, aunque ofrecen más funciones para
marcar muchos paquetes a la vez (ver sección8.2.7.1, “Aptitud” [página 196]). La interfaz interactiva
basada en consola deaptitudtambién facilita la revisión del indicador automático en muchos paquetes.
Es posible que desee saber por qué un paquete instalado automáticamente está presente en el sistema.
Para obtener esta información desde la línea de comando, puede usaraptitud por quépaquete(aptoyapt-get
no tienen ninguna característica similar):
Todos los paquetes de Debian tienen unArquitecturaen su información de control. Este campo puede
contener "todo" (para paquetes que son independientes de la arquitectura) o el nombre de la arquitectura a
la que se dirige (como amd64 o armhf). En este último caso, por defecto,dpkgsolo instalará el paquete si su
arquitectura coincide con la arquitectura del host devuelta pordpkg --print-architecture.
Esta restricción garantiza que no termine con archivos binarios compilados para una arquitectura incorrecta. Todo
sería perfecto excepto que (algunas) computadoras pueden ejecutar binarios para múltiples arquitecturas, ya sea
de forma nativa (un sistema amd64 puede ejecutar binarios i386) oa través de emuladores.
Soporte multiarco paradpkgpermite a los usuarios definir arquitecturas externas que se pueden instalar
en el sistema actual. Esto se hace fácilmente condpkg --add-arquitectura, como en el ejemplo a
continuación, donde la arquitectura i386 debe agregarse al sistema amd64 para ejecutar aplicaciones
de Microsoft Windows usandoVino5. Hay un correspondientedpkg --remove-arquitecturapara eliminar el
soporte de una arquitectura ajena, pero solo se puede usar cuando no quedan paquetes de esta
arquitectura instalados.
# dpkg --print-architecture
amd64
# vino
parece que falta wine32, debe instalarlo. Multiarch debe habilitarse
primero. como root, ejecute ”dpkg --add-architecture i386 & apt-get
update & apt-get install wine32”
# actualización adecuada
[...]
# apt instalar wine32 [...]
5https://www.winehq.org/
APT detectará automáticamente cuándo se ha configurado dpkg para soportar arquitecturas extranjeras y
comenzará a descargar el correspondientePaquetesarchivos durante su proceso de actualización.
Usando el propietario i386 Hay múltiples casos de uso para multi-arch, pero el más popular es la posibilidad de ejecutar binarios
binarios en amd64 de 32 bits (i386) en sistemas de 64 bits (amd64), en particular porque varias aplicaciones propietarias
populares (como Skype) solo se proporcionan en versiones de 32 bits.
Para que las arquitecturas múltiples fueran realmente útiles y usables, las bibliotecas tuvieron que volver a empaquetarse
y moverse a un directorio específico de la arquitectura para que se puedan instalar varias copias (dirigidas a diferentes
arquitecturas) una al lado de la otra. Dichos paquetes actualizados contienen laMulti-Arco: igualcampo de encabezado para
decirle al sistema de empaquetado que las diversas arquitecturas del paquete se pueden coinstalar de forma segura (y que
esos paquetes solo pueden satisfacer las dependencias de los paquetes de la misma arquitectura).
psdpkg -s libwine
dpkg-query: error: --status necesita un nombre de paquete válido pero 'libwine' no lo es: ambiguo
anombre del paquete 'libwine' con más de una instancia instalada
Cabe resaltar queMulti-Arco: iguallos paquetes deben tener sus nombres calificados con su arquitectura
para ser identificables sin ambigüedades. Estos paquetes también pueden compartir archivos con otros
La compatibilidad con varias arquitecturas también presenta algunos desafíos interesantes en la forma en que se
manejan las dependencias. Satisfacer una dependencia requiere un paquete marcadoMulti-Arco: exterioro un
paquete cuya arquitectura coincida con la del paquete que declara la dependencia (en este proceso de resolución
de dependencia, se supone que los paquetes independientes de la arquitectura tienen la misma arquitectura que el
host). Una dependencia también se puede debilitar para permitir que cualquier arquitectura la cumpla, con la
paquete:cualquiersintaxis, pero los paquetes foráneos solo pueden satisfacer tal dependencia si están marcados
Multi-Arco: permitido.
Las actualizaciones del sistema son operaciones muy sensibles y realmente desea asegurarse de que solo instala
paquetes oficiales de los repositorios de Kali. Si el espejo Kali que está utilizando se ha visto comprometido, un
pirata informático podría intentar agregar un código malicioso a un paquete legítimo. Dicho paquete, si se instala,
podría hacer cualquier cosa para la que el cracker lo diseñó, incluida la divulgación de contraseñas o información
confidencial. Para evitar este riesgo, Kali proporciona un sello a prueba de manipulaciones para garantizar, en el
momento de la instalación, que un paquete realmente proviene de su mantenedor oficial y no ha sido modificado
por un tercero.
El sello funciona con una cadena de hashes criptográficos y una firma. El archivo firmado es elLiberar
archivo, proporcionado por los espejos de Kali. Contiene una lista de losPaquetesarchivos (incluyendo
sus formas comprimidas,Paquetes.gzyPaquetes.xzy las versiones incrementales), junto con sus hashes
MD5, SHA1 y SHA256, lo que garantiza que los archivos no hayan sido manipulados. Estos
PaquetesLos archivos contienen una lista de los paquetes Debian disponibles en el espejo junto con sus
valores hash, lo que a su vez garantiza que el contenido de los paquetes tampoco haya sido alterado.
Las claves de confianza se gestionan con elapt-clavecomando que se encuentra en elaptopaquete. Este programa
mantiene un conjunto de claves públicas GnuPG, que se utilizan para verificar las firmas en elLiberar.gpg
archivos disponibles en los espejos. Se puede usar para agregar nuevas claves manualmente (cuando se necesitan réplicas
no oficiales). Generalmente, sin embargo, solo se necesitan las claves oficiales de Kali. Estas claves son mantenidas
automáticamente actualizadas por elkali-archivo-llaveropaquete (que pone los llaveros correspondientes en/etc/apt/de
confianza.gpg.d). Sin embargo, la primera instalación de este paquete en particular requiere precaución: incluso si el paquete
está firmado como cualquier otro, la firma no se puede verificar externamente. Por lo tanto, los administradores cautelosos
deben verificar las huellas dactilares de las claves importadas antes de confiar en ellas para instalar nuevos paquetes:
/etc/apt/trusted.gpg.d/debian-archive-buster-security-automatic.gpg
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - pub
rsa4096 2019-04-14 [SC] [caduca: 2027-04-12] 5E61 B217 265D A980
7A23 C5FF 4DFA B270 CAA9 6DFA
fluido [desconocido] Clave de firma automática del archivo de seguridad de Debian (10/buster) <ftpma ster@debian.org >
sub rsa4096 2019-04-14 [S] [expires: 2027-04-12]
/etc/apt/trusted.gpg.d/debian-archive-buster-stable.gpg
----------------------------------------------------------
pub rsa4096 2019-02-05 [SC] [caduca: 2027-02-03] 6D33 866E DD8F
FA41 C014 3AED DCC9 EFBF 77E1 1517
fluido [desconocido] Clave de versión estable de Debian (10/buster) < debian-release@lists.debian.org >
/etc/apt/trusted.gpg.d/debian-archive-jessie-automatic.gpg
-------------------------------------------------------------
pub rsa4096 2014-11-21 [SC] [caduca: 2022-11-19] 126C 0D24 BD8A
2942 CC7D F8AC 7638 D044 2B90 D010
fluido [desconocido] Clave de firma automática del archivo Debian (8/jessie) < ftpmaster@debian.org >
/etc/apt/trusted.gpg.d/debian-archive-jessie-security-automatic.gpg
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - pub
rsa4096 2014-11-21 [SC] [caduca: 2022-11-19] D211 6914 1CEC
D440 F2EB 8DDA 9D6D 8F6B C857 C906
fluido [desconocido] Clave de firma automática del archivo de seguridad de Debian (8/jessie) < ftpmaster@debian.org >
/etc/apt/trusted.gpg.d/debian-archive-jessie-stable.gpg
----------------------------------------------------------
pub rsa4096 2013-08-17 [SC] [caduca: 2021-08-15] 75DD C3C4 A499
F1A1 8CB5 F3C8 CBF8 D6FD 518E 17E1
fluido [desconocido] Clave de versión estable de Jessie < debian-release@lists.debian.org >
/etc/apt/trusted.gpg.d/debian-archive-stretch-automatic.gpg
--------------------------------------------------------------
pub rsa4096 2017-05-22 [SC] [caduca: 2025-05-20] E1CF 20DD FFE4 B89E
8026 58F1 E0B1 1894 F66A EC98
fluido [desconocido] Clave de firma automática del archivo Debian (9/stretch) <ftpma ster@debian.org > rsa4096
sub 2017-05-22 [S] [caduca: 2025-05-20]
/etc/apt/trusted.gpg.d/debian-archive-stretch-security-automatic.gpg
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - pub
rsa4096 2017-05-22 [SC] [caduca: 2025-05-20] 6ED6 F5CB 5FA6 FB2F
460A E88E EDA0 D238 8AE2 2BA9
fluido [desconocido] Clave de firma automática del archivo de seguridad de Debian (9/stretch) <ftpma ster@debian.org > rsa4096
sub 2017-05-22 [S] [caduca: 2025-05-20]
/etc/apt/trusted.gpg.d/debian-archive-stretch-stable.gpg
-----------------------------------------------------------
pub rsa4096 2017-05-20 [SC] [caduca: 2025-05-18] 067E 3C45 6BAE 240A
CEE8 8F6F EF0F 382A 1A7B 6500
fluido [desconocido] Clave de versión estable de Debian (9/stretch) < debian-release@lists.debian.org >
/etc/apt/trusted.gpg.d/kali-archive-keyring.gpg
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - pub
rsa4096 2012-03-05 [SC] [caduca: 2023-01-16] 44C6 513A 8E4F B3D3
0875 F758 ED44 4FF0 7D8D 0BF6
fluido [desconocido] Repositorio Kali Linux < devel@kali.org > rsa4096
sub 2012-03-05 [E] [expira: 2023-01-16]
Cuando se agrega una fuente de paquete de terceros alfuentes.listaarchivo, se debe indicar a APT que confíe en la
clave de autenticación GPG correspondiente (de lo contrario, seguirá quejándose de que no puede garantizar la
autenticidad de los paquetes que provienen de ese repositorio). El primer paso es por supuesto
Una vez que las claves apropiadas están en el conjunto de claves, APT verificará las firmas antes de cualquier operación riesgosa, de
modo que las interfaces mostrarán una advertencia si se les solicita que instalen un paquete cuya autenticidad no se puede
determinar.
Ahora es el momento de profundizar en el sistema de paquetes de Debian y Kali. En este punto, vamos a ir
más allá de las herramientas y la sintaxis y nos centraremos más en los elementos básicos del sistema de
empaquetado. Esta vista detrás de escena lo ayudará a comprender cómo funciona APT en su base y le dará
una idea de cómo optimizar y personalizar seriamente su sistema Kali. Es posible que no memorice
necesariamente todo el material de esta sección, pero el material de guía y de referencia le será de gran
utilidad a medida que aumente su dominio del sistema Kali Linux.
Hasta ahora, ha interactuado con los datos del paquete de APT a través de varias herramientas diseñadas para interactuar
con él. A continuación, profundizaremos y echaremos un vistazo dentro de los paquetes y veremos el interiormeta
informacion(o información sobre otra información) utilizada por las herramientas de gestión de paquetes.
Eldebian-binarioEl archivo contiene un único número de versión que describe el formato del archivo:
Y finalmente, eldatos.tar.xzEl archivo (el formato de compresión puede variar) contiene los archivos reales que se
instalarán en el sistema de archivos:
Tenga en cuenta que en este ejemplo, está viendo un.debutantepaquete en el caché de archivo de APT y que su
archivo puede contener archivos con números de versión diferentes a los que se muestran.
En esta sección, presentaremos esta metainformación contenida en cada paquete y le mostraremos cómo
aprovecharla.
8.4.1. ElcontrolArchivo
prioridad: importante
Descripción: administrador de paquetes de línea de comandos
Este paquete proporciona herramientas de línea de comandos para buscar
y administrar, así como consultar información sobre paquetes.
como acceso de bajo nivel a todas las funciones de la biblioteca libapt-pkg. .
Éstas incluyen:
* apt-get para la recuperación de paquetes e información sobre ellos de fuentes
autenticadas y para la instalación, actualización y eliminación de paquetes junto
con sus dependencias
* apt-cache para consultar información disponible sobre paquetes instalados e
instalables
* apt-cdrom para usar medios extraíbles como fuente de paquetes
* apt-config como interfaz para los ajustes de configuración
* apt-key como interfaz para administrar claves de autenticación
En esta sección, lo guiaremos a través del archivo de control y le explicaremos los diversos campos. Cada uno de
estos le brindará una mejor comprensión del sistema de empaquetado, le brindará un control de configuración
más preciso y le brindará la información necesaria para solucionar los problemas que puedan surgir.
Las dependencias del paquete se definen en elDependecampo en el encabezado del paquete. Esta es una lista de condiciones que
se deben cumplir para que el paquete funcione correctamente; esta información es utilizada por herramientas como
aptopara instalar las librerías requeridas, en versiones adecuadas cumpliendo con las dependencias
del paquete a instalar. Para cada dependencia, puede restringir el rango de versiones que cumplen
esa condición. En otras palabras, es posible expresar el hecho de que necesita el paquetelibc6
En una lista de condiciones a cumplir, la coma sirve como separador, interpretado como un "Y"
lógico. En las condiciones, la barra vertical (“|”) expresa un “O” lógico (es un “O” inclusivo, no un “o
bien/o” exclusivo). Al tener mayor prioridad que "Y", puede usarlo tantas veces como sea
necesario. Así, la dependencia “(A O B) Y C” se escribeun | ANTES DE CRISTO. En cambio, la expresión
“A O (B Y C)” debe escribirse como “(A O B) Y (A O C)”, ya que laDependefield no tolera paréntesis
que cambien el orden de prioridades entre los operadores lógicos “OR” y “AND”.
Así se escribiríaun | B, A | C. Verhttps://www.debian.org/doc/debian-policy/ch-relationships.htmlpara
más información.
El sistema de dependencias es un buen mecanismo para garantizar el funcionamiento de un programa pero tiene
otro uso con los metapaquetes. Estos son paquetes vacíos que solo describen dependencias. Facilitan la instalación
de un grupo consistente de programas preseleccionados por el mantenedor del metapaquete; como tal,instalación
aptametapaqueteinstalará automáticamente todos estos programas utilizando las dependencias del metapaquete. El
gnomo,kali-herramientas-inalámbricas, ykali-linux-grandeLos paquetes son ejemplos de metapaquetes. Para
obtener más información sobre los metapaquetes de Kali, consultehttps://herramientas.
kali.org/kali-metapackages
Las predependencias, que se enumeran en elPre-Dependecampo en los encabezados del paquete, complete
las dependencias normales; su sintaxis es idéntica. Una dependencia normal indica que el paquete en
cuestión debe desempaquetarse y configurarse antes de la configuración del paquete que declara la
dependencia. Una predependencia estipula que el paquete en cuestión debe desempaquetarse y
configurarse antes de la ejecución del script de preinstalación del paquete que declara la predependencia, es
decir, antes de su instalación.
Una predependencia es muy exigente paraaptoporque agrega una restricción estricta en el orden de los paquetes a
instalar. Como tal, se desaconsejan las dependencias previas a menos que sea absolutamente necesario. Incluso se
recomienda consultar a otros desarrolladores sobredebian-devel@lists.debian.org antes de agregar una
dependencia previa, ya que generalmente es posible encontrar otra solución como alternativa.
Siempre debe instalar los paquetes recomendados a menos que sepa exactamente por qué no los necesita.
Por el contrario, no es necesario instalar los paquetes sugeridos a menos que sepa por qué los necesita.
ElMejoracampo también describe una sugerencia, pero en un contexto diferente. De hecho, se encuentra en
el paquete sugerido y no en el paquete que se beneficia de la sugerencia. Su interés radica en que es posible
agregar una sugerencia sin tener que modificar el paquete en cuestión. Por lo tanto, todos los
complementos, complementos y otras extensiones de un programa pueden aparecer en la lista de
sugerencias relacionadas con el software. Aunque existe desde hace varios años, este último campo sigue
siendo ignorado en gran medida por programas comoaptoosináptico. El objetivo original era dejar que un
paquete como xul-ext-adblock-plus(una extensión de Firefox) declararMejoras: firefox, firefox-esry así
aparecer en la lista de paquetes sugeridos asociados aFirefoxyfirefox-esr.
ElConflictosEl campo indica cuando un paquete no se puede instalar simultáneamente con otro. Las razones
más comunes para esto son que ambos paquetes incluyen un archivo con el mismo nombre, brindan el
mismo servicio en el mismo puerto de protocolo de control de transmisión (TCP) o dificultarían la operación
del otro.
Este tipo de situación puede ocurrir en el caso de actualizaciones sin compatibilidad con versiones
anteriores: este es el caso si la nueva versión ya no funciona con la versión anterior y provoca un mal
funcionamiento en otro programa sin tomar medidas especiales. Eldescansoscampo ayuda a prevenir este
tipo de problemas.
Este campo introduce el concepto muy interesante de unpaquete virtual. Tiene muchos roles, pero dos
son de particular importancia. El primer rol consiste en utilizar un paquete virtual para asociarle un
servicio genérico (el paquete proporciona el servicio). La segunda indica que un paquete reemplaza
completamente a otro y que para ello, también puede satisfacer las dependencias que el otro
satisfaría. Por lo tanto, es posible crear un paquete de sustitución sin tener que usar el mismo nombre
de paquete.
metapaquete y Virtual Es esencial distinguir claramente los metapaquetes de los paquetes virtuales. Los primeros
Paquete son paquetes reales (que incluyen.debutantefiles), cuyo único propósito es expresar
dependencias.
Los paquetes virtuales, sin embargo, no existen físicamente; son solo un medio para
identificar paquetes reales basados en criterios lógicos comunes (por ejemplo, servicio
prestado o compatibilidad con un programa estándar o un paquete preexistente).
Proporcionar un servicioAnalicemos el primer caso con más detalle con un ejemplo: todos los servidores de
correo, comosufijooenviar correose dice que proporcionan lacorreo-transporte-agentepaquete virtual. Por lo tanto,
cualquier paquete que necesite este servicio para ser funcional (por ejemplo, un administrador de listas de correo,
como lista inteligenteosimpa) simplemente establece en sus dependencias que requiere uncorreo-transporte-
agenteen lugar de especificar una lista larga pero incompleta de posibles soluciones. Además, es inútil instalar dos
servidores de correo en la misma máquina, por lo que cada uno de estos paquetes declara un conflicto con el
correo-transporte-agentepaquete virtual. El sistema ignora un conflicto entre un paquete y él mismo, pero esta
técnica prohibirá la instalación de dos servidores de correo uno al lado del otro.
Esta función es muy útil, ya que nunca es posible anticipar los caprichos del desarrollo y es
necesario poder adaptarse al cambio de nombre y otros reemplazos automáticos de software
obsoleto.
ElReemplazaEl campo indica que el paquete contiene archivos que también están presentes en otro
paquete, pero que el paquete tiene derecho legítimo a reemplazarlos. Sin esta especificación,dpkg
falla, indicando que no puede sobrescribir los archivos de otro paquete (técnicamente, es posible
forzarlo a hacerlo con el --forzar sobrescrituraopción, pero eso no se considera una operación
estándar). Esto permite la identificación de problemas potenciales y requiere que el mantenedor
estudie el asunto antes de elegir si agregar dicho campo.
El uso de este campo se justifica cuando los nombres de los paquetes cambian o cuando un paquete se incluye en
otro. Esto también sucede cuando el mantenedor decide distribuir archivos de manera diferente entre varios
paquetes binarios producidos a partir del mismo paquete fuente: un archivo reemplazado ya no pertenece al
paquete anterior, sino solo al nuevo.
Si se han reemplazado todos los archivos de un paquete instalado, se considera que el paquete se eliminó.
Finalmente, este campo también fomentadpkgpara eliminar el paquete reemplazado donde hay un conflicto.
Además decontrolarchivo, elcontrol.tar.gzEl archivo de cada paquete de Debian puede contener varios scripts (
postinstancia,correo postal,preinstancia,prematuro) llamado pordpkgen diferentes etapas en el procesamiento de un
paquete. Nosotros podemos usardpkg-yopara mostrar estos archivos tal como residen en un.debutantearchivo del
paquete:
ElPolítica de Debian6describe cada uno de estos archivos en detalle, especificando los scripts llamados y los
argumentos que reciben. Estas secuencias pueden ser complicadas, ya que si uno de los scripts falla,
dpkgintentará volver a un estado satisfactorio cancelando la instalación o desinstalación en curso (en la
medida de lo posible).
EldpkgBase de datos Puedes atravesar eldpkgbase de datos en el sistema de archivos en/var/lib/dpkg/. Este directorio
contiene un registro continuo de todos los paquetes que se han instalado en el sistema. Todos
los scripts de configuración para los paquetes instalados se almacenan en el
/var/lib/dpkg/info/directorio, en forma de archivo con el prefijo del nombre del
paquete:
Este directorio también incluye un archivo con el.listaextensión para cada paquete, que contiene la
lista de archivos que pertenecen a ese paquete:
6https://www.debian.org/doc/debian-policy/ch-maintainerscripts.html
/papelera
/bin/zsh
/bin/zsh5
/usr
/usr/lib
/usr/lib/x86_64-linux-gnu /usr/lib/x86_64-linux-
gnu/zsh /usr/lib/x86_64-linux-gnu/zsh/5.2 /usr/
lib/x86_64-linux-gnu/zsh/5.2 /zsh [...]
El/var/lib/dpkg/statusEl archivo contiene una serie de bloques de datos (en el formato de los
famosos encabezados de correo de solicitud de comentarios, RFC 2822) que describen el
estado de cada paquete. La información de lacontrolEl archivo de los paquetes instalados
también se replica allí.
psmás /var/lib/dpkg/status
Paquete: gnome-characters Estado:
instalar bien instalado Prioridad:
opcional
Sección: gnomo
Tamaño instalado: 1785
Mantenedor: Mantenedores de Debian GNOME <pkg-gnome-
amantainers@lists.alioth.debian.org > Arquitectura:
amd64
Versión: 3.20.1-1
[...]
Estas secuencias pueden ser bastante confusas, pero una representación visual puede ayudar.Manoj
Srivastava hizo algunos diagramas7explicando cómo los scripts de configuración son llamados pordpkg.El
proyecto Debian Women también ha desarrollado diagramas similares.8; son un poco más simples de
entender, pero menos completas.
7https://people.debian.org/~srivasta/MaintainerScripts.html
8https://wiki.debian.org/MaintainerScripts
2. Todavía para una actualización,dpkgluego ejecutaactualización nueva preinstaladaversión antigua; para una
primera instalación, ejecutainstalación nueva preinstalada. Puede agregar la versión anterior en el último
parámetro si el paquete ya se instaló y eliminó (pero no se depuró, ya que se conservaron los archivos
de configuración).
3. A continuación, se descomprimen los archivos del nuevo paquete. Si ya existe un archivo, se reemplaza, pero se realiza una copia de
5.dpkgactualiza todos los datos internos (lista de archivos, scripts de configuración, etc.) y elimina las copias de
seguridad de los archivos reemplazados. Este es el punto de no retorno:dpkgya no tiene acceso a todos los
elementos necesarios para volver al estado anterior.
6.dpkgactualizará los archivos de configuración y le pedirá que decida si no puede administrar automáticamente esta
tarea. Los detalles de este procedimiento se discuten en la sección8.4.3, “Sumas de comprobación, archivos
confidenciales” [página 220].
Eliminación de paquetes
1.dpkgllamadasprem eliminar.
2.dpkgelimina todos los archivos del paquete, con la excepción de los archivos de configuración y los
scripts de configuración.
3.dpkgejecutacorreo postal eliminar. Todos los scripts de configuración, exceptocorreo postal, son removidos.
Si no ha utilizado la opción de purga, el proceso se detiene aquí.
4. Para una purga completa del paquete (comando emitido condpkg --purgaodpkg -P), también se
eliminan los archivos de configuración, así como un cierto número de copias (*.dpkg-tmp,
* . dpkg-viejo,*.dpkg-nuevo) y archivos temporales;dpkgluego ejecutapurga posterior.
EldebconfHerramienta EldebconfLa herramienta fue creada para resolver un problema recurrente en Debian. Todos
los paquetes de Debian que no pueden funcionar sin un mínimo de configuración se utilizan
para hacer preguntas con llamadas alecoyleercomandos enpostinstanciascripts de shell (y otros
scripts similares). Esto obligó al instalador a cuidar grandes instalaciones o actualizaciones
para responder a diversas consultas de configuración a medida que surgían. Estas
interacciones manuales ahora se han prescindido casi por completo, gracias adebconf.
Además de los scripts de mantenimiento y los datos de control ya mencionados en las secciones anteriores,
elcontrol.tar.gzEl archivo de un paquete Debian puede contener otros archivos interesantes:
La primera-sumas md5: contiene las sumas de comprobación MD5 de todos los archivos del paquete. Su principal ventaja es
que permitedpkg --verificarpara comprobar si estos archivos han sido modificados desde su instalación. Tenga en cuenta que
cuando este archivo no existe,dpkglo generará dinámicamente en el momento de la instalación (y lo almacenará en la base
de datos dpkg al igual que otros archivos de control).
pueden ser modificados por el administrador, ydpkgintentará conservar esos cambios durante una actualización del paquete.
dpkgmaneja las actualizaciones del archivo de configuración, pero, mientras lo hace, interrumpe
regularmente su trabajo para solicitar información al administrador. Esto puede llevar mucho tiempo y ser
inconveniente. Afortunadamente, puede instruirdpkgpara responder a estas indicaciones automáticamente.
El--fuerza-confoldopción conserva la versión anterior del archivo, mientras que--forzar-confnewutilizará la nueva
versión. Estas opciones se respetan, incluso si el administrador no ha cambiado el archivo, lo que rara vez
tiene el efecto deseado. Agregando el--forzar-confdefopción dicedpkgdecidir por sí mismo cuando sea posible
(es decir, cuando no se haya tocado el archivo de configuración original), y sólo utiliza
- - forzar-confnewo--fuerza-confoldpara otros casos.
Estas opciones se aplican adpkg, pero la mayoría de las veces el administrador trabajará directamente con el
aptitudoaptoprogramas Es, pues, necesario conocer la sintaxis utilizada para indicar las opciones a
pasar aldpkgcomando (sus interfaces de línea de comandos son muy similares).
Estas opciones se pueden almacenar directamente enaptoconfiguración de . Para hacerlo, simplemente escriba lo siguiente
línea en el/etc/apt/apt.conf.d/localarchivo:
DPkg::options { ”--force-confdef”; ”--force-confold”; }
Incluir esta opción en el archivo de configuración significa que también se utilizará en una interfaz
gráfica comoaptitud.
Por el contrario, también puede forzardpkgpara hacer preguntas sobre el archivo de configuración. El--forzar-confask
opción instruyedpkgpara mostrar las preguntas sobre los archivos de configuración, incluso en los
casos en que normalmente no serían necesarios. Así, al reinstalar un paquete con esta opción,dpkg
volverá a hacer las preguntas para todos los archivos de configuración modificados por el administrador.
Esto es muy conveniente, especialmente para reinstalar el archivo de configuración original si se eliminó y
8.5. Resumen
En esta sección, aprendimos más sobre el sistema de paquetes Debian, discutimos la Herramienta avanzada de
paquetes (APT) ydpkg, aprendió sobre la interacción básica del paquete, la configuración y el uso avanzados de APT,
y profundizó en el sistema de paquetes de Debian con una breve referencia del.debutanteformato de archivo.
Miramos elcontrolarchivo, scripts de configuración, sumas de verificación y elconfiadosarchivo.
Resumen de consejos:
Un paquete Debian es un archivo comprimido de una aplicación de software. Contiene los archivos de la aplicación,
así como otros metadatos, incluidos los nombres de las dependencias que necesita la aplicación, además de
cualquier script que permita la ejecución de comandos en diferentes etapas del ciclo de vida del paquete
(instalación, eliminación, actualizaciones).
Eldpkgherramienta, contrariamente aaptoyapt-get(de la familia APT), no tiene conocimiento de todos los paquetes disponibles que
podrían usarse para cumplir con las dependencias de los paquetes. Por lo tanto, para administrar los paquetes de Debian,
probablemente utilizará las últimas herramientas, ya que pueden resolver automáticamente los problemas de dependencia.
Puede usar APT para instalar y eliminar aplicaciones, actualizar paquetes e incluso actualizar todo
su sistema. Estos son los puntos clave que debe saber sobre APT y su configuración:
• Kali mantiene varios repositorios que incluyen:rodando kali,que es el repositorio principal para los usuarios
finales y siempre debe contener paquetes instalables y recientes; ykali-dev,que es utilizado por los
desarrolladores de Kali y no es para uso público.
• Cuando trabaje con APT, primero debe descargar la lista de paquetes disponibles actualmente
conactualización adecuada.
9https://www.debian.org/social_contract#guidelines
Recomendamos actualizaciones periódicas para instalar las últimas actualizaciones de seguridad. Para actualizar, utiliceapto
actualizarseguido por cualquieraactualización apta,apt-obtener actualización, oactualización segura de aptitude. Estos
Los comandos buscan paquetes instalados que se pueden actualizar sin eliminar ningún paquete.
Para actualizaciones más importantes, como actualizaciones de versiones principales, useapt actualización completa. Con esta
instrucción,aptocompletará la actualización incluso si tiene que eliminar algunos paquetes obsoletos o instalar nuevas
dependencias. Este es también el comando que debe usar para las actualizaciones periódicas de su sistema Kali Rolling.
Revise los pros y los contras de las actualizaciones que describimos en este capítulo.
• dpkg --lista(o
-l)muestra la lista de paquetes conocidos por el sistema y su estado de
instalación.
• dpkg --contenidoarchivo.deb(o -C)enumera todos los archivos en un determinado.debutantearchivo.
• Los diversosapt-cacheLos subcomandos muestran gran parte de la información almacenada en la base de datos
interna de APT.
Para evitar un uso excesivo del disco, debe revisar regularmente/var/caché/apt/archivos/. Se pueden
usar dos comandos para esto:apto limpio(oapt-limpiar) vacía completamente el directorio;limpieza
automática apta(apt-get limpieza automática) solo elimina paquetes que ya no se pueden descargar
porque han desaparecido del espejo y, por lo tanto, son inútiles.
aptitudes un programa interactivo que se puede utilizar en modo semigráfico en la consola. Es un programa
extremadamente robusto que puede ayudarlo a instalar y solucionar problemas de paquetes.
sinápticoes un administrador de paquetes gráficos que presenta una interfaz gráfica limpia y eficiente.
Como usuario avanzado, puede crear archivos en/etc/apt/apt.conf.d/para configurar ciertos aspectos de APT. También
puede administrar las prioridades de los paquetes, rastrear paquetes instalados automáticamente, trabajar con
varias distribuciones o arquitecturas a la vez, usar firmas criptográficas para validar paquetes y actualizar archivos
usando las técnicas descritas en este capítulo.
A pesar de los mejores esfuerzos de los mantenedores de Debian o Kali, una actualización del sistema no siempre
es tan sencilla como esperamos. Cuando esto suceda, puede mirar elRastreador de errores Kali10y en elSistema de
seguimiento de errores de Debian11enhttps://bugs.debian.org/paquetepara comprobar si el problema ya ha
10https://bugs.kali.org/
11https://bugs.debian.org/
Paquetes personalizados
Núcleo personalizado
Imágenes personalizadas
construcción en vivo
Persistencia
Capítulo
Uso avanzado 9
Contenido
Modificación de paquetes de Kali228 Recompilación del kernel de Linux237 Creación de imágenes ISO Kali Live personalizadas241
El segundo nivel de personalización está en el proceso de creación de imágenes ISO en vivo. Mostraremos cómo la
construcción en vivoLa herramienta ofrece muchos ganchos y opciones de configuración para personalizar la imagen ISO
resultante, incluida la posibilidad de usar paquetes Debian personalizados en lugar de los paquetes disponibles en los
espejos.
También discutiremos cómo puede crear un ISO en vivo persistente integrado en una llave USB que conservará los
archivos y los cambios del sistema operativo entre reinicios.
La modificación de los paquetes de Kali suele ser una tarea para los colaboradores y desarrolladores de Kali: actualizan los
paquetes con nuevas versiones anteriores, modifican la configuración predeterminada para una mejor integración en la
distribución o corrigen los errores informados por los usuarios. Pero es posible que tenga necesidades específicas que los
paquetes oficiales no satisfacen y, por lo tanto, saber cómo crear un paquete modificado puede ser muy valioso.
Quizás se pregunte por qué necesita preocuparse por el paquete. Después de todo, si tiene que modificar una pieza
de software, siempre puede obtener su código fuente (generalmente congit) y ejecute la versión modificada
directamente desde la comprobación de origen. Esto está bien cuando es posible y cuando usa su directorio de
inicio para este propósito, pero si su aplicación requiere una configuración de todo el sistema (por ejemplo, con un
hacer instalarpaso) entonces contaminará su sistema de archivos con archivos desconocidos paradpkgy pronto creará
problemas que las dependencias de paquetes no pueden detectar. Además, con los paquetes adecuados, podrá
compartir sus cambios e implementarlos en varias computadoras mucho más fácilmente o revertir los cambios
después de haber descubierto que no estaban funcionando tan bien como esperaba.
Entonces, ¿cuándo desearía modificar un paquete? Echemos un vistazo a algunos ejemplos. Primero, supondremos
que usted es un gran usuario de Social-Engineer Toolkit (SET) y notó una nueva versión ascendente, pero los
desarrolladores de Kali están todos ocupados para una conferencia y desea probarlo de inmediato. Desea
actualizar el paquete usted mismo. En otro caso, supondremos que está luchando para que su tarjeta MIFARE NFC
funcione y desea reconstruir "libfreefare” para habilitar los mensajes de depuración para tener datos procesables
para proporcionar en un informe de errores que está preparando actualmente. En un último caso, supondremos
que el “piritaEl programa falla con un mensaje de error críptico. Después de una búsqueda en la web, encuentra una
confirmación que espera solucionar su problema en el repositorio de GitHub ascendente y desea reconstruir el
paquete con esta corrección aplicada.
Independientemente del cambio que desee realizar, el proceso general es siempre el mismo: tome el paquete
fuente, extráigalo, realice los cambios y luego cree el paquete. Pero para cada paso, a menudo hay múltiples
herramientas que pueden manejar la tarea. Elegimos las herramientas más relevantes y populares, pero nuestra
revisión no es exhaustiva.
La reconstrucción de un paquete de Kali comienza con la obtención de su código fuente. Un paquete fuente
se compone de varios archivos: el archivo principal es el*.dsc(Control de fuente de Debian) ya que enumera
los otros archivos adjuntos, que pueden ser*.alquitrán.gz,bz2,xz, a veces*.diferencia.gz, o*.debian.tar.gz,bz2,xz
archivos
Los paquetes fuente se almacenan en réplicas de Kali que están disponibles a través de HTTP. Puede usar su
navegador web para descargar todos los archivos requeridos, pero la forma más fácil de lograr esto es usar
elfuente adecuadasource_package_namedominio. Este comando requiere undeb-srclínea en el
/etc/apt/sources.listarchivo y archivos de índice actualizados (logrado al ejecutaractualización adecuada). De forma
predeterminada, Kali no agrega la línea requerida, ya que pocos usuarios de Kali realmente necesitan recuperar
paquetes fuente, pero puede agregarla fácilmente (consulte el archivo de muestra en la sección8.1.3, “Repositorios
Kali” [página 179] y las explicaciones asociadas en la sección8.1.2, “Entendiendo elfuentes.listaArchivo” [página 178]).
psls
AUTORES hacer configure.ac COPIANDO ejemplos libfreefare m4 NOTICIAS prueba
ChangeLog CMakeLists.txt contribución $es HACKING de debian libfreefare.pc.in Makefile.am LÉAME TODO
debian
registro de cambios control de compatibilidad derechos de autor libfreefare0.install libfreefare-bin.install libfreefare-dev.install libfreefare-doc.install README.Source reglas fuente ver
En este ejemplo, aunque recibimos el paquete fuente de un espejo de Kali, el paquete es el mismo que
en Debian ya que la cadena de versión no contiene "kali". Esto significa que no se han aplicado
cambios específicos de kali.
Si necesita una versión específica del paquete fuente, que actualmente no está disponible en los
repositorios enumerados en/etc/apt/fuentes.lista, entonces la forma más fácil de descargarlo es
averiguar la URL de su.dscarchivo buscándolo enhttps://pkg.kali.org/y luego entregar esa URL adget(
desde eldevscriptspaquete).
psdget http://http.kali.org/pool/main/libf/libfreefare/libfreefare_0.4.0+0~
agit1439352548.ffde4d-1.dsc
dget: recuperando http://http.kali.org/pool/main/libf/libfreefare/libfreefare_0.4.0+0~
agit1439352548.ffde4d-1.dsc % total
% recibido % transferido Velocidad media Tiempo Tiempo Tiempo Actual
Descargar Subir Total Gastado Izquierda Velocidad
libfreefare_0.4.0+0~git1439352548.ffde4d-1.dsc:
dscverify: libfreefare_0.4.0+0~git1439352548.ffde4d-1.dsc falló en la verificación de firma: gpg:
ADVERTENCIA: no se proporcionó ningún comando. Tratando de adivinar lo que quieres decir...
gpg: Firma realizada el miércoles 12 de agosto de 2015 a las 12:14:03 a. m. EDT
gpg: utilizando la clave RSA 43EF73F4BD8096DA
gpg: No se puede comprobar la firma: No hay clave
pública Validación FALLIDA!!
psdpkg-fuente -x libfreefare_0.4.0+0~git1439352548.ffde4d-1.dsc gpgv: Firma
realizada el miércoles 12 de agosto de 2015 a las 12:14:03 a. m. EDT gpgv:
utilizando la clave RSA 43EF73F4BD8096DA
gpgv: no se puede verificar la firma: no hay clave pública
dpkg-source: advertencia: no se pudo verificar la firma en ./libfreefare_0.4.0+0~git1439352548
a.ffde4d-1.dsc
dpkg-source: info: extrayendo libfreefare en libfreefare-0.4.0+0~git1439352548.ffde4d dpkg-source: info:
desempaquetando libfreefare_0.4.0+0~git1439352548.ffde4d.orig.tar.gz dpkg-source: info: desempaquetando
libfreefare_0 .4.0+0~git1439352548.ffde4d-1.debian.tar.xz
Recuperando Fuentes de Es posible que hayas notado que elfuente adecuadala invocación le informa sobre un posible
Git repositorio de Git utilizado para mantener el paquete. Puede apuntar a un repositorio de Debian Git
o a un repositorio de Kali Git.
Puede usar los repositorios de Git como otra forma de recuperar las fuentes y, por lo tanto,
(principalmente) seguir las otras instrucciones de esta sección. Pero cuando los desarrolladores de
Kali trabajan con esos repositorios, usan otro flujo de trabajo de empaquetado y usan herramientas
delgit-buildpackagepaquete que no cubriremos aquí. Puede obtener más información sobre estas
herramientas aquí:
mihttps://honk.sigxcpu.org/piki/projects/git-buildpackage/
Ahora que tiene las fuentes, aún necesita instalar las dependencias de compilación. Serán necesarios para compilar los
paquetes binarios deseados, pero es probable que también se requieran para compilaciones parciales que quizás desee
ejecutar para probar los cambios mientras los realiza.
Cada paquete fuente declara sus dependencias de compilación en elDepende de la construccióncampo de ladebian/ control
archivo. vamos a instruiraptopara instalarlos (asumiendo que se encuentra en un directorio que contiene un paquete
fuente desempaquetado):
1https://gitlab.com/kalilinux/paquetes
En este ejemplo, todas las dependencias de compilación se pueden satisfacer con paquetes disponibles para APT. Es posible que
este no sea siempre el caso, ya que la herramienta de creación de kali-rolling no garantiza la instalación de las dependencias de
compilación (solo se tienen en cuenta las dependencias de los paquetes binarios). En la práctica, las dependencias binarias y las
dependencias de compilación suelen estar estrechamente relacionadas y la mayoría de los paquetes tendrán sus dependencias de
compilación satisfactorias.
En esta sección, no podemos cubrir todos los posibles cambios que desee realizar en un paquete
determinado. Esto equivaldría a enseñarle todo elnitty arenoso2detalles del empaquetado de Debian. Sin
embargo, cubriremos los tres casos de uso comunes presentados anteriormente y explicaremos algunas de
las partes inevitables (como mantener elregistro de cambiosarchivo).
Lo primero que debe hacer es cambiar el número de versión del paquete para que los paquetes
reconstruidos puedan distinguirse de los paquetes originales proporcionados por Debian o Kali. Para
conseguirlo, solemos añadir un sufijo identificativo de la entidad (persona o empresa) que aplica los
cambios. Desdeatractivoes mi apodo de IRC, lo usaré como sufijo. Tal cambio se efectúa mejor con ladch
dominio (Registro de cambios de Debian) desde eldevscriptspaquete, con un comando comodch --buxy local.
Esto invoca un editor de texto (editor sensible, que ejecuta el editor asignado en elVISUALoEDITORvariables de
entorno, o/usuario/bin/editorde lo contrario), lo que le permite documentar las diferencias introducidas por esta
reconstrucción. Este editor muestra quedchrealmente cambió eldebian/registro de cambios
archivo:
- - Raphael Hertzog < buxy@kali.org > viernes, 22 de enero de 2021 10:36:00 -0400
2https://www.debian.org/doc/manuals/maint-guide/
Si realiza estos cambios con regularidad, es posible que desee configurar elDEBFULLNAMEyDEBE CORREOvariables
de entorno a su nombre completo y su correo electrónico, respectivamente. Sus valores serán usados por muchas
herramientas de empaque, incluyendodch, que los insertará en la línea de tráiler que se muestra arriba
(comenzando con "--").
Aplicar un parche
En uno de nuestros casos de uso, hemos descargado elpiritapaquete fuente y queremos aplicar un parche que
encontramos en el repositorio Git ascendente. Esta es una operación común y siempre debe ser simple.
Desafortunadamente, los parches se pueden manejar de diferentes maneras según el formato del paquete de
origen y el flujo de trabajo de empaquetado de Git en uso (cuando se usa Git para mantener el paquete).
Con un paquete fuente desempaquetadohas corridopirita fuente aptay tienes unpirita-0. 4.0
directorio. Puede aplicar su parche directamente conparche -p1 <archivo de parche:
En este punto, ha parcheado manualmente el código fuente y ya puede crear paquetes binarios de su
versión modificada (consulte la sección9.1.4, “Comenzando la construcción” [página 236]). Pero si intenta
crear un paquete fuente actualizado, fallará y se quejará de "cambios ascendentes inesperados". Esto se
debe a que pyrit (como la mayoría de los paquetes fuente) usa el formato fuente (ver
debian/fuente/formatoarchivo) conocido como 3.0 (colcha), donde los cambios en el código ascendente
deben registrarse en parches separados almacenados endebian/parches/y donde eldebian/parches/serie
El archivo indica el orden en que se deben aplicar los parches. Puede registrar sus cambios en un nuevo
parche corriendodpkg-fuente --commit:
psdpkg-fuente --commit
dpkg-source: info: cambios locales detectados, los archivos modificados son:
pyrit-0.4.0/cpyrit/pckttools.py
Ingrese el nombre del parche deseado:arreglo-para-scapy-2.3.patch
Serie de parches de edredón Esta convención de administración de parches ha sido popularizada por una herramienta llamadacolcha
y el formato del paquete fuente "3.0 (quilt)" es, por lo tanto, compatible con esta herramienta, con la
pequeña desviación que utilizadebian/parchesen lugar deparches. Esta herramienta está disponible en
el paquete del mismo nombre y puede encontrar un buen tutorial aquí:
mihttps://raphaelhertzog.com/2012/08/08/ how-to-use-quilt-to-manage-
patches-in-debian-packages/
Si el paquete de origen utiliza el formato de origen 1.0 o 3.0 (nativo), entonces no es necesario
registrar los cambios anteriores en un parche. Se empaquetan automáticamente en el paquete fuente
resultante.
Con un repositorio GitSi ha utilizado Git para recuperar el paquete fuente, la situación es aún más
complicada. Existen múltiples flujos de trabajo de Git y herramientas asociadas y, obviamente, no todos los
paquetes de Debian utilizan los mismos flujos de trabajo y herramientas. La distinción ya explicada sobre el
formato de origen sigue siendo relevante, pero también debe comprobar si los parches se aplican
previamente en el árbol de origen o si solo se almacenan endebian/parches(en este caso, se aplican en el
momento de la compilación).
La herramienta más popular esgit-buildpackage. Es lo que usamos para administrar todos los repositorios en
gitlab.com/kalilinux/packages. Cuando lo usa, los parches no se aplican previamente en el árbol de fuentes,
pero se almacenan endebian/parches. Puede agregar parches manualmente en ese directorio y enumerarlos
endebian/parches/seriepero los usuarios de git-buildpackage tienden a usarGBP PQpara editar toda la serie de
parches como una sola rama que puede ampliar o reorganizar a su gusto. Consulte las páginas del manual
paragbp-pq(1)para aprender a invocarlo.
git-dpm(con el comando asociado del mismo nombre) es otra herramienta de empaquetado de git que puede encontrar
en uso. Registra metadatos endebian/.git-dpmy mantiene los parches aplicados en el árbol de fuentes mediante la fusión de
una rama constantemente reorganizada que se construye a partir del contenido dedebian/parches.
Por lo general, debe modificar las opciones de compilación cuando desea habilitar una función o comportamiento opcional
que no está activado en el paquete oficial, o cuando desea personalizar los parámetros que se establecen en el momento
de la compilación a través de un./configuraropción o a través de variables establecidas en el entorno de compilación.
En esos casos, los cambios suelen limitarse adebian/reglas, que impulsa los pasos en el proceso de creación del
paquete. En los casos más sencillos, las líneas relativas a la configuración inicial (./configurar…)o la
construcción real ($(HACER) …ohacer …)son fáciles de detectar. Si estos comandos no son
Para hacer esas explicaciones más concretas, apliquémoslas a nuestro caso de uso de muestra. Usted decidió
modificar libfreefare para pasar el --habilitar-depuraropción a la./configurarscript para que pueda obtener una salida
más detallada de sus herramientas de comunicación de campo cercano (NFC) y presentar un mejor informe de
errores sobre su tarjeta Mifare NFC no reconocida. Dado que el paquete utilizadhpara impulsar el proceso de
compilación, agrega (o en este caso modifica) eloverride_dh_auto_configureobjetivo. Aquí está el extracto
correspondiente de libfreefare'sdebian/reglasarchivo:
override_dh_auto_configure:
dh_auto_configure -- --sin-cortador --disable-silent-rules --enable-debug
Echemos un vistazo a un ejemplo en este punto, mientras discutimos el empaquetado de versiones anteriores.
Digamos que usted es un usuario avanzado de SET y notó una nueva versión ascendente (7.4.5) que aún no está
disponible en Kali (que solo tiene la versión 7.4.4). Desea crear un paquete actualizado y probarlo. Esta es una
versión menor y, por lo tanto, no espera que la actualización requiera ningún cambio en el nivel del paquete.
Para actualizar el paquete fuente, extrae el nuevo tarball fuente al lado del paquete
fuente actual y copia elDebiandirectorio del paquete fuente actual al nuevo. Luego
golpeas la versión endebian/registro de cambios.
psconjunto de fuentes apto
Según el tipo de cambios que introduzca la nueva versión ascendente, es posible que también deba cambiar las
dependencias de compilación y las dependencias de tiempo de ejecución, e instalar nuevos archivos. Esas son operaciones
mucho más complicadas que no están cubiertas por este libro.
Cuando se hayan aplicado todos los cambios necesarios a las fuentes, puede comenzar a generar el
paquete binario real o.debutantearchivo. Todo el proceso es gestionado por eldpkg-buildpackagecomando
y se ve así:
psdpkg-buildpackage -us -uc -b dpkg-buildpackage: paquete fuente libfreefare dpkg-
buildpackage: versión fuente 0.4.0-2buxy1 dpkg-buildpackage: distribución fuente NO
PUBLICADO dpkg-buildpackage: fuente modificada por Raphael Hertzog < buxy@kali.org >
dpkg-buildpackage: arquitectura host amd64
[...]
dh_builddeb
dpkg-deb: paquete de construcción 'libfreefare0-dbgsym' en '../libfreefare0-dbgsym_0.4.0-2buxy1_amd64.deb'. dpkg-deb: paquete de
construcción 'libfreefare0' en '../libfreefare0_0.4.0-2buxy1_amd64.deb'.
dpkg-deb: paquete de construcción 'libfreefare-dev' en '../libfreefare-dev_0.4.0-2buxy1_amd64.deb'. dpkg-deb: paquete de construcción
'libfreefare-bin-dbgsym' en '../libfreefare-bin-dbgsym_0.4.0-2buxy1_amd64.deb'. dpkg-deb: paquete de construcción 'libfreefare-bin' en '../
libfreefare-bin_0.4.0-2buxy1_amd64.deb'.
dpkg-deb: paquete de construcción 'libfreefare-doc' en '../libfreefare-doc_0.4.0-2buxy1_all.deb'. dpkg-genchanges -b >../
libfreefare_0.4.0-2buxy1_amd64.changes
dpkg-genchanges: carga solo binaria (sin código fuente incluido) dpkg-source --
after-build libfreefare-0.4.0
dpkg-buildpackage: carga solo binaria (sin fuente incluida)
El -nosotros-ucLas opciones deshabilitan las firmas en algunos de los archivos generados (.dsc,.cambios)
porque esta operación fallará si no tiene una clave GnuPG asociada con la identidad que ha puesto en el
registro de cambiosarchivo. El -bLa opción solicita una "compilación solo binaria". En este caso, el paquete fuente (.dsc) no se
creará, solo el binario (.debutante) los paquetes lo harán. Use esta opción para evitar fallas durante la compilación del
paquete fuente: si no ha registrado correctamente sus cambios en el sistema de administración de parches, es posible que
se queje e interrumpa el proceso de compilación.
Como lo sugieredpkg-debde los mensajes, los paquetes binarios generados ahora están disponibles en
el directorio principal (el que aloja el directorio del paquete fuente). Puedes instalarlos
condpkg -ioinstalación apta.
pssudo apt install ../libfreefare0_0.4.0-2buxy1_amd64.deb \
. . /libfreefare-bin_0.4.0-2buxy1_amd64.deb Leyendo
listas de paquetes... Listo
libfreefare-bin libfreefare0
2 actualizados, 0 recién instalados, 0 para eliminar y 0 no actualizados. Necesita
obtener 0 B/69,4 kB de archivos.
Después de esta operación, se utilizarán 2 048 B de espacio adicional en disco. [...]
Nosotros preferimosinstalación aptaencimadpkg -iya que se ocupará de las dependencias que faltan con gracia. Pero no hace
mucho tiempo, tenías que usardpkgcomoaptono fue capaz de hacer frente a.debutantearchivos fuera de cualquier repositorio.
dpkg-buildpackage La mayoría de las veces, los desarrolladores de Debian usan un programa de nivel superior como
envoltorios deconstruir; esto corredpkg-buildpackagecomo de costumbre, pero también agrega una invocación de un
programa (linciano) que ejecuta muchas comprobaciones para validar el paquete generado contra el
Política de Debian3. Este script también limpia el entorno para que las variables del entorno local no
contaminen la construcción del paquete. EldeconstruirEl comando es una de las herramientas en el
devscriptssuite, que comparten cierta consistencia y configuración para facilitar la tarea de los
mantenedores.
Los núcleos proporcionados por Kali incluyen la mayor cantidad posible de funciones, así como la máxima cantidad
de controladores, para cubrir el espectro más amplio de configuraciones de hardware existentes. Esta es la razón
por la que algunos usuarios prefieren recompilar el kernel para incluir solo lo que necesitan específicamente. Hay
dos razones para esta elección. En primer lugar, es una forma de optimizar el consumo de memoria ya que todo el
código del núcleo, aunque nunca se utilice, ocupa memoria física. Debido a que las partes compiladas
estáticamente del kernel nunca se mueven al espacio de intercambio, se producirá una disminución general en el
rendimiento del sistema al tener controladores y características integradas que nunca se usan. En segundo lugar, la
reducción de la cantidad de controladores y características del kernel reduce el riesgo de problemas de seguridad,
ya que solo se ejecuta una fracción del código del kernel disponible.
3https://www.debian.org/doc/debian-policy/
Si elige compilar su propio kernel, debe aceptar las consecuencias: Kali no puede
garantizar actualizaciones de seguridad para su kernel personalizado. Al mantener
el núcleo provisto por Kali, se beneficia de las actualizaciones preparadas por el
Proyecto Debian.
La recompilación del kernel también es necesaria si desea utilizar ciertas funciones que solo están
disponibles como parches (y no están incluidas en la versión estándar del kernel).
El núcleo de Debian El equipo del kernel de Debian mantiene laManual del núcleo de Debian(también disponible en el
Manual manual-del-kernel-debianpaquete) con documentación completa sobre la mayoría de las tareas
relacionadas con el kernel y sobre cómo se manejan los paquetes oficiales del kernel de Debian. Este
es el primer lugar en el que debe buscar si necesita más información de la que se proporciona en
esta sección.
mihttps://kernel-team.pages.debian.net/kernel-handbook/
Como era de esperar, Debian y Kali administran el núcleo en forma de paquete, que no es la forma en que
tradicionalmente se han compilado e instalado los núcleos. Dado que el kernel permanece bajo el control del
sistema de empaquetado, puede eliminarse limpiamente o implementarse en varias máquinas. Además, los
scripts asociados con estos paquetes automatizan la interacción con el cargador de arranque y el generador
de initrd.
Las fuentes de Linux ascendentes contienen todo lo necesario para construir un paquete Debian del kernel, pero
aún necesita instalar elconstruir-esencialpaquete para asegurarse de que tiene las herramientas necesarias para
construir un paquete Debian. Además, el paso de configuración para el núcleo requiere lalibncurses5- devpaquete.
Finalmente, elraíz falsaEl paquete permitirá la creación del paquete Debian sin necesidad de privilegios
administrativos.
Dado que las fuentes del kernel de Linux están disponibles como un paquete, puede recuperarlas instalando el
linux-fuente-paquete de versión. Elapt-cache buscar ^linux-fuenteEl comando debe enumerar la última versión del kernel
empaquetada por Kali. Tenga en cuenta que el código fuente contenido en estos paquetes
El resto de esta sección se centra en la versión 4.9 del kernel de Linux, pero los ejemplos pueden,
por supuesto, adaptarse a la versión particular del kernel que desee.
En este ejemplo, suponemos que ellinux-fuente-4.9Se ha instalado el paquete binario. Tenga en cuenta que
instalamos un paquete binario que contiene las fuentes ascendentes pero no recuperamos el paquete fuente de
Kali llamadolinux.
# ls /usr/src
linux-config-4.9 linux-parche-4.9-rt.patch.xz linux-source-4.9.tar.xz
El siguiente paso consiste en configurar el kernel según tus necesidades. El procedimiento exacto depende
de los objetivos.
4https://www.kernel.org/
A menos que necesite cambiar la configuración, puede detenerse aquí y pasar a la sección9.2.4, “
Compilación y construcción del paquete” [página 241]. Si necesita hacer cambios o si decide
reconfigurar todo desde cero, debe tomarse el tiempo para configurar su kernel. Hay varias interfaces
dedicadas en el directorio fuente del kernel que se pueden usar llamando alhacer objetivocomando,
dondeobjetivoes uno de los valores descritos a continuación.
hacer menuconfigcompila y lanza una interfaz de configuración del kernel en modo texto (aquí es donde
libncurses5-devse requiere el paquete), lo que permite navegar por las muchas opciones disponibles del
núcleo en una estructura jerárquica. Presionando elEspaciotecla cambia el valor de la opción seleccionada, y
Ingresarvalida el botón seleccionado en la parte inferior de la pantalla; Seleccionar vuelve al submenú
seleccionado; Salir cierra la pantalla actual y retrocede en la jerarquía; La ayuda mostrará información más
detallada sobre la función de la opción seleccionada. Las teclas de flecha permiten moverse dentro de la lista
de opciones y botones. Para salir del programa de configuración, seleccione Salir en el menú principal.
Luego, el programa ofrece guardar los cambios que ha realizado; acepte si está satisfecho con sus
elecciones.
Otras interfaces tienen características similares pero funcionan dentro de interfaces gráficas más
modernas, comohacer xconfig, que utiliza una interfaz gráfica Qt, yhacer gconfig, que utiliza GTK+. Lo
anterior requierelibqt4-dev, mientras que este último depende delibglade2-devylibgtk2.0-dev.
Tratar con obsoletos Cuando proporcionas un.configuraciónque se ha generado con otra versión del kernel
. configuraciónarchivos (generalmente más antigua), deberá actualizarlo. Puedes hacerlo conhacer configuración antigua,
que de forma interactiva te hará las preguntas correspondientes a las nuevas opciones de
configuración. Si desea utilizar la respuesta predeterminada a todas esas preguntas, puede
utilizarhacer olddefconfig. Conhacer oldnoconfig, asumirá una respuesta negativa a todas las
preguntas.
limpiar antes Si ya ha compilado un kernel en el directorio y desea reconstruir todo desde cero
Reconstrucción (por ejemplo, porque cambió sustancialmente la configuración del kernel), deberá
ejecutarhacer limpiapara eliminar los archivos compilados.limpiar
elimina aún más archivos generados, incluido su.configuraciónarchivo, así que asegúrese de hacer una copia de
seguridad primero.
Una vez que la configuración del kernel está lista, un simplehacer paquete de deudagenerará hasta cinco paquetes
Debian en estándar.debutanteformato:imagen-linux-versión, que contiene la imagen del núcleo y los módulos
asociados;linux-cabeceras-versión, que contiene los archivos de encabezado necesarios para construir módulos
externos;linux-firmware-imagen-versión, que contiene los archivos de firmware que necesitan algunos
controladores (es posible que falte este paquete cuando compila a partir de las fuentes del kernel proporcionadas
por Debian o Kali);imagen-linux-versión-dbg, que contiene los símbolos de depuración de la imagen del kernel y sus
módulos; ylinux-libc-dev, que contiene encabezados relevantes para algunas bibliotecas de espacio de usuario
como la biblioteca C de GNU (glibc).
Elversiónse define por la concatenación de la versión anterior (según lo definido por las variables
VERSIÓN, PATCHLEVEL, SUBNIVEL,yEXTRAVERSIÓNen elMakefile), delLOCALVER-SIONparámetro de
configuración, y delVERSIÓN LOCALVariable ambiental. La versión del paquete reutiliza la misma
cadena de versión con una revisión adjunta que se incrementa periódicamente (y se almacena en.
versión), excepto si lo anula con elKDEB_PKGVERSIONVariable ambiental.
psls ../*.deb
. . /linux-headers-4.9.0-kali1-custom_4.9.2-1_amd64.deb
. . /linux-image-4.9.0-kali1-custom_4.9.2-1_amd64.deb
. . /linux-imagen-4.9.0-kali1-personalizado-dbg_4.9.2-1_amd64.deb
. . /linux-libc-dev_4.9.2-1_amd64.deb
Para usar realmente el kernel construido, el único paso que queda es instalar los paquetes requeridos
condpkg -i archivo.deb. Se requiere el paquete “linux-image”; solo tiene que instalar el paquete "linux-
headers" si tiene algunos módulos de kernel externos para compilar, que es el caso si tiene algunos
paquetes "*-dkms" instalados (verifique condpkg -l ”*-dkms” | grep^ii). ¡Los otros paquetes generalmente no
son necesarios (a menos que sepa por qué los necesita)!
Kali Linux tiene una tonelada de funcionalidad y flexibilidad desde el primer momento. Una vez que Kali está instalado,
puede realizar todo tipo de hazañas asombrosas con un poco de orientación, creatividad, paciencia y práctica.
Las imágenes ISO oficiales de Kali están construidas conconstrucción en vivo7, que es un conjunto de scripts que permite la
automatización y personalización completas de todas las facetas de la creación de imágenes ISO. Elconstrucción en vivo
suite utiliza una estructura de directorio completa como entrada para su configuración. Almacenamos esta configuración y
algunos scripts auxiliares asociados en unlive-build-configrepositorio Git. Usaremos este repositorio como base para
construir imágenes personalizadas.
Antes de continuar, debe saber que los comandos que se muestran en esta sección están destinados a ejecutarse en un
sistema Kali Linux actualizado. Es muy probable que fallen si se ejecutan en un sistema que no sea Kali o si el sistema está
desactualizado.
El primer paso es instalar los paquetes necesarios y recuperar el repositorio de Git con Kali construcción en
vivoconfiguración:
# cd live-build-config
# ls
auto bin build_all.sh build.sh kali-config README.md simple-cdd
En este punto, ya puede crear una imagen ISO en vivo de Kali actualizada (pero sin modificar) simplemente
ejecutando./compilar.sh --verbose. La compilación tardará mucho tiempo en completarse, ya que descargará
todos los paquetes que se incluirán. Cuando termine, encontrará la imagen ISO recién creada en el nuevo
imágenesdirectorio.
5https://www.offensive-security.com/kali-linux/kali-linux-iso-of-doom/
6https://www.offensive-security.com/kali-linux/kali-linux-evil-wireless-access-point/
7https://live-team.pages.debian.net/live-manual/html/live-manual/index.en.html
Elkali-configEl directorio contiene directorios para los entornos de escritorio más comunes:
• e17para la iluminación;
• gnomopara GNOMO;
• kdepara KDE;
• lxdepara LXDE;
• compañeropara el entorno de escritorio Mate;
• xfcepara Xfce.
Puede crear fácilmente una imagen en vivo de Kali utilizando KDE como entorno de escritorio con este único
comando:
Este concepto devariantepermite algunas personalizaciones predefinidas de alto nivel, pero si se toma el
tiempo de leer elManual del sistema Debian Live8, descubrirá muchas otras formas de personalizar las
imágenes, simplemente cambiando el contenido del subdirectorio apropiado dekali-config. Las siguientes
secciones proporcionarán algunos ejemplos.
Una vez lanzado,construcción en vivoinstala todos los paquetes enumerados enlistas de paquetes/*.list.chroot
archivos La configuración predeterminada que proporcionamos incluye unlistas de paquetes/kali.list.chroot
archivo, que enumerakali-linux-predeterminado(el metapaquete principal que incluye todos los paquetes de
Kali). Puede comentar este paquete y poner otro metapaquete de su elección o incluir un conjunto preciso de
otros paquetes. También puede combinar ambos enfoques comenzando con un metapaquete y agregando
paquetes complementarios de su elección.
Conlistas de paquetes, solo puede incluir paquetes que ya están disponibles en el repositorio oficial de
Kali. Pero si tiene paquetes personalizados, puede incluirlos en la imagen en vivo colocando el
. debutantearchivos en unpaquetes.chrootdirectorio (por ejemplokali-config/config-gnome/paquetes.
chrootsi construye la variante GNOME).
Los metapaquetes son paquetes vacíos cuyo único propósito es tener muchas dependencias con otros
paquetes. Facilitan la instalación de conjuntos de paquetes que a menudo desea instalar juntos. Elkali-metaEl
paquete fuente construye todos los metapaquetes provistos por Kali Linux:
8https://live-team.pages.debian.net/live-manual/html/live-manual.en.html
• kali-linux-default: la instalación predeterminada de Kali Linux, tanto gráfica como de línea de comandos
• kali-linux-large: conjunto de herramientas de gama más amplia, que no se utilizan con tanta frecuencia
• kali-linux-everything: metapaquete de todos los metapaquetes y otros paquetes (casi todo lo que
proporciona Kali, ¡así que es realmente enorme!)
• kali-tools-gpu: herramientas impulsadas por GPU (herramientas que utilizan la potencia informática disponible en
su tarjeta gráfica)
Puede aprovechar estos metapaquetes cuando crea listas de paquetes personalizadas paraconstrucción en vivo. La lista
completa de metapaquetes disponibles y las herramientas que incluyen se puede encontrar enhttps://herramientas.kali.
org/kali-metapaquetes
Debconf Preconfiguración de Puede proporcionar archivos preconfigurados de Debconf (consulte la sección4.3.2, “Creación de un archivo
Paquetes instalados preconfigurado” [página 97] para obtener explicaciones) comopreconfiguración/*.cfgarchivos Se utilizarán para configurar
los paquetes instalados en el sistema de archivos en vivo.
construcción en vivoofrece ganchos que se pueden ejecutar en diferentes pasos del proceso de construcción. Los
ganchos chroot son scripts ejecutables que instalas comoganchos/en vivo/*.chrootarchivos en su árbol de configuración
y que se ejecutan dentro del chroot. Mientraschrootes el comando que le permite cambiar temporalmente el
directorio raíz del sistema operativo a un directorio de su elección, también se usa por extensión para designar un
directorio que aloja un árbol de sistema de archivos completo (alternativo). Este es el caso aquí conconstrucción en vivo
, donde el directorio chroot es el directorio donde se prepara el sistema de archivos en vivo. Dado que las
aplicaciones iniciadas en un chroot no pueden ver fuera de ese directorio, lo mismo ocurre con los ganchos chroot:
solo puede usar y modificar cualquier cosa disponible en ese entorno chroot. Confiamos en esos ganchos para
realizar múltiples personalizaciones específicas de Kali (ver
kali-config/common/hooks/live/kali-hacks.chroot).
Ganchos binarios (ganchos/en vivo/*.binario) se ejecutan en el contexto del proceso de compilación (y no se modifican
en ningún lugar) al final del proceso. Puede modificar el contenido de la imagen ISO construida pero no del sistema
de archivos en vivo ya que en este punto ya se ha generado. Usamos esta función en Kali para realizar algunos
cambios en la configuración isolinux predeterminada generada por live-build. Para
ejemplo, verkali-config/common/hooks/live/persistence.binarydonde añadimos la bota
Entradas de menú que permiten la persistencia.
Otra personalización muy común es agregar archivos en el sistema de archivos en vivo o en la imagen
ISO.
Puede agregar archivos al sistema de archivos en vivo colocándolos en su ubicación esperada debajo
delincluye.chrootdirectorio de configuración. Por ejemplo, proporcionamoskali-config/común/
incluye.chroot/usr/lib/live/config/0031-kali-contraseña, que termina como/usr/lib/live/config/0031-kali-
contraseñaen el sistema de archivos en vivo.
Ganchos de arranque vivo Scripts instalados como/lib/live/config/XXXX-nombreson ejecutados por el script de inicio del paquete
live-boot. Reconfiguran muchos aspectos del sistema para adaptarlos a un sistema en vivo. Puede
agregar sus propios scripts para personalizar su sistema en vivo en tiempo de ejecución: se usa
especialmente para implementar un parámetro de arranque personalizado, por ejemplo.
Puede agregar archivos a la imagen ISO colocándolos en su ubicación esperada debajo delincluye
binariodirectorio de configuración. Por ejemplo, proporcionamoskali-config/common/includes.binary/
isolinux/splash.pngpara anular la imagen de fondo utilizada por el gestor de arranque de Isolinux (que se
almacena en/isolinux/splash.pngen el sistema de archivos de la imagen ISO).
A continuación, analizaremos los pasos necesarios para agregar persistencia a una llave USB Kali. La naturaleza de un
sistema vivo es ser efímero. Todos los datos almacenados en el sistema en vivo y todos los cambios realizados se pierden
cuando reinicia. Para remediar esto, puede usar una función dearranque en vivollamado persistencia, que se habilita
cuando los parámetros de arranque incluyen elpersistenciapalabra clave.
Dado que modificar el menú de inicio no es una tarea trivial, la imagen en vivo de Kali incluye dos entradas de menú de manera
predeterminada que habilitan la persistencia: Persistencia de USB en vivo y Persistencia cifrada de USB en vivo, como se muestra en
la Figura9.1, “Entradas del menú de persistencia” [página 246].
Cuando esta función está habilitada,arranque en vivoescaneará todas las particiones en busca de sistemas de
archivos etiquetadospersistencia (que puede anularse con elpersistencia-etiqueta=valorparámetro de arranque) y el
instalador configurará la persistencia de los directorios que se enumeran en elpersistencia.confarchivo encontrado en
esa partición (un directorio por línea). El valor especial “/Unión"permite la persistencia completa de todos los
directorios con unmontaje de unión, una superposición que almacena solo los cambios en comparación con el
sistema de archivos subyacente. Los datos de los directorios persistentes se almacenan en el sistema de archivos
que contiene el correspondientepersistencia.confarchivo.
En esta sección, asumimos que ha preparado una llave USB Kali en vivo siguiendo las instrucciones en la sección
2.1.4, “Copia de la imagen en un DVD-ROM o llave USB” [página 19] y que ha utilizado una llave USB lo
suficientemente grande como para contener la imagen ISO (aproximadamente 4 GB) y los datos de los directorios
que desea conservar. También asumimos que la llave USB es reconocida por Linux como /desarrollo/sdby que solo
contiene las dos particiones que forman parte de la imagen ISO por defecto (/dev/sdb1y /desarrollo/sdb2). Tenga
mucho cuidado al realizar este procedimiento. Puede destruir fácilmente datos importantes si vuelve a particionar
el disco equivocado.
Para agregar una nueva partición, debe saber el tamaño de la imagen que copió para que pueda hacer que la
nueva partición comience después de la imagen en vivo. Entonces usase separaronpara crear realmente la partición.
Los siguientes comandos analizan la imagen ISO denominadakali-linux-2020.3-live-amd64.iso, que se supone que
también está presente en la llave USB:
con el nuevo/dev/sdb3partición en su lugar, formatéela con un sistema de archivos ext4 etiquetado como
"persistencia" con la ayuda delmkfs.ext4comando (y su -Lopción para establecer la etiqueta). A continuación, la
partición se monta en el/mntdirectorio y agregas el requeridopersistencia.confarchivo de configuración. Como
La llave USB ahora está lista y se puede iniciar con la entrada del menú de inicio "Persistencia de USB en vivo".
arranque en vivotambién puede manejar sistemas de archivos persistentes en particiones cifradas. Por lo tanto, puede
proteger los datos de sus directorios persistentes creando una partición cifrada LUKS que contenga los datos
persistentes.
Los pasos iniciales son los mismos hasta la creación de la partición, pero en lugar de formatearla con un sistema de
archivos ext4, utiliceconfiguración de criptaspara inicializarlo como un contenedor LUKS. Luego abra ese contenedor y
configure el sistema de archivos ext4 de la misma manera que en la configuración no encriptada, pero en lugar de
usar el/desarrollo/sdb3partición, utilice la partición virtual creada porconfiguración de criptas. Esta partición virtual
representa el contenido descifrado de la partición cifrada, que está disponible en/desarrollador/mapeador
bajo el nombre que usted le asignó. En el siguiente ejemplo, usaremos el nombrekali_persistencia.
Nuevamente, asegúrese de estar utilizando la unidad y la partición correctas.
¡ADVERTENCIA!
========
Esto sobrescribirá los datos en /dev/sdb3 de forma irrevocable.
Si tiene múltiples casos de uso para su sistema Kali en vivo, puede usar múltiples sistemas de archivos con diferentes
etiquetas e indicar en la línea de comando de arranque qué (conjunto de) sistemas de archivos deben usarse para la
función de persistencia: esto se hace con la ayuda de lapersistencia-etiqueta=etiquetaparámetro de arranque.
Supongamos que eres un pentester profesional. Cuando trabaja para un cliente, utiliza una partición de
persistencia cifrada para proteger la confidencialidad de sus datos en caso de que la clave USB sea robada o
comprometida. Al mismo tiempo, desea poder exhibir Kali y algún material promocional almacenado en una
partición sin cifrar de la misma llave USB. Dado que no desea editar manualmente los parámetros de inicio
en cada inicio, desea crear una imagen en vivo personalizada con entradas de menú de inicio dedicadas.
El primer paso es construir el ISO en vivo personalizado (siguiente sección9.3, “Creación de imágenes ISO
Kali Live personalizadas” [página 241] y en particular apartado9.3.4, “Uso de ganchos para modificar el
contenido de la imagen” [página 245]). La personalización principal es modificarkali-config/common/hooks/live/
persistence-menu.binarypara que se vea así (tenga en cuenta laetiqueta de persistenciaparámetros):
#!/bin/sh
si [ ! -d isolinux]; entonces
cd binario
fi
FIN
A continuación, crearemos nuestra ISO personalizada y la copiaremos en la llave USB. Luego crearemos e inicializaremos
las dos particiones y sistemas de archivos que se utilizarán para la persistencia. La primera partición no está cifrada
(etiquetada como "demo") y la segunda está cifrada (etiquetada como "trabajo"). Asumiendo/desarrollo/sdbes nuestra llave
USB y el tamaño de nuestra imagen ISO personalizada es de 3000 MB, se vería así:
Y eso es todo. ¡Ahora puede iniciar la llave USB y seleccionar entre las nuevas entradas del menú de inicio según sea necesario!
Agregar una contraseña nuclear Kali ofrece unacryptsetup-nuke-contraseñapaquete que modificaconfiguración de criptasprimeros scripts de
para mayor seguridad arranque para implementar una nueva función: puede configurar uncontraseña nuclearque, cuando se usa,
destruirá todas las claves utilizadas para administrar la partición cifrada.
Antes de usar esa función, es aconsejable hacer una copia de seguridad de sus claves de
cifrado y guardarlas en un lugar seguro.
Puede configurar una contraseña nuke con este comando (asumiendo que tiene el
paquete instalado):
# dpkg-reconfigure cryptsetup-nuke-contraseña
mihttps://www.kali.org/tutorials/nuke-kali-linux-luks/
9.5. Resumen
En este capítulo, aprendimos sobre la modificación de los paquetes fuente de Kali, que son los componentes
básicos de todas las aplicaciones enviadas en Kali. También descubrimos cómo personalizar e instalar el
kernel de Kali. Luego discutimos elconstrucción en vivoentorno y discutió cómo construir un Kali Linux ISO
personalizado. También demostramos cómo crear instalaciones Kali USB cifradas y no cifradas.
La modificación de los paquetes de Kali suele ser una tarea para los colaboradores y desarrolladores de Kali, pero es
posible que tenga necesidades específicas que los paquetes oficiales no satisfacen y saber cómo crear un paquete
modificado puede ser muy valioso, especialmente si desea compartir sus cambios, implementarlos internamente. o
revertir limpiamente el software a un estado anterior.
Cuando necesite modificar una pieza de software, puede ser tentador descargar la fuente, realizar los cambios y utilizar el
software modificado. Sin embargo, si su aplicación requiere una configuración de todo el sistema (por ejemplo, con un
hacer instalarpaso), entonces serácontaminarsu sistema de archivos con archivos desconocidos para
dpkgy pronto creará problemas que las dependencias de paquetes no pueden detectar. Además, este tipo de
modificación de software es más tediosa de compartir.
Al crear un paquete modificado, el proceso general es siempre el mismo: tome el paquete fuente,
extráigalo, realice los cambios y luego cree el paquete. Para cada paso, a menudo hay múltiples
herramientas que pueden manejar cada tarea.
Para comenzar a reconstruir un paquete Kali, primero descargue el paquete fuente, que se compone de un
* . dsc(Control de fuente de Debian) y de archivos adicionales a los que se hace referencia desde ese archivo de control.
Además, puede utilizardget(desde eldevscriptspaquete) para descargar un.dscarchivo directamente junto con
los archivos que lo acompañan. Para paquetes específicos de Kali cuyas fuentes están alojadas en un
repositorio de Git engitlab.com/kalilinux/paquetes9, puede recuperar las fuentes conclonar
https://gitlab.com/kalilinux/packages/paquete fuente.git.
Después de descargar las fuentes, instale los paquetes enumerados en las dependencias de compilación del
paquete fuente consudo apt build-dep./. Este comando debe ejecutarse desde el directorio de origen del paquete.
Las actualizaciones de un paquete fuente consisten en una combinación de algunos de los siguientes pasos:
• El primer paso requerido es cambiar el número de versión para distinguir su paquete del
original condch --localidentificador de versión, o modificar otros detalles del paquete con
dch.
Como usuario avanzado, es posible que desee volver a compilar el kernel de Kali. Es posible que desee reducir el kernel de
Kali estándar, que está cargado con muchas funciones y controladores, agregar controladores o funciones no estándar o
aplicar parches de kernel. Sin embargo, tenga cuidado: un kernel mal configurado puede desestabilizar su sistema y debe
estar preparado para aceptar que Kali no puede garantizar actualizaciones de seguridad para su kernel personalizado.
Para la mayoría de las modificaciones del kernel, deberá instalar algunos paquetes coninstalación apta
build-essential libncurses5-dev fakeroot.
9https://gitlab.com/kalilinux/paquetes
Cuando se ejecuta desde el directorio fuente de su kernel,hacer limpiaeliminará los archivos compilados previamente
yhacer paquete de deudagenerará hasta cinco paquetes Debian. Elimagen-linux-versión.debutanteEl archivo contiene la
imagen del núcleo y los módulos asociados.
Para usar realmente el kernel construido, instale los paquetes requeridos condpkg -iarchivo.deb. Se
requiere el paquete “linuximage”; solo tiene que instalar el paquete "linux-headers" si tiene algunos
módulos de kernel externos para compilar, que es el caso si tiene algunos paquetes "*-dkms"
instalados (verifique condpkg -l ”*-dkms” | grep^ii). Los otros paquetes generalmente no son necesarios (¡a
menos que sepa por qué los necesita!).
9.5.3. Resumen de consejos para crear imágenes ISO Kali Live personalizadas
Las imágenes ISO oficiales de Kali están construidas conconstrucción en vivo10, que es un conjunto de scripts que permite la
automatización y personalización completas de todas las facetas de la creación de imágenes ISO.
Su sistema Kali debe estar completamente actualizado antes de usar la construcción en vivo.
La configuración de compilación en vivo de Kali se puede recuperar de los repositorios Git de Kali
con dos comandos: apt install curl git live-buildseguido porclonar
https://gitlab.com/kalilinux/build-scripts/live-build-config.git
Para generar una imagen ISO en vivo de Kali actualizada pero sin modificar, simplemente ejecute./compilar.sh --verbose
. La compilación tardará mucho tiempo en completarse, ya que descargará todos los paquetes que se incluirán.
Cuando haya terminado, encontrará la nueva imagen ISO en laimágenesdirectorio. si agregas--variantevariante
a la línea de comando, construirá la variante dada de la imagen ISO de Kali. Las diversas variantes
están definidas por sus directorios de configuración.kali-config/variante-*. La imagen principal es laXfce
variante.
10https://live-team.pages.debian.net/live-manual/html/live-manual/index.en.html
• Puede agregar archivos al sistema de archivos en vivo colocándolos en su ubicación esperada debajo del
incluye.chrootdirectorio de configuración.
• Puede ejecutar secuencias de comandos durante el proceso de configuración de chroot del sistema en vivo instalándolos como
• ElManual de sistemas vivos de Debian11es una excelente referencia para la configuración y las pruebas de compilación en
vivo.
Configuración de persistencia cifrada y no cifrada en una llave USB: es bastante simple crear una
instalación estándar de Kali Live USB. Aunque el proceso puede parecer sintácticamente complejo, es
relativamente sencillo agregar persistencia cifrada y no cifrada a su instalación portátil para ampliar
significativamente su funcionalidad.
En el próximo capítulo (capítulo10, “Kali Linux en la empresa” [página 258]), discutiremos cómo Kali escala a
la empresa. Hablaremos sobre la administración de la configuración y le mostraremos cómo extender y
personalizar Kali Linux de una manera que sea fácil de implementar, ya sea que tenga un par de máquinas o
varios miles.
11https://live-team.pages.debian.net/live-manual/html/live-manual/index.en.html
instalación de PXE
Configuración
gestión
pila de sal
Bifurcación de paquetes de Kali
Configuración
paquetes
Repositorio de paquetes
Capítulo
Kali Linux en el 10
Empresa
Contenido
Instalación de Kali Linux a través de la red (arranque PXE)258 Aprovechamiento de la gestión de la configuración261
Este nivel de escala requiere varios pasos, incluido el inicio de un arranque de red PXE, el uso de una herramienta
de administración de configuración avanzada (SaltStack), la capacidad de bifurcar y personalizar paquetes y la
implementación de un repositorio de paquetes. Cubriremos cada paso en detalle, le mostraremos cómo eliminar el
"trabajo pesado" e implementar, administrar y mantener multitud de instalaciones personalizadas de Kali Linux con
relativa facilidad. Como si eso no fuera suficiente, agregaremos una multitud de minions para ayudarlo a
administrar su imperio.
Como hemos visto en capítulos anteriores, el proceso básico de instalación de Kali Linux es sencillo una vez
que conoce el camino. Pero si tiene que instalar Kali en varias máquinas, la configuración estándar puede
ser bastante tediosa. Afortunadamente, puede iniciar el procedimiento de instalación de Kali iniciando una
computadora a través de la red. Esto le permite instalar Kali rápida y fácilmente en muchas máquinas a la
vez.
Primero, deberá iniciar su máquina de destino desde la red. Esto lo facilita el Preboot eXecution Environment
(PXE), una interfaz cliente/servidor diseñada para arrancar cualquier máquina conectada a la red incluso si
no tiene un sistema operativo instalado. La configuración del arranque de red PXE requiere que configure al
menos un servidor de protocolo trivial de transferencia de archivos (TFTP) y un servidor DHCP/BOOTP.
También necesitará un servidor web si desea alojar undebconfarchivo de preconfiguración que se utilizará
automáticamente en el proceso de instalación.
Afortunadamente,dnsmasqmaneja DHCP y TFTP para que pueda confiar en un solo servicio para configurar todo lo
que necesita. Y el servidor web Apache está instalado (pero no habilitado) de forma predeterminada en los
sistemas Kali.
DHCP y TFTP separados Para configuraciones más complejas,dnsmasqEl conjunto de funciones de puede ser demasiado
servicios limitado o es posible que desee habilitar el arranque PXE en su red principal que ya ejecuta un
servicio DHCP. En ambos casos, deberá configurar servicios DHCP y TFTP separados.
mihttps://www.debian.org/releases/stable/amd64/ch04s05
mihttp://http.kali.org/dists/kali-rolling/main/installer-amd64/current/images/netboot/gtk/netboot.tar.gz
mihttp://http.kali.org/dists/kali-rolling/main/installer-amd64/current/images/netboot/netboot.tar.gz
mi http://http.kali.org/dists/kali-rolling/main/installer-i386/current/images/netboot/gtk/netboot.tar.gz
mi http://http.kali.org/dists/kali-rolling/main/installer-i386/current/images/netboot/netboot.tar.gz
Una vez que haya seleccionado el archivo, cree/arranque tftp/, descargue el archivo y descomprímalo en ese
directorio:
# mkdir /tftpboot
# cd /tftpboot
# wget http://http.kali.org/dists/kali-rolling/main/installer-amd64/current/images/
anetboot/netboot.tar.gz
# tar xf netboot.tar.gz
# ls-l
totales 25896
drwxrwxr-x 3 raíz raíz 4096 6 de mayo 04:43 instalador de debian
Los archivos desempaquetados incluyen elpxelinuxgestor de arranque, que utiliza los mismos archivos de
configuración que syslinuxyisolinux. Debido a esto, puede modificar los archivos de arranque endebian-installer/
amd64/ pantallas de arranque/como lo haría al generarimágenes ISO en vivo de Kali Linux personalizadas.
Por ejemplo, suponiendo que haya elegido el instalador textual, puede agregar parámetros de arranque para
preconfigurar los valores de idioma, país, mapa de teclas, nombre de host y nombre de dominio. También puede
dirigir el instalador a una URL externa preconfigurada y configurar el tiempo de espera para que el arranque se
realice automáticamente si no se presiona ninguna tecla en 5 segundos. Para lograr esto, primero modificaría
eldebian-installer/amd64/txt.cfgarchivo:
instalación de etiquetas
tiempo de espera 50
Armado con la capacidad de iniciar cualquier máquina desde la red a través de PXE, puede aprovechar todas
las funciones descritas en la sección4.3, “Instalaciones desatendidas” [página 95], lo que le permite realizar
un inicio completo, preconfiguración e instalación desatendida en varias computadoras sin medios de inicio
físicos. Además, no olvide la flexibilidad del parámetro de arranquepreconfiguración/url=http://servidor/
preseed.cfg (ni el uso de laURLalias), que le permite establecer un archivo de preconfiguración basado en la
red.
Con la capacidad de instalar Kali en varias computadoras muy rápidamente, necesitará ayuda para administrar esas
máquinas después de la instalación. Puede aprovechar las herramientas de administración de configuración para
administrar máquinas o configurar computadoras de reemplazo en cualquier estado deseado.
Kali Linux contiene muchas herramientas de administración de configuración populares que quizás desee usar (
Ansible,cocinero,Marioneta,pila de sal, etc.), pero en esta sección solo cubriremospila de sal.
mihttps://www.saltstack.com/
Cada minion tiene un identificador único almacenado en/etc/sal/minion_id, que por defecto es su nombre de host. Este
identificador de subordinado se utilizará en las reglas de configuración y, como tal, es importante configurarlo
correctamente antes de que el subordinado abra su conexión con el maestro:
Cuando elsal-minionel servicio se está ejecutando, intentará conectarse al maestro de Salt para intercambiar
algunas claves criptográficas. En el lado maestro, debe aceptar la clave que el minion está usando para
identificarse y permitir que la conexión continúe. Las conexiones posteriores serán automáticas:
Tan pronto como los minions estén conectados, puedes ejecutar comandos sobre ellos desde el maestro:
kali-maestro:
Verdadero
Este comando pide a todos los minions (el '*' es un comodín dirigido a todos los minions) que ejecuten el
silbido función de lapruebamódulo de ejecución. Esta función devuelve unVerdaderovalor en el éxito y es
una forma sencilla de garantizar que la conexión funcione entre el maestro y los diversos secuaces.
Referencia del módulo de sal Hay muchos módulos de ejecución disponibles para todo tipo de casos de uso. No los
cubriremos todos aquí, pero la lista completa está disponible enhttps://docs.saltproject.io/en/
latest/ref/modules/all/index.html. También puedes obtener una descripción de todos los
módulos de ejecución y sus funciones disponibles en un esbirro dado con elsal esbirro
sys.docdominio. Ejecutar este comando devuelve una lista muy larga de funciones, pero
puede filtrar la lista pasando el nombre de una función o módulo con el prefijo de su
módulo principal como parámetro:
Uno de los módulos más útiles espaquete,que es una abstracción del administrador de paquetes que se basa en el
administrador de paquetes apropiado para el sistema (apt-getpara Debian y sus derivados como Kali).
kali-maestro:
Verdadero
kali-scratch:
Verdadero
servidor#vim dnmap.txt
servidor#servidor_dnmap -f dnmap.txt
Suponiendo que la IP del servidor es 1.2.3.4, a continuación puede decirles a todos los minions que inicien un proceso de cliente
que se conecte al servidor:
----------
pid:
17137
[...]
Si bien la ejecución remota es un componente importante, es solo una pequeña fracción de lo que SaltStack puede
hacer.
Al configurar una nueva máquina, a menudo ejecuta muchos comandos y pruebas para determinar los detalles del
sistema antes de la instalación. Estas operaciones se pueden formalizar en plantillas de configuración reutilizables
denominadasarchivos de estado. Las operaciones descritas en los archivos de estado se pueden realizar con un
soloestado.aplicarcomando de sal
Para ahorrar tiempo, puede confiar en muchos archivos de estado listos para usar que han sido creados por
la comunidad y que se distribuyen en "Fórmulas de sal":
mi https://docs.saltproject.io/en/latest/topics/development/conventions/ formulas.html
SaltStack es bastante amplio y posiblemente no podamos cubrir todas las características aquí. De hecho, hay libros
dedicados por completo a SaltStack y la documentación en línea también es muy extensa. Échale un vistazo si
quieres saber más sobre sus características:
mihttps://docs.saltproject.io/en/latest/
Si administra una cantidad significativa de máquinas, le recomendamos que obtenga más información sobre
SaltStack, ya que puede ahorrar una cantidad significativa de tiempo al implementar nuevas máquinas y
podrá mantener una configuración coherente en toda su red.
Para darle una idea de cómo se ve trabajar con archivos de estado, cubriremos un ejemplo simple: cómo
habilitar el repositorio APT e instalar un paquete que cree en la sección10.3.3, “Creación de un repositorio de
paquetes para APT” [página 275] y sección10.3.2, “Creación de paquetes de configuración” [página 269].
También registrará una clave SSH en la cuenta de root para que pueda iniciar sesión de forma remota en
caso de problemas.
Por defecto, los archivos de estado se almacenan en/srv/salen el maestro; son archivos estructurados YAML con un.SLS
extensión. Al igual que para ejecutar comandos, la aplicación de un estado depende de muchos módulos de estado:
mihttps://docs.saltproject.io/en/latest/topics/tutorials/starting_states.html
mihttps://docs.saltproject.io/en/latest/ref/states/all/
Su/srv/salt/offsec.slsfile llamará a tres de esos módulos:
offsec_repositorio:
pkgrepo.gestionado:
- nombre: deb http://pkgrepo.offsec.com offsec-interno principal
- archivo: /etc/apt/sources.list.d/offsec.list
- key_url: salt://offsec-apt-key.asc
- require_in:
- paquete: valores predeterminados de offsec
paquete.instalado
ssh_key_para_raíz:
ssh_auth.presente:
- usuario: raíz
- nombre: ssh-rsa AAAAB3NzaC1yc2...89C4N rhertzog@kali
Elvalores predeterminados de offsecstate instala el paquete del mismo nombre. Esto muestra que el nombre
de la clave suele ser un valor importante para los estados, aunque siempre se puede anular con unnombre
atributo (como se hizo para el estado anterior). Para casos simples como este, esto es legible y conciso.
----------
ID: offsec_repositorio
Función: pkgrepo.gestionado
Nombre: deb http://pkgrepo.offsec.com offsec-internal main Resultado:
Verdadero
Comentario: paquete configurado repo 'deb http://pkgrepo.offsec.com offsec-internal
aprincipal'
Iniciado: 06:00:15.767794
Duración: 4707.35 ms
Cambios:
----------
repositorio:
deb http://pkgrepo.offsec.com offsec-interno principal
----------
ID: offsec-predeterminados
Función: paquete instalado
Resultado: Verdadero
predeterminados de offsec:
----------
nuevo:
1.0
viejo:
----------
ID: ssh_key_for_root
Función: ssh_auth.presente
Resumen de kali-scratch
- - - - - - - - - - - - Exitoso: 3
(cambiado=3) Fallido: 0
- - - - - - - - - - - - Total de
estados ejecutados: 3
Tiempo total de ejecución: 24.015 s
kali-scratch:
- offsec
servidor#sal kali-scratch state.highstate kali-
scratch:
----------
ID: offsec_repositorio
Función: pkgrepo.gestionado
Nombre: deb http://pkgrepo.offsec.com offsec-internal main Resultado:
Verdadero
Comentario: Paquete repo 'deb http://pkgrepo.offsec.com offsec-internal main' ya
aconfigurado
Iniciado: 06:06:20.650053
Duración: 62.805 ms
Cambios:
----------
ID: offsec-predeterminados
Función: paquete instalado
Resultado: Verdadero
Resumen de kali-scratch
------------
Sucedidos: 3
fallido: 0
- - - - - - - - - - - - Total de
estados ejecutados: 3
Tiempo de ejecución total: 449,833 ms
A veces necesita modificar Kali Linux para que se ajuste a sus necesidades locales. La mejor manera de lograr esto es
mantener su propio repositorio de paquetes que aloje las versiones modificadas de los paquetes de Kali que tuvo que
bifurcar, así como paquetes complementarios que proporcionen una configuración personalizada y software adicional (no
proporcionado por Kali Linux).
Consulte la sección9.1, “Modificación de paquetes de Kali” [página 228] para obtener explicaciones sobre este tema.
Todos los paquetes se pueden bifurcar si tiene una buena razón, pero debe tener en cuenta que bifurcar un
paquete tiene un costo, ya que debe actualizarlo cada vez que Kali publica una actualización. Aquí hay algunas
razones por las que podría querer bifurcar un paquete:
• Para agregar un parche para corregir un error o agregar una nueva función. Aunque en la mayoría de los casos,
querrá enviar ese parche a los desarrolladores de nivel superior para que se corrija el error o se agregue la función
en la fuente.
• Para compilarlo con diferentes opciones (suponiendo que haya buenas razones por las que Kali no lo
compiló con esas opciones; de lo contrario, sería mejor discutir esto conDesarrolladores Kali1
para ver si pueden habilitar las opciones deseadas).
Por el contrario, aquí hay algunas malas razones para bifurcar un paquete junto con sugerencias sobre cómo manejar su
problema:
1https://bugs.kali.org/
• Para actualizar a una versión anterior más reciente. Nuevamente, es mejor trabajar con los desarrolladores para actualizar el
paquete directamente en Debian o Kali. Con el modelo de lanzamiento continuo, las actualizaciones llegan bastante rápido
a los usuarios finales.
Entre todos los paquetes disponibles, hay algunos que son bloques de construcción de Kali Linux y que podrían ser
interesantes para bifurcar en algunas situaciones:
• kali-meta: este paquete fuente compila todos los metapaquetes kali-linux-* y kali-tools-* y, en particular,kali-
linux-predeterminado, que define qué paquetes se instalan en la imagen ISO predeterminada de Kali Linux.
• base de escritorio: este paquete fuente contiene varios archivos misceláneos que se usan de forma
predeterminada en las instalaciones de escritorio. Considere bifurcar este paquete si desea mostrar la
marca de su organización en el fondo predeterminado o cambiar el tema del escritorio.
• kali-menu: este paquete define la estructura del menú de Kali y proporciona.escritorioarchivos para
todas las aplicaciones que deben aparecer en el menú de Kali.
Ahora que hemos tocado el arranque PXE y discutido la administración de configuración con Salt-Stack, así como la
bifurcación de paquetes, es hora de envolver estos procesos en un ejemplo práctico y ampliar el escenario creando
un paquete de configuración personalizado para implementar una configuración personalizada para varias
máquinas de forma semiautomática.
En este ejemplo, creará un paquete personalizado que configura y utiliza su propio repositorio de paquetes y la clave de
firma de GnuPG, distribuye una configuración de SaltStack, inserta un fondo personalizado y proporciona configuraciones
de escritorio predeterminadas de manera unificada para todas sus instalaciones de Kali.
Esto puede parecer una tarea desalentadora (especialmente si echa un vistazo a través de laGuía del nuevo mantenedor de
Debian2) pero, afortunadamente para nosotros, un paquete de configuración es principalmente un archivo sofisticado y
convertirlo en un paquete es bastante fácil.
Mirando una muestra Si desea ver un paquete real que es básicamente un paquete de configuración, considere elvalores
Paquete predeterminados de kalipaquete. No es tan simple como el ejemplo de esta sección, pero tiene
todas las características relevantes e incluso utiliza algunas técnicas avanzadas (como
dpkg-desvío) para reemplazar archivos ya proporcionados por otros paquetes.
2https://www.debian.org/doc/manuals/maint-guide/
Primero, crea unoffsec-predeterminados-1.0directorio y poner todos los archivos en ese directorio. Entonces corre
dh_make --nativo(desde eldh-hacerpaquete) para agregar las instrucciones de empaquetado de Debian, que se
almacenarán en unDebiansubdirectorio:
Primero, se le solicita un tipo de paquete. En el ejemplo, seleccionamosindependiente, lo que indica que este
paquete fuente generará un solo paquete binario que se puede compartir entre todas las arquitecturas (
Arquitectura: todas).solteroactúa como una contraparte y produce un único paquete binario que depende de la
arquitectura de destino (Arquitectura: cualquiera).En este caso,independientees más relevante, ya que el paquete
solo contiene archivos de texto y no programas binarios, por lo que puede usarse de manera similar en
computadoras de todas las arquitecturas. Elbibliotecatype es útil para bibliotecas compartidas, ya que necesitan
seguir reglas estrictas de empaquetado. De una forma similar,pitóndebe estar restringido a los módulos de Python.
Nombre del mantenedor y La mayoría de los programas involucrados en el mantenimiento de paquetes buscarán su nombre y
Dirección de correo electrónico dirección de correo electrónico en elDEBFULLNAMEyDEBE CORREOoCORREO ELECTRÓNICOVariables de
entorno. Definirlos, de una vez por todas, evita volver a escribirlos varias veces. Si su shell habitual es
Bash, es una simple cuestión de agregar las siguientes dos líneas en su~/.bashrc
archivo. Por ejemplo:
Eldh_hacercomando creó unDebiansubdirectorio que contiene muchos archivos. Algunos son necesarios, en
particularnormas,control,registro de cambios, yderechos de autor. archivos con el.exextension son archivos de
ejemplo que se pueden usar modificándolos y eliminando la extensión. Cuando no se necesiten,
recomendamos retirarlos. Elcompatiblearchivo debe ser conservado, ya que es necesario para el correcto
funcionamiento de laayudante de debconjunto de programas (todos comenzando con eldh_prefijo) utilizado
en varias etapas del proceso de creación del paquete.
Elderechos de autorEl archivo debe contener información sobre los autores de los documentos incluidos en el paquete
y la licencia relacionada. Si la licencia predeterminada seleccionada pordh_hacerno le conviene, entonces debe editar
este archivo. Aquí está la versión modificada del archivo de derechos de autor:
Archivos: *
Copyright: 2020 Licencia de seguridad
ofensiva: GPL-3.0+
Licencia: GPL-3.0+
Este programa es software libre: puede redistribuirlo y/o modificarlo según los términos
de la Licencia Pública General GNU publicada por la Free Software Foundation, ya sea la
versión 3 de la Licencia o (a su elección) cualquier versión posterior.
.
Este paquete se distribuye con la esperanza de que sea útil, pero SIN NINGUNA
GARANTÍA; sin siquiera la garantía implícita de COMERCIABILIDAD o IDONEIDAD
PARA UN PROPÓSITO PARTICULAR. Consulte la Licencia pública general de GNU
para obtener más detalles.
.
Debería haber recibido una copia de la Licencia Pública General de GNU junto con este
programa. Si no, consulte <https://www.gnu.org/licenses/>. .
El valor por defectoregistro de cambiosel archivo es generalmente apropiado; reemplazar el "Lanzamiento inicial" con una
explicación más detallada debería ser suficiente:
- - Raphaël Hertzog < buxy@kali.org > jue, 16 jun 2020 18:04:21 +0200
Fuente: offsec-defaults
Sección: misc
Prioridad: opcional
Mantenedor: Raphaël Hertzog < buxy@kali.org > Build-
Depends: debhelper (>= 9)
Versión estándar: 3.9.8
Paquete: offsec-defaults
Arquitectura: todos
Depende: ${misc:Depende}
Descripción: configuración predeterminada para Offensive Security. Este
paquete contiene varios archivos para configurar equipos propiedad de
Offensive Security.
.
Se modifica notablemente:
- Configuración de APT
- configuración de salt-minion
- la configuración de escritorio predeterminada
ElnormasEl archivo generalmente contiene un conjunto de reglas utilizadas para configurar, construir e
instalar el software en un subdirectorio dedicado (llamado así por el paquete binario generado). El contenido
de este subdirectorio luego se archiva dentro del paquete Debian como si fuera la raíz del sistema de
archivos. En este caso, los archivos se instalarán en eldebian/offsec-valores predeterminados/subdirectorio. Por
ejemplo, para terminar con la instalación de un paquete/etc/apt/sources.list.d/offsec.list, instale el archivo en
debian/offsec-defaults/etc/apt/sources.list.d/offsec.list. ElnormasEl archivo se utiliza como
Makefile,
con algunos objetivos estándar (incluidoslimpioybinario,respectivamente para limpiar el
directorio fuente y generar el paquete binario).
que es unMakefile¿archivo? Es posible que haya notado el mensaje sobre la faltaMakefileal final dedh_hacersalida y la
mención de su similitud con elnormasarchivo. AMakefilees un archivo de script utilizado por el
hacerprograma; describe reglas sobre cómo crear un conjunto de archivos entre sí en un árbol
de dependencias. Por ejemplo, se puede construir un programa a partir de un conjunto de
archivos fuente. ElMakefileEl archivo describe estas reglas en el siguiente formato:
Aunque este archivo es el corazón del proceso, contiene solo lo mínimo para ejecutar un conjunto estándar de
comandos proporcionados por elayudante de debherramienta. Tal es el caso de los archivos generados por
dh_hacer. Para instalar la mayoría de sus archivos, le recomendamos que configure el comportamiento deldh_instalar
También puede usar esto para instalar el archivo de anulación de gsettings, pero debhelper proporciona una herramienta
dedicada para esto (dh_installgsettings) para que pueda confiar en él. Primero, ponga su configuración enDebian/
offsec-defaults.gsettings-override:
[org.gnome.desktop.background]
opciones de imagen='zoom'
imagen-uri='archivo:///usr/share/images/offsec/background.png'
%:
dh $ @
override_dh_installgsettings:
dh_installgsettings --prioridad=90
En este punto, el paquete fuente está listo. Todo lo que queda por hacer es generar el paquete binario con el
mismo método utilizado anteriormente para reconstruir paquetes: ejecute eldpkg-buildpackage -us
- ucComando desde dentro de laoffsec-predeterminados-1.0directorio:
psdpkg-buildpackage -us -uc
dpkg-buildpackage: info: paquete fuente offsec-defaults dpkg-
buildpackage: info: fuente versión 1.0
dpkg-buildpackage: información: fuente de distribución inestable dpkg-buildpackage:
información: fuente modificada por Raphaël Hertzog <bu xy@kali.org > dpkg-buildpackage:
información: arquitectura de host amd64
Ahora que tiene un paquete personalizado, puede distribuirlo a través de un repositorio de paquetes APT. Usar
reprepropara crear el repositorio deseado y llenarlo. Esta herramienta es bastante poderosa y su página de manual
ciertamente vale la pena leerla.
Tenga en cuenta que cuando se le solicite una frase de contraseña, debe ingresar un valor vacío (y confirmar que
no desea proteger su clave privada) ya que desea poder firmar el repositorio de forma no interactiva. Tenga en
cuenta también quegpgrequiere acceso de escritura a la terminal para poder solicitar una frase de contraseña de
manera segura: es por eso que cambió la propiedad de la terminal virtual (que es propiedad de root ya que
inicialmente se conectó como ese usuario) antes de iniciar un shell comopkgrepo.
Ahora puede comenzar a configurar el repositorio. Un directorio dedicado es necesario pararepreproy dentro
de ese directorio tienes que crear unconf/distribucionesarchivo que documenta qué distribuciones están
disponibles en el repositorio de paquetes:
Ahora es el momento de agregar su primer paquete. Primero, copie los archivos generados por la compilación
delvalores predeterminados de offsecpaquete (offsec-predeterminados_1.0.dsc,offsec-defaults_1.0.tar.xz,
offsec-defaults_1.0_all.deb, yoffsec-predeterminados_1.0_amd64.cambios) en/tmpsobre el
servidor que aloja el repositorio de paquetes y preguntereprepropara incluir el paquete:
piscina/principal/o
Como puede ver, agregó los archivos a su propio grupo de paquetes en unpiscinasubdirectorio.
EldistanciasypiscinaLos directorios son los dos directorios que debe poner a disposición (públicamente) a través de
HTTP para finalizar la configuración de su repositorio APT. Contienen todos los archivos que APT querrá descargar.
ErrorLog /var/log/apache2/pkgrepo.offsec.com-error.log
CustomLog /var/log/apache2/pkgrepo.offsec.com-access.log ”%h %l %u %t \”%r\” %>s %O”
DocumentRoot /home/pkgrepo/reprepro
<Directorio ”/home/pkgrepo/reprepro”>
Opciones Índices FollowSymLinks MultiViews Requerir
todo concedido
Permitir anular todo
</Directorio>
</HostVirtual>
Su paquete ahora está publicado y debería estar disponible para sus hosts en red.
Aunque esta ha sido una configuración larga, el "trabajo pesado" ahora está completo. Puede iniciar sus máquinas en red a
través de PXE, instalar una versión personalizada de Kali Linux sin interacción gracias a una configuración previa
proporcionada por la red, configurar SaltStack para administrar sus configuraciones (¡y controlar a los minions!), Crear
paquetes personalizados bifurcados y distribuir esos paquetes a través de su propio paquete. repositorio. Esto proporciona
administración centralizada y control de nivel empresarial sobre múltiples instalaciones de Kali Linux. En resumen, ahora
puede implementar rápidamente sistemas Kali altamente seguros preconfigurados para sus necesidades específicas y
mantenerlos sincronizados gracias a la instalación (semiautomática) de Kali de todas las actualizaciones de paquetes.
Kali Linux escala más allá del escritorio a implementaciones de mediana o gran escala e incluso a nivel empresarial.
En este capítulo, cubrimos cómo centralizar la administración de múltiples instalaciones de Kali con SaltStack, lo
que le permite implementar rápidamente sistemas Kali altamente seguros preconfigurados para sus necesidades
específicas. También revelamos cómo puede mantenerlos sincronizados gracias a la instalación (semiautomática)
de actualizaciones de paquetes de Kali.
Hablamos sobre la bifurcación de paquetes, que le permite crear sus propios paquetes fuente distribuibles
personalizados.
En resumen, repasemos los principales pasos necesarios para establecer maestros y minions de Salt, que le
permiten el control y la configuración remotos de hosts remotos.
Resumen de consejos:
• Arrancar la máquina desde la red con PXE, con al menos un servidor de archivos TFTP, un servidor DHCP/
BOOTP (y un servidor web para la preconfiguración de debconf).dnsmasqmaneja tanto DHCP como TFTP, y
elapache2El servidor web viene preinstalado (pero deshabilitado) en Kali.
mihttps://www.debian.org/releases/stable/amd64/ch04s05
• dnsmasqse configura a través/etc/dnsmasq.conf. Una configuración básica consta de solo unas pocas
líneas clave:
• Descomprima los archivos de arranque de instalación de 32 bits (i386), 64 bits (amd64), estándar o gráfica (gtk) del
archivo de Kali en/arranque tftp/. Los archivos se pueden encontrar aquí:
mi http://http.kali.org/dists/kali-rolling/main/installer-amd64/current/images/netboot/gtk/
netboot.tar.gz
mi http://http.kali.org/dists/kali-rolling/main/installer-i386/current/images/netboot/gtk/
netboot.tar.gz
mi http://http.kali.org/dists/kali-rolling/main/installer-i386/current/images/netboot/
netboot.tar.gz
# mkdir /tftpboot
# cd /tftpboot
# wget http://http.kali.org/dists/kali-rolling/main/installer-amd64/current/
aimágenes/netboot/netboot.tar.gz
# tar xf netboot.tar.gz
• Seguirá el intercambio de llaves. En el maestro, acepta la clave de identificación del súbdito. Las conexiones
posteriores serán automáticas:
kali-scratch
¿Proceder? [Nueva York]y
Clave para minion kali-scratch aceptada.
kali-maestro:
Verdadero
• Utilice archivos de estado de Salt (plantillas de configuración reutilizables) para programar acciones,
recopilar datos, orquestar secuencias de operaciones en múltiples minions, aprovisionar sistemas en
la nube y administrarlos, y más. Ahorre tiempo con fórmulas de sal predefinidas:
mi https://docs.saltproject.io/en/latest/topics/development/conventions/ formulas.html
• Cuando llegue el momento de entregar un paquete, primero decida si es una tarea que debe abordar.
Hay ventajas y desventajas significativas. Revíselos cuidadosamente. Elkali-meta,base de escritorio, y
kali-menuLos paquetes son opciones interesantes y probables. El proceso de bifurcar un paquete
puede ser abrumador y difícil de resumir.
Ahora que hemos cubierto todas las bases en términos de instalación, configuración, personalización e
implementación de Kali Linux, pasemos al papel de Kali Linux en el campo de la seguridad de la información.
Tipos de evaluaciones
Vulnerabilidad
evaluación
Cumplimiento
prueba de penetración
Tradicional
prueba de penetración
Solicitud
evaluación
Tipos de ataques
Negación de servicio
Corrupción de memoria
vulnerabilidades web
Ataques de contraseña
Ataques del lado del cliente
Capítulo
Introducción a 11
Seguridad
Evaluaciones
Contenido
Sin embargo, antes de utilizar Kali, hay algunos conceptos relacionados con las evaluaciones de seguridad que
debe comprender. En este capítulo, presentaremos estos conceptos para ayudarlo a comenzar y proporcionar
referencias que lo ayudarán si necesita usar Kali para realizar una evaluación de seguridad.
Para empezar, vale la pena tomarse un tiempo para explorar exactamente qué significa "seguridad" cuando
se trata de sistemas de información. Al intentar asegurar un sistema de información, se enfoca en tres
atributos principales del sistema:
• Confidencialidad: ¿los actores que no deberían tener acceso al sistema oa la información pueden acceder al
sistema oa la información?
• Integridad: ¿Se pueden modificar los datos o el sistema de alguna forma no prevista?
• Disponibilidad: ¿los datos o el sistema son accesibles cuándo y cómo se pretende que sean?
Juntos, estos conceptos conforman la tríada CIA (Confidencialidad, Integridad, Disponibilidad) y, en gran parte, son
los elementos principales en los que se centrará al proteger un sistema como parte de la implementación, el
mantenimiento o la evaluación estándar.
También es importante tener en cuenta que, en algunos casos, puede estar mucho más
preocupado por un aspecto de la tríada de la CIA que por otros. Por ejemplo, si tiene un diario
personal que contiene sus pensamientos más secretos, la confidencialidad del diario puede ser
mucho más importante para usted que la integridad o la disponibilidad. En otras palabras, es
posible que no le preocupe tanto si alguien puede escribir en la revista (en lugar de leerla) o si la
revista está siempre accesible o no. Por otro lado, si está asegurando un sistema que rastrea
recetas médicas, la integridad de los datos será más crítica. Si bien es importante evitar que otras
personas lean qué medicamentos usa alguien y es importante que pueda acceder a esta lista de
medicamentos, si alguien pudiera cambiar el contenido del sistema (alterando la integridad),
Cuando esté asegurando un sistema y se descubra un problema, tendrá que considerar en cuál de
estos tres conceptos, o en qué combinación de ellos, cae el problema. Esto lo ayuda a comprender el
problema de una manera más integral y le permite categorizar los problemas y responder en
consecuencia. Es posible identificar vulnerabilidades que afectan uno o varios elementos de la tríada
de la CIA. Para usar una aplicación web con una vulnerabilidad de inyección SQL como ejemplo:
• Confidencialidad: una vulnerabilidad de inyección SQL que permite a un atacante extraer el contenido completo de
la aplicación web, lo que le permite tener acceso completo para leer todos los datos, pero no la capacidad de
cambiar la información o deshabilitar el acceso a la base de datos.
• Integridad: una vulnerabilidad de inyección SQL que permite a un atacante cambiar la información
existente en la base de datos. El atacante no puede leer los datos ni evitar que otros accedan a la base
de datos.
• Múltiple: una vulnerabilidad de inyección de SQL conduce al acceso de shell interactivo completo
al sistema operativo host que ejecuta la aplicación web. Con este acceso, el atacante puede
violar la confidencialidad del sistema accediendo a los datos a su antojo, comprometer la
integridad del sistema alterando los datos y, si así lo decide, destruir la aplicación web,
comprometiendo la disponibilidad de la sistema.
Los conceptos detrás de la tríada de la CIA no son demasiado complicados y, de manera realista, son
elementos con los que está trabajando intuitivamente, incluso si no los reconoce. Sin embargo, es
importante interactuar conscientemente con el concepto, ya que puede ayudarlo a reconocer hacia dónde
dirigir sus esfuerzos. Esta base conceptual lo ayudará a identificar los componentes críticos de sus sistemas
y la cantidad de esfuerzo y recursos que vale la pena invertir para corregir los problemas identificados.
Por ejemplo, al visitar algunas partes del mundo, usted puede estar en considerableriesgode contraer
malaria. Esto se debe a que elamenazade mosquitos es muy alto en algunas áreas, y es casi seguro que
usted no es inmune a la malaria. Afortunadamente, puedes controlar elvulnerabilidadcon medicación y
tratar de controlar laamenazacon el uso de repelente de insectos y mosquiteros. Con controles
implementados que aborden tanto laamenazay elvulnerabilidad, puede ayudar a garantizar queriesgono se
actualiza.
Al prepararse para usar Kali Linux en el campo, primero debe asegurarse de tener una instalación limpia y
funcional. Un error común que cometen muchos profesionales de seguridad novatos es usar una sola
instalación en múltiples evaluaciones. Este es un problema por dos razones principales:
Todos tienen diferentes requisitos en cuanto a cómo les gusta configurar Kali Linux cuando están en el
campo, pero hay algunas recomendaciones universales que realmente desea seguir. Primero, considere usar
una instalación encriptada como se documenta en la sección4.2.2, “Instalación en un sistema de archivos
totalmente cifrado” [página 88]. Esto protegerá sus datos en la máquina física, lo cual es un salvavidas si
alguna vez le roban su computadora portátil.
Para mayor seguridad durante el viaje, es posible que desee destruir la clave de descifrado (consulte “Agregar una contraseña de
Nuke para mayor seguridad” [página 250]) después de haber enviado una copia (encriptada) de la llave a un compañero de trabajo
en la oficina. De esa manera, sus datos estarán seguros hasta que regrese a la oficina, donde podrá restaurar la computadora
portátil con la clave de descifrado.
Otro elemento que debe verificar dos veces es la lista de paquetes que ha instalado. Considere qué herramientas
podría necesitar para el trabajo que se propone realizar. Por ejemplo, si se está embarcando en una evaluación de
seguridad inalámbrica, puede considerar instalar elkali-herramientas-inalámbricas metapaquete, que contiene
todas las herramientas de evaluación inalámbrica disponibles en Kali Linux, o si se acerca una evaluación de
aplicaciones web, puede instalar todas las herramientas de prueba de aplicaciones web disponibles con elkali-
herramientas-webmetapaquete. Es mejor suponer que no tendrá fácil acceso a Internet mientras realiza una
evaluación de seguridad, así que asegúrese de prepararse con la mayor anticipación posible.
Por la misma razón, es posible que desee revisar la configuración de su red (consulte la sección5.1, “
Configuración de la red” [página 108] y sección7.3, “Protección de servicios de red” [página 159]). Vuelva a
verificar su configuración de DHCP y revise los servicios que están escuchando en su dirección IP asignada.
Estas configuraciones pueden tener un impacto crítico en su éxito. No puede evaluar lo que no puede ver y
los servicios de escucha excesivos pueden marcar su sistema y hacer que se apague antes de comenzar.
Es fundamental que prepare adecuadamente su instalación de Kali Linux para el trabajo. Descubrirá
que un entorno Kali limpio, eficiente y efectivo siempre hará que todo lo que sigue sea mucho más
fluido.
Ahora que se aseguró de que su entorno de Kali esté listo, el siguiente paso es definir exactamente qué tipo
de evaluación está realizando. Al más alto nivel, podemos describir cuatro tipos de evaluaciones: una
evaluación de vulnerabilidad, aprueba de cumplimiento, aprueba de penetración tradicional, y unevaluación
de la aplicación. Un compromiso puede involucrar varios elementos de cada tipo de evaluación, pero vale la
pena describirlos con cierto detalle y explicar su relevancia para su entorno y compilación de Kali Linux.
Antes de profundizar en los diferentes tipos de evaluaciones, es importante notar primero la diferencia
entre una vulnerabilidad y un exploit.
Avulnerabilidadse define como una falla que, al ser aprovechada, comprometerá la confidencialidad,
integridad o disponibilidad de un sistema de información. Hay muchos tipos diferentes de
vulnerabilidades que se pueden encontrar, incluyendo:
• Inyección SQL: unainyección SQL2El ataque es aquel en el que se omiten las rutinas de validación de entrada para el
programa, lo que permite que un atacante proporcione comandos SQL para que se ejecute el programa de destino.
Esta es una forma de ejecución de comandos que puede generar posibles problemas de seguridad.
• Desbordamiento de búfer: Adesbordamiento de búfer3es una vulnerabilidad que pasa por alto las rutinas de
validación de entrada para escribir datos en la memoria adyacente de un búfer. En algunos casos, esa ubicación de
memoria adyacente puede ser crítica para la operación del programa de destino y el control de la ejecución del
código se puede obtener mediante una manipulación cuidadosa de los datos de memoria sobrescritos.
• Condiciones de carrera: Acondición de carrera4es una vulnerabilidad que aprovecha las dependencias de
tiempo en un programa. En algunos casos, el flujo de trabajo de un programa depende de que ocurra una
secuencia específica de eventos. Si puede alterar esta secuencia de eventos, eso puede conducir a una
vulnerabilidad.
Unexplotar, por otro lado, es un software que, cuando se usa, aprovecha una vulnerabilidad específica,
aunque no todas las vulnerabilidades son explotables. Dado que un exploit debe cambiar un proceso en
ejecución, obligándolo a realizar una acción no deseada, la creación de exploits puede ser compleja. Además,
hay una serie de tecnologías anti-exploit en las plataformas informáticas modernas que han sido
1https://en.wikipedia.org/wiki/File_inclusion_vulnerability
2https://en.wikipedia.org/wiki/SQL_injection
3https://en.wikipedia.org/wiki/Buffer_overflow
4https://en.wikipedia.org/wiki/Race_condition
Avulnerabilidadse considera una debilidad que podría utilizarse de alguna manera para comprometer la
confidencialidad, integridad o disponibilidad de un sistema de información. En una evaluación de
vulnerabilidades, su objetivo es crear un inventario simple de vulnerabilidades descubiertas dentro del
entorno de destino. Este concepto de un entorno de destino es extremadamente importante. Debe
asegurarse de mantenerse dentro del alcance de la red de destino de su cliente y los objetivos requeridos.
Salir del alcance de una evaluación puede causar una interrupción del servicio, un abuso de confianza con su
cliente o una acción legal contra usted y su empleador.
Debido a su relativa simplicidad, a menudo se realiza una prueba de vulnerabilidad en entornos más maduros de forma
regular como parte de la demostración de su debida diligencia. En la mayoría de los casos, una herramienta automatizada,
como las que se encuentran en elAnálisis de vulnerabilidad7yAplicaciones web8Las categorías del sitio de herramientas de
Kali y el menú de aplicaciones de escritorio de Kali se utilizan para descubrir sistemas en vivo en un entorno de destino,
identificar servicios de escucha y enumerarlos para descubrir la mayor cantidad de información posible, como el software
del servidor, la versión, la plataforma, etc. .
Luego, esta información se verifica en busca de firmas conocidas de posibles problemas o vulnerabilidades. Estas
firmas se componen de combinaciones de puntos de datos que pretenden representar problemas conocidos. Se
utilizan múltiples puntos de datos, porque cuantos más puntos de datos utilice, más precisa será la identificación.
Existe una gran cantidad de puntos de datos potenciales, incluidos, entre otros, los siguientes:
• Versión del sistema operativo: no es raro que el software sea vulnerable en una versión del
sistema operativo pero no en otra. Debido a esto, el escáner intentará determinar, con la
mayor precisión posible, qué versión del sistema operativo aloja la aplicación de destino.
• Nivel de parche: muchas veces, se lanzarán parches para un sistema operativo que no aumentan
la información de la versión, pero que cambian la forma en que responderá una vulnerabilidad,
o incluso la eliminan por completo.
• Arquitectura del procesador: muchas aplicaciones de software están disponibles para varias
arquitecturas de procesador, como Intel x86, Intel x64, varias versiones de ARM, UltraSPARC, etc.
5https://en.wikipedia.org/wiki/Executable_space_protection#Windows
6https://en.wikipedia.org/wiki/Address_space_layout_randomization
7https://tools.kali.org/category/vulnerability-analysis
8https://tools.kali.org/category/web-applications
• Versión de software: la versión del software de destino es uno de los elementos básicos que deben
capturarse para identificar una vulnerabilidad.
Estos y muchos otros puntos de datos se utilizarán para crear una firma como parte de un análisis de
vulnerabilidades. Como era de esperar, cuantos más puntos de datos coincidan, más precisa será la firma. Cuando
se trata de coincidencias de firmas, puede tener algunos resultados potenciales diferentes:
• Verdadero positivo: la firma coincide y captura una vulnerabilidad verdadera. Estos resultados
son los que deberá seguir y corregir, ya que estos son los elementos que las personas
malintencionadas pueden aprovechar para dañar su organización (o la de su cliente).
• Falso positivo: la firma coincide; sin embargo, el problema detectado no es una verdadera vulnerabilidad. En
una evaluación, estos a menudo se consideran ruido y pueden ser bastante frustrantes. Nunca desea
descartar un verdadero positivo como falso positivo sin una validación más extensa.
Como puede imaginar, la precisión de las firmas es extremadamente importante para obtener resultados precisos.
Cuantos más datos se proporcionen, mayor será la posibilidad de obtener resultados precisos de un escaneo
automatizado basado en firmas, razón por la cual los escaneos autenticados suelen ser tan populares.
Con un escaneo autenticado, el software de escaneo utilizará las credenciales proporcionadas para
autenticarse en el objetivo. Esto proporciona un nivel más profundo de visibilidad de un objetivo de lo que
sería posible de otro modo. Por ejemplo, en un escaneo normal, es posible que solo detecte información
sobre el sistema que se puede derivar de los servicios de escucha y la funcionalidad que brindan. Esto puede
ser bastante información a veces, pero no puede competir con el nivel y la profundidad de los datos que se
obtendrán si se autentica en el sistema y revisa exhaustivamente todo el software instalado, los parches
aplicados, los procesos en ejecución, etc. Esta amplitud de datos es útil para detectar vulnerabilidades que
de otro modo no se habrían descubierto.
Una evaluación de vulnerabilidades bien realizada presenta una instantánea de los problemas potenciales en una
organización y proporciona métricas para medir los cambios a lo largo del tiempo. Esta es una evaluación bastante liviana,
pero aún así, muchas organizaciones realizarán regularmente escaneos de vulnerabilidades automatizados fuera del
horario laboral para evitar posibles problemas durante el día, cuando la disponibilidad del servicio y el ancho de banda son
más críticos.
Como se mencionó anteriormente, un análisis de vulnerabilidad tendrá que verificar muchos puntos de datos
diferentes para obtener un resultado preciso. Todas estas comprobaciones diferentes pueden generar carga en el
sistema de destino y consumir ancho de banda. Desafortunadamente, es difícil saber exactamente cuántos
recursos se consumirán en el objetivo, ya que depende de la cantidad de servicios abiertos y los tipos de
Escaneo de subprocesos La mayoría de los escáneres de vulnerabilidades incluyen una opción para establecersubprocesos por
escaneo, que equivale al número de comprobaciones simultáneas que se producen al mismo tiempo.
Aumentar este número tendrá un impacto directo en la carga de la plataforma de evaluación, así
como en las redes y los objetivos con los que está interactuando. Es importante tener esto en cuenta
al utilizar estos escáneres. Es tentador aumentar los subprocesos para completar los escaneos más
rápido, pero recuerde el aumento sustancial de la carga asociado con hacerlo.
Cuando finaliza un escaneo de vulnerabilidades, los problemas descubiertos generalmente se vinculan a identificadores
estándar de la industria, comonúmero CVE9,EDB-ID10y avisos de proveedores. Esta información, junto con las
vulnerabilidadesPuntuación CVSS11, se utiliza para determinar una calificación de riesgo. Junto con los falsos negativos (y
los falsos positivos), estas clasificaciones de riesgo arbitrarias son problemas comunes que deben tenerse en cuenta al
analizar los resultados del análisis.
Dado que las herramientas automatizadas utilizan una base de datos de firmas para detectar vulnerabilidades,
cualquier ligera desviación de una firma conocida puede alterar el resultado y la validez de la vulnerabilidad
percibida. Un falso positivo señala incorrectamente una vulnerabilidad que no existe, mientras que un falso
negativo oculta efectivamente una vulnerabilidad y no la informa. Debido a esto, a menudo se dice que un escáner
es tan bueno como su base de reglas de firma. Por esta razón, muchos proveedores ofrecen varios conjuntos de
firmas: uno que puede ser gratuito para los usuarios domésticos y otro bastante costoso que es más completo y
que generalmente se vende a clientes corporativos.
El otro problema que se encuentra a menudo con los análisis de vulnerabilidades es la validez de las clasificaciones de
riesgo sugeridas. Estas clasificaciones de riesgo se definen de forma genérica, teniendo en cuenta muchos factores
diferentes, como el nivel de privilegio, el tipo de software y la autenticación previa o posterior. Dependiendo de su entorno,
estas clasificaciones pueden o no ser aplicables, por lo que no deben aceptarse a ciegas. Solo aquellos que conocen bien
los sistemas y las vulnerabilidades pueden validar adecuadamente las calificaciones de riesgo.
Si bien no existe un acuerdo universalmente definido sobre las calificaciones de riesgo,NIST Publicación especial 800-3012
se recomienda como referencia para la evaluación de las clasificaciones de riesgo y su precisión en su entorno. NIST
SP 800-30 define el verdadero riesgo de una vulnerabilidad descubierta comouna combinación de la probabilidad
de ocurrencia y el impacto potencial.
9https://cve.mitre.org/
10https://www.exploit-db.com/
11https://www.first.org/cvss/
12https://csrc.nist.gov/publications/sp#800-30
• Alto: el adversario potencial está altamente capacitado y motivado y las medidas que se han puesto en
marcha para protegerse contra la vulnerabilidad son insuficientes.
• Medio: el adversario potencial está motivado y capacitado, pero las medidas implementadas para
protegerse contra la vulnerabilidad pueden impedir su éxito.
Impacto
Riesgo general
Una vez que se han determinado la probabilidad de ocurrencia y el impacto, puede determinar la calificación
de riesgo general, que se define como una función de las dos calificaciones. El riesgo general se puede
calificar como Bajo, Medio o Alto, lo que brinda orientación a los responsables de proteger y mantener los
sistemas en cuestión.
• Alto: Existe un fuerte requisito de implementar medidas adicionales para proteger contra la
vulnerabilidad. En algunos casos, se puede permitir que el sistema continúe funcionando, pero
se debe diseñar e implementar un plan lo antes posible.
• Medio: Existe el requisito de que se implementen medidas adicionales para proteger contra la
vulnerabilidad. Un plan para implementar las medidas requeridas debe hacerse de manera
oportuna.
En resumen
Con tantos factores que componen el verdadero riesgo de una vulnerabilidad descubierta, las clasificaciones de riesgo predefinidas
de la salida de la herramienta solo deben usarse como punto de partida para determinar el verdadero riesgo para la organización
en general.
Los informes creados de manera competente a partir de una evaluación de vulnerabilidad, cuando los analiza un profesional,
pueden proporcionar una base inicial para otras evaluaciones, como las pruebas de penetración de cumplimiento. Como tal, es
importante comprender cómo obtener los mejores resultados posibles de esta evaluación inicial.
Kali es una excelente plataforma para realizar una evaluación de vulnerabilidades y no necesita ninguna
configuración especial. En el menú Aplicaciones de Kali, encontrará numerosas herramientas para la
evaluación de vulnerabilidades en elRecopilación de información, análisis de vulnerabilidad,yAnálisis de
aplicaciones webcategorías. Varios sitios, incluido el mencionadoListado de herramientas de Kali Linux13,La
documentación oficial de Kali Linux14sitio, y el libreMetasploit desatado15El curso proporciona excelentes
recursos para usar Kali Linux durante una evaluación de vulnerabilidad.
El siguiente tipo de evaluación en orden de complejidad es una prueba de penetración basada en el cumplimiento.
Estas son las pruebas de penetración más comunes, ya que son requisitos exigidos por el gobierno y la industria
basados en un marco de cumplimiento en el que opera toda la organización.
Si bien existen muchos marcos de cumplimiento específicos de la industria, el más común probablemente sería
Estándar de seguridad de datos de la industria de tarjetas de pagodieciséis(PCI DSS), un marco dictado por las
compañías de tarjetas de pago que deben cumplir los minoristas que procesan pagos con tarjeta. Sin embargo,
existen otras normas, como laGuías de implementación técnica de seguridad de la Agencia de sistemas de
información de defensa17(ESTIGO DISA),Programa Federal de Gestión de Riesgos y Autorizaciones18
(FedRAMP),Ley Federal de Gestión de la Seguridad de la Información19(FISMA), y otros. En algunos casos, un
cliente corporativo puede solicitar una evaluación o pedir ver los resultados de la evaluación más reciente
por varias razones. Ya sea ad-hoc ormandado, este tipo de evaluaciones son colectivamente
13https://tools.kali.org/tools-listing
14https://www.kali.org/docs/
15https://www.offensive-security.com/metasploit-unleashed/
dieciséishttps://www.pcisecuritystandards.org/documents/Penetration_Testing_Guidance_March_2015.pdf
17https://public.cyber.mil/stigs/
18https://www.fedramp.gov/about-us/about/
19https://csrc.nist.gov/projects/risk-management
cumplimiento".
Una prueba de cumplimiento a menudo comienza con una evaluación de vulnerabilidad. En el caso deAuditoría de
cumplimiento de PCI20, una evaluación de vulnerabilidad, cuando se realiza correctamente, puede satisfacer varios de los
requisitos básicos, que incluyen: “2. No utilice los valores predeterminados proporcionados por el proveedor para las
contraseñas del sistema y otros parámetros de seguridad” (por ejemplo, con herramientas delAtaques de contraseña
categoría de menú), “11. Probar periódicamente los sistemas y procesos de seguridad” (con herramientas de laEvaluación
de la base de datoscategoría) y otros. Algunos requisitos, como “9. Restringir el acceso físico a los datos del titular de la
tarjeta” y “12. Mantener una política que aborde la seguridad de la información para todo el personal” no parecen prestarse
a la evaluación de vulnerabilidad tradicional basada en herramientas y requieren creatividad y pruebas adicionales.
A pesar de que puede no parecer sencillo usar Kali Linux para algunos elementos de una prueba de cumplimiento,
el hecho es que Kali encaja perfectamente en este entorno, no solo por la amplia gama de herramientas
relacionadas con la seguridad, sino también debido al entorno Debian de código abierto en el que se basa, lo que
permite la instalación de una amplia gama de herramientas. Buscar en el administrador de paquetes con palabras
clave cuidadosamente seleccionadas de cualquier marco de cumplimiento que esté utilizando es casi seguro que
arrojará múltiples resultados. Tal como está, muchas organizaciones usan Kali Linux como la plataforma estándar
para este tipo exacto de evaluaciones.
Una prueba de penetración tradicional se ha convertido en un elemento difícil de definir, y muchos trabajan a partir
de diferentes definiciones, según el espacio en el que operan. Parte de esta confusión del mercado se debe al
hecho de que el término "Prueba de penetración" se ha vuelto más comúnmente utilizado para la prueba de
penetración basada en el cumplimiento mencionada anteriormente (o incluso una evaluación de vulnerabilidad)
donde, por diseño, no está profundizando demasiado en la evaluación porque iría más allá de los requisitos
mínimos.
A los efectos de esta sección, dejaremos de lado ese debate y utilizaremos esta categoría para cubrir
las evaluaciones que van más allá de los requisitos mínimos; evaluaciones diseñadas para mejorar
realmente la seguridad general de la organización.
A diferencia de los tipos de evaluación discutidos anteriormente, las pruebas de penetración a menudo no comienzan con
una definición de alcance, sino con un objetivo como "simular lo que sucedería si un usuario interno se ve comprometido"
o "identificar lo que sucedería si el organización fue objeto de un ataque concentrado por parte de una parte
malintencionada externa”. Un diferenciador clave de este tipo de evaluaciones es que no solo encuentran y validan
vulnerabilidades, sino que aprovechan los problemas identificados para descubrir el peor de los casos. En lugar de
depender únicamente de conjuntos pesados de herramientas de análisis de vulnerabilidades, debe realizar un
seguimiento con la validación de los hallazgos mediante el uso de exploits o pruebas para eliminar los falsos positivos y
hacer todo lo posible para detectar vulnerabilidades ocultas o falsos negativos. Esto a menudo implica explotar
20https://www.pcisecuritystandards.org/documents/PCIDSS_QRGv3_2.pdf
Esto requiere una revisión crítica del entorno de destino junto con la búsqueda manual, la creatividad y el
pensamiento innovador para descubrir otras vías de vulnerabilidad potencial y, en última instancia, usar otras
herramientas y pruebas fuera de las encontradas por los escáneres de vulnerabilidades más pesados. Una vez que
esto se completa, a menudo es necesario comenzar todo el proceso nuevamente varias veces para hacer un trabajo
completo y completo.
Incluso con este enfoque, a menudo encontrará que muchas evaluaciones se componen de diferentes
fases. Kali facilita la búsqueda de programas para cada fase a través del Menú Kali:
• Recopilación de información: en esta fase, se enfoca en aprender tanto como sea posible sobre el
entorno de destino. Por lo general, esta actividad no es invasiva y parecerá similar a la actividad
estándar del usuario. Estas acciones constituirán la base del resto de la evaluación y, por lo tanto,
deben ser lo más completas posible. de KaliRecopilación de informaciónLa categoría tiene docenas de
herramientas para descubrir la mayor cantidad de información posible sobre el entorno que se está
evaluando.
• Explotación: con las vulnerabilidades potenciales descubiertas, en esta fase intenta explotarlas para
afianzarse en el objetivo. Las herramientas para ayudarlo en esta fase se pueden encontrar en el Análisis de
aplicaciones web, evaluación de bases de datos, ataques de contraseña,yHerramientas de explotación
categorías.
• Pivote y exfiltración: una vez que se establece el punto de apoyo inicial, se deben completar otros
pasos. A menudo, estos privilegios aumentan a un nivel adecuado para lograr sus objetivos como
atacante, se conectan a otros sistemas a los que es posible que no haya tenido acceso anteriormente
y extraen información confidencial de los sistemas objetivo. Referirse a Ataques de contraseña,
herramientas de explotación, rastreo y suplantación de identidad,yPublicar explotacióncategorías
para ayudar con esta fase.
• Informes: una vez que se completa la parte activa de la evaluación, debe documentar e informar sobre las
actividades realizadas. Esta fase a menudo no es tan técnica como las fases anteriores, sin embargo, es muy
importante asegurarse de que su cliente obtenga el máximo valor del trabajo realizado. ElHerramientas de
informesLa categoría contiene una serie de herramientas que han demostrado su utilidad en la fase de
presentación de informes.
En la mayoría de los casos, estas evaluaciones serán muy singulares en su diseño ya que cada organización
operará con diferentes amenazas y activos para proteger. Kali Linux es una base muy versátil para
Las personalizaciones que las organizaciones realizan en sus instalaciones de Kali Linux a menudo incluirán:
• Preinstalación de paquetes comerciales con información de licenciamiento. Por ejemplo, puede tener
un paquete como un escáner de vulnerabilidad comercial que le gustaría usar. Para evitar tener que
instalar este paquete con cada compilación, puede hacerlo una vez y que aparezca en cada
implementación de Kali que realice.
• Redes privadas virtuales (VPN) de conexión preconfigurada. Estos son muy útiles en los dispositivos que se
dejan atrás y que le permiten realizar evaluaciones "internas remotas". En la mayoría de los casos, estos
sistemas se volverán a conectar a un sistema controlado por un evaluador, creando un túnel que el
evaluador puede usar para acceder a los sistemas internos. ElKali Linux ISO de Doom21es un ejemplo de este
tipo exacto de personalización.
• Herramientas y software desarrollados internamente y preinstalados. Muchas organizaciones tendrán conjuntos de herramientas
privados, por lo que configurarlos una vez en una instalación personalizada de Kali ahorra tiempo.
• Configuraciones de sistema operativo preconfiguradas, como asignaciones de host, papel tapiz de escritorio,
configuración de proxy, etc. Muchos usuarios de Kali tienenajustes específicos22les gusta haber ajustado así.
Si va a volver a implementar Kali de forma regular, capturar estos cambios tiene mucho sentido.
Si bien la mayoría de las evaluaciones tienen un alcance amplio, la evaluación de una aplicación es una especialidad que se
centra estrictamente en una sola aplicación. Este tipo de evaluaciones se está volviendo más común debido a la
complejidad de las aplicaciones de misión crítica que utilizan las organizaciones, muchas de las cuales se crean
internamente. Una evaluación de la aplicación generalmente se agrega a una evaluación más amplia, según sea necesario.
Las solicitudes que pueden evaluarse de esta manera incluyen, pero no se limitan a:
• Aplicaciones web: la superficie de ataque externa más común, las aplicaciones web son excelentes objetivos
simplemente porque son accesibles. A menudo, las evaluaciones estándar encontrarán problemas básicos
en las aplicaciones web, sin embargo, una revisión más enfocada a menudo vale la pena para identificar
problemas relacionados con el flujo de trabajo de la aplicación. Elkali-herramientas-webmetapackage tiene
una serie de herramientas para ayudar con estas evaluaciones.
• Aplicaciones de escritorio compiladas: el software del servidor no es el único objetivo; Las aplicaciones de escritorio también
constituyen una maravillosa superficie de ataque. En años anteriores, muchas aplicaciones de escritorio, como lectores de
PDF o programas de video basados en la web, eran muy específicas, lo que los obligaba a madurar.
21https://www.offensive-security.com/kali-linux/kali-rolling-iso-of-doom/
22https://www.offensive-security.com/kali-linux/kali-linux-recipes/
• Aplicaciones móviles: a medida que los dispositivos móviles se vuelven más populares, las aplicaciones móviles se
convertirán en una superficie de ataque mucho más estándar en muchas evaluaciones. Este es un objetivo de
rápido movimiento y las metodologías aún están madurando en esta área, lo que lleva a nuevos desarrollos
prácticamente todas las semanas. Las herramientas relacionadas con el análisis de aplicaciones móviles se pueden
encontrar en elIngeniería inversacategoría del menú.
Las evaluaciones de las aplicaciones se pueden realizar de diversas formas. Como ejemplo simple, se puede ejecutar una
herramienta automatizada específica de la aplicación contra la aplicación en un intento de identificar problemas
potenciales. Estas herramientas utilizarán la lógica específica de la aplicación en un intento de identificar problemas
desconocidos en lugar de solo depender de un conjunto de firmas conocidas. Estas herramientas deben tener una
comprensión integrada del comportamiento de la aplicación. Un ejemplo común de esto sería un escáner de vulnerabilidad
de aplicaciones web comoSuite de eructos23, dirigido contra una aplicación que primero identifica varios campos de
entrada y luego envía ataques de inyección SQL comunes a estos campos mientras monitorea la respuesta de la aplicación
en busca de indicaciones de un ataque exitoso.
En un escenario más complejo, una evaluación de la aplicación se puede realizar de forma interactiva en un caja
negraocaja blancamanera.
• Evaluación de caja negra: la herramienta (o evaluador) interactúa con la aplicación sin ningún conocimiento o
acceso especial más allá del de un usuario estándar. Por ejemplo, en el caso de una aplicación web, el
evaluador solo puede tener acceso a las funciones y características que están disponibles para un usuario
que no haya iniciado sesión en el sistema. Cualquier cuenta de usuario utilizada sería aquella en la que un
usuario general puede registrar automáticamente la cuenta. Esto evitaría que el atacante pueda revisar
cualquier funcionalidad que solo esté disponible para los usuarios y que deba ser creada por un
administrador.
• Evaluación de caja blanca: la herramienta (o evaluador) a menudo tendrá acceso total al código fuente,
acceso administrativo a la plataforma que ejecuta la aplicación, etc. Esto garantiza que se complete una
revisión completa y completa de toda la funcionalidad de la aplicación, independientemente de dónde
resida esa funcionalidad en la aplicación. La contrapartida de esto es que la evaluación no es de ninguna
manera una simulación de una actividad maliciosa real.
Obviamente hay tonos de gris en el medio. Por lo general, el factor decisivo es el objetivo de la evaluación. Si
el objetivo es identificar qué sucedería en caso de que la aplicación sufriera un ataque externo enfocado,
probablemente lo mejor sería una evaluación de caja negra. Si el objetivo es identificar y eliminar tantos
problemas de seguridad como sea posible en un período de tiempo relativamente corto, un enfoque de caja
blanca puede ser más eficiente.
En otros casos, se puede adoptar un enfoque híbrido en el que el evaluador no tiene acceso total al código fuente
de la aplicación de la plataforma que ejecuta la aplicación, pero un administrador proporciona las cuentas de
usuario para permitir el acceso a la mayor funcionalidad posible de la aplicación.
23https://portswigger.net/burp
Con su entorno Kali listo y el tipo de evaluación definido, está casi listo para comenzar a trabajar. Tu
último paso es formalizar el trabajo a realizar. Esto es de vital importancia, ya que define cuáles serán
las expectativas para el trabajo y le otorga permiso para realizar lo que de otro modo podría ser una
actividad ilegal. Cubriremos esto a un alto nivel, pero este es un paso muy complejo e importante, por
lo que probablemente querrá consultar con el representante legal de su organización para obtener
ayuda.
Como parte del proceso de formalización, deberá definir las reglas de contratación para el trabajo. Esto
cubre elementos como:
• Cuando descubre una vulnerabilidad potencial, ¿tiene permitido explotarla? Si no, ¿cuál es el proceso de
aprobación? Hay algunas organizaciones que adoptan un enfoque muy controlado para cada intento de
explotación, mientras que a otras les gustaría un enfoque más realista. Es mejor definir claramente estas
expectativas antes de que comience el trabajo.
• Si se descubre un problema importante, ¿cómo debe manejarse? A veces, las organizaciones quieren
que se les informe de inmediato; de lo contrario, normalmente se aborda al final de la evaluación.
• En caso de emergencia, ¿a quién debe contactar? Siempre es importante saber a quién contactar
cuando ocurre un problema de cualquier tipo.
• ¿Quién sabrá acerca de la actividad? ¿Cómo se les comunicará? En algunos casos, las
organizaciones querrán probar su respuesta a incidentes y el rendimiento de detección como
parte de la evaluación. Siempre es una buena idea saber esto de antemano, para que sepa si
debe tomar algún grado de cautela en el enfoque de la evaluación.
• ¿Cuáles son las expectativas al final de la evaluación? ¿Cómo se comunicarán los resultados? Sepa lo
que todas las partes esperan al final de la evaluación. Definir el entregable es la mejor manera de
mantener a todos felices después de que se complete el trabajo.
24https://tools.kali.org/category/web-applications
25https://tools.kali.org/category/reverse-engineering
26https://tools.kali.org/
Con todo eso en su lugar, todavía hay un último paso que querrá dar antes de comenzar a trabajar: la validación.
Nunca confíe en el alcance que se le proporciona, siempre valídelo. Utilice múltiples fuentes de información para
confirmar que los sistemas dentro del alcance son de hecho propiedad del cliente y que también son operados por
el cliente. Con el predominio de los servicios en la nube, una organización puede olvidar que en realidad no es
propietaria de los sistemas que le brindan el servicio. Es posible que deba obtener un permiso especial de un
proveedor de servicios en la nube antes de comenzar a trabajar. Además, siempre valide los bloques de direcciones
IP. No cuente con la suposición de una organización de que posee bloques completos de IP, incluso si los aprueba
como objetivos viables. Por ejemplo, hemos visto ejemplos de organizaciones que solicitan una evaluación de todo
un rango de red de clase C cuando, de hecho, solo poseían un subconjunto de esas direcciones. Al atacar todo el
espacio de direcciones de clase C, habríamos terminado atacando a los vecinos de la red de la organización. El
Análisis OSINTsubcategoría de laRecopilación de informaciónEl menú contiene una serie de herramientas que
pueden ayudarlo con este proceso de validación.
Una vez que se esté realizando el trabajo, ¿cuáles son algunos de los tipos específicos de ataques que llevará
a cabo? Cadatipo de vulnerabilidad27tiene sus propias técnicas de explotación asociadas. Esta sección cubrirá
las diversas clases de vulnerabilidades con las que interactuará más a menudo.
No importa qué categoría de vulnerabilidad esté buscando, Kali hace que estas herramientas y exploits sean fáciles
de encontrar. El menú de Kali en su interfaz gráfica de usuario está dividido en categorías para facilitar la búsqueda
de la herramienta adecuada. además, elSitio web de Kali Tools28tiene listas completas de las diversas herramientas
disponibles en Kali, organizadas por categoría y etiquetadas para facilitar la navegación. Cada entrada contiene
información detallada sobre la herramienta, así como ejemplos de uso.
Los ataques de denegación de servicio aprovechan una vulnerabilidad para crear una pérdida de servicio, a menudo bloqueando el
proceso vulnerable. ElPruebas de estrésLa categoría del menú de Kali Linux contiene una serie de herramientas para este
propósito.
Cuando muchas personas escuchan el término "ataque de denegación de servicio", inmediatamente piensan en
ataques de consumo de recursos que se envían desde varias fuentes a la vez contra un solo objetivo. Estos
27https://www.cvedetails.com/vulnerabilidades-por-tipos.php
28https://tools.kali.org/tools-listing
En cambio, un ataque singular de denegación de servicio suele ser el resultado de un intento inadecuado de
explotar una vulnerabilidad. Si un escritor de exploits publica un código parcialmente funcional o de prueba de
concepto (PoC) y se usa en el campo, esto podría crear una condición de denegación de servicio. Incluso un exploit
codificado correctamente puede funcionar solo en circunstancias muy específicas, pero causar una denegación de
servicio en circunstancias menores. Puede parecer que la solución es usar solo un código de explotación seguro y
probado, o escribir uno propio. Incluso con esta solución, no hay garantías y esto limita severamente al evaluador,
provocando restricciones indebidas, lo que resulta en una evaluación menor. En cambio, la clave es el compromiso.
Evite el código PoC y los exploits no probados en el campo y siempre asegúrese de que un abogado lo tenga
cubierto para otros percances.
Por lo general, los ataques de denegación de servicio no se lanzan intencionalmente. La mayoría de las herramientas de
vulnerabilidad automatizadas declararán las vulnerabilidades de denegación de servicio como de menor riesgo debido al hecho de
que, si bien puede eliminar un servicio de la operación, ese servicio no puede explotarse para la ejecución de código. Sin embargo,
es importante recordar que no todos los exploits se publican y una vulnerabilidad de denegación de servicio puede enmascarar una
amenaza más profunda y grave. Puede existir una explotación de ejecución de código para una denegación de servicio conocida,
pero no ser pública. El punto es, preste atención a las vulnerabilidades de denegación de servicio y anime a su cliente a que las
parchee, independientemente de su calificación de amenaza (a menudo baja).
Una corrupción de memoria ocurre cuando una ubicación dentro del espacio de memoria de un proceso se modifica
accidentalmente debido a errores de programación. Los errores de corrupción de la memoria generalmente conducen a un
comportamiento impredecible del programa; sin embargo, en muchos casos, estos errores permiten la manipulación de la memoria
del proceso de tal manera que se puede controlar el flujo de ejecución del programa, lo que permite la actividad definida por el
atacante.
Estos ataques suelen denominarse desbordamientos de búfer, aunque este término es una
simplificación excesiva. Los tipos más comunes de corrupción de la memoria son muy diferentes entre
sí y tienen sus propias tácticas y técnicas requeridas para una explotación exitosa.
• Desbordamiento del búfer de la pila: cuando un programa escribe más datos en un búfer de la pila que el espacio
disponible para él, la memoria adyacente puede corromperse, lo que a menudo hace que el programa se bloquee.
• Corrupción del montón: la memoria del montón se asigna en tiempo de ejecución y generalmente contiene datos del programa en ejecución. Las
corrupciones de almacenamiento dinámico ocurren al manipular los datos para sobrescribirlos a través de la lista vinculada de punteros de
• Desbordamiento de enteros: estos desbordamientos se producen cuando una aplicación intenta crear un valor numérico
que no puede contenerse dentro de su espacio de almacenamiento asignado.
• Cadena de formato: cuando un programa acepta la entrada del usuario y la formatea sin verificarla, las
ubicaciones de la memoria pueden revelarse o sobrescribirse, según los tokens de formato que se utilicen.
Debido al hecho de que los sitios web modernos ya no son páginas estáticas, sino generadas
dinámicamente para el usuario, el sitio web promedio es bastante complejo. Las vulnerabilidades web se
aprovechan de esta complejidad en un esfuerzo por atacar la lógica de generación de la página final o la
presentación al visitante del sitio.
Este tipo de ataques son extremadamente comunes, ya que muchas organizaciones han llegado al punto en
que tienen muy pocos servicios externos. dos de lostipos de ataques de aplicaciones web más frecuentes29
son inyección SQL y secuencias de comandos entre sitios (XSS).
• Cross-site scripting: Al igual que con la inyección de SQL, los ataques XSS son el resultado de una sanitización inadecuada de
la entrada del usuario, lo que permite a los atacantes manipular al usuario o al sitio para ejecutar código en el contexto de
su propia sesión de navegador.
Las aplicaciones web complejas, ricas y complicadas son muy comunes y presentan una superficie de ataque bienvenida
para las partes malintencionadas. Encontrará una gran cantidad de herramientas útiles en elAnálisis de aplicaciones web
categoría del menú y lakali-herramientas-webmetapaquete.
Los ataques de contraseña son ataques contra el sistema de autenticación de un servicio. Estos ataques a menudo
se dividen en ataques de contraseña en línea y ataques de contraseña fuera de línea, que encontrará reflejados en
elAtaques de contraseñacategoría del menú. En un ataque de contraseña en línea, se intentan múltiples
contraseñas contra un sistema en ejecución. En un ataque de contraseña fuera de línea, se obtienen los valores
cifrados o cifrados de las contraseñas y el atacante intenta obtener los valores de texto sin cifrar. La protección
contra este tipo de ataque es el hecho de que es computacionalmente costoso realizar este proceso, lo que limita la
cantidad de intentos por segundo que puede generar. Sin embargo, existen soluciones alternativas para esto, como
el uso de unidades de procesador gráfico (GPU) para acelerar la cantidad de intentos que se pueden realizar. Elkali-
herramientas-gpuEl metapaquete contiene una serie de herramientas que aprovechan este poder.
Más comúnmente, los ataques de contraseña tienen como objetivo las contraseñas predeterminadas proporcionadas por el
proveedor. Como estos son valores bien conocidos, los atacantes buscarán estas cuentas predeterminadas, con la esperanza de
tener suerte. Otros ataques comunes incluyen ataques de diccionario personalizado donde se crea una lista de palabras que se ha
adaptado al entorno de destino y luego se lleva a cabo un ataque de contraseña en línea contra cuentas comunes, predeterminadas
o conocidas donde cada palabra se intenta en secuencia.
29https://owasp.org/www-project-top-ten/
La mayoría de los ataques se realizan contra servidores, pero a medida que los servicios se han vuelto más difíciles de atacar, se han
seleccionado objetivos más fáciles. Los ataques del lado del cliente son el resultado de esto, donde un atacante apuntará a las
diversas aplicaciones instaladas en la estación de trabajo de un empleado dentro de una organización objetivo. ElHerramientas de
ingeniería socialLa categoría de menú tiene una serie de excelentes aplicaciones que pueden ayudar a realizar este tipo de ataques.
Este tipo de ataque fue comúnmente explotado por Flash, Acrobat Reader y Java a principios de la década de 2000.
Actualmente, la aplicación HTML (HTA) es el método popular. En los casos anteriores, los atacantes intentarían solicitar a un
objetivo que visite una página web maliciosa. Estas páginas contendrían código especializado que desencadenaría
vulnerabilidades en estas aplicaciones del lado del cliente o engañaría al usuario, lo que daría como resultado la capacidad
de ejecutar código malicioso en el sistema objetivo.
Los ataques del lado del cliente son increíblemente difíciles de prevenir y requieren una gran cantidad de educación del usuario,
actualizaciones constantes de aplicaciones y controles de red para mitigar el riesgo de manera efectiva.
11.5. Resumen
Los componentes de la tríada CIA (confidencialidad, integridad, disponibilidad) son los elementos principales
en los que se centrará al proteger un sistema como parte de la implementación, el mantenimiento o la
evaluación estándar. Esta base conceptual lo ayudará a identificar los componentes críticos de sus sistemas y
la cantidad de esfuerzo y recursos que vale la pena invertir para corregir los problemas identificados.
Discutimos varios tipos de vulnerabilidades, incluida la inclusión de archivos, la inyección de SQL, los desbordamientos de búfer y las
condiciones de carrera.
La precisión de las firmas es extremadamente importante para obtener resultados útiles de evaluación de vulnerabilidades.
Cuantos más datos se proporcionen, mayor será la posibilidad de obtener resultados precisos de un escaneo automatizado
basado en firmas, razón por la cual los escaneos autenticados suelen ser tan populares.
La evaluación de vulnerabilidades es relativamente simple en comparación con los otros tipos de evaluación y, a
menudo, consiste en un inventario automatizado de problemas descubiertos dentro de un entorno de destino. En
esta sección, discutimos que una vulnerabilidad es una falla que, cuando se explota, comprometerá la
confidencialidad, integridad o disponibilidad de un sistema de información. Dado que se basa en firmas, este tipo
de evaluación se basa en firmas precisas y puede presentar falsos positivos y negativos. Encontrará las
herramientas básicas para este tipo de evaluación en elAnálisis de vulnerabilidadyHerramientas de explotación
categorías de menú de Kali Linux.
Las pruebas de cumplimiento se basan en requisitos exigidos por el gobierno y la industria (como PCI DSS, DISA
STIG y FISMA), que a su vez se basan en un marco de cumplimiento. Esta prueba generalmente comienza con una
evaluación de vulnerabilidad.
Una prueba de penetración tradicional es una evaluación de seguridad exhaustiva que está diseñada para mejorar
la postura de seguridad general de una organización en función de ciertas amenazas del mundo real. Este tipo de
prueba implica varios pasos (reflejados en la estructura de menús de Kali Linux) y culmina en la explotación de
vulnerabilidades y el acceso dinámico a otras máquinas y redes dentro del alcance objetivo.
Las evaluaciones de aplicaciones (generalmente de caja blanca o negra) se enfocan en una sola aplicación y usan
herramientas especializadas como las que se encuentran en elAnálisis de aplicaciones web, evaluación de bases de datos,
ingeniería inversa,yHerramientas de explotacióncategorías del menú.
Se discutieron varios tipos de ataques, entre ellos: Denegación de servicio, que interrumpe el comportamiento de una
aplicación y la vuelve inaccesible; corrupción de la memoria, que conduce a la manipulación de la memoria del proceso, lo
que a menudo permite la ejecución de código por parte de un atacante; ataques web, que atacan servicios web utilizando
técnicas como inyección SQL y ataques XSS; y ataques de contraseña, que a menudo aprovechan las listas de contraseñas
para atacar las credenciales del servicio.
Cambios constantes
Certificaciones
Entrenamientos
Capítulo
Conclusión: El 12
Camino por delante
Contenido
Mantenerse al día con los cambios306 Mostrando su conocimiento recién adquirido306 Ir más lejos307
¡Felicidades! Con suerte, ahora debería estar más familiarizado con su sistema Kali Linux y no debería
tener miedo de usarlo para cualquier experimento que se le ocurra. Ha descubierto sus características
más interesantes, pero también conoce sus límites y varias formas de evitar esas limitaciones.
Si no ha puesto en práctica todas las funciones, conserve este libro como referencia y refresque su memoria
cuando esté a punto de probar una nueva función. Recuerda que no hay nada mejor que la práctica (y la
constancia) para desarrollar nuevas habilidades.Esforzarse más1, como dice Seguridad Ofensiva.
Con una distribución en constante cambio comorodando kali, algunas partes del libro necesariamente quedarán obsoletas.
Haremos todo lo posible para mantenerlo actualizado (al menos por elversión en línea2), pero en la mayoría de los casos
tratamos de proporcionar explicaciones genéricas que deberían ser útiles durante mucho tiempo.
Dicho esto, debe estar listo para aceptar los cambios y encontrar soluciones a cualquier
problema que pueda surgir. Con una mejor comprensión de Kali Linux y su relación con Debian,
puede confiar en las comunidades de Debian y Kali y sus numerosos recursos (registradores de
errores, foros, listas de correo, etc.) cuando se atasque.
No tenga miedo de reportar errores (vea la sección6.3, “Presentar un buen informe de error” [página 134])!
Si es como yo, para cuando haya completado los pasos necesarios para presentar un buen informe de error
(y lleva algo de tiempo), habrá resuelto el problema o al menos encontrado una buena solución. Y al archivar
el error, estarás ayudando a otras personas afectadas por el problema.
¿Estás orgulloso de tus nuevas habilidades con Kali Linux? ¿Te gustaría asegurarte de recordar las cosas
realmente importantes? Si responde afirmativamente a una de esas preguntas, entonces debería considerar
solicitar el programa Kali Linux Certified Professional.
Es una certificación integral que garantizará que sepa cómo implementar y usar Kali Linux en muchos casos
de uso realistas. Es una buena adición a su currículum y también demuestra que está listo para ir más allá.
1https://www.offensive-security.com/offsec/say-try-harder/
2https://kali.entrenamiento/
Este libro le enseñó muchas cosas que cualquier usuario de Kali Linux debería saber, pero tomamos algunas
decisiones difíciles para mantenerlo breve y hay muchos temas que no se cubrieron.
Si desea obtener más información sobre la administración del sistema, solo podemos recomendarle que
consulte el Manual del administrador de Debian:
mihttps://debian-handbook.info/get/
Allí encontrará muchos capítulos complementarios que cubren los servicios comunes de Unix que hemos omitido
por completo en este libro. E incluso para los capítulos que se han reutilizado en el libro de Kali, encontrará
muchos consejos complementarios, en particular sobre el sistema de empaquetado (que también se cubre más
extensamente en su nivel más bajo).
El libro de Debian obviamente presenta más profundamente la comunidad de Debian y la forma en que está organizada. Si
bien este conocimiento no es vital, es realmente útil cuando tiene que interactuar con los colaboradores de Debian, por
ejemplo, a través de informes de errores.
Probablemente ya haya notado que este libro no le enseñó las pruebas de penetración. Pero las cosas que
aprendiste siguen siendo importantes. Ahora está listo para explotar completamente el poder de Kali Linux, el
mejor marco de pruebas de penetración. Y tiene las habilidades básicas de Linux requeridas para participar en la
capacitación de Offensive Security.
Si cree que aún no está listo para un curso pago, puede comenzar siguiendo lasMetasploit desatado3
formación en línea gratuita. Metasploit es una herramienta de prueba de penetración muy popular y debe
conocerla si se toma en serio sus planes para aprender las pruebas de penetración.
El siguiente paso lógico sería entonces seguir elPruebas de penetración con Kali Linux4curso en línea que
abre el camino hacia la famosa certificación “Offensive Security Certified Professional”. Este curso en línea se
puede seguir a su propio ritmo, pero la certificación es en realidad una prueba de penetración práctica,
difícil, de 24 horas de duración, en palabras reales, que se lleva a cabo en una red VPN aislada.
3https://www.offensive-security.com/metasploit-unleashed/
4https://www.offensive-security.com/cursos-y-certificaciones/
Configuracion inicial,84
A interfaces,196
a2dismod,118 búsqueda de paquetes,191
a2enmod,118 fijación,202
a2ensita,119 preferencias,202
ACEPTAR,161 apto,181
cuenta apt build-dep,231
creación,112 apt dist-actualización,185
desactivar,113 actualización completa apt,185
Índice 309
ataques de fuerza bruta,300 Compilacion
buffer de un núcleo,237 prueba de
Desbordamiento,299 penetración de cumplimiento,292
recibir búfer,162 componente (de un repositorio),179
informe de error,134 confites,220
bichos.kali.org,138 confidencialidad
construir dependencias, instalación,231 opciones archivos,88
comprobar la seguridad,171
control.tar.gz,217
copiando imagen iso,19
sumas de control,220
derechos de autor,131
cocinero,261
archivo de derechos de autor,271
franco suizo,113
chsh,113 grupos,113
comunidades,132 248
debconf-obtener,101 distribucion2
debconf-obtener-selecciones,98 dm-cripta,89
conjunto de debconf,101 mensaje,60
DEBE CORREO,270 ADNT,161
DEBFULLNAME,270 dnsmasq,258
Debian documentación,128,130
relación con Kali Linux,4 Manual del descargar
administrador de Debian,307 Directrices imagen ISO,14
de software libre de Debian,5 Debian las fuentes,229
GNU/Linux,2 dpkg,176
Política de Debian,5 base de datos,217
debian-archive-llavero,208 dpkg --verificar,169
manual-del-kernel-debian,238 operación interna,219
debian/registro de cambios,232, paquete de compilación dpkg,236
271 debian/control,272 dpkg-deb,236
debian/derechos de autor,271 dpkg-fuente --commit,233
debian/parches,230 unidad, unidad USB,19 GOTA,
debian/reglas,234,273 161
deconstruir,237 dropdb,116
contraseñas predeterminadas,159
dropuser,116
objetivo por defecto,122 arranque doble,87
eliminación de un grupo,
113 del grupo,113 mi
negación de servicio,298 eco,54
dependencia,212 editor,56
Depende, campo de encabezado, partición encriptada,88
212 entorno de escritorio,3 persistencia encriptada,248
elección durante la construcción de ISO en vivo, ingeniería
242 base de escritorio,269 contrarrestar,7
Índice 311
ExecCGI, directiva de Apache,120 información,130
arrancando,24 conquistador,130
proceso de copiar,19 kvm,24
generación personalizada,241
descargar,14 L
espejos,14 Selección de idioma,67
variantes,dieciséis
diseño, teclado,69
menos,56
j libapache-mod-php,118
diario,60 linux,48
diario,60 distribución,2
núcleo,2,9
k fuentes del núcleo,238
kali linux imagen ISO en vivo,14
comunidades,132 generación personalizada,241
repositorios,179 REGISTRO,161
Índice 313
Administrador de volumen lógico,89 inicio de espejos,14,180
sesión, inicio de sesión remoto,115 registros mkdir,53
mkfs,49
aptitud,199 modificación de un paquete,228
dpkg,194 modificación, derecho,57
diario,60 supervisión,167
núcleo,60 actividad,168
supervisión,167 archivos,170
lsdev,61 más,56
lshw,61 montar,49
lspci,61 punto de montaje,82
lspcmcia,61 Multi-Arco,206
susb,61 objetivo multiusuario,122
LUCKS,89 MultiViews, directiva de Apache,120
LVM,89 mv,53
METRO norte
buscar,188, persistencia,246
191 firma,208 encriptado,248
fuente de,178 varias tiendas,249
paquete fuente,176 pg_createcluster,117
estado,188 pg_ctlcluster,117
desempacar,182 pg_dropcluster,117
comparación de versiones, pg_hba.conf,116
190 paquete virtual,215 pg_lsclusters,117
rastreador de paquetes,5 pg_renamecluster,117
Paquetes.xz,178 pg_upgradecluster,117
embalaje clave PGP,17
opciones de construcción,234 PHP,118
paquetes de configuración,269 PID, identificador de proceso,50
Índice 315
Pinfo,130 reinstalación,194
silbido,162 RECHAZAR,161
fijación, fijación APT,202 punto, Liberar.gpg,208
punto de montaje,82 después de inicio de sesión remoto,115
predependencia,213 143
configuración,114 derechos,57
QCOW,30
QEMU,24 S
módulos de ejecución de sal,262
R fórmulas de sal,264
leer, correcto,57 módulos de estado de sal,265
LÉAME.Debian,130 estados de sal,264
recibir búfer,162 llave de sal,261
Recomendaciones, campo de encabezado, pila de sal,261
214 REDIRECTO,161 samhain,170
redirección,56 escaneando hilos,290
revisión de cuentas,5
sináptico,196,199 administracion del sistema,307
Índice 317
tu nombre,60 web,300
instalación desatendida,95
montaje de unión,246 W
unidad, unidad systemd,121 WantedBy, directiva systemd,122
Actualización de sistema,184
autenticación web,120 red
creación de usuarios,72
escribe bien,57
espacio de usuario,48
X
V xdg,55
entorno variable,54 variantes Xen,24
de imagen ISO en vivo,242 VDI, Xfce,3
30
Y
versión, comparación,190
gañido,130
vigor,112
VIP,112
anfitrión virtual,118
máquina virtual,24
memoria virtual,82
paquete virtual,215
caja virtual,24
vmware,24
volumen
grupo,89
volumen lógico,89
volumen físico,89
vulnerabilidad
análisis,6
evaluaciones,288
lado del cliente,301
negación de servicio,298
corrupción de la memoria,299
contraseña,300
escaneos,290
tipos de,298