Python avanzado para proyectos de seguridad

Documentos del curso

python-avanzado-para-proyectos-de-seguridad  

python-avanzado-para-proyectos-de-seguridad -Document2 

Enfoque

Course File webcurso_cimage16010286923739.jpg

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.

Temario 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

Trabajando con sockets en Python

Introducción a python para proyectos de seguridad

Introducción a los sockets

Sockets de red en Python

Módulo socket en python

Recopilación de información con sockets

Ejemplo para los métodos de socket

Búsqueda inversa

Implementar en Python un escáner de puertos con sockets

Método connect_ex()

Escáner de puertos con sockets

Explicación función escáner de puertos

Escáner de puertos avanzado

Ejecución escáner de puertos avanzado

Escáner de puertos a partir de un dominio

Función principal escáner de puertos a partir de un dominio

Implementar en Python un servidor HTTP

Métodos de socket del servidor

Implementación del servidor

Probando el servidor creando un cliente HTTP

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

Aplicaciones clientes-servidor con sockets en python

Métodos para enviar y recibir datos entre un cliente y un servidor

 Métodos de socket del servidor

Métodos de socket del cliente

Cliente básico con el módulo de socket

Administrar excepciones de socket

Creando un cliente y un servidor TCP con sockets

Métodos para aceptar conexiones

Enviar y recibir datos del socket

Implementando el servidor TCP

Implementando el cliente TCP

Shell inversa con sockets

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

Módulos para realizar peticiones con Python

Protocolo HTTP y creación de clientes HTTP en python

Introducción al protocolo HTTP

Módulo http.client

Construyendo un cliente HTTP con urllib.request

Ejemplo con el método urlopen()

Objeto de respuesta

Códigos de estado

Manejo de excepciones con urllib.request

Comprobación de cabeceras HTTP con urllib.request

Ejecución del script

Personalización de cabeceras con urllib

Obtener correos electrónicos de una URL con urllib.request

Obtener enlaces de una URL con urllib.request

Módulo urllib3

Crear un cliente HTTP con requests

Introducción al módulo requests

Comprobar respuesta de una petición

Obtener el fichero robots.txt de un dominio con el módulo requests

Obtener cabeceras con el módulo requests

Ventajas del módulo requests

Realizar peticiones GET a una API REST

Realizar peticiones POST a una API REST

Realizar peticiones mediante un proxy

Gestionar excepciones con el módulo requests

Ejemplo script para tratar excepciones

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

Recolección de información de servidores con Python

Utilizando Shodan para la obtención de información de un servidor

Diferencias entre Shodan y otros buscadores

Extensión de Google Chrome

 Filtros en Shodan

Servicios de Shodan

Registro en Shodan

Utilizando Python para realizar búsquedas en Shodan

Shodan API REST

Acceso a Shodan desde Python

Shodanploit

Búsquedas de Shodan en python

Realizar búsquedas por un host determinado

Ejecución ShodanSearch

Utilizando Shodan para la obtención de información de un servidor FTP

Shodan eye

Consultas sin API Key

Utilizando el registro Whois para obtener información de un servidor

Servicios whois

Obtener información de un dominio con el servicio domaintools

Módulo python-whois

Módulo ipwhois

Extracción de información de servidores DNS

Servidores DNS

Módulo DNSPython

Determinar el destino de un registro MX y su preferencia

Implementar un cliente consulta de registros DNS

Añadiendo tratamiento de excepciones a la consulta de registros DNS

Otras operaciones con el módulo dnspython

Búsqueda inversa

 Servicios DNS

DNSLookup

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

Extracción de metadatos con Python

Obtener información geográfica acerca de la localización de un servidor

Servicio de geolocalización freegeoip

Módulos de geolocalización en python

Métodos de Pygeoip

Geolocalización con la base de datos MaxMind

Geolocalización con geoip2-python

Geolocalización con maxminddb-geolite2

Geolocalización con python-geoip-python3

Extracción de metadatos en documentos con el módulo PyPDF2

Obtención de metadatos con PdfFileReader

Extraer información y metadatos XMP de documentos PDF

Extraer imágenes de un documento PDF

Otras herramientas

Extracción de metadatos en imágenes

Extracción de metadatos con el módulo PIL.ExifTags

Obtener los metadatos EXIF de una imagen

Obteniendo geolocalización

Extraer metadatos de imágenes web

Extrayendo metadatos de las imágenes descargadas

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

Web Scraping con Python

Extracción de contenidos web con Python

Parsers XML y HTML

Submódulo lxml.html

Extraer etiquetas de un sitio web con el módulo lxml

Obtener formularios de un sitio web

Expresiones xpath

Ejemplo de script utilizando expresiones xpath

Extracción de enlaces con el módulo lxml con expresiones xpath

Extracción de documentos pdf con el módulo lxml con expresiones xpath

Extraer contenido y etiquetas con BeautifulSoup

Método find_all() de BeautifulSoup

