4. 시스템 보안

2025. 2. 26. 21:41자격증/정보보안기사

728x90

12. 보안 운영체제

1. 보안 운영체제

개요

  • 기본 개념
    • 컴퓨터 운영체제상에서 내재된 보안상의 결함으로 인해 발생 가능한 각종 해킹으로부터 시스템을 보호하기 위해 기존의 운영체제 내에 보안기능을 통합시킨 보안커널을 추가로 이식한 운영체제
    • 운영체제 내부에 보안기능을 구현한 것으로 기존의 응용 프로그램 실행환경을 유지하면서 시스템 차원의 강려한 보안기능 제공, 기술적 핵심은 정보영역의 분리, 역할기반 영역분리, 최소권한 유지, 커널 레벨의 강제적 접근통제 등

2. 보안 운영체제의 주요 제공 기능

보호 대상 및 방법

  • 보호대상
    • 메모리
    • 보조기억장치 상의 파일 또는 데이터의 집합
    • 메모리상에서 실행 중인 프로그램
    • 파일들의 디렉터리
    • 하드웨어 장치
  • 보호방법(점점 구현복잡도 증가)
    • 물리적 분리 : 사용자별로 별도의 장비만 사용하도록 제한
    • 시간적 분리 : 프로세스가 동일 시간에 하나씩만 실행되도록
    • 논리적 분리 : 각 프로세스에 논리적인 구역을 지정하는 방법
    • 암호적 분리 : 내부에서 사용되는 정보를 외부에서는 알 수 없도록 암호화

파일 시스템 보호

  • 파일 보호기법
    • 개요
      • 파일의 공용문제와 병행하여 고려되어야 함(자원 낭비)
      • 무자격 사용자의 프로그램 무단 접근을 막기 위해 그 파일 소유자가 보호장치를 만들어 놓은 것
    • 파일의 이름 명명(naming)
    • 패스워드(password)
    • 암호화(cryptography)

3. 보안 운영체제와 보안커널

보안 운영체제와 보안 기능

  • 사용자 식별 및 인증
  • 임의적/강제적 접근 통제
  • 객체 재사용 보호
    • 사용자가 파일을 작성할 때, 이를 위한 기억장치 공간이 할당됨
    • 할당되는 기억공간에는 이전 데이터가 삭제되지 않고 존재하는 경우가 많은데 이를 통해 비밀 데이터 노출 가능 → 객체 재사용 공격. 보안 운영체제는 재할당되는 모든 기억장치 공간을 깨끗하게 지워야 함
  • 완전한 조정
    • 모든 접근을 통제하여야 함
  • 신뢰 경로
  • 감사 및 감사 기록 축소
    • 감사 기록부에 기록되어야 하고, 이 감사 기록부는 보호되어야 함

보안커널(Security Kernel)

  • 기본 개념
    • 보안 커널은 TCB 내에 있는 하드웨어, 소프트웨어, 펌웨어로 구성되며, 참조 모니터 개념을 구현하고 집행한다. 보안 커널은 주체와 객체 사이의 모든 접근과 기능을 중재한다.
    • 보안 커널은 신뢰할 수 있는 컴퓨터 시스템을 구축하기 위해 가장 보편적으로 사용된다.
    • 보안 커널의 요구 사항
      • 참조 모니터 개념을 수행하는 프로세스를 위해 분리가 제공되고, 프로세서는 변조를 방지할 수 있어야 한다.
      • 모든 접근 시도에 대하여 실행되어야 하고, 우회하는 것이 불가능해야 한다. 따라서 완전하고 오류가 발생되지 않는 방식으로 구현되어야 한다.
      • 충분히 시험되고 확인되어야 한다.
  • 신뢰 컴퓨팅 기반(TCB)
    • 하나의 컴퓨터 시스템 내의 모든 보호 메커니즘의 총체, 시스템과의 조화를 통해 보안 정책을 적용할 책임을 갖는다.
    • 신뢰된 경로 : 사용자, 프로그램, 커널과의 통신채널. TCB는 보호 기능을 제공
    • 보안경계 : 시스템의 구성요소 중 신뢰/비신뢰 구성요소의 경계. 물리적 실체가 아닌 가상의 경계선
  • 보안커널 설계 시 고려사항
    • 참조모니터
      • 주체의 객체에 대한 모든 접근통제를 담당하는 추상머신
        • 반드시 부정조작이 없어야 한다.
        • 항상 무시되지 않고 호출되어야 한다.
        • 모든 동작을 항상 분석과 테스트를 통해 확인할 수 있어야 한다.
      • 참조모니터의 개념을 위반하는 경우는 주체가 참조모니터를 거치지 않고 객체에 직접 접근하는 경우이다.
      • 참조모니터는 보안커널 데이터베이스를 참조하여 객체에 대한 접근허가 여부를 결정하여야 한다.

4. 신뢰 플랫폼 모듈(TPM)

개요

  • 기본 개념
    • 신뢰 컴퓨팅 그룹이라는 산업체 컨소시엄에 의해 표준화된 개념
    • 신뢰 컴퓨팅을 위한 하드웨어/소프트웨어 방법에서 핵심이 되는 하드웨어 모듈
  • 특징
    • 신뢰 컴퓨팅의 가장 하위에 위치하는 TPM은 훼손 방지가 필수적. 하드웨어칩으로 구현하는 것이 일반적이지만, 소프트웨어로도 구현한다.
    • 칩으로 구현된 TPM은 소프트웨어 방식의 공격과 더불어 물리적인 도난의 경우에도 정보의 노출이 용이하지 않다는 장점을 가진다.

기본 서비스

  • 인증된 부트 서비스 : 전체 운영체제를 단계적으로 부팅하고 운영체제가 적재될 때 운영체제의 각 부분이 사용을 위해 승인된 버전임을 보장
  • 인증 서비스 : TPM에 의해 설정이 완성되고 로그인 되면, 다른 부분의 설정을 인증할 수 있음. 사설키를 사용하여 설정 정보에 서명함으로써 디지털 인증을 만들 수 있음
  • 암호화 서비스 : 특정 기계가 특정 설정으로 되어 있을 때만 그 기계에서 데이터의 복호화를 수행하는 방식, 데이터 암호화를 지원

TPM 함수

  • 구성요소
    • I/O : 모든 명령어는 I/O 구성요소를 통해 들어오고 나감. 다른 TPM 구성요소와의 통신 제공
    • 암호화 보조 프로세서
    • 키 생성 : RSA 공유/사설키 쌍과 대칭키를 만듦
    • HMAC 엔진
    • 무작위 숫자 발생기
    • SHA-1 엔진
    • 전원 탐지 : TPM 전원 상태와 플랫폼 전원 상태 관리
    • Opt-in : 고객 또는 사용자의 의도대로 TPM을 활성화 또는 비활성화할 수 있는 안전한 메커니즘 제공
    • 실행 엔진 : I/O 포트로부터 받은 TPM 명령어를 수행할 프로그램 코드 실행
    • 비휘발성 메모리 : TPM을 위한 신원, 상태 인자를 저장
    • 휘발성 메모리 : 실행 함수를 위한 임시 저장 장치이며 현재 TPM 상태, 암호화 키, 세션 정보와 같은 임시 인자를 저장

13. 클라이언트 보안

1. 악성 소프트웨어(악성 코드)

개요

  • 악성 소프트웨어의 기본 개념
    • 의도적으로 컴퓨터의 보안속성을 침해할 목적으로 작성된 프로그램
  • 악성 소프트웨어의 분류
    • 독립형 : 자체적으로 구동될 수 있는 프로그램, 운영체제에 의해 스케줄되어 구동(웜, 좀비)
    • 기생형 : 다른 실제 응용프로그램이나 유틸리티나 시스템 프로그램 없이 독립적으로 존재할 수 없음(바이러스, 논리폭탄, 백도어)
    • 자기 복제 여부
      • 바이러스성 악성코드 : 웜(다른 프로그램 감염 X), 바이러스(다른 프로그램 감염 O)
      • 비-바이러스성 악성코드 : 트로이목마, 백도어

바이러스(virus)

  • 개념
    • 컴퓨터 바이러스는 자신을 완벽하게 복제할 수 있는 명령 코드를 가지고 있다.
    • 전형적으로 바이러스는 컴퓨터상의 프로그램이나 실행 콘텐츠의 전송자 속에 내장된다.
  • 세대별 분류
    • 제1세대 원시형 바이러스 : 프로그램 구조가 단순하고 분석이 쉬움, 고정된 크기를 가지며, 주로 기억장소에 상주해서 부트 영역이나 파일을 감염시킨다.
    • 제2세대 암호화 바이러스 : 백신 프로그램이 진단할 수 없도록 일부, 대부분을 암호화시켜 저장한다. 실행 시작점 부분에 위치하는 암호해독 데이터는 항상 일정하다.
    • 제3세대 은폐형 바이러스 : 기억장소에 존재하면서 감염된 파일의 길이가 증가하지 않은 것처럼 보이게 하며, 백신 프로그램이 감염된 부분을 읽으려고 할 때 감염되기 전의 내용을 보여줘 바이러스가 없는 것처럼 속인다.
    • 제4세대 갑옷형 바이러스 : 여러 단계의 암호화와 다양한 기법을 동원하여 바이러스 분석을 어렵게 하고 백신 프로그램 개발을 지연시킨다.
    • 제5세대 매크로 바이러스 : 매크로 기능이 있는 MS사 오피스 제품군 이외 비지오, 오토캐드 등 VBS를 지원하는 다양한 프로그램에서 활동한다.
  • 매크로 바이러스
    • 플랫폼과 무관하게 사용한다.
    • 대부분의 바이러스는 문서를 감염시키고 코드의 실행부분은 감염시키지 않는다.
    • 쉽게 퍼진다.(전자메일)
    • 실행 파일을 다룰 때보다 주의를 덜 하기 때문에 피해가 더 크다.
    • PDF 문서는 자바스크립트 같은 다양한 형태의 스크립트를 포함할 수 있다.
    • 데이터 파일 중에 명령어를 실행시키는 MS 워드나 엑셀 등에 붙어서 그 파일이 열릴 때 실행
  • 바이러스 방지책
    • 안티 바이러스 방법
      • 예방
      • 탐지
      • 식별
      • 제거
    • 안티 바이러스 필터링 방법
      • signatire scanning : 특정 바이러스만이 가진 유일한 형태의 signatiure를 찾아내는 방법
      • behavioral virus scanning : 바이러스가 수행 중 어떤 행동을 보이는지 추적하는 방법
    • 바이러스 예방
      • 안전한 소프트웨어 사용
      • 첨부파일 주의
      • 바이러스 스캐너 정기적, 업데이트
      • Windows Script Host, AcriveX, VBScript, JavaScript 비활성화
      • 보안 정책 수립

