セキュリティ、DNS キャッシュ ポイズニング、およびカミンスキー攻撃に関連する宿題として、Nemesisを使用してローカル DNS サーバーにパケットを送信する Perl スクリプトを作成しています (これはすべて、閉じたホストオンリーの VMWare ネットワークで行われています)。ネメシスを呼び出すプロセスの自動化まですべてを行いました。
特に Perl を使用して、ランダムな DNS トランザクション ID を選択し、以前に作成した DNS ペイロードにそれらを追加しています。現在、ペイロードは DNS の回答ではなく単なるクエリであるため、ペイロードの ID 部分を作成し、Perl で敵にプッシュする方法を完成させることができます。
私のコードは現在...
#!/usr/bin/perl
use strict;
use warnings;
my $dnsId = int(rand(65535));
my $idString = sprintf("%x", $dnsId);
if(length($idString) == 1){$idString = "000".$idString}
elsif(length($idString) == 2){$idString = "00".$idString}
elsif(length($idString) == 3){$idString = "0".$idString}
my $payload = $idString."01000001000000000000037777770f646e737068697368696e676c61627303636f6d0000010001";
print(`echo "$payload" | nemesis udp -S10.1.3.1 -D10.1.3.100 -x53 -y33333 -P-`)
私が抱えている問題は、ネメシスがデータを文字列として読み取っていることです。これはもちろん、エコーが行っていることです。したがって、データを ASCII ではなくバイナリ データとして nemesis にパイプする必要があります。
pack()
バイナリファイルを作成してから、「cat /foo/bar/file | nemesis -...」を使用してペイロードを実行できると思いますが、余分なIOが必要ないため、これは最適なソリューションではありません(仮想的に、決して届かない) 本物の応答を受信する前に、私が試行できる悪意のある DNS 応答の数の要因となる時間。
このデータをバイナリ形式でネメシスにフィードできるようにするために調べることができるいくつかの方法は何ですか?