본문 바로가기
정보처리기사/실기

정보처리기사 실기 9장 - 소프트웨어 개발 보안 구축

by 애기 개발자 2024. 7. 15.
반응형

109. Secure SDLC (B)

1. Secure SDLC

  • SDLC에 보안 강화를 위한 프로세스를 포함한 것
  • Secure SDLC의 방법론
    • CLASP : SDLC의 초기 단계에서 보안을 강화하기 위해 개발된 방법론
    • SDL : MS사에서 기존의 SDLC를 개선한 방법론
    • Seven Touchpoints : SW보안 모범사례를 SDLC에 통합한 방법론

2. SDLC 단계별 보안 활동

  1. 요구사항 분석
  2. 설계
  3. 구현
  4. 테스트
  5. 유지보수

3. 소프트웨어개발 보안 요소

  • 기밀성 (Confidentiality)
    • 시스템 내의 정보와 자원은 인가된 사용자에게만 접근 허용
    • 정보가 노출되도 읽을 수 없음
  • 무결성 (Integrity)
    • 시스템 내의 정보는 오직 인가된 사용자만 수정 가능
  • 가용성 (Availability)
    • 인가받은 사용자는 시스템 내의 정보와 자원을 언제라도 사용 가능
  • 인증 (Authentication)
    • 시스템 내의 정보와 자원을 사용하려는 사용자가 합법적인 사용자인지 확인하는 행위
    • 비밀번호, 지문 검사 등
  • 부인 방지(NonRepudiation)
    • 데이터를 송수신한 자가 송수신 사실을 부인할 수 없도록 송수신 증거를 제공

4. 시큐어 코딩 (Secure Coding)

  • 보안 요소들을 고려하며 코딩하는 것

110. 입력 데이터 검증 및 표현 (B)

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

보안 약점

  • SQL 삽입 (Injection)
    • 웹에 SQL을 삽입하여 내부 DB서버의 데이터를 유출 및 변조하고, 관리자 인증을 우회하는 보안 약점
    • 동적 쿼리에 사용되는 입력 데이터에 예약어 및 특수문자가 입력되지 않게 필터링 되도록 설정하여 방지
  • 경로 조작 및 자원 삽입
    • 데이터 입출력 경로를 조작하여 서버 자원을 수정, 삭제할 수 있는 보안 약점
    • 사용자 입력값을 식별자로 사용하는 경우, 경로 순회 공격 방지 가능
  • 크로스사이트 스크립팅 (XSS)
    • 웹페이지에 악의적인 스크립트를 삽입하여 해킹하는 보안약점
    • HTML 태그 사용을 제한하거나, 스크립트에 삽입되지 않도록 <, >, & 등의 문자를 다른 문자로 치환하여 방지
  • 운영체제 명령어 삽입
    • 외부 입력값을 통해 시스템 명령어의 실행을 유도하여 권한을 탈취하거나 장애를 유발하는 보안 약점
    • 웹 인터페이스를 통해 시스템 명령어가 전달되지 않도록 하고, 외부 입력값을 검증 없이 내부 명령어로 사용하지 않음으로써 방지
  • 위험한 형식 파일 업로드
    • 악의적인 명령어가 포함된 스크립트 파일을 업로드
    • 파일 확장자 제한, 파일명 암호화, 웹사이트와 파일서버 분리 등을 통해 방지
  • 신뢰되지 않은 URL 주소로 자동접속 연결
    • 입력값으로 사이트 주소를 받는 경우 이를 조작하여 방문자를 피싱사이트로 유도
    • 연결되는 외부 사이트의 주소를 화이트 리스트로 관리하여 방지
  • 메모리 버퍼 오버플로
    • 할당된 메모리 크기 이상을 사용하여 발생시킴
    • 적절한 버퍼의 크기를 설정

114. 암호 알고리즘 (A)

1. 암호 알고리즘

  • 중요 정보를 보호하기 위해 평문을 암호화된 문장으로 만드는 절차 또는 방법

2. 개인키 암호화 (Private Key Encryption)

  • 동일한 키로 데이터를 암호화하고 복호화함
  • 대칭 암호 기법, 단일키 암호화 기법이라고도 함
  • 암호화/복호화 속도가 빠르지만, 관리해야할 키의 수가 많다
  • 종류
    • 스트림암호화 방식
      • 평문과 동일한 길이의 스트림을 생성하여비트 단위로 암호화
      • LFSR, RC4, TKIP
    • 블록 암호화 방식
      • 한 번에 하나의 데이터 블록을 암호화
      • DES, SEED, AES, ARIA, IDEA, Skipjack

