sábado, 9 de noviembre de 2013

Recopilación de herramientas en Python para pentesters


Si estás involucrado en la investigación de vulnerabilidades, ingeniería inversa o pruebas de intrusión, seguro que ya habrás utilizado Python porque cuenta con un rico conjunto de librerías y herramientas útiles para estos menesteres.

En la página de Dirk Loss podemos encontrar un gran recopilatorio de herramientas escritas en Python para penetration testers, algunas de ellas sólo enlaces a librerías C existentes, es decir, herramientas que hacen las librerías fácilmente utilizables desde programas de Python.

Sin embargo, por la difusa situación jurídica en Alemania no se incluyen algunas de las herramientas más agresivas (frameworks PenTest, smashers bluetooth, escáneres de vulnerabilidades de aplicaciones Web, war-dialers, etc.). Por ello y para tener una lista aún más completa, vamos a ir añadiendo todas las herramientas que vayamos encontrando. No dudes en comentar esta entrada si conoces alguna más y quieres que la añadamos a esta lista:
  

Red

 
  • Dirtbags py-pcap: lee ficheros pcap sin libpcap
  • dpkt: rápida y simple creación de paquetes y análisis, con las definiciones básicas de los protocolos TCP/IP 
  • flowgrep: grep a través de payloads de paquetes utilizando expresiones regulares
  • Impacket: modifica y decodifica paquetes de red. Incluye soporte para los protocolos de más alto nivel, tales como NMB y SMB
  • Knock Subdomain Scan:  enumera los subdominios de un dominio de destino a través de una lista de palabras
  • libdnet: rutinas de red de bajo nivel, incluyendo la interfaz de búsqueda y transmisión de tramas Ethernet
  • Mallory: proxy man-in-the-middle extensible TCP/UDP, soporta la modificación de protocolos no estandar al vuelo
  • pypcapPcapy y pylibpcap: varios enlaces Python para libpcap
  • Pytbull: framework de pruebas de IDS/IPS muy flexible (incluye más de 300 tests)
  • pynids: wrapper de libnids que incluye sniffing, IP defragmentation, reensamblado de streams TCP y detección de escaneos de puertos
  • Scapy: envia, rastrea y analiza y crea paquetes de red. Se puede usar de forma interactiva o como una librería
 

Depuración e ingeniería inversa

 
  • Androguard: ingeniería inversa y análisis de aplicaciones de Android
  • apk-jet: un wrap de apktool en python para automatizar y hacer más fácil la ingeniería inversa de apks 
  • AsmJit: sencillo wrapper en Python para AsmJit usando SWIG. AsmJit posee clases de generación de código de alto nivel que pueden utilizarse para crear código JIT
  • BeaEnginePython: bindings de BeaEngine en Python de Mario Vilas. 
  • Binwalkes una herramienta de análisis firmware diseñada para ayudar en el análisis, la extracción y la ingeniería inversa de imágenes del firmware y otros blobsbinarios. Es fácil de utilizar, completamente programable y se puede extender fácilmente a través de firmas personalizadas, reglas de extracción y módulos deplugin.
  • bochs-python-instrumentation: Este parche para Bochs proporciona un intérprete de Python en lugar del propio depurador Bochs, proporcionando la funcionalidad del depurador. También permite interactuar con la interfaz de instrumentación bajo demanda, al asociar dinámicamente métodos de Python para manejar eventos de instrumentación.
  • Buggery: wrapper python para DbgEng. 
  • ctypes: módulo de Python que permite crear y manipular tipos de datos de C en Python. Estos luego pueden pasar a funciones C cargadas desde librerías de vínculos dinámicos.
  • Cuckoo: sistema sandbox de análisis de malware automatizado. Tiene un API para personalizar tanto el procesamiento como las etapas de presentación de informes. 
  • diStorm:  biblioteca de desensamblador para AMD64, bajo licencia BSD
  • IDAPython: plugin de IDA Pro que integra Python, permitiendo ejecutar scripts en IDA Pro
  • Immunity Debugger: GUI programable y debugger en linea de comandos
  • Paimei: framework de ingeniería inversa, incluye PyDBG, PIDA, pGRAPH
  • pefile: permite leer y trabajar con archivos Portable Executable (PE) 
  • pydasm: interfaz en Python para la librería libdasm de desensamblado x86
  • PyDbgEng: wrapper en Python para el motor de depuración de Microsoft Windows 
  • PyEMU: emulador IA-32 completamente programable, útil para análisis de malware
  • python-ptrace:depurador usando ptrace (Linux, BSD y Darwin system call para trazar procesos) escrito en Python
  • mona.py: PyCommand para Immunity Debugger que reemplaza y mejora pvefindaddr
  • uhooker: intercepta llamadas a llamadas a la API dentro de DLLs , así como las direcciones arbitrarias en el archivo ejecutable en la memoria
  • vdb / vtrace: API de depuración de procesos multi-plataforma implementado en python, y vdb es un depurador que lo utiliza
 

