DNS Hunter Fenix 1.0

Posted on 13:33 by Xianur0

Pantalla de ayuda:

Código:
                                ..::DNS Hunter By Xianur0 Version Fenix (Privada)::..

[-]Uso: dns.pl [dominio] [opciones]
Opciones:
-t HTTP AttackToolKit
-u Buscar Actualizaciones
-w Ataque Whois
-d Ataque DNS
-a Ejecuta Todo lo Anterior


Logs de Ejemplo:

http://phreackersworld.phpnet.us/wikipedia.org.txt
http://phreackersworld.phpnet.us/google.com.txt

ya les dije que no es la gran cosa esta tool, as� que no hagan malos comentarios que yo nunca he dicho que es una mega tool xD...


Nota:
el codigo XST como todos sabremos es obsoleto, pero lo puse como ejemplo xD...
Nota 2: El Installer.pl no es compatible con windows, así que tendrán que bajar las librerías manualmente:

Librerías:
http://www.net-dns.org/download/
http://search.cpan.org/CPAN/authors/id/G/GR/GRANTM/XML-Simple-2.18.tar.gz
http://search.cpan.org/CPAN/authors/id/L/LU/LUISMUNOZ/NetAddr-IP-4.007.tar.gz


installer.pl
Código:
#!/usr/bin/perl
use CPAN;
use LWP::UserAgent;
use HTTP::Request::Common;

CPAN::Shell->install("Net::DNS");
CPAN::Shell->install("NetAddr::IP");
CPAN::Shell->install("LWP::UserAgent");
CPAN::Shell->install("HTTP::Request::Common");
CPAN::Shell->install("XML::Simple");
CPAN::Shell->install("Getopt::Std");

print "[X] Instalado! :).... \n[X] Ejecuta: perl dns.pl\n";
system('perl dns.pl');

dns.pl

Código:
#!/usr/bin/perl

use Net::DNS;
use Net::DNS::RR;
use NetAddr::IP;
use LWP::UserAgent;
use Socket;
use HTTP::Request::Common;
use XML::Simple;
use Getopt::Std;

#DNS Hunter By Xianur0
#uxmal666@gmail.com
#Uso: dns.pl [Web] [Opción]

#CONFIGURACION:
#------------------------------------------
$ver = "0.2";
%whoisserver = (
'com', 'whois.crsnic.net',
'net', 'whois.crsnic.net',
'edu', 'whois.crsnic.net',
'org', 'whois.publicinterestregistry.net',
'info', 'whois.rotld.ro');
$ua = LWP::UserAgent->new;
my $lib = XMLin("lib.xml");
#-------------------------------------------
print " ..::DNS Hunter By Xianur0 Version Fenix (Privada)::..\n\n";
my $host =
$ARGV[0];
new NetAddr::IP($host) || die "Error: IP o Dominio Incorrecto!\n";

my $opt_string = 'whdta';
whois() if $opt{w};
uso() if $opt{h};
dns() if $opt{d};
http() if $opt{t};
todo() if $opt{a};

sub dns() {
print "\n[-]Inicio del Scanneo: ". localtime()."\n";
&soa;
&mx;
&txt;
&ns;
&hinfo;
&dnsrotativo;
&any;
&zonas;
print "Fin del Scanneo: ". localtime(). "\n";
}
sub todo() {
whois();
dns();
http();
}
sub uso {
die "[-]Uso: dns.pl [dominio] [opciones]\nOpciones:\n-t HTTP AttackToolKit\n-w Ataque Whois\n-d Ataque DNS\n-a Ejecuta Todo lo Anterior\n";
}
sub dnsrotativo {
print "[-]Buscando DNS Rotativos (Mediante PTR)...:\n";
my $consulta = new NetAddr::IP($host);
&consultar;
my $inicial = $ipaddr;
&consultar;
while($inicial ne $ipaddr) { &consultar; }
}

sub consultar {
my $consulta = new NetAddr::IP($host) || die "Error: IP o Dominio Incorrecto!\n";
my $resolver = Net::DNS::Resolver->new;
my $hosts = $consulta->num();
for (my $i=0; $i<$hosts; ++$i) { $ipaddr = $consulta->addr();
if ($ipaddr) {
my $consulta = $resolver->search("$ipaddr");
if ($consulta) {
foreach my $array ($consulta->answer) {
next unless $array->type eq "PTR";
print "IP: $ipaddr\n","Host: " ,$array->ptrdname, "\n\n"; }
} }}
}

sub soa {
print "[-]Registro SOA:\n";
my $resolver = Net::DNS::Resolver->new;
my $consulta = $resolver->query($host, "SOA");
if ($consulta) {
($consulta->answer)[0]->print;
}
print "\n\n";
}

