'해킹보안'에 해당되는 글 5건

  1. 2019.12.16 서브넷팅
  2. 2019.11.13 DHCP(Dynamic Host Configuration Protocol)이란?
  3. 2019.11.13 NAT(Network Address Translation)이란?
  4. 2019.09.10 TCP Retransmission(TCP 재전송)
  5. 2019.09.10 SSL터널링
posted by SoundHacker 2019. 12. 16. 08:29

서브넷팅이란?

네트워크 갯수와 호스트의 갯수를 조절하여 효율적으로 네트워크 자원을 분배하는 것!

일단 IPv4는 0.0.0.0~255.255.255.255의 주소를 사용한다.

여기서 A, B, C class로 나눠 사용하게 된다.

 

A, B, C class는 나중에 따로 정리할 것이므로 우선 서브넷팅부터 알아보자.

 

124.32.1.0이라는 IPv4주소가 있다고 가정하자.

11111111.11111111.11111111.11000000 으로 서브넷팅을 하면? (십진수에서 이진수로 나타냄)

4개의 네트워크와 64개의 호스트를 받을 수 있다.

마지막에오는 "11000000"이 중요하다. 

 

여기서 11은 네트워크의 갯수를 의미한다.

1의 갯수만큼 2^n을 하면 사용가능한 네트워크수가 나오게 된다.

 

반대로 000000은 호스트의 수를 의미한다.

0의 갯수만큼 2^n을 하면 접속가능한 호스트수가 나오게 된다.

 

기본적인 원리는 위의 설명대로 사용한다.

 

이를 응용하기 위해 나온것이 가변길이 서브넷팅(VLSM)이다.

 

일단 차이점을 알아보자면, 기존 서브넷팅 한 네트워크를 또 서브넷팅으로 나눌 수 있다.

즉, 정말로 필요한 만큼 할당이 가능해 지는 것이다. 

 

만약 회사에서 A라는 부서에 100개, B라는 부서에 40개, C라는 부서에 10개를 할당해주어야 한다면,

11111111.11111111.11111111.10000000로 서브넷팅을 해서 128개 중 100개를 A에 할당,

11111111.11111111.11111111.11000000로 서브넷팅을 해서 64개 중 40개를 B에 할당,

11111111.11111111.11111111.11100000로 서브넷팅을 해서 16개 중 10개를 C에 할당한다.

 

필요한 만큼 자원을 분할하여 낭비를 줄이도록 하는 것이 서브네팅의 핵심이다.

 

'해킹보안 > Network' 카테고리의 다른 글

DHCP(Dynamic Host Configuration Protocol)이란?  (0) 2019.11.13
NAT(Network Address Translation)이란?  (0) 2019.11.13
TCP Retransmission(TCP 재전송)  (0) 2019.09.10
SSL터널링  (0) 2019.09.10
posted by SoundHacker 2019. 11. 13. 15:03

DHCP(Dynamic Host Configuration Protocol)

- 동적 호스트 설정 통신규약(직역..)

기존에 고정 IP를 써보려 했거나 사용중이라면, 경험해 보았을 일들이 있다.

IP하나 오타로 인해 인터넷이 안되거나, 전원이 꺼져있는 컴퓨터, 네트워크 기기에 모두 IP를

할당해 주어야하는 등의 불편함이다. 그 외에도 네트워크 자원 소모 자체가 크다.

 

이러한 불편함을 해소 할 수 있는 것이 DHCP이다.

동적 호스트 설정 통신규약이라는 말처럼 DHCP는 IP를 동적으로 할당한다.

일단 필요한 개념은 임대(lease), 갱신(renewal), 반환(release)이다.

 

임대는 말그대로 해당 IP를 빌려주는 것이다.

보통은 8일로 기간을 설정해 두는데, 장소, 사용량에 따라 다르게 설정할 수 있다.

임대기간이 끝나면 해당 IP를 반환해야한다.

 

갱신은 보통 임대갱신이라고 하는데, 이는 임대기간을 늘려주기 위한 기능이다.

쓰고있던 IP를 사용중인지 확인하고 사용중이라면 임대기간을 늘려주는 기능이라고 생각하면 된다.

아무래도 임대 -> 반환 -> 다시 임대 하려면 시간도 낭비되고 불필요한 트래픽도 만든다.

그러므로 아예 임대 -> 갱신 하면 조금더 효율적인 사용이 가능해진다.

보통 갱신은 임대기간의 50%가 지나갈 때 시도한다. 이때 사용중이라면 기간을 연장,

만약 해당 장치가 꺼져있는등 사용하지 않는 것이 확인되거나 임의의 이유로 인해 갱신에 실패하면

2차 갱신을 시도하는데 이것은 임대기간의 87.5%가 지나갈 때 시도한다. 

2차갱신마저 실패하면 해당 IP를 반환한다. 필요할 경우 다시 임대하여 사용하여야 한다.

 

반환은 DHCP의 가장 중요한 기능이다.

