본문 바로가기
반응형

프로그래밍194

[네트워크 보안] TCP 통신 직접 구현 해보기 / tcping.py TCP 통신 직접 만들어 보기(raw) / tcping.py에 대해서 정리한다. ! 로우 소켓을 이용한 TCP 통신을 직접 만들어봄으로써 TCP 통신 과정을 이해한다. 1. tcp 동기화 2. 데이터 송/수신 3. 동기화 해제 - raw 패킷으로 TCP 통신 직접 구현 * 직접 만들어보면서 TCP 통신을 이해하는 과정이기 때문에 순서대로 하나씩 구현 해봤다.* TCP 통신을 하기 위해서 이전에 만들었던 TCP 에코서버를 사용했다.* 클라이언트 측에서 SYN 패킷을 보내면 서버와 3-way handshake 과정을 거치고 서로 간의 세션 연결이 되면 클라이언트 측에서 'hello'라는 데이터를 PSH+ACK을 보내게 되고 에코 서버이기 때문에 클라이언트가 보낸 데이터를 그대로 다시 보내주게 된다. 그 이후.. 2017. 7. 19.
[네트워크 보안] TCP SYN Flooding TCP SYN Flooding에 대해서 정리한다. * SYN Flooding - TCP 통신에서 세션 연결을 위해 서버에게 SYN 패킷을 보내면 서버는 SYN + ACK로 응답을 하면서 SYN_RECV 상태가 되고 클라이언트에게 응답(ACK)을 받기 전까지는 그 상태를 일정 시간동안 유지하고 있게 되는데 그점을 이용해서 여러 아이피 혹은 포트로 변경해 가면서 출발지 정보를 바꿔 다수의 SYN 패킷을 서버로 보내 여러개의 세션을 생성 시켜 다수의 SYN_RECV 상태를 만들어 해당 리소스를 다 소모시켜 다른 사용자가 TCP 통신을 하지 못하도록 하는 공격 - 예전에는 DOS 공격만으로도 SYN Flooding이 가능했지만 패치가 되어서 요즘에는 DDOS 공격을 이용한 공격이 아니라면 하나의 호스트만으로는 .. 2017. 7. 15.
[네트워크 보안] TCP 포트 스캔 / TCP SYN 패킷 전송 TCP 포트 스캔 / TCP SYN 패킷 전송에 대해서 정리한다. TCP는 플래그에 따라서 다양한 통신이 존재 1. 열린 포트에 대한 검색 1). half-open 방식( 스텔스 방식 ) - 로그에 남지 않으면서 포트를 스캔 할 수 있는 방식 ( 완벽하게 세션을 맺지 않는다 ) - 포트가 열려있는 경우: SYN + ACK(18) 응답이 온다 - 포트가 닫혀 있는 경우: RST + ACK(20) 응답이 온다 ( 표준 동작은 응답을 안해주도록 되있는데 운영체제마다 동작이 다르다 ) 2). full-scan 방식 - 세션을 완전히 맺는 방식 - 로그에 기록이 남는다. ( 방화벽이나 다른 상황 때문에 세션이 완전히 맺어지지 않는 경우도 있다 ) 2. 닫힌 포트에 대한 검색 - 닫혀있는 경우에만 응답이 온다. -.. 2017. 7. 14.

