Chapter 06 풋프린팅과 스캔 20022173 류재민
학습 목표 풋프린팅(footprinting)을 이해한다. 포트와 서비스의 관계를 이해한다. 여러 가지 스캔 기술을 이해하고 실행할 수 있다. 방화벽과 IDS를 탐지할 수 있다. 운영체제를 탐지할 수 있다.
Section 01. 풋프린팅 사회 공학(Social Engineering) 해킹에서 공격 대상의 정보를 모으는 방법 매우 다양한 기법이 있으며, 매우 넓은 의미가 포함 사회 공학(Social Engineering) 기술적인 방법이 아닌, 개인적인 인간 관계, 업무적 관계 등을 이용하는 방법에서부터 어깨 넘어 훔쳐보기 등정보를 획득하는데 이용 가능한 비 기술적인 경로를 이용해서 정보를 모으는 방법
Section 02. 포트 시스템에는 65535개의 포트가 있으며, 0번부터 1023번까지의 1024개의 포트를 Well Known 포트라고 부른다. Well Known 포트는 일상적으로 잘 알려진 서비스를 위해 고유의 용도가 있다. 보통 0번 포트는 쓰지 않으며, 1024번 포트부터 65534 포트는 임의의 사용 용도를 위해서, 또는 클라이언트가 서버에 접속 시에 할당 받는 포트의 범위 이다.
Well Known 포트 (1/2) 포트 번호 서비스 서비스 내용 21 (TCP) FTP File Transfer Protocol FTP 연결 시 인증과 컨트롤을 위한 포트 23 Telnet Telnet 서비스로서 원격지의 서버의 실행 창을 얻어낸다. 25 SMTP Simple Message Transfer Protocol 메일을 보낼 때 사용하는 서비스 53 (UDP) DNS Domain Name Service 이름을 해석하는 데 사용하는 서비스 69 TFTP Trivial File Transfer Protocol 인증이 존재하지 않는 단순한 파일 전송에 사용되는 서비스 80 HTTP Hyper Text Transfer Protocol 웹 서비스
Well Known 포트 (2/2) 포트 번호 서비스 서비스 내용 110 POP3 Post Office Protocol 메일 서버로 전송된 메일을 읽을 때 사용하는 서비스 111 RPC Sun의 Remote Procedure Call 원격에서 서버의 프로세스를 실행할 수 있게 한 서비스 138 NetBIOS Network Basic Input Output Service 윈도우에서 파일을 공유하기 위한 서비스 143 IMAP Internet Message Access Protocol. POP3와 기본적으로 같으나, 메일을 읽고 난 후에도 메일은 서버에 남는 것이 다르다. 161 SNMP Simple Network Management Protocol 네트워크 관리와 모니터링을 위한 서비스
데몬(daemon) 시스템의 사용자 인터페이스에는 나타나지 않지만, 서비스가 요청되었을 때 이에 반응할 수 있도록 항상 실행되는 프로그램 따라서 웹 서비스에 대한 데몬과 FTP 서비스를 위한 데몬이 별도로 존재한다. 각각의 데몬을 실행해야만 포트가 열리며, 해당포트에서 적절한 서비스를 제공받을 수 있다. 각각의 데몬은 하나의 프로그램이기 때문에 취약점이 존재할 수 있는데, 이러한 점을 이용하여 해커는 공격 대상 시스템에 침투한다.
Section 03. 스캔 스캔은 서비스를 제공하는 서버의 작동 여부와 제공하고 있는 서비스를 확인하기 위한 것이다. TCP 기반의 프로토콜은 기본적으로 질의(Request)를 보내면 응답(Response)을 보낸다. 스캐닝은 이러한 기본적인 메커니즘에 기본 하는 것으로, 열려있는 포트, 제공하는 서비스, 동작중인 데몬의 버전, 운영체제의 버전, 취약점 등 다양한 정보를 얻어내는 것이 가능하다.
Ping / ICMP Ping 네트워크와 시스템이 정상적으로 작동하는지 확인하기 위 한 간단한 유틸리티로 개발되었다. ICMP를 사용한다. ICMP(Internet Control Messaging Protocol) 호스트 서버와 인터넷 게이트웨이 사이에서 메시지를 알려주고 오류를 알려주는 프로그램
ICMP 스캔 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)을 이용하는 방법
Echo Request(Type 8), Echo Reply(Type 0)
Timestamp Request(Type 13), Timestamp Reply(Type 14) Timestamp Request는 원격지 시스템의 현재 시간을 알아보기 위한 패킷이다. Timestamp 패킷은 송신자의 패킷 전송시간(Originate Timestamp)과 수신자가 패킷을 받은 시간(Receive Timestamp), 수신자가 송신자에게 응답 할 때의 시간(Transmit Timestamp)으로 공격대상의 현재 시스템 시간을 알 수 있다. 하지만, Timestamp Request 패킷에 Reply 패킷을 돌려보내오는 시스템이 시간만 알려준다고 생각할 수는 없다. 상대 시스템이 Reply 패킷이 돌아온다는 것은 상대 시스템이 활성화되어 있음을 말하는 것이다.
Information Request(Type 15), Information Reply(Type 16) Information Request와 Reply 패킷은 메인 프레임의 터미널과 같이 부팅할 때 자신의 디스크가 없는 시스템에 스스로 설정할 수 있도록 하는 패킷으로, 자신의 네트워크를 찾기 위해 개발되었다. 기본적인 목적은 RARP, Bootp, DHCP와 같은 프로토콜과 같으나 다른 프로토콜을 이용한 방법에 비해 원시적이라고 할 수 있다. 이 방법 역시 Timestamp 패킷과 마찬가지로 죽어있는 시스템이 Reply 패킷을 보내오지는 않을 것이다.
ICMP Address Mask Request(Type 17), ICMP Address Mask Reply(Type 18) ICMP Address Mask Request와 Reply 패킷은 Information Request 패킷과 같이 터미널이 부팅될 때 자신이 속해 있는 네트워크의 서브넷 마스크를 알기 위해서 보내는 프로토콜이다. 위의 두 가지 방법과 마찬가지로 Reply 패킷을 돌려보내오는지 확인함으로써, 상대 시스템의 활성화 여부를 확인한다.
UDP 스캔 포트가 열려있을 경우, 아무런 응답이 없으며, 포트가 닫혀 있을 경우에는 ICMP Unreachable 패킷을 받게 된다.
TCP Open 스캔 포트가 열려있는 경우, 세션이 성립되며, 포트가 닫혀 있을 경우에는 RST+ACK 패킷을 받게 된다.
Reverse Ident 스캔 세션이 성립한 상태에서 원격지 서버에서 데몬을 실행하고 있는 프로세스의 소유권자를 확인하기 위한것 세션이 성립한 뒤에 113번 포트를 연다. 113번 포트는 사용자 인증을 위해 사용되는 포트지만, 보통의 경우 이 서비스는 중지되어 있다.
Stealth 스캔 Open 스캔처럼 세션을 완전히 성립하지 않고, 공격 대상 시스템의 포트의 활성화 여부를 알아내기 때문에 로그 정보가 남지 않는다. 공격 대상의 시스템 관리자는 어떤 IP를 가진 공격자가 자신의 시스템을 스캔했는지 확인할 수 없다. 스텔스 스캔은 이처럼 단순히 로그를 남기지 않는 것만이 아니라, 공격 대상을 속이고 자신의 위치를 숨기는 스캔 모두를 통칭한다.
Stealth 스캔 : TCP Half Open 스캔 포트가 열려있을 경우, 서버로부터 SYN+ACK 패킷을 받은 후, RST(Reset) 패킷을 보내어 연결을 끊는다. 포트가 닫혀있을 경우에는 Open 스캔의 경우와 같다.
Stealth 스캔 : FIN, Xmas, Null 스캔 포트가 열려있을 경우에는 응답이 없고, 포트가 닫혀 있는 경우에만 RST 패킷이 되돌아온다.
기타 스캔 방법 (1/2) ACK 패킷을 이용하는 방법 공격자로부터 받은 RST 패킷을 분석하여 상대 시스템의 활성화 여부 확인 TCP를 패킷을 이용한 스캔 방법 SYN 패킷을 이용한 스캔 방법은 세션을 성립하기 위한 정당한 패킷과 구별 불가능 Stealth : TCP 단편화 방법 20바이트의 TCP 헤더를 두개의 패킷으로 나누어 보냄으로서 방화벽을 통과함
기타 스캔 방법 (2/2) 시간차를 이용한 스캔 FTP 바운스(bounce) 스캔 Paranoid : 5 ~ 10분 간격으로 패킷을 보냄 Sneaky : WAN=15, LAN=5초 단위로 패킷을 보냄 Polite : 0.4초 단위로 패킷을 보냄 Normal : 정상적인 경우 Aggressive : 호스트에 대한 최대 타임아웃은 5분이며, 패킷당 1.25초까지 응답을 기다림 Insane : 호스트에 대한 최대 타임아웃은 75초이며, 패킷당 0.3초까지 응답을 기다림(방화벽과IDS의 네트워크 카드가 100Mbps 이상이 아니면 탐지 불가 FTP 바운스(bounce) 스캔 취약한 FTP서버에서는 Port명령을 통해 다른 포트에 대한 활성화 여부 확인, 방화벽 내에 취약한 FTP서버 존재시 사용
Fping을 이용한 스캔 Fping을 이용하여 특정 네트워크에서 활성화된 시스템 확인
Sing을 이용한 스캔(1/2)
Sing을 이용한 스캔(2/2)
NMAP을 이용한 스캔(1/3)
NMAP을 이용한 스캔(2/3)
NMAP을 이용한 스캔(3/3)
NMAP을 이용하여 가능한 스캔 스캔 옵션 내 용 -sT connect( ) 함수를 이용한 Open 스캔 -sS 내 용 -sT connect( ) 함수를 이용한 Open 스캔 -sS 세션을 성립시키지 않는 TCP syn 스캔 -sF Fin 패킷을 이용한 스캔 -sN Null 패킷을 이용한 스캔 -sX XMas 패킷을 이용한 스캔 -sU UDP 포트 스캔 -sP Ping을 이용한 호스트 활성화 여부 확인
Section 04. 운영체제의 탐지 배너 그래핑(Banner Grabbing) Banner Grabbing은 Telnet과 같이 원격지의 시스템에 로그인을 시도하면 나타나는 안내문과 같은 것이다. 23번 포트에 탤넷 접속을 시도한 위의 화면에서는 운영체제의 버전과 커널 버전을 확인할 수 있다. 이러한 배너 그래빙은 23번 포트 외에도 21,25,110,143 포트에서도 가능하다.
TCP/IP 프로토콜에 대한 반응 Fin 스캔을 이용한다. Fin 스캔은 모든 운영체제에 적용되는 것은 아니다. 적용되는 운영체제는 윈도우, BSD, Cisco, Iris 등으로, Fin 스캔의 가능 여부에 따라 운영체제를 판별할 수 있다. 세션 연결 시 TCP 패킷의 시퀀스 넘버 생성을 관찰 - 윈도우 : 시간에 따른 시퀀스 넘버 생성 - 리눅스 : 완전한 랜덤 - FreeBSD, Digital-Unix, IRIX, Solaris : 시간에 따른 랜덤한 증분
넷크래프트 이용
Section 05. 방화벽과 침입 탐지 시스템의 탐지 방화벽은 침입자를 차단하는 일차적은 방어선이다. 모든 클라이언트가 접속을 시도하면, 그 연결은 모두 방화벽을 거치는 것이 원칙이다. 또한 방화벽은 이 모든 접속들에 대한 허용과 차단을 결정한다. 침입 탐지 시스템(IDS, Intrusion Detection System)은 방화벽이 막을 수 없거나 차단에 실패한 공격에 대한 탐지를 하여 관리자에게 알려주는 역할을 한다.
Traceroute / Tracert을 이용한 방법(1/3) UDP와 ICMP, 그리고 IP의 TTL 값을 이용 a.a.a.a 에서 b.b.b.b까지 traceroute할 경우의 동작순서 1. Traceroute 프로그램은 TTL 밧을 1로 설정하고 포트 번호를 33435번으로 하여 UDP 패킷을 한 번에 세 개씩 보낸다. 2. 첫 번째 라우터는 1로 설정된 TTL 값을 0으로 줄이고, 출발지 주소로 ICMP Time Exceed 메시지(Type 11)를 보낸다. 3. a.a.a.a 에서 이 패킷을 보고, 첫 번째 라우터까지의 시간을 알아낼 수 있다. 4. 다시 두 번째 라우터까지는 TTL 값을 2로 설정하여 보내고, 첫 번째 라우터와 같은 과정을 두번째 라우터가 하게 된다. 5. 이 과정을 반복하여 목적지 시스템에 도달하게 되면 ICMP Port Unreachable(Type 3)패킷이 돌아오게 되고 모든 과정이 끝난다.
Traceroute / Tracert을 이용한 방법(2/3) 목표 IP에 대해 traceroute를 시도할 경우, ICMP Time Exceed Message가 돌아오지 않고, * 로 표시된 부분에 방화벽이 존재할 수 있다.
Traceroute / Tracert을 이용한 방법(3/3)
Sam Spade를 이용한 traceroute
Check Point : Firewall - I Port 스캔을 이용하는 방법(1/2) 각각의 방화벽과 IDS는 운영을 위해 특정한 포트를 활성화시키고 있다. 특정 포트에 대한 탐지를 통해 방화벽과 IDS의 종류까지 알아낼 수 있다. 방화벽 활성화된 포트 Check Point : Firewall - I 256, 257, 258 M.S. Proxy 1080, 1745 M.S ISA 1078, 1080, 1745 어울림 Secure Works 3346, 2890 화랑 486, 285 Cisco PIX 530, 540 수호신 764, 765 Astaro 1235, 1236 IP Chain 1334 Inter Guard 1680 [방화벽에서 열린 포트]
Port 스캔을 이용하는 방법(1/2) IDS 활성화된 포트 Check Point : VPN Swite 300, 301 M.S. ISA 1078, 1080, 1745 어울림 Secure IDS 1033 Cisco PIX IDS 550 수호신 Network Solution 764, 765 인젠 Neowatcher 1887 정보보호원 TSN 1900 Snort 2350 [IDS에서 열린 포트] 하지만 일반적인 스캔 방법으로 포트를 확인할 수 있는 것은 아니다. 이 포트들을 찾아내려면 집중적인 스캔 방법이 필요하다.
방화벽의 ACL(Access Control List)를 알아내는 방법(1/2) 1. 방화벽이 탐지되면 방화벽까지의 TTL보다 1만큼 더 큰 TTL 값을 생성하여 보낸다. 2. 방화벽이 패킷을 차단할 경우 아무런 패킷도 돌아오지 않는다.
방화벽의 ACL(Access Control List)를 알아내는 방법(2/2) 3. 방화벽이 패킷을 그대로 보낼 경우, 패킷은 다음 라우터에서 사라지며, 라우터는 ICMP Time Exceed Message(Type 11)을 보낸다. 4. 공격자는 ICMP Time Exceed Message의 여부를 확인하고, ACL을 예측할 수 있다.