Curso de Python Avanzado para Proyectos de Seguridad (Programa detallado)

Objetivo:

El objetivo del curso es capacitar a aquellos interesados en 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.

Aprenderemos a utilizar Python como lenguaje de programación no solo para poder construir programas sino también para automatizar y especificar muchas de las tareas que se realizan durante un proceso de pentesting.

Los objetivos generales del curso serían:

  1. Aprender a crear scripts en Python con el objetivo de automatizar tareas de pentesting.

  2. Aprender las principales librerías disponibles en Python a la hora de desarrollar herramientas enfocadas a la seguridad.

  3. Aprender una metodología que permita escribir código en Python para realizar un proceso de pentesting.

  4. Aprender a desarrollar mediante programación en Python sus propias herramientas que se utilizan en un proceso de Ethical Hacking.

  5. Aprender a automatizar tareas de análisis y extracción de información de servidores.

  6. Fomentar el interés por la investigación y la seguridad informática.

Dirigido a:

Desarrolladores con conocimientos básicos en Python.

Es recomendable que el alumno tenga unas bases del lenguaje y unos conocimientos básicos de programación orientada a objetos, estructuras de datos y manejo de ficheros.

Requisitos:

Es recomendable que el alumno tenga conocimientos sobre el lenguaje de programación Python y disponga del intérprete con la versión de Python 3.8 instalada en su sistema.

PROGRAMA DEL CURSO

1.- Trabajando con sockets en Python

Objetivo

Al finalizar esta unidad, el alumno conocerá el módulo sockets para realizar peticiones de red, resolver un dominio a partir de una dirección ip y viceversa, implementar un escáner de puertos y crear su propio servidor http para atender peticiones.

Contenido

  1. Trabajando con sockets en Python
    1. Introducción a python para proyectos de seguridad
    2. Introducción a los sockets
    3. Recopilación de información con sockets
    4. Implementar en Python un escáner de puertos con sockets
    5. Implementar en Python un servidor HTTP
    6. Resumen

2.- Aplicaciones clientes-servidor con sockets en Python

Objetivo

Al finalizar esta unidad, el alumno conocerá el módulo sockets para implementar una aplicación cliente-servidor para el paso de mensajes y obtener una shell inversa en Python.

Contenido

  1. Aplicaciones clientes-servidor con sockets en python
    1. Métodos para enviar y recibir datos entre un cliente y un servidor
    2. Creando un cliente y un servidor TCP con sockets
    3. Shell inversa con sockets
    4. Resumen

3.- Módulos para realizar peticiones con Python

Objetivo

Al finalizar esta unidad, el alumno conocerá los principales módulos disponibles tanto en la librería estándar como en forma de módulo para realizar peticiones a un sitio web y una API REST.

Contenido

  1. Módulos para realizar peticiones con Python
    1. Protocolo HTTP y creación de clientes HTTP en python
    2. Construyendo un cliente HTTP con urllib.request
    3. Crear un cliente HTTP con requests
    4. Resumen

4.- Recolección de información de servidores con Python

Objetivo

Al finalizar esta unidad, el alumno conocerá los principales módulos disponibles en Python con el objetivo de extraer información de servidores y servicios que están ejecutando, así como información como nombres de dominio y banners. Con las herramientas que estudiaremos podemos sacar información que nos puede resultar útil para fases posteriores en nuestro proceso de pentesting o auditoría.

Contenido

  1. Recolección de información de servidores con Python
    1. Utilizando Shodan para la obtención de información de un servidor
    2. Utilizando Python para realizar búsquedas en Shodan
    3. Utilizando el registro Whois para obtener información de un servidor
    4. Extracción de información de servidores DNS
    5. Resumen

5.- Extracción de metadatos con Python

Objetivo

Al finalizar esta unidad, el alumno conocerá los principales módulos disponibles en Python con el objetivo automatizar la extracción de metadatos de documentos e imágenes. El proceso de extracción de información permite recoger metadatos de documentos y en ocasiones también es posible obtener la ubicación geográfica o el autor del documento.

