usbrip: USB-форензика для Линуксов, или Как Алиса стала Евой
@webwareНедавно стал сторонним наблюдателем душераздирающей драмы, поводом для которой послужило, увы, мое пристрастие к распутыванию различного рода загадок и головоломок.
Краткий очерк того, что здесь будет происходить (дабы незаинтересованные сразу могли покинуть тред): около 2-х недель назад ко мне обратился знакомый (далее "Боб") с просьбой о помощи в доказательстве факта измены своей подруги (далее "Алиса"), апеллируя к тому, что "ты ж программист". Согласен, довольно необычный аргумент в такой ситуации, но технари же всесильны, разве нет? Конечно, я согласился, ибо предстояло интересное расследование компьютерной активности в поисках аномальных следов любовника на ноутбуке подруги друга (заковыристо!), что обещало хоть как-то разбавить мои серые буди. В этой статье поговорим об опенсорсной утилите usbrip, написанной энтузиастом-соотечественником (насколько я могу судить по профилюна Гитхабе) для мониторинга истории USB-подключений под Линуксами, моем опыте ее использования и применения к "боевым" задачам.
Предыстория событий
Явился ко мне, значит, Боб и говорит, мол, чувствую я, что моя мне изменяет: романтика ушла, задерживаться после работы стала и т. д. Сказал, что недавно ездил в командировку и уверен, что, если его догадки коррелируют с истиной, то уж в эти дни точно должно было произойти что-то такое, что послужит прямым доказательством ее вины. На мой ответ, что я не сыскное агентство, он объяснил, почему обратился ко мне: расследование-то, оказалось компьютерным! "Эва как, брат...", – подумал я, и проследовал к ним на квартиру смотреть на злосчастный подругин лэптоп (ее, конечно, в тот момент дома не было).
Не являясь профессиональным форензиком (да и даже любителем, наверно), сначала не представлял, за что браться. Истории браузеров чистятся элементарно даже технически неподкованными людьми (и то необходимость появляется, только если пренебрегать использованием инкогнито-режимов), искать фотки, разную мультимедию тоже глупо, да и пока не понятно было, что вообще я искал (+ не факт, что кто-то посторонний взаимодействовал бы с ноутбуком в принципе).
В какой-то момент меня осенило: каждый раз, когда я бывал у этой пары, Алиса оставляла заряжать свой телефон от ноутбука. Не знаю, чем вызвано столь необычное увлечение (странно, но розеток в пределах досягаемости я у них тоже не видел, может поэтому), но случалось это регулярно. "Это может сыграть мне на руку", – подумал я, забрал с собой системные логи (с разрешения друга, естественно) и благополучно ушел для анализа дампов во-свояси.
(Отвечаю на немой вопрос, который, думаю, появился у большинства из вас: да, мне тоже непонятно, почему у Алисы, не связанной со сферой айти, стоит Убунту на домашнем ноутбуке. Приятеля я допытовать по этому поводу не стал, но предположу, что так было дешевле при покупке, а ставить привычные Окна – руки не дошли. Одна из версий.)
Дома
Итак, в моем распоряжении оказалось 8 syslog'ов (/var/log/syslog
, /var/log/syslog.1
, /var/log/syslog.2.gz
, ..., /var/log/syslog.7.gz
), в которых предположительно кроется убийца измена. Как будем искать? Писать собственный парсер ради такого случая было сильно лень, да и время не позволяло, а ручками grep'ать каждый лог – замучаешься, поэтому было принято волевое решение, спросить у Гугла. Гугл посоветовал утилиту, под названием usbrip, написанную на питоне третьей версии. "Почему нет", – решил я, да и репозиторий чувака выглядел K P A C N B O.
Далее об установке и использовании.
Использование
Юзать софтину будем из portable режима. Нам вполне хватит его функционала, хотя автор предлагает установщик, который автоматизирует процесс резолва нужных зависимостей для Пайтона и хардкодит прогу в систему (деинсталлятор также прилагается).
По умолчанию все команды будем выполнять из домашнего каталога. Для начала подготовим виртуальную среду и поставим нужные пакеты (работаю под Kali, так что промпт терминала в листингах тоже будет Kali'вский за исключением того, что #
заменю на $
, чтобы маркдаун не блочил хайлайт синтаксиса bash'а):
# При необходимости установим менеджер виртуальных окружений root@kali:~$ apt install python-virtualenv # Создадим и активируем виртуальное окружение root@kali:~$ virtualenv -p python3 usbrip-venv root@kali:~$ . usbrip-venv/bin/activate # Установим необходимые зависимости (2 пакета) (usbrip-venv) root@kali:~$ pip install terminaltables termcolor # Загрузим софтину и сменим директорию (usbrip-venv) root@kali:~$ git clone https://github.com/snovvcrash/usbrip.git usbrip && cd usbrip
Для начала проверим работоспособность:
(usbrip-venv) root@kali:~/usbrip$ python3 usbrip.py banner
Если в итоге получили симпатичный баннер тулзы, можно мучить дальше:
Мы будем пользоваться лишь одной функцией утилиты (к моему удивлению, этого оказалось достаточно), а именно – events history
:
root@kali:~/usbrip$ python3 usbrip.py events history -e -d "May 23" "May 24" "May 25" "May 26" "May 27" "May 28" "May 29" -f <СПИСОК_СИСЛОГОВ_ДЛЯ_АНАЛИЗА>
Этим действием я попросил все внешние USB-устройства, подключенные к данному лэптому в период за 23.05-29.05. Конечно, вид команды, приведшей к нужному результату (обличению злодея), был получен методом проб и ошибок, и вам я представляю только конечный вариант. Почему выбран именно такой временной отрезок, будет сказано ниже.
Прошу обратить внимание, что я выполнил установку, поэтому могу запускать прогу откуда угодной из терминала (устанавливал, потому что покопался в ней несколько дольше, чем планировал, но для описываемого таска вполне достаточно портативного режима). В итоге я получил следующую картину:
Пока не обращаем внимание на выделенную область. Проанализируем полученную таблицу, отражающую, какие внешние устройства подключались к ноутбуку Алисы за указанный промежуток времени (кстати, добрались до имени пользователя, и это забавно, потому что девушку на самом деле зовут Алиса ).
Очевидны следующие паттерны:
- Каждое утро (перед работой?) Алиса подключает к ноутбуку флешку
Silicon Power 16 Gb
, затем отключает примерно через 5 минут. - В вечернее время (после работы?) Алиса подключает свой айфон на зарядку к ноутбуку примерно на 4 часа (но иногда забывает и оставляет до утра).
- В вечернее время (ближе ко сну?) Алиса подключает жесткий диск
Seagate BUP Slim SL
примерно на 2,5 часа (смотрит кино/сериал?). - НЕОЖИДАННО 27-го мая к ноутбуку Алисы в 20:25:02 по МСК подключается Ведроид Сосунг
SAMSUNG Android
к шине3-2
примерно на 7 часов (выделено страшным красным прямоугольником).
После собранной информации позвонил другу с рассказом, и после разговора картина прояснилась от начала до конца.
Реконструкция событий в период с 23.05 по 29.05
Алиса работает на пол ставки: 23-е, 24-е, 25-е мая 2018 года (среда, четверг и пятница соответственно) были ее рабочими днями. Каждое утро перед работой Алиса подключает свою компактную дамскую флешку Silicon Power
, которую носит на брелоке на ключах, для формирования плейлиста на грядущий день. На это ей требуется около пяти минут. После этого она работает-на-работе, слушает музыку со своей флешки, приходит домой, загружает ноутбук и ставит свой айфон (с серийным номером USB-модуля 3a134be282ddc846b794fc83f2a53a6245620b06
) на зарядку. Далее, по желанию, она действительно может посмотреть серию-другую-третью "13 причин почему" (хз, что это, говорят сериал такой...).
Теперь о том, что происходило в следующие дни: 25-го мая, как можно видеть из логов, ритуал завершился не полностью. Причиной тому стала внезапная пятница и поход отмечать грядущую командировку друга (уехал днем 26-го, приехал вечером 28-го) шумной компанией в бар после работы. Как следствие, 26-го мая пара вернулась домой только к часу ночи, в чем можно убедиться по логу загрузки флешки Jetflash Mass Storage Device
, которую Алисе дала её подруга, чтобы та скинула себе фотки. После этого Алиса по традиции поставила айфон на зарядку, пара попыталась посмотреть фильм с винчестера Seagate BUP Slim SL
, но, видимо, попытки не увенчались успехом, т. к. оба устройства были отключены от компьютера только утром в районе 11-ти часов.
Потом Боб во второй половине дня уехал в командировку, Алиса его благополучно проводила и... пропала до 20:16:13, когда вместе со своим айфоном на зарядку был поставлен SAMSUNG (отключенный впоследствии лишь поздно ночью). После "разговора на чистоту" Боба с Алисой было выяснено, что да, действительно после того, как Боб уехал в командировку, на квартиру пришел злостный обладатель самсунга (у-у-ух, никогда их не долюбливал), пробыл там всю ночь, и уехал только 28-го мая после обеда. Одновременно с Алисой, которая, в свою очередь, отправилась встречать благоверного в аэропорт. Боб с Алисой вернулись домой к полуночи (когда календарь уже перелистнул страничку на 29 мая), когда девушка вновь поставила свой айфон на зарядку.
Последующие дни шли согласно устоявшимся ритуалам Алисы: флешка – утром, айфон и жд – вечером. И все бы ничего, если бы идиллию не разрушил злостный Я. Хотя мне не стыдно.
(Конечно, все точечные детали, описанные выше, были получены после разговора с Бобом, угадывать события прошлого по syslog'ам прога не умеет).
Пара слов о программе
Интересное замечание: если бы Боб выполнил установку этой утилиты заранее на компьютер девушки, задал список доверенных USB-устройств и настроил запуск проги по crontab'у (что, кстати, подробно описано в репозитории), возможно, ему не потребовалось бы вмешивать в свой семейные распри посторонних (aka меня), ибо посмотреть "нарушителей" можно было бы спокойно самому. Такие дела.
Конечно, как мне видится, такой функционал в программе изначально закладывался для отслеживания выполнений корпоративных политик в офисах (работающих на Линуксах), но теперь автор может указать еще один способ применения блока violations
у себя в README
Итого
Пара рассталась, сердце Боба разбито, Алиса на самом деле оказалась злостной Евой, моя верная возлюбленная (теперь я, к слову, умею проверять на верность, так что аккуратней, дорогая) пожала плечами, а я добавил в коллекцию интересную форензик-тулзу.
Suum cuique
Благодарю за внимание.
Links
- (репозиторий) snovvcrash/usbrip
- (статья на Хабре про инструмент) Linux-форензика в лице трекинга истории подключений USB-устройств