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 프로그램에 내장된 정상기능으로 프로그램 간 데이터를 공유하기 위해 사용, 해당 기능을 활성화 시 악용될 수 있음