Tag Archive HACKER

BySin Rostro

Reversing en Malware 3 – Análisis estático

Bueno, bueno, ya por fin comenzaremos con la practica, no es que no quiera pasar de lleno a ella, si no que quiero que queden claros algunos recursos que usaremos. Además podemos aprender más cosas así 🤓.

Sin han llegado hasta aquí sin haber leído mis 2 anteriores post les recomiendo ir rápidamente allá y leerlas porque están geniales aquí tienes el Primer Post y acá tienes el Segundo Post.

Análisis Estático

Ok, lo primero que haré será dejar una serie de cosas que debemos (aunque sea una hipótesis) obtener con este análisis. Están en el orden en que yo las haría. Así que si encuentras la ultima o la 3ra no importa pero si deberíamos tener la mayoría si no es que todas 😉.

1.- Información del archivo (tipo de archivo, cabeceras, tamaño, etc)
2.- Hashing y análisis con VirusTotal
3.- PE Información (DLLs, Librerías, etc)
4.- Recolección de Strings
5.- Ejecución del archivo
6.- Captura Trafico de Red
7.- ¿¿Como ha llegado ahí??

Ya había pasado el link del primer archivo con el que trabajaremos pero por si acaso no lo has descargado aquí esta de nuevo recuerden que la contraseña es “hpsi”.

1.- Información del archivo

Ya lo he descargado y comenzare abriendo el archivo desconocido (aún) con un editor hexadecimal estoy usando HxD – Hexeditor. Y esto es lo que veo cuando le cargo el archivo desconocido.

Como se pueden dar cuenta la cabecera del archivo me dice MZ, si eres de los que alguna vez a realizado wargames de esteganografía sabrán casi inmediatamente de que tipo de archivo se trata si no, les dejo una lista del inicio las cabeceras de algunos archivos.

.PNG                     PNG   |END
.GIF                       GIF   |END
.JPG/JPEG         ÿØÿà   ÿÙ
.BMP                    BM
.EXE                     Mz
.MP3                    ID3
.RAR                    Rar
.ZIP                      Pk
.PDF                    %PDF

Bueno con esto podemos decir que el tipo de archivo es un .EXE, un ejecutable del OS win2, así que podemos agregarle la extensión a ese archivo el cual se vera así.

2.- Hashing y análisis en VT

Bien ahora quisiera pasarlo al script de python que creamos en el post anterior y ver que resultados nos arroja.

Baya si que es un chico peligroso, como pueden ver de los 63 tests, 59 fueron True osea que fue amenaza positiva y la mayoría me dice que es un troyano/backdoor así que ya podemos ir imaginando que es lo que este chico hace.

3.- PE información

Ok, veamos que nos devuelve la información del PE en este caso usare dos herramientas para que vean que esta cosa del análisis es muy versátil 😂😂.

La primera es PEview veamos que es lo que esta importando.

Ok en este programa esta haciendo 5 importaciones veamos en el segundo que nos devuelve.

EL programa se llama CFF explorer.

Bueno al parecer no hay problema en eso ya que nos devuelve los mismos resultados ustedes eligen 😁😁

Ok, Ok, ¿¿Bueno pero para que me sirve saber esto de las importaciones?? se estarán preguntando. La respuesta es sencilla, para saber que es lo que planea hacer el archivo.exe.

Por ejemplo la DLL 5 osea la WS2_32.dll le permite al .exe configurar conexiones de red ya que esta DLL configura sockets como lo podemos leer aquí.

4.- Strings

Muy bien hagamos una recopilación de información que tenemos hasta ahora:

El archivo desconocido ya no lo es más, ya que identificamos que era un .EXE,

sabemos que la mayoría de los antivirus lo reconocen como troyano/backdoor,

que importa 5 DLLs y que una de ellas es usada para crear o configurar conexiones de red,

vaya, si que parece un troyano 😈😈.

Ahora deberíamos tratar de averiguar a donde es que hace esa conexión, si es que la hace.

Con la obtención de strings podríamos averiguar eso y otras cosas más.

