From bae9018e6fc64e6941129d117fbd7c2fa96db461 Mon Sep 17 00:00:00 2001 From: Manuel Vergara Date: Tue, 6 Jun 2023 21:06:43 +0200 Subject: [PATCH] Add exercise 7 by script-hacking course Signed-off-by: Manuel Vergara --- scripts-hacking-etico/README.md | 64 +++++++++++++++--- scripts-hacking-etico/img/03.png | Bin 0 -> 7556 bytes scripts-hacking-etico/img/04.png | Bin 0 -> 25465 bytes scripts-hacking-etico/src/06-scapy.py | 12 ++++ .../src/07-cryptography-dec.py | 19 ++++++ scripts-hacking-etico/src/07-cryptography.py | 26 +++++++ 6 files changed, 111 insertions(+), 10 deletions(-) create mode 100644 scripts-hacking-etico/img/03.png create mode 100644 scripts-hacking-etico/img/04.png create mode 100644 scripts-hacking-etico/src/06-scapy.py create mode 100644 scripts-hacking-etico/src/07-cryptography-dec.py create mode 100644 scripts-hacking-etico/src/07-cryptography.py 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 0000000000000000000000000000000000000000..7f0f71fa2b0fd2bd54b2b24c0bf7a462b86b6084 GIT binary patch literal 7556 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