본문 바로가기
Lab & Research/Information Security

TCP/IP 보안

by jaeaemin 2022. 6. 2.

TCP/IP Security


1. Internet Protocol Review

 

[1] Internet protocol stack 

application  네트워크 애플리케이션들을 지원한다
   - ftp, smtp, http 
transport  Host-To-Host data 전송 서비스
   - tcp, udp
network  소스에서 목적지로 데이터 그램을 라우팅함 
   - ip, routing protocol ( rip, ospf, ... )
link  인접 네트워크 요소 간의 데이터 전송 
   - ppp, ethernet
physical  선로에 의해 물리적으로 비트 신호 전송 
--------------------------------------------------------------------------------------------------------

- 각 계층은 상위 계층에서 데이터를 가져온다.

- 헤더 정보를 추가하여 새 데이터 단위를 만든다.
- 새 데이터 단위를 아래 계층으로 전달한다.

 

 

 

2. TCP Protocol Review

 

  • Point-TO-Potint 방식
  • 신회성 있는 . in-order byte stream :  메시지 경계가 없음
  • pipeliend : window size를 설정해 TCP의 혼잡 및 흐름 제어 수행
  • Buffering : send & receive buffer 사용
  • 전 이중 양방향의 데이터 흐름 
  • 연결 지향 : 핸드 쉐이킹으로 초기 상태를 교환하고 데이터를 전송함
  • 흐름 제어 

 

 

 

3.  ICMP

[1] ICMP ( internet control message protocol )

     : 호스트나 라우터에서 네트워크 레벨 정보를 가져오는 데 사용

  • error reporting : 연결할 수 없는 호스트, 네트워크, 포트, 프로토콜
  • 에코 요청/응답 메시지 (ping에서 사용)
  • IP 데이터그램으로 ICMP msgs가 전송됨
  • ICMP 메시지: 유형, 코드 및 IP 데이터그램의 처음 8바이트가 오류를 발생시킵니다.

 

[2] ICMP Redirects 

 : ICMP는 라우팅 오류 메시지에 사용됩니다.
       - TTL 만료(추적 경로)
       - 호스트에 연결할 수 없음
       - 에코 요청(핑 프로그램)
또한 기본 라우터가 더 빠른 경로를 따라 리디렉션하는 데 사용됩니다.

 

 

[3] ICMP Redirect Routing 

Redirection

        - 호스트는 일반적으로 점진적으로 확장되고 업데이트되는 작은 라우팅 테이블에서 시작한다.
        - ICMP 리디렉션 메시지가 라우터에서 동일한 로컬 네트워크의 호스트로 전송된다.

 

 

 

4. ARP

ARP :  동일한 lAN에 대한 라우팅

 

1. 경로 조회가 동일한 서브넷에서 경로 조회를 결정
2. ARP를 사용하여 ARP를 보낼 링크 계층 주소를 결정
3. 링크 계층에 전달

 

 

브로드 캐스트 랜을 사용한 경우

(A) :  host A는 ARP 요총울 IPb에 해당하는 브로드 캐스트 전체 노드에게 request 요청함

(B) : 그 중, host B는 자신에게 온 요청인지 확인해서 송신자에게 나 여깄어요 하고 응답한다 ( Ib, Pb ) 

 - IP 주소는 gratuitous ARP 를 사용하여 설정된다. 

 

 

 

5. Inter-AS routing

AS [ Autonomous System ]
    ▪ 라우팅 정보를 AS 내에 보관.
    ▪ 다른 AS 라우터(게이트웨이)로 내보냄.
내부 라우팅  VS  외부 라우팅 프로토콜

내부, 외부 라우팅 프로토콜

 

BGP(Border Gateway Protocol): 사실상의 Inter-As routing의 표준

경로 벡터 알고리즘: 거리 벡터의 확장

각 경계 게이트웨이는 대상까지의 전체 경로(즉, AS 시퀀스)를, 이웃(peers)로 브로드캐스트함
예를 들어 게이트웨이 X는 대상 Z에 대해 경로를 저장함     >>     (ex) PATH (X,Z) = X,Y1,Y2,Y3,...,Z 

