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

9. 소프트웨어 개발 보안 구축

by Killing_me__ 2021. 6. 30.
반응형

Chapter 1. 소프트웨어 개발 보안 설계
1. SW 개발 보안의 3대 요소
- 기밀성(Confidentiality) : 인가되지 않은 개인 혹은 시스템 접근에 따른 정보 공개 및 노출을 차단하는 특성
- 가용성(Availability) : 권한을 가진 사용자나 애플리케이션이 원하는 서비스를 지속 사용할 수 있도록 보장하는 특성
- 무결성(Integrity) : 정당한 방법을 따르지 않고선 데이터가 변경될 수 없으며, 데이터의 정확성 및 완전성과 고의/악의로 변경되거나 훼손 또는 파괴되지 않음을 보장하는 특성

2. SW 개발 보안 용어
- 자산(Assets) : 조직의 데이터 또는 조직의 소유자가 가치를 부여한 대상
- 위협(Threat) : 조직이나 기업의 자산에 악영향을 끼칠 수 있는 사건이나 행위
- 취약점(Vulnerability) : 위협이 발생하기 위한 사전 조건에 따른 상황
- 위험(Risk) : 위협이 취약점을 이용하여 조직의 자산 손실 피해를 가져올 가능성

3. DoS(Denial of Service) 공격
시스템을 악의적으로 공격해 해당 시스템의 자원을 부족하게 하여 원래 의도된 용도로 사용하지 못하게 하는 공격
특정 서버에 수많은 접속 시도를 만들어 다른 이용자가 정상적으로 서비스 이용을 하지 못하게 하거나, 서버의 TCP 연결을 소진시키는 등의 공격
- 지역 시스템 공격 : 실제 대상 시스템에 접근하여 서버 하드웨어에 직접 과부하를 주는 공격
- 원격 네트워크 공격 : 공격자가 목표 시스템에 접근하지 않고 원격지에서 인터넷 등을 이용한 공격

4. DDoS(Distributed DoS) 공격
여러 대의 공격자를 분산 배치하여 동시에 동작하게 함으로써 특정 사이트를 공격하는 기법
침입한 시스템에 소프트웨어를 설치하고 이를 실행시켜 원격에서 공격 개시
- 핸들러(Handler) : 마스터 시스템의 역할을 수행하는 프로그램
- 에이전트(Agent) : 공격 대상에게 직접 공격을 가하는 시스템
- 마스터(Master) : 공격자에게서 직접 명령을 받는 시스템, 여러 대의 에이전트를 관리하는 역할
- 공격자(Attacker) : 공격을 주도하는 해커의 컴퓨터
- 데몬(Daemon) 프로그램 : 에이전트 시스템의 역할을 수행하는 프로그램

5. 자원 고갈 공격
1) SYN 플러딩
- TCP 프로토콜의 구조적인 문제를 이용하여 서버의 동시 가용 사용자 수를 SYN 패킷만 보내 점유하여 다른 사용자가 서버를 사용 불가능하게 하는 공격
- 공격자는 ACK를 발송하지 않고 계속 새로운 연결 요청을 하게 되어 서버는 자원할당을 해지하지 않고 자원만 소비하여 자원 고갈
2) UDP 플러딩
- 대량의 UDP 패킷을 만들어 임의의 포트 번호로 전송하여 응답 메시지(ICMP Destination Unreachable)를 생성하게 하여 지속해서 자원을 고갈시키는 공격
- ICMP 패킷은 변조되어 공격자에게 전달되지 않아 대기함
3) 스머프(Smurf)
- 출발지 주소를 공격 대상의 IP로 설정하여 네트워크 전체에게 ICMP Echo 패킷을 직접 브로드캐스팅 하여 마비시키는 공격
- 바운스 사이트라고 불리는 제3의 사이트를 이용해 공격
4) PoD(Ping of Death)
- 큰 사이즈의 패킷을 의도적으로 목표시스템으로 발생시켜 시스템이 서비스할 수 없는 상태로 만드는 공격

