DongDD's IT

[정보보안기사 실기] 어플리케이션 보안 - 기초 본문

자격증/정보보안기사

[정보보안기사 실기] 어플리케이션 보안 - 기초

DongDD 2018. 5. 7. 15:21

[정보보안기사 실기] 어플리케이션 보안 - 기초



DNS(Domain Name Service)



구조/동작방식

1. DNS Server

1) Recursive/Cache 네임서버

- 관리하는 도메인없이 사용자에게 질의를 받으면 자신의 캐시에 저장된 정보 또는 반복 질의(Iterative Query)를 통해 결과를 사용자에게 응답해주는 서버


2) Authoritative 네임서버

- 관리하는 도메인이 있어 해당 도메인에 대한 질의에만 응답해주는 서버

- Zone : 관리하는 도메인 영역

- Zone File : 관리하는 도메인 정보를 가진 파일


2. Query 

1) Recursive Query(재귀적 질의)

- 사용자가 Recursive 서버에 질의 할때 사용

- 대상 도메인의 리소스 레코드 정보를 조회해서 응답하기를 요청하는 질의

- Recursive 서버는 자신의 cache data 조회 후 있으면 사용자에게 보내고 없으면 root~target 서버에 iterative query를 통해 응답을 받은 후 사용자에게 전달


2) Iterative Query(반복적 질의)

- Recursive 서버가 각 Authoritative 서버로 질의할 때 사용


3. 동작방식

- 사용자가 Recursive 서버에 접속하고자 하는 도메인/URL에 대한 IP 주소를 요청하는 DNS Query를 보냄

-> 사용자는 자신의 cache를 확인 후 없으면 query를 보냄

-> windows : Local DNS Cache 확인 -> hosts.ics 확인 -> hosts 파일 확인 -> 모두 없으면 query

-> Linux : hosts 파일 확인 -> 없으면 query(/etc/resolv.conf : 시스템 기본 네임서버 설정 정보, /etc/host.conf : 도메인 질의 순서 정의 파일, /etc/hosts : 도메인과 IP 주소 매핑정보를 담고 있는 파일)

- 질의를 받은 Recursive 서버는 도메인 정보가 자신의 cache에 저장되있으면 사용자에게 응답하고 없으면 root 서버부터 마지막 target 서버까지 iterative query를 통해 원하는 정보를 획득

- 도메인에 대한 IP 주소를 획득한 Recursive 서버는 사용자에게 DNS Response를 보냄

- 사용자는 받은 IP 주소를 자신의 cache에 저장한 후 대상 사이트에 접속


4. 패킷

- 요청 시 응답을 식별하기 위해 2bytes의 랜덤값 Transaction ID를 설정해서 보냄

1) 응답 데이터가 512 바이트 미만일 경우

- UDP 53번 포트 사용

2) 응답 데이터가 512 바이트보다 클 경우

- TCP 53번 포트 사용

- 요청을 받은 서버는 응답 데이터가 512바이트보다 크면 TCP로 재요청하라는 의미의 Truncated flag를 설정해 사용자에게 보냄

- Truncated 메시지를 받은 사용자는 TCP 53번 포트를 이용해 재요청


DNS Cache 명령어


1. ipconfig /displaydns

- Local DNS cache 정보 조회 명령어

- TTL : 해당 캐시 정보를 유지하는 시간

- DNS 스푸핑 공격을 당할 시 조작된 정보를 확인하기 위해 사용


2. ipconfig /flushdns

- Local DNS cache 정보 삭제 명령어


DNS Lookup 명령어


1. forward DNS lookup

- 도메인 명을 통해 IP 주소를 알아내는 질의


2. reverse DNS lookup

- IP 주소를 통해 도메인 명을 알아내는 질의


3. 질의 유형

- A : 도메인에 대한 IP 주소 질의

- ANY : 도메인에 대한 모든 레코드 질의(응답이 커서 DNS DRDoS 공격에 악용)

- MX : 도메인의 메일 서버 질의

- NS : 도메인의 네임 서버 질의

- SOA : Zone의 기본 속성 정보 질의