Fuzzing

 
  • antiparser: fuzz testing y API de inyección de fallos
  • Construct: librería para parsear y construir estructuras de datos (binario o texto).  
  • Forensic Fuzzing Tools: genera ficheros fuzzeados, sistemas de ficheros, y sistemas de ficheros con ficheros fuzzeados para probar la robustez de herramientas forenses y sistemas de análisis 
  • Fusil: librería en Python usada para escribir programas de fuzzing 
  • fuzzer.py (feliam): fuzzer sencillo de Felipe Andres Manzano 
  • Fuzzbox: multi-codec media fuzzer
  • Mistress: genera formatos de archivos al vuelo y protocolos con datos malformados, basados en patrones predefinidos
  • Peach Fuzzing Platform: framework de fuzzing extensible para la generación y la mutación basada en fuzzing (la v2 fue escrita en Python)
  • Powerfuzzer: fuzzer web altamente automatizado y totalmente personalizable (protocolo HTTP basado en fuzzer de aplicación)
  • SMUDGE 
  • Sulley: framework de desarrollo fuzzer y pruebas que consiste en varios componentes extensibles
  • TAOF: (el Arte del Fuzzing) incluye ProxyFuzz, un fuzzer man-in -the-middle de red no determinista
  • untidy: fuzzer XML de propósito general
  • Windows IPC Fuzzing Tools: herramientas para fuzzear aplicaciones que usan mecanimos Windows Interprocess Communication
  • WSBang: ejecuta pruebas automáticas contra servicios web SOAP
 

Web

 
  • FunkLoad: medidor de carga web funcional
  • Ghost.py: cliente webkit escrito en Python 
  • HTTPie: cliente http similar a cURL pero más intuitivo. 
  • mitmproxy: proxy HTTP de interceptación con soporte SSL. Permite inspeccionar y editar tráfico al vuelo. 
  • Requests: librería HTTP sencilla y elegante, hecha para seres humanos
  • Twill: navega por Internet mediante un interface en línea de comandos. Soportaweb testing automatizado
  • pathod / pathoc: demonio/cliente para saturar clientes y servidores HTTP
  • ProxMon: procesa logs de proxy y crea informes con los resultados
  • python-spidermonkey: puente al motor JavaScript de Mozilla SpiderMonkey; permite llamar y evaluar scripts y funciones Javascript
  • spynner: módulo de navegación web programable para Python con soporte Javascript/AJAX
  • WSMap: encuentra servicios web y descubre ficheros
  • Windmill: herramienta de pruebas creada para automatizar y depurar aplicaciones web
 

Forense

 
  • aft: Android forensic toolkit
  • LibForensics: librería para desarrollar aplicaciones forenses digitales 
  • TrIDLib: identifica los tipos de archivo de sus firmas binarias. Ahora incluye Pythonbinding
  • Volatility: extrae y analiza artefactos digitales de la memoria volátil (RAM)
 

Análisis de malware

 
  • Exefilter: filtra formatos de archivo en mensajes de correo electrónico, páginas web o archivos. Detecta muchos formatos de archivo comunes y puede eliminar contenido.
  • phoneyc: implementacion de honeyclient totalmente escrito en python
  • pyew: editor hexadecimal y desensamblador en línea de comandos, principalmente usado para analizar malware
  • pyClamAV:  añade capacidades de detección de virus para tu software Python
  • jsunpack-n: unpacker de JavaScript genérico: emula la funcionalidad del navegador para detectar exploits dirigidos a explotar vulnerabilidades en navegadores y plugins
  • yara-python: identifica y clasifica muestras de malware
 

