IT Memory Note

[정보처리기사] 소프트웨어 개발 보안 구축 : 소프트웨어 개발 보안 설계(1) 본문

자격증/정보처리기사

[정보처리기사] 소프트웨어 개발 보안 구축 : 소프트웨어 개발 보안 설계(1)

h00ddu 2024. 8. 27. 01:18

 

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

☆☆☆


(1) SW 개발 보안의 개념

 

  • 소스 코드 등에 존재하는 보안 취약점을 제거하고, 보안을 고려하여 기능을 설계 및 구현하는 등 소프트웨어 개발 과정에서 지켜야 할 일련의 보안 활동
SW 개발 보안 생명주기
요구사항 명세 설계 구현 테스트 유지보수
 요구사항 중 보안 항목 식별
 요구사항 명세서
 위협원 도출을 위한 위협 모델링
 보안 설계 검토 및 보안 설계서 작성
 보안 통제 수립
 표준 코딩 정의서 및 SW 개발 보안 가이드를 준수해서 개발
 소스 코드 보안 약점 진단 및 개선
모의침투 테스트 또는 동적 분석을 통한 보안취약점 진단 및 개선  지속적인 개선
 보안패치

 


 

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

 

  • 정보보안의 3요소인 기밀성, 무결성, 가용성을 지키고 서버 취약점을 사전에 방지하여 위혀븡로부터 위험을 최소화하는 구축 방법

SW 개발 보안의 3요소

1. SW 개발 보안의 3대 요소

 

3대 요소
설명
기밀성
(Confidentiality)

인가되지 않은 개인 혹은 시스템 접근에 따른 정보 공개 및 노출을 차단하는 특성
인가된 사용자에 대해서만 자원 접근이 가능해야 하는 특성
무결성
(Integrity)

정당한 방법을 따르지 않고선 데이터가 변경될 수 없으며, 데이터의 정확성 및 완전성과 고의/악의로 변경되거나 훼손 또는 파괴되지 않음을 보장하는 특성
인가된 사용자에 대해서만 자원 수정이 가능하며 전송 중인 정보는 수정되지 않아야 하는 특성
가용성
(Availability)
 권한을 가진 사용자나 애플리케이션이 원하는 서비스를 지속 사용할 수 있도록 보장하는 특성
인가된 사용자는 가지고 있는 권한 범위 내에서 언제든 자원 접근이 가능해야 하는 특성

 


2. SW 개발 보안 용어

 

용어
설명
자산(Assets)
조직의 데이터 또는 조직의 소유자가 가치를 부여한 대상
예 : 서버의 하드웨어, 기업의 중요 데이터
위협(Threat)
조직이나 기업의 자산에 악영향을 끼칠 수 있는 사건이나 행위
예 : 해킹, 삭제, 자산의 불법적인 유출, 위/변조, 파손
취약점(Vulnerability)
위협이 발생하기 위한 사전 조건으로 시스템의 정보 보증을 낮추는 데 사용되는 약
예 : 평문 전송, 입력값 미검증, 비밀번호를 공유
위험(Risk)
위협이 취약점을 이용하여 조직의 자산 손실 피해를 가져올 가능성

 


 

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

 

1. DoS(Denial of Service) 공격

 

⓵ DoS 공격의 개념

 

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

※ DoS 공격과 DDoS 공격의 차이점
  - DoS 공격 : 1대의 공격자 컴퓨터에서 타깃 시스템에 악성 패킷을 보내는 방식으로 공격하고, 타깃 시스템 측에서 공격자의 주소를 확인하고 차단하면 더

    이상 공격을 하지 못하는 단점이 있음
  - DDoS 공격 : 완벽한 공격을 위해 공격자가 여러 대의 컴퓨터를 감염시키고, 분산된 좀비 PC들을 이용해 타깃 시스템을 집중적으로 공격해서 서비스를

    마비시키는 차이점이 있음


⓶ DoS 공격의 종류