sub zonas {
if($sdns[0] eq "") { $sdns[0] = $ipaddr;}
foreach $dnsa (@sdns) {
print "[-]Intentando Ataque AXFR....: Usando: $dnsa\n";
my $consulta = Net::DNS::Resolver->new;
$consulta->nameservers($dnsa);
my @zonas = $consulta->axfr($host);
if(!@zonas) { print "No se Logro Obtener Zonas :(..."; &detectarcomodin; } else {
foreach $array (@zonas) {
$array->print;
} print "\Vulnerado :D!\n\n";}
print "\n\n";
} }

sub ns {
my $consulta = Net::DNS::Resolver->new;
my $consulta = $consulta->query($host, "NS");
if ($consulta) {
print "[-]Servidores DNS:\n";
foreach $array (grep { $_->type eq 'NS' } $consulta->answer) {
print $array->nsdname ."\n";
@sdns = (@sdns, $array->nsdname);
}
}
print "\n\n";
}

sub hinfo {
my $consulta = Net::DNS::Resolver->new;
my $consulta = $consulta->query($host, "HINFO");
if ($consulta) {
print "\n[-]Registro HINFO:\n";
foreach $array ($consulta->answer) {
$array->print;
}}
print "\n\n";
}

sub mx {
my $resolver = Net::DNS::Resolver->new;
my $consulta = $resolver->query($host, "MX");
if ($consulta) {
print "\n[-]Servidores de Correo: \n";
foreach $array ($consulta->answer) {
$array->print;
}
print "\n";
}
}

sub txt {
my $resolver = Net::DNS::Resolver->new;
my $consulta = $resolver->query($host, "TXT");
if ($consulta) {
print "\n[-]Registro TXT (Configuracion MX): \n";
foreach $array ($consulta->answer) {
$array->print;
}
print "\n\n";
}
}

sub any {
print "[-]Obteniendo informaci�n Extra:\n";
my $resolver = Net::DNS::Resolver->new;
my $consulta = $resolver->query($host, "ANY");
if ($consulta) {
foreach $array ($consulta->answer) {
$array->print;
}}
print "\n\n";
}

sub detectarcomodin {
print "Detectando Comodin en Registros A...\n";
my $consulta = new NetAddr::IP("dnshunter.$host");
if($consulta) { print "\nServidor Protegido contra DNS Brutes Forces...."; &brute2; } else {print "No Se Detecto Comodin :).\n"; &brute;}
}
sub brute {
print "Probando DNS Brutes Forces:\n";
$db = 'db.txt';
my $sub;
open(SUBS, $db) || die "No existe la DB!";
while($sub = ){
chomp($sub);
$remoto = "$sub.$host";
my $consulta = new NetAddr::IP($remoto);
if($consulta) {print "$remoto existe!\n"; &robots;}
}
close(SUBS);
}
sub brute2 {
print "Iniciando Fase 2....\n";
$url = "detectarcomodinesenlosregistroshost.$host";
$req = HTTP::Request->new(GET => $url);
&headers;
$res = $ua->request($req);
$estado = $res->code;

if ($estado != ""){
print "Servidor Protegido Contra Brutes Forces en el Header Host del HTTP :(...\n";
}
else {print "No se detecto Proteccion en el HTTP :)..\n"; &brute3; }
}

