Add exercise 7 by script-hacking course

Signed-off-by: Manuel Vergara <manuel@vergaracarmona.es>
This commit is contained in:
Manuel Vergara 2023-06-06 21:06:43 +02:00
parent 56e63522ac
commit bae9018e6f
6 changed files with 111 additions and 10 deletions

View File

@ -28,16 +28,16 @@ Ten en cuenta que este ejercicio es solo una simulación y no debe utilizarse pa
## Ejercicios propuestos por copilot ## 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 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 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 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 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 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 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 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 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 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 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. 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 ```python
from scapy.all import * from scapy.all import *
@ -203,18 +208,36 @@ packet = IP(dst="192.168.1.1")/ICMP()/"Hola, este es un mensaje"
send(packet) 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: #### 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. 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. 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 ```python
from cryptography.fernet import Fernet from cryptography.fernet import Fernet
# Generar una clave de cifrado # Generar una clave de cifrado
key = Fernet.generate_key() 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 # Crear un objeto Fernet con la clave generada
cipher = Fernet(key) cipher = Fernet(key)
@ -228,6 +251,27 @@ encrypted_message = cipher.encrypt(message)
print(f"Mensaje encriptado: {encrypted_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: #### 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. 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.

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

View File

@ -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)

View File

@ -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}")

View File

@ -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}")