프로젝트하면서 공부한 것을 적어놓은 것입니다. 할 일같은 것은 스킵하세요.
할 일
attack.py
- 공격 코드를 패킷으로 만들기
- 만든 패킷에 'bascope' 문자열 붙이기
- 패킷 전송
참고
exploit-db
scapy
scapy를 공부하기 전에, 네트워크 패킷에 대해 자세히 알아봐야겠다.
tcp/ip -> 패킷 전송과정 -> scapy 순서
TCP/IP
- 패킷 통신 방식의 IP(인터넷 프로토콜)와 TCP(전송 조절 프로토콜)로 이루어져 있다.
- IP는 패킷 전달 여부를 보증하지 않기 때문에, 패킷을 보낸 순서와 받는 순서가 다를 수 있다.
- TCP는 IP 위에서 동작하는 프로토콜로, 데이터의 전달을 보증하고 보낸 순서대로 받게 해준다.
- HTTP, FTP, SMTP 등 TCP를 기반으로 한 많은 수의 애플리케이션 프로토콜이 IP위에서 동작하기 때문에, 묶어서 TCP/IP로 부르기도 한다.
정리하면,
요즘 인터넷 통신의 대부분은 패킷통신이다.
TCP/IP는 이런 패킷 통신을 위한 인터넷 규약이다.
IP는 데이터 조각들을 최대한 빨리 목적지로 보내는 역할을 한다.
TCP는 IP보단 느리지만 꼼꼼한 방식을 사용한다. 도착한 조각들을 점검해 줄을 세우고 망가지거나 빠진 조각들을 재요청한다.
이렇게 두 방식을 조합해 인터넷 데이터 통신을 하는 것을 묶어 TCP/IP라고 부른다.
패킷 전송과정
송신
- Application Layer
실제 데이터를 응용 계층에 넘기며, 데이터를 인코딩하고 수신자와의 통신할 준비를 한다.
- Transport Layer
상위 계층의 데이터에 TCP 헤더를 붙인다.
데이터의 크기가 크면 MTU 단위로 쪼개고, 이를 세그먼트라고 한다.
세그먼트를 송신할 때마다 쪼개진 데이터의 순서를 알 수 있도록 sequence 번호가 TCP 헤더에 기록된다.
- Internet Layer
세그먼트에 IP 헤더를 붙인다.
이 계층에서는 데이터 단위를 패킷이라고 한다.
- Network Interface Layer
패킷에 ethernet 헤더와 tail(FCS)이 붙는다.
헤더에는 송신자와 수신자의 MAC 주소가 담겨있고, tail에는 Frame Check Sequence가 있다.
FCS는 데이터 전송 도중에 에러가 있는지 판별하는데 사용된다.
이 계층에서의 데이터 단위를 프레임이라고 한다.
수신
- Network Interface Layer
Enthernet 헤더를 검사하여 destination MAC 주소가 자신의 주소와 일치하는지 비교
일치하면 상위 계층으로 보낸다.
- Internet Layer
IP 헤더를 검사하여 destination IP 주소가 자신의 IP와 일치하는지 비교, 일치하면 상위 계층으로 보낸다.
- Transport Layer
TCP 헤더의 sequence 번호를 검사하여 데이터들이 누락되지는 않았는지 확인하고, 데이터들이 모두 수신될 때까지 대기한 후 재조립한다.
- Application Layer
데이터를 디코딩하여 사용자에게 데이터를 넘긴다.
ICMP
인터넷 제어 메시지 프로토콜
오류 메시지를 전송받는데 주로 쓰인다.
TCP/IP 계층 모델에서 network 계층(IP도 network 계층)
- ICMP 메시지들은 일반적으로 IP 동작에서 진단이나 제어로 사용되거나 오류에 대한 응답으로 만들어진다.
- ICMP 오류들은 원래 패킷의 소스 IP 주소로 보내지게 된다.
의문점
IPv4 패킷 구조가 저렇게 생겼구나, 까지는 알겠는데
그래서 패킷을 만들때 저 header를 다 붙여야 하나?
scapy를 어떻게 사용하지?
scapy
* 설치
pip install scapy 를 해도 import 에러가 난다.
ubuntu vm에서 git clone으로 다시 scapy 설치를 진행했다. 윈도우에선 아직...
git clone https://github.com/secdev/scapy
cd scapy
sudo python setup.py install
./run_scapy
성공한 것 같은 화면이 나오면 동작 확인 끝
scapy를 어떻게 활용할 것인가
는 다음 포스트에 적을 것이다...
참고
https://brunch.co.kr/@wangho/6
03. 개알못을 위한 TCP/IP의 개념
1부 웹의 시작과 현재 | 그것은 마치 땅 위의 길과 같은 것이다. 사실 땅 위에는 본래 길이 없었다. 걸어가는 사람이 많아지면서 곧 길이 된 것이다. - 루쉰, 고향 하이퍼텍스트 이야기부터 시작
brunch.co.kr
https://engineeringcode.tistory.com/49
IPv4(Internet Protocol Version 4) 개요와 패킷 구조
본 글은 2017년 5월 29일 8시 34분에 썼던 글이며 블로그 자료 이전으로 날짜와 일부 내용이 갱신되었습니다. IPv4(Internet Protocol Version 4)는 1981년 9월에 IETF RFC 791에 정의된 TCP/IP에서 활용하는..
engineeringcode.tistory.com
https://codedragon.tistory.com/7390
IP 프로토콜(IP Protocol). IP 데이터그램의 구조, TOS 항목 구성 도식도
IP 프로토콜(IP Protocol) · 직접 데이터를 주고받는 것에 관한 프로토콜 · 보내고자 하는 자료를 패킷으로 쪼갭니다. · 목적지 주소를 지정합니다. · ..
codedragon.tistory.com
https://cyber0946.tistory.com/48
Python 패킷스니퍼(Python packet sniffer)
본 글에서는 scapy라는 툴을 통해 파이썬으로 패킷 스니퍼를 구현하는 내용을 정리해보고자 한다. 먼저 scapy는 네트워크ㅏ 패킷을 보내거나 캡처, 또는 임의의 패킷을 생성할 수 있도록 도와주는
cyber0946.tistory.com
https://webstone.tistory.com/103
sniff()함수를 이용한 패킷 스니퍼 구현하기.
지난 시간때 scapy를 이용하여 간단한 스니퍼를 구현해보았다. 이번 시간에는 scapy에서 제공하는 sniff()함수를 이용하여 패킷 스니퍼를 구현해보자. 소스코드. ※ 부가 설명. sniff()가 캡처한 패킷
webstone.tistory.com
https://icarus8050.tistory.com/103
[Network] TCP/IP 모델 패킷 전송 과정
TCP/IP 모델 네트워크 통신을 위한 과정을 분류하는 모델로 OSI 7 계층이라는 표준이 존재합니다. 그리고 우리가 HTTP 통신을 하기 위해 주로 사용하는 TCP/IP 프로토콜을 OSI 7 계층에 맞추어 추상화
icarus8050.tistory.com
'네트워크' 카테고리의 다른 글
socket 통신 과정 (0) | 2021.07.06 |
---|---|
scapy를 활용한 패킷 스니핑, 변조, 재전송 (0) | 2021.07.05 |
scan, tcp/udp, nmap 계속 복습 및 정리 (0) | 2021.07.01 |
nmap - ip scan/ port scan (0) | 2021.06.30 |
스캔 - tcp open scan, stealth scan, udp scan (0) | 2021.06.30 |
댓글