티스토리 뷰

 

[Note]

정보처리기사 실기 요약 정리 공유

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

 

 


 

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

 

SW 개발 보안의 3요소 (기무가)

  • 기밀성 (Confidentiality)
    : 인가되지 않은 개인 혹은 시스템 접근에 따른 정보 공개 및 노출을 차단하는 특성
  • 무결성 (Avaliability)
    : 정당한 방법을 따르지 않고선 데이터가 변경될 수 없으며, 데이터의 정확성 및 안정성과 고의/악의로 변경되거나 훼손 또는 파괴되지 않음을 보장하는 특성
  • 가용성(Integrity)
    : 권한을 가진 사용자나 애플리케이션이 원하는 서비스를 지속 사용할 수 있도록 보장하는 특성

SW 개발 보안 용어 (자위취위)

  • 자산 (Assets)
  • : 조직의 데이터 또는 조직의 소유자가 가치를 부여한 대상
  • 위협 (Threat)
  • : 조직이나 기업의 자산에 악영향을 끼칠 수 있는 사건이나 행위
  • 취약점 (Vulnerability)
  • : 위협이 발생하기 위한 사전 조건에 따른 상황
  • 위험 (Risk)
  • : 위협이 취약점을 이용하여 조직의 자산 손실 피해를 가져올 가능성

DoS (Denial of Service)

  • 시스템을 악의적으로 공격해 해당 시스템의 자원을 부족하게 하여 원래 의도된 용도로 사용하지 못하게 하는 공격을 말한다.

DDos (Distributed DoS)

  1. 개념
    • 여러 대의 공격자를 분산 배치하여 동시에 동작하게 함으로써 특정 사이트를 공격하는 기법.
  2. 구성요소
    • 핸들러 (Handler) : 마스터 시스템의 역할을 수행하는 프로그램
    • 에이전트 (Agent) : 공격 대상에게 직접 공격을 가하는 시스템
    • 마스터 (Master)
      : 공격자에게서 직접 명령을 받는 시스템
      : 여러 대의 에이전트를 관리하는 역할

자원 고갈 공격

  • 서버 간 핸드셰이크(Handshake)를 통해 통신이 연결되는 정상 트래픽과 달리 DoS 공격은 정상 접속을 시도하는 오픈된 소켓에 트래픽을 집중시킨다.
  • 공격이 임계치에 도달하면 사용자들은 네트워크에 전혀 접속할 수 없게 된다.
  1. SYN Flooding (SYN 플러딩)
    • TCP 프로토콜의 구조적인 문제를 이용한 공격
    • 서버의 동시 가용 사용자 수를 SYN 패킷만 보내 점유하여 다른 사용자가 서버를 사용 불가능하게 하는 공격
    • 공격자는 ACK(응답)를 발송하지 않고 계속 새로운 연결 요청을 하게 되어 서버는 자원할당을 해지하지 않고 자원만 소비하여 자원이 고갈됨.
    • 대응 방안
      1) TCP 연결 타임아웃을 짧게 가져가서 연결 요청 대기 시간을 줄인다.
      2) Backing Queue를 늘려준다.
      3) Syncookie 기능 활성화시켜준다.
      4) Anti-DDoS, 방화벽, 침입 차단시스템 등 보안 장비를 통해 침입 탐지 및 차단을 수행한다.
      5) 최신 시스템 및 애플리케이션 패치 및 업데이트를 수행한다.
  1. UDP Flooding
    • 대량의 UDP 패킷을 만들어 임의의 포트 번호로 전송하여 응답 메시지(ICMP)를 생성하게 하여 지속해서 자원을 고갈시키는 공격
    • ICMP 패킷은 변조되어 공격자에게 전달되지 않아 대기함.
  1. 스머프 (Smurf)
    • 출발지 주소를 공격 대상의 IP로 설정하여 네트워크 전체에 ICMP Echo 패킷을 직접 브로드캐스팅하여 마비시키는 공격.
    • 바운스(Bounce)사이트라고 불리는 제 3의 사이트를 이용해 공격
    • 대응 방안
      1) 증폭 네트워크로 사용되는 것을 막기 위해서 다른 네트워크로부터 자신의 네트워크로 들어오는 직접 브로드캐스트 패킷을 허용하지 않도록 라우터를 설정한다.
      2) 브로드캐스트 주소로 전송된 ICMP Echo Request 메세지에 대해 응답하지 않도록 시스템을 설정한다.
  1. PoD (Ping of Death)
    • 큰 사이트의 패킷을 의도적으로 목표시스템으로 발생시켜 시스템이 서비스할 수 없는 상태로 만드는 공격
    • 대응 방안
      1) 보통 ICMP 패킷은 분할하지 않으므로 패킷 중 분할이 일어난 패킷을 공격으로 의심하여 탐지하도록 설정한다.
      2) 현재 시스템 대부분은 반복적으로 들어오는 일정 수 이상의 ICMP 패킷을 무시하도록 설정되어 있지만, 취약점을 가지고 있다면 패치가 필요하다.
    💡 ICMP (Internet control message protocol)
    • TCP/IP 프로토콜에서 IP 네트워크의 IP 상태 및 오류 정보를 공유하게 하며 ping에서 사용된다.
    • 인터넷 환경에서 오류에 관한 처리를 지원하는 용도로 사용되며, IP 패킷의 데이터 부분에 캡슐화되어 송신 호스트에게 전달된다.
      TCP/IP 기반의 통신망에서 전송 과정에 문제가 발생하면 라우터에 의해 ICMP 메시지가 자동으로 발생하여 패킷 송신 호스트에게 전달된다.

