본문 바로가기

Rookies 9기/시스템 네트워크보안

시스템/네트워크 보안 1일차

728x90

인터넷 

인터넷은 미 국방부 산하에 RAPA(알파, 국방과학연구소)에서 전쟁에 쓰이는 무기를 연구를 하면서 멀리 떨어진 연구기관 및 대학교 등 연결의 필요성이 있어서 개발을 하였지만 서로 다른 회사의 네트워크 장치를 사용하다 보니 호환이 안되고 통신 방법이 다 달랐다. 그리하여 알파에서 공통의 프로토콜(ARPAnet)을 만들기로 하였다.

‣ 인터넷의 종류 : WWW, FTP, Telnet, Torrent, SSH, Archie, Gopher 등

 

‣ 전세계 미군부대를 연결할 계획(1960년대) ---> ARPAnet을 둘로 나누어서 미군 전용 네트워크(Milnet)와 인터넷(TCP/IP)으로 분리되었다.

Milnet의 중심이 되는 슈퍼컴퓨터 : Skynet

인터넷은 악성코드에 점령을 당함

------> Skynet과 인터넷을 연결하자!! 존 코너 반대!!

- ARPAnet의 시작

프로토콜 동작 원리

Data Encapsulation 구조

TCP/ IP 프로토콜의 데이터 캡슐화 구조이다.

• Packet과 Frame의 구조

Packet : 최초 출발지에서 최종 목적지까지 그대로 전달된다.

Frame : 각 구간별 통신 방식에 따라 달라질 수 있다.

 

이더넷 프레임

• Preamble(7 bytes) : 수신 시스템에게 프레임이 도착하는 것을 알려준다.

• SFD(1byte) : 정상적인 프레임의 시작을 표시

• Destination Address(6 bytes) : 패킷을 수신하는 목적지의 물리 주소

• Source Address(6 bytes) : 패킷 송신자의 물리 주소

• Type or Length(2 bytes) : 길이 또는 종류로 정의된다.

• Data / payload(46~1500 bytes) : 상위 계층의 프로토콜로부터 캡슐화된 데이터

• FCS(CRC)(4 bytes) : 에러를 판별

※ Ethernet의 경우 최대 전송 단위가 1500byte이므로 Data + TCP + IP 모두 합해 1500byte 이내여야 한다.

• Frame 전송 방식의 종류

Wi-Fi, Ethernet, Token Ring, FDDI ---> LAN( 근거리 통신)

ATM, PPP, HDLC, Frame-Relay 등 ---> WAN( 원거리 통신)

- 카톡을 보내면?

Wi-Fi -- (공유기)--> Ethernet --(라우터. 스위치) -----> Frame-Relay ---> ATM ---> FDDI ---> Ethernet

• TCP/UDP

TCP

TCP를 이용하는 경우

‣ 주로 User가 데이터를 송/수신할 때

‣ 전송이 확실해야 할 때

‣ 데이터 큰 경우 (파일, 사진, 동영상, 로그인 등)

UDP

UDP를 이용하는 경우

‣ 주로 시스템 간 정보를 교환할 때

‣ 정확성보다 속도가 중요할 때

‣ 실시간으로 음성, 비디오, 게임 화면 등 전송

 

• TCP/UDP 분할

TCP를 사용하는 경우에는 TCP가 데이터를 분할(Segmentation)을 하고, TCP를 사용하지 않는 경우에는 IP가 데이터를 단편화(Fragmentation) 한다.

※ TCP가 자르면 TCP 헤더를 다 붙이고, IP가 자르면 IP 헤더를 다 붙인다.

 

• Ethernet 

• Ethernet은 누가 만들었는가?

Xerox의 연구원이었던, Dr.Metcalfe가 Ethernet을 처음으로 만듦  ---> 3COM이라는 회사를 설립 ---> HP에서 인수(HP Networks)

MAC Address라는 주소체계를 만들어서 장비마다 번호를 부여하는 방식

