OSCP, lecciones aprendidas

Estas últimas semanas he estado bastante atareado preparándome para la certificación OSCP de Offensive Security. Es una certificación que tenía ganas de enfrentarme a ella, ya que había oido mucho de ella que no es nada facil aprobarla y requiere mucha dedicación y esfuerzo. Y vaya que ha sido así.

En este post quería recopilar aquellas habilidades o procedimientos que he aprendido, o mejorado, durante la práctica de laboratorio. Creo que me servirá para afianzar el conocimiento y a vosotros si estais en proceso de preparación para la certificación. No pretendo enumerar una metodología rigurosa, si no más bien recalcar algunos tips sin demasiado orden. Probablemente incluso edite el post varias veces según vaya acordándome de nuevos tips a resaltar.

Enumeración

  • Lo habrás leido en mil sitios, pero es cierto: enumeración es la clave para ser efectivo y no perder el tiempo más adelante. Antes de comenzar a acuchillar el activo, es necesario tener toda la información posible sobre los servicios visibles y sus versiones, para así poder recopilar los posibles vectores de entrada y tomar una decisión sobre por donde atacar. Sin toda la información completa, es posible que empieces a lanzar pruebas a un servicio que no hay nada por rascar, y perder un tiempo valioso por no haber completado totalmente la fase de enumeración.

  • Completando el anterior punto, si ves que un servicio parece vulnerable pero llevas un tiempo probando y no hay manera de que salte la liebre, detente. Haz una paradinha, como decía mi antiguo compi y colega Josemi Vuelve atrás, observa en conjunto, elige otro vector de ataque y a atizar. No te ofusques, es muy facil tirarte horas aporreando el teclado intentando avanzar por un camino que no lleva a ningún sitio.

  • En la mayoría de ocasiones, encontrar un posible vector de ataque válido se trata simplemente de buscar en google o en searchsploit el servicio y su versión, ya que probablemente sea vulnerable y exista exploit público.

  • Corolario al anterior, usa únicamente exploits de fuentes de confianza, como exploit-db o metasploit. Evita exploits en sitios tipo pastebin o te puedes llevar una sorpresa desagradable ;)

Explotación

  • Si encuentras un panel de login, o un servicio que pide credenciales, prueba contraseñas por defecto, o triviales. Funciona con bastante frecuencia.

  • Familiarízate con msfvenom, vas a tener que generar mucha reverse shell, webshells, o modificar shellcodes de algún exploit. Ve guardando tu arsenal que vas generando que seguramente lo vayas utilizando en el futuro. Suelo nombrar los ficheros bastante autodescriptivos incluyendo el puerto de la shell reversa. Así no tengo que acordarme. Ej: reverse4444.php, meterpreter_reverse_tcp9999.exe.

  • Intenta practicar evitando usar los exploits de metasploit. Casi siempre hay equivalente en exploit-db. En el examen solo podrás usar los módulos de exploit en una única máquina, por lo que deberás estar familiarizado en usar y modificar exploits públicos. Practica modificando el shellcode a tu gusto. Si has practicado los ejercicios de buffer overflow, no te será complicado.

Elevación

  • Créate desde el primer día un diccionario de credenciales que obtengas. A veces se repiten entre máquinas. Cuesta poco trabajo lanzar un hydra con tu diccionario propio a nuevos servicios que encuentres.

  • Si encuentras un hash, búscalo en google o usa la plataforma de cracking para estudiantes. No gastes mucho tiempo intentando crackearla por fuerza bruta.

  • Las lecturas imprescindibles para aprender elevación de privilegios:

  • Pentest Blog
  • Fuzzy Security
  • Pwnwiki.io
  • Pentestlab blog

Varios

  • Documenta según vas probando. Incluso las pruebas que no funcionan. Capturas de pantalla, outputs de programas, linea de comando lanzado. En otra máquina te podría servir. No dejes la documentación para cuando has terminado de comprometer el equipo o acabarás haciendo el doble de faena.

  • Ve creándote un cheasheet o chuletas de los comandos más comunes que lanzas. Ejemplos: nmap, hydra, msfvenom, tcpdump, netcat, reverse shells en diferentes lenguajes..

(En edición….iré recopilando las URL que más me han parecido útiles e interesantes para leer y extraer info)

social