공격 기법
그림 / 설명
SYN 플러딩
(SYN Flooding)



TCP 프로토콜의 구조적인 문제를 이용한 문제
서버의 동시 가용 사용자 수를 SYN 패킷만 보내 점유하여 다른 사용자가 서버를 사용 불가능하게 하는 공격
• 공격자는 ACK를 발송하지 않고 계속 새로운 연결 요청을 하게 되어 서버는 자원할당을 해지하지 않고 자원만 소비하여 고갈됨
대응방안
 ① TCP 연결 타임아웃을 짧게 가져가서 연결 요청 대기 시간을 줄임
 ② Backlog Queue를 늘려줌
 ③ Syncookie 기능 활성화시켜 줌
 ④ Anti-DDoS, 방화벽, 침입차단시스템 등 보안 장비를 통해 침입 탐지 및 차단을 수행함
 ⑤ 최신 시스템 및 애플리케이션 패치 및 업데이트를 수행함
UDP 플러딩
(UDP Flooding)


대량의 UDP 패킷을 만들어 임의의 포트 번호로 전송하여 응답 메시지(ICMP Destination Unreachable)를 생성하게 하여 지속해서 자원을 고갈시키는 공격
ICMP 패킷은 변조되어 공격자에게 전달되지 않아 대기함
스머프
(Smurf)
/
스머핑
(Smurfing)


 출발지 주소를 공격 대상의 IP로 설정하여 네트워크 전체에게 ICMP Echo 패킷을 직접 브로드캐스팅하여 마비시키는 공격
 바운스(Bounce) 사이트라고 불리는 제3의 사이트를 이용해 공격
 대응방안
 ① 증폭 네트워크로 사용되는 것을 막기 위해서 다른 네트워크로부터 자신의 네트워크로 들어오는 직접 브로드캐스트(Directed Broadcast) 패킷을 허용하지 않도록 라우터를 설정함
 ② 브로드캐스트 주소로 전송된 ICMP Echo Request 메시지에 대해 응답하지 않도록 시스템을 설정함
음의 핑(PoD,
Ping of Death)

ICMP 패킷(Ping)을 정상적인 크기보다 아주 크게 만들어 전송하면 다수의 IP 단편화가 발생하고, 
수신 측에서는 단편화된 패킷을 처리(재조합)하는 과정에서 많은 부하가 발생하거나, 재조합 버퍼의 오버플로가 발생하여 정상적인 서비스를 하지 못하도록 하는 공격 기법
 대응방안
 ① 보통 ICMP 패킷은 분할하지 않으므로 패킷 중 분할이 일어난 패킷을 공격으로 의심하여 탐지하도록 설정함
 ② 현재 시스템 대부분은 반복적으로 들어오는 일정 수 이상의 ICMP 패킷을 무시하도록 설정되어 있지만, 취약점을 가지고 있다면 패치가 필요함
랜드 어택
(Land Attack)

출발지(Source) IP와 목적지(Destination) IP를 같은 패킷 주소로 만들어 보냄으로써 수신자가 자기 자신에게 응답을 보내게 하여 시스템의 가용성을 침해하는 공격 기법

 대응방안 : 수신되는 패킷 중 출발지 주소와 목적지 주소가 동일한 패킷들을 차단함
티어 드롭
(Tear Drop)


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

 패킷을 분할하여 보낼 때 처음 패킷을 1번으로 보낸 후 다음 패킷을 보낼 때도 순서번호를 모두 1번으로 조직하여 전송하는 DoS 공격
 똑같은 번호로 전송돼서 오류를 일으킴
 대응방안 : 과부하가 걸리거나 반복되는 패킷 재전송 요구를 하지 않고 버림
보잉크
(Boink)

 처음 패킷(패킷의 크기를 100이라고 가정)을 1번으로 보낸 후 다음 패킷을 100번, 다음 패킷을 200번, 20번째 패킷을 2002번, 21번째 패킷을 100번, 22번째 패킷을 다시 2002번 등으로 중간에 패킷 시퀀스 번호를 비정상적인 상태로 보내서 부하를 일으키게 하는 공격 기법
 대응방안 : 과부하가 걸리거나 반복되는 패킷 재전송 요구를 하지 않고 버림

