Explotación de Software Parte 19 – Fuzzing con Spike

junio 12, 2014 1 comentario

Introducción a Fuzzing con SPIKE.

AbilityFTPServer.spk: https://github.com/Adastra-thw/ExploitSerie/blob/master/AbilityFTPServer.spk
MiniShareServer.spk: https://github.com/Adastra-thw/ExploitSerie/blob/master/MiniShareServer.spk
VulnServer.spk: https://github.com/Adastra-thw/ExploitSerie/blob/master/VulnServer.spk

Repositorio GIT de la serie:

https://github.com/Adastra-thw/ExploitSerie.git


Make a Donation Button

Hacking con Python Parte 19 – Automatizacion con Pexpect

junio 10, 2014 Deja un comentario

Utilizando PExpect para automatización de tareas.


Make a Donation Button

Explotación de Software Parte 18- Introducción y Conceptos Básicos sobre Fuzzing

junio 5, 2014 Deja un comentario

Conceptos básicos sobre las principales técnicas de fuzzing para el descubrimiento de vulnerabilidades.

Repositorio GIT de la serie:

https://github.com/Adastra-thw/ExploitSerie.git


Make a Donation Button

Hacking con Python Parte 18 – Módulo FTPLib para acceder a servidores FTP

junio 3, 2014 Deja un comentario

Uso del módulo FTPLib para acceder a servidores FTP. En este vídeo se ha creado un script en el que se utiliza Shodan para extraer un listado de servidores FTP que permiten autenticación anónima y posteriormente se utiliza FTPLib para los contenidos del directorio raíz.

FtpQueue.py: https://github.com/Adastra-thw/pyHacks/blob/master/FtpQueue.py


Make a Donation Button

Explotación de Software Parte 17 – Programación en MASM

mayo 29, 2014 Deja un comentario

Explicación de programas que enseñan el uso de las principales características incluidas en MASM.

UserInput.asm: https://github.com/Adastra-thw/ExploitSerie/blob/master/UserInput.asm
Numbers.asm: https://github.com/Adastra-thw/ExploitSerie/blob/master/Numbers.asm
ConcatProc.asm: https://github.com/Adastra-thw/ExploitSerie/blob/master/ConcatProc.asm
ASMJumps.asm: https://github.com/Adastra-thw/ExploitSerie/blob/master/ASMJumps.asm
BrachingMASM32.asm: https://github.com/Adastra-thw/ExploitSerie/blob/master/BrachingMASM32.asm
LoopingMASM32.asm: https://github.com/Adastra-thw/ExploitSerie/blob/master/LoopingMASM32.asm

Repositorio GIT de la serie:

https://github.com/Adastra-thw/ExploitSerie.git


Make a Donation Button

Lenguaje verbal y no verbal en las empresas

mayo 28, 2014 Deja un comentario

Las relaciones humanas son complejas. Los humanos somos seres cambiantes que respondemos a estímulos que activan determinadas zonas de nuestros cerebros y nos hacen comportarnos de formas que en muchos casos, no es posible medir con exactitud u objetivamente. No somos tan predecibles como cualquier ordenador, al que se le ingresan instrucciones y se ejecutan inmediatamente con muy poco margen a errores lógicos. Los vínculos que establecemos con otras personas, son mucho más intensos y permanentes que las conexiones que existen entre ordenadores y además, manejamos muchas más variables que influyen en nuestro comportamiento, tales como los factores ambientales y socio-culturales. Las relaciones humanas son las que realmente impulsan los movimientos y las causas más importantes que han provocado los progresos más impresionantes de los últimos años, no las máquinas. Imaginaros por un segundo, qué seria de la informática hoy en día si no existieran comunidades de usuarios y desarrolladores, imaginaros que el software privativo fuera la idea predominante y nadie compartiera lo que hace con sus colegas o amigos, ¿Qué seria de la informática? Sin duda, algo muy distinto a lo que conocemos hoy en día.
Los humanos somos una especie realmente interesante y sorprendente, tanto en su grandeza como en su bajeza y desde mi perspectiva; que no deja de ser la perspectiva de un informático, es especialmente interesante leer sobre los estudios de investigadores como Paul Ekman, Christopher Hadnagy o Daniel Goleman, así como entender los conceptos del “Social Engineering Framework” que a diferencia de lo que muchos opinan, no solamente se centra en engañar, estafar o ganar accesos no autorizados a zonas restringidas como en cualquier producción hollywoodense, sino que son principios que nos pueden ser útiles en nuestro día a día, nos ayudan a entender mejor a las personas que nos rodean y a nosotros mismos. Si aplicamos esos mismos principios psicológicos a nuestras relaciones personales, rápidamente podemos darnos cuenta que para establecer relaciones solidas, es necesario tiempo, dedicación, confianza y sobre todo, honestidad. Esto aplica para todo, no solamente en la vida personal, también en la vida profesional, pero es justo ahí donde nos encontramos un gran “pero”, una gran “excepción”.

