hhkb.dev

BLOG

2025-11-20 / 호스트기반모의해킹 · 08

취약점 분석 개요

1. 기본 개념 정의

취약점 진단은 포트와 서비스 스캔 결과를 바탕으로, 대상 호스트에 어떤 보안 결함(Security Flaw)이 있는지 가려내는 과정이다.

1.1 용어의 구분

헷갈리기 쉬운 용어는 먼저 구분해 두는 편이 좋다.

  • 취약점(Vulnerability): 시스템의 무결성, 기밀성, 가용성을 해칠 수 있는 설계상 또는 구현상의 결함이다.
    예를 들면 코드 버그나 잘못된 설정(Misconfiguration)이 여기에 들어간다.
  • 익스플로잇(Exploit): 취약점을 이용해 공격자가 원하는 동작을 일으키는 코드나 절차다.
    비유하면 미사일의 추진체(Rocket)에 가깝다.
  • 페일로드(Payload): 침투 이후 실제로 실행되는 행위 코드다.
    비유하면 미사일의 탄두(Warhead)다. 예를 들면 리버스 쉘 연결이나 랜섬웨어 실행이 있다.

2. 공격과 취약점의 모호성

"버퍼 오버플로우(Buffer Overflow)"는 공격인가, 취약점인가?
답은 둘 다 맞다.

  • 취약점 관점: "이 프로그램은 버퍼 오버플로우 취약점을 가지고 있다."
  • 공격 관점: "공격자가 버퍼 오버플로우 공격을 수행했다."
  • 특히 DoS(서비스 거부)는 근본 원인(코드 버그, 자원 부족, 미들웨어 오류 등)을 바로 특정하기 어려워서, 현상 자체를 취약점으로 적는 경우도 있다.

3. 주요 취약점 유형

모의해킹에서 자주 마주치는 대표 유형은 아래 다섯 가지다.

3.1 원격 코드 실행(Remote Code Execution, RCE)

  • 정의: 공격자가 원격에서 대상 시스템의 쉘 명령어나 스크립트를 실행할 수 있는 취약점이다.
  • 위험도: 보통 최상(Critical)으로 본다. 시스템 장악으로 바로 이어질 수 있다.

3.2 인증 우회(Authentication Bypass)

  • 정의: 정상적인 로그인 절차 없이 사용자나 관리자 권한을 얻는 취약점이다.
  • 예시: SQL Injection 기반 로그인 우회, 취약한 세션 관리 등이 있다.

3.3 정보 노출(Information Disclosure)

  • 정의: 소스코드, 설정 파일, 고객 데이터 같은 민감한 정보가 비인가 사용자에게 노출되는 취약점이다.
  • 영향: 이후 공격의 발판이 되는 자격 증명이나 설정 정보를 넘겨줄 수 있다.

3.4 경로 탐색(Path Traversal)

  • 정의: 디렉토리 이동 문자(../)를 제대로 막지 않아, 허용된 경로 밖의 시스템 파일(/etc/passwd 등)에 접근하게 되는 취약점이다.

3.5 서비스 거부(Denial of Service, DoS)

  • 정의: 시스템 자원을 고갈시키거나 프로세스를 강제로 종료시켜 가용성을 마비시키는 취약점이다.
  • 실무 주의: 실제 모의해킹에서는 서비스 중단 위험 때문에 원칙적으로 금지하거나, 별도 스트레스 테스트(Stress Test) 기간에만 수행한다.

4. 인증 컨텍스트

취약점은 "누가 이걸 악용할 수 있는가?"에 따라 체감 위험도가 달라진다.

4.1 인증된 상황(Authenticated)

  • 조건: 공격자가 유효한 계정(ID/PW)을 가지고 있어야 악용할 수 있다.
  • 시나리오: 내부 직원이나 탈취된 계정을 가진 사용자를 가정한 위협이다.
  • 복잡도: 실제 악용 전에 계정 탈취(Credential Harvesting) 과정이 먼저 필요하다.

4.2 미인증 상황(Unauthenticated)

  • 조건: 계정 없이 외부 공격자가 바로 악용할 수 있다.
  • 위험도: 훨씬 더 위험하다. 인터넷에 노출된 순간 누구나 시도할 수 있기 때문이다.
    예를 들어 Log4Shell, MS17-010(EternalBlue) 같은 대형 사고는 대부분 Unauthenticated RCE에 가까웠다.

5. 실무에서는?

실무에서는 RCE만 쫓는다고 좋은 결과가 나오지는 않는다.

  • 복잡한 힙 오버플로우 RCE를 오래 붙잡는 것보다, 단순 정보 노출에서 얻은 SSH 키로 바로 로그인하는 편이 더 효율적일 수 있다.
  • 결국 취약점은 목표를 이루기 위한 도구다. 여러 취약점을 체인으로 묶어, 시스템 장악이나 데이터 유출 같은 최종 목표까지 가장 짧은 경로를 찾는 감각이 중요하다.