네트워크 패킷 분석[Network Packet Analysis] - 1
Network

네트워크 패킷 분석[Network Packet Analysis] - 1

연구소 인턴 2023. 7. 17.
300x250
반응형

 

<패킷 분석>

네트워크에서 매우 중요한 부분이다. 패킷분석을 통해서 속도가 느린 네트워크 분석, 보안을 위한 패킷 분석, 우선 패킷 분석 등을 수행할 수 있다. 패킷을 수집하기 위해서 텍스트 스타일의 TcpDump나 그래픽 스타일의 wireshark라는 도구를 주로 사용한다.

패킷을 모으는 패킷 스니퍼(packet snipper)장비는 NIC(Network Interface Card)를 Promiscuous로 만들어서 LAN 세그먼트에서 각 호스트로 오가는 모든 패킷을 취득한 뒤 이 데이터를 컴퓨터가 이해할 수 있는 binary data로 변경해서 분석가에게 보인다. 분석가는 변환된 데이터 패킷을 분석해서 네트워크에서의 실제적인 상태를 알 수 있게된다.

 

패킷 분석을 통해 알 수 있는 것들

- 네트워크의 특성 파악

- 네트워크 사용자의 IP, MAC 주소 파악 가능

- 대역폭 사용자와 사용량 파악

- 네트워크 사용의 피크 타임 파악

- 공격 가능성이나 악의적인 활동 파악

- 안전하지 않거나 크기가 큰 응용 어플 파악

-네트워크나 시스템구석, 병목지점이나 설정오류 등을 파악할 수 있다.

 

패킷분석은 패킷 스니핑(packet sniffing)이나 프로토콜 분석(protocol analysis)으로 불리기도 하는데 시스템이나 네트워크상에서 발생되는 이벤트를 잘 이해하기 위해서 시스템/네트워크를 통해서 전달되는 실제 데이터를 수집하고 해석하는 일이다. 패킷 분석은 물리적인 회선이나 공기를 통해서 이동되는 유선/무선 네트워크 데이터를 수집하기 위해서 패킷 스니퍼를 수행한다.

OSI 모델

프로토콜은 보통 연결 초기화, 연결 특성 협상, 데이터 형식, 오류 탐지와 수정, 그리고 연결 종료의 과정을 거치게 된다. 패킷분석은 OSI 층별로 구분해서 보이기 때문에 OSI층을 알고 있어야 한다.

 

OSI 7 Layers 모델

L7) 응용 7층은 사용자가 네트워크에 접속하게 하는데 보통 응용 어플이 실행되고 있으며 사용자가 접근할 수 있는 유일한 층이다. HTTP, SMTP, FTP, Telnet 등이 있다.

 

L6) 표현 6층은 인코딩과 디코딩, 그리고 암호화와 복호화, 멀티미디어 처리가 이뤄지는 곳이다. ASCII, MPEG, JPEG, MIDI등이 있다.

 

L5) 세션 5층은 컴퓨터 간의 세션을 관리하고 연결과 종료를 수행하는데 단방향(simplex)과 양방향(Full/Half duplex)을 지정하게 한다. NetBIOS, SAP, NWLink등이 있다.

 

L4) 전송 4층은 신뢰성 있는 연결을 이루고 흐름제어, 패킷의 분할/재조립, 오류 관리를 통해서 실제적으로 데이터를 전송한다. 방화벽과 프록시 서버가 여기에 속한다. TCP, UDP, SPX등이 있다.

※SPX : Novell사에서 개발한 서버용 운영체제 NetWare용으로 개발된 네트워크 프로토콜. 일반적으로는 IPX로 줄여서 말한다. 주로 LAN용으로 상정하고 만들어진 프로토콜이다.

 

L3) 네트워크 3층은 라우팅(경로찾기)을 담당하는데 프로토콜을 식별하고 오류탐지와 같은 일을 한다. IP, IPX, AppleTalk등이 있다. 라우터가 이 층에 속한다.

 

L2) 데이터링크 2층은 소프트웨어적인 상위 층들 (LLC)을 물리적인 하위 층(MAC)과 연결시켜서 물리적으로 네트워크 사이의 데이터 전송을 담당하는데 장비를 식별하고 NIC의 고유 주소인 MAC주소를 확인하며 데이터의 위/변조와 오류확인을 수행한다. 브리지와 스위치가 이 층에 속한다. Ethernet, TokenRing, FDDI

※FDDI : LAN과 LAN 사이 혹은 컴퓨터와 컴퓨터 사이를 광섬유 케이블로 연결하는 고속 통신망 구조이다.

 

L1) 물리 1층은 물리적 매체로써 접압, 허브, 네트워크 어댑터, 리피너, 케이블 등이 속하는데 물리적인 연결을 설정하고 종료한다.

 

