정보보호 - 8(Network Security)

박승현·2023년 10월 12일
0

정보보호

목록 보기
8/11
post-thumbnail

Network Security(1)

  • Roadmap
    • ARP level
    • TCP/IP level
    • Firewall
    • High Availability
    • Intrusion Detection System
    • DDOS
    • Intrusion Prevention System

ARP level

  • ARP spoofing
  • man in the middle attack
  • Smurf attack
  • Packet sniffing
  • MAC flooding

ARP spoofing

  • ARP poisoning라고도 부름

    • spoofing, poisoning : 잘못된 정보를 알려줌으로 피해를 입히게 하는 공격 방식
  • Enterprise network

    • 전용회선에 라우터와 스위치를 이용해 연결
    • ARP request/reply
    • 서브넷의 내부에서(R까지 전달하는 과정에서) ARP프로토콜을 사용함(링크 레이어)
      • 라우터간의 통신은 IP레벨
    • B는 공격자
    • A가 R의 MAC주소를 파악하기 위해 브로드캐스트 메시지를 서브넷 내부에 뿌림(ARP request 페킷)
    • 정상적인 상황이라면 B는 가만히 있고 R이 응답해야 함
    • B가 라우터인척 거짓 ARP reply페킷을 A에게 보내면
      • R과 B가 동시에 A에게 ARP reply페킷을 보내게 됨
      • A가 둘중 어떤 페킷을 사용할지는 표준정의가 되어있지는 않지만 나중에 온걸 사용한다고 정의하고 B가 R보다 나중에 reply페킷을 보냈다고 가정
      • A는 B에게 원래 보내려던 페킷을 보내게 됨
      • B는 A에게 받은 페킷을 R에게 보내면 외부에서 R로 리턴되는 정보를 R은 B에게 보내게됨
  • 결국 spoofing 공격(B가 R인척 하는 것)으로 sniffing공격(R에서 리턴되는 정보를 B가 받게되는 것)까지 성공하게 되는 경우임

  • B의 man in the middle attack

  • A는 보안을 위해 원래 보내려고 했던 서버의 공개키로 암호화해서 보내야함


  • 만약 B가 라우터 R이 아닌 A가 원래 보내려던 서버인척까지 하는 경우

    • B는 본인의 공개키를 서버인척 A에게 보내고 A는 이 공개키로 암호화해서 B에게 보내도 B가 본인의 개인키로 풀어버리기 때문에 의미가 없음
    • 인증기관을 통한 공개키의 서명의 중요성

  • Countermeasure(man in the middle attack)
    • 전자서명된 인증서 사용(PKI)
    • One-time-pad
    • String mutual authentication
    • Second channel verification

Smurf attack

  • 라우터에 연결되어 있는 하나의 서브넷에서
  • 3번 노트북이 서버인 5번을 확인하기 위해 ping을 보낼 수 있음(정상적인 상황)
  • 만약 c클래스 서브넷(255개의 ip가 존재)에서 관리자가 다른 모든 노드의 확인을 하고 싶으면 다른 모든 노드에게 ping을 보내고 살아있는 노드는 응답하는 방식으로 가능함(서브넷에 전부 ping을 보내는 명령어가 존재)
    • 저 한번에 ping을 보내는 명령어를 악용하는 것이 스머프 어택
    • 출발자 ip를 속여 모든 응답이 목표물에게 전송되도록 유도(RAW_Socket 프로그래밍)
  • TCP/UDP가 서비스를 요청하는 자의 신원을 확인하지 않고 서비스를 제공한다는 오픈적인 방향을 지향하기 때문에 생겨남
  • 내 핑을 지정해서 요청하는것만 응답하고 브로드케스트 요청은 무시하는 방식으로 대응 가능

