반응형

# ICMP(Internet Control Message Protocol)

- 문제를 해결하는 기능과 전달할 수 없는 패킷에 대한 에러정보를 알리기 위해 사용

- ICMP 오류 보고 메시지 : 라우터/호스트에서 IP 패킷 전달에 문제 발생시 사용

목적지 도달 불가 메시지(Destination Unreachable Msg) : 패킷이 중도에 폐기될 때
시간 초과 메시지(Time Exceeded Msg) : 패킷이 목적지에 전달되기 전에 시간 초과로 폐기될 때
파라미터 문제 메시지(Parameter Problem Msg) : 패킷 헤더 부분에 문제가 발생한 경우
근원지 억제 메시지(Source Quench) : 호스트에게 IP 데이터그램이 라우터 집중현상으로 손실되고 있음을 알릴 때(패킷 흐름을 위해 사용)
재지정 메시지(Redirection Msg) : 동일 네트워크의 다른 라우터로 라우팅하는 것이 효율적이라 판단되면, 라우팅 경로를 변경하도록 사용

- ICMP 쿼리 메시지 : 네트워크 상황 파악을 위해 사용. 기본적으로 ICMP 오류 메시지와 동일한 포맷을 사용하지만 메시지 의존 필드를 식별자와 순서 번호 필드로 나누어 사용

에코 요청과 응답 메시지(Echo Request&Reply) : 두 호스트 사이에 통신이 가능한지 검사할 때
타임스탬프 요청과 응답 메시지(Timestamp Request&Reply) : 패킷 전송시간 측정 메시지
주소 마스크 요청과 응답 메시지(Address Mask Request&Reply) : 호스트가 서브넷 마스크 값을 얻을 때
라우터 요청과 광고 메시지(Router Solicitation and Advertisemetn) : 호스트가 네트워크 정보를 알고 싶을 때

- 2 바이트 체크섬 요소는 ICMP 패킷이 변조/수정 없이 도착되었음을 보장한다. 체크섬은 RFC 792에서 정의된 알고리즘을 사용하여 패킷의 ICMP 영역에서만 계산된다. 값이 계산될 때 체크섬 필드는 0으로 설정된다.

- ICMP 오류메시지가 생성되지 않을 때

특별한 주소를 가진 데이터그램
멀티캐스트 주소를 가진 데이터그램
ICMP 오류 메시지를 전달하는 데이터그램
처음 단편이 아닌 단편화된 데이터그램

# ARP(Address Resolution Protocol), 주소 결정 프로토콜

- IP 주소를 물리적 네트워크 주소(MAC)으로 대응시키기 위해 사용되는 프로토콜

# IGMP(Internet Group Management Protocol)

- IP 멀티캐스트를 실현하기 위한 통신 규약

- RFC 1112에 규정되어 있음

- IP 멀티캐스트 그룹에서 호스트 멤버를 관리하는 프로토콜로 사용. 그룹 탈퇴, 추가, 삭제 등을 동적으로 수행하기 위한 프로토콜

# TCP(Transmission Control Protocol), 전송제어 프로토콜

- 신뢰할 수 있는 연결 지향의 전달 서비스. 3-way 핸드쉐이킹.

- 데이터는 세그먼트 단위로 전송. 모든 세그먼트에 순번을 지정하여 신뢰성 확보

- 각 세그먼트를 전달받은 호스트는 반드시 ACK를 정해진 시간 안에 리턴해야. ACK가 없으면 데이터는 다시 전송된다.

- TCP 프로토콜의 타이머

RTT(Round Trip Time) 패킷이 송신 측에서 전송되어 수신 측에 전달되었다가, 다시 송신 측에 도달하기까지의 시간
RTO(Retransmission TimeOut) 재전송을 위한 타임아웃. ACK를 제대로 받지 못하면 일정 시간 후 재전송함. 동적으로 변함
Fast Retransmission 특정 데이터 세그먼트에 대해 타임아웃 되기 전에 그 세그먼트를 재전송해달라는 ACK 3개가 연속 수신되면 타임아웃을 기다리지 않고, 해당 세그먼트를 즉시 재전송.

