LINUX.ORG.RU
ФорумTalks

Параноя... Обнаружил у себя на жестком диске логи своей консоли


0

4

grep -a -b 'root@darkstar:~' /dev/<root_fs> | tee /home/suspected-root.log

Попробовал выполнить команду типа такой — то есть греп по постоянной части моего приглашения в консоли.
Логи консоли простого юзера тоже находит

И внезапно находятся логи консоли, причём именно логи с командами и результатами их выполнения... и ладно бы просто так, так ведь! эти блоки не соответсвуют никаким файлам, по крайней мерез debugfs не нашел.

Так как grep выводит оффсет. вот такой командой можно прочитать блок, где был лог: dd if=/dev/sda2 bs=4096 skip=$[<offset>/4096] count=5 > /home/suspected.sector.dd

Попытаться найти в файловой системе блок так:

debugfs /dev/<root_fs> -R «icheck $[<offset>/4096]»

С нормальными файлами вроде работает (попробуйте погрепать по содержимому текстового файла, который вы создали и потом через icheck и ncheck найти имя файла).

Теперь бы ещё узнать, кто их туда записывает.. Я надеюсь, что не руткит. Может быть временный файл от приложения-терминала. Но почему не получается определить файл?

★★★★★

Последнее исправление: Xenius (всего исправлений: 2)

Проверил у себя, ничего подозрительного не обнаружено. Только почта, море не прочтенной почты с отсчетами :3
[fat]Это все Гугл хром очевидно же

anonymous_sama ★★★★★
()
Ответ на: комментарий от geekless

Понимаешь ли.
Даже если это так то это все равно невероятного размера баг, это раз.
Т.к в /tmp не должна помещаться настолько важная информация как полные (!) логи юзера.
Во вторых я уже переместил /tmp в память, перезагрузил комп.

А теперь я могу найти свои логи того, что я только что делал в консоли от рута.

Ещё интересный момент: моя корневая система на SSD.

winddos ★★★
()
Ответ на: комментарий от feinsbot

Сначало прочитал:

с:/

Ну и не ответил.

Я не думал, что дело только в /tmp, тут все намного глубже зарыто.
Сейчас перезагружусь ещё разик для чистоты эксперимента.

winddos ★★★
()
Ответ на: комментарий от winddos

Даже если это так то это все равно невероятного размера баг, это раз.
Т.к в /tmp не должна помещаться настолько важная информация как полные (!) логи юзера.

Даже если перехватить дескриптор файла, пока он не удалён, к нему наверняка всё равно никто, кроме самого пользователя, не имеет доступа. В чем баг?

Но найти, кто пишет эти файлы, конечно, очень интересно. Т.к. это крайне необычно.

Во вторых я уже переместил /tmp в память, перезагрузил комп.
А теперь я могу найти свои логи того, что я только что делал в консоли от рута.

А что находится на том разделе, откуда ты их грепаешь? Я имею ввиду — из доступных на запись каталогов.

geekless ★★
()
Ответ на: комментарий от winddos

Да, если кому интересно:
Находит НЕ только локальные логи bash, но и логи работы на ssh.

winddos ★★★
()
Ответ на: комментарий от geekless

Находится корень, исключая /var /home и /tmp (теперь).

Вообще у меня на ноуте корневая ФС шифрована, и на старом компе тоже.
А здесь я поленился и не сделал, больше никогда не буду ленится шифроваться.

winddos ★★★
()
Ответ на: комментарий от geekless

В чем баг?

Баг в том, что у меня директория пользователя шифрованная.
А эти логи пишутся непонятно кем и куда.

swap в новых убунтах по дефолту идет зашифрованный, например. И шифруется он одноразовым ключем.

winddos ★★★
()
Ответ на: комментарий от winddos

Находится корень, исключая /var /home и /tmp (теперь).

Мистика какая-то. Я начинаю верить в неведомых руткитов и черную магию.

geekless ★★
()
Ответ на: комментарий от anonymous_sama

Ну это очевидно потому, что у тебя достаточно оперативки :)
Вот например в swap файле playstation 3 была куча всего интересного...

winddos ★★★
()
Ответ на: комментарий от geekless

