Others/정보처리기사

[정처기 실기] 8-1 소프트웨어 개발 보안 설계

지윤이글스 2024. 10. 14. 21:57

📙소프트웨어 개발 보안 설계

🏷️SW개발 보안의 개념

      ➡️ 소스코드 등에 존재하는 보안 취약점을 제거하고 보안을 고려하여 기능을 설계 및 구현하는 등 소프트웨어 개발 과정에서 지켜야할 일련의 보안활동을 말한다.

 

🏷️SW개발 보안의 3대 요소

      1️⃣기밀성

      2️⃣무결성

      3️⃣가용성

    

🏷️SW개발 보안 용어

      1️⃣ 자산

      2️⃣ 위협

      3️⃣ 취약점

      4️⃣ 위협

 

🏷️DOS공격 개념

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

 

🏷️DOS공격 종류[8개]

      1️⃣ SYN 플러딩: TCP프로토콜의 구조적인 문제를 이용한 공격, 서버의 동시 가용자 수를 syn 패킷만 보내 점유하여 다른 사용자가 서버를 사용 불가능하게 하는 공격

      2️⃣ UDP플러딩: 대량의 UDP패킷을 만들어 임의의 포트번호로 전송하여 응답 메시지를 생성하게해서 지속해서 자원을 고갈시키는 공격

      3️⃣ 스머프/스머핑: 출발지 주소를 공격 대상의 IP로 설정하여 네트워크 전체에게 ICMP 패킷을 직접 브로드캐스팅하여 마비시키는 공격

      4️⃣ 죽음의 핑: ICMP 패킷을 정상적인 크기보다 아주 크게 만들어 전송하면 다수의 IP단편화가 발생, 수신측에서 단편화된 패킷을 처리하는 과정에서 많은 부하가 발생, 재조합 버퍼의 오버플로우가 발생하여 정상적인 서비스를 하지 못하도록 막는 공격

      5️⃣ 랜드어택: 출발지 IP와 목적지 IP를 같은 패킷 주소로 만들어 보냄으로써  수신자가 자기 자신에게 응답을 보내게해서 시스템의 가용성을 침해하게 하는 공격기법

      6️⃣ 티어드롭: 공격자는 IP Fragment  Offset 값을 서로 중첩되도록 조작하여 전송하고, 이를 수신한 시스템이 재조합하는 과정에서 오류가 발생, 시스템의 기능을 마비시키는 공격방식

      7️⃣ 봉크: 패킷을 분할하여 보낼 때 처음 패킷을 1번으로 보낸 후 다음 패킷을 보낼 때도 순서번호를 모두 1번으로 조작하여 전송하는 DoS공격

      8️⃣ 보잉크: 처음 패킷을 1번으로 보낸 후 다음 패킷을 100번, 다음패킷을 200번, 20번째 패킷을 2002번 21번째 패킷을 100번등으로 중간에 패킷 시퀀스 번호를 비정상적인 상태로 보내서 부하를 일으키게하는 공격 기법

 

🏷️DDoS공격 개념

      ➡️여러대의 공격자를 분산 배치하여 동시에 동작함으로써 특정 사이트를 공격하는 기법이다.

 

🏷️DDoS공격 구성요소

      1️⃣ 핸들러: 마스터 시스템의 역할을 수행하는 프로그램

      2️⃣ 에이전트: 공격 대상에 직접 공격을 가하는 시스템

      3️⃣ 마스터: 공격자에게서 직접 명령을 받는 시스템

      4️⃣ 공격자: 공격을 주도하는 해커의 컴퓨터

      5️⃣ 데몬 프로그램: 에이전트 시스템의 역할을 수행하는 프로그램

 

🏷️DDoS공격 도구

      1️⃣ Trinoo:  많은 소스로부터 통합된 UDP flood 서비스 거부 공격을 유발하는 데 사용되는 도구

      2️⃣ Tribe Flood Network:  TFN 서비스 거부 공격은 공격자가 클라이언트 프로글매을 통해 공격명령을 일련의 TFN 서버들에게 보냄으로써 이루어짐

      3️⃣ Stacheldraht: 분산서비스 거부 에이전트 역할을 하는 Linux 및 Solaris 시스템용 멀웨어 도구

 