Llevo casi 10 años trabajando en empresas de informática, he trabajado en varios sitios y siempre he desempeñado labores técnicas porque es lo que me interesa. En todos los sitios por los que he pasado me he encontrado con lo mismo (en mayor o menor medida): El lenguaje verbal casi nunca corresponde con el lenguaje no verbal y lo que realmente la gente quiere expresar, siempre se engalana con un lenguaje lleno de palabras cuidadosamente seleccionadas para no ofender ni cabrear a nadie. Evidentemente, lo que se esconde detrás de esa aparente educación y tacto a la hora de decir las cosas, es el miedo. Miedo a perder el empleo, miedo al “qué dirán”, miedo a que los demás no tengan una imagen “perfecta” de lo buenos que somos profesionalmente hablando, etc. Ese miedo se traduce posteriormente a un entorno completamente viciado, en el que todo el mundo se esfuerza por ocultar algo, por no enseñar a los demás lo que realmente piensan o sienten, por aparentar cosas que no son, en fin… la gente se esfuerza demasiado en disimular. En un entorno como ese todos pierden y la pregunta lógica es: ¿Por qué razón esto persiste y se ha vuelto una constante en las empresas? En mi opinión, se debe a los intereses de aquellos que solamente saben gestionar sus “chiringuitos” en base al miedo y no en base al conocimiento y las habilidades de sus empleados. Así de claro y así de simple.