Un ejemplo, si el archivo manda un mensaje al ser ejecutado…, podríamos saber que es lo que este dice o si crea una carpeta o ingresa a una ruta cual es el nombre de estas, etc, etc. El problema aquí como en cualquier caso de Ingeniería Reversa claro, será la cantidad de strings que se puedan obtener ya que esta puede ser extremadamente grande y en ocasiones nos puede confundir en lugar de ayudarnos.

Vamos pues a ello, utilizare esta vez la herramienta llamada Bin Text pero de nuevo ustedes pueden usar la que crean conveniente. Esto es lo que me arroja.

Esas 4 llaman mi atención (Bueno hay mas pero por ahora no lo mencionare 😉).

  1. http://www.ueopen.com/test.html
  2. cmd.exe
  3. /c del
  4. 60.248.52.95:443

Algunas de las otras me dan una idea de como es que trabaja pero estas 4 son muy llamativas al ojo, ¿No creen?

Bueno ya con estas cadenas de texto podríamos suponer que hace 2 conexiones una a la URL y otra a la dirección IP y que probablemente borre nuestro disco duro 😱😱😱😱 jajaja no, no, bromeo cmd /c indica un comando en este caso del., el cual sí quiere decir borrar (delete) pero aun no se que exactamente, ¿¿tal vez la siguiente linea que esta abajo de ese string??

Bueno mientras son peras o son manzanas pasemos al siguiente punto.

5.- Ejecución del archivo

Nota importante:.

Estoy trabajando en Virtual Environment (Entorno virtual) osea que si se me jode el sistema, tengo la posibilidad de recuperarlo, siempre y cuando tenga configurado un snapshot.

Espero no me juzguen por mi paradoja de lo virtual que intento explicar con la imagen 😅😂😥.

Bien explicando un poco mejor, estoy virtualizando un sistema Win2, dentro de ese sistema operativo win2 he creado un punto en donde he preservado el estado actual de la máquina, sus dispositivos, documentos, configuraciones, etc. Por supuesto, puedes crear snapshots dentro de los snapshots, por eso decía eso de las paradojas, por que es como si crearas 2 o 3 o mas realidades que afectan a ese sistema operativo win2. Una imagen vale más que 1000 palabras.

Puedes regresar a cualquier estado al cual le tengas hecho un snapshot, claro siempre y cuando no esté dañado 😂.

Bueno continuando con lo que nos interesa es momento de correr nuestro debian 64 bits y corroborar que existe conexión entre las dos máquinas.

Muy bien tengo conexión de win2 a Debian, ahora haré un snapshot de este punto antes de ejecutar el archivo.

Mientras tanto en Debian tengo corriendo wireshark y veo que a capturado el ping que he realizado, confirmándome que efectivamente hay conexión entre las máquinas.

Muy bien corro el archivo y esto es lo que sucede.

Obtenemos las capturas de estos paquetes, he señalado 3 cosas., de izquierda a derecha,

tenemos la dirección IP del Win2,

la dirección IP a la que el malware intenta hacer la conexión,

el Puerto Local que ha usado el malware en Win2

y por ultimo el puerto Remoto de la dirección IP posible del C&C.

He realizado la misma captura pero desde el mismo Win2 y obviamente son los mismo resultados.

Noten que el archivo mientras era ejecutado y hacia las debidas conexiones sigue estando en el escritorio pero una vez terminada esas tareas ha desaparecido, bueno en realidad ha sido eliminado por el mismo.

Resumiendo,

podemos decir que con la ayuda PEview obtuvimos la muy posible fecha de compilación del archivo, no podemos afirmar con toda certeza pero al menos tenemos una fecha estimada.

Ok veamos.

- fecha: 2009/05/14
- Lenguaje: Microsoft Visual C++ 6.0
- Strings encontradas(Ahora si añadiré una más):
   - 60.248.52.95:443 # Host y puerto al que conecta
   - http://www.ueopen.com/test.html # ?? Probablemente url de test para conexion ???
   - cmd.exe # Referencia hacia la consola de windows 
   - /c del  # Comando para su auto-eliminación (delete itself  "cmd.exe /c $PATH > null")
   - *(SY)#  # Usado posiblemente para generar una Shell remota
- Despues de correr el archivo:
   - conecta a 60.248.52.95
   - genera una Shell inversa
   - y se auto elimina
