정보보안기사

[정보보안기사(실기)] SECTION 16 주요 취약점

tnvori 2026. 7. 8. 23:32

룡빈관 깐풍기. 촉촉하고 부드럽다. 짬뽕은 나한테 매웠음

1. GNU BASH 취약점(Shellshock)

  1. 개요
  2. Bash 이해하기
    1. 셸 변수 선언
      • 지역변수 — 선언한 셸 내에서만 사용 가능한 변수
        • 선언 — 변수명=변수값
        • 사용 — $변수명
        • echo $$ — 현재 프로세스의 pid 확인
        • bash 명령을 통해 자식 bash 프로세스 생성 후 부모 프로세스에 선언된 지역변수 참조 불가
        • set — 모든 변수 및 함수 목록 반환
        • unset 변수명 — 변수 제거
        • env — 환경변수 및 함수 목록 반환
      • 환경변수 — 선언한 셸뿐만 아니라 자식 셸에서도 사용 가능한 변수
        • 선언 — export 변수명=변수값
    2. 셸 함수 선언
      • 함수 선언
      • 함수의 환경변수 설정
      • bash 셸의 함수 선언 기능 취약점 — 환경변수의 함수 선선언문 뒤에 임의의 명령어를 삽입할 경우, 선언의 끝을 인지하지 못하고 삽인한 명령어까지 실행하는 취약점 존재
  3. GNU Bash 취약점
  4. CGI를 이용한 Bash 취약점 공격 유형
    1. 공격 원리
      • CGI(Common Gateway Interface) — 웹 서버에 요청된 페이지를 응용 프로그램에 전달하고 처리하기 위한 인터페이스
      • CGI — User-Agent와 같은 요청 헤더 정보를 셸의 환경변수에 저장하는데, 공격자가 헤더 정보에 함수와 명령어를 추가하여 전송하면 해당 명령어 실행
    2. 리버스 셸 연결 유형
      • /dev/tcp 특수 파일을 이용한 리버스 셸 연결
      • nc 프로그램을 이용한 리버스 셸 연결
    3. 악성코드 다운로드 유형
    4. 웹셸 생성 유형
  5. 대응 방안
    • 취약한 버전의 Bash를 사용하는 경우 최신 버전으로 업데이트
    • CGI 서비스 사용 유무를 확인하여 해당 서비스를 사용하지 않는 경우 서비스를 중지시키거나 CGI 삭제
    • 네트워크 보안 장비 단에서 공격 시그니처를 등록하여 차단

