¡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
- Crear un cliente HTTP con requests
4. RECOLECCIÓN DE INFORMACIÓN DE SERVIDORES CON PYTHON
- Utilizando Shodan para la obtención de información de un servidor
- Utilizando Python para realizar búsquedas en Shodan
- Utilizando el registro Whois para obtener información de un servidor
- Extracción de información de servidores DNS
5. EXTRACCIÓN DE METADATOS CON PYTHON
- Obtener información geográfica acerca de la localización de un servidor
- Extracción de metadatos en documentos con el módulo PyPDF2
- Extracción de metadatos en imágenes
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.
