컴퓨터뽀개버리기

네트워크 해킹과 보안 [Chapter 5] 목록화/네트워크스캔 본문

꾸준히 보자/보안

네트워크 해킹과 보안 [Chapter 5] 목록화/네트워크스캔

그순간을기억해 2020. 5. 19. 21:27
반응형
  • 환경설정 ESXi 6.x 로 Windows server 2012를 같은 네트워크상에 가상으로 띄워둠.

Ping

Ping은 서버의 동작 여부를 알아보는 가장 기본적인 스캔이다.

ICMP(Internet Control Message Procotol)을 사용, TCP/IP 네트워크에서 사용

IMCP : 호스트서버와 인터넷 게이트웨이 사이에서 메시지를 제어하고 오류를 알려주는 프로토콜

IMCP 스캔

IMCP를 이용해 공격 대상 시스템의 활성화 여부를 알아보는 방법은 다음 네가지이다.

  1. Echo Request(Type 8)와 Echo Reply(Type 0) 이용하기

  2. Timestamp Request(Type 13)와 Timestamp Reply(Type 14) 이용하기

  3. Information Request(Type 15)와 Information Reply(Type 16) 이용하기

  4. ICMP Address Mask Request(Tyep 17)와 ICMP Address Mask Reply(Type 18) 이용하기

가장 일반적인 방법은 1번이며, 옵션없이 ping을 사용하면 된다.

윈도우는 기본적으로 4개의 ICMP Request 패킷을 보냄

리눅스는 Ctrl+C 중지명령을 내리기 전까지 계속 보냄

라우터나 방화벽에서 ICMP Echo Request 패킷을 막는 경우가 있는데 이때 세가지 방법으로 이용할 수 있다.

  1. Timestamp Request 패킷을 이용

Timestamp Request 패킷은 원격지 시스템의 현재 시간을 알아보기 위함 + Reply 패킷이 돌아오는 것은 상대 시스템이 활성화 되어있음을 말함

  1. Information Request 패킷 이용

원래는 디스크가 없는 시스템이 스스로 IP를 설정할 수 있도록 하는 패킷으로, 자신의 네트워크를 찾기 위한 목적이다.

이 방법에서도 죽은 시스템은 Reply 패킷을 보내지 않음

  1. ICMP Address Mask Request와 Reply 패킷 이용

이 패킷 또한 2번 패킷처럼 단말기가 부팅될 때 자신이 속한 네트워크의 서브넷 마스크를 알기 위해 보냄

마찬가지로 Reply 패킷이 돌아오는지 확인함으로써 상대 시스템의 활성화 여부를 확인

ICMP 패킷을 이용한 세가지 방법이 모든 운영체제에서 동작하지 않음. 지원 여부에 따라 운영체제를 짐작할 수 있다.

운영체제 Information Timestamp Address Mask
리눅스 커널 2.2-2.6 X O X
FreeBSD X O X
솔라리스 X O O
HP-UX O O X
AIX v4 O O X
윈도우 98 X O O
윈도우 NT sp4 X X X
윈도우 2000 이상 X O X

ICMP를 이용한 여러가지 ping은 시스템 하나를 조사하기엔 적절하지만 큰 네트워크에서 활성화 시스템을 찾는 데는 그닥 효과적이지 않다.

네트워크 전체에서 활성화 시스템을 찾는 일을 스위핑(sweeping)이라고한다. 네트워크에 브로드캐스트 ping을 보내거나 자동화 도구를 이용해 특정 범위의 네트워크에 ping을 보낸다.(tool은 fping이 있다)

TCP와 UDP를 이용한 스캔

TCP와 UDP를 이용한 스캔은 시스템 자체의 활성화 여부가 아니느 포트 스캔을 한다. 포트가 열려있으면 해당 시스템은 활성화되어 있는 것이다.

TCP Open 스캔

[포트가 열린 경우]

  1. 작동하리라 예상되는 포트에 세선을 맺기 위한 SYN 패킷을 보냄

  2. 포트가 열린 경우 서버에서 SYN+ACK 패킷이 돌아옴

  3. 공격자는 다시 ACK패킷을 보냄

이와같이, Open 스캔은 3-way handshaking 과정을 모두 거친다. 따라서 상대방 시스템에 로그가 남는다.

[포트가 닫힌 경우]

  1. 공격자가 SYN패킷을 보냄

  2. RST+ACK 패킷이 돌아옴

  3. 공격자는 아무것도 보내지 않음

TCP Open 스캔 Reverse Ident

세션이 성립한 상태에서 원격지 서버에서 데몬을 실행하고 있는 프로세스의 소유권자를 확인하기 위함

데몬(deamon) : 시스템의 사용자 인터페이스에는 나타나지 않지만, 서비스를 요청하면 이에 반응할 수 있도록 항상 실행되고 있는 프로그램을 말한다.

113번 포트는 사용자 인증을 위해 사용되지만, 이 서비스는 보통 중지되어 있다.

Stealth(스텔스) 스캔

세션을 완전히 성립하지 않고 공격 대상 시스템의 포트 활성화 여부를 알아내기 때문에 시스템에 로그가 남지 않는다.

(스탤스 스캔은 로그를 남기지 않는 것만이 아니라, 공격 대상을 속이고 자신의 위치를 숨기는 스캔 모두를 통칭한다.)

