Study/Security

[정보보안기사 필기/실기] 애플리케이션 보안

NOredstone 2023. 7. 11. 12:26

1. 응용 계층 주요 프로토콜

(1) DNS(Domain Name System)

1) 개요

- 사람이 이해하기 쉬운 도메인 이름과 IP 주소를 변환하는 데 사용되는 프로토콜

- 53번 포트(UDP): 일반적으로 사용하며 패킷 크기 제한(512Byte 이하)

- 53번 포트(TCP): 더 큰 메시지 전송 가능

- /etc/hosts: DNS 정보를 담고 있는 파일

2) 목적

- 호스트 별칭: 하나 이상의 별명 가질 수 있음

  > Ex) redstone[.]com과 www.redstone[.]com 등

- 로드 밸런싱(부하 분산): 단일 도메인에 대해 여러 IP 주소로 DNS 레코드 구성 가능

  > DNS서버는 IP 번갈아가면서 알려줄 수 있음

3) DNS 캐시

- 상위 DNS 서버에 질의하는 부하를 줄이기 위함

- TTL: DNS 서버 정보를 캐시에 보관하는 기간(통상 2일)

4) Windows DNS 서버 설정 절차

- DNS 서버 역할 설치 → DNS 영역(Zone) 구성 → 해당 Zone에 호스트 레코드 등록

 ※ 호스트 레코드: 호스트이름, IP 주소, TTL 등으로 구성

- Zone 정보 동기화 방법

  > named.conf 파일 열기 → "allow-transfer {보조 DNS 서버 IP};

5) DNS 관련 공격

◆ DNS Cache Poisoning Attack (=DNS Spoofing 또는 DNS 하이재킹)

- DNS 서버 또는 클라이언트의 DNS 캐시 손상을 목표로 하는 악의적인 공격

- 사용자에게 전달되는 DNS 서버의 캐시 정보를 조작하여 의도치않은 사이트로 접속하게 만드는 공격

- 절차

  > 사용자가 사이트에 접속 시도(DNS 질의) → 공격자가 정상 응답보다 빠르게 피해자에게 조작된 DNS 응답을 보냄 → 캐시 DNS 서버에 조작된 주소 정보가 저장됨 → 먼저 수신한 응답 신뢰 특성으로 인해 이후 들어온 정상 응답 폐기 → 사용자는 조작된 주소 사이트로 접속

- 대응방법: ①DNS Spoofing 탐지 ②정기적인 DNS 서버 업데이트 ③DNS 보안 확장(DNSSEC) 구현

◆ DNS Amplication Attack(증폭 공격)

- DDoS 공격의 일종으로 ①DNS 질의는 인증 절차가 없다는 점 ②특정 쿼리 유형을 사용하여 요청량보다 DNS서버로부터의 응답량 트래픽이 많다는 점을 이용

- 절차

  > 공격자가 DNS 서버에 ①DNS 쿼리 Type을 ANY로 설정 ②DNS 쿼리 출발지 IP를 Spoofing 하여 피해자 IP로 설정하여 전송  DNS 서버는 ANY 요청에 따라 A, NS, CNAME 등 모든 정보를 피해자에게 응답

* ANY 또는 TXT 쿼리 타입 이용: 요청 패킷 크기보다 응답 패킷 크기가 크기 때문

- 대응방법: ①Source IP 검증 ②정기적인 DNS 서버 업데이트 ③DNS 보안 확장(DNSSEC) 구현

※ DNSSEC: ①보안 및 무결성 강화 목적 ②공개키 암호화를 사용한 전자서명 ③파밍 방지

 

(2) FTP(File Transfer Protocol)

1) 개요

- 하나의 호스트에서 다른 호스트로 파일 복사하기 위한 인터넷 기반 파일 전송 프로토콜

- SSL/TLS 프로토콜 사용

- /etc/ftpusers: FTP 액세스 제한 사용자 리스트 파일

2) 동작 원리

- FTP 서비스 제공하는 서버와 접속하는 클라이언트 사이에 2개의 연결이 생성됨

- 20번 포트(TCP): 능동 모드에서 파일 데이터 전송을 위해 사용

- 1024번 이후 포트(TCP): 수동 모드에서 데이터 연결을 위해 사용

- 21번 포트(TCP): 명령 및 제어를 위해 사용

- 21번만 허용된 경우 FTP 서비스 연결은 가능하나 데이터 전송 안될 수 있음

◆ Active mode

- 서버가 20, 21번 포트 사용

- 두번째 connection은 서버에서 클라이언트로 접속

