viernes, 16 de septiembre de 2016

BotNet de verano para mi

Durante el día de ayer llego a mis manos dos archivos con las siguientes características:

Nombre: Manuel.doc
MD5: cc2db35f43b4a12700c431811a463439

Nombre: SysinfY2X.db
MD5: cc2db35f43b4a12700c431811a463439

MD5 de los archivos a analizar

Se busco información en VirusTotal, obtenemos que 31 motores lo detectan como malicioso.

Más información:
                https://virustotal.com/es/file/fe9c78249937d57aaed2792238caeea298e715d9cf261add1fbfbaeeab084d40/analysis/


A continuación se procedió a intentar sacar algo más de jugo al documento ofimático, ya sabéis una/s URL/s, archivo embebido, etc.

Pero al comprobar si realmente nos encontrábamos ante un documento ofimático nos encontramos con ...

Tipo de archivos

Al abrir con el bloc de notas el archivo "Manuel.doc", se encontró:

Contenido del archivo: "Manuel.doc"

En ese momento, se recordó la siguiente entrada del blog: http://4null0.blogspot.com.es/2016/02/analizando-el-archivo-updatedat.html, en donde se trabajó con las extensiones: vbs y vbe.

Por lo que se procedió a descifrar mediante el descifrador que se utilizó la vez anterior.

Una vez hecho, se encontró:
  

Código tras descifrar el archivo: "Manuel.doc"

¡¡Genial!!, un hermoso código que estudiar, y del cual escribir.

Por ahora, comento lo fundamental para que se tomen las contramedidas oportunas:

0.- MD5 de los archivos: cc2db35f43b4a12700c431811a463439

1.- Sustituye, dentro cada unidad de red que se encuentre en el ordenador exceptuando la unidad C:, los archivos por enlaces. Estos enlaces lanzarán el archivo : Manuel.doc, tras cuya ejecución lanzará el archivo original, este último tendrá atributos de oculto frente al sistema.

Es decir, estamos ante un método de propagación por red

2.- Modificará las siguientes claves de registro para ganar persistencia, y protegerse:
  2.1.- Persistencia

HKCU\Software\Microsoft\Windows\CurrentVersion\Run\SysinfY2X.db = C:\WINDOWS\system32\cmd.exe /c start wscript  /e:VBScript.Encode %temp%\SysinfY2X.db

  2.2.- Protección: configura el parámetro que dice que los archivos archivos ocultos no se muestren.

HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Hidden = 2

3.-  Almacena en la ubicación que marque la variable del sistema: %Temp% el archivo: SysinfY2X.db.
  3.1.- Comprueba la existencia en la ubicación que marque la variable del sistema: %Temp% del archivo: SysinfYhX.db. Si existe lo elimina

4.- Realiza peticiones hacía Internet.
  4.1.-  realy.mooo.com/bot/lancer/index.php?cmd=ping
  4.2.-  realy.mooo.com/bot/lancer/index.php?cmd=<tamañodelarchivo>SysinfY2X.db
  4.3.-  realy.mooo.com/bot/lancer/index.php?cmd=list


Espero haber ayudado en algo





viernes, 26 de agosto de 2016

Quiero que mi malware viva en entornos Windows para siempre

Como se sabe, el malware casi siempre intenta hacerse persistente en el sistema infectado para continuar actuando aunque dicho sistema sea reiniciado.

NOTA: Dentro del proceso de arranque de un sistema Windows, existen diversas fases, cada una de las cuales utilizan distintas claves del registro de Windows para su funcionamiento.

Algunas de las claves del registro de Windows que suelen ser usadas por el malware para realizar lo anteriormente comentado, son:

1.- Claves de registro Run/RunOnce.

A nivel de usuario, tenemos:

HKCU \Software\Microsoft\Windows\CurrentVersion\Run
HKCU \Software\Microsoft\Windows\CurrentVersion\RunOnce


