시스템 보안 · 취약점 › B. 계정 · 인증 보안 강화 · 39/50편 (전체 089/450)
학습 단계: 3단계 · 이상 징후
실습 표기: 이 글의 명령어·출력·로그는 로컬 VMware 테스트 VM(Rocky Linux 9 / Ubuntu 22.04) 기준의 「실습 예시」이며, IP·계정·호스트명은 가상의 값입니다.
공격자는 단번에 root가 되기보다 여러 계정을 거쳐 상승하기도 합니다. 중간 계정을 경유하면 추적이 복잡해지고 눈에 덜 띕니다. 핵심은 모든 전환에서 auid가 유지된다는 점(008편)입니다.
다단계 상승 예시
devops ──sudo -u postgres──→ postgres ──su root──→ root
│ │ │
auid=devops 전 구간 유지 (중간 계정을 거쳐도 최초 사용자로 추적)
전환 조합
sudo → su : sudo로 계정 전환 후 su로 또 전환
su → sudo : su로 계정 바꾼 뒤 그 계정의 sudo 사용
서비스 경유 : sudo -u apache 로 서비스 계정이 된 뒤 추가 행위
| 추적 수단 | 용도 |
|---|---|
ausearch --session N -i | 한 세션의 모든 전환·명령 |
ausearch -ua <auid> -i | 최초 사용자 기준 전체 행위 |
sudo -u 로그 | 계정 전환(USER=대상) |
su by 로그 | 전환 수행자(008편) |
USER_START acct | 전환된 대상 계정 |
# 1) sudo -u (root 아닌 계정으로 전환) 사용 찾기
sudo grep 'sudo\[' /var/log/secure | grep -v 'USER=root' | sed -E 's/.* ([a-z_]+) : .*USER=([a-z_]+) ; COMMAND=(.*)/\1 -> \2 : \3/' | tail
# 2) 한 세션의 전환 체인 (auid 유지 확인)
SES=12
sudo ausearch --session $SES -i 2>/dev/null | grep -E 'USER_START|USER_CMD|type=USER_LOGIN' | \
sed -E 's/.*(acct=[^ ]+).*(auid=[^ ]+).*(exe=[^ ]+).*/\2 \3 \1/' | sort -u
# 3) 최초 사용자 기준 전체 행위 (중간 계정 무관)
sudo ausearch -ua devops -i --start today 2>/dev/null | grep -E 'exe=.*(sudo|su)' | tail
admin1 -> postgres : /usr/bin/psql -c ...
관리자가 업무상 sudo -u postgres로 DB 작업을 하고, 그 이상 전환이 없는 상태는 정상입니다(단일 목적 전환).
devops -> postgres : /bin/bash
$ (세션 12 체인)
auid=devops exe=/usr/bin/sudo acct=postgres
auid=devops exe=/usr/bin/su acct=root
$ (최초 사용자 기준)
devops: sudo -u postgres bash → su - root
devops가 sudo -u postgres로 DB 계정 셸 → 다시 su root로 상승 → 2단계 경로다단계 상승을 세션으로 재구성한 예시입니다(가상의 예시 로그).
02:11:30 sudo: devops : USER=postgres ; COMMAND=/bin/bash (1단계: devops→postgres)
USER_START auid=devops ses=12 acct=postgres exe=/usr/bin/sudo
02:40:25 su: session opened for user root by postgres(uid=26) (2단계: postgres→root)
USER_START auid=devops ses=12 acct=root exe=/usr/bin/su
02:41:00 (root 권한 명령들) auid=devops ses=12
| 단계 | 전환 | auid |
|---|---|---|
| 1 | devops → postgres(sudo -u) | devops |
| 2 | postgres → root(su) | devops |
| 결과 | root 권한 행위 | devops |
by postgres만 보면 postgres가 범인 같지만, auid·ses가 devops를 가리킵니다. 이것이 다단계 추적의 핵심입니다.
sudo -u·su를 모두 포함해 세션·auid 기준으로 체인을 재구성합니다.<group name="local,syssec_b,privilege,">
<!-- 같은 세션에서 계정 전환이 2회 이상 (다단계 상승) -->
<rule id="101360" level="11" frequency="2" timeframe="600">
<if_group>audit</if_group>
<match>type=USER_START</match>
<same_field field="audit.session" />
<description>단일 세션 내 다단계 권한 전환(sudo/su 체인)</description>
</rule>
</group>
same_field로 세션을 묶는 방식은 Wazuh 버전에 따라 다르므로, 지원하지 않으면 SIEM에서 "같은 ses의 USER_START ≥ 2"로 구현합니다. auid 기반 전체 행위 조회는 SIEM 저장 검색으로 둡니다.
| 구분 | 핵심 내용 |
|---|---|
| 다단계 상승 | 중간 계정을 거쳐 root로(추적 복잡·은폐) |
| 불변 | 전 구간 auid 유지 → 최초 행위자 추적 |
| 조합 | sudo→su, su→sudo, 서비스 계정 경유 |
| 주의 | "by 중간계정"에 속지 말 것 |
| 면접 포인트 | "중간 계정을 거쳐도 auid는 최초 사용자를 가리킨다" |
다음 편 090. 계정 · 인증 보안 — 계정 탈취 의심 지표(IOC) 정리 에서는 계정 탈취의 종합 지표인 계정 탈취 의심 지표(IOC) 정리를 다룹니다.
이전 편: 088. 계정 · 인증 보안 — sudo 실패·권한 없음 로그 분석
📚 시리즈 전체 보기: 시스템 보안 · 취약점