¡Esta es una revisión vieja del documento!
Tabla de Contenidos
Python avanzado para proyectos de seguridad
Notas del curso Python avanzado para proyectos de seguridad del Clúster Tic de Galicia.
- Horas: 35
- Fecha Inicio: 11/11/2024
- Fecha Fin: 13/12/2024
Objetivo general
Ampliar los conocimientos sobre Python, librerías y módulos que disponemos para realizar tareas relacionadas con peticiones, obtención de información, conexión con servidores o testeo de la seguridad de un sitio web.
Objetivos específicos
- Aprender a crear scripts en Python con el objetivo de automatizar tareas de pentesting.
- Aprender las principales librerías disponibles en Python a la hora de desarrollar herramientas enfocadas a la seguridad.
- Aprender una metodología que permita escribir código en Python para realizar un proceso de pentesting.
- Aprender a desarrollar mediante programación en Python sus propias herramientas que se utilizan en un proceso de Ethical Hacking.
- Aprender a automatizar tareas de análisis y extracción de información de servidores.
- Fomentar el interés por la investigación y la seguridad informática
Temario
1. Trabajando con sockets en Python
2. Aplicaciones cliente-servidor con sockets en Python
3. Módulos para realizar peticiones con Python
4. Recolección de información de servidores con Python
5. Extracción de metadatos con Python
WEBSCRAPING CON PYTHON
- Extracción de contenidos web con Python
- Extraer contenido y etiquetas con BeautifulSoup
- Extracción de imágenes y enlaces con el módulo bs4
7. WEBSCRAPING AVANZADO CON SCRAPY
- Arquitectura e instalación de Scrapy
- Scrapy como framework de desarrollo de spyders
- Proyecto Scrapy para extraer las conferencias europython
8. ESCANEO DE PUERTOS Y REDES CON PYTHON
- Nmap como herramienta de escáner de puertos
- Escaneo de puertos con Python-nmap
- Ejecutar scripts de nmap para detectar servicios y vulnerabilidades
- Obtener las máquinas activas de un segmento de red
9. CONEXIONES CON SERVIDORES FTP, SFTP, SSH DESDE PYTHON
- Conexiones con servidores FTP utilizando el módulo ftplib
- Conexión con servidores SSH utilizando paramiko
- Proceso de fuerza bruta contra un servidor SSH
10. ANÁLISIS DE VULNERABILIDADES EN APLICACIONES WEB CON PYTHON
- Introducción a la metodología OWASP
- Introducción a la herramienta sqlmap para detectar vulnerabilidades del tipo sql injection
- Introducción a la herramienta bandit para detectar vulnerabilidades en proyectos de python
- Detectar vulnerabilidades en sitios web con herramientas automáticas
Cuestionarios
Prueba inicial de conocimientos
¿Qué es un socket en el contexto de la programación de redes en Python?
- Un archivo de texto.
- Un canal de comunicación punto a punto entre un cliente y un servidor. (Correcto)
- Un servidor web.
- Una base de datos.
¿Qué módulo de Python es utilizado para automatizar la creación de un servidor HTTP?
- socket. (Correcto)
- os.
- sys.
- requests.
El método socket.accept() permite aceptar conexiones de un cliente en un servidor.
- Verdadero. (Correcto)
- Falso.
El método socket.recv() se utiliza para recibir datos de un cliente en un servidor Python.
- Verdadero. (Correcto)
- Falso.
¿Qué método se utiliza en Python para implementar un escáner de puertos?
- bind().
- listen().
- connect_ex(). (Correcto)
- send().
La familia de sockets AF_INET se utiliza para las direcciones IPv6.
- Verdadero.
- Falso.
¿Qué hace el método sendall() en un socket de Python?
- Envía todos los datos al servidor.
- Envía todos los datos en el buffer al cliente. (Correcto)
- Recibe datos del cliente.
- Cierra la conexión.
El código de estado HTTP 200 indica que la petición fue exitosa.
- Verdadero. (Correcto)
- Falso.
¿Cuál es el principal objetivo del módulo requests en Python?
- Crear servidores web.
- Realizar peticiones HTTP a sitios web. (Correcto)
- Enviar correos electrónicos.
- Manejar excepciones de conexión.
Scrapy permite exportar datos extraídos de un sitio web en formatos JSON, CSV y XML.
- Verdadero. (Correcto)
- Falso.
Trabajando con sockets en Python
Los sockets en Python permiten la comunicación entre procesos en la misma máquina o en máquinas diferentes.
- Verdadero. (Correcto)
- Falso.
¿Qué método de socket convierte un nombre de host en una dirección IPv4?
gethostbyaddr().gethostbyname(). (Correcto)getfqdn().getservbyport().
¿Qué protocolo es utilizado por los sockets de flujo en Python?
- UDP.
- ICMP.
- TCP. (Correcto)
- HTTP.
¿Qué método en Python se utiliza para resolver un nombre de dominio a partir de una dirección IP?
gethostbyname().getfqdn().gethostbyaddr(). (Correcto)connect_ex().
El método socket.getservbyport() permite obtener el nombre de un puerto a partir de su número.
- Verdadero. (Correcto)
- Falso.
¿Qué hace la función socket.send() en un servidor HTTP implementado en Python?
- Recibe datos de un cliente.
- Conecta el servidor con el cliente.
- Envía datos al cliente. (Correcto)
- Cierra la conexión con el cliente.
¿Qué tipo de socket se utiliza para trabajar con UDP en Python?
- SOCK_DGRAM. (Correcto)
- SOCK_STREAM.
- AF_INET.
- AF_INET6.
¿Qué método se utiliza para escuchar conexiones entrantes en un servidor en Python?
bind().listen(). (Correcto)recv().accept().
¿Qué función de socket permite la búsqueda inversa de una dirección IP?
gethostbyname().gethostbyaddr(). (Correcto)getfqdn().connect_ex().
¿Qué protocolo utiliza el socket AF_INET en Python?
- UDP.
- ICMP.
- TCP. (Correcto)
- FTP.
Examen 2
¿Qué método del módulo socket se utiliza para recibir datos desde un cliente? Pregunta 1 Respuesta a. send(). b. connect(). c. recv(). d. accept(). Retroalimentación La respuesta correcta es: recv(). Pregunta 2 Correcta Se puntúa 1,00 sobre 1,00 Marcar pregunta Enunciado de la pregunta El método bind() en el servidor permite asociar una dirección IP y un puerto con un socket. Pregunta 2 Respuesta a. Verdadero. b. Falso. Retroalimentación La respuesta correcta es: Verdadero. Pregunta 3 Correcta Se puntúa 1,00 sobre 1,00 Marcar pregunta Enunciado de la pregunta ¿Qué método del módulo socket en Python permite conectar un cliente a un servidor? Pregunta 3 Respuesta a. connect(). b. bind(). c. listen(). d. close(). Retroalimentación La respuesta correcta es: connect(). Pregunta 4 Correcta Se puntúa 1,00 sobre 1,00 Marcar pregunta Enunciado de la pregunta Identifica las funciones clave del módulo requests en Python. (Respuesta múltiple). Pregunta 4 Respuesta a. get(). b. post(). c. send(). d. bind(). Retroalimentación Las respuestas correctas son: get()., post(). Pregunta 5 Correcta Se puntúa 1,00 sobre 1,00 Marcar pregunta Enunciado de la pregunta ¿Qué herramienta se describe como el «Google de los hackers» debido a su capacidad para rastrear servidores y dispositivos conectados a Internet? Pregunta 5 Respuesta a. Nmap. b. Wireshark. c. Shodan. d. Burp Suite. Retroalimentación La respuesta correcta es: Shodan. Pregunta 6 Correcta Se puntúa 1,00 sobre 1,00 Marcar pregunta Enunciado de la pregunta ¿Qué información puede proporcionar el servicio WHOIS? Pregunta 6 Respuesta a. Información de registro de un dominio. b. Dirección IP de un servidor. c. Contenidos de un servidor web. d. Lista de puertos abiertos. Retroalimentación La respuesta correcta es: Información de registro de un dominio. Pregunta 7 Correcta Se puntúa 1,00 sobre 1,00 Marcar pregunta Enunciado de la pregunta La API de Shodan permite buscar información sobre servidores y dispositivos conectados a Internet utilizando filtros como el número de puerto. Pregunta 7 Respuesta a. Verdadero. b. Falso. Retroalimentación La respuesta correcta es: Verdadero. Pregunta 8 Correcta Se puntúa 1,00 sobre 1,00 Marcar pregunta Enunciado de la pregunta ¿Qué es el código 404 en una respuesta HTTP? Pregunta 8 Respuesta a. Recurso no encontrado. b. Petición exitosa. c. Error del servidor. d. Petición redirigida. Retroalimentación La respuesta correcta es: Recurso no encontrado. Pregunta 9 Correcta Se puntúa 1,00 sobre 1,00 Marcar pregunta Enunciado de la pregunta ¿Qué módulo en Python se utiliza para realizar consultas WHOIS de dominios? Pregunta 9 Respuesta a. python-whois. b. urllib3. c. requests. d. socket. Retroalimentación La respuesta correcta es: python-whois. Pregunta 10 Correcta Se puntúa 1,00 sobre 1,00 Marcar pregunta Enunciado de la pregunta ¿Qué función se utiliza para obtener los metadatos de un archivo PDF en Python? Pregunta 10 Respuesta a. pdfinfo(). b. get_pdf_data(). c. PdfFileReader(). d. fetch_pdf().