Extracción de etiquetas meta

Extracción de contenido mediante expresiones regulares

Manejo de excepciones de URL y etiquetas no encontradas

Extracción de imágenes y enlaces con el módulo bs4

Extraer enlaces a partir de una url con BeautifulSoup

Implementar un crawler de enlaces a partir de una url

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

Web Scraping avanzado con Scrapy

Arquitectura e instalación de Scrapy

Arquitectura de Scrapy

Instalación de scrapy

Extrayendo información mediante scrapy shell

Uso de selectores

Scrapy como framework de desarrollo de spyders

Creación de un proyecto scrapy

Spyders

Estructura de un Spyder

Creando el esqueleto de nuestro spyder

Extracción de enlaces con scrapy

Fichero BooksSpider.py

Ejecución de BooksSpider

Scrapy pipelines

Fichero configuración de scrapy settings.py

Exportación de resultados en formatos json, csv, xml

Consejos y trucos de ejecución de scrapy

Proyecto Scrapy para extraer las conferencias europython

Creación proyecto europython

Ficheros proyecto scrapy

Spyder europython

Funcionamiento del spyder

Obtener Expresiones XPath

Ejecutando el spyder Europython

Pipelines proyecto europython

Fichero pipelines.py

Settings proyecto europython

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

Escaneo de puertos y redes con python

Nmap como herramienta de escáner de puertos

Tipos de escaneo con nmap

Escaneo de puertos con Python-nmap

Método de escaneo

Obtener resultados del escaneo en formato csv

Escaneo síncrono

Ejecución escáner síncrono

Guardar resultado del escaneo en un fichero JSON

Ejecución escáner formato json

Usando PortScannerYield

Usando NMAP con el módulo os(operating system)

Usando NMAP con el módulo subproccess

Escaneo asíncrono

Ejemplo de escáner asíncrono con python-nmap

Ejecución escáner asíncrono 

Ejecutar scripts de nmap para detectar servicios y vulnerabilidades

Ejecución scripts de nmap

Lanzar script categoría discovery

Lanzar script obtener cabeceras

Obtener subdominios con script de nmap

Lanzar scripts para un determinado servicio

Analizar el servicio FTP con scripts de nmap

Obtener las máquinas activas de un segmento de red

Ejecutar comando ping en Python

Ejecución script comand ping 

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

Conexiones con servidores FTP, SFTP, SSH desde Python

Conexiones con servidores FTP utilizando el módulo ftplib

Módulo ftplib

Conexión con un servidor FTP

Métodos de la clase FTP

Descarga de ficheros de servidores FTP(I)

Descarga de ficheros de servidores FTP(II)

Comprobar conexión FTP anónima

Ejecución conexión FTP anónima

Proceso de fuerza bruta para conectarnos con un servidor FTP

Conexión con servidores SSH utilizando paramiko

Ejecutar comandos con paramiko

Conexión con la clase Transport

Ejecutar comandos con la clase Transport

Tratamiento de excepciones

Operaciones sobre archivos mediante el cliente SFTP

Descarga de ficheros con el cliente SFTP

Acceder a un servidor via SFTP utilizando el módulo PySftp

Descarga de un fichero utilizando el módulo PySftp

Proceso de fuerza bruta contra un servidor SSH

Ejecución script fuerza bruta 

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

Análisis de vulnerabilidades en aplicaciones web con Python

Introducción a la metodología OWASP

Inyección de comandos

SQL Injection

Cross-Site Scripting (XSS)

OWASP Python Security Project

Scripts en python para detectar vulnerabilidades en sitios web

Script en python para detectar SQL Injection

Script en python para detectar Cross-Site Scripting XSS

Ejecución script Cross-Site Scripting XSS

Introducción a la herramienta sqlmap para detectar vulnerabilidades del tipo sql injection

Ejecutar sqlmap sobre un dominio vulnerable

Extracción de tablas y columnas de una base de datos

Acceder a información de una tabla

Introducción a la herramienta bandit para detectar vulnerabilidades en proyectos de python

Instalar y ejecutar bandit

Análisis de vulnerabilidades con bandit

Plugins de bandit para análisis de código estático

Ejemplo módulo subprocess

Plugin SQL Inyection

Otras herramientas de análisis de código estático en python

Pyup

Safety

LGTM y reglas de seguridad en python

Ejemplo de código para detectar XSS

Detectar vulnerabilidades en sitios web con herramientas automáticas

Escáner de vulnerabilidades XSS para python 3.7

Ejecución pwnxss sobre dominio vulnerable

Escáner de vulnerabilidades en sitios web CMS

Ejecución de cmsmap en python3

Resumen

 

 

1484846182webcurso11.png
Creado por

SISTEMAS LAUDA

  • Precio del curso: € 288

matricularse en curso

  • Horas duración del curso

35



Uso de cookies

Esta web utiliza cookies. Si continúa navegando consideramos que aceptas su uso. ACEPTAR | Más información.