Herramientas de usuario

Herramientas del sitio


enlaces:utilidades_de_red

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anteriorRevisión previa
Próxima revisión
Revisión previa
Próxima revisiónAmbos lados, revisión siguiente
enlaces:utilidades_de_red [2010/12/17 18:05] cayuenlaces:utilidades_de_red [2018/11/01 16:35] – [Netcat] cayu
Línea 2: Línea 2:
  
 ===== Conectividad ===== ===== Conectividad =====
 +
 +==== Agregar ruta estatica ====
 +
 +<code>
 +ip route add 192.168.55.0/24 via 192.168.1.254 dev eth1
 +</code>
 +
 +<code>
 +route add -net 192.168.55.0 netmask 255.255.255.0 gw 192.168.1.254 dev eth1
 +</code>
  
 ==== Forzar el modo ethernet ==== ==== Forzar el modo ethernet ====
Línea 10: Línea 20:
 ethtool -s eth0 speed 100 duplex full autoneg off ethtool -s eth0 speed 100 duplex full autoneg off
 </code> </code>
- 
 ==== Conectarse a redes Wi Fi ==== ==== Conectarse a redes Wi Fi ====
 Primero bajamos el servicio de Network Manager si es que lo tenemos instalado Primero bajamos el servicio de Network Manager si es que lo tenemos instalado
Línea 336: Línea 345:
  
  
-===== Sniffers =====+===== Sniffers y mediciones =====
  
 http://es.wikipedia.org/wiki/Tipos_de_Sniffer http://es.wikipedia.org/wiki/Tipos_de_Sniffer
Línea 343: Línea 352:
  
 Muestra y busca paquetes. Ngrep se esfuerza por proveer de la mayoría de características comunes del "grep" de GNU, aplicándolas a la capa de network ({"network layer"} del modelo de referencia OSI). ngrep es consciente de la presencia de pcap y permite usar expresiones regulares que concuerden con el "payload" ( o sea la carga, el cuerpo, y _no_ los encabezados) de los paquetes. Actualmente reconoce TCP, UDP, e ICMP sobre Ethernet, PPP, SLIP e interfaces nulas {"null interfaces"}, y comprende la lógica de un filtro "bpf" de la misma manera que herramientas más comunes de sniffing como tcpdump y snoop. Muestra y busca paquetes. Ngrep se esfuerza por proveer de la mayoría de características comunes del "grep" de GNU, aplicándolas a la capa de network ({"network layer"} del modelo de referencia OSI). ngrep es consciente de la presencia de pcap y permite usar expresiones regulares que concuerden con el "payload" ( o sea la carga, el cuerpo, y _no_ los encabezados) de los paquetes. Actualmente reconoce TCP, UDP, e ICMP sobre Ethernet, PPP, SLIP e interfaces nulas {"null interfaces"}, y comprende la lógica de un filtro "bpf" de la misma manera que herramientas más comunes de sniffing como tcpdump y snoop.
 +
 +
 +Usage examples:
 +
 +<code>
 +ngrep '' udp (print all UDP packets)
 +
 +ngrep '' icmp (print all ICMP packets)
 +
 +ngrep '' port 53 (print TCP or UDP port 53 packets)
 +
 +ngrep '' tcp port 23 (print TCP port 23 packets)
 +
 +ngrep 'LILWORD' port 138 (print Microsoft browsing traffic for NT domain LILWORLD)
 +
 +ngrep -iq 'rcpt to|mail from' tcp port 25 (monitor current delivery and print sender and recipients)
 +
 +ngrep 'user' port 110 (monitor POP3)
 +
 +ngrep -q 'abcd' icmp (Microsoft operating systems fill the ICMP payload with the alphabet; is the "pinging" host running a 
 +Microsoft operating system?)
 +
 +ngrep -iq 'user-agent' tcp port 80 (determine client application that client host is running)
 +
 +ngrep '220' port 21 (determine version of FTP server)
 +
 +ngrep 'SSH' port 22 (investigate Secure Shell)
 +
 +ngrep -v '' port 23 (see all traffic but telnet)
 +
 +ngrep -d le0 '' (listen to le0)
 +</code>
 +
 +
 +Useful flags:
 +
 +<code>
 +-A n (prints out "n" packets after the match)
 +
 +-l (pipe the output of ngrep to another program for more processing)
 +
 +-v (print all lines not matching the expression)
 +
 +-d (specify the device you want to monitor)
 +</code>
  
  