- 클라이언트에 방화벽 설치 시 접속 불가

◆ Passive mode

- 서버가 21, 1024번 이후 포트 사용

- 두번째 connection은 클라이언트에서 서버로 접속

- active 및 passive mode 사용 여부는 클라이언트가 결정

3) 주요 명령어

- ABOR: 현재 전송 중인 파일 전송 중단

- CWD: 작업 디렉터리 변경

- MDTM: 파일 수정 시간 보기

- MODE: 전송 모드 변경

- NOOP: 아무 작업 안함

- PASS: 패스워드 전송

- PASV: passive mode로 전환

- PORT: data 포트 열기

- PWD: 작업 디렉터리 표시

- QUIT: 연결 종료

- MKD: 원격 디렉터리 생성

- NLST: 원격 디렉터리 목록 보기

- LIST: 원격지 파일 목록 보기

- RETR: 원격지 파일 가져오기

- DELE: 원격지 파일 삭제

4) FTP 관련 공격

◆ FTP Bounce Attack

- FTP 프로토콜의 구조적 취약점 악용(자료 전송 시 목적지 검사하지 않는다는 점)

- 판단방법: PORT 명령어 사용 여부 확인

- 절차

  > 공격자는 FTP 서버에 대상 IP 주소 및 포트번호 지정하여 PORT 명령 전송 → 공격 대상 네트워크 및 포트 스캔, 데이터 전송 가능

- 대응방법: ①FTP PORT 명령에서 임의 IP 주소 사용 제한 ②정기적인 FTP 서버 업데이트 ③자료 전송할 때 1024번 포트보다 낮은 포트번호로 접속하지 않도록 설정

◆ Anonymous FTP Attack

- FTP 서버의 anonymous 접속 기능을 악용하여 승인되지 않은 접근권한을 얻거나 정보 추출하는 공격

- 판단방법: 사용자 이름이 "anonymous" 또는 "ftp"인 경우

- 대응방법: anonymous FTP 불필요한 경우 비활성화

  > (vsFTP인 경우) /etc/vsftpd.conf 파일 열기 anonymous_enable=NO 설정

◆ TFTP Attack

- TFTP 프로토콜 취약점을 악용

  > 인증 절차가 없기 때문에 TFTP 서버 접속한 경우 디렉터리 및 파일 무단 액세스 가능

- 대응방법: TFTP 불필요한 경우 비활성화

※ TFTP: 네트워크 장치에서 펌웨어 업데이트 또는 구성 파일 전송시 사용(UDP 69번 포트)

4) SFTP

- 보안 파일 전송 프로토콜

- SSH 프로토콜을 사용(22번 포트)하여 안전하게 암호화된 구간에서 FTP 기능 이용

 

(3) SSL/TLS

1) 개요

- 기밀성, 무결성, 인증 기능을 제공하는 웹 브라우저 보안 프로토콜

- TLS 사용하는 애플리케이션 프로토콜은 끝에 S가 붙게됨(HTTP > HTTPS)

- SSL과 TLS은 버전과 암호화 알고리즘을 처리하는 방식이 다름

- SSL/TLS는 전송 계층과 응용 계층 사이에서 작동
  > 전송, 세션, 표현, 응용 계층 모두에 포함

  > FTP, TELNET, HTTP 등 응용 계층 프로토콜의 안전성을 보장

- SSL/TLS는 Record Protocol과 Handshake Protocol로 구성

◆ Handshake Protocol

- 클라이언트와 서버 간 보안 세션 초기 협상 및 설정 담당

◆ Record Protocol

- 기본적인 보안 통신 채널 제공

- 캡슐화 절차

  > 단편화 → 압축 → 무결성 및 인증을 위한 MAC 추가 → 대칭키 암호화(기밀성) → 레코드 헤더 추가

2) 보안 제공 방법

- 사용자가 SSL로 보호되는 웹 사이트 접속하면 브라우저와 웹 사이트 서버는 SSL 핸드쉐이크를 통해 보안 연결 협상  세션 키 합의함으로서 전송되는 데이터 암호화하고 무결성 보장하는 보안 채널 제공

3) Handshake 프로세스 과정

- 초기협상단계

  > ①클라이언트는 지원되는 SSL/TLS 버전, 암호화 알고리즘 목록, 난수 포함한 메시지 서버에게 전송(Client Hello)

  > 서버는 SSL/TLS 버전, 암호화 알고리즘, 난수 선택하여 응답(Server Hello)

  > 서버 인증 필요하거나 클라이언트가 요청하는 경우 서버는 공개키가 포함된 디지털 인증서 전송(Certificate)

  > 필요에 따라 선택한 키 교환에 필요한 추가 매개변수 전달(Server Key Exchange)