애플리케이션 공격

  1. HTTP GET Flooding
    • Cache Control Attack 공격
    • Http 캐시 옵션을 조작하여 캐싱 서버가 아닌 웹서버가 직접 처리하도록 유도, 웹 서버 자원을 소진시키는 서비스 거부 공격
  1. Slovloris
    • HTTP GET 메소드를 사용하여 헤더의 최종 끝을 알리는 개행 문자열인 \r\n\r\n 을 전송하지 않고,
      \r\n만 전송하여 대상 웹서버와 연결상태를 장시간 지속시키고 연결 자원을 모두 소진시키는 서비스 거부 공격
  1. RUDY
    • 요청 헤더의 Content-length를 비정상적으로 크게 설정하여 메시지 바디 부분을 매우 소량으로 보내 계속 연결 상태를 유지시키는 공격
  • 대응 방안
    1) 동시 연결에 대한 임계치 설정을 통해 차단한다.
    2) 연결 타임아웃 설정을 통해 차단한다.
    3) 읽기 타임아웃 설정을 통해 차단한다.

네트워크 서비스 공격

  1. 네트워크 스캐너 / 스니퍼
    • 네트워크 하드웨어 및 소프트웨어 구성의 취약점 파악을 위해 공격자가 사용하는 공격도구
  1. Password Cracking (패스워드 크래킹)
    • 사전(Dictionary) 크래킹과 무차별(Brute Force) 크래킹 방법을 사용해 네트워크 패스워드를 탐색
    • 대표적인 공격도구로 John the Ripper가 있음.
  1. IP Spoofing (IP 스푸핑)
    • 서버에 대한 인증되지 않은 액세스 권한을 입수하는 데 사용하는 기법
    • 침입자가 패킷 헤더 수정을 통해 인증된 호스트의 IP 주소를 위조
    • 타깃 서버로 메시지를 발송한 이후 패킷은 해당 포트에서 유입되는 것처럼 표시
  1. Trojan Horses (트로이 목마)
    • 악성 루틴이 숨어 있는 프로그램으로서 겉보기에는 정상적인 프로그램처럼 보이지만 실행하면 악성 코드를 실행
  • 대응 방안
    1) 방화벽, 칩입 차단 시스템 등 네트워크 보안 장비를 통해 방어한다.
    2) 네트워크 접속 차단 시스템을 통해 방어한다.
    3) 내부 호스트 및 시스템의 악성 코드 감염방지를 위한 백신 설치 등을 통해 방어한다.

