출처 : Shionista의 보안블로그(blog.naver.com/is_king)
32. FTP (출제빈도 1.7%)FTP(File Transfer Protocol) 개요FTP 연결 ModeTFTP(Trivial File Transfer Protocol)FTP 보안 위협 및 대책FTP 서비스 운영33. 이메일 보안 (출제빈도 2.6%)전자우편 구조SMTP (Simple Mail Transfer Protocol)메시지 액세스 에이전트(MAA)이메일 보안을 위한 보안 기술스팸메일 보안 대책메일서버 등록제 (SPF, Sender Policy Framework)스팸 필터 솔루션34. 웹 보안(Web Security) (출제빈도 5.3%) HTTP(Hypertext Transfer Protocol)SSL/TLS(Secure Socket Layer/Transport Layer Security) (⭐️)TLS 프로토콜HTTPS vs S-HTTP웹서버 보안웹 보안위협 및 보안대책35. DHCP와 DNS 보안 (출제빈도 0.8%)DHCP (Dynamic Host Configuration Protocol)DNS (Domain Name Server)DNS 보안36. 데이터베이스 보안 (출제빈도 1.9%)데이터베이스 기본 개념데이터베이스 보안 통제DBMS 보안 통제DB 암호화 방식클라우드 보안37. 전자상거래 보안 ( 출제빈도 2.4% )전자상거래(Electronic Commerce) 개념전자화폐전자지불 시스템SET(Secure Electronic Transaction)전자상거래 응용 보안38. 침해사고 대응(디지털 포렌식) (출제빈도 0.8%)포렌식의 기본 원칙포렌식 수행 절차증거(Evidence)39. 각종 어플리케이션 보안위협 및 대응책 (출제빈도 0.4%)좀비, 봇 (Bot)기타 어플리케이션 보안위협
32. FTP (출제빈도 1.7%)
FTP(File Transfer Protocol) 개요
- 하나의 호스트에서 다른 호스트로 파일을 복사하기 위해 TCP/IP에 의해 제공되는 프로토콜
- 20번 포트는 데이터 전송을 위해 사용되고, 21번 포트는 명령과 응답 등 제어 정보를 위해 사용된다.
FTP 연결 Mode

- Active Mode
- FTP 클라이언트의 기본 값.
- 서버에서 제어 포트로 21번 포트 / 데이터 전송으로 20번 포트 사용
- 동작 방식
- 클라이언트는 서버의 21번 포트로 연결하여 제어(Control)채널을 생성
- 사용자가 파일 목록을 불러오는 명령(ls)을 입력하면 클라이언트는 1024번 이상의 임시 포트를 결정하여 서버에게 전달(PORT 명령) 한다.
- 서버는 클라이언트가 알려준 포트로 연결을 설정하여 데이터채널을 생성
- 데이터채널을 통해 데이터를 송신한 후 데이터채널 연결을 종료
- Passive Mode
- 서버에서 제어 포트로 21번 포트 / 데이터 전송으로 1024번 이상의 포트 사용
- 동작 방식
- 클라이언트는 서버의 21번 포트로 연결하여 제어채널을 생성
- 사용자가 파일 목록을 불러오는 명령(ls)을 입력하면 클라이언트는 수동모드로 연결하기 위해 PASV 명령을 전송하고 서버는 1024번 이상의 임시 포트를 결정하여 클라이언트에게 전달한다.
- 클라이언트는 서버가 알려준 포트로 연결을 설정하여 데이터채널을 생성
- 데이터채널을 통해 데이터를 송신한 후 데이터채널 연결을 종료
TFTP(Trivial File Transfer Protocol)
- 오직 기본적인 IP와 UDP만을 필요로 하는 FTP (포트 : UDP/69)
- 보안 기능이 없음
- FTP와 TFTP의 차이
- 전송 : FTP는 TCP를 사용하고 TFTP는 UDP를 사용. TFTP는 부스트래핑 시 자주 사용
- 한정된 개수의 명령 : TFTP는 파일을 보내고 받는 기능만 지원
- 한정된 데이터 표현 방식 : TFTP는 FTP가 지원하는 데이터 표현 방식을 전부 지원하지 않는다.
- 인증의 부족 : TFTP는 인증 기능이 없음
FTP 보안 위협 및 대책
- FTP는 비밀번호, 데이터 전송 연결이 평문으로 되어있어 공격자에게 노출될 수 있다. 때문에 보안을 위해서 보안 소켓 계층(SSL, Secure Socket Layer)을 추가할 수 있다. (SSL-FTP)
- SFTP(Secure FTP) : UNIX에서 제공하는 SSH 프로토콜의 일부분이다. SSH에서 클라이언트와 SSH 서버사이에 보안 연결이 성립되었을 때, 이 연결을 사용할 수 있는 응용프로그램 중 하나이다.
- TFTP 보안
- TFTP는 보안 기능이 전혀 없기 때문에 TFTP가 중요하지 않은 파일에만 접근할 수 있도록 제한하거나 TFTP 서버 근처에 있는 라우터에 보안을 구현하여, 특정 호스트만 서버에 접근할 수 있도록 해야 한다.
- TFTP가 필요한 경우 secure mode로 운영 : chroot 기능을 이용한 것으로, 지정 디렉터리를 최상위 디렉터리로 지정하여 상위 디렉터리로 접근할 수 없도록 제한할 수 있다.
- Bounce attack
- FTP 서버가 데이터를 전송할 때 목적지를 검사하지 않는 문제점을 이용
- 익명 FTP 서버를 이용해 그 FTP 서버를 경유해서 호스트를 스캔
- FTP PORT 명령을 이용한다.
- 네트워크를 포트 스캐닝 하는데 사용
- 보안대책 : FTP 규약을 어느 정도 제한하는 방법으로 다른 서비스가 20번 포트 접속을 요청하면 거절하는 방법. 익명 FTP 서버의 경우 임시적으로 ./incoming에 파일 업로드를 할 수 없게 하는 방법
- 익명 FTP 취약점
- 보안 절차를 거치지 않은 익명의 사용자에게 FTP 서버로의 접근을 허용하고, 그 사용자가 서버에 쓰기 권한이 있을 때 악성코드 생성이 가능하다.
- 보안대책 : 중요 디렉터리(/bin, /etc 등)의 소유자와 권한(permission)을 관리하거나 사용을 금지하는 방법이 있다.
FTP 서비스 운영
- proftpd
- 특징
- 매우 안정적이고 빠름
- xinetd / standalone 형태로 작동 가능
- ftp 접속 시 확인 설정
- /etc/passwd, /etc/shadow에 사용자 계정이 있는지 검사
- /etc/ftpusers에 사용자 id가 있으면 거부
- /etc/shell에 등록되지 않는 쉘을 사용하는 유저는 거부
- 설정 파일 옵션
- ServerType [type] : 서버 타입 설정(xinetd / standalone)
- RootLogin [on/off] : 루트 계정 로그인 허용/거부
- user [name] : 익명 접속할 경우 사용자를 [name]으로 인식
- MaxClients [num] : 최대 접속 허용
- TimeoutLogin [second] : 클라이언트가 인증을 유지할 수 있는 시간
- TimeoutIdleftp [second] : 접속 후 아무런 작업도 없는 상태 유지 시간
- TimeoutSession [second] : [second]초 후에 무조건 접속 종료
- vsftpd(Very Secure FTP Daemon)
- 가상 IP별 별도의 환경 설정 기능이 있음.
- 가상 사용자 설정, 전송 대역폭 지정 가능
- 상세한 자체 로그 파일 형식을 지원
- xinetd / standalone 형태로 작동 가능
33. 이메일 보안 (출제빈도 2.6%)
매회 1문제 이상 출제
전자우편 구조
- MUA (Mail User Agent) : 사용자 대행자. 메시지 작성, 읽기, 답장 보내기 등을 수행하는 S/W
- MTA (Mail Transfer Agent) : 메일 서버로 메시지를 전송하기 위한 전송 대행자. 클라이언트/서버 프로그램
- MAA (Mail Access Agent) : 메시지를 검색하고자 할 때 사용하는 메시지 접근 대행자. 클라이언트/서버 프로그램
SMTP (Simple Mail Transfer Protocol)