만약 GW x 가 피어인 GW w로 경로를 전달한다 가정하면,
GW w는 GW x에 의해 제공된 경로를 선택할지 안할지 결정할 수 있다   * 정책을 따름 ( 비용, 루프 예방 등 ) 
GW w가 GW x에서 제공한 경로를 선택한 경우 , 경로는 (W,Z) = W, X, Y1, Y2, Y3, .... , Z

 

 

 

 

 

 

 

 

Security Problems in Internet Protocols


1. R-services 

 [1] R-service에서 보안 문제 

  • rsh와 rcp는 비밀번호 없이 액세스할 수 있도록 호스트 및 계정을 나열하는 디렉토리의 .rhosts 파일을 사용합니다.
  • r-services: /etc/inetd에서 허용됨
rhosts(또는 /etc/rhosts) 파일 예제 
   www.ulsan.ac.kr.    mkkim
   *.ulsan.ac.kr.    mkkim
 *.  *

 

 

[2] rsh Server에서 커낵션 생성 

  - 3-way Handshaking

 

  • C -> S : SYN(ISNc)
  • S -> C : SYN(ISNs) , ACK(ISNc + 1)
  • C -> S : ACK(ISNs + 1 )
  • 데이터 교환 ( rsh command ) 

 

 

  • X -> S (sppof) : SYN(ISNc)
  • S -> C : SYN(ISNs), ACK(ISNc+1)
  • X -> S (sppof): ACK(ISNs +1)

How can X know ISNs ?

 

R-service에서 보안 문제 : 어떻게 rsh를 돌리는 장치를 다른 머신으로 착가하지 않고 판단할 것인가 ?

 

- 신뢰할 수 있는 관계 이용: C는 S의 신뢰할 수 있는 호스트라고 가정한다.
- 소스 라우팅:
   ▪ IP sorce-route 옵션
   ▪ 응답자가 응답의 source-route를 사용합니다.
   ▪ 신뢰할 수 있는 호스트의 주소를 스푸핑하는 rshd에 대한 TCP 연결을 열지만 원본 경로에 자신을 포함시킵니다.

--> 대책: 소스 경로 무시 

 

 

2. Session hijacking

클라이언트 C에서 서버 S로 정상 TCP 작업


▪ C->S: SYN(ISNC)
▪ S->C: SYN(ISNS), ACK(ISC+1)
▪ C->S: ACK(ISNS +1)
▪ 클라이언트와 서버 데이터 교환
▪ ISN 번호 생성
▪ 4.2BSD: 128/초 증가     (7.8ms 동안 1개)
▪ 4.3BSD: 125,000/초 증가    (8us용 1개)

 

 

  • 공격자는 X는 사전에 아래의 항목을 알고있다.
    • S는 R-service를 제공한다
    • C는 S에게 신뢰된 호스트이다.
  • X는 C로 위장하고 S에 접근하려고 시도한다.

 

[1] ISN estimation

 
[2] Session hijacking 

 
[3] Executes remote commands 

 

 

 

 

3. Disabling hosts: SYN Flooding DoS

 

많은 스푸핑된 SYN 패킷을 공격 대상 호스트로 보내기

TCP 연결 대기열
▪ 커널은 각 수신 소켓에 대해 두 개의 대기열을 유지함
▪ 불완전한 conn. queue : SYN_RCVD 상태의 각 연결에 대한 항목
▪ 완료된 연결 대기열: Established 상태의 각 연결에 대한 항목
▪ 수락 완료 대기열의 첫 번째 항목을 반환한다.

 

 

4. Attacking Routing to Exploit rsh

동적 라우팅 업데이트
▪ OSPF: 링크 상태 알고리즘
▪ RIP : 거리 벡터 알고리즘

공격자는 호스트 C에 대한 경로로 자신이 좋다는 정보인 RIP update message를 주입한다.
 - 그 뒤로, C로 전송되는 모든 후속 패킷은 공격자에게 라우팅된다.
 - 공격자는 서버의 rshd 연결을 시작합니다 ( 스푸핑 C )

Defense:

     보안 라우팅 프로토콜 사용 ( 인증된 업데이트만 허용 ,  키 관리 필요 )

 

 

 

