Sunteți pe pagina 1din 3

- Security Art Work - http://www.securityartwork.

es -
Bind Shell ocultas
Posted By Maite Moreno On 14 de marzo de 2014 @ 12:35 pm In General | 9 Comments
Para poder realizar una gestin adecuada de la seguridad de una empresa u organizacin, es
imprescindible disponer de un inventario detallado de los activos conectados a la red as como de todos los
servicios que stos ofrecen. De este modo, en caso de detectar un activo o servicio desconocido, se debe
averiguar su origen y evaluar si supone una amenaza para la organizacin.
Es recomendable habilitar slo aquellos servicios que sean estrictamente necesarios para el
funcionamiento de los sistemas y aplicaciones. En caso de equipamiento que est expuesto en zonas DMZ
o que deban ser accedidos desde Internet, se deben tomar medidas adicionales de proteccin asegurando
previamente un bastionado de los equipos y limitando el acceso desde la red origen concertada.
Muchos troyanos utilizan habitualmente los mismos puertos, lo cual no significa que se tenga una infeccin
de malware si se encuentra alguno de esos puertos abiertos, pero si ese puerto no es habitual que se use
en una organizacin y de repente se detecta abierto nos debera generar una alerta para revisarlo cuanto
antes. Una revisin peridica de los servicios ofrecidos al exterior podra ayudarnos a la hora de
detectar un posible ataque, sea a travs de un intento de explotacin de una determinada vulnerabilidad,
conexiones remotas no autorizadas, malware, exfiltracin de datos o similar.
Como ya se public en el informe Deteccin de APTs
[1]
(pginas 122 y siguientes), existen diferentes
tcnicas que una organizacin puede utilizar para llevar a cabo esa revisin peridica de servicios/puertos
abiertos que se encuentren accesibles desde redes externas. Algunas de ellas son las siguientes:
Preprocesador para Snort: Passive Port Discovery:
[2]
Es posible desarrollar un preprocesador
para un IDS basado en Snort que nos permita alertarnos de nuevos equipos y nuevos servicios, tras
analizar el trfico de una red previamente conocida.
Monitorizacin de servicios sospechosos utilizando la herramienta Nessus: Como se
explica en el informe Deteccin de APTs se puede configurar Nessus para que de manera diaria,
semanal, mensual, etc. nos escanee nuestra red en busca solo de equipos levantados/puertos
abiertos -se puede configurar para que no lance ningn plugin de forma que sea lo menos intrusivo-
nos busque las diferencias entre un informe y otro y nos alerte al correo, por ejempl o. La opcin de
pago de Nessus permite la opcin Compare (Diff Results) que nos compara entre dos informes de
resultados y nos muestra las diferencias, sin embargo, tambin podemos ingenirnoslas para
comprobar la diferencia entre dos informes sin necesidad de tener la versin pro de esta
herramienta.
Deteccin de servicios sospechosos con Nmap: Tal y como indicamos tambin en el informe
mencionado anteriormente, tambin podemos ver que con Nmap y Ndiff podemos analizar de
manera peridica nuestras redes y que nos alerten de posibles servicios sospechosos detectados o
de servicios que inicialmente estaban disponibles pero han dejado de estar levantados.
Pero, qu ocurre cuando, usando las tcnicas de escaneo descritas anteriormente, somos
incapaces de detectar un puerto a la escucha cuando realmente s que lo est? Me hice esta
pregunta tras leer recientemente un post en Shell is coming
[3]
, en el que Borja Merino
[4]
publicaba
una versin modificada de la bind shell shell_bind_tcp (incorporada en Metasploit), que l ha denominado
Hidden Bind Shell
[5]
. Dicho esto payload es una versin mejorada sobre otro payload que Borja tambin
public anteriormente denominado ACL Bind Shell
[6]
y que nicamente supone un incremento de unos 30
bytes.
El objetivo de la hidden bind shell, tal y como se describe en el blog, es crear una bind shell que
responda paquetes RST ante cualquier intento de conexin originado desde una IP diferente a
la embebida en el propio payload. De esta forma, cualquier herramienta que trate de escanear el
equipo comprometido mostrar como CLOSED el puerto asociado al shellcode.
Para probar el funcionamiento de esta bind shell me he bajado el payload
[7]
del pull request
[8]
lanzado a
Metasploit y me he creado una hidden bind shell que he denominado backdoor_oculto.exe y que solo
ser visible/accesible a travs de la IP 192.168.1.2 en el puerto 1024:
Tras ello, en mi entorno de laboratorio voy a comprometer la mquina 192.168.1.46 ejecutando mi
backdoor_oculto.exe en la misma. Si, como vemos a continuacin, intento escanear va Nmap mi
mquina comprometida desde una IP diferente a la 192.168.1.2, en este caso me he puesto la IP
Bind Shell ocultas | Security Art Work http://www.securityartwork.es/2014/03/14/bind-shell-ocultas/print/
1 de 3 24/03/2014 15:13
192.168.1.11, el resultado que me da en el puerto 1024 es que est cerrado (CLOSED). Cambiando mi IP
a la del atacante (192.168.1.2) comprobamos, tras hacer la misma operacin, que en este caso el puerto
1024 aparecen como OPEN a ojos del atacante y el mismo puede obtener una shell en dicho equipo
comprometido:
Un IDS bien configurado con las firmas adecuadas detectara probablemente cundo ha habido una
conexin a esa bind shell por parte del atacante, sin embargo, no se me ocurre, utilizando las
tradicionales tcnicas de escaneos preventivas expuestas anteriormente (nessus, nmap, etc.) cmo
detectar que ese puerto est a la escucha en mi equipo (si se os ocurre alguna por favor compartidla :) ).
De hecho, he probado diversos escaneos con Nmap, con diferentes opciones de escaneo [1] y los
resultados siempre han sido los mismos, como se muestra a continuacin:
Una forma que podra ser viable para detectar los puertos sospechosos que estn a la escucha sera de
forma LOCAL en mis mquinas, ejecutando de manera peridica netstat en cada una de las mquinas de
nuestra red, almacenando los resultados y comparando los mismos de un escaneo a otro para que nos
alerte cundo aparece un nuevo puerto a la escucha y que antes no lo estaba, para que podamos
investigar el motivo por el que ahora se encuentra de esta forma. Este proceso puede ser muy lento si
tenemos que ir equipo por equipo ejecutando netstat as que, dependiendo de la infraestructura que exista
o diseo de la red podemos pensar en automatizar este proceso.
Por ejemplo, si nuestras mquinas forman parte de un Active Directory (AD) por el que podemos
administrar de manera centralizada los equipos, inicios de sesin, establecer polticas a determinadas
unidades organizativas (ou), grupos de usuarios, desplegar programas en muchos equipos a la vez, etc.
Tal y cmo se explic en el post Recoleccin distribuida de IOCs
[9]
, podemos valernos de diversos
mtodos que podemos implementar con dicho AD para automatizar el proceso de ejecucin de un script en
varias mquinas a la vez de manera peridica. Powershell podra ayudarnos a elaborar un script de estas
caractersticas, por ejemplo podramos apoyarnos para realizarlo en la funcin Get-NeworkStatistics
[10]
desarrollada por Shay Levi. La idea ms simple por ejemplo -grosso modo- sera partir de un fichero
origen en el que estuvieran todos los puertos que se supone que una determinada mquina debe tener a la
escucha, ejecutar nuestro script por el que se obtengan va netstat todos los puertos en LISTENING, y cuyo
resultado sea volcado en un fichero. Este fichero se comparara con el original y en el caso de que se
detecte un puerto nuevo a la escucha que nos notifique de la forma que le indiquemos. Finalmente, tras
acabar el proceso de notificacin, que se elimine el nuevo fichero creado. Comentar que, en caso de que
aparezca un nuevo puerto cuyo estado no sea LISTENING sino que tiene establecida una conexin, no nos
alertara, pero en ese caso, si tenemos un IDS con las firmas adecuadas nos alertara probablemente.
[1] Recordatorio:
-sS: SYN Stealth. Enva un SYN. Tcnica usada por defecto. Si Closed: Recibe RST, Open: Recibe SYN/ACK,
Bind Shell ocultas | Security Art Work http://www.securityartwork.es/2014/03/14/bind-shell-ocultas/print/
2 de 3 24/03/2014 15:13
Filtered: ICMP unreachable o expira el timeout.
-sT: Connect. Enva un SYN, luego un RST para cerrar conexin. Si Closed: Recibe RST, Open: Recibe
SYN/ACK, Filtered: ICMP unreachable o expira el timeout.
-sA: TCP ACK. Enva ACK vaco. Slo determina si los puertos estn o no filtrados. Si Unfiltered: Recibe
RST, Filtered: ICMP error; expira el timeout.
-sN: TCP NULL. Enva TCP con todos los flags a 0. Closed: Recibe RST. Filtered: Recibe ICMP unreachable.
Open|Filtered: expira el timeout.
-sF: TCP FIN. Enva TCP con el flag FIN a 1. Closed: Recibe RST. Filtered: Recibe ICMP unreachable.
Open|Filtered: expira el timeout.
-sX: XMas Scan. Enva TCP con los flags FIN, PSH y URG a 1. Closed: Recibe RST. Filtered: Recibe ICMP
unreachable. Open|Filtered: expira el timeout.
Article printed from Security Art Work: http://www.securityartwork.es
URL to article: http://www.securityartwork.es/2014/03/14/bind-shell-ocultas/
URLs in this post:
[1] Deteccin de APTs: http://www.securityartwork.es/2013/05/21/deteccion-de-apts/
[2] Preprocesador para Snort: Passive Port Discovery:: http://www.securityartwork.es/2011/07
/25/nuevo-preprocesador-de-snort-passive-port-discovery/
[3] Shell is coming: http://www.shelliscoming.com/
[4] Borja Merino: https://twitter.com/BorjaMerino
[5] Hidden Bind Shell: http://www.shelliscoming.com/2014/03/hidden-bind-shell-keep-your-
shellcode.html
[6] ACL Bind Shell: http://www.shelliscoming.com/2014/02/dont-touch-my-shell-acl-bind-
shellcode.html
[7] payload: https://github.com/BorjaMerino/metasploit-framework/blob/hidden_bind_shell
/modules/payloads/singles/windows/shell_hidden_bind_tcp.rb
[8] pull request: https://github.com/rapid7/metasploit-framework/pull/3017
[9] Recoleccin distribuida de IOCs: http://www.securityartwork.es/2013/11/19/recoleccion-
distribuida-de-iocs/
[10] Get-NeworkStatistics: http://gallery.technet.microsoft.com/scriptcenter
/Get-NetworkStatistics-66057d71
2009 Security Art Work, S2 Grupo. Algunos derechos reservados. Usted es libre de copiar, distribuir y comunicar
pblicamente la obra, y hacer obras derivadas siempre que indique la procedencia del contenido (Blog de Seguridad de S2
Grupo).
Bind Shell ocultas | Security Art Work http://www.securityartwork.es/2014/03/14/bind-shell-ocultas/print/
3 de 3 24/03/2014 15:13

S-ar putea să vă placă și