- TXT : 도메인에 대한 텍스트 정보 질의(SPF 정보가 있음 : 발송자 메일 서버, 응답이 커서 DNS DRDoS 공격에 악용)

- PTR : IP에 대한 도메인 정보 질의

- AXFR: Zone 버전에 상관없이 무조건 Zone 전송 요청

-> dig @마스터네임서버 zone_name axfr

- IXFR : Zone 버전을 비교해 상위 버전일 경우 Zone 전송 요청

-> dig @마스터네임서버 zone_name ixfr=version


4. nslookup

- 명령 실행 후 대화형 모드로 질의

- nslookup [도메인] [네임서버]

-> >server dns_address : 질의할 네임서버 지정

-> >set type=유형 : 질의 유형 지정


5. dig

- nslookup 명령어 대체 목적, Linux 계열에 기본적으로 설치되어있음

1) 사용법

dig [@네임서버] 도메인 [질의 유형] [쿼리 옵션]

- @네임서버 : 네임 서버 지정(default : 기본 네임 서버)

- 질의 유형 : 질의 유형 지정(default : A)

- 질의 옵션

-> +norecurse : authoritative 서버에 반복적 질의를 수행해 정상 응답여부 확인

-> +tcp : tcp 53 port 허용 여부 확인

-> +trace : 계층적 위임 설정 상태 점검, 최상위 루트 도메인부터 최종 질의대상 도메인까지 질의 수행


6. whois

- whois 서버를 통해 해당 도메인 등록정보, 네트워크 할당 정보를 조회하는 명령어

- 해당 도메인이 다른 사람에 의해 사용중인지 확인하기 위해서 많이 사용

- whois domain_name : 도메인의 등록정보, 소유정보, 네임서버 정보 등을 조회

- whois IP_address : ISP 정보, 네트워크 할당 정보 등을 조회


DNS Spoofing


- 클라이언트에 전달되는 DNS Response나 DNS 서버의 Cache를 조작해 의도치 않은 주소로 접속하게 만드는 공격

- DNS Query, Response에 사용되는 UDP의 비연결성을 이용한 공격

-> DNS Query, Response의 식별 정보만 일치하면 먼저 수신한 응답을 신뢰하고 이후 오는 응답은 모두 폐기


1. Sniffing 기반 DNS Spoofing

- 희생자가 Query를 보내면 이를 스니핑하다가 정상 응답보다 빠르게 조작된 응답을 보내 조작된 주소로 접속하게 하는 기법

- 이후 도착하는 응답은 모두 폐기

1) 대응방법

- 스니핑 탐지, 차단

- 중요한 사이트의 IP주소는 우선순위가 높은 hosts 파일에 등록해서 관리


2. DNS Cache Poisoning

- DNS 서버의 캐시정보를 조작하는 공격

- DNS 서버의 캐시정보가 TTL 동안 유지되고 그 시간에 해당 서버에 접근하는 사용자들이 조작된 DNS 응답을 수신해 보안 사고 발생

1) 공격 방식

- 공격자는 공격대상 DNS서버에 조작할 도메인 질의를 다수 전송

- 공격자는 공격 대상 DNS 서버가 반복적 질의를 수행하는 동안 다수의 조작된 DNS 응답을 보냄(Birthday Attack)

-> 반복적 질의 사용 시 사용하는 Transaction ID와 출발지 Port를 모르기 때문에 다수의 응답을 생성해 보냄

-> 스니핑을 통해 알 수 있다면 Transation ID와 port를 조작해 응답

ref) Birthday Attack

- 예상하는 확률보다 실제 확률이 뜻밖에 높다는 이론을 기반한 공격

- 23명의 사람이 있을 때 생일이 같은 사람이 있을 확률이 50% 이상이라는 생일의 역설에 기반을 둔 공격


2) 대응방법

- 네입 서버의 소프트웨어를 최신 버전으로 유지

- 도메인 관리용 DNS서버(Authoritative Server)는 재귀적 질의를 막고 제한된 사용자가 사용하는 Recursive Server라면 해당 사용자로 제한해서 사용

- DNSSEC 사용

-> IETF에서 만든 DNS 취약 문제점 개선 국제 표준 기술