- Con la información que hemos recolectado no podríamos decir como ha llegado
  ese archivo a la computadora, quiero decir, si ha sido enviado por medio 
  de phishing, un downloader lo a descargado, venia empaquetado con otra app,
  o de plano nos lo hemos bajado nosotros tratando de encontrar el crack para
  plant Vs zombies o alguna otra herramienta de softonic... 
  

Y podemos decir que nuestras hipótesis acerca de lo que este archivo realizaba estaban bien fundadas, bueno eso y además que el análisis con virustotal también nos dijo eso 😂😂😂.

Bueno hasta aquí creo que es un buen inicio en análisis estático hay muchas cosas mas que afrontar en este tipo de análisis pero como dije es una introducción ya iremos adentrando más en ello.

Saludos Hackers y hasta la próxima.

BySin Rostro

Reversing en Malware 2 – Hashing.

Un hash es un algoritmo matemático que es generado/creado a partir de una entrada como un texto, una contraseña o un archivo. Pero hoy lo usaremos en análisis de malware 😈.

¿NOS SIRVE EN ANÁLISIS DE MALWARE?

La respuesta es si.

Los hash son generados tomando bloques de datos arbitrarios y devolviendo una serie de caracteres con una longitud especifica. Es decir que a partir de los datos de entrada se genera la cadena que solo puede volverse a generar con esos mismos datos. Bueno en teoría eso debe de pasar pero en algunos casos como el de SHA1 que en meses anteriores ha sido colisionado por Investigadores de Google.

Aun así existen muchos más algoritmos. En nuestro caso vamos a estar utilizando MD5. ¿Pero? que es exactamente y como es que funciona.

Ya saben que no me gusta atiborrarlos de información además de que no estamos en un curso de cifrado 😆, así que tratare de explicarles en practica.

Imagina que estas descargando un archivo “juego.exe”, en la página del desarrollador menciona que el MD5 es:

8033E2DDE927771A125F26A158C282A3

Pero al descargarlo te das cuenta de que el MD5 que generas tu con ese mismo archivo es:

5F778048775E0ECE6DBB97B6997019B2

Claramente no es igual lo que nos da a pensar de acuerdo a la introducción de más arriba, que el archivo tiene bloques de datos diferentes al archivo que han desarrollado los creadores, con esto podríamos concordar en que este archivo puede contener código que bien podría o no, ser malicioso 😈😈.

Pasemos a la practica 😉

Tengo aquí un archivo.

Utilizare una utilidad llamada “QuickHash”

Después de abrir el archivo con la utilidad y elegir MD5 nos genera la cadena correspondiente a ese archivo

Y así de sencillo podríamos obtener el MD5 de los archivos. Bien con eso ya sabemos una manera de obtener MD5, pero para que nos sirve el MD5 en análisis de malware?

Bueno imagina que este archivo es un sample que tienes que analizar, para no subir el archivo completo a un motor de búsqueda que te ayude a saber si es o no una amenaza (ya sabes puede pesar mucho y aveces nuestras datas no alcanzan 😂), bueno pues con el MD5 podemos averiguar lo que queremos.

Para ello usaremos un sitio bastante conocido virusTotal y con el MD5 obtenido veremos los resultados que nos arroja.

Quiero que vean algo, el primer parámetro, el que esta arriba del nombre del archivo dice:

SHA256: 46532f3def025aca4da1fa5646f5d19fafb2ec00e3b262ad87712ec6756902f9

Este es un tipo de hash yo ingrese el MD5 no el SHA256. Lo que sucede es que ese motor de búsqueda calcula además del MD5 otros datos para que se tenga total certeza de que hablamos del mismo:

Y ahora mi parte Favorita 😍

Hazlo con python 😁

He desarrollado un pequeño script en python que nos calcula el MD5 del archivo.

# Script en python para calcular Hash MD5
# Analizar Samples
# Desarrollado por Eric Alberto Martínez
# Hacking Publico & sistemas informáticos
# AguasHack - No Hacking No Fun
# Versión 1.0
''' Este script permite calcular el Hash MD5 de archivos
  
    el código puede ser manipulado y/o copiado manteniendo las 
    11 primeras lineas de código.
''' 

