의미없는 블로그
Part 02. 네트워크 - ARP, IP, ICMP, TCP, UDP, 포트스캐닝 본문
스위치 재밍
스위치허브의 MAC Address Table 을 오버플로우
왜냐면 꽉 차면 더미허브처럼 브로드캐스팅 한다
Source MAC 을 계속 변경하여 보낸다 오버플로우 시키기 위해
스위치 Fail Safe(Open) 정책
- 장애시 모든 기능을 허용
- 가용성을 중시
- 위에 브로드캐스팅 처럼
스위치 Fail Secure(Close) 정책
- 장애시 모든 기능을 차단
- 보안성을 중시
- 모든 트래픽을 차단하고 동작 X
ARP 스푸핑
공격자의 MAC 으로 변조한 ARP Reply 를 사용자에게 지속적으로 전송
사용자의 ARP Cache Table 에 공격자 MAC 박힌다
특정 패킷이 공격자에게 가게 된다 공격자는 스니핑 가능
IP Forward 기능 사용해서 정상 통신이 되도록 한다 (호스트가 라우터처럼 동작해서 IP 로 목적지까지 전송)
ARP 리다이렉트
ARP 스푸핑이랑 비슷한데 공격대상이 네트워크
공격자의 MAC 으로 변조한 ARP Reply 를 대상 네트워크에 지속적으로 전송
모든 호스트의 ARP Cache Table 에 라우터/게이트웨어 정보가 공격자 MAC 으로 바뀐다
라우터로 나갈 때 공격자로 나가게 된다 공격자는 스니핑 가능
IP Forward 사용해서 정상 통신
ARP 공격 대응방안
- ARP 캐시를 Static 으로 설정하는 것, ARP Reply 에 의해 갱신되지 않는다
- ARPWatch 같은 네트워크 모니터링 프로그램 사용, IP-MAC 매핑 변경을 실시간 감지
ARP 는 IP 에 해당하는 MAC 알려줌
RARP 는 MAC 에 해당하는 IP 알려줌
GARP 는 Sender IP 와 Target IP 가 동일한 ARP 요청
arp -a : 캐시 내용 보기
arp -d : 캐시 내용 모두 삭제
arp -d 192.168.35.140 : 지정된 캐시 내용 삭제
arp -s 192.168.35.140 aa-bb-cc-dd-ee-ff : 캐시 Static 으로 설정 (시스템 종료시 까지 유지)
IP 단편화
MTU 라고 데이터 최대크기를 뜻하는 용어가 있다
이더넷의 경우 MTU 가 1500 바이트 라고 한다
즉 1500 바이트씩 데이터 끊어서 전송한다는 것
IP 프로토콜은
[헤더 + 데이터] 로 구성되어 있다
헤더는 기본이 20bytes 이고 추가로 40bytes 해서 60bytes 까지 가능
원본이 다음과 같다면
IP-H | Payload
(20bytes) (3008bytes = 1480+1480+48)
이렇게 단편화 되는데
IP-H | Payload
(20bytes) (1480bytes)
IP-H | Payload
(20bytes) (1480bytes)
IP-H | Payload
(20bytes) (48bytes)
각각 Flag 와 Offset 을 살펴보면
id = 22666 / Flag = 1 / Offset = 0 (0~1479)
id = 22666 / Flag = 1 / Offset = 1480 (1480~2959)
id = 22666 / Flag = 0 / Offset = 2960 (2960~3007)
id 는 원본 하나당 고정
Flag 1 은 다음 단편화 있을 때
Flag 0 은 다음 단편화 없을 때
Offset 은 0 부터라서 3008bytes 이면 3007 까지
tcpdump 에 IP 단편화 출력 형식
(frag 22666:1480@0+)
(frag 22666:1480@1480+)
(frag 22666:48@2960)
IP 스푸핑
트러스트 관계란 아이디/패스워드 기반이 아니라 신뢰관계에 있는 IP를 등록해서 해당 IP를 허용해 주는것
트러스트 관계의 서버와 클라이언트가 있을 때
클라이언트를 DoS 등으로 연결 불가하게 만들고
공격자가 클라이언트 IP로 위조하여 서버에 접근
/etc/hosts.equiv 에 트러스트 설정
+ username : 모든 호스트에서 해당 사용자로 접근을 허용
host_name -username : 해당 호스트에서 해당 사용자 접근 차단
+ + : 모든 호스트에서 모든 계정을 신뢰 (매우 취약)
rlogin 서비스 활성화
/etc/xinetd.d/rlogin 파일에서 disable = no 설정 : rlogin 활성화
service xinetd restart : xinetd 데몬 재시작
rlogin 192.168.35.140 : 원격에서 아이디/패스워드 없이 연결 가능
공격자는 신뢰관계의 클라이언트를 사용 불능 상태로 만들고
해당 클라이언트 IP 로 위조하여 서버에 접속한다
대응방안
- 트러스트 설정 사용 X
- 써야할 경우에는 MAC 주소를 Static 으로 구성하여 IP 위조만으로 접속 못하게
ICMP 리다이렉트
Redirection(Type 5) 메시지는 새로운 경로를 이전 호스트에게 알려주는 메시지
이 메시지를 사용하여 패킷 경로를 악의적으로 재설정 한다
타겟의 라우팅 테이블에 gateway 주소를 ICMP Redirection 메시지를 통해 공격자로 조작한다
그 다음에 스니핑
ARP 리다이렉트는 타겟의 ARP Cache Table 을 조작해서 라우터로 나갈때 공격자로 가게
ICMP 리다이렉트는 타겟의 라우팅 테이블을 조작해서 라우터로 나갈때 공격자로 가게
대응방안
ICMP Redirect 옵션을 해제한다, ICMP Redirect 메시지에 의해 라우팅 테이블이 변경되지 않음
sysctl -w net.ipv4.conf.all.accept_redirects=0
3way Handshake
-> SYN
<- SYN+ACK
-> ACK
Seq.Num 은 동일 방향에서 이전 패킷에 + 1 씩 증가
Ack.Num 은 방향 상관없이 이전 패킷의 Seq.Num 에 + 1 씩 증가
4way Handshake
-> FIN+ACK
<- ACK
<- FIN+ACK
-> ACK
TCP 세션 하이재킹
공격자는 정상 사용자의 IP 로 위장한 TCP 패킷에
정상 사용자의 TCP 식별 정보(Port, Seq Num, Ack Num) 을 넣어서 서버로 보낸다
서버는 위조된 패킷에 대해 정상 응답 ACK 를 보낸다
해당 응답은 공격자 뿐 아니라 정상 사용자에게도 보내지므로
사용자는 Ack Num 이 증가된 응답을 받게 된다
잘못된 Ack Num 을 받은 정상 사용자는 이를 교정하기 위한 Ack 를 보낸다
서버는 이를 교정하기 위해 다시 또 Ack 를 보낸다
이와 같은 과정이 대량 반복 - ACK STORM
공격자는 정상 사용자에게 RST 메시지 전달하여 연결을 강제로 종료하고
자신이 서버와 세션을 유지한다
ping 명령어
ICMP Echo Request(Type 8), ICMP Echo Reply(Type 0) 이용
ifconfig 명령어
ifconfig eth1 promisc 하면 eth1 인터페이스가 promiscuous mode 로 전환된다
불법적인 스니핑이 가능하다
ifconfig eht1 -promisc 로 해당 모드 삭제
이 설정 관련 로그 /var/log/messages 에 남는다
포트 스캔
nmap -ST : TCP Connect Scan (Open)
nmap -sS : TCP SYN Scan (Half Open)
nmap -sF : TCP FIN Scan
nmap -sN : TCP Null Scan
nmap -sX : TCP Xmas Scan
nmap -sU : UDP Scan
TCP Connect Scan (-sT)
open
-> SYN
<- SYN+ACK
-> ACK (3way 연결 맺어짐)
-> RST+ACK
close
-> SYN
<- RST+ACK
TCP SYN Scan (-sS)
open
-> SYN
<- SYN+ACK
-> RST
close
-> SYN
<- RST+ACK
TCP FIN Scan (-sF), NULL Scan (-sN), Xmas Scan (-sX)
open
-> FIN / None / FIN, PSH, URG
<- 응답없음
close
-> FIN / None / FIN, PSH, URG
<- RST+ACK
UDP Scan (-sU)
open
-> UDP
<- UDP 응답 or 응답없음
close
-> UDP
<- ICMP Unreachable
Decoy Scan (-D)
다양한 IP로 스캐너 주소를 위조하여 누가 스캔하는지 알아채기 어렵도록 함
nmap -sS test.com -D 10.10.10.1,10.10.10.2,10.10.10.3
TCP ACK 스캔
- 포트의 오픈 여부 판단이 아닌 보안장비의 필터링 수행 여부를 판별하기 위한 목적
- 방화벽에서 필터링 되면 응답이 없거나 ICMP 메시지 받음
- 필터링 되고 있지 않으면 RST 응답을 받음
- 무응답이거나 ICMP 메시지 오면 필터링 되고 있는것
- RST 오면 필터링 안되고 있는것
출력 옵션
nmap -sS test.com -oX test.xml : xml 로 출력
nmap -sS test.com -oN test.out : 일반파일로 출력
nmap -O test.com : 해당 호스트 운영체제 정보 출력
'# 나 > pentest (WEB)' 카테고리의 다른 글
칼리리눅스 Vmware Tools 설치 (0) | 2019.05.22 |
---|---|
Part 01. 시스템 - Unix/Linux (0) | 2019.05.14 |
Part 02. 네트워크 - DoS, DDoS, DRDos, 무선랜, VPN, IPsec, SSL/TLS, 라우터 (0) | 2019.05.10 |
Part 04. 침해사고 분석 및 대응 - snort, iptables (0) | 2019.05.08 |
Part 03. 어플리케이션 - DNS, HTTP, FTP, SNMP, DHCP (0) | 2019.05.07 |