[정보처리기사 실기 정리] 9-1. 소프트웨어 개발 보안 설계

전현준·2024년 4월 18일
0

정보처리기사 실기

목록 보기
10/12
post-thumbnail

(1) SW 개발 보안의 개념

  • 소스 코드에 존재하는 보안 취약점을 제거하고, 보안을 고려하여 기능을 설계 및 구현

(2) SW 개발 보안의 구성요소

⭐ 기무가 : 군대를 기무사로 가게 됐다..

  • 기밀성 : 인가되지 않은 개인 혹은 시스템 접근의 정보 공개 및 노출 차단

  • 무결성 : 데이터의 정확성 및 완전성과 악의로 변경되거나 파괴되지 않음을 보장

  • 가용성 : 권한을 가진 사용자나 어플리케이션이 원하는 서비스를 지속 사용할 수 있도록 보장

  • SW 개발 보안 용어

    • 자산 / 위협 / 취약점 / 위험

(3) SW 개발 보안을 위한 공격기법 이해

  • DoS 공격 (Denial of Service) 공격
    • 시스템의 자원을 부족하게 공격하는 기법, 수 많은 접속 시도, 서버의 TCP 연결 소진

DOS 공격 종류

  • SYN 플러딩 : SYN 패킷만 보내 점유하여, 다른 사용자가 서버를 사용 불가하게 만듬
  • UDP 플러딩 : 대량의 UDP 패킷을 만들어 응답 메세지(ICMP)를 생성, 자원 고갈
  • 스머프 / 스머핑 : 출발지 주소를 공격 대상의 IP로 설정. 패킷을 직접 브로드캐스팅
  • 죽음의 핑 : ICMP 패킷을 정상적인 크기보다 아주 크게 만들어 전송
    • 수신 측에서는 단편화된 비정상 패킷을 재조합 하는 과정에서 부하 발생
  • 랜드 어택 : 출발지 IP와 목적지 IP를 같은 패킷 주소로 만듬.
  • 티어드롭 : IP Fragment Offset 값을 중첩되도록 조작, 재조합하는 과정에서 오류
  • 붕크 : 처음 패킷을 1번으로 보내고, 다음 패킷도 1번으로 조작함
  • 보잉크 : 중간 패킷 시퀀스 번호를 비정상적인 상태로 보내서 부하를 일으킴
  • DDoS 공격 (Distributed DoS)

    • 여러 대의 공격자를 분산 배치, 동시에 동작하게 함, 원격으로 공격을 개시함
    • 구성요소
      • 핸들러 : 마스터 시스템의 역할을 수행
      • 에이전트 : 공격 대상에 직접 공격을 가함
      • 마스터 : 공격자에게서 직접 명령을 받음
      • 공격자 : 공격을 주도하는 해커의 컴퓨터
      • 데몬 프로그램 : 에이전트 시스템의 역할을 수행하는 프로그램
  • DRDoS 공격

    • 다수의 반사 서버로 요청 정보를 전송
    • 반사 서버에서 공격을 하다보니, 공격 근원지 파악이 어려움.

DRDoS 공격 방식
1. IP 변조 : 공격 대상 IP로 출발지 IP를 변조함. SYN 요청을 보냄
2. 서버로 응답 : 서버는 공격 대상으로 ACK를 보냄
3. 서비스 거부 : 공격 대상은 많은 ACK를 받아 자원 부족함

  • DRDoS 대응 방안

    • ISP가 직접 차단한다.
    • 연결을 완료하지 않은 SYN 출처 IP를 조사하고, 블랙 리스트를 운영한다.
    • 공격 대상 서버 IP와 Port를 변경한다.
  • 세션 하이제킹

    • TCP의 세션 관리 취약점을 이용한 공격기법

      탐지 방법

      • 비동기화 상태 탐지
      • ACK 패킷 비율 모니터링
      • 기대하지 않은 접속의 리셋 탐지

  • 어플리케이션 공격

어플리케이션 공격 기법

  • HTTP GET 플러딩 : 과도한 GET 메세지를 이용하여 웹 서버의 과부하 유발
  • Slowloris : 헤더의 끝인 \r\n\r\n 이 아니라, \r\n만 전송하여, 연결 상태 유지, 자원 소모
  • RUDY Attack : 요청 헤더의 Content-Length를 비정상적으로 크게 설정
    • 데이터는 소량으로 보내 계속 연결 상태 유지시킴
  • Slow Read Attack : TCP 윈도 크기를 낮게 설정, 데이터 전송이 완료될 때까지 연결 유지
  • Hulk DoS : 주소를 지속적으로 변경하여, GET 요청을 발생시켜 서비스 거부
    • 주소를 변경하는 것은 디도스 대응 장비 우회
  • Hash Dos : HTTP POST를 사용하여 많은 수의 파라미터를 서버에 전달.

  • 네트워크 공격