- 서버인증단계

  > 클라이언트가 pre-master secret(랜덤값) 생성

  > 서버의 공개키로 pre-master secret 암호화 및 서버로 전송(Client Key Exchange)

  > 서버는 개인키로 pre-master secret 복호화하고 master secret 생성, 그로부터 세션키 생성

  > 클라이언트는 독립적으로 master secret 생성, 그로부터 세션키 생성

- 종료단계

  > 클라이언트와 서버 모두 Change Cipher Spec 메시지 전송하여 협상된 암호화 설정 활성화 나타냄

  > 클라이언트와 서버 모두 무결성 보장 및 보안 세션 설정 확인을 위해 Finished 메시지 전송

4) 기타

- 제로 라운드 트립 타임(0-RTT): TLS 1.3에 추가된 기능으로 세션키를 합의하는 핸드 셰이크 과정을 간소화하여 암호화 시간을 줄여주는 기능

- DTLS(Datagram Transport Layer Security): UDP 기반으로 통신을 수행하는 경우 SSL/TLS와 유사한 보안 기능을 제공하는 프로토콜

5) SSL/TLS 관련 공격

◆ POODLE Attack

- TLS 연결을 SSL 3.0으로 낮춰 SSL 3.0 프로토콜 취약점을 악용하여 세션, 쿠키 등 정보 해독하는 공격

  > SSL 3.0이 CBC 모드로 블록 암호 처리하는 단계에서 취약함

- 절차

  > 공격자는 클라이언트와 서버 사이에서 SSL/TLS 트래픽 가로채기 TLS 대신 SSL 3.0 사용하도록 통신 조작 악의적인 JavaScript 코드를 피해자 브라우저에 삽입 공격자는 세션, 쿠키 등 암호화된 데이터 해독 가능

- 대응방법: SSL 3.0 비활성화 

HeartBleed 취약점(CVE-2014-0160)

- 통신 구간 암호화를 위해 사용하는 OpenSSL 암호화 라이브러리의 하트비트(Heartbeat)라는 확장 모듈에서 클라이언트 요청 메시지를 처리할 때 데이터 길이 검증을 수행하지 않아 시스템 메모리에 저장된 64KB 크기의 데이터를 외부에서 아무런 제한 없이 탈취할 수 있는 취약점

- 판단방법: OpenSSL 버전 1.01f 이하인 경우

- 대응방법: 버전 업데이트

 

(4) 원격 접속 관련 프로토콜

1) TELNET

- 최초의 원격 로그인 프로토콜 중 하나

- 암호를 비롯한 모든 데이터를 암호화하지 않은 평문으로 전송하기에 해킹에 취약  SSH로 대체됨

2) Rlogin(Remote login)

- TELNET과 같이 원격 로그인을 지원하는 프로토콜

- 주로 Unix 계열에서 사용하고자 설계되었으나 해킹에 취약  SSH로 대체됨

- 접속방법: ①원격지 .rhosts 파일 또는 /etc/hosts.equiv 파일 존재 ②호스트 등록

3) SSH(Secure Shell)

- 안전한 시스템 관리 및 파일 전송에 널리 사용되는 안전하고 암호화(공개키)된 원격 접속 프로토콜

- 기능: ①기밀성(암호화) ②무결성(MAC) ③인증 ④압축 ⑤포트 포워딩(안전한 터널링)

- 비교적 구현하기 쉽고 저렴

 

(5) 기타 프로토콜

1) HTTP(Hypertext Transfer Protocol)

- 웹으로부터 웹페이지를 가져오기 위해 어떻게 클라이언트-서버 프로그램을 작성할지를 정의하는데 사용

- HTTP 클라이언트는 요청하고, HTTP 서버는 응답

- 서버는 80번 포트를 사용하고 클라이언트는 임시번호 포트 사용

- 메소드 유형

  > GET: 서버에서 데이터 검색하여 다운로드하도록 요청

  > POST: 서버가 전송된 정보를 받아들이고 서버에서 동작하도록 요청

  > PUT: 서버의 기존 리소스 업데이트 요청

  > DELETE: 서버에서 지정된 리소스 삭제 요청

  > OPTIONS: 주어진 자원이나 서버에 사용할 수 있는 통신 옵션 검색 요청

