ch06_풋프린팅과 스캐닝

Download Report

Transcript ch06_풋프린팅과 스캐닝

풋프린팅과 스캐닝
IT CookBook, 정보 보안 개론과 실습 : 네트워크 해킹과 보안(개정
판)
Contents
 학습목표
 풋프린팅(footprinting)이 무엇인지 안다.
 포트와 서비스의 관계를 이해한다.
 다양한 스캔 기술을 이해하고 실행할 수 있다.
 방화벽과 IDS를 탐지할 수 있다.
 운영체제를 탐지할 수 있다.
 내용
 풋프린팅(Footprinting)
 스캔
 운영체제의 탐지
 방화벽과 침입 탐지 시스템의 탐지
2/35
풋프린팅
 풋프린트(footprint)는 발자국
 풋프린팅(footprinting)은 발자국을 살펴보는 것으로, 공격 대상의 정보
를 모으는 방법 중 하나
3/35
스캔
 서비스를 제공하는 서버의 존재 여부와 해당 서버가 제공하고 있는 서비
스를 확인하는 것
 TCP 기반 프로토콜은 기본적으로 요청(request)을 보내면 응답
(response)을 전달. 스캔은 이런 원리를 기반으로, 전화를 걸었을 때 한
쪽에서 ‘여보세요’라고 말하면 다른 쪽도 ‘여보세요’라고 말하며 서로를
확인하는 것
4/35
ping과 ICMP 스캔
 ping
 네트워크와 시스템이 정상적으로 작동하는지 확인하기 위한 간단한 유틸리티
 ICMP를 사용하며, 기본적으로 TCP/IP 네트워크에서 사용
 ICMP를 이용해 공격 대상 시스템의 활성화 여부를 알아보는 방법
 Echo Request(Type 8)와 Echo Reply(Type 0)를 이용한 방법
 Timestamp Request(Type 13)와 Timestamp Reply(Type 14)를 이용한 방법
 Information Request(Type 15)와 Information Reply(Type 16)를 이용한 방법
 ICMP Address Mask Request(Type 17)와 ICMP Address Mask Reply(Type 18)를 이
용한 방법
5/35
ping과 ICMP 스캔
 윈도우 XP 시스템에서 다른 윈도우 XP 시스템으로 ping 실행






➊ ICMP 패킷의 길이를 나타낸다. 운영체제마다 보내는 바이트 길이가 다르다.
➋ 공격 대상에서 보내온 ICMP Echo Reply 패킷의 크기다. 공격자가 보낸 패킷과 크기가 같은
패킷이 돌아온다.
➌ Echo Request 패킷을 보낸 후 Reply 패킷을 받기까지의 시간이다. 공격 대상이 같은 네트워
크에 존재하여 시간이 무척 짧다.
➍ TTL(Time To Live) 값으로, 라우팅 정보가 잘못되어 패킷이 네트워크를 무한대로 돌아다니지
않도록 최초 라우터를 제외한 라우터 하나를 지날 때마다 값이 1씩 줄어든다.
➎ Request 패킷의 개수, Reply 패킷의 개수, 손실된 패킷의 개수를 보여준다.
➏ Request 패킷을 보낸 후 Reply 패킷이 오기까지의 시간에 관한 정보를 알려준다.
6/35
ping과 ICMP 스캔
 운영체제별 TTL 값(표 6-1)
7/35
ping과 ICMP 스캔
 리눅스에서의 ping 실행
8/35
ping과 ICMP 스캔
 라우터나 방화벽 등에서 ICMP Echo Request 패킷을 막는 경우
 Timestamp Request 패킷 이용
• Timestamp Request는 원격지 시스템의 현재 시각을 알아보기 위한 패킷
• Timestamp Request 패킷은 송신자가 패킷을 보낸 시각(Originate Timestamp)과 수신자가 패
킷을 받은 시각(Receive Timestamp), 송신자가 수신자에 전송하는 동안 걸린 시간(Transmit
Timestamp)으로 공격 대상의 현재 시스템 시각을 알 수 있게 해줌
• 하지만 Timestamp Request 패킷에 Reply 패킷을 돌려보내는 시스템이 시간만 알려준다고 생각
할 수는 없음. 상대 시스템의 Reply 패킷이 돌아온다는 것은 상대 시스템이 활성화되어 있음도
말하는 것
 Information Request 패킷 이용