2. SSL/TLS 관련 취약점

  1. HeartBleed 취약점(2014년 4월)
    1. 개요
      • OpenSSL 라이브러리의 하트비트 확장 모듈의 버그로 인해 발생한 취약점
      • 서버에 저장된 중요 메모리 데이터가 노출되는 취약점
      • CVE-20144-0160 — 시스템 메모리 정보 노출 취약점
    2. 주요 내용
      • 하트비트 확장 모듈
        • SSL/TLS 프로토콜에서 매번 연결을 재협상하지 않아도 상호 간에 연결 지속 신호를 주고받으면서 통신 연결을 유지하게 해주는 기능
        • 클라이언트가 하트비트를 요청하면서 페이로드와 그 길이를 보내면 서버측에서 응답에 그 내용을 길이만큼 복사하여 되돌려주며 연결 확인
      • 하트비트 확장 모듈에서 클라이언트 하트비트 요청 메세지를 처리할 때 데이터 길이 검증을 수행하지 않아 시스템 메모리에 저장된 64KB 크기의 데이터를 외부에서 제한 없이 탈취 가능
      • 노출 가능한 정보 — SSL/TLS 서버 개인키, 세션키, 쿠키 및 개인정보 등
    3. 대응 방안
      • 시스템 측면 대응 방안 — 취약점이 존재하지 않는 OpenSSL 버전으로 업데이트
      • 네트워크 보안 장비 측면 대응 방안
        • snort 탐지 룰 적용
        • 취약점 공격 탐지 및 차단 룰/패턴 적용
      • 서비스 관리 측면 대응 방안
        • 서버측 SSL/TLS 개인키가 유출되었을 가능성이 있으므로 인증서 재발급 검토
        • 취약점에 대한 조치가 완료된 후 사용자들의 비밀번호 재설정을 유도하여 탈취된 계정을 악용한 추가 피해 방지 방안 고려
  2. FREAK 취약점(2015년 2월)
    1. 개요
      • 프랑스 국립 연구소(INRIA) 및 MS사에서 SSL을 통해 강제로 취약한 RSA로 다운그레이드시킬 수 있는 취약점 발견
      • CVE-2015-0204
        • OpenSSL s3_clint.c의 ssl_3get_key_exchange 함수에서 발생하는 취약점
        • MITM 공격을 통해 512비트 RSA로 다운그레이드시켜 정보를 유출시킬 수 있음
    2. 주요 내용
      • SSL 통신 시 MITM을 통해 취약한 export-grade의 RSA를 이용하게 하여 통신 내용의 유출이 가능한 위협 발견
      • 서버 및 브라우저에서 RSA_EXPORT 기능을 제공하는 경우 이에 해당함
    3. 취약점 확인 방법
      • openssl 툴을 이용하여 EXPORT 버전의 cipher suite으로 대상 서버에 접속하여 협상에 성공할 경우 취약한 버전으로 판단
      • openssl s_client -connect 대상 도메인:443 -cipher EXPORT 입력 후 alert handshake failure 확인 시 해당 취약점에 안전
    4. 대응 방안
      • 서버 운영자 — 해당 취약점에 영향을 받는 OpenSSL 버전 사용 시 최신 버전으로 업그레이드
        • 업그레이드가 어려운 경우 OpenSSL “RSA_EXPORT” cipher suite 비활성화
      • 일반 사용자 — 취약점에 영향을 받는 OS 및 브라우저는 업그레이드 필요
  3. LogJam 취약점(2015년 09월)
    1. 개요
      • MITM을 통해 사용자의 웹, 또는 이메일 서버 간의 TLS 통신을 다운그레이드시킴
      • HTTPS 연결에서 OpenSSL을 포함하고 있는 SSL/TLS 클라이언트를 다운그레이드시킬 수 있는 공격
      • 공격자가 임시 Diffie-Hellman 키 교환을 사용하여 TLS 연결을 512비트 수출 버전 암호화로 다운그레이드 가능
    2. 주요 내용
      • 공격자는 취약한 512비트 수출 등급 암호화 연결로 다운그레이드하여 통과되는 트래픽에 대해 읽거나 수정할 수 있으며, 특히 디피-헬만 키 교환 방식이 이 공격에 영향받을 수 있음
      • 다수의 서버가 디피-헬만을 사용할 때 같은 소수를 사용하는데, 이러한 점을 이용하여 공격자는 각각의 커넥션을 복호화할 수 있음
      • 1024비트의 소수까지 해킹 가능
    3. 대응 방안
      • 클라이언트 — 최신 브라우저 사용
      • 서버 — 명시적으로 Export용 cipher suite를 사용하지 않음
      • 2048비트의 디피-헬만 그룹을 생성하거나 타원 곡선 디피-헬만 cipher-suite 사용
  4. POODLE 취약점(2014년 10월)
    1. 개요
      • SSL/TLS 협상 시 버전 다운그레이드 공격을 통해 SSL/TLS 협상 시 버전 다운그레이드 공격을 통해 SSLv3.0을 사용하도록 강제한 후 MITM 공격을 통해 암호화되어 송수신되는 쿠키 정보나 데이터를 추출하는 공격
      • SSLv3.0의 블록 암호화 기법인 CBC 모드를 사용하는 경우 발생하는 패딩된 암호 플록이 MAC에 의해 보호되지 않는 취약점 이용
    2. 공격 방식 — 클라이언트에서 SSLv3.0으로 서버 연결을 요청하고 공격자가 서버 연결을 허용한 후 스니핑 수행
    3. 대응책
      • SSLv3.0을 사용하지 않도록 웹서버 SSL 설정
      • OpenSSL을 최신 버전으로 업그레이드
  5. DROWN 취약점(2016년 3월)
    1. 개요
      • SSLv2.0 취약점을 악용한 교차 프로토콜 공격
      • 공격자는 SSLv2.0을 사용하는 서버에 악성 패킷을 보내 인증서 키값을 알아내고 키값을 이용해 암호화된 통신 내용을 복호화해 주요 정보를 탈취할 수 있음
    2. 대응책
      • SSLv2.0을 사용하지 않도록 웹서버 SSL 설정함
      • OpenSSL을 최신 버전으로 업그레이드

