LINUX.ORG.RU

Замена бинариков при взломе


0

0

Вопрос вот в чем - какие бинарники меняют при взломе? Есть идея - отслеживать изменения, и, если они произошли - ложить инет для машины.

ls, ps, netstat, lsattr - первое, что приходит в голову... еще что?

anonymous
Ответ на: комментарий от Evgeny_I

Спасибо за ответ! Просто проверять все и вся часто - лишний загруз машины, к тому же, чем быстрее будет происходить тестирование - тем чаще его можно будет запускать.

anonymous
()

FAQ, раздел 1.1 пункт "производить проверку изменений файлов". Не надо изобретать велосипед. Для кого я вообще FAQ пишу?

ivlad ★★★★★
()

Поставь osec, aide, tripwire (что больше понравится).

Настрой и радуйся.

MrKooll ★★★
()

лучше нормально rsbac или grsecurity настроть, чем такой фигней страдать...

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

> лучше нормально rsbac или grsecurity настроть, чем такой фигней страдать...

Вам батенька RTFM надо. IDS нужны и при использовании RSBAC. это просто другой уровень защиты.

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

> Нету у меня рпм .

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

anonymous
()

> Вопрос вот в чем - какие бинарники меняют при взломе? Есть идея - отслеживать изменения, и, если они произошли - ложить инет для машины.

> ls, ps, netstat, lsattr - первое, что приходит в голову... еще что?

Если у взломщика есть права на перезапись "ls, ps, netstat, lsattr", то будут права и на загрузку модуля ядра. Который перехватит проверку MD5 и возвратит оригинальный файл.

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

Во-первых, не факт, что поддержка модулей включена.

Во-вторых, как это он "перехватит проверку MD5 и возвратит оригинальный файл"? Он не сможет отличить проверку от исполнения. Потому что при исполнении файл тоже открывается и читается (программой /lib/ld-linux.so.2).

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

> Во-вторых, как это он "перехватит проверку MD5 и возвратит оригинальный файл"? Он не сможет отличить проверку от исполнения. Потому что при исполнении файл тоже открывается и читается (программой /lib/ld-linux.so.2).

1). Проверить название процесса, который открывает файл? 2). Подменить /lib/ld-linux.so.2 ?

ЗЫ: Блажен неверующий.

anonymous
()
Ответ на: комментарий от nobody

> Во-вторых, как это он "перехватит проверку MD5 и возвратит оригинальный файл"? Он не сможет отличить проверку от исполнения. Потому что при исполнении файл тоже открывается и читается (программой /lib/ld-linux.so.2).

1). Проверить название процесса, который открывает файл?
2). Подменить /lib/ld-linux.so.2 ?

ЗЫ: Блажен неверующий.

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

> 1). Проверить название процесса, который открывает файл?

Под "названием процесса" понимается "имя файла, исполняемого процессом"? Если да, то тут облом: указанное имя является симлинком, а ядро запоминает только реальный path.

Если же имеется в виду argv[0], то проверять его будет несколько геморройно, не находишь? А если тебя не пугает геморрой, то мы запустим проверку MD5 через утилиту argv0, которая сделает argv[0] проверяющей программы равным "/lib/ld-linux.so.2". Ы?

> 2). Подменить /lib/ld-linux.so.2 ?

Что это дает? Ну включим и файл, на который ссылается симлинк, в список проверяемых по MD5.

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

>> 1). Проверить название процесса, который открывает файл?

> Под "названием процесса" понимается "имя файла, исполняемого процессом"? Если да, то тут облом: указанное имя является симлинком, а ядро запоминает только реальный path.

Проверяй номер inode.

>> 2). Подменить /lib/ld-linux.so.2 ?

>Что это дает? Ну включим и файл, на который ссылается симлинк, в список проверяемых по MD5.

ioctl(INTRUDER_MODULE, RETURN_CHANGED_FILE_CONTENT_FOR_PID, getpid());
start_new_process();

Давай в следующий раз, прежде чем бросаться писать опровержения, ты хотя бы немного подумаешь, ОК?

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

Чего ты мне пытаешься доказать? Что обойдешь проверку MD5 при включенной поддержке модулей? Ну давай.

1) Создаем ненужный исполняемый файл: "cp /bin/false /bin/blah && chmod 700 /bin/blah".

2) Считаем MD5 на все программы, которые хотим проверять (ps, ls и пр.). Делаем неправильный MD5 на /bin/blah.

3) Пишем простенькую программу на С. Включаем в нее список, полученный в п.2. Наша прога получает через ком.строку имя файла. Если имя есть в списке, она через fork-exec запускает "md5sum -c -" и скармливает ей пару "sum file" из списка. Если проверка прошла (rc==0), делает exec реального динамического загрузчика (который не симлинк). Если нет -- сообщает на stderr о неправильной сумме и завершается. (Если файла нет в списке, сразу же запускается загрузчик.)

4) Компилим нашу прогу и линкуем ее статически. Берем исходники программы md5sum, компилим, линкуем статически.

5) Делаем ln -sf /bin/наша-прога /lib/ld-linux.so.2.

6) Пишем простой скрипт на shell+awk (или на perl). Его задача: запустить /bin/blah и проверить сообщение с ее stderr. Если сообщения нет -- поднять тревогу, уведомить админа, вырубить машину и т.п. -- по вкусу. Если сообщение есть, запустить /bin/ps и проверить, есть ли сообщение об ошибке. Если есть -- опять-таки тревога/админ/etc.

7) На крон вешаем запуск скрипта из п.6. Например, раз в час.

Если ты подменишь мой загрузчик своим, и не будешь запускать мой из своего, максимум через час скрипт обнаружит отсутствие сообщения об ошибке для /bin/blah.

Если ты подменишь мой загрузчик своим, и будешь вызывать мой из своего, максимум через час скрипт обнаружит сообщение об ошибке суммы для /bin/ps.

Если ты не подменишь загрузчик, но подменишь ps, максимум через час скрипт обнаружит ошибку MD5 для нее.

Вместо (или вместе с) ps можно проверять и ls.

> Давай в следующий раз, прежде чем бросаться писать опровержения, ты хотя бы немного подумаешь, ОК?

Ты готов продолжить дискуссию? :)

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