Está en la página 1de 13

ESCUELA PROFESIONAL DE INGENIERÍA Emisión:

ELECTRÓNICA 24/04/2020
LABORATORIO DE CÓMPUTO EXPERIENCIA N° 1 Página
2 / 14

https://medium.com/cyberdefendersprogram/python-for-cyber-security-lesson-1-introduction-to-python-
1976d817976
Se puede instalar paquetes adicionales mediante pip un administrador de paquetes. Existen diversidad de
pruebas y scripts que pueden usarse en redes, por ejemplo pruebas de penetración a la seguridad, tomamos
contenido de: https://www.tutorialspoint.com/python_penetration_testing/index.htm

III.- RECOMENDACIONES EN SEGURIDAD


Ninguna en particular.

IV.- EQUIPOS Y MATERIALES A UTILIZAR:


Cantidad Descripción
1 -
Computadora
con GNS3
instalado

V.- PROCEDIMIENTO:
Descargar PHyton, abrir una consola de comandos y ejecutar phyton.exe enviadole como
parámetro el script deseado. Visualizar el resultado.

Script 1: Escáner de puertos usando el Socket


Ejecutar el primer script que determina qué puertos están abiertos:
El siguiente Script sirve para construir un escáner de puertos simple usando socket. Usando una
secuencia de comandos de Python para el escáner de puertos que usa socket:
from socket import *
import time
startTime = time.time()

if __name__ == '__main__':
target = input('Enter the host to be scanned: ')
t_IP = gethostbyname(target)
print ('Starting scan on host: ', t_IP)

for i in range(50, 500):


s = socket(AF_INET, SOCK_STREAM)
ESCUELA PROFESIONAL DE INGENIERÍA Emisión:
ELECTRÓNICA 24/04/2020
LABORATORIO DE CÓMPUTO EXPERIENCIA N° 1 Página
3 / 14

conn = s.connect_ex((t_IP, i))


if(conn == 0) :
print ('Port %d: OPEN' % (i,))
s.close()
print('Time taken:', time.time() - startTime)

Con estos comandos escaneamos un host remoto e imprimimos todos los puertos abiertos. Pero
antes debemos proporcionar una dirección IP del host remoto como se muestra a continuación:

Al inicio nos pide la dirección IP del servidor, nunca usarlo en un servidor público sin
autorización.
ESCUELA PROFESIONAL DE INGENIERÍA Emisión:
ELECTRÓNICA 24/04/2020
LABORATORIO DE CÓMPUTO EXPERIENCIA N° 1 Página
4 / 14

Dirección IP del host remoto: localhost (Starting scan on host: 127.0.0.1)

Al colocar el nombre de host para el escaneo de puertos puede tomando en cuenta las
consideraciones para que no se interpretarse como un delito el nombre de sitio web. El escaneo
de puertos es como ir a la casa de alguien y revisar sus ventanas y puertas.

En este caso es recomendable utilizar el escáner de puertos en localhost o en su propio sitio


web (si está disponible).

El script anterior genera la siguiente salida:


ESCUELA PROFESIONAL DE INGENIERÍA Emisión:
ELECTRÓNICA 24/04/2020
LABORATORIO DE CÓMPUTO EXPERIENCIA N° 1 Página
5 / 14

● El resultado muestra que en el rango de 50 a 500 (como se esperaba en el script) este


escáner de puertos encontró dos puertos, los puertos 135 y 445, abiertos. Podemos
cambiar este rango y verificar los otros puertos.
● Con esto comprobamos el scaneo de puertos simple usando socket, dando los resultados

esperados.

Script 2: Barrido de direcciones IP, explicación del proceso de realización de barrido.


Desarrollo Script 2: Barrido de direcciones IP
Necesitamos importar unas librerías, para nuestro programa:

● os: La necesitamos para realizar el ping a través del sistema operativo.


● platform: Nos permite saber el sistema operativo donde corremos el programa, su uso nos
hace independientes de plataformas.
● datetime: Lo uso para saber el tiempo que tarda en realizar el escaneo, si no quieres
saberlo te lo puedes ahorrar.

