네트워크보안 - 정리(1)

Ch-07.스푸핑

스푸핑

  • '속이다'는 의미 네트워크에서 속여서 정보를 획득하는 공격
  • 정보를 얻어내기 위한 중간 단께의 기술로 사용
  • 시스템을 마비시키는 데 사용할 수도 있다

<스푸핑 공격의 대비책>

  • 관리하는 시스템의 MAC 주소를 확인하여 테이블로 만들어 둔다.
  • 브로드캐스트 ping을 네트워크에 뿌려 그에 답하는 모든 시스템에 대한 MAC주소 값을 시스템 캐시에 기록한다.
  • 현재 IP주소 값과 MAC주소의 대칭 값을 비교하여 엉뚱한 MAC 주소로 맵핑되어 있는 항목을 확인한다.

ARP 스푸핑

  • MAC 주소를 속이는 것으로 2계층에서 작동하므로 공격 대상이 같은 랜에 있어야 한다.

<ARP 스푸핑에 대한 보안 대책>

  • ARP 스푸핑이 가능한 이유는 ARP Table이 동적이기에 쉽게 공격자를 거르지 못하기 때문
  • 고로 MAC Table을 정적(Static)으로 변경하고 이렇게 설정된 IP와 MAC 주소 값을 ARP 스푸핑 공격이 들어와도 변하지 않는다.

IP 스푸핑

  • IP를 속이는 것

    "트러스트"
    시스템에 접속할 때 자신의 IP 주소로 인증하면ㄴ 로그인 없이 접속이 가능하게 만든 것

  • IP만 일치하면 인증 우회가 가능
  • 최근에는 계정의 패스워드가 같아야만 패스워드를 묻지 않도록 변경되었다.
  • SSH를 사용하도록 권고하기 때문에 IP 스푸핑 공격이 이루어지지 않는다.

<IP 스푸핑의 보안 대책>

  • 트러스트를 사용하지 않는 것이다.
  • 트러스트를 사용하더라도 시스템의 MAC 주소를 static으로 지정

DNS 스푸핑

  • DNS 서버의 캐시 정보를 조작하여 공격대상이 의도하지 않은 주소로 접속하게 만드는 공격
    1) 클라이언트가 DNS서버로 DNS Query 패킷을 보내는 것을 확인
    2) DNS 서버가 올바른 DNS Response 패킷을 보내주기 전에 위조된 DNS Response 패킷을 클라이언트에게 보냄.
    3) 클라이언트는 공격자가 보낸 DNS Response 패킷을 올바른 패킷으로 인식하고 웹에 접속

<DNS 스푸핑의 보안 대책>

  • Hosts 파일에 중요한 사이트의 IP 주소를 확인하여 적어두면 DNS 스푸핑 공격을 당하지 않는다.
  • DNS 서버에 대한 DNS 스푸핑 공격은 BIND를 최신 버전으로 바꿘서 해결

Ch-08.터널링

터널링(Tunneling)

<터널링>

  • 인터넷을 사적이고 안전한 네트워크의 일부로 사용하게 하는 기술
  • 터널링은 인터넷의 전용선과 같은 효과를 준다.

<캡슐화>

  • 터널 장비를 지날 때 원래 패킷에 있던 2계층이나 3계층 정보를 벗겨내기 않고 캡슐화 수행

<VPN(Virtual Private Network)>

  • 터널링의 대표적인 보안 장비
  • 인터넷과 같이 안전하기 않은 네트워크를 이용하여 사설망을 구성하는 기술

< Internet Network >

  • 기업 내부에서 데이터 통신을 하기 위한 네트워크
  • 회사 내의 데이터 통신은 인터넷과 구분된 별도의 임대 회선을 사용

은닉 채널(Covert Channel)

<은닉 채널>

  • 표면적인 목적 외의 정보나 은닉 메시지를 전송하기 위해 기본 통신 채널에 기생하는 통신 채널
  • ACK 패킷이나 ICMP 패킷의 옵션이나 메시지 영역에 의미있는 데이터를 넣어서 통신하는 방법
  • 세션을 맺지 않기에 로그기록이 남지 않고 방화벽을 우회할 수 있다.

<ackcmd 툴>

  • ACK 패킷만 이용한다.
  • 세션을 성립 시키지않지만 ACK 패킷 안에 숨겨진 데이터를 주고 받는다.

Ch-09.세션 하이재킹

새션 하이재킹(Session Hijacking)

세션(Session) : 사용자와 컴퓨터, 또는 두 컴퓨터 간의 활성화 상태

  • 세션을 가로챈다는 의미
  • 통신을 하고있는 다른 사용자의 세션을 가로채서 별도의 인증 작업 없이 가로챈 세션으로 통신을 계속하는 행위

<TCP 세션 하이재킹>

  • 서버와 클라이언트에 각각 잘못된 시퀀스 넘버를 사용하여 연결된 세션에 잠시 혼란을 준 뒤 공격자가 끼어 들어가는 방법
  • 서버/클라이언트 간 세션 연결과정에서 생성되는 시퀀스 넘버를 알아내고 위조하여 공격자가 정상적인 클라이언트로 위장하는 것이 주된 목표라고 할 수 있다.
  • Non-Blind Attack(로컬 세션 하이재킹)
    • 서버와 클라이언트가 통신할 때 TCP의 시퀀스 넘버를 제어의 문제점을 파고든 공격
    • 공격 대상을 탐지할 수 있으며, 시퀀스 넘버를 알아낼 수 있음
  • Blind Attack(원격 세션 하이재킹)
    • 공격 대상을 탐지할 수 없으며 시퀀스 넘버를 알아낼 수 없음.