Por ejemplo, veamos algunos casos comunes que he visto y desafortunadamente, sigo viendo en entornos empresariales. Cualquier parecido con la realidad de alguno, es pura coincidencia:

  1. Jefe solicitando un esfuerzo a su equipo.Lo que el lenguaje verbal dice:
    Jefe: El tiempo que teníamos disponible para entregar el proyecto se ha terminado y aun quedan muchos frentes abiertos que necesitamos cubrir entre todos. Tenemos un compromiso con el cliente que estamos obligados a cumplir. Sé perfectamente que todos y cada uno de vosotros lo habéis dado todo para llegar hasta donde hemos llegado, pero necesitamos hacer un esfuerzo extra para conseguir el objetivo de la entrega.
    Equipo: <resignación y caras largas>
    Lo que el lenguaje no verbal dice:

    Jefecillo de algo: Vamos a ver, os habéis estado tocando los huevos todo este tiempo y me han metido un jalón de orejas por no tener esta mierda terminada. Necesito que vosotros acabéis el trabajo que queda pendiente para que los amos no me aprieten más la corbata y pueda seguir viviendo tranquilamente, vamos… como he hecho todo este tiempo.
    Pues eso, a currar cabrones!! <Estremecedor sonido de un látigo rasgando pieles>
    Equipo: Ya estamos otra vez con las gilipolleces. Puta crisis! Cuando será que se acaba para mandarles a tomar por culo e irnos a otra empresa.

  2. Un Simple saludo en las mañanas.Lo que el lenguaje verbal dice:

    Compañero 1: Buenos días.
    Compañero 2: Buenos días.

    Lo que el lenguaje no verbal dice:

    Currito 1: Estoy hasta los huevos de tirarme todos los días más de 1 hora en transporte público para llegar hasta aquí. No me explico porque tenían que montar esta oficina en un extremo de la ciudad. Además, no he dormido bien, estoy cansado y francamente no me apetece estar aquí.

    Currito 2: ¿Me lo dices o me lo cuentas? Ayer me he tenido que quedar hasta las tantas; horas extra que por supuesto no me van a pagar y por si fuera poco, llego y lo primero que recibo es un correo de mi jefe con más curro que tengo que sacar para hoy.

  3. Comercial intentando ganar un proyecto o vender un producto:
    Lo que el lenguaje verbal dice:
    Comercial: Tenemos equipos con un alto perfil técnico y con una dilatada experiencia tanto en el área del desarrollo de software como en temas relacionados con auditoria de sistemas. Somos una empresa que se caracteriza por ser eficaz y eficiente en el desempeño de su actividad profesional y tenemos en nomina a los mejores profesionales que se dedican a crear proyectos de última tecnología con un énfasis especial en satisfacer las necesidades de nuestros clientes.
    Cliente: <Silencio absoluto, únicamente se escucha el eco de la voz del comercial> <Después de unos instantes de silencio> Muy bien, suena interesante pero tendremos que hablar detenidamente sobre las condiciones del acuerdo.Lo que el lenguaje no verbal dice:
    Vende-Motos: No tengo ni puta idea de cual es la diferencia entre un programa y una patata, ambos se comen, ¿no?. No se que es un equipo de desarrollo, ni mucho menos lo que es un sistema, pero me han dicho que el equipo que tenemos es muy bueno. ¿Nos contratas? Te invitamos a copas y lo que haga falta!
    Abusón: Hijo mío, ¿estas escuchando lo que nos estas contando?… Espera, ¿Has dicho copas y lo que haga falta? Mira, nos interesa lo que nos cuentas y el proyecto es tuyo si nos haces un descuento del 80%, que es que con la crisis todo anda muy mal.
  4. Definiendo el alcance de un proyecto.Lo que el lenguaje verbal dice:

    Cliente: Quiero que el sistema sea capaz de conectarse con todos los sistemas de mi organización y me genere reportes parametrizables, fáciles de manejar y con muchas gráficas que me muestren las rutas más criticas en términos de recursos, proveedores, insumos y tiempos de espera. Además, quiero que el sistema sea capaz de monitorizar todos los ordenadores de la organización y permita detectar el momento en el que un ordenador ha dejado de funcionar por un problema de hardware. Otra funcionalidad critica que también quiero que el sistema controle, es que sea capaz de conectarse a las máquinas de café de todas las plantas del edificio y permita saber cuál de todas tiene el mejor café, que no hay nada que me moleste más que un café con mal sabor a primeras horas de la mañana.

    Jefe de Proyecto: Creo que podemos cumplir con las necesidades del proyecto, ¿Qué opinas consultor experto de mi compañía?

    Consultor Experto: Estoy de acuerdo, pero creo que para cumplir íntegramente con todos los objetivos expuestos, tenemos que utilizar X tecnología (basada en Java o .Net, casi seguro), ya que es la arquitectura más eficiente, robusta, estable, eficaz, escalable, precisa y genial.

    Lo que el lenguaje no verbal dice:

    Niño escribiendo su carta a los reyes: Quiero que me lo hagáis todo hecho. Que haya un botón gordo que haga todo por mi. Si se me acaba la viagra, que sea capaz de ir a donde haga falta para comprármela, que cuando ataque el hambre, sea capaz preparar un bocadillo de jamón con queso y me consuele cuando me sienta triste.

    Jefecillo de algo: Esto se ve complicado… Eh tú, di algo que para eso te he traído, no podemos quedar mal!.

    Tecno-paleto haciéndose pasar por informático: No tengo ni puta idea de lo que me están hablando, de hecho, no tengo ni idea de cómo funciona un ordenador, pero claro, no puedo decir que no sé o quedarme callado, así que mi estrategia consistirá en despistar con palabrejas y haciéndoles creer que controlo mucho de tecnología. Total, el problema será para los desarrolladores, así que me da igual. Lo importante es venderme bien y tener un subidón de auto-estima viéndoles como admiran mis supuestos conocimientos. Si, lo sé. Soy patético.

  5. Empleado “quemado” pasando de su jefe.Lo que el lenguaje verbal dice:
    Jefe: ¿Has visto el correo? Nos han enviado una incidencia reportada por un usuario. Nos comenta que la escala de grises que tiene la pantalla principal le parece fea y quiere que la cambiemos por un “azul aguamarina” para que tenga la sensación de estar en una playa mientras navega por nuestra web. ¿Has podido echarle un vistazo?

    Soporte Técnico: No, he tenido mucho lío hoy y no he podido revisar tu correo.
    Jefe: Ok, échale un vistazo cuanto antes, es un tema que nos urge resolver.

    Lo que el lenguaje no verbal dice:

    Jefecillo de algo: Eh, ppissssstt pisstt, que he visto que tienes poco curro y me he buscado la gilipollez más rebuscada que hay para mantenerte ocupado, pero estoy notando con total asombro, que pasas completamente de mi y de mis deseos.
    Currito soportando idioteces: Pues si, paso de ti porque tengo cosas más importantes que hacer. Si estas aburrido, te sugiero que te dirijas al cuarto de baño con un libro de informática en mano y te quedes allí todo el día leyendo. Falta que te hace!

    Jefecillo de algo: Ah, ya veo. Pues, ahora quiero que dejes lo que sea que estés haciendo y te centres en hacer lo que te digo. Que aquí el que manda soy yo!

  6. Súper Jefe explicando a un desarrollador las bondades en un nuevo proyecto.
    Lo que el lenguaje verbal dice:Super Jefe: Tenemos un proyecto que creemos que se ajusta perfectamente a tu perfil y a tus necesidades profesionales. Es un proyecto en el que vas a aprender muchísimo y vas a poder afinar tus habilidades. Creemos que es el proyecto ideal para ti y queremos verte crecer profesionalmente en nuestra compañía.

    Desarrollador Novato: Claro, suena muy interesante y también creo que encaja con mis metas profesionales.

    Desarrollador Experimentado: <Silencio absoluto>

    Lo que el lenguaje no verbal dice:
    Gran Corbata: Tenemos un marrón de tres pares y quiero que te lo comas tú, pero eso si, con buen rollito. Me da igual lo que respondas, ahí vas a ir de cabeza te guste o no.

    Currito sin pelos en los huevos: Buah, mi jefe me valora un montón. Por fin alguien que aprecia mis habilidades como uno de los más grandes hackers de los últimos tiempos. Esto es solo el comienzo, lo siguiente será trabajar para la NSA o la NASA. Bueno, ya veremos quien me ofrece más dinero.

    Currito quemado: Otro marrón que me cae a mi. Puff… estoy cansado de proyectos que no me aportan nada interesante técnicamente y que encima, me venden como si fueran la hostia.

  7. Compañerismo en fechas de entregas.Lo que el lenguaje verbal dice:

    Técnico con problemas: Que tal tío, mira es que ahora estoy con la funcionalidad “B” que depende de “A”, que tengo entendido que la has hecho tú y resulta que me esta dando errores a la hora de utilizarla, con lo cual se me dificulta avanzar. ¿Me puedes echar un cable un momento a ver si a ti se te ocurre porque puede ser?

    Técnico ocupado: Hombre, cuando yo lo probé en mi local funcionaba perfectamente, fíjate en lo que sale en los logs de tu funcionalidad a ver si ves algo, porque la funcionalidad que yo desarrolle funcionaba cuando la subí al repositorio y si ahora falla es que alguien la ha tocado. Yo ahora estoy con otras cosas y no te puedo ayudar, pero si sigues atascado, me dices y lo vemos.

    Técnico con problemas: Ok, gracias!

    Técnico con problemas <10 minutos después>: Ya he visto el problema en la funcionalidad “A” que habías subido y lo he corregido, lo subo nuevamente al repositorio para que te actualices cuando puedas.

    Técnico ocupado: Ok, luego le echo un vistazo.

    Lo que el lenguaje no verbal dice:
    Compañero Jodido: Tío, lo que has hecho esta fallando y me impide continuar, ¿podrías revisarlo por si ves algo que te haya faltado por subir?. Sabes que tenemos que entregar para ayer y ahora mismo, estoy perjudicado porque no funciona lo que has hecho.

    Compañero Cabrón: La funcionalidad es perfecta en si misma. ¿Que cómo lo sé? Joder, la he hecho yo, así que por definición es perfecta. Lo que pasa es que eres un paquete que no sabe programar y claro, para ti es imposible entender la magnificencia de mi código.
    Compañero Jodido: Ok, gran señor programador, pues tendré que revisar lo que has hecho con detenimiento para ver en donde está el fallo.

    Compañero Jodido<10 minutos después>: Ya he visto lo que has hecho mal y lo he corregido con mis manitas. Te lo comento para que te duela un poquito el orgullo.

    Compañero Cabrón: No me lo creo, ahora mismo voy a ver lo que has subido! Como te has atrevido a profanar mi código perfecto con tu deficiente lógica! Que sepas que esto ha sido una afrenta contra mi profesionalidad y gran talento.

  8. Interacción entre pentester y cliente
    Lo que el lenguaje verbal dice:Pentester: En este documento indica que la auditoria cubrirá los casos “A” y “B”. Descubriremos cualquier vulnerabilidad en dichos contextos y te daremos un reporte, sin embargo, los casos “C” y “D” pueden ser igualmente críticos y se recomienda realizar pruebas sobre dichos casos también.

    Cliente: Nos interesa los casos “A” y “B”. Sobre los casos “C” y “D”, hablaremos más adelante.

    Pentester: De acuerdo, pero es importante puntualizar que son casos que pueden incluir vulnerabilidades criticas y que no se cubrirán en la auditoria que realizaremos en “X” fecha.

    Cliente: Tendremos en cuenta tus recomendaciones.

    <POCO TIEMPO DESPUÉS, UNA VULNERABILIDAD EN EL CASO “E” COMPROMETE INFORMACIÓN DE NEGOCIO CRITICA DEL CLIENTE>
    Cliente: La auditoria ha sido ineficaz y no se han reportado todas las vulnerabilidades que debería haber incluido.

    Pentester: La auditoria ha sido completa, pero tal como se ha indicado en su momento, no nos hacemos responsables por los entornos y casos de prueba que no se han pactado en el acuerdo firmado.

    Lo que el lenguaje no verbal dice:

    Currante de la seguridad: Vamos a ejecutar una auditoria completa sobre los casos “A” y “B”, pero en los casos “C” y “D” te puedes encontrar con un problema serio, que lo sepas.

    Cliente rácano: No creo, me interesan los casos “A” y “B”. Los demás casos no me preocupan. Voy a aflojar la pasta justa para tener un informe de seguridad que me permita dormir tranquilamente por las noches. Que si algo falla, es culpa tuya y te exigiré responsabilidades.

    Currante de la seguridad: Ok, como tu digas. Los demás casos no están cubiertos y si hay un problema, el marrón te lo comes tú. Recuerda que la información es tuya y no mía, así que tú mismo.

    Cliente rácano: Vale, vale… lo apunto en mi libreta invisible.

    <POCO TIEMPO DESPUÉS, UNA VULNERABILIDAD EN EL CASO “E” COMPROMETE INFORMACIÓN DE NEGOCIO CRITICA DEL CLIENTE>
    Cliente rácano cabreado: Pero que ha pasao!! ¿y tu eres un hacker ético profesional? Esto es el puto caos! Hasta nuestro competidor más pequeño se está mofando de nosotros en nuestra cara! y con la pasta que te he pagado y van y se nos meten hasta la cocina!. El informe que me has dado es una mierda, no ha servido para nada el esfuerzo y el dinero invertido. Que sepas que nos has jodido el negocio y te voy a exigir responsabilidades legales.

    Currante de la seguridad: Te lo dijimos en su momento, pero por andar racaneando te han jodido vivo. Te lo hemos advertido y está por escrito, así que ahora no vengas a echarnos la mierda encima que no cuela. La responsabilidad ha sido toda tuya.