PDF

 
  • Didier Stevens' PDF tools: analiza, identifica y crea ficheros PDF (incluye PDFiD,pdf-parsermake-pdf y mPDF)
  • Opaf: Open Framework Analysis PDF . Convierte PDF a un árbol XML que puede ser analizado y modificado.
  • Origapy: wrapper de Python para el módulo de Ruby Origami que desinfecta archivos PDF
  • PDFMiner: extrae texto de ficheros PDF 
  • pyPDF: Python PDF toolkit: extrae info, corta, une, cifra, descifra...
  • python-poppler-qt4: une Python con la librería Poppler PDF, incluyendo soporte Qt4
 

Misc

 
  • Exomind: para la creación de gráficos y el desarrollo de módulos de inteligencia de código abierto, centrada en servicios de redes sociales, motores de búsqueda y mensajería instantánea
  • Hachoir: permite ver y editar un stream binario campo por campo
  • InlineEgg: toolbox de clases para escribir pequeños programas en Python
  • PyMangle: herramienta de línea de comandos y una biblioteca de Python utilizada para crear listas de palabras para su uso con otras herramientas de pruebas de intrusión
  • RevHosts: enumera los virtual hosts de una dirección IP dada
  • simplejson: JSON encoder/decoder, para por ej. usar Google's AJAX API
 

