본문 바로가기

정보처리기사_실기

정보처리기사 133 ~ 148 (Secure SDLC ~ 취약점 분석.평가)

 

  • Secure SDLC
    • SDLC(소프트웨어 개발 주기)에 보안 강화를 위한 프로세스를 포함한 것
    • 대표적인 방법론
      • CLASP : SDLC의 초기 단계에서 보안을 강화
      • SDL : 마이크로소프트사에서 기존의 SDLC를 개선
      • Seven Touchpoints : 소프트웨어 보안의 모범사례를 SDLC에 통합
    • 개발 단계 별 보안활동
      • 요구사항 분석 단계 : 보안 항목에 해당하는 요구사항 식별
      • 설계 : 보안 요구사항들을 설계서에 반영
      • 구현 : 소프트웨어 개발 보안 가이드를 준수
      • 테스트 : 보안 설계서를 바탕으로 정확히 반영되고 동작하는지 점검
      • 유지보수 : 이전 과정을 모두 수행했음에도 발생할 수 있는 보안사고 식별, 보안패치
    • 개발 보안 요소
      •  기밀성 (Confidentiality) (보안 3대 요소)
        • 시스템 내의 정보와 자원은 인가된 사용자에게만 접근이 허용
      • 무결성 (Integrity) (보안 3대 요소)
        • 시스템 내의 정보는 오직 인가된 사용자만 수정 가능
      • 가용성 (Availability) (보안 3대 요소)
        • 인가받은 사용자는 시스템 내의 정보와 자원을 언제든지 사용 가능
      • 인증 (Authentication)
        • 시스템 내의 정보와 자원을 활용하려는 사용자가 합법적인 사용자인이 확인하는 모든 행위
      • 부인 방지 (NonRepudiation)
        • 데이터 송.수신 증거 제공
    • 시큐어 코딩
      • 구현 단계에서 발생할 수 있는 보안 취약점을 최소화하기위해 보안 요소들을 고려하며 코딩하는 것
      • 보안취약점을 사전대응하여 안전성과 신뢰성 확보
  • 세션 통제
    • 세션의 연결과 연결로 인해 발생하는 정보를 관리하는 것
    • 개발 단계 중 요구사항 분석 및 설계 단계에서 진단
    • 보안 약점
      • 불충분한 세션 관리 : 잘못된 세션 ID 또는 타임아웃
      • 잘못된 세션에 의한 정보 노출 : 다중 스레드 환경에서 발생
    • 세션 ID 관리 방법
      • 최소 128비트 이상의 길이로 생성
      • 안전한 난수 알고리즘 적용
      • URL Rewrite기능을 사용하지 않음
        • URL Rewrite : URL에 세션ID를 포함시키는 것
  • 입력데이터 검증 및 표현
    • 입력 데이터로 인해 발생하는 문제들을 예방하기 위해 검증해야하는 보안 점검 항목
    • 보안 약점
      • SQL Injection (SQL 삽입)
        • SQL 구문을 삽입하여 내부 DB서버의 데이터를 유출 및 변조하고 관리자 인증을 우회하는 약점
        • 동적 쿼리 필터링을 설정하여 방지 가능
      • 크로스사이트 스크립팅 (XSS)
        • 악의적인 스크립트를 삽입하여 정보를 탈튀하거나 비정상적인 기능 수행을 유발
        • <, >, & 등의 문자를 다른 문자로 치환하여 방지 가능
      • 메모리 버퍼 오버플로
        • 할당된 메모리의 범위를 넘어선 위치에서 자료를 사용하려할 때 발생하는 보안 약점
        • 적절한 버퍼 크기 설정 등으로 방지 가능
      • 경로 조작 및 자원 삽입
        • 데이터 입출력 경로를 조작하여 자원을 수정.삭제
      • 운영체제 명령어 삽입
        • 외부 입력값을 통해 시스템 명령어 실행 유도
      • 위험한 형식 파일 업로드
      • 신뢰되지 않는 URL 주소로 자동접속 연결
  • 보안 기능
    • 인증, 접근제어, 기밀성, 암호화 등을 올바르게 구현하기위한 보안 점검 항목
    • 보안 약점
      • 하드코드된 암호화 키
        • 역계산 또는 무차별 대입 공격에 의해 탈취 가능
          • 하드 코드 : 데이터를 코드 내부에 직접 입력하여 프로그래밍
          • 무차별 대입 공격 (Brute Force Attack) : 적용 가능한 모든 값을 대입하여 암호키를 찾아내는 공격
      • 적정한 인증 없이 중요기능 허용
      • 부적절한 인가
        • 접근제어 기능이 없는 실행경로를 통해 데이터 탈취 가능
      • 중요한 자원에 대한 잘못된 권한 설정
      • 취약한 암호화 알고리즘 사용
      • 중요정보 평문 저장 및 전송
  • 시간 및 상태
    • 병렬처리 시스템이나 다수의 프로세스가 동작하는 환경에서 시간 및 상태에 관련된 보안 점검 항목
    • 보안 약점
      • TOCTOU 경쟁조건
        • 검사시점(TOC)과 사용시점(TOU)를 고려하지않고 코딩하는 경우 발생
        • 동기화 구문을 사용하여 방지 가능
          • 동기화 구문 : 둘 이상의 프로세스가 접근하는 것을 막는 구문, Synchronized, Mutex 등..
      • 종료되지않는 반목문 또는 재귀함수
  • 에러 처리
    • 발생할 수 있는 오류들을 사전에 정의하여 문제들을 예방하기 위한 보안 점검 항목
    • 보안 약점
      • 오류 메세지를 통한 정보 노출
      • 오류 상황 대응 부재
      • 부적절한 예외 처리
  • 코드 오류
    • 코딩 중 실수하기 쉬운 형 반환, 자원 반환 등의 오류를 예방하기 위한 보안 점검 항목
    • 보안 약점
      • 널(NULL) 포인터 역참조
        • 널 포인터가 가리키는 메모리의 위치에 값을 저장할 때 발생하는 보안 약점
          • 널 포인터 : 포인터에 널이 저장되어 어떠한 곳도 가리키지 못하는 상태의 요소
      • 부적절한 자원 해제
      • 해제된 자원 사용
      • 초기화되지 않은 변수 사용
    • 스택 가드
      • 널포인터 역참조와 같이 주소가 저장되는 스택에서 발생하는 보안약점을 막는 기술
      • 복귀 주소와 변수 사이에 특정한 값을 저장한 후 그 값이 별경되었을 경우 오버플로상태로 판단하여 실행 중단
  • 캡슐화
    • 불완전한 캡슐화 또는 오용으로 발생할 수 있는 문제를 예방하기위한 보안 점검 항목
    • 보안 약점
      • 잘못된 세션에 의한 정보 노출
      • 제거되지않고 남은 디버그 코드
      • 시스템 데이터 정보 노출
      • Public 메소드로부터 반환된 Private 배열
      • Private배열에 Public 데이터 할당
    • 접근 제어자
      • 외부로부터의 접근을 제한하기위해 사용되는 예약어
      • Public : 클래스 내부, 패키지 내부, 하위 클래스, 패키지 외부 에서 접근 가능
      • Protected : 클래스 내부, 패키지 내부, 하위 클래스 에서 접근 가능
      • Default : 클래스 내부, 패키지 내부 에서 접근 가능
      • Private : 클래스 내부 에서 접근 가능
  • API 오용
    • 잘못된 API를 사용하거나 보안에 취약한 API를 사용하지 않도록 하기 위한 보안 점검 항목
    • 보안 약점
      • DNS Lookup에 의존한 보안결정
        • 도메인명에 의존하여 인증이나 접근통제를 할 때 발생할 수 있는 보안 약점
          • 도메인 네임 : 숫자로 된 IP 주소를 이해하기 쉬운 문자 형태로 표현한 것
          • DNS : 도메인 네임을 IP주소로 바꾸는 역할을 하는 서버
      • 취약한 API 사용

 

  • 암호화 알고리즘
    • 중요 정보를 보호하기 위해 평문을 암호화된 문장으로 만드는 절차 또는 방법
    • 방식
      • 양방향
        • 개인키
          • Stream 방식
          • Block 방식
        • 공개키
      • 단방향
        • HASH
    • 개인키 안호화 기법
      • 동일한 키로 데이터를 암호화하고 복호화하는 기법
      • 대칭 암호 기법 또는 단일키 암호화 기법
      • Stream 암호화 방식
        • 평문과 동일한 길이의 스트림을 생성하며 비트 단위로 암호화
        • 종류
          • LFSR
          • RC4
      • Block 암호화 방식
        • 한번에 하나의 데이터 블록을 암호화
        • 종류
          • SEED
            • 한국 인터넷 진흥원에서 개발
            • 블록 크기 : 128 비트
            • 키 길이 : 128, 256
          • ARIA
            • 국가정보원과 산학연합회가 개발
          • DES
            • 미국 NBS에서 발표
            • 블록 크기 : 64 비트
            • 키 길이 : 56 비트
            • 16회의 라운드
            • DES를 3번 적용한 3DES도 있음
          • AES
            • 미국 NIST에서 발표
            • DES에 한계를 느껴 공모 후 발표
            • 블록 크기 : 128 비트
            • 키 길이 : 128, 192, 256
    • 공개키 암호화 기법
      • 데이터를 암호화할 때 사용하는 공개키는 사용자에게 공개하고, 복화할 때의 비밀키는 비밀리에 관리
      • 비대칭키 암호화 기법
      • 종류
        • RSA
          • MIT의 론 라이베스트, 샤미르, 애들먼에 의해 제안됨
          • 소인수분해하기 어렵다는 것에 기반하여 제작
    • HASH
      • 임의의 길이의 입력 데이터나 메세지를 고정된 길이의 값이나 키로 변환하는 것
      • 해시 알고리즘을 해시 함수 라고 부름
      • 종류
        • SHA 시리즈
          • NSA가 설계, NIST에서 발표
          • SHA-224, SHA-256, SHA-384 ....
        • MD5
          • 론 라이베스트가 MD4를 대체하기 위해 고안
          • 블록 크기 : 512 비트
          • 키 길이 : 128 비트
        • N-NASH
          • 일본에서 발표한 해시 함수
          • 블록 크기, 키 길이 : 128 비트
        • SNEFRU
          • 32비트의 프로세서에서 용이한 구현을 위해 개발

 

  • DoS (서비스 거부 공격)
    • 대량의 데이터를 한 곳의 서버에 집중적으로 전송하여 서버의 정상적인 기능을 방해하는 공격
    • 유형
      • Ping of Death (죽음의 핑)
        • Ping 명령을 전송할 때 패킷의 크기를 인터넷 프로토콜 허용 범위 이상으로 전송하여 네트워크를 마비시킴
        • ICMP 메세지에 대한 응답을 처리하느라 시스템이 다운
      • SMURFING (스머핑)
        • IP나 ICMP의 특성을 악용
        • 엄청난 양의 데이터를 한 사이트에 집중적으로 보냄으로써 네트워크를 불능 상태로 만드는 공격
        • 브로트 캐스트 주소를 악용
      • SYN Flooding
        • 3-way-handshake 과정을 의도적으로 중단시킴
        • 서버가 대기 상태에 놓여 정상적인 서비스를 수행하지 못하도록 하는 공격
      • TearDrop
        • Offset값을 변경시켜 수신 측에서 패킷을 재조립할 때 오류로 인한 과부하를 발생시켜 시스템 다운
          • Offset : 패킷을 여러개로 분할하여 전송할 때 분할 순서를 알 수 있도록 하는 값
      • LAND Attack
        • 패킷을 전송할 떄 송신 IP주소와 수신 IP주소를 모두 공격 대상의 IP주소로 변경
        • 자신에 대해 무한히 응답하게 하는 공격
  • DDoS (분산 서비스 거부 공격)
    • 여러 곳에 분산된 공격지점에서 한 곳의 서버에 대해 분산 서비스 공격을 수행하는 것
    • 취약한 호스트들을 에이전트(Agent)로 만든 후 공격에 이용
    • Daemon(데몬) : 에이전트의 역할을 수행하도록 설계된 프로그램
    • 데몬 툴
      • Trin00 : UDP Flooding 공격 수행
      • TFN : TCP SYN Flood 공격, ICMP 응답 요청 등을 수행
      • TFN2K : TFN의 확장
      • Stacheldraht : 암호화된 통신 수행, 툴이 자동으로 업데이트
  • 네트워크 침해 공격
    • 세션 하이재킹 (Session Hijacking)
      • 클라이언트 사이의 세션 정보를 가로채는 공격
      • TCP 3-way-handshake과정에 끼어들어 시퀀스 넘버를 가로채는 TCP 세션 하이재킹이 대표적
    • ARP 스푸핑
      • ARP의 취약점을 이용한 공격
      • 자신의 MAC주소를 공격 대상의 것으로 변조하여 데이터 패킷을 가로챔
        • ARP (주소 분석 프로토콜) : IP주소를 MAC 주소로 변환
    • 스미싱
      • SMS를 이용해 사용자의 개인 신용 정보를 빼내는 수법
    • 큐싱
      • QR코드를 악용하는 사기
    • 스니핑 (Sniffing)
      • 네트워크 중간에서 남의 패킷 정보를 도청하는 해킹 유형
      • 수동적 공격
    • 스피어 피싱 : 사회 공학의 한 기법
    • APT(지능형 지속 위협) : 특정 기업이나 조직 네트워크에 침투해 활동 거점을 마련한 후 보안 무력화 및 데이터 유출
    • 무작위 대입 공격
    • SQL Injection
    • XSS (크로스 사이트 스크립팅)

 

  • 정보 보안 침해 공격
    • 웜 (Worm)
      • 네트워크를 통해 자신을 복제하여 시스템의 부하를 높이는 바이러스
      • 분산 서비스 공격, 버퍼 오버플로, 슬래머 등이 웜 공격의 한 형태
        • 슬래머 : SQL의 허점을 이용하여 SQL 서벌르 공격하는 웜 바이러스의 형태
    • 키 로거 공격 (Key Logger Attack)
      • 사용자의 키보드 움직임을 탐지해 개인 정보를 탈취
    • 랜섬웨어 (Ransomware)
      • 내부 문서나 파일들을 암호화하고 암호 해독용 프로그램의 전달을 조건으로 돈을 요구
    • 백도어
      • 개발자의 액세스 편의를 위해 시스템 보안을 제거해 놓은 비밀 통로
      • 무결성 검사, 열린 포트 확인, setUID파일 검사 등을 통해 감지 가능
    • 제로데이 공격 (Zero Day Attack)
      • 보안 취약점의 존재가 널리 공표되기 전에 해당 취약점을 통해 이루어지는 보안 공격
      • 공격의 신속성 의미
    • 트로이 목마
      • 정상적인 프로그램으로 위장하여 잡입한 후 프로그램이 동작할 때 활성화되어 부작용을 발생
      • 자기 복제 능력은 없음
    • 좀비 PC
      • 악성 코드에 감염되어 다른 프로그램이나 컴퓨터를 조종하도록 만들어진 컴퓨터
      • 주로 DDoS 공격에 이용
    • C&C서버
      • 해커가 원격지에서 좀비 PC에 명령을 내리고 악성코드 제어를 위해 사용하는 서버
    • 봇넷
      • 악의적인 의도로 사용될 수 있는 다수의 컴퓨터들이 네트워크로 연결된 형태

 

  • 서버 인증
    • 보안 서버
      • 개인 정보를 암호화하여 송.수신할 수 있는 기능을 갖춘 서버
      • 기능
        • 서버에 SSL 인증서를 설치하여 전송 정보를 암호화
        • 서버에 암호화 응용 프로그램 설치
    • 인증 (Authentication)
      • 로그인을 요청한 사용자의 정보를 확인하고 접근 권한을  검증하는 보안 절차
      • 유형
        • 지식 기반 인증
          • 사용자가 기억하고 있는 정보를 기반으로 인증을 수행
          • 관리 비용이 저렴
          • 종류
            • 고정된 패스워드
            • 패스 프레이즈 : 길이가 길고 기억하기 쉬운 문장을 활용하여 비밀번호 구성
            • 아이핀 : 사이버 주민등록번호
        • 소유 기반 인증
          • 사용자가 소유하고 있는 것을 기반으로 인증을 수행
          • 도용 예방을 위해 지식 기반 인증이나 생체 기반 인증과 함께 사용
          • 종류
            • 신분증
            • 메모리카드 : 마그네틱 선에 보안 코드를 저장해서 사용
            • 스마트카드
            • OTP : 암호 알고리즘을 통해 새롭게 생성된 패스워드 사용
        • 생체 기반 인증
          • 사용자의 고유한 생체 정보를 기반으로 인증 수행
          • 종류 : 지문, 얼굴, 음성, 홍채 등...
        • 기타 인증
          • 행위 기반 인증
          • 위치 기반 인증
  • 보안 아키텍처
    • 정보 시스템의 무결성, 가용성, 기밀성을 확보하기 위해 보안 요소 및 보안 체계를 식별하고 이들 간의 관게를 정의한 구조
  • 보안 프레임워크
    • 안전한 정보 시스템 환경을 유지하고 보안 수준을 향상시키기 위한 체계
    • ISO 27001 : 정보보안 관리를 위한 국제 표준

 

  • 로그 (Log)
    • 시스템 사용에 대한 모든 내역을 기록해 놓은 것
    • 리눅스 로그
      • 리눅스는 시스템의 모든 로그를 var/log 디렉터리에서 기록하고 관리
      • syslogd 데몬 : 로그 파일을 관리
      • syslog.conf 파일을 수정하여 로그 관련 파일들의 저장 위치와 파일명을 변경할 수 있음
      • 주요 로그 파일
        • 커널 로그 (kernel)
        • 부팅 로그 (boot)
        • 크론 로그 (cron) 
        • 시스템 로그 (syslogd)
        • 보안 로그 (xinetd)
        • FTP 로그 (ftpd)
        • 메일 로그 (sendmailpopper)
    • 윈도우 로그
      • 주요 로그
        • 응용 프로그램
        • 보안
        • 시스템
        • Setup
        • Forwarded Events

 

  • 보안 솔루션
    • 외부로부터의 불법적인 침입을 막는 기술 및 시스템
    • 주요 보안 솔루션
      • 방화벽 (Firewall)
        • 내부의 네트워크와 인터넷 간에 전송되는 정보를 선별하여 수용.거부.수정하는 기능을 수행하는 침입 차단 시스템
      • 침입 탐지 시스템 (IDS : Intrusion Detection System)
        • 컴퓨터 시스템의 비정상적인 사용.오용.남용 등을 실시간으로 탐지하는 시스템
        • 오용 탐지 : 미리 입력해 둔 공격 패턴이 감지되면 이를 알려줌
        • 이상 탐지 : 평균적인 시스템의 상태를 기준으로 비정상적 행위나 자원 사용이 감지되면 이를 알려줌
      • 침입 방지 시스템 (IPS : Intrusion Prevention System)
        • 방화벽 + IDS (침입 탐지 시스템)
        • 비정상적인 트래픽을 능동적으로 차단하고 격리
      • 데이터 유출 방지 (DLP : Data Loss/Leakage Prevention)
        • 내부 정보의 외부 유출을 방지하는 보안 솔루션
        • 사내 직원이 사용하는 PC와 네트워크 상의 모든 정보를 검색, 탐지, 통제
      • 웹 방화벽 (Web Firewall)
        • SQL 삽입, XSS등의 웹 기반 공격을 방어할 목적으로 만들어진 웹 서버에 특화된 방화벽
      • VPN (가상 사설망 : Virtual Private Network)
        • 공중 네트워크와 암호화 기술을 이용하여 사용자가 마치 자신의 전용 회선을 사용하는 것처럼 해주는 보안 솔루션
        • 비용 부담 감소
        • 지역적인 제한 없이 업무 수행 가능
      • NAC (Network Access Control)
        • 네트워크에 접속하는 내부 PC의 MAC주소를 IP관리 시스템에 등록한 후 일관된 보안 관리 기능을 제공
      • ESM (Enterprise Security Management)
        • 로그 및 보안 이벤트를 통합하여 관리하는 보안 솔루션
        • 보안 솔루션 간의 상호 연동 가능

 

  • 취약점 분석.평가
    • 사이버 위협으로부터 정보 시스템의 취약점을 분석 및 평가한 후 개선하는 일련의 과정
    • 상, 중, 하 3단계로 중요도를 분리하여 관리
    • 절차
      • 계획 수립 → 대상 선별 → 분석 수행 → 평가 수행