Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
pict — Kit de herramientas de respuesta a incidentes modular para la recopilación de datos forenses de endpoints macOS potencialmente infectados, capturando artefactos del navegador, mecanismos de persistencia, procesos y configuraciones de red. | Kitploit
Herramientas/GitHubGitHub/thomasareed/pict
Análisis ForenseRecopilación de InformaciónPost-ExplotaciónForensia DigitalRespuesta a Incidentes
GitHubthomasareed/pict

pict

Kit de herramientas de respuesta a incidentes modular para la recopilación de datos forenses de endpoints macOS potencialmente infectados, capturando artefactos del navegador, mecanismos de persistencia, procesos y configuraciones de red.

Ver Repositorio
9511hace 3 añosRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

PICT - Kit de herramientas de recolección post-infección

Este conjunto de scripts está diseñado para recolectar una variedad de datos de un endpoint que se cree infectado, para facilitar el proceso de respuesta a incidentes. Estos datos no deben considerarse como una recolección forense completa, pero capturan mucha información forense útil.

Si necesitas datos forenses reales, realmente deberías capturar un volcado de memoria completo e imagenar todo el disco. Eso está fuera del alcance de este kit de herramientas.

Cómo usar

El script debe ejecutarse en un sistema en vivo, no en una imagen ni en otro almacén de datos forenses. No requiere estrictamente permisos de root para ejecutarse, pero sin ellos no podrá recolectar gran parte de los datos previstos.

Los datos se recolectarán de dos formas. Primero, en forma de archivos de resumen, que contienen la salida de comandos de shell, datos extraídos de bases de datos, etc. Por ejemplo, el módulo browser generará un archivo browser_extensions.txt con un resumen de todas las extensiones del navegador instaladas para Safari, Chrome y Firefox.

La segunda forma son archivos completos recolectados del sistema de archivos. Estos se almacenan en una subcarpeta artifacts dentro de la carpeta de recolección.

Sintaxis

El script es muy simple de ejecutar. Solo toma un parámetro, que es obligatorio, para pasar un script de configuración en formato JSON:

./pict.py -c /ruta/al/config.json

El script de configuración describe qué recolectará el script y cómo. Debería verse así:

root@kitploit:~
{
	"collection_dest" : "~/Desktop/",
	"all_users" : true,
	
	"collectors" : {
		"browser" : "BrowserExtCollector",
		"persist" : "PersistenceCollector",
		"suspicious" : "SuspiciousBehaviorCollector",
		"browserhist" : "BrowserHistoryCollector",
		"bash_config" : "BashConfigCollector",
		"bash_hist" : "BashHistoryCollector",
		"processes" : "ProcessCollector",
		"network_config" : "NetworkConfigCollector",
		"profiles" : "ProfileCollector",
		"certs" : "TrustedCertCollector"
	},
	
	"settings" : {
		"keepLSData" : true,
		"zipIt" : true
	},
	
	"moduleSettings" : {
		"browser" : {
			"collectArtifacts" : true
		}
	},
	
	"unused" : {
		"installs" : "InstallationCollector"
	}
}

collection_dest

Especifica la ruta donde almacenar los datos recolectados. Puede ser una ruta absoluta o una ruta relativa a la carpeta de inicio del usuario (comenzando con una tilde). La ruta predeterminada, si no se especifica, es /Users/Shared.

Los datos se recolectarán en una carpeta creada en esta ubicación. Esa carpeta tendrá un nombre con el formato PICT-nombrecomputador-YYYY-MM-DD, donde el nombre del computador es el nombre de la máquina especificado en Preferencias del Sistema > Compartir y la fecha es la fecha de recolección.

all_users

Si es verdadero, recolecta datos de todos los usuarios de la máquina siempre que sea posible. Si es falso, recolecta datos solo para el usuario que ejecuta el script. Si no se especifica, este valor predeterminado es verdadero.

collectors

PICT es modular y se puede expandir o reducir fácilmente simplemente cambiando los módulos Collector que se utilizan.

Los datos de collectors son un diccionario donde la clave es el nombre de un módulo a cargar (el nombre del archivo Python sin la extensión .py) y el valor es el nombre de la subclase de Collector que se encuentra en ese módulo. Puedes agregar entradas adicionales para módulos personalizados (consulta Escribir tus propios módulos), o puedes eliminar entradas para evitar que esos módulos se ejecuten. Una forma sencilla de eliminar módulos, sin tener que buscar los nombres exactos más tarde si deseas agregarlos nuevamente, es moverlos a un diccionario de nivel superior llamado unused.