-> 기존의 DNS에 공개키 암호화 방식을 추가해 보안성 향상


DNS 서버 보안


1. Master/Slave DNS 서버

- Master-Slave는 동일한 기능을 수행하고 부하분산을 통해 안정성을 높임

- Zone Transfer : 마스터에 있는 존 데이터를 슬레이브가 동기화하는 작업

- Resolver : 네임서버로 질의를 수행하여 그 결과를 응용 프로그램에 반환해주는 모듈/라이브러리


2. Zone File

- 네임서버 설정 파일 named.conf에 존 설정

zone "domain_name" IN{

type master;

file "리소스 레코드 정보를 가진 zone file";

};

- reverse look up을 위한 reverse domain 설정(ex)192.165.1.0 )

zone "0.1.165.192.in-addr.arp" IN{

type master;

file "reverse zone file";

};


1) zone file record 형식

host_name [TTL] class record-type data

- host_name : 호스트명

- TTL : TTL 값(default : 첫 행의 $TTL)

- class : 인터넷 클래스(IN)

- record_type : 질의 유형(+ AAAA : ipv6)

- data


3. 재귀적 질의 제한

- 공격자의 과도한 재귀적 질의는 DoS 형태의 공격에 악용될 수 있고 DNS Cache Poisoning 공격에 노출될 수 있음

1) /etc/named.conf 설정(allow-recursion 설정)

- allow-recursion{none;}; or recursion no; : 재귀적 질의 허용 안함

- allow-recursion{ip_address;}; : 해당 주소 허용

- acl internal{ip_address;}; -> allow-recursion{internal;}; : 미리 설정한 acl 목록을 허용


4. 존 전송 제한

- 존 전송의 제한이 없으면 DoS 공격으로 악용될 수 있음(시스템 자원 소모, 도메인 서버정보 노출)

- Master만 사용 시 존 전송 차단, Master-Slave 사용 시 허용된 Slave만 존 전송 가능하게 설정

1) /etc/named.conf 설정(allow-transfer 설정)

- allow-transfer{none;}; : 존 전송 허용 안함

- allow-transfer{ip_address;}; : 해당 주소 허용

-> dig의 axfr/ixfr 유형을 통해 zone transfer 허용 여부 확인(허용 : zone data 출력, 차단 : 전송 실패 메시지)



FTP(File Transfer Protocol)


- TCP/IP 기반의 파일 전송 프로토콜

- FTP 서비스는 아이디/패스워드가 암호화되지 않고 전송되어 스니핑에 취약함

- 암호화된 통신 지원 : SFTP, FTPS

-> SFTP : SSH 기반의 FTP(TCP 22)

-> FTPS(FTP over SSL/TLS) : SSL/TLS 기반의 FTP(TCP 990)


동작모드


1. FTP Active mode

- FTP의 default 설정

- 클라이언트에서 서버의 21번 포트에 접속해 제어 채널 생성

- 데이터 : 서버->클라이언트 접속해 전송

- 클라이언트 측 방화벽으로 data 전송이 안될 수 있음

1) 동작방식

- 클라이언트는 서버의 21번 포트로 연결해 제어 채널 생성

- 사용자가 목록을 보기위해 "ls"를 입력하면 클라이언트는 사용할 포트(1024 이상)를 서버에 알림

- 서버는 클라이언트가 알려준 포트로 연결해 데이터 채널 생성

- 데이터 채널을 이용해 데이터 전송


2. FTP Passive mode

- 클라이언트에서 서버의 21번 포트로 접속해 제어 채널 생성

- 클라이언트에서 서버로 접속해 데이터 채널 생성 후 데이터 전송

1) 동작방식

- 클라이언트는 서버의 21번 포트로 연결해 제어 채널 생성

- 사용자가 목록을 보기위해 "ls"를 입력하면 클라이언트는 수동모드로 연결하기 위해 PASV 명령 전송

- PASV를 받은 서버는 사용할 임시 포트(1024 이상)를 선택해 클라이언트에게 알려줌

- 클라이언트는 해당 포트에 연결해 데이터 채널 생성

- 데이터 채널을 통해 데이터 전송


FTP 보안 취약점


