Metasploit 개요
MSF란?
- 보안 문제를 식별하고, 취약점을 완화하며 보안평가 기능을 제공한다.
- 보안 테스팅을 위한 일종의 통합 체계로 모듈화 된 구조를 가지고 있다.
활용분야
- 모의해킹, 취약점 진단, 제로데이 진단, 취약점 분석, 자동화 도구 개발
용어 정의
- 익스플로잇(exploit) : 시스템, 애플리케이션, 서비스 등의 취약점을 공격하는 방법
- 익스플로이테이션(exploitation) : 익스플로잇을 하는 행위
- 후속 공격(post exploitation) : 익스플로잇이 성공한 후 수행하는 공격
- 취약점(vulnerability) : 시스템 또는 소프트웨어에 존재하는 결함
- 페이로드(payload) : 쉘코드, 최종 공격 목적 코드
- 모듈(module) : 루비에서 말하는 모듈/ MSF에서 사용하는 모듈
- 리스너(listener) : 연결 요청을 기다릴 수 있도록 해 주는 기능
- 세션(session) : MSF와 공격 대상 시스템 사이에 맺은 연결 채널
- 제로데이(zero-day) : 아직 알려지지 않은 새로운 취약점
- PoC(Proof of Concept) : 취약점을 증명하기 위해 만들어진 증명 코드
라이브러리
- REX : 루비의 확장 라이브러리
- Reamwork Core : 모듈과 플러그인에 인터페이스를 제공하는 클래스 모음
- Framework Base : 세션을 구현, 핵심 작업의 인터페이스 제공
디렉터리
- data : msf에서 사용하는 데이터 파일 모음
- lib : 핵심 라이브러리 파일 모음
- modules : msf 모듈 모음
- script : 미터프리터를 포함한 스크립트 모음
모듈
- Exploits : 시스템 및 응용 프로그램의 취약점을 이용하는 공격 코드 모음
ㄴ 공격 진행 시 대부분 플랫폼 à 서비스 à 코드를 선택하는 단계로 진행한다.
- Payloads : Exploit 성공 후 타겟의 시스템에 대한 추가 공격을 위한 코드 모음
- Encoders : Payload의 형태를 변형 시키는 다양한 알고리즘을 담은 코드 모음
ㄴ 백신을 우회하거나 안 걸리기 위해서 인코딩으로 암호화 시키는 모듈
- Nops : 오직 레지스터 및 프로세서 플래그 상태 변화에만 영향을 미치는 무의미한 명령어들을 만들어 내는 코드 모음
ㄴ 파일 내용 사이에 1010101… 등의 의미 없는 문자를 넣어 공격하는 코드 모음
- Auxiliary : Payload를 필요로 하지 않는 공격 또는 정보 수집을 목적으로 하는 코드 모음
ㄴ : Scanner, Gather의 목적 코드 모음
- Post : Exploit 성공 후 Meterpreter 권한에서의 명령어 모음
MSF 모듈 사용하기
- msfconsole -> search -> use -> info -> show options -> set -> exploit -> meterpreter
자주 사용하는 명령어
- Help : 지원하는 명령어 확인
- Search [특정 문자열] : 취약점 모듈 정보 검색
- Use [모듈의 절대경로] : 취약점 공격을 수행할 모듈 선택
- Info [모듈의 절대경로] : 특정 모듈의 설명, 취약점 정보, 옵션 정보, CVE 정보 확인
- Show options : 선택된 모듈로 취약점 공격을 하기 전 반드시 선택하는 옵션, 확장된 옵션 정보
- Show targets : 선택된 모듈이 취약점 공격을 수행하기 위한 시스템 대상
- Set [이름 값] : show options, show targets에서 확인한 옵션에서 특정 변수의 값을 설정
- Exploit : 옵션까지 설정 후 실질적으로 공격 수행,
모듈의 절대경로를 보면 exploit으로 시작되는 모듈은 exploit 명령어를 실행하고,
auxiliary 모듈은 run으로 실행
ㅇ Metasploit
- msfvenom : payload, encoder, encryption 등 코드를 생성하는 프로그램
- -l : listup
- msfvenom -l payloads | grep windows //윈도우에 관련된 페이로드 출력
- msfvenom --list formats //출력 가능한 형식의 포맷 출력(ex. bash, csharp, c, perl 등)
- msfvenom -l payloads | grep messagebox //메시지박스 출력관련 페이로드 출력
- msfvenom -p 페이로드명 --list-options //지정 페이로드의 옵션값이 뭐가 있는지 확인
-> msfvenom -p 페이로드명 세부옵션 -f 포맷타입 <-