no image
[C++] 연산자 다중 정의
c++에서는 class에 한해서 연산자 재정의 또는 다중 정의가 가능 고려해야 할 요소가 많아질 수 있음 class CMyData { public: void setData(int nParam) { MyData = nParam; } int getData() { return MyData; } private: int MyData; }; int main(int argc, char* argv[]) { CMyData a; CMyData b; a + b; // Error return 0; } class CMyData { public: void setData(int nParam) { m_nData = nParam; } int getData() { return m_nData; } /////////////////// //..
2024.04.15
no image
[Tcpdump] 코드 분석
개요 패킷 분석 툴을 개발해보면서 비효율적이라고 생각했던 구조를 tcpdump에서는 어떻게 처리하는지 확인하고자 함 CMakeLists.txt tcpdump.c가 main일 것으로 예상 1261 set(TCPDUMP_SOURCE_LIST_C fptype.c tcpdump.c) 1323 add_executable(tcpdump ${TCPDUMP_SOURCE_LIST_C}) tcpdump.c main netdissect_options 구조체로 옵션에 대한 플래그를 설정하고, callback 함수의 인자로 전달해 패킷 처리 callback 함수는 플래그에 따라 변경되지만 결국에는 pretty_print_packet을 호출 info 캡처한 패킷에 대한 정보 출력 -r 에서는 사용 x netdissect.h ne..
2024.03.03
no image
[Snort] Snort 기본
Snort란 Open Source Network Intrusion Detetion / Protection System 정의한 룰을 기반으로 네트워크 상의 악의적인 행위를 탐지 패킷 스니퍼, 패킷 로거, 침입 탐지 3가지를 수행 가능 https://www.snort.org/ Snort - Network Intrusion Detection & Prevention System With over 5 million downloads and over 600,000 registered users, it is the most widely deployed intrusion prevention system in the world. www.snort.org 설치 snort 설치를 위해 interface와 ip 확인(설치 과..
2024.03.03
no image
[Tcpdump] Tcpdump 기본
Tcpdump란 Linux에서 사용하는 오픈 소스 패킷 스니퍼 libpcap 라이브러리를 사용 설치 및 실행 tcpdump는 기본적으로 설치되어 있음 tcpdump --version 특정 네트워크 인터페이스를 지나가는 패킷을 보고 싶다면 -i 옵션을 통해 인터페이스 지정 tcp -i ens33 저장한 파일을 읽기 위해선 -r 옵션을 사용 tcpdump -r test.pcap
2024.03.03
no image
[OS] Kernel
커널의 기능 프로세스 관리 메모리 관리 파일 시스템 관리 입출력 관리 프로세스 간 통신 관리 커널의 구성 응용 프로그램 시스템 호출 인터페이스 커널 하드웨어 커널의 종류 모노리틱 커널(단일형 커널) 마이크로 커널 하이브리드 커널 모노리틱 커널 초창기 구조 커널에서 제공할 수 있는 다양한 기능을 단일한 커널 공간에 구현 모듈 간의 통신 비용이 줄어들어 성능이 좋음 모듈이 상호 의존 유지보수가 어려움 오류 발생 시 시스템 전체가 위험해질 수 있음 복잡하고 구현이 어려움 유닉스, 리눅스, BSD, 솔라리스, 윈도 NT 등 마이크로 커널 프로세스 관리, 메모리 관리, 프로세스 간 통신 관리 등의 기본적인 기능만 제공 나머지는 사용자 영역에서 구현 모듈 크기가 작아서 안정성이 높음 오류가 나도 전체 시스템에 영향..
2024.02.27
no image
[Network] 네트워크 보안
NAC(△) + Probe TCP/IP 스택의 Network Access와 IP 수준에서 동작 -> MAC주소와 IP주소를 확인 어플리케이션 수준에서 관리 Probe는 Out of path 방식 L2 Port Down, HTTP Redirect, DHCP 통제, ARP Spoofing(허가받지 않은 PC가 ARP를 수행할 때, 라우터 대신 Reply를 보내서 네트워크를 방어, 혼선을 야기하기 때문에 네트워크 장애의 주 원인) 등을 수행 NAC(○) 어플리케이션 수준에서 인증서버와 기간계가 상호인증하는 구조 ex) RADIUS Network Access 수준에서 동작 -> MAC주소 확인 이와 유사하지만 무선은 WIPS Hybrid F/W Firewall Packet filter L3 수준에서 동작 -> ..
2024.02.23
no image
[Network] Unicast, Broadcast, Multicast
Unicast 1대1 통신 Broadcast 같은 대역의 모든 컴퓨터와 통신 보통 같은 대역 중 호스트 ID가 2진수로 모두 1인 IP ex)192.168.0.255 하나의 IP로 모든 호스트에 데이터 전달이 가능 비용이 크기 때문에 효율이 떨어짐 -> 최소화 Multicast 1대다수 통신 그룹에 등록된 모든 호스트에게 데이터를 전달 -> IGMP를 활용 ex) IPTV
2024.02.23
no image
[Network] Inline & Out of path & Proxy 구조
Inline 패킷이 어떤 장치를 통과해서 내부망으로 들어오는 구조 ex) 라우터, 방화벽 Network 계층 수준 데이터 단위 : Packet Out of path port mirroring을 통해 복사한 패킷을 읽기만 하는 구조 ex) NIDS, 장애대응센서 Network 계층 수준 데이터 단위 : Packet Proxy 다른 컴퓨터의 통신을 받아서 대신 목적지로 전달하는 구조 Application 계층 데이터 단위 : Socket Stream 활용 우회 : 서버 입장에서는 Proxy를 클라이언트로 인식 cf) VPN과 유사하지만 계층이 다름, VPN은 네트워크 계층 분석 : 프록시 서버 주소를 루프백으로 하면, HTTPS 통신의 암호화를 프록시에서 수행하게 됨, 이를 통해 데이터를 평문으로 받아서 분..
2024.02.21
no image
[Network] TCP & UDP
TCP & UDP Transport Layer에 속한 프로토콜로, 데이터를 알맞은 목적지에 전송하는 역할 TCP 신뢰성 있는 데이터 통신을 가능하게 해주는 프로토콜 연결을 통해 양방향 통신이 가능 연결을 할 때는 3 way-handshake를 사용(연결을 끊을 때는 4 way-handshake) 데이터의 순차 전송을 보장(sequence number) 송수신자간의 데이터 처리 속도를 해결(흐름 제어) 네트워크 혼잡을 제어(혼잡 제어) 오류 감지(checksum) 데이터를 일정 크기만큼 잘라서 전송(세그먼트화) 3-way handshake client가 syn 비트가 1인 패킷을 server로 송신(syn_sent) server는 패킷을 받았다는 의미로 ack 비트를 1로 설정 이때, TCP는 양방향 통신..
2024.02.18