martes, 17 de febrero de 2009

PTK, primeras impresiones

A raíz de este hilo, desarrollado en las tierras de Wadalbertia, renació mi interés por una herramienta que llevaba algún tiempo en mi lista de "juegos", PTK. Se trata de una interfaz web para el uso de los binarios que conforman el sleuthkit. Y quizás algunos os preguntaréis, ¿qué necesidad había si esa funcionalidad ya estaba cubierta por autopsy?

Eso mismo era lo que yo me preguntaba, pero después de probarla y analizarla un poco más a fondo he aprendido a valorarla tal y como se merece, y de eso trata este artículo, de las nuevas características y funcionalidades ofrecidas por PTK, que son muchas y muy potentes.

Sirva como pequeña introducción al uso de las herramientas sleuthkit y autopsy el siguiente documento, el cual escribi hace ya algun tiempo.

Características principales

Para empezar, a diferencia de autopsy, son necesarias como dependencias un servidor de base de datos MySQL, un servidor web apache y PHP 5, el famoso trío de ases que junto al potente sistema Linux es más conocido como LAMP. Aunque esto de linux seguro que no es estrictamente imprescindible, pero eso, quizás, sea el tema de otro artículo.

Uno de los componentes de PTK que ofrece mayores posibilidades para la extensión de las funcionalidades ofrecidas es la existencia de una base de datos de MySQL como backend. Esto permite, por ejemplo, la posibilidad de crear cuentas para varios investigadores y que estos usuarios pueden trabajar concurrentemente en el mismo caso, siempre y cuando éste no haya sido bloqueado por el administrador.

Relacionadas con el uso de MySQL tambien estarían la enormes capacidades de indexación, de forma que una vez ejecutada los resultados se almacenan en tablas, facilitando posteriores busquedas.

La utilización de ajax para el desarrollo de la interfaz, así como la orientación tomada durante su programación dotan a esta herramienta de una gran usabilidad. Tiene un sistema de pestañas que permite manejar diferentes análisis de forma simultanea.

La interfaz de análisis de las líneas de tiempo (timeline) permite una visualización en forma de tabla, con la posibilidad de realizar la ordenación en función de los diferentes campos, o si se prefiere, mostrar los resultados en forma grafica.

También implementa una galería, de forma que pueden visualizarse todas las evidencias gráficas localizadas, permite la generación de informes (reports) en formato PDF, posibilidad de crear marcadores (bookmarks) particulares para cada investigador, incluye información en tiempo real de los recursos del sistema donde se esté realizando el análisis y seguro varias características más que estoy olvidando comentar.

Mención aparte merece la posibilidad de analizar volcados de memoria, la cual se realiza mediante la inclusión del framework volatility en forma de plugin (otra potente novedad), con todas las funcionalidades que dicha herramienta permite.

Instalación en Fedora 10

El primer paso consistirá en la instalación de la última versión de sleuthkit, la 3.0.1 en el momento de escribir estas líneas. Para dotarlo de mayor funcionalidad se recomienda la instalación de las librerías AFFlib (para el procesado de imágenes de disco en formato AFF) y libEWF (para el procesado de imágenes de disco en formato EnCase).

Una vez descargado sleuthkit lo desempaquetaremos e instalaremos mediante los siguientes comandos:

[root@wadalberto ~]# cd /usr/local

[root@wadalberto local]# tar xvzf sleuthkit-3.0.1.tar.gz
[root@wadalberto local]# ln -s sleuthkit-3.0.1/ sleuthkit
[root@wadalberto local]# cd sleuthkit
[root@wadalberto sleuthkit]# ./configure
[root@wadalberto sleuthkit]# make

Finalizada la instalación los binarios que conforman la suite de sleuthkit se situarán en el directorio /usr/local/bin, dato este a tener en cuenta para conseguir hacer funcionar correctamente PTK.

Ahora llega el momento de instalar las dependencias necesarias para la instalación de PTK:
  • MySQL Server 5.x
  • Apache web server 2.x
  • PHP 5

Una vez instaladas descargaremos PTK y desempaquetaremos su contenido:
[root@wadalberto sleuthkit]# cd /var/www/html

[root@wadalberto html]# tar xvzf ptk-1.0.5.tar.gz
[root@wadalberto html]# chown -R apache.apache ptk/

Para completar el proceso de instalación editaremos en primer lugar el fichero install.php, en concreto comentaremos las siguientes líneas:
...

# $fsstat = shell_exec("which fsstat");
# $fsstat = preg_replace("/\n/", "", $fsstat);
# $mmls = shell_exec("which mmls");
# $mmls = preg_replace("/\n/", "", $mmls);
# $fls = shell_exec("which fls");
# $fls = preg_replace("/\n/", "", $fls);
# $istat = shell_exec("which istat");
# $istat = preg_replace("/\n/", "", $istat);
# $ils = shell_exec("which ils");
# $ils = preg_replace("/\n/", "", $ils);
# $icat = shell_exec("which icat");
# $icat = preg_replace("/\n/", "", $icat);
# $ifind = shell_exec("which ifind");
# $ifind = preg_replace("/\n/", "", $ifind);
# $mactime = shell_exec("which mactime");
# $mactime = preg_replace("/\n/", "", $mactime);
# $srch_strings = shell_exec("which srch_strings");
# $srch_strings = preg_replace("/\n/", "", $srch_strings);
...
# $dls = shell_exec("which blkls");
# $dls = preg_replace("/\n/", "", $dls);
# $dcat = shell_exec("which blkcat");
# $dcat = preg_replace("/\n/", "", $dcat);
...

