9. 소프트웨어 개발 보안 구축

01. 소프트웨어 개발 보안 설계

1. 소프트웨어 개발 보안 설계

a. SW 개발 보안의 개념
- 소스 코드 등에 존재하는 보안 취약점을 제거하고, 보안을 고려하여 기능을 설계 및 구현하는 등 소프트웨어 개발 과정에서 지켜야 할 일련의 보안 활동을 말함
b. SW 개발 보안의 구성 요소
- 정보 보안의 3가지 요소인 기밀성, 무결성, 가용성을 지키고 서버 취약점을 사전에 방지하여 위협으로부터 위험을 최소화하는 구축 방법을 말함

  • SW 개발 보안의 3대 요소
    • 기밀성(Confidentiality): 인가되지 않은 개인 혹은 시스템 접근에 따른 정보 공개 및 노출을 차단
    • 무결성(Integrity): 정당한 방법을 따르지 않고서는 데이터가 변경될 수 없으며, 데이터의 정확성 및 완전성과 고의/악의로 변경되거나 훼손 또는 파괴되지 않음을 보장
    • 가용성(Availability): 권한을 가진 사용자나 애플리케이션이 원하는 서비스를 지속해서 사용할 수 있도록 보장
  • SW 개발 보안 용어
    • 자산(Assets): 조직의 데이터 도는 조직의 소유자가 가치를 부여한 대상

      서버의 하드웨어, 기업의 중요 데이터

    • 위협(Threat): 조직이나 기업의 자산에 악영향을 끼칠 수 있는 사건이나 행위

      해킹, 삭제, 자산의 불법적인 유출, 위/변조..

    • 취약점(Vulnerability): 위협이 발생하기 위한 사전 조건으로 시스템의 정보 보증을 낮추는 데 사용되는 약점

      평문 전송, 입력값 미검증, 비밀번호 공유

    • 위험(Risk): 위협이 취약점을 이용하여 조직의 자산 손실 피해를 가져올 가능성

