목록Hacking :: The Art Of Exploitation (13)
보안 / AI / 프로그래밍
[0x432] IP HEADER CheckSum 구하기 - CheckSum 은 패킷이 잘 도착했는지 오류를 검출하기 위해서 존재한다고 했었는데, 그 오류 검출 하는 방법에 대해서 배워보겠습니다. - 일단 WireShark 라는 패킷 캡처 프로그램을 이용해서 아무 패킷이나 잡아봤습니다. 첫번째 사진 IP HEADER = { 4500 0028 c280 4000 7806 1209 0d6b 2a0e 79a8 7d25 } - CheckSum 값이 (16진수로) 1209 인 것을 알 수 있습니다. - 그럼 이제 계산법에 대해서 배워보겠습니다. 계산법은 아래와 같습니다. 1. Word 단위로 자릅니다. 2. 자른 Word 단위의 값들을 일단 다 더해줍니다. ( Carry 발생은 마지막에 처리 )( Carry 발생 =..
[0x433] 전송 계층 - 전송 계층은 TCP 프로토콜과 UDP 프로토콜을 주로 사용한다. - TCP 프로토콜은 모든 데이터가 목적지까지 순서대로 도착하도록 보장한다. - 패킷의 순서가 뒤바뀌어 오더라도 TCP 프로토콜은 패킷의 순서를 맞춘 후 상위 계층으로 올려 보낸다. - 중간에 있는 패킷을 잃어버린다면, 목적지 호스트의 TCP 에서는 출발지 호스트가 손실된 패킷을 재전송 할 때까지 연결을 끊지 않고 기다린다. - 이런 모든 기능은 TCP 플래그와 순서 번호로 값을 추적하므로 가능하다. [0x433] 전송 계층 - TCP Header 내부 구조 # 저번 시간에 배웠던 IP Header 가 TCP Header 앞에 있는 것을 확인 할 수 있다. ㅇ Source / Destination Port Num..
[0x432] 네트워크 계층 - 네트워크 계층은 IP 프로토콜을 사용하며 대부분 IP 버전 4 (= IPv4) 를 사용한다. - IP 주소는 xx.xx.xx.xx 형태의 4바이트 배열 형식으로 구성된다. - 네트워크 계층의 패킷 IP 헤더는 보통 20바이트 이고, 여러 필드와 비트플래그로 구성된다. [0x432] 네트워크 계층 - IP 헤더 내부 구조 ㅇ Verson ( 4 bits ) - IP 버전을 나타내며 현재는 보통 IPv4 를 사용한다. ㅇ IHL ( = Header Length ) ( 4 bits ) - Internet Header Length 의 약자이며 헤더의 길이를 나타낸다. - 4 Byte (32 bits / WORD) 단위로 헤더 길이를 표시한다. 즉, IHL 의 4배한 값이 헤더의 ..
[0x431] 데이터 링크 계층 - 데이터 링크 계층에는 이터넷 (Ethernet) 프로토콜이 있다. - 이더넷 프로토콜에서 사용하는 이더넷 주소는 MAC (Media Access Control) 주소, 하드웨어 주소 라고도 부른다. - 모든 이더넷 장치는 6 바이트의 전세계적으로 고유한 주소를 할당 받는다. ( xx : xx : xx : xx : xx : xx 형태) - 하나의 네트워크에 속하는 두 컴퓨터는 MAC 주소를 알기 전까지 서로 통신 할 수 없다. - 그러므로 네트워크에서 MAC 주소를 알아내기 위해서 ARP 를 사용한다. 의문점 : 하나의 네트워크에 속하는 두 컴퓨터는 왜 MAC 주소를 알 기 전까지 서로 통신 할 수 없을까? 해결 : ...(-ing) [0x431] 데이터 링크 계층 - ..
엔디언(Endianness)은 컴퓨터의 메모리와 같은 1차원의 공간에 여러 개의 연속된 대상을 배열하는 방법을 뜻하며, 바이트를 배열하는 방법을 특히 바이트 순서(Byte order)라 한다. (출처 : Wikipedia) 컴퓨터 아키텍쳐에 따라서 빅 엔디언, 리틀 엔디언, 미들 엔디언.. 등등으로 나뉜다. 주로 빅 엔디언과 리틀 엔디언이 주를 이룬다. 네트워크 바이트 순서와 호스트 바이트 순서란? 컴퓨터 아키텍쳐에 따라 호스트 바이트 순서가 다르기 때문에 서로 다른 바이트 순서를 사용하는 컴퓨터들이 데이터를 주고 받을 때 문제 발생하므로, 이 문제점을 해결하기 위해 네트워크를 통해 데이터를 전송할 때는 통일된 방식을 이용해 데이터를 전송하기로 약속을 했는데, 이것이 바로 네트워크 바이트 순서 이다. 네..
◇ 프로토콜 ( Protocol ) 이란? - 공통의 데이터 교환 방법 및 순서에 대해 정의한 의사소통 약속, 규악 혹은 규칙 체계를 말한다 ( 출처 : WIKIPEDIA ) ◇ 소켓 ( Socket ) 이란? - 소켓은 운영체제를 통해 네트워크 통신을 하는 표준 방법이다. - 소켓은 전화 교환대의 소켓처럼 연결의 종점 ( End Point ) 으로 생각할 수 있다. ◇ C 소켓 관련 함수 int sockfd = socket(int domain, int type, int protocol) - socket() : 소켓 생성 함수이다. - sockfd : 소켓 파일 서술자이다. 파일 서술자 처럼 다뤄진다. - domain : 소켓의 프로토콜 패밀리 ( Protocol Family ) 를 지정한다. 프로토콜 ..