En todos los casos faltan dos cosas primordiales: HONESTIDAD y PROFESIONALIDAD. Valores que desafortunadamente brillan por su ausencia en muchas empresas dedicadas a la informática. Han sido muchas las ocasiones en las que he hablado con compañeros sobre estas cosas y siempre hemos llegado a lo mismo: Lo mejor es pasar de todo eso, hacer tu trabajo de la mejor forma que te sea posible e intentar ser buena persona, que no es más que colaborar con tus compañeros y entender que haces parte de en un equipo de trabajo, que ellos también son personas como tú, que tienen problemas y que lo pasan mal, exactamente igual que tu, ese que se sienta a tu lado también sangra si le pinchas. Piénsalo de ese modo y te será más fácil ponerte en su lugar. Sin embargo, los problemas de algunos que conforman las “capas altas”, no tienen solución inmediata. ¿Qué solución habría ante un jefe que desconoce por completo el termino “informática” y que con total arrogancia se cree superior a los técnicos por estar en las posiciones altas de una jerarquía mediocre? ¿Qué solución habría para un “consultor” que no solamente no quiere aprender nada, sino que además se cree que lo sabe todo o se vende como un experto? ¿Qué solución habría ante clientes y empleadores que se aprovechan de la situación actual para bajar los precios a costa de la calidad de productos y servicios? No he encontrado respuesta para preguntas como esas, pero sinceramente espero que las nuevas generaciones desarrollen verdaderas capacidades para la gestión y que no tengan problemas en investigar y aprender cosas nuevas, que se centren más en hacer bien su trabajo y menos en la “política” para ascender o mantenerse en una empresa, que apuesten por su auto-formación y que admitan con total sinceridad cuando no tienen conocimientos sobre alguna tecnología o tema concreto.
Hay demasiados “jefecillos” que creen que ser jefe es sinónimo de “vivir bien” y hacer un “dispaching” de todo el trabajo, así como “consultores” que creen que la informática es simplemente aprender dos palabrejas y hacerse pasar por experto sin tener ni puta idea de nada. Aun los hay que son buenos, que gestionan bien sus equipos de trabajo, con profesionalidad y un juicio adecuado, los hay que son expertos de verdad, esos que no les da miedo meterse con configuraciones o analizar código, esos que no tienen miedo de meterse en “el fregao” aunque tengan puesto un traje impecable. He tenido la oportunidad de trabajar con profesionales como esos y además de ser excelentes compañeros y jefes, son excelentes personas, pero desafortunadamente han sido muy pocos y cada vez hay menos porque prefieren irse a trabajar fuera. Desde mi punto de vista, hacen falta más informáticos y gestores de verdad, hacen falta más profesionales y menos farsantes.

