miércoles, 30 de septiembre de 2015

Descarga muestras de malware desde "Contagio mobile"

Compartir este artículo:
Buenas a todos, en el post de hoy me gustaría compartir con vosotros el blog "contagio mobile", desde donde su autor comparte multitud de muestras de malware para móviles, centrándose sobretodo en software malicioso para Android e iOS:





Con cada artículo es publicado el link de descarga de la muestra, sus correspondientes hashes y un link con más información sobre el malware de fuentes como por ejemplo Virus Total, videos, etc.

Una fuente interesante para obtener copias de malware para analizar :-)

Saludos!

martes, 29 de septiembre de 2015

8dot8: Grandes recuerdos en 2014, de nuevo en 2015!

Compartir este artículo:
El año pasado tuve la suerte de ser ponente en la 8dot8, congreso internacional que se celebra en la ciudad de Santiago de Chile. Quizá fuera para mi una de las CON más importantes para mí del año pasado, y guardo grandes amigos por esas tierras. Este año Alfonso Muñoz y yo hemos sido elegidos para dar otra charla, lo cual ha sido algo bastante gratificante. 

Hoy quería dejar por aquí los enlaces a los vídeos que se encuentran publicados. En el mío guardo un gran recuerdo (situaciones como la de ponerse un sombrero, o sentarse en el escenario en un momento dado, creo que son hechos que en pocas charlas he realizado... la verdad es que estar a 11.000 km de casa te hace ver las cosas de otra forma. Fue la última charla dónde Cyberwar: Looking for... citizen! vio la luz. Un buen final para esta charla...



Una charla que me sorprendió mucho fue la de DragonJar. Enorme charla que hizo pasarlo muy bien y estar atento a todo lo que hizo Jaime. Que bueno tu Café Jaime! ;)



La charla de Matias Katz también fue muy llamativa y de mis favoritas. No perdí detalle durante toda la hora. Enhorabuena Matías.



Lorenzo Martínez tuvo una charla sobre un caso forense, la cual hizo muy didáctica. No me quiero olvidar de ella y os la comparto en Flu Project.


Gracias 8dot8 por el 2014 y, gracias, por el 2015. Grande Chile!

lunes, 28 de septiembre de 2015

Disponible el podcast de Navaja Negra & ConectaCon en HoyStreaming

Compartir este artículo:


Buenas a todos, en el post de hoy os dejamos con el podcast de la sesión que han dedicado desde HoyStreaming a conocer el evento Navaja Negra & ConectaCon, y en el que participamos desde  “X1RedMásSegura”.

Los amigos que han participado en esta sesión han sido:
  • Ruth Sala, abogada penalista especializada en delitos tecnológicos y prueba digital y directora de Legalconsultors.
  • Juan Antonio Calles, Ingeniero en informática de sistemas. Informático forense, co-fundador de Flu Project y Senior Manager en KPMG. Miembro de la Asociación Nacional de Ciberseguridad y Pericia Tecnológica (ANCITE).
  • Carlos García, Desarrollador de apps multiplataforma, desarrollador de WordPress, coaching, apasionado de las Tecnologías de la Información y la Comunicación (TICs)
Si queréis ver el contenido en vídeo lo podéis hacer en este enlace al vídeo, y el podcast en el siguiente enlace:


Saludos!

domingo, 27 de septiembre de 2015

Informe Flu - 222

Compartir este artículo:

Buenas a todos, como cada domingo, os dejamos con nuestros “Enlaces de la semana”:

Lunes 21 de Septiembre
Martes 22 de Septiembre
Miércoles 23 de Septiembre
Jueves 24 de Septiembre
Viernes 25 de Septiembre
    Saludos!

      viernes, 25 de septiembre de 2015

      Thunderstrike 2: firmworm para Macbooks

      Compartir este artículo:
      El pasado mes de agosto fue publicada en la revista Wired una investigación realizada por 2 investigadores con el fin de comprometer la seguridad del firmware de los portátiles Macbook.
      Básicamente, el objetivo de los investigadores era comprobar si los equipos de Apple también podrían ser vulnerables a fallos similares a los de los equipos HP, Dell, etc. al compartir una base similar del firmware EFI.

      Para ello, los investigadores han aprovechado una serie de bugs conocidos de los equipos macbook para diseñar un malware de tipo worm, al que han denominado como Thunderstrike 2, y que tiene la capacidad de replicarse en el firmware del equipo infectado a través de los periféricos, utilizando el Option ROM, una zona de la memoria que puede sobreescribirse.
      A continuación compartimos con vosotros el video explicativo de este interesante juguete:


      ¡Cuidado con lo que conectáis en vuestros Macs :P!

      Más información en: http://www.wired.com/2015/08/researchers-create-first-firmware-worm-attacks-macs/

      jueves, 24 de septiembre de 2015

      Hoy estaremos en #HoyStreaming hablando del congreso #nnc5ed

      Compartir este artículo:

      Buenas a todos, esta noche a las 22:00h formaremos parte del programa de Hangout, HoyStreaming  donde hablaremos del congreso Navaja Negra & ConectaCon que tendrá lugar la semana que viene en Albacete. Por la parte que nos toca, yo estaré representando a mis compañeros de X1RedMasSegura para hablar de los talleres paralelos al evento principal, y que realizaremos para concienciar y enseñar a padres y menores, acerca de los problemas de la red y como solventarlos.
      Os compartimos a continuación el artículo publicado en el blog de HoyStreaming:
      Abrimos nuestra ventana digital en HoyStreaming para conocer lo que este año nos espera en Navaja Negra & ConectaCon. Dos proyectos con historias paralelas y que este año han decidido sumar esfuerzos para ofrecer el mejor evento sobre seguridad informática posible. 
      Ambos proyectos coinciden en sus tres principios básicos: la humildad, el deseo de compartir y las ganas de aprender. Y si a esto le sumamos que en los dos casos la idea partió de un grupo de amigos que toman unas cervezas en un bar y anotan ideas en una servilleta… el coincidir en los caminos era algo natural. 
      El evento cuenta con un excelente cartel de ponentes y actividades paralelas: 
      • Navaja Negra & ConectaCon: Reúne las ponencias con un perfil más técnico informático, aquí el código es el rey.
      • Legal Hack Day: Enfocado a perfiles jurídicos, tratará sobre todos los aspectos legales de la seguridad informática, sin duda el reino del derecho.
      • X1RedMásSegura: Destinado a divulgar la seguridad informática entre quienes menos saben de códigos informáticos y derecho, pero que son los que más necesitan estar informados y prevenidos.
      Te invitamos a conocer más detalles del evento, sus actividades paralelas y, si podemos,  algún anticipo de las ponencias de nuestros invitados; que en esta ocasión son: 
      • Ruth Sala , abogada penalista especializada en delitos tecnológicos y prueba digital y directora de Legalconsultors.
      • Juan Antonio Calles , Ingeniero en informática de sistemas. Informático forense, co-fundador de Flu Project. Senior Manager en KPMG. Miembro de la Asociación Nacional de Ciberseguridad y Pericia Tecnológica (ANCITE).

      miércoles, 23 de septiembre de 2015

      Auditoría interna con SPARTA. Parte 2

      Compartir este artículo:
      Buenas a todos, en el post de hoy vamos a continuar hablando de SPARTA, y os traemos dos interesantes videos en los que el autor de la herramienta nos enseña a utilizar el software paso a paso.
      Aprovechamos para dejaros el link para su descarga desde github:

      1er vídeo: Official demo




      2º vídeo: Automated attacks


      

      Saludos!

      martes, 22 de septiembre de 2015

      IBM Security Summit 2015

      Compartir este artículo:
      Buenas a todos, mañana tendrá lugar el evento IBM Security Summit 2015, donde se darán cita varios expertos del mundo de la ciberseguridad para tratar las últimas novedades del sector.

      El evento organizado por el fabricante IBM, se celebrará en su sede del IBM Client Center, C/Corazón de María 44, de Madrid.

      Más información en: 




      Intentaré hacer hueco para acercarme por allí, por si alguien quiere compartir un café durante la mañana :)

      Saludos!

      lunes, 21 de septiembre de 2015

      X-Privacy: control total sobre tu Android

      Compartir este artículo:
      Buenas a todos, en el artículo de hoy me gustaría hablaros de una utilidad para vuestros smartphones Android con la que podréis tener un mayor control sobre los permisos que utilizarán las aplicaciones instaladas.

      La utilidad a la que nos referimos es XPrivacy. Para funcionar requiere ser root en el sistema (con los beneficios y problemas que ello puede causar en el terminal). Xprivacy es un módulo de Xposed Framework, y que podréis instalar de forma sencilla siguiendo estos sencillos pasos que nos recomiendan en elandroidlibre.com.

      Una vez instalada, arrancaremos Xposed y seleccionaremos el módulo Xprivacy. Ahora ya podremos jugar con los permisos de las aplicaciones de forma sencilla. Lo más habitual será limitar el acceso a nuestros mensajes, ubicación física y agenda de contactos, pero podréis aplicar muchas más configuraciones para sentiros más seguros.

      X-Privacy puede ser descargada desde Google Play:

      https://play.google.com/store/apps/details?id=biz.bokhorst.xprivacy.installer&hl=es

      Os dejo a continuación con algunas capturas de la aplicación:


      Como podéis ver, sobre cada aplicación podremos seleccionar si queremos que tenga acceso al navegador, portapapeles, historial de llamadas, cuentas de usuario, etc:





      En el siguiente video podréis encontrar un videotutorial sobre el uso y configuración de la misma en Android Lollipop, vía xda-Developers:



      Saludos!

      domingo, 20 de septiembre de 2015

      Informe Flu - 221

      Compartir este artículo:

      Buenas a todos, como cada domingo, os dejamos con nuestros “Enlaces de la semana”:

      Lunes 14 de Septiembre
      Martes 15 de Septiembre
      Miércoles 16 de Septiembre
      Jueves 17 de Septiembre
      Viernes 18 de Septiembre
      Saludos!

        viernes, 18 de septiembre de 2015

        Google fuerza la muerte ¿definitiva? de Flash

        Compartir este artículo:
        Buenas a todos, en el post de hoy queríamos compartir con vosotros la cruzada contra Flash que Google encabeza, con una serie de acciones que ha ido llevando a cabo en los últimos meses y que podrían dejar a Flash KO de forma definitiva.

        Tras el escándalo del Hacking Team, y todas las vulnerabilidades graves en Flash expuestas este verano, Mozilla anunciaba que bloquearía Flash en su navegador Firefox y lo más importante, hizo un llamamiento para abandonar el plugin de forma definitiva. Posteriormente un anuncio similar fue publicado desde Facebook, y por la parte que a Google correspondía empezamos a ver como desde Google AdWords se "recomendaba" a los proveedores de anuncios de Google a que se olvidasen de Flash de una vez por todas y comenzasen a migrar sus anuncios a HTML5 "por seguridad y eficiencia". Tal y como podéis ver en el mensaje publicado en Google+, y cuyo contenido compartimos a continuación:


        Bringing Better Performance to Rich Media on Chrome 
        Video and interactive media bring consumers rich, engaging experiences on the web--but they can also impact browser speed and battery life. A few months ago, Chrome introduced a setting (https://goo.gl/cBhea4) designed to increase page-load speed and reduce power consumption by pausing certain plugin content, including many Flash ads. As soon as September (http://goo.gl/u5f019), this setting will be turned on by default so Chrome users can enjoy faster performance and view more content before charging their batteries.
        Over the last few years, we’ve added tools (http://goo.gl/nWHctK) to encourage advertisers to use HTML5 (http://goo.gl/bF8ojM) so they’re able to reach the widest possible audience across screens. AdWords advertisers who currently use Flash ads in their campaigns have three easy ways to navigate the transition, ensuring their creative can reach Chrome users:  
        1. Let AdWords automatically convert Flash to HTML5 for you
        Eligible Flash campaigns (http://goo.gl/I4186A), both existing and new, are now automatically converted to HTML5 when uploaded through AdWords, AdWords Editor, and many 3rd party tools. This is one of several tools we’ve rolled out in the past few months. 
        The vast majority of Flash campaigns will be eligible for automatic conversion to HTML5 by September 1st. Test whether AdWords can convert your ads using this tool (https://developers.google.com/swiffy/).  
        2. Create HTML5 ads easily with Google
        Google has several free tools you can use to build new HTML5 ads:
        +AdWords Ad gallery: Create a Lightbox ad (https://goo.gl/tujCEi) from existing HTML5 templates. You can also get custom ad ideas based on your website’s content and style (https://goo.gl/aqrlsN).  +Google Web Designer: Download (http://goo.gl/GHWKli) our free, professional-grade HTML5 authoring tool to build ads for uploading (http://goo.gl/rSqqIp) to your Google Display Network campaigns.+DoubleClick Studio: Browse a variety of HTML5 templates and build your own ads using our richmediagallery.com template database (http://goo.gl/EWru9a). Learn more: https://goo.gl/fqhHT7 
        3. Upload your own HTML5 ads
        Soon, you’ll be able to upload HTML5 ads directly into AdWords. 
        Whichever tool you choose, we recommend you take advantage of our best practices (http://goo.gl/nWYUSF) for building compelling display ads so you can reach prospective customers across all the browsers and devices they use. 
        Además, el navegador Chrome (uno de los más utilizados) comenzó a pausar por defecto todos los anuncios basados en Flash, lo cual no afectaba a los que son convertidos de forma automática a HTML5 mediante las utilidades que Google ha puesto a disposición de los anunciantes. 

        Parece ser que poco queda que decir y que Flash va a morir, solo falta darle una fecha definitiva para celebrar un funeral digno del que ha sido durante años el rey de Internet... (y rey de los fallos de seguridad...)

        Finalmente quería compartir con vosotros una viñeta que me hizo mucha gracia de commitstrip.com



        Saludos!

        jueves, 17 de septiembre de 2015

        Analizando software malicioso en Android con PHP. Parte 6

        Compartir este artículo:
        Buenas a todos, hoy seguiremos con los posts sobre nuestro analizados estático de código Android, añadiéndole una función al programa para recuperar el número de archivos existentes (por extensión), lo que es muy útil a la hora de averiguar que tipo de ficheros se encuentran ocultos en el APK.

        En la siguiente imagen podréis ver una captura del resultado que conseguiremos:



        Y como habitualmente a continuación podréis encontrar la última versión del código:

        <?php
            //******** APK *******************************************************
            $bin='whatsapp';
            $ext='.apk';

            //******** GLOBAL VARIABLES ******************************************
            $rutaTemp="";$html_img="";$html_url="";$html_perm="";$html_manifest="";$extensiones=array();
            $x=0;

            //******** REPEAT EXTENSIONS *****************************************
            function repeatExt($array, $returnWithNonRepeatedItems = false)
            {
                $repeated = array();
                foreach( (array)$array as $value )
                {
                    $inArray = false;
                    foreach( $repeated as $i => $rItem )
                    {
                        if( $rItem['value'] === $value )
                        {
                            $inArray = true;
                            ++$repeated[$i]['count'];
                        }
                    }
           
                    if( false === $inArray )
                    {
                        $i = count($repeated);
                        $repeated[$i] = array();
                        $repeated[$i]['value'] = $value;
                        $repeated[$i]['count'] = 1;
                    }
                }
           
                if( ! $returnWithNonRepeatedItems )
                    foreach( $repeated as $i => $rItem )
                        if($rItem['count'] === 1)
                            unset($repeated[$i]);
                sort($repeated);
                return $repeated;
        }

            //******** EXTRACT IMAGES ********************************************
            function showImages($ruta)
            {
                $extensions_img=array("png","jpg","jpeg","bmp","tiff","gif");
                global $rutaTemp,$x,$html_img,$extensiones;
                if (is_dir($ruta))
                {
                    if ($aux = opendir($ruta))
                    {
                        while (($archivo = readdir($aux)) !== false)
                        {
                            if ($archivo!="." && $archivo!="..")
                            {
                                $ruta_completa = $ruta . '/' . $archivo;
                                if (is_dir($ruta_completa))
                                {
                        $rutaTemp=$rutaTemp.$ruta_completa . "/";
                                    showImages($ruta_completa . "/");
                                }
                                else
                                {
                        //Extensiones
                        $porciones = explode(".", $archivo);
                        array_push($extensiones,$porciones[count($porciones)-1]);

                        foreach($extensions_img as $extension)
                        {
                            if(strpos($archivo, $extension)!==false)
                            {
                                            $html_img.='<img src="' . $rutaTemp."/".$archivo . '" style="width:50px;height:50px;"/>';
                                $x++;
                            }
                        }
                                }
                            }
                        }
                     $rutaTemp="";
                        closedir($aux);
                    }
                }
            }

            //******** SHELL COMMANDS *******************************************
            $com1='mkdir -p android';
            $com2='d2j-dex2jar '.$bin.$ext.' --force ';
            $com3='java -jar jd-core.jar '.$bin.'-dex2jar.jar android/apk ';
            $com4='find android/apk -type f -print0 | xargs -0 grep -1 "https:"';
            $com5='find android/apk -type f -print0 | xargs -0 grep -1 "http:"';
            $com6='apktool d -f '.getcwd().'/'.$bin.$ext.' '.getcwd().'/android/manifest';
            $commands=array($com1,$com2,$com3,$com4,$com5,$com6);
            foreach($commands as $com)
            {
                $output=array();
                exec($com, $output);
                foreach($output as $valor)
                {
                    //http/s extract
                    $pos = strpos($valor, '"http');
                    if ($pos !== false)
                    {
                        $valor = substr($valor, $pos+1);
                        $html_url.='<li>'.$valor.'</li>';
                    }
                }
            }

            //******** EXTRACT IMAGES *******************************************
            showImages("./android/manifest");

            //******** EXTRACT MANIFEST *****************************************
            $a = getcwd().'/android/manifest/AndroidManifest.xml';
            $fp = fopen($a,'r');
            $html_manifest = fread($fp, filesize($a));
            $xml=simplexml_load_string(str_replace(":", "", $html_manifest));
           
            //******** EXTRACT PERMISSIONS **************************************
            $c=0;
            foreach ($xml->children() as $node)
                if($node->attributes()->{'androidname'}!="")
                    {
                        $prm=$node->attributes()->{'androidname'};
                            $html_perm.='<li>'.$prm.'</li>';
                        $c++;
                    }
        ?>


        <html>
        <head>
        </head>
        <body>
            <h1>General information</h1>
            <ul>
            <?php
                echo '<li>Package: '.$xml->attributes()->{'package'}.'</li>';
                echo '<li>Version code: '.$xml->attributes()->{'androidversionCode'}.'</li>';
                echo '<li>Version name: '.$xml->attributes()->{'androidversionName'}.'</li>';
                echo '<li>Size:'.filesize($bin.$ext).' bytes</li>';
                echo '<li>MD5:'.md5_file($bin.$ext).'</li>';
                echo '<li>SHA1:'.sha1_file($bin.$ext).'</li>';
                echo '<li>Permissions:'.$c.'</li>';
                echo '<li>Images:'.$x.'</li>';    
            ?>
            </ul>
            <h1>Files</h1>
            <ul> <?php foreach(repeatExt($extensiones) as $k) echo '<li>'.$k["value"].': '.$k["count"].'</li>'; ?> </ul>
            <h1>URLs</h1>
            <ul> <?php echo $html_url;?> </ul>
            <h1>Permissions</h1>
            <ul> <?php echo $html_perm; ?> </ul>
            <h1>Images</h1>
            <?php echo $html_img; ?>
            <h1>Android Manifest</h1>
            <textarea cols="100" rows="25">    <?php echo $html_manifest; ?> </textarea>
        </body>
        </html>


        miércoles, 16 de septiembre de 2015

        Extracción de hashes y contraseñas en texto plano en Windows 10 y 8.1

        Compartir este artículo:
        Utilizar herramientas como Mimikatz para conseguir obtener las contraseñas en texto plano en un pentest puede suponer un quebradero de cabeza si nos enfrentamos a sistemas como Windows 10 o Windows 8.1 / 8. Tener un hash o una contraseña en plano puede ser igual a efectos prácticos, pero conseguir las contraseñas en plano en un pentest siempre tendrá más impacto para la empresa. 

        Utilizar Mimikatz, WCE o fgdump en la fase de post-explotación en sistemas Windows 10 o Windows 8.1 puede darnos malos resultados, consiguiendo los hashes, generalmente, pero no la contraseña en texto plano. Como ya he comentado no es tan malo, los hashes rules! y podemos hacer un pass the hash (PtH). 


        En Internet podemos encontrar un conjunto de herramientas llamadas PowerMemory, en la que se localiza RWMC, Reveal Windows Memory Credential. Este script permite modificar entradas en el registro de Windows para el proveedor WDigest, el cual se pone a 1. Para poder lanzar el script hay que tener el máximo privilegio, es decir, ser System. Una vez ejecutado el script se debe reiniciar la máquina. 


        Interesante opción para el pentest en la post-explotación, por lo que si te encuentras con un Windows 8.1 o Windows 10 y quieres sacar las credenciales en plano puedes utilizar el script RWMC escrito en Powershell para lograrlo. 

        martes, 15 de septiembre de 2015

        [Solución] Reto: Me muevo y siempre llegas tarde, pero ¿Qué soy? ¿Dejo rastro?

        Compartir este artículo:
        Tenemos ganador del reto y su nombre es Lucas Duarte Wulfert, también conocido como @p4dawan. La solución que Lucas nos ha proporcionado es de muy alto nivel de documentación, currándose un script para solucionar el reto. Cada frase del reto escondía algo que hacía que tú pensarás y te montaras tu película. Recordemos el texto.

        “Me muevo a mis anchas por toda tu organización, ¿Quieres encontrarme? Quizá necesites un equipo dedicado, el cual te diga por dónde estuve, un instante, un suspiro, unos milisegundos… me creo y me destruyo, pero resido en tu ciberespacio privado” 

        La organización Botijos S.A tiene una brecha de seguridad que ha hecho que la información de clientes y socios quede expuesta en Internet. La pregunta, generalmente, más difícil de contestar, ¿Cómo entraron? Una vulnerabilidad en un sistema perimetral, mala gestión de la política de actualizaciones y el que estaba fuera, ahora está dentro. El CISO de Botijos S.A tiene muchas cosas que explicar, pero antes necesitará tener respuestas a las cientos de preguntas que se le pasan por la mente. 

        ¿Cómo el atacante pudo saltar de la máquina perimetral a una dónde se encontraba información sensible de clientes y socios? Movimientos dentro de la organización de un usuario no autorizado. 

        Una llamada, como si fuera el teléfono rojo, una necesidad de recoger las explicaciones necesarias. Digamos que existe un fichero que debe ser analizado, una máquina parece ser el objetivo de dicho ataque, y los atacantes consiguieron llegar a ella. Parece que todo fue un ataque planeado y puntual, ¿O quizá no? ¿Quieres revisar el fichero? ¿Eres del análisis forense o eres un usuario ofensivo?

        ¿Qué solución ha enviado Lucas? La enlazamos aquí para que puedas verla completamente, son 21 páginas llenas de descripción. Ciertamente, en el reto el participante no conocía a ciencia cierta qué buscaba, pero algo estaba claro, si el curso es de Metasploit, el reto estaba relacionado con algo de Metasploit, o varias cosas... 

        En primer lugar Lucas muestra como se puede echar un ojo al archivo que acabamos de descargar, el archivo proof.evtx. 


        El ganador nos explica en el documento que esta herramienta tiene 8 campos:

        • Type: el tipo de evento, que puede ser Information, Error, Warning 
        • Date: fecha del evento 
        • Time: Hora del evento 
        • Event: Id del evento 
        • Source: Fuente del evento 
        • Category: Sub-id del evento 
        • User: Usuario que genero el evento 
        • Computer: PC donde se generó el evento
        Al convertir el archivo en XML se encontrarán más campos.


        Los campos interesantes son: Param1, Param2 y Binary, es decir, lo que se encuentra dentro de EventData. Aplicando los filtros adecuados, por ejemplo con la aplicación Event Log Explorer, se pueden revisar los logs adecuados. Lucas recalca en el documento esto "Luego de analizar varios tipos de eventos, sin ningún tipo de resultado, decido buscar por ciertas cadenas de palabras, por ejemplo: cmd.exe, powershell.exe, meterpreter.exe, metsvc.exe. De esta forma llegamos a los indicios."

        El primer indicio encontrado y reportado es este: 


        Otro indicio es: 


        Otro indicio es:


        Otro indicio, muy curioso utilizando Powershell para ejecutar un, ¿Meterpreter?


        Os dejamos el documento aquí colgado para que le echéis un ojo. Felicidades a Lucas por su solución. Nos vemos en el curso!

        Curso

        Documento

        lunes, 14 de septiembre de 2015

        Analizando software malicioso en Android con PHP. Parte 5

        Compartir este artículo:
        Buenas a todos, en el post de hoy vamos a continuar con nuestra aplicación PHP para analizar aplicaciones Android, añadiéndole información sobre el APK como el nombre del paquete, versión, hashes, permisos, etc.

        En la siguiente captura podéis ver la nueva información que hoy extraeremos del APK, y que será incluida a la que ya recopilamos anteriormente:






        Las imágenes, el tamaño del archivo y los hashes son datos que podremos extraer de forma sencilla con PHP como veréis ahora en el código del software. Y los permisos, versión code, versión name y nombre del paquete son datos que extraeremos del archivo "AndroidManifest.xml".

        Cómo habitualmente os comparto a continuación el código completo del programa. En este caso he optado por analizar un apk de whatsapp descargado de un sitio web desconocido de Internet:

        <?php
            //******** APK *******************************************************
            $bin='whatsapp';
            $ext='.apk';

            //******** GLOBAL VARIABLES ******************************************
            $rutaTemp="";$html_img="";$html_url="";$html_perm="";$html_manifest="";
            $x=0;

            //******** EXTRACT IMAGES ********************************************
            function showImages($ruta)
            {
                $extensions=array("png","jpg","jpeg","bmp","tiff","gif");
                global $rutaTemp,$x,$html_img;
                if (is_dir($ruta))
                {
                    if ($aux = opendir($ruta))
                    {
                        while (($archivo = readdir($aux)) !== false)
                        {
                            if ($archivo!="." && $archivo!="..")
                            {
                                $ruta_completa = $ruta . '/' . $archivo;
                                if (is_dir($ruta_completa))
                                {
                        $rutaTemp=$rutaTemp.$ruta_completa . "/";
                                    showImages($ruta_completa . "/");
                                }
                                else
                                {
                        foreach($extensions as $extension)
                        {
                            if(strpos($archivo, $extension)!==false)
                            {
                                            $html_img.='<img src="' . $rutaTemp."/".$archivo . '" style="width:50px;height:50px;"/>';
                                $x++;
                            }
                        }
                                }
                            }
                        }
                     $rutaTemp="";
                        closedir($aux);
                    }
                }
            }

            //******** SHELL COMMANDS *******************************************
            $com1='mkdir -p android';
            $com2='d2j-dex2jar '.$bin.$ext.' --force ';
            $com3='java -jar jd-core.jar '.$bin.'-dex2jar.jar android/apk ';
            $com4='find android/apk -type f -print0 | xargs -0 grep -1 "https:"';
            $com5='find android/apk -type f -print0 | xargs -0 grep -1 "http:"';
            $com6='apktool d -f '.getcwd().'/'.$bin.$ext.' '.getcwd().'/android/manifest';
            $commands=array($com1,$com2,$com3,$com4,$com5,$com6);
            foreach($commands as $com)
            {
                $output=array();
                exec($com, $output);
                foreach($output as $valor)
                {
                    //http/s extract
                    $pos = strpos($valor, '"http');
                    if ($pos !== false)
                    {
                        $valor = substr($valor, $pos+1);
                        $html_url.='<li>'.$valor.'</li>';
                    }
                }
            }

            //******** EXTRACT IMAGES *******************************************
            showImages("./");

            //******** EXTRACT MANIFEST *****************************************
            $a = getcwd().'/android/manifest/AndroidManifest.xml';
            $fp = fopen($a,'r');
            $html_manifest = fread($fp, filesize($a));
            $xml=simplexml_load_string(str_replace(":", "", $html_manifest));
           
            //******** EXTRACT PERMISSIONS **************************************
            $c=0;
            foreach ($xml->children() as $node)
                if($node->attributes()->{'androidname'}!="")
                    {
                        $prm=$node->attributes()->{'androidname'};
                            $html_perm.='<li>'.$prm.'</li>';
                        $c++;
                    }
        ?>


        <html>
        <head>
        </head>
        <body>
            <h1>INFO</h1>
            <ul>
            <?php
                echo '<li>Package: '.$xml->attributes()->{'package'}.'</li>';
                echo '<li>Version code: '.$xml->attributes()->{'androidversionCode'}.'</li>';
                echo '<li>Version name: '.$xml->attributes()->{'androidversionName'}.'</li>';
                echo '<li>Size:'.filesize($bin.$ext).' bytes</li>';
                echo '<li>MD5:'.md5_file($bin.$ext).'</li>';
                echo '<li>SHA1:'.sha1_file($bin.$ext).'</li>';
                echo '<li>Permissions:'.$c.'</li>';
                echo '<li>Images:'.$x.'</li>';    
            ?>
            </ul>
            <h1>HTTP/S</h1>
            <ul> <?php echo $html_url;?> </ul>
            <h1>PERMISSIONS</h1>
            <ul> <?php echo $html_perm; ?> </ul>
            <h1>IMAGES</h1>
            <?php echo $html_img; ?>
            <h1>MANIFEST</h1>
            <textarea cols="100" rows="25">    <?php echo $html_manifest; ?> </textarea>
        </body>
        </html>

        Como veis poco a poco vamos teniendo un interesante analizador estático de código para APKs. En próximos posts iremos añadiéndole nuevas funcionalidades, optimizando el código y dandole algo de estilo gráfico :)

        Saludos!



        domingo, 13 de septiembre de 2015

        Informe flu - 220

        Compartir este artículo:

        Buenas a todos, como cada domingo, os dejamos con nuestros “Enlaces de la semana”:

        Lunes de Septiembre
        Martes 8 de Septiembre
        Miércoles 9 de Septiembre
        Jueves 10 de Septiembre
        Viernes 11 de Septiembre
        Saludos!

          viernes, 11 de septiembre de 2015

          Auditoría interna con SPARTA. Parte 1

          Compartir este artículo:
          Muy buenas a todos, en el post de hoy me gustaría hablaros de una potente herramienta que suelo utilizar durante las auditorías de seguridad interna, SPARTA.

          Se trata de una aplicación gráfica, tipo Nessus u OpenVas, menos potente, pero más ligera, desarrollada en python y que nos simplifica muchas de las pruebas de penetración en un entorno de red. Automatiza la fase de descubrimiento y análisis de servicio, lanzando herramientas como nmap, nikto, hydra (para fuerza bruta), etc.
          Características:
          • Run nmap from SPARTA or import nmap XML output.
          • Transparent staged nmap: get results quickly and achieve thorough coverage.
          • Configurable context menu for each service. You can configure what to run on discovered services. Any tool that can be run from a terminal, can be run from SPARTA.
          • You can run any script or tool on a service across all the hosts in scope, just with a click of the mouse.
          • Define automated tasks for services (ie. Run nikto on every HTTP service, or sslscan on every ssl service).
          • Default credentials check for most common services. Of course, this can also be configured to run automatically.
          • Identify password reuse on the tested infrastructure. If any usernames/passwords are found by Hydra they are stored in internal wordlists which can then be used on other targets in the same network (breaking news: sysadmins reuse passwords).
          • Ability to mark hosts that you have already worked on so that you don’t waste time looking at them again.
          • Website screenshot taker so that you don’t waste time on less interesting web servers
          SPARTA puede ser descargada desde el siguiente enlace:
          Aunque también la encontraréis en KALI Linux:
          Su funcionamiento es muy sencillo, y basta con indicarle un rango de red para que comience a analizarla:

          Una vez vaya descrubriendo activos, irá analizando los servicios que tenga operativos:


          Y cada vez que identifique un servicio reconocido de tipo web, hará una captura de pantalla:


          Por otro lado, al estilo Nessus nos permitirá listar los servicios localizados para poder estudiar posteriormente sus vulnerabilidades:

          Como veis, una interesante herramienta de auditoría de la que continuaremos hablando mañana en el siguiente post.
          Saludos!

          jueves, 10 de septiembre de 2015

          Se abre el CFP (Call For Papers) de Cybercamp 2015

          Compartir este artículo:
          El Cybercamp vuelve este año para revolucionar 4 días de Noviembre el panorama de la Seguridad  o, más moderno, Ciberseguridad en España. El año pasado, tanto Juanan como yo, tuvimos la suerte de impartir un taller y una charla. Este año hay un CFP para la presentación de trabajos y de talleres. Os recomendamos que la experiencia de los talleres es impresionante, por lo que sin duda si podéis asistir u os animáis a presentar un taller os encantará. 

          El Cybercamp tendrá lugar en Madrid del 26 al 29 de Noviembre de 2015. Son muchas las actividades que proponen este año, las cuales pueden ser vistas en la propia web del evento. Las conferencias se deben enviar en formato PDF, según el propio PDF que se puede descargar para ser rellenado. Este PDF puede ser descargado desde la propia web [PDF]. 

          Las propuestas deben enviarse antes del 11 de Octubre de 2015. El correo al que se enviarán las propuestas es cfp@cybercamp.es, pero recuerda ¡antes del 11 de Octubre de este mismo año! ¿Cuáles son las temáticas? Las charlas y talleres pueden ser de cualquier temática relacionada con la Seguridad de la Información, tanto charlas técnicas como más orientadas a la gestión. La duración de los talleres está entre 120 o 180 minutos de máximo, y las charlas estarán entre 45 y 60 minutos. 

          No lo dudes y participa en esta fiesta, ya sea como asistente o como ponente. Además, queríamos recordar que los ganadores de las Jornadas Naciones de Investigación en Ciberseguridad expondrán sus trabajos en el Cybercamp 2015.

          miércoles, 9 de septiembre de 2015

          Analizando software malicioso en Android con PHP. Parte 4

          Compartir este artículo:
          Buenas a todos, en el post de hoy continuaremos con nuestro analizados de código malicioso en Android.

          Si recordáis, en el último artículo definimos una primera aproximación de lo que sería la base de nuestro analizados, y que era capaz de:
          1. Dado un APK decompilarlo para recuperar el código java original
          2. Analizar cadenas de textos en el código java
          3. Obtener las URLs a las que se conecta el software
          4. Extraer el fichero Manifest y los permisos requeridos por el APK
          Hoy añadiremos una nueva funcionalidad, la de recolectar todas las imágenes contenidas en el APK, lo cual nos será de mucha utilidad para hacernos una idea rápida del contenido de las pantallas del aplicativo (si tiene claro). También comenzaremos a incluir código HTML, con el objetivo de visualizar la aplicación de forma gráfica desde un navegador web.

          Por el momento utilizaremos HTML básico, y poco a poco iremos añadiendo hojas de estilo y maquetando mejor nuestra aplicación:

          <html>
          <head>
          </head>
          <body>
          <?php
              //******** GLOBAL VARIABLES
              $rutaTemp="";
              //******** FUNCTIONS
              function rfile($ruta)
              {
                  $extensions=array("png","jpg","jpeg","bmp","tiff","gif");
                  global $rutaTemp;
                  if (is_dir($ruta))
                  {
                      if ($aux = opendir($ruta))
                      {
                          while (($archivo = readdir($aux)) !== false)
                          {
                              if ($archivo!="." && $archivo!="..")
                              {
                                  $ruta_completa = $ruta . '/' . $archivo;
                                  if (is_dir($ruta_completa))
                                  {
                          $rutaTemp=$rutaTemp.$ruta_completa . "/";
                                      rfile($ruta_completa . "/");
                                  }
                                  else
                                  {
                          foreach($extensions as $extension)
                          {
                              if(strpos($archivo, $extension)!==false)
                                              echo '<br /><img src="' . $rutaTemp."/".$archivo . '" style="width:100px"/><br />';
                          }
                                  }
                              }
                          }
                       $rutaTemp="";
                          closedir($aux);
                      }
                  }
              }
          ?>
              <h1>HTTP/S</h1>
              <textarea cols="100" rows="25">
          <?php
              //******** APK PARA ANALIZAR
              $bin='facebook';
              $ext='.apk';
              //******** COMANDOS BASH
              $com1='mkdir -p android';
              $com2='d2j-dex2jar '.$bin.$ext.' --force ';
              $com3='java -jar jd-core.jar '.$bin.'-dex2jar.jar android/apk ';
              $com4='find android/apk -type f -print0 | xargs -0 grep -1 "https:"';
              $com5='find android/apk -type f -print0 | xargs -0 grep -1 "http:"';
              $com6='apktool d -f '.getcwd().'/'.$bin.$ext.' '.getcwd().'/android/manifest';
              $commands=array($com1,$com2,$com3,$com4,$com5,$com6);
              foreach($commands as $com)
              {
                  $output=array();
                  exec($com, $output);
                  foreach($output as $valor)
                  {
                      echo $valor;
                  }
              }
              //******** LECTURA ARCHIVO MANIFEST
              $a = getcwd().'/android/manifest/AndroidManifest.xml';
              $fp = fopen($a,'r');
              $text = fread($fp, filesize($a));
          ?>
              </textarea>
              <h1>MANIFEST</h1>
              <textarea cols="100" rows="25">
          <?php    echo $text;    ?>
              </textarea>
              <h1>IMAGES</h1>
          <?php    rfile("./"); ?>
          </body>
          </html>

          Lo que os mostrará por pantalla lo siguiente:


          En el próximo artículo de la cadena seguiremos añadiendo nuevas funcionalidades a nuestro analizador.

          Saludos!