A nivel de sistema, tenemos:

HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
HKLM \SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce
HKLM \ SOFTWARE \Microsoft\Windows\CurrentVersion\Policies\Explorer\Run




2.- Claves de registro utilizadas por el proceso: Smss

Antes de que el proceso “smss.exe” lance el subsistema de Windows, llamara al subsistema de configuración que cargará el contenido presente en las claves:

HKLM\SYSTEM\CurrentControlSet\Control\hivelist
HKLM \SYSTEM\ControlSet002\Control\Session Manager\BootExecute



NOTA: Esta última clave de registros debería de contener el valor: “autocheck autochk*”. Si tuviera cualquier otro valor, hay una alta probabilidad de que nos encontremos ante la ejecución de un malware.

3.- Claves de registro utilizadas por el proceso: WinLogon

Clave de registro: Userinit

El proceso “Winlogon.exe” usa un valor especifico en la clave: "Userinit", para lanzar los scripts utilizados en el proceso de login del sistema.

Esta clave está localizada en:

HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon


NOTA: Normalmente, la clave “Userinit” contiene el valor: “userinit.exe”. Cualquier otro valor será ejecutado por el proceso: "Winlogon.exe"

Notify

Desde que el proceso "Winlogon.exe" gestiona las SAS (Secure Attention Sequence), las subclaves de registro que se almacenan en la clave de registro:

HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Notify

,se utilizan para notificar a los controladores de eventos las notificaciones que gestiona SAS. Para lo cual se utilizan las DLLs.

Estas DLL se ponen en marcha cada vez que se produce un evento SAS .


Explorer.exe

La Shell que utiliza nuestro sistema Windows, y que debe apuntar a: "explorer.exe" (Interface de Windows), se encuentra localizada en la clave:

HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Shell

La clave de registro que almacena la ubicación donde se encuentra la clave de registro que indicará la Shell de Windows se ubica en:

HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\IniFileMapping\system.ini\boot


Startup Keys

Un lugar habitual que se utiliza para ganar persistencia es la carpeta: “Inicio” de cada usuario.

El proceso de arranque del sistema revisará las siguientes claves del registro para saber la ubicación de dicha carpeta dentro del sistema.

Las sub-claves se almacenan en:

HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders
HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders


Services

Cuando un servicio de Windows falla, este puede realizar diversas acciones, todo depende de la como se haya configurado el servicio.

Entre las acciones a configurar se encuentra una muy interesante, la de ejecutar un programa.


La clave de registro:

HKLM\SYSTEM\CurrentControlSet\services.


Algunas otras claves que son utilizadas para ejecutar servicios en background son:

HKLM\Software\Microsoft\Windows\CurrentVersion\RunServicesOnce
HKLM\Software\Microsoft\Windows\CurrentVersion\RunServices

Browser Helper Objects(BHO)

Basicamente hablamos de las librerías que se cargan cuando Internet Explorer se empieza a ejecutar.

NOTA: Varios tipos de malware afectan al BHO

La clave del registro afectada es:

HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Browser Helper Objects

, esta clave contiene varias subclaves que son las que indicarán que librerías debe ejecutar Internet Explorer.


AppInit_DLLs

La clave del registro:

HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows\AppInit_DLLs

Mostrará las librerías que son cargadas por la librería: “User32.dll”, por lo que es un buen lugar para insertar ;-).


File Association keys

Las claves del registro:

HKLM\Software\Classes\
HKEY_CLASSES_ROOT\

Contienen varias claves que son usadas para especificar una acción cuando un determinado tipo de fichero se abre, es decir, se definen los programas que se utilizarán para abrir determinados tipos de archivos por defecto.

Un ejemplo: la apertura por defecto de un archivo con extension: “txt”.

 HKEY_CLASSES_ROOT\textfile\shell\open\command




Conclusiones

¿Qué se puede hacer con estás claves del registro de Windows?

