diff --git a/scripts-hacking-etico/README.md b/scripts-hacking-etico/README.md index 3b85644..e45aeab 100644 --- a/scripts-hacking-etico/README.md +++ b/scripts-hacking-etico/README.md @@ -28,16 +28,16 @@ Ten en cuenta que este ejercicio es solo una simulación y no debe utilizarse pa ## Ejercicios propuestos por copilot -- **Ejercicio 1**: instalar la biblioteca de Python `python-nmap` y realizar un escaneo de puertos a la dirección IP `192.168.1.1` -- **Ejercicio 2**: instalar la biblioteca de Python `impacket` y realizar un escaneo de puertos a la dirección IP `192.168.1.1` -- **Ejercicio 3**: instalar la biblioteca de Python `requests` y realizar una solicitud HTTP a la dirección URL `proof.local` -- **Ejercicio 4**: instalar la biblioteca de Python `twisted` y crear un servidor de chat que permita a los usuarios enviar mensajes a todos los demás usuarios conectados -- **Ejercicio 5**: instalar la biblioteca de Python `faker` y generar 10 nombres aleatorios -- **Ejercicio 6**: instalar la biblioteca de Python `scapy` y crear un paquete de red personalizado que contenga un mensaje de texto -- **Ejercicio 7**: instalar la biblioteca de Python `cryptography` y encriptar el mensaje `` -- **Ejercicio 8**: instalar la biblioteca de Python `pwntools` y crear un exploit que permita a un usuario ejecutar comandos en un servidor remoto -- **Ejercicio 9**: instalar la biblioteca de Python `paramiko` y crear un cliente SSH que permita a un usuario ejecutar comandos en un servidor remoto -- **Ejercicio 10**: instalar la biblioteca de Python `pylibnet` y crear un paquete de red personalizado que contenga un mensaje de texto +- **Ejercicio 1**: instalar la biblioteca de Python `python-nmap` y realizar un escaneo de puertos a la dirección IP `192.168.1.1`. +- **Ejercicio 2**: instalar la biblioteca de Python `impacket` y realizar un escaneo de puertos a la dirección IP `192.168.1.1`. +- **Ejercicio 3**: instalar la biblioteca de Python `requests` y realizar una solicitud HTTP a la dirección URL `proof.local`. +- **Ejercicio 4**: instalar la biblioteca de Python `twisted` y crear un servidor de chat que permita a los usuarios enviar mensajes a todos los demás usuarios conectados. +- **Ejercicio 5**: instalar la biblioteca de Python `faker` y generar 10 nombres aleatorios. +- **Ejercicio 6**: instalar la biblioteca de Python `scapy` y crear un paquete de red personalizado que contenga un mensaje de texto. +- **Ejercicio 7**: instalar la biblioteca de Python `cryptography` y encriptar un mensaje. +- **Ejercicio 8**: instalar la biblioteca de Python `pwntools` y crear un exploit que permita a un usuario ejecutar comandos en un servidor remoto. +- **Ejercicio 9**: instalar la biblioteca de Python `paramiko` y crear un cliente SSH que permita a un usuario ejecutar comandos en un servidor remoto. +- **Ejercicio 10**: instalar la biblioteca de Python `pylibnet` y crear un paquete de red personalizado que contenga un mensaje de texto. --- @@ -193,6 +193,11 @@ En este ejercicio, utilizamos la biblioteca scapy para crear un paquete de red p Finalmente, utilizamos la función send de scapy.all para enviar el paquete a la red. +Antes de nada se debe instalar la dependencia: +```shell +pip install scapy +``` + ```python from scapy.all import * @@ -203,18 +208,36 @@ packet = IP(dst="192.168.1.1")/ICMP()/"Hola, este es un mensaje" send(packet) ``` +Para mostrar los mensajes ICMP entrantes, puedes utilizar el comando tcpdump en la línea de comandos: + +```shell +sudo tcpdump -X icmp +``` +![](img/03.png) + #### Solución ejercicio 7: En este ejercicio, utilizamos la biblioteca cryptography para encriptar un mensaje utilizando el algoritmo de cifrado Fernet. Generamos una clave de cifrado utilizando Fernet.generate_key(). Luego, creamos un objeto Fernet con la clave generada. Definimos un mensaje en la variable message y utilizamos el método encrypt del objeto Fernet para encriptar el mensaje. El mensaje encriptado se almacena en la variable encrypted_message. Finalmente, imprimimos el mensaje encriptado. +Antes de nada se debe instalar la dependencia: +```shell +pip install cryptography +``` + ```python from cryptography.fernet import Fernet # Generar una clave de cifrado key = Fernet.generate_key() +print(f"Clave de cifrado generada: {key}") + +# O utilizar una clave de cifrado ya generada + +# key = b'Qd4u32ZW-C3DlWs35tvhgiPUHYP4YmlAfUBAV9EFlBs=' + # Crear un objeto Fernet con la clave generada cipher = Fernet(key) @@ -228,6 +251,27 @@ encrypted_message = cipher.encrypt(message) print(f"Mensaje encriptado: {encrypted_message}") ``` +Para desencriptar es así: + +```python +from cryptography.fernet import Fernet + +key = "" # Añadir la clave de cifrado generada anteriormente + +# Crear un objeto Fernet con la clave +cipher = Fernet(key) + +# Mensaje encriptado +encrypted_message = "" # Añadir el mensaje encriptado + +# Desencriptar el mensaje +decrypted_message = cipher.decrypt(encrypted_message) + +# Imprimir el mensaje desencriptado +print(f"Mensaje desencriptado: {decrypted_message}") +``` +![](img/04.png) + #### Solución ejercicio 8: En este ejercicio, utilizamos la biblioteca pwntools para crear un exploit que se conecta a un servidor remoto y ejecuta comandos. Utilizamos la función remote para establecer la conexión con la dirección IP del servidor y el puerto especificado. diff --git a/scripts-hacking-etico/img/03.png b/scripts-hacking-etico/img/03.png new file mode 100644 index 0000000..7f0f71f Binary files /dev/null and b/scripts-hacking-etico/img/03.png differ diff --git a/scripts-hacking-etico/img/04.png b/scripts-hacking-etico/img/04.png new file mode 100644 index 0000000..56d6694 Binary files /dev/null and b/scripts-hacking-etico/img/04.png differ diff --git a/scripts-hacking-etico/src/06-scapy.py b/scripts-hacking-etico/src/06-scapy.py new file mode 100644 index 0000000..1861e8d --- /dev/null +++ b/scripts-hacking-etico/src/06-scapy.py @@ -0,0 +1,12 @@ +""" +Instalar la biblioteca de Python `scapy` +y crear un paquete de red personalizado +que contenga un mensaje de texto +""" +from scapy.all import * + +# Crear un paquete IP con un mensaje de texto +packet = IP(dst="192.168.1.1")/ICMP()/"Hola, este es un mensaje de prueba" + +# Enviar el paquete +send(packet) diff --git a/scripts-hacking-etico/src/07-cryptography-dec.py b/scripts-hacking-etico/src/07-cryptography-dec.py new file mode 100644 index 0000000..9d8215a --- /dev/null +++ b/scripts-hacking-etico/src/07-cryptography-dec.py @@ -0,0 +1,19 @@ +""" +Desencriptar mensaje anterior +""" + +from cryptography.fernet import Fernet + +key = b'GccwcTdrJaoP7z26l2rZHAITi7CZrreIAqwb3X2Lq8s=NO' + +# Crear un objeto Fernet con la clave +cipher = Fernet(key) + +# Mensaje encriptado +encrypted_message = b'gAAAAABkf4K73Fl-2ZZlYkVhntF5YPcjIXx3zSkYx2lKdpxh5r8nv0zpBLOOtzCkOxMjX8mSx18hMbV5AwZZg1HAJKOskntvBAyiQmqtXbHLe18L5tiU2uw=' + +# Desencriptar el mensaje +decrypted_message = cipher.decrypt(encrypted_message) + +# Imprimir el mensaje desencriptado +print(f"Mensaje desencriptado: {decrypted_message}") diff --git a/scripts-hacking-etico/src/07-cryptography.py b/scripts-hacking-etico/src/07-cryptography.py new file mode 100644 index 0000000..3fc1593 --- /dev/null +++ b/scripts-hacking-etico/src/07-cryptography.py @@ -0,0 +1,26 @@ +""" +Instalar la biblioteca de Python `cryptography` +y encriptar un mensaje. +""" +from cryptography.fernet import Fernet + +# Generar una clave de cifrado +key = Fernet.generate_key() + +print(f"Clave de cifrado generada: {key}") + +# O utilizar una clave de cifrado ya generada + +# key = b'Qd4u32ZW-C3DlWs35tvhgiPUHYP4YmlAfUBAV9EFlBs=' + +# Crear un objeto Fernet con la clave generada +cipher = Fernet(key) + +# Mensaje a encriptar +message = b"Hola, este es un mensaje" + +# Encriptar el mensaje +encrypted_message = cipher.encrypt(message) + +# Imprimir el mensaje encriptado +print(f"Mensaje encriptado: {encrypted_message}")