279. 프로세스·지속성 — 리버스 셸(reverse shell) 징후 탐지

changseop lee·2026년 10월 7일

시스템 보안 · 취약점

목록 보기
279/450

시스템 보안 · 취약점 › F. 비정상 프로세스 · 지속성 징후 · 29/50편 (전체 279/450)
학습 단계: 백도어·C2·은닉 징후
실습 표기: 이 글의 명령어·출력·로그는 로컬 VMware 테스트 VM(Rocky Linux 9 / Ubuntu 22.04) 기준의 「실습 예시」이며, IP·계정·호스트명은 가상의 값입니다.

선행 학습

1. 개념

4단계는 백도어·C2·은닉을 다룹니다. 첫 번째는 리버스 셸입니다. 리버스 셸은 피해 호스트가 공격자 서버로 먼저 연결해 셸을 제공합니다. 인바운드를 막는 방화벽을 우회하는 가장 흔한 원격 제어 기법입니다.

리버스 셸 원리
 bind shell: 피해가 포트 열고 대기(인바운드 — 방화벽에 막힘)
 reverse shell: 피해 → 공격자 연결(아웃바운드 — 방화벽 우회)
   bash -i + /dev/tcp/<공격자>/<포트> (양방향 리다이렉션)
   nc <공격자> <포트> (-e 셸 실행 옵션)
   python/perl/php 소켓 리버스 셸

핵심: 셸 프로세스 + 아웃바운드 연결 결합

리버스 셸은 셸(bash·python)이 외부로 연결하고 입출력을 소켓에 연결하는 것이 특징입니다. F12(셸 실행)+F16(네트워크)의 결합으로 탐지합니다.

2. 왜 중요한가

  • 리버스 셸은 아웃바운드 연결이라 인바운드 차단 방화벽을 우회합니다.
  • 셸 프로세스+외부 연결+입출력 리다이렉션이 결합된 명확한 패턴입니다.
  • 가장 흔한 초기 C2 수단으로, 침투 직후 자주 나타납니다.

3. 핵심 명령어 / 설정

리버스 셸 기법패턴위험
bash /dev/tcp/소켓 리다이렉션매우 높음
nc -enetcat 셸매우 높음
python/perl 소켓인터프리터 셸높음
socat양방향 터널높음
정상 아웃바운드정상정상

4. 실습 (실습 예시)

# 리버스 셸 징후 탐지 (분석 방법)
# 리버스 셸 명령 패턴(F12 재확인)
sudo ausearch -k proc_exec -i --start recent 2>/dev/null | grep -E 'proctitle=.*(/dev/tcp/|/dev/udp/|nc.*-e|socat.*exec)' | tail
# 셸 프로세스의 아웃바운드 연결(F16 결합)
ss -tnp 2>/dev/null | grep -E 'sh|bash|python|nc|socat' | grep -vE '127.0.0.1|::1'

5. 정상 상태

$ (리버스 셸 패턴) (없음)
$ (셸 아웃바운드) (없음)

리버스 셸 명령 패턴이 없고, 셸 프로세스의 외부 연결이 없는 상태가 정상입니다.

6. 이상 상태

$ (리버스 셸 패턴)
proctitle="bash -i  /dev/tcp/192.0.2.88/4444  (양방향 리다이렉션 소켓 연결)"
$ (셸 아웃바운드)
bash(3002) → 192.0.2.88:4444 ESTAB
  • bash /dev/tcp/ 리다이렉션 → 리버스 셸(공격자에게 셸 제공)
  • bash가 외부 4444로 ESTAB 연결 → C2 셸 세션 활성
  • 셸+아웃바운드+리다이렉션 → 리버스 셸 → 정탐(C2)

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

리버스 셸 분석입니다(가상의 예시).

[계보] nginx(985) → sh(3001) → bash(3002) (F11)
   ↓
[실행] bash -i + /dev/tcp/192.0.2.88/4444 (양방향 리다이렉션) (F12)
   ↓
[연결] bash(3002) → 192.0.2.88:4444 (F16)
   ↓
[제어] 공격자가 셸로 원격 명령 실행
 = 웹셸 → 리버스 셸 → C2 (전체 체인)
결합해석
셸 실행(F12)셸 기동
/dev/tcp(F12)소켓 연결
아웃바운드(F16)C2 연결
계보(F11)웹셸 기원

계보+셸+연결을 결합하면 리버스 셸 C2가 명확히 드러납니다.

8. SOC 관제 포인트

  • 리버스 셸은 피해가 공격자로 먼저 연결해 방화벽(인바운드 차단)을 우회합니다.
  • 셸 프로세스+외부 연결+입출력 리다이렉션이 결합된 명확한 패턴입니다.
  • F11(계보)+F12(셸)+F16(네트워크)를 결합해 리버스 셸 C2를 포착합니다.

9. 탐지 규칙

<!-- 실습 예시 룰: 적용 전 wazuh-logtest 및 테스트 환경 검증 필요 -->
<group name="local,syssec_f,c2,">
  <rule id="105280" level="14">
    <if_sid>105010</if_sid>
    <field name="audit.proctitle" type="pcre2">(/dev/tcp/|/dev/udp/)|nc\s+.*-e\s+(/bin/)?(sh|bash)|socat\s+.*exec:.*(sh|bash)|(python[0-9.]*|perl|php)\s+-[ce]\s+.*(socket.*connect|SOCK_STREAM)</field>
    <description>리버스 셸 실행 패턴(방화벽 우회 C2)</description>
    <mitre><id>T1059.004</id><id>T1571</id></mitre>
  </rule>
</group>

리버스 셸 패턴(level 14)은 즉시 경보 대상입니다. 셸 프로세스의 아웃바운드 연결(F16)과 세션 상관해 확정합니다.

10. 대응 방법

  1. 초기 확인 — 리버스 셸 명령 패턴·셸 프로세스·외부 목적지를 확인합니다.
  2. 범위 확인 — 입출력 리다이렉션·아웃바운드 연결·계보(웹셸 기원)를 확인합니다.
  3. 증거 확보 — 리버스 셸 실행·연결·계보 로그를 보존합니다.
  4. 차단/조치 — 리버스 셸 정탐이면 연결 차단·셸 프로세스 종료·계보 추적·지속성 점검을 진행합니다.
  5. 재발 방지 — 리버스 셸 탐지(계보+셸+연결)를 운영합니다.

11. 핵심 정리

리버스 셸 기법패턴
bash /dev/tcp/소켓 리다이렉션
nc -enetcat 셸
python/perl 소켓인터프리터 셸
socat양방향 터널
면접 포인트"리버스 셸은 아웃바운드로 방화벽 우회 — 셸+연결+리다이렉션 결합 탐지"

12. 다음 편 예고

다음 편 280. 프로세스·지속성 — 백도어 리스너(bind shell) 탐지 에서는 백도어 리스너를 다루는 백도어 리스너(bind shell) 탐지를 다룹니다.


이전 편: 278. 프로세스·지속성 — 지속성 메커니즘 종합 분석
📚 시리즈 전체 보기: 시스템 보안 · 취약점

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

0개의 댓글