CIDR은 Classless Inter Domain Routing 으로 서브넷팅을 할때 좀 더 편하게 
한눈에 알아볼 수 있게 하는 방법이다.

만약 206.10.9.0 라는 ip address와 255.255.255.128이라는 subnetmask가 주어졌다면
계산을 할텐데 <편의상 마지막 옥텟만 2진수로 씁니다>
-표의 3번째 칸은 AND 연산을 한 값

206
10
9
0000 0000(0)
255
255
255
1000 0000(128)
206
10
9
0000 0000(0)

계산이 이렇게 됩니다. 그러면 ip는 두가지 영역으로 분리됩니다.
206.10.9.0 ~ 206.10.9.127
206.10.9.128 ~ 206.10.9.255


이것은 각각 2^7 -2 개의 ip를 할당할수 있는 두개의 영역을 나누어 진 것이고. 따라서
207.10.9.0/25 라고 표현을 합니다. 
그냥 쉽게 서브넷 마스크의 연속된 1의 갯수라고 생각하면 됩니다.
여기서 따로 Subnetmask로 표현을 하지 않고 옆에 /25같은 방법으로 나누는 것을 CIDR이라고 합니다.


VLSM은 가변길이 subnetmask이다.

만약 회사에서 ip를 할당하는데 
120 /50/ 25/ 5 로 할당 해야한다면 이걸 내가 할당받은 ip내에서 반만으로 쪼갤수는 없을 것이다.
따라서 VSLM을 쓰는데 방법은 다음과 같다.