OSI 모델에서 각 층은 캡슐화를 통해서 각 층에서 할 일을 데이터의 헤더에 header와 footer를 추가한 뒤 상/하층으로 전달한다. 프로토콜 데이터 단위(PDU)는 OSI 모델의 정보처리 단위로써 캡슐화 과정에서 만들어진다. PDU는 L7~L5 data, L4 segment, L3 packet(Tcp)/datagram(UDP), L2 frame, L1 bit

※결국 이들은 모두 같은 의미인데 층에 따라서 다르게 부르는 것 뿐이다.

 

데이터 송수신 과정을 간단히 정리!!

1) 사용자는 응용층에만 접속할 수 있기 때문에 사용자(클라이언트)가 https://www.google.com(서버)에 접근할 때(SYN)를 보내면 HTTP는 TCP를 활용하는 응용계층 프로토콜이기 때문에 TCP의 신뢰성 있는 전달을 보장하기 위해서 TCP 헤더를 만들고 패킷 스위칭 기법이기 때문에 여기에 순서번호와 기타 데이터들을 넣어서 캡슐화하면 분석하기 좋은 대상이 된다. 이어서 TCP가 IP에게 패킷을 전달해서 패킷의 논리 주소(IP)를 지정한다. 역시 IP도 다양한 정보를 포함하는 IP 헤더를 생성해서 캡슐화하면 역시 분석하기 좋은 대상이 된다. 이어서 이 패킷은 데이터링크의 이더넷에게 전송되고 그그 다음으로 순서번호에 맞춰 패킷이 완전히 재조립되고 0과 1로 표시되어 물리층으로 전달되면 네트워크의 케이블을 타고 타겟 www.google.com으로 마침내 전달되는 것이다. 데이터 분석에서의 관점은 목적지에 패킷이 전달되는 외부 과정과 일부 내부로 들어오는 과정에 있다.

2) 클라이언트로부터 이 패킷을 받은 google.com 도메인의 웹서버는 클라이언트에게 TCP 확인 응답패킷(SYN+ACK)을 전달한다.

3) 다시 클라이언트는 서버로부터 웹 페이지 정보인 index.html 파일을 수심함(GET)으로써 자신의 요청이 잘 전달 된 것을 알게된다(ACK).

=> 모든 패킷은 대략 이렇게 운용된다. 그러나 네트워크상의 모든 패킷이 응용층 프로토콜로부터 생성되는 것만은 아니라는 사실을 알고 있어야 한다. L2, L3, L4층에서 생성되는 프로토콜 정보만 있는 경우도 있다. 한 예로 세그먼트에서 브로드캐스트에서 사용되는 ARP는 L2층에서만 트래픽을 생성한다.

 

무선(이미 무선이 뿌려지고 있기 때문에 KEY만 가지고 있으면 접속이 가능하다)

비커닝이 되고 있다

2-way handshake

 

연결을 끊을 때

4-way handshake

challenge : user, pw뿐 아니라 capcha(캡차)등을 사용하여 추가적인 인증을 하는 것을 말한다.

 

node A 와node B가 통신할 때 window사이즈는 변동한다.(fluctate 요동치다)

데이터 전송할때 최대 MTU는 1500이다 패킷에서 1460만 사용하고 40은 시그널로 사용한다.

 

스위치

L2층에서 작동되는데 허브와 마찬가지로 스위치도 패킷을 전송하지만 허브와 달리 모든 포트에 데이터를 보내는 방식이 아니라 패킷의 목적지 주소를 보고 해당 노드가 물려있는 포트에게만 패킷을 보내기(충돌 도메인 분할)때문에 불필요한 통신이 줄어들고 처리시간도 절약된다. 스위치는 연결된 모든 노드의 MAC 주소를 '포트_번호_MAC_주소'식으로 저장하고 있는 CAM(Cached Area Memory)에 저장해서 노드를 구별하기 때문에 해당 목적지로 가는 패킷을 해당 포트로만 전송할 수 있다. 스위치는 MAC 주소로 상대방을 알기 때문에 IP주소를 부여할 수 없지만 관리목적으로 IP주소를 줄 수 있는데(VLAN1) 이런 스위치를 관리(managed) 스위치라고 부른다.

=> 스위치에는 타겟 노드의 포트에 허브를 연결하고 타겟 노드와 스니퍼를 함께 물려주면 타겟의 패킷을 얻을 수 있다. 혹은 스위치 하드웨어가 지원하면 특정 타겟노드의 포트를 Port Mirroring해서 패킷을 얻을 수도 있다.

 

라우터

L3층에서 작동되는 라우터는 스위치나 허브보다 더 높은 수준의 기능을 제공한다. 라우터 프로세스 라우팅(경로찾기)이라고 부르는데 RIP, OSPF, EIGRP 등이 있다. 여기서는 IP주소를 사용한다. 라우터는 경로를 찾는 것과 다른 네트워크를 연결한다는 두 가지 큰일을 하지만 경로를 계산하느라 속도가 느려서 L3라우팅-스위치를 사용해서 속도를 증가시키기도 한다.