5. ICMP Attack    (source-routing)

 ICMP redirect : 시스템이 사용자를 통해 라우팅되도록 힌디.

  • 기존 연결 필요
  • 공격하려는 호스트에 스푸핑된 연결 열기
  • 스푸핑된 ICMP 리디렉션을 피해자에게 전송하여 사용자가 손상된 게이트웨이로 리디렉션하게 함

Others 

   ▪ ICMP 대상에 연결할 수 없음
   ▪ 빈번한 ICMP 소스 급랭

 

 

 

6. ARP attacks

기계가 ARP 요청을 보낼 때, 주소를 소유하고 있다고 응답할 수 있음

안타깝게도, ARP는 요청 없이 회신만 수행 할 것이다.

  • MAC 주소가 특정 IP 주소를 소유한다는 스푸핑된 회신 메시지를 보냄
  • 캐시가 시간 초과되지 않도록 자주 반복

메시지를 스니핑하거나 수정하기 위해 사용자를 통해 라우팅된다.

 

대책

ARP 스푸핑을 방지하기 위해 라우터/기본 게이트웨이 및 신뢰할 수 있는 호스트의 MAC 주소를 "게시(Publish)"한다.
    - IP-이더넷 주소 매핑을 정적으로 정의한다.
            예)  arp -s host 00:01:02:03:04:ab pub

 

 

 

7. TCP session stealing

TCP 동기화 해제 상태를 사용한 활성 공격 [ Active attack using TCP desynchronized states ]

     :  공격자가 클라이언트 및 서버 b/w 경로에 있음 ( 공격자는  모든 패킷을 스니핑할 수 있고, 스푸핑된 패킷을 주입할 수 있음)

 

단계

  1. 공격자는 두 개의 통신을 스니핑합니다.
  2.  공격자는 클라이언트와 서버의 동기화를 해제하여 통신을 비활성화합니다.
  3. 공격자는 양쪽 끝에서 허용되는 스푸핑된 패킷을 주입합니다.

 

 

 

 

TCP Session Stealing ( TCP 세션 도용 )

비동기화된 상태 b/w 클라이언트 C 및 서버 S  ( 둘 다 "Established state" )
▪ 전송 중인 데이터가 없음 (수신 상태).
▪ S_SEQ → C_ACK 및 C_SEQ → S_ACK

 

initial연결 설정 후 초기 상태 
▪ S_SEQ = C_ACK: (ISNS+1)

▪ C_SEQ = S_ACK: (ISNC+1)

 


비동기화된 상태에서 클라이언트 C 및 서버 S
S_ACK < C_SEQ < S_ACK + S_Wind일 때:    패킷이 승인(수신됨)되었지만 사용자에게 전송되지 않음
C_SEQ > S_ACK + S_Wind 또는 C_SEQ < S_ACK일 때:     패킷이 손실됨
두 경우 모두 ACK(S_ACK)가 전송됩니다(S_SEQ, S_ACK)

 

 

공격자는 비동기화된 상태를 알고 있으며 허용할 수 있는 모든 데이터를 서버로 보낼 수 있습니다.
▪ 예: rlogin을 위한 [filename myhost >> ~/rhost]

 

 

 

비동기화

 

 

 

8. 공격 가능한 옵션 

  > Null 데이터 동기화 해제

1. 공격자는 간섭하지 않고 세션을 감시한다.
2. 조용한 시간 동안 공격자는 많은 양의 null 데이터(IAC, 텔넷의 경우 NOP)를 보낸다.
아무 일도 일어나지 않습니다. 서버는 TCP Ack 번호만 변경한다.
3. 클라이언트가 데이터를 보낼 때 서버의 윈도우보다 낮기 때문에 서버에서 데이터를 삭제한다.
4. 공격자는 클라이언트에 대해 동일한 작업을 수행한다.


>> 방어: ssh 연결 또는 IPsec

반응형

'Lab & Research > Information Security' 카테고리의 다른 글

방화벽  (0) 2022.06.10
모니터링과 보안 위협 종류  (0) 2022.06.02
DNS 보안  (0) 2022.05.30
IP 보안  (1) 2022.05.29
무선 네트워크 보안  (0) 2022.05.27