본문 바로가기

전공 공부/네트워크 해킹과 보안 : 정보보안 개론과 실습

ch05 - 목록화 / 연습문제 5장

728x90

01 풋프린팅

02 스캔

03 운영체제 탐지

04 방화벽 탐지

05 SNMP

 

01. 풋프린팅

 1. 풋프린팅에 대한 이해

 - (Footprint) : 는 발자국을 (Footprinting)은 그 발자국을 살펴보는 일을 의미한다.

해킹에서 풋프린팅은 공격 대상의 정보를 모으는 해킹 사전 준비 중 하나이다.

 

  1.1 사회 공학 기법

Social Engineering : 일반적인 사회 현상을 연구하는 것이 아니라 친구끼리 사용자 계정이나 패스워드 정보를 주고받는 등 보안 측면에서 기술적인 방법이 아닌 사람들 간의 기본적인 신뢰를 기반으로 사람을 속여 비밀 정보를 획득하는  해킹 기법이다.(=주로 사기라고 생각하면 된다.)

ex) 피싱, 크래킹, 

해킹을 위해서 자신의 활동 영역을 결정하고, 자신이 노출되는 것을 막기 위한 규칙을 정해야 하며 상대방의 정보는 최대한 얻어야 한다.

먼저 침투하고자 하는 시스템의 사용자 계정을 알아내야 하고 사용자 계정을 알면 패스워드만 알아내면 침입이 가능하다. 계정을 알아내면 패스워드를 찾기 위해 계정을 사용하는 사람의 이름과 전화번호 등을 사용한다.

 

계정, 사용자 이름, 전화번호 등의 신상 정보를 얻어냈고 다음으로 게시판에 시스템은 언제 업그레이드했는지, 추가로

어떤 것이 운영되는지, 어떤 시스템에 문제가 있는지 등의 정보를 얻는다.

 

 

  1.2 주의 사항

 - 정보를 수집할 때 주의할 점은 로그와 접속 시도를 너무 많이 남기면 나중에 자신을 노출시켜 웹 사이트에 수시로 접속하는 것은 위험하다. 따라서 공격하려는 웹 사이트를 통째로 다운로드하는 유틸리티로 웹 페이지를 다운로드한 뒤 검색하는 것이 좋다.

 

02. 스캔

 1. 스캔에 대한 이해

스캔(scan) : 서비스를 제공하는 서버의 작동 여부와 서버가 제공하는 서비스를 확인하기 위한 작업으로 TCP 기반의 프로토콜은 기본적으로 요청(Request)을 보내면 응답(Response)을 전달해준다.

 

 2. ping

 - 검사하고자 하는 네트워크에서 동작하는 서버를 찾아내는 일은 공격 대상 네트워크에서 공격 대상의 IP 주소를 결정하는 데 중요하며 ping을 이용해서 시스템이 정상적으로 작동하는지 확인할 수 있다.

 - ICMP(Internet Control Message Protocol)[호스트 서버와 인터넷 게이트웨이 사이에서 메시지를 제어하고 오류를 알려주는 프로토콜]를 사용하며 기본적으로 TCP/IP 네트워크에서 사용된다.

 넷웨어(NetWare)같이 다른 프로토콜 체제를 쓰는 네트워크에서 ping 유틸리티가 달라서 다른 방법을 사용한다.

 

 

 3. ICMP 스캔

#ICMP를 이용한 공격 대상 시스템의 활성화 여부 확인

  • 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(Type 17)와 ICMP Address Mask Reply(Type 18) 이용하기 
  • 1) Echo Request(Type 8)와 Echo Reply(Type 0) 이용하기

