brunch

매거진 침해대응

You can make anything
by writing

C.S.Lewis

by Moai Sep 17. 2022

네트워크와 보안 #1 - 네트워크계층

기본 지식

네트워크 역사


우리는 스마트폰만 가지고 있으면 언제든지 문자, 앱을 이용해 친구들과 대화할 수 있다. 이러한 메시지가 어떻게 내 친구에게 전달이 되는지 알아보고자 한다. 지금은 너무나 당연하게 무선통신으로 인터넷을 사용하지만 15년 전만 하더라도 전화기 통화선으로 인터넷을 해야만 했다. 기술이 발전하면서 전기 신호가 아닌 레이저를 통해 데이터 전달이 가능해졌고 지금의 인터넷 속도가 가능해졌다.

 

1800년 알레산드로 볼타는 세계 최초로 전지를 발명했고 우리는 볼타의 업적을 기리기 위해 V (볼트) 단위를 사용하게 된다. 우리가 전기를 사용할 수 있게 해 준 엄청난 사건이었다.  사람들은 고민하기 시작한다. 전선으로 전기만 전송하지 말고 메시지를 전달하는 용도로 사용할 수 있지 않을까? 그렇게 점과 대시를 이용한 통신 방법인 모스부호가 개발됐다. 이후 목소리 진동을 자석의 진동으로 바꿔서 목소리를 전달하는 전화기도 개발됐다.


1960~80년도에는 스티븐 잡스와 빌 게이츠가 개인 PC를 열심히 개발할 때쯤 미국 국방부는 핵전쟁을 대비하기 위해 빠르게 정보를 주고받기 위한 컴퓨터 통신 방법을 개발했다. 지금의 인터넷 표준은 대부분 미국의 국방부에서 개발했다고 해도 과언이 아닐 것이다. 이러한 기술들을 민간에게 공개했고 새로운 네트워크 시대가 열리게 됐다.

 

1990년도에는 팀 버너스 리가 WWW를 공개하고 웹브라우저 개발, 야후 구글과 같은 IT기업들이 등장하면서 우리가 아는 인터넷이 등장했다. 처음 기술을 개발할 때는 보안보다는 속도가 중요했고 효율적으로 먼 거리에 있는 컴퓨터끼리 통신을 하는 게 중요했다. 인터넷 속도가 빨라지고 컴퓨터 성능이 좋아지면서 대중적으로 인터넷을 사용하게 됐고 보안 문제가 대두되기 시작했다.


WWW를 살짝 소개하자면 원격으로 데이터베이스에 저장된 데이터를 브라우저라는 프로그램으로 시각적으로 보여주는 기술이다. HTTP 통신을 사용하고 HTML로 시각화한다. 한 번쯤은 들어봤을 법한 용어이다.


네트워크 역사는 잠시 접어두고 네트워크 기술에 대해 설명하고자 한다. 인터넷과 서점에 좋은 자료가 많기 때문에 꼭 필요하고 자주 나오는 기술에 대해서만 작성하겠다.




프로토콜


프로토콜은 컴퓨터와 컴퓨터 사이에서 메시지를 전달하는 과정을 부르는 단어이다. 1965년경에 메시지를 친구에게 전달했을 때 제대로 도착했는지 확인하고 제대로 도착하지 않았을 때 다시 보내는 일련의 방법을 가리키기 위해 프로토콜 이란 단어를 사용하게 됐다. 프로토콜에는 몇 가지 특징이 있다. 택배 과정을 예를 들어 설명하고자 한다.


택배는 물건을 보낼 때 박스에 넣어야 한다. 그리고 겉면에 보내는 사람과 받는 사람 주소가 적힌 택배 송장을 부착한다. 이렇게 어떤 네트워크를 통과하기 위해 데이터를 다른 무언가로 감싸고 벗겨내는 과정을 캡슐화라고 한다.


택배를 보내면 하루 안에 도착하지 않는다.  여러 HUB를 거쳐서 보내지게 되는데 원하는 도착지에 제대로 전달하기 위해 주소를 설정하고 돌고 돌아서 목적지에 도착하게 된다.


택배와의 비유와는 적절하지 않지만 순서, 쪼개기(단편화), 속도조절, 오류 검사, 우선순위 등이 프로토콜의 기능이 될 수 있다.




네트워크 계층


개인 컴퓨터가 널리 보급되면서 업체마다 네트워크 시스템이 다르더라도 다른 제품끼리도 통신이 가능하고 좀 더 표준적인 네트워크 모델이 필요했다. 그리고 1984년 OSI (Open System Interconnection) 7 계층이 발표됐다.


1 계층 (물리 계층)

시스템 간에 연결된 선이다. 랜 케이블이 될 수도 있고 전화선, 광 케이블이 될 수도 있다.

거리가 너무 길어지면 신호가 약해지기 때문에 다시 신호를 증가시키기 위한 장비(리피터)와 신호를 여러 컴퓨터에 복사해주는 허브가 있다.


2 계층 (데이터 링크)

선이 있다면 선 끝에 점이 있을 것이다. 그 종점을 말하며 식별을 위해 하드웨어 주소(MAC 주소)를 사용한다.