- MTA 클라이언트와 서버를 구성하는 프로토콜 (TCP/25)
- SMTP는 송신자와 송신자의 메일서버 사이 그리고 두 메일 서버들 사이에서 총 두 번 사용된다.
메시지 액세스 에이전트(MAA)
- POP3(Post Office Protocol ver3)
- 간단하지만 기능상의 제약이 있는 프로토콜. (TCP/110)
- 클라이언트 POP3 S/W는 수신자 PC에, 서버 POP3 S/W는 메일 서버에 설치됨.
- 사용자가 메일서버에 있는 편지함에서 전자우편을 내려 받을 필요가 있을 때 클라이언트에서 시작
- IMAP4(Internet Mail Access Protocol ver4)
- POP3과 비슷하지만 더 많은 기능을 포함하고 있고 복잡함. (TCP/143)
- IMAP4가 추가적으로 제공하는 기능
- 사용자는 전자우편을 내려 받기 전에 헤더를 검사할 수 있음
- 사용자는 내용 검색, 부분적 다운로드 가능
- 사용자는 메일서버에서 편지함을 생성, 삭제, 이름 변경 가능
이메일 보안을 위한 보안 기술
- PEM(Privacy Enhanced Mail)
- IETF에서 채택한 기밀성, 인증, 무결성, 부인방지를 제공하는 이메일 보안 기술
- 키 인증이 중앙집중화 되어있고, 이론 중심이어서 구현이 복잡하여 많이 사용되고 있지 않다.
- PGP(Pretty Good Privacy)
- 구현이 용이하여 널리 사용되는 기술. 다양한 플랫폼에서 활용 가능
- 인증(전자서명), 기밀성(대칭 블록암호 + RSA), 압축(ZIP), 호환성, 단편화 조립 제공
- 송신 부인 방지를 지원하나 수신 부인 방지는 지원하지 않는다.
- S/MIME(Secure Multipurpose Internet Mail Extensions)
- PEM 구현의 복잡성, PGP의 낮은 보안성을 보완하기 위해 RSADSI 기술을 기반으로 개발된 기술
- MIME : 전자우편을 통해 ASCII가 아닌 데이터가 송신될 수 있도록 허용하는 부가적인 프로토콜
- 메시지 기밀성, 무결성, 사용자 인증, 송신 사실 부인 방지 기능 제공
- 전자서명을 위해 DSS(디지털 서명 표준)사용, 세션키 암호화를 위해 Diffie-Hellman 사용, 전자서명, 세션키 암호화를 위해 RSA 알고리즘을 사용한다.
- S/MIME 동작 과정
- 사용자가 수신자에게 보낼 메시지 작성. 이 메시지는 MIME 형태로 작성되고, 사용자는 전송하기 전에 메시지에 대한 보안 메커니즘(전자 서명, 암호화)을 선택하여 적용할 수 있다.
- S/MIME 어플리케이션은 MIME 형태의 메시지를 S/MIME 메시지로 변환. (보안 메커니즘을 실질적으로 적용)
- 메일 클라이언트는 전자 우편 서버에 메일을 전송하고, 수신자는 S/MIME 클라이언트를 통해 메시지 수신
- 전송 시 SMTP 프로토콜이 사용되지만, 메시지에 암호화 및 전자서명이 적용되었기 때문에 도청/변조로부터 안전
스팸메일 보안 대책