# Importar librerías
import hashlib

# Acontinuación creamos una función
# que nos permitira abrir un archivo leer
# sus datos y generar su Hash MD5
 
def calcularMd5(archivo):
  archivo = open(archivo, 'rb')
  print "\nEl MD5 es: " + hashlib.md5(archivo.read()).hexdigest()
  archivo.close()

print "Hola, Ingresa la ruta del archivo"
archivo = raw_input("\n::> ")
calcularMd5(archivo)

Y., uno más un poco mejor elaborado, con este script interactuamos con el sitio de Virus Total para obtener los resultados del sitio. El script aun esta en desarrollo le quiero dar un poco más de formato, teniendo en cuenta que lo acaba de crear creo que es funcional y para nuestras pruebas durante las próximas entradas sera suficiente.

Como puedes ver son los mismos resultados que nos genero en la web de virustotal

– Nota:  Trate de dejarlo lo más simple posible le añadí comentarios a casi todo el código para que sea un poco más fácil de entender.

# Analizar Samples 
# Api VirusTotal
# Desarrollado por Eric Alberto Martinez
# Hacking Publico & sistemas informaticos
# AguasHack - No Hacking No Fun
# Version 1.0
''' Este script permite calcular el Hash MD5 de archivos
    y manipular los resultados obtenidos en Virus Total,
    el codigo puede ser manipulado y/o copiado manteniendo las 
    11 primeras lineas de codigo.
''' 
# Importamos librerias

import requests
import hashlib

# Tu llave API de virus Total (Tienes que registrarte)
apiKey = ''
    
# clase para obtener datos o subir archivos
class virusApi:
    

    # Funcion para escanear un archivo
    def escanear(self, apiKey, archivo):
        print "Analisando el archivo...\n"
        # Configuramos la APIKEY
        params = {'apikey': apiKey}
        # Abrimos el archivo en modo binario                                    
        files = {'file': (archivo, open(archivo, 'rb'))} 
        # Hacemos la peticion al sitio              
        response = requests.post('https://www.virustotal.com/vtapi/v2/file/scan', 
                                files=files, params=params)
        # obtenemos la respuesta del sitio
        json_response = response.json()                                 
    
    # Funcion para Re-escanear
    def rescanear(self, apiKey, md5):
        # confirguramos la APIKEY y el hashMD5
        params = {'apikey': apiKey, 
                'resource': md5}                                        
        # Hacemos la peticion al sitio
        response = requests.post('https://www.virustotal.com/vtapi/v2/file/rescan',
                                params=params)
        # Obtenemos la Respuesta del sitio                          
        json_response = response.json()                                 
    
    # Funcion para Obtener los resultados de un analisis
    def obtenerResultados(self, apiKey, md5):
        print "Obteniendo Resultados...\n"
        # Configuramos la APIKEY y el HashMD5
        params = {'apikey': apiKey, 
                'resource': md5} 
        # Creamos las cabeceras                                     
        headers = {
          "Accept-Encoding": "gzip, deflate",
          "User-Agent" : "gzip,  Mi Aplicacion python para VirusTotal"
          }     
        # hacemos la peticion al sitio                                                      
        response = requests.get('https://www.virustotal.com/vtapi/v2/file/report',
                                params=params, headers=headers)
        # obtenemos la respuesta del sitio      
        json_response = response.json() 
        # obtenemos solo las claves de la respuesta                             
        claves = json_response.keys()   
        # declare una variable                              
        x = 'scans'     
        # ciclo para obtener los primeros resultados excepto los de la deteccion                                                 
        for clave, valor in json_response.items():  
            # si la clave no es igual a 'scans'                 
            if clave != x:
                # imprimimos los primeros resultados                                                
                print clave, ':\t\t', valor
        # declaramos una lista                          
        lista = []
        # ciclo para obtener las claves del segundo resultado                                                       
        for i in json_response['scans'].keys(): 
            # agrega cada clave a la lista                              
            lista.append(i) 
            # Reasignamos la variable                                           
            j = json_response
            # Variable que contiene si el archivo es detectado o no p/c antivirus                                           
            detectado = str(j['scans'][i]['detected'])
            # Variable que contiene el tipo de amenaza que es detectada p/c antivirus                  
            resultado = str(j['scans'][i]['result'])
            # imprimimos el resultado                   
            print i + "\t\t" + detectado + "\t\t" + resultado           