웜(Worm)

  • 개요
    • 자신을 복제하여 네트워크 연결을 통해 컴퓨터에서 컴퓨터로 복제본을 전송한다. 한 컴퓨터에 도착하게 되면 웜은 복제를 시작하고 다시 확산되기 시작한다.
    • 다른 시스템에 직접적인 영향을 미치지 않는다는 점에서 트로이 목마와 구분되며, 다른 프로그램에 기생하지 않는다는 점에서 컴퓨터 바이러스와 구분된다.
  • 웜 확산 모델
    • 서서히 시작하는 단계 → 빠른 확산 단계 → 서서히 퍼지면서 종료 단계
  • 웜의 실행
    • 버퍼 오버플로우, 포맷 스트링, SQL 삽입, PHP 삽입 등 공격 가능한 시스템 취약점을 이용한다.
  • 웜 대응책
    • 개요
      • 웜이 머신 안에 상주하게 되면 안티바이러스 소프트웨어는 이를 감지할 수 있다.
      • 웜 확산이 이뤄지면 네트워크 활동이 활발해지기 때문에, 모니터링하면 방어할 수 있다.
    • 네트워크 기반 웜 방어
      • 진입 모니터 : 엔터프라이즈 네트워크와 인터넷 사이의 경계에 위치한다.
      • 진출 모니터 : 나가는 트래픽에서 스캐닝의 흔적이나 기타 의심스런 행동을 모니터링해서 웹 공격의 출처를 잡아내도록 설계되었다.

트로이목마(Trojan horse)

  • 개요
    • 자신의 실체를 드러내지 않으면서 다른 프로그램의 한 유형인 것처럼 가장하여 활동
    • 자기 복제를 하지 않으며 다른 파일을 감염시키거나 변경시키지 않는다.
    • 트로이목마가 포함된 프로그램이 실행되는 순간 시스템은 공격자에게 통제 권한을 부여한다.
  • 특징
    • 데이터 파괴의 목적으로 주요 쓰이기도 한다.
  • 트로이 목마의 대응책
    • 신뢰할 수 없는 메일의 첨부파일, 사이트 등의 파일 확인 없이 설치 안하기
    • 취약점 보완 패치 신속하게 적용
  • 스파이웨어(Spyware)
    • 트로이목마와 비슷한 종류
    • 민감한 정보를 수집하여 주기적으로 원격지의 특정한 서버에 보내는 프로그램
    • 신원 도용, 스패밍, 사기 등과 같은 악의적 활동을 위해 사용

기타 악성 소프트웨어

  • 기생 바이러스
  • 논리폭탄
  • 트로이목마
  • 백도어
  • 모바일 코드
  • Exploit
  • Downloaders
  • Auto-rooter
  • Kit
  • 스패머 프로그램 : 원치 않는 대량의 전자우편물 보내는 데 사용
  • 플러더 : 네트워크 컴퓨터 시스템에 대량의 자료를 보내 서비스 거부 공격 감행하는 코드
  • Keyloggers : 피해를 입은 시스템의 키 입력을 갈취
  • Rootkit : 루트 수준의 접근허락을 위해 사용하는 해커 도구 모음
  • 공격 킷 : 다양한 번식방법과 payload 기술을 사용하는 새로운 악성코드를 자동으로 만들어 주는 툴의 모음
  • 좀비
  • 스파이웨어
  • 애드웨어
  • 크라임웨어
  • 브라우저 하이재커
  • 다이얼러
  • 조크
  • Hoax

2. 인터넷 활용 보안

웹브라우저 보안

  • 브라우징 보안
    • 영역 추가와 제거하기
      • 다양한 보안영역을 지원하고 각 영역에 대한 보안 요구사항 사용자가 정의
      • 사용 가능한 영역
        • 인터넷
        • 로컬 인트라넷
        • 신뢰할 수 있는 사이트
        • 제한된 사이트

쿠키(Cookie)

  • 개요
    • 사용자가 인터넷 웹 사이트에 방문할 때 생기는 4KB 이하의 파일
    • 사용자와 웹 사이트를 연결해 주는 정보가 담겨져 있어 클라이언트가 해당 사이트에 접속하려고 할 때 이 쿠키 내용을 이용하여 클라이언트의 신분을 알 수 있게 해줌
  • 쿠키의 일반적 용도
    • 사이트 개인화(성향 파악 등)
    • 장바구니 시스템(내역 저장)
    • 웹 사이트 이용방식 추적
    • 타깃 마케팅
  • 쿠키의 구조
    • 개요
      • 4개의 속성과 하나의 데이터를 가지는 구조체
      • Set-Cookie 헤더를 포함시켜 쿠키설정
    • 유효기간
      • 유효기간이 지나면 쿠키 데이터는 소멸
    • 패스
      • Path 항목을 지정해주면 해당 Path 이하에서는 그 쿠키 데이터를 공유할 수 있다.
    • 도메인
      • 패스 속성을 확장한 것
      • 도메인 단위에서 쿠키 데이터를 읽고 쓰는 권한 설정
  • HTTP 쿠키 관련 보안 속성
    • httpOnly
      • Set-Cookie 응답 헤더에 설정하는 속성. 클라이언트에서 스크립트를 통해 해당 쿠키에 접근하는 것을 차단해주는 속성
      • XSS 공격에 대응
    • secure 속성
      • 클라이언트에서 HTTPS 통신일 경우에만 해당 쿠키를 전송, HTTP일 경우 전송 X
      • 전소구간 암호화를 통해 평문 쿠키가 전송 과정에서 노출되는 것을 방지할 수 있다.
  • 쿠키에 대한 오해
    • 바이러스 전파 X(정보를 담고 있는 텍스트 파일)
    • 사용자 컴퓨터에 피해
    • 다른 웹사이트에서 읽기(쿠키에 저장된 도메인 이름을 갖고 있는 사이트에서만 유효)
  • 쿠키 보안 취약점
    • XSS 공격 : 쿠키값을 유출하기 위한 목적으로 사용(documnet.cookie)
    • 스니핑 공격 : 쿠키 값을 암호화하지 않고 전송한다면 네트워크 스니핑 공격을 통해 탈취
    • 공용 PC에서 쿠키값 유출

세션(Session)

  • 개요
    • 개별 클라이언트 상태정보를 서버에 저장하는 기술
    • 세션ID부여, 클라이언트와 서버 간에 주고받음
    • 클라이언트 상태정보를 저장하기 때문에 보안상 안전
    • HTTP 세션 하이재킹 공격 가능(세션 정보 탈취)
  • 안전한 세션 ID 관리
    • 세션 ID 생성
      • 안전한 서버에서 생성
      • 최소 128비트 길이, 안전한 난수 알고리즘 사용
    • 세션 ID 사용
      • URL Rewrite 기능 사용 X
    • 세션 ID 폐기
      • 장시간 접속 X , 주기적으로 세션 ID 재할당

14. 윈도우 서버 보안

1. 윈도우

  • 윈도우 시스템의 구조
    • 개요
      • 5개의 링으로 구분됨
      • 가장 하단에 하드웨어, HAL, 마이크로 커널, 각종 관리자 : 커널 모드
      • 사용자 모드 : 응용 프로그램 순으로 나뉜다.
      • HAL : 하드웨어와 개발된 소프트웨어 간에 원활한 통신이 가능하도록 도와주는 역할
    • 윈도우 시스템의 구조
  • 윈도우의 특징
    • GUI 환경
    • Plug & Play : 하드웨어를 새롭게 추가하는 경우 자동으로 인식하여 환경 설정
    • 단축 아이콘/바로가기
    • 멀티태스킹
    • OLE : 개체 연결 포함 기능으로 프로그램 간에 개체를 교환할 수 있다.
    • 네트워크 기능 향상 : 다양한 프로토콜 제공, 네트워크 설치나 인터넷 연결 등을 편리하게 할 수 있다. 특히 Netbios
    • 다중 모니터 지원
    • 정보의 전송 통합
  • 윈도우 파일시스템
    • FAT16
      • 기본적으로 2GB까지 한 파티션으로 설정 가능
      • 기본 크기는 16비트, 하드디스크에 파일을 담는 최소 단위인 클러스터가 32KB임
      • 전체 가능 용량은 2GB → 시간이 지남에 따라 너무 작다고 여겨짐
    • FAT32
      • 총 32비트개의 클러스터를 가짐
      • 현재도 종종 사용. 호환성이 좋아 다리눅스나 다른 운영체제에 정보를 옮길 때 유용함
      • 접근제어를 설정할 수 없다는 문제점 존재
    • NTFS
      • 접근제어가 적용된 윈도우 파일시스템
      • 개별 폴더와 파일에 사용 권한 설정 가능/ 각 파일과 폴더의 해당 계정만 접근하여 암호화 가능
      • 특정 계정의 사람이 언제 파일을 열거나 시도했는지 아는 감사 기능 제공
      • NTFS 디스크 구조
        • MBR(Master Boot Record)
          • 파티션 생성 시 물리적 디스크의 첫 번째섹터에 위치하는 512byte 크기의 영역
          • 부트 코드, 파티션 테이블, 시그니처로 구성되어 있다.
          • 부팅될 때 BIOS에 의해 POST과정을 마친 후 MBR의 부트 코드를 호출하고 부트 코드는 부팅 가능 파티션을 찾아 해당 파티션 VBR의 부트 코드를 호출한다.
        • VBR(Volume Boot Record)
          • 윈도우 부팅을 위한 기계어 코드와 볼륨, 클러스터의 크기, MFT의 시작주소 등 설정 정보를 담고 있으며 파티션의 가장 마지막 섹터에 VBR 백업본 존재
        • MFT(Master File Table)
          • 볼륨/파일시스템에 존재하는 모든 파일과 디렉터리에 대한 정보를 담고 있는 테이블. NTFS에서 가장 중요한 영역
          • MFT 엔트리의 집합으로 구성되어 있는데 각 엔트리는 하나의 파일, 디렉터리에 대한 정보를 담고 있는 자료구조로 파일의 위치, 시간 정보, 크기, 파일 이름 등 다양한 속성 정보들로 구성되어 있음
        • 시스템 파일
          • 파일 복사나 삭제 과정 중 오류를 일으킬 때 복구하는데 사용할 디스크 사용에 대한 로그 파일, 디스크 볼륨 이름 등 디스크 자체에 대한 정보를 담는 파일
        • 파일 영역
          • 실제 데이터 저장
    • 디스크 파괴형 악성코드의 특징
      • MBR 또는 VBR을 훼손하여 정상적으로 부팅되지 않도록 하는 악성코드
      • MBR 영역의 모든 값을 특정 문자나쓰레기 값으로 덮어씌워 부팅을 할 수 없게 하거나 VBR 영역을 훼손하여 파일시스템 복구가 불가능하도록 만듦
      • MBR 손상 : 부트 코드를 정상 디스크에서 복사하고 각각의 파티션 정보를 수집하여 복구
      • VBR 손상 : 파티션의 가장 마지막 섹터에 있는 VBR 백업본을 덮어 씌워 복구
    • FAT16과 FAT32 파티션을 NTFS로 변환 : CONVERT 유틸리티 존재
  • 윈도우 부팅 순서
    • XP, 2000/2003
      1. POST 실행(Power On Self Test)
        • 하드웨어 스스로 시스템에 문제가 없는지 기본 사항을 검사하는 과정
      2. 기본 부팅 관련 설정사항 로드
        • BIOS는 CMOS에 설정되어 있는 시스템 설정사항 및 부팅과 관련된 여러 정보를 읽어 시스템에 적용한다.
      3. MBR 로드
      4. NTLDR 실행
        • 하드디스크의 부팅 파티션에 있는 프로그램, 윈도우 서버 2000이 부팅될 수 있도록 간단한 파일시스템을 실행하고 boot.ini 파일의 내용을 읽어 가능한 부팅 옵션을 보여줌
      5. NTDETECT.com 실행
        • NTLDR에서 제어권을 위임받아 시스템에 설치된 후 하드웨어 검사
      6. ntoskrnl.exe 실행
        • HAL,DLL 로드
    • Vista, 2008, 7의 부팅 순서
      1. 윈도우 부트 서브 시스템 실행
        • MBR에서 NTLDR이 실행되지 않고 윈도우 부트 서브시스템 실행. bootmgr.exe 가 실행되고 부트 설정 데이터(BCD)를 읽어 실행 가능한 운영체제의 목록을 보여줌
      2. 윈도우 OS 로더(Winload.exe) 실행
        • NTDETECT와 같이 각종 장치 드라이브를 로드하고, ntoskrnl.exe 실행
    • 1~3은 같다.