3. 공개키 암호화 (Public Key Encryption)

  • 암호화할 때 사용하는 공개키는 공개하고, 복호화할때 비밀키는 관리자가 관리
  • 비대칭 암호 기법
  • 키의 수는 적지만, 속도가 느림
  • RSA, ECC가 대표적

4. 양방향 알고리즘 종류

  • SEED
    • 1999년 한국인터넷진흥원(KISA)에서 개발한 블록 암호화 알고리즘
    • 블록 크기 18비트, 키 길이에 따라 128, 256으로 분류
  • ARIA(Academy, Research Institute, Agency)
    • 2004년 국정원과 산학연협회가 개발한 블록 암호화 알고리즘
  • DES (Data Encryption Standard)
    • 1975년 미국 NBS에서 발표한 개인키 암호화 알고리즘
    • 블록크기 64비트, 키 길이 56비트, 16회의 라운드 수행
    • DES를 3번 적용한 3DES있음
  • AES (Advanced Encryption Standard)
    • 2001년 미국 표준 기술 연구소(NIST)에서 발표한 개인키 암호화 알고리즘
    • DES의 한계에 개발
    • 블록크기 128비트, 키 길이에 따라 AES-128, AES-192, AES-256
  • RSA (Rivest Shamir Aleman)
    • 1978년 MIT의 Rivest, Shamir, Adleman이 개발한 공개키 암호화 알고리즘
    • 큰 숫자를 소인수분해하기 어렵다는것에서 기반
  • ECC (Elliptic Curve Ctpyography)
    • 1985년 RSA의 대안
    • 이산대수 문제를 타원곡선으로 옮겨 기밀성과 효율성을 높인 암호화 알고리즘
  • IDEA (International Data Encryption Algorithm)
    • 스위스의 라이와 메시가 1990년에 개발안 PES를 개선한 알고리즘
    • 블록크기 64비트, 키 길이 128비트
  • Skipjack
    • 국가 안전 보장국(NSA)에서 개발
    • 클리퍼 칩이라는 IC칩 내장
    • 블록 크기 64비트, 키 길이 80비트
    • 주로 음성 통신 장비에 사용
  • TKIP (Temporal Key Integrity Protocol)
    • 무선랜 보안에 사용된 WEP를 보완한 데이터 보안 프로토콜, 임시 키 무결성 프로토콜이라고도 함
    • WEP의 취약성을 보완하기 위해 입력 키 길이를 128비트로 늘리고 패킷당 키할당, 키값 재설정 등 키 관리 방식을 개선함

5. 해시 (Hash)

  • 임의의 길이의 입력 데이터나 메시지를 고정된 길이의 값이나 키로 변환하는 것

종류

  • SHA
    • 1993년 NSA설계, NIST 발표
    • 초기 개발된 SHA-0 이후, SHA-1, SHA-2, SHA-224, SHA-256, SHA-384, SHA-512
  • MD5 (Message Digest algorithm 5)
    • 1991년 Rivest가 MD4를 대체하기 위해 개발
    • 블록 크기 512비트, 키 길이 128
  • N-NASH
    • 1989년 일본의 전신전화주식회사(NTT)에서 개발
    • 블록, 키길이 128비트
  • SNEFRU
    • 1990년 R.C.Merkle 발표
    • 32 비트 프로세서에서 구현을 용이하게 할 목적으로 개발

115. 서비스 공격 유형 (A)

1. 서비스 거부(DoS; Denial of Service) 공격

  • 대량의 데이터를 한 곳의 서버에 집중적으로 전송하여, 서버의 정상적인 기능을 방해하는 것
  • Ping of Death
  • 스머핑
  • SYN Flooding
  • TearDrop
  • LAND Attack
  • DDOS

2. Ping of Death (죽음의 핑)

  • 명령을 전송할 때 패킷의 크기를 허용 범위 이상으로 전송하여 네트워크를 마비시킴

3. SMURFING (스머핑)

  • 엄청난 양의 데이터를 한 사이트에 집중적으로 보내 네트워크를 불능 상태로 만듦
  • 각 네트워크 라우터에서 브로드캐스트 주소를 사용할 수 없게 미리 설정하여 방지

4. SYN Flooding

  • TCP에서 3-way-handshake 과정을 의도적으로 중단시켜 서버를 대기상태로 놓음
  • SYN 수신 대기 시간을 줄여 방지