취약점 공격

  1. 랜드어택
    • 출발지 IP와 목적지 IP를 같은 패킷 주소로 만들어 보냄으로써 수신자가 자기 자신에게 응답을 보내게 하여 시스템의 가용성을 침해하는 공격기법
    • 대응 방안 : 수신되는 패킷 중 출발지 주소와 목적지 주소가 동일한 패킷들을 차단한다.
  • 봉크 / 보잉크
    • 프로토콜의 오류 제어를 이용한 공격기법으로서 시스템의 패킷 재전송과 재조립이 과부하를 유발.
💡 봉크(Bonk) : 같은 시퀀스 번호를 계속 보냄.

 

💡 보잉크(Boink) : 일정한 간격으로 시퀀스 번호에 빈 공간 생성.

 

  1. 티어 드롭
    • IP 패킷의 재조합 과정에서 잘못된 Fragment Offset 정보로 인해 수신시스템이 문제를 발생하도록 만드는 Dos 공격
    • 공격자는 IP Fragment Offset 값을 서로 중첩되도록 조작하여 전송하고, 이를 수신한 시스템이 재조합하는 과정에서 오류가 발생, 시스템의 기능을 마비시키는 공격 방식.
  • 봉크/보잉크/티어드롭 대응방안 : 과부하가 걸리거나 반복되는 패킷 재전송 요구를 하지 않고 버린다.

 

세션 하이재킹 (Session Hijacking)

  • TCP 신뢰성 기반의 연결을 이용한 공격 방법으로, 통신 내용을 엿보거나 세션을 가로채어 정상적인 인증 과정을 무시하고, 불법으로 시스템에 접근할 수 있는 공격을 말한다.

 

암호 알고리즘

대칭 키 암호 방식

  • 암호화 알고리즘의 한 종류로, 암호화와 복호화에 같은 암호키를 쓰는 알고리즘
  • 대칭 키는 블록 암호화와 스트림 암호화 알고리즘으로 나뉨
  • ex) DES, AES, SEED, ARIA 128/192/256
💡 DES (Data Encryption Standard
   - 56Bit의 키를 이용, 64Bit의 평문 블록을 64Bit의 암호문 블록으로 만드는 블록 암호 방식의 매국 표준 암호화 알고리즘.
💡 SEED
  -  KISA, ETRI에서 개발하고 TTA에서 인증한 안전성, 신뢰성이 우수한 고속 블록 단위의 128Bit 대칭 키 암호화 알고리즘.
💡 AES (Advanced Encryption Standard)
   - 고급 암호화 표준이라고도 불리며, DES를 대체한 암호 알고리즘으로 암호화와 복호화 과정에서 동일한 키를 사용하는 대칭 키 암호화 알고리즘.

 

  1. 비대칭 키 암호 방식
    • 공개 키를 이용해 암호화하고 공개 키에 해당하는 개인 키를 이용해 복호화하는 암호 방식
    • 비대칭 키 암호 방식에서는 공개 키와 개인 키가 존재하며, 공개 키는 누구나 알 수 있지만 그에 대응하는 개인 키는 키의 소유자만이 알 수 있어야 한다.
    • 비밀 키는 키의 소유자만이 알 수 있어야 한다. 공개 키는 보안 타협 없이 공개적으로 배포가 가능하다.
    • 비대칭 키 암호를 구성하는 알고리즘은 대칭 키 암호 방식과 비교하여 공개 키 암호 방식이라고 부른다.
    • ex) RSA, ECC, ECDSA, 디피-헬만

 

 💡 RSA (Rivest Shamir Adieman)
    - 로널드 다이베스트, 아디 샤미르, 레너드 애들먼의 앞글자를 딴 비대칭 키 암호화 알고리즘.