점-----점-----점 이런 식으로 계속 연결될 수 있으며 각 점에는 여러 선이 연결될 수 있다.


3 계층  (네트워크 계층)

2 계층의 하드웨어 주소는 장비회사가 발급하며 싸구려 장비가 아니라면 중복되지 않는다. 하지만 이 주소를 모두 기억할 수는 없다. 예를 들어 한국대학교 김철수라는 사람에게 택배를 보내고 싶다. 택배기사는 한국대학교의 위치가 어디인지 기억하고 있어야만 한다. 하지만 서울시 중구 대학로 한국대학교 이런 식으로 주소(IP)가 있다면 좀 더 쉽게 보낼 수 있을 것이다. 최적의 경로로 네트워크 전송을 도와주는 장비를 라우터 또는 게이트웨이라고 한다. 게이트웨이도 IP주소를 가지고 있고 마지막 주소가 1로 끝나는 규칙을 가지고 있다.


ARP

택배기사가 한국대학교에 도착했지만 김철수가 어디에 있는지는 알지 못한다. 행정실에서 들려서 김철수가 있는 곳을 물어봐야 한다. 이렇게 주소(IP 주소)를 통해 수신자(MAC 주소)를 알아내는 방법을 ARP 프로토콜이라고 한다.


ICMP

또 배가 다니지 않는 무인도가 도착지라면 출발하기 전에 갈 수 있는 방법이 있는지 확인해야 한다. 이렇게 택배를 보낼 수 있는지(IP주소로 패킷이 도달) 확인하는 방법을 ICMP 프로토콜이라고 한다.


4 계층  (전송 계층)

패킷이 컴퓨터에 잘 전달이 됐지만 어떤 프로그램에게 전달할 것인가? 이때는 포트라는 것을 사용하며 우리가 잘 알고 있는 웹 브라우징은 80, 443 포트를 일반적으로 사용한다. 4 계층에서는 크게 두 가지 방식으로 데이터를 전달한다.


TCP

패킷을 보낼 때 상대측에서 받을 준비가 됐는지 확인하고 싶다. 그리고 마지막으로 데이터가 잘 전달됐는지 확인하고 싶을 때 쓰는 방식이다. 또한 일정 시간 동안 잘 받았다고 답장이 없을 경우 재전송할 수도 있다.


UDP

제대로 못 받았으면 다시 요청하면 되기 때문에 굳이 데이터를 잘 전달했는지 확인할 필요는 없을 경우 사용한다. 아래서 설명할 DNS에서 이 방법을 사용한다.


7 계층  (응용 계층)

패킷이 최종적으로 응용프로그램에 도달하게 된다. 응용프로그램은 port를 통해 응답을 기다릴 것이며 정해진 프로토콜로 대화할 것이다.  


DNS

IP주소를 통해 패킷을 전달한다고 했다. 우리는 구글 서버에 대해 아무것도 모르고 단지 www.google.com주소만 알고 있다. 웹브라우저에 www.google.com을 입력하면 브라우저는 어떻게 서버를 알고 데이터를 요청하는 것일까? DNS 프로토콜을 통해 구글이 제공하는 서버의 IP주소를 알아낸다. IP주소는 고정일 수도 있고 변할 수도 있다.


SSH

서버에 원격 접속하고 싶을 때 사용한다. SSH는 시큐어 쉘의 약어인데 말 그대로 암호화된 통신을 제공한다. 인증방법은 다양하며 파일 전송도 할 수 있다.


HTTP

인터넷을 위해 사용하는 기본적인 프로토콜이다.


HTTPS

HTTP 프로토콜로 로그인을 하게 되면 ID와 PW가 평문 그대로 전송된다. 홈페이지가 위장했는지 여부를 알고 싶고 믿을 수 있는 사이트인지, 그리고 암호화된 통신을 하고 싶을 때 https로 요청을 한다.



실전 - 패킷분석

수학문제를 공부했으면 연습문제를 풀어보듯 이해를 돕기 위해 실제 존재하는 네트워크 패킷을 분석해보자

구글에 와이어샤크를 검색하고 다운받는다.

https://www.wireshark.org/#download


https://www.malware-traffic-analysis.net/2019/08/14/index.html

패킷을 다운로드하여 와이어샤크로 연 뒤 패킷 구조를 살펴보자. 패킷의 분석 내용은 https://isc.sans.edu/diary/Recent+example+of+MedusaHTTP+malware/25234 에서 볼 수 있으며 몇 년전에 돌았던  Rig Exploit Kit 악성코드의 패킷을 캡처한 것이다.


우선 와이어샤크에서 port가 안 보이므로 설정을 통해 보이게하자.


Column을 마우스 우클릭하고 Column Preferences을 클릭한다.


다음과 같이 Port를 추가해준다.


어떤 HTTP 패킷이 왔다갔다 했는지 통계를 통해 확인하자


우선 다음과 같은 HTTP 요청이 있었다.

http를 검색하고 마우스 우클릭을 한 뒤 Stream을 통해 패킷을 분석해보면 188.255.37.11x 주소에서 익스플로잇킷에 의해 악성코드에 감염됐고 이후 2개의 도메인에서 악성코드와의 트래픽이 있었다.


매거진의 이전글 침입탐지와 차단시스템
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari