- Secure SDLC
- SDLC(소프트웨어 개발 주기)에 보안 강화를 위한 프로세스를 포함한 것
- 대표적인 방법론
- CLASP : SDLC의 초기 단계에서 보안을 강화
- SDL : 마이크로소프트사에서 기존의 SDLC를 개선
- Seven Touchpoints : 소프트웨어 보안의 모범사례를 SDLC에 통합
- 개발 단계 별 보안활동
- 요구사항 분석 단계 : 보안 항목에 해당하는 요구사항 식별
- 설계 : 보안 요구사항들을 설계서에 반영
- 구현 : 소프트웨어 개발 보안 가이드를 준수
- 테스트 : 보안 설계서를 바탕으로 정확히 반영되고 동작하는지 점검
- 유지보수 : 이전 과정을 모두 수행했음에도 발생할 수 있는 보안사고 식별, 보안패치
- 개발 보안 요소
- 기밀성 (Confidentiality) (보안 3대 요소)
- 시스템 내의 정보와 자원은 인가된 사용자에게만 접근이 허용
- 무결성 (Integrity) (보안 3대 요소)
- 시스템 내의 정보는 오직 인가된 사용자만 수정 가능
- 가용성 (Availability) (보안 3대 요소)
- 인가받은 사용자는 시스템 내의 정보와 자원을 언제든지 사용 가능
- 인증 (Authentication)
- 시스템 내의 정보와 자원을 활용하려는 사용자가 합법적인 사용자인이 확인하는 모든 행위
- 부인 방지 (NonRepudiation)
- 데이터 송.수신 증거 제공
- 기밀성 (Confidentiality) (보안 3대 요소)
- 시큐어 코딩
- 구현 단계에서 발생할 수 있는 보안 취약점을 최소화하기위해 보안 요소들을 고려하며 코딩하는 것
- 보안취약점을 사전대응하여 안전성과 신뢰성 확보
- 세션 통제
- 세션의 연결과 연결로 인해 발생하는 정보를 관리하는 것
- 개발 단계 중 요구사항 분석 및 설계 단계에서 진단
- 보안 약점
- 불충분한 세션 관리 : 잘못된 세션 ID 또는 타임아웃
- 잘못된 세션에 의한 정보 노출 : 다중 스레드 환경에서 발생
- 세션 ID 관리 방법
- 최소 128비트 이상의 길이로 생성
- 안전한 난수 알고리즘 적용
- URL Rewrite기능을 사용하지 않음
- URL Rewrite : URL에 세션ID를 포함시키는 것
- 입력데이터 검증 및 표현
- 입력 데이터로 인해 발생하는 문제들을 예방하기 위해 검증해야하는 보안 점검 항목
- 보안 약점
- SQL Injection (SQL 삽입)
- SQL 구문을 삽입하여 내부 DB서버의 데이터를 유출 및 변조하고 관리자 인증을 우회하는 약점
- 동적 쿼리 필터링을 설정하여 방지 가능
- 크로스사이트 스크립팅 (XSS)
- 악의적인 스크립트를 삽입하여 정보를 탈튀하거나 비정상적인 기능 수행을 유발
- <, >, & 등의 문자를 다른 문자로 치환하여 방지 가능
- 메모리 버퍼 오버플로
- 할당된 메모리의 범위를 넘어선 위치에서 자료를 사용하려할 때 발생하는 보안 약점
- 적절한 버퍼 크기 설정 등으로 방지 가능
- 경로 조작 및 자원 삽입
- 데이터 입출력 경로를 조작하여 자원을 수정.삭제
- 운영체제 명령어 삽입
- 외부 입력값을 통해 시스템 명령어 실행 유도
- 위험한 형식 파일 업로드
- 신뢰되지 않는 URL 주소로 자동접속 연결
- SQL Injection (SQL 삽입)
- 보안 기능
- 인증, 접근제어, 기밀성, 암호화 등을 올바르게 구현하기위한 보안 점검 항목
- 보안 약점
- 하드코드된 암호화 키
- 역계산 또는 무차별 대입 공격에 의해 탈취 가능
- 하드 코드 : 데이터를 코드 내부에 직접 입력하여 프로그래밍
- 무차별 대입 공격 (Brute Force Attack) : 적용 가능한 모든 값을 대입하여 암호키를 찾아내는 공격
- 역계산 또는 무차별 대입 공격에 의해 탈취 가능
- 적정한 인증 없이 중요기능 허용
- 부적절한 인가
- 접근제어 기능이 없는 실행경로를 통해 데이터 탈취 가능
- 중요한 자원에 대한 잘못된 권한 설정
- 취약한 암호화 알고리즘 사용
- 중요정보 평문 저장 및 전송
- 하드코드된 암호화 키
- 시간 및 상태
- 병렬처리 시스템이나 다수의 프로세스가 동작하는 환경에서 시간 및 상태에 관련된 보안 점검 항목
- 보안 약점
- TOCTOU 경쟁조건
- 검사시점(TOC)과 사용시점(TOU)를 고려하지않고 코딩하는 경우 발생
- 동기화 구문을 사용하여 방지 가능
- 동기화 구문 : 둘 이상의 프로세스가 접근하는 것을 막는 구문, Synchronized, Mutex 등..
- 종료되지않는 반목문 또는 재귀함수
- TOCTOU 경쟁조건
- 에러 처리
- 발생할 수 있는 오류들을 사전에 정의하여 문제들을 예방하기 위한 보안 점검 항목
- 보안 약점
- 오류 메세지를 통한 정보 노출
- 오류 상황 대응 부재
- 부적절한 예외 처리
- 코드 오류
- 코딩 중 실수하기 쉬운 형 반환, 자원 반환 등의 오류를 예방하기 위한 보안 점검 항목
- 보안 약점
- 널(NULL) 포인터 역참조
- 널 포인터가 가리키는 메모리의 위치에 값을 저장할 때 발생하는 보안 약점
- 널 포인터 : 포인터에 널이 저장되어 어떠한 곳도 가리키지 못하는 상태의 요소
- 널 포인터가 가리키는 메모리의 위치에 값을 저장할 때 발생하는 보안 약점
- 부적절한 자원 해제
- 해제된 자원 사용
- 초기화되지 않은 변수 사용
- 널(NULL) 포인터 역참조
- 스택 가드
- 널포인터 역참조와 같이 주소가 저장되는 스택에서 발생하는 보안약점을 막는 기술
- 복귀 주소와 변수 사이에 특정한 값을 저장한 후 그 값이 별경되었을 경우 오버플로상태로 판단하여 실행 중단
- 캡슐화
- 불완전한 캡슐화 또는 오용으로 발생할 수 있는 문제를 예방하기위한 보안 점검 항목
- 보안 약점
- 잘못된 세션에 의한 정보 노출
- 제거되지않고 남은 디버그 코드
- 시스템 데이터 정보 노출
- Public 메소드로부터 반환된 Private 배열
- Private배열에 Public 데이터 할당
- 접근 제어자
- 외부로부터의 접근을 제한하기위해 사용되는 예약어
- Public : 클래스 내부, 패키지 내부, 하위 클래스, 패키지 외부 에서 접근 가능
- Protected : 클래스 내부, 패키지 내부, 하위 클래스 에서 접근 가능
- Default : 클래스 내부, 패키지 내부 에서 접근 가능
- Private : 클래스 내부 에서 접근 가능
- API 오용
- 잘못된 API를 사용하거나 보안에 취약한 API를 사용하지 않도록 하기 위한 보안 점검 항목
- 보안 약점
- DNS Lookup에 의존한 보안결정
- 도메인명에 의존하여 인증이나 접근통제를 할 때 발생할 수 있는 보안 약점
- 도메인 네임 : 숫자로 된 IP 주소를 이해하기 쉬운 문자 형태로 표현한 것
- DNS : 도메인 네임을 IP주소로 바꾸는 역할을 하는 서버
- 도메인명에 의존하여 인증이나 접근통제를 할 때 발생할 수 있는 보안 약점
- 취약한 API 사용
- DNS Lookup에 의존한 보안결정
- 암호화 알고리즘
- 중요 정보를 보호하기 위해 평문을 암호화된 문장으로 만드는 절차 또는 방법
- 방식
- 양방향
- 개인키
- Stream 방식
- Block 방식
- 공개키
- 개인키
- 단방향
- HASH
- 양방향
- 개인키 안호화 기법
- 동일한 키로 데이터를 암호화하고 복호화하는 기법
- 대칭 암호 기법 또는 단일키 암호화 기법
- Stream 암호화 방식
- 평문과 동일한 길이의 스트림을 생성하며 비트 단위로 암호화
- 종류
- LFSR
- RC4
- Block 암호화 방식
- 한번에 하나의 데이터 블록을 암호화
- 종류
- SEED
- 한국 인터넷 진흥원에서 개발
- 블록 크기 : 128 비트
- 키 길이 : 128, 256
- ARIA
- 국가정보원과 산학연합회가 개발
- DES
- 미국 NBS에서 발표
- 블록 크기 : 64 비트
- 키 길이 : 56 비트
- 16회의 라운드
- DES를 3번 적용한 3DES도 있음
- AES
- 미국 NIST에서 발표
- DES에 한계를 느껴 공모 후 발표
- 블록 크기 : 128 비트
- 키 길이 : 128, 192, 256
- SEED
- 공개키 암호화 기법
- 데이터를 암호화할 때 사용하는 공개키는 사용자에게 공개하고, 복화할 때의 비밀키는 비밀리에 관리
- 비대칭키 암호화 기법
- 종류
- RSA
- MIT의 론 라이베스트, 샤미르, 애들먼에 의해 제안됨
- 소인수분해하기 어렵다는 것에 기반하여 제작
- RSA
- HASH
- 임의의 길이의 입력 데이터나 메세지를 고정된 길이의 값이나 키로 변환하는 것
- 해시 알고리즘을 해시 함수 라고 부름
- 종류
- SHA 시리즈
- NSA가 설계, NIST에서 발표
- SHA-224, SHA-256, SHA-384 ....
- MD5
- 론 라이베스트가 MD4를 대체하기 위해 고안
- 블록 크기 : 512 비트
- 키 길이 : 128 비트
- N-NASH
- 일본에서 발표한 해시 함수
- 블록 크기, 키 길이 : 128 비트
- SNEFRU
- 32비트의 프로세서에서 용이한 구현을 위해 개발
- SHA 시리즈
- DoS (서비스 거부 공격)
- 대량의 데이터를 한 곳의 서버에 집중적으로 전송하여 서버의 정상적인 기능을 방해하는 공격
- 유형
- Ping of Death (죽음의 핑)
- Ping 명령을 전송할 때 패킷의 크기를 인터넷 프로토콜 허용 범위 이상으로 전송하여 네트워크를 마비시킴
- ICMP 메세지에 대한 응답을 처리하느라 시스템이 다운
- SMURFING (스머핑)
- IP나 ICMP의 특성을 악용
- 엄청난 양의 데이터를 한 사이트에 집중적으로 보냄으로써 네트워크를 불능 상태로 만드는 공격
- 브로트 캐스트 주소를 악용
- SYN Flooding
- 3-way-handshake 과정을 의도적으로 중단시킴
- 서버가 대기 상태에 놓여 정상적인 서비스를 수행하지 못하도록 하는 공격
- TearDrop
- Offset값을 변경시켜 수신 측에서 패킷을 재조립할 때 오류로 인한 과부하를 발생시켜 시스템 다운
- Offset : 패킷을 여러개로 분할하여 전송할 때 분할 순서를 알 수 있도록 하는 값
- Offset값을 변경시켜 수신 측에서 패킷을 재조립할 때 오류로 인한 과부하를 발생시켜 시스템 다운
- LAND Attack
- 패킷을 전송할 떄 송신 IP주소와 수신 IP주소를 모두 공격 대상의 IP주소로 변경
- 자신에 대해 무한히 응답하게 하는 공격
- Ping of Death (죽음의 핑)
- DDoS (분산 서비스 거부 공격)
- 여러 곳에 분산된 공격지점에서 한 곳의 서버에 대해 분산 서비스 공격을 수행하는 것
- 취약한 호스트들을 에이전트(Agent)로 만든 후 공격에 이용
- Daemon(데몬) : 에이전트의 역할을 수행하도록 설계된 프로그램
- 데몬 툴
- Trin00 : UDP Flooding 공격 수행
- TFN : TCP SYN Flood 공격, ICMP 응답 요청 등을 수행
- TFN2K : TFN의 확장
- Stacheldraht : 암호화된 통신 수행, 툴이 자동으로 업데이트
- 네트워크 침해 공격
- 세션 하이재킹 (Session Hijacking)
- 클라이언트 사이의 세션 정보를 가로채는 공격
- TCP 3-way-handshake과정에 끼어들어 시퀀스 넘버를 가로채는 TCP 세션 하이재킹이 대표적
- ARP 스푸핑
- ARP의 취약점을 이용한 공격
- 자신의 MAC주소를 공격 대상의 것으로 변조하여 데이터 패킷을 가로챔
- ARP (주소 분석 프로토콜) : IP주소를 MAC 주소로 변환
- 스미싱
- SMS를 이용해 사용자의 개인 신용 정보를 빼내는 수법
- 큐싱
- QR코드를 악용하는 사기
- 스니핑 (Sniffing)
- 네트워크 중간에서 남의 패킷 정보를 도청하는 해킹 유형
- 수동적 공격
- 스피어 피싱 : 사회 공학의 한 기법
- APT(지능형 지속 위협) : 특정 기업이나 조직 네트워크에 침투해 활동 거점을 마련한 후 보안 무력화 및 데이터 유출
- 무작위 대입 공격
- SQL Injection
- XSS (크로스 사이트 스크립팅)
- 세션 하이재킹 (Session Hijacking)
- 정보 보안 침해 공격
- 웜 (Worm)
- 네트워크를 통해 자신을 복제하여 시스템의 부하를 높이는 바이러스
- 분산 서비스 공격, 버퍼 오버플로, 슬래머 등이 웜 공격의 한 형태
- 슬래머 : SQL의 허점을 이용하여 SQL 서벌르 공격하는 웜 바이러스의 형태
- 키 로거 공격 (Key Logger Attack)
- 사용자의 키보드 움직임을 탐지해 개인 정보를 탈취
- 랜섬웨어 (Ransomware)
- 내부 문서나 파일들을 암호화하고 암호 해독용 프로그램의 전달을 조건으로 돈을 요구
- 백도어
- 개발자의 액세스 편의를 위해 시스템 보안을 제거해 놓은 비밀 통로
- 무결성 검사, 열린 포트 확인, setUID파일 검사 등을 통해 감지 가능
- 제로데이 공격 (Zero Day Attack)
- 보안 취약점의 존재가 널리 공표되기 전에 해당 취약점을 통해 이루어지는 보안 공격
- 공격의 신속성 의미
- 트로이 목마
- 정상적인 프로그램으로 위장하여 잡입한 후 프로그램이 동작할 때 활성화되어 부작용을 발생
- 자기 복제 능력은 없음
- 좀비 PC
- 악성 코드에 감염되어 다른 프로그램이나 컴퓨터를 조종하도록 만들어진 컴퓨터
- 주로 DDoS 공격에 이용
- C&C서버
- 해커가 원격지에서 좀비 PC에 명령을 내리고 악성코드 제어를 위해 사용하는 서버
- 봇넷
- 악의적인 의도로 사용될 수 있는 다수의 컴퓨터들이 네트워크로 연결된 형태
- 웜 (Worm)
- 서버 인증
- 보안 서버
- 개인 정보를 암호화하여 송.수신할 수 있는 기능을 갖춘 서버
- 기능
- 서버에 SSL 인증서를 설치하여 전송 정보를 암호화
- 서버에 암호화 응용 프로그램 설치
- 인증 (Authentication)
- 로그인을 요청한 사용자의 정보를 확인하고 접근 권한을 검증하는 보안 절차
- 유형
- 지식 기반 인증
- 사용자가 기억하고 있는 정보를 기반으로 인증을 수행
- 관리 비용이 저렴
- 종류
- 고정된 패스워드
- 패스 프레이즈 : 길이가 길고 기억하기 쉬운 문장을 활용하여 비밀번호 구성
- 아이핀 : 사이버 주민등록번호
- 소유 기반 인증
- 사용자가 소유하고 있는 것을 기반으로 인증을 수행
- 도용 예방을 위해 지식 기반 인증이나 생체 기반 인증과 함께 사용
- 종류
- 신분증
- 메모리카드 : 마그네틱 선에 보안 코드를 저장해서 사용
- 스마트카드
- OTP : 암호 알고리즘을 통해 새롭게 생성된 패스워드 사용
- 생체 기반 인증
- 사용자의 고유한 생체 정보를 기반으로 인증 수행
- 종류 : 지문, 얼굴, 음성, 홍채 등...
- 기타 인증
- 행위 기반 인증
- 위치 기반 인증
- 지식 기반 인증
- 보안 서버
- 보안 아키텍처
- 정보 시스템의 무결성, 가용성, 기밀성을 확보하기 위해 보안 요소 및 보안 체계를 식별하고 이들 간의 관게를 정의한 구조
- 보안 프레임워크
- 안전한 정보 시스템 환경을 유지하고 보안 수준을 향상시키기 위한 체계
- ISO 27001 : 정보보안 관리를 위한 국제 표준
- 로그 (Log)
- 시스템 사용에 대한 모든 내역을 기록해 놓은 것
- 리눅스 로그
- 리눅스는 시스템의 모든 로그를 var/log 디렉터리에서 기록하고 관리
- syslogd 데몬 : 로그 파일을 관리
- syslog.conf 파일을 수정하여 로그 관련 파일들의 저장 위치와 파일명을 변경할 수 있음
- 주요 로그 파일
- 커널 로그 (kernel)
- 부팅 로그 (boot)
- 크론 로그 (cron)
- 시스템 로그 (syslogd)
- 보안 로그 (xinetd)
- FTP 로그 (ftpd)
- 메일 로그 (sendmailpopper)
- 윈도우 로그
- 주요 로그
- 응용 프로그램
- 보안
- 시스템
- Setup
- Forwarded Events
- 주요 로그
- 보안 솔루션
- 외부로부터의 불법적인 침입을 막는 기술 및 시스템
- 주요 보안 솔루션
- 방화벽 (Firewall)
- 내부의 네트워크와 인터넷 간에 전송되는 정보를 선별하여 수용.거부.수정하는 기능을 수행하는 침입 차단 시스템
- 침입 탐지 시스템 (IDS : Intrusion Detection System)
- 컴퓨터 시스템의 비정상적인 사용.오용.남용 등을 실시간으로 탐지하는 시스템
- 오용 탐지 : 미리 입력해 둔 공격 패턴이 감지되면 이를 알려줌
- 이상 탐지 : 평균적인 시스템의 상태를 기준으로 비정상적 행위나 자원 사용이 감지되면 이를 알려줌
- 침입 방지 시스템 (IPS : Intrusion Prevention System)
- 방화벽 + IDS (침입 탐지 시스템)
- 비정상적인 트래픽을 능동적으로 차단하고 격리
- 데이터 유출 방지 (DLP : Data Loss/Leakage Prevention)
- 내부 정보의 외부 유출을 방지하는 보안 솔루션
- 사내 직원이 사용하는 PC와 네트워크 상의 모든 정보를 검색, 탐지, 통제
- 웹 방화벽 (Web Firewall)
- SQL 삽입, XSS등의 웹 기반 공격을 방어할 목적으로 만들어진 웹 서버에 특화된 방화벽
- VPN (가상 사설망 : Virtual Private Network)
- 공중 네트워크와 암호화 기술을 이용하여 사용자가 마치 자신의 전용 회선을 사용하는 것처럼 해주는 보안 솔루션
- 비용 부담 감소
- 지역적인 제한 없이 업무 수행 가능
- NAC (Network Access Control)
- 네트워크에 접속하는 내부 PC의 MAC주소를 IP관리 시스템에 등록한 후 일관된 보안 관리 기능을 제공
- ESM (Enterprise Security Management)
- 로그 및 보안 이벤트를 통합하여 관리하는 보안 솔루션
- 보안 솔루션 간의 상호 연동 가능
- 방화벽 (Firewall)
- 취약점 분석.평가
- 사이버 위협으로부터 정보 시스템의 취약점을 분석 및 평가한 후 개선하는 일련의 과정
- 상, 중, 하 3단계로 중요도를 분리하여 관리
- 절차
- 계획 수립 → 대상 선별 → 분석 수행 → 평가 수행
'정보처리기사_실기' 카테고리의 다른 글
정보처리기사 156 ~ 162 (Python 활용 ~ 예외 처리) (0) | 2022.07.02 |
---|---|
정보처리기사 149 ~ 155 (데이터 입.출력 ~ JAVA 활용) (0) | 2022.06.30 |
정보처리기사 118 ~ 123 (DDL ~ DML) (0) | 2022.06.27 |
정보처리기사 106 ~ 117 (애플리케이션 테스트 ~ 성능 개선) (0) | 2022.06.26 |
정보처리기사 99 ~ 105 (사용자 인터페이스 ~ 감성 공학) (0) | 2022.06.26 |