c. SW 개발 보안을 위한 공격기법의 이해

  • DoS 공격
    • 개념
      - 시스템을 악의적으로 공격해서 시스템의 자원을 부족하게 하여 원래 의도된 용도로 사용하지 못하게 하는 공격
      - 특정 서버에게 수많은 접속 시도를 만들어 다른 사용자가 서비스 이용을 못하게 하거나 서버의 TCP 연결을 소진시키는 등의 공격

    • 종류

      • SYN 플러딩
        Normal
        SYN
        - TCP 프로토콜의 구조적인 문제를 이용
        - 서버의 동시 가용 사용자 수를 SYN 패킷만 보내 점유하여 다른 사용자가 서버를 사용 불가능하게 함
        - 공격자는 ACK 발송하지 않고 계속 새로운 연결 요청을 하게 되어 서버는 자원할당을 해지하지 않고 자원만 소비하여 고갈

      • UDP 플러딩
        - 대량의 UDP 패킷을 만들어 임의의 포트 번호로 전송하여 응답메세지를 생성하게 하여 지속해서 자원을 고갈 시킴
        - ICMP 패킷은 변조되어 공격자에게 전달되지 않아 대기

      • 스머프/스머핑
        smurf - 출발지 주소를 공격 대상의 IP로 설정하여 네트워크 전체에게 ICMP Echo 패킷을 직접 브로드캐스팅하여 마비시킴
        - 바운스 사이트라고 하는 제3의 사이트 이용해 공격

      • 죽음의 핑
        - ICMP 패킷(Ping)을 정상적인 크기보다 아주 크게 만들어 전송시 다수 IP 단편화 발생, 수신 측에서는 패킷을 처리하는 과정에서 많은 부하가 발생해거나 재조합 버퍼의 오버플로우가 발생하여 정상적인 서비스를 하지 못하도록 함

      • 랜드 어택
        랜드어택 - 출발지 IP와 목적지 IP를 같은 패킷 주소로 만들어 보냄으로써 수신자가 자신에게 응답을 보내게 하여 시스템의 가용성 침해

      • 티어 드롭
        - IP 패킷의 재조합 과정에서 잘못된 Fragment Offset 정보로 인해 수신시스템이 문제를 발생하도록 함
        - 공격자는 IP Fragment Offset 값을 서로 중첩되도록 조작하여 전송, 수신 시스템이 재조합 과정에서 오류 발생, 시스템 기능 마비시키는 공격방식

      • 봉크/보잉크
        - 프로토콜의 오류 제어를 이용한 공격기법
        - 시스템의 패킷 재전송과 재조립이 과부하 유발
        - 봉크 : 같은 시퀀스 번호를 계속 보냄
        - 보잉크 : 일정한 간격으로 시퀀스 번호에 빈 공간 생성

  • DDoS 공격
    • 개념
      - 여러 대의 공격자를 분산 배치하여 동시에 동작하게 함으로써 특정 사이트 공격
      - 해커들이 취약한 인터넷 시스템에 대한 액세스가 이루어지면 침입한 시스템에 소프트웨어를 설치하고 이를 실행시켜 원격에서 공격

    • 구성요소
      • 핸들러 : 마스터 시스템의 역할을 수행하는 프로그램
      • 에이전트 : 공격 대상에 직접 공격을 가하는 시스템
      • 마스터 : 공격자에게서 직접 명령을 받는 시스템, 여러 에이전트 관리
      • 공격자 : 공격을 주도하는 해커의 컴퓨터
      • 데몬 프로그램 : 에이전트 시스템의 역할을 수행하는 프로그램
    • 공격도구
      • Trinoo
        - 많은 소스로부터 통합된 UDP flood 서비스 거부 공격을 유발하는 데 사용되는 도구
        - 몇개의 서버들과 많은 수의 클라이언트들로 이루어짐
      • Tribe Flood Network (TFN)
        - 많은 소스에서 하나 혹은 여러개의 목표 시스템에 대해 서비스 거부 공격 수행
        - 공격자가 클라이언트 프로그램을 통해 공격 명령을 일련의 TFN 서버들에게 보냄으로써 이루어짐
      • Stacheldraht - 분산 서비스 거부 에이전트 역할을 하는 Linux 미 Solaris 시스템용 멀웨어 도구
    • 대응 방안
      - 차단 정책 업데이트 : 공격 규모를 확인하여 가용성이 침해될 수 있는 지점 확인 및 데이터 기반 차단 정책 업데이트
      -좀비PC IP 확보 : 공격자는 대부분 Source IP를 위조하므로 IP 의 위변조 여부 확인 절차 필요
      -보안 솔루션 운영 : 방화벽, 침입 탐지 시스템 등 보안 솔루션 운영
      -홈페이지 보안 관리 : 모의해킹 등 수행하여 보안 유지
      -시스템 패치 : 취약점을 패치를 통해 해결
  • DRDoS 공격
    • 개념
      - 공격자는 출발지 IP를 공격대상 IP로 위조하여 다수의 반사 서버로 요청 정보를 전송, 공격 대상자는 반사 서버로부터 다량의 응답을 받아서 서비스 거부가 되는 공격

    • 공격 절차
      • 출발지 IP 변조 : 공격자는 출발지 IP를 공격 대상자 IP로 Spoofing 하여 SYN 패킷을 공격 경유지 서버로 전송
      • 공격 대상자 서버로 응답 : SYN 패킷을 받은 경유지 서버는 Spoofing된 IP로 SYN/ACK를 전송
      • 서비스 거부 : 공격 대상자 서버는 수많은 SYN/ACK를 받게 되어 서비스 거부됨
    • 대응 방안
      • ISP가 직접 차단:
        - 반사 서버에서 연결을 완료하지 않은 SYN 출처 IP를 조사하여 블랙리스트로 운용, 공격 서버를 사전에 차단
        - 공격 대상이 되고 있는 공격 대상 서버 IP와 Port를 변경, 필터링하여 운영
  • 세션 하이재킹
    • 개념
      - 케빈 미트닉이 사용했던 공격 방법 중 하나로 TCP의 세션 관리 취약점을 이용한 공격기법

    • 특징
      - TCP Sequence Number의 보안상 취약점으로 발생
      - Victim과 Server 사이의 패킷을 스니핑하여 Sequence Number를 획득하고, 공격자는 데이터 전송 중인 Victim과 Server 사이를 비동기화 상태로 강제적으로 만들고, 스니핑하여 획득한 Client Sequence Number를 이용하여 공격하는 방식
      - 비동기화 상태로 패킷이 유실되어 재전송 패킷이 증가
      - 세션 하이재킹을 통해 ACK Strom 증가, 네트워크 부하 증가 현상이 발생

    • 탐지방법

      비동기화 상태 탐지
      ACK 패킷 비율 모니터링
      특정 세션에서 패킷 유실 및 재전송이 증가되는 것을 탐지
      기대하지 않은 접속의 리셋 탐지

  • 애플리케이션 공격
    • 공격기법

      HTTP GET 플러딩(Flooding)
      Slowloris(Slow HTTP Header DoS)
      RUDY(Slow HTTP POST DoS)
      Slow HTTP Read Dos
      Hulk Dos
      Hash DoS

  • 네트워크 공격
    • 공격기법

      스니핑(Sniffing)
      네트워크 스캐너(Scanner), 스니퍼(Sniffer)
      패스워드 크래킹(Password Cracking)
      IP 스푸핑(Spoofing)
      ARP 스푸핑(Spoofing)
      ICMP Redirect공격
      트로이 목마(Trojan Horses)

