Raw 소켓이란?
- 프로토콜을 설계하여 구현하거나 패킷을 조작할 때 사용한다.
- 커널 수준에서 다루는 프로토콜 헤더를 애플리케이션 수준에서 직접 조작할 수 있다.
( 기존의 TCP 또는 UDP 소켓을 사용하는 방식보다 세부적인 제어가 가능 )
- 프로토콜 헤더의 구조와 동작 원리에 대한 이해가 필요하므로 상대적으로 어렵다.
- 커널에서 프로토콜 헤더를 다루기 때문에 Raw 소켓을 생성하거나 조작할 수 있는 권한과 생성할 수 있는
Raw 소켓의 종류도 운영체제마다 다르며 루트 권한을 가지고 있어야 Raw 소켓을 생성 할 수 있다.
- 해킹을 위해 악용할 가능성이 있다.
Raw Socket
from socket import *
raw_sock = socket( AF_PACKET , SOCK_RAW )
raw_sock.bind( ('eth0' , SOCK_RAW) )
while True:
raw_data = raw_sock.recv( 65535 )
print( raw_data )
실습
같은 호스트에서 실행하면 실습이 잘 진행되지 않으므로 다른 호스트에서 진행해준다.
호스트(IP:192.168.11.166)의 네트워크 인터페이스를 지나다니는 패킷을 파일에 담아준다.
서버를 열어준다.
호스트(IP:192.168.11.141)에서 연결을 신청해서 데이터를 보낸다.
그다음 log.txt 파일을 확인해보면
패킷에서 'hello' 라는 정보를 찾을 수 있다.
'Hacking > Network' 카테고리의 다른 글
[6일차] IP 헤더 패킷 분석하기 (0) | 2017.09.19 |
---|---|
[5일차] UDP 헤더 패킷 분석하기 (0) | 2017.09.19 |
[4일차] 파이썬을 이용한 UDP 소켓 프로그래밍 (0) | 2017.09.14 |
파이썬을 이용한 TCP 소켓 프로그래밍 (0) | 2017.09.13 |
파이썬 설치 (0) | 2017.09.11 |
WRITTEN BY
,