시스템 보안 · 취약점 › B. 계정 · 인증 보안 강화 · 24/50편 (전체 074/450)
학습 단계: 2단계 · 설정 및 점검
실습 표기: 이 글의 명령어·출력·로그는 로컬 VMware 테스트 VM(Rocky Linux 9 / Ubuntu 22.04) 기준의 「실습 예시」이며, IP·계정·호스트명은 가상의 값입니다.
앞선 편들이 "공격 시도"를 탐지했다면, 이 편은 "시도가 성공했는가" 를 판정합니다. SOC에서 가장 중요한 한 줄은 "실패 반복 끝의 성공", 즉 돌파(breach) 입니다.
돌파 패턴
...Failed... Failed... Failed... Accepted (같은 계정·같은 출발지)
│
└─ 이 성공이 "정상 로그인"인지 "추측 성공"인지 판정
판정 기준
직전 실패 수 : 많을수록 추측 성공 가능성↑
출발지 일치 : 실패와 성공이 같은 IP면 연결성↑
시간 근접 : 실패 직후 수 초~수 분 내 성공
인증 방식 : password(추측 가능) vs publickey(추측 불가, 키 탈취는 별개)
이후 행위 : 성공 세션에서 즉시 권한 상승·설정 변경(A영역 049편)
| 확인 | 명령 |
|---|---|
| 돌파 후보 추출 | 계정·출발지별 Failed 뒤의 Accepted |
| 직전 실패 수 | 성공 직전 N초간 같은 계정·IP 실패 횟수 |
| 성공 방식 | password / publickey |
| 세션 연결 | 성공의 ses → 이후 행위 |
| 관리망 여부 | 출발지가 관리망인지 |
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
(돌파 후보 없음)
또는 직전 실패가 1~2회이고 관리망·키 인증·업무 시간이면, 사용자 오타 후 정상 로그인으로 돌파가 아닙니다.
돌파후보: admin1 192.168.56.5 직전실패=1
→ 관리망, publickey 성공, 09:15 → 오타 후 정상 로그인(돌파 아님)
돌파후보: devops 192.168.56.77 직전실패=219
$ Accepted password for devops from 192.168.56.77 port 50110 ssh2
$ (이후 행위) USER_CMD ... sudo -i ; EXECVE ... useradd ...
sudo -i, useradd → 탈취 후 권한 상승·백도어돌파 판정 결과를 한 줄로 정리한 예시입니다(가상의 예시).
계정 출발지 직전실패 방식 관리망 이후행위 판정
admin1 192.168.56.5 1 publickey 예 일상 업무 정상(오타 후 로그인)
devops 192.168.56.77 219 password 아니오 sudo -i, useradd 돌파 → 탈취 대응
| 판정 요소 | 정상 | 돌파 |
|---|---|---|
| 직전 실패 | 0~2 | 다수 |
| 방식 | publickey | password |
| 출발지 | 관리망 | 비관리망 |
| 이후 행위 | 일상 | 상승·변경 |
<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는 제외해 오탐을 줄입니다.
| 구분 | 핵심 내용 |
|---|---|
| 돌파 | 다수 실패 직후의 성공(같은 계정·출발지) |
| 판정 요소 | 직전 실패 수 · 방식 · 출발지 · 이후 행위 |
| 전환점 | 돌파 전=차단 / 돌파 후=탈취 대응 |
| 방식 구분 | password 돌파 vs publickey(키 탈취는 별개) |
| 면접 포인트 | "돌파 판정이 대응 절차를 바꾸는 분기점" |
다음 편 075. 계정 · 인증 보안 — 로그인 기록 — wtmp·btmp·lastlog 분석 에서는 로그인 기록 원천인 wtmp·btmp·lastlog 분석을 다룹니다.
이전 편: 073. 계정 · 인증 보안 — password spraying 징후 분석
📚 시리즈 전체 보기: 시스템 보안 · 취약점