2. 윈도우 보안

윈도우 설치

  • 윈도우 설치 시 중요사항
    • 파티션 나누기
      • 파티션 : 하나의 물리적인 하드디스크에 논리적으로 분할 영역을 만드는 것
      • 하드디스크에 칸막이 공사를 하여 하나의 하드디스크를 서로 별개의 하드디스크처럼 쓰기 위해 분할하는 것
      • 파티션을 나누면 다른 드라이브로 인식. 윈도우를 2개 이상 설치해서 멀티부팅도 가능

윈도우 계정, 권한, 인증

  • 윈도우의 계정과 권한 체계
    • 기본 사용자와 그룹
      • Administrator : 관리자 권한의 계정
      • SYSTEM : 시스템에서 최고 권한을 가진 계정. 로컬에서 관리자보다 상위 권한. 원격 접속이 불가능하며, 사용자가 이 계정을 사용하여시스템 로그인 불가능
      • Guest : 제한적인 권한을 가짐. 기본 설정 사용 불가
    • 윈도우 설치 시 기본적으로 생성되는 그룹
      • Administrators
      • Account Operators : 사용자나 그룹 계정을 관리하는 그룹
      • Backup Operators : 시스템 백업을 위해 모든 시스템의 파일과 디렉터리에 접근 가능
      • Guests : 도메인 사용 권한이 제한된 그룹. 시스템의 설정 변경 권한 없음
      • Print Operators : 도메인 프린터에 접근 가능
      • Power Users : 디렉터리나 네트워크 공유, 공용 프로그램 그룹 생성, 컴퓨터의 시계 설정
      • Replicator : 도메인에 있는 파일을 복제할 수 있는 권한을 가진 그룹. 로컬 로그인과 시스템재시작 및 종료권한
      • Server Operator : 도메인 서버를 관리할 수 있는 권한을 가진 그룹. 로컬 로그인과 시스템 재시작 및 종료 권한
      • Users : 도메인과 로컬 컴퓨터를 일반적으로 사용하는 그룹. 대부분의 권한 X
    • SID(Security Identifier)
      • 윈도우의 각 사용자나 그룹에 부여되는 고유식별번호
      • whoami / user 명령으로 SID를 알아볼 수 있다.
      • ex ) S-1-5-21-1801674531-839522115-1708737768-500
        • S : SID
        • 1 : revision number(SID 버전)
        • 5 : Identifier authority value(윈도우 보안 권한 ,48비트)
        • 21~1708737768 : Sub-authority value : 도메인 또는 로컬 컴퓨터 구분자. 시스템의 고유한 숫자로 설치할 때 특성을 수집하여 생성
        • 500 : relative ID, 기본적으로 생성되는 builtin 계정이 아니라면 1000보다 큰 숫자가 생성. 관리자는 500, guest는 501, 일반 사용자는 1000번 이상의 숫자
      • SID의 종류
        • S-1-0-0 : SID를 모를 때 사용
        • S-1-1-0 : Everyone
        • S-1-5-7 : Anonymous
        • S-1-5-18 : System Profiles(시스템의 서비스용 계정)
        • S-1-5-19 : Local Service
        • S-1-5-20 : Network Service
        • S-1-5-domain-500 : Administrator
        • S-1-5-domain-501 : Guest
  • 윈도우의 권한 상승
    • 일반 사용자가 Administrator와 SYSTEM으로 실행되고 있는 프로세스의 권한을 뺏는 것
    • 상위 권한으로 수행되고 있는 프로그램의 프로세스에 다른 작업을 끼워넣어 권한을 뺏음
  • 윈도우 인증과 패스워드
    • 윈도우 인증의 구성요소
      • LSA : 모든 계정의 로그인에 대한 검증, 시스템 자원 및 파일 등에 대한 접근 권한 검사
        • 로컬, 원격 모두 해당
        • 이름과 SID를 매칭하며 SRM이 생성한 감사 로그를 기록하는 역할
        • NT 보안의 중심 요소, 보안 서브시스템이라고도 불림
      • SAM : 사용자/그룹 계정 정보에 대한 데이터베이스 관리
        • 사용자의 로그인입력 정보, SAM 데이터베이스를 비교해 인증 여부 결정
        • $systemroot%/system32/config/sam
        • SAM이 사용자의 계정과 패스워드의 일치 여부를 확인하여 SRM에 알리면, SRM은 사용자에게 SID를 부여한다. SRM은 SID에 기반하여 파일이나 디렉터리에 대한 접근을 허용할지를 결정하고, 감사 메시지를 생성한다.

공유자료 관리

  • 네트워크 드라이브의 이해
    • 대상 컴퓨터의 드라이브를 내 컴퓨터에서 네트워크 드라이브로 설정하여 내 컴퓨터의 드라이브처럼 사용할 수 있는 기능
    • 바탕화면의 내 컴퓨터에서 마우스 오른쪽버튼으로 네트워크 드라이브 설정을 클릭
  • 파일과 폴더의 보안권한 설정
    • 모든 권한
    • 수정 : 폴더 삭제 가능
    • 읽기 및 실행 : 읽기 수행, 디렉터리나 파일 이동 가능
    • 폴더 내용 보기 : 디렉터리의 파일이나 서브 디렉터리의 이름 볼 수 있음
    • 읽기 : 디렉터리의 내용 읽기만 가능
    • 쓰기 : 해당 디렉터리의 서브 디렉터리와 파일을 생성할 수 있으며 소유권이나 접근 권한의 설정 내용을 확인할 수 있음
  • 디렉터리 및 파일에 대한 접근 권한 설정
    • 규칙 1 : NTFS 접근 권한은 누적된다.
    • 규칙 2 : 파일에 대한 접근 권한이 디렉터리에 대한 접근 권한에 우선한다.
    • 규치 3 : 허용보다 거부가 우선이다.
  • 공유 자료 관리
    • 공유 폴더 숨기기
      • 리소스를 공유하면서도 숨길 수 있음(이름 끝에 $를 붙이기)
      • 숨겨진 공유 폴더 보기 : cmd 창에서 net share 명령어
      • 공유 자체가 취약함(잘 알려져 있기 때문)
      • 기본 공유를 중지시켜도 운영체제가 재시작되면 자동으로기본 공유 폴더를 만듦
      • 레지스트리 편집기에서 DWORD를 새로 만들어 0으로 설정(완전 제거)
    • 원도우 공유 폴더
      • C$, D$
        • C드라이브에 대한 관리목적 공유 폴더. 연결되어 있는 하드 드라이브 문자수만큼 공유, E드라이브까지 있다면 E$까지 있음
        • 기본 공유 폴더를 통해서 인가받지 않는 사용자가 하드디스크 내의 모든 폴더나 파일에 접근 가능
      • ADMIN$
        • 윈도우 설치 폴더에 접근하는 관리목적 공유 폴더
      • IPC$
        • 프로세스간 통신. 네트워크 등에서 프로세스 간 통신을 위해 사용하는 통로
        • 동시에 수행될 개별 프로그램을 생성하고 다룰 수 있게 해주는 인터페이스
        • 단일 사용자의 요구가 여러 프로세스를 수행하는 결과를 가져올 수 있기 때문에 필요
        • 이를 제거하면 네트워크 서비스에 문제가 생길 수 있어 레지스트리 값을 수정해서 익명 사용자의 네트워크 접근이 불가능하도록 설정하는 것이 좋음

암호 기능 사용

  • 폴더 및 파일 암호화(EFS)
    • 윈도우 운영체제에서 개별 파일 또는 특정 폴더 안에 있는 모든 파일을 암호화 할 수 있는 기능
    • 파일이나 폴더의 속성을 변경하여 사용 가능
  • 볼륨 암호화(BitLocker)
    • 윈도우 운영체제에서 제공하는 볼륨 단위의 데이터 암호화 기능
    • 볼륨 : 논리적 드라이브(파티션 드라이브)
  • BitLocker는 전체 시스템 볼륨의 모든 데이터에 대한 암호화 기능 제공, EFS는 컴퓨터의 단일 또는 복수 사용자에 대한 파일/폴더 단위 암호화 구성할 때 적용

