본문 바로가기
반응형

프로그래밍194

[네트워크 보안] 2계층, 3계층 개념 및 프로토콜 종류 / ip헤더 체크섬 계산 / DNS서버에 에코 리퀘스트 전송 실습 2계층, 3계층 개념 및 프로토콜 종류 / ip헤더 체크섬 계산 / DNS서버에 에코 리퀘스트 전송 실습에 대해서 정리한다. 2계층의 대표적인 통신 프로토콜 * Ethernet * ARP 1. 2계층에서는 이더넷 헤더를 통해 통신 -> 2계층의 스위치(L2 S/W)가 이더넷 헤더를 참조해서 패킷을 교환해준다. 2. 호스트는 상대방의 맥 어드레스를 알아야만 통신이 가능 -> ARP 캐시 테이블을 참조하여 전송하려는 호스트를 확인 3. ARP 캐시 테이블을 오염시키는 방법으로 목적지를 속일 수 있었다. ( ARP Cache Poisoning ) - ARP Spoofing: sniffing, MITM attack - S/W jamming: 맥 테이블을 공격하는 방법( 맥 테이블을 꽉 채우면 스위치가 dummy.. 2017. 7. 2.
[네트워크 보안] ARP Cache Poisoning을 이용한 ARP Spoofing * 수동 아이피 설정 -/etc/sysconfig/network-scripts/ifcfg-eth0 BOOT=static IPADDR=192.168.6.x NETMASK GATEWAY DNS1 DNS2 네트워크 아이디: 192.168.6.0 넷마스크: 255.255.255.0 게이트웨이: 192.168.6.1 ARP Cache Poisoning - 타겟 호스트의 ARP 캐시 테이블을 오염 ARP Spoofing - 대표적인 sniffing 기법중에 하나 - MITM( Man In the Middle )Attack 양방향으로 통신 가로채기( ARP Spoofing(양방향) 실습 - 실습환경: linux ) - arping.py, arping2.py, sniffer.py, fragrouter툴을 이용해서 실습.. 2017. 6. 23.
[네트워크 보안] ARP 클래스 setter 추가 / arping.py ARP 클래스 setter 추가 / arping.py에 대해서 정리한다. 1. ARP Request 2. ARP Reply eth + arp header * 헤더의 구조는 동일 * ARP Class에 setter를 추가 ARP 요청이 왔을때 이게 진짜 sender가 보낸걸까? * ARP 헤더 내용(sender ip, sender_mac, ...)을 고쳐서 보내도 인증을 하지 않는 부분을 이용해 Cache Poisoning이 가능 * 최근에는 악성코드를 패딩에 실어서 보내는 방법도 사용한다고 한다. ( 보통 탐지 프로그램이 패딩을 잘라서 검사한다는 부분을 이용한 것 ) - ARP 클래스 setter 추가 / arping.py ( arp.py / sniffer.py에 추가된 내용은 분홍색으로 구분 ) * A.. 2017. 6. 22.
[네트워크 보안] ARP / 파이썬3 ARP 클래스 정의 및 packet.py, sniffer.py 수정 ARP / 파이썬3 ARP 클래스 정의 및 packet.py, sniffer.py 수정에 대해서 정리한다. 1계층: 물리계층 2계층: 데이터-링크 계층 PDU: frame, 이더넷 프레임 * 이더넷 헤더 DST + SRC + TYPE + DATA 7 ~ 2 계층: 볼 수 있는 영역, 운영체제 1 계층: 볼 수 없는 영역, 물리(NIC) ( Preamble, SFD, FCS, Padding ) * Preamble, SFD, FCS, Padding 같은 헤더들은 NIC 장치를 지날때 붙는데 수신 패킷에는 패딩이 붙고 송신 패킷에는 패딩이 붙지 않는걸 보면 알 수 있다. * 최소 프레임 크기 : 64바이트 (헤더 14 + 데이터 46 + FCS 4) ( 스니퍼를 이용해서 보면 FCS는 보이지 않고 데이터에 남.. 2017. 6. 22.
[네트워크 보안] 파이썬3 UDP 프로토콜 클래스 정의 및 packet.py / sniffer.py 수정 파이썬3 UDP 프로토콜 클래스 정의 및 packet.py / sniffer.py 수정에 대해서 정리한다. * udp 헤더의 크기 = udp 헤더(고정) + 데이터의 크기(가변) * UDP 세그먼트에서 data 부분을 가져올때 방법 - udp.data.decode( errors='ignore' ) - struct.unpack( '!' + str(20) + 'B', data ) ( struct.unpack()을 할때 포맷문자 부분은 문자열이라는 부분을 이용해서 데이터 길이만 추출해내면 된다 ) - 전체적 패킷 구조: ethernet + ip + udp 헤더의 역할? - 전송되는 데이터의 정보가 담겨있다. 계층별 프로토콜 헤더 - 계층에서 사용되는 정보 네트워크란? - 사용되는 장치들이 유무선으로 연결되어 .. 2017. 6. 21.
[네트워크 보안] 파이썬3 클래스로 각 프로토콜 헤더를 정의( packet.py, eth.py, ip.py, sniffer.py ) 파이썬3 클래스로 각 프로토콜 헤더를 정의에 대해서 정리한다. 바이트 -> 정수, 문자 문자, 정수 -> 바이트 객체지향을 제대로 사용해보려면 프로젝트 규모가 좀 커야지 좋다. ( 객체지향 -> 아주 약간만 커도 굉장히 유용 ) 클래스로 각 프로토콜 헤더를 정의 1. has-a 패킷 클래스(): 이더넷 아이피 유디피 ... * 기본적으로 멤버들은 바이트 형태를 유지 * getter를 통해 가져오거나 setter를 통해서 입력할 때 변환 * setter, getter, 클래스의 캡슐화 2. is-a 이더넷 클래스 아이피 클래스( 이더넷 클래스 ): * 프로토콜 헤더를 익히는게 목적 지난 시간: 변환 오늘 : 클래스 정의 아이피 헤더에 대한 클래스 정의 - 각 클래스 정의 eth.py import struc.. 2017. 6. 20.
[네트워크 보안] 파이썬3 struct 모듈을 이용한 패킷 분석 파이썬3 struct 모듈을 이용한 패킷 분석에 대해서 정 str - 문자 표현시 사용 가능한 자료형 bytes - 변경불가 - 문자에 대한 아스키 코드 표현 bytearray - 변경가능 * 네트워크 통신을 할때는 bytes형을 이용해서 통신을 한다. 1. 네트워크 스트림(장치)으로 부터 읽어들일 때 - bytes -> 정수, 문자열 형태로 변환 2. 네트워크 스트림으로 내보낼 때 - 정수, 문자열 -> bytes * 숫자 타입 같은 경우에는 struct 모듈을 이용해서 pack, unpack ( b'10' 불가능 ) byte order -> 배치 순서 ABCD -> 메모리 저장 -> DCBA (little endian) -> 네트워크 스트림 -> (big endian) ( int 같은 숫자 자료형은 .. 2017. 6. 17.
[네트워크 보안] UDP 통신 계층별 분석 UDP 통신 계층별 분석에 대해서 정리한다. ※ UDP - 네트워크상에서 어떠한 일이 일어나는지? - 눈에 보이지 않는 것들 4 -> 3 -> 2 -> 1: 확인(분석) 1 -> 2 -> 패킷 직접 제작(프로토콜) * 스니핑(sniffing) - 다른 사람의 패킷을 가로채는 기법 - 덤프 : 저장한다는 개념메모리 덤프 * 로우 소켓 프로그래밍: 스니퍼(덤프) 프로그램 - 무엇을 덤프 할 것인가? - NIC 장치로 들어오거나 나가는 것들(패킷) ! 패킷이 항상 두개가 아닐 수 있다! 네트워크는 항상 실행을 보장할 수 없다 * 네트워크 엔지니어: 장비(라우터, 스위치, ... ) - 실력: 트러블 슈팅, 네트워크 설계, ... - 실무 경험을 중시 udp serverdata: b"\x00PV;%\xf8\x0.. 2017. 6. 16.