본문 바로가기
(필기) 정보보안기사&산업기사

애플리케이션 보안 1-2

by IT매니절 2024. 5. 7.

★★★★★

FTP
데이터전송 : 20번 포트
제어채널 : 21번 포트

능동모드active
- 클라이언트가 서버의 21번 포트에 접속한다.
- 제어채널이 연결된 후, 서버가 20번 포트로 클라이언트( PORT 명령으로 알려준 임의의 포트)에 접속한다.
- 클라이언트는 임의의 포트를 사용 (1024번 이상 )

( PORT 명령 : Ftp Bounce 공격에 악용될 수 있다 )

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

수동모드passive
- 클라이언트가 서버의 21번 포트에 접속한다.
- 제어채널이 연결된 후, 클라이언트가 서버의 임의의 포트(알려준 1024번 이상의 임의의 포트)에 접속한다.

- 클라이언트를 위해 1024번 이상의 모든 포트를 오픈해야 하는 보안취약점이 있음

 

FTP의 기본모드는 능동 모드

 

FTP 서비스
- FTP : 파일 전송, 인증(O), 암호화X
- 익명 FTP : 자료 공유, 익명 가능, 이메일주소 (로그용도)
- TFTP : 라우터 기기 초기화, 인증(X)

 

 

이메일 보안

 

순서

사용자(MUA) -> SMTP(MTA)를 통해 메일서버에 전송 -> 메일서버는 필요시 네임서버에 질의 -> 인터넷 -> 도착지 메일서버 -> POP3 또는 IMAP4를 통해 사용자(MUA)에게 전달됨

MUA : Mail User Agent 사용자
MTA : Transfer Agent 변환, 전송, SMTP
MRA 또는 MAA : 메일에 접근, 액세스, POP3, IMAP4

 

SMTP : 암호화 지원X, PORT 25번 사용

 

★★★★★

PEM, PGP, S/MIME 비교

PEM PGP (신뢰망) S/MIME
중앙화된 키 인증
인터넷 표준
구현 어려움
높은 보안성
이론 중심
분산화된 키 인증
응용 프로그램
구현 용이
일반 용도의 보안
실세계 사용 중심
Phil Zimmemann
MME 기반
(멀티미디어 수용)
다양한 상용 툴킷
X.509 인증서 지원

=> 셋 다 암호화를 지원한다.

 

 

 

★★★★★

PGP 암호화 함수

가) 인증만 하는 경우
- 전송: 송신자의 개인키로 서명하고, 서명에 메시지를 붙인다
수신: 송신자의 공개키로 서명을 복호화하여 인증한다(해시 비교)
(해시를 이용한 부가형 전자서명)

나) 기밀성만 제공하는 경우
- 전송: 수신자의 공개키로 세션키 암호화. 세션키로 메시지 암호화.
수신: 세션키를 수신자의 개인키로 복호화. 복호화된 세션키로 메시지 복호화.
(하이브리드 암호 시스템: 대칭키 세션키, 비대칭키 암/복호화)

다) 인증+기밀성 제공하는 경우
- 전송: 부가형 전자서명 -> 압축 -> 세션키로 메시지 암호화 -> 수신자 공개키로 세션키 암호화
수신: 세션키를 수신자 개인키로 복호화, 세션키로 메시지 복호화, 압축해제, 전자서명 인증


+ 서명->압축->암호화 순서

 

★★★

PGP가 제공하는 기능

- 기밀성 : 송신자가 생성한 일회용 세션키로 메시지 암호화(CAST, IDEA, 3DES), 수신자 공개키로 RSA를 사용해 세션키 암호화

( 3DES, IDEA, CAST, RSA )

- 인증(전자 서명) : 해시 알고리즘으로 메시지 다이제스트 생성. 이를 송신자 개인키로 암호화(DSS, RSA). 수신자는 송신자 공개키로 복호화함.

( RSA, DSS, SHA-1, MD5, RIPEMD-160 )

- 압축 : ZIP 

- 호환성 : Redix-64변환으로 ASCLL 부호로 변환

- 분할 및 재결합 : 최대 메시지 사이즈 제한으로 인한 메시지 분할, 재결합

 

+ 전자서명 : 무결성, 인증, 송신자 부인방지


