Доброго времени прочтения, уважаемые читатели Хабра.
Сразу хочу сказать — я не являюсь специалистом в области компьютерной безопасности или криминалистического анализа, не имею криминального опыта или побуждений, мамой клянусь, век воли не видать.
Побуждением к изысканиям, опубликованным в данной статье, стало желание разобраться в вопросе, встретившемся в Интернете «откуда у утилиты NirSoft LastActivityView данные и как с ними бороться». Если чуть более глобально – какие данные о цифровой жизнедеятельности пользователя собирает ОС Windows и можно ли их удалить. В смысле данные удалить, а не пользователей.
В данной статье рассматривается ОС Windows 10. Другие выпуски Windows, естественно, так же грешны сбором данных, но у них ключи реестра, системные службы и т.п. могу отличаться.
Сначала попробуем понять, какие данные можно получить с использованием общедоступных средств. А за желаемый результат наших телодвижений примем удаление этих данных.
Анализ
Проведем быстрый «криминалистический анализ» на коленке, с помощью великолепных утилит NirSoft:
1. LastActivityView (история активности пользователя)
2. ExecutedProgramsList (история запуска программ)
3. ShellBagsView, MUICacheView, UserAssistView (другие истории, но с тем же «хеппи эндом»)
4. JumpListsView (список переходов)
5. OpenSaveFilesView (история открытия и сохранения файлов)
6. RecentFilesView (недавние файлы)
7. WinPrefetchView (оптимизация программ для ускорения их запуска)
Дабы не скачивать утилиты в розницу — можно скачать оптом NirSoft Launcher (при скачивании обратите внимание, что zip-файл запаролен, пароль есть на этой страничке).
Все утилиты отличаются высокой производительностью и крайней простотой использования, любой любитель вычислять по IP — пришел-запустил-увидел-посадил-настучал-уволил-удивил… кого-то… своими познаниями в его неприкосновенной частной жизни. Первая же утилита LastActivityView — возвращает внушительную историю активности. Серди прочего, неиллюзорно доставляет список доступа к папкам со времен установки Windows.
Остальные утилиты тоже дают массу интересной информации.
Так же, с этой точки зрения, интересные еще две утилиты:
FullEventLogView — отображает записи журналов Windows. Но эти данные вполне полезные для анализа работы компьютера, не говоря уж о том, что сис. админ на работе не слишком обрадуется их удалению.
USBLogView — история подключения usb-девайсов. С помощью этой утилиты можно историю и удалить, но, после этого, для каждого «удаленного» и вновь подключенного девайса Windows будет заново устанавливать драйвера, да и usb-клавиатуру может начать ломить и usb-мышь может отваливаться, до перезагрузки компьютера.
И еще одна инновация от Microsoft — служба Background Activity Moderator.
Запиленная в Windows 10 начиная, если не ошибаюсь, с версии 1709. Обратил я внимание на нее случайно, при поиске логов в реестре, и внятной информации по ней так и не нашел, кроме вот этой статьи. Из которой следует, что это логи новой службы Background Activity Moderator (BAM). Правда, хранятся эти логи до перезагрузки компьютера (что подтвердилось проверкой), но все же не комильфо. Особо умилили результаты такого эксперимента: запускаем любимый многими TrueCrypt (protable), монтируем файл-контейнер, запускаем из него LastActivityView.
Видим в реестре потрясающую запись:
доставляющую неслабый когнитивный диссонанс своей откровенностью «TrueCryptVolumeK», до чего, по-моему, еще ни одна логгирующая служба не додумалась. В остальных логах, хотя бы правоверно «K:lastactivityview.exe»
Так откелева, доколе и что с этой бедой поделать?
Откелева — чудес, как известно, не бывает. Или бывают, но не в IT и до того момента, пока все не окажется просто, ясно и понятно. И, на наше счастье, с выходом Windows 10, количество мест, в которых происходят чудеса, вроде бы не сильно изменилось: реестр, журналы, служебные файлы и папки Windows.
Доколе — до перехода на Linux. Или до удаления этих данных из системы. Правда, они начнут набираться по новой, до следующей их очистки.
Что с этой бедой поделать — на данный вопрос попробую ответить так же, как и анализ провели, пока что «на коленке». Т.е. пока что в виде bat-файла. Заодно из него будет ясно, откуда это все берется. А после его выполнения можно снова запустить утилиты NirSoft-а и посмотреть, что оно браться перестало (удаление истории USB в него, пока что, не добавил, используйте USBLogView на свой страх и риск). Так же следует помнить, что копии системных файлов, в т.ч. файлов реестра, сохраняются в точках восстановления Windows, архивах восстановления системы и теневых копиях и данным скриптом, в текущий момент, не удаляются.
Дисклеймер. На текущий момент — это «альфа» версия, она работает у меня на Windows 10 x64, ничего не сломала, но на других компьютерах не проверял, т.к. предполагаю ваши комментарии, критику и уточнения, на основе которых можно будет это исправить, дополнить и оформить в виде программы, например, на C#, с пополняемой коллекцией действий по очистке. В текущем варианте используйте на свой страх и риск.
Как использовать?
1. Создаем, на компьютере текстовый файл, например с помощью nodepad++, в кодировке OEM 866 (DOS). Кодировка важна, иначе вместо русских букв, могут быть кракозябры. Копируем в него текст, приведенный ниже и сохраняем.
2. Запускаем от имени администратора (иначе выдаст ошибку «Необходимо запустить этот скрипт от имени администратора»).
3. Далее будет предложены два варианта: «Очистка логов» и «Очистка логов и всех журналов Windows». Тут уж на ваше усмотрение. Учтите, что журналы будут очищены вообще все, а не только основные.
4. Если каких-то ключей реестра или папок нет, скрипт должен это действие пропустить.
Прощу прощения, подсветки batch-файлов не нашел.
:: ClearLogs. Версия 1 Alpha
@ECHO OFF
:: Надеюсь, сохранить файл в кодировке dos-866 не забыли
CHCP 866
:: Зеленый на черном - интригующе... опять же, хакеры и все такое
COLOR A
CLS
:: Проверка на наличие прав администратора
FOR /F "tokens=1,2*" %%V IN ('bcdedit') DO SET adminTest=%%V
IF (%adminTest%)==(Отказано) GOTO errNoAdmin
IF (%adminTest%)==(Access) GOTO errNoAdmin
:: Меню
ECHO.
ECHO 1 - Очистка логов
ECHO 2 - Очистка логов и всех журналов Windows
ECHO или нажмите ENTER для выхода
ECHO.
SET /p doset="Выберите действие: "
ECHO.
:: Проверка выбора пользователя (если не 1 и не 2 - выход)
IF %doset% NEQ 1 (
IF %doset% NEQ 2 EXIT
)
:: Очистка всех журналов Windows, если пользователь выбрал 2. Проводим сначала, чтоб в логах не осталось вызовов wevtutil
IF %doset% EQU 2 (
ECHO.
ECHO ОЧИСТКА ВСЕХ ЖУРНАЛОВ Windows
FOR /F "tokens=*" %%G in ('wevtutil.exe el') DO (call :do_clear "%%G")
ECHO.
ECHO Выполнено
ECHO.
)
:: Shell
ECHO.
ECHO ОЧИСТКА КЕША Shell (реестр)
REG DELETE "HKEY_CURRENT_USERSoftwareClassesLocal SettingsSoftwareMicrosoftWindowsShellMuiCache" /va /f
REG DELETE "HKEY_CURRENT_USERSoftwareClassesLocal SettingsSoftwareMicrosoftWindowsShellBagMRU" /f
REG DELETE "HKEY_CURRENT_USERSoftwareClassesLocal SettingsSoftwareMicrosoftWindowsShellBags" /f
ECHO.
:: Explorer
ECHO.
ECHO ОЧИСТКА КЕША Explorer (реестр)
REG DELETE "HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionExplorerRunMRU" /va /f
ECHO.
:: ComDlg32
ECHO.
ECHO ОЧИСТКА КЕША ComDlg32 (реестр)
REG DELETE "HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionExplorerComDlg32FirstFolder" /va /f
REG DELETE "HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionExplorerComDlg32LastVisitedPidlMRU" /va /f
REG DELETE "HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionExplorerComDlg32LastVisitedPidlMRULegacy" /va /f
:: Пересоздание ключа с удалением вложенных ключей
REG DELETE "HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionExplorerComDlg32OpenSavePidlMRU" /f
REG ADD "HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionExplorerComDlg32OpenSavePidlMRU"
ECHO.
:: SID текущего пользователя
FOR /F "tokens=2" %%i IN ('whoami /user /fo table /nh') DO SET usersid=%%i
ECHO.
ECHO ОЧИСТКА КЕША службы Background Activity Moderator (реестр)
REG DELETE "HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesbamUserSettings%usersid%" /va /f
REG DELETE "HKEY_LOCAL_MACHINESYSTEMControlSet001ServicesbamUserSettings%usersid%" /va /f
ECHO.
ECHO.
ECHO ОЧИСТКА КЕША Assistant (реестр)
REG DELETE "HKEY_USERS%usersid%SoftwareMicrosoftWindows NTCurrentVersionAppCompatFlagsCompatibility AssistantStore" /va /f
REG DELETE "HKEY_USERS%usersid%SoftwareMicrosoftWindows NTCurrentVersionAppCompatFlagsLayers" /va /f
ECHO.
ECHO.
ECHO ОЧИСТКА КЕША Prefetch (файловая система)
DEL /f /q %systemroot%Prefetch*.pf
DEL /f /q %systemroot%Prefetch*.db
DEL /f /q %systemroot%PrefetchReadyBoot*.fx
ECHO Выполнено
ECHO.
ECHO.
ECHO ОЧИСТКА КЕША Minidump (файловая система)
DEL /f /q %systemroot%Minidump*.*
ECHO Выполнено
ECHO.
ECHO.
ECHO ОЧИСТКА КЕША Recent (файловая система)
DEL /f /q %APPDATA%MicrosoftWindowsRecent*.*
DEL /f /q %APPDATA%MicrosoftWindowsRecentCustomDestinations*.*
DEL /f /q %APPDATA%MicrosoftWindowsRecentAutomaticDestinations*.*
ECHO Выполнено
ECHO.
PAUSE
EXIT
:do_clear
ECHO Очистка журнала %1
wevtutil.exe cl %1
GOTO :eof
:errNoAdmin
COLOR 4
ECHO Необходимо запустить этот скрипт от имени администратора
ECHO.
PAUSE
Источники:
1. Утилита Procmon из состава SysinternalsSuite имени Марка Руссиновича, c которой нередко все тайное — становится явным… В том числе и куда обращаются утилиты NirSoft.
2. Статьи блога SANS Digital Forensics.
3. Статья очистка журналов Windows.
Автор: рыцарь со стволом