0% encontró este documento útil (0 votos)
58 vistas15 páginas

Creación de Scripts para Pentesting

Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
58 vistas15 páginas

Creación de Scripts para Pentesting

Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

1

TABLA DE CONTENIDOS

MÓDULO III ................................................................................................................................................ 3

1. OBJETIVO DEL MÓDULO .................................................................................................... 3

2. TÉCNICAS DE ESCANEO DE USO COMÚN ..................................................................... 3

3. SCRIPTS EN LUA PARA NMAP .......................................................................................... 9

4. DESARROLLO DE SCRIPT DE ESCANEO ...................................................................... 11

5. DESARROLLO DE SCRIPT DE RECONOCIMIENTO...................................................... 13

6. BIBLIOGRAFIA .................................................................................................................... 14

2
MÓDULO III

En el módulo III se vera la creación de scripts para el proceso de


pentesting.

1. OBJETIVO DEL MÓDULO

El objetivo de este módulo es que el estudiante pueda comparar las


herramientas existentes y crear o modificar scripts durante el proceso de
pentesting

2. TÉCNICAS DE ESCANEO DE USO COMÚN

Según la metodología de EC-Council las fases del pentesting son:

Reconocimient
o

Escaneo

Ganando
acceso

Manteniendo
acceso

Borrando huellas
acceso

3
En el reconocimiento se recopila pruebas e información sobre los objetivos
que desea atacar.

Reconocimiento activo: el reconocimiento activo utiliza herramientas y


técnicas que “tocan” ligeramente al objetivo

Reconocimiento pasivo: El reconocimiento pasivo implica recopilar


información sobre su objetivo sin su conocimiento,

Un puerto de red: Es un numero que le damos a una aplicación o servicio


que está corriendo dentro de un servidor.

Herramientas más usadas para el scaneo de puertos son:

• NMAP
• Zenmap
• Ipscan
• Hping3
• Metasploit

Escaneo de red: El escaneo de red es el proceso por lo que se logra


identificarlos servicios de red, así como posible vulnerabilidades y riesgos
de seguridad

Los puertos son desde 1 a 65535

Los puertos más comúnmente usados son:

SERVICIO PUERTO
FTP 21
SSH 22
Telnet 23
HTTP 80
SMTP 25
Kerberos 88
Netbios 139
SMB 445
RDP 3389
LDAP 389
MSSQL 1433
MySQL 3306

4
Oracle 1521
Postgres 5432
VNC 5800/5900
DNS 53
NTP 123
SNMP 161/162

Para abrir (establecer) una conexión TCP se usa el 3-way handshake

SYN

SYN-ACK

ACK

Establecido

Abrir una sesión TCP

FIN

ACK
FIN

ACK

sesión
cerrada

Cerrar una sesión TCP

5
NMAP es una herramienta de escaneo de red gratuita y de código abierto
que se utiliza en pruebas de penetración para explotar y auditar redes

NMAP Usa las siguientes fases:

Fase 1 Host Discovery ARP(LAN), ICMP(WAN)

Fase 2 Escaneo de puertos

Fase 3 Fingerprint

Fase 4 Ejecución de scripts

Comodines usados frecuentemente:

-v Verbose, nos indica que esta haciendo el analisi a detalle

-p Me indica el puerto especifico

-p- Escanea todos los puertos

-sS Escaneo usando synscan, comienza con una conexión normal, pero
no se establece un handshake, solo se espera la respuesta

-O Detección del sistema operativo

-A Detección del sistema operativo y servicios

Ejemplos de nmap

6
nmap –p88 192.168.29.102

nmap –sVC 192.168.29.102

Nota: por default nmap usa los 1000 puertos mas comunes

7
Scripts en NMAP , un script tiene la capacidad de automatizar tareas
utilizando scripts personalizados, las categorías de script en nmap son:

default: Esta es la categoría predeterminada en Nmap, que incluye una gran


cantidad de scripts de reconocimiento básicos y útiles para la mayoría de los
escaneos.

discovery: Esta categoría se enfoca en descubrir información sobre la red,


como la detección de hosts y dispositivos activos, y la resolución de nombres
de dominio.

safe: Esta categoría incluye scripts que son considerados seguros y que no
realizan actividades invasivas que puedan desencadenar una alerta de
seguridad en la red.

intrusive: Esta categoría incluye scripts más invasivos que pueden ser
detectados fácilmente por un sistema de detección de intrusos o un Firewall,
pero que pueden proporcionar información valiosa sobre vulnerabilidades y
debilidades en la red.

vuln: Esta categoría se enfoca específ icamente en la detección de


vulnerabilidades y debilidades en los sistemas y servicios que se están
ejecutando en la red.

8
Ejemplo:

nmap --script smb-os-discovery.nse 192.168.29.102

3. SCRIPTS EN LUA PARA NMAP

Nmap permite personalizar y extender sus capacidades mediante la


creación de scripts personalizados en el lenguaje de programación Lua.

Los scripts en lua tienen los siguientes campos

• description: Este campo se utiliza para proporcionar una descripción


