본문 바로가기
기본 지식

소프트웨어 개발 보안 구축

by HJINHA 2021. 7. 5.

01 소프트웨어 개발 보안 설계

1. SW 개발 보안

- 개념: 소프트웨어 개발 과정에서 지켜야 할 보안 활동

- 구성 요소 (무기가)

1) 무결성: 데이터가 고의/악의로 변경되거나 훼손되지 않음을 보장

2) 기밀성: 인가되지 않은 접근에 따른 정보 공개 차단

3) 가용성: 권한을 가진 사용자가 원하는 서비스를 지속해서 사용할 수 있도록 보장

- 공격 기법

1) DoS (Denial of Service)

: 시스템을 공격해 자원이 부족하게 하여 의도된 용도로 사용하지 못하게 하는 공격

(1) SYN 플러딩

 : TCP 프로토콜의 SYN 패킷만 보내 서브의 동시 가용 사용자 수를 점유. 공격자는 ACK을 발송하지 않고 계속 새로운 요청을 보내 서버의 자원을 고갈시킴

(2) UDP 플러딩: 대량의 UDP 패킷을 임의의 포트 번호로 전송해 ICMP를 생성하게 해 자원 고갈시킴

(3) 스머핑: 출발지 주소를 공격대상 IP로 설정해 네트워크 전체에게 ICMP Echo 패킷을 브로드캐스팅

(4) PoD (Ping of Death): ICMP 패킷을 아주 크게 만들어 IP 단편화로 인한 재조합 오버플로우 발생

(5) 랜드 어택: 출발지IP = 목적지IP. 자기 자신하게 응답하게 만듦

(6) 티어 드롭: IP 패킷 재조합 과정에서 잘못된 Fragment offset 정보로 문제 발생시킴

(7) Bonk/Boink: 프로토콜의 오류 제어를 이용

2) DDoS (Distributed DoS)

: 여러 대의 공격자를 분산 배치. 원격에서 공격 개시

- 구성 요소: 공격자, 마스터, 핸들러(마스터 프로그램), 에이전트, 데몬 프로그램(에이전트 프로그램)

3) DRDoS (Distributed Reflection DoS)

: 출발지IP를 공격대상IP로 위조해 다수의 반사 서버로 요청 전송, 공격 대상은 반사 서버로부터 다량의 응답을 받아 마비

4) 애플리케이션 공격

(1) HTTP GET 플러딩: 과도한 Get 메시지를 이용해 웹서버의 과부하 유발

(2) Sloworis: GET메서드에 끝을 알리는 개행 문자열을 전송하지 않고 연결상태를 장기간 지속시킴

(3) RUDY: 헤더의 Content-Length를 크게 설정하고 1바이트씩 전송해 연결 유지

(4) Slow HTTP Read DoS: TCP 윈도 크기, 데이터 처리율을 감소시킨 상태에서 HTTP 패킷 지속적으로 전송

(5) Hulk DoS: 공격대상 웹페이지 주소를 지속적으로 변경하면서 다량 GET 요청 발생

(6) Hash DoS: 조작된 파라미터를 POST로 전송해 해시테이블 충돌 발생시킴

5) 네트워크 공격

(1) 스니핑: 데이터만 몰래 들여다보는 수동적 공격

(2) 네트워크 스캐너/스니퍼: 네트워크 구성의 취약점을 탐색하는 공격 도구

(3) 패스워드 크래킹

- Dictionary 크래킹: ID-패스워드 단어를 파일로 만들어 놓고 대입해 크랙

- Brute Force 크래킹: 무작위 대입

- 패스워드 하이브리드 공격: 딕셔너리+브루트

- 레인보우 테이블: 패스워드 해시 값을 미리 모으고 크래킹할 해시값을 테이블에서 검색해 역으로 찾음

(4) IP 스푸핑: 패킷 헤더를 인증된 호스트의 IP주소로 위조

(5) ARP 스푸핑: MAC주소를 위조한 뒤 특정 호스트로 나가는 패킷을 스니핑

(6) ICMP Redirect: 스니핑 시스템을 라우터인 척 패킷의 흐름을 바꿈

(7) 트로이 목마: 겉보기엔 정상적인 프로그램이나 실행하면 악성코드

6) 시스템 보안 위협

(1) 버퍼 오버플로우 공격

: 메모리에 할당된 버퍼 크기를 초과하는 데이터를 입력해 프로세스 흐름을 변경시켜 악성코드 실행

- 유형: 스택/힙 버퍼 오버플로우 공격