Ну по поводу логов рута: my bad, это не то, это просто был bash_history рута который лежит там где должен лежать.
В общем /tmp унесено подалее в оперативку, поэтому завтра я смогу проверить нет ли ничего новенького на диске.

Ну и надо посмотреть что баш мог писать в /tmp.

winddos ★★★
()
Ответ на: комментарий от winddos

консоль хранит весь вывод (он ведь легко проматывается назад при необходимости) причем именно весь. возможно для экономии оно делает это на диск.

psv1967 ★★★★★
()
Ответ на: комментарий от router

Пока собираю дамп обращений к диску через blktrace, но предварительный вывод - гадит именно gnome-terminal. В его открытых файловых дескрипторах много треша в /tmp:

router@amalthea:~$ ls -l /proc/2791/fd/
итого 0
lr-x------ 1 router router 64 Дек 28 22:16 0 -> /dev/null
lrwx------ 1 router router 64 Дек 28 22:16 1 -> /home/router/.xsession-errors
lr-x------ 1 router router 64 Дек 28 22:16 10 -> pipe:[13614]
l-wx------ 1 router router 64 Дек 28 22:16 11 -> pipe:[13614]
[...]
lrwx------ 1 router router 64 Дек 28 22:16 2 -> /home/router/.xsession-errors
lrwx------ 1 router router 64 Дек 28 22:16 20 -> /dev/ptmx
lrwx------ 1 router router 64 Дек 28 22:16 21 -> /tmp/vteP4U66V (deleted)
lrwx------ 1 router router 64 Дек 28 22:16 22 -> /tmp/vteY0U66V (deleted)
lrwx------ 1 router router 64 Дек 28 22:16 23 -> /tmp/vteYXU66V (deleted)
lrwx------ 1 router router 64 Дек 28 22:16 25 -> /tmp/vteTW3R6V (deleted)
lrwx------ 1 router router 64 Дек 28 22:16 26 -> /tmp/vte6UES6V (deleted)
lrwx------ 1 router router 64 Дек 28 22:16 27 -> /tmp/vteCTES6V (deleted)
lrwx------ 1 router router 64 Дек 28 22:16 28 -> /tmp/vteSP596V (deleted)
lrwx------ 1 router router 64 Дек 28 22:16 29 -> /tmp/vteXK596V (deleted)
router ★★★★★
()
Ответ на: комментарий от redixin

Похоже, что гадят любые терминалы, использующие vte:

$ strace terminal |& grep 'tmp'
connect(3, {sa_family=AF_FILE, path=@"/tmp/dbus-qzIVGC3jsS"}, 23) = 0
connect(4, {sa_family=AF_FILE, path=@"/tmp/.X11-unix/X0"}, 20) = 0
getpeername(4, {sa_family=AF_FILE, path=@"/tmp/.X11-unix/X0"}, [20]) = 0
connect(6, {sa_family=AF_FILE, path=@"/tmp/dbus-qzIVGC3jsS"}, 23) = 0
open("/tmp/vteBCKV6V", O_RDWR|O_CREAT|O_EXCL|O_LARGEFILE, 0600) = 13
unlink("/tmp/vteBCKV6V")                = 0
open("/tmp/vte0TJV6V", O_RDWR|O_CREAT|O_EXCL|O_LARGEFILE, 0600) = 13
unlink("/tmp/vte0TJV6V")                = 0
open("/tmp/vteUQIV6V", O_RDWR|O_CREAT|O_EXCL|O_LARGEFILE, 0600) = 13
unlink("/tmp/vteUQIV6V")                = 0
write(15, "/etc/tmpfiles.d\n", 16)      = 16
open("/tmp/vteNA196V", O_RDWR|O_CREAT|O_EXCL|O_LARGEFILE, 0600) = 13
unlink("/tmp/vteNA196V")                = 0
open("/tmp/vte7B096V", O_RDWR|O_CREAT|O_EXCL|O_LARGEFILE, 0600) = 13
unlink("/tmp/vte7B096V")                = 0

xterm и urxvt не гадят.

geekless ★★
()
Ответ на: комментарий от redixin

мда, а ведь ты прав...
Правда ничего особенного не происходит т.к пишет он в /tmp.

lsof выдал целую кучку файлов которые он открыл.
И там куча таких:
/tmp/vte2MH26V
/tmp/vteVX3Y6V

