보안, DNS 캐시 중독 및 Kaminsky 공격과 관련된 숙제를 위해 Nemesis을 사용하는 Perl 스크립트를 작성하여 로컬 DNS 서버에 패킷을 보냅니다. 닫힌 호스트 전용 VMWare 네트워크에서 수행됨). 나는 네메시스를 호출하는 과정을 자동화하는 모든 것을 다했다.바이너리 데이터를 perl 변수의 명령에 파이핑
저는 임의로 DNS 트랜잭션 ID를 선택하기 위해 Perl을 사용하고 있습니다. 이전에 만든 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가 아닌 이진 데이터로 파이프하는 것입니다.
pack()
바이너리 파일을 작성하고 "cat/foo/bar/file | nemesis -..."를 사용하여 페이로드를 실행할 수 있다고 생각하지만 최적의 해결책은 아닙니다. 여분의 IO 시간을 정답 인 가상의 응답이 수신되기 전에 시도 할 수있는 악의적 인 DNS 응답의 요소가되기를 원합니다.
내가 조사 할 수있는 방법은 무엇입니까?이 데이터를 이진 형식으로 네메시스에 공급할 수 있습니까? nemesis
중 우리가 더 이상 파이프, 그건 당신이 두 가지를 모두 수행하려면 우리가 쉽게 파이프에. (IPC::Run3를 사용할 수 있다는 것을 의미 나 때문에
'my $ idString = sprintf ("% 04x", $ dnsId);'는'if'를 사용하지 못하도록합니다. – ikegami