5. TearDrop

  • Fragment Offset 값을 변경시켜 패킷을 재조립할 때 오류로 인한 과부하를 발생시켜 시스템이 다운됨
  • Fragment Offset이 잘못된 경우 패킷을 버리도록 설정하여 방지

6. LAND Attack (Local Area Network Denial Attack)

  • 패킷을 전송할 때 송신 IP와 수신 IP 모두 공격대상의 IP 주소로 변경하여 자신에게 무한히 응답하도록 함
  • 송신IP와 수신IP의 적절성을 검사하여 방지

7. DDOS (Distributed Denial of Service, 분산 서비스 거부) 공격

  • 여러 곳에 분산된 공격 지점에서 한 곳의서버에 대해 서비스 거부 공격을 수행

8. 네트워크 침해 공격 관련 용어

  • 세션 하이재킹 (Session Hijacking)
    • 서버와 클라이언트 사이의 세션 정보를 가로챔
    • 가로챈 세션을 이용해 원래 클라이언트인것 처럼 위장하여 정보를 취득함
  • ARP 스푸핑 (ARP Spoofing)
    • ARP의 취약점을 이용한 공격.
    • 물리적 주소(MAC)을 공격함
  • 스미싱 (Smishing)
    • 문자 메시지(SMS)를 이용해 사용자의 개인 정보를 빼냄
    • 최근에는 앱설치 유도 등을하여 정보를 빼감
  • 사회 공학 (Social Engineering)
    • 인간 상호 작용의깊은 신뢰를 바탕으로 사람들을 속여 비 기술적인 시스템 침입 수단
  • 다크 데이터 (Dark Data)
    • 특정 목적을갖고 데이터를 수집하였으나, 활용되지 않고 저장만 되어있는 대량의 데이터
  • 타이포스쿼팅 (Typosquatting)
    • 비슷한 url로 유명 도메인을 미리 등록하는 일
    • URL 하이재킹이라고도 함
  • 스피어 피싱 (Spear Phishing)
    • 사회 공학의 한 기법
    • 특정 대상에게 이메일로 위장한 메일을 지속적으로 발송하여, 발송 메일의 본문 링크나 첨부 파일을 클릭하도록 유도
  • APT (Advanced Persistent Threats, 지능형 지속 위협)
    • 다양한 기술과 방식으로 조직적으로 특정 기업이나 네트워크에 침투해 거점을 마련한 뒤 때를 기다리며 정보를 빼냄
    • 내부자에게 악성코드가 포함된 이메일을 꾸준히 발송하여 한번만 눌러라 기도함
    • 스턱스넷 같이 악성코드가 담긴 usb를 전파
    • 악성코드에 감염된 p2p사이트에 접속
  • 무작위 대입 공격 (Brute Force Attack)
    • 암호키를 찾기위해 적용 가능한 모든 값을 대입
  • 큐싱 (Qshing)
    • QR코드를 통해 악성 앱 다운로드 유도
  • SQL 삽입 (Injection) 공격
    • 아무 웹사이트나 무차별로 공격하다가취약한 사이트가 발견되면 DB 등의 데이터를 조작하는 공격
  • 크로스 사이트 스크립팅 (XSS; Cross Site Scripting)
    • 웹 페이지 스크립트의 취약점을 악용한 해킹 기법
  • 스니핑 (Sniffing)
    • 네트워크 중간에 패킷 정보를 도청
    • 수동적 공격에 해당

9. 정보 보안 침해 공격 관련 용어

  • 워터링홀 (Watering Hole)
    • 목표 조직이 자주 방문하는 웹사이트를 사전에 감염시켜 웹 사이트에 방문햇을 때 감염되도록함
  • 좀비PC
    • 감염되어 다른 프로그램이나 PC를 조종하도록 만들어진 컴퓨터
    • 주로 DDoS 공격에 이용됨
  • C&C 서버
    • 해커가 원격지에서 좀비 PC에 명령을 내리는 용도로 사용하는 서버
  • 봇넷(Botnet)
    • 감염되어 악의적인 의도로 사용될 수 있는 다수의 컴퓨터들이 네트워크로 연결된 형태
  • 웜(Worm)
    • 네트워크를 통해 자신을 복제하여 시스템의 부하를 높여 시스템을 다운시키는 바이러스
    • DDoS, 버퍼 오버플로, 슬래머 등이 웜 공격의 형태
  • 제로 데이 공격 (Zero Day Attack)
    • 보안 취약점이 발견되었을 때 취약점의존재 자체가 공표되기 전 해당 취약점을 통해 이루어지는 보안 공격
    • 공격의 신속성을 의미함
  • 키로거 공격 (Key Logger Attack) 
    • 컴퓨터 사용자의 움직임을 탐지해 ID, PW 등을 빼감
  • 랜섬웨어 (Ransomware)
    • 컴퓨터에 잠입해 내부 문서나 파일 등을 암호화해 사용자가 열지 못하게 함
    • 사용자에게 돈을 요구함
  • 백도어 (Back Door, Trap Door)
    • 시스템 설계자가 유지보수 편의를 위해 만든 비밀 통로, 범죄에 악용되기도 함
    • 탐지 방법: 무결성검사, 열린 포트 확인, 로그 분석 등
  • 트로이 목마 (Trojan Horse)
    • 정상적인 프로그램에 위장하여 숨어있다가 나중에 활성화되어 부작용을 일으킴
    • 자기 복제능력은 없음