Conclusión: Hace falta un cambio de mentalidad. Aprender a ser más honestos en el trato con nuestros compañeros de trabajo y clientes, del mismo modo que lo intentamos en nuestras vidas personales; evidentemente separando ambos contextos, tanto el personal como el profesional. De esa forma, a lo mejor, se podrá mitigar un poco el malestar que muchos sienten en sus puestos de trabajo, así como intentar ser más productivos y eficientes por medio del esfuerzo y la dedicación, que al final de cuentas son las principales características de un buen informático.
Hay que dejar hacer el subnormal en la fauna empresarial y empezar a ver que lo realmente importante, no es el color de la corbata del jefe de turno, sus afiliaciones políticas o sus “capacidades” a la hora de hacerle la pelota a “los de arriba”.

Saludos y Happy Hack!

Categorías:Uncategorized Etiquetas:

Hacking con Python Parte 17 – FuzzDB y PyWebFuzz

mayo 27, 2014 Deja un comentario

Utilizando FuzzDB y PyWebFuzz para ejecutar procesos de fuzzing desde python.

Repositorio GIT de la serie:

https://github.com/Adastra-thw/pyHacks.git


Make a Donation Button

Seguir

Recibe cada nueva publicación en tu buzón de correo electrónico.

Únete a otros 901 seguidores

%d personas les gusta esto: