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

말하는 감자·2025년 1월 2일
0

정보처리기사 실기

목록 보기
17/29
post-thumbnail

소프트웨어 개발 보안 설계

소프트웨어 개발 보안 설계

SW 개발 보안의 3대 요소

  1. 기밀성: 인가되지 않은 사용자로부터 정보 노출을 차단하는 특성
  2. 무결성: 정당한 방법을 따르지 않고서는 데이터가 변경되지 않음을 보장하는 특성
  3. 가용성: 권한을 가진 사용자가 원하는 서비스를 지속해서 사용할 수 있도록 보장하는 특성

    기무가

SW 개발 보안 용어

  1. 자산: 조직의 데이터 소유자가 가치를 부여한 대상
  2. 위협: 조직의 자산에 악영향을 끼칠 수 있는 사건이나 행위
  3. 취약점: 위협이 발생하기 위한 사전 조건
  4. 위험: 위협이 취약점을 이용하여 조직의 자산 손실 피해를 가져올 가능성

    자위취위
    =일본 자위대 취업은 위험하다

DoS 공격

  • 개념
    시스템을 악의적으로 공격해 해당 시스템의 자원을 부족하게 만들어 원래 의도된 용도로 사용을 막는 기법

  • DoS 공격 종류

  1. SYN Flooding: TCP 프로토콜의 구조적 문제를 이용한 공격, 존재하지 않는 클라이언트가 서버에 접속한 것처럼 속여(연결을 위해 다량의 SYN 패킷 전송), 다른 서버의 서비스를 제공받지 못하게 하는 것
  2. UDP Flooding: 대량의 UDP 패킷을 만들어 임의의 포트번호로 전송해 응답 메시지를 생성하게 만들어 자원을 고갈시키는 공격
  3. smurf: 출발지 주소를 공격 대상의 IP로 설정하여 직접 브로드캐스팅하여 마비시키는 공격
  4. Ping of Death: ICMP 패킷을 원래 크기보다 크게 만들어 많은 부하를 일으켜 정상적인 서비스를 막는 공격
  5. Land Attack: 출발지와 목적지의 IP를 같은 패킷으로 하여 가용성을 침해하는 공격법
  6. Tear Drop: IP Fragment Offset 값을 중첩되도록 조작하여 기능을 마비시키는 방법, 수신 측에서 패킷을 재조립과 재전송 과정에서 과부하가 걸림
  7. Bonk/Boink: 오류 제어를 이용한 공격기법으로 패킷 재전송과 재조립에 과부하 발생

DDoS 공격

  • 개념
    여러 대의 공격자를 분산 배치하여 동시에 동작해 특정 사이트를 공격하는 기법
  • DDoS 공격 구성 요소
  1. 핸들러(Handler): 마스터 시스템 역할 수행
  2. 에이전트(Agent): 공격을 직접 가하는 시스템
  3. 마스터(Master): 공격자에게 직접 명령을 받는 시스템
  4. 공격자(Attacker): 공격을 주도하는 해커의 컴퓨터
  5. 데몬 프로그램(Daemon): 에이전트 시스템의 역할을 수행하는 프로그램

    HAMAD

  • DDoS 공격 도구
  1. Trinoo: UDP flood을 유발하는 도구
  2. Tribe Flood Network: 여러개의 목표 시스템에 대해 서비스 거부 공격 도구
  3. Stacheldraht: 분산 서비스 거부 에이전트 역할(감염된 호스트 원격으로 제어하여 공격 수행)

DRDoS 공격

  • 개념
    공격자는 출발지 IP를 공격대상 IP로 위조하여 다수의 반사 서버로 요청 정보를 전송하는 공격

애플리케이션 공격

  • 개념
    DDoS 서비스 마비 공격
  • 애플리케이션 공격기법
  1. HTTP GET 플러딩: 과도한 GET 메시지를 이용하여 웹 서버 과부하를 유발하는 공격
  2. Slowloris: 헤더의 최종 끝을 알리는 개행 문자열을 전송하지 않아 장시간 지속시켜 자원을 모두 소진시키는 공격
  3. RUDY: 요청 헤더의 길이를 비정상적으로 크게 설정하여 바디 부분을 매우 소량으로 전송하여 계속 연결상태를 지속시키는 공격
  4. Slow HTTP Read DoS: 데이터 처리율을 감소시킨 상태에서 다수 HTTP 패킷을 지속적으로 전송하여 웹 서버 연결을 장시간 지속
  5. Hulk DoS: 웹 사이트 주소를 지속적으로 변경하며 다량의 GET 요청을 발생시키는 공격

