Немного о восстановлении данных нестандартным способом... - Резервное копирование и восстановление данных (backup, recovery) - Форумы Anti-Malware.ru Перейти к содержанию
spw

Немного о восстановлении данных нестандартным способом...

Recommended Posts

spw

Доброй ночи.

Просили развивать портал - хорошо, развиваем. Вот перепост последнего сообщения из моего блога.

Стоит начать с того, что эти четыре месяца выдались "жаркими" на события:

  • в январе-феврале сдохли два винчестера у моего друга (с разницей в 1-2 дня),
  • в феврале "побился" мой RAID,
  • и chkdsk'ом был убит volume на 8 GB (кстати, практически полностью аналогично описываемым далее событиям),
  • после этого сдох винчестер у моей девушки (он помирал медленно, планомерно -- были признаки, поэтому к его смерти удалось более-менее приготовиться, хотя все равно "потрахаться" пришлось),
  • в прошлую субботу у меня "подгорела" очень некстати видеокарта...
Ну а в эту субботу... chkdsk убил мой крипто-контейнер на флэшке. Произошло это при достаточно простых обстоятельствах. Создавал каталоги на незашифрованной части флэшки, потом удалял. Заметил, что удаление не работает. Посмотрел security attributes - не помогло. Вспомнил, что такие проблемы с удалением часто возникают из-за проблем файловой системе (флэшка отформатирована, конечно, под NTFS).

Как раз в эту субботу собирался делать бэкап. Ну это как обычно, в лучших традициях. Если умирать - так в день бэкапа. Для запускания chkdsk пришлось контейнер размонтировать. Итог...

Забегая вперед - статистика.

Использованные приложения:

Disk Tools: WinHEX, R-Studio, Runtime DiskExplorer

Compilers: Microsoft Visual Studio v2003, Virtual Pascal (к сожалению, этот продукт уже "мертв")

Editors: HIEW, FAR

Написанные утилиты:

  • MD5-сравнивальщик образов (про него чуть позже отдельно)
  • $MFT-анализатор (входит в NTFS-парсер)
  • Генератор flat-отчетов по $MFT
  • Удалятель используемых блоков (Used Blocks Eraser)
Это было реально сложно. Затраченное время:
  • 3.5 часа вечера субботы,
  • 3 часа в ночь с субботы на воскресенье,
  • 9 часов воскресенья,
  • 5 часов в ночь с воскресенья на понедельник,
  • 2 часа в понедельник,
  • 6 часов в ночь с понедельника на вторник,
  • 10 часов во вторник,
  • 6 часов в ночь со вторника на среду.
Итого: 44.5 часов, или 1.85 суток, или 5.6 рабочих дней по 8 часов (реально в днях: вечер субботы - начало среды)

Возвращаясь к произошедшему.

Так отработал chkdsk:

The type of the file system is NTFS.Volume label is FLASH4GB.CHKDSK is verifying files (stage 1 of 3)...[...]CHKDSK is verifying indexes (stage 2 of 3)...Deleting index entry $ObjId in index $I30 of file 11.Deleting index entry $Quota in index $I30 of file 11.Deleting index entry $Reparse in index $I30 of file 11.10 percent complete. (514 of 150319 index entries processed)       [...]83 percent complete. (136542 of 150319 index entries processed)       Deleting index entry SomeDirectory in index $I30 of file 151.   << это бывший каталог контейнераDeleting index entry SOMEDIR~1 in index $I30 of file 151.83 percent complete. (137042 of 150319 index entries processed)       [...]Index verification completed.Cleaning up minor inconsistencies on the drive.CHKDSK is recovering lost files.90 percent complete. (1 of 6 unindexed files processed)     9077                                                        7 unindexed files processed.                               Creating object id file.Inserting an index entry into index $I30 of file 11.Creating index $O for file 19.Inserting an index entry into index $O of file 19.[...]Inserting an index entry into index $O of file 19.Creating reparse point file.Inserting an index entry into index $I30 of file 11.Creating index $R for file 20.Creating quota file.Inserting an index entry into index $I30 of file 11.Creating index $O for file 21.Creating index $Q for file 21.Inserting default quota record into index $Q in file 21.CHKDSK is verifying security descriptors (stage 3 of 3)...[...]Correcting errors in the master file table's (MFT) BITMAP attribute.CHKDSK discovered free space marked as allocated in the volume bitmap. << прощай мой контейнер!Windows has made corrections to the file system.

Все. Каталога с контейнером нет. Ну ладно, каталога нет, а файл-то на диске должен быть. Запускаю R-Studio, захожу в "предшествующий" каталог (родительский для каталога контейнера). Пусто. Делаю полный скан volume'а - пусто. Знаете что это означает? То, что никаких упоминаний о файле контейнера в $MFT больше нет. И по сути файла больше логически не существует (физически это не так).

Срочным образом запускаю WinHEX и делаю полный образ всей флэшки (как PhysicalDisk, не только Volume).

Все, на этом флэшку можно вытаскивать, в текущем виде она больше не понадобиться. Есть образ, с которым можно работать.

Первые же отзывы, которые я получил (крайне обнадеживающие): "Нет записей в $MFT? Ты потерял свои данные 100%. Забудь".

Предыдущий бэкап контейнера был, конечно же, достаточно давним. Месяц назад (вот сейчас ровно месяц). За это время было проделано достаточно много изменений данных, хранящихся в этом контейнере и нигде более. Терять эти данные не было возможности просто никакой. Многие вещи были бы безвозвратно утеряны, многие требовалось бы писать или делать с нуля, что с учетом затраченного времени, сильно откидывало "назад", и создавало нереальные проблемы.