- Client Error

  > 400: Bad Request(문법 오류)

  > 401: Unauthorized(인증 부족)

  > 403: Forbidden(접근 차단)

  > 404: Not Found(존재하지 않음)

  > 405: Method not allowed(해당 URL에 지원 불가능)

  > 406: Not Acceptable(요청한 형식 거부)

2) Smaba

- Unix/Linux에서 Windows 클라이언트를 위한 파일 및 프린터 서비스 제공하는 오픈소스 소프트웨어

3) SCP

- SSH를 통해 작동하는 안전한 파일 전송 프로토콜

- SSH의 암호화 및 인증 기능 활용

4) SNMP(Simple Network Management Protocol)

- 네트워크에 있는 장비들을 관리하기 위한 프로토콜

- 구성요소

  > Manager: 162/UDP 사용, Manager가 Agent에게 필요한 정보를 요청하는 역할

  > Agent: 161/UDP 사용, Agent가 Manager에게 주기적으로 보고(설치된 시스템의 정보나 네트워크 정보)

  > MIB(관리 정보 베이스): 관리 장치에 대한 조직화된 정보 저장하는 데이터베이스

  > SMI(관리 정보 구조): SNMP 내에서 사용되는 관리 정보의 구조와 구성을 정의하는 규칙

  > Trap: 에이전트가 매니저에게 보고하는 과정(비동기 알림)

- 라우터에서 snmp 프로토콜 비활성화 명령어

  > Router# configure terminal

  > Router(config)# no snmp-server

5) RADIUS(Remote Authentication Dial-In User Service)

- AAA(Authentication, Authorization, Accounting) 기능 중점 프로토콜(분산 보안 시스템)

- 중앙 집중식 인증, 권한 부여 및 회계 관리를 위해 사용되는 프로토콜

- 사용자가 유선 또는 원격 인증 요청 → ISP의 RADIUS 서버로 전송됨 → RADIUS서버에서 사용자 인증 및 인가 제공

 

2. 웹 서버 보안

(1) 쿠키 보안

1) 개요

- 쿠키란 웹 서버에서 생성되어 클라이언트(브라우저의 쿠키 저장소)에 저장되는 작은 텍스트 파일

- 형식: [이름] [값] [Domain] [Path] [Expires] [크기] [HttpOnly 여부] [Secure 여부] 등 

2) 옵션

- Secure: ①true이면 HTTPS 프로토콜을 이용하는 경우에만 쿠키 전송 가능 전송 중 평문 쿠키 노출을 방지 가능

- HttpOnly: true이면 자바스크립트에서 쿠키 접근이 제한됨 허용하면 XSS 공격에 취약하게 되므로 주의

- Ex) Set-Cookie: ID=redstone; Path=/; secure

  > 클라이언트가 HTTPS 통신일 경우에만 해당 쿠키 전송함

 

(2) 이메일 보안

1) 개요

- 무단 액세스, 멀웨어, 피싱 등으로부터 이메일 통신을 보호하기 위한 기술

- 이메일 헤더 정보

  > Received: 이메일 배달 경로

  > From: 보내는 사람 주소

  > To: 받는 사람 주소

  > Reply-to: 답장 받을 주소

  > Date: 이메일 발송 날짜

  > Subject: 이메일 제목

  > Message-ID: 이메일에 지정된 식별번호

  > MIME-Version: MIME 버전

  > X-mailer: 보내는 사람이 사용한 메일 프로그램

  > Content-Transfer-Encoding: 메일 내용 인코딩 방법

  > Content-Type: 이메일 MIME 형태 및 문자 설정

2) 프로토콜

◆ SMTP(Simple Mail Transfer Protocol)

- 이메일 발송시 사용되는 기본 프로토콜

- TCP 25번 포트
- 서버와 서버간의 통신
◆ POP3(Post Office Protocol 3)

- 클라이언트가 메일서버에서 이메일 검색하는데 사용하는 이메일 검색 프로토콜

- TCP 110번 포트
- 서버와 클라이언트간의 통신
IMAP(Internet Message Access Protocol)

- 이메일 검색 프로토콜

- TCP 143번 포트
- POP3와 같은 역할이나 좀 더 진보된 프로토콜로 메일 서버에 있던 메일을 삭제하지 않음

3) 인증 기술

◆ SPF(Sender Policy Framework)

- 메일서버 정보를 사전에 DNS에 공개 등록함으로써 수신자로 하여금 이메일에 표시된 발송자 정보가 실제 메일서버의 정보와 일치하는지를 확인할 수 있도록 하는 인증 기술(이메일 Spoofing 방지)