Este paso es necesario porque el script de instalación no es capaz de localizar los binarios que componen el sleuthkit, de forma que no deja finalizar el proceso. Si tengo un rato y con ayuda de google espero poder informar a los desarrolladores de este pequeño inconveniente.

A continuación, y mediante el uso del navegador Firefox, por ejemplo, lanzaremos el script de instalación visitando la siguiente dirección:
http://localhost/ptk/install.php

Una vez completados los campos necesarios con la información adecuada el programa quedará instalado, pero restará modificar los ficheros de configuración, los cuales debían haber sido completados por el script install.php.

En primer lugar modificaremos el fichero /var/www/html/ptk/config/conf.php
$INSTALLDIR = "/var/www/html/ptk";

$DISTRO = "centos";
$md5_bin = "/usr/bin/md5sum";
$sha1_bin = "/usr/bin/sha1sum";
$fsstat_bin = "/usr/local/bin/fsstat";
$mmls_bin = "/usr/local/bin/mmls";
$fls_bin = "/usr/local/bin/fls";
$istat_bin = "/usr/local/bin/istat";
$ils_bin = "/usr/local/bin/ils";
$icat_bin = "/usr/local/bin/icat";
$ifind_bin = "/usr/local/bin/ifind";
$mactime_bin = "/usr/local/bin/mactime";
$srch_strings_bin = "/usr/local/bin/srch_strings";
$hexdump_bin = "/usr/bin/hexdump";
$date_bin = "/bin/date";
$ls_bin = "/bin/ls";
$file_bin = "/usr/bin/file";
$du_bin = "/usr/bin/du";
$cp_bin = "/bin/cp";
$ln_bin = "/bin/ln";
$grep_bin = "/bin/grep";
$dls_bin = "/usr/local/bin/blkls";
$dcat_bin = "/usr/local/bin/blkcat";
?>

Y por último el fichero /var/www/html/ptk/config/conf.pl
installdir => '/var/www/html/ptk/',

md5_bin => '/usr/bin/md5sum',
sha1_bin => '/usr/bin/sha1sum',
fsstat_bin => '/usr/local/bin/fsstat',
mmls_bin => '/usr/local/bin/mmls',
fls_bin => '/usr/local/bin/fls',
istat_bin => '/usr/local/bin/istat',
ils_bin => '/usr/local/bin/ils',
icat_bin => '/usr/local/bin/icat',
ifind_bin => '/usr/local/bin/ifind',
mactime_bin => '/usr/local/bin/mactime',
srch_strings_bin => '/usr/local/bin/srch_strings',
hexdump_bin => '/usr/bin/hexdump',
date_bin => '/bin/date',
ls_bin => '/bin/ls',
file_bin => '/usr/bin/file',
du_bin => '/usr/bin/du',
cp_bin => '/bin/cp',
ln_bin => '/bin/ln',
grep_bin => '/bin/grep',
dls_bin => '/usr/local/bin/blkls',
dcat_bin => '/usr/local/bin/blkcat',

Ahora ya lo tenemos instalado y accesible desde el servidor web de nuestra máquina en la siguiente url:
http://localhost/ptk/

Referencias

PTK structure and components

PTK Overview

Y esto ha sido todo de momento, en breve más, y mejor, espero.

7 comentarios:

conexioninversa dijo...

Hola, colega.

Muy bueno, y muy buen blog.

Creo que deberiamos de conocernos y compartir conocimientos.

Un saludo

Pedro

neofito dijo...

Muchas gracias por los comentarios, sin duda una gran inyeccion de moral :-)

Creo ya tienes mi correo, si quieres comentar cualquier cosa estare encantado.

Saludos

Anónimo dijo...

Hola neofito, soy gnomius de Wadlabertia.

Soy totalmente incapaz de instalarlo. Creo que el install.php no funciona demasiado bien, al cargarlo sale basura ASCII antes de la página en sí.

He seguido los pasos y "parece" que lo instala, pero al ir a la página principal, sale más basura y no puedo logarme.

Estoy intentando instalarlo en un OpenSUSE, no sé si esta distro estará soportada... :-/

¿Alguna sugerencia?

neofito dijo...

Hola gnomius

¿Tienes instalado y funcionando un servidor lamp? Me suena a que el problema estriba en que tu servidor apache no esta interpretando correctamente PHP, asi que asegurate primero de este punto.

Creo que OpenSuSE era precisamente una de las distros soportadas, pero independientemente de esto, si cumples los requerimientos deberias poder instalarlo sin problemas.

Saludos y ya nos cuentas

Anónimo dijo...

Sip, tengo LAMP funcionando, de hecho he probado páginas PHP y funcionan sin problemas: la típica con sólo una línea de código phpinfo(), y también phpAdmin para probar MySQL.

OpenSUSE en principio no sale en el desplegable al elegir distro... no sé si puede ser eso.

En fin, era sólo por si te sonaba. Seguiré investigando, quizá tenga que instalarlo "a mano" de alguna manera... :-/ Ya os contaré, gracias!

Anónimo dijo...

Gnomius: Te recomiendo bajar la SIFT SANS Workstation, es un entorno virtual perfecto para realizar análisis forenses, con varias herramientas forenses preinstaladas, scripts perl para windows (la mayoría de carvey):
http://forensics.sans.org/community/downloads/

neofito: gran blog ;)

Un saludo
--
m313
http://www.meleagro.es.kz

neofito dijo...

Hola de nuevo gnomius

La tengo en mi lista de pendientes, pero es que llevo varios dias pegandome con pyflag, y como soy un cabezota se que hasta que no lo consiga no me pondre con otra cosa.

¡Gracias por tus comentarios!