Pentesting con Kali I -
Conociendo Kali Linux
Contribuciones 14
COMMENTS BASH CONTRIBUCIONES HACKING KALI LINUX
PENTESTING
Esta es la primera de las 18 cápsulas en
las que trataremos sobre Penetration With
Kali Linux, la estructura será similar a
la de la certificación OSCP de OffSec.
A lo largo de las entradas veremos
básicamente las cinco fases de un
penetration testing, adicionando el
manejo de algunas tools esenciales como
metasploit, nmap, wireshark, ncat, etc.
Veremos también algo de web explotation y
crearemos nuestro propio laboratorio para
realizar las prácticas. (Para abordar
sobre la terminologia y demas pasos de un
Pentesting seguir el siguiente post -
Pentesting con Kali Taller #1)
Aclaración: Por una cuestión de gusto,
comodidad y performance, la distro a
utilizar será la Kali 1.1.0a lanzada el
13 de Mayo de 2015, sin embargo, quien
guste utilizar la 2.0 puede hacerlo
tranquilamente ya que las tools que
veremos están en ambas y el resto es
técnica. Con ésto, quiero decir que no es
fundamental la distro a utilizar, pueden
seguir las entradas con Parrot, BackBox,
Cyborg o la que quieran, todas están
basadas en linux, tal vez cambie un poco
la estructura de directorios pero en
esencia es lo mismo.
No vamos a detallar el proceso de
descarga e instalación, solo mencionar
que la ISO la pueden descargar desde acá y
la documentación de Instalación. (Si
desean ver algun video sigan el siguiente
post - Pentesting con Kali #2 Instalación y
conociendo el entorno )
Para las cápsulas utilizaremos una
máquina virtual sobre VMWare, pueden
hacerlo también con Virtual Box. No hace
falta que instalen la iso, pueden
correrla en LiveCD, pero hay que tener en
cuenta que si guardas o instalas cosas y
luego apagas la máquina virtual vas a
perder los cambios realizados, en mi caso
la dejo en pausa.
Por las dudas, las credenciales por
defecto son root-toor.
Una vez levantado el Kali, el primer paso
que nos conviene dar, es abrir una
consola y lanzar los siguientes comandos:
apt-get dist-upgrade - Instala actualizaciones y
dependencias.
updatedb - Actualiza una base de datos
y archivos del sistema.
apt-get update - Actualizar los repositorios y
listado de paquetes.
apt-get upgrade - Actualización del sistema
operativo y aplicaciones.
Bien, si hasta aquí sigue todo
funcionando y no nos arrojó ningún kernel
panic vamos bien.
Esquema:
1- Conociendo Kali Linux
1.1 Familiarizándonos con la distro.
1.2 Manejo de servicios.
1.3 Entorno Bash & shell scripting.
1.1 Familiarizándonos con la distro.
Comenzaremos viendo la estructura de Kali. Como todo
Linux, tiene un root y debajo los 15 directorios:
Los recursos más importantes de Kali es
el siguiente:
Veamos la forma de localizar archivos:
Find: Si queremos buscar un archivo por
nombre, entonces usaremos find de la
siguiente manera: find -name
NombreDeArchivo
Locate: este comando es más rápido que
find y puede buscar en todo el sistema de
archivos con facilidad. Este comando no
va a funcionar si no realizamos el
updatedb anterior:
locate NombredeArchivo
Which: nos sirve para averiguar dónde se
encuentra instalado un determinado
programa:
which NombreDeArchivo
Todos poseen parámetros para filtrar las
búsquedas, como son nociones muy básicas
de linux nosotros sólo las mencionaremos.
Si no conocías estos comandos, estás
invitado a profundizar.
1.2 Manejo de servicios.
Kali Linux trae la mayoría de los
servicios como MySql, ssh, etc apagados
por defecto. Por lo tanto, si queremos
utilizar servicios como por ejemplo
apache, debemos levantarlo primero.
Para inicializar un servicio debemos
utilizar la siguiente sintaxis:
#service nombre-del-servicio start
Si queremos hacer que el servicio se
inicialice al bootear nuestro Kali:
#update-rc.d nombre-del-servicio enable
Para finalizar o para un servicio:
#service nombre-del-servicio stop
Comencemos manejando ssh para poder
conectarnos a nuestro Kali con una
comunicación cifrada bajo protocolo
seguro.
Inicializamos ssh de la siguiente manera:
#service ssh start
Para corroborar que el servicio ha sido
inicializado podemos ejecutar el
siguiente comando:
#netstat -antp|grep sshd
De ésta manera validamos que SSH está
funcionando y corriendo en el puerto TCP
22 mediante el uso del comando netstat y
canalizando el resultado en el comando
grep para filtrar la salida para sshd. En
el caso de que nos sea útil tener el
servicio ssh inicializado al bootear
nuestro Kali, deberíamos llamar al
archivo update-rc.d que está ubicado en /
usr/sbin/ para decirle que ssh debe estar
habilitado.
#update-rc.d ssh enable
1.3 Entorno Bash & Shell Scripting
Bash proporciona un potente entorno para
trabajar, y un motor de secuencias de
comandos para hacer uso de la
automatización de los procedimientos
mediante un script bash. Supongamos que
queremos identificar los subdominios y
sus correspondientes direcciones ip
pertenecientes a un sitio, si lo hacemos
de manera manual sería largo y tedioso,
con una herramienta automatizada
podríamos hacerlo más rápido, pero tal
vez no es exactamente lo que buscamos, en
cambio si lo hacemos con un script
podemos manejar de manera granular lo que
estamos buscando
$wget www.cisco.com
Aquí hemos descargado el index de
cisco.com, para poder verlo podemos hacer
un cat o para abrirlo en un editor
podemos usar nano o vi
cat index.html o nano index.html
(Es recomendable investigar un poco más sobre
estos comandos si se desconocen).
Para buscar los hipervínculos podemos
usar grep, si tiramos un grep de todos
los href= veremos algo molesto de
entender.
Si nos ayudamos de otros comandos para
parsear el contenido como lo es cut,
podremos visualizar el contenido de
manera algo más amigable.
grep "href=" index.html | cut -d "/" -f3
Aquí usamos grep (para buscar) + string a
buscar + archivo en el cual buscar |
(para concatenar comandos) + cut (para
extraer segmentos) + -d (carácter
delimitador) + "/" (como carácter
delimitador) + -f (para seleccionar rango
del tabulador) + 3 (rango tabulado).
De esta forma obtendremos todos los
hipervínculos del sitio.
Bien, ahora supongamos que queremos
eliminar los repetidos y también
ordenarlos alfabéticamente para verlos de
manera má ordenada.
grep "href=" index.html | cut -d "/" -f3
| grep "\." | cut -d '"' -f1 | sort -u
El nuevo comando que hemos agregado es
sort con el parámetro -u , el primero
ordena la lista dada y el segundo hace
que el orden sea único.
Hasta aquí ya tenemos nuestro listado de
urls únicas que hemos extraído del sitio,
ahora obtengamos las direcciones ip de
cada uno.
Podríamos hacerlo con tools como nmap
pasándole la lista, pero no es la idea,
buscamos aprender el proceso que las
herramientas automatizan, vamos a hacer
un script que nos liste las direcciones
ip de cada url.
Primero tenemos que guardar nuestro
listado, para ello:
grep "href=" index.html | cut -d "/" -f3
| grep "\." | cut -d '"' -f1 | sort -u >
list.txt
Podemos hacer un cat de list.txt para
corroborar si es lo mismo que hemos visto
en pantalla.
for url in $(cat list.txt); do host $url;
done | grep "has address" | cut -d " " -
f4 | sort -u
Aquí decimos que a la variable url se le
asignan los valores de cada una de las
urls que tenemos en nuestro list.txt,
obtenga el host y luego parseamos con los
comandos que ya conocemos.
Entonces obtenemos el siguiente listado
de direcciones ip únicas:
A este ejemplo le podemos adicionar
parámetros al comando host para descubrir
servicios activos entre otras cosas.
Hasta aquí el primer post sobre
penetration with kali, es totalmente
introductorio, si ya conocían lo expuesto
espero que les haya servido para
refrescar un poco, en caso de no conocer,
les recomiendo busquen algun manual de
linux básico para familiarizarse con el
entorno y capacidades del sistema
operativo linux independientemente de la
distro.