정보처리기사 실기 - 소프트웨어 개발 보안 구축

Minseol·2023년 3월 16일
0

정보처리기사

목록 보기
11/17

Secure SDLC

  • SDLC(소프트웨어 개발 생명 주기)에 보안 강화를 위한 프로세스를 포함한 것

Secure SDLC의 대표적인 방법론

CLASP

  • SDLC의 초기 단계에서 보안을 강화하기 위해 개발된 방법론

SDL

  • 마이크로소프트 사에서 안전한 소프트웨어 개발을 위해 기존의 SDLC를 개선한 방법론

Seven Touchpoints

  • 소프트웨어 보안의 모범사례를 SDLC에 통합한 방법론

SDLC 단계별 보안활동

  1. 요구사항 분석 단계
  2. 설계 단계
  3. 구현 단계
  4. 테스트 단계
  5. 유지보수 단계

소프트웨어 개발 보안 요소

기밀성(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

  • TFN의 확장판

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)

  • 로그 및 보안 이벤트를 통합하여 관리하는 보안 솔루션

취약점 분석-평가

  • 사이버 위협으로부터 정보 시스템의 취약점을 분석 및 평가한 후 개선하는 일련의 과정

수행 절차 및 방법

  1. 취약점 분석-평가 계획 수립
  2. 취약점 분석-평가 대상 선별
  3. 취약점 분석 수행
  4. 취약점 평가 수행
profile
귀여운 설이에양

0개의 댓글