NTP
개념 | Network Time Protocol, 가장 오래된 인터넷 프로토콜, 네트워크를 통해 컴퓨터 간 시간 동기화를 위한 네트워크 프로토콜 |
사용 포트 | 123/UDP port, CVE-2013-5211 |
원리 | NTP 프로토콜에 '몬리스트(monlist)'라는 명령어를 보냄 'monlist'라는 명령으로 요청받으면, 최근에 해당 서버에 접속한 최대 600개의 호스트들에 대한 최신 정보를 응답으로 보내줌 기본 monlist 요청은 8byte로 가능, 수백~수천 배의 응답 |
찾는 방법 | nmap 등의 스캐닝 툴 |
예시 | 프랑스에서 초당 400Gbps 규모의 DDoS 공격 탐지(2014년 2월 13일) NTP 프로토콜을 이용한 증폭 공격 사례 대량의 정보를 요청하는 명령 전송하여 대량의 응답 받음 |
해결 방안 | NTP 서버가 취약한 버전일 경우 NTP-4.2.7p26 이상 버전으로 업그레이드 |
Intro
NTP에 대해 이해하고 서버 구축하기
서버의 설정
1. NTP 서버 설치
2. 파일 설정(/etc/ntp.conf 변경)
3. 방화벽 허용 및 서비스 시작
클라이언트 설정
1. NTP 서버 상태 확인(ntpq -p)
2. NTP 서버 시간 동기화(ntpdate 서버 IP주소 명령)
NTP 서버 설정
NTP server: 192.168.17.134
NTP client: 192.168.17.145
NTP DRDoS Attack 기본 원리
공격자가 자신의 IP를 희생자 IP(client IP)로 바꿔서 NTP에게 시간을 질의
NTP는 클라이언트에게 시간을 알려줌
해커가 클라이언트 IP로 NTP에게 monlist를 요청
클라이언트에게 600개의 정보가 날라감
yum: Yellowdog Updater Modified, rpm 기반의 시스템을 위한 자동 업데이트 및 패키지 설치/삭제 도구
sudo apt-get install yum
1. 서버 및 클라이언트에 NTP 설치
# yum -y install ntp 혹은
apt install -y ntp
2. NTP 서버 설정
root@ubuntu:/etc# vi ntp.conf
# /etc/ntp.conf, configuration for ntpd; see ntp.conf(5) for help
driftfile /var/lib/ntp/ntp.drift
# Leap seconds definition provided by tzdata
leapfile /usr/share/zoneinfo/leap-seconds.list
# Enable this if you want statistics to be logged.
#statsdir /var/log/ntpstats/
statistics loopstats peerstats clockstats
filegen loopstats file loopstats type day enable
filegen peerstats file peerstats type day enable
filegen clockstats file clockstats type day enable
# Specify one or more NTP servers.
# Use servers from the NTP Pool Project. Approved by Ubuntu Technical Board
# on 2011-02-08 (LP: #104525). See
http://www.pool.ntp.org/join.html
for
# more information.
pool 0.ubuntu.pool.ntp.org iburst
pool 1.ubuntu.pool.ntp.org iburst
pool 2.ubuntu.pool.ntp.org iburst
pool 3.ubuntu.pool.ntp.org iburst
# Use Ubuntu's ntp server as a fallback.
pool ntp.ubuntu.com
# Access control configuration; see /usr/share/doc/ntp-doc/html/accopt.html for
# details. The web page <
http://support.ntp.org/bin/view/Support/AccessRestrictions>
# might also be helpful.
#
# Note that "restrict" applies to both servers and clients, so a configuration
# that might be intended to block requests from certain clients could also end
# up blocking replies from your own upstream servers.
# By default, exchange time with everybody, but don't allow configuration.
restrict -4 default kod notrap nomodify nopeer noquery limited
restrict -6 default kod notrap nomodify nopeer noquery limited
# Local users may interrogate the ntp server more closely.
restrict 127.0.0.1
restrict ::1
# Needed for adding pool entries
restrict source notrap nomodify noquery
# Clients from this (example!) subnet have unlimited access, but only if
# cryptographically authenticated.
#restrict 192.168.123.0 mask 255.255.255.0 notrust
# If you want to provide time to your local subnet, change the next line.
# (Again, the address is an example only.)
#broadcast 192.168.123.255
# If you want to listen to time broadcasts on your local subnet, de-comment the
# next lines. Please do this only if you trust everybody on the network!
#disable auth
#broadcastclient
해당 부분 주석 처리하여 설정 변경
# restrict -4 default kod notrap nomodify nopeer noquery limited
# restrict -6 default kod notrap nomodify nopeer noquery limited
192.168.17.0/16 네트워크에서의 NTP 요청 허용
restrict 192.168.17.0 mask 255.255.255.0 nomodify notrap
service ntp restart
Kali에서 ntp-monlist scan 시 다음과 같이 filtered
서버 iptables 기본 설정(NTP port: 123/UDP)
iptables -I INPUT 1 -p udp --dport 123 -j ACCEPT
script output
참고 자료
'Security & Analysis > Analysis' 카테고리의 다른 글
[ASCII Table] 아스키 코드표 (0) | 2023.01.12 |
---|---|
[DHCP] 개념 - 원리 - 기능 - 취약점 - Relay Agent (0) | 2022.11.02 |
[APK] 안드로이드 앱 난독화 해제 및 소스코드 분석 (0) | 2022.09.15 |
[APK 분석] 법무부 사칭 보이스피싱 악성코드 (0) | 2022.08.19 |
[DRDoS] UDP/TCP 기반 DRDoS 공격 기법과 대응 방안 (1) | 2022.07.18 |