관리 메뉴

IT창고

Network Scanning Program 본문

보안/Network

Network Scanning Program

방구석여포 2018. 3. 19. 14:42

이전 과정에서 SOCK_STREAM(tcp통신)과 SOCK_DGRAM(udp통신) 소켓을 사용해보았습니다. 이번에는 SOCK_RAW를 사용해보도록 하겠습니다.


RAW소켓을 사용하여 특정장치의 패킷을 검사하는 sniffer를 만들어보겠습니다.

스니핑이란 패킷를 가로채거나 네트워크 통신내용을 도청 하는 행위를 말합니다. 위의 프로그램으로 네트워크 통신정보를 확인해보겠습니다.

네트워크 통신내용입니다. 실시간으로 계속 확인이되며 그냥 분석하려면 복잡해서 분석하기가 힘듭니다.

좀더 확실하게 분석해보기 위하여 mycat이란 텍스트를 다른 리눅스서버로 UDP통신해서 패킷을 확인해보겠습니다.

네트워크 통신내용을 로그파일로 남겨서 저장해두었습니다. UDP통신으로 전송한 패킷을 확인할수있습니다.

위의 패킷은 UDP통신으로 했으므로 UDP헤더에 대해 알아보겠습니다.

헤더(Header)란 보내려는 데이터의 정보를 표현한 것 입니다.

UDP헤더에는 아주 기본적인 정보만을 담고있습니다. 전체크기는 8byte로 고정이며 출발지(src)(2), 목적지(dst)(2), size(길이)(2), checksum(2) 정도의 정보만을 가지고 있습니다. UDP는 이러한 정보만으로 통신을 하게됩니다. 담겨있는 정보가 부족하므로 신뢰성은 떨어지지만 그만큼 빠른 통신을 할수있습니다. 

위의 패킷을 확인해보면 UDP의 헤더는 \xe8\x88\xb8\x00\r\xeb\xf5rk 가 됩니다.

네트워크로 데이터를 보내기 위해서는 반드시 bytes, bytearray로 형변환을 해줘야만 합니다. 

UDP헤더정보를 보면 상대가 어떤 포트가 열려져있지도 확인해볼수있습니다.

실제로 다른PC의 리눅스에서 35000번 포트를 열어두고 UDP통신을 했는데 어떤 포트를 사용했는지 UDP헤더에서도 포트정보를 찾아볼수있습니다.

또한 패킷정보를 보면 IP헤더, Ethernet 헤더 정보가 있습니다.

위의 사진이 IP헤더로서 보통 20byte의 크기를 가지며 고정크기가 아닌 가변크기를 가집니다. UDP헤더 바로앞의 20byte가 IP헤더에 해당됩니다.


b'\x00\x0c)\xcc\xaaq\x00PV2\xc2\xbf\x08\x00E\x00\x00!\x00\x00@\x00@\x11\xb7j\xc0\xa8\x01\t\xc0\xa8\x01\x08\xc2\xe8\x88\xb8\x00\r\xeb\xf5mycat'

노란색이 Ethernet헤더, 파란색이 IP(Internet protocol)헤더, 빨간색이 UDP/TCP헤더입니다.


Tip 

- IPv4

Layer 3에 대해 알아보겠습니다.

3계층은 네트워크계층으로서 중간 라우터를 통한 라우팅을 포함하여 패킷 포워딩을 담당합니다.(서로 다른 네트워크와 연결)

PDU(protocol Data Unit)는 패킷(packet)이고 주소체계는 IPv4 , IPv6이며 프로토콜은 IP(Internet protocol), 라우팅프로토콜, IPSEC, .... 입니다.


네트워크 IP의 관한 자세한 내용은 2017/11/18 - [서버운영/Network] - 네트워크 IP 주소 여기를 참고합니다.


마지막으로 Ethernet헤더에 대해 알아보겠습니다.

위에서 캡쳐한 패킷을 보면 \x00\x0c)\xcc\xaaq\x00PV2\xc2\xbf\x08\x00 여기가 이더넷헤더에 해당합니다.

이더넷 헤더는 Layer 2의 데이터링크계층으로서 PDU는 프레임(frame)이고 주소체계는 MAC(Media Access Control)주소이며 프로토콜은 VPN(PPTP,L2TP,...), ARP 를 사용합니다.

이더넷 헤더는 14바이트의 고정크기를 가집니다.

이더넷헤더를 확인해보면 도착지MAC주소, 출발지MAC주소와 이더넷 타입을 알수있습니다. 

도착지(6), 출발지(6), 이더넷타입(2)로 총 14byte의 크기를 가진걸 알수있습니다.

마지막의 이더넷타입의 0800은 IPv4를 의미합니다.


https://en.wikipedia.org/wiki/EtherType 이더넷 타입의 정보는 여기서 참고합니다.



Tip

- Layer 4(전송계층) 정리

4계층은 전송계층으로서 데이터의 전송을 담당합니다. 어떤 통신방식을 사용하는지 어디로 데이터가 전달되는지 어떤 프로토콜을 사용하는지의 정보가 있습니다. PDU는 세그먼트(segment)이고 주소체계는 포트(port)이며 프로토콜은 UDP, TCP, ...입니다.


- Layer 1(물리계층)은 모든 물리적인 전기신호로서 만약 1계층에서 분석이 하고 싶다면 오실로스코프를 이용하여 아날로그 신호를 분석해야합니다.

Comments