🏷️DDoS공격 종류

      1️⃣ 대역폭소진공격- UDP/ICMP Traffic Flooding / TCP Traffic Flooding / IP Flooding

      2️⃣ 서비스 마비 공격 - HTTP Traffic Flooding / HTTP Header/Option Spoofing / Other L7 Service Flooding

 

🏷️DRDoS공격 개념

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

 

🏷️세션 하이재킹 개념 

     ➡️TCP의 세션 관리 취약점을 이용한 공격기법. TCP Sequence Number의 보안상 취약점으로 발생한다.

 

🏷️애플리케이션 공격기법

      1️⃣ HTTP GET 플러딩: 과도한 GET메시지를 이용하여 웹서버의 과부하를 유발시키는 공격

      2️⃣ Slowloris: HTTP GET 메서드를 사용하여 헤더의 최종 끝을 알리는 개행문자열을 절반만 전송하여 대상 웹 서버와 연결상태를 지속시키고 연결자원을 모두 소진시키는 서비스 거부 공격

      3️⃣ RUDY Attack: 요청헤더의 content-lenght를 비정상으로 크게 설정하여 메시지 바디부분을 매우 소량으로 보내 계속 연결상태를 유지시키는 공격

      4️⃣ Slow Read Attack: TCP윈도크기를 낮게 설정하여 서버로 전달하고 해당 윈도크기를 기준으로 통신하면서 데이터 전송이 완료될때까지 연결을 유지하게 만들어 서버의 연결자원을 고갈시키는 공격

      5️⃣ Hulk Dos: 공격자가 공격대상 웹 사이트 웹 페이지 주소를 지속적으로 변경하면서 다량으로 GET요청을 발생시키는 서비스 거부 공격 

 

🏷️네트워크 공격기법

      1️⃣ 스니핑: 공격대상에게 직접 공격하는게 아니라 데이터만 몰래 들여다보는 공격.

      2️⃣ 네트워크 스캐너,스니퍼: 네트워크 하드웨어, 소프트웨어 구성의 취약점 파악을 위한 도구

      3️⃣ 패스워드 크래킹: 

             - 사전(dict) 크래킹: 아이디랑 패스워드가 될만한 단어를 파일로 만들어서 파일의 단어를 대입해서 크랙하는 공격

             - 무차별 크래킹: 패스워드가 될만한 영문자,숫자,특수문자를 무작위로 대입해서 알아내는 공격

             - 패스워크 하이브리드 공격: 사전 + 무차별 결합!!

             - 레인보우 테이블 공격: 패스워드별로 해시값을 미리 생성해서 테이블에 모아놓음, 크래킹할 해시값을 테이블에서 역으로 검색해서 찾아내는 공격

      4️⃣ IP스푸핑: 침입자가 인증된 컴퓨팅 시스템인 것처럼 속여서 타깃 시스템의 정보를 빼네기 위해 본인의 패킷헤더를 인증된 호스트의 ip 주소로 위조해서 타깃에 전송

      5️⃣ ARP스푸핑: victim에게 잘못된 MAC 주소가 담긴 ARP Reply를 보내 victim의 ARP 캐시를 조작하여 victim으로부터 정보를 빼내는 해킹 기법

      6️⃣ICMP Redirect 공격: 3계층에서 스니핑 시스템을 네트워크에 존재하는 또 다른 라우터라고 알림으로써 패킷의 흐름을 바꾸는 공격기법

      7️⃣트로이목마: 악성루틴이 숨어있는 프로그램으로, 겉보기에는 정상적인 프로그램으로 보이지만 실행하면 악성코드를 실행하는 프로그램

 

🏷️버퍼오버플로우 공격

      ➡️메모리에 할당된 버퍼 크기를 초과하는 양의 데이터를 입력하여 이로인해 프로세스의 흐름을 변경시켜서 악성코드를 실행시키는 공격기법

 