• Information Request와 Reply는 메인 프레임의 단말기처럼 부팅할 때 자신의 디스크가 없는 시
스템이 스스로 IP를 설정할 수 있도록 하는 패킷으로, 자신의 네트워크를 찾기 위해 개발됨.
• 기본 목적은 RARP, Bootp, DHCP 같은 프로토콜과 같으나 다른 프로토콜을 이용한 방법에 비해
원시적이라고 할 수 있음
• Timestamp Request 패킷처럼 죽은 시스템은Reply 패킷을 보내오지 않을 것
 ICMP Address Mask Request와 Reply 패킷 이용
• Information Request 패킷처럼 단말기가 부팅될 때 자신이 속한 네트워크의 서브넷 마스크를 알
기 위해 보냄
• Reply 패킷이 돌아오는지 확인함으로써 상대 시스템의 활성화 여부를 확인
9/35
ping과 ICMP 스캔
 운영체제별 Non Echo ICMP 패킷의 작동 여부(표 6-2)
10/35
TCP와 UDP를 이용한 스캔
 시스템 자체의 활성화 여부가 아닌 포트 스캔(port scan)을 함
 포트가 열려 있으면 해당 시스템은 활성화되어 있는 것
 TCP Open 스캔(1)
 열린 포트에 대해 완전한 세션을 성립시킴으로써 포트의 활성화 상태를 파악하는 것
 작동하리라고 예상하는 포트에 세션을 생성하기 위한 SYN 패킷을 보내면, 포트가 열린
경우 서버에서 SYN+ACK 패킷이 돌아오고 공격자는 다시ACK 패킷을 보냄. 포트가 닫
혀 있는 경우에는 RST +ACK 패킷이 돌아오고 공격자는 아무 패킷도 보내지 않음
11/35
TCP와 UDP를 이용한 스캔
 TCP Open 스캔(2)
 Open 스캔 중에는 세션을 성립한 상태에서 원격지 서버에서 데몬을 실행하고 있는 프로
세스의 소유권자를 확인하기 위한 Reverse Ident라는 스캔 방법이 있음.
 Reverse Ident 스캔은 세션을 성립한 후에 113번 포트를 염. 113번 포트는 사용자 인
증을 위해 사용되는 포트지만, 이 서비스는 보통 중지되어 있음
12/35
TCP와 UDP를 이용한 스캔
 스텔스 스캔
 세션을 완전히 성립하지 않고, 공격 대상 시스템의 포트 활성화 여부를 알아내기 때문에
공격 대상 시스템에 로그가 남지 않음
 TCP Half Open 스캔
• SYN 패킷을 보내면, 포트가 열린 경우 서버는 SYN+ACK 패킷을 보내고 공격자는 즉시 연결을
끊는 RST(Reset) 패킷을 보냄. 포트가 닫힌 경우는 RST+ACK 패킷이 돌아오고 공격자는 아무
패킷도 보내지 않음
13/35
TCP와 UDP를 이용한 스캔
 FIN, NULL, XMAS 스캔
• FIN(Finish) 패킷을 보내 포트가 열린 경우에는 응답이 없고, 포트가 닫힌 경우에만RST 패킷이
되돌아옴
• NULL과 XMAS 패킷을 보내도 같은 결과를 얻을 수 있음. NULL은 플래그(flag)값을 설정하지
않고 보낸 패킷, XMAS는 ACK, FIN, RST, SYN, URG 플래그 모두를 설정하여 보낸 패킷
14/35
TCP와 UDP를 이용한 스캔
 ASK 패킷 스캔