현재 가장 많이 사용되는 LAN 방식

표준화하면서 이름을 IEEE 802.3으로 지정 

IEEE 802.3을 속칭 Ethernet ll라고 한다.

 

• MAC 주소 : D0-3C-1F-2E-3D-47

각 자리는 16진수, 16은 2의 4승이므로 4bit ---> 각 자리는 4bit

4bit가 12자리(8bit가 6자리)이므로 48bit 주소체계 ---> 주소의 개수는 2의 48승

앞의 24bit를 OUI(제조사 식별코드) : 어느 회사 제품인지 알 수 있다.

뒤의 24bit은 제품 일련번호

구글에서 MAC OUI IEEE로 검색하면 두 번째 링크에 https://standards.ieee.org/products-programs/regauth/oui/ (MAC 주소 OUI를 공식 관리하는 기관)

 

구글에서 'default password'로 검색하면 제조사별 모델별 기본 ID와 PW를 알 수 있다.

---> 기본 패스워드를 변경하지 않는 경우 로그인 가능

 

• IPv4

IPv4 주소는 컴퓨터를 식별하기 위한 목적으로 사용

0부터 255까지의 번호가 4자리로 되어 있다(구분자 :.(dot) )

각 자리는 8bit로 되어 있음 --> 8bit는 2의 8승이므로 256(0~255) ---> 8bit = 1byte = Octet 

8bit씩 4자리이므로 32bit 주소체계 (4 Octet이라고 한다) ---> MAC 주소보다도 작고, 주소 고갈 문제 발생

네트워크 부분과 호스트 부분으로 나누어짐(네트워크 : 집안 이름, 호스트 : 개인 이름)

 

※ 어디까지가 네트워크 부분일까?

=> 192.168.190.1 ---> 알 수 없다!!!

 

1) Classful : 클래스 기반

class A : N.H.H.H ----> Host 부분은 사용 범위 8bit * 3 = 24bit = 2의 24승 = 1777만 개

Class B : N.N.H.H ----> Host 부분은 사용 범위 8bit *2 = 16bit = 2의 16승 = 65535개

Class C : N.N.N.H ----> Host 부분은 사용 범위 8bit = 2의 8승 = 256개

Class D : Multicast용으로 지정되어 있다.

Class E : Not Use

---> 문제점 : 주소 낭비 -> Classful방식을 더 이상 사용하지 않기로 함

 

2) Classless : 클래스를 무시하는 방식 (오늘날)

----> 네트워크와 호스트를 (서브넷 마스크)로 구분(인진수로 1에 해당하는 IP 부분은 Network, 0에 해당하는 IP 주소 부분은 Host)

=> 192.168.190.1  --> 255.255.255.0   (255=11111111)

       --> 192.168.190.0 네트워크 주소를 표기할 때는 호스트 부분을 0으로 사용

       --> 네트워크 주소를 알아서 어디에 쓸까요? => 목적지를 찾아준다.

       

• IPv4 헤더

IP 헤더 구조

‣ version (4bit) _ _ _ _ : 0100 = 4   ----> IPv4  (만일 IPv6헤더라면 0110 )

‣ Total Length : IP 프로토콜이 만들 수 있는 최대크기 (16bit = 65535bytes까지 만들수 있다)

-> Frame에 실어서 보내려면 1500으로 잘라서 보낸다.

‣ TTL (Time to Live : 패킷의 수명) : 다른 네트워크로 이동할 때마다 TTL 값이 1씩 줄어든다. --> TTL이 0 이 되면 라우터가 버린다.(더 이상 전달 안 한다)

   => TTL이 0이 되면 패킷을 버리는 이유는 네트워크의 혼잡을 방지하기 위해서

   운영체제에 따라 TTL의 초기값이 다름 : Unix : 255, Windows : 128. Linux : 64   --> 관리자가 설정을 변경할 수 있다.

 

• 지역 DNS 로드밸런싱

사용자가 접속한 위치 (국가별, ISP)에 따라 다른 서버에 접속

 