Нужно было восстанавливать. Срочно. Время шло на часы.

Первое, что я решил попробовать, найти начало контейнера и тупо скопировать все данные от его начала и до конца volume. Надежды на то, что контейнер не будет фрагментирован вообще-то не было (я сразу же понимал, что это не решение вопроса). Но была надежда таким образом получить хоть какие-то данные.

Благо у контейнера есть специфический заголовок, который я знаю наизусть. Начало контейнера быстро было найдено. Скопировал данные в файл, подмонтировал. Файловая система обычным способом (через FAR) не прочиталась. Пришлось обратиться опять к R-Studio. Увидел все свои каталоги и проч. Однако, содержимое файлов, конечно же, оставляло желать лучшего. Практически все новые и измененные за последнее время файлы содержали мусор. Либо полностью состояли из мусора, либо были частично мусорными. Толку от этого для решения общей задачи было практически мало.

Решил попробовать Runtime DiskExplorer. Нашел файловую запись 151. Это был родительский каталог каталога с контейнером. В дампе этой файловой записи было упоминание название каталога с контейнером. Но не более. Имени (или частей имени) файла с контейнером в $MFT не было! Вообще.

Сдампил файл $MFT. Опять же, прошелся в поисках по нему (в различных комбинациях) в FAR и HIEW - искал хоть что-то напоминающее имя файла контейнера - ничего.

Следующая мысль была - может быть chkdsk затер имя, но файловая запись осталась (с пометкой какой-нибудь или пусть даже "удаленная"). Стал пытаться найти в $MFT ссылки на начало файла (заголовок) - тщетно. Ничего нет.

И вот тут-то и пришла в голову мне дельная мысль -- воспользоваться резервной копией контейнера! Нет-нет. Не так, как вы подумали. Не забить на все и не банально восстановить все, просто взяв забэкапленный файл контейнера. Речь о другом.

Идея заключается в следующем. Файл-контейнера именно как файл (целое) постоянен. Если не запускать дефрагментацию внутри самого контейнера, неизменяемые мною или самой файловой системой участки контейнера остаются постоянными. Соответственно, если диск 2gb, и там никто особенно не "шуровал", не перемещал файлы туда-сюда, а просто работал - то есть вносил изменения в существующие файлы, добавлял новые, что-то изредка удалял и т.п., файл контейнера сильно не изменялся! Понятие "сильно не изменился", конечно, условное. Чем меньше было изменений фактических (то, что делали вы), чем меньше срок между текущим состоянием и последней резервной копией - тем, очевидно, лучше.

Забегая вперед скажу, что в моем случае неизмененными осталось 78.5% секторов.

Операционная система при записи файлов старается их все же не фрагментировать (насколько это вообще возможно с учетом текущего состояния диска). Посмотрев свой $MFT, я был уверен, что фрагментов диска должно быть не больше 10, ну максимум - 20. А для большого файла-контейнера это означает то, что эти фрагменты будут по 100-200-300 мегабайт. То есть "огромными". И находя любой из фрагментов, сразу же находится ("восстанавливается") достаточно большой пласт информации. С этим, правда, тоже есть тонкость. Ведь внутри контейнера - такая же файловая система. И она так же фрагментирована еще самом по себе. Поэтому, восстановив 100 мегабайт контейнера, не значит, что вы восстановите 100 мегабайт файлов. Может оказаться вообще так, что у вас будет в наличии 100 мегабайт "мусора" -- различных кусков и обрезков от кучи файлов (где начало, где середина, где несколько кусков, где конец).

Проблема с фрагментами заключается не только в их поиске по всему физическому диску (а это огромный объем для анализа - 4gb; чтобы понять это - попробуйте вручную хотя бы 20mb пролистать клавишей PageDown), но и в том, что фрагменты могут быть записаны в любом порядке! То есть совершенно не обязательно, что файл выглядит на диске так: FRAGMENT1, FRAGMENT2, FRAGMENT3 и т.д. Он выглядит как угодно, легко порядок может оказаться таким - FRAGMENT8, FRAGMENT1, FRAGMENT6, FRAGMENT5, FRAGMENT2, FRAGMENT3 и т.д.

Моя идея позволяет сразу же "убить двух зайцев". Во-первых, мы сразу же находим все (или почти все) фрагменты на диске. Во-вторых, мы определяем корректный порядок их следования!

Теперь уже, наконец, сама суть идеи.

  1. Был взят файл контейнера месячной давности. И на каждые 512 байт (размер сектора) этого файла был насчитан MD5.
  2. Те же действия были произведены для текущего образа диска, на котором располагался контейнер (образ диска в 2 раза больше контейнера).
  3. Но сделано это было еще и по-хитрому. Так как я уже знал, что файла логически на этом диске не существует (нет никаких следов и упоминаний о нем), то весь файл находится сейчас в области "free space" (незанятое место, куда можно писать новые файлы). Соответственно, нет никакого смысла считать MD5 от всех секторов образа. Нужно построить маску занятых секторов, инвертировать ее (получить незанятые) и посчитать MD5 от всех незанятых секторов. Это и было проделано (для этого была написана утилита, которая анализировала $MFT и строила такой bitmap).
Теперь у нас имелось два множества с MD5 секторов. Одно - от старого бэкапа, другое - от "свободного места" на текущем диске, в котором содержался текущий контейнер. Нужно было найти пересечение этих множеств!