네트워크 공격

  1. 스니핑(Sniffing): 직접 공격 없이 데이터만 몰래 들여다보는 수동적 공격기법
  2. 네트워크 스캐너/네트워크 스니퍼(NetWork Scanner/Sniffer): 공격자가 네트워크 HW,SW 구성/취약점 탐색하는 도구
  3. 패스워드 크래킹(Password Cracking)
    • 사전(Dictionary) 크래킹: ID와 패스워드가 될 가능성이 있는 단어를 파일로 만들어서 대입하며 크랭
    • 무차별(Brute-Force) 크래킹: 무작위로 패스워드 자리에 입력하여 알아내는 공격
    • 패스워드 하이브리드 공격: 사전 공격 + 무차별 공격
    • 레인보우(Hash) 테이블 공격: 패스워드 별로 해시 값을 만들어 테이블에 모아놓고 크래킹 하고자 하는 해시 값을 테이블에서 검색
  4. IP 스푸핑(IP Spoofing): 침입자가 인증된 시스템처럼 속여 정보를 빼내 타깃에 전송하는 공격
  5. ARP 스푸핑(ARP Spoofing): 공격자가 특정 호스트의 MAC 주소를 자신의 주소로 위조한 ARP Reply를 만들어 희생자에게 지속적으로 전송하여 스니핑하는 공격 기법
  6. ICMP Redirect 공격: 3계층에서 스니핑 시스템을 네트워크에 존재하는 다른 라우터라고 알려 패킷의 흐름을 바꾸는 공격기법
  7. 트로이목마: 악성 루틴이 숨어 있는 프로그램을 정상적인 프로그램처럼 보이게 하는 공격
  8. DNS 스푸핑: 실제 DNS 서버보다 빨리 공격 대상에게 DNS 응답 패킷을 보내 잘못된 IP 주소로 접속하도록 유도하는 공격

시스템 보안 위협

  • 버퍼 오버플로우 공격 유형
  1. 스택 버퍼 오버플로우 공격: 메모리 영역 중 로컬이나 함수의 주소가 저장되는 스택에서 발생
  2. 힙 버퍼 오버플로우 공격: 실행 시 동적으로 할당되는 힙 영역에 버퍼를 초과하는 데이터를 입력하여 입의의 코드를 실행하는 공격
  • 버퍼 오버플로우 공격 대응 방안
  1. 스택가드: 카나리라고 불리는 무결성 체크 값을 삽입하여 확인
  2. 스택쉴드: 함수 시작 시 복귀 주소를 Global RET라는 특수 스택에 저장하여 확인
  3. ASLR: 메모리 공격을 방어하기 위해 주소 공간 배치를 난수화
  4. 안전한 함수 활용
  5. 실행 제한
  • 주요 시스템 보안 공격 기법
  1. 포맷 스트링 공격: 포맷 스트링을 인자로 하는 함수의 취약점을 이용한 공격
  2. 레이스 컨디션 공격: 둘 이상의 프로세스나 스레드가 동시 접근 시 접근 순서에 따라 비정상적인 결과가 발생하는 조건/상황
  3. 키로거 공격: 사용자의 키보드 움직임을 탐지하여 중요 정보를 빼가는 해킹 공격

보안 관련 용어

  1. 스피어피싱(Spear phising): 특정 대상을 선정하여 대상에게 일반적인 이메일로 위장한 메일을 보내서 개인정보 탈취
  2. 스미싱(Smishing): SMS + 피싱
  3. 큐싱(Qshing): 큐알코드 + 피싱
  4. 봇넷(Botnet): 악성 프로그램에 감염되는 다수의 컴퓨터들(좀비PC)이 네트워크로 연결된 상태
  5. APT 공격: 특정 타깃을 목표로 하여 다양한 수단으로 지속적이고 지능적인 맞춤형 공격
  6. 공급망 공격(Supply Chain Attack): 소프트웨어 개발사의 네트워크에 침투하여 악의적 코드를 삽임해 사용자가 소프트웨어 설치 혹은 업데이트 시 자동적으로 감염되는 공격
  7. 제로데이 공격(Zero day Attack): 보안 취약점이 공표되기 전에 이루어지는 보안 공
  8. 웜(Worm): 스스로를 복제하여 네트워크 연결 등을 통하여 전파하는 악성 소프트웨어 컴퓨터 프로그램
  9. 악성 봇(Malicious bot)
  10. 사이버 킬체인
  11. 랜섬웨어(Ransomeware): 악성 코드의 한 종류로 감염된 시스템 파일들을 암호화하여 인질처럼 잡고 몸값 요구
  12. 이블 트윈 공격(Evil Twin Attack): 무선 Wifi 피싱 기법으로 합법적인 Wifi인 척 하여 공격
  13. 난독화(Obfuscation): 코드의 가독성 낮추기
  14. XSS: 웹 페이즈의 내용을 사용자 브라우저에 표현하기 위해 사용되는 스크립트의 취약점을 악용한 해킹 기법
  15. 세션 하이제킹: 클라이언트와 서버 사이의 세션 정보를 가로채는 공격 기법, 3-way-handshake 과정에 끼어들어 시퀀스 번호를 가로채 서버에 무단으로 접근하는 TCP 세션 하이재킹이 대표적
  16. SQL Injection: 데이터의 조회화 조작을 위해 악의적인 SQL 코드 삽입
  17. 좀비 PC: 악성 코드에 감염된 컴퓨터
  18. Backdoor: 시스템 보안 인증과정을 우회하여 접근할 수 있는 비밀 통로