★★★
S/MIME 서비스

- 디지털 서명 : SHA-256 메시지 해시 코드 생성, 송신자 개인키로 RSA로 암호화
- 메시지 암호화 : 일회용 세션키를 이용해 CBC 모드의 AES-128로 메시지 암호화. 세션키를 수신자의 공개키로 RSA 암호화.
- 압축 : 메시지를 압축
- 이메일 호환성 : Base64(Radix-64)로 변환 ASCII 스트링으로 만든다

 

 

스팸메일(발신자 위조, 업무방해)의 기술적 대응방안
가) 메일 서버 수신 차단
1) 콘텐츠 필터링 : 특정 단어 및 문장 패턴을 검색하여 차단
2) 송신자 필터링 : 블랙리스트 관리
3) 네트워크 레벨 필터링 : 패킷 필터링
4) 발송량 기준 차단 : 특정 용량 이상 메일 수신시
5) 시간대별 차단 : 업무 시간에는 업무용 송신 메일 외의 외부메일 차단

나) 메일 서버 보안
1) 릴레이 스팸 방지 : 액세스 DB를 통한 송신자별 허용 거부, 릴레이 허용 여부 설정. 릴레이 영역 지정 기능을 활용하여 허용되는 릴레이 도메인 리스트 설정
2) Anti-SPAN 솔루션 도입 : 별도의 스팸 차단 전용 솔루션.

다) 메일 클라이언트 보안
1) 콘텐츠 필터링 : 패턴 검색 차단
2) 송신자 필터링 : 블랙리스트

+ SPF : 발신지 서버를 DNS 서버에 미리 등록. 등록된 서버에서 발신되었는지 확인.

 

★★★★★

Layer별 웹 보안 적용 현황
가) 네트워크(3) 레벨
- IP, IPSec (투명성 제공)
- HTTP, FTP, SMTP, TCP

나) 전송(4) 레벨
- SSL or TLS (전송~응용)
- 응용 프로그램의 투명성 제공

다) 응용(7) 레벨
- Kerberos, PGP, PEM, SET, S/MIME

+ 데이터링크(2) 계층 : PPTP, L2F, L2TP

 

 

스크립트 언어의 분류와 특징
서버 스크립트 언어 (SSS)
- PHP, ASP, JSP 등
- 서버에서 프로그램 처리
- 취약점이 서버에 영향
- 서버에 부하를 줌

클라이언트 스크립트 언어 (CSS)
- 자바스크립트 등
- 사용자 시스템에서 프로그램 처리
- 취약점이 개인 시스템에 영향
- 서버에 부하X

 

 

HTTP 요청 메시지 형식

요청라인 : Method URL Version [개행CRLF]
요청헤더 : 헤더 이름 : 값 [개행CRLF]
 반복 ... 
블랭크 라인 : [개행CRLF]
바디

=> 블랭크 라인이 헤더의 끝을 의미 ( [개행CRLF] 이 두 번 나오는 것 )

 

응답 메시지 형식

상태라인 : Version Status code Phrase

요청헤더 : 헤더 이름 : 값 [개행CRLF]
 반복 ... 
블랭크 라인 : [개행CRLF]
바디

 

* Slow DDoS 공격
- Slow HTTP Header Dos : Slowrois. 블랭크 라인을 생략하여 헤더의 끝을 인지하지 못하게 함
- Slow HTTP POST Dos : RUDY. 분할전송. Content-Length를 아주 크게 만들고, 데이터를 잘게 쪼개어 천천히 전송.
- Slow HTTP Read Dos : Window size를 작게 조작하여 처리를 아주 천천히 하도록 함

 

 

★★★

TLS 프로토콜 계층

핸드셰이크
프로토콜
(암호화 기법 등 협상)
암호명세 변경
프로토콜
경고
프로토콜
(진행중 비정상상황 알림)
HTTP 하트비트 프로토콜
(주기적 모니터링)
레코드 프로토콜
(운반)
TCP
IP

 

★★★★★

SSL/TLS 보안 서비스

- 기밀성 서비스 : DES, RC4같은 대칭키 암호화 알고리즘 사용. 비밀키는 핸드셰이크 프로토콜을 통해 생성됨