corta del script y su funcionalidad.
• categories: Este campo se utiliza para especificar las categorías a
las que pertenece el script, como descubrimiento, explotación,
enumeración, etc.

9
• author: Este campo se utiliza para identificar al autor del script.
• license: Este campo se utiliza para especificar los términos de la
licencia bajo la cual se distribuye el script.
• dependencies: Este campo se utiliza para especificar cualquier
dependencia de biblioteca o software que requiera el script para
funcionar correctamente.
• actions: Este campo se utiliza para definir la funcionalidad específica
del script, como la realización de un escaneo de puertos, la
detección de vulnerabilidades, etc.

description =[[ Muestra los puertos aabiertos TCP]]

portrule = function(host,port)
return port.protocol =="tcp"
and port.state =="open"

end
action = function(host,port)
return "Este puerto esta abierto"
end

10
4. DESARROLLO DE SCRIPT DE ESCANEO

Para hacer el escaneo de puertos usaremos un módulo de Python que nos


permitirá las conexiones TCP y UDP, donde AF_NET(ipv4) y
SOCK_STREAM(TCP)

#!/usr/bin/python3
import argparse,socket,sys # Importamos los módulos necesarios para el script

description = """ Ejemplos de uso:

+ Escaneo básico, default port 80:

python3 portScan.py -t 192.168.136.130

+ Indica un puerto específico:

python3 portScan.py -t 192.168.136.130 -p 80,443,445

+ Indica un rango de puertos a escanear:

python3 portScan.py -t 192.168.136.130 --range 1-445 """

parser = argparse.ArgumentParser(description="Port
scanning",epilog=description,formatter_class=argparse.RawDescriptionHelpFormatter)

parser.add_argument("-t",metavar="Host",dest="host",help="Indica el host a escanear.


Obligatorio.",required="True")

parser.add_argument('-p',dest="ports",metavar="Ports",help="Indica los puertos a


escanear separados por coma. Ejemplo: -p 80,8080,443. Por defecto puerto
80",default="80")

parser.add_argument('--range',metavar="Rango",help="Indica un rango de puertos a


escanear separados por un guión. Ejemplo: --range 130-140")

params = parser.parse_args()

if params.range is None: #Si no se indica un rango de puertos, escanea los puertos


indicados en el parámetro -p

ports = params.ports.split(",")

try:

11
print("\n[*] Escaneando objetivo %s...\n" % params.host)

for port in ports:

s = socket.socket(socket.AF_INET,socket.SOCK_STREAM) # Se crea al objeto


socket

s.settimeout(0.3) # Indica el tiempo de intento de conexion

result = s.connect_ex((params.host,int(port)))

if result == 0: # Si el resultado de conexión en el puerto es 0, el puerto está


abierto

print("[+] Puerto %s abierto\n" % port)

else:

print("[-] Puerto %s cerrado\n" % port)

s.close()

except:

print("[!]Error de conexion con %s" %params.host)

sys.exit(1)

if params.range: # Si se indica el parámetro --range, la herramienta escaneará los


puertos que están dentro del rango indicado.

rango = params.range.split("-")

start = int(rango[0]) # Almacena el primer valor del rango pasado por parámetro

end = int(rango[1]) # Almacena el segundo valor del rango pasado por parámetro

try:

print("\n[*] Escaneando objetivo %s...\n" % params.host)

for port in range(start,end+1):

s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)

s.settimeout(0.3) # Establece el tiempo de intento de conexión

12
result = s.connect_ex((params.host,int(port)))

if result == 0: # Si el restultado de la conexión es 0, el puerto está abierto

print("[+] Puerto %s abierto\n" % port)

else:

print("[+] Puerto %s cerrado\n" % port)

s.close()

except:

print("[!]Error de conexion con el objetivo")


sys.exit(1)

5. DESARROLLO DE SCRIPT DE RECONOCIMIENTO

En el proceso de pentesting la enumeración de subdominios es una de las fases


cruciales , Al identificar los subdominios un atacante puede obtener información
valiosa de cada una de estos es un Uso de WFUZZ

import requests

# the domain to scan for subdomains


domain = "google.com"

# read all subdomains


file = open("subdomain.txt")
# read all content
content = file.read()
# split by new lines
subdomains = content.splitlines()
# a list of discovered subdomains
discovered_subdomains = []
for subdomain in subdomains:
# construct the url
url = f"http://{subdomain}.{domain}"
try:
# if this raises an ERROR, that means the subdomain does not exist

13
requests.get(url)
except requests.ConnectionError:
# if the subdomain does not exist, just pass, print nothing
pass
else:
print("[+] Discovered subdomain:", url)
# append the discovered subdomain to our list
discovered_subdomains.append(url)

# save the discovered subdomains into a file


with open("discovered_subdomains.txt", "w") as f:
for subdomain in discovered_subdomains:
print(subdomain, file=f)

6. BIBLIOGRAFIA
https://nmap.org/book/nse-language.html
https://akaj4ndr0.github.io/pythonII -socket/#
https://thepythoncode.com/article/make-subdomain-scanner-python

14
15

También podría gustarte