087. 계정 · 인증 보안 — sudo 권한 상승 이상 징후

changseop lee·5일 전

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

선행 학습

1. 개념

sudo는 정상 운영의 핵심이라 "sudo 사용 = 이상"일 수 없습니다. 이상 징후는 "평소와 다른 방식의 권한 상승" 입니다. 056·057편의 분석을 "권한 상승" 관점으로 종합합니다.

sudo 권한 상승의 이상 신호
 ① 신규 sudoer 첫 사용   : 방금 wheel/sudoers에 추가된 계정이 바로 root 사용(031편)
 ② 서비스 계정 sudo       : apache 등이 sudo (A영역 006편)
 ③ 비정상 시간·출발지     : 평소 안 쓰던 계정이 새벽에 sudo
 ④ 셸·인터프리터 상승     : sudo bash/python (057편) → 로그 회피
 ⑤ 권한 확인 명령         : sudo id / whoami (상승 직후 정찰)

정상 sudo(관리자가 업무 시간에 서비스 관리)와 이들을 구분하는 것이 핵심입니다.

2. 왜 중요한가

  • 권한 상승은 공격 흐름의 중심 단계입니다(탈취 → 상승 → 지속성). sudo 경로의 상승을 놓치면 이후 행위를 모두 놓칩니다.
  • 모든 sudo를 Alert하면 운영이 마비되므로, 정상 패턴(누가·언제·무엇)에서 벗어난 상승만 가려야 합니다(기준선, 056편).
  • 상승 직후의 정찰(id/whoami)·셸 진입은 공격의 전형적 다음 수순입니다.

3. 핵심 명령어 / 설정

징후확인
신규 sudoer 첫 사용그룹/sudoers 추가 시각 vs 첫 sudo 시각(031편)
서비스 계정 sudo`sudo ... (apache
시간·출발지sudo 세션의 로그인 출발지·시간(051편)
셸·인터프리터`COMMAND=.../bash
정찰 명령상승 직후 id, whoami, sudo -l

4. 실습 (실습 예시)

LOG=/var/log/secure        # Ubuntu: /var/log/auth.log
# 1) 최근 sudo 성공과 실행 계정·명령
sudo grep 'sudo\[.*USER=root' $LOG | sed -E 's/.*sudo\[[0-9]+\]: +([^ ]+) : .*COMMAND=(.*)/\1 | \2/' | tail -20

# 2) 평소 sudo를 쓰지 않던 계정의 사용 (기준선과 대조)
sudo grep 'sudo\[.*USER=root' $LOG | grep -oE '^\S+ : | [a-z_]+ :' 2>/dev/null
sudo grep 'USER=root' $LOG | awk '{for(i=1;i<=NF;i++)if($i==":"){print $(i-1);break}}' | sort | uniq -c

# 3) 상승 직후 정찰 명령
sudo grep -E 'COMMAND=/usr/bin/(id|whoami)$|COMMAND=/usr/bin/sudo -l' $LOG | tail

5. 정상 상태

admin1 | /usr/bin/systemctl restart httpd
admin1 | /usr/bin/dnf update -y
     84 admin1
      6 devops

평소 sudo를 쓰는 관리자(admin1)가 서비스 관리 명령을 업무 시간에 실행하는, 기준선과 일치하는 상태가 정상입니다.

6. 이상 상태

apache | /bin/bash
devops | /usr/bin/id
devops | /bin/bash
      1 newadmin   ← 방금 추가된 sudoer
     38 devops     ← 평소 주 6건이던 계정 급증(056편)
  • 서비스 계정 apache의 sudo bash(006·057편)
  • devops가 상승 직후 id로 권한 확인 → 정찰
  • newadmin이 추가되자마자 첫 sudo(031편) → 권한 확대 직후 사용
  • 모두 정상 sudo 패턴(관리자·업무시간·서비스 명령)에서 벗어남

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

권한 상승 이상 징후를 한 세션에서 본 예시입니다(가상의 예시 로그).

02:16:10 usermod: add 'apache' to group 'wheel'          (권한 부여)
02:21:00 sudo: apache : USER=root ; COMMAND=/usr/bin/id   (상승 + 정찰)
02:21:05 sudo: apache : USER=root ; COMMAND=/bin/bash     (셸 진입)
type=USER_CMD auid=unset uid=48 ... (서비스 계정, 터미널 없음)
신호해석
그룹 추가 직후 sudo신규 sudoer 첫 사용
첫 명령이 id상승 확인 정찰
이어서 bash로그 회피용 셸 진입
서비스 계정006편 백도어

여러 이상 신호가 한 세션에 겹치면 권한 상승 공격으로 확정에 가깝습니다.

8. SOC 관제 포인트

  • sudo 권한 상승은 기준선 대비 이상(계정·시간·명령·출발지)으로 판정합니다.
  • 서비스 계정 sudo, 신규 sudoer 첫 사용, 상승 직후 정찰·셸 진입은 높은 우선순위입니다.
  • 여러 징후가 한 세션·한 계정에 겹치면 즉시 Incident로 올립니다.

9. 탐지 규칙

<group name="local,syssec_b,privilege,">
  <!-- 상승 직후 정찰 명령 -->
  <rule id="101340" level="9">
    <if_sid>5402</if_sid>
    <regex type="pcre2">COMMAND=\S*/(id|whoami|groups)$</regex>
    <description>sudo 권한 상승 직후 권한 확인 명령(정찰)</description>
  </rule>
</group>

이 룰은 056편(101050 급증)·057편(101060 셸)·031편(101280 부여 후 사용)과 함께 privilege 그룹으로 묶여, 한 세션의 다중 징후를 상관 탐지합니다. 정찰 명령 단독은 낮은 레벨, 조합 시 상향합니다.

10. 대응 방법

  1. 초기 확인 — 이상 sudo의 계정·시간·명령·출발지를 기준선과 비교합니다.
  2. 범위 확인 — 한 세션의 다중 징후(부여→정찰→셸)와 다른 서버 발생을 확인합니다.
  3. 증거 확보 — sudo 로그·audit·세션 로그인 기록을 보존합니다.
  4. 차단/조치 — 비인가 상승이면 세션 종료·권한 회수·계정 조치를 진행합니다.
  5. 재발 방지 — 권한 상승 징후 조합 상관 룰을 운영합니다.

11. 핵심 정리

징후내용
신규 sudoer 첫 사용부여 직후 바로 root 사용(031편)
서비스 계정 sudo006편 백도어
비정상 시간·출발지기준선 이탈(056편)
셸·정찰sudo bash(057편), 상승 직후 id/whoami
면접 포인트"sudo 사용 자체가 아니라 기준선을 벗어난 상승이 이상"

12. 다음 편 예고

다음 편 088. 계정 · 인증 보안 — sudo 실패·권한 없음 로그 분석 에서는 상승 시도가 막힌 흔적인 sudo 실패·권한 없음 로그 분석을 다룹니다.


이전 편: 086. 계정 · 인증 보안 — 공유 계정·기본 계정 위험 분석
📚 시리즈 전체 보기: 시스템 보안 · 취약점

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

0개의 댓글