2016. 5. 2. 16:50ㆍ네트워크 보안 수업/네트워크 취약점 분석
L3(Network)
- 서로 다른 네트워크 간의 통신
- 주소체계: IP address
- 1바이트 4자리 혹은 6자리 숫자로 이루어진 주소체계
- 각 숫자를 '.',':' 으로 구분
- 프로토콜: IP, ICMP, routing protocol(RIP, OSPF, ...)
- 장비: router, L3 S/W, F/W, ...
- PDU (Protocol Data Unit): Packet
0000 45 앞에 4는 ip버젼, 뒤에 5는 ip header의 크기. 오른쪽으로 2번 시프트 연산 후 저장
0100 0101 가변적인 크기. 그러므로 크기는 20바이트
0000 00 서비스타입. 딱히... 그냥 0
0000 00 3c ip packet 전체의 크기. 이더넷 헤더의 크기를 제외한 전체 크기
0000 49 86 id 분할된 패킷을 다시 재조합 할 때 쓰임
0000 00 00 플래그. 16개의 비트중 3개의 비트를 플래그가 씀
000 더이상 분할된 플래그가 없다.
001 분할된 플래그가 있다
010 플래그가 분할되지 않았다.
100 예약
나머지 5개 비트는 사용하지 않음
0000 80 TTL 홉의 갯수, 경로 상에 몇개의 라우터가 있는지
0000 01 프로토콜 타입 icmp = 1 tcp = 6 udp = 17
0000 51 c7 체크섬
0000 c0 a8 0f 10 출발지 ip
0010 c0 a8 0f 13 도착지 ip
icmp header
- icmp == ping(x)
*icmp(internet control message Protocol)
- 네트워크 상에 에러를 제어
#include <stdio.h>
#include <unistd.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <netinet/ip.h>
#include <net/if.h>
#include <net/if_arp.h>
#include <linux/if_packet.h>
#include <linux/if_ether.h>
#include <net/ethernet.h>
#include <arpa/inet.h>
int main(int argc, char *argv[])
{
int sock = 0;
struct sockaddr_ll sll;
char data[42] = {0,};
//create socket
sock = socket(PF_PACKET, SOCK_RAW, 0);
//socket struct
sll.sll_family = PF_PACKET;
sll.sll_ifindex = if_nametoindex("enp0s3");
sll.sll_halen = 6;
//data fill
// dst mac address
data[0] = 0xff;
data[1] = 0xff;
data[2] = 0xff;
data[3] = 0xff;
data[4] = 0xff;
data[5] = 0xff;
//src mac address
data[6] = 0x08;
data[7] = 0x00;
data[8] = 0x27;
data[9] = 0xe1;
data[10] = 0x98;
data[11] = 0xd1;
//ether type
data[12] = 0x08;
data[13] = 0x06;
//hw type
data[14] = 0x00;
data[15] = 0x01;
//proto type
data[16] = 0x08;
data[17] = 0x00;
//hw len
data[18] = 0x06;
//proto len
data[19] = 0x04;
//opcode
data[20] = 0x00;
data[21] = 0x01;
//sender mac address
data[22] = 0x08;
data[23] = 0x00;
data[24] = 0x27;
data[25] = 0xe1;
data[26] = 0x98;
data[27] = 0xd1;
//sender ip address
data[28] = 0xc0;
data[29] = 0xa8;
data[30] = 0x19;
data[31] = 0x0b;
//target mac address
data[32] = 0x00;
data[33] = 0x00;
data[34] = 0x00;
data[35] = 0x00;
data[36] = 0x00;
data[37] = 0x00;
//target ip address
data[38] = 0xc0;
data[39] = 0xa8;
data[40] = 0x19;
data[41] = 0x01;
//send
sendto(sock, data, sizeof(data), 0, (struct sockaddr *)&sll, sizeof(sll));
return 0;
}
'네트워크 보안 수업 > 네트워크 취약점 분석' 카테고리의 다른 글
네트워크 보안 수업 6일차 - 코리아 정보보안 IT학원 (0) | 2016.05.04 |
---|---|
네트워크 보안 수업 5일차 - 코리아 정보보안 IT학원 (0) | 2016.05.03 |
네트워크 보안 수업 3일차 - 코리아 정보보안 IT학원 (0) | 2016.04.28 |
네트워크 보안 수업 2일차 - 코리아 정보보안 IT학원 (0) | 2016.04.27 |
네트워크 보안 수업 1일차 - 코리아 정보보안 IT학원 (0) | 2016.04.26 |