만약
120 / 50 / 25/ 5를
211.20.115.0의 IP로 나눈다고 해보자. (편의상 마지막 옥텟만 2진수로 한다.

211.20.115.                                      0
000 0000 ->NET
255.255.255.1000 0000(128) 
-subnet mask 
111 1111 -> BC
2^7 -2개 까지 할당가능 (126개)
                                                           1
0
00 0000 ->NET
255.255.255.1100 0000(192)
                                                           1
0
11 1111 ->BC
2^6 -2 개 까지 할당 가능 (62개)
                                                           1
1
0
0 0000->NET
255.255.255.1110 0000(224)
                                                           1
1
0
1 1111->BC
2^5-2개 까지 할당 가능 (30개)
                                                           1
1
1
0 0000->NET
255.255.255.1110 0000(224)
                                                           1
1
1
1 1111->BC
2^5-2개 까지 할당 가능(30개)

NET -> network address
BC -> 브로드캐스트 


이와같이 서브넷 마스크를 다시 서브넷 하여 가변길이로 만들어줘서 좀 더 ip낭비를 줄이는것을 VLSM이라고 한다.


'네트워크<구축,해킹,보안> > 개념,WireShark' 카테고리의 다른 글

Routing Table이란?  (0) 2018.01.31
CIDR이란 무엇인가?  (0) 2018.01.31
SubnetMask  (0) 2018.01.31
Network Class란 무엇인가?  (0) 2018.01.31
WireShark 패킷분석  (0) 2018.01.31

클래스로만 네트워크를 나누기엔 네트워크가 너무 낭비된다.
그래서 더 효율적이고 잘게 쪼게기위해 서브넷마스크를 이용한다.

10.0.0.0 인 네트워크 주소가 있다고 하고 서브넷마스크가 255.128.0.0이라고 생각하자
2진수로 변환하면

0000 1010 . 0000 0000 . 0000 0000 . 0000 0000 -ip address
1111 1111 . 1000 0000 . 0000 0000 . 0000 0000 -subnet mask
-----------------------------------------------------------------  AND연산
0000 1010 . 0000 0000 . 0000 0000 . 0000 0000 -새로나온 ip address

서브넷 마스크는 왼쪽부터 채워지며 1인부분을 비트를 정해줘서 내려준다. 

저렇게 내려주면 2개의 subnet이 만들어진다. 
0000 1010 . 0000 0000 . 0000 0000 . 0000 0000 부터
0000 1010 . 0111 1111 . 1111 1111 . 1111 1111 까지

0000 1010 . 1000 0000 . 0000 0000 . 0000 0000 부터
0000 1010 . 1111 1111 . 1111 1111 . 1111 1111 까지



10진수로 변환하면 
10.0.0.0 -ip address 
~ 10.127.255.255 -브로드캐스트 주소

10.128.0.0 - ip address
~ 10.255.255.255 - 브로드캐스트 주소







할당 가능한 ip는 서브넷 전에 2^24 -2 개가 있었지만 1개가 더 정해져서 내려왔기 때문에 2^23 -2 개이다. 
여기서 2를 빼는 이유는 '할당가능' =사용가능한 아이피이므로 2개를 빼준다
아이피 범위중 가장 맨처음에 있는 ip는 쓸 수 있는 ip가 아니고 그 ip를 나타내는 대표적인 주소이다.
맨 마지막 주소는 브로드캐스트 주소이다.
브로드캐스트 주소는 영역에 있는 모든 ip에게 방송을 하는 주소이다. 쓸 수 있는 ip가 아니다.
그러므로 맨앞, 맨뒤 2개의 ip는 할당 가능하지 않은 ip이다.

만약 ip가 필요해서 ip를 신청했는데 쪽지 하나가 왔다
192.168.10.0
255.255.255.0

2진수로 해서 계산을하면 
192.168.10. 0부터 192.168.10.255 까지 할당가능한 2^8-2 개의 아이피를 받은것 이다.

192.168.10.128
255.255.255.192로 내려오면

192.168.10.128~ 192.168.10.191 까지의 ip가 할당된 것이다.
서브넷 마스크가 192면 마지막 옥텟이 1100 0000 이므로
2^2 개의 네트워크 영역을 나눌 수 있다.



'네트워크<구축,해킹,보안> > 개념,WireShark' 카테고리의 다른 글

Routing Table이란?  (0) 2018.01.31
CIDR이란 무엇인가?  (0) 2018.01.31
VLSM이란 무엇인가?  (0) 2018.01.31
Network Class란 무엇인가?  (0) 2018.01.31
WireShark 패킷분석  (0) 2018.01.31

세상에는 수많은(43억개) IP가 있지만 우린 그 IP를 다써간다. IP v4 가 우리가 일반적으로 쓰는 ip이고 사람들의 왕래가 적은 IPTV 같은  기기들에 IP v 6를 써가는 추세이다.
<KISA의 중요사업중에 IPv6주소 전환/확산이 있다>

예전에는 그냥 대~충 잘라서 나눠줬으면 됐지만 요즘은 ip가 너무나 부족한게 현실이다.

ip는 총 이진수로 된 24비트이다.
x . x . x. x 인데 각 x를 옥텟 이라고 부른다.

ip의 클래스는 첫번째 옥텟에 표기된다.
0으로 시작하면 A클래스
10로 시작하면 B클래스
110 은 C클래스
1110은 D클래스
1111은 E클래스이다.

무슨말이냐고?
구글의 ip 주소는 8.8.8.8 이다
이걸 2진수로 변환하면
0000 1000 . 0000 1000 . 0000 1000. 0000 1000 이 되겠다.
2진수로 변환된 IP를 보고 맨 앞 옥텟의 0을 보자마자
아! A클래스구나 하면 된다.






만약 
220.48.1.252 라는 IP 주소는 클래스가 뭘까?
바로 2진수로 바꿔본다.
1101 1100.0011 1000. 0000 0001. 1111.1100

앞에서 110이네? =C클래스. 
A클래스는 국가단위 B클래스는 기업단위 C클래스는 조직단위
X(1). X(2). X(3). X(4) 에서 클래스마다 네트워크 ID와 호스트 ID로 나눈다.
A클래스는 X(1) 이 NET / X(2,3,4)가 HOST ID이다. 네트워크 ID는 총 2^8개 HOST ID는 2^24개
B클래스는 X(1,2) 이 NET ID / X (3,4)가 HOST ID이다. 네트워크 ID는 총 2^16개 HOST ID는 2^16
C클래스는 X(1,2,3)이 NET ID / X(4)가 HOST ID이다.



'네트워크<구축,해킹,보안> > 개념,WireShark' 카테고리의 다른 글

Routing Table이란?  (0) 2018.01.31
CIDR이란 무엇인가?  (0) 2018.01.31
VLSM이란 무엇인가?  (0) 2018.01.31
SubnetMask  (0) 2018.01.31
WireShark 패킷분석  (0) 2018.01.31

1.IDS의 기능(Suricata)
NIDS는 외부로부터 불법적인 접근이나 해커의 공격으로부터 내부 네트워크를 방어하기 위해 내부 네트워크와 외부 네트워크 사이의 통로를 설치하여 두 네트워크 간의 traffic을 제어하기 위한 목적으로 구성된 시스템 혹은 시스템들의 네트워크라고 말할 수 있다외부 네트워크에서 내부 네트워크로 접근하기 traffic 중 적법하다고 인증된 traffic만 통과시킴으로써 외부의 침입으로부터 다음과 같이 내부 네트워크를 안전하게 보호한다.

l  내부의 취약한 네트워크 구성요소를 보호
l  외부로부터 내부로의 불법적인 행동에 대한 내부망의 보호

NIDS는 관리자가 사전에 설정한 통제 정책에 따라 내 / 외부 간 네트워크 traffic을 제어한다이를 통해 방화벽의 가장 중요한 기능인 외부 네트워크로부터의 내부 네트워크 보호를 수행한다.
NIDS의 통제 요소인 차단정책 설정 주요 요소로는 <그림 1>에서 보는 바와 같이 수신 측 IP주소’, ‘수신 측 포트 번호와 송신 측 IP주소’, ‘송신 측 포트 번호가 있으며지금까지 언급한 NIDS의 주요기능은 다음과 같이 정리할 수 있다.

l  외부의 칩입으로부터 내부 네트워크 보호
l  비인가 된 서비스 접속 허용 및 차단
l  내 외부 간 네트워크 사용자 통제
l  내 외부 간 네트워크 traffic 감시

아래 표는 일반적인 NIDS의 기능을 표로 나타낸 것이다.

기능
패킷 기반 및
세션기반 분석
시그니쳐 및
이상 징후
비정상 행위  /
비정상 트래픽
IP 차단
Port  차단
IDS
탐지
탐지
탐지
가능
가능

2.차단로그를 활용한 공격 정보 해석
NIDS(Suricata)에서는 Rule이 필요하다. Suricata의 룰은 Rule Header 부분과 Rule Option 부분으로 나누어져 있다. Rule Heade r부분은 어떠한 패킷인지근원지가 어디인지탐지에 따른 행동을 정의할 수 있다. Rule Header의 첫 부분에 오는 것이 Rule Action으로 주어진 조건에 맞는 패킷을 찾았을 때 어떠한 행동을 취할 것인지를 정해준다

l  Alert – 경고를 알린 후 로그 발생
l  Log – 로그만 발생
l  Pass – 패킷을 무시하고 그대로 보냄
l  Dynamic - Active룰에 의해서 활성화 되기 전까지 대기그전까지는 로그발생
l  Drop – 패킷을 Drop시키고 로그발생
l  Sdrop – 패킷을 Drop 시키지만 로그는 발생하지 않음
 
 

Rule Header
Rule option
Action
Protocool
IP address
Port
->
IP address
Port
(option)


Rule Action 다음 칸에는 Protocool에 관한 정보가 들어간다. Suricata에서는 TCP, UDP, ICMP가 들어간다그 뒤에는 발신자의 IP Address와 Port가 들어가게 된다. IP Address xxx.xxx.xxx.xxx/CIDR block 형식으로 쓰인다또한 IP Address의 부정을  ‘!’으로 나타내어 표현할 수 있다다중 IP Address를 적용하고자 할 때는 ‘[‘ , ‘]’ 안에서 ‘,’로 구분할 수 있다. Port의 범위를 지정할 때에도 ‘:’를 이용하여 범위를 지정할 수 있다
Rule option 부분은 탐지의 핵심 부분으로 ‘:’로 분리되어 표현할 수 있다주요 옵션으로는

l  Msg  - alert를 발생하거나 log를 출력
l  Content – 페이로드 내부 검색 문자열 지정
l  Dsize – 페킷의 페이로드 크기를 지정
l  Offset – 지정한 문자열의 검색 개시위치를 지정
l  Depth – 패턴 매칭을 실시할 페이로드의 깊이를 지정
l  Nocase – 텍스트 데이터 패턴 매칭 시 대소문자 구별을 하지 않음
l  Flags – 플래그의 첫 글자를 따서 지정






예를 들어,
alert tcp any any -> 192.168.1.0/24 80 <content: “admin” : msg:”Admin alert! ‘:> 라고 하였을 때 패킷에서 문자열 admin이 검출된다면 Admin alert! 라는 메시지가 alert 된다.
Rule Body Option에는 대표적으로 Threshold가 있다. Threshold는 동일한 특정 패킷이 관리자가 설정한 시간 안에 일정 수가 발견되면 경고 알림을 출력해주는 옵션이다

threshold:type [limit,threshold,both], track [by_src, by_dst], count [몇 초], 
seconds [횟수]
limit : count 동안횟수 번째 트래픽까지 탐지
threshold : 횟수마다 계속 탐지
both : count 동안 횟수만큼 트래픽이 탐지될 시 1번만 탐지
by_src : 출발지 패킷만 해당
by_dst : 도착지 패킷만 해당 
ex) alert icmp 172.16.10.10 any -> any any (msg:"icmp ping test"; threshold:type both, track by_src, count 10, seconds 20;  sid:1000001;)
=>172.16.10.10으로부터 ICMP 패킷이 20초 동안 10번발생되는 경우에 1번씩 경고메시지 출력