Stealth 스캔의 예) TCP Half Open 스캔

[포트가 열린 경우]

  1. 작동하리라 예상되는 포트에 세선을 맺기 위한 SYN 패킷을 보냄

  2. 포트가 열린 경우 서버에서 SYN+ACK 패킷이 돌아옴

  3. 공격자는 다시 RST패킷을 보냄

[포트가 닫힌 경우]

Open 스캔과 같음

또 다른형태로 FIN 패킷을 보내는 방법이 있다.

NULL : 플래그값을 설정하지 않고 보낸 패킷

XMAS : ACK, FIN, BST,SYN, URG 플래그를 모두 설정하여 보낸 패킷을 말한다.(크리스마스 선물처럼 모두 준다는 의미로 붙여진 이름)

Stealth 스캔의 예) ACK 패킷 보내기

  1. ACK패킷을 모든 포트에 보냄

  2. 시스템이 RST패킷을 보냄

  3. 공격자는 RST패킷의 TTL값과 윈도우의 크기를 분석

열린포트 => TTL이 64이하, 윈도우가 0이 아닌 임의의 값을 가진 RST 패킷

닫힌포트 => TTL값이 운영체제에 따라 일정하게 큰 값, 윈도우의 크기가 0인 RST패킷

Steal 스캔의 예) TCP Fragmentation(단편화)

크기가 20바이트인 TCP 헤더를 패킷 두 개로 나누어 보냄

첫번째 패킷 : 출발지IP, 도착지IP => TCP포트에 대한 정보가 없기에 방화벽 통과

두번째 패킷 : 스캔하고자 하는 포트 번호 => 출발지와 목적지 주소가 없어서 방화벽 통과

스탤스 스캔은 방화벽은 통과하지만 IDS는 피할 수 없다.

Steal 스캔의 예) 시간차 공격

아주 짧은 시간동안 많은 패킷 보냄 => 방화벽과 IPS 처리 용향 한계를 넘김

긴 시간동안 걸쳐서 패킷 보냄 => 방화벽과 IPS패킷 패턴에 대한 정보를 얻기 힘듦

  • Paranoid : 5분이나 10분 간격으로 패킷을 하나씩 보냄

  • Sneaky : WAN에서는 15초 단위로, LAN에서는 5초 단위로 패킷을 보냄

  • Polite : 패킷을 0.4초 단위로

  • Nomal : 정상적인 경우

  • Aggressive : 호스트에 대한 최대 타임아웃은 5분이며, 패킷당 1.25초까지 응답을 기다린다

  • Insane : 호스트에 최대 타임아웃은 75초며, 패킷당 0.3초까지 응답을 기다린다. 방화벽과 IDS의 네트워크 카드가 100Mbps이상이 아니면 이를 탐지하지 못한다.

UDP 스캔

[열린포트] UDP패킷을 보내도 아무 응답없음

[닫힌포트] UDP패킷을 보내면 ICMP Unreachable 패킷을 보냄

그러나 UDP를 이용한 포트 스캔은 신뢰하기 어렵다. UDP 패킷이 네트워크를 통해 전달되는 동안 라우터나 방화벽에 의해 손실될 수 있기 때문에...

fping을 이용해 스캔하기

fping은 스캔 전에 네트워크의 시스템 목록을 확인할 때 사용한다.

  • -q : ICMP Request와 Reply를 숨긴다

  • -a : 활성화되어 있는 시스템을 보여준다

  • -s : 스캔이 끝난 후 결과를 정리해서 보여준다

  • -g : 서브넷마스크를 직관적으로 표현할 수 있게한다

fping -q -a -s -g 192.168.0.0/24

명령어를 실행하면 활성화된 호스트를 볼 수 있다

nmap을 이용한 Port 스캔

nmap -sT m192.168.0.1

[nmap 스캔 옵션]

-sT : TCP Open 스캔

-sS : SYN 스켈스 스캔 (스캔을 받은 쪽에서는 연결로그가 남지 않는다)

-p : 특정포트 스캔

-sF : FIN 스캔을 이용한 스캔

-sN : NULL 패킷을 이용한 스캔

-sP : ping을 이용한 호스트 활성화 여부 확인

-sU : UDP 포트스캔

-sR : RPC 포트스캔

-sA : ACK 패킷에 대한 TTL 값의 분석

-sW : ACK 패킷에 대한 윈도우 크기 분석

-b : FTP 바운스 스캔

 

[nmap 실행 옵션]

-f : 스캔할 때 방화벽을 통과할 수 있도록 패킷을 조각냄

-v : 스캔의 세부 사항 표시

-P0 : 스캔 전 ping을 하지 않고 ICMP Echo Request를 허용하지 않은 호스트에 대한 스캔을 할 때 설정

-PT : ping의 대용으로 ICMP 패킷을 이용하지 않고, TCP 패킷을 이용하여 해당 시스템이 작동 중인지 검사

-PS : TCP의 SYN 패킷만을 보내 시스템 활성화 여부 검사

-PI : 시스템의 활성화 여부를 ICMP로 검사

-PB : TCP와 ICMP 둘 다 사용해서 호스트 활성화 여부를 검사

-O : 시스템 운영체제를 추정

 

*윈도우용 nmap은 인터페이스가 있어서 활용하기 편리하다

 

 

[참조] 네트워크 해킹과 보안, 정보보안개론

반응형