- 절차

  > 메일서버 소유자가 DNS 설정에서 SPF 레코드 구성 이메일 발송 수신 시 이메일 서버의 SPF 레코드에 대해 DNS 쿼리하여 SPF 확인 이메일 발송 도메인의 DNS에 txt레코드로 등록된 IP주소와 실제 메일의 송신 IP를 비교하여 메일 도메인의 정당성을 검증 일치하는 경우 정상 처리하고, 일치하지 않을 경우 차단

◆ DKIM(DomainKeys Identified Mail)

- 송신자 IP 주소가 위변조되지 않았음을 증명하기 위한 인증 기술
- 절차

  > 송신자는 이메일 메시지마다 전자서명(개인키)을 하며 DNS 레코드에 전자서명 키(공개키) 등록 수신자는 DNS 레코드에서 검증용 키를 꺼내서 검증 중간자 공격등을 통해서 메시지 위변조가 일어나지 않았는지, 송신자의 이메일 주소가 위변조 되지 않았는지 확인 가능

◆ DMARC(Domain-based Message Authentication, Reporting and Conformance)

- SPF와 DKIM을 혼합한 기법으로 추가 이메일 인증 및 보고 기능을 제공

4) 암호화 기술

◆ PEM(Privacy Enhanced Mail)

- 기밀성, 무결성, 인증, 부인방지 기능 제공

- 구현이 어려워서 많이 사용되지 않음

◆ PGP(Pretty Good Pricacy)

- 현재 많이 사용되는 기술로 하이브리드 암호 및 전자서명을 통한 메시지 기밀성, 무결성, 인증, 송신 부인방지 기능 제공

  > 수신 부인방지 기능은 없음

  > 메시지 암호화: IDEA, 3DES, Diffie-Hellman, RSA 등 사용

  > 전자서명: DSS/SHA, RSA/SHA

  > 압축: ZIP

- End-to-End 암호화 제공: 메시지는 송신자 기기에서 암호화되고 수신자 기기에서 복호화됨

- 필 짐머만 독자 개발

- 구현이 용이하고 무료로 배포되어 많이 사용됨

◆ S/MIME(Secure/Multipurpose Internet Mail Extensions)

- 공개키 암호화 및 전자서명을 통한 기밀성 제공

- X.509 디지털 인증서 사용하여 송신자 인증 및 이메일 무결성 확인 가능

- 메시지 형식

  > 동봉된 데이터(Enveloped data)

  > 서명된 데이터(Signed data)

  > 명문-서명 데이터(Clear-signed data)

  > 서명되고 동봉된 데이터(Singned and enveloped data)

5) 이메일 관련 공격

◆ Active Content Attack

- HTML 또는 이메일 클라이언트의 스크립팅 기능을 이용하여 피해자 컴퓨터에서 정보 유출 또는 악성코드 실행

 

(3) Apache 웹 서버 보안

1) 보안 관련 파일

- httpd.conf: Apache 서버 구성파일, 로그파일 경로 확인 가능

robots.txt: 크롤링해도 되는 부분과 제외해야 하는 부분을 표시하는 지침

- access.log: 웹 서버가 클라이언트 요청에 대해 반환한 응답에 대한 정보 기록

- error.log: 웹 서버에서 발생한 오류와 경고에 대한 정보 기록

2) 보안 관련 지시문

- httpd.conf에서 설정

◆ ServerSignature

- HTTP 응답 헤더 및 오류 페이지에서 서버 정보를 제어하는데 사용

- On: 기본설정, HTTP 응답 헤더 및 오류 페이지에 서버 정보를 표시

- Off: 서버 정보 표시하지 않음

- EMail: 서버 정보와 관리자 이메일 표시

◆ Indexes

- 디렉토리 리스팅을 방지하기 위한 설정

- Options Indexes: 지정된 디렉토리에 대한 디렉토리 리스팅 활성화

- Options -Indexes: 지정된 디렉토리에 대한 디렉토리 리스팅 비활성화, 접근 시 403 Forbidden

◆ LimitRequestBody

- 디렉토리에 업로드 가능한 최대 파일크기 제한

 

(4) WAF(Web Application Firewall)

1) 개요

- 다양한 유형의 공격으로부터 응용 프로그램 보호하기 위하여 HTTP/HTTPS 트래픽 분석하는 방화벽

2) 기능

- 사용자 요청 검사: 접근제어, DoS 제어, 업로드 파일 및 요청 형식 검사, SQL Injection 및 XSS 등 차단

- 콘텐츠 보호: 고객 정보 유출 차단, 웹 변조 방지, 코드 노출 진단

- Spoofing 방지: URL·서버 Spoofing 방지

 