네트워크 공격 기법

  • 스니핑 : 직접 공격을 하지 않고, 데이터만 몰래 들여다보는 수동적 공격
  • 네트워크 스니퍼 : 네트워크의 취약점 파악을 위해 공격자가 취약점 탐색하는 도구
  • 패스워드 크래킹
    • 사전 크래킹 : ID와 PW가 될 가능성이 있는 단어를 미리 파일로 만들어 놓고, 대입
    • 무차별 크래킹 : 무작위로 대입하여 패스워드를 알아내는 기법
    • IP 스푸핑 : 침입자가 인증된 컴퓨팅 시스템인 것처럼 속여서 시스템 정보를 빼냄
    • ARP 스푸핑 : MAC 주소를 알아내고, 희생자의 MAC주소를 공격자의 MAC 주소로
      • 변경된 MAC 주소를 통해서 패킷을 스니핑함
    • ICMP Redirect 공격 : 스니핑 시스템을 라우터인 것처럼 위조하여 패킷 스니핑
    • 트로이 목마 : 악성 코드가 숨어 실행하면 악성 코드를 실행하는 프로그램

  • 시스템 보안 위협

버퍼 오버플로 공격 : 메모리에 할당된 버퍼 크기를 초과하는 데이터를 입력

  • 스택 버퍼 오버플로 공격 : Local 값이나, 함수의 Return 주소가 저장되는 스택 오버플로
    • 버퍼 크기를 초과하는 양의 데이터를 입력, 복귀 주소 변경, 공격자 원하는 코드
  • 힙 버퍼 오버플로 : 동적으로 할당되는 힙 영역에 할당된 버퍼 크기 초과
    • 해당 위치에 특정 함수에 대한 포인터 주소를 악용하여 관리자 권한 파일에 접근
  • 대응방안
    • 스택 가드 활용 : 카나리 무결성 체크용 값 삽입, 버퍼 오버플로 발생 시 값 체크
    • 스택 쉴드 활용 : 함수 시작 시 복귀 주소 Global RET 스택에 저장. 종료 시 값 비교
    • ASLR 활용 : 주소 공간 배치 난수화, 실행 시 마다 메모리 주소 변경
    • 안전한 함수 활용 : strncat(), strncpy ...

💡 백도어 : 정상적인 인증 절차 우회하는 기법, 고정된 형태는 아님.

  • 이용자 몰래 컴퓨터에 접속하여 악의적인 행위를 함
  • 백도어 탐지기법
    • 프로세스 및 열린 포트 확인 : ps -ef / netstat -an
    • Setuid 파일 검사 : 새로 생성된 Setuid 파일을 통해 백도어 감지
    • 백신 및 백도어 탐지 툴 : 툴을 이용하여 백도어 탐지
    • 무결성 검사 : Tripwire 툴을 이용하여 무결성 검사
    • 로그 분석

(4) 서버 인증 및 접근 통제

  • 서버 인증의 개념
    • 접속자의 로그인 정보를 확인하는 보안 절차, 무결성송신자 검증이 인증에 해당

  • 인증 기술의 유형
    • 지식 기반 인증 : ID / PW
    • 소지 기반 인증 : 공인인증서 / OTP
    • 생체 기반 인증 : 지문, 홍채, 얼굴
    • 특징 기반 인증 : 서명, 발걸음, 몸짓

  • 서버 접근 통제
    • 서버 내 CRUD 등의 접근 여부를 허가하거나 거부하는 기능
    • 기밀성, 무결성, 가용성을 보장
    • 접근 통제 유형
      • 임의적 접근 통제 (DAC) : 주체나 그룹의 신분에 근거하여, 객체에 대한 접근 제한
      • 강제적 접근 통제 (MAC) : 객체에 포함된 정보의 허용등급과 권한에 근거하여 접근 제한
        • 규칙 기반 접근통제 정책
      • 역할 기반 접근 통제 (RDAC) : 역할에 기초하여 자원에 대한 접근을 제한

  • 접근 통제 보호 모델
    • 벨-라파듈라 모델 : 미 국방부 지원 보안 모델, 기밀성 강조
      • No Read UP : 보안 수준이 낮은 주체는 높은 객체를 읽어서는 안됨
      • No Write Down : 보안 수준이 높은 주체는 낮은 객체에 기록하면 안됨
    • 비바 모델 : 벨-라파듈라 모델의 단점을 보완한 무결성 보장
      • No Read Down : 높은 등급의 주체는 낮은 등급의 객체를 읽을 수 없음
      • No Wirte UP : 낮은 등급의 주체는 높은 등급의 객체를 수정할 수 없음

  • 3A
    • 인증 (Authentication) : 주체의 신원을 검증
    • 권한 부여 (Authorization) : 검증된 가입자에게 어떤 수준의 권한과 서비스 허용
    • 계정 관리 (Accounting) : 리소스 사용에 대한 정보 수집 관리

  • 인증 관련 기술
    • SSO : 한 번의 인증 과정으로 여러 컴퓨터상의 자원을 이용
    • OAuth : 다른 웹 사이트나 어플리케이션의 접근 권한을 부여할 수 있게 하는 개방형 기술
    • 커버로스 : 대칭 키 암호기법에 바탕을 둔 타겟 기반의 프로토콜

