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 |
댓글