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

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

Loki

После всего этого вы можете воскликнуть: "Есть ли аналогичные программы для Unix?" Конечно! Первая и наиболее древняя программа для удаленного управления под Unix называется Loki. Известный некоторым как "Божество зла", он подарил название этой программе.

Когда Loki была создана, каждый поддерживал ICMP-трафик и пропускал его через системы безопасности, поскольку этот протокол был разработан для взаимодействия одной машины с другой. Loki была создана для взлома этого уязвимого места и для удаленного управления атакованной машиной без необходимости для взломщика осуществлять вход на машину.

Loki можно найти на большинстве сайтов, посвященных безопасности, таких как http://www.securityfocus.com. Программа была написана и приспособлена для работы на большинстве Unix-систем, таких как Linux, Solaris и FreeBSD. Короче, Loki работает, помещая команды внутрь ICMP Ping-трафика, передаваемого между клиентом и сервером. Инкапсуляция выполняется в процессе передачи ICMP Ping-запроса и получения ответа, и при использовании стандартной версии программы передается нешифрованный текст.

Следовательно, ICMP Ping-трафик имеет марку, по которой можно идентифицировать присутствие программы в сети. Важно отметить, что более поздние версии Loki, чтобы скрыть свое присутствие, включают в себя средства шифрования, такие как XOR или Blowfish. Более того, канал взаимодействия всегда уникален, поскольку номер ICMP последовательности всегда статичен и представляет собой номер канала TAG. Номер TAG - это созданный взломщиком номер, который выбирается в процессе компиляции программы. Следовательно, вторым признаком присутствия в сети Loki является ответ ICMP Ping, который передается до того, как упаковывается ICMP Ping-запрос, и, следовательно, не соответствует спецификации ICMP Ping запрос/ответ. В зависимости от выполняемых взломщиком команд может оказаться, что в сети циркулирует значительно больше ICMP-запросов, чем ответов. При обычном использовании Ping на каждый запрос посылается ответ.

Реализация

Программа Loki должна быть скомпилирована с помощью команды make. Кроме этого, если вы загрузили версию 2 и хотите запускать ее не под RedHat Linux, следует использовать следующую заплатку.

diff Loki.orig/Makefile Loki/Makefile
37c37
< DEBUG     =   -DDEBUG
---
> DEBUG     =   #-DDEBUG

diff Loki.orig/loki.h Loki/loki.h
36c36,38
< #include <linux/icmp.h>
---
> #define ICMP_ECHO 8
> #define ICMP_ECHOREPLY    0
> //#include <linux/icmp.h>
38c40
< #include <linux/signal.h>
---
> #include <signal.h>

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

attacker# ./loki -d <victim's IP address>

Появится приглашение ввести команду программы Loki. Вы можете вводить здесь любую команду, как если бы вы вводили ее на захваченной машине. На следующей иллюстрации показан IP-адрес атакованной машины (192.168.0.1), который получен после запуска на захваченной машине с помощью интерфейса Loki.

Достойны упоминания несколько предупреждений, касающихся использования Loki.

  • Демон Loki по умолчанию блокирует вас внутри директории /tmp. Есть возможность изменить директорию, но только изменив исходный код программы.
  • Хорошей идеей будет осуществлять статическую компиляцию Loki, если вы собираетесь загрузить сервер на машину, на которой нет возможностей компиляции, или с другими версиями динамических библиотек (т.е. вы не сможете скомпилировать программу на захваченном сервере).
  • Как показано на следующей иллюстрации, трафик захватывается при помощи программы Ethereal (Ethereal подробно обсуждается в лекции "Анализаторы сетевых потоков" ), ICMP-пакеты передают информацию между сервером и клиентом. По умолчанию, эта информация не шифруется. Тем не менее, если вам это необходимо, в make file можно установить переключатель шифрования: вы можете использовать XOR- или Blowfish-шифрование. Просто закомментируйте строку CRYPTO_TYPE в make file для того типа шифрования, которое вы хотите использовать.