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: ” &gt; /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