[네트워크 보안] 스니퍼를 이용한 TCP 이해 스니퍼를 이용한 TCP 패킷 분석에 대해서 정리한다. - flag 필드 0 0 0 0 0 0 U A P R S F F: Finish(FIN) S: Synchronize(SYN) R: Reset(RST) P: Push(PSH) -> 데이터를 전달하는 경우 A: Acknowledgement(ACK) U: Urgent(URG) - 스니퍼를 이용해서 TCP 통신에 대해서 이해한다. * 클라이언트( 192.168.6.112 )에서 서버( 192.168.6.200 )로 TCP 통신을 하고 서버는 클라이언트가 보낸 데이터를 그대로(echo) 돌려주도록 구성되있다. * 서버에게 11이라는 2바이트 크기의 데이터를 보냈다. 00:50:56:3b:25:f8 -> 00:50:56:31:a8:43 ethernet type: .. 2017. 7. 12.
[네트워크 보안] TCP 헤더 / 클래스 정의 TCP 헤더 / 클래스 정의에 대해서 정리한다. L4: UDP, TCP - 흐름제어, 오류제어, ... - 주소체계: 포트(port), well-known port * well-known port ssh: 22 telnet: 23 ftp: 21 dns: 53 http: 80 imap: 143 pop3: 110 mysql: 3306 ... - 기본 포트이긴하지만 서비스 설정에 따라서 달라질수 있다. - 리눅스는 /etc/services에서 well-known port 확인 가능하다. TCP( Transmission Control Protocol ): 전송 제어 프로토콜 - 신뢰기반 - UDP에 비하면 느리다. 1). 출발지 포트(2바이트)2). 도착지 포트(2바이트)3). 시퀀스 넘버(4바이트)4). Ac.. 2017. 7. 12.
[네트워크 보안] UDP를 이용한 DDOS - UDP Flooding UDP를 이용한 DDOS - UDP Flooding에 대해서 정리한다. udp scanning 1. 열린 포트: 응답이 없거나, 있거나 2. 닫힌 포트: icmp 에러 메시지 3. 응답이 없으면 포트가 정말 열려있지 않은가? - 방화벽에 의해서 차단 되었거나 - 네트워크 장애 * 네트워크는 여러가지 변수가 있기 때문에 응답이 없다고 100% 열려있는 포트라고 확신할 순 없다!! DDOS( Distribute Denial of Service ) * UDP Flooding - 출발지 IP Spoofing을 해서 닫힌 포트로 UDP 패킷을 계속 보내게 되면 서로간의 불필요한 트래픽이 쌓여 네트워크가 마비된다. - 목표 하나를 대상으로 하는 공격이 아닌 네트워크 대역폭을 대상으로 한다. ( 불필요한 트래픽을 발.. 2017. 7. 5.

[네트워크 보안] udp 체크섬 계산 / 포트 스캐닝 udp 체크섬 계산 / 포트 스캐닝에 대해서 정리한다. udp chksum( 체크섬 ) - udp 헤더만 가지고 체크섬을 계산하지 않는다. - ip 헤더의 일부 필드를 같이 포함해서 계산한다. - 체크섬을 계산하기 위한 pseudo header를 만들어서 계산 - icmp 헤더, ip 헤더의 경우 체크섬 계산 1. icmp 헤더를 만든다. -> 체크섬 계산 2. ip 헤더를 만든다. -> 체크섬 계산 3. eth 헤더를 만든다. - udp, tcp 헤더의 경우 체크섬 계산 1. data -> 문자열(ex. "hello") 2. udp 헤더를 만든다. -> 체크섬을 계산할 수 없다. ( ip 헤더의 일부를 포함해서 계산 ) 3. ip 헤더를 만든다. -> 체크섬을 계산 3.5 pseudo 헤더를 만든다. .. 2017. 7. 4.
[네트워크 보안] IP Fragment( 단편화 ) IP Fragment( 단편화 )에 대해서 정리한다. IP Fragmentation( 단편화 ) 3계층 - 최대전송사이즈(MTU) - Maximum Transfer Unit: 1500byte ( Default 값 ) - ip packet의 최소 사이즈: 8byte identification - 단편화된 아이피 패킷을 식별 flag - 000: 단편화(분할)되지 않은 경우 - 010: 단편화를 하지 않는 경우 - 001: 단편화가 된 경우( 이 뒤에 단편화된 패킷이 존재 ) fragment offset - 단편화 된 패킷의 원래 위치( 시작 위치 ) ! 도착지에서 재조립 하기 위해 필요한 정보 MTU: 1500 -> 실제 데이터의 크기: 1480 -> 전체 프레임의 크기: 1514 실제 데이터의 크기 = .. 2017. 7. 2.