정보처리기사 실기 - 소프트웨어 개발 보안 구축
Secure SDLC
- SDLC(소프트웨어 개발 생명 주기)에 보안 강화를 위한 프로세스를 포함한 것
Secure SDLC의 대표적인 방법론
CLASP
- SDLC의 초기 단계에서 보안을 강화하기 위해 개발된 방법론
SDL
- 마이크로소프트 사에서 안전한 소프트웨어 개발을 위해 기존의 SDLC를 개선한 방법론
Seven Touchpoints
- 소프트웨어 보안의 모범사례를 SDLC에 통합한 방법론
SDLC 단계별 보안활동
- 요구사항 분석 단계
- 설계 단계
- 구현 단계
- 테스트 단계
- 유지보수 단계
소프트웨어 개발 보안 요소
기밀성(Confidentiality)
- 시스템 내의 정보와 자원은 인가된 사용자에게만 접근이 허용
무결성(Integrity)
- 시스템 내의 정보는 오직 인가된 사용자만 수정할 수 있음
가용성(Availability)
- 인가받은 사용자는 시스템 내의 정보와 자원을 언제라도 사용할 수 있음
인증(Authentication)
- 시스템 내의 정보와 자원을 사용하려는 사용자가 합법적인 사용자인지를 확인하는 모든 행위
부인 방지(NonRepudiation)
- 데이터를 송-수신한 자가 송-수신 사실을 부인할 수 없도록 송-수신 증거를 제공함
시큐어 코딩(Secure Coding)
세션 통제
- 세션의 연결과 연결로 인해 발생하는 정보를 관리하는 것
세션 통제의 보안 약점
- 불충분한 세션 관리
- 잘못된 세션에 의한 정보 노출
세션 설계 시 고려 사항
- 시스템의 모든 페이지에서 로그아웃이 가능하도록 UI를 구성
세션ID의 관리 방법
- 장기간 접속하고 있는 세션ID는 주기적으로 재할당하도록 설계
입력 데이터 검증 및 표현
입력 데이터 검증 및 표현의 보안 약점
SQL 삽입(Injection)
- 웹 응용 프로그램에 SQL을 삽입하여 내부 데이터베이스(DB) 서버의 데이터를 유출 및 변조하고, 관리자 인증을 우회하는 보안 약점
경로 조작 및 자원 삽입
- 데이터 입출력 경로를 조작하여 서버 자원을 수정-삭제할 수 있는 보안 약점
크로스사이트 스크립팅(XSS)
- 웹페이지에 악의적인 스크립트를 삽입하여 방문자들의 정보를 탈취하거나, 비정상적인 기능 수행을 유발하는 보안 약점
운영체제 명령어 삽입
- 외부 입력값을 통해 시스템 명령어의 실행을 유도함으로써 권한을 탈취하거나 시스템 장애를 유발하는 보안 약점
위험한 형식 파일 업로드
- 악의적인 명령어가 포함된 스크립트 파일을 업로드함으로써 시스템에 손상을 주거나, 시스템을 제어할 수 있는 보안 약점
신뢰되지 않는 URL 주소로 자동접속 연결
- 입력 값으로 사이트 주소를 받는 경우 이를 조작하여 방문자를 피싱 사이트로 유도하는 보안 약점
메모리 버퍼 오버플로
- 연속된 메모리 공간을 사용하는 프로그램에서 할당된 메모리의 범위를 넘어선 위치에서 자료를 읽거나 쓰려고 할 때 발생하는 보안 약점
보안 기능
보안 기능의 보안 약점
- 적절한 인증 없이 중요기능 허용
- 부적절한 인가
- 중요한 자원에 대한 잘못된 권한 설정
- 취약한 암호화 알고리즘 사용
- 중요정보 평문 저장 및 전송
- 하드코드 된 암호화 키
시간 및 상태
시간 및 상태의 보안 약점
TOCTOU 경쟁 조건
- 검사 시점(Time Of Check)과 사용 시점(Time Of Use)을 고려하지 않고 코딩하는 경우 발생하는 보안 약점
종료되지 않는 반복문 또는 재귀 함수
- 반복문이나 재귀 함수에서 종료 조건을 정의하지 않았거나 논리 구조상 종료될 수 없는 경우 발생하는 보안 약점
에러 처리
에러처리의 보안 약점
- 오류 메시지를 통한 정보노출
- 오류 상황 대응 부재
- 부적절한 예외처리
코드 오류
코드 오류의 보안 약점
- 널 포인터(Null Pointer) 역참조
- 부적절한 자원 해제
- 해제된 자원 사용
- 초기화되지 않은 변수 사용
스택 가드(Stack Guard)
- 주소가 저장되는 스택에서 발생하는 보안 약점을 막는 기술
- 메모리상에서 프로그램의 복귀 주소와 변수 사이에 특정 값을 저장한 후 값이 변경되었을 경우 오버플로우 상태로 판단하여 프로그램 실행을 중단
캡슐화
캡슐화의 보안 약점
- 잘못된 세션에 의한 정보 노출
- 제거되지 않고 남은 디버그 코드
- 시스템 데이터 정보 노출
- Public 메소드로부터 반환된 Private 배열
- Private 배열에 Public 데이터 할당
접근 제어자
- 외부로부터의 접근을 제한하기 위해 사용되는 예약어
Public
- 클래스 내부, 패키지 내부, 하위 클래스, 패키지 외부
Protected
Default
Private
API 오용
API 오용의 보안 약점
- DNS Lookup에 의존한 보안 결정
- 취약한 API 사용
암호 알고리즘
- 중요 정보를 보호하기 위해 평문을 암호화된 문장으로 만드는 절차 또는 방법
개인키 암호화(Private Key Encryption) 기법
- 동일한 키로 데이터를 암호화하고 복호화하는 암호화 기법
- 대칭 암호 기법 또는 단일키 암호화 기법이라고도 한다.
- 암호화/복호화 속도가 빠르지만, 관리해야 할 키의 수가 많다.
- 종류로 스트림 암호화 방식, 블록 암호화 방식이 있다.
스트림 암호화 방식
- 평문과 동일한 길이의 스트림을 생성하여 비트 단위로 암호화하는 방식
- 종류: LFS4, RC4
블록 암호화 방식
- 한 번에 하나의 데이터 블록을 암호화하는 방식
- 종류: DES, SEED, AES, ARIA
공개키 암호화(Public Key Encryption) 방법
- 암호화할 때 사용하는 공개키(Public Key)는 사용자에게 공개하고, 복호화할 때의 비밀키(Secret Key)는 관리자가 비밀리에 관리하는 암호화 기법
- 비대칭 암호 ㄱ법
- 관리해야 할 키의 수가 적지만, 암호화/복호화 속도가 느리다.
- 대표적으로는 RSA(Rivest Shamir Adleman) 기법이 있다.
양방향 알고리즘의 종류
SEED
- 한국인터넷진흥원(KISA)에서 개발한 블록 암호화 알고리즘
ARIA(Academy, Research Institute, Agency)
- 국가정보원과 산학연협회가 개발한 블록 암호화 알고리즘
DES(Data Encryption Standard)
- 미국 NBS에서 발표한 개인키 암호화 알고리즘
- 16회의 라운드를 수행
- DES를 3번 적용하여 보안을 더욱 강화한 3DES도 있음
AES(Advanced Encryption Standard)
- 미국 표준 기술 연구소(NIST)에서 발표한 개인키 암호화 알고리즘
- DES의 한계를 느낀 NIST에서 공모한 후 발표
RSA(Rivest Shamir Adleman)
- MIT의 라이베스트, 샤미르, 애들먼에 의해 제안된 공개키 암호화 알고리즘
- 큰 숫자를 소인수분해 하기 어렵다는 것에 기반하여 만들어짐
해시(Hash)
- 임의의 길이의 입력 데이터나 메시지를 고정된 길이의 값이나 키로 변환하는 것
해시 함수의 종류
SHA 시리즈
- 미국 국가안보국(NSA)이 설계, 미국 국립표준기술연구소(NIST)에 의해 발표
MD5(Message Digest algorithm 5)
- R.Rivest가 MD4를 대체하기 위해 고안한 암호화 해시 함수
N-NASH
- 일본의 전신전화주식회사(NTT)에서 발표한 암호화 해시 함수
SNEFRU
- R.C.Merkle가 발표한 해시 함수
- 32비트 프로세서에서 구현을 용이하게 할 목적으로 개발
서비스 공격 유형
서비스 거부(DoS; Denial of Service) 공격
- 대량의 데이터를 한 곳의 서버에 집중적으로 전송함으로써, 서버의 정상적인 기능을 방해
주요 서비스 거부 공격의 유형
- Ping of Death
- SMURFING
- SYN Flooding
- TearDrop
- LAND Attack
- DDoS 공격
Ping of Death(죽음의 핑)
- Ping 명령을 전송할 때 패킷의 크기를 인터넷 프로토콜 허용 범위 이상으로 전송하여 네트워크를 마비시키는 서비스 거부 공격 방법
SMURFING(스머핑)
- IP나 ICMP의 특성을 악용하여 엄청난 양의 데이터를 한 사이트에 집중적으로 보냄으로써 네트워크를 불능 상태로 만드는 공격 방법
- 공격자는 송신 주소를 공격 대상지의 IP 주소로 위장하고 해당 네트워크 라우터의 브로드캐스트 주소를 수신지로 하여 패킷을 전송하면, 라우터의 브로드캐스트 주소로 수신된 패킷은 해당 네트워크 내의 모든 컴퓨터로 전송됨
SYN Flooding
- 3-way-handshake 과정을 의도적으로 중단시킴으로써 서버가 대기 상태에 놓여 정상적인 서비스를 수행하지 못하게 하는 공격 방법
TearDrop
- 데이터의 송-수신 과정에서 패킷의 크기가 커 여러 개로 분할되어 전송될 때 분할 순서를 알 수 있도록 Fragment Offset 값을 함게 전송하는데, 이 Offset 값을 변경시켜 수신 측에서 패킷을 재조립할 때 오류로 인한 과부하를 발생시킴으로써 시스템이 다운되도록 하는 공격 방법
LAND Attack(Local Area Network Denial Attack)
- 패킷을 전송할 때 송신 IP 주소와 수신 IP 주소를 모두 공격 대상의 IP 주소로 하여 자신에 대해 무한히 응답하게 하는 공격
DDos(Distributed Denial of Service, 분산 서비스 거부) 공격
- 여러 곳에 분산된 공격 지점에서 한 곳의 서버에 대해 분산 서비스 공격을 수행하는 것
- 분산 서비스 공격용 툴: 에이전트(Agent) 역할을 수행하도록 설계된 프로그램으로 데몬(Daemon)이라고 부르며, 다음ㅁ과 같은 종류가 있다.
Trin00
- 가장 초기 형태의 데몬으로, 주로 UDP Flooding 공격을 수행
TFN(Tribe Flood Network)
- UDP Flooding 뿐만 아니라 TCP SYN Flood 공격, ICMP 응답 요청, 스머핑 공격 등을 수행
TFN2K
Stacheldraht
- 이전 툴들의 기능을 유지하면서, 공격자, 마스터, 에이전트가 쉽게 노출되지 않도록 암호화된 통신을 수행
네트워크 침해 공격 관련 용어
세션 하이재킹(Session Hijacking)
- 상호 인증 과정을 거친 후 접속해 있는 서버와 서로 접속되어 클라이언트 사이의 세션 정보를 가로채는 공격 기법
ARP 스푸핑(ARP Spoofing)
- ARP의 취약점을 이용한 공격 기법으로, 자신의 물리적 주소(MAC)를 공격대상의 것으로 변조하여 공격 대상에게 도달해야 하는 데이터 패킷을 가로채거나 방해
스미싱(Smishing)
- 문자 메시지(SMS)를 이용해 사용자의 개인 신용 정보를 빼내는 수법
스피어 피싱(Spear Phishing)
- 사회 공학의 한 기법으로, 특정 대상을 선정한 후 그 대상에게 일반적인 이메일로 위장한 메일을 지속적으로 발송하여, 발송 메일의 본문 링크나 첨부된 파일을 클릭하도록 유도해 사용자의 개인 정보를 탈취
APT(Advanced Persistent Threats, 지능형 지속 위협)
- 다양한 IT 기술과 방식들을 이용해 조직적으로 특정 기업이나 조직 네트워크에 침투해 활동 거점을 마련한 뒤 때를 기다리면서 보안을 무력화시키고 정보를 수집한 다음 외부로 빼돌리는 형태의 공격
무작위 대입 공격(Brute Force Attack)
- 암호화된 문서의 암호키를 찾아내기 위해 적용 가능한 모든 값을 대입하여 공격하는 방식
큐싱(Qshing)
- QR코드(Quick Response Code)를 통해 악성 앱의 다운로드를 유도하거나 악성 프로그램을 설치하도록 하는 금융 사기 기법
SQL 삽입(Injection) 공격
크로스 사이트 스크립팅(XSS)
스니핑(Sniffing)
- 네트워크의 중간에서 남의 패킷 정보를 도청하는 해킹 유형의 하나
정보 보안 침해 공격 관련 용어
좀비 PC
- 악성코드에 감염되어 다른 프로그램이나 컴퓨터를 조종하도록 만들어진 컴퓨터
C&C 서버
- 해커가 원격지에서 감염된 좀비PC에 명령을 내리고 악성코드를 제어하기 위한 용도로 사용하는 서버
봇넷
- 악성 프로그램에 감염되어 악의적인 의도로 사용될 수 있는 다수의 컴퓨터들이 네트워크로 연결된 형태
웜(Worm)
- 네트워크를 통해 연속적으로 자신을 복제하여 시스템의 부하를 높임으로써 결국 시스템을 다운시키는 바이러스의 일종
제로 데이 공격(Zero Day Attack)
- 보안 취약점이 발견되었을 때 발견된 취약점의 존재 자체가 널리 공표되기도 전에 해당 취약점을 통하여 이루어지는 보안 공격
키로거 공격(Key Logger Attack)
- 컴퓨터 사용자의 키보드 움직임을 탐지해 개인의 중요한 정보를 몰래 빼가는 해킹 공격
랜섬웨어(Ransomware)
- 인터넷 사용자의 컴퓨터에 잠입해 내부 문서나 파일 등을 암호화해 사용자가 열지 못하게 하는 프로그램
백도어(Back Door, Trap Door)
- 시스템의 설계자가 액세스 편의를 위해 시스템 보안을 제거하여 만들어놓은 비밀 통로
트로이 목마(Trojan Horse)
- 정상적인 기능을 하는 프로그램으로 위장하여 프로그램 내에 숨어 있다가 해당 프로그램이 동작할 때 활성화되어 부작용을 일으키는 것
서버 인증
보안 서버
- 개인 정보를 암호화하여 송-수신할 수 있는 기능을 갖춘 서버
인증(Authentication)
- 로그인을 요청한 사용자의 정보를 확인하고 접근 권한을 검증하는 보안 절차
지식 기반 인증(Something You Know)
- 사용자가 기억하고 있는 정보를 기반으로 인증을 수행하는 것
- 지식 기반 인증 유형: 고정된 패스워드, 패스 프레이즈, 아이핀
소유 기반 인증(Something You Have)
- 사용자가 소유하고 있는 것을 기반으로 인증을 수행하는 것
- 소유 기반 인증 유형: 신분증, 메모리 카드, 스마트 카드, OTP
생체 기반 인증(Something You Are)
- 사용자의 고유한 생체 정보를 기반으로 인증을 수행하는 것
- 생체 인증 대상: 지문, 홍채/망막, 얼굴, 음성, 정맥 등
기타 인증 방법
- 행위 기반 인증(Something You Do) (예시: 서명)
- 위치 기반 인증(Somewhere You Are)
보안 아키텍처(Security Architecture)
- 보안 요소 및 보안 체계를 식별하고 이들 간의 관계를 정의한 구조
보안 프레임워크(Security Framework)
- 안전한 정보 시스템 환경을 유지하고 보안 수준을 향상시키기 위한 체계
- ISO 27001
로그(Log)
- 시스템 사용에 대한 모든 내역을 기록해 놓은 것
리눅스(LINUX) 로그
- 시스템의 모든 로그를 var/log 디렉터리에서 기록하고 관리
- 로그 파일을 관리하는 syslogd 데몬은 syslog.conf 파일을 읽어 로그 관련 파일들의 위치를 파악한 후 로그 작업을 시작
- syslog.conf 파일을 수정하여 로그 관련 파일들의 저장 위치와 파일명을 변경 가능
리눅스의 주요 로그 파일
- 커널 로그
- 부팅 로그
- 크론 로그
- 시스템 로그
- 보안 로그
- FTP 로그
- 메일 로그
윈도우(Windows) 로그
Windows 이벤트 뷰어의 로그
- 응용 프로그램
- 보안
- 시스템
- Setup
- Forwarded Events
보안 솔루션
- 외부로부터의 불법적인 침입을 막는 기술 및 시스템
주요 보안 솔루션
- 방화벽
- 침입 탐지 시스템(IDS)
- 침입 방지 시스템(IPS)
- 데이터 유출 방지(DLP)
- 웹 방화벽
- VPN
- NAC
- ESM
방화벽(Firewall)
- 내부의 네트워크와 인터넷 간에 전송되는 정보를 선별하여 수용-거부-수정하는 기능을 가진 침입 차단 시스템
침입 탐지 시스템(IDS; Intrusion Detection System)
- 컴퓨터 시스템의 비정상적인 사용, 오용, 남용 등을 실시간으로 탐지하는 시스템
침입 방지 시스템(IPS; Intrusion Prevention System)
- 비정상적인 트래픽을 능동적으로 차단하고 격리하는 보안 솔루션
- 방화벽과 침입 탐지 시스템을 결합한 것이다.
데이터 유출 방지(DLP; Data Leakage/Loss Prevention)
- 내부 정보의 외부 유출을 방지하는 보안 솔루션
웹 방화벽(Web Firewall)
- 웹 기반 공격을 방어할 목적으로 만들어진 웹 서버에 특화된 방화벽
VPN(Virtual Private Network, 가상 사설 통신망)
- 공중 네트워크와 암호화 기술을 이용하여 사용자가 마치 자신의 전용 회선을 사용하는 것처럼 해주는 보안 솔루션
NAC(Network Access Control)
- 네트워크에 접속하는 내부 PC의 MAC 주소를 IP 관리 시스템에 등록한 후 일관된 보안 관리 기능을 제공하는 보안 솔루션
ESM(Enterprise Security Management)
- 로그 및 보안 이벤트를 통합하여 관리하는 보안 솔루션
취약점 분석-평가
- 사이버 위협으로부터 정보 시스템의 취약점을 분석 및 평가한 후 개선하는 일련의 과정
수행 절차 및 방법
- 취약점 분석-평가 계획 수립
- 취약점 분석-평가 대상 선별
- 취약점 분석 수행
- 취약점 평가 수행