Следует дополнительно отметить, что ситуация с MD5 здесь является выигрышной по той причине, что файл - это крипто-контейнер, что дает невероятно малый риск "коллизий" (речь не о хэш-функции). Допустим, если бы это был обычный файл (даже огромный .exe'шник) - в нем была бы куча повторящихся частей. С крипто-контейнером это просто исключено (если используется правильная инициализация IV для шифрования или, например, XTS с подмешиванием логического номера сектора диска).

Результат пересечения множеств -- 78.5%. Остальные 21.5% - это измененные сектора диска.

Мое предположение заключалось в следующем (и полностью оправдало себя на практике) - изменения секторов более менее распределены по диску "локализованно". Соответственно, скорее всего, неизменные сектора окажутся в огромных количествах в каждом из имеющихся фрагментов диска. Что я имею в виду? То, что границы фрагментов будет определить легко. Либо граничные сектора не будут изменены, либо прилегающие к граничным секторам не будут изменены. Так и оказалось, у 5-и или 6-и из 10 (но можно считать, и 9-и) фрагментов, границы были определены очень четко, причем обе (как начало, так и конец).

У оставшей части границы пришлось поискать вручную. Но опять же, в виду того, что это шифро-данные, найти их границы не так сложно: эти данные выглядят как крайне случайный мусор. Как только этот мусор заканчивается - скорее всего, вы на границе.

Мешали этому только различные архивы (zip/rar), а так же инсталляторы (msi - считай, те же архивы). Если на стыке границы находился архив, было проблематично понять, имеют отношение эти сектора еще к фрагменту контейнера или это уже кусок архива.

Для решения этой проблемы была придумана еще одна идея: почистить сохраненный образ физического диска от... блоков, занятых файлами. То есть своеобразный жесткий wipe. Занулить все, что не относится к free space. (Это та самая утилита UsedBlocksEraser, которую пришлось написать для обработки bitmap).

Только благодаря этой утилите был найден один большой блок примерно на 50mb, в котором не было ни одного совпадения по MD5! (Вот вам и разрушение теории про "точно в каждлом блоке, найдется хотя бы несколько..."). Реально - ни одного. То есть все данные в этом фрагменте были либо изменены, либо были новыми.

Как выглядел лог пересечения множеств? (Это уже отсортированный лог с моими комментариями)

[bEGIN-4GB | BEGIN-2GB] - [ END-4GB  |  END-2GB ] Sectors countБлок контейнера с данными в промежутке: [00000000h - 2831A000h][начало файла контейнера][7D04FE00h | 00000000h] - [7E86FE00h | 01820000h] Sectors = 49408    / Size = 01820000 (25296896)[7E870000h | 01820200h] - [7E870200h | 01820400h] Sectors = 1        / Size = 00000200 (     512)[7E870400h | 01820600h] - [7E881800h | 01831A00h] Sectors = 138      / Size = 00011400 (   70656)[...][9ECFC600h | 21CAC800h] - [9ECFD600h | 21CAD800h] Sectors = 8        / Size = 00001000 (    4096)[9EECE600h | 21E7E800h] - [A5369E00h | 2831A000h] Sectors = 206044   / Size = 0649B800 (105494528)[реально конец данных] [за этим следует файловая запись из $MFT]Размер блока: 674340864 (2831A000h), Sectors = 1317072, ~674mb (если внутри нет промежутков)Блок контейнера с данными в промежутке: [2831A000h - 39D75000h][реально начало данных] [перед этим следует расшифрованный пустой сектор][5F489E00h | 2831A000h] - [63172400h | 2C002600h] Sectors = 124739   / Size = 03CE8600 (63866368)[63172600h | 2C002800h] - [65360E00h | 2E1F1000h] Sectors = 69492    / Size = 021EE800 (35579904)[...][6EEEA600h | 37D7A800h] - [70EE4E00h | 39D75000h] Sectors = 65492    / Size = 01FFA800 (33531904)[реально конец данных] [за этим следует расшифрованный неизвестный .exe]Размер блока: 296071168 (11A5B000h), Sectors = 578264, ~296mb (если внутри нет промежутков)Блок контейнера с данными в промежутке: [39D75000h - 469E6000h][реально начало данных] [перед этим следует расшифрованный пустой сектор][242AFE00h | 39D75000h] - [25144600h | 3AC09800h] Sectors = 29860    / Size = 00E94800 (15288320)[25145600h | 3AC0A800h] - [260DB600h | 3BBA0800h] Sectors = 31920    / Size = 00F96000 (16343040)[...]

Кстати, забыл рассказать о "втором зайце". Порядок следования. По вот этому логу он определяется элементарно. Лог имеет формат: смещение начала отрезка одинаковых секторов, смещение конца отрезка одинаковых секторов, их количество, размер в байтах. Смещения указаны в двух "системах счисления". Первая часть - это смещение внутри образа физического диска. Вторая часть - это смещение внутри резервной копии файла-контейнера. Теперь догадываетесь как "убить второго зайца"? Нужно просто отсортировать этот лог по вторым смещениям. Чтобы они следовали от нулевого (начала контейнера) до конца, по возрастанию.

После того, как я нашел (в своем представлении) все блоки, и в своем представлении определил их границы, я написал утилиту, вытаскивающие нужные блоки из созданного образа физического диска.

Кстати, вспомнил момент. Был реальный epic fail на полпути (из-за которого, кстати, было потеряно определенное время, потому что из-за него не нашлось часть пересечения и пришлось блоки искать вручную). Я, зная о том, что это большие диски (больше 2GB), почему-то все равно использовал обычные функции seek. Как итог - неправильно построенное множество MD5 для диска с физическим образом. Более того, еще хуже ситуация была на Virtual Pascal (одна из утилит была написана на нем) с типом Longint (не DWORD), который, естественно, умеет быть отрицательным. В общем, не забывайте, что нужно использовать 64-битные смещения и 64-битный seek! Не тупите. Особенно, если знаете об этом изначально.

В общем, диск был подключен. Файловая система прекрасно читалась через FAR. Файлы были доступны и все было отлично. Стал крайне внимательно (имеют опыт) сравнивать диски/файлы: восстановленную копию, копию в своей голове и резервную копию. Не сразу же, но нашел, что часть файлов (очень малая, но они есть) - битые. В них содержалась информация от других секторов. То есть где-то произошло смещение границ блоков! Мне очень повезло, что на этом контейнере у меня было ~100 файлов, на которые было заранее рассчитано MD5. Я мог проверить их целостность и понять - битые они или нет. Так же, мне повезло, что это был не XTS-режим. В противном случае я не знал бы, что это смещены границы блоков. Точнее, я не смог бы понять: расшифрован полный мусор или это "правильные данные", но просто не на том месте. (В данном случае, мусорными были первые 16 байт сектора, остальное было нормально расшифрованным, но "не отсюда" -- это особенность реализации алгоритма; кстати, если не было бы такого подмешивания - была бы нереальная проблема с коллизиями при рассчете MD5 - см. выше).

Я составил список битых файлов (те, что смог найти вручную). После этого пришлось сделать утилиту, которая строит "flat-модель" (мое условное название) всего диска. Для этого уже использовался анализ $MFT из внутренностей контейнера. Лог выглядел вот так:

[...][5EA29000-5EA34800] Sectors = 92       / Size = 0000B800 (   47104) FO: [00018000-00023800] `.\SVN\C*\R*\include\buildconf\*.h'[5EA34800-5EA35000] Sectors = 4        / Size = 00000800 (    2048) FO: [0000F000-0000F800] `.\SVN\C*\R*\driver\Debug\*.obj'[5EA35000-5EA3D800] Sectors = 68       / Size = 00008800 (   34816) FO: [00018000-00020800] `.\SVN\C*\R*\n*\Debug\*.obj'[5EA3D800-5EA3E000] Sectors = 4        / Size = 00000800 (    2048) FO: [00008800-00009000] `.\SVNROOT\C*\db\revs\0\392'[5EA3E000-5EA3F000] Sectors = 8        / Size = 00001000 (    4096) FO: [00014800-00015800] `.\SVNROOT\C*\db\revs\0\398'[5EA3F000-5EA40800] Sectors = 12       / Size = 00001800 (    6144) FO: [00010800-00012000] `.\SVNROOT\C*\db\revs\0\389'[5EA40800-5EA41000] Sectors = 4        / Size = 00000800 (    2048) FO: [00009000-00009800] `.\SVNROOT\C*\db\revs\0\392'[5EA41000-5EA41800] Sectors = 4        / Size = 00000800 (    2048) FO: [00008000-00008800] `.\SVNROOT\C*\db\revs\0\390'[5EA41800-5EA42000] Sectors = 4        / Size = 00000800 (    2048) FO: [00002000-00002800] `.\WORK\INTERNET\DESIGN\sporaw\www\rus\.htaccess'[...]

Символ "*" тут - это просто пропущены ненужные всякие названия.

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

Такой лог позволил мне увидеть, что все битые файлы находятся в пределах одного найденного мною блока. Более того, я понял, что битых файлов значительно больше, чем я предполагал (я нашел 10, а их было 55). Причем большинство из них, к сожалению, выпадали на бинарные файлы (по ним сложно понять - битый он или нет), и более того -- на куски репозитория SVN!

Используя FO-смещения (информация о блоке внутри файла), я проанализировал несколько файлов. Тут как раз помогло то, что несколько файлов было текстовых, плюс файлы были разных форматов. По ним я понял, что произошло смещение на 32-сектора (4000h байт). То есть нужно восстанавливаемый блок просто сдвинуть "вниз" на 4000h байт. А как раз за этим "плохим" блоком шел ненайденный блок в 4000h-байт. Как оказалось, нужно было просто поменять местами эти два блока! Ненайденный блок шел до найденного.

Эти 4000h байт я не стал искать, посмотрев куда они попадают в контейнере: они попадают на область free space. То есть просто пустое место. Там может быть любой мусор и мне он неважен. Искать смысла нет никакого.

Результаты проделанной за 44.5 часов работы:

//                PhysOffset  BlockSize       PhysOffset   FileOffset   PhysOffset   FileOffsetCopyBlock(fI, fO, 0x7D04FE00, 0x2831A000); // [7D04FE00h | 00000000h] - [A5369E00h | 2831A000h]CopyBlock(fI, fO, 0x5F489E00, 0x11A5B000); // [5F489E00h | 2831A000h] - [70EE4E00h | 39D75000h]CopyBlock(fI, fO, 0x242AFE00, 0x0CC71000); // [242AFE00h | 39D75000h] - [30F20E00h | 469E6000h]CopyBlock(fI, fO, 0xDBBB7E00, 0x09E03000); // [DBBB7E00h | 469E6000h] - [E59BAE00h | 507E9000h]CopyBlock(fI, fO, 0x0A38FE00, 0x08871000); // [0A38FE00h | 507E9000h] - {12C00E00h | 5905A000h}UnknownBlock(fI, fO, 0x00004000);          // <????????h | 5905A000h> - <????????h | 5905E000h> // FreeSpace, нет смысла искать ихCopyBlock(fI, fO, 0x0000DE00, 0x03056000); // <0000DE00h | 5905E000h> - <03063E00h | 5C0B4000h>CopyBlock(fI, fO, 0xA75DFE00, 0x01F5B000); // {A75DFE00h | 5C0B4000h} - {A953AE00h | 5E00F000h}CopyBlock(fI, fO, 0x3CE74E00, 0x01878000); // {3CE74E00h | 5E00F000h} - {3E6ECE00h | 5F887000h}CopyBlock(fI, fO, 0x55FBFE00, 0x00779000); // {55FBFE00h | 5F887000h} - [56738E00h | 60000000h]// Total: 0x60000000 = 1'610'612'736

Все! Контейнер полностью восстановлен!

Надеюсь, эта статья и идеи кому-нибудь когда-нибудь помогут/пригодяться при восстановлении данных в схожей или иной ситуации.

P.S. После всей этой истории подумал, что факторизация RSA-512 (или сколько бит там было?) за минуту в Swordfish -- не такая уж и шутка. ;) Иногда бывает НАДО!

  • Upvote 5

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Umnik