sub headers {
$req->header('Accept' => 'text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5');
$req->header('Accept-Language' => 'es-es,es;q=0.8,en-us;q=0.5,en;q=0.3');
$req->header('Keep-Alive' => '300');
$req->header('Connection' => 'keep-alive');
$req->header('Accept-Charset' => 'ISO-8859-1,utf-8;q=0.7,*;q=0.7');
}
sub brute3 {
$db = 'db.txt';
my $sub;
open(SUBS, $db) || die "No existe la DB!";
while($sub = ){
chomp($sub);
$remoto = "$sub.$host";
my $proto = getprotobyname('tcp');
my $ipaddr = inet_aton($remoto);
my $paddr = sockaddr_in(80, $ipaddr);
socket(SOCKET, PF_INET, SOCK_STREAM, $proto) or die "Error: $!";
$conected = connect(SOCKET, $paddr);
close SOCKET;
if ($conected) {
print "$remoto Existe!\n";
}
}
close(SUBS);
}
sub robots {
$req = HTTP::Request->new(GET => "http://$host/robots.txt");
&headers;
$res = $ua->request($req);
if ($res->is_success) {
if($res->content_type eq 'text/plain') {
print "--------------------------------------------------------------------------------------\n".$res->content."\n--------------------------------------------------------------------------------------\n";
}
}
}
sub http() {
use IO::Socket;
print "\n[-]HTTP Attack ToolKit: \n\n";
my $sock = new IO::Socket::INET ( PeerAddr => $host, PeerPort => 80, Proto => 'tcp', Timeout=>'1', );
if(!$sock) {print "No se Pudo Conectar a $host!\n"; } else {
print $sock "OPTIONS / HTTP/1.1\nHost: $host\n\n";
print "-----------------------Headers--------------------------\n";
while ($linea = <$sock>) {
if ($linea =~ "HTTP/1.") {
print "Estado De Respuesta: ".$linea;
}
if ($linea =~ /Server:/) {
print $linea;
for( @{$lib->{server}} ) {
if ($linea =~ "$_->{banner}") { print "$_->{nombre}\n"; }
}
}
for( @{$lib->{header}} ) {
if ($linea =~ "$_->{banner}") {
if($linea !~ "<") { my @header = split(": ", $linea); print "$_->{nombre}".$header[1];
}
}
}
}
close($sock);
print "-------------------------------------------------\n\n";
#PUT
my $sock = new IO::Socket::INET ( PeerAddr => $host, PeerPort => 80, Proto => 'tcp', ); die "No se Pudo Conectar a $host!\n" unless $sock;
print $sock "PUT /hacked.htm HTTP/1.1\nHost: $host\nContent-Length: 38\n\r\n\r

Vulnerado por DNS Hunter 0.2

\n\r\n\r";
@linea = (<$sock>);
for( @{$lib->{estado}} ) {
if ($linea[0] =~ $_->{numero}) {
print "[-]Vulnerable a PUT!!....\n Estado de Respuesta: $_->{numero}\n\n";
}
}
close($sock);
#TRACE
my $sock = new IO::Socket::INET ( PeerAddr => $host, PeerPort => 80, Proto => 'tcp', Timeout=>'10', ); die "No se Pudo Conectar a $host!\n" unless $sock;
print $sock "TRACE / HTTP/1.1\nHost: $host\n\r\n\r";
while ($linea = <$sock>) {
if ($linea =~ "message/http") {
print "[-]Vulnerable a TRACE!.....:\nCodigo XST de Demostracion:.\n------------------------------------------\n\n------------------------------------------\n\n";
}
}
close($sock);
#DELETE
my $sock = new IO::Socket::INET ( PeerAddr => $host, PeerPort => 80, Proto => 'tcp', Timeout=>'10', ); die "No se Pudo Conectar a $host!\n" unless $sock;
print $sock "DELETE /hacked.htm HTTP/1.1\nHost: $host\n\r\n\r";
@linea = (<$sock>);
for( @{$lib->{estado}} ) {
if ($linea[0] =~ $_->{numero}) {
print "[-]Vulnerable a DELETE!!....\n Estado de Respuesta: $_->{numero}\n\n";
}
}
close($sock);
}}

sub whois() {
my @hosts = split(/\./, $host);
$extencion = pop(@hosts);
$whoisserver = $whoisserver{$extencion};
if($whoisserver eq "") {print "Whois No Disponible para la Extencion: $extencion";} else {
my $sock = new IO::Socket::INET ( PeerAddr => $whoisserver, PeerPort => 43, Proto => 'tcp', Timeout=>'10', );
print $sock "=".$host."\n";
print "\n[-]Whois ($whoisserver): \n-----------------------------------------------------\n\n";
while ($linea = <$sock>) {
if($linea =~ $host) {
print "Server: $linea";
}
if($linea =~ "Whois Server") {
my @dato = split(": ", $linea);
chop($dato[1]);
my $who = new IO::Socket::INET ( PeerAddr =>$dato[1], PeerPort => 43, Proto => 'tcp', Timeout=>'10', );
if(!$who) { print "[-]Server Whois Down!\n"; } else {
print $who $host."\n";
print "\n[-]\n\n"; while($whos = <$who>) { print $whos; }
print "\n\n[-]
\n\n";
}} else {
for( @{$lib->{whois}} ) {
if ($linea =~ "$_->{etiqueta}") {
my @dato = split(": ", $linea);
print "$_->{imprimir}".$dato[1]; }
}
}}
print "\n-------------------------
----------------------------\n\n";
}}


lib.xml



<db>
<server>
<banner>gws</banner>
<nombre>Google Server</nombre>
</server>
<server>
<banner>GFE</banner>
<nombre>Google Server</nombre>
</server>
<server>
<banner>Unix</banner>
<nombre>Servidor Unix/Linux</nombre>
</server>
<server>
<banner>IIS</banner>
<nombre>Windows Server</nombre>
</server>
<server>
<banner>ucfe</banner>
<nombre>Google Server</nombre>
</server>
<server>
<banner>Debian</banner>
<nombre>Debian Server (linux)</nombre>
</server>
<server>
<banner>lighttpd</banner>
<nombre>Unix/Linux Server (lighttpd)</nombre>
</server>
<server>
<banner>Sun</banner>
<nombre>Sun Server</nombre>
</server>

