Luis Carrillo Gutiérrez. 2016

Anuncio
Hacking Ético
Luis Carrillo Gutiérrez.
2016
Hacking Ético
•
•
•
•
•
Ethical Hacking
White Hat Hacking
Hackers - no crackers - no script kiddies
Agentes de Seguridad Informática.
etc.
Hacking Ético
• Cuando una persona usa sus
conocimientos de informática y
seguridad para realizar pruebas
en redes* y encontrar
vulnerabilidades, para luego
reportarlas y que se tomen
medidas, sin poner en riesgo el
sistema.
Hacking Ético
• Estas pruebas se llaman "pen tests" o
"penetration tests" (inglés).
• En estas "pruebas de penetración", se
intenta de múltiples formas burlar/vulnerar
la seguridad de la red para robar
información sensible de una organización,
para luego reportarlo a dicha organización
y asi mejorar su seguridad.
Hacking Ético
• Mediante:
PRUEBAS/EVALUACIONES.
–Son documentadas.
–No son anónimas.
–Con conocimiento del cliente.
–Hacen uso de Herramientas de Pen
Testing.
Hacking Ético
• La idea es tener el conocimiento
de cuáles elementos dentro de
una red son vulnerables y
corregirlo antes que ocurra hurto*
de información.
– * ransomware
Consideraciones
• ¿Quiénes pueden permitirse tener un
especialista en Seguridad?
• ¿El pen testing debe hacerse con el
mismo equipo/persona que
implementó la red, o los protocolos
de seguridad?.
• ¿Cómo determinar si no existe un
daño, al momento de hacer un pen
testing?
Consideraciones
• Auto atacarse?
– Condicionamiento: ¿Cuánto daño puedo
soportar?
– ¿Qué tanto daño debo ocasionar, para
saber que la vulnerabilidad es real,
presente o aprovechable?.
• Vacunarse?
– No puedo cubrir todas las
enfermedades, ni auto medicarme, ni
suministrarme las dosis adecuadas.
Consideraciones
• Concentrarse en la infraestructura, de
conexión (esta documentada, está
sujeto a normas, políticas, leyes, etc).
• De riesgo llevar a amenaza.
• Siempre van a existir HUECOS de
SEGURIDAD.
– Mientras haya humanos involucrados.
– Social Enginnering (Ingeniería Social)
**.
Ingeniería Social
• Uso de las personas como
herramientas para conseguir el fin
deseado, no tiene un (gran)
componente tecnológico.
• Se podría asemejar mucho a la
manipulación de las personas en
timos callejeros - y de hecho tiene
componentes similares (…).
Ingeniería Social
• Básicamente se utilizan procesos:
– reciprocidad
– el compromiso y consistencia,
– las pruebas sociales,
– gustarse y ser parecidos,
– la autoridad
– y la escasez (…)
Consideraciones
• Para dirigir primero debiste aprender a
obedecer.
• Para defender tuviste que atacar primero
• Los mejores hackers, son los expertos de
seguridad de información.
• Todo se logra con conocimiento.
Recomendaciones
• Establecer un Honey Pot.
• Establecer un firewall **.
• Tener los LOGS verificables, actualizados,
y con espacio en disco para escribirlos.
• Primero son los ataques de
OUTSIDERS**
• Procura que las pruebas sean en
Desarrollo y no en Producción **.
• Dar soluciones para corregirlo de Hacker
a Cliente.
Conclusión
• «Ningún sistema está seguro
si lo utiliza una persona,
porque lo vulnerable es la
persona».
Identificación de
Objetivos
Luis Carrillo Gutiérrez
2016
Preliminares.
• Disclaimer.
– Todo lo dicho es con FINES ACADÉMICOS
– Su uso implica INVESTIGACIÓN
– Todo lo discutido es BÁSICO e
INTRODUCTORIO.
– Primero saber qué hacer, luego es qué
utilizar.
– Pen Testing implica conocimientos en
REDES, PROGRAMACIÓN y
NORMATIVIDAD.
Agenda.
•
•
•
•
•
•
¿Qué es una red?
Datos de conección y credenciales
Banner grabbing - Exploit Database.
Port Scanning
MiTM
¿Es necesario estar presente en la
red?
Qué es una red?
• Nodos que intercambian
información.
• Todos tienen una interface de
conexión.
• Todos tienen una dirección
asignada** (sea dinámica).
• Todos tienen un identificador
físico** de la interfaz usada.
Modelo TCP - OSI
Terminología
• Nodo de red. Elemento con capacidad de
recibir/emitir los paquetes de red.
• Puerto. Número asignado a un servicio
dentro de un nodo.
• Dirección IP. Número asignado a la
interfaz de comunicación del nodo**.
• MAC. Dirección (única) física de la
interfaz.
Terminología
• Net Scan - Net Scanner.
– Acción y/o aplicativo que permite
verificar los nodos presentes en una red
(local).
• Port Mapping - Port mapper - Port
Scanners.
– Acción y/o aplicativo que lista los
puertos presentes en un nodo.
• Banner grabbing – Acción que permite identificar por medio
del puerto el proveedor, nombre del
¿Quién soy y dónde estoy?
• Mis credenciales de conexión**.
– Dirección IP - MAC,
– ¿Es una red DHCP?
– La dirección de ENRUTAMIENTO.
– Existe la presencia de un PROXY.
– Mi segmento de RED.
– El canal de conexión inalámbrica, ESSID, etc.
Lo primero es tener acceso.
•
•
•
•
•
•
ipconfig
- ifconfig
- ip addr
netsh interface .... # ipv4 reset
iwconfig
iwlist -> $ iwlist wlan0 scan
NetStumbler
Reaver **
• Android fing***
Net Scan
• Condicionamiento.
– Si tienes acceso al nodo de enrutamiento
(router), existe un espacio para los
"dispositivos conectados" (attached devices).
– El nodo de enrutamiento tiene credenciales
de fábrica (MAC reordenada - admin, 123456,
por fuerza bruta, etc).
Herramientas - ping
• La mínima a usar presente en todo
sistema operativo (Android)***
• Sirve para ver el funcionamiento, la
disponibilidad de un nodo en una red,
saber el tiempo de respuesta en una
conexión y conocer la dirección IP de un
dominio*
– ***No nativo
– *Mejor que un WHOIS, incluye IPv6
Usos
• Comprobar/probar la conectividad de una red.
• Medir la latencia o tiempo que tardan en comunicarse
dos puntos remotos.
• En internet conocer la dirección IP utilizada por un
nombre de dominio.
• Scripts que permiten llevar un registro de la
disponibilidad de un servidor remoto.
• Scripts que permiten conocer cuando existe conexión en
un equipo.
• En los archivos batch es empleado ocasionalmente para
retrasar la ejecución de comandos un tiempo
determinado.
Parámetros/Opciones
• Cambian en cada Sistema Operativo,
por lo cual es necesario ver la
documentación (ping /? - man ping)
– -n o -c
– -f
– -r
– -l
–w
Número de solicitudes.
No fragmentar los paquetes
Lista los Saltos de ruta
Longitud del paquete
Tiempo de espera
Ejemplos
•
•
•
•
•
•
•
•
•
ping 127.0.0.1
# Clásico en ipv4
ping6 -c5 ::1
# GNU/Linux**
ping -6 -n 5 ::1
# MS /Windows
ping -w 7500 dominio | find "TTL=" && echo "dominio
encontrado"
# dominio disponible
ping -a www.w3c.org
ping mail.agencia.com.pe
# de @agencia...
ping -c10 servidor
# < 300ms
ping google.com -f -l 1472
# diferente MTU
ping google.com -f -l 576
# conexiones
dialup
Ejemplos
• $ ping -i3 192.168.1.12
• $ ping -s 64 MB???
ping
• # nmap -vv -sP X.X.X.X-Y
# Espera 3s
# Un death
• ping sweep with nmap
• arp-scan --interface=eth0
--localnet
Malas noticias
• Una forma de pasar desapercibido
(oculto), es no responder a los ECHO
ICMP.
– GNU/Linux*
• Para desactivar la respuesta a un Ping:
– echo 1 >/proc/sys/net/ipv4/icmp_echo_ignore_all
• Para volver a activarlo:
– echo 0 >/proc/sys/net/ipv4/icmp_echo_ignore_all
– MS/Windows
• netsh firewall set icmpsetting 8 enable
• netsh firewall set icmpsetting 8 disable
•
•
* /etc/sysctl.conf
net.ipv4.conf.icmp_echo_ignore_all = 1
Scripting - Python
from scapy.all import sr, ICMP, IP, L3RawSocket, conf
# for loopback interface
conf.L3socket = L3RawSocket
# make requests
ans, unans = sr(IP(dst="127.0.0.1-99")/ICMP(), verbose=0)
ans.summary(lambda (s,r): r.sprintf("%IP.src% is alive"))
•
http://stackoverflow.com/a/317206/4279
Port Scan
• Condicionamiento
– De antemano se sabe que el nodo corre un
servicio determinado*
– Saber si es una redirección o mediante
filtrado de paquetes u origen.
– Directamente pasar al Banner grabing o a la
inserción del PAYLOAD mediante metaexploit
o meterpreter.
nmap
• Sirve para saber que Servicios, puertos,
porotocolos (NetBIOS), Sistemas
Operativos, etc están corriendo en un
nodo remoto.
• Utiliza diferentes técnicas de evasión de
detección.
• Es ampliable mediante SCRIPTS (lua).
• CONS > Es lento en emitir respuesta
independiente de la velocidad de la RED.
Ejemplos - nmap [Parametro]
[Host]
• nmap -sP 192.168.1.10 # solo ping
• nmap -sS 192.168.1.10
• nmap -sT 192.168.1.2 # Barrido de puertos
TCP -- sU
• nmap -sS -P0 -sV -O [dirección]
– Versiones, sin ping con escaneo sigiloso (sS) y que OS
• nmap -sT -p 80 -oG – 192.168.1.* | grep
open
• nmap -sP 192.168.0.* # IP de nodos
activos
Ejemplos **
• nmap -sP 192.168.0.0/24
# con subnet
• nmap -sP 192.168.1.100-254
# haciendo ping
• sudo nmap -sS 192.168.0.10 -D 192.168.0.2
# usar un
señuelo
• nmap 192.168.1.3
• nmap -p [Puertos] [Host]
# Lo puertos van separados por
comas
• nmap -p 80,135,2000,8080 192.168.1.3
• nmap -O [HOST]
# Ver el sistema operativo que tiene el
equipo.
• nmap -sP 192.168.1.1-255
• nmap -sV [HOST]
• nmap -sV 192.168.1.3
# Puertos y servicios y luego usar
un exploit
• nmap -sV -O [HOST]
versiones y sistema operativo.
• nmap -sV -O -f [HOST]
• nmap antrax-labs.org
# Para sacar Servicios,
# Evadir firewalls
* Usar NESSUS
Ejemplos
• Encontrar IP’s no usadas en una subnet:
– nmap -T4 -sP 192.168.2.0/24 && egrep “00:00:00:00:00:00″
/proc/net/arp
• Escanear en busca del virus Conficker:
– nmap -PN -T4 -p139,445 -n -v –script=smb-check-vulns –
script-args safe=1 192.168.0.1-254
• Reemplazar 192.168.0.1-254 con las IP’s que se quiere
escanear.
• Escanear red en busca de AP falsos:
– nmap -A -p1-85,113,443,8080-8100 -T4 –min-hostgroup 50 –
max-rtt-timeout 2000 –initial-rtt-timeout 300 –max-retries 3 –
host-timeout 20m –max-scan-delay 1000 -oA wapscan
10.0.0.0/8
• Funciona incluso en grandes redes.
Ejemplos
• Crear un señuelo durante el escaneo de puertos para evitar ser
detectado:
– sudo nmap -sS 192.168.0.10 -D 192.168.0.2
– Escanea los puertos del nodo 192.168.1.10 mientras spoofea la IP
192.168.0.2 como nodo atacante (esta IP debe estar activa) así parecerá
que el escaneo se ejecuta desde la IP192.168.0.2 (la ip spoofeada).
Comprobar los logs en /var/log/secure para comprobar si ha funcionado
correctamente.
• Listar los registros DNS inversos de una subred:
– nmap -R -sL 209.85.229.99/27 | awk ‘{if($3==”not”)print”(“$2″) no PTR”;else
print$3″ is “$2}’ | grep ‘(‘
– Este comando hace un reverse DNS lookup en una subred, se crea una
lista con las direcciones IP de los registros PTR en la subred indicada. Se
puede insertar la subred en notación CDIR (ejemplo: /24 para la Clase C).
Puedes agregar “-dns-servers x.x.x.x” después del parámetro “-sL” si
quieres realizar el listado sobre un servidor DNS especifico.
• Cuántos nodos con Linux y cuántos con Windows hay en una red:
– sudo nmap -F -O 192.168.0.1-255 | grep “Running: ” > /tmp/os; echo
“$(cat /tmp/os | grep Linux | wc -l) Linux device(s)”; echo “$(cat /tmp/os |
grep Windows | wc -l) Window(s) devices
telnet **
• Conexión remota de la vieja escuela,
presente aún en los OS (MS/windows).
• Ejemplos
– telnet localhost 80
– GET index.html
– telnet 192.168.1.44 3306
– Doble Enter
Port Scanner - Python script
#!/usr/bin/env python
import socket
import subprocess
import sys
from datetime import datetime
subprocess.call('clear', shell=True)
# Clear the screen
remoteServer
= raw_input("Enter a remote host to scan: ")
remoteServerIP = socket.gethostbyname(remoteServer)
# Print a banner with information on which host we are about to scan
print "-" * 60
print "Please wait, scanning remote host", remoteServerIP
print "-" * 60
# Check what time the scan started
t1 = datetime.now()
# Using the range function to specify ports (here it will scans all
ports between 1 and 1024)
# We also put in some error handling for catching errors
try:
for port in range(1,1025):
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
result = sock.connect_ex((remoteServerIP, port))
if result == 0:
print "Port {}:
Open".format(port)
sock.close()
except KeyboardInterrupt:
print "You pressed Ctrl+C"
sys.exit()
except socket.gaierror:
print 'Hostname could not be resolved. Exiting'
sys.exit()
except socket.error:
print "Couldn't connect to server"
sys.exit()
t2 = datetime.now()
# Checking the time again
total = t2 - t1 # Calculates the difference of time, to see how long it took to run the
script
# Printing the information to screen
print 'Scanning Completed in: ', total
arp
• Address Resolution Protocol (Protocolo de
Resolución de Direcciones)
• Empareja las direcciones IP con
direcciones físicas (MAC)
• Es conveniente para ataques a nivel de
RED - como MiTM, arp spoofing, etc.
• CONS > Su uso es a nivel de red local, cuando las
conexiones son por IP (no punto de anclaje con MAC), y
sin ruteo estatico en los nodos.
arp
• Envía un paquete ARP request a la
dirección de difusión (broadcast) de la red,
con la dirección IP por lo que se pregunta,
y se espera un paquete de respuesta ARP
reply con la dirección física.
• Para acelerar este proceso, cada host
mantiene en memoria una tabla arp que
relacionada las IP conocidas con sus
respectivas MACs.
Ejemplos
•
•
•
•
route -n
# mostrar mesa de recorrido.
route add -net 0/0 gw IP_Gateway
sudo arp -a # Mostrar el caché ARP
arp -s address hw_addr # Nueva entrada
**
**ARP Poisoning.
traceroute
• Permite seguir la pista de los paquetes
que vienen desde un nodo(host - punto de
red).
• Estadisticas de la latencia de RED, y la
distancia a la que se encuentra un punto
de red.
• Ejemplos
– tracert www.google.com
– traceroute www.google.com
# MS/windows
# GNU/Linux
• Nos da información de los ROUTERs que tiene
netstat
• netstat -tanp | grep LISTEN
• netstat -lpt | egrep "80|http"
• netstat -tup: mostrar todas las conexiones
de red activas y sus PID.
• netstat -tupl: mostrar todos los servicios
de escucha de red en el sistema y sus
PID.
netcat ** - Ejemplos
• -SERVER 1234
• telnet IP-SERVER 1234
• nc -l -p 1234 localhost
–Cliente:
• nc IP-SERVER 1234
• telnet IP-SERVER 1234
Ejemplos
• Servidor http – sencillo
– Servidor:
• # nc -l -p http -c “cat index.html”
– Más apropiado es:
• # while true; do nc -l -p 80 -q 1 <
index.html; done
– Cliente:
• # echo “GET /” | nc www.google.com 80 <
index.html
whois
• Informa sobre el IP, responsable, correo
electrónicos de contacto, empresa
asociada, etc. de un dominio
determinado.
• Ejemplos
– whois www.yahoo.com
– dig www.yahoo.com
– nslookup www.yahoo.com
Recomendaciones
• Usar Herramientas instaladas propias del
sistema - Crear las tuyas propias.
• La instalación deja rastros en los
computadores.
• Los enrutadores tienen registro de las
solicitudes.
• Los Sistemas Operativos, tienen registro
de las solicitudes de conexión de DNS
(usa IP).
Terminología de ataque
• Wireless Sniffers: son rastreadores de las redes
inalámbricas, por medio de los cuales pueden desviar la
información que está siento transmitida en las señales.
• Packet Sniffers: Les permiten reconocer los tipos de
paquetes que viajan dentro de la red, y capturar los que
necesitan.
• Port Scanners: Esta herramienta es muy común y su
principal utilidad es buscar puertas abiertas o sin
ninguna clase de seguridad para atacar los sistemas.
• Password Crackers: Son algoritmos de fuerza bruta que
atacan cualquier tipo de encriptación para descubrir
contraseñas de acceso.
Referencias
• Linux Networking How-To
• http://www.advanced-ipscanner.com/download.php?lng=en
• http://www.secdev.org/projects/scapy
Descargar