#Window

 - 옵션 없이 ping 유틸리티를 사용 = ping ip주소~

   1. ICMP 패킷의 길이를 나타내는 것으로, 운영체제마다 보내는 바이트의 길이가 다르다. 윈도우는 32바이트 ICMP Echo Request 패킷을 생성하여 보낸다. 유닉스나 리눅스는 대부분 56바이트.(내용은 의미 없는 알파벳으로 채워진다)

 

   2. 공격 대상에서 보내온 ICMP Echo Reply 패킷의 크기다. 공격자가 보낸 것과 같은 크기의 패킷이 돌아온다.

 

   3. Echo Request 패킷을 보낸 후 Reply 패킷을 받기까지의 시간.(공격 대상이 같은 네트워크에 존재해서 시간이 짧다)

 

   4. TTL(Time To Live) 값으로, 라우팅 정보가 잘못되어 패킷이 네트워크를 무한대로 돌아다니지 않도록 최초 라우터를 제외한 라우터를 하나 지날 때마다 값이 1씩 줄어든다. 

 

 - 운영체제별 TTL 값

 -> 줄어든 TTL 값으로 원격지 시스템이 라우터 몇 개를 거쳐서 도달했는지 알 수 있어 보통이 64개인데 TTL값이 55면 자신의 경계선 라우터를 포함해 라우터 12개를 지난 것.

 

   5. Request 패킷의 개수, Reply 패킷의 개수, 손실된 패킷의 개수를 보여준다.

   6. Request 패킷을 보낸 후 Reply 패킷이 오기까지의 시간 정보를 알려준다.

 

 

 #리눅스

 - 리눅스는 기본적으로 4개를 보내고 Ctrl + c를 누르기 전까지 Request 패킷을 계속 보낸다.

 - 라우터나 방화벽 등에서 패킷을 막는 경우

1) Timestamp Request 패킷을 이용

2) Information Request 패킷을 이용

3) ICMP Address Mask Request와 Reply 패킷을 이용하는 것

 

 

 4. TCP와 UDP를 이용한 스캔

 - TCP와 UDP를 이용한 스캔은 시스템 자체의 활성화 여부가 아닌 포트 스캔(port scan)을 한다.

 

  4.1 TCP Open 스캔

#TCP Open 스캔

(a) - 먼저 작동할 것이라 예상하는 포트에 세션을 생성하기 위한 SYN 패킷을 보낸다. 포트가 열린 경우 서버에서 SYN+ACK 패킷이 돌아오고 공격자는 다시 ACK 패킷을 보낸다. - 3 웨이 핸드 셰이킹

(b) - 포트가 닫힌 경우 공격자가 SYN 패킷을 보내면 RST+ACK 패킷이 돌아오고, 공격자는 아무 패킷도 보내지 않는다.

 

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

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

 다음과 같이 스캔은 세션을 성립한 후 113번 포트를 열고 사용자 인증을 위해 사용하지만 보통 중지되어 있다.

 

  4.2 스텔스 스캔

스텔스(Stelth) : 세션을 완전히 성립하지 않고 공격 대상 시스템의 포트 활성화 여부를 알아내기 때문에 공격 대상 시스템에 로그가 남지 않는다. 따라서 공격 대상의 시스템 관리자는 어떤 IP를 가진 공격자가 자신의 시스템을 스캔했는지 확인할 수 없다.(로그를 남기지 않고 자신의 위치를 숨김)

 

 - TCP Half Open 스캔

(a) - 스캔의 시작은 Open 스캔과 같고 먼저 SYN 패킷을 보내고 SYN + ACK 패킷을 보내고 공격자는 즉시 연결을 끊는 RST(Reset) 패킷을 보낸다.

(b) - 포트가 닫힌 경우 공격자가 SYN 패킷을 보내면 RST+ACK 패킷이 돌아오고, 공격자는 아무 패킷도 보내지 않는다.

 

#FIN(Finish) 패킷을 보내는 방법

(a) - 응답 없음

(b) - RST 패킷 되돌아온다.

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

XMAS : ACK, FIN, RST, SYN, URG 플래그 모두를 설정하여 보낸 패킷으로 크리스마스 선물처럼 모두 준다는 의미이다.

 - NULL과 XMAS 패킷을 보내는 때도 같다.

 

#ACK 패킷을 보내는 방법

 - 모든 포트에 ACK 패킷을 보내서 받은 시스템은 이에 대한 RST 패킷을 보내고 공격자는 RST 패킷의 TTL 값과 윈도우의 크기를 분석한다.

(포트가 열림 - TTL 값이 64 이하인 RST 패킷이 돌아오고 윈도우가 0이 아닌 임의의 값을 가진 RST 패킷이 돌아온다. )

(포트가 닫힘 - TTL 값이 운영체제에 따라 일정하게 큰 값이며, 윈도우 크기가 0인 RST 패킷이 돌아온다.)

 

#TCP단편화(Fragmentation)를 이용한 스캔 방법

 - 크기가 20 바이트인 TCP 헤더를 패킷 두 개로 나누어 보내는 것으로 첫 번째 패킷에 출발지 IP 주소와 도착지 IP 주소를 , 두 번째 패킷에 스캔하고자 하는 포트 번호가 있는 부분을 보낸다.