import os
import platform
● En el siguiente trozo de código le solicitamos al usuario los datos necesarios, como son el
host y el rango de la subred.

from datetime import datetime


net = input("Enter the Network Address: ")
net1= net.split('.')
a = '.'
ESCUELA PROFESIONAL DE INGENIERÍA Emisión:
ELECTRÓNICA 24/04/2020
LABORATORIO DE CÓMPUTO EXPERIENCIA N° 1 Página
6 / 14

net2 = net1[0] + a + net1[1] + a + net1[2] + a


st1 = int(input("Enter the Starting Number: "))
en1 = int(input("Enter the Last Number: "))
en1 = en1 + 1
oper = platform.system()

● En la próxima parte del código lo único que compruebo es que sistema operativo se está
utilizando a través de la función platform.system(). Esto es necesario porque queremos
mandar un solo paquete, y en Windows la instrucción se hace con -n y en unix con -c.

if (oper == "Windows"):
ping1 = "ping -n 1 "
elif (oper == "Linux"):
ping1 = "ping -c 1 "
else :
ping1 = "ping -c 1 "

● En la siguientes líneas es donde llevamos a cabo la verdadera funcionalidad, así que


antes de comenzar obtengo la hora correspondiente y pintamos una línea por pantalla
para que el usuario sepa que el escaneo se está realizando.

t1 = datetime.now()
print ("Scanning in Progress:")

● Luego vemos un for, que nos va a recorrer el rango de direcciones ip deseadas, su


primera instrucción concatena al prefijo de la red los números que nos faltan.

for ip in range(st1,en1):
addr = net2 + str(ip)
comm = ping1 + addr
response = os.popen(comm)

for line in response.readlines():


if(line.count("TTL")):
break
if (line.count("TTL")):
print (addr, "--> Live")

t2 = datetime.now()
total = t2 - t1
print ("Scanning completed in: ",total)

Para ejecutar el segundo Script copiamos el código en un bloc y lo guardamos en una carpeta
con extensión .py (LAB7.py)
Ejecutamos la consola de comando y buscamos la carpeta que contiene el script, ejecutamos el
script mediante python LAB.py.
ESCUELA PROFESIONAL DE INGENIERÍA Emisión:
ELECTRÓNICA 24/04/2020
LABORATORIO DE CÓMPUTO EXPERIENCIA N° 1 Página
7 / 14

Como se observa nos pide ingresar la dirección de red presionamos enter e ingresamos el
número de comienzo de la subred y luego ingresamos el número en el que deseas acabar el
barrido.

Por ejemplo en la imagen anterior con los datos que se insertó escanearíamos para ver si están
activas las direcciones desde la 192.168.0.190 a la 192.168.0.199. Se muestra el tiempo que
tardó el barrido pero en este rango no se encontró una dirección activa.
ESCUELA PROFESIONAL DE INGENIERÍA Emisión:
ELECTRÓNICA 24/04/2020
LABORATORIO DE CÓMPUTO EXPERIENCIA N° 1 Página
8 / 14

VI.- CUESTIONARIO:
1.- Investigue y pruebe scripts para diagnóstico de redes, indique este aspecto en las
observaciones y conclusiones

A continuación mostraremos cómo crear un script de red, que permitirá detectar equipos
encendidos en la red haciendo lo que se conoce como ping sweep o barrido de ping, a través de
la herramienta ping propiamente:

Lo que hace este script de automatización es ejecutar un ping a cada dirección de IP en la red.
Entonces, el script invoca a Python, esto es necesario ya que al tratarse de un lenguaje
interpretado, debe invocar su intérprete, que en este caso es /usr/bin/Python.
La línea número 2 importa las librerías sys y subprocess. Sys provee funcionalidades y variables
relacionadas directamente con el intérprete, mientras que subprocess permite trabajar de forma
directa con órdenes del sistema operativo. Vale destacar que pueden importarse por separado
en líneas diferentes.
A partir de la quinta línea, básicamente lo que hace es mostrar un ejemplo de ejecución si el
comando no es correcto. Esto quiere decir que si solo se ejecutara la herramienta en Python, sin
ningún argumento, la ayuda dirá que debes ejecutar, por ejemplo, “psweep.py 10.0.0. “, que es lo
mismo que herramienta + direcciones IP.