winddos ★★★
()
Ответ на: комментарий от geekless

Уже понял.
Да и файла по сути не существует, только его дескриптор, если я правильно все это понимаю.
Так или иначе это намек на то, что диск надо всегда шифровать целиком, ибо...

winddos ★★★
()
Ответ на: комментарий от winddos

А через любой дескриптор можно обратиться к файлу, используя /proc :

$ ls -l /proc/`pgrep terminal`/fd/
итого 0
lrwx------ 1 vadim vadim 64 дек.  29 02:46 0 -> /dev/null
lrwx------ 1 vadim vadim 64 дек.  29 02:46 1 -> /dev/null
l-wx------ 1 vadim vadim 64 дек.  29 02:46 10 -> pipe:[135666]
lrwx------ 1 vadim vadim 64 дек.  29 02:46 11 -> socket:[307070]
lrwx------ 1 vadim vadim 64 дек.  29 02:46 12 -> /tmp/vteP6H46V (deleted)
lrwx------ 1 vadim vadim 64 дек.  29 02:46 13 -> /tmp/vte32H46V (deleted)
lrwx------ 1 vadim vadim 64 дек.  29 02:46 14 -> /tmp/vte6VH46V (deleted)
lrwx------ 1 vadim vadim 64 дек.  29 02:46 15 -> /tmp/vteD6T96V (deleted)
lrwx------ 1 vadim vadim 64 дек.  29 02:46 16 -> /tmp/vteN1T96V (deleted)
lrwx------ 1 vadim vadim 64 дек.  29 02:46 17 -> socket:[499760]
lrwx------ 1 vadim vadim 64 дек.  29 02:46 18 -> /tmp/vteCLW76V (deleted)
lrwx------ 1 vadim vadim 64 дек.  29 02:46 19 -> /tmp/vte0LW76V (deleted)
lrwx------ 1 vadim vadim 64 дек.  29 02:46 2 -> /dev/null
lrwx------ 1 vadim vadim 64 дек.  29 02:46 20 -> /tmp/vteR1V76V (deleted)
lrwx------ 1 vadim vadim 64 дек.  29 02:46 3 -> socket:[135016]
lrwx------ 1 vadim vadim 64 дек.  29 02:46 4 -> anon_inode:[eventfd]
lrwx------ 1 vadim vadim 64 дек.  29 02:46 5 -> socket:[135630]
lrwx------ 1 vadim vadim 64 дек.  29 02:46 6 -> /dev/ptmx
lrwx------ 1 vadim vadim 64 дек.  29 02:46 7 -> /dev/pts/8
lrwx------ 1 vadim vadim 64 дек.  29 02:46 8 -> socket:[135632]
lr-x------ 1 vadim vadim 64 дек.  29 02:46 9 -> pipe:[135666]

geekless ★★
()
Ответ на: комментарий от geekless

Ну так или иначе читать эту информацию может только тот у кого права есть.
Но подход к хранению временной информации очень странный...

winddos ★★★
()
Ответ на: комментарий от geekless

Да, с blktrace я немного промахнулся :) Даёт много информации, но от полученного номера блока к pid'у я так и не дошёл. strace в этом случае оказался гораздо полезнее

router ★★★★★
()
Ответ на: комментарий от winddos

Странный - мягко говоря. Мечта фбр. Кто-то из подобных контор однозначно коммитил код :D

Открывает файл, тут же удаляет его, чтобы никто не догадался, а по открытому дескриптору спокойно пишет. В результате диск забит шпионскими логами.

Получается, единственный выход - выносить /tmp в память

router ★★★★★
()
Ответ на: комментарий от router

Теперь самое интересное заключается в том, какой сакральный смысл был хранении хистори таким уникальным методом :)

winddos ★★★
()
Ответ на: комментарий от winddos

Смысл - чтоб не выпендривались со своей кулхацкерской осью. Надо будет - правильные парни прочитают диск и нежно ухватят за МТС

router ★★★★★
()

Кто запилит отчёт в багтрекер своего дистрибутива? Ну и новость на opennet, а то мужики-то не знают

router ★★★★★
()
Ответ на: комментарий от mopsene

какой командой? какой оффсет?

dd, 284633.

Я имел ввиду всю команду целеком и оффсет в байтах... Ты же говоришь 0 блоков — значит что-то не так написал