임대기간이 지나거나 사용이 끝난 IP를 다시 사용가능한 주소풀에 넘겨주는 과정이다.

이게 잘 이뤄지지 않는다면 고정IP보다도 못한 프로토콜이 되므로, 가장 중요하다고 볼 수 있다.

 

이러한 원리를 바탕으로 이용하는 공격기법도 있다.

DHCP exhaustion attack이다.

일단 원리를 보자면,  MAC주소를 계속 바꿔가면서 계속 임대를 받아서 사용가능한 주소풀, 즉 네트워크 자원을

몽땅 잡아버려서 더이상 사용 불가능한 상태로 만들어 버리는 것이다.

 

그 외에도 흔히 중간자 공격으로 알고 있는  DHCP MITM attack도 가능하다.

중간자 공격은 피해자의 PC가 공격자의 DHCP를 커쳐 통신을 하게하는 방식이다. 그렇다보니 공격자는

피해자의 통신 과정속에서 주요정보를 가로채서 분석하는 것이 가능해질 뿐더러, 피싱도 가능하다.

 

'해킹보안 > Network' 카테고리의 다른 글

서브넷팅  (0) 2019.12.16
NAT(Network Address Translation)이란?  (0) 2019.11.13
TCP Retransmission(TCP 재전송)  (0) 2019.09.10
SSL터널링  (0) 2019.09.10
posted by SoundHacker 2019. 11. 13. 14:36

NAT(Network Address Translation)이란?

라우터가 광역망이랑 로컬(지역, 내부)망과 통신을 할때 사용 가능한 기능으로,

외부의 서버나 컴퓨터의 입장에서 보면 라우터(요즘은 공유기에도 NAT기능이 있다.)만 확인가능하고,

그 밑의 하위망은 PC가 몇대가 있던간에 확인 할 방법이 없다.(그야 공유기의 공인IP만 서버에겐 보이므로) 그러므로 보안에 도움이 되기도 한다.

 

한개의 인터넷 회선만으로도 여러 PC를 연결하여 사용할 수 있도록 해주는 것이 바로 이 NAT덕분이다.

외부 서버의 입장에서는 라우터 하위의 망에 있는 PC 0과 PC 1을 알 수 없다. 

또한 직접적인 외부와의 통신은 라우터가 맡아서 하기 때문에 공인IP의 소모 또한 줄일 수 있다.(다만 무수히 많은 사설IP를 배정한다면 이야기가 달라지지)

 

예시를 들어보자면, 

집에있는 공유기를 예로 들 수 있다. 3대의 PC가 집안에 있는 공유기를 거쳐 통신을 한다고 가정하자.

PC1 = 192.168.22.1 / PC2 = 192.168.22.2 / PC3 = 192.168.22.3 이라는 사설IP를 부여받았다.

공인IP는 132.423.23.1 이라고 가정한다.

 

공유기는 이 사설IP들을 가진 PC들과 통신을 거쳐서 패킷을 외부의 서버를 통해 전달하게 된다. 이 때 서버의 입장에서는 공유기에 부여된 공인IP (132.423.23.1)와 통신을 하게 된다. PC1번이든 2번이든 3번이든 상관없이 공인IP (132.423.23.1)와 통신하는것이다.

그렇다면 IPv4의 갯수가 부족해서 IPv6이 나왔다는데 공유기를 문어발처럼 연결- 연결 - ... 해나가면 무한대로 늘릴수 있을까?

 

그건 불가능하다.

 

공유기가 부여받은 것은 공인IP 1개이고, 그 공인IP의 포트를 각각의 사설 IP에 부여하는 방식으로 통신을 하게 된다.

즉 65535개라는 포트갯수의 제한에 발이 묶여서 사용 불가능할 뿐더러...

