Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
pict — Модульный набор инструментов для реагирования на инциденты, предназначенный для сбора криминалистических данных с потенциально зараженных конечных точек macOS, включая артефакты браузеров, механизмы сохранения, процессы и сетевые конфигурации. | Kitploit
Инструменты/GitHubGitHub/thomasareed/pict
ФорензикаСбор информацииПост-эксплуатацияЦифровая криминалистикаРеагирование на Инциденты
GitHubthomasareed/pict

pict

Модульный набор инструментов для реагирования на инциденты, предназначенный для сбора криминалистических данных с потенциально зараженных конечных точек macOS, включая артефакты браузеров, механизмы сохранения, процессы и сетевые конфигурации.

Репозиторий
95113 лет назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

PICT — Набор инструментов для сбора данных после заражения

Этот набор скриптов предназначен для сбора различных данных с конечной точки, предположительно заражённой, для облегчения процесса реагирования на инциденты. Эти данные не следует считать полным судебным сбором данных, но они фиксируют множество полезной криминалистической информации.

Если вам нужны настоящие судебные данные, вам следует захватить полный дамп памяти и создать образ всего диска. Это выходит за рамки данного набора инструментов.

Как использовать

Скрипт должен запускаться на живой системе, а не на образе или другом хранилище судебных данных. Он не требует строгих прав root для запуска, но без них не сможет собрать большую часть предполагаемых данных.

Данные будут собираться в двух формах. Первая — в виде сводных файлов, содержащих вывод команд оболочки, данные, извлечённые из баз данных и т.п. Например, модуль browser выведет файл browser_extensions.txt с краткой информацией обо всех расширениях браузера, установленных для Safari, Chrome и Firefox.

Вторая — это полные файлы, собранные из файловой системы. Они сохраняются в подпапке artifacts внутри папки сбора.

Синтаксис

Скрипт очень прост в запуске. Он принимает только один обязательный параметр — путь к конфигурационному скрипту в формате JSON:

./pict.py -c /path/to/config.json

Конфигурационный скрипт описывает, что и как будет собирать скрипт. Он должен выглядеть примерно так:

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

Задает путь для сохранения собранных данных. Это может быть абсолютный путь или путь относительно домашней папки пользователя (начинающийся с тильды). Путь по умолчанию, если не указан, — /Users/Shared.

Данные будут собраны в папку, созданную по этому адресу. Имя папки будет иметь вид PICT-имя_компьютера-ГГГГ-ММ-ДД, где имя компьютера — это имя машины, указанное в Системных настройках > Общий доступ, а дата — дата сбора данных.

all_users

Если true, собирает данные со всех пользователей машины, когда это возможно. Если false, собирает данные только для пользователя, запустившего скрипт. Если не указано, значение по умолчанию — true.

collectors

PICT модульный, и его легко расширить или сократить, просто изменив используемые модули Collector.

Данные collectors представляют собой словарь, где ключ — это имя загружаемого модуля (имя Python-файла без расширения .py), а значение — имя подкласса Collector, найденного в этом модуле. Вы можете добавить дополнительные записи для пользовательских модулей (см. Написание собственных модулей) или удалить записи, чтобы предотвратить выполнение этих модулей. Простой способ удалить модули, не запоминая точные имена на случай, если потом захотите их добавить, — переместить их в словарь верхнего уровня с именем unused.

settings

Этот словарь содержит глобальные настройки.

keepLSData указывает, следует ли сохранять файл lsregister.txt — он может быть довольно большим. (Этот файл создается автоматически и используется некоторыми другими модулями для построения вывода. Он содержит множество полезной информации, но может иметь размер более 100 МБ. Если вам не нужны все эти данные или вы не хотите иметь дело с таким объемом, установите значение false, и файл будет удален после завершения сбора.)

zipIt указывает, следует ли автоматически создавать zip-файл с содержимым папки сбора. Обратите внимание, что процесс упаковки и распаковки данных изменяет некоторые атрибуты, такие как права собственности на файлы.

moduleSettings

Этот словарь задает настройки для конкретных модулей. Не все модули имеют собственные настройки, но если модуль допускает их, вы можете указать их здесь. В приведенном выше примере вы можете видеть логическую настройку с именем collectArtifacts, используемую с модулем browser.

Существуют также глобальные настройки модулей, поддерживаемые классом Collector, которые можно задавать индивидуально для каждого модуля.

collectArtifacts указывает, следует ли собирать файловые артефакты, которые модуль обычно собирает. Если false, все артефакты для этого модуля будут пропущены. Это может потребоваться, когда учитывается объем дискового пространства и собранные артефакты велики, или когда собранные артефакты могут представлять проблему конфиденциальности для пользователя, чья система анализируется.

Написание собственных модулей

Модули должны состоять из файла, содержащего класс, являющийся подклассом Collector (определен в collectors/collector.py), и должны быть помещены в папку collectors. Новый модуль Collector можно легко создать, скопировав файл collectors/template.py и настроив его под свои нужды.

def __init__(self, collectionPath, allUsers)

Этот метод можно переопределить при необходимости, но в таком случае обязательно вызвать super Collector.init(), желательно до выполнения вашего пользовательского кода. Это дает объекту возможность настроить свои свойства до того, как ваш код попытается их использовать.

def printStartInfo(self)

Это очень простой метод, который будет вызван при начале сбора данным модулем. Его цель — вывести сообщение в stdout, чтобы дать пользователю ощущение прогресса, предоставляя обратную связь о происходящем.

def applySettings(self, settingsDict)

Это дает модулю возможность применить любые пользовательские настройки. Каждый модуль может иметь свои собственные настройки, но settingsDict также должен быть передан родительскому классу, чтобы класс Collection мог обработать любые настройки, которые он определяет.

def collect(self)

Этот метод является ядром модуля. Он вызывается, когда наступает время для модуля начать сбор. Он может записывать столько файлов, сколько необходимо, но должен ограничивать эту деятельность файлами в пределах пути self.collectionPath и использовать имена файлов, которые не заняты другими модулями.

Если вы хотите собирать артефакты, не пытайтесь делать это самостоятельно. Просто добавьте пути в массив self.pathsToCollect, и класс Collector позаботится о копировании их в соответствующие подпути в папку artifacts, а также о сохранении метаданных (права доступа, расширенные атрибуты, флаги и т.д.) на артефактах.

Когда метод завершится, обязательно вызовите родительский (Collector.collect(self)), чтобы дать классу Collector возможность выполнить свои обязанности, такие как сбор артефактов.

Ваш метод collect может использовать любые данные, собранные в файлах basic_info.txt или lsregister.txt, находящихся в self.collectionPath. Они собираются в начале скриптом pict.py, и можно предположить, что они доступны для использования любыми другими модулями. Однако не следует полагаться на вывод других модулей, так как нет гарантии, что файлы будут доступны, когда ваш модуль запустится. Модули могут выполняться не в том порядке, в котором они указаны в вашем JSON-файле конфигурации, поскольку словари Python неупорядочены.

Благодарности

Спасибо Грегу Ниглу (Greg Neagle) за FoundationPlist.py, который решил множество проблем с чтением двоичных plist-файлов, plist-файлов, содержащих типы данных даты и т.д.

Скачать инструмент