서버 인증 및 접근 통제

인증 기술의 유형

지식기반 인증 + 소지기반 인증 + 생체기반 인증 + 특징기반 인증

지소생특

접근 통제 기법

  1. 식별: 자신이 누구라고 시스템에 밝히는 행위
  2. 인증: 신원을 검증하기 위한 활동
  3. 인가: 인증된 주체에게 접근을 허용하는 활동
  4. 책임추적성: 주체의 접근을 추적하고 행동을 기록하는 활동

서버 접근 통제의 유형

  1. 임의적 접근 통제(DAC): 사용자/그룹의 신분 기반으로 제한하는 방법
  2. 강제적 접근 통제(MAC): 정보의 허용 등급을 기준으로 접근 제한
  3. 역할기반 접근 통제(RBAC): 사용자와 시스템의 상호관계를 통제하여 역할에 기초하여 제한하는 방법

접근 통제 보호 모델

  1. 벨-라파듈라 모델(기밀성)
  2. 비바 모델(무결성)

    벨기비무
    =벨기에 비행 무리

SW 개발 보안을 위한 암호화 할고리즘

암호 알고리즘 개념

데이터의 무결성 및 기밀성 확보를 위해 정보를 쉽게 해독할 수 없는 형태로 변환하는 기법

암호 알고리즘 방식

대칭키 암호 방식

  • 블록 암호 방식
  1. DES: 미국 연방 표준국이 발표한 알고리즘, 블록 크기는 64bit, 키 길이는 56 bit, 3
  2. SEED: 한국인터넷진흥원(KISA) 에서 개발한 알고리즘, 블록 크기는 128bit, 키 길이에 따라 128,256bit
  3. AES: 미국 표준 기술 연구소(NIST) 에서 발표한 알고리즘, DES 개별 전사 공격 가능
  4. ARIA: 국가정보원과 산학연구협회가 개발한 알고리즘, 경량 환경 및 하드웨어 효율성 향상 목적
  5. IDEA: DES 대체를 위해 스위스에서 개발한 알고리즘
  6. LFSR: 선형 되먹임 시프트 레지스터
  • 스트림 암호 방식
    RC4

비대칭키 암호방식

  1. 디피-헬만: 최초의 공개키 알고리즘, 이산대수의 어려운 문제 기본 원리
  2. RSA: MIT 교수가 고안한 소인수 분해 어려움을 이용한 알고리즘
  3. ECC: 타원 곡선 암호는 이산대수의 문제에 기초한 알고리즘
  4. Elgamal: 이산대수의 계산을 기본원리로 하고 RSA와 유사하게 전자서명 암호화/복호화에 사용

해시 암호 방식

  1. MD5: 파일의 무결성 검사에 사용
  2. SHA-1: NSA의 표준이고 DSA사용
  3. SHA-256/384/512: AES의 키 길이에 대응하도록 출력 길이를 늘인 알고리즘
  4. HAS-160: 국내 표준 서명 알고리즘 KCDSA를 위해 개발

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

  • IPSec
    IP 계층에서 무결성과 인증을 보장하는 인증 헤더와 기밀성을 보장하는 암호화를 이용한 IP 보안 프로토콜
  • SSL/TLS
    전송계층과 응용계층 사이에서 클라이언트와 서버 간의 웹 데이터 암호화(기밀성), 상호 인증 및 전송 시 데이터 무결성을 보장하는 프로토콜
  • S-HTTP
    웹상에서 네트워크 트래픽을 암호화하는 주요 방법 중 하나로, 클라이언트와 서버 간 모든 메시지를 암호화하여 전송

정보에 대한 보안 항목 식별

  • 소프트웨어 개발 보안활동 관련 법규 및 규정
    개인정보 보호법 + 정보통신망법 + 신용정보법

    개망신

  • 고유 식별 정보의 종류
    주민등록번호 + 여권 번호 + 운전면허 번호 + 외국인 등록번호

  • 개인정보보호 법령 내 정보사고
    분실 + 도난 + 유출 + 변조 + 훼손

profile
주니어개발자(?)

0개의 댓글