레지스트리 활용

  • 개요
    • 윈도우 시스템이 운영되는데 필요한 정보를 담고 있음
    • 사고분석에 있어 공격자의 중요한 흔적을 찾을 수 있음
  • 레지스트리 편집기 실행
    • 레지스트리 설정을 열람, 수정, 추가, 삭제 가능
    • 검색, 저장, 가져오기 가능
    • regedit, regedt32 입력
    • 윈도우 부팅 시 하이브 파일에서 값을 읽어 들여 구성됨. 하이브 파일에서 직접 읽어 들여 구성되는 키를 Master Key, Master Key로부터 값을 가져와서 재구성하는 키를 Derived Key
      • Master Key : HKLM(HKEY_LOCAL_MACHINE), HKU(HKEY_USERS)
      • Derived Key : HKCU(HKEY_CURRENT_USER), HKCC(HKEY_CURRENT_CONFIG), HKCR(HKEY_CLASSES_ROOT)
  • 레지스트리 루트키
    • HKEY_CLASSES_ROOT(HKCR)
      • 시스템에 등록된 파일 확장자와 열 때 사용할 애플리케이션에 대한 맵핑 정보, COM 오브젝트 등록 정보를 저장하고 있다.
    • HKEY_CURRENT_USER(HKCU)
      • 현재 시스템에 로그인하고 있는 사용자와 관련된 시스템 정보를 저장하고 있다.
      • HKEY_USERS에서 설정한 내용보다 우선권을 갖게 된다.
    • HKEY_LOCAL_MACHINE(HKLM)
      • 컴퓨터에 설치된 하드웨어와 하드웨어를 구동시키는 데 필요한 드라이버나 설정 사항에 관련된 정보를 갖고 있다.
      • HKLM\HARDWARE : 메모리에 휘발성 정보로만 존재. 부팅시 감지된 모든 하드웨어와 그 하드웨어 장치의 드라이버 맵핑 정보들이 보관됨
      • HKLM\SAM : 사용자의 패스워드, 소속 그룹, 도메인 정보와 같은 로컬 계정 정보와 그룹 정보를 가지고 있음
      • HKLM\SECURITY : 시스템 범위의 보안 정책과 사용자 권리 할당 정보를 가지고 있으며, 시스템 계정 이외의 접근이 불가능
      • HKLM\SYSTEM : 시스템이 부팅될 때 필요한 시스템 환경 설정 정보를 가지고 있음. 성공적으로 부팅됐을 때의 값을 복사본으로 두었다가 비정상적으로 종료되었을 때 사용자에게 복사본 정보 제공
    • HKEY_USERS(HKU)
      • 시스템에 있는 모든 계정과 그룹에 관한 정보를 저장
      • 모든 계정의 프로파일이 있다는 것을 제외하고는 서브키가 HKCU와 동일
      • 윈도우 사용자가 한 명일 경우, HKCU와 모두 일치
      • user.dat에 데스크톱 설정, 네트워크 연결등의 정보가 저장되있음
    • HKEY_CURRENT_CONFIG(HKCC)
      • 시스템이 시작할 때 사용하는 하드웨어 프로파일 정보 저장
      • 디스플레이와 프린터에 관한 설정 정보 갖고 있음
  • 레지스트리 보호
    • 레지스트리 접근 제한
      • UAC(사용자 계정 컨트롤). 관리자 암호 모르면 레지스트리 편집기 사용 불가
    • 현재 레지스트리 상태 저장
      • 윈도우 시스템의 복원 기능 활용(snapshot) → 복구
    • 레지스트리 키 디스크에 복사
      • 키의 디스크 백업 : 키 데이터를 레지스트리 등록파일(.reg)에 저장하는 것
  • 레지스트리 공격
    • 개요
      • 악성 코드 감염 시 시스템에는 파일 생성, 레지스트리 변경 등의 시스템 변화가 일어남
    • 부팅 시 악성코드 실행
      • 악성 코드 구동을 위해 사용되는 레지스트리 : HKLM, HKCU
      • HKCU\~~~\Run : 개별사용자 지속용
      • HKCU\~~~\RunOnce : 개별사용자 일회용
      • HKLM\~~~\Run : 전체사용자 지속용
      • HKLM\~~~\RunOnce : 전체사용자 일회용
    • 특정 확장자 실행 시 악성코드 실행
      • HKCR 위치의 값을 임의로 조작하여 특정 확장자 실행 시 원하는 프로그램 실행시킴
    • 공격자가 남긴 레지스트리 정보 수집
      • HKCU\~~~\Explorer\Recentdocs : 최근 사용한 문서
      • HKCU\~~~\Terminal server\Default : 터미널 서비스 접속 목록
      • HKCU\Software : 설치된 소프트웨어 목록
      • HKCU\~~~\Explore\ComDlg32\OpenSaveMRU : 열어본 파일 목록

윈도우 방화벽(PC 방화벽)

  • 개요
    • 네트워크상의 웜이나 공격자로부터 PC를 보호하기 위해서 사용
    • PC 내부로 유입되는 패킷뿐만 아니라 나가는 패킷까지 차단
    • 사용자에게 해당 네트워크 패킷의 적절성 여부 확인
  • 설정 방법
    • 아웃바운드 규칙, 인바운드 규칙 설정

3. 윈도우 서버 보안 설정

계정 관리

  • Administraor 계정 이름 바꾸기
  • Guest 계정 상태 → 비활성화
  • 계정 잠금 임계값과 잠금기간 설정
  • 관리자 그룹에 최소한의 사용자 포함
  • 암호화 패스워드 정책 설정(최소암호 길이 8, 최대 사용 기간 90, 최소 사용기간 1일 또는 1주)

서비스 관리

  • 공유 권한 및 사용자 그룹 설정
    • Everyone이 공유계정에 포함되어 있으면 위험
  • 하드디스크 기본 공유 제거
    • 불필요한 공유 제거
      • IPC$는 정상적인 방법으로 제거할 수 없으며, 제거할 경우 특정 서비스가 실행되지 않을 수 있음
      • net share 공유이름 /delete
      • 레지스트리 값 0으로 수정
    • Null Session 접근 차단 설정
      • 비인가된 사용자가 Null Session을 통해 사용자 인증을 거치지 않고 서버에 접근 시 시스템 내부로의 접근이 가능한 취약점 존재
      • 방화벽, 라우터, 네트워크 고급설정 등에서 원천적으로 차단할 수 있음
  • 불필요한 서비스 제거
    • Alerter(서버에서 클라이언트로 경고 메시지를 보내는 서비스)
    • Clipbook(서버 내 Clipbook을 다른 클라이언트와 공유)
    • Messenger(net send 명령어를 이용하여 클라이언트에 메시지 보냄)
    • Simple TCP/IP Services(Echo, Discard, Character Generator, Daytime, Quote of the Day)
  • 패치 관리
    • 감사 정책에 따른 시스템 로깅 설정
      • 적당하게 설정

4. Windows 네트워크 서비스

  • 디렉터리 데이터베이스(Directory database)
    • 네트워크 디렉터리 서비스 : 사용자들에게 리소스 제공. 사용자가 리소스의 정확한 위치와 접근하기 위해 필요한 단계들을 알 필요가 없다.
      • LDAP, NDS, Microsoft Active Directory
    • Active Directory : 네트워크상의 개체에 대한 정보를 저장하며 관리자와 사용자가 이 정보를 쉽게 찾아 사용할 수 있도록 한다.
      • 디렉터리 정보를 논리적인 계층 구조로 조직한다.
      • 서버, 볼륨, 프린터 등의 공유 리소스와 네트워크 사용자 및 컴퓨터 계정 포함
    • Active Directory 서버
      • 도메인 내에서 서버로 동작하는 컴퓨터는 구성원 서버나 도메인 컨트롤러의 역할 중 하나를 수행할 수 있음. 도메인 내에 있지 않은 서버는 독립 실행형 서버가 된다.
      • 구성원 서버는 계정 로그인을 처리하지 않고 Active Directory 복제에 참여하지 않거나 도메인 보안 정책 정보를 저장하지 않는다.

15. 유닉스/리눅스 서버 보안

1. 유닉스(UNIX)

개요

  • UNIX 시스템의 특징
    • 대화식 운영체제
    • 멀티태스킹
    • 멀티유저
    • 호환성 및 이식성
    • 계층적 파일시스템
    • 뛰어난 통신 기능
    • 다양한 기능의 유틸리티와 개발환경 제공
  • UNIX 운영체제 종류
    • 유닉스
      • 오라클
      • AIX
      • HP-UX
    • 리눅스
      • 페도라
      • 우분투

UNIX의 구성

  • 커널
    • 개요
      • 항상 메모리에 상주하여 하드웨어 자원을 제어하면서 다양한 기능을 사용자에게 제공
      • 가장 하위 수준에서 하드웨어와 직접 관계한다. 커널의 일부분은 특정 컴퓨터 시스템의 하드웨어에 종속적이다.
    • 시스템 호출(System call)
      • 사용자 프로그램이 커널에 접근하는 인터페이스 제공 - 커널 내 서브루틴 형태로 존재
      • 입출력 시스템 호출, 프로세스 간 통신시스템 호출, 프로세스 관리시스템 호출 등
  • 셸(Shell)
    • 운영체제와 사용자가 대화하기 위한 기반을 제공하는 프로그램
    • 명령어 해석기 부분 담당
    • 본 셸, C 셸, 콘 셸, 배시 셸 등 다양한 종류가 있다.
  • 파일시스템(File System)
    • 디렉터리 구조
      • 트리 구조를 가지며 최상위 디렉터리는 루트
      • root 디렉터리는 / 로 표기.
      • /etc : 시스템의 환경 설정, 주요 설정 파일
      • /dev : 프린터나 터미널 같은 물리적인 장치를 다루기 위한 특수 파일
      • /usr/bin : 기본적으로 실행 가능한 파일을 담고 있따.(echo, mv, copy, pwd 등)
      • /usr/include : C 언어 라이브러리 헤더 파일이 저장되는 디렉터리
      • /usr/lib : 기본 프로그램의 모듈을 담고 있다.
      • /usr/sbin : 시스템 관리 명령어가 저장되는 디렉터리
      • /home : 사용자 홈 디렉터리가 저장되는 디렉터리
      • /tmp : 프로그램 실행 및 설치 시 생성되는 임시 파일을 담고 있다.
      • /var : 시스템 로그가 저장되는 디렉터리
    • 파일시스템의 구조
      • 부트 블록 - 슈퍼 블록 - i-node - 데이터 블록
    • i-node
      • 유닉스에서 각 파일에 대한 정보를 기억하는 120byte의 고정된 크기 구조체
      • 일반 파일이나 디렉터리 파일의 i-node는 각 파일의 디스크 블록 위치를 포함
      • 특수 파일의 i-node는 주변장치를 식별할 수 있는 정보 포함
      • i-node는 파일에 대한 정보와 이 파일에 할당된 디스크 블록의 주소를 저장하는 필드들로 구성
    • 슈퍼 블록(Super Block)
      • 파일시스템의 정보를 유지하는 자료구조
      • 슈퍼 블록에는 파일시스템의 요약정보와 함께 사용하지 않고 있는 i-node와 디스크 블록의 위치정보도 가지고 있다.

2.UNIX 기본 사용법

파일시스템 응용

  • 파일과 디렉터리 관리
    • ls
      • -F : 디렉터리인지 어떤 종류의 파일인지 * : 실행 파일 / : 디렉터리 @: 심볼릭 링크
      • -i : i-node 번호를 보여준다
      • -R : 하위 디렉터리 내용들까지
      • -a : 도트 파일을 포함하여 디렉터리 내에 모든 디렉터리 및파일을 보여줌
      • -l : 목록형태로 자세히
          • : 일반 파일
        • d : 디렉터리 파일
        • l : 심볼릭 링크 파일
        • b : 블록 장치 특수 파일
        • c : 문자 장치 특수 파일
        • p : 파이프, 프로세스간 통신에 사용되는 특수 파일
        • s : 소켓, 네트워크 통신에 사용되는 특수 파일
      • 접근권한
        • user : 파일을 만든 소유주
        • group : 파일을 만든 소유주가 속한 그룹의 사용자
        • other : 기타 사용자
        • 읽기r(4)
        • 쓰기w(2)
        • 실행x(1)
        • 일반 파일의 경우 666, 디렉터리의 경우 777을 디폴트 값
        • 디렉터리에 실행 권한이 없으면 디렉터리 안으로 들어갈 수 없음
        • umask로 지정한 값만큼 디폴트 값에서 뺀다(앞으로 생성되는 파일이 갖지 말아야 할 접근권한을 명시하는 기능)
      • 하드 링크수 : 링크 카운터. 동일한 i-node를 참조하는 파일의 수
      • 소유주 : 생성 후에도 변경 가능. chown 명령어 사용
      • 소유 그룹 : 생성 후에도 변경 가능. chgrp 명령어 사용
  • 파일 권한 관리
    • 접근권한 변경(chmod)
      • 기존 파일, 디렉터리에 대한 접근권한을 변경할 때 사용
        • R : 하위 디렉터리와 파일의 권한까지 변경
    • 소유권, 그룹 변경(chown/chgrp)
      • -h : 심볼릭 링크 파일 자체의 소유주나 그룹 변경