- 플래그 비트

URG 긴급 세그먼트에 우선순위가 높은 데이터 존재
ACK 승인 세그먼트가 승인 포함. 승인번호 필드값은 세그먼트 목적지가 다음에 보내야 할 순서 번호를 의미
PSH 밀어넣기 세그먼트를 받는 즉시 애플리케이션으로 송신하란 의미
RST 초기화 송신 장비에 문제가 발생했으니 연결을 초기화하란 의미
SYN 동기화 순서 번호를 동기화 하고 연결 수립을 요청. 순서 번호 필드는 세그먼트를 송신하는 장비의 ISN
FIN 종료 세그먼트 송신 장비가 연결 종료를 요청

- 3way 핸드셰이킹 과정에서 SYN 세그먼트, SYN+ACK 세그먼트는 데이터 전달은 없지만 하나의 순서 번호 소비. ACK 세그먼트는 데이터를 전달하지 않는 경우 순서 번호를 소비하지 않는다.

- 혼잡 제어 알고리즘

혼잡 회피(Avoidance) 조심스럽게 혼잡 윈도우 크기를 확대시킬 필요가 있을 때. 중복된 확인 메시지를 통해 네트워크 혼잡이 감지되거나 수신 확인 타이머가 만료된 경우 복구 절차의 일부분으로 요구
충돌 감지(Detection) 충돌이 일어나면 cwnd가 줄어들며, slow start threshold 값도 반으로 줄어듦
느린 시작(Slow Start) 송신자 측에서 cwnd를 사용하여, 연결 초기에는 1로 설정하고 수신자 측으로부터 ACK를 받기 전까지는 한 개의 패킷만 송신이 가능한 상태. 이후 전송한 패킷에 대해 ACK를 받으면 cwnd 값을 2로 증가시킨다. 링크 전송속도가 포화될 때까지 cwnd 값이 기하급수적으로 증가하며, 재전송 발생시 cwnd 값을 다시 2로 조정하여 혼잡 회피 알고리즘을 수행한다. 송신자 측에서 네트워크 상태에 따라 흐름 제어 가능

- TCP/IP 소켓 프로그래밍

1. socket() : TCP 소켓 생성
2. bind() : 소켓에 포트번호 부여
3. listen() : 클라이언트 접속 대기
4. 클라이언트 접속 시 accept() 호출 : 클라이언트 연결에 대한 새로운 소켓 생성
5. send() & recv() : 서버 소켓-새 클라이언트 소켓 간 데이터 송수신
6. close() : 연결 종료

# UDP(User Datagram Protocol), 사용자 데이터그램 프로토콜 

- 여러 개의 프로세스로부터 전송되는 사용자 데이터그램 처리를 위해 다중화 기법(Multiplexing) 사용. 다수의 프로세스로부터 메시지를 받아들여 각 프로세스마다 할당받은 포트번호를 UDP 헤더에 붙여 IP 계층으로 전달.

* 역다중화 : 수신한 데이터그램의 오류를 검사하여 오류가 없으면 UDP 헤더의 수신자측 포트번호 필드 값을 통해 적절한 상위 프로세스로 메시지 전달

반응형
반응형

- 레지스트리는 설치된 소프트웨어 정보부터 환경설정, 임시 저장 값까지 윈도우 시스템이 운영되는데 필요한 정보를 담고 있다. 

- 사용자는 레지스트리 편집기라는 프로그램을 통해 레지스트리 설정을 조작할 수 있다. 레지스트리 편집기를 실행하려면 시작 메뉴의 검색란에 regedit 또는 regedt32를 입력하면 된다.

- 레지스트리는 윈도우 부팅 시 하이브 파일에서 값을 읽어 들여 구성된다. 하이브 파일에서 직접 읽어 들여 구성되는 키를 Master Key, 여기서 값을 가져와 재구성하는 키를 Derived Key라 한다.