※ 직접 브로드캐스팅(Directed Broadcast) : IP 주소의 호스트 ID 비트를 모두 1로 설정하여 브로드캐스팅하는 방식
티어 드롭, 봉크, 보잉크의 공통점 : 모두 오류 제어 로직을 악용하여 시스템 자원을 고갈시키는 공격


2. DDoS(Distributed DoS) 공격

 

⓵ DDoS 공격의 개념

 

  • DoS의 또 다른 형태로 여러 대의 공격자를 분산 배치하여 동시에 동작하게 함으로써 특정 사이트를 공격하는 기법
  • 해커들이 취약한 인터넷 시스템에 대한 액세스가 이뤄지면, 침입한 시스템에 소프트웨어를 설치하고 이를 실행시켜 원격에서 공격을 개시함

DDoS 공격 개념도

 

 DoS와 DDoS의 차이점
 - DoS는 직접 공격하고, DDoS는 공격을 하도록 지시함
 - DoS는 한 사람에 의해 공격을 감행하는 반면, DDoS는 수많은 감염 호스트를 통해 공격을 감행함


DDoS 공격의 구성요소

 

구성요소 설명
핸들러(Handler)
마스터 시스템의 역할을 수행하는 프로그램
에이전트(Agent)
공격 대상에 직접 공격을 가하는 프로그램
마스터(Master)
여러 대의 에이전트를 관리하는 역할
공격자(Attacker)
공격을 주도하는 해커의 컴퓨터
데몬 프로그램(Daemon)
에이전트 시스템의 역할을 수행하는 프로그램

 


3. DRDoS(Distributed Reflection DoS) 공격

 

⓵ DRDoS 공격의 개념

  • 공격자는 출발지 IP를 공격대상 IP로 위조하여 다수의 반사 서버로 요청 정보를 전송, 공격 대상자는 반사 서버로부터 다량의 응답을 받아서 DoS가 되는 공격

※ DDoS와 DRDoS의 차이점 : DRDoS는 DDoS에 비해 공격 근원지 파악이 어렵고, 공격 트래픽 성공 효율이 DDoS보다 훨씬 큼


⓶ DRDoS 공격 방식

 


< DRDoS 공격 절차 >

순서 공격 절차
설명
1 출발지 IP 변조 공격자는 출발지 IP를 공격 대상자 IP로 Spoofing 하여 SYN 패킷을 공격 경유지 서버로 전송
2 공격 대상자 서버로 응답 SYN 패킷을 받은 경유지 서버는 Spoofing 된 IP(공격 대상자 서버)로 SYN ACK를 전송
3 서비스 거부 공격 대상자 서버는 수많은 SYN/ACK를 받게 되어 서비스 거부가 됨

DRDoS는 봇넷 기기들이 직접 공격을 수행하는 것이 아니라 증폭 공격에 활용되는 서비스를 제공하는 서버 및 서버 역할을 할 수 있는 단말 장비(네트워크 장비, 공유기 등)까지 공격기기로 이용함


⓷ DRDoS 대응방안

 

  • ISP(인터넷 서비스 사업자)가 직접 차단함
  • 반사 서버에서 연결을 완료하지 않은 SYN 출처 IP를 조사하여 블랙리스트로 운용, 공격 서버를 사전에 차단함
  • 공격대상이 되고 있는 공격대상 서버 IP와 Port(서비스)를 변경, 필터링하여 운영함

4. 세션 하이재킹(Session Hijacking)

 

⓵ 세션 하이재킹의 개념

 

  • 케빈 미트닉이 사용했던 공격 방법 중 하나로 TCP의 세션 관리 취약점을 이용한 공격 기법

⓶ 세션 하이재킹의 탐지 방법

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