02. 소프트웨어 개발 보안 구현

1. SW 개발 보안 구현

a. 시큐어 코딩 가이드
- 설계 및 구현 단계에서 해킹 등의 공격을 유발할 가능성이 있는 잠재적인 보안 취약점을 사전에 제거하고, 외부 공격으로부터 안전한 소프트웨어를 개발하는 기법
- 소프트웨어 보안 약점을 방지하기 위해 가이드를 따른 개발 수행이 필요

  • 시큐어 코딩 가이드 (표 사진 첨부 예정)

2. 입력 데이터 검증 및 표현

a. 입력 데이터 검증 및 표현 개념
b. 입력 데이터 검증 및 표현 취약점

  • XSS(Cross Site Script)
    • Stored XSS
    • Reflected XSS
    • Dom(Document Object Model XSS)

XSS

  • SQL 삽입(Injection)
    • Form SQL Injection
    • Union Sql Injection
    • Stored PRocedure SQL Injection
    • Mass SQL Injection
    • Error-Based SQL Injection
    • Blind SQL Injection
      1. 응용 프로그램의 취약점 탐지
      2. 악의적인 SQL 구문 삽입하여 인증 우회
      3. 권한이 상승되어 DB의 정보 탈취 및 조작 실행
  • CSRF(Cross-Site Request Forgery)

c. 보안 기능
d. 에러 처리
e. 세션 통제
f. 코드 오류
g. 캡슐화
- 외부에 은닉이 필요한 중요한 데이터와 필요한 기능성을 불충분하게 캡슐화했을 때 인가되지 않은 사용자에게 데이터 유출, 권한 문제 등이 발생할 수 있는 보안 취약점 예방을 위한 보안 검증 항목들

  • 취약점
    • 잘못된 세션에 의한 데이터 정보 노출
    • 제거되지 않고 남은 디버그 코드
    • 민감한 데이터를 가진 내부 클래스 사용
    • 시스템 데이터 정보 노출

h. API 오용

2. 시스템 보안 구현

3. SW 개발 보안 테스트와 결함 관리

4. 비즈니스 연속성 계획(BCP)

5. 보안 중요 용어

기출문제 모음

2020년 1회

7) 다음에서 설명하는 해시 함수는?

128비트 암호화 해시 함수로 RFC 1321로 지정되어 있으며, 주로 프로그램이나 파일이 원본 그대로인지를 확인하는 무결성 검사 등에 사용된다. 1991년에 로널드 라이베스트(Ronald Rivest)가 예전에 쓰이던 MD4를 대체하기 위해 고안하였다

정답
MD5

10) 다음에서 설명하는 서비스 거부 공격은?

패킷의 출발지 주소(Address)나 포트(port)를 임의로 변경하여 출발지와 목적지 주소(또는 포트)를 동일하게 함으로써, 공격 대상 컴퓨터의 실행 속도를 느리게 하거나 동작을 마비시켜 서비스 거부 상태에 빠지도록 하는 공격