6. 애플리케이션 공격
1) HTTP GET 플러딩
- Cache Control Attack 공격
- Http 캐시 옵션을 조작하여 캐싱 서버가 아닌 웹서버가 직접 처리하도록 유도, 웹서버 자원을 소진시키는 서비스 거부 공격
2) Sloworis(Slow HTTP Header DoS)
- HTTP Get 메소드를 사용하여 헤더의 최종 끝을 알리는 개행 문자열인 \r\n\r\n(Hex: 0d 0a 0d 0a)을 전송하지 않고, \r\n(Hex : 0d 0a)만 전송하여 대상 웹서버와 연결상태를 장시간 지속시키고 연결 자원을 모두 소진시키는 서비스 거부 공격
3) RUDY(Slow HTTP POST DoS)
- 요청 헤더의 Content-length를 비정상적으로 크게 설정하여 메시지 바디 부분을 매우 소량으로 보내 계속 연결 상태를 유지시키는 공격

7. 네트워크 서비스 공격
1) 네트워크 스캐너, 스니퍼
- 네트워크 하드웨어 및 소프트웨어 구성의 취약점 파악을 위해 공격자가 사용하는 공격 도구
2) 패스워드 크래킹
- 사전 크래킹과 무차별 크래킹 방법을 사용해 네트워크 패스워드를 탐색
- 대표적인 공격 도구로 John the Ripper가 있음
3) IP 스푸핑
- 서버에 대한 인증되지 않은 액세스 권한을 입수하는 데 사용하는 기법
- 침입자가 패킷 헤더 수정을 통해 인증된 호스트의 IP 어드레스를 위조
- 타깃 서버로 메시지를 발송한 이후 패킷은 해당 포트에서 유입되는 것처럼 표시
4) 트로이 목마
- 악성 루틴이 숨어 있는 프로그램으로서 겉보기에는 정상적인 프로그램처럼 보이지만 실행하면 악성 코드를 실행

8. 취약점 공격
1) 랜드 어택
- 출발지(Source) IP와 목적지(Destination) IP를 같은 패킷 주소로 만들어 보냄으로써 수신자가 자기 자신에게 응답을 보내게 하여 시스템의 가용성을 침해하는 공격 기법
2) 봉크/보잉크
- 프로토콜의 오류 제어를 위한 공격기법으로서 시스템의 패킷 재전송과 재조립이 과부하를 유발
- 봉크 : 같은 시퀀스 번호를 계속 보냄
- 보잉크 : 일정한 간격으로 시퀀스 번호에 빈 공간 생성
3) 티어 드롭
- IP 패킷의 재조합 과정에서 잘못된 Fragment Offset 정보로 인해 수신시스템이 문제를 발생하도록 만드는 DoS 공격
- 공격자는 IP Fragment Offset 값을 서로 중첩되도록 조작하여 전송하고, 이를 수신한 시스템이 재조합하는 과정에서 오류가 발생, 시스템의 기능을 마비시키는 공격 방식

9. 암호 알고리즘 방식
1) 대칭 키 암호 방식(DES, AES, SEED / RC4)
- 암호화와 복호화에 같은 암호키를 쓰는 알고리즘
- 블록 암호 방식 : 긴 평문을 암호화하기 위해 고정 길이의 블록을 암호화하는 블록 암호 알고리즘을 반복하는 방법
- 스트림 암호 방식 : 매우 긴 주기의 난수열을 발생시켜 평문과 더불어 암호문을 생성하는 방식
2) 비대칭 키 암호 방식(디피-헬만, RSA)
- 공개 키를 이용해 암호화하고 공개 키에 해당하는 개인 키를 이용해 복화하는 암호 방식
- 비대칭 키 암호 방식에서는 공개 키와 개인 키가 존재하며, 공개 키는 누구나 알 수 있지만 그에 대응하는 개인키는 키의 소유자만이 알 수 있어야 함
- 공개 키는 보안 타협 없이 공개적으로 배포가 가능
- 비대칭 키 암호를 구성하는 알고리즘은 대칭 키 암호 방식과 비교하여 공개 키 암호 방식이라고 부름
3) 해시 방식(SHA, MD5)
- 단방향 알고리즘으로서 임의의 데이터를 고정된 길이의 데이터로 매핑하는 함수
- 해시 함수의 결과로 원본 데이터를 유추하기 어려운 것을 이용
- 연산에 걸리는 시간이 빠른 것이 장점이지만, 동일한 결과를 갖는 값이 발생하는 해시 충돌 문제 발생 가능