1. FTP Bounce attack

- 데이터 채널을 생성할 때 목적지를 확인하지 않는 FTP의 구조적 취약점을 이용하는 공격

- active 모드에서 클라이언트가 서버에 파일을 받을 IP와 Port를 PORT 명령으로 알려주는데 이 목적지를 검증하지 않음

1) 공격 방식

- 주로 익명 FTP 서버를 이용

- PORT 명령을 조작해 공격 대상 네트워크를 스캔하고 FTP 서버가 공격자가 원하는 곳으로 데이터를 전송하게함


2. TFTP(Trivial FTP) attack

- TFTP : 읽기 전용 메모리나 디스크가 없는 곳에 설치될 수 있는 단순한 FTP(UDP 69)

-> 보통 디스크가 없는 곳에 부팅이미지를 전달하기 위해 사용

- 인증 과정없이 특정 디렉토리로 접근이 가능함

1) 대응 방법

- TFTP가 불필요하면 제거

-> /etc/inetd.conf : tftp 주석 처리

-> xinetd : TFTP 설정 파일의 disable 속성을 true로 변경

- TFTP를 사용하는 경우 secure mode 사용

-> chroot를 이용해 해당 디렉토리를 최상위 디렉토리로 지정해 상위 디렉토리 접근이 불가능하게 함

-> /etc/inetd.conf : 인자에 "-s /dir" 추가

-> xinetd : server args에 "-s /dir" 추가


3. Anonymous FTP attack

- Anonymous FTP : 익명 계정(ID : anonymous, PW : X)으로 FTP 접속이 가능한 서버

- 익명 계정을 허용하면 인증 받지 않은 사용자도 서버 파일에 접근 가능

- 쓰기권한이 있다면 악성 코드를 업로드할 수 있게 됨

1) 대응 방법

- vsftp.conf 파일에서 anonymous_enable을 NO로 설정


FTP 접근 제어 설정


1. ftpusers 파일을 통한 접근 제어

- 접속을 제한할 계정 정보를 담고있는 파일

- root 등 중요 계정의 ftp 접속을 차단

- FTP 데몬 별로 ftpusers 파일 연동 필요


2. TCPWrapper를 통한 접근제어

- hosts.allow, hosts.deny 파일로 접근 제어

- FTP 데몬 별로 TCPWrapper 연동 필요(tcp_wrappers=YES)



SNMP(Simple Network Management Protocol)


-TCP/IP 기반 네트워크에서 여러 정보들과 모니터링, 설정을 할 수 있게 해주는 서비스를 제공하는 프로토콜(따로 프로그램 필요)

- MRTG : SNMP 기반의 장비 모니터링 프로그램(네트워크 트래픽)

- Application Layer Protocol, UDP 사용


동작방식


1. 관리 시스템(Manager), 관리 대행자(Agent)

1) Manager

- Agent에 필요한 정보를 요청

- UDP 162 Port 사용

2) Agent

- 시스템 정보, 네트워크 정보를 수집해 MIB 형태로 보관하고 Manager에 전달

- UDP 161 Port 사용


2. 통신에 필요한 것들

1) SNMP 버전

- Manger와 Agent의 SNMP 버전이 같아야함

2) Community String

- Manager와 Agent의 Community String이 같아야함

3) PDU(Protocol Data Unit) : 메시지 유형

- Get Request : 원하는 객체의 특정 정보 요청(Manager -> Agent)

- Get Next Request : 다음 정보 요청(Manager -> Agent)

- Set Request : 특정한 값 설정(Manager -> Agent)

- Get Response : 해당 변수 값 전송(Agent -> Manager)

- Trap(notify) : 특정 정보를 비동기적으로 알림 - Callback(Agent -> Manager)

- Get Bulk Request(SNMPv2) : 요청할 객체의 범위를 지정해 요청(Manager -> Agent)

- InformRequest(SNMPv2) : 관리 시스템 간 정보 전달(Manager -> Manager)


3. 데이터 수집 방식

1) Polling

- Manager가 정보 요청 시 Agent가 알려주는 방식

2) Event Reporting

- Agent가 이벤트 발생 시 Manager에게 알림(Trap)


