목록전체 글 (89)
학사 나부랭이
이전에 본 것처럼 패킷은 전송 도중 유실되거나 오차가 있을 수 있는데, 이는 당연히 네트워크의 신뢰성에 문제가 생길 수 있죠. 여기서, TCP는 이러한 패킷 전달에서 신뢰성을 보장하기 위해 고안된 프로토콜이에요. 통신 전에 항상 세션을 성립시키며, 패킷을 전송한 후, 패킷을 받은 측에서 패킷이 잘 도착했다고 알리죠. 그러니 속도가 상대적으로 느려요. 그에 비해 라이브 방송, 게임과 같은 약간 내용이 깨지는 정도는 감수하더라도 실시간 통신이 중요한 때가 있겠죠? 이렇게 속도가 정확도보다 중요한 경우 UDP를 사용해요. TCP UDP 연결형 서비스 비연결형 서비스 高 신뢰성 低 신뢰성 低 속도 高 속도 수신 여부 확인 수신 여부 확인 X 전송 순서 보장 전송 순서 보장 X TCP 헤더 위는 TCP 헤더 구조..
ICMP Echo Request를 이용해 IP 범위를 쓸고 지나가며 존재하는 호스트를 찾아내는 것을 Ping Sweep Scan이라고 해요. from pythonping import ping from time import time def icmp_scan(): for i in range(40, 50, 1): ip_address = "***.***.***" ip_address += "." + str(i) print(f"Ping target -> {ip_address}") ping(ip_address, timeout=1, count=1, verbose=True) if __name__ == "__main__": begin = time() icmp_scan() end = time() print(f"걸린 시간: ..
어셈블리어는 16진수인 기계어를 사람이 쉽게 이해할 수 있도록 표현을 바꾼 것이며, 각 명령어는 기계어와 일대일로 완벽히 매칭 된다. 기본적으로 한 번에 하나씩만 수행할 수 있다. > PUSH 스택에 값을 저장한다. PUSH 후에는 스택이 4바이트 커지기에, 그리고 스택은 높은 주소에서 낮은 주소로 할당되기에 SP 레지스터는 4바이트 감소한다. ex) PUSH BP: BP 값을 스택에 PUSH || PUSH 5: 5를 스택에 PUSH > POP 스택의 끝에 있는 값을 가져온다. POP 후에는 스택이 4바이트 줄어들기에, SP 레지스터가 4바이트 증가한다. ex) POP BP: 스택 끝의 값을 꺼내서 BP에 저장 || POP CX: 스택 끝의 값을 꺼내서 CX에 저장 > MOV 지정한 값을 지정한 곳에 넣..
네트워크에서 프로토콜은 약속이고 정의하기 나름이에요. 그러니, IP 헤더의 사용하지 않는 부분에 특정한 약속을 만들거나, ICMP 헤더의 데이터에 다른 프로토콜을 구현할 수도 있죠. 이런 방식으로 숨겨서 정보를 전송하는 네트워크 공격 기법이 은닉 채널(Covert Channel)이에요. 예를 들어, 방화벽 같은 장비에서 TCP, UDP 포트를 막았거나 감시할 때 이용해, 감시 장비를 우회해 파일을 전송할 수 있어요. PING은 거의 모든 운영체제에 설치되어 있는 도구며, 이를 이용한 코드로 TCP, UDP 포트가 막혀도 파일을 전송할 수 있어요. 이제 PING 기능을 이용해, ICMP의 메시지로 사진 파일을 전송할 거예요. # receiver's code from socket import * import..
메모리 구조 Windows의 메모리 구조는, 32bit의 경우, 기본적으로 프로세스 별로 4GB로 구성되어요. 그런데 일반적인 PC의 메모리가 2~8GB인데, 어떻게 프로세스마다 4GB를 할당할까요? 이를 위해 사용되는 게 가상 메모리예요. 다음과 같이 프로세스 별로 유저 영역에 2GB, 커널 영역에 2GB로 총 4GB의 독립된 메모리 공간을 가지며, 실제 커널 영역인 2GB는 모든 프로세스가 공유하죠. 이렇게 메모리 가상화를 통해 프로그램은 자신이 모든 메모리를 소유한 것처럼 주소 값에 신경 쓰지 않고 메모리를 사용할 수 있으며, 오류가 발생하더라도 다른 프로세스의 메모리와 격리되어 있으니 안정성을 높일 수 있죠. 각 가상 메모리에 대한 물리 메모리 매핑은 Windows가 맡아서 하죠. 디버거의 메모리..
ICMP 3계층에서 동작하며, 네트워크 통신의 테스트나 오류 메시지 응답을 전송할 때 사용돼요. 통신 상태를 확인할 때 사용하는 Ping, Tracert 명령어도 ICMP를 사용하죠. ICMP 헤더 구조 Type: ICMP 패킷의 종류를 나타내요. Code: Type에 대한 상세 항목이에요. Checksum: 오류를 검출하는 필드예요. Other message specific information: ICMP 헤더의 추가 메시지 필드예요. ICMP 헤더는 Type과 Code에 따라 내용이 바뀌죠. 다음은 ICMP 프로토콜의 Type과 Code의 주요 필드에 대한 설명이에요. Type Code 설명 0 0 Echo Reply, Echo Request (Type 8)에 대한 응답 3 Destination Un..
IP 용량이 큰 파일을 서버에서 내려받을 때, 파일은 패킷 단위로 쪼개져 전송되며, 도착지 호스트 기기에서 CPU가 재조립해요. IP 프로토콜은 패킷의 분할과 재조합에서 사용되며 출발지와 목적지의 IP와 라우터 설정을 포함해요. IP 헤더 구조 그림에서 한 칸은 1bit인데 네트워크 정보를 나타내는 단위에는 4가지가 있어요. 1bit = 0|1 1byte = 8bits 4bits = 1nibble 1word = 4bytes IP 헤더의 각 항목은 다음과 같아요. Version: IPv4나 IPv6를 나타내요. IHL (IP Header Length): IP 헤더의 길이를 워드 단위로 나타내요. TOS (Type Of Service): 서비스에서 우선순위를 지원하도록 라우터에게 요구해요. Total Len..
들어가기 전에 445번 포트란? Server Message Block(=Common Internet File System)은 다른 시스템 간의 파일 및 프린터 공유에 사용하는 프로토콜이며 445 포트를 사용한다. TCP/IP 기반의 NetBIOS 프로토콜을 사용한다. SMB에는 SMB1, SMB2.0, SMB2.1, SMB3.0, SMB3.0.2, SMB3.1.1 버전이 있다. 그리고 이 SMB 네트워킹 프로토콜을 다시 구현한 자유 소프트웨어를 Samba라 한다. NetBIOS란? 일반적으로 TCP/IP 네트워크에서 사용하는 기기에 IP 주소를 부여하면 서로 통신 가능하지만 Windows 네트워크에서는 NetBIOS라는 기술을 시용해, IP 주소보다 NetBIOS 이름이 더 중요한 역할을 하고 있다. 이..