2016. 4. 27. 16:50ㆍ네트워크 보안 수업/네트워크 취약점 분석
wireshark: 모니터링 툴
ARP REQUEST
0000 ff ff ff ff ff ff 90 9f 33 ec ca 07 08 06 00 01 )
0010 08 00 06 04 00 01 90 9f 33 ec ca 07 c0 a8 0f 63 ) 이더넷 프레임
0020 00 00 00 00 00 00 c0 a8 0f 0a )
ff ff ff ff ff ff 90 9f 33 ec ca 07 08 06 맨 처음 14바이트는 이더넷 헤더라 부름
00 ff ff ff ff ff ff 도착지 맥 어드레스
00 90 9f 33 ec ca 07 출발지 맥 어드레스
00 08 06 프로토콜 타입 - ARP
00 00 01 하드웨어 타입
10 08 00 IP
10 06 하드웨어 크기
10 04 ip 버전
10 00 01 op코드 리퀘스트는(맥주소를 물어보는) 01
리플라이는(맥주소를 알려주는) 02
10 90 9f 33 ec ca 07 보내는 사람의 맥주소
10 c0 a8 0f 63 보내는 사람의 IP
20 00 00 00 00 00 00 받는사람의 맥 어드레스, 모르므로 0으로 채움
20 c0 a8 0f 0a 받는사람의 IP
ARP Reply
0000 90 9f 33 ec ca 07 50 6a 03 af 2a 98 08 06 00 01
0010 08 00 06 04 00 02 50 6a 03 af 2a 98 c0 a8 0f 01
0020 90 9f 33 ec ca 07 c0 a8 0f 07
0000 ff ff ff ff ff ff 90 9f 33 ec ca 07 08 06 00 01
0010 08 00 06 04 00 01 90 9f 33 ec ca 07 c0 a8 0f 63
0020 00 00 00 00 00 00 c0 a8 0f 0a
[실습]: ARP REQUEST
192.168.15.140 ---> 192.168.15.150
ff ff ff ff ff ff 08 00 27 25 5d 35 08 06 00 01
08 00 06 04 00 01 08 00 27 25 5d 35 c0 a8 0f 8c
00 00 00 00 00 00 c0 a8 0f 96
리눅스 네트워크 프로그래밍
- 리눅스 소켓 프로그래밍(RAW socket)
- 소켓: 네트워크 스트림에 대한 식별자
yum install -y wireshark.x86_64
#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] = 0x25;
data[10] = 0x5d;
data[11] = 0x35;
//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] = 0x25;
data[26] = 0x5d;
data[27] = 0x35;
//sender ip address
data[28] = 0xc0;
data[29] = 0xa8;
data[30] = 0x0f;
data[31] = 0x8c;
//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] = 0x0f;
data[41] = 0x96;
//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 |
네트워크 보안 수업 4일차 - 코리아 정보보안 IT학원 (0) | 2016.05.02 |
네트워크 보안 수업 3일차 - 코리아 정보보안 IT학원 (0) | 2016.04.28 |
네트워크 보안 수업 1일차 - 코리아 정보보안 IT학원 (0) | 2016.04.26 |