Packet sniffing(MAC Flooding)

  • 허브와 스위치의 차이 : 허브는 연결되어 있는 모든 노드에게 페킷을 보내고 받은 노드 중 목적자 ip에 대응되는 노드만 사용하는 방식임, 스위치는 목적지에만 보냄
    • 허브에서 페킷을 보내는 과정에서 동시에 여러개의 전기신호를 보내려고하면 collision이 발생해 동작이 불가능해짐
    • 스위치에서는 1-3, 5-3같은 겹치는 전송은 여전히 불가능하긴 하지만 1-3, 5-8등의 전송은 동시에 가능하게 만들어줌
  • 스위치에서도 arp request같은 브로드케스트 메시지가 남아있음
    • 매핑 테이블이 꽉차면 일부를 삭제함
    • 그 후 삭제된 주소와 통신을 원하면 매핑 테이블에 없기 때문에 브로드 케스트를 사용
    • 해커는 일부러 매핑 테이블이 꽉차게 만들어버림(가짜 MAC주소를 만들어 저장하게 만들어버림)
    • 그 후 발생하는 브로드케스트 메시지들은 헤커 입장에서는 아주 쉽게 읽을 수 있음(허브와 비슷)
    • MAC Flooding공격
  • 한개의 ip에 한 개 정도의 MAC주소만 적응하는 방식으로 대응

Network Security(2)