3.Suricata와 Snort
 Suricata Open source 기반의 IDS/IPS이다. Open source 기반의 IDS/IPS라고 하면 Snort가 대표적이다. 1998년에 나온 Snort는 오랜 시간 동안 Open source였기 때문에 많은 피드백으로 기능이 추가되고 오류가 많이 수정되었다하지만 시간이 지나면서 인터넷의 발달과 스마트폰에 발달로 인해 트래픽 양이 급격히 증가하면서 대용량 트래픽을 실시간으로 처리할 수 있는 기능이 중요해졌다. Snort는 단일 스레드만 지원해서 대용량 트래픽을 실시간으로 처리하기에는 힘든 환경이 되었다. Suricata Snort의 단점을 개선하고 장점은 수용하였다.

l  멀티 코어(Multicore)/멀티 스레드(Multi-threading) 완벽 지원
l  Snort 룰 완벽 호환 (기존 시스템에서 사용 중인 snort 시그니처 사용 가능)
l  하드웨어 밴더의 개발 지원으로 하드웨어 가속 지원 (GPU 가속)
l  스크립터 언어(lua)로 시그니처 작성 가능
l  Snort의 대부분 기능 모두 지원


네트워크 패킷에 대한 분석을 하는 가장 기본적인 WireShark 패킷을 분석하는 방법에 대해 알아보자.
WireShark는 https://www.wireshark.org/download.html 에서 쉽게 다운받을 수 있다.