Quiz) 출발지 IP주소를 다른 주소로 바꿀 수 있다. ---> IP Spoofing이라고한다. (Spoofing : 속임수)

 

• IANA

IP 주소는 IANA에서 관리하고 있다

IANA(인터넷 주소 관리 위원회)

IANA를 관리하는 곳은 ICANN에서 관리한다.

IPv4, IPv6, Port번호, AS번호(기관 식별자)

IANA의 사이트 주소 : www.iana.org  

 

Internet Assigned Numbers Authority

Management of the DNS Root Zone (assignments of ccTLDs and gTLDs) along with other functions such as the .int and .arpa zones.

www.iana.org

 

• PORT

• port 번호 (16bit 할당) : 컴퓨터 내부의 서비스를 식별하기 위해서 사용한다.(= Application 식별)

• 16bit = 2의 16승 = 65536 *( 0~65535)  

1~1023번까지 Well-known Port  --> system Port

 ‣ 범용 서비스를 위한 포트  -> http(80), FTP(21), SSH(22), Telnet(23), SMTP(25) https(443)

 ‣ 용도를 미리 지정해 놓으면 물어보지 않아도 된다.

• Registered Port : 1024~49151 

 ‣ 사설 Application을 개발하는 경우 사용하는 포트

 ‣ Appliction을 개발하면. 다른 기존의 Application과 중복되지 않는 번호를 사용해야 한다.

 ‣ 등록을 하고 사용하면 중복을 막을 수 있음

cf) Port Scanning

어떤 포트가 열려있다는 것은 어떤 서비스가 실행 중임을 알 수 있기 때문에 어떤 포트가 열려있는지 조사하는 것

• Dynamic Port : 49152~65535

 ‣ 주로 클라이언트용 프로그램들이 사용하는 주소

 ‣ 사용에 제한이 없다.

 

• 사용 중인 포트 확인하기

netstat -na

외부 주소의 서버 포트가 443 또는 80이면 로컬 주소에서 사용하는 포트는 '웹 브라우저'일 가능성이 높다.

 

• Wireshark

‣ Wireshark는 패킷 분석 도구이다.

‣ 최근에 기능이 확장되어서 USB트래픽을 분석할 수도 있고 다양한 PAN(Personal Area Network : Bluetooth, Zigbee, RFID 등) 도 분석 가능

‣ 가장 많이 사용하는 오픈소스

다운로드 화면 1
다운로드 화면 2

각자 맞는 운영체제를 다운로드한다.

Npcap

Npcap 설치 : Nmap에서 만든 Packet Capture 도구이다.

Wireshark 처음 화면
Wireshark 실행 화면

 

• WireShark 실습

ubuntu에서 VM Gateway(192.168.5.2)

 

WireShark

WireShark를 실행시켜준다. 

ubuntu

터미널에서 ping 192.168.5.2를 날려준다.

WireShark

WireShark에서 ping이 응답/요청이 된 걸 확인할 수 있다.

※ 98 bytes 가 나온 이유는? => Ethernet헤더 14 + IP 헤더 20vytes + ICMP 64bytes = 98bytes

(사진 첨부)

 

 

•  DVWA 실습

FTP로 로그인한 계정의 ID와 PW를 찾아보세요

DVWA 로그인

WireShark를 실행을 시키고 dvwa 홈페이지에 들어가 로그인을 해보자.

dvwa wireshark

File > save 클릭하고 http_sniff.pcapng로 저장 (pcapng : packet capture next generation )

디스플레이 필터에 http.request.method == POST

디스플레이 필터에 http.request.method == POST 방식으로  찾아보자.

결과 화면

※ 여러 가지 방법으로 패킷을 찾는 방법

  1. Edit > Find Packet ----> String으로 변경하고 '특정 키워드'를 넣는 방법
  2. frame에 매치되는 단어를 검색 frame matches password // password라는 단어를 찾기
  3. frame에 포함된 단어를 검색 frame contains password