• ACK 패킷을 포트 하나가 아니라 모든 포트에 보내고, ACK 패킷을 받은 시스템은 이에 대한
RST 패킷을 보냄
• 공격자는 RST 패킷의 TTL 값과 윈도우 크기 분석
• 포트가 열린 경우 TTL 값이 64 이하인 RST 패킷이 돌아오고, 윈도우가 0이 아닌 임의의 값을 가
진 RST 패킷이 돌아옴. 포트가 닫힌 경우에는 TTL 값이 운영체제에 따라 일정하게 큰 값이며,
윈도우의 크기가 0인 RST 패킷이 돌아옴
 TCP 단편화 스캔
• 크기가 20바이트인TCP 헤더를 패킷 두 개로 나누어 보내는 것
• 첫 번째 패킷에 출발지 IP 주소와 도착지 IP 주소를, 두 번째 패킷에 스캔하고자 하는 포트 번호가
있는 부분을 보냄
• 첫 번째 패킷은 TCP 포트에 대한 정보가 없기 때문에 방화벽을 통과하고, 두 번째 패킷은 출발지
주소와 목적지 주소가 없어 방화벽을 지날 수 있음
 시간차 스캔
• 아주 짧은 시간 동안 많은 패킷을 보내는 방법과 아주 긴 시간 동안 패킷을 보내는 방법이 있음
• 아주 짧은 시간 동안 많은 패킷을 보내는 방법은 방화벽과 IDS의 처리 용량의 한계를 넘김
• 긴 시간 동안에 걸쳐서 패킷을 보내는 방법은 방화벽과 IDS가 패킷 패턴에 대한 정보를 얻기 힘
들기 때문에 공격자의 스캔을 확인하기 힘들게 함
15/35
TCP와 UDP를 이용한 스캔
 UDP 스캔
 UDP 패킷이 네트워크를 통해 전달되는 동안 라우터나 방화벽에 의해 손실될 수 있기
때문에 신뢰하기 어려움
16/35
실습 6-1 다양한 방법으로 스캔하기
실습환경
• 공격자 시스템 : 윈도우 XP와 리눅스 페도라 12
• 공격 대상 시스템 : 윈도우 서버 2003
• 필요 프로그램 : fping, hping3, sing, nmap
1 관련 툴 설치와 사용법 익히기

1-0 관련 명령어 사용법
 yum list [패키지 명칭, * 사용 가능]
 yum install [패키지 명칭, * 사용 가능]
 yum erase [패키지 명칭, * 사용 가능]
1-1 fping 설치
➊ yum list fping*
➋ fping.i686 패키지 확인
➌ yum install fping.i686



17/35
실습 6-1 다양한 방법으로 스캔하기
1-2 sing와 nmap 설치
➊ yum list sing*
➋ yum install sing.i686
➌ yum list nmap*
➍ yum install nmap.i686
2 fping을 이용해 스캔하기 : fping 실행

fping -g 192.168.0.0/24
18/35
실습 6-1 다양한 방법으로 스캔하기
3 sing을 이용해 스캔하기 : sing 실행

sing -c 1 -tstamp 192.168.0.100
19/35
실습 6-1 다양한 방법으로 스캔하기
4 nmap 이용해 스캔하기

4-1 nmap Open 스캔
nmap -sT 192.168.0.200
20/35
실습 6-1 다양한 방법으로 스캔하기
4-2 nmap TCP SYN 스캔
nmap -sS 192.168.0.200
21/35
실습 6-1 다양한 방법으로 스캔하기
4-3 nmap FIN 스캔
nmap -sF -p 21,23 192.168.0.200
22/35
실습 6-1 다양한 방법으로 스캔하기
4-4 nmap fragmentation 스캔
nmap -f -sS 192.168.0.200
23/35
실습 6-1 다양한 방법으로 스캔하기
4-5 윈도우용 nmap 실행
24/35
실습 6-1 다양한 방법으로 스캔하기
nmap 스캔 옵션(표 6-3)
25/35
실습 6-1 다양한 방법으로 스캔하기
nmap 실행 옵션(표 6-4)
26/35
운영체제의 탐지
 운영체제별로 ping과 TCP, UDP에 대해 각각 조금씩 다른 프로토콜 특
성을 보인다. 이러한 특성을 이용하여 운영체제를 탐지 가능
 배너 그래빙(banner grabbing)
 배너(banner)는 텔넷처럼 원격지 시스템에 로그인하면 뜨는 안내문과 비슷한 것이고배
