Назад | Перейти на главную страницу

Криминалистическая экспертиза тонны изменений файлов

Мне стало известно, что мой CentOS 5,6 5.11 VPS содержит более 16 000 файлов с отметками времени за 3-дневный период в сентябре этого года. Я не могу понять, почему это так, поскольку я не входил в систему через SSH в течение этого времени (и не было других входов, что было бы очень тревожным), и в Webmin нет записей о действиях в течение этого периода. Это единственные два способа, которыми я мог бы что-нибудь сделать, чтобы изменить системные файлы. Сервер работает нормально, но никто другой не должен иметь доступа (кроме хостера, конечно), поэтому я хочу знать, что происходит.

Я записал файлы с этими датами в файл следующим образом:

touch -t 201409160000 start.tmp
touch -t 201409190000 stop.tmp
find / -type f -newer start.tmp \! -newer stop.tmp -exec ls -la {} \; > sep-16-18.txt

Но что мне делать с этой информацией? Объем бешеный!

[root](21:05:55)[~]$ grep "Sep 16" -c sep-16-18.txt
6079
[root](21:06:30)[~]$ grep "Sep 17" -c sep-16-18.txt
2580
[root](21:06:40)[~]$ grep "Sep 18" -c sep-16-18.txt
7653

За весь остаток сентября было меньше 500 файлов, поэтому в середине месяца произошло нечто радикальное.

Почти все файлы были в /usr/ каталог:

/usr/:  16130
/lib/:     49
/sbin/:    49
/etc/:     45
/lib64/:   37
All others: 3

Но разбивка подкаталогов в / usr / довольно широко распространена по всем направлениям:

/usr/lib/:     6514
/usr/include/: 5109
/usr/share/:   3438
/usr/lib64/:    853
/usr/bin/:      105
/usr/sbin/:      61
/usr/libexec/:   36
/usr/kerberos/:  14

Возможно, файл с самой ранней меткой времени может пролить свет (возможно, он запустил каскад), но я не могу отсортировать find результаты по времени. Я мог бы неоднократно сбрасывать start.tmp и stop.tmp на все меньшие и меньшие периоды времени, повторно запускать find до тех пор, пока не получу разумное количество результатов, которые нужно просмотреть вручную, но я, вероятно, понятия не имел бы, на что смотрю - я В любом случае, я действительно не эксперт по Linux. Возможно, кто-нибудь даст мне несколько советов о том, какие «вопросы» я должен задавать своему серверу. Похоже, Linux переустановили или что-то в этом роде, но ...

ОБНОВИТЬ: Для тех, кто спрашивает, вот несколько первых файлов с отметками времени 16 числа. Первый кажется несвязанным, но затем, начиная с 15:04, в течение следующих нескольких минут более 5000 файлов были обновлены (или созданы, я полагаю):

1410846366 Tue Sep 16 14:46:06 2014 /etc/default/nss
1410847466 Tue Sep 16 15:04:26 2014 /usr/include/features.h
1410847466 Tue Sep 16 15:04:26 2014 /usr/include/gnu-versions.h
1410847466 Tue Sep 16 15:04:26 2014 /usr/include/limits.h
1410847466 Tue Sep 16 15:04:26 2014 /usr/include/values.h
1410847466 Tue Sep 16 15:04:26 2014 /usr/lib64/libc.so
1410847467 Tue Sep 16 15:04:27 2014 /usr/include/bits/xopen_lim.h
1410847467 Tue Sep 16 15:04:27 2014 /usr/include/gnu/libc-version.h
1410847467 Tue Sep 16 15:04:27 2014 /usr/include/gnu/lib-names.h
1410847467 Tue Sep 16 15:04:27 2014 /usr/include/gnu/stubs.h
1410847468 Tue Sep 16 15:04:28 2014 /usr/include/gconv.h
1410847468 Tue Sep 16 15:04:28 2014 /usr/include/iconv.h
1410847473 Tue Sep 16 15:04:33 2014 /usr/lib64/gconv/gconv-modules
1410847475 Tue Sep 16 15:04:35 2014 /usr/include/bits/locale.h
1410847475 Tue Sep 16 15:04:35 2014 /usr/include/langinfo.h
1410847475 Tue Sep 16 15:04:35 2014 /usr/include/locale.h
1410847475 Tue Sep 16 15:04:35 2014 /usr/include/xlocale.h
1410847476 Tue Sep 16 15:04:36 2014 /usr/share/i18n/charmaps/ANSI_X3.110-1983.gz
1410847476 Tue Sep 16 15:04:36 2014 /usr/share/i18n/charmaps/ANSI_X3.4-1968.gz
1410847476 Tue Sep 16 15:04:36 2014 /usr/share/i18n/charmaps/ARMSCII-8.gz
1410847476 Tue Sep 16 15:04:36 2014 /usr/share/i18n/charmaps/ASMO_449.gz

После этого продолжается некоторая длина символьных карт и файлов, связанных с локалью, затем больше включаемых файлов, затем после примерно 5500 файлов этого типа он делает небольшой перерыв перед другими файлами .so и другими вещами, которые выглядят довольно нормально. Это кому-нибудь говорит? Никто из того, что я видел в списке, не выглядел подозрительным; Я не эксперт, но это больше похоже на невинное обновление. Но я не знаю, как будет происходить обновление, кроме входа в оболочку или Webmin.

