Hacking ético con herramientas Python
()
Información de este libro electrónico
El objetivo del libro es capacitar a aquellos interesados en la seguridad, a aprender a utilizar Python como lenguaje de programación, no solo para poder construir aplicaciones, sino también para automatizar y especificar muchas de las tareas que se realizan durante un proceso de auditoría de seguridad._x000D_
Repasaremos desde los conceptos básicos de programación hasta construir nuestra propia herramienta de análisis y extracción de información. Con el objetivo de extraer información de servidores y servicios que están ejecutando, información como nombres de dominio y banners, conoceremos los módulos que ofrece python para extraer información que los servidores exponen de forma pública y veremos los módulos que permiten extraer metadatos de documentos e imágenes, así como extraer información de geolocalización a partir de direcciones IP y nombres de dominio. También analizaremos conceptos más avanzados, como implementar nuestro propio escáner de puertos con comandos nmap y scapy, además de cómo conectarnos desde python con servidores FTP, SSH, SNMP, Metaspoit y escáneres de vulnerabilidades como nexpose.
Lee más de José Manuel Ortega
Big data, machine learning y data science en python Calificación: 0 de 5 estrellas0 calificacionesSeguridad en aplicaciones Web Java Calificación: 0 de 5 estrellas0 calificaciones
Relacionado con Hacking ético con herramientas Python
Libros electrónicos relacionados
Reversing. Ingeniería Inversa Calificación: 0 de 5 estrellas0 calificacionesCiencia de datos para la ciberseguridad Calificación: 0 de 5 estrellas0 calificacionesPython Práctico Calificación: 0 de 5 estrellas0 calificacionesPython Paso a paso Calificación: 0 de 5 estrellas0 calificacionesTypeScript, Curso Práctico Calificación: 0 de 5 estrellas0 calificacionesHacking ético de redes y comunicaciones Calificación: 0 de 5 estrellas0 calificacionesCurso de programación Bash Shell Calificación: 0 de 5 estrellas0 calificacionesIngeniería de datos. Diseño, implementación y optimización de flujos de datos en Python Calificación: 0 de 5 estrellas0 calificacionesMERN. Guía Práctica de Aplicaciones Web Calificación: 0 de 5 estrellas0 calificacionesIngeniería inversa Calificación: 0 de 5 estrellas0 calificacionesColecciones de datos y algoritmos en Python: de cero al infinito Calificación: 0 de 5 estrellas0 calificacionesPython: La Guía Definitiva para Principiantes para Dominar Python Calificación: 1 de 5 estrellas1/5Normativa de Ciberseguridad Calificación: 0 de 5 estrellas0 calificacionesGestión de Bases de Datos Calificación: 0 de 5 estrellas0 calificacionesAprendizaje automático y profundo en python: Una mirada hacia la inteligencia artificial Calificación: 0 de 5 estrellas0 calificacionesHacking Ético Calificación: 0 de 5 estrellas0 calificacionesJava Curso Práctico Calificación: 0 de 5 estrellas0 calificacionesOperaciones auxiliares con Tecnologías de la Información y la Comunicación. IFCT0108 Calificación: 0 de 5 estrellas0 calificacionesFundamentos de programación con Python 3 Calificación: 0 de 5 estrellas0 calificacionesAprende a programar en Python: de cero al infinito Calificación: 0 de 5 estrellas0 calificacionesProgramar en C | Paso a Paso: La guía sencilla para principiantes Calificación: 0 de 5 estrellas0 calificacionesDomine JavaScript (4ª Edición) Calificación: 0 de 5 estrellas0 calificacionesKali Linux para Hackers Calificación: 0 de 5 estrellas0 calificacionesPython Aplicaciones prácticas Calificación: 0 de 5 estrellas0 calificacionesCriptografía sin secretos con Python: Spyware/Programa espía Calificación: 5 de 5 estrellas5/5Criptografía sin secretos con Python Calificación: 0 de 5 estrellas0 calificacionesSistemas de Aprendizaje Automático Calificación: 0 de 5 estrellas0 calificacionesAprende Python desde cero hasta avanzado: El libro completo de la programacion python para principiantes - Con ejercicios prácticos y contenido bonus Calificación: 0 de 5 estrellas0 calificacionesAprendiendo Python: Desde los Fundamentos hasta la Programación Avanzada: La colección de TI Calificación: 0 de 5 estrellas0 calificacionesProgramación y desarrollo de algoritmos con C++ Calificación: 0 de 5 estrellas0 calificaciones
Seguridad para usted
Hackers. Aprende a atacar y defenderte. 2ª Adición Actualizada: Fraude informático y hacking Calificación: 4 de 5 estrellas4/5Una guía de seguridad cibernética Calificación: 5 de 5 estrellas5/5Hackeado: Guía Definitiva De Kali Linux Y Hacking Inalámbrico Con Herramientas De Seguridad Y Pruebas Calificación: 5 de 5 estrellas5/5Las Estafas Digitales Calificación: 5 de 5 estrellas5/5Hacking Ético 101 - Cómo hackear profesionalmente en 21 días o menos! 2da Edición: Cómo hackear, #1 Calificación: 4 de 5 estrellas4/5GuíaBurros: Ciberseguridad: Consejos para tener vidas digitales más seguras Calificación: 5 de 5 estrellas5/5Bitcoin para principiantes y a prueba de tontos: Criptomonedas y Blockchain Calificación: 2 de 5 estrellas2/5Lo esencial del hackeo Calificación: 5 de 5 estrellas5/57 Pasos Para Ser Un Pentester: Cómo hackear, #0 Calificación: 5 de 5 estrellas5/5Hackeo Ético: Guia complete para principiantes para aprender y comprender el concepto de hacking ético Calificación: 0 de 5 estrellas0 calificacionesCiberseguridad para directivos: Riesgos, control y eficiencia de las tecnologías de la Información Calificación: 5 de 5 estrellas5/5Hacking ético de redes y comunicaciones: Curso práctico Calificación: 1 de 5 estrellas1/5Hacking ético con herramientas Python: SEGURIDAD INFORMÁTICA Calificación: 4 de 5 estrellas4/5BackTrack 5. Hacking de redes inalámbricas: Fraude informático y hacking Calificación: 5 de 5 estrellas5/5Kali Linux Calificación: 3 de 5 estrellas3/5Kali Linux Calificación: 0 de 5 estrellas0 calificacionesInterconexión de Redes Privadas y Redes Publicas. (MF0956_2): Gestión de redes Calificación: 5 de 5 estrellas5/5Auditoría de seguridad informática: Curso práctico Calificación: 5 de 5 estrellas5/5El libro blanco del HACKER Calificación: 0 de 5 estrellas0 calificacionesIntroducción a la Informática Forense: SEGURIDAD INFORMÁTICA Calificación: 0 de 5 estrellas0 calificacionesDirección de seguridad y gestión del ciberriesgo Calificación: 0 de 5 estrellas0 calificacionesAuditoría de Tecnologías y Sistemas de Información.: SEGURIDAD INFORMÁTICA Calificación: 4 de 5 estrellas4/5Un fantasma en el sistema: Las aventuras del hacker más buscado del mundo Calificación: 5 de 5 estrellas5/5Ciberseguridad Calificación: 1 de 5 estrellas1/5Hacking Ético (3ª Edición) Calificación: 0 de 5 estrellas0 calificacionesGestión de incidentes de seguridad informática. IFCT0109 Calificación: 0 de 5 estrellas0 calificacionesAuditoría de seguridad informática. IFCT0109 Calificación: 5 de 5 estrellas5/5Seguridad en Bases de Datos y Aplicaciones Web Calificación: 5 de 5 estrellas5/5La seguridad informática es como el sexo seguro Calificación: 5 de 5 estrellas5/5
Comentarios para Hacking ético con herramientas Python
0 clasificaciones0 comentarios
Vista previa del libro
Hacking ético con herramientas Python - José Manuel Ortega
Introducción
El objetivo del libro es capacitar a aquellos interesados en la seguridad a aprender 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 auditoría de seguridad.
Repasaremos desde los conceptos básicos de programación hasta construir nuestra propia herramienta de análisis y extracción de información.
Objetivos del libro
Enseñar los conceptos básicos del lenguaje Python y los beneficios que aporta a un desarrollador, pentester o auditor de seguridad.
Enseñar cómo se pueden crear scripts en Python para automatizar de tareas de pentesting.
Dar a conocer las principales librerías disponibles en Python a la hora de desarrollar herramientas enfocadas a la seguridad.
Proporcionar los conocimientos de Python que permitan escribir código para realizar un proceso de pentesting.
Elaborar mediante programación en Python sus propias herramientas que se utilizan en un proceso de Ethical Hacking.
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.
1
Introducción a la programación con Python
Introducción
Python es un lenguaje de programación que se creó a principios de los años noventa por Guido Van Rossum. Entre las cualidades más particulares del lenguaje se destaca que cuenta con una sintaxis muy limpia, es potente, dinámico y fácil de aprender. A través de los años, Python se convirtió en un lenguaje muy adoptado por la industria de la seguridad informática, debido a su simpleza, practicidad y que es tanto un lenguaje interpretado como de scripting.
¿Por qué elegir Python?
Lenguaje multiplataforma y open source.
Lenguaje sencillo, rápido, robusto y potente.
Muchas de las librerías, módulos y proyectos enfocados a la seguridad informática se encuentran escritos en Python.
Hay mucha documentación y una comunidad de usuarios muy grande.
Es un lenguaje diseñado para realizar programas robustos con pocas líneas de código, algo que por ejemplo en otros lenguajes solo es posible después de incluir muchas características propias de cada lenguaje.
Ideal para realizar prototipos y pruebas de concepto (PoC) rápidas.
Objetivos de la unidad didáctica
Dar a conocer Python como lenguaje de programación.
Conocer los conceptos básicos relacionados con programación y manejo de estructuras de datos en Python.
Conocer los conceptos relacionados con la programación a objetos y aplicarlos a la programación con Python.
Programación orientada a objetos
En programación, existen diferentes maneras de ver las cosas, y cada una de estas perspectivas, también conocidas como paradigmas de programación, nos ofrecen formas distintas de resolver problemas. Cada paradigma de programación cuenta con una serie de metodologías o maneras de pensar que llevan a un camino diferente de resolver un mismo problema según el paradigma. Uno de los paradigmas más utilizados es el Orientado a Objetos. La programación orientada a objetos busca representar mediante clases y objetos las interacciones necesarias para llevar a cabo una determinada tarea.
La programación orientada a objetos es un paradigma donde los programas se definen en términos de clases de objetos
que se comunican entre sí mediante el envío de mensajes. Es una evolución de los paradigmas de la programación procedural, estructurada y modular, y se implementa en lenguajes como Java, Python o C++.
Las clases definen el comportamiento y estado disponible que se concreta en los objetos, y permiten una representación más directa de los conceptos necesarios para la modelización de un problema permitiendo definir nuevos tipos al usuario.
Los objetos se caracterizan por:
Tener una identidad que les diferencian entre sí.
Definir su comportamiento a través de métodos.
Definir su estado a través de propiedades y atributos.
Las clases permiten agrupar en un nuevo tipo los datos y las funcionalidades asociadas a dichos datos, favoreciendo la separación entre los detalles de la implementación de las propiedades esenciales para su uso. A esta cualidad, de no mostrar más que la información relevante, ocultando el estado y los métodos internos de la clase, es conocida como encapsulación
, y es un principio heredado de la programación modular.
Un aspecto importante en el uso de clases es que no se manipulan directamente, sino que sirven para la definición nuevos tipos. Una clase define propiedades y comportamiento para los objetos (instancias de una clase). La clase actúa como molde de un conjunto de objetos, de los que se dice que pertenecen a la clase.
Las técnicas más importantes utilizadas en la programación orientada a objetos son:
Abstracción: Los objetos pueden realizar tareas, interactuar con otros objetos, o modificar e informar sobre su estado sin necesidad de comunicar cómo se realizan dichas acciones.
Encapsulación (ocultación de la información): Los objetos impiden la modificación de su estado interno o la llamada a métodos internos por parte de otros objetos, y solamente se relacionan a través de una interfaz clara que define cómo se relacionan con otros objetos.
Polimorfismo: Comportamientos distintos pueden estar asociados al mismo nombre.
Herencia: Los objetos se relacionan con otros estableciendo jerarquías, y es posible que unos objetos hereden las propiedades y métodos de otros objetos, extendiendo su comportamiento y/o especializándolo. Los objetos se agrupan así en clases que forman jerarquías.
Instalación de python
Multiplataforma
Python cuenta con un intérprete, y por lo tanto se encuentra disponible en un gran número de plataformas incluyendo sistemas operativos como Windows, UNIX, Mac OS y Linux.
El código que nosotros creamos en Python, se traduce en un bytecode al momento de ejecutarse por primera vez. Por eso en los sistemas en los cuales vamos a ejecutar nuestros programas o scripts desarrollados en Python necesitaríamos que se encuentre el intérprete instalado.
Instalación
Tanto en las últimas versiones de Mac OS X como en las distribuciones de UNIX y GNU Linux, Python viene pre instalado por defecto. En particular, y en el caso de distribuciones como Ubuntu y otras, la versión que encuentran por defecto es la 2.7. Para confirmar que Python se encuentra instalado en su sistema basta con abrir una consola y escribir la palabra ‘Python’ y observarán cómo la consola cambia al modo de intérprete para ejecutar comandos e instrucciones propias de Python.
Intérprete de Python
En la imagen anterior podemos observar que la versión de Python es la 2.7.9. También podemos instalar la versión 3 de Python, basta con ejecutar "sudo apt-get install python3" desde una consola o utilizar el gestor de paquetes de cualquier versión de Linux.
Python en Windows
Para aquellos usuarios de Windows que quieran contar con Python instalado en sus sistemas pueden descargar el instalador desde la página oficial http://www.python.org/download e instalarlo según su sistema operativo sea de 32 o de 64 bits.
Actualmente existen dos versiones de Python: Python 2 y Python 3. Ambas versiones son incompatibles entre sí. La primera de ellas tiene todavía mantenimiento para dar servicio a todos los programas y proyectos que aún lo usan, pero ha dejado de evolucionar significativamente. La segunda de ellas, Python 3, es la que continúa con el desarrollo del lenguaje.
La razón de que aún siga existiendo Python 2 es que hay muchos desarrollos funcionando que necesitarían ser reescritos para la versión 3. Además, hay importantes librerías que aún no han sido migradas a la nueva versión.
La página oficial de descargas http://www.python.org/download ya detecta la versión del sistema operativo.
Descarga de Python.www.python.org
Una vez descargado el fichero, lo ejecutamos como cualquier otro instalador.
Es importante marcar la casilla "Añadir Python 3.5 al PATH". Esto te permitirá ejecutar Python directamente desde el símbolo del sistema desde cualquier ruta sin necesidad de ir al directorio de instalación.
Instalación de Python
Podemos customizar la instalación si queremos que incluya la documentación o que instale una serie de utilidades como el gestor de paquetes pip o el entorno de desarrollo IDLE para editar y ejecutar scripts. Se recomienda dejar marcadas las opciones para que las instale y tengamos un entorno lo más completo posible.
Instalación de Python
Por defecto este programa se instalará en el directorio c:\Python35, pero podemos escoger cualquier otro directorio. Quitando esta decisión, el resto de la instalación será directa, aceptando todos los pasos con los valores que proponen pulsando el botón "Next" y "Finish" en el último paso.
En el momento de instalar la versión de Python para Windows, también podrán observar que se encuentra disponible IDLE, un editor o IDE (Integrated Development Environment) de Python que nos va a permitir escribir y probar el código.
Una vez instalado, podemos comprobar que está todo correcto:
Abrir la carpeta donde lo has instalado
Entrar en la carpeta Lib y, dentro en idlelib
Ejecutar con doble click el archivo idle.bat
IDLE Python
Python en sistema Unix
Normalmente, lo podemos encontrar instalado por defecto en la mayoría de distribuciones Gnu/Linux.
Si queremos instalarlo en Ubuntu lo podemos hacer a través del gestor de paquetes apt-get:
sudo apt-get install python3
Para comprobar la versión de Python instalada se puede hacer con el parámetro -v:
python -v
Parar instalar cualquier librería que esté disponible en los repositorios de Python lo podemos hacer con el comando:
pip install
Tipos y estructuras de datos
Tipos dinámicos
Con esto hacemos referencia a que cada variable que declaremos no es necesario definir un tipo de dato (número, carácter, etc). En Python el tipo de una variable se define en tiempo de ejecución, y según el tipo de valor que se asigne.
Python es un lenguaje de tipado dinámico, o sea que las variables no tienen un tipo. Los valores, sin embargo, si tienen tipo. Podemos consultar el tipo de una variable con el comando type(
Si declaramos una variable numérica nos devuelve un tipo
Tipos en Python
Si definimos una variable que sea una cadena de texto, podemos ver si cuentan con una serie de funciones básicas para poder operar con ellas. Entre los métodos más comunes a conocer se encuentran algunos métodos que nos permiten saber si todos los caracteres son numéricos, alfanumérico, pasarla a mayúsculas a minúsculas, etc.
En otras palabras, los tipos básicos de datos en Python incluyen una serie de métodos predefinidos para poder operar con ellos. Aprovechamos para introducir un comando muy útil en Python; el comando dir(). Este comando nos permite listar todas las funciones que podemos ejecutar sobre una variable u objeto y su sintaxis es dir(
Por ejemplo, en la siguiente captura utilizamos este método para una variable que contiene una cadena de texto(string):
Tipos en Python
Listas
Las listas en Python equivalen a estructuras como vectores dinámicos en lenguajes de programación como C. Podemos expresar literales encerrando sus elementos entre un par de corchetes y separándolos con comas.
El primer elemento de una lista tiene índice 0. El operador de indexación permite acceder a un elemento y se expresa sintácticamente añadiendo a la lista su índice entre corchetes, lista[index]
En el siguiente ejemplo definimos una lista de direcciones ip y usamos los métodos principales de una lista de Python como append, insert, y delete, para añadir y eliminar elementos.
Listas en Python
Podemos concatenar 2 listas con el operador +
Listas en Python
Una lista es iterable y se puede recorrer con un simple bucle