3. 웹 취약점

(1) SQL Injection

1) 개요

DB와 연결되어 있는 애플리케이션의 입력값을 조작하여 의도하지 않은 결과를 반환하도록 하는 공격 기법

2) 종류

◆ Error based SQL Injection

- SQL의 잘못된 문법이나 자료형 불일치 등에 의해 DB가 알려주는 오류 메시지에 의존하여 수행되는 공격 기법

◆ UNION based SQL Injection

- DB 오류 메시지를 표시하지 않을 경우 사용

- 기존 정상쿼리와 악성쿼리를 합집합으로 출력하여 정보 획득하는 기법

◆ Blind based SQL Injection

- HTTP 응답이나 DB 오류 메시지를 표시하지 않는 경우 사용

- 요청이 참인지 거짓인지만 확인할 수 있을 때 사용

- 입력값 바꿔가면서 계속 시도하여야 함

3) 대응방법

- 사용자 입력값에 특수문자 포함 여부 검증

- SQL 서버의 에러 메시지 미표시

- DB 사용자 권한 제한

- 외부 인터프리터 사용 제한

prepared statement

  > 최초에 한번 쿼리를 분석해 최적화 수행 후 메모리에 저장해두고, 다음 요청부터는 저장된 결과를 재사용하여 쿼리를 수행하는 방식

  > 사용자가 입력한 값이 SQL 쿼리가 아닌 매개 변수로 처리되기 때문에 SQL 인젝션 공격을 막을 수 있음

  > 성능 측면 효율이 높고 SQL 인젝션 방지 가능

 

(2) XSS(Cross-Site Scripting)

1) 개요

- 클라이언트 사이드 취약점 중 하나

공격자가 웹 리소스에 악성 스크립트를 삽입해 이용자의 웹 브라우저에서 해당 스크립트를 실행하는 취약점

2) 종류

Stored XSS: 악성 스크립트가 서버 내에 존재, 이용자가 저장된 악성 스크립트를 요청할 때 발생

Reflected XSS: 악성 스크립트가 이용자 요청 내에 존재, 이용자가 악성 스크립트가 포함된 요청을 보낸 후 응답을 출력할 때 발생

DOM-based XSS: XSS에 사용되는 악성 스크립트가 URL Fragment에 삽입되는 XSS

Universal XSS: 클라이언트의 브라우저 혹은 브라우저의 플러그인에서 발생하는 취약점으로 SOP 정책을 우회하는 XSS

3) 영향

- 공격자는 해당 취약점을 통해 특정 계정의 세션 정보를 탈취하고 해당 계정으로 임의 기능 수행 가능

4) 예시

<script>
// "hello" 문자열 alert 실행.
alert("hello");
// 현재 페이지의 쿠키를 인자로 가진 alert 실행.
alert(document.cookie);
</script>

5) 대응방법

- 사용자 입력 문자열에서 HTML 코드로 인식될 수 있는 특수문자(<,>,&,/,(,))를 일반문자로 치환하여 이스케이프 처리

 

(3) CSRF(Cross-Site Request Forgery)

1) 개요

이용자가 자신의 의지와는 무관하게 공격자가 의도한 행위를 특정 웹사이트에 요청하게 만드는 공격

- CSRF 공격에 성공하기 위해서는 공격자가 작성한 악성 스크립트를 이용자가 실행해야 함. 이를 위하여 메일 보내거나 게시글 작성하는 방법이 있음

2) 방법

- CSRF 공격 스크립트는 HTML 또는 Javascript를 통해 작성됨

- 이미지 불러오는 img 태그 사용하거나 웹 페이지에 입력된 양식 전송하는 form 태그 사용하는 방법이 있음

- 주의) 서버에서 이용자 식별을 위하여 쿠키를 사용하고 있어야 CSRF 취약점으로 공격 가능

3) XSS와의 비교

- 공통점: 클라이언트를 대상으로 하는 공격 이용자가 악성 스크립트가 포함된 페이지에 접속하도록 유도해야 함 ③불특정 다수를 대상으로 함

- 차이점:

  > XSS: ①인증 정보인 세션 및 쿠키 탈취를 목적으로 하는 공격 ②악성 스크립트가 클라이언트에서 실행됨

  > CSRF: 이용자가 임의 페이지에 HTTP 요청을 보내는 것을 목적으로 하는 공격 악성 스크립트를 서버에 요청함

4) 예시

#script 태그가 필터링되어도 img 태그 및 src를 활용하여 공격 가능
<img src="/admin/target_page?userid=admin" />
<img src="/change_password?id=admin&pw=12345" />

 