- 클라이언트와 서버 상호 인증 : RSA같은 비대칭키 암호화 알고리즘, DSS같은 전자서명 알고리즘과 X.509 인증서 알고리즘이 사용된다.

- 메시지 무결성 서비스 : 안전한 해시 알고리즘을 사용해 메시지 인증코드MAC를 만들어 메시지에 포함시킨다

 

 

SSL/TLS 프로토콜

- 핸드셰이크 프로토콜 : 보안 매개변수 제공, 암호 집합 설정

- 레코드 프로토콜 : 응용 계층(http)으로부터 오는 데이터와 TLS의 상위 프로토콜의 메시지를 전송.

- 암호명세 변경ChangeCipherSpec 프로토콜 : 암호학적 비밀(협상 내용)을 신속하게 전송

- 경고Alert 프로토콜 : 비정상 조건 알림

- 하트비트Heartbeat 프로토콜 : 가용성 모니터링

 

★★★★★

핸드셰이크 프로토콜 동작

단계 1) 초기 협상
- 보안기능 수집. 프로토콜 버전, 세션 ID, 암호조합, 압축 방법, 초기 랜덤값 등.

단계 2) 서버 인증
- 필요시 서버는 인증서, 키 교환을 보내고 인증서를 요청. hello 단계 종료알림

단계 3) 클라이언트 인증
- (요청이 있을경우) 클라이언트는 인증서와 키 교환(프리 마스터 시크릿)을 전송

단계 4) 종료
- 암호 조합을 교환하고 핸드셰이크 프로토콜 종료

 

+)

사전 마스터 비밀
+ 클라이언트 랜덤값
+ 서버 랜덤값
=> 마스터 비밀

마스터 비밀
+ 클라이언트 랜덤값
+ 서버 랜덤값
=> 키 블럭 (또는 키 마테리얼)

키 블럭을 암호화키, 초기화 벡터, 인증키 등을 산출할 때 사용

 

 

SSL 핸드셰이크 프로토콜 메시지 유형

client_hello : 버전, 랜덤(32bit의 시간값), 세션id, 암호도구, 압축방법

server_hello : 버전, 랜덤(32bit의 시간값), 세션id, 암호도구, 압축방법

 

+ 랜덤값은 재전송 공격 방어를 위함

+ 완전협상(세션id null)과 단축협상(세션id 있음)

 

 

★★★★★

SQL Injection 공격

- 기본 개념 : 애플리케이션 입력값을 조작해 DBMS가 의도치않은 결과를 반환하도록 하는 공격기법. 입력값에 대해 적정성을 검사하지 않았기 때문에 발생

- 공격 종류

1) Form SQL Injection : HTML Form 기반 인증을 담당하는 애플리케이션에 취약점이 있는 경우. 쿼리문의 조건을 임의로 조작하여 인증을 우회

2) Uion SQL Injection : union select 쿼리를 이용해, 한 쿼리의 결과를 다른 쿼리의 결과에 합쳐서 공격하는 기법

3) Error-Based SQL Injection : 에러값을 기반으로 한 단계씩 데이터베이스 정보 획득

4) Blind SQL Injection : 에러가 아닌 쿼리 결과의 참과 거짓(ex 데이터의 입력값 유형 등)을 통해 데이터베이스를 비정상적으로 공격

 

- 보안 대책 : 사용자의 입력에 특수 문자가 포함되어 있는지 검증, SQL 에러 메시지 미표시, 일반 사용자 권한으로 시스템 저장 프로시저에 접근 불허 (최소권한 실행)

 

 

★★★★★

사이트 간 스크립팅CSS(XSS), Cross Site Scripting

- 기본 개념 : 공격자에 의해 작성된 스크립트가 다른 사용자에게 전달(조회)되어 해당 사용자의 세션을 탈취하거나 사이트를 변조하거나 악성 사이트로 유도할 수 있다

- 공격 종류

1) Stored XSS : 글로 작성할 수 있는 게시판 등의 영역에 스크립트 코드를 입력하는 기법

2) Reflected XSS : 스크립트가 포함된 공격 URL을 다른 웹사이트나 이메일을 통해 보내서 클릭하도록 유도함