65535개의 사설IP를 통한 통신을 감당할 만한 스펙의 (어마무시한)공유기가 있어야 하고, 시분할방식으로 나눠야 되는데 그렇다면 어마어마한 딜레이가 생길 것이다. 게다가... 공유기 하나 거칠때마다 TTL이 1씩 줄어드는걸 감안하면(time to live / https://soundhacker.tistory.com/7) 돌다가 폐기당할 가능성도 있다.(물론 조절은 가능하지만)

 

 

'해킹보안 > Network' 카테고리의 다른 글

서브넷팅  (0) 2019.12.16
DHCP(Dynamic Host Configuration Protocol)이란?  (0) 2019.11.13
TCP Retransmission(TCP 재전송)  (0) 2019.09.10
SSL터널링  (0) 2019.09.10
posted by SoundHacker 2019. 9. 10. 21:51

TCP재전송이란?

간단히 정리하자면

서버와 클라이언트 사이에서 정체모를 이유로 통신중에 패킷이 도착하지 못할 경우

다시 패킷을 보내주는것을 말한다.(양방향 모두 포함)

 

구현은 어떻게 할까?

Timer(타이머)를 이용하여 구현하게 된다.

즉 타이머가 만료되기 전에 도착하는가? 를 기준으로 판단하여 재전송 여부를 결정하는 것이다.

 

그러면 각 상황별로 살펴보게된다면?

1. Server to Client

이 과정에서 서버가 클라이언트에게 패킷(Packet)을 보내다가 어떤 이유로 수신을 하지 못하게 된 경우,

응답(ACK)를 받지 못한 송신자의 타이머는 만료되게 된다.

2. Client to Server

위의 과정에서 볼 수 있는 것처럼 클라이언트에게 패킷을 보내서 정상적으로 클라이언트가 패킷을 수신하더라도

ACK가 오는 과정에서 손실이 될 수 있다. 이 경우에도 마찬가지로 송신을 받지 못하게 된 송신자의 타이머는 만료된다.

3. To...Many..Delay....

분명 정상적으로 패킷을 보내고, 수신자도 정상적으로 ACK를 보낸다..그러나 이 과정에서 네트워크 지연이 생기게 되면?

분명 타이머의 형태이기에 이 타이머가 끝난 다음에 도착할 수도 있다. 바로 이 case를 말하는 것이다.

 

그래서! 타이머의 시간을 적당히 설정하는게 중요하다.

그 이유는 위에서 알 수 있듯

1, 2번에서는 너무 타이머가 길면 말 그대로 TCP Retransmission까지 걸리는 시간이 너무 길어지고,

반대로 타이머가 너무 짧으면 3번 현상이 너무 많이 일어나면서 정상적으로 도착한 경우에도 타이머가 만료되어

재전송을 하게 되기 때문이다.

 

그래서 Retransmission TimeOut (RTO)라는 것이 있다.

RTO는 위의 상황을 막기 위해 적절한 타이머 만료시간을 설정하는 것이다.

보통 운영체제 커널에 있으나, 네트워크 상황별로 유동적으로 변하게 된다.

 

물론! 굳이 타이머만 써야 하는건 아니다.

Triple Duplicate ACK라는 방법도 있다.

이걸 직역하면 3개의 복제된 ACK인데 정말 말 그대로다.

3개의 ACK를 받으면 재전송을 하는 방법으로, 시간 지연은 발생하지 않게 되고

수신자가 보낸 ACK가 타이머의 역할을 대신 하고 있기때문에 빠르게 재전송을 할 수 있는 것이다.

 

그리고 ACK를 줄이기 위해 효율적인 방법으로는 Delayed ACK, 즉 일정 시간만큼 기다렸다가 ACK를 보내는 것이다.

말 그대로 효율을 위한 것이기 때문에 딜레이된 시간동안 도착한 패킷이 있다면 Delayed ACK timeout을 다시 초기화하고, 그렇지 않으면 ACK를 보낸다. (Delay ACK timeout은 일반적으로 200ms)

 

 

'해킹보안 > Network' 카테고리의 다른 글

서브넷팅  (0) 2019.12.16
DHCP(Dynamic Host Configuration Protocol)이란?  (0) 2019.11.13
NAT(Network Address Translation)이란?  (0) 2019.11.13
SSL터널링  (0) 2019.09.10
posted by SoundHacker 2019. 9. 10. 21:05

SSL터널링이란?

 

그전에 SSL이란 왜 필요할까?

=> Sniffing을 막기위해서!

스니핑은 지나가던 패킷을 슬쩍 건져서 아이디, 패스워드를 찾는 행위이다.

이 자체를 막아버리기엔 여러모로 애로사항이 생기게 되므로, 해커가 패킷을 건져가더라도

알아 낼 수 없도록 암호화를 해야 한다.

즉! 여기서 사용되는 암호화가 SSL이라고 생각하면된다.

 

ex) Server to Client

crypt(SSL Tunneling)(Server) -> network -> Client

 

ex) Client to Server

Client -> crypt -> network ->decrypt(SSL Tunneling)(Server) 

 

대충 이런 형태이다.

물론 다이렉트로 서버와 클라이언트가 암호화, 복호화하면 좋겠으나!

그걸 지원하지 않는 네트워크 서비스 POP3 SMTP등등...을 위해 있는기능인 것 같다.

[참고](각 네트워크별 일반 포트와 SSL 포트..)

http   https   smtp   ssmtp         pop3   pop3s   imap   imaps

80     443     25      465 or 587   110     995      143     993

 

이제 SSL터널링에 필요한 것을 알아보아야 한다.

우선 소프트웨어적으로 SSL터널링을 지원해줄 프로그램이 필요하다. (물론 위치는 서버!)

ex)stunnel 이나 sslwarp 등등...

그리고 인증서가 필요하다!

그이유는 CA에서 발급된 인증서와 비교하여 클라이언트신원 확인을 거치기 때문이다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

'해킹보안 > Network' 카테고리의 다른 글

서브넷팅  (0) 2019.12.16
DHCP(Dynamic Host Configuration Protocol)이란?  (0) 2019.11.13
NAT(Network Address Translation)이란?  (0) 2019.11.13
TCP Retransmission(TCP 재전송)  (0) 2019.09.10