Этот вопрос скоро будет закрыт как дубликат Как мне поступить с взломанным сервером, и я думаю, что это ошибка, потому что очень правильный совет в этом вопросе - ядерная бомба на сервере и восстановление с заведомо исправных носителей. Тем не мение, нет абсолютно никаких доказательств того, что эта система была взломана.

OsakaWebbie, вы признали, что ошибались насчет версии ОС; система на 5.11. При этом все перечисленные вами файлы являются частью glibc-headers пакет, за исключением /usr/lib64/libc.so который является частью glibc-devel, пакет, который движется в ногу с glibc-headers и обычно строится одновременно.

Я бы сделал это на системе C5, но у меня ее нет под рукой. В современной системе C6 информация о glibc-headers является

[me@lory 2012]$ rpm -qi glibc-headers
Name        : glibc-headers                Relocations: (not relocatable)
Version     : 2.12                              Vendor: CentOS
Release     : 1.149.el6                     Build Date: Wed 15 Oct 2014 03:00:58 BST
Install Date: Fri 24 Oct 2014 20:42:04 BST      Build Host: c6b9.bsys.dev.centos.org
[...]

Обратите внимание на даты сборки и установки. Теперь посмотрим на рассматриваемые файлы:

[me@lory 2012]$ for file in `rpm -ql glibc-headers`; do ls -la $file ; done
[...]
-rw-r--r--. 1 root root 2416 Oct 15 02:44 /usr/include/gnu-versions.h
-rw-r--r--. 1 root root 3057 Oct 15 02:44 /usr/include/gnu/lib-names.h
-rw-r--r--. 1 root root 1337 Oct 15 02:44 /usr/include/gnu/libc-version.h
-rw-r--r--. 1 root root 315 Oct 15 02:44 /usr/include/gnu/stubs.h
-rw-r--r--. 1 root root 6991 Oct 15 02:44 /usr/include/grp.h
-rw-r--r--. 1 root root 4611 Oct 15 02:44 /usr/include/gshadow.h
-rw-r--r--. 1 root root 1949 Oct 15 02:44 /usr/include/iconv.h
-rw-r--r--. 1 root root 4990 Oct 15 02:44 /usr/include/ieee754.h
[...]

Обратите внимание на то, что все файлы имеют одну и ту же метку времени, и это за несколько минут до даты сборки, встроенной в RPM. Отсюда делаем вывод, что время модификации системного файла, управляемого RPM, - это время модификации, которое он имел в системе сборки, в которой был создан RPM; поскольку сборка происходит как монолитный процесс, вполне разумно, чтобы все файлы в RPM имели очень похожие mtimes, и действительно, что файлы в связанных пакетах также должны были иметь их, и что эти времена не будут соответствовать дате, когда пакеты были установлены.

Если вы можете подтвердить, что ваша система действительно находится на C5.10 / 5.11, вы можете перестать паниковать; вы не представили никаких доказательств того, что с вашей системой случилось что-то плохое.

редактировать: OsakaWebbie, вы подтвердили, что теперь система работает на 5.11, и я считаю, что это не проблема. Время изменения показанных вами файлов точно такое, как вы ожидаете.

Для справки - и очень важно, чтобы вы это понимали - C5.11 не является основным выпуском C5. C6 - это другой основной выпуск по сравнению с C5, но C5.11 - это просто полностью исправленный C5.6 (или любая другая версия C5). Ты можешь прочитайте об этом достаточно подробно в более раннем ответе, который я написал о версиях C / RH если хотите, но, по всей вероятности, вы довели систему до 5.11, когда сделали это yum update в конце сентября / начале октября. Вы можете подтвердить это с помощью grep centos-release /var/log/yum.log*, если хочешь.

Я собираюсь в основном C&P ответить на мой ответ от не связанный вопрос. Думаю, это лучший дом для него. Приведенные ниже инструкции предполагают, что вы уже выполнили инструкции для Как мне поступить с взломанным сервером? если это применимо. В случае сомнений всегда отключайте сетевой кабель.

find /filesystem1 /filesystem2 -xdev -printf '%T@ %t %p\n' | sort -n

%T@ Время модификации, эпохальные секунды (для сортировки)

%t Время модификации, читается человеком

%p Полный путь к файлу

Приправить по вкусу. Запускайте одновременно только одну смонтированную файловую систему или столько, сколько считаете нужным.

Это дает вам отсортированный по временным меткам аудит самых последних изменений файлов. Иногда это может дать вам представление о других вещах, которые происходили во время неизвестного события. Это, конечно, не пуленепробиваемое, и может вообще ничего не раскрывать, но я иногда нахожу это чрезвычайно полезным для определения того, какая работа выполнялась в то время, когда произошло неизвестное событие. (т.е. кто-то выполняет rm -Rf /lib вместо того rm -Rf lib)


В сторону:

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

  • Другая возможность (которую вам следует менее склонно рассматривать) - это невежественный администратор, запускающий жадный rsync из другой системы в эту. Вряд ли будет восстановление из архивной копии (ПО для резервного копирования, tarи т. д.), поскольку они, как правило, хороши для соблюдения оригинала mtime.

  • Если вы не можете этого понять, у вас нет другого выбора, кроме как рассматривать это как вторжение.