Desde mi punto de vista, se pueden configurar al sistema de seguridad, vease un HIDS, que nos permita bloquear y/o informar de los procesos que quieran modificar/crear/eliminar cualquiera de las claves comentadas, ya que ello puede significar que podemos estar ante un proceso de infección del cuál no somos conscientes.

NOTA IMPORTANTE: Estas no son las únicas claves de registro que pueden ser utilizas, ni son los únicos medios de conseguir la ansiada persistencia.


viernes, 22 de julio de 2016

Aportaciones a la "nueva" vulnerabilidad de OpenSSH

Me he hecho eco de la noticia en referencia a la "nueva" vulnerabilidad de OpenSSH en la versión 7.2p2 leídas en las siguientes URLs:

Fuentes que informan de la vulnerabilidad


Fuente original


La vulnerabilidad como sabréis, se recoge en el CVE-2016-6210, y consiste en:

Explicación aportada por la fuente original

Es decir:

Explicación/traducción aportada por la fuente: blog.segu-info.com.ar

A los datos aportados por todas las noticias, quería añadir mi aportación:

1.- Dicha vulnerabilidad NO sólo afecta a la versión 7.2p2, sino también a versiones anteriores tal y como se comenta en la noticia original

Anuncio de las versiones afectas a través de la fuente original

2.- En 2006 ya se detecto este mismo este mismo problema sobre OpenSSH 4.1 portable en sistemas SUSE. (CVE-2006-5229)

CVE-2006-5229

3.-  Existe un módulo de metasploit que te permite escanear servidores OpenSSH que trabaja en base a lo dispuesto en el punto anterior.

Modulo de metasploit

RECOMENDACIÓN:
Como se puede comprobar en la imagen que se muestra a continuación, el valor a partir del cual el escáner considera que el usuario existe es, mínimo, 1 sg.

Por mi experiencia, los valores que confirman o que con una alta probabilidad confirman que un usuario existe están por debajo de ese umbral.

Por lo que los resultados trasmitidos por el escáner no es del todo confiables

 Intentos de utilizar el escáner de metasploit configurando el umbral por debajo de 1 sg.

4.- A los códigos sugeridos tanto en la página donde se muestra la información original como en la página del "lado del mal", personalmente, le he hecho una revisión.


En esta versión,  se utilizan dos archivos:
               
                1.- Listado de direcciones IP
                2.- Listado de usuarios a comprobar

Además, en dicha versión, sólo se mostrarán por pantalla información sobre la IP, el usuario y los segundos que se tardado en recibir respuesta siempre y cuando dicho tiempo este por encima de 0.5 sg (es modificable).
                                                           

Código generado

Salida por pantalla


Postdata: Gracias Jonathan

viernes, 8 de julio de 2016

Conocimientos para detectar si un PDF es malicioso - Parte 2 y última

Estructura  lógica de un archivo PDF

Ya se ha visto la estructura física, veamos ahora la estructura lógica de un archivo PDF.

Tal y como se ha perfilado, los archivos PDF funcionan a través de objetos. Estos objetos se reúnen en lo que se denomina: objetos indirectos, es decir, los objetos indirectos son objetos con nombre que contienen objetos u otros objetos indirectos.

Estos objetos indirectos vienen representado por las palabras claves: obj y endobj. Más concretamente, un objeto indirecto viene representado de la siguiente manera:

<ID> <Versión del objeto> obj
...
endobj

Leyenda:

ID           Identificador del objeto indirecto.
                Los identificadores pueden NO ser secuenciales en el archivo PDF

Versión del objeto  Cuando se crea un objeto indirecto este valor es de 0, si por cualquier 
                                circunstancia el objeto indirecto se actualiza el nuevo objeto indirecto 
                                podrá el valor 1, es decir, este valor indica la cantidad de veces que el  
                                objeto indirecto ha sido actualizado

