074. 계정 · 인증 보안 — 성공 직전 실패 패턴 — 인증 돌파 판단

changseop lee·3일 전

시스템 보안 · 취약점 › B. 계정 · 인증 보안 강화 · 24/50편 (전체 074/450)
학습 단계: 2단계 · 설정 및 점검
실습 표기: 이 글의 명령어·출력·로그는 로컬 VMware 테스트 VM(Rocky Linux 9 / Ubuntu 22.04) 기준의 「실습 예시」이며, IP·계정·호스트명은 가상의 값입니다.

선행 학습

1. 개념

앞선 편들이 "공격 시도"를 탐지했다면, 이 편은 "시도가 성공했는가" 를 판정합니다. SOC에서 가장 중요한 한 줄은 "실패 반복 끝의 성공", 즉 돌파(breach) 입니다.

돌파 패턴
 ...Failed... Failed... Failed... Accepted   (같은 계정·같은 출발지)
                                    │
                                    └─ 이 성공이 "정상 로그인"인지 "추측 성공"인지 판정

판정 기준
 직전 실패 수   : 많을수록 추측 성공 가능성↑
 출발지 일치    : 실패와 성공이 같은 IP면 연결성↑
 시간 근접      : 실패 직후 수 초~수 분 내 성공
 인증 방식      : password(추측 가능) vs publickey(추측 불가, 키 탈취는 별개)
 이후 행위      : 성공 세션에서 즉시 권한 상승·설정 변경(A영역 049편)

2. 왜 중요한가

  • 돌파 판정은 대응 전환점입니다. 돌파 전이면 "공격 차단", 돌파 후면 "침해 대응(계정 탈취)"으로 절차가 완전히 달라집니다.
  • 실패만 1000건이면 차단으로 충분하지만, 성공 1건이 섞이면 계정·세션·이후 행위까지 추적해야 합니다.
  • publickey 성공은 비밀번호 추측으로 돌파되지 않으므로, password 돌파와 구분해 다룹니다(키 탈취는 017·018편).

3. 핵심 명령어 / 설정

확인명령
돌파 후보 추출계정·출발지별 Failed 뒤의 Accepted
직전 실패 수성공 직전 N초간 같은 계정·IP 실패 횟수
성공 방식password / publickey
세션 연결성공의 ses → 이후 행위
관리망 여부출발지가 관리망인지

4. 실습 (실습 예시)

LOG=/var/log/secure        # Ubuntu: /var/log/auth.log
# 1) 각 Accepted 직전에 같은 계정·IP 실패가 있었는지 스캔
sudo grep -E 'Failed password for |Accepted .* for ' $LOG | \
  awk '{for(i=1;i<=NF;i++){if($i=="for")u=$(i+1); if($i=="from")ip=$(i+1)}
        if($0 ~ /Failed/){f[u" "ip]++}
        if($0 ~ /Accepted/){if(f[u" "ip]>0) print "돌파후보:", u, ip, "직전실패="f[u" "ip]; f[u" "ip]=0}}'

# 2) 돌파 후보의 성공 방식 확인
sudo grep 'Accepted' $LOG | grep 'for devops from 192.168.56.77'

# 3) 성공 세션 이후 행위 (audit)
sudo ausearch -ua devops -i --start recent 2>/dev/null | grep -E 'USER_CMD|EXECVE' | head

5. 정상 상태

(돌파 후보 없음)

또는 직전 실패가 1~2회이고 관리망·키 인증·업무 시간이면, 사용자 오타 후 정상 로그인으로 돌파가 아닙니다.

돌파후보: admin1 192.168.56.5 직전실패=1
→ 관리망, publickey 성공, 09:15 → 오타 후 정상 로그인(돌파 아님)

6. 이상 상태

돌파후보: devops 192.168.56.77 직전실패=219
$ Accepted password for devops from 192.168.56.77 port 50110 ssh2
$ (이후 행위) USER_CMD ... sudo -i ; EXECVE ... useradd ...
  • 직전 실패 219회 + password 성공 → 추측 돌파가 명백
  • 비관리망·새벽
  • 성공 세션에서 즉시 sudo -i, useradd → 탈취 후 권한 상승·백도어
  • 이 시점부터 "공격 차단"이 아니라 "계정 탈취 침해 대응"

7. 로그 분석 (분석 방법)

돌파 판정 결과를 한 줄로 정리한 예시입니다(가상의 예시).

계정    출발지         직전실패   방식       관리망  이후행위          판정
admin1  192.168.56.5   1          publickey  예      일상 업무         정상(오타 후 로그인)
devops  192.168.56.77  219        password   아니오  sudo -i, useradd  돌파 → 탈취 대응
판정 요소정상돌파
직전 실패0~2다수
방식publickeypassword
출발지관리망비관리망
이후 행위일상상승·변경

8. SOC 관제 포인트

  • 모든 Accepted를 직전 실패 수와 함께 보고, 임계값 이상이면 돌파 후보로 올립니다.
  • password 돌파는 즉시 탈취 대응, publickey 성공은 키 탈취(017·018편) 경로로 분리합니다.
  • 돌파 시점을 기준으로 이후 세션 행위를 전수 추적합니다(A영역 049편 타임라인).

9. 탐지 규칙

<group name="local,syssec_b,authentication,">
  <rule id="101220" level="13">
    <if_sid>5715</if_sid>
    <if_matched_sid>5720</if_matched_sid>
    <same_source_ip />
    <same_user />
    <match>Accepted password</match>
    <description>다수 실패 직후 password 로그인 성공: 인증 돌파(계정 탈취 의심)</description>
  </rule>
</group>

5720은 Wazuh의 "Multiple authentication failures" 계열 룰입니다. 돌파 룰은 실패 누적(5720) + 같은 출발지·계정의 성공을 묶는 것이 핵심이며, publickey는 제외해 오탐을 줄입니다.

10. 대응 방법

  1. 초기 확인 — Accepted 직전의 실패 수·방식·출발지·관리망 여부로 돌파를 판정합니다.
  2. 범위 확인 — 돌파면 성공 세션 이후 행위를 전수 추적하고 다른 서버 성공을 확인합니다.
  3. 증거 확보 — 실패·성공·세션 행위 로그를 보존합니다(탈취 대응 증거).
  4. 차단/조치 — 세션 종료·계정 잠금·비밀번호(키) 교체·출발지 차단, 이후 행위 원복을 진행합니다.
  5. 재발 방지 — 돌파 상관 룰을 운영하고 돌파 시점 기준 타임라인 작성을 표준화합니다.

11. 핵심 정리

구분핵심 내용
돌파다수 실패 직후의 성공(같은 계정·출발지)
판정 요소직전 실패 수 · 방식 · 출발지 · 이후 행위
전환점돌파 전=차단 / 돌파 후=탈취 대응
방식 구분password 돌파 vs publickey(키 탈취는 별개)
면접 포인트"돌파 판정이 대응 절차를 바꾸는 분기점"

12. 다음 편 예고

다음 편 075. 계정 · 인증 보안 — 로그인 기록 — wtmp·btmp·lastlog 분석 에서는 로그인 기록 원천인 wtmp·btmp·lastlog 분석을 다룹니다.


이전 편: 073. 계정 · 인증 보안 — password spraying 징후 분석
📚 시리즈 전체 보기: 시스템 보안 · 취약점

profile
코드에 숨겨진 위협을 읽고 AI로 보안의 미래를 설계합니다. 프론트엔드 개발 경험을 자산 삼아 더 견고하고 지능적인 보안 운영 시스템을 구축해 나가는 과정을 기록합니다

0개의 댓글