메일서버 등록제 (SPF, Sender Policy Framework)
- 메일 헤더에 표시된 IP가 실제로 메일을 발송한 서버 IP와 일치하는지 비교함으로써 발송자 정보의 위변조 여부를 판단
- 발송자의 서버를 DNS에 미리 등록하고 수신자의 서버에 메일이 도착하면 등록된 서버로부터 발신되었는지 확인하여 수신자에게 전달되기 전에 스팸메일을 차단하는 기술 (오픈 소스 기반)
- 필터링 방식에 비해 서버 및 네트워크 자원 소모가 낮고 잘못 탐지할 가능성이 낮음
스팸 필터 솔루션
- 메일서버 앞단에 위치하여 프록시 메일서버로서 동작하며, SMTP 프로토콜을 이용한 DoS 공격이나 폭탄 메일, 스팸 메일을 차단
- 주요 기능 : 메일 헤더 필터링, 제목 필터링, 본문 필터링, 첨부파일 필터링
34. 웹 보안(Web Security) (출제빈도 5.3%)
매회 5~6문제 출제
HTTP(Hypertext Transfer Protocol)
- 웹에서 웹페이지를 가져오기 위해 어떻게 클라이언트-서버 프로그램이 작성될 수 있는지를 정의
- 영속성
- 비영속적 연결 : 각 요구/응답에 대해 하나의 TCP 연결만 만들어짐. (작업 끝난 후에 연결이 닫힘)
- 영속적 연결 : 차후의 요청을 위해 연결을 열어 놓음.
- HTTP ver 1.0 : 비영속적 연결.
- HTTP ver 1.1 : 영속적 연결. (모드 변경 가능)
- HTTP 트랜잭션(transaction)
- 요청 메시지
- 메소드(Method) : 요청 라인에 포함된 정보
- GET 방식 : 요청 데이터에 대한 인수를 URL(Uniform Resource Locator)에 포함시켜 전송
- POST 방식 : 바디 영역에 소켓을 이용하여 데이터를 전송. 최소한의 보안성을 유지
- 요청 헤더 라인 : 추가적인 정보(Host, User-Agent, Referrer 등)를 클라이언트에서 서버로 보냄
- 본체(Body)
- 메소드가 PUT이나 POST일 때, 송신될 주석이나 웹사이트에 게시될 파일을 담고 있다.
- GET 방식의 경우 요청 데이터가 없기 때문에 본체(Body)가 없다.
- 응답 메시지
- 상태 코드 필드 (Status line에 포함) : 세 자리 숫자로 요청의 상태를 정의 (404, 500 등)
- 응답 헤더 라인 : 추가적인 정보(Contents-Type, Contents-Length 등)를 서버에서 클라이언트로 보냄

SSL/TLS(Secure Socket Layer/Transport Layer Security) (⭐️)
- 가장 많이 이용되고 있는 암호 통신 방법
- 대칭키 암호, 공개키 암호, 일방향 해시함수, 메시지 인증코드, 의사난수 생성기, 전자서명을 조합해서 안전한 통신을 수행
- 특정 암호기술에 의존하지 않고 암호 스위트라는 개념에 의해 선택이 가능하다.
- SSL 보안 서비스
- 기밀성 : 대칭키 암호화 알고리즘을 사용하여 제공. 비밀키는 Handshake Protocol을 통해 생성
- 클라이언트와 서버 상호 인증 : RSA 같은 비대칭키 암호 알고리즘, DSS와 같은 전자서명 알고리즘과 X.509 공개키 인증서를 사용해 인증을 제공
- 무결성 : 해시 알고리즘을 사용해 MAC를 만들어 메시지에 포함시켜 제공
TLS 프로토콜
- SSL3.0을 기초로 인터넷 표준버전이 되도록 만든 IETF 표준이다.
- TLS 레코드 형식은 SSL 레코드 형식과 동일하고 헤더의 필드도 동일한 의미를 가짐.
- MAC 계산 시 SSL은 오래된 버전의 HMAC를 사용하지만, TLS에서는 최신버전의 HMAC를 사용.
- Handshake 프로토콜
- 이 프로토콜을 이용해서 서버와 클라이언트가 서로 인증
- TLS Recode 안에 보낸 데이터를 보호하는데 사용할 암호키를 협상할 수 있다.
- Handshake 프로토콜 동작 과정 (4단계)