3) DOM based XSS : 피해자의 브라우저가 HTML 페이지를 구문 분석할 때마다 공격 스크립트가 DOM 생성 일부로 실행됨. 페이지에 포함된 브라우저측 코드가 DOM 환경에서 악성코드로 실행된다.

 

- 보안 대책 : 입력 문자열의 특수문자등을 문자 변환 함수나 메소드 등을 사용해 스크립트로 동작하지 않도록 치환하거나, 화이트리스트 방식 적용

 

★★★★★

사이트 간 요청 위조CSRF, Cross Site Request Forgery

- 기본 개념 : 사용자가 인지하지 못한 상황에서, 의도와 무관하게 공격자가 의도한 행위(수정/삭제/등록)를 요청하게 하는 공격
XSS는 악성 스크립트가 클라이언트에서 실행되고
CSRF는 악성 스크립트를 서버에 요청한다는 차이점이 있음

- 보안 대책 : 폼 작성시 GET 보다는 POST방식을 사용하고, 입력값 처리시 토큰을 사용해 공격자의 URL 사용이 동작하지 않도록 처리.
중요 페이지에는 세션 검증 및 재인증 유도

 

 

기존 방화벽(패킷 필터링) vs 웹방화벽
웹 방화벽 : 유해 HTTP 차단, 응용계층에서 동작(URL 필터링)
기존 방화벽 : 유해 PORT 차단, 네트워크 레이어(3~4계층)

 

 

소프트웨어 보안약점 유형

1) 입력데이터 검증 및 표현 : 프로그램 입력값 검증 누락 또는 부적절한 검증 ex) SQL 삽입, 경로 조작 및 자원 삽입, 운영체제 명령어 삽입, 크로스사이트 요청 위조 등.

2) 보안 기능 : 인증, 접근제어, 기밀성 등을 부적절하게 구현 ex) 하드코드된 비밀번호

3) 시간 및 상태 : 동시 수행을 지원하는 병렬 시스템 등에서 시간 및 상태를 부적절하게 관리 ex) 검사시점과 사용시점, 종료되지 않은 반복문 재귀함수

4) 에러처리 : 에러를 처리하지 않거나 불충분하게 처리. 에러 정보에 중요정보가 포함될 때. ex) 오류 메시지를 통한 정보노출

5) 코드오류 : 타입변환 오류, 자원의 부적절한 반환 등의 코딩오류 ex) Null point 역참조 등

6) 캡슐화 : 중요 데이터 또는 기능성을 불충분하게 캡슐화하면 데이터노출 발생 ex) 잘못된 세션에 의한 데이터 노출

7) API 오용 : 악의적으로 API를 사용하거나 보안에 취약한 API 사용 ex) 취약한 API 사용 등

 

 

호스트 설정 프로토콜 종류

- RARP : MAC 주소를 IP 주소로 매핑할 때 사용. (ARP는 IP주소를 MAC 주소로 매핑)

- BOOTP : 4가지(IP주소, 서브넷마스크, 라우터IP주소, 네임서버주소) 정보 제공. RARP 프로토콜에 관한 모든 제약 제거. 정적인 설정 프로토콜.

- DHCP : 4가지(IP주소, 서브넷마스크, 라우터IP주소, 네임서버주소) 정보 제공. 클라이언트/서버 프로토콜. BOOTP 프로토콜의 승계자. BOOTP와 역방향 호환성을 가짐.

 

DHCP의 장단점
장점 : 네트워크 설계 변경이 자유로움
실제로 사용하는 경우에만 IP가 할당되어 IP 절약 가능

단점 : 부팅시 브로드캐스트 방식으로 트래픽을 전송하여 네트워크 성능저하 발생
호스트 전원만 켜도 IP 할당됨
전원을 꺼도 임대기간까지는 다른 단말에 IP가 할당되지 못해 낭비됨

'(필기) 정보보안기사&산업기사' 카테고리의 다른 글

정보보호 관리 및 법규 1,2  (0) 2024.05.09
애플리케이션 보안3  (0) 2024.05.08
네트워크 보안 5, 6  (0) 2024.05.02
네트워크 보안 3, 4  (0) 2024.05.01
네트워크 보안 1, 2  (0) 2024.05.01