Опубликован: 20.02.2007 | Доступ: свободный | Студентов: 3481 / 786 | Оценка: 4.42 / 4.03 | Длительность: 40:03:00
Лекция 10:

Черный ход и средства удаленного доступа

Stcpshell

Утилита stcpshell применяет те же принципы скрытого коммуникационного канала, заимствованные у Loki, к протоколу TCP. Эта программа использует поддельные TCP-пакеты для передачи информации между клиентом и сервером и создания виртуальной командной оболочки на захваченной машине. Аналогично программе Loki, утилита поставляется в исходных кодах и должна быть скомпилирована.

Утилита stcpshell может быть загружена с Web-сайта разработчиков http://www.programmazione.it/knights.

Реализация

Поскольку утилиту необходимо скомпилировать, перед тем как использовать, вы должны делать это на машине, системно совместимой с той, которую вы собираетесь атаковать. Если это не сама атакуемая машина, вы должны при компиляции использовать команду -static, поставив ее перед параметром -o. Процесс компиляции может быть запущен такой командой.

attacker# gcc -o stcpshell stcpshell.c

Сервер запускается так.

victim# ./stcpshell

Затем вы можете установить соединение между клиентом и сервером.

attacker# ./stcpshell -c <server IP address> <client IP address>

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

Сессию, установленную между клиентом и сервером, можно увидеть на следующей иллюстрации, которая представляет обмен трафиком, перехваченным программой Ethereal. Обратите внимание, как трафик между клиентом и сервером передается с использованием сфабрикованного IP-адреса 207.46.131.137. Более того, для соединения выбраны порты 1234 и 4321 (определяемые, как работа программы rwhois, которая по умолчанию работает с портом 4321). Порты и сфабрикованный адрес можно изменить в исходном коде утилиты, который может быть найден в следующих строках в модуле stcpshell.c.

/* from www.microsoft.com .. you BETTER change this */

pkt.ip.ip_src.s_addr=inet_addr("207.46.131.137");

Knark

Программа Knark представляет собой весьма опасную программу создания черного хода. Технически, это не только утилита удаленного доступа и управления. Она может нанести серьезный ущерб любой Linux-системе, на которой будет установлена. Knark отличается тем, что захватывает ядро системы, а не только пользовательские функции. Следовательно, он может ускользнуть от любого средства определения вторжения.

Knark можно загрузить по адресу http://www.packetstorm-security.com. Существует две версии программы. Одна запускается с ядром Linux 2.2, другая работает с ядром 2.4. Версия Knark, которая изучается в данном разделе - самая новая, разработанная для ядра Linux 2.4, но все команды такие же, как и у второй версии.

Реализация

Knark поставляется в исходных кодах и должна быть скомпилирована. Чтобы скомпилировать Knark, необходимо иметь доступ к исходным кодам ядра Linux, размещенным в директории /usr/src/Linux, где находятся коды текущего ядра. Чтобы скомпилировать утилиту, следует распаковать архив, скорректировать тексты и набрать следующую команду.

victim# make clean
victim# make

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

victim# insmod knark.o

В состав Knark входит множество утилит и приемов. Важно заметить, что многие из специфических особенностей, обсуждаемых ниже, можно изменить, отредактировав исходный код программы. Более того, в любой момент вы можете войти в директорию /proc/knark, чтобы узнать, какие изменения совершает Knark в системе. Заметим, тем не менее, что эта директория по умолчанию определена в исходных кодах утилиты и может быть переименована.

Превращение в пользователя Root

Обычно у пользователя root нет возможности удаленного доступа. Любой взломщик это знает, а Knark предлагает решение для этой задачи. Вместо того чтобы создавать обычного пользователя, расширяя его полномочия для взлома машины, Knark предлагает утилиту, которая называется rootme (естественно, вам следует изменить это имя после инсталляции). После запуска программа rootme превращает обычного пользователя (это любой пользователь, ID которого не равно нулю) в пользователя root, не обладающего для этого должными полномочиями. Более того, эта акция не регистрируется ни в одном журнале, как это происходит с командой su.

victim$ ./rootme /bin/bash
victim#
Сокрытие файла или директории

Естественно, каждому взломщику необходимо скрывать свой инструментарий таким образом, чтобы системный администратор не мог бы его найти. Knark предлагает утилиту, которая называется hidef, и может скрыть файлы или целые директории, если взломщик наберет следующую команду.

victim# ./hidef <filename>

Если взломщик хочет, чтобы его файлы вновь отображались командой ls, он может набрать следующую команду.

victim# ./unhidef <filename>
Сокрытие процесса

Обычно, когда взломщик захватывает машину, он запускает на ней другие утилиты, чтобы упрочить свое положение в сети. Одной из этих утилит может быть sniffer (см. лекцию "Анализаторы сетевых потоков" ), используемый для перехвата паролей, передаваемых по сети. Поскольку sniffer должен оставаться в памяти еще долгое время после того, как взломщик покинул машину, здравомыслящий системный администратор может легко обнаружить его, набрав команду ps.

С установленной программой Knark можно скрыть любой процесс, послав сигнал с номером 31.

victim# kill -31 <Process ID>

Когда взломщик решит, что ему необходимо вернуть процесс в список процессов, он посылает сигнал номер 32.

victim# kill -32 <Process ID>