(5) SW 개발 보안을 위한 암호화 알고리즘

  • 암호 알고리즘 : 데이터의 무결성 및 기밀성 확보를 위해, 정보를 쉽게 해독 할 수 없는 형태 변환
  • 암호 알고리즘 방식
    • 양방향 방식
      • 대칭 키 암호방식 : 암호화복호화에 같은 암호 키를 사용
        • DES : 미국 연방 표준국에서 발표한 대칭키, 블록 크기는 64bit, 키 길이는 56bit
        • AES : 블록 암호화 알고리즘, 블록의 크기는 128bit, 192bit, 256bit로 분류
          • 라운드 수 10,12,14 라운드로 분류
        • SEED : 국내 한국인터넷진흥원이 개발한 블록 암호화 알고리즘.
          • 16개의 64bit 라운드 키를 사용. 총 16회 라운드 거침.
      • 비대칭 키 암호방식 (공개키 암호방식) : 공개 키로 암호화된 메세지는 개인 키로 복호화
        • 디피-헬만 : 최초의 공개키 알고리즘, 이산 대수의 계산이 어려운 문제를 기본 원리
        • RSA : 큰 인수의 곱을 소인수 분해하는 수학적 알고리즘을 이용한 공개키 알고리즘

    • 일방향 해시함수 방식
      • MAC : 키를 사용하는 메세지 인증 코드로 메세지의 정당성 검증, 메세지와 함께 사용
      • MDC : 변경 감지 코드로 새로운 MDC를 생성하고, 송신자에게 받은 MDC 값 비교

    • 해시 암호화 알고리즘
      • MD5 : 512비트짜리 입력 메세지 블록에 대해, 차례로 동작. 128비트의 해시값 생성
      • SHA-1 : Digital Signature Algorithm 에서 사용, 160 해시 값 사용
      • SHA-256/384/512 : SHA 알고리즘의 한 종류, AES에 대응하도록 출력 길이 늘림
      • HAS-160 : 국내 표준 서명 알고리즘 KCDSA를 위해 개발,
      • HAVAL : 메세지를 1024bit 블록으로 나눔

(6) 데이터베이스 암호화 기법

💡 암호화 기법

  • API 방식 : 어플리케이션에서 암호 모듈을 적용, 어플리케이션 서버에 암, 복호화, 키
  • Plug-in 방식 : DB 서버에 암복호화 모듈이 설치
  • TDE 방식 : DBMS 커널이 자체적으로 암 복호화 기능을 수행 가능.
  • Hybrid 방식 : API방식과 Plug-in 방식 결합 방식

(7) 안전한 전송을 위한 데이터 암호화 전송

  • PPTP : IP, IPX 페이로드를 암호화, IP 헤더로 캡슐화하여 전송

    • 2계층에서 사용하는 보안 프로토콜, 1:1 통신

  • L2F : 하나의 터널에 여러개의 연결 지원, UDP 사용. 2계층에서 사용

  • L2TP : L2F와 PPTP의 결합 방법, UDP 사용, 터널링 인증, IPSec와 함께 사용하여 기밀성 제공

  • IPSec : IP 계층에서 무결성과 인증을 보장하는 인증 헤더기밀성을 보장하는 암호화를 이용

    • 기밀성 / 비 연결형 무결성 / 인증 / 재전송 공격 방지 / 접근 제어

    • 동작 모드

      • 전송 모드 : IP 패킷의 페이로드를 보호하는 모드
      • 터널 모드 : IP 패킷 전체를 보호하는 모드, IP 패킷을 IPSec으로 캡슐화
    • IPSec 프로토콜

      • 인증(AH) 프로토콜 : 메세지 인증 코드(MAC)을 이용하여, 기밀성은 제공하지 않음
      • 암호화(ESP) 프로토콜 : 암호화를 이용하여 기밀성 제공
      • 키 관리(IKE) 프로토콜 : KEY를 주고 받는 알고리즘, Key에 대한 정의

  • SSL/TLS : 웹 데이터 암호화, 상호 인증 및 전송 시 데이터 무결성 보장

    • 다양한 암호 통신 방법 활용 : 대칭 키 암호화, 공개키 암호화, 해시함수 등 조합하여 사용
    • 특정 암호 기술에 의존하지 않음 : 암호 도구 목록을 변경하여 강력한 알고리즘 사용
    • 기밀성 : Triple DES, AES 같은 대칭 키 암호화
    • 상호인증 : RSA, DSS, X.509 공개 키 인증서
    • 메세지 무결성 : 안전한 해시 알고리즘
  • S-HTTP (Secure Hypertext Transfer Protocol)

    • 모든 메세지를 암호화하여 전송하는 기술, HTTP를 사용한 어플리케이션에 한하여 보호
profile
백엔드 개발자 전현준입니다.

0개의 댓글

관련 채용 정보