A partir de la línea 6, si se ejecuta correctamente con el rango de direcciones IP, lo que hace es
ejecutar un solo ping a cada dirección en la red, para lo cual usa el comando ping –c1. Esto se
aplica en entornos Unix, ya que los ping son infinitos.
En caso de que responda un dispositivo conectado, la respuesta se vería de la siguiente
manera:
ESCUELA PROFESIONAL DE INGENIERÍA Emisión:
ELECTRÓNICA 24/04/2020
LABORATORIO DE CÓMPUTO EXPERIENCIA N° 1 Página
9 / 14

El equipo respondió, por lo que marca que en la dirección IP 192.168.221.128 hay un equipo
encendido y conectado sin marcar la respuesta como host unreachable.
2.- ¿Como podría integrar GNS3 con Phyton?
Por ejemplo es de la siguiente red :
Tenemos un terminal phyton desde una computadora remota podemos acceder a los routers
como se muestra en la figura:

La integración de GNS3 en Phyton se hace a traves de un scritps r1.py e importamos dos


librerias:
● telnetlib
● time
ESCUELA PROFESIONAL DE INGENIERÍA Emisión:
ELECTRÓNICA 24/04/2020
LABORATORIO DE CÓMPUTO EXPERIENCIA N° 1 Página
10 / 14

PARTE D

3.- ¿Qué tareas de automatización en redes pueden simplificarse con Phyton?

Hoy en día, los departamentos de TI buscan velocidad, agilidad y coherencia en el


aprovisionamiento y la gestión de aplicaciones tradicionales y nativas de la nube.

El software de automatización de redes encuentra la forma más eficiente de mapear, configurar,


aprovisionar y administrar una red.

Se puede mejorar las tareas y lograr una mayor eficiencia en los siguientes factores:

● Supervisión del estado de la red.


● Despliegue de nuevo equipamiento.
● Identificación rápida de problemas en nuestra red de comunicaciones.
ESCUELA PROFESIONAL DE INGENIERÍA Emisión:
ELECTRÓNICA 24/04/2020
LABORATORIO DE CÓMPUTO EXPERIENCIA N° 1 Página
11 / 14

4.- Que otros lenguajes pueden usarse para automatizar tareas en redes?

La automatización de red basada en scripts emplea scripting y lenguajes de programación para


ejecutar tareas, idealmente aquellas con disparadores precisos y procedimientos consistentes.
Los lenguajes heredados, como Perl y Tcl, prevalecen en la automatización de redes debido a su
familiaridad. Pero, a medida que las redes se vuelven más complejas, los nuevos lenguajes de
programación de código abierto, como Python y Ruby, han ganado popularidad por su facilidad
de uso y flexibilidad.
También podemos mencionar a Visual Basic, el lenguaje Jinja2, REST, entre otras que tienen
propia característica y flexibilidad en cuanto a la automatización de redes.

VII.- OBSERVACIONES Y CONCLUSIONES:


5 por integrante mínimo.

- Es muy importante el desarrollo de las automatizaciones de las redes debido a que se


tiene cada vez una mayor tendencia a la IA y la ML que pueden aprender la intención de
los comportamientos de la red, ofrecer análisis predictivo y proporcionar
recomendaciones/reparaciones.
- La utilización de automatización nos permite poder replicar una tarea de forma sencilla en
cualquier momento dado (por ejemplo: antes y después de realizar una intervención en la
red), y además reduce los riesgos de errores que se producen entre la silla y el teclado
del ordenador.
- Los scripts son solo un aspecto de la automatización de la red: una plataforma de
automatización moderna monitorea los recursos de la red al aprovisionar y verifica que
una red pueda manejar una solicitud de configuración antes de implementarla.
- Las soluciones integradas para automatización de redes pueden abarcar en Redes
empresariales, Redes de centro de datos, Proveedores de servicios; que en general, se
ESCUELA PROFESIONAL DE INGENIERÍA Emisión:
ELECTRÓNICA 24/04/2020
LABORATORIO DE CÓMPUTO EXPERIENCIA N° 1 Página
12 / 14

