개념
보안 취약점 제거하고 보안을 고려해 기능 설계, 구현하는 활동을 말한다.
SW 개발 보안 생명주기
- 요구사항 명세
- 보안 항목 식별, 요구사항 명세서
- 설계
- 보안 설계서 작성, 보안설계 검토
- 위협 모델링 : 위협원 도출을 위함
- 구현
- SW 개발 보안 가이드 준수해 개발
- 소스 코드 보안 약점 진단 및 개선
- 테스트
- 모의침투 테스트, 동적분석을 통한 보안 취약점 진단 및 개선
- 유지보수
- 지속적인 개선
- 보안 패치
SW 개발 보안 구성요소
기밀성, 무결성, 가용성 지키고 취약점 사전 방지
위험을 최소화하는 구축 방법
- 기밀성(Confidentiality) :
- 인가된 사용자에 대해서만 자원 접근이 가능해야 하는 특성
- 인가되지 않은 개인이나 시스템 접근에 따른 정보 공개 및 노출을 차단
- 무결성(Integrity)
- 인가된 사용자에 대해서만 자원 수정이 가능하며, 전송 중인 정보는 수정되지 않아야 함
- 정당한 방법으로만 데이터가 변경되며, 데이터의 정확성 및 완전성
- 가용성(Availability)
- 인가된 사용자는 가지고 있는 권한 범위 내에서 자원접근이 가능해야 함
- 원하는 서비스를 지속적으로 사용할 수 있도록 해야 함.
보안 용어
- 자산 (Assets) : 데이터 또는 가치를 부여한 대상
- ex : 하드웨어, 데이터
- 위협 (Threat) : 자산에 악영향을 끼칠 수 있는 행위
- 해킹, 삭제, 불법 유출, 위조/변조, 파손
- 취약점(Vulnerability) : 위협이 발생하기 위한 사전 조건.
- 평문 전송, 입력값 미검증, 비밀번호 유출
- 위험 (Risk) : 위협이 취약점을 이용해 조직의 자산 손실 피해를 가져올 가능성
SW 개발 보안을 위한 공격 기법 이해
DoS 공격 (Denial of Service)
1. 시스템을 악의적으로 공격해 해당 시스템의 자원을 부족하게 해 원래 의도된 용도로 사용하지 못하게 하는 공격
2. 특정 서버에게 수많은 접속 시도를 만들어 다른 이용자가 정상적으로 서비스를 이용하게 하지 못하게 만들거나, TCP 연결을 소진시키는 등의 공격
공격 기법 | 설명 |
SYN 플러딩 (SYN Flooding) |
말 그대로 TCP 연결할 때 사용하는 SYN을 넘쳐나게(Flooding) 보냄 공격자는 ACK을 보내지 않고 계속 새로운 연결 요청을 함. |
UDP 플러딩 (UDP Flooding) |
대량의 UDP 패킷을 만들어 임의의 포트 번호로 전송해 응답을 생성하게 해 자원 고갈하게 만듦. |
스머프 / 스머핑 (Smurf / Smufing) |
출발지 주소를 공격 대상의 IP로 설정해 네트워크 전체에 ICMP Echo 패킷을 직접 브로드캐스팅해 마비. Bounce 사이트라고 불리는 제 3의 사이트를 이용해 공격 |
죽음의 핑 (Death of Ping) |
ICMP Ping 을 정상 크기보다 아주 크게 만들어 전송하면 다수의 IP 단편화가 발생하고, 수신 측에서는 단편화된 패킷을 분해해 재조립하는 과정에서 부하가 발생하거나, Over Flow가 발생해 정상적인 서비스를 하지 못하도록 하는 기법 |
랜드 어택 (Land Attack) |
출발지 IP와 목적지 IP를 같은 패킷 주소로 만들어 보내서 수신자가 자기 자신에게 응답을 보내게 해 시스템의 가용성을 침해 |
티어 드롭 (Tear Drop) |
패킷의 재조합 과정에서 잘못된 Fragment OffSet 정보로 수신시스템이 문제를 발생하도록 하는 Dos공격 |
봉크 (Bonk) | 패킷을 분할해 보낼 때 처음 패킷을 첫번째로 보낸 후 다음 패킷을 보낼 때도 순서를 모두 1번으로 조작해 전송 |
보잉크(Boink) | 패킷 시퀀스 번호를 비정상적인 상태로 보내서 부하를 일으키는 기법 |
DDoS 공격 (Denial of Service)
Dos의 또 다른 형태로 여러 대의 공격자를 분산 배치해 동시에 동작하게 해 특정 사이트를 공격하는 기법
취약한 인터넷 시스템에 Access를 하면, 침입한 시스템에 소프트웨어를 설치하고, 이를 실행시켜 원격에서 공격을 함.
공격 요소
- 핸들러 : 마스터 시스템의 역할을 하는 프로그램
- 에이전트 : 공격 대상에 직접 공격을 하는 시스템
- 마스터 :
- 공격자에게서 직접 명령을 받는 시스템.
- 여러대의 에이전트를 관리하는 역할
- 공격자 : 공격을 주도하는 해커의 컴퓨터
- 데몬 프로그램 : 에이전트 시스템의 역할을 수행
대응 방안
- 차단 정책 업데이트 : 공격 규모 확인해 가용성이 침해될 수 있는 지점을 확인 및
데이터 기반 차단 정책 업데이트 - 좀비 PC IP 확보
- 공격자는 대부분 Source IP를 위조하므로 IP 위변조 여부를 확인하는 절차 필요
- 보안 솔루션 운영
- 방화벽, 침입 탐지 시스템 등 보안 솔루션 운영
- 홈페이지 보안 관리
- 홈페이지에 대한 모의해킹 등을 수행하여 보안 유지
- 시스템 패치
- 시스템에 존재하는 취약점을 패치를 통해 해결
DDOS 공격의 종류
대역폭 소진 공격 ( 3 ~ 4계층)
UDP / ICMP Trafic Flooding |
- UDP / ICMP Flooding - DNS Query Flooding |
TCP Traffic Flooding |
- SYN Flooding - SYN+ ACK Flooding |
Ip Flooding | - Land Attack (보내는 사람 IP = 호스트 = 받는곳 IP -> 무한루프) - Teardop |
애플리케이션(서비스) 마비 공격 ( 7 계층)
HTTP Traffic Flooding | - GET Flooding - GET With Cache-Control |
HTTP Header / Option Spoofing | - Slowris - Slowloris - Slow Read Attack |
Other L7 Service Flooding | - Hash Dos - Hulk Dos - FTP/SMTP Attack |
세션 하이재킹 ( Session Hijacking)
개념
TCP 세션 관리 취약점을 이용한 공격기법
특징
- TCP Sequnce Number 보안상 취약점으로 발생
- 1. Victim(피해자)와 Server 사이의 패킷을 스니핑하여 Sequnce Number 획득한다
- 2. 공격자는 데이터 전송중인 Victim과 Server 사이를 비동기화 상태로 강제적으로 만든다
- 3. 스니핑해서 획득한 Client의 Sequnce Number를 이용해 공격하는 방식
- 비동기화 상태로 패킷이 유실되어 재전송 패킷이 증가
- ACK Storm 증가, 네트워크 부하 증가 현상이 발생
탐지 방법
- 비동기화 상태 탐지
- ACK 패킷 비율 모니터링
- 특정 세션에서 패킷 유실 및 재전송이 증가되는 것을 방지
- 기대하지 않은 접속의 리셋 탐지
애플리케이션 공격 (Application Attack)
HTTP GET Flooding
- Cache Control Attack 공격
- 과도한 Get 메시지를 이용해 웹 서버의 과부하 유발
- HTTP 캐시 옵션을 조작해 캐싱 서버가 아니라 웹 서버가 직접 처리하도록 유도해 서버 자원 소진
Slowloris ( Slow HTTP Header DoS)
- 헤더의 끝을 알리는 개행 문자열 \r\n\r\n을 주지 않고 \r\n만 줘서
서버와 연결 상태를 장시간 지속해 자원 모두 소진
Rudy Attack( Slow HTTP Post Dos)
- 요청 헤더의 Content-Length를 비정상적으로 크게 설정해
메시지 바디 부분을 매우 소량으로 보내 계속 연결 상태를 유지시키는 공격
Slow Read Attack
- TCP Window 크기를 낮게 설정해 서버로 전달,
윈도우 크기를 기준으로 통신하면서 데이터 전송이 완료될 때까지 연결을 유지하게 만들어 서버 자원 고갈
Hulk Dos
- 공격자가 대상 웹 사이트 URL을 지속적으로 변경하며 다량으로 GET 요청을 발생시키는 서비스 거부 공격
URL 변경 이유 : 임계치 대응을 우회하기 위해서
서버 인증 및 접근 통제
서버 인증 개념
다중 사용자 시스템과 망 운영 시스템에서 접속자의 로그인 정보를 확인하는 보안 절차
전송된 메시지 무결성 및 송신자를 검증하는 과정이 인증에 해당
서비 인증 기능
- 스니핑 방지
- SSL 인증서를 설치하면 정보가 유출되어도 암호화되어 안전함
- 피싱 방지
- 인증을 받지 않으면 유사사이트에 대해서 SSL 인증서를 발급받을 수 없음
- 데이터 변조 방지
- 제 3자의 악의적 개입으로 데이터 값 변조될 가능성이 존재
- SSL 보안서버 구축을 통해 원천봉쇄
인증 기술 유형
- 지식 기반 인증
- Id / password 등 사용자가 기억하는 지식
- 소지기반 인증
- 공인인증서, OTP 등 소지하고 있는 인증 물품
- 생체 기반 인증
- 홍채, 정맥, 지문 등 사용자의 고유 생체 정보
- 특징(행위) 기반 인증
- 서명, 몸짓 등
3A
- 모바일, 웹 등 인터넷 환경에서 관리를 체계적으로 제공하는 정보 보호 기술
구성 | 설명 |
인증 (Authentication) |
- 접근 시도하는 사용자에 대한 신분을 검증 - 신원 검증 |
권한 부여 (Authorization) |
- 인증된 주체에게 권한 부여 - 검증된 사용자에게 일정 수준의 권한과 서비스를 허용 |
계정 관리 (Accounting) |
- 주체 접근을 추적하고 행동 기록 - 리소스 사용에 대한 정보를 |
인증 관련 기술
구분 | 설명 |
SSO (Single Sign On) |
한 번의 인증으로 여러 컴퓨터상의 자원을 이용할 수 있는 기술 *쉽게 통합 로그인이다* |
커버로스 | Client / Server 모델에서 동작하는 대칭 키 암호기법을 기반으로 한 티켓 기반의 프로토콜 |
암호화 알고리즘
개념
암호 알고리즘은 데이터의 무결성, 기밀성
- 양방향 (암호화, 복호화)
- 대칭 키 : 암호화 키 == 복호화 키
- 스트림 암호 :
- LFSR
- SEAL
- 블록 암호
- Feistel : 암호화 과정 == 복호화 과정
- DES
- 3DES
- SPN : 암호화 과정 != 복호화 과정
- AES
- Feistel : 암호화 과정 == 복호화 과정
- 스트림 암호 :
- 비대칭 키 :
- 암호화 키 != 복호화 키
- DH, RSA, ECC, EIGamal
- 대칭 키 : 암호화 키 == 복호화 키
- 단방향 : 해시함수로 암호화만
- MDC (변경 감지 코드) : 무결성
- MAC (메시지 인증 코드) : 무결성 + 인증
암호 알고리즘 용어 개념
용어 | 설명 |
평문 (Plain Text) | 암호화되기 전의 원본 메시지 |
암호문 | 암호화가 적용된 메시지 |
암호화 | 평문을 암호문으로 바꾸는 작업 |
복호화 | 암호문을 평문으로 바꾸는 작업 |
키 | 적절한 암호화를 위해 사용하는 값 |
치환 암호 | 비트, 문자 or 문자 블록을 다른 비트, 문자 or 문자 블록으로 대체하는 방법 |
전치 암호 | 비트, 문자 또는 블록이 원래 의미를 감추도록 자리바꿈 등으로 재배열 하는 방법 |
안전한 전송을 위한 데이터 암호화 전송
IPSEC (Internet Protocol Security)
IP 계층(3계층)에서 무결성과 인증을 보장하는 인증 헤더와 암호화(ESP)를 이용한 IP 보안 프로토콜
SSL (Secure Socket Layer) / TLS (Transport Layer Security)
전송계층인 4계층, 응용계층 7계증 사이에서 클라이언트와 서버간의 기밀성, 데이터 무결성을 보장하는 보안 프로토콜
S-HTTP (Secure HTTP)
네트워크 트래픽을 암호화하는 주요 방법 중 하나.
Client와 Server 간의 모든 메시지를 각각 암호화 해 전송하는 기술
HTTP를 사용한 Application에서만 가능
'자격증 > 정보처리기사 실기' 카테고리의 다른 글
정보처리기사 실기 - 소프트웨어 개발 보안 구현 (시스템 보안 구현) (0) | 2023.07.19 |
---|---|
정보처리기사 실기 - 소프트웨어 개발 보안 구현 (SW 개발 보안 구현) (0) | 2023.07.17 |
정처기 실기 - 소프트웨어 개발 방법론 ( 객체 지향 분석 방법론) (0) | 2023.07.09 |
정처기 실기 - 소프트웨어 개발 방법론 (소프트웨어 생명주기 모델) (0) | 2023.07.04 |
정처기 실기 - 데이터베이스 Transaction (2) | 2023.06.07 |