첫 번째 패킷은 TCP 포트에 대한 정보가 없어 방화벽을 통과,

두 번째 패킷은 출발지 주소와 목적지 주소가 없어 방화벽을 통과

 -> IDS는 완전히 피할 수 없다.

 --> 시간차를 이용한 스캔으로 우회(아주 짧은 시간 동안 많은 패킷을 보내는 방법과 아주 긴 시간 동안 패킷을 보내는 방법이 있다.)

 

#IDS를 회피하는 방법

  • 아주 짧은 시간 동안 많은 패킷을 보내는 방법 - 방화벽과 IDS 처리 용량의 한계를 넘기는 방법
  • 아주 긴 시간 동안 패킷을 보내는 방법 - 방화벽과 IDS가 패킷 패턴에 대한 정보를 얻기 힘들기 때문에 공격자의 스캔을 확인하기 힘들다.

 - 시간차에 의한 공격 구분

  • paranoid : 5분이나 10분 간격으로 패킷을 보낸다.
  • sneaky : WAN에서는 15단위로, LAN에서는 5초 단위로 패킷을 보낸다.
  • Polite : 패킷을 0.4초 단위로 보낸다.
  • Normal : 정상적인 경우
  • Aggressive : 호스트에 대한 최대 타임아웃은 5분이며, 패킷당 1.25초까지 응답을 기다린다.
  • Insane : 호스트에 대한 최대 타임아웃은 75초며, 패킷당 0.3초까지 응답을 기다린다. 방화벽과 IDS의 네트워크 카드가 100 Mbps 이상이 아니면 이를 탐지하지 못한다.

 

  4.3 UDP 스캔

 - TCP는 기본적으로 3웨이 핸드 셰이킹을 이용해 스캔을 하지만 UDP는 포트가 닫힌 경우 공격 대상이 ICMP Unreachable 패킷을 보내지만 열린 경우에는 보내지 않는다. 그리고 손실 때문에 신뢰하기 어렵다.

#실습 다양한 방법으로 스캔하기

 - fping과 hping3, sing, nmap을 이용

 

1) 관련 툴 사용법

  apt-get을 이용해 설치가능

 

2) fping을 이용해 스캔

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

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

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

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

3) nmap을 이용해 스캔

 - 스캔에 성공한 포트가 하나씩 나타나며 최종적으로 스캔한 결과와 각 포트 상태, 포트 이름을 볼 수 있다. 

 sT 옵션은 TCP Open 스캔이다.

-sS 옵션은 SYN 스텔스 스캔을 한다.

 

 - 특정 포트를 스캔하려면 -p 옵션을 사용(80번, 139번 포트에 FIN 패킷을 이용해 스캔한 결과)

 

 - 스캔하고자 하는 목적지 포트를 숨겨서 방화벽을 통과하기 위한 패킷은 -f 옵션을 준다.

 

#nmap 옵션

 

03. 운영체제 탐지

 1. 운영체제 탐지에 대한 이해

  1.1 배너 그래빙(Banner Grabbing)

 - 배너(Banner) : 텔넷처럼 원격지 시스템에 로그인을 하면 뜨는 안내문과 비슷한 것으로 이 배너를 확인하는 기술이

   배너 그래빙이다.

 

#실습5-2 배너 그래빙하기

1. FTP에 대해 배너 그래빙

 - 먼저 FTP(21번 포트)에 대한 텔넷 시도하고 정상적으로 ftp를 이용해 접속 후 비교

 -> FTP 데몬이 vs 3.0.3처럼 거의 같다.

 

2. SMTP 포트에 대해 배너 그래빙

 - 메일을 전송하는 SMTP 포트에 대해서도 비슷한 배너 그래빙 가능(pop110, ssh22등도 가능)

 -> 배너 그래빙은 서버의 종류, 서비스 데몬의 종류와 버전을 확인하는 데 사용하기도 하지만, 서비스 데몬의 정상 작동 여부를 확인하는데 사용할 수도 있다.

 

  1.2 TCP/IP 반응 살펴보기

 - 운영체제를 탐지하는 방법으로 TCP/IP에 대한 반응을 살펴볼 수도 있다. 

  • FIN 스캔을 이용(윈도우, Cisco, IRIS 등에만 적용 가능)
  • 세션 연결 시 TCP 패킷의 시퀸스 넘버 생성을 관찰한다.(윈도우 - 시간에 따른 넘버 생성 / 리눅스 - 완전 랜덤)

 

  1.3 Netcraft 이용하기

 - 넷크래프트 웹 사이트를 이용해서 시스템 부팅 주기, 시스템 갱신 주기, os 버전, 갱신 날짜와 IP 등의 다양한 정보를 보여준다.  

