Как хакеры пишут свои бэкдоры Forb (forb@real.xakep.ru) Xakep, номер #062, стр. 062-060-3 Заметаем следы Несмотря на то, что бэкдор запускается через inetd, он светится в процессах. В таблицу его имя записывается в виде: telnetd localhost.localdomain. Чтобы он там перестал отображаться, необходимо смодифицировать файл setproctitle.c, а точнее, сделать заглушкой одноименную процедуру. Для этого в начале процедуры напиши строку возврата. Таким образом, процесс будет аналогичен имени, под которым он был запущен. Разбор полетов Теперь немного о корректной установке бэкдора. После компиляции переименуй бинарник telnetd в –bash и положи его в каталог /bin. Далее пропиши в любой rc-скрипт строку –bash. Все, теперь бэкдор должен запускаться после каждого ребута. Запустив его вручную, просмотри таблицу процессов. В ней ты увидишь обычный процесс с именем –bash. Это единственный побочный эффект от бэкдора. Чтобы открыть порт, необходимо послать пакет с данными «01701701». Это можно сделать при помощи команды ping с параметром –p. Правда, следует оговориться, что только линуксовый ping имеет такую опцию. Поэтому, чтобы активировать шелл, тебе понадобится помощь пингвина. Если он у тебя стоит, то набирай «ping host –p 01701701». После этого на хосте откроется 4100 порт. Он будет открыт в течение 10 секунд, так что перестань рассматривать всякие картинки в Сети, а сразу телнеться на удаленную машину. Плюсы и минусы Вот и весь бэкдор. Осталось только отметить его плюсы и минусы. Итак, главные плюсы: поддержка псевдотерминала, его не видят портсканер и netstat, а также в нем реализован довольно простой способ открытия сокета. Что касается минусов. Бэкдор невозможно использовать под FreeBSD (linux only), а также частичная светимость в процессах и стартовых скриптах. Но сами процессы можно подчистить, используя хороший модуль руткита вместе с бэкдором (например, adore). Как видишь, всего за несколько минут ты можешь превратить обычный telnetd в удобный бэкдор. Это совсем несложно, главное - заранее продумать алгоритм работы будущей утилиты. Теперь, установив бэкдор на захаканный шелл, можно быть уверенным том, что админ долго не заметит чужого пребывания. Альтернатива бэкдору Этот бэкдор весьма удобен, но можно воспользоваться и альтернативными вариантами. Возможно, некоторые экземпляры тебе понравятся больше. Bindtty.c – бэкдор с поддержкой псевдотерминала. Единственный недостаток – он детектируется нетстатом и простым портсканером (hysteria.sk/sd/f/junk/bindshell/bindtty.c). Еще одна вариация bindtty.c (hysteria.sk/sd/f/junk/bindshell/contty.c). Bindshell.c – простой бэкдор, открывающий шелл на 4000 порту. Незаменим, если нужно быстро открыть порт (hysteria.sk/sd/f/junk/bindshell/bindshell.c). Ну и, конечно же, рассматриваемый в статье бэкдор ты можешь скачать по адресу kamensk.net.ru/forb/1/x/neth.tgz. Займись скриптописанием Чтобы избавиться от суматошного коннекта за 10 секунд, напиши скрипт, пингующий хост (с параметром –c 1), а затем выполняющий телнет на порт 4100. Сырые сокеты Как ты уже, наверное, догадался, бэкдор не светит порт благодаря использованию raw-сокетов. Они необходимы для анализа байтов в отдельных пакетах. Таким образом, получается, что эти сокеты прослушивают весь трафик, проходящий через компьютер. Работает raw-сокет не поверх TCP/IP, а напрямую с третьим уровнем модели OSI. Такие сокеты применяются не только для различных хакерских утилит, но и для отсылки icmp-сообщений с помощью утилит ping и traceroute. |