Laboratorio Netcat… ¡Navaja Suiza!, Pentesting

0 portada.png

Hola a todos..

Seguimos con nuestros ejercicios Practicos, en los cuales quiero compartir la solución de algunos talleres o laboratorios que realizó…

Esta vez quiero enseñarles a cerca de la herramienta Netcat… Como es costumbre, un poco de teoría…

Conocida como la «navaja suiza», netcat es una excelente herramienta que nos apoya en las  labores de Hacking o Pentesting, desarrollada inicialmente en 1996, ha venido evolucionando con el correr del tiempo, inicialmente fue escrita para UNIX, ahora, tenemos la opción de utilizarla en diferentes plataformas.

Para dar idea de porque «Navaja Suiza»… Sirve para realizar muchisimas cosas:

  • Abrir puertos TCP y trabajar sobre ellos
  • Permite conexiones de tipo Cliente/Servidor
  • Hacer Scanning de Puertos
  • Realizar procesos de Banner Grabbing
  • Puertas Traseras (Backdoors)
  • Transferir Archivos
  • Re-direccionar Puertos
  • etc…

Laboratorio:

En esta oportunidad utilizaremos dos MV, una de Kali Linux y otra de Windows 2003 Server. Estas maquinas se trabajarán de manera virtualizada, para evitar hacer daños, dichas maquinas deben estar bajo el mismo segmento de red por supuesto

Lo primero que debemos hacer sera copiar el archivo nc.exe (herramienta netcat), en la MV de windows server, dicho ejecutable lo encontraremos en Kali –> /usr/share/windows-binaries

Primer paso.

Comencemos conociendo un poco la herramienta desde la Terminal de Kali, ejecutando el siguiente comando:

nc -h

El cual nos permitirá visualizar todas las opciones que nos brinda Netcat.

1 nc-h

En el laboratorio de NMAP, visualizamos algunos puertos abiertos de la MV Windows Server 2003, sin embargo aquí ejecuto un SYN Scan, nuevamente para visualizar que puertos están abiertos de nuestro Windows Server 2003

2 nmap.png

Segundo Paso:

Utilicemos Netcat para conectarse a un servicio TCP que se encuentra abierto en nuestro objetivo, como vemos en la imagen anterior el puerto 21/TCP de la siguiente manera:

nc -vn «direccion IP» «numero de puerto»

3 nc-vn.png

Como pudimos ver en la imagen anterior abrimos una sesion FTP, utilizando la herramienta Netcat.

Tercer Paso:

Abramos un puerto con Netcat, utilizamos nuestra herramienta para poner un puerto en escucha, para lograr esta tarea debemos ejecutar el siguiente comando en nuestro CMD de Windows 2003

nc -lvp «puerto que deseamos abrir/en escucha»

4 nc -lvp port.png

Como vemos en la imagen anterior, abrimos el puerto 447 de nuestro Windows Server.

Ahora, desde nuestra maquina Kali, ejecutaremos el siguiente comando:

nc -v «direccion IP» «puerto»

5 nc -v.png

La conexión realizada anterior mente se puede interpretar como una conexion de tipo Bridge (Cliente-Servidor), ya que no hay dispositivos de tipo router o Firewall entre las conexiones.

Para probar esta conexión, veamos un «chat» entre dichas maquinas

6 chat.png

7 chat.png

Cuarto Paso:

Utilicemos Netcat para realizar una transferencia de archivos entre nuestas MV’s, sigamos los siguientes pasos:

En nuestra maquina de Kali, ejecutamos el siguiente comando:

nc -lvp «puerto» > output.txt

8 archivos1.png

Ahora desde Windows Server, creamos un archivo con el siguiente comando.

echo «contenido de archivo» > «nombre de archivo»

9 archivos2.png

Posteriormente ejecutamos el siguiente comando en Windows:

nc -vv «Direccion IP» «puerto» < «nombre de archivo»

10 archivos3.png

Después de unos segundos el comando anterior finaliza su ejecución y ahora podemos ver el contenido del archivo texto_server.txt en nuestro archivo output.txt

11 archivos4.png

Quinto Paso:

Realizamos el proceso de Scanning de puertos con NETCAT, para realizar esta tarea debemos ejecutar los siguientes comandos, teniendo en cuenta que al comienzo del post realizamos un scanning con NMAP, ahora veamolo con NETCAT. Ejecute lo siguiente:

nc -v -n -r -z «Direccion IP» «puerto (s)»

12 nc nmap.png

De esta manera realizamos un Scanning de puertos con Netcat.

Sexto Paso:

Continuemos haciendo una arministración remota (Conexión Directa -BIND) con Netcat, sigamos los siguientes pasos

Ejecutamos el siguiente comando en el cmd de Windows Server:

nc -lvvp «puerto» -c cmd.exe

13 bind_remoto.png

Posteriormente, desde la terminal de linux ejecutamos lo siguiente

nc -vnn»Direccion IP Windows Server» «puerto»

14 bind_remoto.png

En la imagen anterior, vemos como desde la Terminal de Kali, logramos abrir un CMD en Kali

De esta manera llegamos al final de nuestro POST acerca de la Herramienta NETCAT. Recuerden que es una herramienta con muchos mas funcionamientos. Recomiendo revisarla…

Saludos…

Neox!

GBH…

 

Laboratorio NMAP Básico, Fase Scanning Pentesting,Vmware, Wireshark.

Hola de nuevo a tod@s

Disculpen ausentarme un poco… 19

Esta vez vengo con la idea de que trabajemos en un laboratorio para practicar los diferentes tipos de Scanning que podemos realizar con NMAP. Para este laboratorio, vamos a requerir de maquinas virtuales que actuaran en diferentes «bandos», utilizaremos la MV de Kali-Linux para realizar el scanning, y utilizaremos un Windows 2003 Server, Metaexploitable2 y Windows 7… Todas estas maquinas se trabajaran desde Vmware, las cuales estarán configuradas con su interfaz de red en NAT.

Sin mucho mas que escribir, comencemos…

La fase de Scanning es la segunda fase del Pentesting. Despues de  la fase de escaneo de puertos:

Nota: La dirección IP que le fue asignada a mi MV de Kali fue la: 192.168.23.129, lo cual quiere decir que trabajaremos sobre el segmento de red: 192.168.23.0/24,

1.Ping Sweep:

Lo primero que debemos realizar en nuestra fase de scanning, es un ping sweep, el cual nos permitirá identificar los host que se encuentren activos en la red a la cual estoy conectado.

el comando que utilizaremos para realizar nuestro ping sweep, sera:

# nmap -sP «segmento de red»

La opcion -sP nos permite hacer un PING desde la 192.168.23.1, hasta la 192.168.23.254.

ping_sweep

En la imagen anterior vemos, como los host que respondieron a nuestro ping sweep, lo cual nos indica que están activos en nuestra red.

Host Activos:

  • 192.168.23.2
  • 192.168.23.130
  • 192.168.23.131
  • 192.168.23.254
  • 162.168.23.129 (propio)

2. Port Scanning / Escaneo de Puertos

Tiene como propósito lo siguiente:

  • Escaneo de Puertos: Se realiza el envió de paquetes a un host, para identificar el estado de los puertos TCP y UDP
    • Posibles estados de un puerto: Abierto-Cerrado-Filtrado.
  • Identificar Servicios por Puerto: Identificar vulnerabilidades en los servicios que se ejecutan sobre puertos abiertos.
  • Sistema Operativo de Host: Información importante acerca de nuestra «victima», posibles vulnerabilidades.

Veamos un ejemplo, con uno de los host que encontramos activos en nuestro ping sweep.

# nmap «direccion ip objetivo»

El anterior comando nos permitirá analizar el estado de los puertos de la maquina objetivo.

2nmap.png

En la imagen anterior vemos como el comando nos despliega la lista de puertos que se encuentran abiertos en nuestro host objetivo (OJO: Abierto no quiere decir que sea vulnerable).

De la manera anterior podemos, evaluar el estado de los puertos de diferentes dispositivos, no necesariamente PC. Switch, Routers, etc.

Para la imagen anterior, vemos que el puerto 80 (http), se encuentra abierto, lo cual implica que si ingresamos en nuestro navegador la direccion ip de nuestro host objetivo, deberia desplegarnos algo… veamos..

380.htto.png

Ya de esta manera, podemos evidenciar que lo que esta ejecutandose en nuestro host objetivo, en su puerto 80,  un servidor WEB llamado XAMPP en su versión para WINDOWS, lo cual nos da el SO que se encuentra instalado en nuestro Host objetivo.

