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 [2011/06/10 13:09] 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 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 415: Línea 469:
  
  
-==== Netcat ==== 
  
- Netcat is a featured networking utility which reads and writes data across network connections, using the TCP/IP protocol. +==== MSN Dump ====
-It is designed to be a reliable "back-end" tool that can be used directly or easily driven by other programs and scripts. At the same time, it is a feature-rich network debugging and exploration tool, since it can create almost any kind of connection you would need and has several interesting built-in capabilities.+
  
-It provides access to the following main features:+Sniffea eh interpreta lo que va por el puerto 1863 :p
  
-    * Outbound and inbound connections, TCP or UDP, to or from any ports. +<code perl> 
-    * Featured tunneling mode which allows also special tunneling such as UDP to TCP, with the possibility of specifying all network parameters (source port/interface, listening port/interface, and the remote host allowed to connect to the tunnel+#!/usr/bin/perl -w 
-    * Built-in port-scanning capabilities, with randomizer. +# quick dirty msn sniffer 
-    * Advanced usage options, such as buffered send-mode (one line every N seconds)and hexdump (to stderr or to a specified file) of trasmitted and received data. +# http://miscname.com/ 
-    * Optional RFC854 telnet codes parser and responder+# $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
  
-The GNU Netcat is distributed freely under the GNU General Public License (GPL)+#To capture from tcpdump traffic.pcap file run: 
 +#msndump.pl -r traffic.pcap
  
-<code bash> +# you need Net::Pcap and Net::Packet 
-echo  -e "GET HTTP/1.0\r\n" | nc 192.168.1.1 80 +# use cpan or get manually 
-</code>+# 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
  
-Referencias :+my $lowuid='1001'; 
 +my $lowgid='1001';
  
-http://netcat.sourceforge.net/+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;
  
-Tutorial con ejemplos prácticos http://crysol.org/node/28+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 ==== ==== Python Proxy ====
 +
 +Mini Proxy en Python
  
 http://code.google.com/p/python-proxy/ http://code.google.com/p/python-proxy/
Línea 452: Línea 665:
 GET http://ftp.de.debian.org/debian/dists/stable/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 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> </code>
enlaces/utilidades_de_red.txt · Última modificación: 2019/01/22 15:34 por cayu