정리 내용은 [수제비 2020 정보처리기사 실기]책을 기반으로 작성하였습니다.
2020 수제비 정보처리기사 실기(1권+2권 합본세트)
NCS 반영! 출제기준으로 전면개편한 교재이다. NCS 기반 반영 문제(예상문제 340제, 단원종합문제 360제, 모의고사 100제, 2020년기출문제)를 수록하였다. 수제비는 합격만을 위한 다양한 학습 콘텐츠
1. SW 개발 보안
개념
소스 코드 등 존재하는 보안 취약점을 제거하고, 보안을 고려하여 기능을 설계 및 구현하는 등 소프트웨어 개발 과정에서 지켜야 할 일련의 보안 활동
SW 개발 보안 생명 주기
요구사항 명세->설계->구현->테스트->유지보수
구성요소
기밀성: 인가되지 않은 개인 혹은 시스템 접근에 따른 정보 공개 및 노출을 차단하는 특성
무결성: 정당한 방법을 따르지 않고선 데이터가 변경될 수 없으며 데이터의 정확성 및 완전성과 고의/악의로 변경되거나 훼손 또는 파괴되지 않음을 보장하는 특성
가용성: 권한을 가진 사용자나 애플리케이션이 원하는 서비스를 지속 사용할 수 있도록 보장하는 특성
SW 개발 보안 용어
자산: 조직의 데이터 또는 조직의 소유자가 가치를 부여한 대상(서버의 하드웨어, 기업의 중요 데이터)
위협: 조직이나 기업의 자산에 악영향을 끼칠 수 있는 사건이나 행위(해킹, 삭제, 불법유출, 위/변조, 파손)
취약점: 위협이 발생하기 위한 사전조건에 따른 상황(평문 전송, 입력값 미검증, 비밀번호 공유)
위험: 위협이 취약점을 이용하여 조직의 자산 손실 피해를 가져올 가능성
2. SW 개발 보안을 위한 공격 기법
DoS(Denial of Service) 공격
시스템을 악의적으로 공격해 시스템의 자원을 부족하게 하여 원래 의도된 용도로 사용하지 못하게 하는 공격
특정 서버에게 수많은 접속 시도를 만들어 다른 이용자가 정상적으로 서비스를 이용하지 못하게 하거나, 서버의 TCP 연결을 소진시키는 등의 공격
[종류]
지역시스템 공격: 실제 대상 시스템에 접근하여 서브 하드웨어에 직접 과부하를 주는 공격 / 메모리 고갈, 프로세스 서비스 거부, 디스크 서브 거부 등
원격 네트워크 공격: 공격자가 목표 시스템에 접근하지 않고 원격지에서 인터넷 등을 이용한 공격서비스를 제공받지 못하거나 실제 시스템에 영향
DDoS(Distributed DoS) 공격
DoS의 또 다른 형태. 여러 대의 공격자를 분산 배치하여 동시에 동작하게 함으로써 특정 사이트를 공격하는 기법
해커들이 취약한 인터넷 시스템에 대한 액세스가 이루어지면, 침입한 시스템에 소프트웨어를 설치하고 이를 실행시켜 원격에서 공격을 개시
[구성요소]
공격자(Attacker): 해커의 컴퓨터, 공격을 주도
마스터(Master): 공격 명령을 받아 여러 대의 에이전트를 관리하는 시스템
핸들러(Handler): 마스터 시스템 역할을 수행하는 프로그램
에이전트(Agent): 공격 대상에게 직접 공격하는 시스템
데몬 프로그램(Daemon): 에이전트 시스템 역할을 수행하는 프로그램
[대응방안]
보안 정책 업데이트 / 좀비PC IP 확보 / 보안 솔루션 운영 / 홈페이지 보안 관리 / 시스템 패치
DoS와 DDoS의 차이점
DoS: 직접 공격 / 한 사람에 의해 공격을 감행
DDoS: 공격하도록 지시 / 수많은 감염 호스트를 통해 공격을 감행
자원 고갈 공격
서버 간 핸드셰이크를 통해 통신이 연결되는 정상 트래픽과 달리 정상 접속을 시도하는 오픈된 소켓에 트래픽을 집중시킴. 공격이 임계치에 도달하면 사용자들은 네트워크에 전혀 접속할 수 없게 됨
(1) SYN 플러딩(SYN Flooding): ACK를 보내지 않고 SYN 패킷만 보내 서버의 동시 가용 사용자 수를 점유하여 다른 사용자가 서버를 사용하지 못하게 하는 공격. TCP 프로토콜의 구조적인 문제를 이용한 공격공격자는 ACK를 발송하지 않고 계속 새로운 연결 요청을 하게 되어 서버는 자원할당을 해지하지 않고 자원만 소비하여 자원이 고갈
대응방안: TCP 연결 타임아웃을 짧게 함 / Backlog Queue 확대 / Syncookie 기능 활성화 / 보안 장비를 통해 침입 탐지 및 차단 / 최신 시스템 패치 및 업데이트
(2) UDP플러딩(UDP Flooding): 대량의 UDP 패킷을 만들어 임의 포트 번호로 전송하여 응답메시지(ICMP)를 생성하여 지속해서 자원을 고갈시키는 공격. ICMP 패킷은 변조되어 공격자에게 전달되지 않아 대기
(3) 스머프: 출발지 주소를 공격대상의 IP로 설정, 네트워크 전체에게 ICMP Echo 패킷을 직접 브로드케스팅하여 마비시키는 공격
대응 방안: 다른 네트워크로부터 자신의 네트워크로 들어오는 직접 브로드캐스트 패킷을 허용하지 않도록 라우터를 설정 / 브로드캐스트 주소로 전송된 ICMP echo Request 메시지에 응답하지 않도록 시스템을 설정
(4) PoD(Ping of Death): ICMP의 패킷 크기를 크게 하여 목표 시스템으로 전송하는데, 크기가 큰 패킷은 네트워크상 분할되어 목적지로 전송하게된다. 분할된 수 많은 패킷을 받은 공격 대상은 부하를 발생해 시스템이 서비스할 수 없는 상태로 만드는 공격
대응 방안: 분할된 ICMP 패킷을 공격으로 의심하여 탐지하도록 설정 / 취약점 패치
애플리케이션 공격
(1) HTTP GET 플러딩(Flooding): HTTP 캐시 옵션을 조작하여 캐싱 서버가 아닌 웹서버가 직접 처리하도록 유도하여 웹서버 자원을 소진시키는 서비스 거부 공격
(2) Slowloris(Slow HTTP Header DoS): HTTP GET 메소드를 사용하여 헤더의 최종 끝을 알리는 개행 문자열을 전송하지 않아 대상 웹서버와 연결 상태를 장시간 지속시키고 연결 자원을 모두 소진시키는 서비스 거부 공격
(3) RUDY(Slow HTTP POST DoS): 요청 헤더의 Content-length를 비정상적으로 크게 설정하여 메시지 바디 부분을 매우 소량으로 보내 계속 연결 상태를 유지시키는 공격
대응 방안: 동시 연결에 대한 임계치 설정을 통해 차단 / 연결 타임아웃 설정 / 읽기 타임아웃 설정을 통해 차단
네트워크 서비스 공격
(1) 네트워크 스캐너(Scanner): 네트워크 하드웨어 및 소프트웨어 구성의 취약점 파악을 위해 공격자가 사용하는 공격 도구
(2) 스니퍼(Sniffer): 네크워크의 한 호스트에서 실행되어 그 주위를 지나 다니는 패킷들을 엿보는 프로그램
(3) 패스워드 크래킹(Password Cracking): 사전 크래킹과 무차별 크래킹 방법을 사용해 네트워크 패스워드를 탐색. John the Ripper 가 있음
(4) IP 스푸핑(IP Spoofing): 침입자가 인증된 컴퓨팅 시스템인 것처럼 속여 정보를 빼내기 위해 본인의 패킷 헤더를 인증된 호스트의 IP 어드레스로 위조해 타깃에 전송
(5) 트로이 목마(Trojan Horses): 악성 루틴이 숨어 있는 프로그램으로서 겉보기에는 정상적인 프로그램처럼 보이지만 실행하면 악성코드를 실행
대응 방안: 네트워크 보안 장비(방화벽, 침입차단시스템)를 통해 방어 / 네트워크 접속 차단 시스템을 통해 방어 /
백신 설치를 통해 방어
취약점 공격
(1) 랜드 어택(Land Attack): 출발지 IP와 목적지 IP를 같은 패킷 주소로 만들어 보냄으로써 수신자가 자기 자신에게 응답을 보내게 하여 시스템의 가용성을 침해하는 공격 기법
대응방안: 수신되는 패킷 중 출발지 주소와 목적지 주소가 동일한 패킷들을 차단
(2) 봉크(Bonk)/보잉크(Boink): 프로토콜의 오류 제어를 이용한 공격 기법으로 시스템의 패킷 재전송과 재조립이 과부하를 유발 (봉크 : 같은 시퀀스 번호를 계속 보냄 / 보잉크 : 일정한 간격으로 시퀀스 번호에 빈 공간 생성)
대응방안: 과부하가 걸리거나, 반복되는 패킷 재전송 요구하지 않고 버림
(3) 티어 드롭(Tear Drop): IP 패킷의 재조합 과정에서 잘못된 Fragment Offset 정보로 인해 수신 시스템이 문제를 발생하도록 만드는 DoS 공격. 공격자는 IP Frament Offset 값을 서로 중첩되도록 조작하여 전송하고, 이를 수신한 시스템이 재조합하는 과정에서 오류가 발생, 시스템 기능을 마비시키는 공격방식
시스템 보안공격
(1) 포멧 스트링 공격: 포맷 스트링 인자로 하는 함수의 취약점을 이용한 공격. 외부로부터 입력된 값을 검증하지 않고 입출력 함수의 포맷 스트링을 그대로 사용하느 경우 발생하는 취약점 공격기법
(2) 레이스컨디션 공격: 둘 이상의 프로세스나 스레드가 공유자원을 동시에 접근할 때, 접근 순서에 따라 비정상적인 결과가 발생하는 조건/상황에서 실행되는 프로세스가 임시파일을 만두는 경우 악의적인 프로그램을 통해 그 프로세스의 실행 중 끼어들어 임시파일을 심볼릭 링크하여 악의적으로 수행
(3) 키로거 공격: 사용자의 키보드 움직임을 탐지해 저장하고 ID나 패스워드 등과 같은 개인정보 몰래 빼가는 해킹
(4) 루트킷: 시스템 침입 후 침입사실을 숨긴 채 차후의 침입을 위한 백도어, 트로이 목마 설치, 원격 접근, 내부 사용 흔적 삭제, 관리자 권한 획득 등 주로 불법적인 해킹에 사용되는 기능을 제공하는 프로그램 모음
3. 암호화 알고리즘
개념
데이터의 무결성 및 기밀성 확보를 위해 정보를 쉽게 해독할 수 없는 형태로 변환하는 기법
대칭키 암호 방식
암호화와 복호화가 같은 암호키를 쓰는 알고리즘
종류 | 설명 |
블록 암호 방식 | 긴 평문을 암호화하기 위해 고정 길이의 블록을 암호화하는 블록암호 알고리즘을 반복 |
스트림 암호 방식 | 매우 긴 주기의 난수열을 발생시켜 평문과 더불어 암호문을 생성 |
블록암호 방식
종류 | 설명 |
DES | 56bit를 이용, 64bit 평문 블록을 64bit 암호문 블록으로 만드는 미국표준 암호화 알고리즘 |
AES | 고급 암호화의 표준. DES를 대체한 암호화 알고리즘 AES 128,192,256과 같이 숫자의 차이는 키의 길이를 의미 |
SEED | 안정성, 신뢰성이 우수한 고속블록단위 128bit 대칭 키 암호화 알고리즘 KISA, ETRI에서 개발하고 TTA에서 인증 |
스트림 암호 방식
종류 | 설명 |
RC4 | SSL/TLS나 네트워킹 프로토콜에서 자주 사용되는 스트림 암호기법 |
비대칭키 암호화 방식
공개키를 이용해 암호화하고 공개키에 해당하는 개인키를 이용해 복호화하는 암호 방식
공개키는 누구나 알 수 있지만 그에 대응하는 개인키는 키의 소유자만 알 수 있음
종류 | 설명 |
디파-헬만 | 암호키를 교환하는 방법. 두 사람이 암호화되지 않은 통신망을 통해 공통의 비밀키를 공유 |
RSA | 비대칭 키 암호 방식 중 가장 널리 쓰임. 소인수 분해의 어려움을 이용 |
해시 방식
단방향 알고리즘. 임의의 데이터를 고정된 길이의 데이터로 매핑
해시함수의 결과로 원본 데이터 유추하기 어려운 것을 이용
장점: 연산이 걸리는 시간이 빠름
단점: 동일한 결과를 갖는 값이 발생하는 해시 충돌 문제가 발생 가능
종류 | 설명 |
SHA | 미국 안보국이 설계. 미국 국가 표준으로 지정된 해시 암호화 알고리즘 SHA-224, SHA-526, SHA-384, SHA-512 등을 통칭해 SHA-2라고 함 |
MD5 | MD4를 대체하기 위해 고안된 128bit 해시 암호화 알고리즘 RFC 1321로 지정되어 있음. |
4. 소프트웨어 개발 보안 활동 관련 법규 및 규정
개인정보 보호법
개인 정보 처리 과정 상의 정보 주체와 개인정보 처리자의 권리, 의무 등을 규정
정보통신망법
수집, 처리, 보관, 이용되는 개인 정보의 보호에 관한 규정
이외의 관련 법규
신용정보 이용 및 보호에 관한 법률: 개인 신용정보의 단계뼐 보호 조치 및 의무사항에 대한 규정
위치정보 보호 및 이용 등에 관한 법률: 개인 위치정보 수집, 이용, 제공 파기 및 정보 주체의 권리 규정
개인정보의 안정성 확보 조치 기준
개인 정보 처리자가 개인정보를 처리함에 있어서 분실, 도난, 유출, 변조, 훼손되지 않도록 안전성을 확보하기 위해 취해야 하는 세부적인 규정
개인정보 처리시스템의 보호 수준 진단, 암호화에 상응하는 조치 필요 여부를 판단할 수 있는 기준을 규정
암호화 조치 명시
구분 | 암호화 대상 | 개인정보 보호법 | 정보통신망법 | 신용정보법 |
인증 | 비밀번호, 바이오 정보 | ⭕ | ⭕ | ⭕ |
식별 | 주민등록번호, 운전면허번호, 여권번호, 외국인등록번호 |
⭕ | ⭕ | |
금융 | 계좌번호, 신용카드번호 | ⭕ | ||
위치 | 위치정보 | ⭕ |
5. 정보자산
주요 용어
자산: 조직에서 보유한 가치 있는 모든 것(정보, 소프트웨어, 물리적 자산, 인력, 서비스 등)
사용자: 정보처리 기기 및 시스템을 활용해 자산을 사용하는 사람과 기관
소유자: 자산의 소유 권한 및 관리에 대한 최종 책임자. 자산의 취득, 사용, 폐기 등 관리에 관한 보유
관리자: 자산의 소유자로부터 관리 위임을 받은 자. 자산의 보관 및 운영 책임을 짐
식별
기업이 가진 중요 자산을 보호하기 위해 자산의 식별과 평가를 수행
위험을 분석하기 위해 적절한 분류기준에 따라 중복, 누락을 최소화 하여 자산목록 작성
분류기준
소프트웨어 / 하드웨어 / 데이터 / 문서 / 시설 / 지원 설비 / 인력
6. 기능에 대한 보안 항목식별
입력 데이터 검증 및 표현
DBMS 조회결과 검증 / XML 조회결과 검증 / 웹 서비스 요청결과 검증 / 허용된 범위 내 메모리 접근 검증 / 보안 기능 입력값 검증 / 업로드&다운로드 파일 검증
보안 기능
(1) 인증관리
인증 대상 및 방식: 중요 정보/기능과 인증방식의 정의. 인증 기능이 우회되지 않도록 수행될 수 있도록 설계
인증 수행 제안: 인증 반복시도 제한 및 인증실패에 대한 인증 제한 기능 설계
비밀번호 관리: 안전한 비밀번호 규칙 설정, 패스워드의 주기적 변경이 적용되도록 설정
(2) 권한관리
중요자원 접근통제: 중요자원(설정값, 민감데이터 등) 정의. 접근통제 실패 시 대응방안 설계
(3) 암호화
암호 키 관리: 암호 키 생성 분배 접근 파기 등 안전하게 암호 키 생명주기를 관리할 수 있는 방법 설계
암호연산: 충분한 암호키 길이, 솔트, 난수 값을 기반으로 암호연산 수행 방법 설계
(4) 중요정보 처리
중요정보 저장: 중요정보 비밀번호 개인정보 등 저장 시 안전한 저장 및 관리 방법 설계
중요정보 전송: 중요정보 비밀번호 개인정보 등 전송 시 안전한 전송방법 설계
* 솔트: 일방향 해시 함수에서 다이제스트 생성할 때 추가된느 바이트 단위의 임의의 문자열
* 난수: 범위 내에 서 무작위로 추출된 수
에러 처리 및 세션 통제
(1) 에러처리: 오류메시지에 중요정보가 포함된 출력방지방법 설계 / 에러 및 오류의 부적절한 처리방지 방법 설계
(2) 세션처리: http를 이용하여 연결 유지하는 경우 세션 안전하게 할당 & 관리하여 세션 정보 누출이나 세션 하이재킹과 같은 침해사고 발생하지 않도록 설계. 다른 세션간 데이터 공유 금지, 세션 ID 노출 금지, 세션 종료 처리 등세션을 안전하게 관리할 수 있는 방안 설계\
* 세션 하이재킹: TCP 신뢰성 기반 연결을 이용한 공격방법. 통신 내용을 엿보거나, 세션을 가로채어 정상적인 인증과정을 무시하고 불법으로 시스템에 접근할 수 있는 공격
'Study > 정보처리기사' 카테고리의 다른 글
[정보처리기사 실기] 10. 프로그래밍 언어 활용-Chapter 1. 기본 문법 활용하기 (0) | 2022.01.23 |
---|---|
[정보처리기사 실기] 9. 소프트웨어 개발 보안 구축-Chapter 2. 소프트웨어 개발 보안 구현 (4) | 2022.01.22 |
[정보처리기사 실기] 8. SQL 응용-Chapter 2. 응용 SQL 작성하기 (0) | 2022.01.20 |
[정보처리기사 실기] 8. SQL 응용-Chapter 1. 절차형 SQL 작성하기 (0) | 2022.01.18 |
[정보처리기사 실기] 7. 애플리케이션 테스트 관리-Chapter 3. 애플리케이션 성능 개선 (0) | 2022.01.18 |