<header>
<banner>Date</banner>
<nombre>Fecha Interna: </nombre>
</header>
<header>
<banner>Vary</banner>
<nombre>Vary: </nombre>
</header>
<header>
<banner>Content-Encoding</banner>
<nombre>Codificacion de la Pagina: </nombre>
</header>
<header>
<banner>X-Cache</banner>
<nombre>Cache Server: </nombre>
</header>
<header>
<banner>X-Cache-Lookup</banner>
<nombre>Cache Server: </nombre>
</header>
<header>
<banner>Via</banner>
<nombre>Proxy Server: </nombre>
</header>
<header>
<banner>X-Powered-By</banner>
<nombre>Powered: </nombre>
</header>
<header>
<banner>Set-Cookie</banner>
<nombre>Cookie Inicial: </nombre>
</header>
<header>
<banner>P3P</banner>
<nombre>Licencia P3P: </nombre>
</header>
<header>
<banner>Location</banner>
<nombre>Redireccion: </nombre>
</header>
<estado>
<numero>200</numero>
</estado>
<estado>
<numero>201</numero>
</estado>
<estado>
<numero>202</numero>
</estado>
<estado>
<numero>401</numero>
</estado>
<estado>
<numero>403</numero>
</estado>
<whois>
<etiqueta>Server Name</etiqueta>
<imprimir>Nombre del Servidor: </imprimir>
</whois>
<whois>
<etiqueta>Registrar</etiqueta>
<imprimir>Registrado Con: </imprimir>
</whois>
<whois>
<etiqueta>Referral UR</etiqueta>
<imprimir>Registrado En: </imprimir>
</whois>
<whois>
<etiqueta>IP Address</etiqueta>
<imprimir>IP: </imprimir>
</whois>


<whois>
<etiqueta>Status</etiqueta>
<imprimir>Estado: </imprimir>
</whois>

<whois>
<etiqueta>Updated Date</etiqueta>
<imprimir>Ultima Actualizacion: </imprimir>
</whois>

<whois>
<etiqueta>Creation Date</etiqueta>
<imprimir>Dominio Registrado El: </imprimir>
</whois>

<whois>
<etiqueta>Expiration Date</etiqueta>
<imprimir>El Dominio Expira el: </imprimir>
</whois>
<whois>
<etiqueta>Name Server</etiqueta>
<imprimir>Servidor DNS: </imprimir>
</whois>
<whois>
<etiqueta>Registrant</etiqueta>
<imprimir>Registrante: </imprimir>
</whois>
<whois>
<etiqueta>Domain Name</etiqueta>
<imprimir>Domain Name: </imprimir>
</whois>
<whois>
<etiqueta>Administrative Contact, Technical Contact</etiqueta>
<imprimir>Datos Tecnicos: </imprimir>
</whois>
</db>


db.txt


www
www1
www2
www3
ftp
ns
mail
3com
aix
apache
back
bind
boreder
bsd
business
chains
cisco
content
corporate
cpv
dns
domino
dominoserver
download
e-mail
e-safe
email
esafe
external
extranet
firebox
firewall
front
fw
fw0
fwe
fw-1
firew
gate
gatekeeper
gateway
gauntlet
group
help
hop
hp
hpjet
hpux
http
https
hub
ibm
ids
info
inside
internal
internet
intranet
ipfw
irix
jet
list
lotus
lotusdomino
lotusnotes
lotusserver
mailfeed
mailgate
mailgateway
mailgroup
mailhost
maillist
mailpop
mailrelay
mimesweeper
ms
msproxy
mx
nameserver
news
newsdesk
newsfeed
newsgroup
newsroom
newsserver
nntp
notes
noteserver
notesserver
nt
outside
pix
pop
pop3
pophost
popmail
popserver
print
printer
private
proxy
proxyserver
public
qpop
raptor
read
redcreek
redhat
route
router
scanner
screen
screening
secure
seek
smail
smap
smtp
smtpgateway
smtpgw
solaris
sonic
spool
squid
sun
sunos
suse
switch
transfer
trend
trendmicro
vlan
vpn
wall
web
webmail
webserver
webswitch
win2000
win2k


instalación: Correr installer.pl darle yes a todo lo que pregunte y listo xD...

1 comentarios:

polk22 dijo...

exelnte men, Despues de tanto tiempo pude hacerlo funcionar ;)

Saludos