(4) 기타

1) Pass the Hash Attack

- password에 대한 hash값을 사용하는 환경에서, hash값을 획득한 후 해당 값을 사용하여 인증을 통과하는 공격

- 즉, 원격 서버나 서비스에 접속할 때 사용자의 실제 password를 모르는 상태에서 hash값을 사용하여 접속 인증을 받는 공격 기법

- 윈도우의 LM(LAN Manager) 또는 LTLM 인증 프로토콜을 사용하는 서버나 서비스의 경우 Pass the Hash 공격이 가능함

- 주로 mimikatz 툴을 이용함

2) Credential Stuffing

- 무차별 대입 공격의 일종으로 공격자가 미리 확보해 놓은 로그인 자격 증명을 다른 계정에 무작위로 대입해 사용자 계정을 탈취하는 공격 방식

3) Domain Shadowing

- 적법한 절차로 도메인을 소유하고 있는 도메인 관리자의 개인 정보를 탈취하여, 도메인 소유자 몰래 많은 서브도메인을 등록시켜 놓고 사용하는 기법

4) 세션 하이재킹

- 공격 대상이 이미 시스템에 접속되어 세션이 연결되어 있는 상태를 가로채는 공격 기법

5) 서브도메인 하이재킹

- 클라우드 서비스 이용을 위해 서브 도메인에 CNAME 설정하여 사용 중 서비스 이용을 중지 했지만 DNS의 CNAME 설정은 삭제하지 않아 공격자가 피싱 사이트로 악용하는 공격

- 대응방법: 미사용 도메인의 sub DNS 삭제

 

4. DB 보안

1) 명령어

◆ GRANT

- GRANT 권한 ON 테이블 TO 사용자;

- WITH GRANT OPTION; 

  > 권한을 다른 사용자에게 부여할 수 있는 권한까지 부여

◆ REVOKE

- REVOKE 권한 ON 테이블 FROM 사용자;

- CASCADE CONSTRAINTS;

  > WITH GRANT OPTION으로 부여된 사용자들의 권한까지 회수

2) 키 유형

Super Key: 유일성을 만족하는 키를 지칭

Candidate Key: 유일성과 최소성을 만족하는 키를 지칭

Primary Key: 여러 후보 키 중 하나를 선정하여 사용하는 것 지칭

- Alternate Key: 기본 키 외 나머지 키를 지칭

- Foreign Key: 어느 한 테이블 속성의 집합이 다른 테이블에서 기본키로 이용되는 키를 지칭

3) 보안 위협

◆ 집합(Aggregation)

- 개별적인 여러 소스로부터 민감하지 않은 정보를 수집 및 조합하여 민감한 정보를 생성

- 낮은 보안등급의 정보조각을 조합하여 높은 등급의 정보를 알아내는 행위

- Ex) 특정 정보에 접근 권한은 없으나 이런 정보의 구성요소에 접근권한 있을 때 발생 가능

◆ 추론(Inference)

- 기존 데이터, 규칙, 지식을 기반으로 새로운 정보를 도출하거나 논리적 추론을 하는 행위

- 보안등급이 없는 정보에 접근하여 기밀정보 유추

- 통제하기 어려운 위협

- 대응방법: 

  > 다중 인스턴스화(Polyinstantiation): 각 사용자별 액세스 권한 분리

  > 파티션(Partition): 데이터 분할하여 특정 사용자 또는 그룹으로 액세스 제한

  > Noise: 난독화 또는 마스킹 등을 통해 특정 세부 정보 추론 어렵게 만듬

4) 보안 제어

흐름제어: 보다 낮은 보호수준의 객체로 이동하는 것을 검사하여 접근가능한 객체간 정보흐름을 조정하는 것

추론제어: 간접적인 데이터 노출로부터 데이터 보호하기 위한 것

접근제어: 시스템 객체에 대한 모든 직접적 접근을 규칙에 따라 제어하는 것

5) 접근통제

◆ VBAC(View Based Access Control, 뷰 기반 접근통제)

- 하나 이상의 기본 테이블로부터 유도되어 만들어지는 가상 테이블

- 뷰는 데이터의 논리적 독립성 및 접근통제를 제공함 

◆ DB 접근통제 솔루션

- 장점: ①다중 인스턴스에 대해 통제 가능한 독립된 서버 ②DB 단위 접근통제 ③DB 접근에 대한 통제와 로그를 관리

- 단점: ①독립된 서버이기에 이중화 구성 필요 ②우회 접근 가능한 경우 취약해짐