MIB/SMI


1. MIB(Management Information Base)

- 관리되어야할 객체를 모아놓은 집합체(데이터베이스)

- 객체별로 트리 형식의 구조


2. SMI(Structure Management Information)

- MIB를 정의하기 위한 구조

- 데이터와 데이터 속성을 설명하기 위한 언어인 ASN.1 사용

- 객체

-> name : 식별자(OID)

-> syntax : 데이터 유형

-> encoding : 메시지 전송 시 비트 변환 규칙


SNMP 접근 제한 설정


1. 버전별 특징

1) SNMPv1

- 보안 기능이 없고 Community string만 일치하면 모든 정보를 얻을 수 있음

2) SNMPv2

- 전송하는 정보에 암호화(DES), 해시(MD5) 추가

- 송신 인증 기능은 없음

3) SNMPv3

- 데이터 인증, 암호화, 재사용 방지, 세분화된 접근 통제 등 보안서비스 제공

- 안전한 통신망 관리를 위한 기반 기술 제공


2. Community String

- Manager와 Agent가 데이터 교환하기 전 인증을 위해 사용되는 일종의 패스워드(default : public or private)

-> 예측이 어렵고 의미 없는 문자열을 사용해야함


3. 암호화 

- SNMPv1, SNMPv2c(SNMPv2에서 보안 기능을 제거한 버전)에서는 암호화되지 않은 평문으로 전송되기 때문에 sniffing에 주의해야함


SNMPv3 보안서비스


- USM과 VACM 제공

-> USM(사용자 기반 보안모델) : 무결성, 기밀성, 재사용 공격에 대응하는 기능 제공

-> VACM(뷰 기반 접근 제어 모델) : 인가된 사용자의 MIB 접근 통제 기능을 제공

- Authoritative 엔진 : SNMP 명령을 처리하거나 통지를 발생시키는 SNMP 엔진


1. 보안매개변수

1) Authoritative 엔진 ID/부트횟수/시각

- 재전송 공격 방지

- 메시지 유효 시간을 계산해 재전송 공격 방지

2) 사용자, 인증 매개변수

- 위장 공격, 메시지 위/변조 공격 방지

- 메시지 인증을 위해 HMAC 사용

3) 암호 매개변수

- sniffing, 정보노출 공격 방지

- 메시지 암호화 지원


NMS(Network Management System)


- 네트워크 자원 모니터링과 제어를 위한 도구

- 네트워크 요소의 각 지점들이 가진 정보를 중앙 제어센터에 제공하는 구조(Manager-Agent 구조)


1. 네트워크 모니터링 방식

1) Polling

- Manager가 필요한 정보 요청 시 Agent가 MIB에서 정보를 추출해 응답

2) Event Reporting

- Agent가 자신의 상태를 주기적으로 Manager에 알림

- 예상치 못한 사건 발생 시, Polling보다 빠르게 파악할 수 있음



DHCP(Dynamic Host Configuration Protocol)


- 동적으로 클라이언트의 IP 주소를 할당하는 프로토콜

- Server : UDP 67 port, Client : UDP 68 port


명령어


- ipconfig /release : 할당받은 IP 주소 해제

- ipconfig /renew : 새로운 IP 주소를 할당받음


IP 할당 절차


1. DHCP Discover Message

- DHCP Server를 찾기 위해 자신의 MAC 주소를 담아 브로드캐스트로 전송


2. DHCP Offer Message

- DHCP Server가 Client에 IP 주소를 제공


3. DHCP Request Message

- 해당 IP 주소를 사용한다고 Server에 요청하는 메시지(Offer를 받은 후 전송)


4. DHCP Ack Message

- Server는 해당 MAC과 IP 주소를 테이블에 저장하고 할당된 주소 정보를 다시 Client에 전송


DHCP Stravation attack


- DHCP Server에서 할당할 수 있는 IP 주소를 모두 소진하게 해서 IP 할당이 불가능하게 만드는 공격

- 서로 다른 MAC을 가진 discover 메시지를 전송하고 offer 메시지를 받은 후 request 메시지를 보내고 실제로는 할당하지 않음



Comments