Vemos tambien los servicios que estan ejecutanse en cada uno de los puertos que se encuentran abiertos.

3.Versiones

El siguiente comando nos permitira conocer la version del servicio que se esta ejecutando en dicho puerto:

# nmap -sV «direccion ip objetivo»

Veamos a continuación:

4 -sV

Vemos la versión de los servicios que se estan ejecutando, esta información es de mucha utilidad, ya que durante nuestra fase de explotación, encontraremos vulnerabilidades en algunas VERSIONES de diferentes servicios.

4. UDP Scanning

Los anteriores comandos los utilizamos para realizar el scanning de los puertos TCP de nuestro host objetivo, ahora veamos el comanto utilizado para scanear los puertos UDP

# nmap -sU «direccion ip objetivo»

Veamos…

5 udp.png

En la imagen anterior vemos el estado y los servicios que se estan ejecutando sobre los puertos UDP del host.

Otras opciones

-O: Este comando nos permite tratar de reconocer el Sistema Operativo que se encuentra instalado en nuestra Host Objetivo.

# nmap -O «direccion ip objetivo»

-P: Este comando nos permite indicar un puerto o un rango de puertos que deseamos escanear

# nmap -p»numero de puerto» «direccion ip objetivo»

5. Técnicas de explotación de puertos

Nota: Recomiendo leer un poco acerca del three way handshake, antes de continuar con lo siguiente.

5.1 TCP Connect Scan: Se llama de esta manera, puesto que implementa una llamada al sistema de tipo Connect, para confirmar el estado del puerto. Esta técnica es muy ruidosa, lo cual hace que pueda ser detectada por dispositivos como IDS o Firewall. Sin embargo, es muy efectiva, es decir sus resultados casi siempre son acertados.

TCP Connect: Puerto Cerrado:

6 tcp_connect_Close.png

TCP Connect: Puerto Abierto:

7 tcp_connect_Openpng.png

 

Para los ejemplos mostrare, el comando y la captura en Wireshark:

Comando:

# nmap -sT «direccion ip objetivo» «numero de puerto»

Puerto Cerrado

Veamos de manera practica lo descrito en las imágenes, lo anterior, describe que si el puerto al cual enviamos el Paquete SYN, se encuentra cerrado el responderá con un RST, lo cual cerrara el canal entre ambos host.

El puerto 8080, se encuentra cerrado en este host, como podemos observar a continuación:

8 tcpConnect close.png

Ahora vemos la respuesta del host en Wireshark

9 tcpConnect close Wireshark

Puerto Abierto

En la imagen en la cual describen el funcionamiento de TCP Connect se muestra la respuesta que tendra el host en los puertos abiertos veamos, como se visualiza en Wireshark, dicha respuesta.

10 tcpConnect open Wireshark.png

5.1 TCP SYN Scan: Se envía al objetivo un paquete de inicio de conexión de tipo SYN, Si se recibe como respuesta un RST/ACK, significa que no existe ningún servicio que este activo en este puerto. Diferente es si se recibe un SYN/ACK, esto nos confirma que hay un servicio ejecutandose en el puerto, si este es el caso, se enviará por parte del atacante un paquete RST/ASK para no establecer conexión y no ser registrado por el SO.

Esta técnica no es tan ruidosa, ya que no culmina el proceso de intercambio de tres vías, de esta manera, algunos dispositivos como Firewalls y IDS, no la registraran.

TCP SYN Scan, Puerto Cerrado:

11 SYN scan close.png

TCP SYN Scan, Puerto Abierto:

12 SYN scan open.png

 

Veamos ahora de manera practica, lo descrito en las imágenes anteriores:

Comando:

# nmap -sS «direccion ip objetivo» «numero de puerto»

Puerto Cerrado

En los descrito en la imagen, informa que si el puerto se encuentra cerrado, una vez el atacante envié la trama SYN, el host objetivo responderá con un RST, finalizando la conexión.

13 SYN scan close Kali.png

Ahora vemos la respuesta del host en Wireshark

13 SYN scan close Wireshark

Puerto Abierto

Siguiendo la imagen descrita anteriormente, el host objetivo, responde con una trama SYN/ACK, a la cual se responde con un RST para no culminar el intercambio y evitar ser detectado.

15 SYN scan open Kali.png

y en Wireshark…

16 SYN scan open Wireshark.png