너 그래빙은 배너를 확인하는 기술
 텔넷 배너 그래빙(그림 6-19)
 텔넷으로 접속한 시스템이 페도라 12, 커널 버전은 2.6.31
 방화벽과 IDS에도 이러한 배너가 있으며, 21, 25, 110, 143번 포트에도 ‘telnet [공격
대상 IP] [공격 포트 번호]’와 같이 입력하여 배너 그래빙을 할 수 있음
27/35
운영체제의 탐지
 TCP/IP에 대한 반응 확인
 TCP/IP에 대한 반응이 운영체제마다 달라 그 반응을 살핌으로써 운영체제를 추측할 수
있음
 예
• FIN 스캔을 이용한다. FIN 스캔은 모든 운영체제에 적용되는 것은 아니다. 적용되는 운영체제는
윈도우, BSD, Cisco, IRIS 등이다.
• 세션 연결 시 TCP 패킷의 시퀀스 넘버 생성을 관찰한다.
- 윈도우 : 시간에 따른 시퀀스 넘버 생성
- 리눅스 : 완전한 랜덤
- FreeBSD, Digital-Unix, IRIX, 솔라리스 : 시간에 따른 랜덤한 증분
28/35
운영체제의 탐지
 Netcraft(넷크래프트)의 웹 사이트 이용
 시스템 재부팅 주기, 시스템 갱신 주기, 현재 운영체제 버전, 웹 서비스 데몬의 종류와
버전, 마지막으로 갱신 날짜와 IP 주소, 네트워크 소유자를 보여줌
29/35
실습 6-2 배너 그래빙하기
실습환경
• 공격자 시스템 : 리눅스 페도라 12
• 스캔 대상 시스템 : 리눅스 페도라 12
1 FTP에 대해 배너 그래빙하기

1-1 FTP 포트에 대한 텔넷
1-2 FTP 포트 접속
telnet 192.168.0.2 21
ftp 192.168.0.2
30/35
실습 6-1 다양한 방법으로 스캔하기
2 SMTP 포트에 대해 배너 그래빙하기

2-1 SMTP 포트에 대해 배너 그래빙하기
2-2 SSH(22), POP3(110)나 IMAP4(143) 등에 대한 배너 그래빙
➊ telnet 127.0.0.1 22
➋ telnet 127.0.0.1 110
➌ telnet 127.0.0.1 143
31/35
방화벽과 침입 탐지 시스템의 탐지
 방화벽은 접속의 허용과 차단 결정. 침입 탐지 시스템(IDS)은 방화벽이
막을 수 없거나 차단에 실패한 공격을 탐지하여 관리자에게 알려줌
 방화벽은 traceroute를 이용해 위치 확인 가능
 방화벽이 있는 경우 traceroute 결과
 traceroute를 수행할 때 VisualRoute를 이용해 패킷의 전달 경로와 서버의 위치처럼 더
많은 정보를 얻을 수 있음
32/35
방화벽과 침입 탐지 시스템의 탐지
 방화벽과 침입 탐지 시스템마다 포트가 달라 고유 포트를 알면 포트 스
캔을 통해 종류 파악 가능
33/35
방화벽과 침입 탐지 시스템의 탐지
 방화벽의 ACL(Access Control List)을 알아내는 방법으로 firewalk가
있음
 firewalk 원리
① 방화벽이 탐지되면 방화벽까지의 TTL보다 1만큼 더 큰 TTL 값을 생성하여 보낸다.
② 방화벽이 패킷을 차단할 경우 아무 패킷도 돌아오지 않는다.
③ 방화벽이 패킷을 그대로 보낼 경우 패킷은 다음 라우터에서 사라지며, 라우터는
traceroute 과정처럼 ICMP Time Exceeded 메시지(Type 11)를 보낸다.
④ 공격자는 ICMP Time Exceeded 메시지의 여부를 받은 포트에 대해 열린 포트임을 추
측할 수 있다.
34/35
IT CookBook, 정보 보안 개론과 실습 : 네트워크 해킹과 보안(개정
판)