현재 비대칭 키 암호 방식 중에서 가장 널리 쓰이고 있는 방식으로서, 소인수 분해의 어려움을 이용한 방식이다.

 

💡 디피-헬만 (Diffe-Hellman)
   - 암호 키를 교환하는 방법으로서 두 사람이 암호화되지 않은 통신망을 통해 공통의 비밀 키를 공유할 수 있도록 하는 방식이다.

 

  1. 해시 방식
    • 단방향 알고리즘으로서 임의의 데이터를 고정된 길이의 데이터로 매핑하는 함수
    • 해시 함수의 결과로 원본 데이터를 유추하기 어려운 것을 이용
    • 연산에 걸리는 시간이 빠른 것이 장점이지만, 동일한 결과를 갖는 값이 발생하는 해시 충돌 문제가 발생 가능한 단점 존재.
      ex) SHA, MD5, HAS-160

💡 SHA (Secure Hash Algorithm)

  • 미국 국가안보국이 1993년에 처음으로 설계했으며, 미국 국가 표준으로 지정한 해시 암호화 알고리즘이다. 안전한 해시 암호화 알고리즘으로 SHA-224, SHA-256, SHA-384, SHA-512를 통칭해 SHA-2라고 한다.

 

💡 MD5 (Massage-Digest Algorithm 5)

  • RFC 1321로 지정되어 있으며, 로널드 다이베스트가 예전에 쓰이던 MD4를 대체하기 위해 고안한 128Bit 해시 암호화 알고리즘이다.

 

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

 

SQL 삽입 공격

  • 사용자의 입력값 등 외부 입력값이 SQL 쿼리에 삽입되어 공격
  • 대응방안 : PreparedStatement 객체 등을 이용하여 DB에 컴파일된 쿼리문(상수)을 전달.

XSS (크로스 사이트 스크립트)

  • 검증되지 않은 외부 입력값에 의해 브라우저에서 악의적인 코드가 실행
  • 부적절한 스크립트가 수행되면 정보유출 등의 공격을 유발할 수 있다.
  • 대응방안 : 입/출력값에 문자열 치환 함수를 사용

Mutex (상호 배제)

  • 임계영역(프로그램 상에서 동시에 실행될 경우 문제를 일으킬 수 있는 부분)을 가진 스레드들의 실행 시간이 서로 겹치지 않게 각각 단독으로 실행되게 하는 기술이다.

싱글톤 패턴 (Singleton Pattern)

  • 전역 변수를 사용하지 않고 객체를 하나만 생성하도록 하며, 생성된 객체를 어디에서든지 참조할 수 있도록 하는 패턴을 말한다.

DLP (Data Loss Prevention)

  • 데이터 유출 방지
  • 내부 정보 유출 방지를 의미하며, 기업 내에서 이용하는 다양한 주요 정보인 기술 정보, 프로젝트 계획, 사업 내용, 영업 비밀, 고객 정보 등을 보호하고 외부 유출을 방지하기 위해서 사용하는 보안 기술.

 

소프트웨어 개발 보안 테스트 유형

  1. 정적 분석
    • SW를 실행하지 않고 보안 약점을 분석
    • 개발 단계에서 주로 사용
    • 취약점 조기 발견으로 수정비용 절약 가능
    • 설계/구조 관점의 취약점 식별 불가 (취약점 발견에 제한적)
  1. 동적 분석
    • SW 실행 환경에서 보안 약점 분석
    • 시험 단계에서 주로 사용
    • 정확도와 커버리지 향상
    • 구조 관점의 보안 약점 식별 불가

 

 


틀린 내용이 있거나 문제가 있을시 알려주세요. 같이 공부해요 😊

이 글이 도움이 되셨다면 공감, 댓글 부탁드려요 👍🏻

댓글
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
Total
Today
Yesterday
공지사항
최근에 올라온 글