La estructura lógica de un archivo PDF tiene forma de árbol.

La estructura parte de un objeto indirecto raíz, denominado: Document catalog, que se ramifica en las siguientes áreas o ramas:

1.- Page Tree
2.- Outline hierarchy
3.- Article Theards
4.- Named destinations
5.- Interactive form

NOTA: El Document Catalog, es el elemento /Root de la sección Trailer.

El objeto indirecto 1470 0 es el Document Catalog del documento PDF

El objeto Document Catalog tiene entre las entradas más interesantes, las siguientes:

1.- /Type
2.- /Version
3.- /Extensions
4.- /Pages  --> referencia al objeto indirecto referenciado como: Page Tree
5.- /Dests
6.- /Outlines
7.- /Threads
8.- /Metadata

Contenido del objeto: Document Catalog

En la sección o rama, Page Tree, es donde encontraremos los objetos indirectos de tipo: page., que podemos decir que son las páginas de nuestro documento PDF que veremos al abrir el documento.

Estos objetos: Page Tree, tienen las siguientes entradas:

1.- /Type
2.- /Parent
3.- /Kids --> Array que contiene los objetos indirectos de tipo: Page, que caen directamente del objeto: Page Tree.
4.- /Count --> específica el número de nodos hojas que posee esta rama o sección

El objeto indirecto 1457 0 es el Page Tree del documento PDF


Contenido de uno de los objetos: Page, más concretamente del objeto indirecto: 1458 0

Es decir, si seguimos la secuencia, el árbol iría quedando:

Objeto 1470 (Document Catalog)
                Objeto 1457 (Page Tree)
                               Objeto 1458 (Pages)
                                               <Objetos contenidos en el objeto: page>
                               Objeto 1459 (Pages)
                                               <Objetos contenidos en el objeto: page>
                               Objeto 1460 (Pages)
                                               <Objetos contenidos en el objeto: page>
                               Objeto 1461 (Pages)
                                               <Objetos contenidos en el objeto: page>
                               Objeto 1462 (Pages)
                                               <Objetos contenidos en el objeto: page>
                               Objeto 1463 (Pages)
                                               <Objetos contenidos en el objeto: page>
                               Objeto 1464 (Pages)
                                               <Objetos contenidos en el objeto: page>


Ahora que sabemos cómo se encuentra estructurado un archivo PDF, ¿qué debemos buscar para determinar si un archivo PDF puede ser malicioso?

A la hora de analizar un archivo PDF deberemos de fijarnos en los objetos indirectos, más concretamente en:

1.- /Page
2.- /JS
3.- /JavaScript
4.- /AA
5.- /OpenAction
6.- /AcroForm
7.- /JBIG2Decode
8.- /RichMedia
9.- /Color with a value larger than 2^24

Vamos a ver más en profundidad la información que nos puede aportar cada tipo de objeto.

1.- /Page: Nos indica el número de páginas que posee el documento, en el caso de tener un archivo malicioso con total seguridad sólo tendrá 1 página.

2.- /JS, /JavaScript y /RichMedia: Indican que el archivo PDF contiene código Javascript (los dos primeros tipos) o código flash. ¡¡Os imagináis las posibilidades!!

3.- /AA, /OpenAction y /AcroForm: Indican la existencia de una acción automática que se realiza cuando el documento o página es visualizado. En documento maliciosos, pueden ser utilizados para ejecutar código JavaScript u otro sin interacción del usuario.

4.- /JBIG2Decode y /Color with a value larger than 2^24: Indican la presencia de filtros vulnerables.

Con un conocimiento pormenorizado de la estructura interna de un archivo PDF, se puede hacer lo siguiente:

https://blog.didierstevens.com/2016/06/07/recovering-a-ransomed-pdf/

Bibliografía

resources.infosecinstitute.com/pdf-file-format-basic-structure/
Documento: Analyzing Malicious PDF Fiels by Didier Stevens