시스템 보안 · 취약점 › H. 방어 회피 · 흔적 삭제 징후 · 33/50편 (전체 383/450)
학습 단계: 위장·난독화·흔적 분석
실습 표기: 이 글의 명령어·출력·로그는 로컬 VMware 테스트 VM(Rocky Linux 9 / Ubuntu 22.04) 기준의 「실습 예시」이며, IP·계정·호스트명은 가상의 값입니다.
공격자는 페이로드·명령·통신을 base64·hex·XOR·암호화로 감춰 평문 시그니처 탐지를 회피합니다. 난독화가 "형태 변형"이라면 인코딩·암호화는 "내용 은폐"에 가깝습니다. 디코드/복호화 과정과 고엔트로피가 신호입니다.
인코딩·암호화 기반 우회
base64/hex: echo <base64>|base64 -d|bash
압축+인코딩: gzip|base64 (크기·시그니처 회피)
XOR·단순 암호화: 바이트 치환
암호화 통신: TLS/사용자 정의 암호로 C2 은폐
특징: 고엔트로피 문자열, 디코드→실행 패턴
탐지: 디코드 명령, 고엔트로피, 암호화 통신 메타데이터
핵심은 "내용을 숨겨도 디코드·복호화는 해야 실행된다"는 점입니다. 디코드 명령·고엔트로피 문자열·복호 후 실행이 탐지 포인트입니다.
| 기법 | 방식 | 탐지 |
|---|---|---|
| base64/hex | 디코드 후 실행 | 디코드 명령 |
| 압축+인코딩 | gzip|base64 | 다단 파이프 |
| XOR 암호화 | 바이트 치환 | 고엔트로피 |
| 암호화 통신 | TLS/커스텀 | 메타데이터 |
| 평문 | 인코딩 없음 | 정상 |
# 인코딩·암호화 기반 우회 탐지 (분석 방법)
# 디코드 후 실행 파이프
sudo ausearch -k proc_exec -i --start recent 2>/dev/null | grep -E '(base64|xxd|openssl enc|gzip).*\|.*(sh|bash|python)' | tail
# 고엔트로피 인자(긴 base64/hex 문자열)
sudo ausearch -k proc_exec -i --start recent 2>/dev/null | grep -oE '[A-Za-z0-9+/]{80,}={0,2}' | head
# 사용자 정의 암호화 통신(비표준 포트 TLS 핸드셰이크 — 흐름 메타데이터)
echo "Zeek/NetFlow에서 비표준 포트 암호화 흐름 교차 확인"
$ (디코드 실행) (없음 — 평문 명령)
$ (고엔트로피 인자) (없음 또는 정상 토큰)
명령이 평문으로 실행되고, 긴 인코딩 문자열을 디코드해 실행하는 파이프·비정상 고엔트로피 인자가 없는 상태가 정상입니다.
$ (디코드 실행)
proctitle="echo H4sIA...|base64 -d|gzip -d|bash" (압축+인코딩)
proctitle="openssl enc -d -aes-256-cbc -in x|sh" (복호화 실행)
$ (고엔트로피 인자)
긴 base64(120자+) → 디코드 시 다운로더 스크립트
인코딩·암호화 기반 우회 분석입니다(가상의 예시).
[공격자] 페이로드를 base64+gzip+암호화로 은폐
echo <고엔트로피>|base64 -d|gzip -d|bash
→ 평문 시그니처("wget" 등) 전혀 안 보임
↕ (탐지)
[분석가]
디코드 파이프(base64 -d|...|bash) 자체 탐지
인자 엔트로피 높음(정상 명령과 다름)
디코드 복원 → 실제 페이로드 확인
↓
= 내용은 숨겨도 디코드·복호 과정·엔트로피는 남음 → 정탐
| 관점 | 은폐 | 탐지 |
|---|---|---|
| 내용 | 인코딩/암호화 | 디코드 과정 |
| 문자열 | 고엔트로피 | 엔트로피 측정 |
| 통신 | 암호화 | 흐름 메타 |
디코드 과정 + 고엔트로피가 인코딩·암호화 우회 탐지의 핵심입니다.
<!-- 실습 예시 룰: 적용 전 wazuh-logtest 및 테스트 환경 검증 필요 -->
<group name="local,syssec_h,defense_evasion,">
<rule id="107320" level="12">
<if_sid>107000</if_sid>
<field name="audit.proctitle" type="pcre2">(base64\s+-d|openssl\s+enc\s+-d|xxd\s+-r|gzip\s+-d).{0,40}\|.{0,20}(sh|bash|python|perl)</field>
<description>인코딩·암호화 디코드 후 실행(내용 은폐 우회)</description>
<mitre><id>T1027</id><id>T1140</id><id>T1573</id></mitre>
</rule>
</group>
디코드·복호 후 실행 파이프를 탐지하고, 고엔트로피 인자·암호화 통신 메타데이터로 보완합니다. 정상 배포·암호화 도구 사용은 기준선으로 구분합니다.
| 기법 | 방식 |
|---|---|
| base64/hex | 디코드 후 실행 |
| 압축+인코딩 | gzip|base64 |
| XOR 암호화 | 바이트 치환 |
| 암호화 통신 | TLS/커스텀 |
| 면접 포인트 | "내용은 숨겨도 디코드·복호는 필요 — 그 과정과 엔트로피가 탐지 지점" |
다음 편 384. 방어 회피·흔적 삭제 — LOLBins(정상 도구 악용) 탐지 에서는 정상 도구를 악용하는 LOLBins(정상 도구 악용) 탐지를 다룹니다.
이전 편: 382. 방어 회피·흔적 삭제 — 명령어 난독화(obfuscation) 탐지
📚 시리즈 전체 보기: 시스템 보안 · 취약점