settings

Este diccionario proporciona configuraciones globales.

keepLSData especifica si se debe conservar el archivo lsregister.txt, que puede ser bastante grande. (Este archivo se genera automáticamente y se utiliza para construir la salida de otros módulos. Contiene una gran cantidad de información útil, pero puede superar los 100 MB de tamaño. Si no necesitas todos esos datos, o no quieres lidiar con tantos datos, establece esto en falso y se eliminará cuando termine la recolección).

zipIt especifica si se debe generar automáticamente un archivo zip con el contenido de la carpeta de recolección. Ten en cuenta que el proceso de comprimir y descomprimir los datos cambiará algunos atributos, como la propiedad de los archivos.

moduleSettings

Este diccionario especifica configuraciones específicas del módulo. No todos los módulos tienen sus propias configuraciones, pero si un módulo permite configuraciones propias, puedes proporcionarlas aquí. En el ejemplo anterior, puedes ver una configuración booleana llamada collectArtifacts que se usa con el módulo browser.

También hay configuraciones globales de módulos que son mantenidas por la clase Collector y que se pueden establecer individualmente para cada módulo.

collectArtifacts especifica si se deben recolectar los artefactos de archivo que normalmente recolectaría el módulo. Si es falso, todos los artefactos se omitirán para ese módulo. Esto puede ser necesario en casos donde el espacio de almacenamiento es una consideración y los artefactos recolectados son grandes, o en casos donde los artefactos recolectados pueden representar un problema de privacidad para el usuario cuyo sistema está siendo analizado.

Escribir tus propios módulos

Los módulos deben consistir en un archivo que contenga una clase que herede de Collector (definida en collectors/collector.py), y deben colocarse en la carpeta collectors. Se puede crear fácilmente un nuevo módulo Collector duplicando el archivo collectors/template.py y personalizándolo para tu uso.

def __init__(self, collectionPath, allUsers)

Este método se puede sobrescribir si es necesario, pero en tal caso debe llamarse al super Collector.init(), preferiblemente antes de que se ejecute tu código personalizado. Esto le da al objeto la oportunidad de configurar sus propiedades antes de que tu código intente usarlas.

def printStartInfo(self)

Este es un método muy simple que se llamará cuando comience la recolección de este módulo. Su objetivo es imprimir un mensaje en stdout para dar al usuario una sensación de progreso, proporcionando retroalimentación sobre lo que está sucediendo.

def applySettings(self, settingsDict)

Esto le da al módulo la oportunidad de aplicar cualquier configuración personalizada. Cada módulo puede tener sus propias configuraciones autodefinidas, pero settingsDict también debe pasarse al super, para que la clase Collection pueda manejar cualquier configuración que defina.

def collect(self)

Este método es el núcleo del módulo. Se llama cuando es momento de que el módulo comience la recolección. Puede escribir tantos archivos como necesite, pero debe limitar esta actividad a archivos dentro de la ruta self.collectionPath, y debe usar nombres de archivo que no estén ya ocupados por otros módulos.

Si deseas recolectar artefactos, no intentes hacerlo por tu cuenta. Simplemente agrega rutas al array self.pathsToCollect, y la clase Collector se encargará de copiarlas en las subrutas correspondientes dentro de la carpeta artifacts, manteniendo los metadatos (permisos, atributos extendidos, flags, etc.) en los artefactos.

Cuando el método termine, asegúrate de llamar al super (Collector.collect(self)) para darle a la clase Collector la oportunidad de manejar sus responsabilidades, como recolectar artefactos.

Tu método collect puede usar cualquier dato recolectado en los archivos basic_info.txt o lsregister.txt que se encuentran en self.collectionPath. Estos se recolectan al principio por el script pict.py y se puede asumir que están disponibles para ser usados por cualquier otro módulo. Sin embargo, no debes depender de la salida de otros módulos, ya que no hay garantía de que los archivos estén disponibles cuando se ejecute tu módulo. Los módulos pueden no ejecutarse en el orden en que aparecen en tu configuración JSON, ya que los diccionarios de Python no están ordenados.

Créditos

Gracias a Greg Neagle por FoundationPlist.py, que resolvió muchos problemas con la lectura de plists binarios, plists que contienen tipos de datos de fecha, etc.

Descargar herramienta