busca simplificar y escalar las operaciones de red, y minimizar lo más posible los errores
de configuración. Asimismo, mejorar la agilidad, la escalabilidad y la excelencia operativa,
y la experiencia del cliente.
- La herramienta para el diagnóstico de redes realiza un ping y luego pasa a la siguiente
dirección IP, y así sucesivamente hasta analizar todo el rango de direcciones que se
establezca.
- Claramente las respuestas Host Unreachable significan que no responde nadie. Si bien
no significa que no haya un equipo, ya que puede tener bloqueada la respuesta en su
firewall, es un buen comienzo para ver si hay equipos en la red que respondan al
comando.
- Se ejecuta correctamente el rango de direcciones IP, lo que hace es ejecutar un solo ping
a cada dirección en la red, para lo cual usa el comando ping –c1. Esto se aplica en
entornos Unix, ya que los ping son infinitos.
- La librería Sys provee funcionalidades y variables relacionadas directamente con el
intérprete, mientras que subprocess permite trabajar de forma directa con órdenes del
sistema operativo.
- Se ha proporcionado una lista de todas las expresiones regulares de Python más
utilizadas con ejemplos de la vida real en la hoja de trucos anterior para realizar procesos
de scaneo de puertos y de realización de barrido.
- Es muy común encontrar vulnerabilidades en aquellas direcciones IP destinadas a dar
algún tipo de servicio al exterior, como por ejemplo aplicaciones o páginas web, que
implican la conexión de un usuario ajeno a la red interna.
- A través de nmap podemos implementar algunos programas de escaneo más
complicados, puede darnos el programa escrito anteriormente e intentar presentar
python-nmapEmpaquete para lograr algunas funciones útiles.
- Python es el lienzo que permite reflejar, de forma simple y elegante, las ideas en forma
algorítmica. Sus aplicaciones, tanto en la comunidad docente como en la científica, le
permitirán aumentar su popularidad y adopción a nivel internacional.
- Las direcciones, a menudo denominadas «direcciones de host» son la unidad más básica
cuando se trabaja con direccionamiento IP. La forma más sencilla de crear direcciones es
usar la función de fabrica.
ESCUELA PROFESIONAL DE INGENIERÍA Emisión:
ELECTRÓNICA 24/04/2020
LABORATORIO DE CÓMPUTO EXPERIENCIA N° 1 Página
13 / 14

- Las direcciones también se pueden crear directamente a partir de enteros. Los valores
que caben dentro de 32 bits se asume que son direcciones IPv4:
- El barrido de direcciones IP también se puede realizar mediante hilos.
- A comparación del barrido realizado con el Script 2 el barrido de direcciones IP mediante
hilos es algo más complejo, ya que se va a repartir el trabajo entre varios hilos y no solo
se va a quedar la carga uno, al final el tiempo se reduce mucho, así que podemos decir
que es una versión más óptima.
- El Script 2 no nos brinda una seguridad de mostrarnos los host activos ya que se puede
bloquear el ping en un host bloqueando las peticiones y/o respuestas ICMP, de lo que sí
puedes estar seguro es de que si te dice que está activo.
- Existen otros tipos de escáner, como el de TCP que puedes hacerlo con los puertos que
normalmente deja abierto un sistema operativo, y la combinación del escáner TCP y el de
ping será más fiable.

VIII.- REFERENCIAS:
https://pyneng.readthedocs.io/en/latest/about.html
https://www.tutorialspoint.com/python_penetration_testing/python_penetration_testing_network_s
canner.htm
https://www.welivesecurity.com/la-es/2014/10/02/detectando-equipos-red-ping-python/
ESCUELA PROFESIONAL DE INGENIERÍA Emisión:
ELECTRÓNICA 24/04/2020
LABORATORIO DE CÓMPUTO EXPERIENCIA N° 1 Página
14 / 14

Rúbrica:
2 3 4 Preguntas del cuestionario sección 6 Observaciones y Total
respondidas satisfactoriamente conclusiones de
(parte 7) punto
s
4 4 2 Puntos 10 20

Docente: Ramiro Banda Valdivia

También podría gustarte