# Instanciamos la clase
virusTotal = virusApi()                                                 
'''
Creo que apartir de aqui el codigo no necesita explicacion
ya que son cosas basicas que son faciles de entender, aun 
asi si existen dudas no duden en comentar en el grupo de
Hacking Publico & sistemas informaticos
'''
print "\nHola, Bienvenido\nQue deseas hacer?"
print '''
[1] Escanear
[2] Re Escanear
[3] Obtener resultados
'''
eleccion = raw_input("\n::> ")
if eleccion == '1':
    archivo = raw_input("\nIngresa la ruta del archivo \n::> ")
    virusTotal.escanear(apiKey, archivo)                                
    archivo = open(archivo, 'rb')
    # Calculamos el MD5 del archivo                                     
    md5 = hashlib.md5(archivo.read()).hexdigest()                       
    archivo.close()
    print "El hashMD5 del archivo es: " + md5
    virusTotal.obtenerResultados(apiKey, md5)
elif eleccion == '2':
    archivo = raw_input("\nIngresa la ruta del archivo \n::> ")
    archivo = open(archivo, 'rb')
    # Calculamos el MD5 del archivo
    md5 = hashlib.md5(archivo.read()).hexdigest()
    archivo.close()
    print "El hashMD5 del archivo es: " + md5
    virusTotal.rescanear(apiKey, md5)
    virusTotal.obtenerResultados(apiKey, md5)
else:
    archivo = raw_input("\nIngresa la ruta del archivo \n::> ")
    archivo = open(archivo, 'rb')
    # Calculamos el MD5 del archivo
    md5 = hashlib.md5(archivo.read()).hexdigest()
    archivo.close()
    print "El hashMD5 del archivo es: " + md5
    virusTotal.obtenerResultados(apiKey, md5)

Bueno hasta aquí esta entrada creo que lo han tomado bien, 😅😅 nos leemos en la próxima entrada.

Saludos Hackers!

BySin Rostro

Intro a Python 2

Bueno pues esta vez les traigo la segunda parte de la introducción a python, hablamos acerca de Scapy y lo poderoso que puede llegar a ser si se aprende a usar de forma correcta y de como es posible remplazar con este muchas de las herramientas de red que existen y por ultimo les muestro lo que se puede llegar a realizar con un script de python }:)

Moviéndonos con Scapy

BySin Rostro

Intro a python

Hablamos sobre el interprete y las características básicas de python, como los tipos de datos, como trabajar con listas, funciones, ciclos, estructuras de control y todo lo básico que debes de saber  para poder adentrarse a este maravilloso lenguaje. Ven acompañanos a este maravilloso viaje.

Introducción a Python

Bycarenki

¿Qué es lo que hace un Hacker Ético?

Los hackers éticos son motivados por diferentes razones, pero su propósito generalmente es el mismo que el de los Crackers: Tratan de determinar lo que un intruso puede ver en una red o sistema específico,  y ​​lo que el hacker puede hacer con esa información. Este proceso de prueba de la seguridad de un sistema o red se conoce como una prueba de penetración, o pen test.

Read More

Bycarenki

Certified Ethical Hacker v9: El por qué de la teoría

Traemos para tí una versión simplificada de nuestro curso del material de estudio de la certificación CEH de EC-Council

El objetivo de este material es proporcionarte en español la información general que todo CEH debería conocer.

…Pero yo quiero hackear, ¿para qué pierdo el tiempo con teoría?

Si bien, la aspiración de más del 80% de los que se acercan al tema del hacking es “hacer”, “hackear”, “meterse a las computadoras” siempre resulta conveniente documentarse con información acreditada, y porqué no, estudiar un poco.