Только несколько блоков снял при помощи dd, вот что получилось

Видимо ошибка в команде. Или как вариант пробуй пропускать через strings

Xenius ★★★★★
() автор топика
Ответ на: комментарий от winddos

А теперь я могу найти свои логи того, что я только что делал в консоли от рута.

Какой эмулятор терминала?

Xenius ★★★★★
() автор топика
Ответ на: комментарий от geekless

А через любой дескриптор можно обратиться к файлу, используя /proc

Так ты пробовал посмотреть содержимое этих файлов (вроде через /proc можно восстанавливать открытые удалённые файлы)? Это действительно логи или нет?

Xenius ★★★★★
() автор топика
Ответ на: комментарий от Xenius

gnome-terminal
Но запускаемый через питоновский terminator.

winddos ★★★
()
Ответ на: комментарий от Xenius

Да это действительно полный вывод консоли.
Оно создает эти файлы, получает их дескриптор, и моментально удаляет.
Но продолжает в них писать и читать их через дескриптор.

Как и написано выше:
ls -lia /proc/[PID]/fd/
Сможешь увидеть весь список файлов куда в текущий момент пишет терминал.

winddos ★★★
()
Ответ на: комментарий от winddos

Оно создает эти файлы, получает их дескриптор, и моментально удаляет.

Но зачем? Было бы логичней создавать их в /tmp/vte и удалять при завершении программы.

Хотя может быть это они для того что бы если прогу убьют через kill -9, в /tmp не осталось мусора?

Xenius ★★★★★
() автор топика
Ответ на: комментарий от Xenius

Хотя может быть это они для того что бы если прогу убьют через kill -9, в /tmp не осталось мусора?

Да. Вероятнее всего.

geekless ★★
()
Ответ на: комментарий от Xenius

Самый юмор в том, что с этой «фичей» любая программа без проблем будет шпионить за терминалом, просто поключившись через tail -f к дескриптору в /proc/<pid>/fd/. Тут даже перенос в tmpfs не поможет.

Пора изучать selinux

router ★★★★★
()
Ответ на: комментарий от router

Тут даже перенос в tmpfs не поможет.

Зато поможет неиспользование терминалов на vte плюс запуск каждой программы от отдельного юзера...

Xenius ★★★★★
() автор топика
Ответ на: комментарий от Xenius

плюс запуск каждой программы от отдельного юзера...

Как ты себе это представляешь? Может ещё на QubesOS перейти? :)

router ★★★★★
()
Ответ на: комментарий от router

Может ещё на QubesOS перейти? :)

Почему так негативно настроен к идее?
Тебе часто надо руками лезть в конфиги IM клиента, браузера.
Часто надо их копировать?

Я вот какое то время сидел на системе, где каждый браузер работает в своем chroot окружении.
Несколько месяцев назад осилил Apparmor для всех сетевых преложений и рад.
Ничего не глючит, не тормозит, и не имеет право читать/писать никуда кроме заданных мной директорий.

winddos ★★★
()
Ответ на: комментарий от router

Как ты себе это представляешь? Может ещё на QubesOS перейти? :)

Ну хотя бы браузер можно запускать от отдельного юзера, плюс IM-клиенты.

В общем, те, которые работают с интернетом.

Может ещё на QubesOS перейти? :)

А почему нет?

Xenius ★★★★★
() автор топика
Ответ на: комментарий от Xenius
linux-1cxy:/home/mopsene # dd if=/dev/sda2 bs=4096 skip=$284633 count=1 > /home/suspected.sector.dd
1+0 записей считано
1+0 записей написано
скопировано 4096 байт (4,1 kB), 0,00751888 c, 545 kB/c

Как теперь правильно ее снимать? Я делал так:

linux-1cxy:/home/mopsene # dd if=/home/suspected.sector.dd of=/dev/stdout bs=4096 count=1
mopsene ★★★
()
Ответ на: комментарий от geekless

Да нет принципиальной разницы какая именно архитектура и ограничения.
Важно просто чтобы софт не имел доступа к той информации, которая в штатной ситуации ему не нужна.

Ну и мандатные системы конечно намного удобнее чем chroot, только вот настраивать надо под каждую софтину персонально (чруты можно 100% автоматом генерить).

winddos ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.