6) 보안 정책 고려사항

- 최고경영자에 의한 승인

- 모든 임직원에게 적절한 방법으로 배포되고, 자유롭게 최신 버전의 DB 보안정책에 접근 가능

- 모든 임직원이 그 목적과 내용을 이해하기 위하여 교육 및 홍보

- 정기 또는 비정기적으로 검토하고 갱신

- 보안 활동 관리할 수 있는 전담 조직 운영

 

5. 전자상거래 보안

1) 전자화폐 시스템 구성요소

인출 프로토콜: ①사용자와 금융기관 간 프로토콜 ②은행이 사용자에게 전자화폐를 발급해주는 절차를 명세한 프로토콜

지불 프로토콜: ①사용자와 상점서버 간 프로토콜 ②사용자가 구매 대금으로 자신의 전자화폐를 상품에 지불하는 과정을 명세한 프로토콜

예치 프로토콜: 상점서버와 금융기관 간 프로토콜 ②상점이 사용자로부터 받은 전자화폐를 은행이 결재해주는 프로토콜

2) SET(Secure Electronic Transaction)

- 목적:

  > 고객, 판매자, 지불 게이트웨이 간 보안통신을 위한 프레임워크를 제공하여 지불 데이터의 기밀성과 무결성 보장

  > 사용자가 지불정보(신용카드번호 등)는 상점에게 숨기고 주문정보(구매물품 등)는 은행에게 숨기는 기능을 제공하여 사용자 프라이버시 보호

- 보안기술: ①전자봉투(하이브리드 암호화) 이중서명

- 장점: ①전자거래 사기 방지 ②기존의 신용카드 기반 그대로 활용 ③SSL의 단점(상인에게 지불정보 노출) 해결

- 단점: ①암호 프로토콜 복잡 ②RSA 암호화로 인한 속도 저하 ③카드 소지자에게 전자지갑 소프트웨어 요구됨 ④상점에 소프트웨어 요구됨 ⑤지불 게이트웨이에 하드웨어와 소프트웨어 요구됨

※ 전자봉투: 대칭키를 사용하여 문서 내용 암호화한 후 해당 키를 수신자의 공개키로 암호화한 것

※ 이중서명: 주문정보와 지불정보를 분리시켜 서명하여 판매자의 금융기관에 제공되는 정보 최소화하기 위해 사용

3) XML 기반 보안기술

- XKMS: XML 기반 시스템의 키관리 및 암호화 작업 기능

SMAL: 웹 기반 속성, 인증, 권한 부여 기능

XACML: XML 기반 접근제어 기능

 

6. 기타

- 디지털 포렌식 5원칙 [정재신연무]

  > 정당성 원칙: 증거가 적법절차에 의해 수집되어야 함

  > 재현 원칙: 같은 조건과 상황에서 항상 같은 결과가 나와야 함

  > 신속성 원칙: 전 과정이 신속하게 진행되어야 함(휘발성 데이터 등)

  > 연계보관성 원칙: 증거 획득부터 법정 제출까지 각 단계별 담당자 및 절차가 명확히 해야 함

     (증거획득 > 이송 > 분석 > 보관 > 법정제출)

  > 무결성 원칙: 수집된 증거가 위변조가 없어야 함

- 침해사고 대응절차

  > 사고 전 준비 과정 → 사고 탐지 → 초기 대응 → 대응전략 수립 → 사고 조사 → 보고서 작성 → 해결

Slack Space(슬랙 공간): 물리적으로 파일에 할당된 공간이지만 논리적으로 사용할 수 없는 공간을 의미

Salami Attack(살라미 공격): 많은 사람들로부터 눈치채지 못할 정도의 적은 금액을 빼내는 컴퓨터 사기 수법

- memcached 서버:

  > 데이터베이스 로드를 줄여 웹 애플리케이션 속도를 높이는데 사용되는 오픈소스 분산 메모리 캐싱 시스템

  > 웹 애플리케이션의 임시 데이터 저장용 메모리로 이해하기

  > 최근 Github의 memcached 서버가 DDoS 공격을 받음

웹 프록시(Web Proxy): 웹 서버를 대신하여 자신이 마치 웹 서버인 것처럼 동작을 대행해주며, 브라우저로부터 연결 요청에 대하여 대신 응답함(paros, burp suite 등)

DDE(Dynamic Data Exchange): MS Office 프로그램에 내장된 정상기능으로 프로그램 간 데이터를 공유하기 위해 사용, 해당 기능을 활성화 시 악용될 수 있음