메타스플로잇

메타스플로잇은 Ruby로 작성되고 모듈화 되어 기능 추가가 용이하다

취약점 탐색 —> 모듈 로드 —> 옵셜 설정 —> 공격 수행

MSF basic
  • search : 공격 모듈 탐색
  • use : 모듈 선책
  • info : 정보 확인
  • show : 설정해줘야 하는 옵션 확인
  • set : 옵셜 설정
  • exploit : 취약점 테스트 실행

exploit 실행 뒤에는 meterpreter : 취약점을 통해서 어떠한 공격이 가능한지 확인

Memory Vuln
     - 소유하지 않은 메모리 사용(Null pointer dereferences)
     - 할당된 것보다 더 많은 메모리 사용(buffer overflow)
     - 초기화되지 않은 메모리 사용(uninitialized variables)
     - 잘못된 힙 메모리 관리(double frees)
     - 메모리 오염(movory corruption)
          - 프로세스, 스레드, 또는 커널이 속해 있지 않은 메모리 위치를 수정하거나 메모리 수정이 해당 위치의 상태를 오염시킬 경우 발생.


선수지식
     - 시스템
          -메모리 구조, 어셈블리어, 프로세스 등 기본 시스템 이론
          - 운영체제 커널의 구조 및 작동 원리에 대한 이해( 커널 취약점)
          - 데이터베이스 활용

     - 네트워크
          - 네트워크 계층, 프로토콜 및 전반적인 동작 원리 이해
     
     - 웹
          - 웹의 동작 원리, HTML에 대한 이해
          - DOM, javascript, php, asp ...

     - 언어
          - 아는 만큼 보인다


분석 기술
     - 리버스 엔지니어링
          - 디버거(windbg, ollydbg, IDA pro 등) 활용
          - 분석에 도움을 주는 각종 플러그인 사용법
          - 읽기 능력

     - 패킷 분석
          - 네트워크 패킷 분석 능력(wireshark)

     - 각종 도구 활용 능력
          - 칼리 리눅스
          - 디코딩 도구
          - 필요할 경우 새로운 도구를 직접 학습할 필요성도 존재

     - 영어
          - 아는 만큼 보인다.

생소한 취약점이 나왔을 경우 기술분석을 많이 읽어 보는 것이 좋다.


분석 순서
     - 취약점 정보 수집 및 선정 : 분석 대상정보 수집 및 대상 선정 단계로, 연구와 실무 목적으로 나누어 짐
     - 환경 구축 : 선정한 취약점 분석에 필요한 도구를 파악하고 환경 구축 및 관련 도구 구비
     - 동적 분석, 정적분석


취약점 분석 대상 - 공개된 취약점 - Exploit Tool
                                                - Proof of Concept
                                                - Full Exploit
                         - 미공개 취약점 - ZERO DAY

Information Gathering
- 분석 대상 취약점을 선정하는 기준은 크게 두 가지로 나뉜다.
     - 널리 알려진 취약점
     - 파급력이 강한 취약점

Exploit-DB, 1337에서 취약점 정보 수집 —> 간단한 코드 분석 —> 관련 자료 검색 —> 다음 단계로 진행


정적 분석
 - 정적 분석 대상은 크게 취약점 유발 코드를 담고 있는 코드와, 취약점을 유발하는 코드 두가지로 나눌 수 있다.
     - 취약점 유발 코드를 담고 있는 코드 (html(javascript), C/C++) : 일반 텍스트 편집 도구로 분석
     - 취약점 유발 코드 (swf, pdf, java ..) : 해당 코드를 디컴파일 할 수 있는 도구를 이용해 분석
     - dll : 가장 근본적인 취약점 타겟

동적 분석
- 취약점 코드를 실행함과 동시에 분석을 수행하는 방법으로, 실시간 모니터링을 통해 테스트 시스템의 증상을 파악하고, 후에 정적 분석에 필요한 정보를 수집하는 단계라고 불 수 있다.


MSF + Vuln Analysis
- 쉽고 간단한 취약점 재현 (검증된 모듈)
- 초점을 취약점에만 둘 수 있어서 좋음
- 공격 코드의 구조와 전달 방식 이해에 용이
- 페이로드와 대상 운영체제를 내 마음대로
- 난독화에 머리 싸맬 필요가 없음


Exploit > vulnerablity
- 취약점 분석에 입문하는 분들은 exploit 분석을 권장
- ‘vulnerability’ 분석은 유형별 접근이 필요
- 취약점을 분석하는 것
     - 왜 이런 문제가 발생하는 것인가?
     - 취약한 부분은 정확히 어느 부분이며, 어떻게 개선할 것인가?

- 공격 코드 분석과 취약점 분석은 같은 듯 다르고 다른듯 같습니다.


결론
- MSF는 결국 취약점 분석을 도와 주는 도구일 뿐
- 중요한 것은 기본기 = 시스템에 대한 이해 + 리버스 엔지니어링
- 취약점 분석에 정답은 없음 —> 자신에게 맞는 방법을 찾는 것
- 때로는 백지 상태로 돌아가는 것도 현명한 방법 - shellshock winshock, shock!
- 무궁무진한 취약점 분석의 세계9웹, 앱, 네트워크, 윈도우, 리눅스, 안드로이드, ios….)
- 공부 공부, 공부, 공부, 영어, 영어, 영어, 영어



nababora@naver.com


+ Recent posts