기본적인 와이어 샤크의 모습이다. 내 컴퓨터의 NIC으로 들어온 것을 캡쳐한 것이다. 
1번은 한 줄 한 줄 패킷을 요약한 정보들이라고 할 수 있다. Source(SRC)는 출발지 IP를 의미하고 Destination(DST)는 목적지 IP를 의미한다. 
2번은 네트워크 계층에 따라 분류했다고 볼 수 있다. 화살표 순서대로 1계층 2계층 3계층 4계층을 의미한다. 그림을 보면
1계층은 단순 크기를 나타내는 것을 볼수 있다.
2계층은 Ethernet II로 2계층 프로토콜

3계층은 IPV4 같은 방식이다.
3번은 패킷에 대한 세부적인 설명을 나타낸다. 
대부분의 패킷은 암호화가 되어있어 WireShark으로 해독할 수 없다. 하지만 암호화가 되지 않은 홈페이지에 대해서는 패킷에 대한 내용을 그대로 볼 수가 있다.

HTTP로 되어있는 로그인/회원가입 사이트들은 암호화가 되어있지않아 패킷에 그대로 나타난다.


위에 그림은 HTTPS로 암호화된 사이트가 아닌 HTTP로만 되어있는 사이트에서 로그인을 하였을 때 나타나는 패킷이다.
패킷에 내용을 보면 username= racoongod & password=racoon 이라는 부분을 확인 할 수가 있다. 이것은 암호화가 되어있지 않다는 것이고, 이 패킷이 해커한테 중간에서 스푸핑 당할 경 우, 나의 개인정보가 노출이 될 수 있다는 것을 의미한다.







일반적인 네이버에서 로그인을 진행 하였을 경우 HTTPS로 암호화가 되어 있어서 일반적인 패킷 분석 프로그램으로는 스푸핑이 당해도 이러한 방법으로 정보를 빼가기가 어렵다.

-추가설명
HTTP는 평문이고 암호화가 되어있지 않다. HTTPS의 S는 Secure를 나타내며 HTTPS+SSL의 결합이다.
HTTPS로 된 사이트에 패킷을 보면 2번상자 (계층정보)를 보면 Secure Sockets Layer가 있으며 암호화 되어있다는 것을 알수가 있다.


'네트워크<구축,해킹,보안> > 개념,WireShark' 카테고리의 다른 글

Routing Table이란?  (0) 2018.01.31
CIDR이란 무엇인가?  (0) 2018.01.31
VLSM이란 무엇인가?  (0) 2018.01.31
SubnetMask  (0) 2018.01.31
Network Class란 무엇인가?  (0) 2018.01.31

+ Recent posts