- 레지스트리 편집기에서 처음 보이는 키 다섯 개는 특수한 키로서, 핸들 또는 레지스트리의 루트키라 한다. 이름도 HKEY로 시작한다.

HKEY_CLASSES_ROOT HKCR - 시스템에 등록된 파일 확장자와 사용할 애플리케이션 맵핑 정보, COM 오브젝트 등록 정보 저장
- 파일 연결, OLE 객체 클래스 ID와 같은 등록된 응용 프로그램의 정보 저장
HKEY_CURRENT_USER HKCU - 현재 시스템에 로그인한 사용자와 관련된 시스템 정보 저장
- HKCU에서 설정한 내용이 HKU보다 우선권을 가진다. HKCU 값이 변경되면 HKU 보안 식별자에 해당되는 키의 내용도 변경
HKEY_LOCAL_MACHINE HKLM - 컴퓨터에 설치된 하드웨어와 드라이버나 설정 사항에 관련된 정보 저장
- 컴퓨터의 모든 사용자의 설정 저장
- 가장 다양한 하이브로 구성
HKEY_USERS HKU - 시스템에 있는 모든 계정과 그룹에 관한 정보 저장
- 모든 계정의 프로파일이 존재(나머지 서브키는 HKCU와 동일)
- HKCU에 저장된 정보 전체와 데스크톱 설정, 네트워크 연결 등의 정보를 user.dat에 저장
- 컴퓨터에서 사용중인 각 사용자 프로파일에 대한 HKCU키에 일치하는 서브키 저장
HKEY_CURRENT_CONFIG HKCC - 시스템이 시작할 때 사용하는 하드웨어 프로파일 정보 저장
- 레지스트리에서 가장 단순(HKLM 서브 config 정보만 저장)
- 실행 시간에 수집한 자료 저장. 여기 저장된 정보는 디스크에 영구 저장되지 않음.

- 레지스트리 데이터베이스는 하이브(hive)라는 레지스트리 하위 집합이 들어 있는 여러 개의 파일로 구성되어 있다. 하이브에는 하나 이상의 레지스트리 키와 서브 키, 설정 항목이 있다.

- 부팅시 악성코드 실행을 위해 변조되는 레지스트리는 HKLM, HKCU

개별 사용자 지속 HKCU₩Software₩Microsoft₩Windows₩CurrentVersion₩Run
1회 HKCU₩Software₩Microsoft₩Windows₩CurrentVersion₩RunOnce
전체 사용자 지속 HKLM₩Software₩Microsoft₩Windows₩CurrentVersion₩Run
1회 HKLM₩Software₩Microsoft₩Windows₩CurrentVersion₩RunOnce

- 특정 확장자 실행 시 악성코드 실행을 위해 변조되는 레지스트리는 HKCR

정상 HKCR₩exefile₩shell₩open₩command @=""%1"%*"
변조 HKCR₩exefile₩shell₩open₩command @=dddd.exe "%1"%*

- 윈도우 시스템에 아이디와 패스워드 없이 세션을 연결함으로써 시스템 내부에 접근해 정보를 탈취해가는 널 세션(Null Session) 취약점은 윈도우 기본 공유 폴더인 $IPC에서 발생한다. 이를 방어하기 위해 설정해야 하는 레지스트리는 HKLM

익명사용자 공유폴더 숨김 HKLM₩SYSTEM₩CurrentControlSet₩Control₩LSA₩RestrictAnonymous
부팅시 공유폴더 자동 해제 HKLM₩SYSTEM₩CurrentControlSet₩Services₩LanmanServer₩Parameters₩AutoShareWks

- 레지스트리 백업 복구 중 윈도우의 모든 시스템 정보를 백업 및 복구하기 위해 필요한 파일 : system.dat, user.dat, system.ini

 

반응형

+ Recent posts