<동기화(Synchronized)상태>

  • "클라이언트 관리 시퀀스 넘버" = "클라이언트가 알고 있는 서버 시퀀스 넘버"
  • "서버 관리 시퀀스 넘버" = "서버가 알고 있는 클라이언트 시퀀스 넘버"

<비동기화(Desynchronized)상태>

  • 데이터가 전송되기 전까지는 안정적인 상태
  • 데이터르르 주고 받을 때 잠깐 생기는 비동기화 상태

<새로운 접속 생성하기>

  • 서버와 클라이언트가 각자 알고 있는 시퀀스 넘버를 조작해서 속임
  • 클라이언트
    • Client_My_Seq = 공격자가 생성한 Server_Client_Seq
    • Client_Server_Seq = 공격자가 생성한 Server_My_Seq
  • 서버
    • Server_Client_Seq = 공격자가 생성한 Client_My_Seq
    • Server_My_Seq = 공격자가 생성한 Client_Server_Seq

<새로운 접속 생성하기>

  • 일단 공격자가 서버와 클라이언트 사이에서 스니핑 중이라는 가정
  1. 공격자는 클라이언트인 척을 하며 서버에 RST(리셋)패킷을 보냄
  2. 서버가 잠시 Closd 상태일 때 공격자는 A_Client_My_Seq를 보낸다.
    ""SYN 패킷을 보내는 것""
  3. 서버는 A_Client_My_Seq을 수신하여 Server_My_Seq를 공격자에게 전송
    :""SYN/ACK 패킷을 전송하는 것""
  4. 다시 A_Client_My_Seq 를 서버에게 전송
  5. 이렇게 공격자가 개입하여 중간에서 클라이언트 패킷을 받아 다시 서버에게 전송

<세션 하이재킹의 보안 대책>

  • SSH와 같이 암호화된 연결을 사용하는 것

    SSH(Secure Shell)
    암호화 기법을 사용하기 때문에 통신이 노출되어도 이해할 수 없는 암호화된 문자로 보임

  • 비동기화 상태 탐지
  • ACK Storm 탐지

    ACK Storm
    서버가 클라이언트의 시퀀스 넘버를 맞추기 위해 ACK 패킷에 자신의 시퀀스 넘버와 자신이 관리하고 있는 클라이언트의 넘버를 담아서 보내고 클라이언트는 이 패킷을 확인하여 자신의 시퀀스 넘버와 자신이 관리하고 있는 서버의 시퀀스 넘버를 ACK 패킷에 담아 보내는데 이 과정이 무한히 반복되는 것

  • 패킷의 유실과 재전송 증가 탐지
  • 공격자가 중간에 끼어서 작동하므로 패킷의 유실과 서버와의 응답시간이 길어진다.
  • 세션에 대한 공격 시도 시 세션이 멈추거나 리셋되는데 이를 탐지한다.
  • 세션 하이재킹에 대한 최우선의 대책은 데이터 전송의 암호화이다.

MITM(Man In The Middle) 공격

  • 누군가의 사이에 끼어드는 것
  • 암호화를 해도 암호화를 위한 산전작업에 끼어들기 때문에 암호화가 무용지물이다.

<SSH(Secure Shell) 암호화 기법>

  1. 클라이언트가 SSH를 통해 SSH 서버에 접근하여 서버의 공개키를 받음.
  2. 클라이언트는 자신의 사설키로 데이터를 암호화하고, 이를 다시 서버의 공개키로 암호화하여 서버로 전송
  3. 서버는 클라이언트로부터 전송받은 암호화된 데이터를 자신의 사설키로 복호화한 후 이를 다시 클라이언트의 공개키로 복호화해서 데이터를 읽음

<SSH 암호화 통신에 대한 MITM 공격>

  1. 클라이언트가 서버에 SSH 접속을 요청하면 공격자가 ARP 스푸핑과 같은 공격으로 네트워크를 장악하여 SSH 서버인 것처럼 자신의 공개키를 전송, 공격자는 서버에 자신이 클라이언트인 것처럼 공개키를 요청
  2. 정상적인 접속에서 클라이언트가 서버에 암호화된 데이터를 보내면 공격자는 자신의 사설키와 클라이언트의 공개키로 복호화하고 내용을 확인한 후 다시 자신의 사설키와 서버의 공개키로 암호화해서 서버로 전송
  3. 서버가 클라이언트로 데이터를 보낼 때도 공격자는 서버가 전송한 데이터를 복호화한 후, 다시 암호화해서 클라이언트로 전송

< SSL MITM >

SSL(Secure Sockets Layer)
암호화기반 인터넷보안 프로토콜 전달되는 모든 데이터를 암호화하고 특정한 유형의 사이버 공격도 차단.

"SSL 스니핑"
  • 공격자는 임의의 인증서를 생성한 뒤 클라이언트에게 보내 별도의 SSL 세션을 생성하고, 이를 중간에 스니핑
"SSL 스트립"
  • 공격자는 클라이언트와 서버 간의 모든 암호화된 HTTPS 데이터를 HTTP로 변조하여 클라이언트에게 전달

0개의 댓글