🏷️버퍼오버플로우 공격유형

      1️⃣ 스택 버퍼 오버 플로우 공격 

      2️⃣ 힙 버퍼 오버 플로우 공격

 

🏷️백도어 개념 

      ➡️백도어는 어떤 제품이나 컴퓨터 시스템, 암호시스템에서 정상적인 인증절차를 우회하는 기법이다.

 

🏷️주요 시스템 보안 공격기법

      1️⃣ 포맷 스트링 공격: 입력된 값을 검증하지 않고 입출력함수의 포맷 스트링을 그대로 사용하는 경우 발생하는 취약점 공격기법

      2️⃣ 레이스 컨디션 공격: 둘 이상의 프로세스나 스레드가 공유자원을 동시에 접근할 때 접근순서에 따라 비정상적인 결과가 발생하는 상황

      3️⃣ 키로거 공격: 컴퓨터 사용자의 키보드 움직임을 탐지해서 저장하고, 계좌번호,카드번호,아이디,패스워드같은 개인정보를 빼내는 공격

      4️⃣ 루트킷: 불법적인 해킹에 사용되는 기능을 제공하는 프로그램 모음

 

🏷️보안 관련 용어

      1. 스피어 피싱: 특정대상에게 일반적인 이메일처럼 보내고 메일에 첨부된 파일을 클릭하도록 유해서 사용자의 개인정보를 탈취하는 기법

      2. 스미싱: SMS + 피싱

      3. 큐싱: 큐알코드 + 피싱

      4. 봇넷: 악성프로그램에 감염되어 악의적인  의도로 사용될 수있는 컴퓨터들이 네트워크로 연결됨

      5. APT공격: 특정 타깃을 목표로해서 다양한 수단을 통한 지속적인 공격

      6. 공급망공격: 소프트웨어 개발사의 네트워크게 침투해서 소스코드 수정해서 악의적인 코드 삽입

      7. 제로데이 공격: 보안취약점이 발견되어 널리 공표되기 전에 해당 취약점을 악용해서 이루어지는 공격 기법

      8. 웜: 스스로를 복제해서 네트워크 등의 연결을 통해서 전파하는 악성 소프트웨어 컴퓨터 프로그램

      9. 악성 봇: 스스로 실행되지 못하고, 해커의 명령에 의해 원격에서 제어/실행이 가능한 프로그램 

      10. 랜섬웨어: 감염된 시스템의 파일들을 암호화하여 복호화할 수 없도록하고, 피해자로 하여금 암호화된 파일을 인질처럼 잡고 몸값요구

      11. 이블트윈공격: 무선 WIFI 피싱 기법

      12. 사회공학: 사람의 심리와 행동양식을 교묘하게 이용해서 원하는 정보를 얻는 공격

 

🏷️서버인증의 기능

      1️⃣ 스니핑 방지

      2️⃣ 피싱 방지

      3️⃣ 데이터 변조 방지

      4️⃣ 기업 신뢰도 향상

 

🏷️인증기술의 유형

      1️⃣ 지식기반 인증: 아이디/패스워드

      2️⃣ 소지기반 인증: 공인인증서/OTP

      3️⃣ 생체기반 인증: 홍채, 지문

      4️⃣ 특징기반 인증: 서명, 몸짓, 발걸음 

 

🏷️서버 접근 통제 개념

      ➡️ 사람 또는 프로세스가 서버 내 파일에 읽기, 쓰기, 실행 등의 접근 여부를 허가하거나 거부하는 기능이다.

 

🏷️서버 접근 통제 유형

      1️⃣임의적 접근 통제(DAC): 주체나 그룹의 신분에 근거하여 객체에 대한 접근을 제한하는 방법

      2️⃣강제적 접근 통제(MAC): 객체에 포함된 정보의 허용등급과 접근 정보에 대하여 주체가 갖는 접근허가 권한에 근거하여 객체에 대한 접근을 제한하는 방법

      3️⃣역할기반 접근통제(RBAC): 중앙관리자가 사용자와시스템의 상호관계를 통제하며 조직 내 맡은 역할에 기초하여 자원에 대한 접근을 제한하는 방법

 