- 대응 방안: 스택가드, 스택쉴드, ASLR, 안전한 함수 이용, 실행 제한

(2) 백도어

: 정상적인 인증 절차를 우회하는 기법

(3) 주요 시스템 보안 공격 기법

- 포맷 스트링 공격, 레이스 커너디션 공격, 키로거 공격, 루트킷(공격 프로그램 키트)

7) 보안 관련 용어

(1) 스피어피싱: 특정 대상에게 일반적인 이메일로 위장한 메일을 지속적으로 발송해 클릭 유도

(2) 스미싱: SMS+피싱

(3) 큐싱: QR코드+피싱

(4) 봇넷: 악성 프로그램에 감염된 다수의 컴퓨터들이 네트워크로 연결된 형태

(5) APT 공격: 특수목적의 조직이 특정 타깃을 목표로 한 지속적, 지능적인 맞춤형 공격

(6) 공급망 공격: 소프트웨어 개발사 네트워크에 침투해 악성코드 삽입

(7) 제로데이 공격: 보안 취약점이 알려지기 전에 해당 취약점을 악용. 공격의 신속성

(8) : 스스로를 복제해 전파하는 악성 프로그램. 독자적으로 실행되며 다른 프로그램이 필요X

(9) 악성 봇: 스스로 실행되지 못하고, 해커의 명령에 의해 제어되는 프로그램

(10) 사이버 킬체인: APT 공격 방어 분석 모델

(11) 랜섬웨어: 암호화된 파일을 인질로 잡고 돈을 요구하는 소프트웨어

(12) 이블 트윈: 무선 wifi 피싱 기법

(13) 난독화: 코드의 가독성을 낮추기 위해 일부 또는 전체를 변경

(14) Tripwire: 백도어or설정파일 변경사실 분석 도구

(15) Ping: 호스트가 정상적으로 운영되고 있는지 확인 목적으로 사용하는 명령어

(16) Tcpdump: 스니핑 도구의 일종. 패킷의 내용을 출력해주는 프로그램

 

- 서버 인증

1) 인증 기술 유형

: 지식기반 / 소지기반 / 생체기반 / 특징(행동)기반

2) 서버 접근 통제 유형

(1) DAC (임의): 신분 기반

(2) MAC (강제): 등급 기반

(3) RBAC: 역할 기반

3) 접근 통제 보호 모델

(1) -라파듈라 모델: 기밀성 강조. No Read Up / No Write Down

(2) 비바 모델: 무결성 보장. No Read Down / No Write Up

- 암호 알고리즘

1) 양방향

(1) 대칭 키

- 블록 암호: DES(64비트), AES(128비트), SEED

- 스트림 암호: RC4

(2) 비대칭 키(공개키)

- RSA(소인수분해), ECC(타원곡선), Elgamal(이산대수), Diffie-Helman(이산대수)

2) 단방향 (해시)

- MD5, SHA

- 데이터 암호화 전송

1) IPSec: IP 보안 프로토콜

2) SSL/TLS: 전송계층과 응용계층 사이에서 기밀성, 무결성 보장하는 보안 프로토콜. https://

3) S-HTTP: 네트워크 트래픽을 암호화. 서버-클라이언트 간 모든 메시지를 각각 암호화해 전송

 

02 소프트웨어 개발 보안 구현

1. SW 개발 보안 구현

- 시큐어 코딩 가이드

1) 입력데이터 검증 및 표현

- 취약점

(1) XSS: Cross Site Script. 웹페이지에 포함된 부적절한 스크립트가 실행되는 공격

(2) CSRF: Cross Site Request Forgery. 사이트 간 요청 위조

(3) SQL 삽입: 악의적인 sql 구문을 실행시켜 DB접근 및 조작

- 비즈니스 연속성 계획 (BCP. Business Continuity Plan)

: 각종 재해, 장애, 재난으로부터 위기관리를 기반으로 비즈니스 연속성을 보장하는 체계

- 용어

- BIA: 비즈니스 영향 분석

- RTO: 업무중단~복구 시간

- RPO: 복구 지점

- DRP: 재난 복구 계획

- DRS: 재해 복구 센터

'기본 지식' 카테고리의 다른 글

애플리케이션 테스트 관리  (0) 2021.07.06
서버 프로그램 구현  (0) 2021.07.03
절차형 SQL  (0) 2021.07.03
데이터 분석 함수  (0) 2021.07.03
데이터베이스 기본  (0) 2021.07.03

댓글