Это действительно шикарно.

/me поставил себе на запястье крестик, чтобы вечером изменить расписание Акрониса с "каждый месяц" на "каждую неделю".

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Андрей-001

Umnik

Ещё поставь на коррекцию подзаголовка этой темы.

Полсуток уже висит как поххххаться почти 50 часов бесплатно. Обалдели что ли?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
SBond

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

Действительно, согласен с Umnik'om есть вещи которые стоит добавить себе в "базу данных".... Спасибо автору, честно говоря, даже не думал, что есть люди, которые могут для восстановления пользоваться дебагерами или подобными инструментами, в данном случае Winhex, очень удивлялся почему нет нормальных описаний подобных применений таких инструментов, мне кажется из-за того, что все подобное остается в узком кругу профессионалов, или я плохо искал ?

Еще на заре своего общения с компьютером понял, что для восстановления файлов нужны программы несколько лучшие чем DOS - Undelete.exe, и очень нравилась в свое время утилитка Norton DiskEdit, жалко, что подобную программу Symantec не смог развить, и она забылась. (хотя, наверное, уже многие утилиты не могут соперничать со старыми аналогами из DOS):) +1 автору.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Андрей-001
даже не думал, что есть люди, которые могут для восстановления пользоваться дебагерами или подобными инструментами, в данном случае Winhex

