Немного о восстановлении данных нестандартным способом... - Резервное копирование и восстановление данных (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
      ESET Online Scanner 4.0.1  (Windows 10/11, 64-разрядная)
                                                                                  ●
              Руководство пользователя ESET Online Scanner 4  (PDF-файл)
    • Ego Dekker
      ESET Cyber Security был обновлён до версии 9.0.6700.
    • AM_Bot
      Теория звучит убедительно, но работает ли она на практике? Мы внимательно изучили Phishman 2.35 и решили не останавливаться на описании её возможностей. Вместо этого протестировали платформу на собственных сотрудниках и удивились, к каким результатам это привело.      1. Введение2. Методология тестирования Phishman 2.353. Первичное тестирование3.1. Подготовка шаблонов фишинговых сообщений, инфраструктуры рассылки3.2. Тестирование доставки и отражения результатов в статистике3.3. Результаты атак4. Обучение4.1. Формирование учебной группы4.2. Составление образовательной программы по повышению киберкультуры4.3. Процесс обучения и его результаты5. Повторное тестирование5.1. Результаты атак6. Подведение итогов6.1. Сложности, с которыми мы столкнулись7. Впечатления от проекта команды «АМ Медиа»7.1. Реакция сотрудников7.2. Реакция организаторов7.3. Сотрудничество с вендором8. ВыводыВведениеPhishman 2.35 — это система повышения осведомлённости пользователей в сфере ИБ. Она помогает развивать киберкультуру и формировать у сотрудников устойчивые навыки безопасной работы с информацией, цифровыми сервисами и корпоративными ресурсами. В процессе обучения сотрудники учатся распознавать актуальные сценарии атак, закрепляют правильные модели поведения и в результате реже становятся причиной инцидентов, связанных с человеческим фактором.В первой части обзора Phishman 2.35 мы рассмотрели платформу с точки зрения её возможностей. Теперь пришло время проверить, как всё это работает на практике. За время проекта мы не только оценили эффективность различных сценариев, но и столкнулись с рядом особенностей, которые невозможно увидеть в документации. Одни из них влияли на ход тестирования, другие оказались скорее организационными нюансами, о которых стоит знать заранее.Методология тестирования Phishman 2.35В процессе работы с киберкультурой «АМ Медиа» мы будем использовать следующие метрики:Обученность. Отражает уровень знаний сотрудников в области ИБ. Показатель растёт, когда сотрудники осваивают темы: реагирование на инциденты, защита от социальной инженерии и другие критически важные компетенции.Иммунность. Показывает, как сотрудники применяют знания на практике. Она повышается, когда демонстрируется способность распознавать угрозы и правильно на них реагировать в реальных сценариях.Киберосознанность — итоговая метрика. Объединяет знания и практические навыки, показывая, насколько сотрудники в целом устойчивы к киберугрозам и действуют корректно при их возникновении.Прежде чем оценивать эффективность работы системы, необходимо определить отправную точку. Первичное тестирование определит, на какие сценарии реагирует каждый сотрудник, где чаще всего допускаются ошибки и какие темы требуют дополнительного развития. На основе этих данных формируется индивидуальная программа обучения: сотрудники проходят персонализированные курсы, выполняют практические задания и тесты, которые помогают устранить выявленные пробелы и закрепить необходимые навыки. В процессе обучения повышается уровень обученности, а закрепление знаний через практику влияет на показатель иммунности. После завершения обучения мы проведём повторное тестирование, которое покажет, какие изменения произошли по всем ключевым метрикам.Заключительный этап — сравнение результатов первичного и повторного тестирования. Здесь станет понятно, насколько вырос уровень киберкультуры сотрудников: изменилось ли их отношение к вопросам ИБ, стали ли они увереннее распознавать угрозы и чаще принимать безопасные решения в ситуациях, где раньше могли допустить ошибку.В качестве основного канала для рассылки фишинга выбрали электронную почту. Причина очевидна: именно она остаётся основным способом первичного контакта злоумышленников с сотрудниками и доставки фишинговых сценариев. По имеющимся оценкам, более 90 % успешных кибератак начинаются с электронного письма, поэтому исключать этот канал из подобных проверок было бы некорректно.Первичное тестированиеРеальные фишинговые атаки почти никогда не строятся по универсальному шаблону: злоумышленники адаптируют содержание писем под роль человека в компании, его рабочие процессы и типовые задачи. Поэтому при выборе целевой аудитории мы разделили сотрудников по функциям и уровню доступа к корпоративным данным, а сам проект разбили на 3 последовательные волны с разным уровнем сложности.Подготовка шаблонов фишинговых сообщений, инфраструктуры рассылкиПосле определения целевой аудитории был проведён анализ структуры подразделений и рабочих процессов сотрудников. На этом этапе изучались:должностные обязанности;распределение зон ответственности;характер внутреннего взаимодействия между отделами;используемые адреса электронной почты;формат повседневной служебной переписки.Это позволило понять, какие сценарии коммуникации являются для сотрудников привычными и не вызывают подозрений.На основе собранных данных были подготовлены сценарии фишинговых сообщений. При разработке содержимого учитывались тематика рабочих задач, стиль корпоративного общения, оформление внутренних уведомлений и типовые причины отправки писем внутри организации. Основная задача заключалась в том, чтобы письмо воспринималось как стандартное рабочее сообщение, соответствующее реальным бизнес-процессам заказчика.Волна 1. Первая волна была построена как массовый фишинг. Сценарий — сверка графика отпусков. Для атаки создавали и настраивали пользовательский шаблон. Тип атаки — обычный, время начала рассылки — сразу, при запуске атаки.На этом этапе проверялась базовая реакция сотрудников на привычные рабочие триггеры и способность распознавать типовые признаки фишинга без привязки к конкретному подразделению. Рисунок 1. Шаблон для первой волны Рисунок 2. Вид фишингового письма из первой волны в почте Волна 2. Для каждого отдела были подготовлены письма, основанные на реальных рабочих процессах, характерных запросах и ситуациях, с которыми сотрудники регулярно сталкиваются в своей деятельности. Для атаки создали и настроили пользовательский шаблон, где-то добавили немного визуального оформления. Время начала рассылки — по запланированному времени. Рисунок 3. Пример шаблона из второй волны для отдела «Продажи» Рисунок 4. Вид фишингового письма из второй волны для отдела «Продажи» Волна 3. Здесь моделировались уже более сложные сценарии целевого фишинга (spear phishing). В письмах использовались специальные формулировки, элементы корпоративного брендирования. На этом этапе проверялась не только внимательность сотрудников, но и способность замечать менее очевидные признаки атаки в условиях, максимально приближённых к реальной целевой компрометации.За основу брали системный брендированный шаблон «Яндекс ID», добавили фишинговую форму и скорректировали немного её содержание. Тип атаки — обычный, время начала рассылки — по запланированному времени. Рисунок 5. Пример шаблона из третьей волны Рисунок 6. Вид фишингового письма из третьей волны При переходе по ссылке открывалась фишинговая страница. Рисунок 7. Фишинговая страница Тестирование доставки и отражения результатов в статистикеДалее была подготовлена инфраструктура рассылки. После её настройки проводилось тестирование доставки сообщений. Проверялась доставка писем во входящие сообщения почтовых клиентов, анализировалась реакция антиспам-механизмов в почте, а также контролировалась корректность работы механизмов отслеживания действий пользователей. Рисунок 8. Результаты тестирования доставки и отображения сообщений в почте Тестирование прошло успешно.После завершения проверки была сформирована последовательность отправки сообщений по заранее определённым волнам. Такой подход позволил распределить нагрузку, контролировать ход тестирования и отслеживать реакцию сотрудников на различных этапах проведения проверки. Рисунок 9. Активные мероприятия Результаты атакБыли получены следующие результаты:Иммунность — 81 %. Хороший иммунитет, большинство реагирует правильно. Охват аудитории (повторно попались на фишинг) — 71 %.Уровень риска — 8, средний. Устойчивость формируется, но есть ещё риски. Рисунок 10. Общая информация после проведения первичного тестирования Самый низкий уровень иммунности — около 50 %, после первых двух волн атак. Рисунок 11. График иммунности во время первичного тестирования Далее — сформировали в системе отчёт по скомпрометированности сотрудников, на основании которого выполнили самостоятельный анализ результатов по отделам без учёта результатов тестирования шаблонов атак. Рисунок 12. Отчёт по скомпрометированности всех сотрудников в Phishman 2.35 Таблица 1. Результаты первичного тестирования по отделамОтделЗаполнили формуОткрыли вложенияОткрыли ссылкуДокументооборот04,76 %4,76 %Продажи04,76 %9,52 %Продюсеры 0023,8 %Редакция0019,04 %Руководитель000 ОбучениеПервичное тестирование завершено, поэтому следующим этапом стало определение группы риска и формирование программы обучения.Формирование учебной группыНа этапе отбора рассматривались два варианта формирования учебной группы. Первый предполагал использование показателя иммунности сотрудников. Второй вариант заключался в создании правила, автоматически формирующего список сотрудников, которые были скомпрометированы в ходе проведённых проверок. Этот подход позволял сразу получить выборку пользователей, продемонстрировавших наибольшую подверженность атакам, без ожидания обновления показателей.Был выбран второй вариант. На основании созданного правила была сформирована группа для обучения: в неё вошли люди, которые были скомпрометированы в ходе первичного тестирования. Рисунок 13. Создание правила для выявления группы риска Рисунок 14. Отчёт по отработанному правилу для выявления группы риска Отдельно была сформирована группа сотрудников, успешно распознавших фишинговую атаку, для участия в обучении, направленном на поддержание киберкультуры.Составление образовательной программы по повышению киберкультурыПопавшиеся сотрудники были включены в отдельную учебную группу, для которой сформировали персональную образовательную траекторию. В неё вошли 3 микрокурса по фишингу и 1 курс по информационной безопасности. Содержание траектории было направлено на повышение устойчивости к методам социальной инженерии и снижение вероятности компрометации учётных данных. Рисунок 15. Заполнение параметров обучения сотрудников Рисунок 16. Составление учебной программы Отдельно была запущена программа обучения для сотрудников, которые не попали в выборку по результатам правила.Процесс обучения и его результатыПервый отчёт мы сформировали через 2 дня после запуска обучения, что позволило получить предварительную оценку вовлечённости сотрудников. Анализ данных показал, что наибольшую активность на начальном этапе продемонстрировали сотрудники, которые попались на фишинг. Рисунок 17. Промежуточный анализ обучения Через неделю после запуска обучения провели повторный анализ прогресса, включая оценку прохождения курсов и выявление участников, не приступивших к обучению. Рисунок 18. Отчёт по динамике обучения в Phishman 2.35 Анализ показал, что часть сотрудников не завершила обучение в установленный срок. Для обеспечения максимального охвата было принято решение о продлении сроков прохождения курсов. Рисунок 19. Продление и корректировка процесса обучения В результате фактическая продолжительность обучения составила 2 недели, что превысило первоначально установленный срок в одну неделю. Но и этого времени не хватило нашим сотрудникам. Чтобы узнать, кто оказался более ответственным, воспользовались возможностями правил. Рисунок 20. Пример настройки правила по выявлению сотрудников, прошедших обучение В результате была получена информация о сотрудниках, полностью и частично прошедших обучение. Рисунок 21. Отчёт по сработанному правилу по выявлению сотрудников, прошедших обучение Рисунок 22. Отчёт по сработанному правилу по выявлению сотрудников, частично прошедших обучение Результаты обучения:полностью прошли обучение — 52 %;частично — 22 %;не прошли обучение — 26 %.Мы проанализировали список сотрудников, не приступивших к обучению, и выяснили, что это те, кто не попался на фишинг во время первичного тестирования.Среди сотрудников, которые попались на фишинг, 80 % прошли обучение, остальные — прошли его частично. Рисунок 23. Результаты обучения сотрудников «АМ Медиа» Вместе с тем за этот период были зафиксированы положительные изменения в ключевых показателях: уровень обученности достиг 9 319 баллов, а показатель киберосознанности — 7 561 баллов. Несмотря на положительную динамику, полученные значения оставались гораздо ниже целевых ориентиров, что свидетельствует о необходимости дальнейшей работы по повышению вовлечённости сотрудников и развитию киберкультуры.Повторное тестированиеПовторное тестирование проводилось по тем же этапам, что и первичное: подготовка шаблонов, тестирование и проведение атак. Как и на первом этапе, основной задачей было сделать письмо максимально похожим на стандартную рабочую переписку, соответствующую реальным бизнес-процессам нашей компании.Подготовительный этап повторного тестирования потребовал дополнительных временных затрат, связанных с регистрацией новых доменов и расширением сценариев атак с учётом результатов первичного тестирования.Волна 1. Сценарии формировались не только для отдельных подразделений, но и адресно для конкретных сотрудников, что позволило повысить реалистичность и точность имитации фишинговых атак. Запустили несколько атак, для каждой из них были разработаны индивидуальные шаблоны электронных писем и соответствующие фишинговые формы. Тип атаки — обычный, время начала рассылки — по запланированному времени. Рисунок 24. Пример фишингового письма для первой волны Рисунок 25. Пример фишинговой формы для письма из первой волны Волна 2. Вторая волна представляла собой массовую фишинговую кампанию. Для неё был создан и настроен пользовательский шаблон, основанный на триггерах срочности и страхе финансовых потерь. Тип атаки — обычный, время начала рассылки — сразу, при запуске атаки. Рисунок 26. Пример фишингового письма для второй волны Тестирование доставки писем и корректности отражения результатов в статистике прошло успешно.Результаты атакВ повторном тестировании приняли участие уже 23 человека. Увеличение числа участников на 2 человека связано с подключением новых сотрудников к нашему эксперименту. Резких скачков иммунности здесь не наблюдалось. Рисунок 27. График иммунности во время повторного тестирования Для дополнительной оценки мы и здесь также выполнили самостоятельный анализ результатов по отделам без учёта результатов тестирования шаблонов атак. Таблица 2. Результаты повторного тестирования по отделамОтделЗаполнили формуОткрыли вложенияОткрыли ссылкуДокументооборот000Продажи008,7 %Продюсеры 008,7 %Редакция8,7 %08,7 %Руководитель000 Мы также посмотрели, как себя показали сотрудники, которые не прошли обучение, в повторном фишинговом тесте. По данным отчёта, в первой волне повторного тестирования на фишинг попались 40% из всех, кто не обучался. Рисунок 28. Поиск информации о сотруднике в отчёте по атакам Подведение итогов После завершения всех этапов эксперимента мы получили следующие показатели:Иммунность — 76 %. Хороший иммунитет, большинство реагирует правильно. Охват аудитории (повторно попались на фишинг) — 91,3 %.Уровень риска — 7, средний. Рисунок 29. Информационная панель Phishman 2.35 после завершения эксперимента После обучения и повторного тестирования добавились другие показатели:Обученность — 11 / 100. Знания отсутствуют, обучение следует начать с базового уровня.Киберосознанность — 10 / 100. Низкий уровень, сотрудники не знают, как действовать в случае угроз.Часть результатов сравнили и представили их в таблице ниже. Таблица 3. Сравнение показателей киберкультуры до и после обученияПоказательДо обученияПосле обученияОбученность09319Иммунность81 %76 %Киберосознанность 07561Охват аудитории (повторно попались на фишинг)71 %91,3 %Уровень риска87 Также проанализировали действия сотрудников после обучения и сравнили их с результатами первичного тестирования. Таблица 4. Сравнение действий сотрудников до обучения и послеОтделЗаполнили формуОткрыли вложенияОткрыли ссылкуДо обученияПосле обученияДо обученияПосле обученияДо обученияПосле обученияДокументооборот004,76 %04,76 %0Продажи004,76 %09,52 %8,7 %Продюсеры 000023,8 %8,7 %Редакция08,7 %0019,04 %8,7 %Руководитель000000 Рисунок 30. Процент попавшихся на фишинг до обучения и после по отделам Если во время первичного тестирования попалось 22 % участников, то после обучения этот показатель уменьшился и стал 12 %. Рисунок 31. Общий процент попавшихся на фишинг до обучения и после Результаты повторного тестирования показали, что, несмотря на заметное снижение количества взаимодействий с фишинговыми письмами, часть сотрудников по-прежнему выполняет действия, свидетельствующие о подверженности атакам. Это ожидаемый результат, поскольку киберкультуру невозможно сформировать за столь короткое время. Речь идёт о длительном процессе, который требует регулярной работы как со стороны специалистов по информационной безопасности, так и со стороны самих сотрудников.Наш эксперимент позволил проверить знания сотрудников, провести обучение и затем оценить, насколько полученные знания закрепились на практике. Однако с точки зрения развития киберкультуры — это лишь один из этапов работы, а не её завершение.Сложности, с которыми мы столкнулисьОсобенность нашего эксперимента — организация предварительного тестирования. Перед запуском каждой атаки мы проверяли её работу на собственном аккаунте, чтобы убедиться в корректной отработке сценария на стороне пользователя. Такие проверки попадали в общую статистику системы и оказывали влияние на итоговые показатели. Возможность исключить подобные события из расчётов отсутствует. Согласно комментариям вендора, для этих целей следует использовать отдельный тестовый стенд. Поэтому мы вели дополнительно самостоятельный анализ результатов эксперимента.Отдельные сложности возникли на этапе обучения сотрудников. Завершить обучение в установленные сроки не удалось из-за человеческого фактора. Не все участники смогли своевременно пройти назначенные материалы, что потребовало увеличения периода обучения и дополнительного контроля за его прохождением.Впечатления от проекта команды «АМ Медиа»Проведение тестирования не вызвало негативной реакции со стороны сотрудников. Хотя фишинговые сообщения активно обсуждались внутри коллектива, жалоб руководству или недовольства вида «зачем вообще было устраивать такую проверку» не возникло. Основной интерес был сосредоточен вокруг самих писем и попыток понять, что именно происходит.Реакция сотрудниковОдним из самых любопытных наблюдений стала реакция сотрудников после первой волны первичного тестирования. Полученные фишинговые сообщения быстро стали предметом обсуждения: сотрудники пересылали их друг другу, задавали вопросы коллегам и пытались разобраться, что происходит.Некоторые пошли ещё дальше и вступали в переписку с отправителем, воспринимая фишинговые письма как реальные рабочие сообщения. Это наглядно показало не только убедительность используемых сценариев, но и то, что практическое столкновение с угрозой вовлекает сотрудников в тему ИБ гораздо сильнее, чем абстрактные примеры из учебных материалов. Во время повторного тестирования такой реакции уже не возникло.Реакция организаторовЕсли для большинства сотрудников тестирование выглядело как неожиданно появившиеся письма в почте, то для команды, которой было поручено тестирование Phishman 2.35 этот проект сопровождался совсем другими эмоциями. Подготовка сценариев, запуск атак и ожидание результатов вызывали ощутимое волнение. Оказалось, что смотреть на ситуацию глазами злоумышленника не так просто, как может показаться со стороны. Приходилось постоянно задавать себе вопросы: какой сценарий покажется правдоподобным, что привлечёт внимание сотрудника, а что, наоборот, вызовет подозрения.Самыми напряжёнными были дни первой волны тестирования. На этом этапе ещё не было понимания, как сотрудники отреагируют на рассылки, насколько убедительными окажутся сценарии и не вызовет ли проверка негативной реакции внутри коллектива. С каждой новой зафиксированной активностью интерес смешивался с тревогой, а результаты ожидались едва ли не с большим нетерпением, чем сам запуск кампании.После завершения эксперимента стало легче: всё задуманное удалось реализовать, результаты были получены и проанализированы. Тем не менее полностью избавиться от мыслей о проделанной работе не получилось. Время от времени возвращаешься к отдельным этапам и задаёшься вопросом: а стоило ли сделать именно так? Может быть, какой-то сценарий можно было построить иначе, а какие-то решения принять по-другому?Наверное, это естественная часть любого практического проекта. Когда работа заканчивается, появляется возможность посмотреть на неё со стороны и критически оценить собственные решения. Именно в такие моменты часто приходят идеи, которые помогают сделать следующие проекты лучше.Сотрудничество с вендоромВ ходе подготовки и проведения эксперимента иногда возникали вопросы, связанные с настройкой платформы, особенностями реализации отдельных сценариев и интерпретацией результатов. Для их решения использовались как переписка, так и рабочие созвоны. Запросы обрабатывались оперативно, что позволяло своевременно получать необходимую информацию и не допускать задержек в выполнении работ. Поддержка была доступна не только в рабочее время, но и в выходные дни.ВыводыПовторное тестирование показало, что тщательно подготовленные и персонализированные фишинговые атаки значительно эффективнее. При наличии качественной разведки злоумышленники способны подобрать убедительный сценарий практически для любого сотрудника. А если специалист может ошибиться, то сотруднику, который не занимается вопросами ИБ каждый день, сделать это ещё проще.Работа в сфере информационной безопасности или информационных технологий сама по себе не защищает человека от фишинга, социальной инженерии и других современных атак. Мы убедились в этом на собственном опыте: даже профильные знания не гарантируют, что человек не попадется на хорошо продуманную атаку. Злоумышленники постоянно меняют сценарии, поэтому знания, полученные однажды, быстро устаревают.При помощи эксперимента мы не только проверили, насколько сотрудники готовы распознавать атаки, но и поняли, как с помощью Phishman 2.35 можно сделать работу по развитию киберкультуры системной. Вместо отдельных курсов появился понятный цикл: смоделировать атаку, оценить реакцию, провести обучение и проверить, изменилось ли поведение участников. При необходимости — повторить или скорректировать процесс при помощи рекомендаций платформы. Результаты фиксируются автоматически, поэтому можно видеть, какие темы требуют больше внимания, и развивать киберкультуру на основе реальных данных, а не предположений.Читать далее
    • PR55.RP55
    • santy
      RP55, есть у тебя ТГ?
×