=> 여기서는 세그먼트에서 특정 노드로 오가는 패킷을 알아내기 어려워서 스니퍼를 두기에 적절하지 않다. 하지만 외부, 특히 웹으로 나가는 게이트웨이가 라우터에 설정되기 때문에 웹에서 오가는 정보를 얻을 때에는 라우터(게이트웨이)가 최적의 장소이다. 라우터의 경루 fa0/0에 서브 인터페이스나 포트 미러링을 해서 스니퍼를 두면 된다.

혹은 ARP Poisoning 기법으로 게이트웨이를 통해서 오가는 모든 패킷을 스니퍼가 모은 뒤 서버에서 오는 패킷만 필터링해서 별도의 파일로 저장한 뒤 분석할 수 있다.

 

트래픽

broadcast, multicast, unicast로 나뉜다.

 

- 브로드캐스트 : 해당 포트가 허브나 스위치일 때 1:n으로 모든 세그먼트에게 데이터를 보낸다. 2계층과 3계층에서의 브로드캐스트 트래픽이 다르게 생성된다. 우리가 자주 보는 FF:FF:FF:FF:FF:FF:FF(255.255.255.255 => broadcast)는 2계층 브로드캐스트이고, 3계층은 Class C라면 00:00:00:00:00:ㄹㄹ(192.168.100.255 => directive broadcast)식이다. 여러 허브와 스위치를 가지고 있는 대규모 네트워크에서 특정 스위치로부터 전송되는 브로드캐스트 패킷은 스위치에서 스위치로 전달되어 네트워크상의 다른 스위치에 있는 포트(노드)로도 전송되어 브로드캐스트 도메인이 확장된다. 브로드캐스트 도메인은 모든 노드가 라우터를 거치지 않고 다른 노드와 직접 전송할 수 있는 네트워크 세그먼트이다. 브로드 캐스트 패킷은 지정된 브로드캐스트 도메인 내(로컬 세그먼트)에서만 순환된다. => 누구나 볼 수 있는 KBS, MBC, EBS등은 브로드캐스트이다.

 

- 멀티캐스트 : 한 노드에서 일정 노드들에게만 1:n으로 일시에 패킷을 전송하는 것을 말하는데 작은 용량의 네트워크 대역폭을 이용해서 패킷을 전송하는 기법이다. 멀티캐스트로 보내기 위해서는 멀티캐스트 그룹을 지정하는 특별한 주소체계를 가지고 있는데 224.0.0.0 ~ 239, 255.255.255 사이의 주소를 가진다. 특정 셋톱박스를 가진 사용자만 볼 수 있는 LG U+ TV, KT TV는 멀티캐스트이다.

=broadband 통신방법을 사용

 

- 유니캐스트 : 한 노드에서 다른 한 노드로 데이터를 1:1로 직접 전송한다 => 전화기, 무전기 등이 유니캐스트이다.

=baseband 통신방법을 사용

 

스니핑

pomiscuous mode 는 snmp 프로토콜을 사용한다.

IRQ : IRQ라고 하는 것은 '인터럽트 요구 라인'(interrupt request lines)을 말한다. CPU는 컴퓨터의 핵심으로 컴퓨터에 붙어 있는 모든 주변기기와 데이터와 신호를 주고 받으며 보드에서 일어나는 모든 일을 총 관장을 한다.

보조적 역할을 주로 하는 주변기기가 많은 일을 하는 대신에 CPU는 자신만의 주된 업무(관리와 계산 등) 을 할 수 있는 셈이다.어떤 일이 발생했을 경우에 주변기기가 CPU에게 이러한 사실을 알려 주어야 한다.

이렇게 주변기기가 CPU에게 어떤 사실을 알리는 일을 Interrupt 라고 하고 이런 라인(line)을 IRQ라고 한다. CPU가 어떤 일을 하다가도 주변기기 에셔 인터럽트요청이 들어 오면 우선순위에 따라서 하던 일을 중단하고 그 요청을 받아 다른 일을 하게 되는 것이다.

 

macof attack : 대부분 조직에서 사용하고 있는 switch의 CAM메모리에 가짜(faked)MAC주소를 생성해서 무차별하게 넣으면 CAM이 무력화 되고, Switch 장비의 역할을 제대로 하지 못해서 Hub가 된다. <= collision domain이 된다.

=> Fail safe가 된다.

 

<실습>

backtrack 실행

terminer실행 -> tcpdump --help(사용 가능한 옵션 확인) -> tcpdump -vxX(실행)

terminer실행 -> macof -i eth0 -s(출발IP) 000.000.000.000 -d(도착IP) 000.000.000.000

back track으로 다시 접속

# echo 1> /proc/sys/net/ipv4/ip_forward

# arpspoof -i eth0 -t(타겟설정) 000.000.000.000 000.000.000.000

# arpspoof -i eth0 -t(타겟 설정) 000.000.000.000 000.000.000.000

WIn7에 접속

arp -a 명령어로 바뀐 MAC주소 확인

133번이 침입자임을 확인

 

300x250
반응형

댓글