Так Winhex в судебной версии можно вернуть или просмотреть даже больше, чем в профессиональной. Это даже и не тайна, а давно известный факт.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Umnik
Полсуток уже висит как поххххаться почти 50 часов бесплатно. Обалдели что ли?

Ну как сказать: http://slovari.yandex.ru/dict/ushakov/arti...&stpar3=1.2

Я до сих пор вспоминаю, как Иван обалденно расписал значение слова "хер".

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Андрей-001

OFF

как Иван обалденно расписал значение слова "хер".

А что Иван писал про хер? ...Крест, перекреститься, ноги хером... Это всё также есть в словаре Даля.

Но ещё есть праславянское и праиндоевропейское значение. В Инете его не найдёте.

Живущие в Москве могут заглянуть в "Этимологический словарь славянских языков: Праславянский лексический фонд". 24 тома (не завершено). Или сходить в редакцию.

Найдёте мнооого интересного про все так называемые современные эвфемизмы и матерные слова, которые там даются с корневой основой. OFF

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

  • Сообщения

    • Ego Dekker
      Домашние антивирусы для Windows были обновлены до версии 19.0.14.
    • PR55.RP55
      Microsoft ускоряет Проводник в Windows 11 с помощью предзагрузки https://www.comss.ru/page.php?id=18618
    • AM_Bot
      Вендор Crosstech Solutions Group выпустил решение для защиты контейнерной инфраструктуры Crosstech Container Security (CTCS). Оно обеспечивает безопасность контейнерных сред: от сканирования образов до контроля запуска рабочих нагрузок и реагирования на инциденты в средах выполнения.      ВведениеФункциональные возможности Crosstech Container Security2.1. Анализ и контроль безопасности образов2.2. Контроль запуска контейнеров2.3. Безопасность в средах выполнения (Runtime Security)2.4. Безопасность окружения2.5. Внешние интеграцииАрхитектура Crosstech Container Security3.1. Основные компоненты Crosstech Container SecurityСистемные требования и лицензирование Crosstech Container Security4.1. Лицензирование4.2. Требования к аппаратной части4.3. Требования к программной части4.4. Процесс установкиСценарии использования5.1. Сценарий №1. Сканирование образов5.2. Сценарий №2. Политики безопасности образов контейнеров5.3. Сценарий №3. Контроль запуска контейнеров5.4. Сценарий №4. Мониторинг безопасности сред выполненияВыводыВведениеРоссийский рынок контейнерных разработок постоянно растёт. В 2024 году затраты на ПО для контейнеризации достигли 3 млрд рублей — это на 66 % больше, чем в 2023. Контейнерные технологии ускоряют процессы разработки, экономят ресурсы компаний, поэтому их всё чаще внедряют в свою работу ИТ-департаменты.Вместе с ростом масштабов контейнеризации увеличивается и поверхность атак: уязвимости в образах, ошибки конфигураций, несанкционированные действия внутри контейнеров. Crosstech Container Security помогает компаниям выстраивать комплексную систему защиты контейнерной инфраструктуры.Функциональные возможности Crosstech Container SecurityCrosstech Container Security объединяет функции анализа, мониторинга и управления безопасностью контейнерных сред. Решение охватывает весь жизненный цикл контейнера — от момента его создания до удаления. Продукт помогает DevSecOps-командам выявлять уязвимости, проверять конфигурации, контролировать сетевую активность и реагировать на инциденты в режиме реального времени.Анализ и контроль безопасности образовCrosstech Container Security интегрируется с реестрами хранения образов и позволяет проводить их сканирование как в ручном режиме, так и по расписанию. В результате анализа система обнаруживает дефекты в образах: уязвимости, неправильные конфигурации, секреты, а также фиксирует используемые в образах OSS-лицензии для пакетов и библиотек. По каждому найденному дефекту предоставляется детальная информация.CTCS поддерживает экспорт SBOM в форматах SPDX и CycloneDx, что упрощает аудит и обмен данными с другими решениями. Интерфейс продукта предоставляет визуализацию образов с маппингом (сопоставлением данных) на дефекты безопасности. CTCS также осуществляет дискаверинг (обнаружение) образов, располагающихся в защищаемых кластерах и на standalone-хостах.Для автоматизации контроля доступны настраиваемые политики безопасности образов, разделяемые по критериям:наличие уязвимостей в образах контейнеров выше заданной оценки критичности;наличие уязвимостей в образах контейнеров согласно заданным идентификаторам;обнаружение root в Dockerfile;возможность указания перечня образов, на которые будет распространяться созданная политика безопасности образов.При нарушении хотя бы одного из критериев политики администратор получает уведомление в интерфейсе CTCS и может оперативно принять меры: заблокировать образ, исключить его из деплоя или добавить в список исключений с указанием причины. Такой подход обеспечивает прозрачность процессов и повышает уровень доверия к среде разработки и эксплуатации.Контроль запуска контейнеровРешение обеспечивает контроль запуска контейнеров как в средах Kubernetes, так и на отдельных standalone-хостах в соответствии с заданными политиками безопасности. Это позволяет предотвращать запуск рабочих нагрузок, не соответствующих требованиям безопасности компании, ещё на этапе их инициализации.В зависимости от настроек администратор может выбрать режим реагирования: блокирование или оповещение о нарушении политики безопасности. Информация обо всех срабатываниях отображается в интерфейсе системы, обеспечивая прозрачность и возможность оперативного реагирования.Политики безопасности включают следующие критерии:попытка запуска контейнеров на базе образов, не соответствующих политикам безопасности;попытка запуска контейнеров из-под пользователя root;попытка запуска контейнеров с повышенными привилегиями ядра Linux;контроль запуска контейнеров на базе образов, не прошедших сканирование CTCS.Дополнительно решение поддерживает интеграцию с OPA Gatekeeper и имеет возможность создания и импорта политик через интерфейс CTCS.Безопасность в средах выполнения (Runtime Security)CTCS использует возможности инструмента Tetragon для создания и применения кастомных политик безопасности, позволяющих контролировать сетевые взаимодействия внутри контейнеров. Администраторы могут выбрать набор кластеров для распространения политик, что обеспечивает гибкость при внедрении требований безопасности.Вся информация о срабатываниях политик фиксируется в интерфейсе CTCS, предоставляя специалистам по информационной безопасности прозрачную картину активности в средах выполнения и возможность оперативного реагирования на инциденты.Безопасность окруженияРешение выполняет сканирование кластеров на соответствие стандартам конфигурирования CIS Kubernetes Benchmarks. Аналогично система проводит проверку standalone-хостов на соответствие CIS Docker Benchmarks. Дополнительно CTCS поддерживает сканирование конфигурационных файлов, расположенных в директориях нод кластеров, выполняя роль сканера на основе IaC (Infrastructure as Code, управление инфраструктурой через использование кода).Внешние интеграцииРешение поддерживает интеграцию с реестрами хранения образов, что обеспечивает доступ к актуальным данным для анализа и контроля безопасности контейнеров. Также CTCS поддерживает передачу журналов событий в системы сбора по протоколу Syslog для их централизованного хранения и обработки.Доступна интеграция с системой идентификации, управления доступом Keycloak с поддержкой OAuth и доменными службами каталогов. Это позволяет пользователям авторизовываться в интерфейсе системы через доменные учётные записи. Рисунок 1. Планы по развитию Crosstech Container Security Архитектура Crosstech Container SecurityАрхитектура CTCS реализована в формате однонаправленных соединений со стороны ядра системы в сторону агентов защиты (протокол TCP/IP), располагающихся в защищаемых кластерах. Такой подход позволяет использовать инстанс ядра в единственном экземпляре для инфраструктур, сегментированных по уровням доверия. Рисунок 2. Логическая архитектура Crosstech Container Security Основные компоненты Crosstech Container SecurityCTCS состоит из 3 основных компонентов:CTCS Core — группа микросервисов, отвечающая за управление системой: хранение данных, настроек, создание политик безопасности, бизнес-логика продукта, а также взаимодействие со смежными системами.CTCS Agent-Manager: модуль агент-менеджера реализован в формате оператора Kubernetes с целью контроля за установкой и изменениями кастомных ресурсов (custom resource definition, CRD), а также управления и передачи информации агент-воркерам, устанавливаемым на каждую защищаемую ноду в формате DaemonSet.CTCS Scanner — модуль, сканирующий образы контейнеров на уязвимости, неправильные конфигурации, конфиденциальные данные, информацию по OSS-лицензиям для пакетов и библиотек из состава образа, а также сканирующий кластеры на соответствие стандартам конфигурирования.Системные требования и лицензирование Crosstech Container SecurityПеред выбором модели лицензирования заказчикам рекомендуется оценить масштаб защищаемой инфраструктуры и нагрузку на кластеры. Crosstech Container Security предусматривает гибкий подход: ядро и агенты могут разворачиваться в разных сегментах сети, включая тестовые и продуктивные среды. Такой принцип позволяет оптимально распределять ресурсы и лицензии, избегая избыточных затрат.ЛицензированиеCTCS лицензируется по количеству защищаемых нод, на которые распространяются агенты защиты.В продукте реализовано гибкое лицензирование, которое позволяет заказчикам самостоятельно выбирать перечень защищаемых объектов. При достижении лимита по количеству лицензий, предусмотренных договором, администратор может отключить часть текущих объектов защиты и переназначить лицензии на новые кластеры и ноды. Рисунок 3. Включение/выключение агентов защиты Рисунок 4. Лицензии CTCS На странице лицензирования доступна подробная информация о параметрах действующей лицензии. Пользователь видит:количество оставшихся дней действия лицензии;количество нод, предусмотренных лицензией;актуальные данные о числе используемых нод в рамках лицензии;сведения о типе лицензии;информация о поставщике;информация о владельце лицензии.Рисунок 5. Страница «Лицензирование» Требования к аппаратной частиКластер, на котором производится установка CTCS, должен соответствовать минимальным характеристикам, приведённым ниже. Для определения значений millicpu (единицы времени процессора, эквивалентной тысячной части работы, которую может выполнить одно ядро CPU) рекомендуется воспользоваться документацией Kubernetes.Кластер, на который будет установлен helm-чарт ядра (без учёта сканера) должен иметь характеристики не ниже 8190 millicpu, 7410 MiB RAM.Для каждого экземпляра сканера: 3 CPU, 6 GB RAM, при добавлении дополнительных экземпляров значения увеличиваются пропорционально.В случае использования большего количества реплик значения пропорционально умножаются на их число. По умолчанию в чарте допускается до 6 реплик, что требует 18 CPU, 36 GB RAM.Каждый кластер для развёртывания чарт-агента должен иметь 2 CPU, 8 GB RAM.Необходимый минимум для каждой используемой СУБД PostgreSQL: 4 CPU, 8 GB RAM, 100 GB.Приведённые требования указаны для усреднённой конфигурации и могут быть изменены в зависимости от количества одновременных сканирований образов, генерируемых событий, деплоев, пространств имён (namespaces) и подов.Требования к программной частиДля корректной интеграции и работы приложение CTCS должно быть развёрнуто в кластере Kubernetes. При настройке системы в конфигурационном файле helm-чарта должны быть настроены необходимые параметры.Поддерживаемые контейнерные среды CRI (container runtime interface): containerd и docker.В момент выполнения инструкции на хосте администратора должны быть установлены следующие утилиты для выполнения установки:tar;helm;kubectl.Необходимые сервисы в инфраструктуре:PostgreSQL: рекомендуется размещать базу данных для хранения логов на отдельном инстансе от основной БД, чтобы избежать падения производительности основных операций при большом объёме логируемых событий;Keycloak (опционально, имеется возможность поставки в составе дистрибутива);Vault (опционально, имеется возможность использования стандартного объекта Kubernetes Secret).Требования к операционной системе и ядру:рекомендуется использовать ОС с версией ядра 5.4 или выше для обеспечения поддержки Tetragon;в ядре должна быть включена функция BTF;должны быть активированы модули eBPF и cgroup, а также корректным образом настроены или отключены модули безопасности Linux (LSM), контролирующие запуск eBPF-программ (в соответствии с официальной документацией Tetragon).Требования к версиям Kubernetes:центральная управляющая часть кластера – не ниже версии 1.23;дочерние кластеры – версия 1.23 или выше.Дополнительные требования:В кластере Kubernetes должен быть установлен, подключён и настроен storage class, в котором будет минимум 10 GB свободного места.В master-кластер должен быть установлен External Secrets (опционально).В дочерние кластеры должен быть установлен External Secrets (опционально).Во всех кластерах, где развёртывается ядро и агенты CTCS, должен быть установлен ingress-контроллер.Совокупность этих требований обеспечивает стабильную работу системы и корректное взаимодействие всех модулей CTCS. При соблюдении указанных параметров производительность решения остаётся предсказуемой даже при высокой интенсивности сканирований и большом количестве событий безопасности. Такой подход гарантирует надёжность, масштабируемость и устойчивость контейнерной инфраструктуры.Процесс установкиДля развёртывания CTCS вендор предоставляет архив, содержащий helm-чарты и образы системных контейнеров. При необходимости может быть предоставлена учётная запись для выгрузки дистрибутивов из репозиториев вендора напрямую.Сценарии использованияCrosstech Container Security закрывает ключевые задачи обеспечения безопасности контейнерных платформ — от анализа уязвимостей до защиты на уровне среды выполнения. Решение органично интегрируется в процессы DevSecOps и помогает компаниям повысить устойчивость инфраструктуры к современным киберугрозам без потери скорости разработки.Сценарий №1. Сканирование образовCTCS позволяет выполнять сканирование образов контейнеров, хранящихся как в интегрированных реестрах образов, так и локально в защищаемых кластерах. Рисунок 6. Подключённые реестры После интеграции с реестрами образов на вкладке «Образы» – «Реестры» отображается подключённый реестр и информация о хранящихся в нём образах. Реализовано в формате иерархии:Реестры.Название образа и количество его версий (тегов).Название образа и его версии.Карточка конкретного образа.Рисунок 7. Образ и список его версий Рисунок 8. Карточка образа На каждом уровне иерархии есть возможность запуска сканирования по требованию с выбором типа дефектов, которые будут учитываться в процессе сканирования. Дополнительно предоставляется общая информация об образе, данные о его соответствии установленным политикам, сведения о слоях образов с маппингом на обнаруженные дефекты. Рисунок 9. Слои образа На странице интеграций с реестрами в настройках доступно выставление расписания для проведения автоматизированного сканирования. Рисунок 10. Сканирование по расписанию Для работы с образами, обнаруженными локально в защищаемых кластерах, доступна отдельная вкладка «Образы» – «Локальные образы». Рисунок 11. Таблица локальных образов При запуске процесса сканирования доступен выбор ноды, на которой он будет проводиться. Если обнаруженный образ находится в интегрированном реестре, сканирование будет приоритетно выполняться на стороне ядра системы в рамках интеграции с реестром. Рисунок 12. Выбор нода для проведения сканирования Сценарий №2. Политики безопасности образов контейнеровВ рамках Crosstech Container Security реализовано создание политик безопасности для образов контейнеров. После их настройки система автоматически проверяет все известные образы на соответствие заданным критериям. По результатам проверки на карточке каждого образа отображается информация о соответствии или несоответствии политикам безопасности (Рисунок 7). Если образ нарушает несколько политик безопасности одновременно, в карточке отображается, какие именно политики безопасности были нарушены. Рисунок 13. Создание политики безопасности образов Сценарий №3. Контроль запуска контейнеровВ CTCS доступна интеграция с OPA Gatekeeper, обеспечивающая валидацию контейнерных деплоев и реагирование в соответствии с заданными политиками безопасности.При настройке политик безопасности доступен выбор режима реагирования — оповещение либо блокировка — а также определение перечня критериев безопасности, по которым будет осуществляться контроль. Рисунок 14. Таблица политик валидации и контроля запусков Политики безопасности могут создаваться по выделенным критериям (Рисунок 13) или импортироваться в виде кастомных политик (Рисунок 14). Рисунок 15. Создание политики валидации и контроля запусков Рисунок 16. Импорт кастомных политик безопасности Результаты срабатывания политик доступны в интерфейсе системы, что позволяет оперативно анализировать инциденты и корректировать настройки безопасности. Рисунок 17. Срабатывание политик валидации и контроля запусков Сценарий №4. Мониторинг безопасности сред выполненияВ текущей версии реализован мониторинг безопасности сред выполнения на базе Tetragon, что позволяет контролировать эксплуатацию рабочих нагрузок.В CTCS доступна форма для создания или импорта готовых политик безопасности с возможностью выбора области применения. Рисунок 18. Создание политики среды выполнения При срабатывании политик система отображает перечень событий в формате таблицы. Для каждого события можно перейти в режим детального просмотра, где отображается его идентификатор, дата и время создания, короткое описание и содержание в формате json. Рисунок 19. Событие срабатывания политики среды выполнения ВыводыАнализ решения Crosstech Container Security показал, что в версии 3.0.0 продукт предоставляет широкие функциональные возможности для защиты контейнерной инфраструктуры: от обеспечения безопасности образов контейнеров до контроля запуска и реагирования на нелегитимные процессы в средах выполнения в соответствии с политиками безопасности. CTCS также предоставляет инструменты для проведения сканирований защищаемых кластеров на соответствие стандартам конфигурирования, что повышает уровень безопасности контейнерной инфраструктуры.Достоинства:Архитектура. Благодаря однонаправленным соединениям со стороны ядра системы в сторону агентов защиты обеспечивается соответствие требованиям заказчиков, которые используют «Zero Trust»-модель на уровне сегментов инфраструктуры.Широкая площадь покрытия. CTCS обеспечивает контроль запуска контейнеров не только в рамках оркестратора Kubernetes, но и на отдельных хостах контейнеризации за счёт использования standalone-агентов.Гибкие возможности при работе с API. Весь функционал из веб-интерфейса CTCS также доступен для вызова через API, что позволяет специалистам заказчика решать нетривиальные задачи в рамках своей рабочей деятельности и интегрировать продукт в существующие процессы.Удобство при работе со сканированием образов. Иерархический подход обеспечивает гибкость при выборе области сканирования и повышает прозрачность анализа.Недостатки:Отсутствие возможности встраивания в процесс сборки (CI/CD) (планируется к реализации в первом квартале 2026 года).Отсутствие данных по ресурсам Kubernetes (Workloads, RBAC, Custom Resources, Feature Gates): планируется в 4-м квартале 2025 – 1-м квартале 2026).Отсутствие настройки гибкого разграничения прав доступа пользователей в интерфейс системы (реализация запланирована на первый квартал 2026).Отсутствие отчётности по результатам работы с системой (планируется в первом квартале 2026).Реклама, 18+. ООО «Кросстех Солюшнс Групп» ИНН 7722687219ERID: 2VfnxvVGwXfЧитать далее
    • demkd
    • PR55.RP55
      И ещё это: https://www.comss.ru/page.php?id=18330 Это и на работе Образов с Live CD может сказаться ?
×