Otras herramientas y librerías útiles

 
  • IPython: shell Python interactivo y mejorado con algunas características para la introspección de objetos, acceso a una consola del sistema y su propio sistemaespecial de comandos
  • Beautiful Soup: HTML parser optimizado para screen-scraping
  • matplotlib: construye gráficos 2D de matrices
  • Mayavi: : 3D de visualización de datos científicos y plotting
  • RTGraph3D: crea gráficos dinámicos en 3D
  • Twisted: motor de creación de redes basada en eventos
  • Suds:  cliente SOAP ligero para servicios Web
  • M2Crypto: wrapper OpenSSL más completo
  • NetworkX: librería gráfica (bordes, nodos)
  • Pandas: librería que proporciona mayor rendimiento y mayor facilidad de uso para analizar estructuras de datos de alto rendimiento y herramientas de análisis de datos
  • pyparsing: módulo de parsing general
  • lxml: librería más rica en características y fácil de usar para trabajar con XML y HTML
  • Whoosh: rápido, con muchas características de indexación de texto completo y búsqueda de librería implementado en Python
  • Pexpect: controla y automatiza otros programas, similar al sistema Don Libes `Expect
  • Sikuli, tecnología visual para buscar y automatizar interfaces gráficas de usuario con capturas de pantalla. Programable en Jython
  • PyQt y PySide: Python bindings para el framework Qt y librería GUI

miércoles, 6 de noviembre de 2013

Cuidado con los Fake AV y los Rogue AV para Android

El otro día, cuando hablé del troyano profesional para Android, terminaba el artículo recordando de forma rápida algunas medidas de protección que pueden tomarse. Entre ellas, por supuesto, la de instalar un anti- malware en el dispositivo Android.

Figura 1: Troyano para Android robando conversaciones de WhatsApp

Después, reflexionando al releer los posts que había dejado guardados para leer más tarde, me di cuenta de que - además de haber dejado más info de cómo espiar WhatsApp - podría haber incitado sin querer a los menos avispados a caer en las manos de las mafias de los Fake AV o los Rogue AV, así que aprovecho el post de hoy para avisar de eso.

Los Fake AV o Rogue AV son herramientas que simulan ser soluciones Anti malwareprofesionales, pero que realmente son malware ellos mismos. Cuando se usa el termino de Fake AV suelen hacer referencia a adware que, simulando ser una herramienta de seguridad - como podrían simular se cualquier otra - ganan dinero instalando otro tipo de software, mediante la invasión del sistema como publicidad o mediante esquemas de Fraude Online como el envío de spam o el click-fraud.

Figura 2: Fake AV  para Android llamado VirusScanner que utilizaba el logo de Kaspersky

Los Rogue AV son por el contrario herramientas que simulan ser el antivirus, pero para secuestrar ficheros y vender falsas vacunas a precios descabellados. Es decir, crean el malware y la vacuna anti-malware a la carta para hacer la vida del usuario un completo infierno.
Figura 3: Rogue AV para Android llamado Android Defender quiere cobrar por vacunas

De estos dos tipos de herramientas hemos tenido cientos en sistemas operativosMicrosoft Windows y Mac OS X, como el famoso MacDefender - y todas sus mutaciones - o los clásicos MacSweeper e Imunizator, primeros Rogue AV para el sistema operativo Mac OS X.

Figura 4: MacSweeper, el primer Rogue AV para Mac OS X

En el mundo de Android esto ya empieza a suceder desde hace algún tiempo, así que es posible encontrarse con la sorpresa de ir a buscar un anti-malware para Androidy descargarse un Fake AV o Rogue AV, como el Mobile Defender que analizaba Jose Miguel Esparza en su blog.

Figura 5: Rogue AV para Android llamado Mobile Defender

Si vas a descargar una solución anti-malware para Android, busca alguna suite profesional de alguna compañía que previamente conozcas. Casi todas las empresas que hacen software anti-malware para WindowsMac OS X o Linux, tienen soluciones para sistemas móviles como Symbian o Android, así que lo mejor es que te vayas a una casa de tu confianza.

Recuerda también que, los antivirus son una ayuda, pero no son 100 % efectivos, por lo que a pesar de que tengas instalado un anti-malware para tu Android, deberás seguir teniendo hábitos saludables, que nadie te va a salvar de tus errores garrafales.



Evasión de sistemas de análisis dinámico de malware


Casi una año hemos tenido que esperar a la publicación del número 4 de Valhalla, unezine que seguro que ya conocen (y probablemente aman) todos los escritores de virus.

En el encontrarás infectores multiplataforma, métodos propagación, metamorfismo, nuevas técnicas (como la sorprendente auto-replicación usando la codificación del ADN) y trucos para evadir sistemas en línea de análisis dinámico como el que explica m0sa en su artículo: "SYP.01: Bypassing Online Dynamic Analysis Systems"...

Como ya vimos en el blog hace tiempo existen varios servicios online gratuitos que básicamente ejecutan el malware y monitorizan su comportamiento. Estos servicios normalmente son de dos tipos: basados en máquinas virtuales o basados en hooks, y por supuesto hay sistemas que combinan estos dos tipos.

Evasión de sistemas basados en máquinas virtuales

En las VM el sistema arranca en una máquina virtual limpia, ejecuta el malware, la para y, después de un tiempo definido, compara el resultado con el inicial para determinar los cambios realizados.

Normalmente para intentar evadir este análisis se utilizan dos técnicas:

- Detectar la presencia de VM: existen muchas técnicas para la detección de máquinas virtuales, aunque también otras tantas para ocultarlas.

- Retraso en la ejecución del malware: como la máquina virtual normalmente tiene un límite de tiempo para ejecutar el malware, es una buena idea retrasar su ejecución. No obstante el malware se retrasará también cuando se ejecute en un entorno real.    

La mayoría de los servicios online para "no aburrir" al usuario y presentarles resultados relativamente inmediatos ejecutan el malware durante menos de 10 minutos. Con sólo 3 líneas es posible evadir Anubis.

        CALL GetTickCount
        CMP  EAX, 927C0H ; 600000 MILLISECONDS = 10 MINUTES
        JB   Fake_Behavior

Evasión de sistemas basados en hooks

En los sistemas análisis dinámico que utilizan hooks también se ejecuta el malware (en una máquina virtual o en un servidor físico) durante un periodo de tiempo prefijado. Después el sistema hookea la mayoría y las más populares APIs del sistema para obtener la información del comportamiento del malware. Uno de los analizadores online más populares que usan esta técnica es CWSandbox.

Es muy fácil detectar el hook de un API. Antes de llamar al API hay que leer los primeros bytes de una dirección o address, si existe una instrucción de control de flujo el API está hookeada y el malware debería mostrar un comportamiento falso.

 MOV    EBX, DWORD PTR [EBP+AGetProcAddress]
        MOV AL, BYTE PTR [EBX]
        CMP AL, 0E9H             ; JMP
        JE    FAKE_BEHAVIOR
        CMP AL, 0FFH             ; JMP/CALL
        JE     FAKE_BEHAVIOR
        CMP AL, 0E8H             ; CALL
        JE    FAKE_BEHAVIOR   
        CMP    AL, 68H              ; PUSH+RET
        JE    IS_FOLLOWED_BY_RET
        JMP NO_HOOK
    IS_FOLLOWED_BY_RET:
        MOV AL, BYTE PTR [EBX+5]
        CMP AL, 0C3H             ; RET
        JE    FAKE_BEHAVIOR
           
    NO_HOOK:

Pruebas y conclusiones

Para la prueba de concepto m0sa subió bots de Zeus a distinos analizadores dinámicos online y luego repitió los análisis con el mismo bot parcheado:
Comodobeforeafter
ThreatExpertbeforeafter
CWSandboxbeforeafter
Anubisbeforeafter
Malwrbeforeafter

Todos los sistemas fueron evadidos exceptuando Joe Sandbox, cuyo estudio será presentado próximamente... 


Fuente

martes, 5 de noviembre de 2013

Descifrando contraseñas de Cisco IOS

Nunca pero nunca se debe facilitar el fichero de configuración de un switch o router Cisco sin eliminar manualmente sus contraseñas, aunque estén cifradas.

En Cisco IOS el comando 'service password-encryption' simplemente cifra la contraseña utilizandoVigenère (tipo 7), un algoritmo totalmente reversible.

Por ejemplo, así se mostraría la contraseña en el fichero de configuración en texto plano:

username pepito privilege 15 password 0 MyP4ssw0rd

Y así cifrada con tipo 7:

username pepito privilege 15 password 7 022B1D6B5F151C361C5C0D

Entonces simplemente con cualquier herramienta (incluso online) es posible revertirla:




Afortunadamente desde la versión 12.2(8)T es posible generar un hash md5 con salt de la contraseña especificando simplemente 'secret' (tipo 5):

username pepito privilege 15 secret 5 $1$jR5i$.HDBuKq.wIDOn2EYpCPYc0

Sin embargo, aunque el algoritmo ya no es reversible, la contraseña sigue siendo vulnerable a ataques de fuerza bruta o diccionario (o consultas a tablas rainbow). Por ejemplo con Cain y un buen diccionario creado con Mutator puede llevarte sólo unos minutos obtenerla:




Por lo tanto volvemos a la frase inicial de esta entrada: borra siempre las contraseñas de tu fichero de configuración (aunque esten cifradas) si vas a facilitarlo a un tercero.



Linux Exploiting: Un libro para crear exploits de GNU/Linux

Fuente: Elladodelmal.com 


No es la primera vez que publico en este blog algún artículo de Blackngel, como el Confusing Acunetix Kiddies & No Limit Crawlers o el de Prescinde de tu sistema operativo... si puedes. Sus textos son buenos, y sus contenidos interesantes y didácticos. Cuando me propuso escribir un libro sobre cómo hacer exploits para sistemas operativos Linux, no lo dudé y contesté ipso-facto que sí. Hoy, el libro ya está disponible a la venta, aunque será el lunes cuando se empiece a entregar a los compradores.


Figura 1: Linux Exploiting

El contenido de libro lo podéis ver en el índice del libro y está descrito por él mismo en la web de 0xWord para Linux Exploiting de la siguiente guisa:
"El exploiting es la base de todas las técnicas de ataque existentes que se utilizan a diario contra aplicaciones vulnerables. De hecho, si no fuera por esta ardua y paciente tarea que los hackers han ido desarrollando a lo largo de los años, frameworks completos y tan conocidos a día de hoy como lo pueden ser Metasploit, Core Impact o Canvas, no existirían ni podrían ser utilizados por pentesters y profesionales de la seguridad informática que habitan todo el globo terráqueo. 
El exploiting es el arte de convertir una vulnerabilidad o brecha de seguridad en una entrada real hacia un sistema ajeno. Cuando cientos de noticias en la red hablan sobre "una posible ejecución de código arbitrario", el exploiter es aquella persona capaz de desarrollar todos los detalles técnicos y complejos elementos que hacen realidad dicha afirmación. El objetivo es provocar, a través de un fallo de programación, que una aplicación haga cosas para las que inicialmente no estaba diseñada, pudiendo tomar así posterior control sobre un sistema. 
Desde la perspectiva de un hacker ético, este libro le brinda todas las habilidades necesarias para adentrarse en el mundo del exploiting y hacking de aplicaciones en el sistema operativo Linux. Conviértase en un ninja de la seguridad, aprenda el Kung Fu de los hackers. Que no le quepa duda, está a un paso de descubrir un maravilloso mundo repleto de estimulantes desafíos."

Para que os hagáis una idea del libro que ha quedado, como más de 300 páginas de contenidos, con ejemplos de CTFs, técnicas paso a paso con ejemplos en Español de cada tipo, y uso de herramientas tan populares como radare, os he seleccionado lo que se ve por ejemplo en un capítulo dedicado al exploiting avanzado.

Figura 2: Capítulo IX del libro de Linux Exploiting

En definitiva, David Puente Castro aka Blackngel, ha creado un libro más que recomendable si quieres profundizar en el arte de crear exploits para sistemas operativos Linux. Además es un complemento perfecto si ya te has leído Metasploit para pentesters, Hardening GNU/Linux o Pentesting con Kali.

lunes, 4 de noviembre de 2013

Troyano para espiar un Android o para espiar a través de él

Para la realización de una demostración durante la grabación de un programa de Televisión sobre el espionaje a las personas decidimos comprar un troyano para terminales smartphone bastante profesional. El sistema funciona tal y como se explica en el libro de Hacking iOS: iPhone & iPad con un panel de control basado en servicios web al que se conectará el troyano para enviar los datos desde el smartphone y recibir los comandos y al que también se conectará el administrador del troyano para acceder a la información y manejar todos los datos.


En el caso de los dispositivos Android hay que conseguir que el terminal estérooteado o que el usuario motu proprio decida instalarse el apk del troyano, ya sea vía ingeniería social o explotando algún bug que se descubra. En el caso de iPhone oiPad ya he contado varias veces las formas que existen para troyanizar el terminal iOS, algo que se hace un poco más complicado que un terminal Android.

En el caso en concreto nuestro, troyanizamos un terminal con Android, y procedimos a ver qué opciones teníamos disponibles y cómo funcionaban, y la verdad es que nos sorprendió lo bien que funcionaba y lo difícil que es detectarlo si no hay unantimalware instalado o se hace un análisis forense del terminal.

Figura 1: Seguimiento GPS de las ubicaciones del troyano en el teléfono Android

Entre las opciones más evidentes se encuentran la de geoposicionar al terminal en todo momento, registrando desde la ubicación inicial donde lo dimos de alta enEleven Paths, pasando por todos los lugares donde se haya encontrado alguna vez el terminal.

Figura 2: Registro y grabación de llamadas emitidas y recibidas

Por supuesto, el software realiza el registro de todas las llamadas entrantes y salientes, y si se activa la opción, realiza la grabación del audio de las llamadasdesde el micrófono y el altavoz del terminal, para que desde la página web se puedan escuchar todas las conversaciones.

Figura 3: Opciones de grabación de herramientas de mensajería

La lista de opciones es larga, leer los mensajes SMS, los correos electrónicos deGmail, los mensajes y conversaciones de SkypeViber, y por supuesto la demandada opción para espiar WhatsApp, pudiendo ver todas las conversaciones en todo momento.

Figura 4: Registro de mensajes de WhtasApp

De todas ellas, las que más nos sorprendió es la de controlar el terminal por medio de mensajes SMS que el dueño del terminal nunca podrá interceptar, ya que el troyano está construido para interceptar cualquier evento haciendo uso deBroadcast Receviers - tal y como se explica en el libro de Desarrollo de Aplicaciones Android Seguras -, lo que le permite recibir el mensaje y procesarlo.

Figura 5: Comandos de control remoto por SMS

Entre las opciones que hay de control remoto están las de arrancar o parar aplicaciones, bloquear el terminal en un determinado instante o borrar el terminal completamente.

Figura 6: Comando SMS para grabar el audio de un entorno 

De todas ellas, la que más asusta es la de poder enviar un comando SMS paragrabar el entorno, sin que el dueño del terminal lo sepa, el teléfono se pone a grabar por el micrófono durante uno o varios minutos y después sube el archivo de audio a la web para que pueda ser escuchado en el momento.

Figura 7: Entornos de 1 minuto grabados en la web

Esta opción puede ser utilizada para espiar conversaciones en reuniones a las que no ha sido invitado alguien o para grabar cuando se produzca algún evento disparador - al llegar a una ubicación, al llegar una hora concreta, etc... -.

Visto esto, os recomiendo que si tenéis un terminal iPhone tengáis controlado el terminal en todo momento, con passcode complejo, sin Siri, actualizado a la última versión y sin jailbreak a ser posible. Si tienes un Android, además de todas esas medidas - salvo la de Siri y Jailbreak - evita bajarte apps con permisos raros, pon un antimalware y evita rootear el teléfono... y cuidado con el WhtasApp que te bajas.





sábado, 2 de noviembre de 2013

Cómo usar Whatsapp desde tu PC con Pidgin y el plugin 'whatsapp-purple'


En esta entrada veremos cómo utilizar Whatsappdesde el ordenador mediante Pidgin, un cliente multiplataforma basado en GTK que permite el acceso simultáneo a varios chats.
En nuestro caso utilizaremos Pidgin bajo Windows 7 y lo primero que haremos será instalar el plugin 'whatsapp-purple' que implementa el protocolo de Whatsapp para libpurple, la librería de desarrollo de mensajería instantánea que utilizan varios clientes (incluido Pidgin). Para ello simplemente descargamos y copiamos la DLL (last-whatsapp.dll) en el directorio de plugins (C:\Program Files (x86)\Pidgin\plugins).

Verás que una vez copiado el fichero al iniciar el cliente e intentar añadir una cuenta ya se puede seleccionar el protocolo Whatsapp:
Eso sí, para añadir una cuenta de Whatsapp en Pidgin necesitaremos primero conocer su contraseña correspondiente...

Si queremos usar el mismo número de nuestro teléfono (Android o iPhone) tendremos que eliminar y volver a crear la cuenta (ups!) o, si no, esnifar la contraseña mediante un proxy SSL entre medias (MiTM), algo que ya es muy complicado teniendo en cuenta que Whatsapp ha añadido un control para comprobar las huellas o fingerprints de los certificados.

Por eso recomendamos registrarse y utilizar un nuevo número con fonYou. Su uso es gratuito, y "sólo" tendremos que facilitar los datos personales* y dar el número real del teléfono que utilizararemos para activar el número fonYou. Ignora la advertencia de que no funcionará con mensajería instantánea XD:
* Ojo que, una vez dado de alta, también tendremos que confirmar tu identidad enviando una fotocopia del DNI en un plazo de tres días. De lo contrario nos darán de baja la cuenta (pero tres días son 72 horas de pura maldad):

Ahora que tenemos un nuevo número 6688X hay que darlo de alta en Whatsapp.Para ello en lugar de utilizar el cliente oficial del teléfono usamos Yowsup, una librería en Python que nos provee las mismas funcionalidades, entre ellas el registro.

Yo realizaré los siguientes pasos en una máquina virtual con Debian/Kali Linux, aunque debería funcionar en cualquier sistema operativo con los siguientes requisitos:

    - python 2.6+
    - python-dateutil
    - argparse para python inferior a 2.7
    - libxml2 sólo si usas el flag --v1

Empezamos bajando el repositorio git a nuestro equipo y damos permisos de ejecución a su cliente:

root@kali:~# git clone https://github.com/tgalal/yowsup.git
Cloning into 'yowsup'...
remote: Counting objects: 814, done.
remote: Compressing objects: 100% (514/514), done.
remote: Total 814 (delta 501), reused 587 (delta 294)
Receiving objects: 100% (814/814), 147.17 KiB, done.
Resolving deltas: 100% (501/501), done.
root@kali:~# 

root@kali:~# cd yowsup/src/
root@kali:~/yowsup/src# chmod +x yowsup-cli 
  
Posteriormente preparamos el fichero de registro con los siguientes datos:

root@kali:~/yowsup/src# vi whatsapp_config.txt

cc=34 # Prefijo de España
phone=346688XXXXX # Número de teléfono con el prefijo delante
id=XXXXXXXXXXXXX  # Si nunca nos hemos conectado a esta red de mensajería desde un teléfono real dejarlo en blanco, sino el id obtenido marcando *#06# en tu terminal 
password= #Contraseña. Si no estamos registrados la dejamos en blanco.

Después con este fichero de configuración podemos solicitar el código de activación correspondiente:

root@kali:~/yowsup/src# ./yowsup-cli -c whatsapp_config.txt --requestcode sms
status: sent
retry_after: 1805
length: 6
method: sms

En unos instantes nos llegará un SMS con el código de activación de Whatsapp, que ahora volvemos a utilizar para obtener el password definitivo:
root@kali:~/yowsup/src# ./yowsup-cli -c whatsapp_config.txt --register 123-307
status: ok
kind: free
pw: EiFn6rzSd0V5VbGwJ23Qy0Glkck=
price: 0,89 €
price_expiration: 1396254501
currency: EUR
cost: 0.89
expiration: 1434667607
login: 346688xxxxx
type: new

Ahora que ya tenemos la password (campo pw:) podemos volver a Windows y añadir la nueva cuenta de Whatsapp en Pidgin con la contraseña obtenida:

 Y ya tienes Whatsapp en tu PC, eeeeh... con un número que nadie conoce todavía... ¡Seguro que más de uno se pone a trollear! lol