프로세스 응용

  • 개요
    • 첫 번째 프로세스
      • swapper(0) - init(1) - pagedaemon(2)
      • fork() : 자식 프로세스에게 부모의 코드, 자료, 스택 영역의 복사본이 할당됨
      • exec() : 자신의 현재 코드, 자료, 스택을 실행 가능한 다른 코드, 자료, 스택으로 치환
      • 스와프, 페이지 데몬과 같은 프로세스는 커널 모드에서 영구적으로 실행(커널 프로세스)
      • 시스템 내의 모든 다른 프로세스들은 init 프로세스의 자손
    • 프로세스의 생성 및 종료와 관련된 두 가지 규칙
      • PID가 0인 프로세스를 제외한 모든 프로세스는 실행 중에 부모 프로세스를 갖게 된다.
      • 프로세스 종료 시 자신을 생성한 부모 프로세스에게 자신의 종료를 알린다.

3. UNIX 시스템 관리

시스템 시작과 종료

  • 부팅 관련 용어 정리
    • 런 레벨
      • 시스템의 운영 상태를 숫자, 문자로 표현한 것
      • 0 : PROM 모드(Programmable Read-Only Memory)
      • S, s : 시스템 싱글 유저 모드, 로컬 파일시스템이 마운트 되지 않은 상태
      • 1 : 시스템 싱글 유저 모드, 로컬 파일시스템이 마운트 된 상태
      • 2 : 멀티 유저 모드(NFS 클라이언트 모드)
      • 3 : 멀티 유저 모드(NFS 서버 모드) UNIX 기본 Run level
      • 4 : 사용 안함
      • 5 : 시스템 power off 모드
      • 6 : 시스템 리부팅
    • 시스템 런 레벨 단계 구성
      • INIT 상태는 런 레벨을 옮겨 다니며 각 레벨마다의 역할을 수행한다
      • init 명령어 다음에 런 레벨을 쓰면 해당 런 레벨로 이동
    • 시스템 종료
      • shutdown 명령은 시스템을 안전하게 종료할 때 사용. 런 레벨 변경할 때도 사용
    • 하드디스크 동기화(sync)
      • 하드디스크의 입,출력에 대한 효율성을 높이기 위하여 버퍼를 운영한다
      • 시스템이 비정상적으로 종료되면 버퍼에 있는 데이터가 하드디스크에 반영되지 않아서 무결성에 문제가 생김

파일시스템 관리

  • 파일시스템 연결(mount)
    • mount : 보조기억장치에 설치된 파일시스템을 UNIX 시스템이 인식하도록 특정 디렉터리에 논리적으로 연결시켜줌
  • 파일시스템 연결 해제(umount)
    • 이전에 마운트 된 파일시스템의 연결 해제
    • 파일을 사용중이거나 사용자가 연결 해제하려는 디렉터리에 있다면 device is busy
    • /etc/mtab : 시스템에 마운트 된 파일시스템의 정보 관리
    • 루트 디렉터리는 언마운트 불가

프로세스 스케줄 관리

  • 정기적 스케줄 관리(cron)
    • 정기적인 작업을 지정시간에 처리하기 위해 사용
    • 일괄적으로 처리해야 하는 작업인 경우에 사용
    • 작업에 대한 요구가 불규칙하지 않은 경우에 사용
    • crontab : 정기적으로 처리할 작업 목록 정의
    • 분 시 일 월 요일 작업 순으로 필드 나열
      • : 모든 값
    • / : 간격 값

4. UNIX 서버 보안

시스템 보안

  • 사용자의 패스워드 관리
    • /etc/passwd파일의 두 번째 필드에 패스워드 → /etc/shadow 파일에 암호화된 패스워드 저장
    • :를 이용하여 7개의 필드로 구성
    • 로그인 ID : 비밀번호(x) : 사용자 ID(0) : 그룹 ID(0) : 사용자 설명 : 홈 디렉터리 : 로그인 셸
    • pwconv, pwunconv : shadow 파일 사용/미사용
    • UID 중복 가능 → 보안상 위험
    • /sbin/nologin, /bin/false : 로그인이 불필요한 계정 설정권고
    • shadow 파일
      • 계정별 암호화된 패스워드 정보와 패스워드 에이징 정보(패스워드 관리정책)가 저장되어 있음
      • 사용자 계정 : 암호화된 패스워드 : LAST DAY(마지막 변경) : MIN DAYS(최소 변경 일수) : MAX DAYS(최대 변경 일수) : WARN DAYS(경고일수) : INACTIVE DAYS(최대 비활성 일수) : EXPIRE DATE(사용자계정이 만료되는 날)
  • 접근권한 마스크(umask)
    • /etc/profile에 umask를 설정하여 전체 사용자에게 획일적인 값 적용가능
    • 파일에는 666에서 umask를 빼고, 디렉터리는 777에서 umask를 뺀다
  • 권한상승
    • RUID : 프로세스를 실행시킨 사용자의 UID
    • RGID : 프로세스를 실행시킨 사용자의 GID
    • EUID : 프로세스가 실행중인 동안에만 부여되는 UID(자원에 대한 접근권한을 판단하기 위함)
    • EGID : 프로세스가 실행중인 동안에만 부여되는 GID(자원에 대한 접근권한을 판단하기 위함)
    • 최초로 로그인 시 모두 같은 값을 갖고, SetUID 비트를 가진 프로그램 실행 시 일치하지 않는 상태 발생
    • SetUID 비트가 설정되는 순간 해킹 대상이 되기 때문에, 설정 파일 목록화 필요
    • SetUID가 설정되어 있는 프로그램을 실행하는 경우 이 프로세스가 갖는 권한은 프로그램을 실행한 사용자의 권한이 아닌 프로그램 소유주의 권한이 된다
  • 디렉터리 접근권한(Sticky-bit)
    • 공유모드
    • 모든 사용자가 파일이나 하위 디렉터리를 생성할 수 있지만 지우는 것은 소유주나 root인 경우에만 가능
    • t