https://www.netcraft.com/

 

04. 방화벽 탐지

 1. 방화벽에 대한 이해

 - 침입자를 차단하는 1차 방어선으로 클라이언트가 접속을 시도하면 먼저 거치는 것이 방화벽이다. IDS는 2차적 방어선 역할을 한다.

 

 2. 방화벽 탐지

 - 방화벽 탐지는 설치 여부를 알아내는 것이 우선이다. 리눅스는 traceroute명령 사용/윈도우는 tracert명령 사용

방화벽에는 관리나 작동상의 이유로 열린 포트가 있는데 포트 스캔을 통해 방화벽의 종류를 알 수 있다.

방화벽의 ACL(Access Control List)을 알아내는 방법으로 firewalk(파이어 워크)가 있다.

 

#firewalk 원리

1) 방화벽이 탐지되면 방화벽까지의 TTL보다 1만큼 더 큰 TTL 값을 생성하여 보낸다.

2) 방화벽이 패킷을 차단할 경우, 아무 패킷도 돌아오지 않는다.

3) 방화벽이 패킷을 그대로 보내면 패킷은 다음 라우터에서 사라지고 라우터는 traceroute 과정처럼 ICMP Time Exceeded 메시지(Type 11)를 보낸다.

4) 공격자는 ICMP Time Exceeded 메시지 여부를 받은 포트에 대해 열린 포트임을 추측할 수 있다.

 -> 닫힌 포트라 응답 패킷이 돌아오지 않는다.

열린 포트이면 ICMP Time Exceeded메시지가 돌아온다.

 

05. SNMP

 1. SNMP에 대한 이해

SNMP(Simple Network Management Protocol) : 네트워크를 중앙 집중적인 관리를 위해 만든 툴.

 

  1.1 SNMP 소개

 -SNMP를 사용하면 비용이 절반으로 줄어드는 장점이 있다.

SGMP(Simple Gateway Monitoring Protocol)을 발전시켜 만든 것으로 버전 1은 보안 기능이 없다.

버전 2는 PDU타입을 정의할 수 있고 DES와 MD5를 이용한 보안 기능을 추가했다.

 

  1.2 SNMP 구성 요소

에이전트(Agent) : 기본적으로 관리 시스템과 관리 대상으로 나뉘는데 관리 대상을 에이전트라고 한다.

  • SNMP : 전송 프로토콜
  • MIB(Management Information Base) : 관리할 개체의 집합
  • SMI(Structure of Management Information) : 관리 방법

 - 관리 시스템과 에이전트가 통신하려면 세 가지 사항이 일치해야 한다.

  • 버전 : 관리 시스템과 에이전트 간 snmp 버전이 일치해야 한다.
  • 커뮤니티 : 서로 설정한 커뮤니티가 일치해야 한다.
  • PDU타입 : 통신을 위한 패킷 별 해당 값으로 0~4가 있으며, 기본 PDU 타입은 다음 표와 같다.

-> 0,1,2은 관리 시스템이 에이전트의 정보를 얻거나 변경할 때 사용하고 에이전트는 그에 대한 응답으로 3을 관리 시스템에 보낸다.

  • Get Request : 관리 시스템이 특정 변수 값을 읽는다.
  • Get Next Request : 관리 시스템이 이미 요청한 변수 다음의 변수 값을 요청한다.
  • Set Request : 관리 시스템이 특정 변수 값의 변경을 요청한다.
  • Get Response : 에이전트가 관리 시스템에 해당 변수 값을 전송한다.
  • Trap : 에이전트의 특정 상황을 관리 시스템에 알린다.

 

 

-> SNMP는 UDP를 사용하며, 관리 시스템과 에이전트 통신은 위와 같은 과정을 거친다.

 

 - 특정 상황이 발생했을 때 에이전트가 관리 시스템에 보내는 Trap 함수가 생성하는 메시지의 값 0~6

 

  1.3 MIB와 SMI