117. 보안 솔루션 (A)

1. 보안 솔루션

  • 외부로부터 침입을 막는 기술 및 시스템
  • 방화벽
  • 침입 탐지 시스템(IDS)
  • 침입 방지 시스템(IPS)
  • 데이터 유출 방지(DLP)
  • 웹 방화벽
  • VPN
  • NAC
  • ESM

2. 방화벽(Firewall)

  • 내부의 네트워크와 인터넷 간에 전송되는 정보를 선별하여 수용, 거부, 수정하는 기능을 가진 침입차단 시스템

3. 침입 탐지 시스템 (IDS; Intrusion Detection System)

  • 컴퓨터 시스템의 비정상적인 사용, 오용, 남용 등을 실시간으로 탐지
  • 오용 탐지(Misuse Detection) : 미리 입력해 둔 공격 패턴이 감지되면 이를 알림
  • 이상 탐지 (Anomaly Detection) : 평균적인 시스템을 기준으로 비정상적인 행위나 자원 사용이 감지되면 알림

4. 침입 방지 시스템 (IPS; Intrusion Prevention System)

  • 비정상적인 트래픽을 차단하고 격리
  • 방화벽과 IDS를 결합

5. 데이터 유출 방지 (DLP; Data Leakage/Loss Prevention)

  • 내부 정보의 외부 유출을 방지하는 보안 솔루션
  • 사내 직원이 사용하는 PC와 네트워크를 모두 검사하고 탐지하여 외부 유출을 사전에 막음

6. 웹 방화벽

  • 일반 방화벽이 탐지하지 못하는 SQL 인젝셔느, XSS 등의 웹 기반 공격을 방어할 목적으로 만들어진 웹서버에 특화된 방화벽
  • 공격이 웹서버에 도달하기 전에 차단

7. VPN (Virtual Private Network, 가상 사설 통신망)

  • 공중 네트워크와 암호화 기술을 이용하여 사용자가 자신의 전용 회선을 사용하는것 처럼 해주는 보안 솔루션
  • SSL VPN : PC에 VPN 클라이언트를 설치하여 VPN서버에 접속, SSL프로토콜 사용
  • IPSec VPN : VPN서버가 설치된 네트워크를 서로 연결하는 방식, IPSec 프로토콜 사용

8. NAC (Network Access Control)

  • 네트워크에 접속하는 내부 PC의 MAC주소를 IP관리 시스템에 등록한 후 일관된 보안 관리 기능을 제공하는 보안 솔루션
  • PC의 SW사용 현황을 관리하여 불법적인 SW설치를 방지

9. SIEM (Security Information and Evnet Management)

  • 로그 및 보안 이벤트를 통합 관리
  • 장기간의 로그 및 보안 이벤트를 수집 및 검색할 수 있는 빅데이터 기반의 통합 로그 수집 시스템

10. SSH (Secure SHell, 시큐어 셸)

  • 다른 컴퓨터에 로그인, 명령 실행, 파일 복사등을 수행할수 있도록 기능을 지원하는 프로토콜 또는 프로그램
  • 데이터 암호화와 강력한 인증 방법으로 보안성이 낮은 네트워크에서도 안전하게 통신
  • key를 통한 인증방법 가능
  • 22번 포트 사용

11. 템퍼 프루핑 (Tamper Proofing)

  • SW의 위변조가 발생할 경우 SW를 오작동시켜 악용을 방지함

12. OAuth (Open Authorization, 공개 인증)

  • 사용자 인증에 사용되는 표준 인증 방법, 공개 API로 구현
  • 사용자가 비밀번호를 제공하지 않고 OAuth를 통해 권한을 받을 수 있다.

 

반응형

댓글