IP spoofing

  • 출발지의 IP주소를 속이는 것(raw socket 프로그래밍)
  • DoS
    • 서버의 처리성능만큼 클라이언트가 더미 요청을 보내 서버가 본래의 일을 하지 못하게 함
    • 서버가 방화벽을 구축해 특정 클라이언트가 일정시간내에 많은 요청을 하면 막는 방식으로 대응
  • DDoS
    • 위의방식에서 방화벽을 뚫기 위해 여러개의 분산된 클라이언트에서 여러개의 요청을 나누어서 보내는 것(여러개가 나누어서 보내기 때문에 방화벽을 통과함
  • Raw socket 프로그래밍
    • 여러개의 페킷을 출발지 ip주소를 여러개로 나누어서 바꾸어 한번에 보내면 방화벽을 통과함
    • ip주소는 엉뚱한 곳이기 떄문에 서버에서 보내는 페킷을 빼오는것 까지는 불가능
      • ip주소를 같은 랜의 다른 pc로 설정하고 ARP스푸핑 공격까지하면 빼올수 있음
  • Countermeasure
    • ingress 필터링 : 들어오는 페킷의 도착지 주소가 올바른지 조사
    • egress 필터링 : 나가는 페킷의 출발지 주소가 우리 내부가 아니면 막는 것

Port scan

  • 포트 번호를 고정하고 IP를 변경하면서 찾거나 IP주소를 알때 IP를 고정시키고 포트번호를 변경하면서 열려있는 포트를 찾아 공격하는 방식
  • 이 공격에서 flag 비트를 켜고,꺼두는 방법을 통해 추적을 우회할 수 있음(예전에 통했던 방법)

Session hijacking

  • IP 스푸핑 공격에서는 공격자가 서버에서 보내는 페킷이 랜덤한 ip로 전송되기 떄문에 페킷을 가로채는것 까지는 불가능 했었음
  • 여기서는 페킷도 가로채는 공격임
  • E가 공격자
  • B가 서버 A에 접속한 후 B가 A에게 페킷을 보내는 과정이 정상과정
  • 위 과정을 속여 모든 파일 삭제등의 치명적인 내용이 담긴 위조 페킷을 B가보낸 척 E가 A에게 보냄
  • E가 B가 보낸척을 하려면 페킷의 출발지 주소를 B로 설정해야 함
    • 이떄 TCP과정이라 예를 들면 포트넘버, 시퀀스 넘버등의 헤더의 내용이 정확해야함(어려움)
      • 정확히 맞아떨어지면 E가 보낸 페킷을 B가 보낸것으로 인식해 A가 실행
  • 위 과정을 위해서
    • E의 페킷을 B의 출발지인척하는 ip스푸핑 공격도 필요
    • 위 과정 후 B가 더이상 페킷을 보내지 못하게 dos공격으로 B를 다운시키기도 해야함
    • 추가로 TCP헤더의 내용을 정확히 맞추는것도 필요(이니셜 시퀀스 넘버를 맞춰야함)
      • 예전에는 이 시퀀스 넘버가 규칙성이 있어서 공격자가 예측하기 쉬웠음
      • 현재는 이 이니셜 시퀀스 넘버를 해쉬함수로 생성하도록 함
        • 기존에는 M만 썼던것
        • 여기서 some secret은 서버(위에서 A)만 알고있음
        • 클라이언트는 이 값을 받아서 쓰면 되지만 공격자는 예측을 해야하기 떄문에 매우 어려움

Injecting false routing information

  • 라우터구조에서 공격자가 라우터를 하나 점령
  • 공격자가 점령한 라우터에 모든 라우터가 붙어있다고 거짓 정보를 뿌림
    • 그럼 모든 페킷이 공격자가 점령한 라우터를 통하게 됨
    • 라우팅 알고리즘에서 주변 라우터가 보낸 정보를 무조건적으로 신뢰해서 발생한 문제
    • 최근에는 비밀값 k를 공유해 h(m||k)와 m를 같이보내 보안을 확보함

Network Security(3)

Firewall

  • 기본적으로 페킷을 하나하나 다 열어본 뒤 관리자의 기준에 맞는 페킷을 통과/방어하는 역할
  • Inbound session : 외부에서 방화벽 내부로 들어가는 페킷(제약을 걸어주는 역할)
  • Outbound session : 방화벽 내부에서 외부로 나가는 페킷(자유로워야 함)
  • 외부에서 DB로 바로 못가게 하면서 내부의 PC들은 외부 인터넷을 자유롭게 사용할 수 있게 해줌

  • Firewall rule-set으로 페킷의 전송을 결정
    • 어떤 페킷이 위의 규칙의 5가지(s ip, s port, d ip, d port, prot)를 전부 만족해야만 action에 있는 행동을 취함(*)는 상관없다는 의미
    • 2번 규칙은 서버에서 외부로 나가는 규칙이라고 판단할 수 있음
    • 3번 규칙의 S port 1024~65535인 이유(1023 2^10까지는 관리자 포트넘버), 사실상 내부 클라이언트에서 외부로 나가는 페킷은 상관없이 내보내주겠다는 의미
    • 4번은 내부 클라이언트로 오는 페킷은 상관없이 받는 의미
    • 5번은 1~4번을 모두 체크했는데 전부 만족하지 않을때 실행(5번은 모든 페킷이 만족할 수 밖에 없고 deny 해버림), 1~4번에 해당하는 페킷만 허용한다는 의미

  • DMZ
    • 일반적으로 외부에서 웹 서버로 들어오는 페킷은 열어둠(서비스를 위해)
    • 웹 서버 자체는 치명적이지 않지만 웹 서버를 통해 DB로 들어갈 수 있음
  • 웹 서버에서 DB로 가는 포트 1개만 열어주는 방식으로 방화벽 규칙을 추가
    • 해커가 여전히 웹 서버를 점령한다해도 웹서버에서 DB로 가는 길은 포트번호 1개 밖에 없기 때문에 공격자가 DB를 공격하기 매우 어려워짐
  • 실제로는 방화벽을 더 사용해서 외부 내부로 나누어둠

  • High Availability
    • single point of failure : 어떤 한개의 지점이 고장날때 전체 서비스가 실행이 불가능해지는 지점
    • single point of failure를 제거하기 위해 실제로는 방화벽, 스위치등을 여러개로 구성함
    • 서버를 각각 다른 지역에 두는 방법으로 더 높일 수 있음(Disaster Recovery Center)
      • 2개의 센터를 로드 밸런싱해서 병렬적으로 운영
    • GSLB
      • DR센터의 서버중 한가한 서버의 주소를 클라이언트에게 리턴해주는 것
      • TTL
        • 클라이언트에게 서버의 주소와 함께 보내주면 그 시간동안은 클라이언트가 접속시 DNS쿼리를 보내지 않고 받았던 주소를 캐싱해두고 바로 접속함
        • TTL이 길면 빨라지지만 고장이 일어나도 그 주소로 계속 접속하려고 할 수 있음
        • TTL이 짧으면 장애에는 잘 대응하지만 매번 DNS쿼리를 보내기 떄문에 느려질수는 있음

State and Firewall

  • 이경우는 stateless임
    • 4번 규칙에서 내부 클라이언트가 악성코드에 감염되어 있으면 치명적일 수 있음
    • 4번은 3번의 반대방향을 위해 존재하지만 공격자가 3번을 건너뛰고 4번만 사용해서 공격을 할 수 있음
  • 위는 stateful
    • 위의 1,2가 합쳐져 1, 3,4가 합쳐져 2가됨
    • 이때 1,2를 만족하는 페킷이 통과될때 상태(ack/syc등의 과정)를 기억해 반대방향으로 가는 페킷도 통과할 수 있게 함

  • High Availability and stateful
  • 위의 2개의 방화벽이 전송 상태를 기억하기 때문에 페킷은 처음 지나간 방화벽을 계속 사용해야함
    • 출발지,목적지의 ip,port로 판별
    • 다른 방화벽을 통과하려고 하면 상태가 다르기때문에 통과를 하지 못함
    • 페킷이 같은 방화벽을 계속 통과하게 하는 방법
      • XOR연산을 사용
      • 출발지,목적지의 ip,port를 XOR연산하면 순서가 바뀌어도 값이 동일함 이 값에 나머지 연산하면 방화벽의 인덱스 값이 나옴
  • 최근에는 방화벽끼리 메모리를 동기화 시켜 다른 방화벽을 통과할수도 있게 해줌

  • VRRP
    • 여러개의 라우터중 마스터를 지정해 마스터가 일을하고 나머지는 슬레이브로 마스터가 문제가 생겼을떄만 일을 하는 방식
    • 마스터는 주기적으로 본인이 살아있다는 메시지를 슬레이브에게 보내줘야함 만약 특정 시간동안 그 메세지가 안오면 슬레이브는 마스터에 문제가 생겼다고 판단하고 슬레이브 중 하나를 마스터로 설정해줌
    • 라우터가 각각의 IP주소를 가지고, 추가로 VIP(가상 IP)를 양쪽이 둘다 가지는데
      • 마스터가 처음엔 VIP를 사용
      • 마스터가 주기적으로 살아있는 메세지를 보내다 사라지는 경우(마스터 고장)
      • 슬레이브가 마스터의 생존 메세지를 받다 안오면 VIP를 슬레이브가 사용(마스터가되는 것)
      • 추가로 슬레이브 여러개중 VIP를 사용할 슬레이브를 선정할 정책이 필요(Election process)
  • 평소에 마스터의 자원만 사용하기 때문에 슬레이브의 자원은 낭비된다고 생각할 수 있음
    • VIP를 추가로 사용(VIP1, VIP2라고 가정)해서 각각에 VIP에 대한 마스터를 선정
    • 하나의 라우터가 VIP1에 대한 마스터이면서 VIP2에대한 슬레이브가 될 수 있음
  • 데이터베이스에서도 동일하게 작동할 수 있음
    • DB에서 마스터가 살아있다는 메세지는 Heartbeat를 사용
  • DB를 몇개를 사용해야 안전한가?
    • p : probability of availability(서버가 1대일때 가용성의 확률 -> 0.9이면 10시간 중 9시간은 장애가 없다고 판단)
      • 0.999999(9가 6개)이면 1년에 30초정도 장애가 발생할 확률, 이정도면 매우 휼륭
    • n : 서버의 개수
    • q_n을 n대의 서버가 있을때 가용성의 확률이라고 할때
      • n대의 서버중 1대만 살아있으면 가능하기 떄문에(1-모든서버가 고장날 확률)
  • p가 0.9999인 서버가 2대만 있어도
    • 9가 8개가 생김 -> 매우 높은 수치라 보통 서버를 2대를 많이 사용함

Intrusion Detection System

  • 동작하는 위치와 알고리즘에 따라 분리
    • 총 4가지 케이스가 있음
    • network, signature기반이 일반적으로 많이 사용됨
  • signature(탐지 규칙)
    • 일반적으로 string매칭을 사용해 페킷을 구분
    • 보안 장비에 공격 페킷에 해당하는 string을 저장해둠
    • 만약 5000개를 저장해뒀으면(탐지 규칙이 5000개) 하나의 페킷에 대해 5000개의 스트링 매칭을 다 해봐야함
      • 페킷에 5000개중 하나라도 감지가 되면 악성으로 판단
  • 용어 정리
    • Alert/Alarm : 공격이라고 판단했을때 알람을 보내주는 것
    • True Positive : 실제 악성, 예측 악성
    • False Positive : 실제 정상, 예측 악성
    • False Negative : 실제 악성, 예측 정상
    • True Negative : 실제 정상, 예측 정상
  • True는 잘 맞춘거고 Positive는 알람을 울린 여부라고 생각
    • Alarm filtering : 오탐(false positive)를 거르르는 것
  • Host-based
    • 특정 파일등의 내용이 변했는지 체크하는 방식
  • Network-based
    • 페킷 위주로 탐지
  • Snort
    • 룰기반으로 string 매칭을 통해 악성 페킷 감지

DDos

  • as a service(읽어보기)
  • Land attack
    • 1개의 페킷으로 서버를 다운시키는것
    • src, dst의 ip주소를 같게 해서 페킷을 보내면 서비스가 다운됨
  • 서버에서 파일을 내려주기 전에 크기가 아주 작은 인덱스파일을 먼저 보내주는 방법으로도 방어함
    • 그럼 빨간 선이 아주 얇아지는 효과
  • C&C 서버
    • 공격자가 감염된 컴퓨터들이 특정 서버(C&C서버)에 접속해서 공격 명령을 받게 하는 방법
    • C&C 서버의 ip주소를 감염 pc에 넣으면 막히기 쉬움
      • C&C서버와 감염 pc에 랜덤 도메인 네임을 생성하는 같은 알고리즘을 심어둠
      • 알고리즘은 시간동기화를 기반으로함
      • C&C서버의 도메인 네임을 알고리즘으로 생성한 랜덤도메인네임으로 등록하여 접속하게 함

Intrusion Prevention System

  • IPS = IDS + FW
    • IDS에서 alert를 통해 찾은 악성 ip를 실시간으로 FW(방화벽)에 등록하는 방법
  • IP spoofing test
    • SYN 페킷 사용
    • 왼쪽에서는 봇이 엉뚱한 IP를 사용해서 페킷을 못 받는다 해도 SYN에대한 ACK페킷을 보내는것 만으로도 희생자는 자원을 사용하게 됨
    • 오른쪽은 Anti-DDos시스템에서 isn을 사용해서 전송자가 ACK를 보낼때 같이 사용하게 해서 ip-spoofing을 체크함(전송자가 정상적인 ip를 사용해야 isn을 받을 수 있음)
    • isn은 해쉬함수를 사용해서 생성
    • 가운데 위치한 것이 IPS, IPS는 해쉬함수를 사용해 페킷정보는 기억하지 않고 해쉬정보만 간단하게 기억하기 때문에 메모리를 사용하지 않는것이 핵심
    • 페킷안에 ip, port정보가 있기 때문에 이런 정보들을 저장할 필요가 없음(메모리 소모가 없다), 시간도 너무 정규하지 않은 단위를 사용해서 해쉬를 생성할때 같은 시간값이 들어가게 함
profile
KMU SW

0개의 댓글