정답
랜드 어택(Land Attack)

2020년 2회

1) 다음 보기는 네트워크 인프라 서비스 관리 실무와 관련된 사례이다. 괄호안에 들어갈 가장 적합한 용어를 한글 또는 영문으로 쓰시오.

귀하는 IT회사의 보안관제실에서 근무하고 있다. 정보시스템 운영 중 자연재해나 시스템 장애 등의 이유로 대고객 서비스가 불가능한 경우가 종종 발생한다. 이를 대비하여 백업 및 복구 솔루션을 도입하고자 한다. 백업 및 복구 솔루션은 ( )와 복구 목표 시점(RPO) 기준을 충족할 수 있는 제품으로 선정해야 한다. ( )는 “비상사태 또는 업무중단 시점으로부터 업무가 복구되어 다시 정상가동 될 때까지의 시간” 을 의미하고 복구 목표 시점(RPO)는 “업무 중단 시 각 업무에 필요한 데이터를 여러 백업 수단을 이용하여 복구할 수 있는 기준점”을 의미한다.

정답
목표 복구 시간(RTO; Recovery Time Objective)

8) 네트워크 계층(network layer, 3계층)인 인터넷 프로토콜(IP)에서 ‘암호화’, ‘인증’, ‘키 관리’를 통해 보안성을 제공해 주는 표준화된 기술

정답
IPSec

14) 소프트웨어 보안 취약점 중 하나인 SQL Injection에 대해 간략히 설명하시오.

정답
웹 페이지의 입력값을 통해서 SQL명령어를 주입하여 오동작을 일으키는 해킹방법

2020년 4회

7) 해킹 공격의 종류 중 하나인 스니핑(Sniffing)에 대하여 설명하시오.

정답
네트워크상에 흘러다니는 트래픽을 훔쳐보는 행위. 주로 자신에게 와야할 정보가 아닌 정보를 자신이 받도록 조작하는 행위

20) 정보 보안의 3요소 중 가용성(Availability)에 대하여 설명하시오.

정답
인가된 사용자는 원할 때 정보에 접근이 가능해야 함

2021년 1회

18) 시스템 객체의 접근을 개인 또는 그룹의 식별자에 기반을 둔 방법, 어떤 종류의 접근 권한을 가진 사용자가 다른 사용자에 자신의 판단에 따라 권한을 허용하는 접근제어 방식은 ?

정답
임의적 접근 통제(DAC, Discretionary Access Control)

2021년 2회

8) 미국 국립 표준 기술연구소 (NIST), DES를 대체하며, 128 비트 블록 크기와 128,192,256비트 키 크기의 대칭 키 암호화 방식은?

정답
AES (Advanced Encryption Standard)

2021년 3회

4) 다음은 스푸핑 공격에 대한 설명이다. 괄호안에 들어갈 알맞은 답안을 작성하시오.

( ) 스푸핑은 근거리 통신망 하에서 ( ) 메시지를 이용하여 상대방의 데이터 패킷을 중간에서 가로채는 중간자 공격 기법이다. 이 공격은 데이터 링크 상의 프로토콜인 ( )를 이용하기 때문에 근거리상의 통신에서만 사용할 수 있는 공격이다.

정답
ARP

10) 다음에서 설명하는 블록 암호 알고리즘을 적으시오.

이것은 미국 NBS (National Bureau of Standards, 현재 NIST)에서 국가 표준으로 정한 암호 알고리즘으로, 64비트 평문을 64비트 암호문으로 암화하는 대칭키 암호 알고리즘이다. 키는 7비트마다 오류검출을 위한 정보가 1비트씩 들어가기 때문에 실질적으로는 56비트이다. 현재는 취약하여 사용되지 않는다.

정답
DES

2022년 1회

11) 다음에서 설명하는 공격 기법을 쓰시오.

이 공격은 APT 공격에서 주로 쓰이는 공격으로, 공격 대상이 방문할 가능성이 있는 합법적인 웹 사이트를 미리 감염시킨 뒤, 잠복하고 있다가 공격 대상이 방문하면 대상의 컴퓨터에 악성코드를 설치하는 방식이다.

정답
워터링 홀(Watering Hole)