Puedo darte algunas razones de peso (claro es mi criterio, tú puedes optar por bajarte Kali y empezar a “hackear”):

  1. Conocer la terminología es fundamental, al igual que cualquier área del conocimiento. Entre mejor conozcas y estés familiarizado con los conceptos, más fácil te resultará consultar trabajo de otras personas y, dar a conocer tu conocimiento.
  2. Conocer el significado real de un término (no el que crees que tiene tal o cual término) te diferenciará tarde o temprano cuando quieras formalizar tu labor en el área de la seguridad informática.
  3. Solo conociendo el porqué de lo que haces, podrás utilizar en todo su potencial, modificar o extender la funcionalidad de la(s) herramienta(s) que estés utilizando (es decir, la acción propia de “hackear”)
  4. Como consecuencia del punto anterior, llega un momento en que puedes encadenar herramientas y funciones en una solución extendida o algo totalmente nuevo.
  5. Podrías decir que “en la marcha se aprende” y es cierto, pero también es cierto que consultar la documentación te ofrece un costo / beneficio (en productividad, calidad de la información y tiempo) muy superior al empirismo puro.

Podría argumentar cantidad de razones, pero si las anteriores no te son mínimamente suficiente, el decirte 20 poco cambiará las cosas. En este caso, solo me queda decirte que le des una oportunidad a la lectura de documentación, verás que no será tiempo desperdiciado.

Certified Ethical Hacker

Certified Ethical Hacker

Finalmente cabe señalar que el material que forma esta serie es solo un extracto gratuito, de un curso más amplio y completo, al cual en un momento dado puedes acceder si así lo deseas.

Capítulo 1 – Introducción al Hacking Ético

 

 

¿Deseas participar en nuestro grupo de estudio para aplicar la certificación CEH? 

Aplicación de medidas para la implantación de la L.O.P.D. en las empresas

Obtendrás información ampliada  Y COMPLETA, a la que has leído en este artículo, y material adicional, visita https://ehack.mx/portfolio-view/material-de-estudio-ceh-online/ para más información o ecríbenos a ceh@ehack.mx

 

Ethical Hack

Ethical Hack

 


Fuentes:

“CEH”: Imagen cortesía by EC Council 

Licencia de Creative Commons Temas CEH by carenki basado en una obra de CEH is licensed under a Creative Commons Reconocimiento-NoComercial-CompartirIgual 4.0 Internacional License.

 

BySin Rostro

La Receta para SQLi (para novatos)

Hola Hackers en esta entrada veremos una inyección SQL muy básica es para novatos (así que si ya eres un viejo lobo en estos temas tal vez te parezca un poco aburrido), veremos un poco de teoría, no mucha ya saben que casi no me gusta y un pequeño ejemplo para que quede un poco mas claro.

LOS INGREDIENTES.

  • SQL
  • INYECCIONES SQL
  • Algunos comandos y funciones

 

SQL

Structured Query Language, traducido al español como Lenguaje de Consulta Estructurado es un lenguaje de programación estándar e interactivo para obtener información desde una base de datos y para actualizarla. Dicho en una manera mas amena y entendible podemos decir que con SQL podemos interactuar con una base de datos modificarla y hasta eliminar todo su contenido. Basaremos este tutorial en MYSQL.

INYECCIONES SQL

EL SQLi es una vulnerabilidad muy antigua pero muy común, que ocurre al no hacer una correcta verificación o delimitación de los datos de entrada que van dirigidos hacia el servidor y posteriormente a la base de datos. Por ende los datos de entrada que no se verifican deben ser comandos validos de SQL. Existen 2 métodos de inyección el GET y POST.

Algunos comandos y funciones

Ahora veremos algunos comandos que nos podrán servir, no los veremos a fondo ya que no es un mini curso de SQL. Pero esta demás saber que existen muchos mas comandos y funciones que los que utilizaremos. Además también existen parámetros que se pueden aplicar a cada comando/funciones como el de DISTINCT a la función GROUP_CONCAT, en fin no nos toca eso.

  1. UNION  – se usa para combinar el resultado de un numero de comandos
  2. SELECT – se usa para seleccionar datos
  3. INSERT – se usa para agregar datos
  4. DELETE – se usa para eliminar datos
  5. UPDATE – se usa para actualizar datos existentes
  6. GROUP_CONCAT – se usa para concatenar todos los registros (no importa si no entienden bien mas adelante se apreciara mejor)
  7. ORDER BY – ordena los registros de la selección actual.
  8. Los demas que usaremos son más sencillos de entender.

Read More