компьютер WHATIS.RU - все о компьютерах: реестр Windows, железо, софт, Linux, Photoshop, Народная мудрость, глоссарий. софт
Windows
реестр
WSH
WSH WSH
Linux
WSH
 
Linux
NN

Что делать если вас взломали?

Макаров Тихон

Итак, предположим, что вас взломали или у вас есть на это какие-то подозрения. Что делать? Сейчас узнаете. Уж в восстановлении после взлома я опытен...

СОЗДАНИЕ НОВЫХ ОШИБОК

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

Итак, начнем с перечисления того, что злоумышленники изменяют:

1. Своя учетная запись

Создать учетную запись в /etc/passwd (shadow). Возможно, кто-то и не заметит такого изменения... Не забудьте про другие файлы с паролями (.htaccess для веб-сервера).

2. hosts.allow и hosts.deny

Здесь, кажется, уже все понятно (если вы по крайней мере читали предыдущие статьи этой серии). Ему достаточно ввести команду: echo 'All: hacker's.computer.ip.adress' >> /etc/hosts.allow. Такие изменения не пользуются особой популярностью, т.к. администратору легко проверить наличие изменения этих файлов и установленный ip адрес "засветится".

3. NFS

Монтирование каталога записывается в etc/exports командой:

echo '/ hacker_computer(rw,no_root,squash)' >> etc/exports

Данная команда позволит смонтировать корневой каталог ('/') с правом read&write компьютеру hacker_computer. После этого без подключения к компьютеру злоумышленник сможет изменять файлы passwd и shadow.

Для обнаружения взлома администратору достаточно контролировать изменения файла etc/exports, а имя используемого злоумышленником компьютера опять становится известно root'у.

4. Свои root-программы.

Достаточно простой и эффективный способ получить root доступ - создать свою программу, работающую с командным интерпретатором. Можно просто создать его копию. Тогда все его команды могут выть выполнены с помощью данной копии. От такой возможности взлома придумали множество заплаток. Они сравнивают идентификаторы uid (настоящие права пользователя) и euid (именно этот параметр становится root'овским при работе с копией интерпретатора). Однако создание копии интерпретатора - одна возможность взлома. Можно так же создать свою программу с установленным uid, которая будет при запуске с каким-то параметром добавлять учетную запись, а без него - выводить код какой-нибудь ошибки и выключаться (это пример).

Я предлагаю такое решение для программы:

#include 
#define _xopen_source
...
if (strcmp (crypt(passwd,encrypted),encrypted) == 0) {
	setreuid(0,0);
	system("/bin/bash");
	}
//здесь я привожу только часть, где мы изменяем uid и euid для пользователя.
...

Администратору необходимо искать изменения в существующих uid программах и появление новых uid программ. если найдена подозрительная программа, то ее лучше запустить с помощью отладчика (или сразу удалить), а не открывать.

5. Удаленная работа с bin/bash

a) Если у злоумышленника есть доступ компьютеру, то он сможет воспользоваться пунктом 4, а если нет, то ему необходимо удаленно запустить командный интерпретатор. Для этого ему надо добавить еще одну службу в файл демона inetd (пусть меня упрекнут в старомодности и в том, что в наше время используют уже xinetd, но по-моему любой нормально соображающий человек сможет сам немного видоизменить написанные ниже строки).

Пусть есть порт XXX, который удаленный сервер не использует, тогда в etc/inetd.conf можно добавить строку

"ХХХ stream top nowait root /bin/bash -i"

и, подключившись к порту ХХХ, создастся пользовательская оболочка командного интерпретатора (за это мы должны благодарить -i).

Такое изменение будет сразу замечено опытным администратором, ведь он проверяет изменения данного файла. Но хакеру не обязательно изменять существующий файл конфигурации, он может просто создать свой: пусть файл лежит в hacker/inetd.conf, тогда команда /usr/sbin/inetd /hacker/inetd.conf

Вероятно, можно создать лазейку такого типа даже не используя inetd, но у меня не получилось ничего придумать.

От запуска подложного inetd защититься сложнее, но если у администратора стоит firewall, то злоумышленник не сможет подключиться к необходимому компьютеру. Соответственно необходимо следить и за изменениями в ipchains (тут меня попрекнули, что iptables используется гораздо чаще, но я с этим не согласен, хотя в будущем iptables действительно вытеснит ipchains).

Примечание: открытые, зарезервированные и др. порты можно увидеть в файле protocols.txt

б) Неконтролируемые соединения разрешаются firewall, благодаря чему существует еще одна возможность создания потайного хода, ведь при неконтролируемом соединении можно переправить команды.

6. Удаленные команды

Существуют файлы etc/hosts.equiv и домашний_каталог/.rhosts, которые разрешают пользователям определенных компьютеров выполнять различные команды без ввода пароля при подключении. Такие файлы часто используются в небольших локальных сетях. Таким образом, злоумышленник, при вводе команды "echo 'hacker's_copmuter makarov">> /etc/hosts.equiv" сможет входить с компьютера hacker's_computer под пользователем makarov с правами любого пользователя кроме root. Зато под root'ом позволяет заходить файл .rhosts: если создать в домашнем каталоге root'a данный файл и записать в него hacker's_copmuter makarov, то makarov будет иметь полные права при подключении к жертве.

Конечно, необходимо следить за изменением данных файлов. А если такой тип подключения вам не нужен, то его можно отключить, а так как при нем используются так называемые r-команды, достаточно их просто запретить. Делается это в файле inetd.conf. Закомментируйте в нем строки содержащие:

... in.rshd
... in.rexecd
... in.rlogind

7. SSH

Во-первых, ssh поддерживает удаленные команды (пункт 6). Ssh предпочитают, т.к. у него существует принцип аутентификации: клиент отсылает свой открытый ключ и ssh проверяет его на валидность. Такой принцип помогает защититься от взлома, а вот если у злоумышленника уже есть полный доступ к компьютеру, то ему достаточно добавить свой ключ в etc/ssh_known_hosts.

В файле etc/sshd_config указывается, как относиться к файлам hosts.equiv и .rhosts: (необходимо пометить словом yes выбранный способ работы)

	-)IgnoreRHosts - не работать с ними.
	-)RhostsRSAAuthentication - дополнительно есть аутентификация по строке-ключу. 
	-)RhostsAuthetication - работает с данными файлами и не производит проверки по ключу.

Во-вторых, существует принцип закрытого ключа: клиент отсылает свой открытый ключ, ssh криптует им строку и отсылает клиенту, клиент с помощью секретного ключа расшифровывает ее и отсылает ssh. Таким образом, злоумышленник должен выполнить команду

cat dir_of_key/hacker.key >> root/.shh/authorized.keys

после чего командой

ssh -lroot computer_he_hacked.ru

сможет зайти под root. Примечательно то, что даже если пароль root'a будет изменен, доступ у злоумышленника останется.


Продолжение >>>


читать еще в разделе

РАЗДЕЛЫ 

:. Реестр Windows
:. Железо
:. Photoshop
:. Linux
:. Инструментарий
:. Народная мудрость
:. Глоссарий
:. Разное
:. Форум
:. Download
:. Каталог ссылок

ПОИСК ПО САЙТУ 

 
Web whatis.ru

РЕКЛАМА 



 
Рейтинг@Mail.ru

 Copyright © WHATIS.RU 2003 - 2011  Администрация: Игорь Чеботарев
 Перепечатка материалов допускается с обязательной установкой ссылки на источник