hhkb.dev

BLOG

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

SSH 취약점 진단

1. 개요

SSH(Secure Shell)는 원격 시스템 제어에 쓰이는 표준 프로토콜이다. 강한 암호화를 제공한다는 점이 기본 전제다.

  • 특징: 대부분 TCP 22번을 사용한다.
  • 현황: OpenSSH 자체의 치명적 취약점은 드문 편이고, 실제로는 설정 미흡(Misconfiguration)이나 취약한 비밀번호(Weak Credentials)가 더 자주 문제 된다.

2. 주요 진단 항목

2.1 사용자 이름 정보 수집(Username Enumeration)

OpenSSH 7.7 이하 일부 버전에서는 사용자 존재 여부를 간접적으로 추정할 수 있는 타이밍 차이 이슈가 언급된다.

  • 취약점 포인트: 유효한 사용자(root)와 무효한 사용자(invalid-user)를 넣었을 때 응답 시간이나 패킷 크기가 조금씩 다르게 나타날 수 있다.
  • 진단 도구: Metasploit의 ssh_enumusers 모듈을 예시로 많이 든다.
    use auxiliary/scanner/ssh/ssh_enumusers
    set RHOSTS [Target_IP]
    set USER_FILE [Seclists_Path]
    run
    
  • 의미: 유효한 계정 후보를 좁히는 데 참고가 될 수 있다.

2.2 무차별 대입 공격(Brute Force Attack)

유효한 사용자 ID에 대해 비밀번호 사전을 대입해 로그인 정책을 점검하는 방식이다.

보기 전에 아래 두 가지를 먼저 확인해야 한다.

  1. 공개키 인증 강제 여부: 패스워드 로그인을 꺼 두었다면 이 경로는 막혀 있다고 봐도 된다.
  2. 계정 잠금 임계치(Lockout Threshold): 몇 번 실패하면 IP가 차단되거나 계정이 잠기는지 먼저 확인해야 한다.

3. 실무에서는?

실무에서 가장 피해야 할 상황은 운영 계정을 잠그는 것이다.

  1. 사전 협의가 먼저다. Brute Force 계열 테스트는 로그를 많이 남기고 실제 계정을 잠글 수 있어서, 수행 여부와 시간, 대상 범위를 미리 합의해야 한다.
  2. 실제 대입보다 방어 기제 확인에 초점을 두는 경우가 많다. 존재하지 않는 아이디로 반복 시도했을 때 IP 차단 정책(Fail2Ban 등)이 작동하는지 보는 식이 더 안전하다.
  3. 비밀번호 점검이 필요해도 범위는 제한적으로 잡는 편이 낫다. 무제한 대입보다, 많이 재사용되는 상위 기본 조합을 짧게 확인하는 방식이 현실적이다.