Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- join
- SQL
- 안드로이드
- 오블완
- 혼공파
- 카카오코테
- select
- 티스토리챌린지
- 혼공챌린지
- 프로그래머스
- doitandroid
- java
- CS
- Til
- Kotlin
- 안드로이드스튜디오
- MySQL
- groupby
- 정처기
- 기술면접
- Android
- 코테
- 스터디
- 정보처리기사
- 알고리즘
- 인프런
- 혼공단
- 코틀린
- 자바
- 자료구조
Archives
- Today
- Total
Welcome! Everything is fine.
[정처기/실기] 9단원(소프트웨어 개발 보안 구축) 요약 본문
728x90
* 수제비 정보처리기사 실기 책을 보고 직접 정리한 내용입니다.
1. 소프트웨어 개발 보안 설계
[1] SW 개발 보안의 구성요소
기밀성(Confidentiality)
- 인가되지 않은 개인 혹은 시스템 접근에 따른 정보 공개 및 노출을 차단하는 특성
- 인가된 사용자에 대해서만 자원 접근이 가능해야 하는 특성
무결성(Integrity)
- 정단한 방법을 따르지 않고선 데이터가 변경될 수 없으며, 데이터의 정확성 및 완전성과 고의/악의로 훼손되지 않음을 보장하는 특성
- 인가된 사용자에 대해서만 자원 수정 가능, 전송 중인 정보는 수정되지 않아야 하는 특성
가용성(Avaliability)
- 권한을 가진 사용자나 애플리케이션이 원하는 서비스를 지속 사용할 수 있도록 보장하는 특성
- 인가된 사용자는 가지고 있는 권한 범위 내에서 언제든 자원 접근이 가능해야하는 특성
- SW 개발 보안 용어
자산(Assets) | 조직의 데이터 또는 조직의 소유자가 가치를 부여한 대상 |
위협(Threat) | 조직이나 기업의 자산에 악영향을 끼칠 수 있는 사건이나 행위 |
취약점(Vulnerability) | 위협이 발생하기 위한 사전 조건 |
위험(Risk) | 위협이 취약점을 이용해 조직의 자산 손실 피해를 가져올 가능성 |
[2] SW 개발 보안을 위한 공격기법의 이해
DoS(Denial of Service) 공격
개념
- 시스템을 악의적으로 공격 → 자원 부족하게 하여 의도된 용도로 사용하지 못하게 함
- 특정 서버에게 수많은 접속 시도 → 다른 사용자가 서버 이용X, 서버의TCP 연결 소진
공격의 종류
- SYN 플러딩(SYN Flooding)
- TCP 프로토콜의 구조적인 문제를 이용한 공격
- ACK 발송X SYN 패킷만 계속 보내 → 다른 사용자가 서버 사용X, 서버는 자원만 소비하여 고갈
- UDP 플러딩(UDP Flooding)
- 대량의 UDP 패킷 임의의 포트번호로 전송 → 응답 메세지 생성, 자원 고갈
- ICMP 패킷은 변조되어 공격자에게 전달X 대기
- 스머프(Smurf)/스머핑(Smurfing)
- 출발지 주소를 공격 대상 IP로 설정 → 직접 브로드 캐스팅하여 마비
- 제 3의 사이트(바운스 사이트) 이용해 공격
- 죽음의 핑(PoD; Ping of Death)
- ICMP 패킷을 아주 크게 만들어 전송 → 다수의 IP 단편화 발생
- 수신 측에서는 단편화된 패킷을 처리하는 과정에서 많은 부하 발생
- 랜드 어택(Land Attack)
- 출발지 IP == 목적지 IP → 수신자가 자기 자신에게 응답 보내게 하여 시스템의 가용성 침해
- 티어 드롭(Tear Drop)
- IP패킷의 재조합 과정에서 잘못된 Fragment Offset 정보로 수신시스템에 문제 발생
- IP Fragment Offset 값을 서로 중첩되도록 조작하여 전송
- 봉크(Bonk)
- 처음 패킷을 1번으로 보낸 후 다음 패킷도 1번으로 조작하여 전송 → 오류 일으킴
- 보잉크(Boink)
- 패킷을 1 → 100 → 200 → 2002 → 100 → 2002 이런 식으로 중간에 시퀀스 번호를 비정상적인 형태로 보내 부하를 일으키게 함
DDoS(Distributed DoS) 공격
개념
- 여러 대의 공격자를 분산 배치하여 동시에 동작 → 특정 사이트 공격
- DoS는 (한 사람이)직접 공격, DDoS는 (수많은 감염 호스트를 통해)공격을 하도록 지시
공격 구성요소
- 핸들러(Handler) : 마스터 시스템의 역할을 수행하는 프로그램
- 에이전트(Agent) : 공격 대상에 직접 공격을 가하는 시스템
- 마스터(Master) : 공격자에게서 직접 명령을 받는 시스템, 여러 대의 에이전트 관리
- 공격자(Attacker) : 공격을 주도하는 해커의 컴퓨터
- 데몬 프로그램(Daemon) : 에이전트 시스템의 역할을 수행하는 프로그램
공격 도구
- Trinoo
- Tribe Flood Network
- Stacheldraht
공격의 대응 방안
- 차단 정책 업데이트
- 좀비 PC IP 확보
- 보안 솔루션 운영
- 홈페이지 보안 관리
- 시스템 패치
공격의 종류
- 대역폭 소진 공격(3~4 계층)
- UDP/ICMP Traffic Flooding
- TCP Traffic Flooding
- IP Flooding
- 서비스(애플리케이션) 마비 공격(7계층)
- HTTP Traffic Flooding
- HTTP Header/Option Spoofing
- Other L7 Service Flooding
DRDoS(Distributed Reflection DoS) 공격
개념
- 출발지 IP를 공격대상 IP로 위조하여 다수의 반사 서버로 요청 정보 전송, 공격 대상자는 반사 서버로부터 다량의 응답을 받아 서비스 거부가 되는 공격
- 공격 근원지 파악이 어려움
공격 절차
- 출발지 IP 변조 : 출발지 IP를 공격 대상자 IP로 Spoofing하여 SYN 패킷을 공격 경유지 서버로 전송
- 공격 대상자 서버로 응답 : SYN 패킷을 받은 공격 경유지 서버는 Spoofing된 IP로 SYN/ACK를 전송
- 서비스 거부 : 공격 대상자 서버는 수많은SYN/ACK를 받게 되어 서비스 거부됨
대응 방안
- ISP(인터넷 서비스 사업자)가 직접 차단
- 반사 서버에 연결을 완료하지 않은 SYN 출저 IP 조사 → 블랙리스트로 운용, 공격 서버 사전 차단
- 공격 대상 서버 IP와 Port를 변경, 필터링하여 운영
세션 하이재킹(Session Hijacking)
개념
케빈 미트닉이 사용했던 공격 방법 중 하나로 TCP의 세션 관리 취약점을 이용한 공격기법
특징
TCP Sequence Number의 보안상 취약점으로 발생
애플리케이션 공격
- HTTP GET 플러딩
- Cache Control Attack 공격
- 과도한 Get 메시지를 이용하여 웹 서버의 과부하를 유발시키는 공격
- Slowloris(Slow HTTP Header DoS)
- 헤더의 최종 끝을 알리는 개행 문자열인 \r\n\r\n을 전송하지 않고 \r\n만 전송하여 대상 웹 서버와 연결 상태를 장시간 지속시키고 연결 자원을 모두 소진시킴
- RUDY Attack(Slow HTTP POST DoS)
- 요청헤더의 Content-length를 비정상적으로 크게 설정하여 메시지 바디 부분을 매우 소량으로 보내 계속 연결 상태를 유지시킴
- Slow Read Attack
- Hulk DoS
네트워크 공격
- 스니핑(Snififng)
- 직접 공격X, 데이터만 몰래 들여다보는 수동적 공격 기법
- 네트워크 스캐너(Scanner), 스니퍼(Sniffer)
- 네크워크 하드웨어 및 소프트웨어 구성의 취약점 파악을 위해 공격자가 취약점을 탐색하는 공격 도구
- 패스워드 크래킹(password Cracking)
- 사전 크래킹
- 무차별 크래킹
- 패스워드 하이브리드 공격
- 레인보우 테이블 공격
- IP 스푸핑(IP Spoofing)
- 침입자가 타깃 시스템의 정보를 빼내기 위해 본인의 패킷 헤더를 인증된 호스트의 IP 어드레스로 위조해 타깃에 전송하는 공격기법
- ARP 스푸핑
- ICMP Redirect 공격
- 네트워크 계층(3계층)에서 스니핑 시스템을 네트워크에 존재하는 또 다른 라우터라고 알림으로써 패킷의 흐름을 바꾸는 공격기법
- 트로이 목마
시스템 보안 위협
- 버퍼 오버플로우 공격
- 공격 대응 방안
스택가드 | 카나리 |
스택쉴드 | Global RET |
ASLR | 주소 공간 배치 난수화 |
- 백도어
- 정상적인 인증 절차를 우회하는 기법
3) 주요 시스템 보안 공격기법
- 포맷 스트링 공격 : 포맷 스트링을 인자로 하는 함수의 취약점을 이용한 공격
- 레이스 컨디션 공격
- 키로거 공격 : 사용자의 키보드 움직임을 탐지해서 저장 → 개인 정보 빼감
- 루트킷
[3-1] 서버 인증
- 서버 인증 : 다중 사용자 시스템과 망 운영 시스템에서 접속자의 로그인 정보를 확인하는 보안 절차
- 서버 인증의 기능
- 스니핑 방지
- 피싱 방지
- 데이터 변조 방지
- 기업 신뢰도 향상
[3-2] 인증 기술 유형
지식기반 인증
- 사용자가 알고 있는/기억하고 있는 지식
- ID/Password
소지기반 인증
- 사용자가 소지하고 있는 사용자 물품
- 공인인증서, OTP
생체기반 인증
- 고유한 사용자의 생체 정보
- 홍채, 정맥, 얼굴,지문
특징(=행위)기반 인증
- 사용자의 특징을 활용
- 서명, 발걸음,몸짓
[3-3] 서버 접근 통제
임의적 접근 통제(DAC)
- 주체나 그룹의 신분(=신원)에 근거하여 객체에 대한 접근 제한
- 신분 기반(Identity-Based) 접근통제 정책
강제적 접근 통제(MAC)
- 규칙 기반(Rule-Based) 접근통제 정책
역할 기반 접근 통제(RBAC)
3A
- 인증(Authentication)
- 권한 부여(Authorization)
- 계정 관리(Accounting)
인증 관련 기술
- SSO(Single Sign On) : 커버로스에서 사용되는 기술로 한 번의 인증 과정으로 여러 컴퓨터상의 자원을 이용할 수 있게 해주는 인증 기술
- 커버로스(Kerberos) : 1980년대 중반 MIT의 Athena 프로젝트의 일환으로 개발되었으며 클라이언트/서버 모델에서 동작하고 대칭 키 암호기법에 바탕을 둔 티켓 기반의 프로토콜
[3-4] 접근 통제 보호 모델(벨기비무)
벨-라파듈라 모델(BLP; Bell-Lapadula Policy)
- 미 국방부 지원 보안 모델로 기밀성을 강조하며 강제적 정책에 의해 접근 통제하는 모델속성 설명
No Read Up 보안 수준이 낮은 주체는 보안 수준이 높은 객체를 읽어서는 안 됨 No Write Down 보안 수준이 높은 주체는 보안 수준이 낮은 객체에 기록하면 안 됨
비바 모델(Biba Model)
- 벨-라파듈라 모델의 단점을 보완한 무결성을 보장하는 최초의 모델속성 설명
No Read Down 보안 수준이 높은 주체는 보안 수준이 낮은 객체를 읽을 수 없음 No Write Up 보안 수준이 낮은 주체는 보안 수준이 높은 객체를 수정할 수 없음
[4-1] 암호 알고리즘
양방향
- 대칭 키 암호 방식
- 블록 암호화 알고리즘
- DES, AES, SEED
- 스트림 암호화 알고리즘
- RC4
- 블록 암호화 알고리즘
- 비대칭 키 암호 방식(=공개키 암호 방식)
- 디피-헬만, RSA, ECC, ElGamal
일방향
- 해시 암호 방식
- MAC : 무결성 + 인증
- MDC : 무결성
[4-2] 암호 알고리즘 상세
대칭 키 암호화 알고리즘
- DES
- 1975년 IBM에서 개발하고 미국 연방 표준국(NIST)에서 발표한 대칭 키 기반의 블록 암호화 알고리즘
- 블록 크기 64bit, 키 길이 56bit의 페이스텔 구조, 16라운드 암호화 알고리즘
- AES
- 2001년 미국 표준 기술 연구소(NIST)에서 발표한 블록 암호화 알고리즘
- 블록 크기 128bit, 키 길이에 따라 128bit, 192bit, 256bit로 분류
- DES의 개인 키에 대한 전사적 공격이 가능해지고, 3 DES의 성능 문제 극복하기 위해 개발
- 10, 12, 14라운드로 분류되며, 한 라운드는 4가지 계층으로 구성(SubBytes, ShiftRows, MixColumns, AddRoundKey)
- SEED
- 1999년 한국인터넷진흥원(KISA)이 개발한 블록 암호화 알고리즘
- 블록 크기 128bit, 키 길이에 따라 128bit, 256bit로 분류
- ARIA
- 2004년 국가정보우너과 산학연구협회가 개발한 블록 암호화 알고리즘
- 경량 환경 및 하드웨어에서의 효율성 향상을 위해 개발
- IDEA
- DES를 대체하기 위해 스위스 연방기술 기관에서 개발한 블록 암호화 알고리즘
- LFSR
- 시프트 레지스터의 일종으로, 레지스터에 입력되는 값이 이전 상태 값들의 선형 함수로 계산되는 구조로 되어 있는 스트림 암호화 알고리즘
- Skipjack
- 미 국가안보국(NSA)에서 개발한 Clipper 칩에 내장된 블록 알고리즘
- 소프트웨어로 구현되는 것을 막고자 Fortezza Card에 칩 형태로 구현
- 전화기와 같이 음성을 암호화하는 데 주로 사용
비대칭 키(공개키) 암호화 알고리즘
- 디피-헬만
- 최초의 공개키 알고리즘으로 유한 필드 내에서 이산대수의 계산이 어려운 문제를 기본 원리로 함
- 두 사용자 간에 공통의 암호화 키를 안전하게 공유할 방법을 제시, 많은 키 분배 방식에 관한 연구의 기본이 됨(최초의 비밀키 교환 프로토콜)
- RSA
- 큰 인수의 곱을 소인수 분해하는 수학적 알고리즘을 이용하는 공개키 암호화 알고리즘
- ECC
- 1985년 코블리치와 밀러가 RSA 암호 방식에 대한 대안으로 처음 제안
- 유한체 위에서 타원 곡선 군에서의 이산대수의 문제에 기초한 공개키 암호화 알고리즘
- RSA보다 키의 비트 수를 적게 하면서 동일한 성능 제공
- ElGamal
- RSA와 유사하게 전자서명과 데이터 암/복호화에 함께 사용 가능
해시 암호화 알고리즘
- MD5
- MD4를 개선한 암호화 알고리즘으로 프로그램이나 파일의 무결성 검사에 사용
- SHA-1
- 1993년 NSA에서 미 정부 표준으로 지정되었고 DSA(Digital Signature Algorithm)에서 사용
- 160bit의 해시값 생성
- SHA-256/384/512
- AES의 키 길이인 128, 192, 256bit에 대응하도록 출력 길이를 늘인 해시 알고리즘
- HAS-160
- 국내 표준 서명 알고리즘 KCDSA를 위해 개발된 해시함수
- MD5와 SH1의 장점을 취하여 개발
- HAVAL
- 메시지를 1024bits 블록으로 나누고 128, 160, 192, 224, 256bit인 메시지 다이제스트를 출력하는 해시 알고리즘
[5] 데이터 암호화 전송
- 민감한 정보를 통신 채널을 통해 전송 시 반드시 암ㆍ복호화 과정을 거쳐야 하고 보안 채널을 활용하여 전송
IPSec
- IPSec(Internet Protocol Security) : IP계층(3계층)에서 인증헤더(무결성+인증 보장)와 암호화(기밀성 보장)를 이용한 보안 프로토콜
- IPSec 기능
- 기밀성
- 비 연결형 무결성
- 인증
- 재전송 공격 방지
- 접근제어
- IPSec 동작 모드
- 전송 모드
- 터널 모드
SSL/TLS
- 전송계층(4계층)과 응용계층(7계층) 사이에서 클라이언트와 서버 간의 웹 데이터 암호화(기밀성), 상호 인증 및 전송 시 데이터 무결성을 보장하는 보안 프로토콜
S-HPPT
- 웹상에서 네트워크 트래픽을 암호화하는 주요 방법 중 하나로 클라이언트와 서버 간에 전송되는 모든 메시지를 암호화하여 전송하는 기술
[6] 정보자산
- 주요 용어
- 자산
- 사용자
- 소유자
- 관리자
2. 소프트웨어 개발 보안 구현
[1-1] 시큐어 코딩 가이드
- 보안약점
- 입력데이터 검증 및 표현
- 보안 기능
- 시간 및 상태
- 에러 처리
- 코드 오류
- 캡슐화
- API 오용
[1-2] 입력 데이터 검증 및 표현
XSS(Cross Site Scripting)
- 검증되지 않은 외부 입력 데이터가 포함된 웹페이지 전송될 때 → 사용자가 해당 웹페이지 열람 → 웹페이지에 포함된 부적절한 스크립트가 실행되는 공격
- 대책
- 특수 문자 필터링
- HTML 태그 사용 금지
- 자바스크립트로 시작하는 문자열은 모두 문자열 변환 처리
- 공격 유형
Stored XSS 악성 스크립트가 포함된 페이지를 읽어 봄과 동시에 스크립트가 실행되면서 감염 Reflected XSS 공격용 악성 URL을 이메일로 전송 후 클릭 즉시 공격 스크립트가 피해자에게로 반사되어 민감정보를 공격자에게 전송 DOM(Document Object Model XSS) DOM 기반 XSS 취약점이 있는 브라우저를 대상으로 조작된 URL을 이메일을 통해 발송하고 피해자가 클릭 시 공격
SQL 삽입(Injection)
- 응용 프로그램의 보안 취약점을 이용해서 악의적인 SQL 구문 삽입, 실행 → DB의 접근을 통해 정보를 탈취하거나 조작 등의 행위를 하는 공격기법
- 대책
- GET 방식보다 POST 방식 사용
- 입력 폼과 입룍 처리 프로그램에서 세션별 CSRF 토큰을 사용해 점검
- 중요기능의 경우 재인증
사이트 간 요청 위조(CSRF; Cross Site Request Forgery)
- 사용자가 자신의 의지와는 무관하게 공격자가 의도한 행위를 특정 웹사이트에 요청하게 하는 공격
[1-3] 보안 기능 취약점
- 적절한 인증 없이 중요 기능 허용
- 부적절한 인가
- 취약한 암호화 알고리즘 사용
- 중요 정보 평문 저장 및 전송
- 하드 코드 된 비밀 번호
- 취약한 패스워드 요구 조건
[1-4] 에러 처리 취약점
- 오류 메시지 통한 정보 노출
- 오류 상황 대응 부재
- 적절하지 않은 예외 처리
[1-5] 세션 통제 취약점
- 불충분한 세션 관리
[1-6] 코드 오류 취약점
- 널 포인터 역참조
- 정수를 문자로 변환
- 부적절한 자원 해제
- 초기화되지 않은 변수 사용
[1-7] 캡슐화 취약점
- 잘못된 세션에 의한 데이터 정보 노출
- 제거되지 않고 남은 디버그 코드
- 민감한 데이터를 가진 내부 클래스 사용
- 시스템 데이터 정보 노출
[2-1] 보안 솔루션
네트워크 보안 솔루션
방화벽(Firewall) | 기업 내/외부 트래픽 모니터링 → 시스템의 접근을 허용하거나 차단하는 시스템 |
웹 방화벽(WAF) | 웹 애플리케이션 보안에 특화된 보안장비. SQL 인젝션, XSS 등과 같은 공격 탐지/차단 |
네트워크 접근제어(NAC) | 단말기가 내부 네트워크 접속 시도 시 제어/통제 |
침입 탐지 시스템(IDS) | 네트워크에서 발생하는 이벤트 모니터링, 비인가 사용자의 자원접근과 침입을 실시간으로 탐지 |
침입 방지 시스템(IPS) | 네트워크의 공격이나 침입을 실시간 차단, 유해트래픽에 대한 능동적 조치 |
무선 침입 방지 시스템(WIPS) | 인가되지않은 무선 단말기의 접속을 자동 탐지 및 차단 |
시스템 보안 솔루션
- 스팸 차단 솔루션
- 보안 운영체제
콘텐츠 유출 방지 보안 솔루션
- 보안 USB
- 데이터 유출 방지
- 디지털 저작권 관리
[2-2] 취약점 분석
- 취약점 분석 대상
- 환경 및 시설
- 하드웨어
- 소프트웨어
- 취약점 분석 절차
- 자산 조사 및 분석
- 진단 대상 선정
- 제약사항 확인
- 진단 수행
- 결과 분석/보고서 작성
[3] 소프트웨어 개발 보안 테스트
- 정적 분석 : SW 실행X 보안 약점 분석, 개발 단계에서 주로 사용
- 동적 분석 : SW 실행환경에서 보안 약점 분석, 시험 단계에서 주로 사용
[4] 비즈니스 연속성 계획(BCP)
- 비즈니스 연속성 계획(BCP; Business Continuity Plan) : 각종 재해, 장애, 재난으로부터 위기 관리를 기반으로 재해 복구, 업무 복구 및 재개, 비상계획 등을 통해 비즈니스 연속성을 보장하는 체계
'자격증 및 기타 활동 > 정보처리기사' 카테고리의 다른 글
[정처기/실기] 11단원(응용 SW 기초 기술 활용) 요약 (0) | 2023.10.25 |
---|---|
[정처기/실기] 10단원(애플리케이션 테스트 관리) 요약 (0) | 2023.10.25 |
[정처기/실기] 8단원(서버 프로그램 구현) 요약 (0) | 2023.10.25 |
[정처기/실기] 7단원(SQL 응용) 요약 (0) | 2023.10.25 |
[정처기/실기] 3단원(데이터 입출력 구현) 요약 (0) | 2023.10.25 |