
Programa de seguridad para recuperar contraseñas y realizar pruebas de penetración en servidores, enrutadores y dispositivos IoT mediante ataques de fuerza bruta.
Programa de seguridad para pruebas de penetración en servidores, routers y dispositivos IoT
(por cierto, mi dirección de bitcoin es 3A7yuqBcPAcVEM59bNAVQdTCmkxRb5JRgE)
(Aquí hay una alternativa, también para BTC, ya que me han llegado informes de que algunas carteras de bitcoin no admiten ciertas direcciones: 1PEDKUiUTxGNJ3XTPfXCTAjpzVzX1VZAme)
Saludos, camaradas, y bienvenidos a UBERSCAN 1.0
UBERSCAN está diseñado para ayudar en las pruebas de penetración de servidores y redes, y como una herramienta para personas como yo que intentan iniciarse en el negocio del hacking ético para comprender, por ejemplo, cuántos dispositivos son vulnerables a, digamos, el virus Mirai. Sí, es una especie de wardialler y sí, se puede usar para descifrar contraseñas de servidores y dispositivos IoT, y no, no debe usarse con fines siniestros o nefastos (ver AVISO LEGAL).
Ejemplo de uso desde la línea de comandos:
uberscan -user:admin -passblank -scantype:telnet -random_ip -forktimes:20
o
uberscan -user:root -password:admin -scantype:ssh -random_ip -forktimes:20
o quizás
uberscan -userfile:wordlist.txt -passfile:wordlist.txt -scantype:telnet -random_ip -forktimes:15
¡Intenta combinar y ajustar estas diversas opciones hasta que encuentres cosas divertidas con las que jugar! (SOLO ES BROMA, NO QUIERO IR A LA CÁRCEL AAAAAAARRRGGGHHHHHH!)
Este programa (en adelante denominado UBERSCAN o uberscan) se distribuye bajo la licencia GPL 3. Todos los derechos relevantes reservados. UBERSCAN TIENE DERECHOS DE AUTOR (c) Batch McNulty 2017. Puede distribuir, modificar y/o copiar UBERSCAN sin permiso siempre que cumpla con los términos de la licencia GPL 3.
Esta utilidad está diseñada para USO LEGAL ÚNICAMENTE. No me haré responsable del uso malintencionado. Los hackers maliciosos ya tendrán sus propias herramientas; UBERSCAN está diseñado para ayudar a asegurar sistemas informáticos, no para destruirlos. Si encuentra servidores vulnerables usando los escáneres -random_ip y -random_ipblock, se le anima a contactar a los propietarios e informarles sobre el agujero de seguridad.
¡Sea amable! ¡Eso es una orden!
Por favor, envíe todas las amenazas de muerte, órdenes de extradición y ofertas de trabajo sospechosas a [email protected]. Intentaré responder pero no puedo garantizar nada...
Tiene algunas dependencias, por lo que incluyo un archivo batch que debería instalarlas automáticamente. Simplemente abra una ventana de terminal en el directorio donde se encuentre y escriba
sudo bash INSTALL.bash
..espere (puede llevar mucho tiempo), y debería poder ejecutar UBERSCAN (pruebe perl uberscan.pl si se queda atascado)
En caso de que el programa de instalación no funcione, las bibliotecas requeridas son:
WWW::Curl::Easy HTTP::Request Net::SSH::Expect Net::Telnet Net::FTP Net::POP3 IO::Socket::INET Scalar::Util Fcntl utf8 Encode
Scalar::Util, Fcntl, utf8 y Encode deberían estar incluidos en su distribución de Perl, que viene con Linux. Los demás probablemente necesiten instalarse por separado... lamentablemente en el caso de Curl::Easy la dependencia en sí misma tiene una dependencia, que puede ser difícil de encontrar. Si el archivo INSTALL.bash no deja su computador funcionando con UBERSCAN, intente ejecutar uno o todos estos comandos, y luego ejecute el archivo de instalación nuevamente:
sudo apt-get install libcurl4-doc
sudo apt-get install libcurl3-dbg
sudo apt-get install libgnutls-dev
sudo apt-get install libidn11-dev
sudo apt-get install libkrb5-dev
sudo apt-get install libldap2-dev
sudo apt-get install librtmp-dev
sudo apt-get install zlib1g-dev
Además, el archivo INSTALL.bash requiere cpan, que debería venir con Linux; si no es así, escriba
sudo apt-get install cpan
en la terminal antes de ejecutarlo.
Una cosa más muy importante:
El módulo Net::SSH::Expect requiere que realice algunos cambios en uno de los archivos del sistema. Es:
/etc/ssh/ssh_config
Necesitará permisos de superusuario para modificarlo, así que cárguelo en su editor favorito y agregue las siguientes líneas:
Host *
StrictHostKeyChecking no
UserKnownHostsFile=/dev/null
(La línea "Host *" puede que ya exista; si es así, no agregue una nueva)
Si no puede hacer esto, uberscan seguirá funcionando, simplemente no podrá usar la opción -scantype:ssh.
2.1 Introducción
UBERSCAN fue diseñado en una plataforma Ubuntu Linux, por lo que no puedo garantizar que funcione en otro sistema, aunque estoy bastante seguro de que funcionará en cualquier PC con Linux. Windows y Macs, no tanto, pero siéntanse libres de ayudar.
UBERSCAN puede escanear una red TCP/IP en busca de dispositivos con contraseñas débiles (incluyendo routers y cajas IoT) y servidores de correo SMTP vulnerables a spammers. Su función principal es realizar ataques de fuerza bruta a servidores protegidos por contraseña (¡con fines éticos ÚNICAMENTE, por supuesto!)
Puede escanear los siguientes servicios / vulnerabilidades:
UBERSCAN está programado con los puertos predeterminados, pero puede anular esto con la opción -port:.
2.2 Nota sobre el modo de lista de palabras:
El modo de lista de palabras (-passlist:textfile.txt y -userlist:textfile:txt) recorre las listas de palabras e intenta realizar fuerza bruta en las IPs seleccionadas con ellas.
El modo de lista de palabras difiere en diferentes escaneos. Cuando selecciona un bloque de IP, rango de IP o lista de IPs, UBERSCAN recorre los objetivos e intenta el mismo nombre de usuario / contraseña en cada IP, luego regresa e intenta el siguiente nombre de usuario y/o contraseña de la lista hasta que se agota la(s) lista(s). Este es un intento bastante básico de superar la antigua seguridad de contraseñas de "tres intentos y fuera" - si la lista es lo suficientemente larga, para cuando la misma IP vuelva a aparecer, tendrá un nuevo "intento".
El modo de generación aleatoria de IP (-random_ip) funciona de manera diferente. Debido a que las IPs se eligen al azar y la búsqueda puede continuar indefinidamente, no hay una lista de IPs para recorrer, por lo que toda la lista de palabras debe aplicarse al objetivo de una sola vez.
2.3 El escáner SSH:
Programar el escáner SSH me ha dado muchos problemas. Lo he programado para que busque los símbolos de prompt "~", ">" y "#", así como un mensaje "Welcome to", una gran cantidad de salidas de tipo "bad password" y también he creado una tercera opción: si no encuentra ninguna, crea un archivo "SSH-MAYBES.txt". No debería generar falsos negativos o falsos positivos, pero si lo hace, por favor envíeme los archivos que genere (debidamente editados, por supuesto) para que pueda solucionar el problema.
2.4 Huevos de pascua:
Hay un par de referencias culturales divertidas en uno o dos de los mensajes de estado y error del programa. Esto le da a UBERSCAN un poco de personalidad. Si esto crea confusión o parece demasiado tonto, siempre estoy feliz de recibir comentarios.
2.5 Despedida y parte de súplica quejumbrosa:
Admito que UBERSCAN es un poco tosco, pero no tiene por qué quedarse así. Incluyo una dirección de bitcoin con esto, y si obtengo una respuesta lo suficientemente buena, trabajaré en refinar su tosquedad y habrá UBERSCAN 1.1, 1.2, quizás incluso un UBERSCAN 2.0. ¡Todo depende de ti! Envía tu dinero a la dirección de bitcoin:
1PEDKUiUTxGNJ3XTPfXCTAjpzVzX1VZAme
-Recuerda, si usas este programa como parte de tu trabajo, ¡realmente deberías pagar! (Como incentivo adicional, si recibo suficiente dinero y la gente me lo pide, ¡quizás incluso elimine la pantalla de aviso!)
Aunque funcionará sin ellas, se recomienda encarecidamente otorgar a UBERSCAN privilegios de superusuario.
UBERSCAN es una utilidad de línea de comandos y, como tal, espera que se le pase al menos una opción.
Estas opciones en detalle:
TIPOS DE ESCANEO:
-scantype:xxx Establece el tipo de escaneo. "xxx" puede ser SSH, FTP, POP3, SMTP, HTTP, Telnet o Banner. Consulte -ftpanon y -smtpbug
-port:nn Establece el puerto a uno diferente del predeterminado para ese servicio. ("-scantype:banner" busca en el Puerto 1433, el puerto SQL).
-ftpanon Busca servidores ftp anónimos. Se usa en lugar de -scantype y -user -pass
-smtpbug Prueba el bug de smtp. Se usa en lugar de las opciones -scantype y -user -pass
-spamcheck Solo funciona bajo escaneos "-scantype:smtp". Cada vez que se conecta a un servidor, comprueba si es vulnerable al abuso por parte de spammers. Desactivado por defecto.
-novrfy Al realizar un escaneo SMTP, evita que UBERSCAN emita comandos VRFY. Implica -spamcheck.
ESCANEO DE NOMBRE DE USUARIO Y CONTRASEÑA:
-user:xxx -pass:xxx Establece el nombre de usuario / contraseña a probar. Si está navegando por Internet en busca de servidores aleatorios con la opción -random_ip, esta y -userblank / -passblank son las únicas opciones de nombre de usuario / contraseña que UBERSCAN aceptará. Normalmente usará ambas, pero son intercambiables con las opciones -userfile y -passfile (lista de palabras) donde estén permitidas, así como con las opciones -userblank y -passblank. Tenga en cuenta que no hacen nada si -scantype está configurado como SMTP o si se han establecido las opciones -ftpanon o -smtpbug.
-userblank -passblank -userblank lo configura para probar un nombre de usuario en blanco, -passblank establece una contraseña en blanco. Esto puede ser útil para algunos desafíos HTTP donde uno o ambos se dejan en blanco por defecto.
-userfile:wordlist.txt -passfile:wordlist.txt Prueba cada nombre y contraseña en la lista de palabras especificada. Solo puedo garantizar que funcionen con palabras separadas por espacios normales; el uso de listas de palabras que contengan acentos, caracteres no latinos y símbolos es bajo su propio riesgo (aunque el símbolo "@" debería funcionar bien).
REGISTRO, REINTENTOS, TIEMPOS DE ESPERA, ESCANEO DE PUERTOS Y PAUSA:
-debug Registra los intentos de inicio de sesión fallidos, así como todos los errores excepto los más comunes. Los errores registrados en modo debug son desconexiones repentinas mientras se está conectado a servidores; junto con los intentos de inicio de sesión fallidos, también se puede usar para diagnosticar respuestas inesperadas. También guarda páginas web recopiladas en modo -scantype:html
-logall Como -debug, pero también registra errores muy comunes que de otro modo ahogarían los más interesantes (están marcados como "Banal error"). Implica -debug (es decir, no es necesario ingresar la opción "-debug" si usa "-logall").
-csv TODOS los archivos de salida, con la excepción de las páginas web guardadas en modo de escaneo html, se guardan en formato CSV. Los datos guardados, en el orden guardado son: ID del proceso, tipo de escaneo, dirección IP, número de puerto, nombre de usuario, contraseña y "minutesup" (el número de minutos que UBERSCAN ha estado funcionando).
-whois Realiza una consulta WHOIS al servidor cuando se encuentra una contraseña y registra el resultado en un archivo de texto (whoisreport.txt). Desactivado por defecto.
-max_retries:nn Está configurado en 5 por defecto. Si eres uno de esos pobres paranoicos trabajando detrás de sus proxies y conexiones wi-fi de mala calidad, siéntete libre de subirlo a 15 o 20 - ¡yo lo hice! Una persona normal podría incluso querer ajustarlo hacia abajo; por otro lado, si realmente quieres asegurarte de probar cada contraseña en cada IP, podrías configurarlo ridículamente alto, como -max_retries:999 (¡aunque no lo recomiendo!)
-timeout:nn donde nn es un número. Establece la variable de tiempo de espera en segundos. El valor predeterminado es 60. Si estás detrás de un proxy, querrás que sea bastante alto, en los cientos (escribí este programa detrás de un proxy). Si usas mucho el escaneo SSH, quizás quieras que sea más bajo debido a la forma en que funciona SSH::Expect - no devolverá datos hasta que haya pasado el período de tiempo de espera. Si solo lo usas en tu LAN y nunca te conectas a Internet, quizás incluso más bajo. Personalmente no lo pondría por debajo de 60 segundos.
-portscan_timeout: De nuevo, es un número de segundos. Está configurado bajo, pero ocasionalmente, si quieres estar completamente seguro, quizás quieras subirlo a 5 o incluso 10. Es tu elección.
-noportscan Desactiva el escaneo de puertos. Esta característica es útil si estás detrás de proxychains o un programa de proxy similar a proxychains, o si estás bastante seguro de que tienes una dirección IP / puerto válidos para hackear, y no quieres arriesgarte a saltártelo por error. Especialmente cuando tienes una conexión deficiente.
-pause Pausa UBERSCAN después de procesar las entradas para que puedas verificar que lo has configurado correctamente. Desactivado por defecto.
MULTITAREA:
-forktimes:nn Utiliza procesamiento paralelo para realizar múltiples conexiones al mismo tiempo - Tenga en cuenta que la opción -forktimes solo funciona si la opción -random_ip o -random_ipblock está configurada. Personalmente elijo un valor entre 5 y 15, aunque su rendimiento puede variar según el ancho de banda disponible. Se sabe que se bloquea en este modo, por lo que como alternativa puede ser más fácil simplemente configurar un archivo batch con muchos comandos como este copiados y pegados:
perl uberscan.pl -user:admin -pass:password -random_ip -scantype:telnet &
y luego ejecutarlo con bash.
OPCIONES DE IP:
Por defecto, UBERSCAN busca direcciones IP de un archivo llamado ipnumbers.txt. Si esto es inconveniente, hay muchas opciones de línea de comandos que le permiten seleccionar IPs de su propio archivo, seleccionarlas aleatoriamente, o generarlas (de forma rudimentaria) a partir de rangos o bloques de IP. ¡Incluso puede seleccionar una dirección IP individual y escanearla - muy bueno para ataques de diccionario intensos!
-ipfile:filename.txt Obtiene direcciones IP del archivo filename.txt. Puede ser cualquier archivo. Busca en el archivo dado cualquier cosa que coincida con una dirección IP y la coloca en una lista que luego escanea. Esto significa que debería poder analizar su propia salida, por lo que puede ejecutar un escaneo -random_ip con las opciones -debug o -logall activadas, renombrar el archivo errors.txt que genera y alimentarlo en un nuevo escaneo sin tener que hacer toda esa molesta edición.
-ipblock:nnn.nnn.0.0/16 -ipblock:nnn.nnn.nnn.0/24 -ipblock:192.168.0/16 - Busca todo desde 192.168.0.0 - 192.168.255.255 -ipblock:192.168.1/24 - Busca todo desde 192.168.1.0 - 192.168.1.255 Escanea el bloque de IP seleccionado (/16 o /24) en lugar de usar ipnumbers.txt. No es muy inteligente - solo cuenta desde cero, por lo que si ingresa 192.168.1.0/16, aún buscará desde 192.168.0.0 hasta 192.168.255.255. No se preocupe, ¡siempre está -iprange!
-iprange:nnn.nnn.nnn.nnn - nnn.nnn.nnn.nnn -iprange:192.168.0.0 - 192.168.0.3 -iprange:192.168.5.0 - 192.168.7.2 Escanea el rango especificado de números IP. Solo puede procesar los dos últimos octetos.
-ipsingle:nnn.nnn.nnn.nnn -ipsingle:192.168.0.1 Escanea una sola IP - ¡muy potente si se usa junto con las opciones -userfile: y -passfile:!
-random_ip Recorre una rutina que genera números IP aleatorios para que puedas navegar por los salvajes internets en busca de acción. ¡NO USES ESTO CON FINES NEFASTOS!
-random_ipblock:nnn -random_ipblock:nnn.nnn Como -random_ip, pero solo busca en el bloque de IP especificado. ¡Tenga en cuenta que los ceros finales y la notación de barra NO SE USAN EN ESTA OPCIÓN! (a diferencia de la opción -ipblock) Ejemplo:
perl uberscan.pl -scantype:banner -random_ipblock:192.168 perl uberscan.pl -scantype:banner -random_ipblock:192
LEGALESE / TEXTO ESTÁNDAR:
El emocionante mundo del texto legal estándar ahora está disponible para usted; simplemente invoque UBERSCAN con la opción -gpl para ver la licencia bajo la que se distribuye. En serio, cualquier persona que esté pensando en editar y/o redistribuir este programa debería leerlo; tiene permiso para hacerlo, pero debe seguir mostrando mi nombre y darme crédito por escribir el programa original.