hhkb.dev

BLOG

2025-12-02 / 호스트기반모의해킹 · 20

계정 정보 기반 공격

1. 개요

계정 정보 기반 공격(Credential-based Attacks)은 사용자 이름과 비밀번호를 이용해 인증 경계를 시험하는 유형을 말한다.

  • 핵심: 유효한 계정을 확보하면 정상 사용자처럼 보일 수 있어서, 탐지와 대응이 더 까다로워질 수 있다.

2. 공격 유형 분류

2.1 무차별 대입(Brute Force) & 사전 공격(Dictionary Attack)

먼저 가장 기본적인 두 유형이 있다.

  • Brute Force: 가능한 문자열 조합을 전부 시도하는 방식이다. 시간이 오래 걸려 실제 현장에서는 비효율적인 경우가 많다.
  • Dictionary Attack: 자주 쓰는 비밀번호나 유출된 비밀번호 목록을 기준으로 대입하는 방식이다.

2.2 패스워드 스프레이(Password Spraying)

패스워드 스프레이는 "하나의 비밀번호를 여러 계정에 넓게" 시도하는 방식이다.

  • 목적: 특정 계정에 반복 실패가 누적되지 않도록 해서 계정 잠금(Account Lockout) 정책을 피하려는 데 있다.
  • 예시: 조직에서 흔히 쓰일 법한 계절형 비밀번호를 여러 계정에 분산해 확인하는 형태가 대표적이다.

2.3 크리덴셜 스터핑(Credential Stuffing)

크리덴셜 스터핑은 다른 곳에서 이미 유출된 계정 정보(ID/PW)를 그대로 가져와 대입하는 유형이다.

  • 원리: 사용자가 여러 서비스에서 같은 비밀번호를 재사용하는 경우가 많다는 점을 노린다.

3. 실습 도구 및 기법

3.1 Hydra: 네트워크 서비스 브루트 포스

Hydra는 다양한 프로토콜(SSH, FTP, HTTP 등)에 대해 로그인 검증을 자동화할 때 자주 언급되는 도구다.

SSH/FTP 예시

# -L: 유저 목록, -P: 패스워드 목록
hydra -L users.txt -P passwords.txt ssh://[Target_IP]
hydra -L users.txt -P passwords.txt ftp://[Target_IP]

HTTP Post Form 예시

웹 로그인은 요청 구조를 먼저 파악해야 한다.

  1. Burp Suite로 로그인 요청 패킷을 보고, 파라미터(log, pwd)와 실패 메시지(Invalid username)를 확인한다.
  2. 그다음 아래처럼 요청 형식에 맞춰 검증 구문을 구성한다.
    hydra -l [User] -P [Pass_List] [Target_IP] http-post-form \
    "/wp-login.php:log=^USER^&pwd=^PASS^:F=Invalid"
    
  • ^USER^, ^PASS^: 값이 대입되는 위치를 뜻한다.
  • F=Invalid: 실패 응답을 구분하는 문자열 조건이다.

3.2 WPScan: 워드프레스 전용

WPScan은 워드프레스 환경에서 사용자 열거(Enumeration)와 점검 작업을 자동화할 때 자주 거론된다.

wpscan --url http://[Target_IP] --passwords [Pass_List]

4. 실무에서는?

이 범주는 특히 운영 영향과 정책 확인이 중요하다.

  1. 계정 잠금(Account Lockout) 주의
    반복 로그인 실패는 계정 잠금이나 관리자 경보로 이어질 수 있다. 실제 운영 계정을 잠그면 업무 영향이 커질 수 있으니, 정책(임계치, 잠금 시간)을 먼저 확인하는 편이 안전하다.
  2. 호스트 기반 차단 정책
    짧은 시간에 로그인 시도가 몰리면 WAF, IPS 같은 방어 장비가 출발지 IP를 차단할 수 있다.
  3. 기본 계정(Default Credentials) 확인
    복잡한 검증 전에 초기 계정 관리가 제대로 되어 있는지 확인하는 것만으로도 의미 있는 결과가 나오는 경우가 있다.