3. NTP DDoS 취약점

  1. 개요
    • NTP — 네트워크를 통해 컴퓨터 시스템간 시간 동기화를 위해 사용하는 인터넷 프로토콜(UDP 123)
    • NTP 서버 명령어(monlist)를 이용하여 대규모 증폭, 반사 형태의 디도스 공격을 유발할 수 있는 취약점
  2. 날짜/시간 관련 주요 유닉스/리눅스 명령어
    • date
      • 현재 서버의 날짜와 시간을 확인하거나 설정할 수 있는 명령어
      • date — 확인
      • date MMDDhhmmCCYY.ss
    • rdate
      • 원격지의 타임 서버를 이용하여 날짜 및 시간 정보를 확인하거나 현재 서버에 설정할 수 있는 명령어
      • 타임 서버 — Time 프로토콜을 이용하여 날짜/시간 정보를 제공하는 서버
      • Time 프로토콜 — TCP, UDP 37번을 이용하여 날짜/시간 정보를 제공하는 인터넷 프로토콜
      • rdate -p “타임 서버” — 타임 서버의 날짜/시간 정보 확인
      • rdate -s “타임 서버” — 타임 서버의 날짜/시간 정보를 현재 서버에 설정
    • ntpdate
      • 원격지의 NTP 서버를 이용하여 날짜 및 시간 정보를 확인하거나 현재 서버에 설정할 수 있는 명령어
      • ntpdate -q “NTP 서버” — NTP 서버의 날짜/시간 정보 확인
      • ntpdate “NTP 서버” NTP — NTP 서버의 날짜/시간 정보를 현재 서버에 설정
  3. NTP 취약점을 이용한 디도스 공격 원리
    • NTP monlist 명령어
      • NTP 서비스 데몬(ntpd)은 질의를 통해 해당 서비스 데몬에 접속한 호스트를 모니터링할 수 있는 기능 지원
      • monlist — NTP 데몬에 질의를 요청하면 최근 접속한 최대 600개의 접속 호스트 리스트를 응답받을 수 있음
      • ntpdc
        • NTP 서버 질의용 프로그램
        • -c 옵션으로 monlist 명령을 지정한 후 대상 NTP 서버로 질의하여 NTP 서버에 최근 접속한 호스트 목록을 최대 600개까지 받을 수 있음
    • 공격 절차
      • 스푸핑 — 공격자는 출발지 IP 주소를 공격 대상 서버의 IP로 패킷 변조
      • 전송 — 취약한 다수의 NTP 서버를 대상으로 monlist 명령의 다수 질의 전송
      • 증폭 및 반사 — 질의를 수신한 NTP 서버는 다수의 접속 호스트 정보를 담은 증폭된 출발지 IP인 공격 대상 서버로 응답
      • 장애 — 공격 대상 서버는 증폭된 다수의 응답 수신으로 네트워크 대역이 소진되어 서비스 거부 상태가 됨
  4. 대응 방안
    • 취약한 ntpd 서버 버전 업그레이드 — monlist 기능이 해제된 4.2.7 이상의 최신 버전으로 업그레이드
    • 서비스 운영상 4.2.7 이상 버전으로 업그레이드가 어려운 경우 설정 변경을 통해 monlist 기능 해제 — ntp.conf에 disable monitor를 추가하여 monlist 기능을 해제하도록 설정한 후 ntpd 데몬 재시작
    • 취약점에 영향을 받는 서버인지 monlist 질의 욫청을 통해 확인
      • ntpdc -n -c monlist <점검 대상 NTP 서버>
        • -n — 응답 결과의 호스트 주소를 숫자 형식으로 출력할 때 사용
        • -c — 질의 명령어 지정
        • 점검 대상 NTP 서버 — IP 주소 또는 도메인명을 지정
    • 보안 장비를 통한 차단 — 일반적인 NTP 서버 응답 패킷은 100바이트 이하이고 monlist 질의를 통한 응답 패킷은 400바이트 내외로 발생하므로 패킷 크기를 이용하여 접근 차단

4. SSDP DDoS 취약점

  1. 개요
    • SSDP
      • 네트워크상의 서비스나 정보를 검색하는 프로토콜
      • 다양한 IoT 기기의 네트워크 탐색 용도로 사용되며 UDP 1900번 포트를 장비 검색 시 사용
  2. SSDP 취약점을 이용한 디도스 공격 원리
    • 동작 방식
      • SSDP는 HTTP 프로토콜과 유사한 형태의 요청/응답 형식을 가지고 있음
      • 네트워크상의 서비스 검색 요청을 위해 아래와 같이 M-SEARCH * HTTP/1.1로 시작하는 요청 패킷 작성
      • M-SEARCH 응답 패킷에는 해당 기기에서 제공하는 서비스 정보가 포함되며 요청 패킷에 비해 사애적으로 매우 큰 응답 패킷으로 인해 증폭 반사 공격으로 악용됨
    • 공격 절차
      • 공격자는 M-SEARCH 요청 패킷의 출발지 IP를 공격 대상 호스트의 IP 주소로 위조하여 SSDP 지원 IoT 기기로 요청 패킷 전송
      • IoT 기기는 트래픽 증폭 반사 역할을 하여 전송받은 패킷에 대한 대량의 응답 패킷 생성
      • SSDP 지원 IoT 기기에서 발생하는 증폭된 대량의 응답 트래픽으로 인해 공격 대상 네트워크 장비 및 호스트에 부하를 발생시켜 서비스 거부 상태 유발
  3. 대응 방안
    • 업무에 불필요한 UDP 포트 차단 및 UDP 서비스 중지
    • 보안 장비를 이용하여 임계치 기반의 UDP 패킷 차단 정책 적용