- Recode 프로토콜
- 대칭키 암호를 사용해서 메시지를 암호화하고 통신함. TCP 프로토콜 사용
- 상위 응용 계층에서 받은 임의 크기의 데이터를 SSL에서 처리할 수 있는 데이터 블록 크기로 단편화하고, 압축, MAC 계산, 암호화 과정을 거쳐 TCP 단편으로 전송됨. 수신된 데이터는 반대로 수행하여 상위 계층에게 전달
- ChangeCipherSpec 프로토콜 : 협상된 보안 파라미터를 이후부터 적용/변경함을 알리기 위해 사용
- Alert 프로토콜 : 대등 개체에게 SSL 관련 경고를 할 때 사용됨.
- 하트비트(Heartbeat) 프로토콜 : 정상적으로 동작함을 알려주기 위해 생성하는 주기적인 신호
- SSL/TLS에 대한 공격
- OpenSSL의 HeartBleed 취약점 : 해당 취약점을 가진 OpenSSL 버전에서 Heartbeat 확장 기능에 요구 데이터 길이에 대한 점검이 없어서 다른 정보까지 상대방에게 전달될 수 있는 취약점.
- POODLE 공격 : 공격자가 TLS를 SSL 3.0으로 다운그레이드 시켜 SSL 3.0의 취약점을 공격하는 기법
- FREAK 공격 : SSL/TLS 서버가 RSA Export Suites라고 불리는 약한 암호 스위트를 사용하게 만드는 공격
HTTPS vs S-HTTP
- HTTPS (TCP/443)
- SSL을 이용하는 HTTP로, 모든 웹 브라우저에 내장되어 있는 기능
- URL 주소가 https:// 로 시작한다.
- 요청 문서 URL, 문서 내용, 브라우저 양식 내용, 쿠키, HTTP 헤더 내용이 암호화된다.
- 스니핑을 어렵게 만들지만 사용자 입력 값에 대한 검증은 하지 못한다.
- S-HTTP
- HTTP로 전송되는 내용을 보호
- HTTPS와 달리 HTTP 메시지가 암호화 및 서명되어 기존 TCP/IP 망을 통해 전송된다.
- 기존의 HTTP 특성을 유지하며 다양한 암호 기능을 지원한다.
- URL 주소가 shttp:// 로 시작한다.
웹서버 보안
- IIS(Internet Information Security) 보안
- 접근제어/통제 : 웹서버/페이지(관리자 페이지 포함)에 접근하는 사용자를 IP주소 등을 통해 접근통제
- 디렉터리 리스팅 (Directory Listing) : 웹서버/페이지에 특정 방법으로 접근 시, 해당 사이트의 디렉터리 구조와 파일 리스트를 열람할 수 있게 된다. 이때 중요한 정보가 노출될 수 있다.
- 오류 메시지 설정 : 기본 오류 메시지를 이용하면 오류 메시지에 의해 내부 DB정보나 서버정보 등이 노출될 수 있다.
- Apache 보안
- root 권한으로 실행되는 경우를 방지하기 위해 nobody 계정을 만들어 아파치 웹 프로세스의 권한으로 할당 (nobody 계정은 로그인이 허용 되지 않음)
- nobody라는 이름 대신 apache 라는 별도의 계정을 만들어 사용
- 아파치 설정파일(httpd.conf) 주요 설정 [괄호 안은 default 값 또는 일반적으로 설정되는 값]
- ServerType(standalone) : 서버를 standalone / inetd 모드로 운영할지 결정
- Timeout(300) : 클라이언트에서 서버로 접속 시 지정한 시간(초)안에 처리하지 못하면 연결을 해제
- KeepAlive(On) : 사용자의 요청 연결에 대해 한 번의 요청 처리 후 다른 요청을 기다릴지 설정
- On : 사용자의 요청 처리 후 다른 요청을 처리하기 위해 대기
- Off : 사용자의 요청 처리 후 바로 접속을 해제
- MaxKeepAliveRequests(100) : KeepAlive 상태에서 처리할 최대 요청 처리 건수
- KeepAliveTimeout(15) : KeepAlive 상태를 유지할 시간(초)
- MaxClients(150) : 아파치 서버의 최대 동시 접속자 수 (최대 256 까지 설정 가능)
- User(nobody) : 자식 프로세스가 생성될 때 그 프로세스의 소유자/소유그룹 결정
- ServerSignature(On) : 서버 배너 정보를 나타내는 설정
- ServerTokens(ProductOnly) : 서버의 정보 표시제한 설정
- ProductOnly : 웹서버 종류만 표시
- Minimal : 웹서버 종류, 버전 정보 표시
- OS : 웹서버 종류, 버전, OS 정보 표시
- Full : 웹서버 종류, 버전, OS 정보, 설치된 모듈 정보 표시
웹 보안위협 및 보안대책
- OWASP TOP 10 2017