mib : 관리자가 조회하거나 설정할 수 있는 개체들의 데이터베이스다. 트리 형식 구조

 -> 네트워크 관리자는 MIB의 특정 값을 가져와 에이전트의 상태를 파악하거나 그 값을 변경

SMI는 관리 정보 구조로 해석하고 MIB를 정의하고 구성하는 툴이다.

MIB를 생성하려면 OID를 지정받아야 한다. OID는 고유하고 특정한 숫자의 연속으로 표현되는데 IP 주소와 유사한 표기법을 사용

 -> OID 계층에서 괄호 안의 숫자는 OID를 표현하기 위한 것이다. 차례대로 따라 내려온 것이 고유 OID가 되며, IANA(Internet Assigned Numbers Authority)에서 관리한다.

 

 2. SNMP 취약점을 이용한 정보 획득

 - SNMP의 취약점은 누구라도 정보를 볼 수 있다.

버전 1은 커뮤니티(일종의 패스워드)만 일치하면 모든 정보를 볼수 있다. 하지만 대부분 커뮤니티는 public으로 설정되어 있어 들어가기 쉽고 UDP로 전송해서 암호화되지 않은 평문으로 전송되어 스니핑이 가능하다.

 

#실습 5-3 SNMP를 이용해 정보 수집하기

 

1) SNMP 설치

 

2) SNMP Community String 설정

 - security에서 Add 버튼 클릭 후 권한 설정 및 커뮤니티 설정할 수 있다.

 

3) snmpwalk 설치

apt-get install snmp

 

4) SNMP 스캐닝하기

 - snmp 스캐닝을 위해 서비스 포트인 161 포트가 열려있어야 한다.

 - 다음과 같이 크래킹 하듯 패스워드를 알아낼 수도 있다.

 - snmpwalk로 스캔

  v는 버전, c는 Community string을 위한 옵션 / 스캔 대상 IP 뒤에 1.3.6.1.. 은 시스템과 관련된 MIB 정보이다.

다음 명령은 IP 호스트에 대한 시스템 정보를 SNMP를 통해 수집하라는 것.

 

 3. 보안 대책

 - 관리의 부재 문제

 - 불필요하면 사용 막아야 한다

 - 패스워드 관리

 

연습문제

1. 풋프린팅으로 알아낼 수 없는 것은 무엇인가?

 

2. 다음 중 가장 일반적인 ping 툴이 사용하는 ICMP 패킷은 무엇인가?

 

3. 다음 중 스텔스 스캔이 아닌 것은 무엇인가?

 

4. 다음 중 스캔 방법에 대한 설명이 잘못된 것은 무엇인가?

 

5. 다음 중 가장 빠른 스캔 방법은 무엇인가?

 

6. 배너 그래빙에 사용하는 클라이언트 프로그램은 무엇인가?

 

7. 배너 그래빙이 가능하지 않은 포트는 무엇인가?

 

8. SNMP는 어떤 프로토콜에서 발전한 것인가?

 

9. SNMP 버전 3에서 새로 추가한 기능은 무엇인가?

 

10. 관리 대상인 에이전트의 구성요소가 아닌 것은 무엇인가?

 

11. MIP에 포함되는 개체가 아닌 것은 무엇인가?

 

12. SNMP 버전 1에서는 어떤 조건이 맞아야 정보를 읽을 수 있는가?

 

13. IP가 100.100.100.100인 서버의 FTP 서비스에 대해 텔넷을 이용하여 그래빙을 하는 명령을 적으시오.

 

14. 목록화란 무엇인지 설명하시오.

 

15. 사회 공학이란 무엇인지 설명하시오.

 

16. Chain Rule이란 무엇인지 설명하시오.

 

17. SMTP는 어떤 곳에 사용하는 프로토콜인지 설명하시오.

 

18. 스텔스 스캔에는 어떠한 것들이 있는지 설명하시오.

 

19. firewalk의 원리를 설명하시오.

 

20. 배너 그래빙에서 얻을 수 있는 정보에는 어떤 것들이 있는지 설명하시오.

 

21. SNMP의 함수 5가지를 쓰고 각각에 대해 간단히 설명하시오.

 

22. MIB란 무엇인지 설명하시오.

 

23. SNMP 스캔으로 얻을 수 있는 정보에는 어떤 것이 있는지 설명하시오.