Línea 364: Línea 418:
 # tcptrack -i eth0 port 80 # tcptrack -i eth0 port 80
 # tcptrack -i eth0 host 192.168.2.110 and port 8080 # tcptrack -i eth0 host 192.168.2.110 and port 8080
 +#tcptrack  -i eth0 src or dst 74.125.47.138 or src or dst 74.125.47.139 or src or dst 74.125.47.101 or src or dst 74.125.47.138 or src or dst 208.117.252.210 or src or dst 74.125.47.102 or src or dst s2.youtube.com or src or dst youtube.com or src or dst 208.117.252.210 or src or dst 208.117.252.22 or src or dst 208.117.252.167 or src or dst 208.117.252.22 or src or dst www.youtube.com or src or dst 208.117.252.228 or src or dst 208.117.252.23 or src or dst 74.125.47.101  or src or dst 208.117.252.159 or src or dst 74.125.47.102 or src or dst 208.117.252.18
 </code> </code>
  
Línea 391: Línea 446:
 {{ :enlaces:sqstat.png }} {{ :enlaces:sqstat.png }}
  
 +{{:enlaces:sqstat-1.20.tar.gz|}}
 +
 +http://samm.kiev.ua/sqstat/
 +
 +
 +==== Hydra ====
 +
 +A very fast network logon cracker which support many different services
 +
 +
 +Currently this tool supports:
 +TELNET, FTP, HTTP, HTTPS, HTTP-PROXY, SMB, SMBNT, MS-SQL, MYSQL, REXEC,
 +RSH, RLOGIN, CVS, SNMP, SMTP-AUTH, SOCKS5, VNC, POP3, IMAP, NNTP, PCNFS,
 +ICQ, SAP/R3, LDAP2, LDAP3, Postgres, Teamspeak, Cisco auth, Cisco enable,
 +AFP, Subversion/SVN, Firebird, LDAP2, Cisco AAA (incorporated in telnet module).
 +
 +For HTTP, POP3, IMAP and SMTP, several login mechanisms like plain and MD5 digest are supported.
 +
 +
 +
 +http://freeworld.thc.org/thc-hydra/
 +
 +
 +
 +==== MSN Dump ====
 +
 +Sniffea eh interpreta lo que va por el puerto 1863 :p
 +
 +<code perl>
 +#!/usr/bin/perl -w
 +# quick dirty msn sniffer
 +# http://miscname.com/
 +# $Id: msndump.pl,v 1.3 2004/11/17 10:00:33 meh Exp $
 +
 +#To capture live traffic from device eth0 run:
 +#msndump.pl -i eth0
 +
 +#To capture from tcpdump traffic.pcap file run:
 +#msndump.pl -r traffic.pcap
 +
 +# you need Net::Pcap and Net::Packet
 +# use cpan or get manually
 +# http://search.cpan.org/CPAN/authors/id/A/AT/ATRAK/NetPacket-0.04.tar.gz
 +# http://search.cpan.org/CPAN/authors/id/K/KC/KCARNUT/Net-Pcap-0.05.tar.gz
 +
 +my $lowuid='1001';
 +my $lowgid='1001';
 +
 +my $filter = 'tcp and port 1863';
 +
 +# no modify below
 +use Getopt::Std;
 +use Net::Pcap;
 +use NetPacket::IP;
 +use NetPacket::Ethernet qw (:strip);
 +use Fcntl;
 +$|=1;
 +my $flags |= O_NONBLOCK;
 +
 +my %opts;
 +getopt("wicr",\%opts);
 +if ( (!($opts{i})) && (!($opts{r})) ) {
 +print "[ msndump - miscname.com ]\n Usage:\n\t-i rl0 || -r file.pcap\n\t-c X - capture X packets\n\t-w freshIMz.txt\n\n";
 +exit;
 +}
 +
 +if ((!$opts{r}) && ($> != '0')) {
 +die ("you need uid 0\n");
 +}
 +
 +# main loop
 +my $exitvar = '0';
 +while ($exitvar == '0') {
 +
 +# create pcap
 +my $pcap = &cap_pkt;
 +if (!($pcap)) {
 +  die ("cant capture\n");
 +}
 +
 +# drop privs
 +my $GID="$lowgid";
 +my $UID="$lowuid";
 +my $EGID="$lowgid $lowgid";
 +
 +# -w if set
 +if ($opts{w}) {
 +  open (FILEOUT,">$opts{w}") || die ("cant open $opts{w} ($!)\n");
 +  fcntl(FILEOUT, F_SETFL, $flags) or die ("couldn't set nonblock for $opts{w} ($!)\n");
 +}
 +
 +# capture loop
 +if (($opts{c}) && ($opts{c} =~ /(\d+)/)) {
 +  print "stopping after $1 packets\n";
 +         Net::Pcap::loop($pcap, $1, \&proc_pkt, 0);
 +  $exitvar = '1';
 +} else {
 +         Net::Pcap::loop($pcap, -1, \&proc_pkt, 0);
 +  my %stats;
 +  Net::Pcap::stats($pcap, \%stats);
 +  print "saw $stats{ps_recv} packets, dropped $stats{ps_drop}\n";
 +}
 +
 +# free it
 +print "cleaning up\n";
 +Net::Pcap::close($pcap);
 +# close fh
 +if ($opts{w}) {
 +  print "wrote $opts{w}.\n";
 +  close FILEOUT;
 +}
 +}
 +
 +# sub procs below
 +sub cap_pkt {
 +
 +my ($pcap,$dev,$err,$mask,$net,$filter2);
 +my $snaplen = 14096; # seen some big im's :(
 +my $promisc = 1; # promisc of course
 +my $timeout = 0; # timeout
 +
 +# file.pcap?
 +if ($opts{r}) {
 +  print "reading from '$opts{r}'\n";
 +  $pcap = Net::Pcap::open_offline($opts{r}, \$err);
 +  if (!($pcap)) {
 +   die("error opening $opts{r} ($err)\n");
 +      }
 +} else {
 +
 +  # set dev from cmdline
 +  $dev = $opts{i};
 +  print "dumping on '$opts{i}'\n";
 +
 +  # get netmask for filter
 +  if ((Net::Pcap::lookupnet($dev, \$net, \$mask, \$err)) == -1 ) {
 +          die ("Net::Pcap::lookupnet failed ($err)\n");
 +      }
 +    
 +  # open it
 +  $pcap = Net::Pcap::open_live($dev, $snaplen, $promisc, $timeout, \$err);
 +  if (!($pcap)) {
 +   die ("can't create packet fd ($err)\n");
 +  }
 +}
 +   
 +# sanity check
 +if (!($pcap)) {
 +  die ("sanity check failed - \$pcap null\n");
 +} elsif (!($mask)) {
 +  $mask = '0'; # for open_offline
 +}
 +
 +# make filter struct
 +if (Net::Pcap::compile($pcap, \$filter2, $filter, 1, $mask) != '0') {
 +   die ("broken filter ($filter)\n");
 +}
 +# apply
 +Net::Pcap::setfilter($pcap, $filter2);
 +
 +return $pcap;
 +}
 +
 +sub proc_pkt {
 +
 +my($user_data, $hdr, $pkt) = @_;
 +my ($user,$msg);
 +
 +my $ip_obj = NetPacket::IP->decode(eth_strip($pkt));
 +#my $ip_obj = NetPacket::IP::strip($pkt);
 +
 +# check if its a message (or a p2p file transfer)
 +# if your reading this, include 'P2P-Dest:' in your message body to avoid sniffer ;)
 +if (($ip_obj->{data} !~ /MSG/m) || ($ip_obj->{data} =~ /P2P-Dest:/m)) {
 +  ;
 +} else {
 +  print $ip_obj->{data};
 +  # extract goodies
 +  if ( (($ip_obj->{data} =~ /MSG (.*)\@(.*)/)) || (($ip_obj->{data} =~ /P4-Context: (.*)/)) ) {
 +   $user = "$1\@$2";
 +  }
 +
 +  if ($ip_obj->{data} =~ /X-MMS-IM-Format:\s.*\r(.*)/s) { #\s\w+\=\w+\;\s\w+\=\w+\;\s\w+\=\w+\;\s\w+\=\w+\;\s\w+\=\w+\;(.*)/m) {
 +   $msg = $1;
 +  }
 +
 +  # display if we have both
 +  if (($user) || ($msg))
 +  {
 +   if(!$user)
 +   {
 +    $user = "unknown user";
 +   }
 +   if (!($opts{w})) {
 +    print "\n----------------------------------------------------\n";
 +    print "src_ip($ip_obj->{src_ip}) dst_ip($ip_obj->{dest_ip})\n";
 +    print "TO/FROM: $user\nMESSAGE:\n$msg\n";
 +   } else {
 +    print FILEOUT "\n----------------------------------------------------\n";
 +    print FILEOUT "src_ip($ip_obj->{src_ip}) dst_ip($ip_obj->{dest_ip})\n";
 +    print FILEOUT "TO/FROM: $user\nMESSAGE: \n$msg\n\n";
 +   }
 +  }
 +}
 +}
 +</code>
 +
 +==== Python Proxy ====
 +
 +Mini Proxy en Python
 +
 +http://code.google.com/p/python-proxy/
 +
 +<code>
 +sergio@sergio-thinkcentre-a70z:~$ python PythonProxy.py 
 +Serving on 0.0.0.0:8080.
 +GET http://backports.debian.org/debian-backports/dists/lenny-backports/Release.gpg HTTP/1.1
 +GET http://ftp.de.debian.org/debian/dists/stable/Release.gpg HTTP/1.1
 +GET http://security.debian.org/dists/lenny/updates/Release.gpg HTTP/1.1
 +</code>
 +
 +
 +
 +==== Parser y formateador de salida NMap ====
 +
 +Algo muy útil a la hora de hacer reporte de servidores en base a un archivo de lista de servidores, ej nmap-report.pl servidores.txt, imprimiendo la salida por pantalla en formato dokuwiki.
 +
 +<code perl>
 +#!/usr/bin/perl
 +BEGIN {
 +    eval "use Nmap::Scanner";
 +    if ( $@ ) {
 +    warn  "Error to load module: Nmap::Scanner\n"
 +    . "Install Module:\n"
 +    . "\t\tcpan> install Nmap::Scanner\n";
 +    exit ();
 + }
 +}
 +
 +use POSIX qw(strftime);
 +my $scanner = new Nmap::Scanner;
 +$scanner->guess_os();
 +$scanner->register_scan_complete_event(\&scan_complete);
 +$scanner->register_scan_started_event(\&scan_started);
 +$scanner->register_port_found_event(\&port_found);
 +my $lista = $ARGV[0];
 +my $opciones_scan = "-sS -A -vv -p0-65535 -sV -O -iL $lista";
 +print "Options Nmap: $opciones_scan\n";
 +print "^^Puerto^Estado^Servicio^Informacion^^\n";
 +$scanner->scan($opciones_scan);
 +
 +sub scan_started {
 +        my $self     = shift;
 +        my $host     = shift;
 +        $hostname = $host->hostname();
 +        $addresses = join(',', map {$_->addr()} $host->addresses());
 +        my $status = $host->status();
 +#        print "$hostname ($addresses)\n";
 +}
 +
 +sub port_found {
 +        my $self     = shift;
 +        my $host     = shift;
 +        my $port     = shift;
 +        no warnings;
 +        my $name = $host->hostname();
 +        my $puerto = $port->state();
 +        if ($puerto eq "open"){$pestado="abierto";}
 +        elsif($puerto eq "closed"){     $pestado="cerrado";}
 +        my $proto= $port->protocol();
 +        if ($proto eq "tcp"){$protoc="tcp";}
 +        elsif($proto eq "udp"){$protoc="udp";}
 +        my $salida_puerto = join('',"|",$port->portid(),"/",$protoc,"|",$pestado,"|",$port->service()->name(),"|",$port->service()->product()," ",$port->service()->version()," ",$port->service()->extrainfo(),"|");
 +        print "$salida_puerto\n";
 +}
 +
 +sub scan_complete {
 +    my $self = shift;
 +    my $host = shift;
 +    no warnings;
 +
 +   for my $match ($host->os()->osmatches()) {
 +        print "\n\n\nHost determinado aproximadamente: " . $match->name(),"\n\n";
 +    }
 +
 +    for my $c ($host->os()->osclasses()) {
 +#        print "-- " . $c->vendor() . "\n";
 +        print "- OS generation: " . $c->osgen() . "\n\n";
 +        print "- OS family:     " . $c->osfamily() . "\n\n";
 +        print "- OS Type:       " . $c->type() . "\n\n";
 +    }
 +}
 +</code>
enlaces/utilidades_de_red.txt · Última modificación: 2019/01/22 15:34 por cayu