- SQL injection
- DB와 연동되어 있는 어플리케이션의 입력 값을 조작하여 DBMS가 의도되지 않은 결과를 반환하도록 하는 공격기법
- 필터링 기능이 없어 해당 어플리케이션에서 사용자로부터 전송되어 오는 입력 값에 대해 그 적정성을 검사하지 않기 때문에발생한다.
- 이 공격기법으로 DB 정보 조회/변조/삭제가 가능하며, 사용자 및 관리자에 대한 인증절차를 우회할 수 있다.
- 취약점 판단 방법 : 입력 폼에 큰따옴표, 작은따옴표, 세미콜론 등을 입력하여 DB 에러를 출력하는지 확인
- 대응 방법 : 사용자의 입력에 특수 문자가 포함되어 있는지 검증, SQL 서버의 에러 메시지 미표시, 일반 사용자 권한으로 시스템 저장 프로시저에 접근 불허
- 사이트 간 스크립팅 (XSS, CSS, Cross Site Scripting)
- 공격자에 의해 작성된 스크립트가 다른 사용자에게 전달되는 기법
- 다른 사용자의 웹 브라우저 내에서 적절한 검증 없이 실행되기 때문에 사용자의 세션을 탈취하거나, 웹 사이트를 변조하거나 혹은 악의적인 사이트로 사용자를 이동시킬 수 있다.
- 공격 유형
- Stored XSS : 가장 일반적인 유형. 단순한 게시판 또는 자료실과 같이 사용자가 글을 저장할 수 있는 부분에 정상적인 평문이 아닌 스크립트 코드를 입력하는 기법이다.
- Reflected XSS : 공격 스크립트가 포함된 공격 URL(사용자가 눈치 채지 못하게 인코딩)을 사용자가 클릭할 때 악성 스크립트 코드가 서버 사이트에 의해 HTML 문서로 반사되어 웹 브라우저에서 실행시켜, 서버에 남기지 않고 공격을 수행 가능
- 보안대책
- 사용자가 입력한 문자열의 <, >, &, " 등을 문자 변환 함수나 메소드를 사용하여 &It, >, &, "로 치환한다.
- HTML 태그를 허용하는 게시판에서는 지원하는 HTML 태그의 리스트를 선정한 후, 해당 태그만 허용하는 방식을 적용한다.
- 사이트 간 요청 위조 (XSRF, CSRF, Cross Site Request Forgery)
- 특정 웹사이트에 대해 사용자가 인지하지 못한 상황에서 사용자의 의도와는 무관하게 공격자가 의도한 행위(수정, 삭제, 등록 등)를 요청하게 하는 공격기법
- XSS 공격은 악성 스크립트가 클라이언트에서 실행되는 반면, CSRF 공격은 정상적인 사용자가 악성 스크립트를 서버에 요청한다.
- 보안대책
- 입력화면 폼 작성 시 GET 방식보다는 POST 방식을 사용하고, 토큰을 이용하여 공격자의 직접적인 URL 사용이 동작하지 않도록 처리한다.
- 특정한 사용자를 구분하는 인수가 있으면 하나의 사용자에게만 적용되거나 인증과정을 통해 공격을 막을 수 있다.
- 직접 객체 참조
- 파일, 디렉터리, DB 키와 같이 내부적으로 구현된 객체에 대한 참조가 노출될 때 발생
- 디렉터리 탐색 공격(파일 다운로드 취약점) : 브라우저에서 확인 가능한 경로의 상위 디렉터리로 탐색하여 특정 시스템 파일을 다운로드하는 공격 방법
- 보안대책 : 파일 다운로드 전용 프로그램을 작성하여 사용할 때, ‘..’ 이나 ‘/’ 문자를 필터링
- 파일 업로드 제한 부재 : 클라이언트에서 서버 측으로 임의의 파일을 보낼 수 있다는 것은 웹서버가 가질 수 있는 가장 치명적인 취약점이다. 첨부파일로 업로드하는 악성 코드는 대부분 웹셸이다.
- 보안대책 : 업로드 가능한 파일의 확장자를 화이트리스트 방식으로 필터링한다.
- 웹 방화벽(WAF, Web Application Firewall)
- 웹 어플리케이션을 대상으로 시도되는 해킹을 차단해주는 솔루션
- 기능
- 사용자 요청 검사 : 접근제어, Web DoS, 업로드 파일 및 요청 형식 검사, SQL 인젝션 및 XSS 등의 차단
- 콘텐츠 보호 : 정보 유출 차단, 웹 변조 방지, 코드 노출 진단
- 위장 : URL 정보 위장, 서버 정보 위장
35. DHCP와 DNS 보안 (출제빈도 0.8%)
DHCP (Dynamic Host Configuration Protocol)
- 호스트 설정 프로토콜 종류
- RARP(Reverse Address Resolution Protocol) : 초기 사용된 방식. 호스트의 MAC주소를 통해 RARP 서버에서 IP 주소를 매핑하여 호스트에게 전달.
- BOOTP(Bootstrap) : DHCP 이전에 사용된 방식. 컴퓨터의 IP주소/서브넷 마스트, 라우터 IP 주소, 네임서버 IP 주소의 정보를 제공해주지만 정적인 설정이 필요한 프로토콜
- DHCP : BOOTP의 기능을 모두 제공하고 동적인 프로토콜
- 장점 : 네트워크 설계 변경이 자유로움, 실제 사용되는 호스트에만 IP가 할당되어 IP 절약, 사용자가 따로 설정하지 않아도 됨
- 단점 : 부팅 시 브로드캐스트 방식으로 트래픽을 전송하여 네트워크 성능 저하, 호스트 전원만 켜 있어도 IP 할당, 호스트 수가 많아지면 서버 과부하 발생
DNS (Domain Name Server)
- DNS는 도메인 네임을 IP 주소로 변환해주는 시스템
- zone 파일 : 개별 도메인에 대한 DNS 정보가 설정되어 있는 파일
- 루트 서버 : 전체 트리를 영역으로 가지는 서버. 보통 도메인에 대한 정보를 갖지 않으며, 다른 서버들에 대한 참조만을 가지고 있다.
- 일차 서버(Primary Server) : 자신이 권한을 가지는 zone에 대한 파일을 가지고, zone 파일에 대한 생성/관리/갱신의 책임을 가지며 로컬 디스크에 zone 파일을 저장
- 이차 서버(Secondary Server) : 다른 서버로부터 영역에 대한 정보를 수신하여 로컬 디스크에 파일이 저장하는 서버
- 존 전송(Zone Transfer) : 1차 서버(마스터, master)의 zone 데이터를 2차 서버(슬레이브, slave)가 동기화하는 작업 (TCP/53)
- 동작 방식
- 재귀적(Recursive) 해석 : 클라이언트가 네임 서버에게 재귀적 요청을 보내면, 서버는 정보가 있는 경우 그 정보로 응답하고, 없는 경우 다른 서버(부모 서버)에게 새로운 재귀적 요청을 보내어 응답한다.
- 반복적(Iterative) 해석 : 클라이언트가 네임 서버에게 반복적 요청을 보내면 서버는 정보가 있는 경우 그 정보로 응답하고, 없는 경우 그 정보에 좀 더 가까운 다른 서버의 네임으로 응답한다.
- DNS 질의 순서 : 캐시 → hosts 파일 → 로컬 DNS 서버
DNS 보안
- DNS 스푸핑 : 공격 대상이 DNS 질의를 수행하면 공격자가 이를 스니핑하여 정상 응답보다 빠르게 공격 대상에게 조작된 웹사이트 IP 정보를 담은 DNS 응답을 보내 정상적인 주소를 입력해도 조작된 주소로 접속하게 만드는 공격 기법
- DNS Cache Poisoning
- DNS 서버의 캐시정보를 조작하는 공격
- 공격 절차
- 공격 대상 DNS 서버(Recursive DNS Server)에 조작할 도메인 질의를 다수 전송
- 공격 대상 DNS 서버가 반복적 질의를 수행하는 동안 다수의 조작된 DNS 응답을 서버에 전송
- 조작된 응답 중 정상 응답보다 먼저 Transaction ID와 출발지 Port가 일치한 응답이 있으면 조작된 주소 정보가 공격 대 상 DNS 서버의 캐시에 저장되게 된다.
→ 공격 대상 DNS 서버가 질의에 사용하는 Transaction ID와 출발지 Port를 모르기 때문에 랜덤으로 생성
- 보안 대책 : 취약점 패치, 재귀적 질의 비허용, DNSSEC 기술 활용
36. 데이터베이스 보안 (출제빈도 1.9%)
데이터베이스 기본 개념
- 데이터베이스(DB, Database) : 통합된 데이터, 저장된 데이터, 운영 데이터, 공용 데이터
- DBMS(DataBase Management System) : 응용프로그램과 DB의 중재자. 모든 응용프로그램이 DB를 공용할 수 있도록 관리해 주는 S/W 시스템
- 구성요소
- 개체(entity) : DB가 표현하려고 하는 유형. 파일 구성 측면에서는 레코드(record)에 해당하며, 단독으로 존재할 수 있고 정보로서 역할을 할 수 있다. 개체는 하나 이상의 속성으로 구성된다.
- 속성(attribute) : 개체의 특성이나 상태를 기술하는 것. 데이터의 가장 작은 논리적 단위가 되며 단독으로 존재하지 못한다. 파일 구성 측면에서는 데이터 항목(item), 또는 필드(field)라고도 한다.