네트워크 보안

  • 슈퍼 서버(inetd 데몬)
    • N개의 개별 서버를 하나로 통합하여 클라이언트로부터 서비스 요청이 올 때마다 해당 서비스와 관련된 실행 모듈을 실행해준다
    • /etc/inetd/conf 파일에서 불필요한 서비스 제한 가능(주석 처리)
    • 서비스 : 소켓 타입 : 프로토콜 : 대기 설정 : 로그인 이름 : 서버 : 인자
  • 접근 통제(TCPWrapper)
    • 외부에서 들어오는 클라이언트에 대해 접근통제 기능 제공
    • IP주소를 확인하여 허용한 호스트들에 대해서만 서비스 허용
    • tcpd 데몬은 접속을 요구한 클라이언트가 적절한 접근 권한이 있는지검사하고 해당 데몬에 연결을 넘겨준다. 연결에 대한 로깅도 실시한다.
    • 모든 프로토콜에 대한 접근 제어를 할 수는 없다.(standalone 데몬 같은 경우
    • hosts.allow, hosts.deny파일에 접근 통제 ALL:ALL 설정
    • /usr/sfw/sbin/tcpdchk 실행해서 오류 없는지 확인
  • PAM(장착형 인증 모듈)
    • 리눅스 배포판에서 사용자 인증의 핵심
    • 기존 응용 프로그램 수정 필요 없이 새로운 인증 서비스 모듈을 추가하여 사용할 수 있음
    • 각 프로그램은 인증이 필요한 부분에 PAM 라이브러리 호출
    • type : control : module-path : module-arguments
      • type : 모듈 종류
        • account : 시스템 사용권한 확인
        • auth : 실질적인 인증기능, 패스워드 확인을 담당하는 모듈
        • password : 패스워드를 설정하거나 확인하는데 사용하는 모듈
        • session : 사용자가 인증 성공 시 세션을 맺어주는 모듈
      • control : 모듈 실행 후 성공, 실패에 따른 PAM 라이브러리 행동 결정
        • requisite : 모듈 실행에 실패하면 바로 인증 거부
        • requried : 모듈 실행에 실패해도 동일 유형 모듈 실행을 완료한 시점에서 인증 거부
        • sufficient : 이전 모듈이 실패하더라도 이 모듈에서 이증에 성공하면 인증 승인
        • optional : 모듈의 성공, 실패 응답 상관 X

5. 리눅스(Linux)

  • 리눅스의 개요 및 특징
    • 유닉스 타입의 운영체제
    • 리누즈 토발즈가 개발
  • 파일시스템의 종류 및 특징
    • minix : 가장 오래되고 기본이 되는 파일시스템
    • ext2 : 2차 확장 파일 시스템
      • fack : 리눅스 파일시스템 복구 기능
    • ext3 : 3차 확장 파일 시스템
      • 저널링 기술 : 데이터를 디스크에 쓰기전에 로그에 데이터를 남겨 시스템의 비정상적인 셧다운 발생 시 에도 로그를 사용해 안전적인 복구기능 제공

6. 유닉스/리눅스 서버 취약점 분석, 평가

계정 관리

  • root 계정 원격 접속 제한
  • 패스워드 복잡성 설정
  • 계정 잠금 임계값 설정
  • 패스워드 파일 보호
  • root 이외의 UID가 ‘0’ 금지
  • 패스워드 최소 길이 설정
  • 패스워드 최대 사용 기간 설정
  • 패스워드 최소 사용기간 설정

파일 및 디렉터리 관리

  • root 홈, 패스 디렉터리 권한 및 패스 설정
  • 파일 및 디렉터리 소유자 설정
  • HOME/.rhosts, hosts.equiv 사용 금지

16. 서버 보안 관리

1. 서버관리자의 업무

보안 유지 관리

  • 로깅 정보 감시 및 분석, 정기적 백업, 시스템 보안 테스트
  • 로깅
    • 이미 발생한 나쁜 일을 알려주기만 하는 반작용적 제어

서버관리자의 업무

  • 시스템관리자 계정으로 작업하기
    • root 계정으로 로그인하기
    • root 계정으로 변경하기(su)
  • 사용자 계정 관리
    • 원격 접근권한 제거 : /etc/passwd 파일에서 /bin/bash 과 같은 셸을 삭제
    • 계정 사용기간 설정 : /etc/shadow 파일에서 사용기간 또는 만료일 설정
  • 자원 관리
    • 프로세스 관리
      • wait : 프로세스가 끝나기를 기다리는 명령어
      • nice : 우선순위 변경할 수 있는 값을 설정하는 명령어
    • 메모리 관리
      • free : 시스템의 실제 메모리와 스왑 메모리에 대한 사용 현황을 확인
    • 메일, 디스크 등의 자원 관리
      • du : 디스크의 파일 사용량 재귀적으로 보여줌
  • 네트워크 관리
    • ifconfig : 통신 디바이스 상태 확인
    • netstat -an : 현 시스템에서 사용되는 통신 서비스의 상태 확인
    • top : 시스템 자원 사용현황 확인
    • ps -elf : 현 시스템에서 수행 중인 프로그램과 데몬 상태 확인
    • who, w : 로그인되어 있는 사용자 확인
    • snoop : 네트워크 흐르는 패킷 캡처하여 분석
    • nslookup : 도메인에 대한 IP 정보 및 도메인 네임과 관련된 여러 검색 가능
    • hostname : 현 시스템에 할당된 호스트 이름 확인
    • traceroute : 특정 호스트까지의 네트워크 라우팅 경로 및 경유하는 IP 확인
    • inetd : 네트워크 슈퍼데몬인 inetd 실행

2. 로그 설정과 관리

시스템 로그 분석

  • 로그
    • 윈도우 : 중앙 집중화된 로그 수집 및 저장, 유닉스 : 여러 곳에 산발적 저장
  • 윈도우의 로그 분석과 설정
    • net session 명령어를 통해 로그인된 사용자 확인 /delete로 끊을 수 있음
    • psloggedon : 원격에 있는 관리자가 로컬로 로그인한 사용자 정보를 필요로 할 때 유용
    • 로그 종류
      • 응용 프로그램 로그
      • 보안 로그
      • 시스템 로그
      • 디렉터리 서비스 로그
      • 파일 복제 서비스 로그
      • DNS 서버 로그
    • 감사 정책 : 어떤 로그를 남길지 정의한 규칙
      • 개체 엑세스 감사
      • 계정 관리 감사
      • 계정 로그인 이벤트 감사
      • 권한 사용 감사
      • 로그인 이벤트 감사
      • 디렉터리 서비스 액세스 감사
      • 정책 변경감사
      • 프로세스 추적 감사
      • 시스템 이벤트 감사
    • 이벤트 로그 파일
      • .evt 확장자를 가진 파일
      • 응용 프로그램로그 : AppEvent.Evt
      • 보안 로그 : SecEvent.Evt
      • 시스템 로그 : SysEvent.Evt
      • 바이너리 형식
  • 유닉스/리눅스의 로그 분석과 설정
    • syslogd데몬 : 중앙 집중적 관리
    • 로그가 다양한 경로로 남아 모두 파악하기 어려움
    • 로그 경로
      • /usr/adm
      • /var/adm
      • /var/log
      • /var/run
    • utmp(x) 로그
      • utmp 데몬이 로그를 남김 : 유닉스의 가장 기본적인 로깅을 제공하는 데몬
      • w, who, users, whodo, finger 등의 명령어로 로그 출력
      • 현재 시스템에 로그인한 사용자의 상태 출력
    • wtmp(x) 로그
      • wtmp 데몬이 로그를 남김
      • /usr/include/utmp.h 파일의 구조체를 그대로 사용
      • utmp 데몬과 비슷한 역할
      • last 명령어로 확인 가능
    • sulog
      • su 권한 변경에 대한 로그
      • /var/adm/sulog 파일에 텍스트 형식으로 남음. 권한은 600(관리자만 읽고 씀)
      • 공격자가 로그인을 시도했을 때 권한 변경 실패를 의미하는 여러 개의 - 로 저장됨
    • acct/pacct 로그
      • 시스템에 로그인한 모든 사용자가 수행한 프로그램에 대한 정보를 저장하는 로그
      • 대형 시스템을 여러 사용자가 비용을 지불하는 형식으로 공유할 경우 각 사용자에 대한 요금을 부과하기 위해 이용됨
      • 시스템 자원을 비교적 많이 소모, 기본적으로 동작하지 않음
      • /usr/adm/pacct 파일에 바이너리 형태로 저장
      • acctcom, lastcomm 명령을 통해 확인가능
    • .sh_history 또는 .bash_history
      • 실행한 명령에 대한 기록
      • history 명령으로 확인 가능
    • loginlog, btmp
      • Linux : /var/log/btmp, binary 파일로 되어 있고 lastb 명령 사용. 실패한 모든 로그를 남김
      • Unix : /var/adm/loginlog, 텍스트 파일로 되어 있음. 5회 이상 실패 시 실패한 로그 남감
    • lastlog
      • 가장 최근에 성공한 로그인 기록을 담고 있는 로그 파일
      • binary 파일로 되어 있고 lastlog, finger 명령 사용
    • FTP 파일 전송 로그(xferlog)
      • proftpd, vsftpd 데몬들의 서비스 내역을 기록하는파일
      • 공격자가 FTP 서비스를 이용해 시스템에서 어떤 파일을 복사했는지, 어떤 파일을시스템에 복사해두었는지 찾아내야 할 때 유용함
      • 파일 크기 : 전송된 파일의 이름 : 전송 방법 : 특수 동작 : 방향 : 접근 계정 : 서비스 이름 : 인증 서버 사용 여부 : 인증 사용자 ID : 파일 전송 성공 여부
    • HTTPD Log
      • 웹서비스에 의한 로그는 /usr/local/apache/logs 디렉터리에 로그 파일로 남는다
  • 유닉스/리눅스 시스템의 로그 설정(/etc/syslog.conf)
    • 데몬 프로세스의 시작 시 환경설정 파일 /etc/syslog.conf를 읽어서 어떤 로그를 어디에 남길지 결정
    • facility.priority; facility.priority action(logfile-location)
    • 서비스 이름.우선순위; 로그를 어디에 남길지
  • 로그 관리
    • 로그 모니터링
      • /var/log/secure 파일처럼 텍스트 형식의 로그를 실시간으로 모니터링 : tail -f /var/log/messages
      • 바이너리 형식의 로그파일들은 텍스트 편집기를 통해서 확인 불가
    • 로그 순환 : logrotate(리눅스시스템 로그파일 관리기)

응용 프로그램 로그 관리

  • IIS 웹 서버 로그
    • W3C 형식으로 남도록 설정
    • 주요 로그 필드
      • date
      • time
      • c-ip : 웹 페이지에 접속한 사용자 계정, 공격자 IP
      • cs-username : 웹 페이지에 접속한 사용자 계정
      • s-computername : 웹 서버 이름
      • s-ip : 웹 서버 IP
      • s-port : 웹 서버 포트
      • cs-method : HTTP 메소드
      • cs-uri-stem : 요청 페이지
      • cs-uri-query : 요청 파라미터(대부분의 공격 필드에 삽입)
      • sc-status : 응답 코드(사용자 요청이 정상인지 확인)
      • Cs(Referer) : 사이트 접속 전에 어떤 사이트를 거쳤는지에 대한 정보 제공(악성 코드 삽입 여부 확인 가능)
      • Cs(Cookie) : 사용자의 쿠키 정보 기록
  • Apache 웹 서버 로그
    • 클라이언트의 요청에 의해 웹서버가 응답한 내용은 액세스 로그에 기록되고
    • 클라이언트 요청에 의해 웹서버에 오류가 발생했을 경우 에러 로그에 기록된다

3. 공개 해킹도구에 대한 이해와 대응

크래킹 S/W

  • 크래킹의 개요
    • 해킹과 비교하여 악의적인 목적을 가지고 시스템에 침입하는 행위
  • 사례
    • John the Ripper : 패스워드 점검 도구
    • pwdump : 패스워드 덤프하는 도구
    • L0phtCrack : 패스워드 취약점 점검도구
    • ipccrack : 원격지에서 추측하여 취약점 점검
    • chntpw : 패스워드 리셋시키는 프로그램
    • ERD Commander : 윈도우 시스템에서 패스워드를 복구해야 하는 경우 사용

키로그 S/W

  • 개요
    • 설치된 컴퓨터에서 키보드로 입력한 정보를 로그로 남기는 프로그램
    • 로그파일을 실시간으로 공격자에게 전송하거나, 설정된 메일 및 메신저로 지정된 시간에 로그파일을 자동 전송하는 기능도 있음
  • 키보드 해킹방지 프로그램
    • 사용자의 키보드 입력 자체를 보호하여 사용자가 입력하는 정보를 제3자가 알아볼 수 없도록 해주는 프로그램

4. 서버보안용 S/W 설치 및 운영

취약점 분석 도구

  • 취약점 분석
    • 일정한 보안 수준을 유지하기 위해 정기적으로 수행해야 함
  • 취약점 분석 도구
    • SATAN
      • 해커와 똑같은 방식으로 시스템에 침입, 보안상의 약점을 찾아 보완할 수 있는 네트워크 분석용 보안 관리 도구
      • 해커에게 노출될 수 있는 약점을 사전에 발견, 보완 조치
    • SARA
      • SATAN이 업데이트가 되지 않는 상황에서 SATAN을 기반으로 개발된 취약점 분석도구
    • SAINT
      • 유닉스 플랫폼에서 동작하는 네트워크 취약점 분석도구
      • HTML 형식의 보고서 기능이 있음
      • 원격에서 취약점 점검 가능
    • COPS
      • 유닉스 플랫폼에서 동작하며 시스템 내부에 존재하는 취약점 점검 도구. 패스워드 체크
    • Nessus
      • 클라이언트-서버 구조로 클라이언트의 취약점을 점검하는 기능
    • nmap
      • 포트스캐닝 도구. stealth 모드로 포트 스캐닝 기능 포함

무결성 점검

  • 파일 무결성 점검(tripwire)
    • 정상적인 상태의 디렉터리 및 파일 정보를 백업하고 있다가 점검 수행 시점에서의 정보와 백업한 정보를 비교하여 변경된 사항을 점검하는 도구
    • 다양한 해시 함수 지원, 파일에 대한 데이터베이스를 만들어 공격자들에 파일 변조여부 판별
    • 시그니처 역시 공격 대상이 됨
    • 동작방식
      • 최초 설정파일에 등록된 파일 및 디렉터리의 해시값을 생성하여 데이터베이스에 저장
      • 주기적으로 동작하여 기존 데이터베이스에 해시값과 현재 해시값 비교
      • 비교 결과 값이 다를 경우 변경 내역 출력

스캔 탐지

  • 스캔 탐지 도구
    • mscan : 메인 전체 스캔. 주요 취약점을 한 번에 스캔할 수 있는 해킹 도구
    • sscan : mscan 업데이트
    • portsentry : 실시간으로 포트 스캔 탐지. 대응하기 위한 프로그램

침입탐지 및 방화벽

  • 네트워크 모니터링 및 침입탐지 도구
    • Snort
      • 실시간 트래픽분석과 IP 네트워크에서의 패킷 처리를 담당하는 공개 소스 네트워크 침입탐지시스템
      • 프로토콜 분석, 콘텐츠 검색 및 조합 작업 가능. 다양한 공격 감지
      • 유연한 언어 사용으로 트래픽 분석, 모듈화된 탐지 엔진 지원, 실시간 경고 기능
  • 방화벽
    • TCP-Wrapper
      • 네트워크 서비스에 관련한 트래픽을 제어하고 모니터링할 수 있는 UNIX 기반의 방화벽 툴
    • IPchain / IPtable
      • 패킷 필터링 방화벽

17. 각종 시스템 보안위협 및 대응책

1. 버퍼 오버플로우 공격

개요

  • 프로세스 메모리 구조와 스택 프레임 구조
    • 프로세스 메모리 구조
      • Text : 프로그램 코드와 상수 정의. 읽기만 가능한 메모리 영역. 데이터를 저장하려고 하면 분할 충돌을 일으켜 프로세스가 중지됨
      • Data : 전역 변수와 정적 변수 저장
      • Heap : 동적 메모리 호출에 의해 할당되는 메모리 영역
      • Stack : 함수 인자 값, 함수 내의 지역 변수, 함수의 반환 주소 등이 저장
  • 기본 개념
    • 버퍼 또는 데이터 저장 영역에 할당된 용량보다 더 많은 입력이 위치하면 다른 정보를 변경할 수 있는 조건 → 시스템을 중지시키거나 시스템 제어를 갖기 위한 코드 삽입 가능
    • 프로세스가 정해진 크기의 버퍼 한계를 벗어나 이웃한 메모리 위치에 데이터를 겹쳐 쓰려고 시도하는 것과 같은 프로그래밍 오류의 결과로 발생
  • 공격 원리strcpy 함수가 입력된 인수의 경계를 체크하지 않아 buffer[10]으로 10바이트 길이보다 큰 인수를 받아도 스택에 쓰이게 된다.
  • int main(int argc, char *argv[]){ char buff[10]; strcpy(buffer, argv[1]); print("%s\\n", buffer); }

스택 버퍼 오버플로우

  • 개요
    • SetUID가 설정된 루트 권한의 프로그램을 공격대상으로 한다.
    • 스택에 정해진 버퍼보다 큰 공격 코드를 삽입하여 반환주소를 변경함으로써 임의의 공격 코드를 루트 권한으로 실행하도록 하는 방법
  • 셸코드
    • 오버플로우가 발생하는 버퍼에 저장되는 공격자의 코드로 실행 제어를 이동시키는 코드
    • 사용자 명령어 라인의 해석기인 셸로 제어를 넘기고 공격당한 프로그램의 권한으로 시스템의 다른 프로그램에 접근
  • 공격 절차
    1. 공격 셸 코드를 버퍼에 저장
    2. 루트 권한으로 실행되는 프로그램의 특정 함수의 스택 반환주소 버퍼를 오버플로우 시켜서 공격 셸 코드가 저장되어 있는 버퍼의 주소로 덮어씌움
    3. 특정 함수의 호출이 완료되면 조작된 반환 주소로 셸 코드의 주소가 반환되어 셸 코드가 실행되고, 루트 권한을 획득하게 됨

힙 오버플로우

  • 개요
    • 힙 : 프로그램과 전역 데이터 위에 위치하며 메모리 위 방향을 커진다(스택과 반대)
    • 힙에 요청되는 메모리는 레코드의 연결리스트와 같은 동적 데이터 구조를 위해 사용됨
    • 실행 제어를 쉽게 이동시킬 수 있는 반환 주소는 없음
    • 할당된 공간이 함수에 대한 포인터를 포함하고 있다면 공격자는 이 주소를 변경하여 겹쳐 쓴 버퍼에 있는 셸코드를 가리키도록 할 수 있다.

버퍼 오버플로우 공격 대응책

  • 개요
    • 컴파일 시간 방어 : 새 프로그램 내에서 공격을 저지하도록 프로그램을 강화
    • 실행 시간 방어 : 존재하는 프로그램에서 공격을 발견하고 중지시키는 것을 목표
  • 컴파일 시간 방어
    • 프로그램을 컴파일할 때 검사
    • 버퍼 오버플로우를 허용하지 않는 고급 프로그래밍 언어 사용
    • C, C++같이 메모리 접근에 높은 자유도를 가진 언어를 사용하는 경우 입력되는 데이터의 크기가 할당된 버퍼의 크기를 초과하지 않도록 반드시 확인하는 로직 포함
    • 안전한 함수 사용 scanf → fscanf
    • 표준 문자열 라이브러리를 안전한 것으로 교체하는 방법(Libsafe)
    • 스택 보호 메커니즘(Stack Guard)
      • 함수의 진입과 종료 코드를 조사하고 함수의 스택 프레임에 대해 손상이 있는지 검사
      • GCC 컴파일러의 확장 버전. 추가적인 함수 진입과 종료 코드를 삽입
      • canary 값 주입하여 변조되었는지 확인
    • 스택 쉴드(Stack Shield)
      • 함수 시작 시 복귀 주소를 Global RET라는 특수 스택에 저장해 두었다가 함수 종료 시 저장된 값과 스택의 RET값을 비교해 다를 경우 중단
  • 실행 시간 방어
    • 기본 개념
      • 운영체제의 업데이트로 배포할 수 있음
      • 실행가능 주소 공간 보호 기법
        • 실행 코드가 프로세스 메모리상의 특정 위치에서만 실행될 수 있게 함으로써 공격자가 스택 버퍼에 주입한 실행 코드를 원천적으로 실행될 수 없게 만듦
      • 주소 공간 임의화 기법
        • 스택 버퍼가 위치하는 주소 공간을 메모리 내에서 임의적으로 배치함으로써 공격자가 스택 버퍼 속에 주입한 실행 코드의 주소를 예측할 수 없게 만듦
    • ASLR, NOP
      • ASLR : 주소 공간의 임의 추출
        • 프로세스 주소 공간에 있는 주요 데이터 구조의 위치를 조작하는 것
        • 셸코드로 제어를 넘기기 위해 공격에 사용할 적당한 반환주소를 결정하는 데 예측된 주소를 사용 → 프로세스 안의 스택이 임의의 다른 곳에 위치하도록 변경하게 하여 어렵게 만듦
      • NOP : 아무 기능도 수행하지 않는 명령어
        • 빈 공간을 채우기 위한 명령어
        • 프로그램 실행시마다 셸 코드 주소가 조금씩 바뀔 수 있음
        • 실행 확률을 높이기 위해 다수의 NOP 명령을 셸 코드 앞에 삽입하여 해당 영역을 가리키기만 하면 NOP을 타고 최종 셸 코드가 실행되도록
      • 실행가능 주소 공간의 보호
        • 스택과 힙을 실행불능으로 만듦으로써 방어 제공
          • set noexec_user_stack = 1
          • set noexec_user_stack_log = 1

2. 포맷 스트링 공격

  • 개요
    • 포맷스트링을 사용하는 함수를 사용하는 경우, 외부로부터 입력된 값을 검증하지 않고 입, 출력 함수의 포맷 문자열로 그대로 사용하는 경우 발생할 수 있는 취약점
    • 공격자는 포맷 문자열을 이용하여 취약한 프로세스를 공격하거나 메모리 내용을 읽고 쓸 수 있음
  • 공격원리
    • $s. 등이 없는경우, 공격자는 %x를 통해 메모리 내용 참조 및 원하는 위치로 이동한 후 %n을 통해 Return Address를 악성코드가 위치한 주소로 변조하여 악성코드를 실행할 수 있다.
  • 포맷스트링 취약점의 위협요소
    • 프로그램 파괴
    • 프로세스 메모리 보기(포맷 함수의 응답 확인)
    • 임의의 메모리 덮어쓰기
  • 보안대책
    • 사용자 입력값을 직접적으로 포맷 문자열로 사용하거나 포맷 문자열 생성에 포함시키지 않음
    • 사용자가 포맷 스트링을 변경할 수 있는 구조로 쓰지 않음
    • 가능하면 %s 사용

3. 레이스 컨디션 공격

  • 기본 개념
    • 레이스 컨디션 : 둘 이상의 프로세스나 스레드가 공유자원에 동시에 접근하는 순서에 따라 비정상적인 결과가 발생하는 조건/상황
    • 실행되는 프로세스가 임시파일을 만드는 경우 악의적인 프로그램을 통해 그 프로세스의 실행중에 끼어들어 임시파일을 목적파일로 연결
    • 프로세스가 setuid 설정이 되어 root 권한으로 실행된다면 권한 상승을 통한 중요 자원에 접근하는 심각한 문제 발생
  • 파일 링크
    • 하드 링크
      • 똑같이 복사된 파일 만드는 것
      • 두 파일 중 하나를 삭제하면 파일의 내용은 바뀌지 않고 링크 숫자만 줄어듦
      • 링크하고자 하는 파일이 다른 파티션에 존재하면 안됨
    • 심볼릭 링크
      • 레이스 컨디션 공격에 쓰이는 링크
      • 실제 두 파일을 생성하여 링크하지 않음
      • 원본 파일 데이터를 가리키는 링크 정보만 가짐
      • 원본 파일이 삭제되더라도 원본 파일의 이름과 위치를 기억하고 계속 그 파일을 바라보는 상태로 남게 됨
      • 삭제된 원본 파일 대신 처음 원본 파일이 아니지만 똑같은 경로에 같은 파일명으로 생성하면 새로 생성된 파일에 심볼릭 링크 파일이 됨
  • 심볼릭 링크와 레이스 컨디션 공격
    • 생성되는 임시 파일의 이름을 알고 있어야 함
    • lsof : 특정 파일에 접근하는 프로세스 목록 확인 가능
  • 레이스 컨디션 공격에 대한 대응책
    • 임시 파일에 접근하기 전에 임시 파일에 대한 심볼릭 링크 설정 여부와 권한에 대한 검사
    • 가능하면 임시파일 생성 X
    • umask를 022정도로 유지

4. 백도어

  • 개요
    • 시스템의 보안이 제거된 비밀통로
    • 서비스 기술자나 유지보수 프로그래머의 접근 편의를 위해시스템 설계자가 고의적으로 만들어 놓은 통로
    • 백 오리피스 : 악의적인 목적으로 만들어 놓은 통로
  • 리눅스/유닉스 백도어
    • root 권한으로 운영되는 http 데몬 → 보안에 취약
  • 백도어 탐지와 대응책
    • 현재 동작 중인 프로세스 확인
      • Csrss.exe : 윈도우 콘솔 관장, 스레드를 생성/삭제, 32비트 가상 MS-DOS 모드 지원
      • Explore.exe : 사용자 셸 지원
      • Lasass.exe : Winlogon 서비스에 필요한 인증 프로세스 담당
      • Mstask.exe : 시스템에 대한 백업이나 업데이트 등에 관련
      • Smss.exe : 사용자 세션 시작 기능 담당
      • Spoolsv.exe : 프린터와 팩스의 스풀링 기능 담당
      • Svchost.exe : DLL에 의해 실행되는 프로세스의 기본 프로세스
      • Services.exe : 시스템 서비스 시작/정지
      • Taskmgr.exe : 작업 관리자
      • Winlogon.exe : 사용자 로그인 / 로그오프 담당
    • H-IDS 사용
      • 호스트 기반 IDS
        • 자동수행됨

5. 시스템 자원 고갈 공격(시스템 서비스 거부 공격)

  • 개요
    • 시스템이 보유하고 있는 자원을 선점하거나 모두 고갈하는 방식으로 수행됨
  • 시스템 자원 고갈 공격
    • 가용 디스크 자원 고갈 공격
    • 가용 메모리 자원 고갈 공격 : malloc() 함수로 메모리 할당만 계속 수행
    • 가용 프로세스 자원 고갈 공격 : fork() 프로세스 할당 함수만 무한대로 씀
    • 프로세스 죽이기 공격 : 사용중인 프로세스를 죽임

6. 리버스 엔지니어링

  • 역공학. 장치나 시스템의 구조를 분석하여 원리를 발견하는 과정
  • 공격대상 시스템 또는 응용프로그램에 대한 분석 수행
  • 취약점을 찾으며, 코드 생성 가능
  • 난독화
    • 소스코드 난독화 : 소스코드를 알아보기 힘들게 만드는 기술
    • 바이너리 난독화 : 컴파일 후 생성된 바이너리를 역공학을 통해 분석하기 어렵게 변조

7. 기타 시스템 보안위협 및 대응책

  • 루트킷
    • 시스템에 설치되어 그 존재의 흔적을 최대한도로 숨기면서 공격자가 언제든지 시스템에 관리자 권한으로 접근할 수 있도록 비밀통로를 지속적으로 유지시켜주는 프로그램 집합
    • 호스트의 기본적인 기능을 은밀한 방법으로 수정
    • 예를 들어 ls를 바꿔치기 해서 실행시켜도 공격자가 만든 파일이 보이지 않게 만듦
    • 찾기 위해서는 시스템 프로그램의 파일크기, 생성시간, 변경시간 등을 확인
    • 다른 프로그램이 기본적으로 설치된 시간과 틀리게 변경된 것이 있는지 확인
  • 논리폭탄
    • 특정한 사건이 발생할 때 프로그램이나 일련의 코드를 실행(조건)
    • 특정한 행위를 수행할 때그것의 페이로드 실행을 활성화하는 많은 유형의 트리거를 가질 수 있음

18. 최신 보안 주제들

1. 블록체인

  • 개요
    • 중앙 관리 서버가 아닌 개인 디지털 장비에 분산, 저장시켜 공동으로 관리하는 방식
    • 비트코인의 예시
    • 특성
      • 탈중앙화
      • 투명성
      • 불변성
      • 가용성
  • 블록체인 기반 기술
    • 분산 네트워크
      • 분산 합의제도 : 거래를 블록체인에 포함시키기 위해 거래를 승인하는 제도. 제 3의 신용기관 없이 P2P 분산 네트워크에서 검증함
      • 채굴 시 각 정보는 각 노드들에게 전송. 유효성 검증 수행 후 합의를 통해 쁠록 승인
    • 암호 기술
      • 공개키 암호와 전자서명 : ECDSA 전자서명 알고리즘 사용
        • 익명성
        • 전자서명
        • 해시함수
          • 채굴 : 이전 블록의 해시값, 거래내역, 넌스값을 넣어 특정 조건을 만족하는 결과값이 나오도록 넌스값을 유추해 내는 과정
          • 머글트리 : 각각의 거래 내역의 해시값 누적. 중간 값이 변경되면 변조 유무 파악
        • 이중 거래 방지
          • 총 통화량 : 이중 거래 발생 시 총 통화량(2,100만개) 초과
          • 블록체인이 분기될 경우 다음 블록을 먼저 생성하여 한쪽 길이가 길어지는 체인을 옳은 것으로 간주
        • 합의 기법
          • 작업증명(Power of Work)
            • 처음 비밀번호를 파악한 사람만이 블록을 체인에 추가할 수 있음
            • 새로 만든 블록을 앞 블록에 연결하는데 필요한 해시를 만들고 해시 연결성 검증. 데이터가 중간에 위변조 되지 않았음을 확인
          • 지분증명(Proof of Staking)
            • 에너지 낭비 문제를 해결하기 위해 만들어진 알고리즘
            • 자신이 가진 양, 지분에 따라 블록 생성
            • 이자나 배당과 비슷
  • 블록체인 작동 원리
    • 개요
      • 비트코인은 정해진 시간마다 생성됨
      • 해시 결과값이 특정값보다 작은 값이 되는 넌스값을 구함(작업증명)
    • 종류
      • 퍼블릭 블록체인 : 누구나 참요 가능(비트코인, 이더리움)
      • 프라이빗 플록체인 : 사전 승인 필요(익명성 X)
  • 블록체인 보안 위협요소
    • 프라이버시 문제
      • 변조될 수 없어 저장된 개인정보 삭제 불가
      • 통제권 상실 가능
    • 키 도난 및 분실
      • 개인키가 도난당할 경우 정상 참여자로 위장한 공격자의 다양한 공격 가능
    • 가용성 저하
      • 거래 처리속도의 한계., 거래정보 관리에 대한 부담

2. 사물인터넷(IoT)

개요

  • 정의
    • 실세계와 가상 세계의 다양한 사물들을 연결하여 진보된 서비스 제공하기 위한 기반시설
  • IoT 활용 사례
    • 스마트홈
    • 의료
    • 교통
    • 환경/재난
    • 제조
    • 건설
    • 에너지
  • IoT 구성요소별 암호 알고리즘
    • 디바이스
      • 대칭키 암호화 등 사용
    • 통신 및 네트워크

3. 클라우드 보안

클라우드 컴퓨팅

  • 정의
    • 집적 공유된 정보통신기기, 정보통신설비, 소프트웨어 등의 정보통신자원을 이용자의 요구나 수요 변화에 따라 유동적으로 이용할 수 있도록 하는 정보처리체계
    • 사용한만큼 비용 지불
  • 구축형 환경 Vs 클라우드 환경
  • 서비스 모델
    • 개요
      • SaaS : 응용 SW를 서비스에 제공
      • PaaS : SW 개발환경 서비스 제공
      • IaaS : IT인프라 서비스 제공

클라우드 컴퓨팅 기술

  • 가상화 기술
    • 단일의 물리 IT 자원을 논리적인 다수의 IT자원으로 나누어 동시에 각 자원들을 사용할 수 있게 해주는 기술
    • 하이퍼바이저 : 가상머신과 하드웨어 사이에 위치, 다수의 가상머신들이 각각의 운영체제가 구동될 수 있도록 논리적으로 독립된 가상머신 환경 제공
    • 가상화 종류
      • 데스크톱 가상화, 애플리케이션 가상화, 스토리지 가상화 등
  • 컨테이너 기술
    • 오버헤드 문제 해결하기 위해 나옴
    • cgroup : 프로세스들의 CPU, 메모리 등의 자원 사용을 제어하고 격리시키는 리눅스 커널 기능
    • namespace : 하나의 시스템에서 수행되지만, 각각 별개의 독립된 공간인 것처럼 격리된 환경을 제공하는 가상화 기술
    • 프로세스별 공간 격리
    • 격리된 공간마다 게스트 OS 설치할 필요 X → 호스트 OS 자원 컨테이너가 공유

보안 위협

SecaaS 서비스

  • 정의
    • 서비스 제공자가 제공하는 보안 서비스 패키지
    • CP(Cloud Provider)가 제공하는 SaaS의 일부
  • 종류
    • 신원 및 접근관리(IAM) : 개세 신원 검증, 접근 권한 부여
    • 웹 보안(Web Security)
    • 이메일 보안(E-mail Security)

4. 랜섬웨어

개요

  • 정의
    • 이용자의 데이터를 암호화하고 복구화를 위한 금전을 요구하는 악성코드
  • 특징
    • 워너크라이, 로키, 크립트XXX, 케르베르, 크립토락커, 테슬라크립트 등이 있음
  • 일반 악성코드와 랜섬웨어의 차이점
    • 랜섬웨어는 악성코드의 일종이나 다른 악성코드와 달리 감염된 시스템 암호화

랜섬웨어 공격 및 대응

  • 랜섬웨어 공격 및 대응 절차
    1. 감염 경로 접속
    2. PC로 랜섬웨어 다운로드 및 실행
    3. 암호화 대상 검색, 암호화
    4. 복호화 대가 요구
  • 감염 경로와 증상
    • 신뢰할 수 없는 사이트
    • 스팸메일 및 스피어피싱
    • 파일공유 사이트
    • SNS
  • 랜섬웨어 피해 예방 5대 수칙(KISA)
    • 모든 소프트웨어는 최신 버전으로 업데이트
    • 백신 소프트웨어 설치, 최신 버전으로 업데이트
    • 출처가 불명확한 이메일과 링크 실행 금지
    • 파일 공유 사이트 등에서 파일 다운로드 및 실행에 주의
    • 중요 자료는 정기적으로 별도의 매체 클라우드 등에 백업

5. APT(Advanced Persistent Threat)

  • 개요
    • 개념
      • 특정 대상을 겨냥해 다양한 공격 기법을 이용하여 장기간 지속적으로 공격
      • 기존에 알려지지 않았던 취약점 이용
    • 기존 공격의 차이점
      • 맞춤형 공격
      • 낮고 느리고 지속적인 공격
      • 구체적인 공격목표
    • 공격 단계
      • 침투 → 정보 검색 → 정보 수집 → 유출
  • 주요 침투 기법
    • 스피어 피싱 공격 : 특정 기관의 구체적인 개인, 그룹을 목표로 진행됨
    • 드라이브-바이-다운로드 공격 : 방문 가능성이 높은 사이트를 미리 알아서 침해한 뒤 접속 즉시 악성 코드가 다운로드 되도록 하는 공격
    • 워터링 홀 공격 : 공격 대상이 주로 방문하느 웹사이트에 대한 정보를 사전에 파악한 후 제로데이 취약점을 이용해 해당 사이트에 악성코드 심어둠
  • USB 메모리 스틱을 이용한 기법
    • 사전에 USB 메모리에 악성코드를 삽입, 특정 타깃/조직의 이동 동선 상에 이를 방치한 후 내부 PC에 연결하는 순간 감염되게 하는 방식

6. 기타 최신 보안주제들

사이버 킬 체인

  • 개요
    • 침입타격 순환체계
    • 각 단계 중 하나만 차단되어도 전체 프로세스에 영향을 미치게 됨
  • 록히드마틴사 사이버 킬 체인 모델
    1. 정찰
    2. 무기화
    3. 전달
    4. 취약점 악용
    5. 설치
    6. 명령 및 제어
    7. 목표 실행

공급망 공격

  • 공급망의 정의
    • 제품이나 서비스가 공급자로부터 소비자에게 전달되기 까지의 조직, 사람, 정보, 자원 등에 대한 시스템
    • S/W에 대한 소스코드와 H/W 설계도를 개발업체, 제조업체를 통해 개발하고 사용자에게 배포하는 과정
  • 공급망 공격
    • 개요
      • 공급망에 침투하여 사용자에게 전달되는 S/W나 H/W를 변조하는 공격
    • 특징
      • 정교한 형태의 APT 공격에도 효율적
  • 대응방안
    • S/W 공급업체의 대응방안
      • 개발자 PC, 빌드/업데이트 서버의 관리 강화
      • SDLC 가이드라인에 따른 S/W 업데이트
      • 공급망 공격에 대한 이해 및 취약 부분 점검
    • 기업/기관의 대응방안
      • 가시성 확보
      • 최신 패치 적용
      • 지속적인 보안 교육
728x90

'자격증 > 정보보안기사' 카테고리의 다른 글

3. 접근통제  (1) 2025.02.26
2. 암호학  (0) 2025.02.26
1. 정보보호 개요  (0) 2025.02.26