🏷️3A(Authentication, Authorization, Accounting)

      1️⃣ 인증

      2️⃣ 권한 부여

      3️⃣ 계정관리

 

🏷️인증 관련 기술

      1️⃣ SSO

      2️⃣ 커버로스

 

🏷️접근통제 보호 모델 -- 벨-라파듈라 모델

     ➡️ 미 국방부 지원 보안 모델로 보안요소 중 기밀성을 강조하며 강제적 정책에 의해 접근 통제하는 모델

 

🏷️접근통제 보호모델 -- 비바 모델

     ➡️ 벨-라파듈라 모델의 단점을 보완한 무결성을 보장하는 최초의 모델이다.

 

🏷️대칭 키 암호화 알고리즘

      1️⃣ DES: IBM에서 개발하고 미국연방표준국에서 발표한 대칭 키 기반의 블록 암호화 알고리즘, 블록크기는 64bit, 키 길이는 56bit

      2️⃣ SEED: 한국인터넷진흥원(KISA)이 개발한 알고리즘, 블록크기는 128bit, 키길이는 128bit,256bit로 분류

      3️⃣ AES: 미국 표준 기술 연구소에서 발표, 블록크기는 128bit, 키길이는 128, 192,256bit

      4️⃣ ARIA: 국가정보원+산학연구협회개발, 블록크기는 128bit, 키길이는 128, 192,256bit

      5️⃣ IDEA: DES를 대체하기위해 스위스 연방기술기관에서 개발한 알고리즘

      6️⃣ LFSR: 시프트 레지스터의 일종으로, 레지스터에 입력되는 값이 이전 상태 값들의 선형함수로 계산되는 구조로 되어있는 알고리즘

      7️⃣ Skipjack:미 국가안보국NSA에서 개발한 Clipper칩에 내장된 블록 알고리즘

 

🏷️비대칭 키 암호화 알고리즘

      1️⃣ 디피-헬만: 디피헬만은 공개키 암호방식의 개념을 이용해서 두 사용자간에 공통의 암호화 키를 안전하게 공유할 방법을 제시했음.

      2️⃣ RSA:3명의 MIT 교수가 고안한 큰 인수의 곱을 소인수 분해하는 수학적 알고리즘을 이용한 알고리즘

      3️⃣ ECC: 타원곡선암호는 타원곡선 군에서의 이산대수의 문제에 기초한 공개키 암호화 알고리즘

      4️⃣ ELGamal: T.ELGamal이 제안한 알고리즘

 

🏷️해시 암호화 알고리즘

      1️⃣ MD5

      2️⃣ SHA-1

      3️⃣SHA-256/384/512

      4️⃣HAS-160

      5️⃣HAVAL

 

🏷️IPSec 개념

     ➡️  IP계층에서 무결성과 인증을 보장하는 인증헤더와 기밀성을 보장하는 암호화를 이용한 IP보안 프로토콜이다.

 

🏷️SSL/TLS 개념

    ➡️SSL/TLS는 전송계층과 응용계층 사이에서 클라와 서버간의 웹데이터 암호화, 상호인증 및 전송 시 데이터 무결성을 보장하는 보안 프로토콜이다.

 

🏷️S-HTTP 개념

    ➡️웹 상에서 네트워크 트래픽을 암호화하는 방법중 하나.

 

🏷️ SW 개발 보안 적용 사례

      1️⃣ BSIMM: 미국 국토보안국의 지원을 받아 수행된 소프트웨어 보증프로젝트의 결과물 중 하나

      2️⃣ OPEN SAMM: OWASP 에서 개발한 개방형 보완 프레임워크

      3️⃣ Seven TouchPoints: SW보안의 모범사례를 SDLC에 통합한 소프트웨어 개발 보안 생명주기 방법론

      4️⃣ MS SDL: 마이크로소프트사가 자사의 소프트웨어 개발에 의무적으로 적용하도록 고안한 보안강화 프레임워크

      5️⃣ OWASP CLASP:  프로그램설계나 코딩오류를 찾아내어 개선하기 위해 개발팀에 취약점 목록을 제공