Contenido

  1. Extracción de metadatos con Python
    1. Obtener información geográfica acerca de la localización de un servidor
    2. Extracción de metadatos en documentos con el módulo PyPDF2
    3. Extracción de metadatos en imágenes
    4. Resumen

6.- WebScraping con Python

Objetivo

Al finalizar esta unidad, el alumno conocerá los principales módulos disponibles en Python con el objetivo automatizar la extracción de información de un sitio web. Si queremos extraer el contenido de una página web automatizando la extracción de información, muchas veces nos encontramos con que la página web no ofrece ninguna API para obtener los datos que necesitas y es necesario recurrir a técnicas de scraping para recuperar datos de una web de forma automática. Algunas de las herramientas más potentes, las podemos encontrar en Python, entre las que podemos destacar BeautifulSoup y Scrapy.

Contenido

  1. Web Scraping con Python
    1. Extracción de contenidos web con Python
    2. Extraer contenido y etiquetas con BeautifulSoup
    3. Extracción de imágenes y enlaces con el módulo bs4
    4. Resumen

7.- WebScraping avanzado con Scrapy

Objetivo

Al finalizar esta unidad, el alumno conocerá Scrapy como framework para extraer información de sitios web de forma automática mediante la creación de spyders. Scrapy también permite exportar los datos extraídos en diferentes formatos como csv, xml y json con el objetivo de analizar estos datos posteriormente.

Contenido

  1. Web Scraping avanzado con Scrapy
    1. Arquitectura e instalación de Scrapy
    2. Scrapy como framework de desarrollo de spyders
    3. Proyecto Scrapy para extraer las conferencias europython
    4. Resumen

8.- Escaneo de puertos y redes con Python

Objetivo

Al finalizar esta unidad, el alumno conocerá los principales módulos disponibles en Python con el objetivo automatizar los procesos de escáner de puertos y redes. Algunas de las herramientas que permiten realizar un escáner de puertos y automatizar la detección de servicios y puertos abiertos, las podemos encontrar en Python, entre las que podemos destacar Python-nmap. También usaremos nmap para detectar vulnerabilidades en servicios específicos gracias a los scripts de nmap.

Contenido

  1. Escaneo de puertos y redes con python
    1. Nmap como herramienta de escáner de puertos
    2. Escaneo de puertos con Python-nmap
    3. Ejecutar scripts de nmap para detectar servicios y vulnerabilidades
    4. Obtener las máquinas activas de un segmento de red
    5. Resumen

9.- Conexiones con servidores FTP, SFTP, SSH desde Python

Objetivo

Al finalizar esta unidad, el alumno conocerá los principales módulos disponibles en Python con el objetivo automatizar los procesos de conexión a un servidor FTP, SFTP y SSH. Algunas de las herramientas que permiten conectarnos con estos servidores las podemos encontrar en Python, entre las que podemos destacar FTPLib y Paramiko.

Contenido

  1. Conexiones con servidores FTP, SFTP, SSH desde Python
    1. Conexiones con servidores FTP utilizando el módulo ftplib
    2. Conexión con servidores SSH utilizando paramiko
    3. Proceso de fuerza bruta contra un servidor SSH
    4. Resumen

10.- Análisis de vulnerabilidades en aplicaciones web con Python

Objetivo

Al finalizar esta unidad, el alumno conocerá las principales herramientas desarrolladas por la comunidad de Python con el objetivo de detectar vulnerabilidades en aplicaciones web como sql injection y cross site scripting utilizando la metodología OWASP. Se estudiarán con detalle las herramientas sqlmap y bandit para detectar vulnerabilidades en sitios web y aplicaciones desarrolladas en Python.

Contenido

  1. Análisis de vulnerabilidades en aplicaciones web con Python
    1. Introducción a la metodología OWASP
    2. Introducción a la herramienta sqlmap para detectar vulnerabilidades del tipo sql injection
    3. Introducción a la herramienta bandit para detectar vulnerabilidades en proyectos de python
    4. Detectar vulnerabilidades en sitios web con herramientas automáticas
    5. Resumen