10.정보 자산의 주요 용어
- 자산 : 조직에서 보유한 가치 있는 모든 것
- 사용자 : 정보처리 기기 및 시스템을 활용해 자산을 사용하는 사람과 기관
- 소유자 : 자산의 소유 권한 및 관링 대한 최종 책임자, 자산의 취득, 사용, 폐기 등 관리 권한 보유
- 관리자 : 자산의 소유자로부터 관리위임을 받은 자, 자산의 보관 및 운영 책임을 짐

Chapter 2. 소프트웨어 개발 보안 구현
1. 시큐어 코딩 가이드 (입보시 에코캡아)
- 입력 데이터 검증 및 표현 : 입력데이터에 대한 유효성 검증 체계 수립
- 보안 기능 : 인증, 접근통제 등의 정책이 적절하게 반영되도록 설계 및 구현
- 시간 및 상태 : 공유 자원의 접근 직렬화, 병렬 실행 가능 프레임워크 사용, 블록문 내에서만 재귀함수 호출
- 에러 처리 : 중요정보 유출 등 보안 약점이 발생하지 않도록 시스템 설계 및 구현
- 코드 오류 : 코딩 규칙 도출 후 검증 가능한 스크립트 구성과 경고 순위의 최상향 조정 후 경고 메시지 코드 제거
- 캡슐화 : 디버그 코드 제거와 필수 정보 외의 클래스 내 프라이빗 접근자 지정
- API 오용 : 개발 언어별 취약 API 확보 및 취약 API 검출 프로그램 사용

2. 입력 데이터 검증 및 표현대응
1) SQL 삽입
- 사용자의 입력값 등 외부 입력값이 SQL 쿼리에 삽입되어 공격
- PreparedStatement 객체 등을 이용, DB에 컴파일된 쿼리문(상수)을 전달
2) 크로스 사이트 스크립트(XSS)
- 검증되지 않은 외부 입력값에 의해 브라우저에서 악의적인 코드가 실행
- 입.출력값에 문자열 치환 함수를 사용 & < > " ' / () 등 대상
3) 경로 조작 및 자원 삽입
- 외부 입력된 값의 사전 검증이 없거나 잘못 처리될 경우, 제공되는 시스템 자원에 접근 경로 등의 정보로 이용될 때 발생
- 경로 순회 공격 위험이 있는 문자를 제거하는 필터 사용
4) 운영체제 명령어 삽입
- 운영체제 명령어 파라미터 입력값이 적절한 사전 검증을 거치지 않고 사용될 때 공격자가 운영체제 명령어를 조작
- 웹 인터페이스를 통해 내부로 시스템 명령어를 전달하지 않도록 프로그램 구성

3. 소프트웨어 개발 보안 테스트의 유형
1) 정적 분석
- SW를 실행하지 않고 보안 약점을 분석, SW 개발 단계에서 주로 사용
- 취약점 초기 발견으로 수정비용 절감, 컴포넌트 간 발생할 수 있는 통합된 취약점 발견에 제한적, 설계,구조 관점의 취약점은 식별 불가
2) 동적 분석
- SW 실행환경에서 보안 약점 분석, SW 시험 단계에서 주로 사용
- 소스 코드 필요 없음, 정확도와 커버리지 향상, 구조 관점의 보안 약점 식별 불가

반응형

'정보처리기사 실기' 카테고리의 다른 글

11. 응용 SW 기초 기술 활용 (1)  (0) 2021.07.02
10. 프로그래밍 언어 활용  (0) 2021.07.01
8. SQL 응용  (0) 2021.06.28
7. 애플리케이션 테스트 관리  (0) 2021.06.24
6. 화면 설계  (0) 2021.06.24

댓글