- 키의 유형
- 후보키(Candidate Key) : 키의 특성인 유일성과 최소성을 만족하는 키 ex) <군번>, <이름, 소속>
- 슈퍼키(Super Key) : 유일성을 만족하는 키 ex) <이름, 소속, 계급>
- 기본키(Primary Key) : 여러 개의 후보키 중에서 하나를 선정하여 사용하는 키 ex) <군번>, <이름, 소속> 중 하나를 선정
- 대체키(Alternate Key) : 여러 개의 후보키 중에서 기본키를 제외한 나머지 키 ex) 기본키를 <군번>으로 선정하였다면 나머지 키인 <이름, 소속>
- 외래키(Foreign Key) : 어느 한 릴레이션 속성의 집합이 다른 릴레이션에서 기본키로 이용되는 키
- 무결성의 종류
- 키 무결성(key integrity) : 한 릴레이션에 같은 키값을 가진 튜플(tuple)이 있어서는 안된다.
- 개체 무결성(entity integrity) : 기본키에 속해 있는 전체 또는 일부 속성은 널 값을 가질 수 없다.
- 참조 무결성(referential integrity) : 릴레이션은 참조할 수 없는 외래키값을 가질 수 없다.
- 트랜잭션(Transaction) : 하나의 논리적 기능을 수행하기 위한 작업의 단위
- DB 보안 위협
- DB 보안 특성 : 비밀성, 무결성, 가용성
- Aggregation(집성) : 개별적인 여러 소스로부터 민감하지 않은 정보(낮은 보안 등급)를 수집/조합하여 민감한 정보(높은 보안 등급)를 알아내는 행위
- Inference(추론) : 일반적인 데이터로부터 비밀정보를 추측해내는 행위
데이터베이스 보안 통제
- 흐름제어
- 객체 A의 값을 읽어 이를 객체 B에 기록할 때 정보흐름이 발생하게 된다.
- 어떤 객체에 포함되어 있는 정보가 명시적/암시적으로 낮은 보호수준의 객체로 이동하는 것을 검사하여 접근 가능한 객체 간의 정보흐름을 조정하는 것
- 추론제어
- 간접적인 데이터 노출로부터 데이터를 보호하기 위한 제어
- 추론제어 방법으로는 비밀정보를 은폐하거나 DB 사용자에게 부정확한 혹은 일관성이 없는 질의결과를 제공하는 방법이 있다.
- 접근제어
- DB에서의 접근통제는 운영체제의 접근통제와 유사하지만 실질적으로는 보다 복잡하다.
- 운영체제의 접근통제 : OS의 객체(파일)는 다른 객체와 관련성이 없어 사용자는 하나의 파일을 읽고 다른 파일의 내용을 결정할 수 없다.
- 데이터베이스의 접근통제 : DB의 객체(레코드, 필드)는 상호 관련되어 있어 사용자는 하나의 데이터 요소를 읽고서 다른 데이터의 내용을 결정할 수 있으며 객체의 크기도 상이하다.
- 추론과 통계적 데이터베이스
- 인가된 쿼리 수행과 합법적 응답을 통해 비인가된 정보를 추론하는 것
- DB 설계 시 추론 탐지 : DB 구조 변경 혹은 접근 제어 방식의 변경으로 추론채널을 제거함으로써 추론을 방지
- 쿼리 타임 시 추론 탐지 : 쿼리 처리 중 추론 채널 위반을 제거하려는 시도. 추론 채널이 탐지되면 쿼리를 거부하거나 변경한다.
DBMS 보안 통제
- SQL 기반의 접근 통제(GRANT/REVOKE 접근통제)
- 보통 DBA가 권한을 가지므로 DBA 권한이라 하는데, 다른 사용자에게 권한을 부여하거나 회수할 때 사용한다.
- SQL은 GRANT와 REVOKE라는 접근 권한 관리 명령어를 제공한다.
- 뷰(View) 기반의 접근통제
- 하나 이상의 기본 테이블로부터 유도되어 만들어지는 가상 테이블(virtual table)이다.
- 뷰의 내용은 실제로 존재하는 것이 아니라, 실행시간에만 구체화되는 특수한 테이블이다.
- DB의 선별된 부분만 표시하여 사용권한을 다양하게 설정하여 자료에 대한 접근제어로 보안을 제
- DBMS 보안 점검 사항
- 디폴트 계정 패스워드 변경, DB 패스워드 규칙 강화
- DBA 권한의 제한 : 일반 계정이 DBA 권한을 부여받지 않도록 주의해야함.
- 보안 패치 적용하여 취약점 제거
- 사용하지 않는 계정 삭제
- 개발자 IP 접근 제한
- 데이터의 암호화
DB 암호화 방식
- Plug-in 방식 : 암/복호화 모듈을 DB 서버 내에 설치하여 암/복호화를 수행하는 구조
- API 방식 : 암/복호화 모듈을 어플리케이션 서버 내에 설치하여 암/복호화를 수행하는 구조.
- Hybrid 방식 : Plug-in 방식 + API 방식
- TDE 방식 : DBMS에 추가 기능으로 제공되는 암호화 기능을 이용하여 DB 내부에서 데이터 파일 저장 시 암호화하고, 파일에 저장된 내용을 메모리 영역으로 가져올 때 DBMS에 의해 자동으로 복호화되는 방식
- 파일 암호화 방식 : OS상에서 확인 가능한 개체인 파일을 암호화하는 방식
클라우드 보안
- 클라우드 컴퓨팅(Cloud computing) : 정보를 자신의 컴퓨터가 아닌 인터넷에 연결된 다른 컴퓨터로 처리하는 기술
- 클라우드 컴퓨팅 3가지 서비스 모델
- Software as a Service(SaaS) : 사용자는 제공자(Vendor)가 클라우드 기반 구조에서 구동되도록 올려놓은 응용 프로그램을 이용할 수 있다.
- Platform as a Service(PaaS) : 사용자는 자신이 생성하였거나 프로그래밍 언어로 만든 기존의 응용 프로그램 또는 제공자가 지원하는 도구를 클라우드 기반 구조에 배치할 수 있다.
- Infrastructure as a Service(IaaS) : 사용자는 프로세싱, 저장소, 네트워크 및 기본적 컴퓨팅 자원을 사용자가 배치할 수 있는 곳에 제공하고 모든 응용 프로그램(OS 포함)을 구동할 수 있다.
- 클라우드 보안 서비스
- Security as a Service(SecaaS) : 서비스 제공자에게 제시하는 보안 서비스 패키지
- SecaaS는 CP(Cloud Provider)가 제공하는 SaaS의 일부이다.
37. 전자상거래 보안 ( 출제빈도 2.4% )
매회 1문제 이상 출제
전자상거래(Electronic Commerce) 개념
- 광의적 개념 : 전자상거래 주체인 정부, 기업, 개인 간의 전자정보를 통하여 이루어지는 모든 경제활동을 포함한 상거래 전반을 의미
- 협의적 개념 : 일반 소비자를 대상으로 인터넷이나 통신망을 이용한 상품관련 정보 제공, 협상, 주문 등을 통해 마케팅, 판매활동을 수행하는 것
- 전자상거래 보안
- 원격의 거래 상태를 신뢰하기 어려우므로 네트워크상에서 상대방 및 자신에 대한 신분 확인 수단이 필요
- 거래 내역의 공증을 보장할 수 있는 신뢰할만한 제3자의 중재가 필요
전자화폐
- 가상공간의 화폐 역할을 수행하는 디지털 데이터로 구성된 화폐
- 은행, 상점, 구매자로 구성되어 있고, 단계는 발행 단계, 지불 단계, 결제 단계로 구성되어 있음.
- 전자화폐의 요구 조건
- 디지털 정보화(Independence) : 다른 물리적인 형태에 의존하여서는 안 되며 완전하게 디지털 정보만으로 실현되어야 한다.
- 재사용 불가능성(안정성, Security) : 복사, 위조 등으로 부정사용을 할 수 없어야 한다.
- 익명성(Privacy, Un-traceability, 추적 불가능성) : 이용자의 구매에 관한 익명성이 보호되는 것
- 오프라인성(Off-line) : 지불 단계를 오프라인으로 처리할 수 있어야 한다.
- 양도성(Transferability) : 타인에게 양도가 가능해야 한다.
- 분할이용 가능성(Divisibility) : 분할해서 사용할 수 있어야 한다.
- 부정 사용자의 익명성 취소(Anonymity Revocation of illegal user) : 익명성 취소는 선택적으로 가능해야 한다.
- 이중사용 방지(Double-spending Un-reusability) : 부정한 사용자가 전자화폐를 불법적으로 복사하여 여러 번 반복적으로 사용하는 행위는 은행에 의해 검출될 수 있어야 한다.
전자지불 시스템
- 구성요소
- 은행 : 전자화폐를 발행하고 결제하는 기관
- 고객 : 전자화폐를 은행으로부터 발급받아 사용하는 주체
- 상점 : 상품을 공급하고 전자화폐를 구매대금으로 받는 자
- 인증기관 : 신분인증, 거래내용 부인방지 등을 위한 기관
- 구성요소 간에 사용되는 프로토콜으로 인출 프로토콜, 지불 프로토콜, 입금 프로토콜이 있다.
- 전자지불 시스템의 보안 요구사항
- 위조불가능(Unforgeability) : 전자화폐는 위조가 불가능해야 한다.
- 부인방지(Non-Repudiation) : 어느 한쪽이 거래사실을 부인하고 있음을 판별할 수 있어야한다.
- 누명면제(Framing-Freeness) : 전자지불 시스템을 구성하는 구성요소 간에 연합하여 특정 구성요소에게 누명을 씌울 수 없어야 한다.
- 무결성(Integrity)/인증(Authentication) : 주고받는 메시지가 전송 도중 변경되지 않았음을 확인할 수 있어야 하고, 송∙수신자가 전자지불 시스템의 합법적인 사용자임을 확인할 수 있어야한다.
- 비밀성(Privacy)/익명성(Anonymity) : 개인 신상 정보를 보호할 수 있어야한다.
SET(Secure Electronic Transaction)
- 신용카드회사인 비자(VISA)와 마스터카드(MasterCard)가 합동으로 개발
- 인터넷상에서 신용카드를 이용해 상품구매 시 안전한 대금결제과정 처리를 위해 RSA 암호화와 인증기술을 이용한다.
- 전자봉투와 이중서명이라는 두 가지 기술을 사용해 사용자의 민감한 개인금융정보를 안전하게 전송하기 위한 프로토콜
- SET 참여주체
- 카드소지자(Cardholder) : 발행자에 의해서 허가된 지불카드를 사용하는 주체
- 발행자(Issuer) : 카드소지자의 계정을 만들고 카드를 발급해주는 금융기관. 신뢰할만한 거래에 대해 지불을 보장
- 가맹점(Merchant) : 대금결제를 받는 대가로 상품과 서비스를 제공하는 기관(상점)
- 지불은행, 매입사(Acquirer) : 상인과 계정을 체결하고 카드결제에 대한 신뢰성과 지불을 담당하는 금융기관
- 지불 게이트웨이(Payment Gateway) : 지불처리 은행 또는 제3자에 의해 운영되는 시스템으로서 상점이 요청한 카드소지자의 지급정보를 이용하여 해당 금융기관에 승인 및 결제를 요청하는 기존의 카드 지불 네트워크로의 통로
- 인증기관(CA, Certification Authority) : SET 참여자에게 공개키 인증서를 발행하는 기관
- 이중서명 프로토콜
- 카드 사용자가 구매정보와 지불정보를 각각 해시한 후, 두 해시값을 합한 뒤 다시 해시하여 이 값을 카드 사용자의 개인키로 암호화(서명)하여 이중서명값을 생성
- 장점
- 기존의 신용카드 기반을 그대로 활용하면서 전자거래의 사기를 방지
- SSL의 단점인 상인에게 지불정보를 노출하는 문제를 해결
- 단점
- 암호 프로토콜이 복잡
- RSA의 동작으로 프로토콜의 속도 저하
- 카드 소지자와 상점에게 S/W를 요구
- 지불 게이트웨이(PG)에 거래를 전자적으로 처리하기 위한 별도의 H/W와 S/W를 요구
전자상거래 응용 보안
- e-business를 위한 ebXML : 인터넷 표준 브라우저만으로 장소에 구애 없이 어디서나 전자상거래를 할 수 있으며 구현 비용이 저렴하고, 개방된 네트워크로 전자거래 교환을 위한 국제 표준을 제공
- ebXML 구성요소
- 비즈니스 프로세스 : 다양한 비즈니스 거래절차에 대한 내용을 표준화된 방법으로 모델링해 시스템이 자동으로 인식, 처리할 수 있도록 하는 표현방법에 대한 정의
- 핵심 컴포넌트, 등록저장소, 거래당사자, 전송/교환 및 패키징으로 구성
- ebXML 사용 효과 : 재활용성, 비즈니스 프로세스 활용
38. 침해사고 대응(디지털 포렌식) (출제빈도 0.8%)
포렌식의 기본 원칙
- 정당성의 원칙 : 모든 증거는 적법한 절차를 거쳐서 획득한 것이어야 한다.
- 재현의 원칙 : 똑같은 환경에서 같은 결과가 나오도록 재현할 수 있어야 한다.
- 신속성의 원칙 : 컴퓨터 내부의 정보는 휘발성인 것이 많기 때문에 신속하게 이루어져야 한다.
- 연계 보관성의 원칙 : 증거는 획득되고 난 뒤 이송/분석/보관/법정 제출이라는 일련의 과정의 명확해야 하며, 이 과정에 대한 추적이 가능해야 한다.
- 무결성의 원칙 : 수집된 정보는 연계 보관성을 만족시키면서 각 단계를 거치는 과정에서 위/변조되어서는 안된다.
포렌식 수행 절차
- 수사 준비 : 사이버 포렌식 전무나 소집, 각종 장비/소프트웨어/하드웨어를 준비하고 점검하는 단계
- 증거물 획득(증거 수집) : 현장에서 디지털 증거를 획득하는 단계. 증거의 무결성이 중요하고 저장매체에 저장된 데이터와 동일 한 사본을 만든다.(디스크 이미징)
- 보관 및 이송 : 획득된 증거는 연계 보관성을 만족시키며 보관 및 이송되어야 하고 안전한 장소에 보관되어야 한다.
- 조사 및 분석 : 최량 증거 원칙(The Best Evidence Rule). 증거 제출 시에는 복사본이 아닌 원본이 제출되어야 한다.
- 디스크 브라우징(Disk Browsing) : 저장 매체 또는 디스크 이미지에 존재하는 파일을 GUI 환경에서 쉽고 편리하게 다룰 수 있도록 가독성 있는 형태로 변환하여 출력하는 기술
- 데이터 뷰(Data Viewing) : 저장 매체나 디스크 이미지에 저장된 방대한 파일을 열어서 확인할 수 없기 때문에 브라우징 과정에서 파일을 인식하여 텍스트, 그림 형식으로 볼 수 있도록 하는 자동 뷰 기능을 제공하는 기술
- 파일 복구(File Recover) : 파일이 손상/삭제되더라도 디스크 내에 관련 정보를 이용하여 파일을 복구하는 기술
증거(Evidence)
- 휘발성 데이터
- 시스템의 메모리(RAM, 캐시 메모리, 비디오 카드 메모리 등)에 임시로 저장된 데이터
- 휘발성이 큰 증거가 사라질 가능성이 크기 때문에, 휘발성이 큰 증거를 먼저 수집해야 한다.
- 디지털 증거 보존 : 휘발성 데이터를 포함한 디지털 증거는 근본적으로 손상되거나 사라지기 쉽다. 따라서 증거가 저장된 매체의 완전한 비트스트림 이미지를 즉시 만드는 것이 좋은 방법이다.
- live response : 살아 있는 시스템에서 휘발성 데이터를 포함한 수집 가능한 모든 정보의 수집과 분석, 처리
39. 각종 어플리케이션 보안위협 및 대응책 (출제빈도 0.4%)
좀비, 봇 (Bot)
- 감염된 시스템의 CPU와 네트워크 자원을 공격자 자신의 용도로 사용하기 위한 시스템을 봇, 좀비라고 한다.
- 봇넷(bot-net) : 감염된 시스템인 봇이 네트워크로 연결된 형태. DDoS 공격이나 스팸 공격 등에 사용될 수 있다.
기타 어플리케이션 보안위협
- 살라미 공격 : 많은 사람들로부터 눈치채지 못할 정도의 적은 금액을 빼내는 컴퓨터 사기수법
- 데이터 디들링(Data Diddling) : 원시정보 자체를 변조 및 위조해 끼워 넣거나 바꿔치기하는 수법으로, 주로 데이터의 접근이 가능한 내부인이 사용하는 해킹수법
- 이블 트윈 공격(Evil Twin Attack) : 소셜 엔지니어링(사용자)를 속이는 공격 기법. SNS 상에서 다른 사람의 이름으로 활동하는 것을 말한다.
Share article