De esta manera finalizamos el post de hoy… Tengo pendiente realizar otro laboratorio de Scannig y de Análisis de vulnerabilidades…

Esten pendientes por favor…

Un Saludo…

NEOX! (me)

Introducción Linux, Kali, comandos básicos Terminal, directorios….

Hola a tod@s….

Contarles que comencé el proceso de certificación CODSP (Certified Offensive and Defensive Security Professional), El cual es dictado por la academia DSTEAM, aqui les dejo la pagina por si quieren mas información, en primer lugar, quiero contarles que la metodología utilizada durante el proceso es muy buena. Esta diseñada para que personas que tienen poco o mucho conocimiento en el tema, la realicen.

Estaré mostrando todas las actividades, talleres, y diferentes retos que se van a realizar durante el proceso de certificación, no importa si son introductorios o complicados.

Como parte del proceso, están los conocimientos básicos en infraestructura y diferentes temas, de los que se deben conocer, para todas las personas que esten intentando hacer parte de esta cultura, de la cual jamas podrán salir, aquí les quiero mostrar cosas básicas que se deben conocer, empecemos por el Sistema Operativo mas utilizado y conocido en esta comunidad, en esta cultura, KALI LINUX (descarga aquí:

Kali 1.0

kali1

Kali 2.0

kali2

Kali Linux trae preinstalados más de 600 programas incluyendo Nmap (escanner de puertos), Wireshark (sniffer), John the Ripper (crackeador de passwords) y la suite Aircrack-ng (software para pruebas de seguridad en redes inalámbricas). Kali puede ser usado desde un Live CD, live-usb y también puede ser instalada como sistema operativo principal (host).

No quiere decir que no existan otras distribuciones para auditorias de seguridad, sin embargo, el proyecto KALI  y su historia, lo ha hecho uno de los mas utilizados en esta comunidad.


Terminal:

terminal

Parte fundamental de todo esto, no solo de ser un Ethical Hacking, o simplemente pertenecer a esta comunidad, es tener amplio manejo en los sistemas Linux, principalmente su terminal (prompt  en windows), ya que es desde aquí, donde se realizan la mayoria de las cosas, aunque muchas herramientas ahora vienen con su interfaz gráfica. Por ejemplo el Framework de Metaesploit, tiene interfaz gráfica en su versión paga (yo no tengo para pagarla XD), entonces utilizo la versión free, la cual se ejecuta desde la consola (MSF).

Aquí, les dejo una lista de comandos básicos con los cuales empezar nuestra practica dentro de la terminal de Linux.

pwd : Muestra en que ruta estamos localizados

cd: Cambio de Directorio

mkdir : Crea un Directorio

ls : Permite listar directorios

cp : Permite copiar archivos

mv : Mover o renombrar archivos

tar  Para Comprimir/Descomprimir Archivos/Copias de Seguridad

rm : Comando para borrar un archivo, o una carpeta.

cat : Permite la visualización de archivos.

clear : Limpia la pantalla (Atajo: ctrl + l)

passwd : Se usa para cambiar el password de un usuario

chmod : Permisos sobre archivos

./nombre_script : Para ejecutar un Script


Continuando con los conocimientos básicos, veremos el manejo de usuarios, dentro de la terminal de Kali usaremos los siguientes comandos:

adduser –home /home/diplomado «nombre de usuario»

1_ adduser

El anterior comando crea un usuario llamado neoxcodsp, el cual va a tener como directorio
de trabajo la ruta /home/codsp . (El sistema solicitara una clave y algunos datos de usuario
opcionales).

Posteriormente asignaremos (o cambiaremos) la contraseña para el usuario creado anteriormente con el siguiente comando:

passwd «nombre de usuario»

2_ passwd

el comando anterior, nos solicitara la nueva contraseña y la confirmación de la misma.

Después, ingresamos con el usuario que creamos desde la terminal, colocando el comando:

login

3_ login

Una vez ejecutemos el comando anterior, nos solicitara el nombre de usuario con el cual deseamos acceder (neoxcodsp) y la contraseña del mismo

Cuando ya estamos «logueados» con el usuario que creamos, utilizaremos el comando

who am i

4_ who am i

Este comando nos indicara el usuario con el que estamos «logueados», y desde que fecha fue creado.

Para finalizar, utilizaremos el comando que nos permitirá «cerrar la sesión» en dicha terminal del usuario con el cual estábamos logueados.

exit

5_ exit


Siguiendo nuestro post de introducción, continuaremos con los comandos para el manejo de directorios, en los cuales estudiamos la creación y navegación de los mismos:

En una nueva terminal…

comenzaremos utilizando el comando:

pwd

6_ pwd

El cual nos permitirá saber en que ruta (directorio) nos encontramos actualmente, en la imagen anterior, vemos que nos encontramos en el directorio /root.

Continuaremos ahora con el comando siguiente, el cual nos permite cambiar o navegar entre directorios,

cd

Para este ejemplo, navegaremos desde el /root (ubicación actual), hasta el siguiente directorio /usr/share/metasploit-framework

7_ cd

Nota: La terminal de linux, tiene la opción de «autocompletar». En el ejemplo anterior, podríamos escribir el siguiente comando:

cd /usr/ + TAB

8_ cd tab

Al presionar TAB, la terminal nos traerá las diferentes opciones o directorios existentes dentro de la carpeta usr. Para aprender el uso de esta técnica, se deben realizar diferentes ejercicios presionándola sin haber escrito todo el nombre del directorio, y escribiendolo por completo, para entender su funcionamiento.

Siguiendo con el ejemplo anterior, una vez estemos situados en /usr/share/metasploit-framework , presionaremos el siguiente comando:

ls -l

9_ ls -l

Este comando nos permitira listar lo que contiene el directorio en el cual nos encontramos, la opción «-l»; nos muestra los permisos que posee en cada uno de ellos.

Ahora nos ubicaremos en la raiz del equipo utilizando el comando cd /, y posteriormente ingresaremos al directorio /tmp

10_ cd tmp

Dentro de el, vamos a crear la siguiente estructura de directorios:

11_ ruta

Para crear una nueva carpeta dentro del directorio en el que ya nos encontramos (tmp) debemos utilizar el siguiente comando:

mkdir «nombre de carpeta»

11_ mkdir

En el comando anterior, creamos la carpeta o el directorio «Hacking«, una vez dentro de este (cd Hacking), creamos la estructura descrita anteriormente.

Aquí les dejo los comandos utilizados para la creación de ella:

12_ construccion

En la imagen anterior, también podemos evidenciar el uso del comando «cd ..», el cual nos permite regresar al directorio anterior.

Como lo vemos en la estructura de directorios, debemos crear un archivo llamado clase.txt, dentro del directorio superscan, para este proceso, nos ubicaremos dentro del directorio y usaremos el siguiente comando:

nano «nombre del archivo»

13_ nano

Una vez ejecutemos este comando se abrirá algo similar a un bloc de notas en Windows dentro de nuestra terminal, el cual nos permitirá editar nuestro archivo .txt

14_ nano

Una vez finalizamos la edición de nuestro archivo, en la parte inferior nos aparecen las opciones que tenemos, utilizaremos CTRL + X, el cual indica «SALIR», después nos preguntara si deseamos guardar los cambios, presionamos yes/si para salvar los cambios realizados.

Ahora, continuemos con la visualización  de los archivos que acabamos de crear, para ello linux cuenta con la herramienta CAT, a continuación veamos su funcionamiento:

cat «nombre del archivo»

15_ cat

En la imagen anterior, vemos lo que contiene el archivo .txt, utilizando la herramienta cat.

Siguiendo con nuestra «clase», continuemos ahora con el siguiente comando, el cual nos permite copiar los archivos.

cp «archivo/directorio fuente» «archivo/directorio destino»

Para este ejercicio, copiamos el archivo llamado nc.exe, el cual esta localizado en la ruta /usr/share/windows-binaries y copiarlo  a la ruta /tmp/hacking/footprinting/googlehacking/dns

16_ cp

En el ejercicio anterior, quiero mostrar que no es necesario encontrarse en el directorio en el cual se encuentra el archivo que deseamos copiar, sino también, podemos poner la ruta que conlleva al archivo seguida de la ruta de destino.

Para el siguiente ejercicio, utilizaremos un comando que nos permitirá buscar o localizar un archivo o directorio

locate «nombre de archivo/directorio»

17_ locate

En la imagen anterior vemos los directorios en los cuales se encuentra el archivo nc.exe.


De esta manera hemos terminado la introducción y la explicación de algunos conocimientos básicos que se deben tener… Estaré postiando otras cosas que seguro serán de su interes.

Que tengan una excelente noche…

Neox…